Laden...

Lokalisierung mit Plugins

Erstellt von t-master vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.551 Views
T
t-master Themenstarter:in
179 Beiträge seit 2007
vor 15 Jahren
Lokalisierung mit Plugins

Hi
ich stehe hier vor einem kleinen Problem.
Ich hab eine Anwendung mit Plugins, die ich gerne um einige Sprachen erweitern würde.
Bei einer Anwendung ohne Plugins geht das ja schön mit dem integrierten Zeug von WPF, aber wie mach ich das mit Plugins?
Gibt es irgendeine (möglichst schon fertige 😛) Lokalisierungsmethode, die die Unterverzeichnisse des Programms nach weiteren Lokalisierungsdateien durchsucht und die dann zusammen bereitstellt?

Tobias

1.815 Beiträge seit 2005
vor 15 Jahren

Hallo!

Du könntest dir einen Zusatzdienst bauen, welcher ein eigenes ResourceDictionary anlegt. Darin werden dann die Texte der aktuellen Sprache mit einem entsprechenden Schlüssel hinterlegt. Die PlugIns könnten sich an diesem Zusatzdienst registrieren, und ihre Texte für alle vom PlugIn unterstützten Sprachen mit den passenden Schlüsseln angeben. Die Umschaltung der Sprache würde dann ausschließlich über den Zusatzdienst laufen.

Nobody is perfect. I'm sad, i'm not nobody 🙁

E
38 Beiträge seit 2009
vor 15 Jahren

Genau so habe ich es im Moment auch gelöst. Ein MUIManager, welcher XML-Dateien parst und die Werte dann ich ein Dicitonary übernimmt. Jedes Plugin kann XML-Dateien in den MUIManager laden, welche dieser dann parst. Das Dictionary wird über ein normales Binding in die Masken intigriert. Eine andere Lösung ist mir bis jetzt noch nicht in den Sinn gekommen...

Mit freundlichen Grüßen
Felix

1.815 Beiträge seit 2005
vor 15 Jahren

Hallo!

Ich hatte mal versucht, das Ganze über eine Klasse mit dynamischen Eigenschaften zu regeln, aber wirkliche Vorteile ergeben sich daraus nicht. Es hat eher den Nachteil, dass diese Klasse extra überall verfügbar gemacht werden muss, während man auf Resourcen aus jedem UIElement raus mittels FindResource bzw. über Application.Current zugreifen kann.

EDIT: SpellCheck

Nobody is perfect. I'm sad, i'm not nobody 🙁

E
38 Beiträge seit 2009
vor 15 Jahren

Mein MUIManager ist über einen Singleton global verfügbar. Einbinden tue ich das ganze z.B. mit diesem Codeblock:

Text="{Binding Source={x:Static fb:MUIManager.GetInstance}, Path=[sqlsetup_salutation]}"

Der ließt mir aus den XML-Dateien die SQL-Setup Begrüßung aus. Leider etwas umständlich, aber ich habe bis heute keine bessere Lösung gefunden, um das ganze auch pluginübergreifend zu verwenden...

Mit freundlichen Grüßen
Felix

T
t-master Themenstarter:in
179 Beiträge seit 2007
vor 15 Jahren

hi,
ich hab das Problem mittlerweile durch das anpassen von dieser Lösung:
http://wpflocalizeextension.codeplex.com/
gelöst
funktioniert recht gut, Ich kann mehrere XML-Dateien für eine Sprache benutzten, sodass Plugins ihre eigenen XMLs mitbringen können und das wechseln der Sprache während der Laufzeit geht auch und das war alles was ich brauchte.