Die Lokalisierung .NET; Fallback-Sprache bei der Verwendung von ResourceManager

Ich war vor kurzem eintauchen in die Lokalisierung mit .NET. Im wesentlichen habe ich gelernt, wie man ein Formular anzupassen (Verwendung der Sprache und die Localizable-Eigenschaft), und ändern Sie dann die Kultur entsprechend.

Allerdings fand ich, dass bei der Migration von meinem hart codiert englischen strings in den automatisch erstellten Ressourcendateien, und verwenden Sie .GetString("Key") - na ja, sagen wir einfach, es war nicht glücklich :P.

Habe ich beschlossen, einen separaten resx-Dateien ausschließlich mit der hart codierten string-übersetzungen. Sie folgten der Konvention/Anforderung der [name].[Kultur-code].resx. Ich machte von dieser für die jeweilige Sprache; z.B. appstrings.de.resx (Für Deutsche) und appstrings.resx (als invariante baseline).

Zur Nutzung dieser neuen Ressourcen, erstellte ich eine Instanz der ResourceManager-und Ressourcen-Festlegen

Dim resManager As New ResourceManager("LanguageTest.appstrings", Assembly.GetExecutingAssembly)
Dim resSet As ResourceSet = resManager.GetResourceSet(My.Application.UICulture, True, True)

Die aktuelle UI-Kultur gesetzt wurde (zum Beispiel Deutsch) mit

My.Application.ChangeUICulture("de")

Original-Ausgabe

Es sei denn, der resSet.GetString("Key") ist ausdrücklich definiert in der appstrings.de.resx, es gibt eine leere Zeichenfolge. Gibt es trotzdem kann ich es machen fallback auf die appstrings.resx (wobei "Key" existiert), das ich davon ausgegangen wäre, die Standard-baseline?

Update

Rhapsody machte ein Vorschlag unten, während der eigentliche Tipp selbst nicht funktioniert, es hat in der Tat Funken ein interessanter Punkt, der mit resManager.GetString("Key"), im Gegensatz zu resSet.GetString("Key"). Dies scheint zu arbeiten, ohne Fehler bisher. Das heißt, Werte zu präsentieren, die in der spezialisierten Sprache Datei zurückgegeben, während die 'fehlenden' Werte fallen wieder auf die Standard-Kultur, wenn der Zugriff von einem einzigen Schlüssel.

Späteren Ausgabe

Die einzige Verbleibende Frage wäre, ob die Auswirkungen auf die Leistung mit ResourceManger im Gegensatz zu einem Cache ResourceSet werden, die schädlich?

InformationsquelleAutor Jake Edwards | 2010-02-16
Schreibe einen Kommentar