如何使用全名创建CultureInfo实例或将全名转换为CultureInfo代码?

时间:2012-12-18 14:10:37

标签: c#

无论如何使用完整的displayname:

创建cultureInfo对象的实例
CultureInfo userCulture = new CultureInfo("Japanese (Japan)");

或将完整的显示名称转换为文化代码:

toCultureCode("Japanese (Japan)"); 

会返回"ja-JP"

2 个答案:

答案 0 :(得分:3)

没有内置方法可以通过它的英文名称来获取文化,所以你可以写一个:

public static CultureInfo getCultureByEnglishName(String englishName)
{
    // create an array of CultureInfo to hold all the cultures found, 
    // these include the users local culture, and all the
    // cultures installed with the .Net Framework
    CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures);
    // get culture by it's english name 
    var culture = cultures.FirstOrDefault(c => 
        c.EnglishName.Equals(englishName, StringComparison.InvariantCultureIgnoreCase));
    return culture;
}

DEMO

toCultureCodeToString

String name = "Japanese (Japan)";
CultureInfo japanCulture = getCultureByEnglishName(name);
Console.Write(japanCulture.ToString()); // -> "ja-JP"

答案 1 :(得分:2)

您可以使用Linq

using System.Linq;

CultureInfo culture = CultureInfo.GetCultures(CultureTypes.AllCultures).FirstOrDefault(c => c.DisplayName == "Japanese (Japan)");