【问题标题】:How is the default Culture and UICulture determined?默认 Culture 和 UICulture 是如何确定的?
【发布时间】:2017-02-08 13:58:28
【问题描述】:

InitializeCulture() 方法可以被覆盖,您可以轻松选择自己的Page.CulturePage.UICulture。您还可以在Web.config 中添加全球化部分或在您的 BasePage 中设置文化。但是这些属性的默认值是如何确定和准确设置的呢? UICulture 是否取自浏览器请求的接受标头?文化是从服务器获取的吗?

请注意,我不是要求difference between these two properties,而是如果我没有在我的应用程序中的任何位置设置默认值,则设置默认值的位置或时间。那么,我的应用程序之外的哪些浏览器、用户、服务器、...设置会影响该值?

【问题讨论】:

  • 你的意思是:IIS管理器->选择你的网站->选择“.NET全球化”设置,选择文化和UI文化。
  • 如果这是唯一考虑的事情,那么是的,这就是我要找的。但是,如果还考虑到用户的浏览器设置等其他因素,我很想知道哪个设置胜过哪个设置等。
  • 在您指向 Page.Culture 的链接中,它在备注下方显示:“您还可以将值设置为 auto,这将自动检测浏览器的首选语言并进行设置”

标签: c# asp.net .net culture system.web


【解决方案1】:

UICulturePage.CurrentThread.CurrentUICulture的快捷方式,也就是根据docs

UI 文化指定应用程序支持用户输入和输出所需的资源,默认情况下与操作系统文化相同。

至于Culture,它又是一个正在运行的线程的属性,但这里的默认值以更复杂的方式确定,解释here。一个简短的总结:

  1. 检查应用程序域中的 DefaultThreadCurrentCulture 属性
  2. 如果我们在 .Net 4.6 或更高版本中,并且当前线程是由其他线程调用的任务,请尝试获取调用者的文化
  3. 通过调用 Windows GetUserDefaultLocaleName 函数(再次调用操作系统)

【讨论】:

    猜你喜欢
    • 2020-01-10
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 2018-07-15
    • 2012-09-23
    • 2018-09-04
    相关资源
    最近更新 更多