3

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

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

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

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

编辑

需要明确的是,问题不在于从 Web 请求中获取本地化标头。问题在于将 CurrentThread.CurrentUICulture 设置为按顺序检查资源文件,而不仅仅是检查资源文件。

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

4

1 回答 1

0

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

HttpRequest.UserLanguages()

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

更新 :

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

资源管理器.GetResourceSet

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

于 2013-02-06T13:41:36.873 回答