Pregunta

No conozco tres maneras de obtener un nombre de lenguaje lleno de un objeto CultureInfo.

CultureInfo.DisplayName   
CultureInfo.NativeName  
CultureInfo.EnglishName

DisplayName da el nombre en el lenguaje .NET instalado.
NativeName da el nombre en el lenguaje '' CultureInfos.
EnglishName da el nombre en Inglés (sorprendentemente ...)

Así que para CultureInfo de-DE esto da (en la instalación de un Inglés .net)
alemán
Deutsch
Alemán

Ahora mi pregunta: ¿Hay una manera de pedir el nombre del idioma de de-DE en otro idioma? P.ej. Quiero el nombre del idioma de de-DE en holandés (que sería 'Duits').

¿Fue útil?

Solución

Esta funcionalidad no está integrado en el .NET Framework

Tal vez busque en API de Google Translate

Otros consejos

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

En principio, el código siguiente funciona:

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

Sin embargo, hay limitaciones importantes:

  • Se basa en el comportamiento no documentado, por lo que puede romper con las actualizaciones de Windows o .NET
  • El idioma de la pantalla debe estar instalado en el ordenador se ejecuta en. Puede instalar idiomas adicionales, dependiendo de la edición de Windows que esté utilizando.

    En la mayoría de los ordenadores sólo hay un idioma instalado, haciendo de este un ejercicio sin sentido en la mayoría de los casos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top