Mehrsprachige Datenbankanwendungen mit Oracle APEX

Hallo Zusammen!

Wenn du ein DBA/PLSQL-Guru bist, aber nicht viel Erfahrung in der Webentwicklung hast, dann ist Oracle APEX für dich eine der besten Optionen.

Egal ob Anfänger oder Fortgeschrittener, dieser Artikel gibt dir einen Einblick, wie  eine mehrsprachige Anwendung mit Oracle APEX erstellt werden kann. Hier zeigen wir dir, wie der in Oracle APEX integrierte Übersetzungsmechanismus funktioniert und wie du ihn handhaben solltest. Dieser Artikel basiert auf Oracle Application Express 18.1 Version.

Oracle Application Express

Was ist APEX?
Oracle Application Express ist ein Oracle-Produkt, mit dem Entwickler webbasierte Anwendungen in einer Oracle-Datenbank mithilfe einer webbasierten Entwicklungsumgebung schnell erstellen können.
Low Code: Die APEX-Entwicklungsumgebung wird in einem Webbrowser ausgeführt und ermöglicht deklarative Erstellung von Webanwendungen, indem einfach vorgefertigte Komponenten ausgewählt, konfiguriert und in einer Webanwendung gebündelt werden, ohne dass zu viel Code geschrieben werden muss. Somit kannst du dich einfach auf dein Problem konzentrieren und los legen. Der Großteil des Entwicklungsprozesses wird für dich verwaltet: Sicherheit, Authentifizierung, Datenbankinteraktionen, Eingabevalidierung, Session State Management und viele andere Abhängigkeiten funktionieren sofort. Alle benötigten Tools sind in einer erweiterbaren APEX-Plattform verfügbar.

Wer benutzt Oracle APEX?
Application Express wird von großen und kleinen Kunden in einer Vielzahl von Branchen eingesetzt und löst eine große Anzahl von Geschäftsproblemen – vom einfachen Austausch von Tabellenkalkulationen bis hin zu Banken- und Versicherungsanwendungen mit mehreren tausend Benutzern. APEX ist eine gute Lösung, wenn du die üblichen Einschränkungen von Oracle Forms überwinden willst, deine User Interface modernisieren und Kosten senken möchtest.

Was kostet APEX?
APEX ist eine kostenlose Option für Benutzer mit einer Oracle-Datenbanklizenz.

Mehrsprachige Datenbankanwendungen

Die Entwicklung einer Datenbankanwendung in mehreren Sprachen ist nicht einfach. APEX unterstützt den Entwickler und bietet einen standardisierten Übersetzungsprozess, der dieses Vorhaben wesentlich erleichtert.

Warum müssen wir eine Anwendung übersetzen?

Es gibt viele Gründe dafür, dass die Anwendungen mehrsprachig sind. Wenn du einen internationalen Benutzerkreis hast, musst du  wahrscheinlich viele oder zumindest die am häufigsten verwendeten Sprachen unterstützen.

Bei der Bereitstellung deiner Anwendung in verschiedenen Sprachen müssen auch das Datum- und Zahlenformat oder von rechts nach links gedruckte Sprachen beachtet werden.

Wenn deine Daten auch mehrsprachig sein sollen, solltest du dich in deinem Datenmodell und deinem Anwendungscode darum kümmern.

Lass uns jetzt den Übersetzungsprozess anschauen.

Oracle APEX behandelt Übersetzungen als Kopie der Hauptanwendung. Das bedeutet, dass für jede Sprache, die die Anwendung unterstützt, eine “ Shadow-Anwendung“ von APEX intern erstellt wird. Diese Shadow-Anwendungen sind nicht im Application Builder aufgeführt, sodass du diese nicht direkt bearbeiten kannst. Sie sind jedoch exakte Kopien der Hauptanwendung und sind in den APEX-Dictionary-Tabellen vorhanden.

Alle Codeänderungen werden in der Hauptanwendung vorgenommen, die dann mit den Operationen „seed“ (Vordefinieren) und „publish“ (Veröffentlichen) in die übersetzten Shadow-Anwendungen übertragen werden. Wenn du also Codeänderungen vornehmen musst, solltest du alle Übersetzungen vordefinieren  und veröffentlichen.

