FSS.social
25Sep 120

Mehrsprachige Anwendungen unter XPages

am Dienstag, den 25. September 2012

Laut IBM braucht man nur die Lokalisations-Option (bei den XPage Optionen) aktivieren, angeben in welchen Sprachen die Anwendung zur Verfügung stellen soll und erhält nach einem Clean für alle XPages und Customer Controls Elemente Properties Dateien, die man dann einem Übersetzer in die Hand drücken kann.

Anbei ein Screenshot von den Optionen (hier für Englisch/Deutsch wobei Englisch die Standardsprache bzw Orginalsprache ist)

XPages Mehrsprachig-1
Zunächst eine Warnung: Deaktiviert man die Option "Enable localization" werden alle übersetzten Properties-Dateien gelöscht. Entfernt man eine der Sprachen, werden die zugehörigen Dateien der Sprache gelöscht.

In der Praxis extrahiert die Lokalisationsroutine so gut wie möglich alle Texte wie z.B. Labels, Fehlermeldungen etc. Sie wird jedoch keine Texte aus berechneten Feldern oder Texte aus Javascript-Bibliotheken extrahieren.
Hier muß der Entwickler selbst noch einmal Hand anlegen und den Code mittels Javascript aus einer eigenen Property-Datei auslesen. (Beschreibung hierzu folgt)

Als Ergebnis der Extraktion enthält man dann properties-Dateien die wie folgt aussehen können:
<font color="blue"><blockquote><htmlblock>viewColumnHeader11/@value=[de| For Person/Team ]
switchFacet2/xe\:this.facets[1]/xp\:panel[2]/text()[2]=[de| \u00A0 ]
lnkCancel/xp\:eventHandler[1]/xp\:this.action[1]/xp\:actionGroup[1]/xp\:confirm[1]/@message=[de| Cancel adding a new member? ]</htmlblock></blockquote><font color="black">
Also ein paar Dateien bei denen sich so mancher Übersetzer erst einmal verwirrt die Augen reiben dürfte.

Bei kleinen überschaubaren Anwendungen, die nur aus einer Handvoll XPages/Customer Controls besteht ist dies sicher eine mögliche Variante.
Allerdings sollte man auch hier prüfen ob wirklich alle Texte eingefangen wurden und ob bei der Übersetzung nicht versehentlich ein Leerzeichen zu viel gelöscht wurde.

Sobald die Anwendung wesentlich komplexer wird z.B. aus vielen verschachtelten Customer Controls besteht, artet das Übersetzen schnell in eine Form von Schnitzeljagd für Entwickler aus und man fragt sich in welcher der vielen Properties-Dateien das eine oder andere Label noch einmal stand.

Übersetzung hausgemacht:
Alternativ zur obigen Lokalisierungsvariante kann man auch eigene Properties-Dateien erstellen

XPages Mehrsprachig-2

und diese als Datei-Resourcen seiner Anwendung hinzufügen.

XPages Mehrsprachig-3

XPages Mehrsprachig-4
Aus diesen Datei liest man nun die Texte für Labels, Fehlermeldungen, etc

Bei einem Label könnte folgender Javascript-Code stehen: <font color="blue"><blockquote><htmlblock>var message = strings.getString('greeting');
return message</htmlblock></blockquote><font color="black">
In einer Datei steht die passende Begrüßung auf Englisch (strings_en.properties) <font color="blue"><blockquote><htmlblock>greeting=Welcome</htmlblock></blockquote><font color="black">
und in einer anderen die Begrüßung auf Deutsch (strings_de.properties) <font color="blue"><blockquote><htmlblock>greeting=Willkommen</htmlblock></blockquote><font color="black">

Will man beim Willkommen noch den Namen des aktuellen Benutzers mit ausgeben, muss man zwei Stellen anpassen.
Einmal in den properties-Dateien: <font color="blue"><blockquote><htmlblock>greeting=Welcome {0} !</htmlblock></blockquote><font color="black">
Und dann muss man noch dafür sorgen, dass im Javascriptcode das "{0}“ durch den Namen ersetzt wird.
<font color="blue"><blockquote><htmlblock>var message = strings.getString('greeting');
message = I18n.format(message, @UserName());
return message</htmlblock></blockquote><font color="black">

Das Dateisuffix "_en" oder "_de" steht für die entsprechende Browser-Länderkennung. XPages kümmert sich dann selbst darum dass die passende Properties-Datei herangezogen wird.
Die Datei ohne Suffix z.B. strings.properties ist die Datei die gezogen wird, wenn für die Länderkennung keine eigene properties-Datei existiert.

Anbei noch zwei Links zu zwei ausführlichen englischsprachigen Artikeln zum Thema Übersetzung.
Eine Beschreibung wie man über die XPage Optionen eine Übersetzung vornimmt
Eine Beschreibung wie man über Javascripts auf eigene Properties-Dateien zugreifen kann

 

Kommentare (0) Trackbacks (0)

Zu diesem Artikel wurden noch keine Kommentare geschrieben.


Leave a comment

Noch keine Trackbacks.