导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

CultureInfo 类

2013/12/13

提供有关特定区域性的信息。这些信息包括区域性的名称、书写系统、使用的日历、用于数字和日期的格式以及排序字符串的顺序。

System.Object
  System.Globalization.CultureInfo

Namespace:  System.Globalization
程序集:  mscorlib(位于 mscorlib.dll 中)

public class CultureInfo : IFormatProvider

CultureInfo 类型公开以下成员。

  名称说明
公共方法CultureInfo根据由名称指定的区域性初始化 CultureInfo 类的新实例。
返回顶部

  名称说明
公共属性Calendar获取区域性使用的默认日历。
公共属性CompareInfo获取用来为区域性定义如何比较字符串的 CompareInfo 对象。
公共属性静态成员CurrentCulture获取表示当前线程使用的区域性的 CultureInfo 对象。
公共属性静态成员CurrentUICulture获取 CultureInfo 对象,它表示资源管理器在运行时查找区域性特定资源所用的当前区域性。
公共属性DateTimeFormat获取或设置 DateTimeFormatInfo 对象,该对象定义用于将日期和时间转换为字符串的相应于区域性的格式。
公共属性静态成员DefaultThreadCurrentCulture获取或设置当前应用程序域中线程的默认区域性。
公共属性静态成员DefaultThreadCurrentUICulture在当前应用程序域中获取或设置线程的默认用户界面区域性。
公共属性DisplayName获取采用 .NET Framework 本地化版本的语言的区域性名称,其格式为“language (country/region)”。
公共属性EnglishName获取格式为“language (country/region)”的英语区域性名称。
公共属性静态成员InvariantCulture获取不依赖于区域性(固定)的 CultureInfo
公共属性IsNeutralCulture获取一个值,该值指示当前 CultureInfo 对象是否表示非特定区域性。
公共属性IsReadOnly获取一个值,该值指示当前 CultureInfo 对象是否为只读。
公共属性Name获取格式为“languagecode-country/regioncode”的区域性名称。
公共属性NativeName获取区域性设置显示的本地名称,它由语言、国家/地区以及可选的书写符号组成。
公共属性NumberFormat获取或设置 NumberFormatInfo 对象,该对象定义用于将数字、货币值和百分比转换为字符串的相应于区域性的格式。
公共属性OptionalCalendars获取该区域性可使用的日历的列表。
公共属性Parent获取表示当前 CultureInfo 的父区域性的 CultureInfo
公共属性TextInfo获取定义与区域性关联的书写体系的 TextInfo 对象。
公共属性TwoLetterISOLanguageName获取当前 CultureInfo 的语言的由两个字母构成的 ISO 639-1 代码。
返回顶部

  名称说明
公共方法Clone创建当前 CultureInfo 对象的副本。
公共方法Equals确定指定对象与此 CultureInfo 对象是否是相同的区域性。 (重写 Object.Equals(Object)。)
受保护的方法Finalize允许 Object 在垃圾回收器回收该对象之前尝试释放资源并执行其他清理操作。 (从 Object 继承。)
公共方法GetFormat获取一个定义如何格式化指定类型的对象。
公共方法GetHashCode用作当前 CultureInfo 的哈希函数,适合用在哈希算法和数据结构(如哈希表)中。 (重写 Object.GetHashCode()。)
公共方法GetType获取当前实例的 Type (从 Object 继承。)
受保护的方法MemberwiseClone创建当前 Object 的浅表副本。 (从 Object 继承。)
公共方法静态成员ReadOnly返回指定的 CultureInfo 对象的只读包装。
公共方法ToString返回包含当前 CultureInfo 对象的名称的字符串,格式为“languagecode-country/regioncode”。 (重写 Object.ToString()。)
返回顶部

CultureInfo 类提供区域性特定的信息,如关联的语言、子语言、国家/地区、日历和区域性约定。此类还提供对 DateTimeFormatInfoNumberFormatInfoCompareInfoTextInfo 的区域性特定实例的访问。这些对象包含区域性特定操作(如大小写、格式化日期和数字以及比较字符串)所需的信息。

