Comment traduire les noms de langue CultureInfo
-
19-09-2019 - |
Question
Je sais que trois façons d'obtenir un nom de langue complet d'un objet CultureInfo.
CultureInfo.DisplayName
CultureInfo.NativeName
CultureInfo.EnglishName
DisplayName donne le nom dans la langue de .net installé.
NativeName donne le nom dans la langue 'CultureInfos de.
EnglishName donne le nom en anglais (étonnamment ...)
Donc, pour CultureInfo de-DE cela donne (sur l'installation d'un Anglais)
allemand
Deutsch
Allemand
Ma question: Est-il possible de demander le nom de la langue de de-DE dans une autre langue? Par exemple. Je veux que le nom de la langue de dé-DE en néerlandais (ce qui serait « Duits »).
La solution
Cette fonctionnalité est pas intégrée dans le .NET Framework
Google Translate API
Autres conseils
Exemple de 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 principe, le code suivant fonctionne:
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);
}
Cependant, il y a des limites importantes:
- Il repose sur le comportement en situation irrégulière, il peut rompre avec des mises à jour de Windows ou .NET
-
La langue d'affichage doit être installé sur l'ordinateur que vous exécutez sur. Vous pouvez installer des langues supplémentaires, en fonction de l'édition de Windows que vous utilisez.
Sur la plupart des ordinateurs, il n'y a qu'une seule langue installée, ce qui en fait un exercice inutile dans la plupart des cas.