繁体   English   中英

C#CultureInfo.CurrentCulture说en_US但我的Windows设置设置为南非

[英]C# CultureInfo.CurrentCulture says en_US but my Windows settings are set to South Africa

我在Windows 8.1控制面板中将我的区域/位置更改为南非。 当我从Visual Studio 2013启动我的应用程序并获取CultureInfo.CurrentUICulture时,它仍然显示“ en-US”。

public CultureInfo getCurrentCulture() {
    if (CultureInfo.DefaultThreadCurrentUICulture != null) {
        return CultureInfo.DefaulThreadCurrentUICulture;
    } else {
        return CultureInfo.CurrentUICulture;
    }
}

我也尝试过CultureInfo.CurrentCulture而不是CurrentUICulture,但它们的行为方式相同。 如何通过代码确定用户的真实语言环境? 或者我是否通过Windows设置错误地设置了区域?

我的应用程序格式化货币字符串等,我需要确保它使用正确的货币符号。 南非对我来说是一个很好的用例,因为它们仍然使用英语,但是区域号码的格式不同。

我想我应该把这个作为答案。

Windows区分用户的物理位置,所需的本地化(格式化)属性和运行语言。 例如,讲西班牙语的用户可能位于英国,但希望使用美式英语格式。 CultureInfo.CurrentCulture是指Regions控制面板的“格式”选项卡下的设置。 (以上链接之一中显示的用户界面对于Win8来说已经有些过时了;有关Win8类似物,请参见此处 。)

本文提供了有关各种区域性属性以及如何在用户界面中进行设置的更多信息: YACVCP(还有另一篇CurrentCulture与CurrentUICulture文章)

因此,要测试南非货币字符串等,您必须将“格式”下拉菜单更改为“英语(南非)”,然后重新运行。

另外,通过实验,我发现当我重新运行应用程序时,Visual Studio 2008(我正在使用的)并不总是能够适应语言环境的变化。 这可能是托管过程中的某种错误。 重新启动和重新运行我的应用程序通常似乎可以解决问题。 关闭并重新打开Visual Studio总是如此。

(注意 - 我正在使用Win7。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM