首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CultureInfo名称的常量

CultureInfo名称的常量
EN

Stack Overflow用户
提问于 2012-09-27 10:24:50
回答 2查看 13.3K关注 0票数 26

C# system/全球化命名空间中是否存在包含有效区域性名称的常量集或枚举?

我正在寻找一些东西,这样我就不需要输入"en-GB",等等。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-27 17:01:35

没有。可用的区域性列表是特定于系统的-您甚至可以使用CultureAndRegionInfoBuilder注册新的自定义区域性。

因此,如果您想要这样做,您必须为您感兴趣的通用区域性的子集创建自己的枚举或常量,例如:

代码语言:javascript
复制
public static class KnownCulture
{
    public readonly String EnglishUS = "en-US";
    public readonly String EnglishGB = "en-GB";
    ... etc ...
}

代码语言:javascript
复制
public enum KnownLCID
{
    EnglishUS = 0x409,
    EnglishGB = 0x809,
    ...
}

这类似于KnownColor枚举:不可能为所有可能的颜色创建枚举,但可以为常用颜色创建枚举。

我不期望微软提供一个开箱即用的等效KnownCulture枚举,因为它相当敏感(为什么我的文化不包括在内?)。

票数 11
EN

Stack Overflow用户

发布于 2012-09-27 10:26:34

是的,有,GetCultures

代码语言:javascript
复制
System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.SpecificCultures)

这将返回一个CultureInfo对象数组,所以如果您想要字符串名称,可以使用如下内容:

代码语言:javascript
复制
IEnumerable<CultureInfo> cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
string[] names = cultures.Select(c => c.Name).ToArray();

注意“区域性类型”枚举(从MSDN链接)。我认为最有用的应该是NeutralCultures和SpecificCultures。

与某种语言关联但不特定于某个国家/地区的

  • NeutralCultures区域性。.NET框架区域性的名称由从ISO639-1派生的小写两个字母的代码组成。例如:"en“(英语)是中性的文化。自定义区域性可以具有任何用户指定的名称,而不仅仅是两个字母的代码。不变区域性包含在由指定特定于某个国家/地区的此value.
  • SpecificCultures区域性的CultureInfo.GetCultures方法返回的区域性数组中。这些区域性的名称遵循RFC 4646 (Windows Vista及更高版本)。格式为"-",其中是从ISO 639-1派生的两个字母的小写代码,是从ISO 3166派生的两个字母的大写代码。例如,英语(美国)的"en-US“是一种特定的区域性。自定义区域性可以具有任何用户指定的名称,而不仅仅是安装在name.
  • InstalledWin32Cultures操作系统中的符合标准的所有区域性。请注意,并非所有受.NET框架支持的区域性都安装在operating system.
  • AllCultures中.NET框架附带的所有区域性,包括中立的和特定的区域性、安装在.NET操作系统中的区域性,以及由用户创建的user.
  • ReplacementCultures自定义区域性创建的.NET自定义区域性创建的自定义区域性(替换.NET框架附带的区域性)。
票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12613211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档