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 »).

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top