Ann*_*e B 22 .net c# globalization
C#system/globalization命名空间中是否有一组包含有效文化名称的常量或枚举?
我正在寻找一些东西,所以我不必输入"en-GB"等.
McG*_*gle 24
是的,有,GetCultures:
System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.SpecificCultures)
Run Code Online (Sandbox Code Playgroud)
返回一个CultureInfo
对象数组,所以如果你想要字符串名,你可以使用类似的东西:
IEnumerable<CultureInfo> cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
string[] names = cultures.Select(c => c.Name).ToArray();
Run Code Online (Sandbox Code Playgroud)
请注意"文化类型"枚举(来自MSDN链接).我想最有用的是NeutralCultures和SpecificCultures.
- NeutralCultures 与语言相关但不是针对某个国家/地区的文化..NET Framework文化的名称由来自ISO 639-1的小写双字母代码组成.例如:"en"(英语)是一种中立文化.自定义文化可以具有任何用户指定的名称,而不仅仅是两个字母的代码.不变文化包含在CultureInfo.GetCultures方法返回的文化数组中,该方法指定此值.
- SpecificCultures特定于国家/地区的文化.这些文化的名称遵循RFC 4646(Windows Vista和更高版本).格式为" - ",其中是从ISO 639-1派生的小写双字母代码,是源自ISO 3166的大写双字母代码.例如,英语(美国)的"en-US"是特定的文化.自定义文化可以具有任何用户指定的名称,而不仅仅是符合标准的名称.
- InstalledWin32Cultures 安装在Windows操作系统中的所有文化.请注意,并非所有.NET Framework支持的文化都安装在操作系统中.
- AllCultures .NET Framework 附带的所有文化,包括中性和特定文化,Windows操作系统中安装的文化以及用户创建的自定义文化.
- UserCustomCulture用户创建的自定义文化.
- ReplacementCultures 由用户创建的自定义文化,用于替换.NET Framework附带的文化.
不,没有.可用文化列表是特定于系统的 - 您甚至可以使用CultureAndRegionInfoBuilder注册新的自定义文化.
因此,如果你想要这个,你必须为你感兴趣的常见文化子集创建自己的枚举或常量,例如:
public static class KnownCulture
{
public readonly String EnglishUS = "en-US";
public readonly String EnglishGB = "en-GB";
... etc ...
}
Run Code Online (Sandbox Code Playgroud)
要么
public enum KnownLCID
{
EnglishUS = 0x409,
EnglishGB = 0x809,
...
}
Run Code Online (Sandbox Code Playgroud)
这类似于KnownColor
枚举:不可能为所有可能的颜色创建枚举,但是对于经常使用的颜色进行枚举是有意义的.
我不希望微软提供KnownCulture
开箱即用的等效枚举,因为它相当敏感(为什么我的文化不包括在内?).
归档时间: |
|
查看次数: |
11321 次 |
最近记录: |