默认 Culture 和 UICulture 是如何确定的?
Posted
技术标签:
【中文标题】默认 Culture 和 UICulture 是如何确定的?【英文标题】:How is the default Culture and UICulture determined? 【发布时间】:2017-02-08 13:58:28 【问题描述】:InitializeCulture()
方法可以被覆盖,您可以轻松选择自己的Page.Culture
和Page.UICulture
。您还可以在Web.config
中添加全球化部分或在您的 BasePage 中设置文化。但是这些属性的默认值是如何确定和准确设置的呢? UICulture 是否取自浏览器请求的接受标头?文化是从服务器获取的吗?
请注意,我不是要求difference between these two properties,而是如果我没有在我的应用程序中的任何位置设置默认值,则设置默认值的位置或时间。那么,我的应用程序之外的哪些浏览器、用户、服务器、...设置会影响该值?
【问题讨论】:
你的意思是:IIS管理器->选择你的网站->选择“.NET全球化”设置,选择文化和UI文化。 如果这是唯一考虑的事情,那么是的,这就是我要找的。但是,如果还考虑到用户的浏览器设置等其他因素,我很想知道哪个设置胜过哪个设置等。 在您指向 Page.Culture 的链接中,它在备注下方显示:“您还可以将值设置为 auto,这将自动检测浏览器的首选语言并进行设置” 【参考方案1】:UICulture
是Page.CurrentThread.CurrentUICulture
的快捷方式,也就是根据docs:
UI 文化指定应用程序支持用户输入和输出所需的资源,默认情况下与操作系统文化相同。
至于Culture
,它又是一个正在运行的线程的属性,但这里的默认值以更复杂的方式确定,解释here。一个简短的总结:
-
检查应用程序域中的 DefaultThreadCurrentCulture 属性
如果我们在 .Net 4.6 或更高版本中,并且当前线程是由其他线程调用的任务,请尝试获取调用者的文化
通过调用 Windows GetUserDefaultLocaleName 函数(再次调用操作系统)
【讨论】:
以上是关于默认 Culture 和 UICulture 是如何确定的?的主要内容,如果未能解决你的问题,请参考以下文章
Page.UICulture -- 如何检索两个字母的 UICulture 代码?
PowerShell 多条命令的变化范围 - UICulture