String 类的成员直接或间接使用该类来获取有关默认区域性的信息。

说明注意:

CultureInfo 对象(CultureInfo.InvariantCulture 除外)从操作系统检索其数据。因此,各个 CultureInfo 属性的值不仅可能会随操作系统而有所不同,还可能会随相同操作系统的不同版本而有所不同。

区域性名称和标识符

CultureInfo 类基于 RFC 4646 为每个区域性指定一个唯一名称。此名称由一个与语言关联的 ISO 639 两字母小写区域性代码和一个与国家或地区关联的 ISO 3166 两字母大写子区域性代码组成。

说明注意:

当区域性名称被传递给 CultureInfo 类构造函数时,其大小写并不重要。

区域性名称的格式为“languagecode-country/regioncode”,其中 languagecode 是语言代码,country/regioncode 是子区域性代码。例如“ja-JP”代表“日语(日本)”,“en-US”代表“英语(美国)”。在双字母语言代码不可用的情况中,将使用从 ISO 639-2 派生的三字母代码。

某些区域性名称还指定 ISO 15924 书写符号。例如,“-Cyrl”指定西里尔语书写符号,“-Latn”指定拉丁语书写符号。包含书写符号的区域性名称使用“languagecode-scripttag-country/regioncode”模式呈现。此类区域性名称的示例有:“uz-Cyrl-UZ”代表“乌兹别克语(乌兹别克斯坦,西里尔语)”。

非特定区域性(由语言定义的没有特定国家/地区的区域性)仅由两个小写字母语言代码指定。例如,“fr”指定“法语”的非特定区域性,“de”指定“德语”的非特定区域性。

说明注意:

有两个区域性名称不符合此规则,即“zh-CHS”(简体中文)和“zh-CHT”(繁体中文),它们均为非特定区域性。

下表列出了 .NET Framework 识别并可在实例化 CultureInfo 对象时使用的预定义区域性名称。但是,由于 .NET Framework 从操作系统检索区域性信息,因此区域性信息的可用性可能因平台和操作系统的版本而异。

区域性/语言名称

区域性

""(空字符串)

固定区域性

af

南非荷兰语

af-ZA

南非荷兰语(南非)

sq

阿尔巴尼亚语

sq-AL

阿尔巴尼亚语(阿尔巴尼亚)

ar

阿拉伯语

ar-DZ

阿拉伯语(阿尔及利亚)

ar-BH

阿拉伯语(巴林)

ar-EG

阿拉伯语(埃及)

ar-IQ

阿拉伯语(伊拉克)

ar-JO

阿拉伯语(约旦)

ar-KW

阿拉伯语(科威特)

ar-LB

阿拉伯语(黎巴嫩)

ar-LY

阿拉伯语(利比亚)

ar-MA

阿拉伯语(摩洛哥)

ar-OM

阿拉伯语(阿曼)

ar-QA

阿拉伯语(卡塔尔)

ar-SA

阿拉伯语(沙特阿拉伯)

ar-SY

阿拉伯语(叙利亚)

ar-TN

阿拉伯语(突尼斯)

ar-AE

阿拉伯语(阿联酋)

ar-YE

阿拉伯语(也门)

hy

亚美尼亚语

hy-AM

亚美尼亚语(亚美尼亚)

az

阿泽里语

az-Cyrl-AZ

阿泽里语(阿塞拜疆,西里尔语)

az-Latn-AZ

阿泽里语(阿塞拜疆,拉丁语)

eu

巴斯克语

eu-ES

巴斯克语(巴斯克地区)

be

白俄罗斯语

be-BY

白俄罗斯语(白俄罗斯)

bg

保加利亚语

bg-BG

保加利亚语(保加利亚)

ca

加泰罗尼亚语

ca-ES

加泰罗尼亚语(加泰罗尼亚地区)

zh-HK

中文(中国香港特别行政区)

zh-MO

中文(澳门特别行政区)

zh-CN

中文(中国)

zh-Hans

中文(简体)

zh-SG

中文(新加坡)

zh-TW

中文(台湾)

