【发布时间】:2012-04-02 08:09:30
【问题描述】:
我正在建立一个挪威网站,该网站也将接待一些外国访问者。由于大多数斯堪的纳维亚人都能阅读挪威语,因此这将是默认语言。 (即,*.resx 是挪威语。)我只为我们的芬兰语和英语访问者创建单独的资源(*.fi.resx 和 *.en.resx)。
但是,让我大吃一惊的是,除了芬兰人之外的所有访问者都看到了英文文本!我自己一直在对此进行测试,我可以在各种网络浏览器(Internet Explorer、Firefox、Chrome、Opera)中重现该问题,尝试各种语言偏好,并确保英语不是其中之一。
为什么从不加载备用资源文件 (*.resx)?根据文档 (http://msdn.microsoft.com/en-us/library/ms227427.aspx),当指定语言没有可用的语言文件时,应加载后备文件。
【问题讨论】:
-
如果您在 Page_Load 中进行一些调试并检查
Thread.CurrentThread.CurrentUICulture的值(如果使用 MVC,则在控制器中),您会看到什么?听起来 ASP.NET 选择了一种英语文化,因此由于存在英语资源,因此您没有获得资源回退。 -
@Peter:您具体使用的技术是什么?普通的 Asp.Net 还是 Asp.Net MVC?什么版本(例如.Net Framework)?我怀疑设置不正确或缺少 uiCulture 分配(在纯 Asp.Net 中尝试
uiCulture="auto:no")。 -
我使用的是普通的 ASP.NET(在 App_LocalResources 中有资源文件),版本 4.0。检查 CurrentCulture 和 CurrentUICulture 会返回预期的文化(例如,在浏览器中使用“nb-no”时,它会返回“nb-NO”和“nb”作为文化,使用“en”时会返回“en-US”和“en” )。但是,当使用晦涩难懂的语言(例如 Afar [aa])时,它会变得更有趣:在 VS 的开发服务器上它返回“nb-NO”和“no”,在 IIS 7.5 上它返回 CurrentCulture 的“nb-NO”和“en-美国”(!)为 CurrentUICulture。尽管如此,在所有情况下,都会使用 .en.resx 资源文件。
标签: asp.net localization internationalization