2014-11-03 44 views
0

设置语言我如何设置使用Sitecore的框架,根据国家和/或键盘的默认语言?Sitecore的,基于国家或键盘

+0

有外的开箱没有找到解决方案。你需要编写一个自定义的LanguageResolver。您可以从http头获得浏览器语言,但对于当前的国家,您需要像MaxMind这样的第三方服务。 – 2014-11-03 21:14:42

回答

2

我同意你的观点,你会期望一个开箱即用的解决方案,但实际上要求往往perculiar到项目中。这就是说,这里有一些想法

创建自定义语言解析器可能是最好的办法。

第一次尝试

我通常试图通过使用浏览器的语言首选项(HttpRequest.UserLanguages),这可能会提供“EN-GB”整个2部分语言开始,有时甚至仅仅是基本的语言“恩”。

  • 如果这给了你全部的语言,那么你就完成了。只需使用同名的系统语言即可。
  • 如果它只给了你基本的语言,你需要以某种方式得到国家。
  • 如果它没有给你任何东西。你需要找到国家,并找到该国家的默认语言。

获取国家

如果使用的MaxMind选项去,你应该使用的版本GEOLITE上本地,因为你不能依靠DMS地理IP查找及时执行方式。

  • 如果查找成功,并且您已经拥有基本语言,那么您现在应该有两种语言与您的系统语言进行比较。
  • 如果查询成功,但你不具备基本的语言,那么你就需要获得一个默认。在过去,我创建了一个包含2个字段的“语言映射”模板。一个'国家代码'文本字段和一个'语言'下拉链接源到系统语言列表。获取国家代码后,只需在映射项目中查找它,然后相应地设置上下文语言。

有些事情要考虑

  • 记住,你需要有某种回退的时候查找都没有奏效。
  • 语言也许存储为一个cookie,所以查找时每次都没有这样做。