Ken*_*and 2 c# cultureinfo internationalization .net-4.5 windows-8.1
我在Windows 8.1控制面板中将我的区域/位置更改为南非.当我从Visual Studio 2013启动我的应用程序并获得CultureInfo.CurrentUICulture时,它仍然显示"en-US".
public CultureInfo getCurrentCulture() {
if (CultureInfo.DefaultThreadCurrentUICulture != null) {
return CultureInfo.DefaulThreadCurrentUICulture;
} else {
return CultureInfo.CurrentUICulture;
}
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过CultureInfo.CurrentCulture而不是CurrentUICulture,但它们的行为方式相同.如何通过代码确定用户的真实语言环境?或者我是否通过Windows设置错误地设置了区域?
我的应用程序格式化货币字符串等,我需要确保它使用正确的货币符号.南非对我来说是一个很好的用例,因为他们仍然使用英语,但只是有不同的区域数字格式.
我想我应该回答这个问题.
Windows区分用户的物理位置,所需的本地化(格式化)属性和运行语言.例如,讲西班牙语的用户可能位于英国,但希望使用美式英语格式. CultureInfo.CurrentCulture指区域控制面板的"格式"选项卡下的设置.(以上链接中显示的用户界面对于Win8来说有点过时;请参阅此处了解Win8 模拟.)
本文提供了有关各种文化属性及其在用户界面中的设置方式的更多信息:YACVCP(又一个CurrentCulture与CurrentUICulture帖子)
因此,要测试南非货币字符串等,您必须将"格式"下拉菜单更改为"英语(南非)"并重新运行.
此外,通过实验,我发现当我重新运行我的应用程序时,Visual Studio 2008(我正在使用的)并不总是在区域设置中获取更改.这可能是托管流程的某种错误.重新启动并重新运行我的应用程序通常似乎可以解决问题.关闭并重新打开Visual Studio始终如此.
(注意 - 我正在使用Win7.)