CultureInfo.CurrentCulture从哪里读取文化

时间:2012-03-14 07:31:27

标签: asp.net globalization

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

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

我使用

下的web.config中的以下设置让我的代码正常工作
<globalization culture="en-US" />

由于

4 个答案:

答案 0 :(得分:8)

MSDN

  

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

换句话说,它基于Thread,在ASP.NET上下文中有一个上下文...来自客户端浏览器中使用的区域设置 如果在其他所有内容上使用Server Variables或系统设置。

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

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

Witch声明客户端浏览器设置了3种语言,其中第一种语言为en-US

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

enter image description here

上面的代码是:

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

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

enter image description here

答案 1 :(得分:5)

花了8个小时后 - 找出解决方案感谢罗纳德 - 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&gt; SID ...&gt;控制面板&gt;国际。网络服务的安全标识符是:SID:   S-1-5-20。

     

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

我做了#1 - 它为我做了一招!

答案 2 :(得分:1)

答案 3 :(得分:1)

对于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的答案