如何翻译 CultureInfo 语言名称

21

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

CultureInfo.DisplayName   
CultureInfo.NativeName  
CultureInfo.EnglishName

DisplayName返回已安装的.NET语言中的名称。
NativeName返回“CultureInfos”语言中的名称。
EnglishName以英语显示名称(出乎意料地…)

因此,对于CultureInfo de-DE,在英语的.NET安装中,结果为:
German
Deutsch
German

现在我的问题是:是否有一种方法可以用另一种语言询问de-DE的语言名称?例如,我想要荷兰语中de-DE的语言名称(将是“Duits”)。

3个回答

15

这个功能没有内置在.NET Framework中

也许可以看看Google翻译API


2
这就是我担心的事情。您唯一可以获得的免费翻译是英语、.NET安装语言(如果不同)和本地CultureInfo语言的翻译。我必须权衡使用Google翻译API所带来的收益和努力。 - Yodah

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;
    }

谢谢,我正在寻找一种根据语言名称获取文化信息的方法,这正是我所需要的。 - Naomi

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 版本安装其他语言。

    大多数计算机只安装了一种语言,在大多数情况下这是一个无意义的练习。


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