Frage der Höflichkeit und Verständlichkeit

Schnelle Sprachanpassung mit RapidClipse

Schnelle Sprachanpassung mit RapidClipse

Frage der Höflichkeit und Verständlichkeit

Schnelle Sprachanpassung mit RapidClipse


Die Benutzeroberflächen sind heute bestmöglich an die Wünsche der Anwender:innen anzupassen. Dazu gehört auch die Möglichkeit der Sprachauswahl. Wie die Internationalisierung für Java-Applikationen gelingen kann, zeigt dieser Beitrag.

Zur Benutzerfreundlichkeit einer Anwendung gehören eine Vielzahl von Aspekten, wie Design, Layout, Interaktion, Barrierefreiheit usw. Die individuelle Sprachanpassung ist ein weiterer und sehr wichtiger Punkt, dessen Umsetzung die Anwenderinnen und Anwender heute zu Recht erwarten. Komplizierte Sachverhalte können oft nur dann komplett verstanden werden, wenn sie in der bevorzugten Sprache formuliert sind. Die Bedienung einer Applikation fällt deutlich leichter und geht schneller von der Hand, wenn die Elemente des User Interface in der gewünschten Sprache angezeigt werden. Eine häufige Anforderung an Businessapplikationen besteht also darin, dass das User Interface sprachlich individuell angepasst werden kann. Man bezeichnet diesen Vorgang als Lokalisierung bzw. Internationalisierung (Kasten: „Lokalisierung vs. Internationalisierung“). Technisch läuft es im Wesentlichen darauf hinaus, dass man die Zeichenketten innerhalb der Applikation über alle Elemente der Benutzeroberfläche dynamisiert, d. h. erst mit der Festlegung der Sprache werden zur Designzeit bzw. Laufzeit die relevanten Zeichenketten in der ausgewählten Sprache anstelle von Platzhaltern eingesetzt. Die eigentliche Sprachanpassung ist dann ein eigener, von der Softwareentwicklung unabhängiger Prozess. Er kann auch von einem Übersetzungsbüro vorgenommen werden. In der Praxis werden oft Lokalisierungstools eingesetzt. Dabei werden die Texte aus einer Quelldatei extrahiert, durch den Übersetzer bearbeitet und anschließend werden die übersetzten Ressourcen erneut in die Anwendung integriert. Wie dies mit dem RAD Tool RapidClipse für Java-Business-Applikationen gelingt, zeigt dieser Artikel.

Lokalisierung vs. Internationalisierung

Mit dem Begriff Lokalisierung bezeichnet man eine Anpassung von Software an die individuellen lokalen sprachlichen und kulturellen Gegebenheiten eines Landes. Oft wird dafür die Abkürzung „L10n“ verwendet. Die Zahl „10“ steht für die Anzahl der Buchstaben, die sich im englischen Begriff „localisation“ zwischen „l“ und „n“ befinden. Der Fokus der Anpassung ist die sprachliche Adaption. Ein weiterer Anpassungsbedarf besteht beispielsweise bei Datums-, Zeit-, Währungs-, Temperaturangaben und bei anderen Maßeinheiten. Ggf. müssen auch verwendete Farben, Schriftarten, Audio- und Bildmaterial angepasst werden. Der Vorgang der Internationalisierung („I18n“) geht noch einen Schritt weiter. Das Ziel ist es, ein Programm so zu gestalten, dass die Anpassung an die Sprachen und Kulturen ohne Änderungen am Quellcode erfolgt. Dazu müssen beispielsweise die relevanten Zeichenketten vollständig vom Quelltext getrennt und durch Platzhalter ersetzt werden. Formatierungen und Maßeinheiten sind dynamisch und in Abhängigkeit der Laufzeitumgebung anzupassen. Lokalisierung meint also die direkte Anpassung an einen Sprach- und Kulturkreis; Internationalisierung umfasst dagegen eine einmalige Anpassung, sodass man die Anwendung bei Bedarf nahezu überall einsetzen kann.

Internationalisierung mit RapidClipse

RapidClipse ist eine integrierte Entwicklungsumgebung (IDE) für Java-Business-Anwendungen, die auf Eclipse basiert und als RAD Tool konzipiert ist. Das Werkzeug vereint eine Menge von aufeinander abgestimmten Bibliotheken und Plug-ins und steht für den unmittelbaren Einsatz fertig konfiguriert zur Verfügung. Das webbasierte User Interface basiert auf dem Java Framework Vaadin. Mit Hilfe des integrierten Interface Builders kann die komplette Benutzeroberfläche direkt in RapidClipse erstellt werden. Ein besonderes Feature der IDE ist die toolgestützte Internationalisierung der Anwendung. Dazu müssen die einzelnen Elemente der Oberfläche auf das Vorhandensein von Zeichenketten untersucht werden. Der Vorgang ist in RapidClipse denkbar einfach. Wir demonstrieren es an einem Beispiel. Nehmen wir dazu eine View mit typischen Widgets wie Labels, Textfelder usw. Für ein Label muss die Eigenschaft Text, für ein Textfeld die Eigenschaft Placeholder angepasst werden. Für andere Widgets verhält es sich ähnlich. Öffnen Sie die View (die xml-Datei) im Interface Designer von RapidClipse und klicken Sie auf das Icon EXTERNALIZE STRINGS. Damit wird die gesamte View auf das Vorhandensein von Zeichenketten durchsucht, diese werden erkannt und zur individuellen Auswahl in einem Dialogfeld angezeigt (Abb. 1).

