Ein Echtzeit-Sprachumschalter zur UI-Lokalisierung in WPF (Teil 1)de

Die gängigen Praktiken zur Übersetzung von Benutzeroberflächen in WPF basieren zwar auf langjährigen .NET Standards, jedoch erlauben Sie keine Echtzeit-Umschaltung der aktiven Zielsprache. Die sprach-spezifischen Satellite Assemblies werden zu Programmstart geladen und erlauben den Sprachwechsel nur per Neustart der Anwendung. In dieser dreiteiligen Artikelserie diskutiere ich die Möglichkeit des Umschaltens der Zielsprache in Echtzeit.

Mit Hilfe von Satellite Assemblies und Uids besitzt WPF eine solide Best Practice zur Übersetzung von Benutzeroberflächen. Diese basiert zwar auf langjährigen .Net-Standards, erlaubt es dem Anwender aber nicht, die aktive Zielsprache ohne Neustart der Anwendung zu wechseln. Nun gibt es in der Praxis viele Gründe, die eine ad hoc Umschaltung der aktiven Zielsprache wünschenswert machen:

  • Support-Mitarbeiter können im internationalen Kontext Kundenhilfe gewähren, ohne dass ein Neustart der Anwendung nötig wäre; oder auch für den Fall, in dem ein Neustart nicht möglich ist, um z.B. einen aktuellen Fehlerzustand nicht zu kompromittieren;
  • Kiosk- und Demo-Anwendungen für internationalen Publikumsverkehr (z.B. auf Messen) müssen sich schnell und unkompliziert in verschiedene Zielsprachen “übersetzen” lassen;
  • der Neustart einer Anwendung ist kosten- und/oder zeitintensiv, diese muss aber einen schnellen Benutzerwechsel durchführen können (z.B. mobile Apps im Außendienst);

Anforderungen an eine moderne UI-Lokalisierung

Neben den oben erwähnten Gründen für eine adäquatere UI-Lokalisierung ergeben sich aus der Entwicklungspraxis weitere Anforderungen:

  1. Die Übersetzungen müssen nach Zielsprachen (besser: Kulturen) getrennt in externen Dateien verwahrt und verwaltet werden, so dass diese ohne Neukompilierung der Anwendung bearbeitet werden können.
  2. Die Anbindung der UI an die jeweiligen Übersetzungen sollte nach Möglichkeit einfach, transparent und so bequem wie möglich erfolgen.
  3. Da nicht nur Text übersetzt werden muss, sollten auch andere Datentypen lokalisiert werden können.

WPF bietet hervorragende Möglichkeiten, auf die obigen Anforderungen einzugehen. Im Kern machen wir uns ihre ausgereifte Datenbindung samt Dependency Properties und INotifyPropertyChanged zu Nutze, wobei wir einen kleinen XAML-Kniff anwenden, der uns die Anbindung im deklarativen Code stark vereinfacht. Durch den Einsatz von Bindungskonvertern werden wir auch grafische und anderweitige Typen jenseits von Text in die Lokalisierung einbeziehen.

Den ersten Code gibts in Kürze Weiter gehts im zweiten Teil

Related Posts

European Citizens’ Initiative Against TTIP and CETA