使用 Umbraco 实现多语言功能的几个问题?
Several questions to implement multi lingual functionality with Umbraco?
我正在努力在 Umbraco CMS 7.5 版中实现多语言功能,目前我看到 2 种可能的解决方案:
1-只使用一个根路径
我认为作为此解决方案的补充的最佳软件包是 "Vorto",我所要做的就是创建扩展 vorto 数据类型的新数据类型,然后我可以直接在文档类型上开始编辑文本。
2- 使用多个根路径
想法是为每种语言复制主根路径。
-> 我在网上看了很多教程,但它们都与以前版本的 Umbraco 相关,我发现的解决方案似乎不适用于当前版本...
复制根路径并将语言关联到根文件夹后,下一步是什么?
我还有几个问题:
- 你有比上面两个更好的解决方案吗?
- Umbraco 如何知道客户端语言? HTTP请求中header"Accept-language"是否采用第一种语言?
- 我如何扩展默认路由以将语言添加为第一部分,例如:http://domainName.ext/language/...
提前致谢!
这两种场景各有利弊,都在 Umbraco 社区/解决方案中得到广泛应用。我更喜欢第二种解决方案,因为特别是在较大的网站上,它使您能够限制对不同语言编辑器的访问,例如,并非每个网站都要求内容结构为 1-1。
这里有一集涉及此主题的 Umbraco 电视剧集:https://umbraco.tv/videos/umbraco-v7/implementor/multi-lingual/creating-a-multi-lingual-site/introduction/。
总结:
- 您需要创建根语言节点的副本
- 然后为其设置文化
- 使用字典项翻译每种语言的静态内容
- 创建简单的语言选择器选择相关站点或只是重定向到选定的语言根目录
关于您的问题:
Ad.1.我没有:)
Ad.2.它正在选择节点上设置的文化,所以它可能是强制的。除此之外,它使用标准的 .NET 文化检测,所以是的 - 它使用 "accept-language" headers.
Ad.3. 有一个键 "umbracoHideTopLevelNodeFromPath" 可以让您在 url 路径中包含顶级根目录。阅读更多:https://our.umbraco.org/documentation/reference/config/webconfig/
而且,如果您更喜欢选项 1,还有一篇关于它的很棒的文章以及示例代码:http://24days.in/umbraco/2015/multilingual-vorto-nested-content/。我现在也会玩它! :)
好吧,选项 2 最简单的工作方式是创建如下所示的树结构:
根目录
- 语言A
- 语言B
如果您想要域ext/language/URL,请在根节点上设置domain.ext,并在每个语言节点上设置语言。您还可以在每个语言节点上同时设置域和语言,以获得(例如)domainname.com 和 domainname.net 另一个。
最近应该不会改变这种做法。
关于你的第一点,还有另一种方式,但不会有一段时间。 Umbraco 8(将于 2017 年第一季度发布)将支持页面变体的概念,这意味着您可以拥有一棵树,然后为每种不同的语言创建一个变体,从而不需要像 Vorto 这样的东西。
虽然现在还处于早期阶段,所以我们必须拭目以待,看看该功能的效果如何!
我正在努力在 Umbraco CMS 7.5 版中实现多语言功能,目前我看到 2 种可能的解决方案:
1-只使用一个根路径
我认为作为此解决方案的补充的最佳软件包是 "Vorto",我所要做的就是创建扩展 vorto 数据类型的新数据类型,然后我可以直接在文档类型上开始编辑文本。
2- 使用多个根路径
想法是为每种语言复制主根路径。
-> 我在网上看了很多教程,但它们都与以前版本的 Umbraco 相关,我发现的解决方案似乎不适用于当前版本... 复制根路径并将语言关联到根文件夹后,下一步是什么?
我还有几个问题:
- 你有比上面两个更好的解决方案吗?
- Umbraco 如何知道客户端语言? HTTP请求中header"Accept-language"是否采用第一种语言?
- 我如何扩展默认路由以将语言添加为第一部分,例如:http://domainName.ext/language/...
提前致谢!
这两种场景各有利弊,都在 Umbraco 社区/解决方案中得到广泛应用。我更喜欢第二种解决方案,因为特别是在较大的网站上,它使您能够限制对不同语言编辑器的访问,例如,并非每个网站都要求内容结构为 1-1。
这里有一集涉及此主题的 Umbraco 电视剧集:https://umbraco.tv/videos/umbraco-v7/implementor/multi-lingual/creating-a-multi-lingual-site/introduction/。
总结:
- 您需要创建根语言节点的副本
- 然后为其设置文化
- 使用字典项翻译每种语言的静态内容
- 创建简单的语言选择器选择相关站点或只是重定向到选定的语言根目录
关于您的问题:
Ad.1.我没有:)
Ad.2.它正在选择节点上设置的文化,所以它可能是强制的。除此之外,它使用标准的 .NET 文化检测,所以是的 - 它使用 "accept-language" headers.
Ad.3. 有一个键 "umbracoHideTopLevelNodeFromPath" 可以让您在 url 路径中包含顶级根目录。阅读更多:https://our.umbraco.org/documentation/reference/config/webconfig/
而且,如果您更喜欢选项 1,还有一篇关于它的很棒的文章以及示例代码:http://24days.in/umbraco/2015/multilingual-vorto-nested-content/。我现在也会玩它! :)
好吧,选项 2 最简单的工作方式是创建如下所示的树结构:
根目录
- 语言A
- 语言B
如果您想要域ext/language/URL,请在根节点上设置domain.ext,并在每个语言节点上设置语言。您还可以在每个语言节点上同时设置域和语言,以获得(例如)domainname.com 和 domainname.net 另一个。
最近应该不会改变这种做法。
关于你的第一点,还有另一种方式,但不会有一段时间。 Umbraco 8(将于 2017 年第一季度发布)将支持页面变体的概念,这意味着您可以拥有一棵树,然后为每种不同的语言创建一个变体,从而不需要像 Vorto 这样的东西。
虽然现在还处于早期阶段,所以我们必须拭目以待,看看该功能的效果如何!