今天网上搜索了一下CultureInfo 和CultureUIInfo的区别. 发现这个原来也不是那么简单.大有来头的.简单的说说我们应用程序中的语言翻译吧.有几个概念先要了解一下:全球化,本地化
全球化:简单说就是你开发的应用程序能够跨越多个文化地区使用,而不必顾虑语言和地区的差别.就是说我的程序在中国以中文的形势显示,到了俄国能以俄文的形势显示.
本地化:使用一种本地特有的文化和语言显示创建,存储,输入,输出数据的内容的过程.文化影响日期的显示格式(如显示mm/dd/yyyy还是dd/mm/yyyy),货币显示格式.
世界分为若干个文化和区域.文化是基于语言和文化习惯的一组特性.语言与文化相互依赖,相互影响,语言是文化的重要载体.RFC 1766 定义了文化的名称,这些名称根据语言和国家或区域的不同在世界各地使用。例如 en-AU 、 en-CA 、 en-GB 和 en-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 类提供了属性 CurrentCulture 和 CurrentUICulture 。属性 CurrentCulture
用于设置与格式化和排序选项一起使用的文化,而属性 CurrentUICulture 用于设置用户界面的语言。
使用 Windows 控制面板中的“区域和语言”选项,用户就可以改变 CurrentCulture 的默认设置,
如图 17-3 所示。使用这个配置,还可以改变文化的默认数字、时间和日期格式。
CurrentUICulture 不依赖于这个配置,而依赖于操作系统的语言。
这有一个例外:如果 Windows XP 或 Windows 2000 安装了多语言用户
界面 (Muti-language User Interface, MUI) ,就可以用区域配置改变用户界面的语言,
这会影响 CurrentUICulture 属性。
Resources.zh-CHS.resx ,注意到新的名称新增加的部分必须是文化