根据 Windows 区域设置生成区域性

如果 .NET Framework 中没有与 Windows 区域设置对应的区域性,.NET Framework 中的全球化支持就会自动创建这样的区域性。

生成的区域性

Windows 附带了一组区域设置(等效于 .NET Framework 的区域性),用于指定区域性特定的信息,如文本的排序方式、日期的格式以及数字和货币的显示格式。 Windows 还支持名为“启用语言包”(ELK) 的功能,使用该功能,您可以添加新的区域设置而无需新的操作系统版本。 因此,应用程序可以向 Windows 添加一个与 .NET Framework 中的区域性不对应的区域设置。

如果应用程序尝试为 .NET Framework 中不存在的区域性创建 CultureInfo 对象,并且 Windows 中有对应的区域设置,则 .NET Framework 将基于 Windows 区域设置自动创建一个新区域性。 新的区域性在应用程序指定其名称或标识符时创建,并且可以像其他任何 .NET Framework 区域性一样使用。

生成的区域性的名称由其 ISO 639 语言代码、ISO 3166 国家/地区代码和可选的用于书面语言的 ISO 15924 书写标记组成。 例如,使用波斯尼亚语(在波斯尼亚和黑塞哥维那地区使用,用拉丁语书写)的区域性名称为 bs-Latn-BA。 NLS information page at the Go Global Developer Center(https://msdn.microsoft.com/zh-cn/goglobal/bb896001.aspx(访问全球开发中心上的 NLS 信息页面)提供了带有相应名称和标识符的所支持的区域性的完整表。

性能注意事项

根据 Windows 区域设置生成的区域性是在第一次为该区域性调用 CultureInfo 构造函数时创建的,而且创建过程非常耗时。 不过,后续区域性对象的创建将不会对性能产生负面影响。

序列化和反序列化区域性的过程为:创建 CultureInfo 对象的二进制表示形式,然后用该二进制表示形式再生原始的 CultureInfo 对象。 应用程序可以在一台计算机上序列化一个区域性,在另一台计算机上对它进行反序列化。 但是,如果应用程序在一台计算机上序列化一个派生自 ELK 区域设置的区域性,然后在另一台未安装相同 ELK 区域设置的计算机上对二进制表示形式进行反序列化,则会引发异常。

默认值

Windows 区域设置中的数据将被用来填充从该区域设置创建的 CultureInfo 对象的相应属性。 如果没有相应的区域设置数据,将用默认值填充属性。

许多 CultureInfo 方法的返回值和一些属性取决于区域性特定数据。 如果 Windows 区域设置没有为生成的区域性提供区域性特定数据,数据将从默认区域性派生。 在大多数情况下,默认区域性为固定区域性。

下表列出了支持 .NET Framework 区域性的 CultureInfoRegionInfoNumberFormatInfoCompareInfoTextInfoCalendar 类的属性的默认值,及其方法的默认区域性。

CultureInfo

成员

默认值

IsNeutralCulture

false,因为 Windows 没有非特定区域性。

Parent

固定区域性,因为 Windows 没有非特定区域性。

GetConsoleFallbackUICulture

固定区域性。

RegionInfo

成员

默认值

GeoId

对于 Windows 2000 为零;从 Windows XP 及更高版本继承。

DateTimeFormatInfo

成员

默认值

GetAbbreviatedEraName

固定区域性。

GetEra

固定区域性。

GetEraName

固定区域性。

MonthDayPattern

固定区域性。

NativeCalendarName

固定区域性。

NumberFormatInfo

成员

默认值

NaNSymbol

固定区域性。

NegativeInfinitySymbol

固定区域性。

PercentDecimalDigits

固定区域性。

PercentDecimalSeparator

固定区域性。

PercentGroupSeparator

固定区域性。

PercentGroupSizes

固定区域性。

PercentNegativePattern

固定区域性。

PercentPositivePattern

固定区域性。

PercentSymbol

固定区域性。

PerMilleSymbol

固定区域性。

PositiveInfinitySymbol

固定区域性。

CompareInfo

成员

默认值

IndexOf

(无)

IsPrefix

(无)

IsSuffix

(无)

LastIndexOf

(无)

TextInfo

成员

默认值

ToTitleCase

与 en-US 区域性的结果相同,除非 Windows 区域设置 ANSI 代码页为土耳其语。 在这种情况下,默认值与 tr-TR 区域性的结果相同。

Calendar

成员

默认值

全部

InvariantCulture 返回的日历的相应成员。

最新 ELK 版本的区域性名称

应用程序通过在 CultureInfo 构造函数中指定区域性的区域性名称或区域性标识符来创建区域性。 下面列出了 ELK 版本 1 和 2 附带的 Windows 区域性。 NLS information page at the Go Global Developer Center(https://msdn.microsoft.com/zh-cn/goglobal/bb896001.aspx(访问全球开发中心上的 NLS 信息页面)提供了带有相应名称和标识符的所支持的区域性的完整表。

  • 孟加拉语(印度)

  • 波斯尼亚语(西里尔语,波斯尼亚和黑塞哥维那)

  • 波斯尼亚语(拉丁语,波斯尼亚和黑塞哥维那)

  • 克罗地亚语(波斯尼亚和黑塞哥维那)

  • 达里语(阿富汗)

  • 菲律宾语(菲律宾)

  • 伊努伊特语(拉丁语,加拿大)

  • 爱尔兰语(爱尔兰)

  • 索萨语(南非)

  • 祖鲁语(南非)

  • 卢森堡语(卢森堡)

  • 马拉雅拉姆语(印度)

  • 马耳他语(马耳他)

  • 毛利语(新西兰)

  • 马普切族语(智利)

  • 莫霍克语(加拿大)

  • 尼泊尔语(尼泊尔)

  • 普什图语(阿富汗)

  • 盖丘亚语(玻利维亚)

  • 盖丘亚语(厄瓜多尔)

  • 盖丘亚语(秘鲁)

  • 罗曼什语(瑞士)

  • 萨米语,伊纳里(芬兰)

  • 萨米语,律勒欧(挪威)

  • 萨米语,律勒欧(瑞典)

  • 萨米语,北方(芬兰)

  • 萨米语,北方(挪威)

  • 萨米语,北方(瑞典)

  • 萨米语,斯科特(芬兰)

  • 萨米语,南方(挪威)

  • 萨米语,南方(瑞典)

  • 塞尔维亚语(西里尔语,波斯尼亚和黑塞哥维那)

  • 塞尔维亚语(拉丁语,波斯尼亚和黑塞哥维那)

  • 巴索托语(南非)

  • 色札那语(南非)

  • 北部索布语(德国)

  • 威尔士语(英国)

请参见

任务

如何:创建自定义区域性

参考

CultureInfo

CultureAndRegionInfoBuilder