根据 Windows 区域设置生成区域性
更新:2007 年 11 月
如果 .NET Framework 中没有与 Windows 区域设置对应的区域性,.NET Framework 中的全球化支持就会自动创建这样的区域性。
生成的区域性
Windows 附带了一组区域设置(等效于 .NET Framework 的区域性),用于指定区域性特定的信息,如文本的排序方式、日期的格式以及数字和货币的显示格式。Windows 还支持名为“启用语言包”(ELK) 的功能,使用该功能,您可以添加新的区域设置而无需新的操作系统版本。因此,应用程序可以向 Windows 添加一个与 .NET Framework 中的区域性不对应的区域设置。
如果应用程序尝试为 .NET Framework 中不存在的区域性创建 CultureInfo 对象,并且 Windows 中有对应的区域设置,则 .NET Framework 将基于 Windows 区域设置自动创建一个新区域性。新的区域性在应用程序指定其名称或 LCID 时创建,并且可以像其他任何 .NET Framework 区域性一样使用。
生成的区域性的名称由其 ISO 639 语言代码、ISO 3166 国家/地区代码和可选的用于书面语言的 ISO 15924 书写标记组成。例如,语言为波斯尼亚语(在波斯尼亚地区使用,用拉丁语书写)的区域性名称为 bs-Latn-BA。
性能注意事项
根据 Windows 区域设置生成的区域性是在第一次为该区域性调用 CultureInfo 构造函数时创建的,而且创建过程非常耗时。不过,后续区域性对象的创建将不会对性能产生负面影响。
序列化和反序列化区域性的过程为:创建 CultureInfo 对象的二进制表示形式,然后用该二进制表示形式再生原始的 CultureInfo 对象。应用程序可以在一台计算机上序列化一个区域性,在另一台计算机上对它进行反序列化。但是,如果应用程序在一台计算机上序列化一个派生自 ELK 区域设置的区域性,然后在另一台未安装相同 ELK 区域设置的计算机上对二进制表示形式进行反序列化,则会引发异常。
默认值
Windows 区域设置中的数据将被用来填充从该区域设置创建的 CultureInfo 对象的相应属性。如果没有相应的区域设置数据,将用默认值填充属性。
许多 CultureInfo 方法的返回值和一些属性取决于区域性特定数据。如果 Windows 区域设置没有为生成的区域性提供区域性特定数据,数据将从默认区域性派生。在大多数情况下,默认区域性为固定区域性。
下表列出了支持 .NET Framework 区域性的 CultureInfo、RegionInfo、NumberFormatInfo、CompareInfo、TextInfo 和 Calendar 类的属性的默认值,及其方法的默认区域性。
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 构造函数中指定区域性的区域性名称或区域性标识符 (LCID) 来创建区域性。下表列出了 ELK 版本 1 和 2 附带的 Windows 区域设置的区域性名称、区域性标识符、中文名称、ISO 639 语言代码和 ISO 3166 国家/地区代码。
区域性名称 |
区域性标识符 |
中文名称 |
ISO 639 代码(语言) |
ISO 3166 代码 (国家/地区) |
---|---|---|---|---|
arn-CL |
047A |
马普切族语(智利) |
arn |
CL |
bn-IN |
0445 |
孟加拉语(印度) |
bn |
IN |
bs-Cyrl-BA |
201A |
波斯尼亚语(波斯尼亚和黑塞哥维那,西里尔语) |
bs |
BA |
bs-Latn-BA |
141A |
波斯尼亚语(波斯尼亚和黑塞哥维那,拉丁语) |
bs |
BA |
cy-GB |
0452 |
威尔士语(英国) |
cy |
GB |
prs-AF |
047F |
达里语(阿富汗) |
fa |
AF |
fil-PH |
0464 |
菲律宾语(菲律宾) |
fil |
PH |
ga-IE |
043C |
爱尔兰语(爱尔兰) |
ga |
IE |
hr-BA |
101A |
克罗地亚语(波斯尼亚和黑塞哥维那) |
hr |
BA |
iu-Latn-CA |
085D |
伊努伊特语(加拿大,拉丁语) |
iu |
CA |
lb-LU |
046E |
卢森堡语(卢森堡) |
lb |
LU |
mi-NZ |
0481 |
毛利语(新西兰) |
mi |
NZ |
ml-IN |
044C |
马拉雅拉姆语(印度) |
ml |
IN |
moh-CA |
047C |
莫霍克语(加拿大) |
moh |
CA |
mt-MT |
043A |
马耳他语(马耳他) |
mt |
MT |
ne-NP |
0461 |
尼泊尔语(尼泊尔) |
ne |
NP |
ns-ZA |
046C |
塞索托语/北索托语(南非) |
nso |
ZA |
ps-AF |
0463 |
普什图语(阿富汗) |
ps |
AF |
quz-BO |
046B |
盖丘亚语(玻利维亚) |
quz |
BO |
quz-EC |
086B |
盖丘亚语(厄瓜多尔) |
quz |
EC |
quz-PE |
0C6B |
盖丘亚语(秘鲁) |
quz |
PE |
rm-CH |
0417 |
罗曼什语(瑞士) |
rm |
CH |
se-FI |
0C3B |
萨米语(北方,芬兰) |
se |
FI |
se-NO |
043B |
萨米语(北方,挪威) |
se |
NO |
se-SE |
083B |
萨米语(北方,瑞典) |
se |
SE |
sma-NO |
183B |
萨米语(南方,挪威) |
sma |
NO |
sma-SE |
1C3B |
萨米语(南方,瑞典) |
sma |
SE |
smj-NO |
103B |
萨米语(Lule,挪威) |
smj |
NO |
smj-SE |
143B |
萨米语(Lule,瑞典) |
smj |
SE |
smn-FI |
243B |
萨米语(伊纳里,芬兰) |
smn |
FI |
sms-FI |
203B |
萨米语(Skolt,芬兰) |
sms |
FI |
sr-Cyrl-BA |
1C1A |
塞尔维亚语(波斯尼亚和黑塞哥维那,西里尔语) |
sr |
BA |
sr-Latn-BA |
181A |
塞尔维亚语(波斯尼亚和黑塞哥维那,拉丁语) |
sr |
BA |
tn-ZA |
0432 |
茨瓦纳语(南非) |
tn |
ZA |
wen-DE |
042E |
北部索布语(德国) |
wen |
DE |
xh-ZA |
0434 |
科萨语(南非) |
xh |
ZA |
zu-ZA |
0435 |
祖鲁语(南非) |
zu |
ZA |