0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003...

20
05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003 Christian Donner. Alle Rechte vorbehalten. 1 Architektur Moderner Internet Applikationen 22.-24.4.2004 TU Wien/Ausseninstitut Internationalization und Localization DI Christian Donner cd (at) donners.com

Transcript of 0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003...

Page 1: 0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner.

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

Page 2: 0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner.

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?

Page 3: 0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner.

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

Page 4: 0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner.

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)

Page 5: 0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner.

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.

Page 6: 0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner.

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

Page 7: 0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner.

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" %>

Page 8: 0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner.

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

Page 9: 0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner.

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

Page 10: 0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner.

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/

Page 11: 0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner.

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.

Page 12: 0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner.

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

Page 13: 0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner.

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

Page 14: 0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner.

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.

Page 15: 0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner.

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

Page 16: 0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner.

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

Page 17: 0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner.

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

Page 18: 0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner.

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

Page 19: 0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner.

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)

Page 20: 0 05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10N Copyright ©2003 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner.

05.02.2003 21:35 Architektur Moderner Internet Applikationen – I18N, L10NCopyright ©2003 Christian Donner. Alle Rechte vorbehalten.

20

Vielen Dank für Ihre Aufmerksamkeit!