.Net多语言本地化

问题描述:

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

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

有没有什么方法可以使用.Net 4本地化框架来适应这种偏好?

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

编辑

只是要明确,这个问题没有得到来自Web请求的本地化头。问题在于设置CurrentThread.CurrentUICulture的方式是按顺序检查资源文件,而不是仅仅检查资源文件。

另一种方法来检查CurrentUICulture是否有匹配的resx文件。

我想这是你所追求的:

HttpRequest.UserLanguages()

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

更新:

要检查是否存在资源利用:

ResourceManager.GetResourceSet

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

+0

对不起,我应该澄清。问题是没有获取标题信息。问题在于.Net要比默认情况下做更详尽的CultureInfo搜索。 –

+0

@MikkelLøkke - 我已更新了更多信息。 –

+0

感谢队友。 :) –