【问题标题】:From where CultureInfo.CurrentCulture reads cultureCultureInfo.CurrentCulture 从哪里读取文化
【发布时间】:2012-03-14 07:31:26
【问题描述】:

我想知道System.Globalization.CultureInfo.CurrentCulture 读取其值的设置或位置。

我使用的是 Windows 7 笔记本电脑,并且已将系统的区域和日期时间设置更改为美国。

我的代码使用以下设置在 web.config 下运行

<globalization culture="en-US" />

谢谢

【问题讨论】:

    标签: asp.net globalization


    【解决方案1】:

    MSDN

    文化是执行线程的属性。此只读属性等效于检索 Thread.CurrentCulture 属性返回的 CultureInfo 对象。当一个线程启动时,它的区域性最初是通过调用 Windows GetUserDefaultLocaleName 函数来确定的。

    换句话说,它是基于线程的,女巫有一个上下文...在 ASP.NET 上下文中,它来自 客户端浏览器中首先使用的 Locale strong> 如果使用Server Variables 或其他所有内容的系统设置。

    在此 Web 上下文中,您可以使用 HTTP_ACCEPT_LANGUAGE 上的 Server.Variables 方法获取它,您将获得类似以下内容:

    en-US,en;q=0.8,pt-PT;q=0.6,pt;q=0.4
    

    Witch 表示客户端浏览器设置了 3 种语言,其中第一种是 en-US

    System.Globalization 中的所有内容都来自系统定义,如下图所示:

    上面的代码是:

    <p>
        <pre>System.Globalization.CultureInfo.CurrentCulture</pre> 
        is @System.Globalization.CultureInfo.CurrentCulture.EnglishName
    </p>
    

    无论使用什么浏览器,System.Globalization 的定义始终来自操作系统定义

    【讨论】:

    • 感谢 Balexandre,这似乎是个好信息。但我刚刚检查了我的浏览器区域设置及其 en-US(我使用的是 firefox,我检查了 about:config 下的设置 general.useragent.locale),我的系统日期时间和区域设置也设置为 en-US。但是在检查 System.Globalization.CultureInfo.CurrentCulture 时,我仍然会得到 en-IN。你知道我哪里错了吗?
    【解决方案2】:

    花了 8 小时后 -- 找到解决方案 感谢 Ronald -- CultureInfo values differ between applications for the same culture. Is this a bug?

    事实证明,区域设置是按用户存储在 Windows 中的。 这是我应该意识到的。更新 以我自己的身份运行的应用程序池在两者中产生了相同的结果 应用程序。

    公平地说,仍然令人困惑的是网络服务( 应用程序池正在运行的帐户)来拥有 不正确的值。我什至不确定我会如何纠正它。

    编辑:

    如果您需要更新保留帐户的区域设置。你 有两种选择。

    Control Panel > Regional Settings > Click the administrative tab and then select "Copy Settings". 
    

    在启动的屏幕上,确保 您检查“欢迎屏幕和系统帐户”。旧版本的 我相信Windows是相似的。 对于支架。注册表:HKEY_USERS > SID... > 控制面板 > 国际。网络服务的安全标识符是: SID: S-1-5-20。

    确保您重新启动应用程序池以使设置生效。

    我做到了 #1 ——它对我有用!

    【讨论】:

      【解决方案3】:

      【讨论】:

        【解决方案4】:

        对于 ASP.NET,来自

        HKEY_USERS\S-1-5-20\Control Panel\International\

        S-1-5-20 是网络服务“用户”的安全标识符 (http://support.microsoft.com/kb/243330)

        其他类型的应用请参考GetUserDefaultLocaleName函数文档(https://msdn.microsoft.com/en-us/library/windows/desktop/dd318136%28v=vs.85%29.aspx)

        有关更改 S-1-5-20 区域设置的简单 GUI 方法,请参阅 sitecorebasics 的答案

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-01-04
          • 2014-12-19
          • 2015-03-09
          • 1970-01-01
          • 2021-07-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多