Wie Sie in SAPUI5 Mehrsprachigkeit ermöglichen
SAPUI5-Mehrsprachigkeit in Anwendungen ist ein zentrales Thema in der Entwicklung. Dieser Blogbeitrag stellt Ihnen die Eigenschaften und die Umsetzung von Mehrsprachigkeit in SAPUI5-Anwendungen vor und erklärt, wie die Applikation erkennt, welche Sprache verwendet werden soll.
Der Blogbeitrag unterteilt sich in vier Punkte. Als Erstes erkläre ich Ihnen, was ein Sprachtag ist und wie sich dieser aufbaut. Im zweiten Teil geht es um die Verwendung von Sprachtags. Anschließend gehe ich auf den Aufbau einer i18n-Datei ein. Zum Schluss werfen wir einen Blick auf die Einbindung und Verwendung der i18n-Übersetzungen und den Prozess hinter der Sprachen- und Textfindung in einer SAPUI5-App.
Aufbau der Sprachtags
Ein Sprachtag ist ein Kennzeichen, das Sie nutzen können, um in HTML- und XML-Dokumenten die zu verwendende Sprache zu ermitteln. Dabei können Sie mehrere Sprachen im System hinterlegen. Für jede hinterlegte Sprache müssen Sie allerdings auch eine eigene Übersetzung anfertigen. Durch den Aufruf eines entsprechenden Tags ist die Anwendung in der Lage, die anzuzeigende Sprache dynamisch zu ändern. Darüber hinaus können Sie durch die Angabe weiterer Attribute linguistische und kulturelle Komponenten herausfiltern.
Diese so genannten „Language Tags“ sind durch das IETF in BCP-47 definiert. BCP steht dabei für „Best Current Practice“. BCP-47 wird als defacto-Standard angesehen. Die gängigsten Browser unterstützen dieses Format. In Java wird seit JDK 1.7, BCP-47 durch die Java „locale“ Klasse unterstützt.
Eine Liste der möglichen Tags erhalten Sie auf der Seite: BCP-47 Language Liste.
Verwendung der Sprachtags in SAP
Im SAP System werden die Sprachcodes durch einen bis zu zweistelligen Schlüssel repräsentiert. In der Tabelle T002 sind alle hinterlegten Sprachen einzusehen. Die Tabelle baut sich folgendermaßen auf:
- Sprachschlüssel
- Spezifikation einer Sprache
- Übersetzungsgrad einer Sprache (relevant für Transport)
- Sprache (ISO 639)
- Bezeichnung
SAPUI5-Apps werden häufig mit einem auf ABAP basierenden Applikationsserver verbunden, um mit einem SAP-System kommunizieren zu können. Aus Kompatibilitätsgründen unterstützen die Applikationsserver die SAP-firmeneigene Darstellung der Sprachschlüssel. Diese entsprechen dem „ISO 639 alpha-2 language code“. Die SAPUI5-Applikation wandelt den ermittelten Sprachschlüssel anschließend in ein BCP-47 Tag um.
SAP Sprachschlüssel | BCP-47 Tag | Beschreibung |
ZH | zh-Hans | ZH ist der Code für Chinesisch.
|
ZF | zh-Hant | ZF ist der Code für traditionelles Chinesisch
|
1Q | en-Us-x-saptrc | Technischer SAP-Sprachcode, verwendet in Support Scenarios |
Als goldene Regel sollte definiert werden, dass der BCP-47-Sprachcode so kurz wie möglich gehalten werden sollte. Bei der Erstellung sollten Sie weitestgehend auf regions, script oder subtags verzichten – außer, wenn Sie wichtige und hilfreiche Informationen hinzufügen.
Aufbau einer i18n*.properties-Datei
In SAPUI5-Apps erreichen Sie Mehrsprachigkeit, indem Sie die i18n*.properties-Dateien pflegen. I18n steht für „Internationalization“. Zu jeder definierten Sprache ist eine eigene i18n*.properties-Datei zu pflegen. Darüber hinaus ist eine Default-Datei zu definieren. Sie wird automatisch gezogen, wenn keine explizite Übersetzung angegeben ist.
Eine i18n*.properties-Datei wird nach dem Key/Value-Pair Prinzip aufgebaut. Das bedeutet, dass durch die Angabe eines Schlüsselworts ein Wert identifiziert werden kann. Es ist verpflichtend, dass das Schlüsselwort einzigartig ist. Der Aufbau der Keys ist in allen i18n*-Dateien gleich.
Beispielsweise wird bei deutscher Übersetzung eine i18n_de.properties-Datei angelegt. Diese muss vom Aufbau identisch mit der Default-Datei sein.
Es ist zu erkennen, dass der Aufbau zwischen den einzelnen Dateien gleich ist. Die obere Abbildung bildet die Default-Sprache ab. Sie wird vom System gezogen, wenn keine anderen Sprache eingestellt ist. Die untere Datei stellt den Aufbau der deutschen Übersetzung dar. Der Entwickler/ das Entwicklerteam ist selbst dafür verantwortlich, die Übersetzung einzupflegen.
Einbindung und Verwendung in einer SAPUI5-App
Hier müssen Sie im ersten Schritt nicht viel tun. Beim Erstellen einer SAPUI5-Applikation wird für Sie automatisch ein i18n-Model und ein ResourceBundle erstellt. Befüllt werden diese jedoch natürlich nicht von selbst! Es ist Aufgabe des Entwicklers bzw. des Entwicklerteams, dort die Übersetzungstexte zu pflegen. Auf diese Texte können Sie in einer XML-Datei oder im JavaScript Coding zugreifen:
Zugriff in einer XML View
Die Zuordnung geschieht über das bekannte Data Binding mit {Model>Attribut}. Für das Attribut “title” ist ein Wert in der i18n-Datei hinterlegt.
Zugriff via JavaScript
var oBundle = this.getView().getModel("i18n").getResourceBundle();
Die i18n Texte befinden im sog. ResourceBundle des i18n-Model. Für mehr Übersichtlichkeit bietet es sich an, den Zugriff auf dieses mit einer Variable zu verkürzen.
var sText = oBundle.getText(sKey);
Auf die einzelnen Übersetzungstexte wird mit getText() zugegriffen. „sKey“ ist hierbei ein Atrribut aus der i18n-Datei.
Language Termination Fallback
Wird nun auf einen Übersetzungstext des i18n-Models zugegriffen, so wird als erstes die Anmeldesprache des Nutzers gezogen. Dann wird nach dem Schema << Dialekt -> Sprache -> Default >> automatisch zuerst in der passenden i18n-Datei gesucht. Folgendes Beispiel veranschaulicht diesen Prozess, der auch Language Termination Fallback genannt wird:
Ist kein Text gepflegt, wird schrittweise zur nächsten i18n-Datei gewechselt, bis zuletzt in der Haupt-i18n die Default-Texte ausgelesen werden.
SAPUI5 Entwicklercoaching
Technisches Coaching für Ihre Mitarbeiter in dem Thema SAPUI5. Wir besprechen mit Ihnen Ihre Herausforderungen und erarbeiten gemeinsam Lösungsansätze!
SAPUI5-Mehrsprachigkeit ermöglichen
Nun wissen Sie, wie Sie in SAPUI5 Mehrsprachigkeit gewährleisten können. Sind noch Fragen offen geblieben? Sie kommen an einem Punkt bei der Umsetzung nicht weiter? Schreiben Sie mir gerne, gemeinsam finden wir eine Lösung!