App lokalisieren

Es gibt einen einfachen Weg in einer App mehrere Sprachen zu unterstützen. Aus meiner Sicht ist das ein guter Weg mit wenig Aufwand zusätzliche Verkäufe zu generieren. Nutzer fühlen sich durch eine App in ihrer Sprache viel mehr angesprochen – mindestens Englisch und Deutsch geht immer.

In die Tutorial zeige ich wie man eine App lokalisieren kann.

Überblick

Lokalisierungen funktionieren über mehrere Versionen von Übersetzungsdateien. Diese Übersetzungsdateien gibt es für jede Sprache, welche die App unterstützen soll einmal. Des Weiteren werden Schlüssel-Wert Paare genutzt. So steht in der englischen Datei zum Beispiel „kind regards“ = „kind regards“ und in der deutschen Datei „kind regards“ = „schöne Grüße“.

Diese Übersetzungsdateien werden von Xcode automatisch angelegt – wir müssen lediglich festlegen in welche Sprachen wir alles übersetzen möchten. Dies macht man in den Projekt Settings unter Localizations. Sprache hinzufügen

Anschließend fragt Xcode ab welche der bereits vorhandenen übersetzbaren Dateien berücksichtigt werden sollen. Anschließend werden die entsprechendenÜbersetzungsdateien erstellt.

Dateien übersetzen

Um Übersetzungen im Quellcode vorzunehmen wird eine *.string Datei benötigt. Im oberen Screenshot ist diese schon enthalten. Man kann diese jedoch auch nachträglich hinzufügen über File > Add new…

String Datei anlegen

Wenn die erzeugte Datei ausgewählt ist, können die Übersetzungsdateien über den Attribute Inspector erzeugt werden. Die Funktion Localize… macht es möglich.

Xcode Localize

Ihr seht nun, dass man die Datei aufklappen kann und die unterschiedlichen Versionen für jede Sprache sieht. In diesen Versionen können wir nun unsere Übersetzungen einarbeiten. Der Text der Base Datei wird immer genommen, wenn die aktuelle Sprache des iPhones oder ipads nicht als Übersetzungsdatei vorhanden ist. Bei mir ist das dann Englisch und könnte so aussehen.

 "Please log in." = "Please log in.";

Wobei der erste Teil ein Schlüssel ist, der in allen Dateien gleich sein muss. Eben dieser Schlüssel wird später im Quelltext genutzt. Man könnte auch

"xyz" = "Please log in."

schreiben, aber dass ist dann nicht so sprechend ;-)
Die deutsche Übersetzung in der Übersetzungsdatei sieht dann so aus:

 "Please log in." = "Bitte anmelden.";

Im Quellcode wird dann folgendermaßen die stets korrekte Übersetzung herangezogen:

SKLabelNode *label = [SKLabelNode labelNodeWithFontNamed:kFont];    label.text = NSLocalizedString(@"Please log in.", nil);
usw.

Lokalisierung im Storyboard

Auch im Storyboard könne Label definiert werden. Da diese oftmals im Quellcode nicht nochmal angesprochen werden, stellt sich die Frage, wie sie zu lokalisieren sind. Auch für Storyboards gibt es die Localize… Funktion. Diese erzeugt zum Glück jedoch kein zweites Storyboard – das würde maximale Verwirrung stiften.

Storyboard

Stattdessen wird auch hier eine Übersetzungs-Datei erzeugt. Die Einträge in der Datei haben jeweils den Objekt ID des Storyboard Elements als Schlüssel. In dem Beispiel kann man ganz gut sehen, dass das UILabel mit der ID 5P3-uE-fRc“ im Storyboard den Text „Value“ hat. Ein auf Deutsch eingestelltes Gerät zeigt an der Stelle dann „Wert“ an.

Storyboard Localize

Leider wird die Übersetzungsdatei nicht aktualisiert, wenn neue Elemente zum Storyboard hinzugefügt werden. Diese neuen Elemente müssen händisch eingetragen werden. Aus diesem Grund empfiehlt es die Übersetzung ganz zum Schluss zu machen. Sollte man doch mal ein Element händisch ergänzen müssen stellt sich natürlich die Frage – wo bekomme ich die Objekt ID her? Man findet sie im Attribute Inspector.

 

Object ID

 

Viel Spaß beim Übersetzen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.