Wikipedia · einfach zusammengefasst · Stand
Internationalisierung (Softwareentwicklung)
Internationalisierung bedeutet in der Informatik beziehungsweise in der Softwareentwicklung, ein Programm so zu gestalten, dass es leicht (ohne den …
Inhalt6 Abschnitte
Grundidee und Abgrenzung
Internationalisierung bedeutet in der Informatik beziehungsweise Softwareentwicklung, ein Programm so zu gestalten, dass es leicht an andere Sprachen und Kulturen angepasst werden kann, ohne den Quellcode ändern zu müssen. Häufig wird dafür die Abkürzung i18n verwendet. Sie steht für das englische Wort internationalization beziehungsweise internationalisation, bei dem zwischen dem ersten Buchstaben I und dem letzten Buchstaben n 18 Buchstaben liegen.
Zur Internationalisierung gehören Aufgaben, die Entwicklerinnen und Entwickler schon beim Programmieren berücksichtigen müssen. Beschreibungstexte sollen zum Beispiel nicht fest im Quellcode stehen, sondern über Variablen aus externen Quellen zur Laufzeit eingelesen werden. Auch Datumsformate, unterschiedliche Textlängen und verschiedene Schreibrichtungen wie Rechts-nach-Links-Schrift müssen vorbereitet werden.
Lokalisierung ist der nächste Schritt und wird oft als l10n abgekürzt, weil zwischen l und n im englischen Wort localization beziehungsweise localisation 10 Buchstaben stehen. Dabei werden konkrete Anpassungen für ein bestimmtes Nutzungsgebiet vorgenommen, etwa die Übersetzung von Texten in eine Landessprache. Internationalisierung macht ein Produkt also grundsätzlich weltweit anpassbar; Lokalisierung fügt die speziellen Eigenschaften für ein bestimmtes Land, eine Region oder eine ethnische Gruppe hinzu. Internationalisierung wird pro Produkt einmal durchgeführt, Lokalisierung jeweils einmal für jede Kombination aus Produkt und Nutzungsgebiet. Beide Prozesse ergänzen sich, damit ein System global funktionieren kann.
Sprache, Texte und Schrift
Ein zentraler Bereich der Internationalisierung betrifft Sprache und Text. Übersetzbare Textdaten werden in externen Dateien abgelegt und dynamisch geladen. Das kann nicht nur sichtbare Texte betreffen, sondern auch Sprachausgaben sowie Texte in grafischen Elementen wie Bildern und Videos, zum Beispiel Untertitel in Filmen. Außerdem sollte die Programmlogik unabhängig von der Benutzungsoberfläche und von Ausgabemedien wie Druckern sein.
Moderne Systeme verwenden den Unicode-Zeichensatz. Unicode löst viele Probleme früherer Zeichensätze wie ASCII oder EBCDIC, weil er einen wesentlich größeren Zeichenvorrat bereitstellt. Dadurch können Zeichen aus unterschiedlichen Schriften im selben System angeboten werden.
Weitere wichtige Punkte sind bidirektionale Texte und verschiedene Schriften. Je nach Sprache müssen unterschiedliche Schreibrichtungen verwendet werden. Einige Sprachen können außerdem in mehreren Schreibvarianten vorkommen, zum Beispiel Serbisch in kyrillischer Schrift und Serbisch in lateinischer Schrift.
Auch Textverarbeitung unterscheidet sich je nach Sprache und Schrift. Konzepte wie Groß- und Kleinschreibung gibt es nicht in jeder Schrift. Für Texttrennung, etwa beim Umbrechen einer Zeile, gelten unterschiedliche Regeln. Eingabemethoden müssen Tastaturkürzel mit beliebigen Tastaturlayouts ermöglichen.
Bei Sortierung und Suche müssen nationale Regeln beachtet werden. Deutsche Umlaute werden nach nationalen Regeln einsortiert; in bestimmten Zusammenhängen wie Telefonbüchern kann sogar eine besondere Sortierung erwartet werden. Bei der Suche müssen manche Zeichen auf sinngemäß gleichwertige Formen abgebildet werden. So sind „¼“ und „1/4“ unterschiedlich kodiert, haben aber dieselbe Bedeutung. Diese Umwandlung heißt Normalisierung.
Texte können außerdem in eine andere Schrift überführt werden. Dabei unterscheidet man Transliteration, also eine buchstabengetreue Transformation, und Transkription, also eine Transformation nach Lautschrift.
Formate und kulturelle Anpassung
Internationalisierte Software muss Daten so verarbeiten, dass sie intern einheitlich bleiben, für Benutzerinnen und Benutzer aber regional passend angezeigt werden. Das betrifft besonders Datum, Zeit, Zahlen, Währungen, Gewichte, Maße und Zeitzonen.
Bei Datumsformaten und Kalendersystemen rechnen Softwareprodukte meistens mit Zeiten des gregorianischen Kalenders. Für die Anzeige kann aber eine Formatierung in regional üblichen Formaten und Zeitrechnungen angeboten werden. Bei Zeitformaten gibt es zum Beispiel die 24-Stunden-Zählung und die 12-Stunden-Zählung mit a.m. für Vormittag und p.m. für Nachmittag. Zahlenformate unterscheiden sich unter anderem durch Dezimal- und Tausendertrennzeichen sowie durch Währungen, Gewichte und Maße. Bei Zeitzonen muss eine Software einerseits mit allen unterschiedlichen Zeiten einheitlich rechnen, andererseits jedem Benutzer die passende lokale Zeit anzeigen.
Für kulturelle Anpassungen verwendet Software meist eine Locale. Eine Locale beschreibt die Kultur, an die sich die Software anpassen soll. Sie enthält Informationen über Sprache, Land und gegebenenfalls weitere regionale Eigenschaften, etwa die zu verwendende Schrift.
Weitere kulturelle Aspekte können Bilder und Farben betreffen, weil sie je nach Kultur unterschiedlich verständlich oder angemessen sein können. Auch Namen und Titel, staatlich vergebene Nummern, Telefonnummern, Adressen, internationale Postleitzahlen und Papierabmessungen müssen je nach Land oder Region berücksichtigt werden.
Geschäftsprozess und Programmierpraxis
Bei der Internationalisierung eines Produkts müssen die Märkte betrachtet werden, in denen das Produkt voraussichtlich eingesetzt oder verkauft werden soll. Dabei können sehr praktische Details wichtig werden: Feldlängen von Adressen, optionale Felder für Postleitzahlen oder neue Registrierungsprozesse, die lokale rechtliche Anforderungen erfüllen. Ein umfassender Ansatz kann sogar die Anpassung von Geschäftsprozesslogik oder die Berücksichtigung kultureller Verhaltensaspekte einschließen.
In der Programmierpraxis werden Texte und teilweise auch andere Elemente, etwa Namen von Grafikdateien, traditionell in sogenannte resource strings ausgelagert. Das sind Hilfszeichenketten, die während der Programmausführung bei Bedarf geladen werden. Sie liegen in Hilfsdateien und lassen sich vergleichsweise einfach übersetzen.
Programme werden oft so gebaut, dass sie je nach eingestelltem Vertriebsgebiet auf passende Hilfsbibliotheken zugreifen. Eine Programmbibliothek, die diese Arbeitsweise unterstützt, ist GNU gettext. Ziel dieser Struktur ist, Übersetzungen und regionale Anpassungen getrennt vom eigentlichen Programmcode zu verwalten.
Typische Schwierigkeiten
Obwohl das Übersetzen vorhandener Texte zunächst einfach erscheinen kann, ist die Verwaltung mehrerer Sprachversionen über den gesamten Produktlebenszyklus deutlich schwieriger. Wenn eine Nachricht für Benutzerinnen und Benutzer geändert wird, müssen auch alle übersetzten Versionen angepasst werden. Dadurch kann sich der Entwicklungszyklus verlängern.
Unterschiedliche Textlängen können in der Benutzeroberfläche Probleme verursachen, zum Beispiel abgeschnittenen Text oder unerwünschte Zeilenumbrüche. Viele Lokalisierungsaufgaben gehen außerdem über reine Übersetzung hinaus. Schreibrichtung oder Textsortierung können tiefere Änderungen an der Software verlangen. OpenOffice.org löst solche Fälle beispielsweise mit Kompilierungsverzweigung, also compilation switches.
Ein besonders wichtiges Problem entsteht durch syntaktische Unterschiede zwischen Sprachen. Die englische Anzeige „ZAHL days ago“ lässt sich nicht einfach übersetzen, indem nur „days ago“ ersetzt wird. Im Deutschen kann daraus „vor ZAHL Tagen“ werden; der Text steht also teils vor und teils hinter der Zahl. Die internationalisierte Software muss deshalb Text vor und hinter einem Wert ermöglichen.
In der Praxis werden solche Probleme meist mit Platzhaltern gelöst. Ein ganzer Satz bleibt als Einheit erhalten, aber spezielle Zeichenketten markieren die Position von Parametern. Aus „Showing results {0} to {1} out of {2}“ wird zum Beispiel „Zeige Treffer {0} bis {1} von {2}“. So kann auch die Reihenfolge der Argumente je nach Sprache geändert werden. Für Fälle wie Singular und Plural können mehrere Alternativen in den Text-Ressourcen stehen, die zur Laufzeit passend ausgewählt werden, etwa: „Die Suche lieferte {PLURAL|{0}|keine Ergebnisse|1 Ergebnis|{0} Ergebnisse}.“
Ab einem bestimmten Grad an Komplexität, zum Beispiel in der Qualitätssicherung, braucht ein Entwicklungsteam Personen, die andere Sprachen und Kulturen verstehen und zugleich technischen Hintergrund haben.
Kosten und Nutzen
In einer kommerziellen Umgebung liegt der wichtigste Vorteil der Lokalisierung im Zugang zu mehr Märkten. Es gibt die Auffassung, dass die Lokalisierung eines Produkts in verschiedene Sprachen und Kulturen selbstverständlich ist und nur noch die Höhe der Kosten bestätigt werden müsse.
Produkte für internationale Märkte zu entwickeln kostet mehr. In einer immer globaleren Ökonomie ist es aber kaum eine Option, nur eine Sprache oder nur einen Markt zu unterstützen. Bei selbstentwickelter kommerzieller Software ist Lokalisierung allerdings von ökonomischen Unsicherheiten geprägt. Außerdem fehlt dort meist die Möglichkeit, dass Endbenutzer oder Freiwillige die Lokalisierung übernehmen, wie es in Open-Source-Umgebungen üblich ist.
Open-Source-Software kann im Allgemeinen frei verändert und weiterverbreitet werden und ist dadurch zugänglicher für Internationalisierung. Als Beispiel nennt der Artikel das KDE-Projekt, das in 100 Sprachen übersetzt worden ist.