CurrentCulture 与 CurrentUICulture

来源:互联网 发布:java socket 短链接 编辑:程序博客网 时间:2024/05/12 15:25

这两个都是对应Windows系统的设置。

CurrentCulture和数字、时间日期等的格式化相关,和字符串比较、排序、大小写转换相关。属于软件国际化(Globalization)。

CurrentUICulture用于选择界面语言,和界面语言的翻译相关。属于软件本地化(Localization)。

两者经常值相同,但也可不同。比如,可以用英文版WIndows系统,CurrentUICulture就是en-US,但在区域和语言里选中国的格式,CurrentCulture就是zh-CN。


对于WPF,其Xaml界面总是缺省使用en-US,而忽略CurrentUICulture。原因来自WinForm的教训。本来.NET从一开始就采用了从底层开始的完全自动的国际化支持,以便方便开发者,但多数开发者完全忽视全球化的问题,而完全假定数字、时间日期、字符串顺序等总是一样的,结果常常导致在别的语言的环境下运行出错。所以,WPF中的本地化改为选择开启,而非缺省开启。若要开启,需在程序启动时、加载任何界面前,设置期望的界面语言:

                    FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),
                        new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));

当然,这么做时一定要在不同Culture配置下测试一下。

更多细节参见:http://blogs.msdn.com/b/michkap/archive/2007/01/11/1449754.aspx