如何翻译 CultureInfo 语言名称

Posted

技术标签:

【中文标题】如何翻译 CultureInfo 语言名称【英文标题】:How to translate CultureInfo language names 【发布时间】:2011-01-26 19:55:54 【问题描述】:

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

CultureInfo.DisplayName   
CultureInfo.NativeName  
CultureInfo.EnglishName

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

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

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

【问题讨论】:

【参考方案1】:

此功能未内置在 .NET Framework 中

也许看看Google Translate API

【讨论】:

这就是我害怕的。您获得的唯一免费翻译是英语、.NET 安装语言(如果不同)和本地 CultureInfo 语言的翻译。我必须权衡使用 google translate api 所带来的收益。【参考方案2】:

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;
    

【讨论】:

谢谢,我正在寻找一种根据语言名称获取文化信息的方法,这正是我所需要的【参考方案3】:

原则上以下代码有效:

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 版本。

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

【讨论】:

以上是关于如何翻译 CultureInfo 语言名称的主要内容,如果未能解决你的问题,请参考以下文章

每个国家/地区的 CultureInfo 名称

为国家、语言组合创建自定义 CultureInfo

CultureInfo提供有关特定区域性的信息,包括区域性的名称语言简称书写系统使用的日历以及对日期和排序字符串的格式化字符串设置。

如何从 CultureInfo 获取没有国家/地区的语言

如何在 ASP .NET MVC 中使用 Resources 和 CultureInfo 更改站点语言?

在 CultureInfo 中获取当前语言