Der wichtigste Schritt beim Verständnis von Übersetzungen in Oracle APEX besteht darin, zu erkennen, dass es für jede Sprache, die du unterstützen möchtest, immer eine Kopie der vollständigen Anwendung (jede Seite, jeder Prozess und jede einzelne Codezeile) gibt.

Ich habe meine APEX-Anwendung in Englisch entwickelt und jetzt möchte ich die vollständige Anwendung in die deutsche Sprache übersetzen.

Die folgenden drei Schritte sind erforderlich, um die mehrsprachigen APEX-Anwendungen zu erstellen:

1. Bereite die Anwendung für den Übersetzungsprozess vor.
2. Generiere benutzerfreundliche Navigationsleisteneinträge für den Sprachwechsel.
3. Befolge den Übersetzungsprozess in der Globalization.

Hier sind die Schritte noch mal detalliert aufgeführt:

 

1. Bereite die Anwendung für den Übersetzungsprozess vor:

  • Öffne deine Anwendung im Application Builder und gehe zur Shared Components
  • Klicke auf Globalization Attributes unter dem Menüpunkt Globalization und setze für “Application Language Derived From” den Wert „Item Preference (use item containing preference)“.

Jetzt weiß APEX, dass die Sprache aus einem speziellen Anwendungsitem abgeleitet wird. Aber dieser Item soll noch erstellt werden. Dazu führe die folgenden Schritte aus:

Erstelle ein Anwendungsitem:

  • Klicke auf Shared Components
  • Unter dem Application Logic Menu, klicke auf Application Items -> Create
  • Gib den Namen FSP_LANGUAGE_PREFERENCE ein
  • Unter Security wähle Checksum Required – Session Level aus
  • Klicke auf Create Application Item

Das Item heißt FSP_LANGUAGE_PREFERENCE und APEX erkennt es als reserviertes Item für die Anwendungssprache.

Wenn eine Seite gerendert wird, prüft APEX das Item FSP_LANGUAGE_PREFERENCE, um festzustellen, in welcher Sprache die Seite angezeigt werden soll.

Wenn die Sprache geändert wird, soll die Seite neu geladen werden. Um dies zu ermöglichen, fügen wir einen Anwendungsprozess hinzu, der das erneute Laden der Seite übernimmt.

Erstelle einen Anwendungsprozess:

  • Klicke wieder auf Shared Components
  • Unter dem Application Logic Menu -> Klicke auf den Application Processes -> Create
  • Gib den Namen set_language ein
  • Wähle unter Process Point “On Load: Before Header (page template header)”
  • Klicke auf Next
  • In dem Source Block, gib den folgenden PL / SQL-Code ein
begin
owa_util.redirect_url('f?p='||:APP_ID||':'||:APP_PAGE_ID||':'||:APP_SESSION);
end;
  • Klicke auf Next
  • Wähle Condition Type “Request = Expression1” aus
  • Trage LANG in Expression 1 Text Area (‘LANG’ alles in Großbuchstaben) ein
  • Klicke anschließend auf Create Process.

Jetzt ist unsere Anwendung fertig mit dem Anwendunsprozess und mit einem sprachspezifischen Item.

 

Lass uns die einfache Sprachauswahl-Option in unsere Anwendung einbauen. Hier geht man wie folgt vor.

 

2. Generiere benutzerfreundliche Navigationsleisteneinträge für den Sprachwechsel

Um den Anwendern die Sprachauswahl mit einem Klick zu ermöglichen, erstellen wir die Auswahlliste mit vorhandenen Sprachen in der Navigationsleiste. Da sich diese Leiste in der Kopfzeile unserer Anwendung befindet, ist sie auf allen Seiten sichtbar und ideal für unseren Zweck.

Wie erstellt man die Einträge in der Navigationsleiste?

Erstelle Navigationseinträge (navigation entries):

  • Gehe zur Shared Components
  • Unter Navigation findest du Navigation Bar List
  • Klicke auf Navigation Bar List -> Desktop Navigation Bar -> Create Entry und fülle die Felder aus. (s. unten)
List Entry Label: Deutsch (enter the navigation bar name)
Target type: page in this application 
Page: &APP_PAGE_ID. ('.'nötig)
Request: LANG
Set these items: FSP_LANGUAGE_PREFERENCE
With these values: de (language code)
  • Klicke auf Create List Entry.

