我的理解是,当您将CurrentThread.CurrentUICulture设置为例如“da-DK”时,它将在“da-DK”中查找资源文件,然后查找“da”,然后回退到不变文化。这适用于桌面应用程序,因为操作系统通常不是多语言的。但对于网站而言,情况并非如此。
假设我有一位访问者,其浏览器坚持要求用户想要“da_DK”,“de_DE”和“en_GB”,如果存在则为丹麦语,然后是德语,然后是英国英语作为后备。
有没有办法使用.Net 4本地化框架来适应这种偏好?
不,这不是一个思想实验。 :)
修改
为了清楚起见,问题是没有从Web请求获取本地化标头。问题是设置CurrentThread.CurrentUICulture,它将按顺序检查资源文件,而不是只检查一个。
或者检查CurrentUICulture是否具有匹配的resx文件的方法。
答案 0 :(得分:0)
我认为这就是你所追求的目标:
这将按优先顺序返回用户语言数组。可能是一个好主意,允许他们更改您对此信息应用的任何本地化,但是,如果他们的浏览器配置无法准确反映他们真正想要的内容。
更新:
要检查资源是否存在,请使用:
ResourceManager.GetResourceSet
您可以在此设置tryParents
为false。如果没有资源,该方法将返回null
。然后,您可以继续尝试标题中返回的下一个首选文化。