【问题标题】:ASP.NET internationalization falls back to English instead of default language fileASP.NET 国际化回退到英语而不是默认语言文件
【发布时间】: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


【解决方案1】:

你在 web.config 中有这些设置吗?

<system.web>
    <globalization enableclientbasedculture="true" uiculture="auto" culture="auto">
    </globalization>
</system.web>

【讨论】:

  • 抱歉回复太晚了。是的,我的 web.config 中有这些值(注意:MSDN 上的 globalization Element page 表示“目前未使用此属性。”)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多