Mehrsprachige Application Express-Anwendungen -II- 

Anwendungen werden heute mehr und mehr im internationalen Umfeld entwickelt. Häufig ist es daher erforderlich, eine Application Express-Anwendung in eine andere Sprache zu übersetzen. Dazu bietet Application Express einige Hilfsmittel und Werkzeuge an. Im letzten Tipp haben Sie bereits gelernt, wie Sie eine Anwendung übersetzen können. Dies bezog sich vor allem auf die enthaltenen statischen Texte und Nachrichten. 

Darüber hinaus besteht eine Anwendung auch aus dynamischen Nachrichten und Texten. Heute erfahren Sie, welche Hilfsmittel Ihnen Application Express zum Übersetzen dieser Komponenten anbietet. Wenn Sie die hier vorgestellten Tipps an einer bereits übersetzten Anwendung ausprobieren möchten, ist folgendes wichtig:

Sobald Sie an einer bereits übersetzten Anwendung Änderungen vornehmen, müssen Sie diese Änderungen zunächst neu übersetzen. Erst nach einer erneuten Übersetzung sind die Änderungen auch in der übersetzten Version verfügbar.


Ausgangssituation: Eine Application Express-Anwendung
Abb.1: Ausgangssituation: Eine Application Express-Anwendung

Abbildung 1 zeigt eine Application Express-Anwendungsseite. Um in der Anwendung herauszufinden, mit welcher Spracheinstellung der Nutzer arbeitet, verwenden Sie den Substitution String BROWSER_LANGUAGE. Der in Abbildung 1 dargestellte Text  "Die im Browser eingestellte ..." wurde als HTML-Region (Abbildung 2) realisiert.

Nutzung der Ersetzungszeichenfolge BROWSER_LANGUAGE
Abb.2: Nutzung der Ersetzungszeichenfolge BROWSER_LANGUAGE

Als nächstes sollen die Inhalte der  Werteliste Abteilung übersetzt werden. Während statische Wertelisten wie statische Texte mit der XLIFF-Datei übersetzt werden, müssen dynamische Wertelisten anders behandelt werden. Diese hier enthält Abteilungsbezeichnungen, welche aus einer Datenbanktabelle (ABTEILUNGEN) stammen. Das SQL für diese Werteliste ist:

select bezeichnung d, id r from abteilungen order by 2

Zur Übersetzung solcher Wertelisten bietet Application Express dynamische Übersetzungen an. Navigieren Sie dazu zu den Gemeinsamen Komponenten und von dort zu Anwendung übersetzen.

Schritte zum Übersetzen einer Application Express-Anwendung

Abb.3: Schritte zum Übersetzen einer Application Express-Anwendung

In der letzten Ausgabe wurden die Schritte 1 bis 4 näher betrachtet. Um eine Werteliste zu übersetzen, klicken Sie auf Schritt 6. Daraufhin kommen Sie zum in Abbildung 4 dargestellten Dialog.

ID für übersetzte Anwendung vergeben
Abb.4: ID für übersetzte Anwendung vergeben

Mit Klick auf Erstellen legen Sie eine neue Übersetzung an. Hinterlegen Sie so für jeden Eintrag in Ihrer Werteliste eine Übersetzung. Das Speichern der Übersetzungen reicht jedoch noch nicht  aus - wenn Sie danach die Seite neu starten, ändert sich zunächst noch nichts.  Die hier gespeicherten Übersetzungen werden von Application Express durch die SQL- und PL/SQL Funktion HTMLDB_LANG.LANG verfügbar gemacht. Ändern Sie das SQL für die Werteliste also wie folgt um:

select htmldb_lang.lang(bezeichnung) d, id r from abteilungen order by 2
Starten Sie die Seite nun neu und verändern Sie wiederum im Browser die Spracheinstellung. Daraufhin wird die Werteliste die soeben eingetragenen Übersetzungen enthalten. Wenn für einen Eintrag keine Übersetzung vorhanden ist, gibt HTMLDB_LANG.LANG den Original-Eintrag zurück.

Übersetzte Werteliste
Abb.5: Übersetzte Werteliste

Neben diesen dynamischen Übersetzungen, welche vor allem für Wertelisten oder Berichte interessant sind, gibt es in Application Express auch benannte Nachrichten. Insbesondere für PL/SQL-Prozesse ist diese Option interessant. Um benannte Nachrichten mitsamt Übersetzungen anzulegen, navigieren Sie zu den Gemeinsamen Komponenten und von dort zu Textnachrichten. Der Dialog ist auch über Schritt 5 in Abbildung 3 verfügbar.

Textnachrichten für PL/SQL
Abb.6: Benannte Textnachrichten

Abbildung 5 zeigt eine benannte Nachricht TESTNACHRICHT mit einer Übersetzung ins Englische. Um eine neue Nachricht hinzuzufügen, klicken Sie auf Erstellen.

Erstellung einer neuen Textnachricht mit Übersetzung

Erstellung einer neuen Textnachricht mit Übersetzung

Abb.7: Erstellung einer benannten Textnachricht in Deutsch und Englisch

Unter Name geben Sie die interne Bezeichnung ein, unter der Sie die Textnachricht später abrufen möchten. Abbildung 7 zeigt die Erstellung einer benannten Textnachricht und einer englischen Übersetzung. In einer Textnachricht können die Platzhalter %0 bis %9 für variable Anteile genutzt werden. In einem PL/SQL-Prozeß kann die passende Übersetzung dieser Nachricht mit HTMLDB_LANG.MESSAGE abgerufen werden. Eine Region mit dynamischem PL/SQL Inhalt könnte dann wie in Abbildung 9 aussehen:

dynamische PL/SQL Region mit benannter Textnachricht erstellen
Abb.9: Dynamische PL/SQL Region mit benannter Textnachricht erstellen

Das Ergebnis ist in Abbildung 10 dargestellt - Auch hier gilt: Wenn Sie einmal eine Anwendungsübersetzung durchgeführt haben, müssen Sie dies nach jeder Änderung erneut tun. Wenn Sie also feststellen, dass die letzte Änderung in der übersetzten Anwendung fehlt, übersetzen Sie die Anwendung neu (Gemeinsame Komponenten - Anwendung übersetzen).

Ergebnis: Benannte Textnachrichten in einer Region mit "dynamischem PL/SQL Inhalt"
Abb.10:Ergebnis: Benannte Textnachrichten in einer Region mit "dynamischem PL/SQL Inhalt"

In diesem und dem letzten Tipp haben Sie den "Baukasten", welchen Ihnen Application Express für Internationalisierte Anwendungen bereitstellt, kennengelernt. Hilfreich dürfte darüber hinaus das PL/SQL-Paket UTL_I18N sein. Es stellt Ihnen weitere Hilfsfunktionen für internationale Anwendungen bereit. Lassen Sie einfach mal die folgenden Abfragen im SQL Workshop laufen. 

select 
utl_i18n.map_territory_from_iso('&BROWSER_LANGUAGE.')
from dual

select
utl_i18n.get_translation(
utl_i18n.map_territory_from_iso('&BROWSER_LANGUAGE.'),
'german',
1
)
from dual

select
utl_i18n.get_default_iso_currency(
utl_i18n.map_territory_from_iso('&BROWSER_LANGUAGE.')
)
from dual

Mehr Informationen zum PL/SQL-Paket UTL_I18N finden Sie in der Oracle-Dokumentation.

Zurück zur Community-Seite