¿Cómo traducir nombres de los idiomas CultureInfo
-
19-09-2019 - |
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').
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.