Probleme beim Laden lokalisierter Ressourcen mit dem ResourceManager

Paul

Grünschnabel
Hi Leute,

ich habe gerade ein Problem mit dem ResourceManager und hoffte, dass mir vielleicht jemand helfen könne:

Ich bin bei einem meiner Programme gerade dabei, die Forms etc. zu lokalisieren, um auch englische Formulare zu implementieren. In der Klassenbibliothek, in der die meisten meiner Forms liegen funktioniert das auch ohne Probleme. Weiterhin läd das Programm aber zur Laufzeit Assemblys (Klassenbibliotheken) nach, um bestimmte Klassen in diesen als Plug-ins einzubinden. Ich habe den entsprechenden Formularen der Plug-ins (keine Diskussion über Sinn oder Unsinn der Vorgehensweise bitte, es sei denn, es trägt zur Lösung des Problems bei) jeweils noch eine entsprechende Localize-Methode spendiert, die immer dann aufgerufen wird, wenn im Hauptprogramm die Sprache geändert wird. In einem der Plug-ins habe ich diese Methode auch implementiert und für die Beschriftungen der Controls eine Ressourcen-Datei Captions.resx, zusammen mit der lokalisierten Version Captions.de.resx erstellt. Nun versuche ich, die entsprechenden Strings, die in der Ressource definiert sind, mit dem ResourceManager zu laden, ungefähr so:

Code:
ResourceManager resourceManager = new ResourceManager("NBackAudio.Captions", typeof(NBack).Assembly);

            foreach(Control ctrl in this.Controls)
            {

                String caption = resourceManager.GetString(ctrl.Name);

                if (caption != null)
                {
                    ctrl.Text = caption;
                }
            }

Das ist so ziemlich die selbe Vorgehensweise, die ich auch in meinem Hauptformular verwendet habe. Leider wird in meinem Plug-in nur die Standard-Ressource verwendet und nicht die lokalisierte Ressource, egal, welche CurrentUICulture ich einstelle (normaler Weise wird diese zu laden der lokalisierten Ressourcen verwendet). Auch wenn ich beim Laden der Strings eine bestimmte Kultur übergebe, wird nur die Default-Kultur verwendet.

Es wäre sehr schön, wenn jemand von euch eine Idee hat, was ich falsch mache oder woran im Allgemeinen der Fehler liegt.

Vielen Dank im Voraus,
Paul

EDIT:
Habe das Problem gefunden. Die Sattelitenassemblys (.dlls die für die jeweiligen Lokalisierungen erstellt werden) wurden natürlich nicht mit kopirt und konnten deshalb zur Leufzeit des Programms auch nicht geladen werden. Im Programmordner gibt es - bei lokalisierten Programmen - für die verschiedenen Kulturen/Sprachen Ordner, in denen die entsprechenden Assemblys liegen und da müssen die Sprach-Assemblys der Plug-ins auch rein. Just in case...
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück