以其语言获取文化显示名称

时间:2013-10-21 13:32:36

标签: c# asp.net .net

我现在的文化如下:

var culture = Thread.CurrentThread.CurrentCulture.DisplayName;

问题在于我总是用英文命名:

  • EN成为英文
  • PT成为葡萄牙语而不是Português
  • FR成为法国而不是......

如何以该特定语言获取文化的DisplayName?

谢谢你, 米格尔

4 个答案:

答案 0 :(得分:14)

您需要显示NativeName而不是DisplayName

答案 1 :(得分:5)

DisplayName将以当前.NET框架的位置语言显示。

您可以使用NativeName(或者甚至只是Name我没有尝试过这个)而不是DisplayName,这应该可以解决问题。

修改

使用以下代码测试后:

// set the current culture to German    
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
var native = Thread.CurrentThread.CurrentCulture.NativeName;
var display = Thread.CurrentThread.CurrentCulture.DisplayName;
var name = Thread.CurrentThread.CurrentCulture.Name;

结果是:

  

native =“Deutsch(Deutschland)”

     

display =“德语(德国)”

     

name =“de-DE”

答案 2 :(得分:3)

如果只是试图获取文化的本地化语言(没有国家/地区),可以使用此代码段:

CultureInfo culture = Thread.CurrentThread.CurrentCulture;

string nativeName = culture.IsNeutralCulture
    ? culture.NativeName
    : culture.Parent.NativeName;

如果有人使用特定的本地化语言名称,可以使用此名称:

string language = "es-ES";
CultureInfo culture = new CultureInfo(language);

string nativeName = culture.IsNeutralCulture
    ? culture.NativeName
    : culture.Parent.NativeName;

如果想要一个标题案例名称(例如Français而不是français),请使用以下行:

string result = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(nativeName);

作为一种方法:

private static string GetTitleCaseNativeLanguage(string language)
{
    CultureInfo culture = new CultureInfo(language);

    string nativeName = culture.IsNeutralCulture
        ? culture.NativeName
        : culture.Parent.NativeName;

    return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(nativeName);
}

或作为扩展方法:

public static string GetNativeLanguageName(this CultureInfo culture, bool useTitleCase = true)
{
    string nativeName = culture.IsNeutralCulture
        ? culture.NativeName
        : culture.Parent.NativeName;

    return useTitleCase
        ? CultureInfo.CurrentCulture.TextInfo.ToTitleCase(nativeName)
        : nativeName;
}

答案 3 :(得分:0)

搜索cultureinfo.Displayname导致msdn上的nativename,导致How to translate CultureInfo language names