Architektur Moderner Internet
Applikationen
22.-24.4.2004 TU Wien/Ausseninstitut
Internationalization und Localization
DI Christian Donner
cd (at) donners.com
05.02.2003 21:35
Architektur Moderner Internet Applikationen – I18N, L10N
Copyright ©2003 Christian Donner. Alle Rechte vorbehalten.
0
Einleitung
Die Gründe für die zunehmende Bedeutung dieses Themas:
– Konsolidierung von kleinen lokalen Sites hin zu großen mehrsprachigen
Sites zur Verringerung der laufenden Wartungskosten
– Anbieter, die erfolgreiche Websites betreiben, expandieren in
internationale Märkte
– Starkes Wachstum im asiatischen Raum veranlaßt US und europäische
Firmen, sich für diese Märkte auch im Web zu rüsten
Lange Zeit hindurch wurden die technischen Voraussetzungen für
mehrsprachige und lokaliserte Sites von Herstellern nur zögernd
unterstützt, so daß es effektiv nicht möglich war, solche Sites wirklich
zu erstellen
Heute sind UTF-8 und Unicode von den meisten wichtigen Produkten
unterstützt, sodaß einer Implementierung nichts im Wege steht ....
oder?
05.02.2003 21:35
Architektur Moderner Internet Applikationen – I18N, L10N
Copyright ©2003 Christian Donner. Alle Rechte vorbehalten.
1
Definitionen
Internationalisierung, Internationalization
– Auch als I18N bezeichnet
– Bezeichnet die Fähigkeit einer Applikation oder einer Website, im
Wesentlichen folgende Eigenschaften anpassbar zu halten:
 Sprache (einschließlich semantischer Besonderheiten, Sortierreihenfolge etc.)
 Zeichensatz
 Datumsformat, Währung, Zahlenformat
Lokalisierung, Localization
– Auch als L10N bezeichnet
– Bezeichnet die Anpassung einer Applikation oder einer Website an lokale
Gegebenheiten
05.02.2003 21:35
Architektur Moderner Internet Applikationen – I18N, L10N
Copyright ©2003 Christian Donner. Alle Rechte vorbehalten.
2
Zeichensatzkodierung
Das Hantieren mit unterschiedlichen Zeichensätzen und Kodierungen
(character encoding) ist sehr umständlich und macht es unmöglich, auf einer
Web Seite gleichzeitig z.B. deutsche und japanische Texte darzustellen.
Der Zeichensatz gibt an, welcher Code welchem Zeichen zugeordnet ist
Traditionell wurden Single Byte codes verwendet (z.B. 7 Bit ASCII)
Eine Webseite enthält eine Anweisung für den Browser, welche
Zeichensatzcode anzuwenden ist.
Beispiel:
– ISO8859-1 (Westeuropea, unterstützt u.a. Deutsch ohne Euro-Symbol)
– ISO8859-15 (Westeuropea, enthält auch das Euro-Symbol)
– SHIFT-JIS (Japanisch)
05.02.2003 21:35
Architektur Moderner Internet Applikationen – I18N, L10N
Copyright ©2003 Christian Donner. Alle Rechte vorbehalten.
3
Die Antwort: Unicode und UTF-8
Unicode ist ein Zeichensatz, der (theoretisch) einen Code für jedes Zeichen in
der Welt enthält
UTF-8 ist eine spezielle Kodierung von Unicode Zeichen (andere Kodierungen
sind UTF-16 und UTF-32)
Google z.B. verwendet UTF-8 als Standardkodierung
Trotz aller Unzulänglichkeiten und Kritik scheinen sich Unicode und UTF-8 als
Standard für mehrsprachige Webanwendungen zu etablieren
Ein und die selbe Seite kann z.B. Inhalte in Deutsch, Englisch, Russisch und
Japanisch korrekt anzeigen
Java kodiert intern alle Strings in UTF-16. Auch Microsoft’s Produkte können
Unicode verarbeiten.
05.02.2003 21:35
Architektur Moderner Internet Applikationen – I18N, L10N
Copyright ©2003 Christian Donner. Alle Rechte vorbehalten.
4
Voraussetzungen für die Verwendung von UTF-8
Ein Windows Font muss installiert sein, der die verwendeten Zeichen anzeigen
kann
Die Zuordnung von Fonts zu Zeichensätzen geschieht im Dialog Eigenschaften
des Internet Explorer
Die Installation von Locales erledigt dies automatisch
Der Webserver und der Applikationsserver müssen einen UTF-8 kodierten
Datenstrom senden
Die Datenbank muß UTF-8 kodiert sein
Falls Daten im Dateisystem abgelegt werden, müssen die Dateien ebenfalls
UTF-8 kodiert sein
05.02.2003 21:35
Architektur Moderner Internet Applikationen – I18N, L10N
Copyright ©2003 Christian Donner. Alle Rechte vorbehalten.
5
Beispiel Solaris/Oracle/JSP
05.02.2003 21:35
Architektur Moderner Internet Applikationen – I18N, L10N
Copyright ©2003 Christian Donner. Alle Rechte vorbehalten.
6
NLS in Oracle Queries
Datumsformat und Währungssymbol werden von den NLS
Einstellungen bestimmt, können aber in einer Abfrage übersteuert
werden (wichtig bei UTF-8 Datenbanken, die mehrere Sprachen
unterstützen)
Sortierreihenfolge hängt von der verwendeten Sprache ab:
– CREATE INDEX french_index ON emp (NLSSORT(emp_name,
'NLS_SORT=FRENCH'));
– Eine Abfrage auf diesen Index schließt typischerweise eine Bedingung ein,
die nur französische Inhalte zuläßt
05.02.2003 21:35
Architektur Moderner Internet Applikationen – I18N, L10N
Copyright ©2003 Christian Donner. Alle Rechte vorbehalten.
7
Mögliche Problemstellen
Fremdsoftware unterstützt nicht UTF-8
– z.B. Verity bis zur Version 4.5 kann nur mit umfangreichen Tricks zur
Zusammenarbeit bewegt werden
– Einzelheiten dazu auf Anfrage
Umwandlung der Kodierung von Daten aus externen Datenquellen
klappt nicht fehlerfrei
– Obwohl theortisch alle Zeichen verlustlos nach UTF-8 kodiert werden
können sollten, gibt es in der Praxis gelegentlich Probleme
Verwendete Produkte sind fehlerhaft
– UTF-8 ist nach wie vor nicht weit verbreitet und Hersteller testen die
Unterstützung oft nur mangelhaft, v.a. in älteren Versionen
05.02.2003 21:35
Architektur Moderner Internet Applikationen – I18N, L10N
Copyright ©2003 Christian Donner. Alle Rechte vorbehalten.
8
Java Locales
Java unterstützt von Haus aus das Konzept von Locales
Eine Web-Anwendung kann entweder
– den Benutzer bestimmen lassen, welches Locale er verwenden möchte
– das Locale aus dem Kontext ermittlen (z.B. wenn die Applikation lokale
Seiten hat)
– das Locale auf Grund der geographischen Zuordnung der IP Addresse des
Benutzers setzen (nicht immer zuverlässig)
Sun’s Java Tutorial für Internationalization:
– http://java.sun.com/docs/books/tutorial/i18n/
05.02.2003 21:35
Architektur Moderner Internet Applikationen – I18N, L10N
Copyright ©2003 Christian Donner. Alle Rechte vorbehalten.
9
Sun’s Checkliste
Messages
Labels on GUI components
Online help
Sounds
Colors
Graphics
Icons
Dates
Times
Numbers
Currencies
Measurements
Phone numbers
Honorifics and personal titles
Postal addresses
Page layouts
05.02.2003 21:35
Zusammengesetzte Texte:
Integer fileCount;
...
String diskStatus = "The disk contains "
+ fileCount.toString()
+ " files.";
Diese Beispiel stellt ein Problem dar, weil die
Position der Zahl nicht in allen Sprachen gleich ist.
Solche Meldungen sollten daher vermieden werden.
Resource Bundles:
Diese Technik ist für Webanwendungen nur bedingt
geeignet, da zu viel I/O generiert wird. Besser ist
ein Token-Modell wie im folgenden beschrieben.
Architektur Moderner Internet Applikationen – I18N, L10N
Copyright ©2003 Christian Donner. Alle Rechte vorbehalten.
10
Code Reviews
Falsch
// ist ch ein Buchstabe?
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
// ist target gleich candidate?
String target;
String candidate;
...
if (target.equals(candidate)) {
...
Richtig
// ist ch ein Buchstabe?
if (Character.isLetter(ch))
// ist target gleich candidate?
String target;
String candidate;
...
Collator myCollator = Collator.getInstance();
if( myCollator.compare(target, candidate) = 0 )
05.02.2003 21:35
Architektur Moderner Internet Applikationen – I18N, L10N
Copyright ©2003 Christian Donner. Alle Rechte vorbehalten.
11
Was ist ein Token?
Ein Token ist ein Platzhalter für Text
Der Applikationsserver fügt den Text in der aktuellen Sprache
dynamisch in die Seite ein
Beispielhafter Aufruf des Custom Tags:
– <title><sp:translate language="<%=language%>" region="<%=region%>"
token="title_home" /></title>
Text für Listelemente erfordert etwas mehr Code, speziell wenn in
der jeweiligen Sprache sortiert werden soll
– DHTML kennt keinen einfachen Weg zum Umsortierten einer List Box
– Daher muss die Datenbankabfrage mit einem ORDER BY die richtige
Sortierungfolge bereitstellen
05.02.2003 21:35
Architektur Moderner Internet Applikationen – I18N, L10N
Copyright ©2003 Christian Donner. Alle Rechte vorbehalten.
12
Where do you want to go today?
Microsoft bietet umfangreiche Resourcen zum Thema auf
http://www.microsoft.com/globaldev
Microsoft veranstaltet ab 2004 sogar eine eigene Konferenzreihe
(Microsoft Global Development Conference)
Die Verwendung von String Resourcen ist weniger problematisch
als Resource Bundles, kann aber auch durch ein eigenes
Verfahren ersetzt werden.
05.02.2003 21:35
Architektur Moderner Internet Applikationen – I18N, L10N
Copyright ©2003 Christian Donner. Alle Rechte vorbehalten.
13
Mehrsprachige Inhalte
Entgegen den Beteuerungen mancher Hersteller sind
automatische Übersetzungstools immer noch nicht brauchbar
Die Übersetzung von Inhalten, Navigationselementen etc muß
daher weiterhin von Hand geschehen
Es gibt Produkte, die bei diesem Prozess helfen können (z.B.
Idiom’s World Server)
Inhalte müssen Sprachinformation in den Metadaten haben
05.02.2003 21:35
Architektur Moderner Internet Applikationen – I18N, L10N
Copyright ©2003 Christian Donner. Alle Rechte vorbehalten.
14
Übersetzung einer Website - Localization
z.B. Ausgangssprache = Englisch, Zielsprache = Deutsch
Extrahieren aller Textelemente aus dem HTML-Code
Tabellen mit Textelementen werden zur Übersetzung versendet
Fertig übersetzte Tabellen werden in Datenbank gelesen
Webseiten verwenden Token anstelle von Text. Ein Custom JSP Tag wird
aufgerufen, um Textelemente in der jeweiligen Sprache anzuzeigen.
Tabelle sollte nur 1x gelesen und dann im Hauptspeicher residieren
05.02.2003 21:35
Architektur Moderner Internet Applikationen – I18N, L10N
Copyright ©2003 Christian Donner. Alle Rechte vorbehalten.
15
Vorgangsweise für Localization
Inhalte
– kommen aus einer bestimmten Region
 z.B. ein Artikel aus dem Büro in Frankfurt
– betreffen eine oder mehrere bestimmte Regionen
 z.B. den asiatischen Markt
– interessieren Benutzer in einer oder mehreren bestimmten Regionen
 z.B. Europa und den USA
– sind in einer Sprache verfaßt
 z.B. Deutsch und Englisch
Der Content Manager bestimmt, für welche Regionen diese Inhalte angezeigt
werden (basierend auf Sprache)
Der Benutzer teilt der Anwendung mit, welche Region und welche Sprache ihn
interessiert
Die Applikation findet die Inhalte und zeigt sie an
05.02.2003 21:35
Architektur Moderner Internet Applikationen – I18N, L10N
Copyright ©2003 Christian Donner. Alle Rechte vorbehalten.
16
Mögliche Schwachstellen
Übersetzungen wird nicht in Kontext gemacht, was oft zu
Fehlübersetzungen führt
– Erfordert eine zusätzliche Qualitätssicherungsphase
– Wer viel Zeit und Geld hat, kann ein Inline-Übersetzungstool schreiben
Bestimmte Textelemente kommen häufig vor und werden
mehrfach und sogar unterschiedlich übersetzt
– Übersetzung hängt manchmal vom Kontext ab
– Mehrfache Übersetzung ist mehr Arbeit
– Schlampigkeit der Übersetzer kann zu unerwünschten ‘Varianten’ des
selben Textes führen
05.02.2003 21:35
Architektur Moderner Internet Applikationen – I18N, L10N
Copyright ©2003 Christian Donner. Alle Rechte vorbehalten.
17
Design- und Architekturempfehlungen
Verwendung von Unicode/UTF-8
Möglichst keine Texte in Grafiken verwenden
Texte, die mehrfach vorkommen, sollten mehrere Token (Identifier)
erhalten
Seitenlayout auf die maximale Länge von Texten auslegen
Keine kulturell problematischen Elemente verwenden (Landkarten)
05.02.2003 21:35
Architektur Moderner Internet Applikationen – I18N, L10N
Copyright ©2003 Christian Donner. Alle Rechte vorbehalten.
18
Vielen Dank für Ihre
Aufmerksamkeit!
05.02.2003 21:35
Architektur Moderner Internet Applikationen – I18N, L10N
Copyright ©2003 Christian Donner. Alle Rechte vorbehalten.
19

I18N L10N