1

大家好,我正在编写一个小的 asp.net mvc 应用程序,我想让它本地化并支持一种以上的语言我发现了很多有用的文章

我为语言添加了路由 我使用自定义 actionfilter 属性来选择当前线程的当前文化,具体取决于 url 中的语言代码,例如英语的“site.com/en/controller/action”或“site.com/ar/controller/action” “为阿拉伯语。

我为英语创建了“Resources\Views\Shared\Layout.resex”,为阿拉伯语创建了“Resources\Views\Shared\Layout.ar.resex”。

它只卡在阿拉伯语本地化的问题,我手动将当前线程文化设置为英语并删除了 actionfilter 属性,但它仍然显示阿拉伯语内容!这是什么问题?

4

1 回答 1

3

如果没有更多细节或代码,很难说,但一件容易错过的事情是您的 web.config 文件的配置。如果您有类似<globalization uiCulture="auto" culture="auto" />in 的内容<system.web>(使用“auto”而不是文化标识符),那么 ASP.NET 将使用由浏览器的语言设置确定的接受语言标头来自动选择线程的文化。因此,您所看到的可以通过在浏览器的语言列表中进行此配置并在英语之前使用阿拉伯语来部分解释。

编辑:问题是代码需要使用 Thread.CurrentThread.CurrentUICulture 来控制使用哪些本地化资源(Thread.CurrentThread.CurrentCulture 是另一回事,不影响本地化但依赖于区域设置的格式/解析,例如日期)。

于 2012-10-23T12:47:26.063 回答