Frage

Ich bin mit einer Satelliten-Baugruppe all Lokalisierungsressourcen in einer C # -Anwendung zu halten.

Was muss ich tun, ist ein Menü in der GUI mit allen verfügbaren Sprachen erstellen, die für die Anwendung vorhanden ist. Gibt es eine Möglichkeit, Informationen dynamisch zu bekommen?

War es hilfreich?

Lösung

Diese Funktion gibt einen Array aller installierten Kulturen im Ordner App_GlobalResources - Suchpfad nach Ihren Bedürfnissen. Für die invariante Kultur gibt es „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();
}

Sie können auch diesen für mehr Funktionalität verwenden, um die vollen Instanzen bekommen Culture:

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

Andere Tipps

Jeder Satellit Baugruppe für eine bestimmte Sprache ist, die benannt werden, sondern befindet sich in einem Unterordner nach der spezifischen Kultur namens z.B. fr oder fr-CA.
Vielleicht können Sie diese Tatsache nutzen und die Ordnerhierarchie scannen dynamisch dieses Menü aufzubauen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top