Android
Internationalisierung und Lokalisierung (I18N und L10N)
Suche…
Einführung
Internationalisierung (i18n) und Lokalisierung (L10n) werden verwendet, um Software an Unterschiede in den Sprachen, regionalen Unterschieden und Zielgruppen anzupassen.
Internationalisierung: Planungsprozess für die zukünftige Lokalisierung, dh das Softwaredesign so flexibel machen, dass es sich an zukünftige Lokalisierungsbemühungen anpassen und anpassen kann.
Lokalisierung: Der Prozess der Anpassung der Software an eine bestimmte Region / ein bestimmtes Land (einen bestimmten Markt).
Bemerkungen
Um ein Gerät auf Lokalisierung zu testen, können Sie das Gerät oder den Emulator in einem bestimmten Gebietsschema neu starten, indem Sie adb
wie folgt verwenden:
- Führen Sie Adb mit dem Befehl:
adb shell
- Führen Sie an der Eingabeaufforderung von adb den folgenden Befehl aus:
setprop persist.sys.locale [BCP-47 language tag];stop;sleep 5;start
wobei [BCP-47-Sprachkennzeichen] der hier beschriebene sprachspezifische Code ist: BCP47-Codes
setprop persist.sys.locale ja-JP;stop;sleep 5;start
die japanische Lokalisierung in der App zu überprüfen, verwenden Sie den Befehl: setprop persist.sys.locale ja-JP;stop;sleep 5;start
Lokalisierung planen: Aktivieren Sie die RTL-Unterstützung in Manifest
Die Unterstützung von RTL (von rechts nach links) ist ein wesentlicher Bestandteil der Planung für i18n und L10n. Im Gegensatz zur englischen Sprache, die von links nach rechts geschrieben wird, werden viele Sprachen wie Arabisch, Japanisch, Hebräisch usw. von rechts nach links geschrieben. Um eine globalere Zielgruppe anzusprechen, empfiehlt es sich, Ihre Layouts so zu planen, dass sie diese Sprache von Anfang an unterstützen, sodass das Hinzufügen von Lokalisierungen später einfacher ist.
Die RTL-Unterstützung kann in einer Android-App aktiviert werden, indem der Tag " supportsRtl
im AndroidManifest
wird.
<application
...
android:supportsRtl="true"
...>
...
</application>
Planen der Lokalisierung: Fügen Sie RTL-Unterstützung in Layouts hinzu
Ab SDK 17 (Android 4.2) wurde die RTL-Unterstützung in Android-Layouts hinzugefügt und ist ein wesentlicher Bestandteil der Lokalisierung. In der Zukunft sollte die left/right
Notation in Layouts durch die start/end
Notation ersetzt werden. Wenn Ihr Projekt jedoch einen minSdk
Wert von weniger als 17
, sollten in Layouts sowohl die left/right
als auch die start/end
minSdk
verwendet werden.
Für relative Layouts sollten alignParentStart
und alignParentEnd
wie alignParentEnd
verwendet werden:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"/>
</RelativeLayout>
Für die Angabe der Schwerkraft und des Layouts der Schwerkraft sollte eine ähnliche Schreibweise verwendet werden, z.
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|start"
android:gravity="left|start"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|end"
android:gravity="right|end"/>
Füllungen und Ränder sollten ebenfalls entsprechend angegeben werden:
<include layout="@layout/notification"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:layout_marginStart="12dp"
android:paddingLeft="128dp"
android:paddingStart="128dp"
android:layout_toLeftOf="@id/cancel_action"
android:layout_toStartOf="@id/cancel_action"/>
<include layout="@layout/notification2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginRight="12dp"
android:layout_marginEnd="12dp"
android:paddingRight="128dp"
android:paddingEnd="128dp"
android:layout_toRightOf="@id/cancel_action"
android:layout_toEndOf="@id/cancel_action"/>
Lokalisierungsplanung: Testlayouts für RTL
Gehen Sie folgendermaßen vor, um zu testen, ob die erstellten Layouts RTL-kompatibel sind:
Gehen Sie zu Einstellungen -> Entwickleroptionen -> Zeichnung -> RTL-Layoutrichtung festlegen
Wenn Sie diese Option aktivieren, muss das Gerät RTL-Gebietsschemas verwenden, und Sie können alle Teile der App für RTL-Unterstützung überprüfen. Beachten Sie, dass Sie bis zu diesem Zeitpunkt keine neuen Gebietsschemas / Sprachunterstützung hinzufügen müssen.
Kodierung für die Lokalisierung: Erstellen von Standardzeichenfolgen und -ressourcen
Der erste Schritt für die Codierung für die Lokalisierung ist das Erstellen von Standardressourcen. Dieser Schritt ist so implizit, dass viele Entwickler nicht einmal darüber nachdenken. Das Erstellen von Standardressourcen ist jedoch wichtig, da das Gerät bei einer nicht unterstützten Ländereinstellung alle Ressourcen aus den Standardordnern lädt. Wenn in den Standardordnern auch nur eine der Ressourcen fehlt, stürzt die App einfach ab.
Der Standardsatz von Zeichenfolgen sollte im angegebenen Ordner am angegebenen Speicherort abgelegt werden:
res/values/strings.xml
Diese Datei sollte die Zeichenfolgen in der Sprache enthalten, von der die meisten Benutzer der App voraussichtlich sprechen werden.
Standardressourcen für die App sollten auch in den folgenden Ordnern und Speicherorten abgelegt werden:
res/drawable/
res/layout/
Wenn für Ihre App Ordner wie anim
oder xml
erforderlich sind, sollten die Standardressourcen den folgenden Ordnern und Speicherorten hinzugefügt werden:
res/anim/
res/xml/
res/raw/
Kodierung für die Lokalisierung: Bereitstellung alternativer Zeichenketten
Um Übersetzungen in anderen Sprachen (Gebietsschemas) bereitzustellen, müssen wir nach folgender Konvention eine strings.xml
in einem separaten Ordner erstellen:
res/values-<locale>/strings.xml
Ein Beispiel für dasselbe ist unten angegeben:
In diesem Beispiel haben wir standardmäßige englische Zeichenfolgen in der Datei res/values/strings.xml
. Französische Übersetzungen werden im Ordner res/values-fr/strings.xml
und japanische Übersetzungen im Ordner res/values-ja/strings.xml
bereitgestellt. res/values-ja/strings.xml
Andere Übersetzungen für andere Sprachumgebungen können ebenfalls zur App hinzugefügt werden.
Eine vollständige Liste der Ländereinstellungscodes finden Sie hier: ISO 639-Codes
Nicht übersetzbare Zeichenketten:
Ihr Projekt enthält möglicherweise bestimmte Zeichenfolgen, die nicht übersetzt werden sollen. In diese Kategorie fallen Zeichenfolgen, die als Schlüssel für SharedPreferences verwendet werden, oder Zeichenfolgen, die als Symbole verwendet werden. Diese Strings sollten nur in dem Standard gespeichert werden strings.xml
und sollen mit einem markiert translatable="false"
-Attribut. z.B
<string name="pref_widget_display_label_hot">Hot News</string>
<string name="pref_widget_display_key" translatable="false">widget_display</string>
<string name="pref_widget_display_hot" translatable="false">0</string>
Dieses Attribut ist wichtig, da Übersetzungen häufig von zweisprachigen Fachleuten ausgeführt werden. Dies würde es den an Übersetzungen beteiligten Personen ermöglichen, Zeichenketten zu identifizieren, die nicht übersetzt werden sollen, wodurch Zeit und Geld gespart werden.
Kodierung für die Lokalisierung: Bereitstellung alternativer Layouts
Das Erstellen sprachspezifischer Layouts ist häufig nicht erforderlich, wenn Sie die richtige start/end
Endnotation angegeben haben, wie im vorherigen Beispiel beschrieben. Es kann jedoch Situationen geben, in denen die Standardlayouts für bestimmte Sprachen möglicherweise nicht ordnungsgemäß funktionieren. Links-nach-Rechts-Layouts werden möglicherweise nicht für RTL-Sprachen übersetzt. In solchen Fällen müssen die korrekten Layouts angegeben werden.
Um eine vollständige Optimierung für RTL-Layouts zu ermöglichen, können Sie vollständig separate Layoutdateien mit dem ldrtl
Ressourcenqualifizierer verwenden ( ldrtl
steht für layout-direction-right-to-left}). Zum Beispiel können wir Ihre Standard-Layoutdateien in res/layout/
und unsere RTL-optimierten Layouts in res/layout-ldrtl/
.
Das ldrtl
Qualifikationsmerkmal eignet sich hervorragend für gezeichnete Ressourcen, sodass Sie Grafiken bereitstellen können, die in der der Leserichtung entsprechenden Richtung ausgerichtet sind.
Hier ist ein großartiger Beitrag, der die Rangfolge der ldrtl
Layouts beschreibt: Sprachspezifische Layouts