C# system/全球化命名空间中是否存在包含有效区域性名称的常量集或枚举?
我正在寻找一些东西,这样我就不需要输入"en-GB",等等。
发布于 2012-09-27 17:01:35
没有。可用的区域性列表是特定于系统的-您甚至可以使用CultureAndRegionInfoBuilder注册新的自定义区域性。
因此,如果您想要这样做,您必须为您感兴趣的通用区域性的子集创建自己的枚举或常量,例如:
public static class KnownCulture
{
public readonly String EnglishUS = "en-US";
public readonly String EnglishGB = "en-GB";
... etc ...
}或
public enum KnownLCID
{
EnglishUS = 0x409,
EnglishGB = 0x809,
...
}这类似于KnownColor枚举:不可能为所有可能的颜色创建枚举,但可以为常用颜色创建枚举。
我不期望微软提供一个开箱即用的等效KnownCulture枚举,因为它相当敏感(为什么我的文化不包括在内?)。
发布于 2012-09-27 10:26:34
是的,有,GetCultures
System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.SpecificCultures)这将返回一个CultureInfo对象数组,所以如果您想要字符串名称,可以使用如下内容:
IEnumerable<CultureInfo> cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
string[] names = cultures.Select(c => c.Name).ToArray();注意“区域性类型”枚举(从MSDN链接)。我认为最有用的应该是NeutralCultures和SpecificCultures。
与某种语言关联但不特定于某个国家/地区的
https://stackoverflow.com/questions/12613211
复制相似问题