Wiederhole die Schritte, um weitere Navigationsmenüeinträge für die erforderlichen Sprachen zu erstellen.

Jetzt, wo wir alle Vorbereitungen erledigt haben, können wir mit der Übersetzung beginnen. Die Anwendung ist bisher nur in Englisch verfügbar, daher müssen wir eine übersetzte Version der Anwendung in einer anderen Sprache erstellen.

 

3. Befolge den Übersetzungsprozess

Der Übersetzungsworkflow besteht aus einigen Schritten, die bei jedem Rollout einer neuen Version der Anwendung wiederholt werden sollten.

Übersetzungsfluss:

  • Gehe wieder zur Shared Components
  • Klicke auf Translate Application unter Globalization.

Unter Translate kann man den unten erwähnten Ablauf des Übersetzungsprozesses sehen.

Translation workflow:

a). Define Application Languages (hier ordnen wir die primären und Zielanwendungs-IDs zu)

  • Define application languages -> Klicke auf Create
  • Gib die eindeutige ID für die übersetzte Anwendung ein

Tipp: Um Konflikte mit anderen Anwendungen im gleichen Workspace zu vermeiden empfiehlt es sich, die eindeutige ID der übersetzten Zielanwendung von der ID der

Hauptanwendung abzuleiten bzw. zu erweitert. Ist z.B. die ID der Hauptanwendung 105, vergibt man für die Zielanwendungen die IDs 10501, 10502 usw.

  • Wähle als nächstes die Sprache aus, in die du übersetzen möchtest, und schließe sie mit Create.

Dadurch wird APEX die neue Sprache mitgeteilt.

b). Seed Translatable Text (hier exportieren wir den Text zur Übersetzung in eine Datei)

  • Gehe zurück zur Seite Translate und klicke auf Seed Translatable Text
  • Überprüfe die übersetzte Anwendungs-ID und klicke dann auf Seed Button.

Dadurch werden Einträge im APEX-Repository für jeden übersetzbaren Text in der Anwendung erstellt. Diese Einträge werden später zum Generieren der XLIFF-Dateien verwendet

Was ist eine XLIFF-Datei? 

Einer der weltweit anerkanntesten Standards in der Lokalisierung ist das XLIFF-Format. XLIFF ist die Abkürzung für XML Localization Interchange File Format. Wie der Name schon sagt, handelt es sich um einen XML-Standard, der von Application Express als Format verwendet wurde, in dem verschiedene Sprachdateien exportiert und in APEX-Anwendungen importiert werden können.

c). Download XLIFF translation files

  • Gehe zurück zur Seite Translate und klicke auf download XLIFF translation files
  • Wähle die gewünschte Sprache aus der Liste der Sprachen
  • Auf dieser Seite hast du zwei Möglichkeiten eine XLIFF-Datei zu exportieren: du kannst eine Seite in der Anwendung oder in der gesamten Anwendung auswählen (page in the application or entire application)
  • Klicke auf XLIFF-Exportdatei für die Anwendung und speichere sie in deinem lokalen Verzeichnis (diese XLIFF-Datei enthält XML-Daten).

Die XLIFF-Datei wurde heruntergeladen und kann bearbeitet werden. Das folgt im vierten Schritt und jetzt schauen wir uns die XLIFF Datei an.
Der schnellste Weg, um eine hohe Anzahl von Texten zu übersetzen, ist die Verwendung der XLIFF-Datei. Da diese ein internationaler Standard ist, kann eine XLIFF-Datei von jedem Übersetzungsdienst bearbeitet werden. Eine XLIFF-Datei wird immer auf die gleiche Weise erstellt: eine Kopfzeile und ein Textkörper. Der erste Teil der Kopfzeile enthält Informationen über die Datei, die ursprüngliche Anwendung und die Zielanwendung für die Übersetzung. Da die Kopfzeile auskommentiert ist, wird es nicht von einer Verarbeitungsanwendung verwendet.

Der zweite Teil der Kopfzeile zeigt die Version des verwendeten XLIFF-Standards. Die neueste Spezifikationsversion ist 2.0, aber APEX verwendet standardmäßig 1.0.

