Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Lokalisierung mit Plugins
t-master
myCSharp.de - Member



Dabei seit:
Beiträge: 181

Themenstarter:

Lokalisierung mit Plugins

beantworten | zitieren | melden

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 :-P) Lokalisierungsmethode, die die Unterverzeichnisse des Programms nach weiteren Lokalisierungsdateien durchsucht und die dann zusammen bereitstellt?

Tobias
private Nachricht | Beiträge des Benutzers
tom-essen
myCSharp.de - Experte

Avatar #avatar-2140.png


Dabei seit:
Beiträge: 1928
Herkunft: NRW

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
EgoFelix
myCSharp.de - Member



Dabei seit:
Beiträge: 38

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
tom-essen
myCSharp.de - Experte

Avatar #avatar-2140.png


Dabei seit:
Beiträge: 1928
Herkunft: NRW

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
EgoFelix
myCSharp.de - Member



Dabei seit:
Beiträge: 38

beantworten | zitieren | melden

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...
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von EgoFelix am .
Mit freundlichen Grüßen
Felix
private Nachricht | Beiträge des Benutzers
t-master
myCSharp.de - Member



Dabei seit:
Beiträge: 181

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers