0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003...
-
Upload
aegid-schmieding -
Category
Documents
-
view
112 -
download
5
Transcript of 0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003...
05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10NCopyright ©2003 Christian Donner. Alle Rechte vorbehalten.
1
Architektur Moderner Internet Applikationen
22.-24.4.2004 TU Wien/Ausseninstitut
Internationalization und Localization
DI Christian Donnercd (at) donners.com
05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10NCopyright ©2003 Christian Donner. Alle Rechte vorbehalten.
2
EinleitungEinleitung
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, L10NCopyright ©2003 Christian Donner. Alle Rechte vorbehalten.
3
DefinitionenDefinitionen
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, L10NCopyright ©2003 Christian Donner. Alle Rechte vorbehalten.
4
ZeichensatzkodierungZeichensatzkodierung
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, L10NCopyright ©2003 Christian Donner. Alle Rechte vorbehalten.
5
Die Antwort: Unicode und UTF-8Die 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, L10NCopyright ©2003 Christian Donner. Alle Rechte vorbehalten.
6
Voraussetzungen für die Verwendung von UTF-8 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, L10NCopyright ©2003 Christian Donner. Alle Rechte vorbehalten.
7
Beispiel Solaris/Oracle/JSPBeispiel Solaris/Oracle/JSP
Oracle
Applikations-server
JDBC Datenstrom (UTF-8)
NLS_LANG=american_america.UTF8
Datenbank mit UTF-8 Encoding installiert
Check: select * from nls_database_parameters
Unix Locale:LC_CTYPE=en_US.UTF-8
Text-Datei
StreamReader
StreamWriter
UTF-8
UTF-8
Webserver
ISAPI Datenstrom (UTF-8)
Browser
HTML Datenstrom (UTF-8)<meta HTTP-EQUIV="content-type"
CONTENT="text/html; charset=UTF-8">
<%@ page language="java"contentType="text/html; charset=UTF-8" %>
05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10NCopyright ©2003 Christian Donner. Alle Rechte vorbehalten.
8
NLS in Oracle QueriesNLS 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, L10NCopyright ©2003 Christian Donner. Alle Rechte vorbehalten.
9
Mögliche ProblemstellenMö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, L10NCopyright ©2003 Christian Donner. Alle Rechte vorbehalten.
10
Java LocalesJava 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, L10NCopyright ©2003 Christian Donner. Alle Rechte vorbehalten.
11
SunSun’s ’s Checkliste 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
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.
05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10NCopyright ©2003 Christian Donner. Alle Rechte vorbehalten.
12
Code ReviewsCode Reviews
// 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)) {...
Falsch
// 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 )
Richtig
05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10NCopyright ©2003 Christian Donner. Alle Rechte vorbehalten.
13
Was ist ein Token?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, L10NCopyright ©2003 Christian Donner. Alle Rechte vorbehalten.
14
Where do you want to go today?Where do you want to go today?
Microsoft bietet umfangreiche Resourcen zum Thema aufhttp://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, L10NCopyright ©2003 Christian Donner. Alle Rechte vorbehalten.
15
Mehrsprachige InhalteMehrsprachige 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, L10NCopyright ©2003 Christian Donner. Alle Rechte vorbehalten.
16
Übersetzung einer Website - LocalizationÜ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, L10NCopyright ©2003 Christian Donner. Alle Rechte vorbehalten.
17
Vorgangsweise für LocalizationVorgangsweise 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, L10NCopyright ©2003 Christian Donner. Alle Rechte vorbehalten.
18
Mögliche SchwachstellenMö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, L10NCopyright ©2003 Christian Donner. Alle Rechte vorbehalten.
19
Design- und ArchitekturempfehlungenDesign- 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, L10NCopyright ©2003 Christian Donner. Alle Rechte vorbehalten.
20
Vielen Dank für Ihre Aufmerksamkeit!