zh-Hant

中文(繁体)

hr

克罗地亚语

hr-BA

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

hr-HR

克罗地亚语(克罗地亚)

cs

捷克语

cs-CZ

捷克语(捷克共和国)

da

丹麦语

da-DK

丹麦语(丹麦)

dv

迪维希语

dv-MV

迪维希语(马尔代夫)

nl

荷兰语

nl-BE

荷兰语(比利时)

nl-NL

荷兰语(荷兰)

en

英语

en-AU

英语(澳大利亚)

en-BZ

英语(伯利兹)

en-CA

英语(加拿大)

en-029

英语(加勒比)

en-IE

英语(爱尔兰)

en-JM

英语(牙买加)

en-NZ

英语(新西兰)

en-PH

英语(菲律宾)

en-ZA

英语(南非)

en-TT

英语(特立尼达和多巴哥)

en-GB

英语(英国)

en-US

英语(美国)

en-ZW

英语(津巴布韦)

et

爱沙尼亚语

et-EE

爱沙尼亚语(爱沙尼亚)

fo

法罗语

fo-FO

法罗语(法罗群岛)

fa

波斯语

fa-IR

波斯语(伊朗)

fi

芬兰语

fi-FI

芬兰语(芬兰)

fr

法语

fr-BE

法语(比利时)

fr-CA

法语(加拿大)

fr-FR

法语(法国)

fr-LU

法语(卢森堡)

fr-MC

法语(摩纳哥)

fr-CH

法语(瑞士)

gl

加利西亚语

gl-ES

加利西亚语(西班牙)

ka

格鲁吉亚语

ka-GE

格鲁吉亚语(格鲁吉亚)

de

德语

de-AT

德语(奥地利)

de-DE

德语(德国)

de-DE_phoneb

德语(德国,电话簿排序)

de-LI

德语(列支敦士登)

de-LU

德语(卢森堡)

de-CH

德语(瑞士)

el

希腊语

el-GR

希腊语(希腊)

gu

古吉拉特语

gu-IN

古吉拉特语(印度)

he

希伯来语

he-IL

希伯来语(以色列)

hi

印地语

hi-IN

印地语(印度)

hu

匈牙利语

hu-HU

匈牙利语(匈牙利)

冰岛语

is-IS

冰岛语(冰岛)

id

印度尼西亚语

id-ID

印度尼西亚语(印度尼西亚)

it

意大利语

it-IT

意大利语(意大利)

it-CH

意大利语(瑞士)

ja

日语

ja-JP

日语(日本)

kn

卡纳达语

kn-IN

卡纳达语(印度)

kk

哈萨克语

kk-KZ

哈萨克语(哈萨克斯坦)

kok

贡根语

kok-IN

贡根语(印度)

ko

朝鲜语

ko-KR

朝鲜语(韩国)

ky

吉尔吉斯语

ky-KG

吉尔吉斯语(吉尔吉斯坦)

lv

拉脱维亚语

lv-LV

拉脱维亚语(拉脱维亚)

lt

立陶宛语

lt-LT

立陶宛语(立陶宛)

mk

马其顿语

mk-MK

马其顿语(马其顿,FYROM)

ms

马来语

ms-BN

马来语(文莱达鲁萨兰)

ms-MY

马来语(马来西亚)

mr

马拉地语

mr-IN

马拉地语(印度)

mn

蒙古语

mn-MN

蒙古语(蒙古)

no

挪威语

nb-NO

挪威语(伯克梅尔,挪威)

nn-NO

挪威语(尼诺斯克,挪威)

pl

波兰语

pl-PL

波兰语(波兰)

pt

葡萄牙语

pt-BR

葡萄牙语(巴西)

pt-PT

葡萄牙语(葡萄牙)

pa

旁遮普语

pa-IN

旁遮普语(印度)

ro

罗马尼亚语

ro-RO

罗马尼亚语(罗马尼亚)

ru

俄语

ru-RU

俄语(俄罗斯)

sa

梵语

sa-IN

梵语(印度)

sr-Cyrl-CS

塞尔维亚语(塞尔维亚,西里尔语)

