多语言,智能链接转换

时间:2012-07-02 06:19:29

标签: umbraco

我对Umbraco很新,所以我的问题可能很简单,但我无法在网上找到任何简单的指南。

我正在构建一个简单的网站,其中包含以下域名和结构

Content

- en
-- products
-- contacts

- cs
-- produkty
-- kontakty

等等。我的第一个问题是:由于我想在SEO中取得一些不错的成绩,我需要(i)将元语言分配给“en”和“cs”节点的内容,以及一些关键字。我该怎么做?

第二:在未来,我决定添加一种新语言,例如。俄语。所以我需要做的是制作“en”节点及其内容的副本,而新创建的副本中包含的链接应该被重写为指向副本而不是原始(原始将是/ en / anotherpage ,应该改写为/ ru / anotherpage)。这可能吗?

谢谢, 的Ondrej

3 个答案:

答案 0 :(得分:2)

您可以将内容结构构建为单个根节点,然后在内容根目录下直接有多个语言主页节点。

要分配语言,您可以创建一个自定义数据类型,只显示所有.Net文化,例如en-GB,fr-FR等。将数据类型包含在语言主页文档类型的字段中,然后在主页和每个后代的标记中输出该值。

在语言主页文档类型中,您可以添加名为“umbracoUrlName”的textstring属性。然后,您可以使用此属性覆盖Url名称。例如。您可以拨打www.domain.com/en/页面,而不是www.domain.com/en/english-home /

关于在以后复制网站,这是一个困难的问题。如果使用媒体选择器和uComponent的多节点树选择器等数据类型创建链接,那么除了从复制的分支继承链接之外,您将别无选择。但是,如果链接是在Razor或XSLT中动态创建的,那么您应该能够创建相对于语言主页或当前页面的链接。例如。在XSLT中,获取父语言主页的子项类似于$currentPage/ancestors-or-self::* [@level = '2']/child::*。换句话说,您可以通过使用巧妙的相对遍历来避免硬编码链接。

答案 1 :(得分:0)

这应该会为您在Umbraco创建多语言网站提供良好的开端

http://our.umbraco.org/wiki/how-tos/running-multi-lingual-sites-under-a-single-domain

如果您将来要创建一个俄语版本,那么您将完全按照上面提到的那样做,就这么简单。

答案 2 :(得分:0)

要设置语言元数据,我会将其存储在langauge根节点的属性中,例如:/ en /从任何页面获取语言页面属性:

var langNode = new Node(int.Parse(node.Path.Split(',')[1]));
langNode.GetProperty("languageCode");

至于将英文版复制到俄文版并修复所有链接,我不知道umbraco中有什么东西可以帮助你解决这个问题,你可以自己写一些东西找到所有链接和节点引用并修复它们。您可以使用relations API来跟踪从哪里复制到哪里。您需要注意,您最终可能会多次复制节点。

如果您没有太多数据,手动修复链接可能会更快。