根据 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 区域性的 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 构造函数中指定区域性的区域性名称或区域性标识符 (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

请参见

任务

如何:创建自定义区域性

参考

CultureInfo

CultureAndRegionInfoBuilder