sr-Latn-CS

塞尔维亚语(塞尔维亚,拉丁语)

sk

斯洛伐克语

sk-SK

斯洛伐克语(斯洛伐克)

sl

斯洛文尼亚语

sl-SI

斯洛文尼亚语(斯洛文尼亚)

es

西班牙语

es-AR

西班牙语(阿根廷)

es-BO

西班牙语(玻利维亚)

es-CL

西班牙语(智利)

es-CO

西班牙语(哥伦比亚)

es-CR

西班牙语(哥斯达黎加)

es-DO

西班牙语(多米尼加共和国)

es-EC

西班牙语(厄瓜多尔)

es-SV

西班牙语(萨尔瓦多)

es-GT

西班牙语(危地马拉)

es-HN

西班牙语(洪都拉斯)

es-MX

西班牙语(墨西哥)

es-NI

西班牙语(尼加拉瓜)

es-PA

西班牙语(巴拿马)

es-PY

西班牙语(巴拉圭)

es-PE

西班牙语(秘鲁)

es-PR

西班牙语(波多黎各)

es-ES

西班牙语(西班牙)

es-ES_tradnl

西班牙语(西班牙,传统排序)

es-UY

西班牙语(乌拉圭)

es-VE

西班牙语(委内瑞拉)

sw

斯瓦希里语

sw-KE

斯瓦希里语(肯尼亚)

sv

瑞典语

sv-FI

瑞典语(芬兰)

sv-SE

瑞典语(瑞典)

syr

叙利亚语

syr-SY

叙利亚语(叙利亚)

ta

泰米尔语

ta-IN

泰米尔语(印度)

tt

鞑靼语

tt-RU

鞑靼语(俄罗斯)

te

泰卢固语

te-IN

泰卢固语(印度)

th

泰语

th-TH

泰语(泰国)

tr

土耳其语

tr-TR

土耳其语(土耳其)

uk

乌克兰语

uk-UA

乌克兰语(乌克兰)

ur

乌尔都语

ur-PK

乌尔都语(巴基斯坦)

uz

乌兹别克语

uz-Cyrl-UZ

乌兹别克语(乌兹别克斯坦,西里尔语)

uz-Latn-UZ

乌兹别克语(乌兹别克斯坦,拉丁语)

vi

越南语

vi-VN

越南语(越南)

几个不同的名称与一个区域性紧密关联,其中几个典型的与以下类成员关联的名称有:

  • CultureInfo.ToString

    通常,这是传递给 CultureInfo 类构造函数的字符串的“规范化”版本。其语言部分始终小写,国家/地区部分始终大写。

  • CultureInfo.Name

    此名称表示 CultureInfo 对象的语言和国家/地区部分以及书写符号(如果存在)。如果 CultureInfo 对象是使用定义特定排序顺序的字符串实例化的,则此名称不包含排序顺序信息。

  • CompareInfo.Name

    此名称表示语言和国家/地区部分、书写符号部分(如果存在)以及排序顺序指示(如果相关)。

固定区域性、非特定区域性和特定区域性

区域性通常分为三个集合:固定区域性、非特定区域性和特定区域性。

固定区域性不区分区域性。应用程序可通过标识符或使用空字符串 ("") 的名称来指定固定区域性。InvariantCulture 定义固定区域性的实例。它与英语语言关联,但不与任何国家/地区关联。System.Globalization 命名空间中需要设置区域性的几乎所有方法都使用固定区域性。

非特定区域性是与某种语言关联但不与国家/地区关联的区域性。特定区域性是与某种语言和某个国家/地区关联的区域性。例如,“fr”是非特定区域性,而“fr-FR”是特定区域性。注意,“zh-Hans”(简体中文)和“zh-Hant”(繁体中文)均为非特定区域性。

不建议为非特定区域性创建 CompareInfo 类的实例,因为它包含的数据是任意的。若要显示数据并对其进行排序,请同时指定语言和地区。

被定义的区域性有层次结构,即特定区域性的父级是非特定区域性,而非特定区域性的父级是固定区域性。Parent 属性包含与特定区域性关联的非特定区域性。自定义区域性应根据此模式定义 Parent 属性。

