Как перевести названия языков CultureInfo

Я знаю три способа получить полное языковое имя объекта CultureInfo.

CultureInfo.DisplayName   
CultureInfo.NativeName  
CultureInfo.EnglishName

DisplayName дает имя на установленном языке .net.
NativeName дает имя на языке «CultureInfos».
EnglishName дает имя на английском языке (удивительно...)

Таким образом, для CultureInfo de-DE это дает (при установке на английском языке .net)
немецкий
немецкий
немецкий

Теперь мой вопрос: есть ли способ запросить название языка de-DE на другом языке? Например. Мне нужно название языка de-DE на голландском языке (которое будет «Duits»).


person Yodah    schedule 12.03.2010    source источник


Ответы (3)


Эта функция не встроена в .NET Framework.

Возможно, обратите внимание на API Google Translate.

person Dead account    schedule 12.03.2010
comment
Вот чего я боялся. Единственный бесплатный перевод, который вы получаете, это английский язык, язык установки .NET (если он отличается) и перевод на родной язык CultureInfo. Мне придется сопоставить преимущества использования Google Translate API с усилиями. - person Yodah; 12.03.2010

Пример для 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;
    }
person Mr.Angel    schedule 19.10.2012
comment
Спасибо, я искал способ получить информацию о культуре на основе названия языка, это то, что мне было нужно. - person Naomi; 02.07.2015

В принципе работает следующий код:

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.

    На большинстве компьютеров установлен только один язык, что в большинстве случаев делает это занятие бессмысленным.

person CodesInChaos    schedule 15.05.2018