通过英文名称获取CultureInfo

7

是否可以通过语言文化的英文名称获取 CultureInfo

想象一下我们已经拥有了:丹麦语、英语、西班牙语等等……

谢谢!

3个回答

11
var names = CultureInfo.GetCultures(CultureTypes.AllCultures).ToLookup(x => x.EnglishName);
names["English"].FirstOrDefault();

可以完美地与 x.ThreeLetterWindowsLanguageName 和任何其他 NLS 列一起使用。感谢您的代码! - Sylvain

9
var EnglishCulture = CultureInfo.GetCultures(CultureTypes.AllCultures)
                                .Where(r => r.EnglishName == "English");

或者如果您需要 FirstOrDefault

var EnglishCulture = CultureInfo.GetCultures(CultureTypes.AllCultures)
                                .FirstOrDefault(r=> r.EnglishName == "English");

3
没有内置方法可以通过英文名获取一个文化(Culture),所以你可以编写一个:
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;
}

这是一个演示: http://ideone.com/KX4U8l

Tim,可以用 c.EnglishName.Equals(englishName,StringComparison.InvariantCultureIgnoreCase) 替换比较吗? - Habib

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接