C# CultureInfo 和CultureUIInfo的区别.

来源:互联网 发布:刘嘉忆 知乎 编辑:程序博客网 时间:2024/05/01 00:09

     今天网上搜索了一下CultureInfo 和CultureUIInfo的区别. 发现这个原来也不是那么简单.大有来头的.简单的说说我们应用程序中的语言翻译吧.有几个概念先要了解一下:全球化,本地化

 

全球化:简单说就是你开发的应用程序能够跨越多个文化地区使用,而不必顾虑语言和地区的差别.就是说我的程序在中国以中文的形势显示,到了俄国能以俄文的形势显示.

本地化:使用一种本地特有的文化和语言显示创建,存储,输入,输出数据的内容的过程.文化影响日期的显示格式(如显示mm/dd/yyyy还是dd/mm/yyyy),货币显示格式.

 

 世界分为若干个文化和区域.文化是基于语言和文化习惯的一组特性.语言与文化相互依赖,相互影响,语言是文化的重要载体.RFC 1766定义了文化的名称,这些名称根据语言和国家或区域的不同在世界各地使用。例如en-AUen-CAen-GBen-US分别用于表示澳大利亚、加拿大、英国和美国的英语。一个区域有多种语言像(中国,台湾,香港这个区域

,说的都是中文,但是有(zh-CHS(简体中文),zh-TW(台湾中文),zh-HK(香港中文)),一种语言也可以在多个

区域使用,像(墨西哥,西班牙,阿根廷,秘鲁都说西班牙语).

本地化是通过(语言+地理位置)实现的.

例如:fr是法语语言的代码,而fr-FR意味着是法国使用的语言.因此fr仅仅是指定的语言,而fr-FR才实现了本地化.同样fr-CA带表加拿大法语的本地化.如果我们仅仅使用fr它仅代表一种中立性的文化.

现在要区别这三个名次的区别:特定文化,中立文化,不变的文化

 

特定文化:在引用上面的例子fr-FR和fr-CA就是特定的文化,分别代表法国法语和加拿大法语. 如果只有fr表示法语.是一种中立的文化.

有时候应用程序不必为每个特定文化翻译,如果法国和加拿大说的法语没有太大区别的话,可以使用中立的文化本地化应用程序.

而不需要特定的文化.

 

不变的文化(Invaraint Culturre):固定区域性不区分区域性。应用程序可通过语言标识符或使用空字符串 ("") 的名称来指定固定区域性。InvariantCulture 用于检索固定区域性的实例。它与英语语言关联,但不与任何国家/地区关联。Globalization 命名空间中需要设置区域性的几乎所有方法都使用固定区域性。这个是我从msdn上抄来的.

 

     

显示了文化类型的相互关系。

 

 

  

CurrentCulture和CurrentUICulture

设置文化时必须区分用户界面的文化和数字及日期格式的文化。文化与线程相关,

有了这两种文化类型,就可以把两个文化设置应用于线程。用线程设置文化时,

Thread类提供了属性CurrentCultureCurrentUICulture。属性CurrentCulture

用于设置与格式化和排序选项一起使用的文化,而属性CurrentUICulture用于设置用户界面的语言。

使用Windows控制面板中的“区域和语言”选项,用户就可以改变CurrentCulture的默认设置,

如图17-3所示。使用这个配置,还可以改变文化的默认数字、时间和日期格式。

CurrentUICulture不依赖于这个配置,而依赖于操作系统的语言。

这有一个例外:如果Windows XPWindows 2000安装了多语言用户

界面(Muti-language User Interface, MUI),就可以用区域配置改变用户界面的语言,

这会影响CurrentUICulture属性。

Resources.zh-CHS.resx,注意到新的名称新增加的部分必须是文化