如果 DateTimeFormatInfo.CalendarTaiwanCalendar,但 Thread.CurrentCulture 不是"zh-TW",则 DateTimeFormatInfo.GetEraNameDateTimeFormatInfo.GetAbbreviatedEraName 将返回一个空字符串 ("")。

自定义区域性

在准备软件来处理自定义区域性时,请考虑以下几点:

  • 自定义区域性的值可能会超过 Microsoft 所提供的区域性的范围。例如,某些区域性具有特别长的月份名称、意外的日期或时间格式或其他不常见的数据。

  • 考虑用户的区域性数据值;例如,用户可能希望使用 24 小时制的时钟或 yyyyMMdd 日期格式。

  • 请记住,自定义区域性会重写默认值。因此,不能认为区域性数据是固定不变的。国家/地区名称、日期格式和拼写方法在未来都可能发生更改。

动态区域性数据

除了固定区域性之外,区域性数据为动态的。即使是预定义区域性也不例外。例如,有些国家或地区会采用新的货币、更改单词的拼写或更改首选的日历,这时区域性定义也会更改以跟踪这些变化。自定义区域性会在没有任何提示的情况下更改,因此任何特定区域性可能会被自定义的替换区域性重写。单个用户还可以重写区域性首选项。应用程序在运行时应始终获取区域性数据。

实现的接口

此类实现 IFormatProvider,以便为应用程序提供格式设置信息。

TopicLocation
如何:为 ASP.NET 网页全球化设置区域性和 UI 区域性生成 ASP .NET Web 应用程序
如何:为全球化使用 HTML 标记从右向左显示文本生成 ASP .NET Web 应用程序
如何:以编程方式检索资源值生成 ASP .NET Web 应用程序
如何:为 ASP.NET 网站创建资源文件生成 ASP .NET Web 应用程序
如何:为 ASP.NET 网站创建资源文件 (Visual Studio)在 Visual Studio 中构建 ASP .NET Web 应用程序
如何:为 ASP.NET 网页全球化设置区域性和 UI 区域性在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:以编程方式检索资源值在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:为 ASP.NET 网站创建资源文件 (Visual Studio)在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:为全球化使用 HTML 标记从右向左显示文本在 Visual Studio 中生成 ASP .NET Web 应用程序

下面的示例确定使用中文的每个特定区域性的父区域性。


using System;
using System.Globalization;

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      // Displays the header.
      outputBlock.FontFamily = new System.Windows.Media.FontFamily("Courier New");
      outputBlock.Text += "SPECIFIC CULTURE                             PARENT CULTURE" + "\n";

      // Create an array of Chinese culture names.
      string[] cultureNames = { "zh-CN", "zh-Hans", "zh-Hant", "zh-HK",  
                                "zh-MO", "zh-SG", "zh-TW", };

      // Determines the specific cultures that use the Chinese language, and displays the parent culture.
      foreach (string cultureName in cultureNames)
      {
         CultureInfo ci = new CultureInfo(cultureName);
         outputBlock.Text += String.Format("{0,-7} {1,-37}", ci.Name, ci.EnglishName);
         outputBlock.Text += String.Format("{0,-7} {1}\n", ci.Parent.Name, ci.Parent.EnglishName);
      }
   }
}
/*
This example produces the following output.

SPECIFIC CULTURE                             PARENT CULTURE
zh-CN   Chinese (People's Republic of China) zh-Hans Chinese 
zh-Hans Chinese                                      Invariant Language (Invariant Country)
zh-Hant Chinese                                      Invariant Language (Invariant Country)
zh-HK   Chinese (Hong Kong S.A.R.)           zh-Hant Chinese 
zh-MO   Chinese (Macao S.A.R.)               zh-Hant Chinese 
zh-SG   Chinese (Singapore)                  zh-Hans Chinese 
zh-TW   Chinese (Taiwan)                     zh-Hant Chinese 
*/


Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

此类型的所有公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

显示:
© 2014 Microsoft