Abb. 1

Abb. 1: Extraktion aller relevanten Zeichenketten einer View

Für die gewünschte Sprache kann dann eine eigene Ressourcendatei generiert werden. In der View werden die Zeichenketten gegen dynamische Ressourcenbezeichner getauscht (Abb. 2).

Abb. 2

Abb. 2: Generierte Ressourcendatei und dynamische Ressourcenbezeichner in der View

Für jede Zielsprache der Anwendung (Deutsch, Englisch, Französisch, …) wird eine Ressourcendatei erstellt. Diese Ressourcendateien können dann übersetzt werden. Entweder direkt in RapidClipse oder mit Hilfe eines externen Texteditors durch einen Übersetzer (Abb. 3).

Abb. 3

Abb. 3: Übersetzung der Ressourcendatei

Werden bestimmte Zeichenketten in mehreren Views wiederholend genutzt, kann man sie in übergreifend verwendbare Ressourcendateien auslagern. Für die betreffenden Zeichenketten werden dann Variablen angelegt, die man anstatt eines fixen Strings wiederum in den betreffenden Eigenschaften der Widgets (Text, Placeholder, …) auswählen kann. Mit dieser Vorgehensweise wird der Aufwand bei der Sprachanpassung reduziert und gleichzeitig sorgt man für einheitliche Übersetzungen über alle Views einer Anwendung.

Bereits in RapidClipse kann man zur Designzeit die Lokalisierung mit der ausgewählten Ressourcendatei (Sprache) überprüfen. Dazu klickt man das Icon LIVE LOCALISATION an und wählt die gewünschte Sprache aus (Abb. 4).

Abb. 4

Abb. 4: Die Sprachanpassung (Lokalisierung) erfolgt bereits in RapidClipse

Um zur Laufzeit die Sprache zu wechseln, muss man die betreffende Ressourcendatei aktivieren. Das geschieht entweder auf Grund der Wahl des Nutzers, zum Beispiel in der Form: WECHSLE ZU DEUTSCH bzw CHANGE TO ENGLISH. Alternativ kann die Sprachauswahl automatisch basierend auf den Systemeinstellungen erfolgen. Für das Wechseln der Sprache genügen diese beiden Zeilen Quellcode:

UI.getCurrent().getSession().setAttribute(Locale.class, Locale.GERMAN);
UI.getCurrent().getPage().reload();

In der Praxis kann man auch so vorgehen, dass bei Aktivierung einer View die aktive Sprache auf die aktuelle Vorgabe gesetzt wird. Ist keine Sprache ausgewählt, kann ein Standardwert verwendet werden, zum Beispiel Englisch.

Die vorgestellte Vorgehensweise ist insgesamt sehr einfach und flexibel erweiterbar. Zusätzliche Sprachen kann man auch zu einem späteren Zeitpunkt nachrüsten. Dazu muss lediglich eine neue Ressourcendatei für die gewünschten Zielsprachen erstellt und die Zeichenketten müssen übersetzt werden. Zur Laufzeit der Anwendung werden alle Ressourcendateien ermittelt und die verfügbaren Sprachen angezeigt. Dem Ziel der Internationalisierung der Anwendung ist man auf diese Weise deutlich nähergekommen.

Fazit

Die Internationalisierung von Anwendungen ist nicht nur ein nettes Gimmick, sondern heute oft eine wichtige Anforderung im Umfeld von Businessapplikationen. Anwendungen werden für einen internationalen Markt entwickelt. Mit der richtigen Strategie und einem passenden Tool wie RapidClipse kann die Hauptaufgabe – die Sprachanpassung – deutlich vereinfacht werden. Die generierten Ressourcendateien sind zur individuellen Sprachanpassung zu übersetzen, unabhängig vom Quellcode der Anwendung. Die Anwender können dann zur Laufzeit mit einem Klick die Sprache der Applikation wechseln bzw. es kann automatisch die Zielsprache des Systems erkannt und eingestellt werden.

Veikko Krypczyk

Dr. Veikko Krypczyk ist begeisterter Entwickler und Fachautor. Er ist stets auf der Suche nach neuen innovativen Lösungen und liebt die Arbeit in der Entwicklungsumgebung. Er bietet Seminare und Workshops zu unterschiedlichen Themen der Softwareentwicklung.