.Net使用多种语言进行本地化

时间:2013-02-06 13:21:27

标签: .net web localization

我的理解是,当您将CurrentThread.CurrentUICulture设置为例如“da-DK”时,它将在“da-DK”中查找资源文件,然后查找“da”,然后回退到不变文化。这适用于桌面应用程序,因为操作系统通常不是多语言的。但对于网站而言,情况并非如此。

假设我有一位访问者,其浏览器坚持要求用户想要“da_DK”,“de_DE”和“en_GB”,如果存在则为丹麦语,然后是德语,然后是英国英语作为后备。

有没有办法使用.Net 4本地化框架来适应这种偏好?

不,这不是一个思想实验。 :)

修改

为了清楚起见,问题是没有从Web请求获取本地化标头。问题是设置CurrentThread.CurrentUICulture,它将按顺序检查资源文件,而不是只检查一个。

或者检查CurrentUICulture是否具有匹配的resx文件的方法。

1 个答案:

答案 0 :(得分:0)

我认为这就是你所追求的目标:

HttpRequest.UserLanguages()

这将按优先顺序返回用户语言数组。可能是一个好主意,允许他们更改您对此信息应用的任何本地化,但是,如果他们的浏览器配置无法准确反映他们真正想要的内容。

更新:

要检查资源是否存在,请使用:

ResourceManager.GetResourceSet

您可以在此设置tryParents为false。如果没有资源,该方法将返回null。然后,您可以继续尝试标题中返回的下一个首选文化。