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

3
我的理解是,当您将CurrentThread.CurrentUICulture设置为“da-DK”等时,它会在“da-DK”,然后是“da”,最后回退到不变的文化中查找资源文件。这对桌面应用程序非常有效,因为操作系统通常不支持多语言。但对于网站而言,则未必如此。
假设我有一个访问者,他的浏览器坚持要使用“da_DK”、“de_DE”和“en_GB”,即如果存在丹麦语,那就使用丹麦语,否则使用德语,最后再回退到英国英语。
是否有任何方法可以利用.NET 4本地化框架来适应此偏好呢?
不,这不是一种思想实验。 :)
编辑:
只是为了明确,问题不是从Web请求获取本地化标头。问题是以这样的方式设置CurrentThread.CurrentUICulture,使其按顺序检查资源文件,而不仅仅是检查一个文件。
或者提供一种检查CurrentUICulture是否具有匹配的resx文件的方法。
1个回答

0

我认为这就是你想要的:

HttpRequest.UserLanguages()

此函数返回用户语言的数组,按照优先顺序排列。可能最好允许用户更改您根据此信息应用的本地化设置,以防他们的浏览器配置不准确反映他们真正想要的内容。

更新:

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

ResourceManager.GetResourceSet

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


抱歉,我应该澄清一下。问题不在于获取标题信息,而在于告诉.Net进行比默认更详尽的CultureInfo搜索。 - Mikkel Løkke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接