我想知道System.Globalization.CultureInfo.CurrentCulture
读取其值的设置或位置。
我使用的是Windows 7笔记本电脑,并将我的系统区域和日期时间设置更改为美国。
我使用
下的web.config中的以下设置让我的代码正常工作<globalization culture="en-US" />
由于
答案 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
的所有内容均来自系统定义,如下图所示:
上面的代码是:
<p>
<pre>System.Globalization.CultureInfo.CurrentCulture</pre>
is @System.Globalization.CultureInfo.CurrentCulture.EnglishName
</p>
无论使用何种浏览器,System.Globalization
的定义将始终来自操作系统定义
答案 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)
它使用windows GetUserDefaultLocaleName
函数。
http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.currentculture.aspx
答案 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的答案