In vielen Fällen legen mehrsprachige Nutzer für ihre Systemsprache eine Sprache fest, z. B. Englisch, möchten aber für bestimmte Apps andere Sprachen auswählen, z. B. Niederländisch, Chinesisch oder Hindi. Damit Apps diesen Nutzern besser zur Verfügung stehen, werden in Android 13 die folgenden Funktionen für Apps eingeführt, die mehrere Sprachen unterstützen:
Systemeinstellungen: Ein zentraler Ort, an dem Nutzer eine bevorzugte Sprache für jede App auswählen können.
Sie können Ihre Anwendung so konfigurieren, dass die Dateien, die zur Unterstützung von App-Spracheinstellungen erforderlich sind, automatisch generiert und in den Systemeinstellungen angezeigt werden. Weitere Informationen finden Sie unter Automatische Sprachunterstützung pro App aktivieren.
Zusätzliche APIs: Mit diesen öffentlichen APIs wie den Methoden
setApplicationLocales()
undgetApplicationLocales()
inLocaleManager
können Anwendungen zur Laufzeit eine andere Sprache als die Systemsprache festlegen.Diese APIs werden automatisch mit den Systemeinstellungen synchronisiert. Anwendungen, die diese APIs zum Erstellen einer benutzerdefinierten In-App-Sprachauswahl verwenden, sorgen also für eine einheitliche Nutzererfahrung, unabhängig davon, wo sie ihre Spracheinstellungen auswählen. Mit den öffentlichen APIs lässt sich auch die Menge an Boilerplate-Code reduzieren. Sie unterstützen unterteilte APKs und sie unterstützen die automatische Sicherung für Apps, um Spracheinstellungen der Nutzer auf App-Ebene zu speichern.
Für die Abwärtskompatibilität mit früheren Android-Versionen sind entsprechende APIs auch in AndroidX verfügbar. Die abwärtskompatiblen APIs funktionieren jedoch unter Android 12 (API-Level 32) und früher mit dem AppCompatActivity-Kontext und nicht mit dem Anwendungskontext. Sie können mit Appcompat 1.6.0 oder höher auf die abwärtskompatiblen APIs zugreifen.
Übersicht über die Implementierung dieser Funktion
In der folgenden Tabelle sehen Sie empfohlene Implementierungen für verschiedene Anwendungsfälle.
Anwendungsfall | Empfohlene Implementierung |
---|---|
Deine App hat keine In-App-Sprachauswahl |
|
In deiner App gibt es bereits eine Sprachauswahl |
|
Systemeinstellungen für Nutzer
Ab Android 13 enthält Android einen zentralen Ort in den Systemeinstellungen, an dem Spracheinstellungen für einzelne Apps festgelegt werden können. Damit die Sprachen Ihrer App in den Systemeinstellungen auf Geräten mit Android 13 oder höher konfiguriert werden können, müssen Sie die automatische Sprachunterstützung pro App aktivieren (empfohlen) oder die Unterstützung manuell konfigurieren.
Automatische Sprachunterstützung pro App aktivieren
Ab Android Studio Giraffe und AGP 8.1 können Sie Ihre App so konfigurieren, dass die Spracheinstellungen pro App automatisch unterstützt werden. Basierend auf Ihren Projektressourcen generiert AGP die Datei LocaleConfig
und fügt in der endgültigen Manifestdatei einen Verweis darauf hinzu, sodass Sie dies nicht mehr manuell tun müssen. AGP verwendet die Ressourcen in den res
-Ordnern Ihrer App-Module und alle Bibliotheksmodulabhängigkeiten, um die Sprachen zu bestimmen, die in die LocaleConfig
-Datei aufgenommen werden sollen. Wenn Sie Ihrer Anwendung also Ressourcen für eine neue Sprache hinzufügen, müssen Sie die Datei LocaleConfig
nicht aktualisieren.
Beachten Sie, dass die automatische Sprachfunktion pro App Apps unterstützt, die unter Android 13 (API-Level 33) oder höher ausgeführt werden. Wenn Sie das Feature verwenden möchten, müssen Sie compileSdkVersion
auf 33 oder höher festlegen. Wenn Sie für frühere Android-Versionen bevorzugte Spracheinstellungen für einzelne Apps konfigurieren möchten, müssen Sie weiterhin die APIs und die In-App-Sprachauswahl verwenden.
So aktivieren Sie die automatische Sprachunterstützung für einzelne Apps:
- Verwenden Sie zum Aktivieren der Funktion die Einstellung
generateLocaleConfig
im BlockandroidResources {}
der Dateibuild.gradle.kts
auf Modulebene (die Dateibuild.gradle
, wenn Sie Groovy verwenden). Die Funktion ist standardmäßig deaktiviert.Kotlin
android { androidResources { generateLocaleConfig = true } }
Groovig
android { androidResources { generateLocaleConfig true } }
- Geben Sie eine Standardsprache an:
- Erstellen Sie im Ordner
res
des App-Moduls eine neue Datei mit dem Namenresources.properties
. Legen Sie in der Datei
resources.properties
die Standardsprache mit dem LabelunqualifiedResLocale
fest. Informationen zum Formatieren der Gebietsschemanamen finden Sie unter Sprachnamen erstellen.
- Erstellen Sie im Ordner
AGP fügt diese Standardsprache und alle alternativen Sprachen, die Sie angegeben haben, mithilfe von values-*
-Verzeichnissen im Ordner res
der automatisch generierten LocaleConfig
-Datei hinzu.
So bilden Sie Gebietsschemanamen
Zum Erstellen von Sprachnamen kombinieren Sie den Sprachcode mit den optionalen Script- und Regionscodes und trennen Sie sie jeweils durch einen Bindestrich:
- Sprache: Verwende den aus zwei oder drei Buchstaben bestehenden ISO 639-1-Code.
- Skript (optional): Verwenden Sie den ISO 15924-Code.
- Region (optional): Verwenden Sie entweder den zweistelligen ISO 3166-1-alpha-2-Code oder den dreistelligen UN_M.49-Code.
Angenommen, Ihre Standardsprache ist amerikanisches Englisch:
unqualifiedResLocale=en-US
Mit android:localeConfig
kannst du den Systemeinstellungen unterstützte Sprachen hinzufügen
Sie können Ihre App manuell einrichten, damit ihre Sprachen in den Systemeinstellungen auf Geräten mit Android 13 oder höher konfiguriert werden können. Erstellen Sie dazu eine locales_config
-XML-Datei und fügen Sie sie mithilfe des Attributs android:localeConfig
in das Manifest Ihrer App ein. Wenn die android:localeConfig
-Manifesteintragssignale weggelassen werden, sollten Nutzer die Sprache Ihrer App nicht unabhängig von ihrer Systemsprache in ihren Systemeinstellungen festlegen können.
So fügen Sie die unterstützten Sprachen Ihrer App manuell zu den Systemeinstellungen eines Nutzers hinzu:
Erstellen Sie eine Datei mit dem Namen
res/xml/locales_config.xml
und geben Sie die Sprachen Ihrer App an, einschließlich der ultimativen Fallback-Sprache Ihrer App, also der inres/values/strings.xml
angegebenen Sprache.Informationen zu den Formatanforderungen finden Sie unter Ländernamen erstellen. Eine Liste der am häufigsten verwendeten Sprachen finden Sie in der
locale_config.xml
-Beispieldatei.Formatieren Sie die Datei
locales_config.xml
beispielsweise für eine Anwendung, die die folgenden Sprachen unterstützt:- Englisch (USA) als ultimative Fallback-Sprache
- Englisch (Vereinigtes Königreich)
- Französisch
- Japanisch
- Chinesisch (vereinfacht, Macau)
- Chinesisch (traditionell, Macau)
<?xml version="1.0" encoding="utf-8"?> <locale-config xmlns:android="http://schemas.android.com/apk/res/android"> <locale android:name="en-US"/> <locale android:name="en-GB"/> <locale android:name="fr"/> <locale android:name="ja"/> <locale android:name="zh-Hans-MO"/> <locale android:name="zh-Hant-MO"/> </locale-config>
Fügen Sie im Manifest eine Zeile hinzu, die auf diese neue Datei verweist:
<manifest> ... <application ... android:localeConfig="@xml/locales_config"> </application> </manifest>
Du kannst die localeConfig
deiner App dynamisch mit LocaleManager.setOverrideLocaleConfig
aktualisieren, um die Sprachen anzupassen, die in der Liste der einzelnen Apps in den Android-Einstellungen angezeigt werden. So können Sie die Sprachliste für jede Region anpassen, A/B-Tests ausführen und aktualisierte Sprachen angeben, wenn Ihre App serverseitige Lokalisierungs-Push-Nachrichten verwendet, wie im folgenden Beispiel gezeigt:
Kotlin
//For setOverrideLocaleConfig val localeManager = applicationContext .getSystemService(LocaleManager::class.java) localeManager.overrideLocaleConfig = LocaleConfig( LocaleList.forLanguageTags("en-US,ja-JP,zh-Hans-SG") ) //For getOverrideLocaleConfig // The app calls the API to get the override LocaleConfig val overrideLocaleConfig = localeManager.overrideLocaleConfig // If the returned overrideLocaleConfig isn't equal to NULL, then the app calls the API to get the supported Locales val supportedLocales = overrideLocaleConfig.supportedLocales()
Java
//For setOverrideLocaleConfig mContext.getSystemService(LocaleManager.class).setOverrideLocaleConfig(new LocaleConfig(LocaleList.forLanguageTags("en-US,ja-JP,zh-Hans-SG"))); //For getOverrideLocaleConfig // The app calls the API to get the override LocaleConfig LocaleConfig overrideLocaleConfig = mContext.getSystemService(LocaleManager.class).getOverrideLocaleConfig(); // If the returned overrideLocaleConfig isn't equal to NULL, then the app calls the API to get the supported Locales LocaleList supportedLocales = overrideLocaleConfig.getSupportedLocales();
Darüber hinaus können IMEs jetzt LocaleManager.getApplicationLocales
verwenden, um die UI-Sprache der aktuellen App zu kennen, um die Tastatursprache wie hier gezeigt zu aktualisieren:
Kotlin
val currentAppLocales: LocaleList = applicationContext.getSystemService(LocaleManager::class.java).getApplicationLocales(appPackageName)
Java
LocaleList currentAppLocales = mContext.getSystemService(LocaleManager.class).getApplicationLocales(appPackageName);
Unterstützte Sprachen in Gradle angeben
Falls noch nicht vorhanden, geben Sie dieselben Sprachen mithilfe des Attributs resourceConfigurations
in der Datei build.gradle
Ihrer App auf Modulebene an:
android {
...
defaultConfig {
resourceConfigurations += ["en", "en-rGB", "fr", "ja", "b+zh+Hans+MO", "b+zh+Hant+MO"]
}
}
Wenn das Attribut resourceConfigurations
vorhanden ist, enthält das Build-System nur die Sprachressource im APK für die angegebenen Sprachen. Dadurch wird verhindert, dass übersetzte Strings aus anderen Bibliotheken eingebunden werden, die möglicherweise Sprachen unterstützen, die von deiner App nicht unterstützt werden. Weitere Informationen findest du unter Sprachen angeben, die von deiner Anwendung unterstützt werden.
Wie Nutzer eine App-Sprache in den Systemeinstellungen auswählen
Nutzer können ihre bevorzugte Sprache für jede App in den Systemeinstellungen auswählen. Sie können auf zwei Arten auf diese Einstellungen zugreifen:
Zugriff über die Systemeinstellungen
„Einstellungen“ > „System“ > „Sprachen und Eingabe“ > „App-Sprachen“ > (App auswählen)
Zugriff über Einstellungen in Apps
Einstellungen > Apps > (App auswählen) > Sprache
Umgang mit der In-App-Sprachauswahl
Verwenden Sie für Apps, die bereits eine In-App-Sprachauswahl haben oder eine verwenden möchten, anstelle einer benutzerdefinierten App-Logik die öffentlichen APIs, um die Einstellungen festzulegen und die bevorzugte Sprache eines Nutzers für Ihre App abzurufen. Wenn Sie die öffentlichen APIs für die In-App-Sprachauswahl verwenden, werden die Systemeinstellungen des Geräts automatisch an die Sprache angepasst, die der Nutzer über die In-App-Oberfläche auswählt.
Für die Abwärtskompatibilität mit früheren Android-Versionen empfehlen wir dringend, bei der Implementierung einer In-App-Sprachauswahl die AndroidX-Supportbibliothek zu verwenden. Sie können bei Bedarf aber auch die Framework-APIs direkt implementieren.
Implementierung mithilfe der AndroidX-Supportbibliothek
Verwenden Sie die Methoden setApplicationLocales()
und getApplicationLocales()
in Appcompat 1.6.0 oder höher. Beachten Sie, dass die abwärtskompatiblen APIs unter Android 12 (API-Level 32) und früher mit dem AppCompatActivity-Kontext funktionieren, nicht mit dem Anwendungskontext.
Um die bevorzugte Sprache eines Nutzers beispielsweise festzulegen, bitten Sie den Nutzer, in der Sprachauswahl eine Sprache auszuwählen und diesen Wert dann im System festzulegen:
Kotlin
val appLocale: LocaleListCompat = LocaleListCompat.forLanguageTags("xx-YY") // Call this on the main thread as it may require Activity.restart() AppCompatDelegate.setApplicationLocales(appLocale)
Java
LocaleListCompat appLocale = LocaleListCompat.forLanguageTags("xx-YY"); // Call this on the main thread as it may require Activity.restart() AppCompatDelegate.setApplicationLocales(appLocale);
Durch das Aufrufen von setApplicationLocales()
wird Activity
neu erstellt, es sei denn, die Anwendung verarbeitet Änderungen der Sprachkonfiguration selbst.
Verwende AppCompatDelegate.getApplicationLocales()
, um die bevorzugte Sprache des Nutzers abzurufen. Möglicherweise hat der Nutzer die Sprache für die App in den Systemeinstellungen oder in der In-App-Sprachauswahl festgelegt.
Unterstützung von Android 12 und niedriger
Zur Unterstützung von Geräten mit Android 12 (API-Level 32) und niedriger müssen Sie AndroidX anweisen, den Sprachspeicher zu verarbeiten. Dazu setzen Sie einen autoStoreLocales
-Wert im Manifesteintrag für den AppLocalesMetadataHolderService
-Dienst Ihrer App auf true
und für android:enabled
auf false
, wie im folgenden Code-Snippet gezeigt:
<application
...
<service
android:name="androidx.appcompat.app.AppLocalesMetadataHolderService"
android:enabled="false"
android:exported="false">
<meta-data
android:name="autoStoreLocales"
android:value="true" />
</service>
...
</application>
Das Festlegen eines autoStoreLocales
-Werts auf true
führt zu einem blockierenden Lesevorgang im Hauptthread und zu einem Verstoß gegen StrictMode
diskRead
und diskWrite
, wenn Sie Thread-Verstöße protokollieren. Weitere Informationen finden Sie unter AppCompatDelegate.setApplicationLocales()
.
Benutzerdefinierte Speicherbehandlung
Wenn Sie den Manifesteintrag weglassen oder autoStoreLocales
auf false
setzen, signalisieren Sie, dass Sie Ihren eigenen Speicher verwenden. In diesem Fall musst du die gespeicherten Sprachen vor onCreate
im Aktivitätslebenszyklus angeben und Aufrufe an AppCompatDelegate.setApplicationLocales()
in Android 12 (API-Level 32) oder niedriger steuern.
Wenn Ihre Anwendung einen benutzerdefinierten Sprachspeicherort hat, empfehlen wir eine einmalige Übergabe zwischen Ihrer benutzerdefinierten Sprachspeicherlösung und autoStoreLocales
, damit Nutzer Ihre Anwendung weiterhin in der von ihnen bevorzugten Sprache verwenden können. Dies gilt insbesondere dann, wenn deine App zum ersten Mal ausgeführt wird, nachdem ein Gerät auf Android 13 aktualisiert wurde. In diesem Fall können Sie bereits vorhandene, vom Nutzer angeforderte Sprachen angeben. Dazu rufen Sie die Sprachen aus Ihrem benutzerdefinierten Speicher ab und übergeben sie an AppCompatDelegate.setApplicationLocales()
.
Implementierung mit den Android Framework APIs
Wir empfehlen dringend, die AndroidX-Supportbibliothek zu verwenden, um die In-App-Sprachauswahl zu implementieren. Sie können aber auch die Methoden setApplicationLocales()
und getApplicationLocales()
im Android-Framework für Geräte mit Android 13 verwenden.
Um die bevorzugte Sprache eines Nutzers beispielsweise festzulegen, bitten Sie den Nutzer, in der Sprachauswahl eine Sprache auszuwählen und diesen Wert dann im System festzulegen:
// 1. Inside an activity, in-app language picker gets an input locale "xx-YY"
// 2. App calls the API to set its locale
mContext.getSystemService(LocaleManager.class
).setApplicationLocales(new LocaleList(Locale.forLanguageTag("xx-YY")));
// 3. The system updates the locale and restarts the app, including any configuration updates
// 4. The app is now displayed in "xx-YY" language
Ihre App kann den Wert vom System zurückerhalten, um die aktuell bevorzugte Sprache eines Nutzers zur Anzeige in der Sprachauswahl abzurufen:
// 1. App calls the API to get the preferred locale
LocaleList currentAppLocales =
mContext.getSystemService(LocaleManager.class).getApplicationLocales();
// 2. App uses the returned LocaleList to display languages to the user
Zusätzliche Best Practices
Beachten Sie die folgenden Best Practices.
Sprache beim Aufrufen eines Intents in einer anderen App berücksichtigen
Mit sprachorientierten Intents können Sie möglicherweise die Sprache angeben, in der die aufgerufene App angezeigt werden soll. Ein Beispiel hierfür ist die Funktion EXTRA_LANGUAGE
der Speech Recognition API.
Den Header „Accept-Language“ für den benutzerdefinierten Chrome-Tab verwenden
Sie können den Accept-Language-Header über Browser.EXTRA_HEADERS
hinzufügen, um beim Aufrufen eines benutzerdefinierten Chrome-Tabs eine Webseite in der Sprache Ihrer App zu öffnen.
Wenn du die Spracheinstellungen für einzelne Apps in den Systemeinstellungen entfernst, setze die App-Sprache auf die Systemsprache zurück
Wenn du die Spracheinstellungen deiner App aus den Systemeinstellungen entfernst, indem du android:localeConfig
aus dem AndroidManifest.xml
deiner App entfernst, können Nutzer die App-Sprache nicht einfach auf die Standardeinstellung des Systems zurücksetzen.
Wenn Sie android:localeConfig
entfernen, sollten Sie daher die Sprache der App auf die Systemsprache mit LocaleListCompat.getEmptyLocaleList()
oder LocaleList.getEmptyLocaleList()
zurücksetzen, wie im folgenden Code-Snippet gezeigt:
Kotlin
// Use the AndroidX APIs to reset to the system locale for backward and forward compatibility AppCompatDelegate.setApplicationLocales( LocaleListCompat.getEmptyLocaleList() ) // Or use the Framework APIs for Android 13 and above to reset to the system locale val context = LocalContext.current context.getSystemService(LocaleManager::class.java) .applicationLocales = LocaleList.getEmptyLocaleList()
Java
// Use the AndroidX APIs to reset to the system locale for backward and forward compatibility AppCompatDelegate.setApplicationLocales( LocaleListCompat.getEmptyLocaleList() ); // Or use the Framework APIs for Android 13 and above to reset to the system locale mContext.getSystemService(LocaleManager.class) .setApplicationLocales(LocaleList.getEmptyLocaleList());
Weitere Informationen
Weitere Informationen finden Sie in unseren Codebeispielen, Blogartikeln und Videos.
- Blog Per-App LanguagePreferences Part 1
- Blog Per-App LanguagePreferences Part 2
- Beispiel-Apps
- Video: Die Entwicklung einer mehrsprachigen Welt
Beispiel-Datei „local_config.xml“
Standardmäßig umfasst Android im Android Open Source Project (AOSP) Übersetzungen auf Systemebene für einen Standardsatz der am häufigsten verwendeten Sprachen.
Die in diesem Abschnitt enthaltene Beispieldatei locale_config.xml
enthält das empfohlene Format für jedes dieser Sprachen. Orientieren Sie sich an dieser Beispieldatei, um eine eigene locale_config.xml
-Datei für die Sprachen zu erstellen, die Ihre Anwendung unterstützt.
<?xml version="1.0" encoding="utf-8"?>
<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
<locale android:name="af"/> <!-- Afrikaans -->
<locale android:name="am"/> <!-- Amharic -->
<locale android:name="ar"/> <!-- Arabic -->
<locale android:name="as"/> <!-- Assamese -->
<locale android:name="az"/> <!-- Azerbaijani -->
<locale android:name="be"/> <!-- Belarusian -->
<locale android:name="bg"/> <!-- Bulgarian -->
<locale android:name="bn"/> <!-- Bengali -->
<locale android:name="bs"/> <!-- Bosnian -->
<locale android:name="ca"/> <!-- Catalan -->
<locale android:name="cs"/> <!-- Czech -->
<locale android:name="da"/> <!-- Danish -->
<locale android:name="de"/> <!-- German -->
<locale android:name="el"/> <!-- Greek -->
<locale android:name="en-AU"/> <!-- English (Australia) -->
<locale android:name="en-CA"/> <!-- English (Canada) -->
<locale android:name="en-GB"/> <!-- English (United Kingdom) -->
<locale android:name="en-IN"/> <!-- English (India) -->
<locale android:name="en-US"/> <!-- English (United States) -->
<locale android:name="es"/> <!-- Spanish (Spain) -->
<locale android:name="es-US"/> <!-- Spanish (United States) -->
<locale android:name="et"/> <!-- Estonian -->
<locale android:name="eu"/> <!-- Basque -->
<locale android:name="fa"/> <!-- Farsi -->
<locale android:name="fi"/> <!-- Finnish -->
<locale android:name="fil"/> <!-- Filipino -->
<locale android:name="fr"/> <!-- French (France) -->
<locale android:name="fr-CA"/> <!-- French (Canada) -->
<locale android:name="gl"/> <!-- Galician -->
<locale android:name="gu"/> <!-- Gujarati -->
<locale android:name="hi"/> <!-- Hindi -->
<locale android:name="hr"/> <!-- Croatian -->
<locale android:name="hu"/> <!-- Hungarian -->
<locale android:name="hy"/> <!-- Armenian -->
<locale android:name="in"/> <!-- Indonesian -->
<locale android:name="is"/> <!-- Icelandic -->
<locale android:name="it"/> <!-- Italian -->
<locale android:name="iw"/> <!-- Hebrew -->
<locale android:name="ja"/> <!-- Japanese -->
<locale android:name="ka"/> <!-- Georgian -->
<locale android:name="kk"/> <!-- Kazakh -->
<locale android:name="km"/> <!-- Khmer -->
<locale android:name="kn"/> <!-- Kannada -->
<locale android:name="ko"/> <!-- Korean -->
<locale android:name="ky"/> <!-- Kyrgyz -->
<locale android:name="lo"/> <!-- Lao -->
<locale android:name="lt"/> <!-- Lithuanian -->
<locale android:name="lv"/> <!-- Latvian -->
<locale android:name="mk"/> <!-- Macedonian -->
<locale android:name="ml"/> <!-- Malayalam -->
<locale android:name="mn"/> <!-- Mongolian -->
<locale android:name="mr"/> <!-- Marathi -->
<locale android:name="ms"/> <!-- Malay -->
<locale android:name="my"/> <!-- Burmese -->
<locale android:name="nb"/> <!-- Norwegian -->
<locale android:name="ne"/> <!-- Nepali -->
<locale android:name="nl"/> <!-- Dutch -->
<locale android:name="or"/> <!-- Odia -->
<locale android:name="pa"/> <!-- Punjabi -->
<locale android:name="pl"/> <!-- Polish -->
<locale android:name="pt-BR"/> <!-- Portuguese (Brazil) -->
<locale android:name="pt-PT"/> <!-- Portuguese (Portugal) -->
<locale android:name="ro"/> <!-- Romanian -->
<locale android:name="ru"/> <!-- Russian -->
<locale android:name="si"/> <!-- Sinhala -->
<locale android:name="sk"/> <!-- Slovak -->
<locale android:name="sl"/> <!-- Slovenian -->
<locale android:name="sq"/> <!-- Albanian -->
<locale android:name="sr"/> <!-- Serbian (Cyrillic) -->
<locale android:name="sr-Latn"/> <!-- Serbian (Latin) -->
<locale android:name="sv"/> <!-- Swedish -->
<locale android:name="sw"/> <!-- Swahili -->
<locale android:name="ta"/> <!-- Tamil -->
<locale android:name="te"/> <!-- Telugu -->
<locale android:name="th"/> <!-- Thai -->
<locale android:name="tr"/> <!-- Turkish -->
<locale android:name="uk"/> <!-- Ukrainian -->
<locale android:name="ur"/> <!-- Urdu -->
<locale android:name="uz"/> <!-- Uzbek -->
<locale android:name="vi"/> <!-- Vietnamese -->
<locale android:name="zh-Hans"/> <!-- Chinese (Simplified) -->
<locale android:name="zh-Hant"/> <!-- Chinese (Traditional) -->
<locale android:name="zu"/> <!-- Zulu -->
</locale-config>