Ich habe zwei Dateien: Resources.resx und Resources.de.resx.
Das Resources.de.resx enthält nur einen übersetzten Wert. Ich verwende die folgende Methode, um alle Ressourcenschlüssel / Werte zu laden:
%Vor%Wenn ich die Ressourcengruppe zum ersten Mal lade, ist mein Thread.CurrentThread.CurrentCulture.Name eine leere Zeichenfolge, Thread.CurrentThread.CurrentCulture.NativeName="Invariante Sprache (unveränderliches Land)", Thread.CurrentThread.CurrentCulture.LCID = 127.
Der Ressourcensatz enthält also 200 Schlüssel mit Werten, die wie erwartet von Resources.resx geladen wurden. Dann wechsle ich die aktuelle Kultur mit dem folgenden Code, der durch einen Klick auf eine Schaltfläche ausgelöst wird:
%Vor%Wenn ich jetzt den Ressourcensatz lade, habe ich nur einen Schlüssel im Satz. Es ist der übersetzte Schlüssel von Resources.de.resx. Aber ich erwarte immer noch 200 Schlüssel mit nur einem Gegenstand, der ins Deutsche übersetzt wird.
Die Elternkultur der gegenwärtigen deutschen (de) Kultur ist die gleiche unveränderliche Sprachkultur, wie es war, als ich die Methode anrufe, um die Ressourcenmenge zum ersten Mal zu holen. Grundsätzlich sieht es so aus, als ob der Fallback aus bestimmten Gründen nicht funktioniert. Kannst du mir sagen, was mache ich falsch?
Die Art und Weise, wie Sie die Ressourcen aufrufen, verhindert das Ausweichmanöver, da Sie zuerst das lokalisierte (de) Resource Set erhalten und dann versuchen, auf seine spezifischen Werte in der Resources.de.resx-Datei zuzugreifen. Dies ist, was die Methode Resources.ResourceManager.GetResourceSet (Thread.CurrentThread.CurrentCulture, true, true) tun wird, um einen Resource Set zurückzugeben.
Der Fallback-Parameter von GetResourceSet wird nur angewendet, wenn das Resource Set überhaupt nicht existiert. Nachdem Sie die Resources.de.resx-Datei erstellt haben, wird dieser Ressourcensatz zurückgegeben.
Um die impliziten Fallback-Regeln für die Ressourcen zu nutzen, sollten Sie 'Resources.Manager.GetString (Token)' verwenden, da diese die Hierarchie der Ressourcengruppen durchläuft und auf die nächste Implementierung Ihres Tokens zurückgreift.