【发布时间】:2014-07-15 21:50:54
【问题描述】:
我有一个 MVC5 站点,可通过几个不同的区域 URL 访问。在我的例子中,.co.uk(英国)、.de(德国)和 .fr(法国)。
网站内容使用 RESX 文件进行本地化,用户可以通过 cookie 切换语言以实现持久性和 HttpModule,后者根据 cookie 设置 asp.net 线程区域设置(我使用了this approach)。
我希望默认语言与用户访问网站的顶级域相关。例如,如果用户使用 .de,则默认语言应为 de-DE。用户可以选择更改语言,在这种情况下会覆盖默认语言,但默认语言适合顶级域(对于用户和搜索引擎)非常重要。
如何在 MVC5 中实现这一点?到目前为止我最好的方法是使用 JavaScript 检查 url、设置 cookie 和刷新页面,但我知道这很讨厌,必须有更好的方法。
PS:请注意这是我想要驱动的顶级域。我没有使用区域路由,例如http://whatever.com/DE 或http://whatever.com/EN
PPS:我也不想使用浏览器语言检测功能,因为这会给搜索引擎带来问题。即它可能会导致 .de 网站以 en-GB 显示,因为这是搜索引擎使用的(或者搜索引擎没有语言,因此这是默认设置)。如果发生这种情况,.de 网站将被视为 .co.uk 网站的副本,这对 SEO 永远不利
【问题讨论】:
-
您应该将解决方案添加为其他用户/未来参考的答案(对您自己的问题)。然后您可以接受自己的答案。
标签: asp.net-mvc-4 multilingual resx