21

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

CultureInfo.DisplayName   
CultureInfo.NativeName  
CultureInfo.EnglishName

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

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

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

4

3 回答 3

15

此功能未内置于 .NET Framework

也许看看谷歌翻译 API

于 2010-03-12T13:00:42.240 回答
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;
    }
于 2012-10-19T09:46:24.677 回答
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 版本。

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

于 2018-05-15T10:38:33.067 回答