默认的Culture和UICulture是怎么确定的?
How is the default Culture and UICulture determined?
InitializeCulture()
method can be overridden and you can easily choose your own Page.Culture
and Page.UICulture
。您还可以在 Web.config
中添加全球化部分或在您的 BasePage 中设置文化。但是这些属性的默认值是如何确定和准确设置的呢? UICulture 是否取自浏览器请求的accept-header?文化是从服务器上拿的吗?
请注意,我不是在询问 difference between these two properties,而是在何处或何时设置默认值(如果我未在我的应用程序中的任何位置设置默认值)。那么我的应用程序之外的哪些浏览器、用户、服务器...设置会影响该值?
UICulture
是Page.CurrentThread.CurrentUICulture
的快捷方式,根据docs:
The UI culture specifies the resources an application needs to support user input and output, and by default is the same as the operating system culture.
至于Culture
,它又是运行线程的属性,但这里的默认值是用更复杂的方式确定的here。简短摘要:
- 检查应用程序域中的 DefaultThreadCurrentCulture 属性
- 如果我们在 .Net 4.6 或更高版本中并且当前线程是其他线程调用的任务,请尝试获取调用者的文化
- 通过调用 Windows GetUserDefaultLocaleName 函数(因此再次 OS)
InitializeCulture()
method can be overridden and you can easily choose your own Page.Culture
and Page.UICulture
。您还可以在 Web.config
中添加全球化部分或在您的 BasePage 中设置文化。但是这些属性的默认值是如何确定和准确设置的呢? UICulture 是否取自浏览器请求的accept-header?文化是从服务器上拿的吗?
请注意,我不是在询问 difference between these two properties,而是在何处或何时设置默认值(如果我未在我的应用程序中的任何位置设置默认值)。那么我的应用程序之外的哪些浏览器、用户、服务器...设置会影响该值?
UICulture
是Page.CurrentThread.CurrentUICulture
的快捷方式,根据docs:
The UI culture specifies the resources an application needs to support user input and output, and by default is the same as the operating system culture.
至于Culture
,它又是运行线程的属性,但这里的默认值是用更复杂的方式确定的here。简短摘要:
- 检查应用程序域中的 DefaultThreadCurrentCulture 属性
- 如果我们在 .Net 4.6 或更高版本中并且当前线程是其他线程调用的任务,请尝试获取调用者的文化
- 通过调用 Windows GetUserDefaultLocaleName 函数(因此再次 OS)