Question

J'utilise un assemblage satellite pour stocker toutes les ressources de localisation dans une application C #.

Ce que je dois faire, c'est créer un menu dans l'interface graphique avec toutes les langues disponibles pour l'application. Existe-t-il un moyen d'obtenir des informations de manière dynamique?

Était-ce utile?

La solution

Cette fonction renvoie un tableau de toutes les cultures installées dans le dossier App_GlobalResources - changez le chemin de recherche en fonction de vos besoins. Pour la culture invariante, il retourne "auto".

public static string[] GetInstalledCultures()
{
    List<string> cultures = new List<string>();
    foreach (string file in Directory.GetFiles(HttpContext.Current.Server.MapPath("/App_GlobalResources"), \\Change folder to search in if needed.
        "*.resx", SearchOption.TopDirectoryOnly))
    {
        string name = file.Split('\\').Last();
        name = name.Split('.')[1];

        cultures.Add(name != "resx" ? name : "auto"); \\Change "auto" to something else like "en-US" if needed.
    }
    return cultures.ToArray();
}

Vous pouvez également utiliser celui-ci pour obtenir plus de fonctionnalités afin d'obtenir toutes les instances de CultureInfo:

public static CultureInfo[] GetInstalledCultures()
{
    List<CultureInfo> cultures = new List<CultureInfo>();
    foreach (string file in Directory.GetFiles(HttpContext.Current.Server.MapPath("/App_GlobalResources"), "*.resx", SearchOption.TopDirectoryOnly))
    {
        string name = file.Split('\\').Last();
        name = name.Split('.')[1];

     string culture = name != "resx" ? name : "en-US";
     cultures.Add(new CultureInfo(culture));
    }
    return cultures.ToArray();
}

Autres conseils

Chaque ensemble satellite d'une langue spécifique porte le même nom, mais réside dans un sous-dossier nommé d'après la culture spécifique, par exemple. fr ou fr-CA.
Vous pouvez peut-être utiliser ce fait et analyser la hiérarchie des dossiers pour créer ce menu de manière dynamique.

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