Ab Android 7.0 (API-Level 24) Android bietet eine erweiterte Unterstützung für mehrsprachige Nutzer, in den Einstellungen mehrere Sprachen auswählen. Android-Geräte bietet diese Möglichkeit, indem die Anzahl der unterstützten Sprachen erheblich erhöht wird. und die Art und Weise ändert, wie das System Ressourcen auflöst.
In diesem Dokument wird zunächst die Strategie Versionen von Android unter 7.0 (API-Level 24) Als Nächstes wird beschrieben, der verbesserten Lösungsstrategie für Ressourcen in Android 7.0. Schließlich wird erläutert, wie Sie der erweiterten Anzahl von Sprachen, um mehrsprachige Nutzer zu unterstützen.
Herausforderungen beim Klären von Sprachressourcen
Vor Android 7.0 war Android nicht immer erfolgreich. App- und Systemsprachen übereinstimmen.
Nehmen wir zum Beispiel an, dass folgende Situation vorliegt:
- Die Standardsprache deiner App ist
en_US
(Englisch (USA)). Außerdem wurde Lokalisierte spanische Strings ines_ES
Ressourcendateien. - Ein Gerät ist auf „
es_MX
“ eingestellt
Wenn Ihr Java-Code auf Zeichenfolgen verweist, lädt das System
aus der Standardressourcendatei (en_US
), auch wenn die App
Spanische Ressourcen lokalisiert unter es_ES
. Das liegt daran, dass das System
findet keine genaue Übereinstimmung, sucht sie weiter nach Ressourcen, indem sie
Wenn keine Übereinstimmung gefunden wird, fällt das System
auf den Standardwert en_US
zurücksetzen.
Das System verwendet außerdem standardmäßig en_US
, wenn der Nutzer eine Sprache auswählt, die
die App überhaupt nicht unterstützt, zum Beispiel Französisch. Beispiel:
Nutzereinstellungen | App-Ressourcen | Ressourcenauflösung |
---|---|---|
fr_CH |
Standard (de) de_DE es_ES fr_FR sie_IT |
Versuchen Sie es mit fr_CH => Fehlgeschlagen Versuchen Sie es mit fr => Fehlgeschlagen Standardeinstellung verwenden (en) |
In diesem Beispiel zeigt das System englische Zeichenfolgen ohne zu wissen, ob die Nutzenden Englisch verstehen. Dieses Verhalten kommt häufig vor, heute.
Verbesserungen an der Strategie zur Ressourcenbeseitigung
Android 7.0 (API-Level 24) bietet eine stabilere Ressourcenauflösung und
findet automatisch bessere Fallbacks.
Um die Auflösung zu beschleunigen und die
sollten Sie Ressourcen im gebräuchlichsten übergeordneten Dialekt speichern.
Wenn Sie z. B. spanische Ressourcen
im Verzeichnis values-es-rUS
verschieben Sie sie in das Verzeichnis values-b+es+419
,
das lateinamerikanisches Spanisch enthält.
Wenn Sie Ressourcenzeichenfolgen in einer
Verzeichnis namens values-en-rGB
, umbenennen
das Verzeichnis nach values-b+en+001
(Internationale
Englisch), da die am häufigsten verwendete
Übergeordnetes Element für en-GB
-Strings ist en-001
.
Die folgenden Beispiele erklären, warum diese Praktiken die Leistung verbessern und
Zuverlässigkeit der Ressourcenauflösung.
Beispiele für die Ressourcenauflösung
Bei Android-Versionen ab 7.0 ist der unter Tabelle 1 wird anders aufgelöst:
Nutzereinstellungen | App-Ressourcen | Ressourcenauflösung |
---|---|---|
|
Standard (de) de_DE es_ES fr_FR sie_IT |
Versuchen Sie es mit fr_CH => Fehlgeschlagen Versuchen Sie es mit fr => Fehlgeschlagen Versuche es mit den untergeordneten Elementen von fr => fr_FR fr_FR verwenden |
Jetzt erhält der Nutzer französische statt Englisch. Dieses Beispiel zeigt auch
Warum sollten Sie französische Strings in fr
statt in fr_FR
speichern?
für Android 7.0 oder höher. Hier ist die Vorgehensweise,
um dem übergeordneten Dialekt zu entsprechen,
schneller und vorhersehbarer zu machen.
Zusätzlich zu dieser verbesserten Lösungslogik bietet Android jetzt noch mehr Nutzersprachen zur Auswahl. Versuchen wir das obige Beispiel noch einmal mit Italienisch. als zusätzliche Nutzersprache angegeben, jedoch ohne App-Unterstützung für Französisch.
Nutzereinstellungen | App-Ressourcen | Ressourcenauflösung |
---|---|---|
|
Standard (de) de_DE es_ES sie_IT |
Versuchen Sie es mit fr_CH => Fehlgeschlagen Versuchen Sie es mit fr => Fehlgeschlagen Versuche es mit den untergeordneten Elementen von fr => Fehlgeschlagen Ausprobieren_CH => Fehlgeschlagen Ausprobieren => Fehlgeschlagen Probieren Sie die untergeordneten Elemente aus => sie_IT Verwenden_IT |
Der Nutzer versteht immer noch eine Sprache, die er versteht, auch wenn die App Französisch unterstützt.
Apps für die Unterstützung weiterer Sprachen konzipieren
Android bietet Tools, die es einfacher machen, App-Inhalte zu lokalisieren und die Interaktion der Nutzer mit ihren bevorzugten Sprachen. Wir empfehlen die folgenden Methoden, um Ihre App zu konfigurieren, damit sie verschiedene Sprachen und Formatierungskonventionen auf skalierbare Weise berücksichtigen.
Gib die Sprachen an, die deine App unterstützt
Damit Sprachen korrekt aufgelöst werden, gib die Sprachen an, die deine App unterstützt, indem du das
resConfigs
in der Datei build.gradle
auf Modulebene.
Das folgende Codebeispiel zeigt, wie mit resConfigs
unterstützte Sprachen angegeben werden.
In diesem Beispiel unterstützt die App sowohl Englisch als auch Spanisch.
Cool
android { defaultConfig { ... resConfigs "en", "es" } }
Kotlin
android { defaultConfig { ... resConfigs("en", "es") } }
LocaleList-API
Ab Android 7.0 (API-Level 24) stellt Android die
LocaleList.getDefault()
-API
können Apps die vom Nutzer angegebenen Sprachen direkt abfragen. Diese API
können Sie komplexere
und eine besser optimierte
Darstellung von Inhalten. Beispiel: Suche
kann Ergebnisse je nach Nutzereinstellungen in mehreren Sprachen anzeigen. Browser-Apps
wird dem Nutzer nicht angeboten,
Seiten in einer Sprache zu übersetzen, die er bereits beherrscht.
und Tastatur-Apps können alle geeigneten Layouts automatisch aktivieren.
Formatierer
Bis Android 6.0 (API-Level 23) unterstützte Android nur eine oder zwei Sprachen für viele gängige Sprachen (en, es, ar, fr, ru). Da es von jeder Sprache nur wenige Varianten gab, Apps könnten einige Zahlen und Daten als hartcodierte Zeichenfolgen speichern. in Ressourcendateien. Da die zahlreichen unterstützten Android-Apps können sich erhebliche Unterschiede bei den Formaten für Datumsangaben, Uhrzeiten, Währungen und ähnliches Informationen innerhalb einer einzigen Sprache. Durch die Hartcodierung Ihrer Formate die Endnutzer verwirren. Wenn Sie also für Android 7.0 oder höher entwickeln, verwenden Sie Formatierer anstelle von hartcodierten Zahlen und Datumszeichenfolgen.
Android 7.0 und höher unterstützen beispielsweise 27 arabische Sprachen. Diese Sprachen können sich die meisten Ressourcen teilen, einige bevorzugen ASCII-Ziffern, während andere native Ziffern bevorzugen. Beispiel: wenn Sie einen Satz mit einer Ziffernvariablen wie z. B. „Wählen Sie eine vierstellige PIN aus“, verwenden Sie Formatierer wie unten gezeigt:
format(locale, "Choose a %d-digit PIN", 4)