1. Trennung von Code und Texten
Die grundlegende Voraussetzung für jede Lokalisierung ist die strikte Trennung von Programmcode und textuellen Inhalten. Alle anzuzeigenden Texte sollten in externen Ressourcendateien (z. B. Properties, JSON, YAML) gespeichert werden, nicht hartcodiert im Quelltext. Dadurch können Übersetzer arbeiten, ohne den Code zu ändern. Verwenden Sie eindeutige String-Keys als Referenz im Code, die auf die jeweiligen Übersetzungen verweisen. Diese Trennung erleichtert zudem die Wartung und erlaubt späteres Hinzufügen neuer Sprachen ohne Codeänderungen. Achten Sie darauf, dass auch UI-Beschriftungen, Fehlermeldungen und Tooltips in diesen Dateien landen.
2. Platzhalter und Variablen
Texte enthalten oft dynamische Inhalte wie Zahlen, Namen oder Daten. Diese müssen über Platzhalter eingefügt werden, z. B. mit printf-Formatierung (%s, %d) oder moderneren Ansätzen wie geschweiften Klammern {0}. Wichtig ist, dass Übersetzer die Reihenfolge und Bedeutung der Platzhalter kennen. Verwenden Sie benannte Platzhalter (z. B. „{username}“), um Kontext zu geben. Bei Sprachen mit unterschiedlicher Satzstellung kann die Reihenfolge der Platzhalter variieren. Bieten Sie daher die Möglichkeit, die Reihenfolge in der Übersetzung anzupassen. Testen Sie alle Varianten, um fehlerhafte oder unvollständige Ausgaben zu vermeiden.
3. Pluralregeln und Mehrzahlbildung
Im Deutschen gibt es nur Singular und Plural, doch viele Sprachen haben komplexere Pluralregeln (z. B. Arabisch mit sechs Kategorien). Nutzen Sie Bibliotheken wie ICU MessageFormat, die Pluralregeln sprachspezifisch behandeln. Definieren Sie in Ihren Ressourcen separate Schlüssel für die verschiedenen Pluralformen (one, other). Der Code wählt dann automatisch die passende Form basierend auf der Zahl. Beispiel: „{count} {count, plural, one {Apfel} other {Äpfel}}“. Testen Sie jede Sprache mit mehreren Zahlenwerten, um sicherzustellen, dass die korrekte Pluralform angezeigt wird. Vermeiden Sie feste if-Abfragen – das ist fehleranfällig.
4. Textlänge und Layout-Puffer
Übersetzungen sind oft länger oder kürzer als der Originaltext. Besonders bei Buttons, Menüs und Labeln kann dies das Layout sprengen. Planen Sie daher ausreichend Platz für Texterweiterungen ein – ein guter Richtwert ist 30 % zusätzlicher Platz für westliche Sprachen, mehr für asiatische. Verwenden Sie dynamische Layouts, die sich an die Textlänge anpassen (z. B. Auto-Layout in iOS oder Flexbox im Web). Vermeiden Sie feste Breiten. Lassen Sie UI-Elemente gegebenenfalls mit Textumbruch umgehen. Testen Sie die Oberfläche mit den längsten zu erwartenden Übersetzungen, um Überlappungen oder Abschneidungen zu vermeiden.
5. String-Keys, Kontext für Übersetzer und RTL
Eindeutige String-Keys sind das Rückgrat der Lokalisierung. Verwenden Sie sprechende Namen (z. B. „login.button.title“) und dokumentieren Sie den Verwendungszweck. Geben Sie Übersetzern Kontext: Screenshots, maximale Zeichenlänge, Einschränkungen (z. B. „nicht länger als 20 Zeichen“). Für RTL-Sprachen wie Arabisch oder Hebräisch muss das UI gespiegelt werden. Nutzen Sie Layout-Attribute, die RTL automatisch unterstützen (z. B. start/end statt left/right). Testen Sie die gesamte Navigation unter RTL-Bedingungen. Denken Sie auch an Symbole und Grafiken – sie können je nach Kultur unterschiedlich interpretiert werden.