Der dritte Teil des Headers enthält weitere Informationen über die Datei, die Ausgangssprache und die Zielsprache. Diese Informationen werden von APEX beim Importieren der Datei verwendet. Nach dem Header beginnt der Body Block.
Der folgende „trans-unit“-Block wird für jeden Text im APEX-Repository wiederholt.

Hier werden die Identifikation (id) und die Texte (Source, Target) aufgeführt.

Der Block hat ein Attribut für die Identifikation (id) und die Elemente für die Originalsprache (Source) und Zielsprache (Target). Schließlich wird die Datei geschlossen.

<!-- 
  ****************** 
  ** Source     :  105
  ** Source Lang:  en
  ** Target     :  10501
  ** Target Lang:  de
  ** Filename:     f105_10501_en_de.xlf
  ** Generated By: Developer Name
  ** Date:         06-MAY-2018 08:59:59
  ****************** 
 -->
<xliff version="1.0">
<file original="f105_10501_en_de.xlf" source-language="en" target-language="de" datatype="html">
<header></header>
<body>
<trans-unit id="S-5-1-105">
<source>Department</source>
<target>Department</target>
</trans-unit>
<trans-unit id="S-5-21-105">
<source>Test it?</source>
<target>Test it?</target>
</trans-unit>
</body>
</file>
</xliff>

d). Translate the Text in the File (Third Party Job) 

Nun, lass uns ein paar kleine Änderungen in der XLIFF-Datei vornehmen. Öffne die heruntergeladene XLIFF-Datei zum Bearbeiten in deinem bevorzugten Texteditor und ändere den gewünschten Zieltext in die deutsche Sprache.
Beispiel:

<source>Department</source>

<target>Abteilung</target>

<source>Test it?</source>

<target>Probier es aus?</target>

Dann speichere es und gehe zum nächsten (fünften) Schritt des APEX-Application Translation Process.

e). Apply XLIFF Translation Files

  • Klicke auf Upload, um die geänderte Datei hochzuladen
  • Ordne die Zielanwendung zu, wähle die Dateien aus und klicke auf Apply Checked Button.

f). Publish the Translated File:

  • Gehe zurück zur Seite Translate und klicke auf Publish Translated Applications
  • Wähle die Dateien aus und klicke auf Seed
  • Wähle die Dateien aus und klicke auf Publish.

Jetzt kann man die Übersetzungen im Translation Repository überprüfen. Dazu wechselt man erneut in das Übersetzungsfenster und klickt auf das Translation Repository (Shared Components -> Globalization -> Translate Application -> Translation Repository). Hier kann man die Zieldaten bearbeiten und zurücksetzen. (Dafür braucht man nur etwas mehr Zeit).

Jetzt sind wir mit dem Übersetzungsprozess fertig und die Anwendung steht für die Endanwender in zwei Sprachen zur Verfügung.

Fazit:

Wenn du den Übersetzungsprozess in APEX befolgst, ist es wirklich einfach, eine mehrsprachige Anwendung zu erstellen.

Bei der Verwendung von XLIFF-Dateien zum Übersetzen einer Anwendung sollte folgendes beachtet werden: Jedes Mal, wenn in der Anwendung etwas geändert wird, solltest du den Prozess „seed“, „export“, „translate“ und „import“ wiederholen. Ansonsten werden nicht alle Änderungen in der übersetzten Version der Anwendung sichtbar sein.

Wenn die Übersetzung von einer externen Firma durchgeführt wird, ist es ratsam die XLIFF-Datei erst dann abzusenden, nachdem die Anwendung in der Standardsprache vollständig fertig ist.

Bei Fragen oder Anregungen nutze die Kommentarfunktion unter diesem Artikel.

Reference Book: Oracle APEX Cookbook Second Edition,  BY Marcel van der Plas, Michel van Zoest

Blog: Multi – Language database applications using Oracle Apex by Peter Raganitsch

Swathi Mary Katakam
Datenbankentwicklerin
Swathi ist eine Oracle Datenbank- und Anwendungsentwicklerin. Vor kurzem hat sie angefangen Datenbankanwendungen mit Oracle APEX zu entwickeln. Sie ist sehr eifrig und wissbegierig neue Ideen umzusetzen, um so ihre Arbeit noch produktiver und innovativer zu gestalten.