【问题标题】:How to translate CultureInfo language names如何翻译 CultureInfo 语言名称
【发布时间】: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”)。

【问题讨论】:

    标签: c# cultureinfo


    【解决方案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 版本。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-27
      • 2015-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多