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:

  1. Führen Sie Adb mit dem Befehl: adb shell
  2. 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:

Beispiel für Gebietsschemata

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



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow