11

我得到的当前文化如下:

var culture = Thread.CurrentThread.CurrentCulture.DisplayName;

问题是我总是得到英文名字:

  • EN变成英语
  • PT 变成葡萄牙语而不是葡萄牙语
  • FR变成法语而不是...

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

谢谢你,米格尔

4

4 回答 4

21

您需要显示NativeName而不是DisplayName.

于 2013-10-21T13:37:09.487 回答
9

如果您只是想获得一种文化的本地化语言(没有国家/地区),则可以使用以下代码段:

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;
}
于 2017-09-27T07:58:12.170 回答
7

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 (德意志)"

display = "德语(德国)"

名称=“de-DE”

于 2013-10-21T13:38:23.403 回答
1

对cultureinfo.Displayname 的搜索导致msdn 上的nativename,这导致如何翻译CultureInfo 语言名称

于 2013-10-21T13:41:36.807 回答