如何翻译CultureInfo语言名称

时间:2010-03-12 12:58:45

标签: c# cultureinfo

我知道有三种方法可以获得CultureInfo对象的完整语言名称。

CultureInfo.DisplayName   
CultureInfo.NativeName  
CultureInfo.EnglishName

DisplayName以安装的.net语言提供名称 NativeName以“CultureInfos”语言提供名称 EnglishName用英文命名(令人惊讶的是......)

因此,对于CultureInfo de-DE,这给出了(在英文.net上安装)
德国
德语
德国

现在我的问题:有没有办法用另一种语言询问de-DE的语言名称?例如。我想用荷兰语中的de-DE语言名称(这将是'Duits')。

3 个答案:

答案 0 :(得分:15)

此功能未内置于.NET Framework

或许看看Google Translate API

答案 1 :(得分:5)

CultureInfo.EnglishName:

的示例
    public CultureInfo GetCultureInfo(string EnglishName)
    {
        foreach (CultureInfo info in CultureInfo.GetCultures(CultureTypes.AllCultures))
        {
            if (info.EnglishName == EnglishName)
                return new CultureInfo(info.Name);
        }

        return null;
    }

答案 2 :(得分:1)

原则上,以下代码有效:

private static ResourceManager resourceManager = new ResourceManager("mscorlib", typeof(int).Assembly);

public static string CultureName(CultureInfo culture, CultureInfo displayCulture)
{
    return resourceManager.GetString("Globalization.ci_" + culture.Name, displayCulture);
}

但是有一些重要的限制:

  • 它依赖于未记录的行为,因此它可能会破坏Windows或.NET的更新
  • 需要在运行它的计算机上安装显示语言。您可以安装其他语言,具体取决于您使用的Windows版本。

    在大多数计算机上只有一种已安装的语言,这在大多数情况下都是毫无意义的。