![](https://developer.android.com/static/images/about/versions/13/app-languages.png?authuser=6&hl=id)
Dalam banyak kasus, pengguna multibahasa menyetel bahasa sistemnya ke satu bahasa, seperti bahasa Inggris, tetapi mereka ingin memilih bahasa lain untuk aplikasi tertentu, seperti Belanda, China, atau Hindi. Untuk membantu aplikasi memberikan pengalaman yang lebih baik bagi pengguna ini, Android 13 memperkenalkan fitur berikut untuk aplikasi yang mendukung beberapa bahasa:
Setelan sistem: Lokasi terpusat tempat pengguna dapat memilih bahasa pilihan untuk setiap aplikasi.
Anda dapat mengonfigurasi aplikasi agar otomatis menghasilkan file yang diperlukan untuk mendukung preferensi bahasa per aplikasi dan muncul di setelan sistem. Untuk mempelajari lebih lanjut, lihat petunjuk untuk mengaktifkan dukungan bahasa per aplikasi otomatis.
API tambahan: API publik ini, seperti metode
setApplicationLocales()
dangetApplicationLocales()
diLocaleManager
, memungkinkan aplikasi untuk menyetel bahasa yang berbeda dari bahasa sistem saat runtime.API ini otomatis disinkronkan dengan setelan sistem; oleh karena itu, aplikasi yang menggunakan API ini untuk membuat pemilih bahasa kustom dalam aplikasi akan memastikan penggunanya memiliki pengalaman pengguna yang konsisten di mana pun mereka memilih preferensi bahasa mereka. API publik ini tidak hanya membantu Anda mengurangi jumlah kode boilerplate, tetapi juga mendukung APK terpisah dan Pencadangan Otomatis untuk Aplikasi guna menyimpan setelan bahasa pengguna tingkat aplikasi.
Untuk kompatibilitas mundur dengan versi Android sebelumnya, API setara juga tersedia di AndroidX. Namun, API yang kompatibel dengan versi lama berfungsi dengan konteks AppCompatActivity, bukan konteks aplikasi, untuk Android 12 (level API 32) dan yang lebih lama. Akses API yang kompatibel dengan versi lama dengan Appcompat 1.6.0 atau versi lebih tinggi.
Ringkasan penerapan fitur ini
Tabel berikut menunjukkan penerapan yang direkomendasikan berdasarkan kasus penggunaan yang berbeda.
Kasus penggunaan | Penerapan yang direkomendasikan |
---|---|
Aplikasi Anda tidak memiliki pemilih bahasa dalam aplikasi |
|
Aplikasi Anda sudah memiliki pemilih bahasa dalam aplikasi |
|
Setelan sistem untuk pengguna
Mulai Android 13, Android menyertakan lokasi terpusat dalam setelan sistem untuk menyetel preferensi bahasa per aplikasi. Untuk memastikan bahasa aplikasi dapat dikonfigurasi di setelan sistem di perangkat yang menjalankan Android 13 atau yang lebih baru, aktifkan dukungan bahasa per aplikasi otomatis (direkomendasikan) atau konfigurasi dukungan secara manual.
Mengaktifkan dukungan bahasa per aplikasi otomatis
Mulai dari Android Studio Giraffe dan AGP 8.1, Anda dapat mengonfigurasi aplikasi untuk
mendukung preferensi bahasa
per aplikasi
secara otomatis. Berdasarkan resource project Anda, AGP menghasilkan file LocaleConfig
dan menambahkan referensi ke file tersebut dalam file manifes akhir, sehingga Anda tidak perlu
lagi melakukannya secara manual. AGP menggunakan resource dalam folder res
modul aplikasi Anda
dan dependensi modul library apa pun untuk menentukan lokalitas yang akan disertakan dalam
file LocaleConfig
. Artinya, jika Anda menambahkan resource untuk
bahasa baru ke aplikasi, Anda tidak perlu mengupdate file
LocaleConfig
.
Perhatikan bahwa fitur bahasa per aplikasi otomatis mendukung aplikasi yang menjalankan Android
13 (level API 33) atau yang lebih baru. Untuk menggunakan fitur ini, Anda harus menetapkan
compileSdkVersion
ke versi 33 atau lebih tinggi. Untuk mengonfigurasi preferensi bahasa per aplikasi
untuk Android versi sebelumnya, Anda masih harus
menggunakan API dan pemilih bahasa dalam aplikasi.
Untuk mengaktifkan dukungan bahasa per aplikasi otomatis, ikuti langkah-langkah berikut:
- Untuk mengaktifkan fitur ini, gunakan setelan
generateLocaleConfig
dalam blokandroidResources {}
filebuild.gradle.kts
level modul (filebuild.gradle
jika Anda menggunakan Groovy). Fitur ini dinonaktifkan secara default.Kotlin
android { androidResources { generateLocaleConfig = true } }
Groovy
android { androidResources { generateLocaleConfig true } }
- Tentukan lokalitas default:
- Dalam folder
res
modul aplikasi, buat file baru bernamaresources.properties
. Dalam file
resources.properties
, tetapkan lokalitas default dengan labelunqualifiedResLocale
. Untuk memformat nama lokalitas, lihat Cara membentuk nama lokalitas.
- Dalam folder
AGP menambahkan lokalitas default ini dan
lokalitas alternatif
yang telah Anda tentukan, menggunakan direktori values-*
dalam folder res
, ke
file LocaleConfig
yang dibuat secara otomatis.
Cara membentuk nama lokalitas
Untuk membentuk nama lokalitas, gabungkan kode bahasa dengan skrip opsional dan kode wilayah, yang memisahkan keduanya dengan tanda hubung:
- Bahasa: Gunakan kode ISO 639-1 dua atau tiga huruf.
- Skrip (opsional): Gunakan kode ISO 15924.
- Wilayah (opsional): Gunakan kode ISO 3166-1-alpha-2 dua huruf atau kode UN_M.49 tiga huruf.
Misalnya, jika lokalitas default Anda adalah bahasa Inggris Amerika:
unqualifiedResLocale=en-US
Menggunakan android:localeConfig
untuk menambahkan bahasa yang didukung ke setelan sistem
Anda dapat menyiapkan aplikasi secara manual untuk memastikan bahasanya dapat dikonfigurasi di
setelan sistem di perangkat yang menjalankan Android 13 atau yang lebih baru. Untuk melakukannya, buat
file XML locales_config
dan tambahkan file ke manifes aplikasi Anda menggunakan
atribut android:localeConfig
. Menghapus entri manifes android:localeConfig
menandakan bahwa pengguna tidak seharusnya dapat menyetel
bahasa aplikasi Anda, apa pun bahasa sistem mereka dalam setelan sistem.
Untuk menambahkan bahasa yang didukung aplikasi Anda ke setelan sistem pengguna secara manual:
Buat file bernama
res/xml/locales_config.xml
dan tentukan bahasa aplikasi Anda, termasuk lokalitas penggantian akhir aplikasi, yang merupakan lokalitas yang ditentukan dalamres/values/strings.xml
.Lihat Cara membentuk nama lokalitas untuk persyaratan format. Lihat juga contoh file
locale_config.xml
untuk mengetahui daftar lokalitas yang umum digunakan.Misalnya, format file
locales_config.xml
seperti ini untuk aplikasi yang mendukung bahasa berikut:- Inggris (Amerika Serikat) sebagai lokalitas pengganti akhir
- Inggris (Inggris Raya)
- Prancis
- Jepang
- Bahasa China (Aksara Sederhana, Makau)
- Bahasa China (Aksara Tradisional, Makau)
<?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>
Di manifes, tambahkan baris yang menunjuk file baru ini:
<manifest> ... <application ... android:localeConfig="@xml/locales_config"> </application> </manifest>
Anda dapat memperbarui localeConfig
aplikasi secara dinamis dengan
LocaleManager.setOverrideLocaleConfig
untuk menyesuaikan kumpulan bahasa
yang ditampilkan dalam daftar bahasa per aplikasi di Setelan Android. Hal ini memungkinkan Anda
menyesuaikan daftar bahasa per wilayah, menjalankan eksperimen A/B, dan menyediakan lokal
yang diupdate jika aplikasi Anda menggunakan push pelokalan sisi server seperti yang ditunjukkan dalam
contoh berikut:
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();
Selain itu, IME kini dapat menggunakan
LocaleManager.getApplicationLocales
untuk mengetahui bahasa UI aplikasi saat ini guna mengupdate bahasa keyboard seperti
yang ditunjukkan:
Kotlin
val currentAppLocales: LocaleList = applicationContext.getSystemService(LocaleManager::class.java).getApplicationLocales(appPackageName)
Java
LocaleList currentAppLocales = mContext.getSystemService(LocaleManager.class).getApplicationLocales(appPackageName);
Menentukan bahasa yang didukung di Gradle
Jika belum ada, tentukan bahasa yang sama menggunakan properti
resourceConfigurations
dalam file build.gradle
level modul aplikasi Anda:
android {
...
defaultConfig {
resourceConfigurations += ["en", "en-rGB", "fr", "ja", "b+zh+Hans+MO", "b+zh+Hant+MO"]
}
}
Jika properti resourceConfigurations
ada, sistem build hanya akan menyertakan
resource bahasa dalam APK untuk bahasa yang ditentukan tersebut, sehingga string terjemahan tidak disertakan
dari library lain yang mungkin mendukung
bahasa yang tidak didukung aplikasi Anda. Untuk informasi selengkapnya, lihat
menentukan bahasa yang didukung aplikasi.
Cara pengguna memilih bahasa aplikasi di setelan sistem
Pengguna dapat memilih bahasa pilihan mereka untuk setiap aplikasi melalui setelan sistem. Pengguna dapat mengakses setelan ini dengan dua cara berbeda:
Akses melalui setelan Sistem
Setelan > Sistem > Bahasa & Input > Bahasa Aplikasi > (pilih aplikasi)
Akses melalui setelan Aplikasi
Setelan > Aplikasi > (pilih aplikasi) > Bahasa
Menangani pemilih bahasa dalam aplikasi
Untuk aplikasi yang telah memiliki pemilih bahasa dalam aplikasi atau ingin menggunakannya, gunakan API publik, bukan logika aplikasi khusus, untuk menangani setelan dan mendapatkan bahasa pilihan pengguna untuk aplikasi Anda. Jika Anda menggunakan API publik untuk pemilih bahasa dalam aplikasi, setelan sistem perangkat akan otomatis diperbarui agar cocok dengan bahasa yang dipilih pengguna melalui pengalaman dalam aplikasi Anda.
Untuk kompatibilitas mundur dengan versi Android sebelumnya, sebaiknya gunakan support library AndroidX saat menerapkan pemilih bahasa dalam aplikasi. Namun, Anda juga dapat menerapkan API framework secara langsung jika perlu.
Implementasi menggunakan support library AndroidX
Gunakan metode setApplicationLocales()
dan getApplicationLocales()
di Appcompat 1.6.0
atau versi yang lebih baru. Perhatikan bahwa API yang kompatibel dengan versi lama berfungsi dengan konteks AppCompatActivity,
bukan konteks aplikasi, untuk Android 12 (level API 32) dan yang lebih lama.
Misalnya, untuk menyetel bahasa pilihan pengguna, Anda akan meminta pengguna memilih lokalitas dalam pemilih bahasa, lalu menyetel nilai tersebut dalam sistem:
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);
Perhatikan bahwa memanggil setApplicationLocales()
akan membuat ulang Activity
, kecuali jika
aplikasi Anda menangani perubahan konfigurasi
lokalitas dengan sendirinya.
Gunakan AppCompatDelegate.getApplicationLocales()
untuk mengambil lokalitas pilihan pengguna. Pengguna mungkin telah memilih lokalitas aplikasi mereka dari setelan sistem atau dari pemilih bahasa dalam aplikasi.
Mendukung Android 12 dan versi lebih lama
Untuk mendukung perangkat yang menjalankan Android 12 (level API 32) dan versi lebih lama, beri tahu
AndroidX untuk menangani penyimpanan lokalitas dengan menyetel nilai
autoStoreLocales
ke true
dan android:enabled
ke false
dalam entri manifes untuk layanan
AppLocalesMetadataHolderService
aplikasi Anda, seperti yang ditunjukkan dalam cuplikan
kode berikut:
<application
...
<service
android:name="androidx.appcompat.app.AppLocalesMetadataHolderService"
android:enabled="false"
android:exported="false">
<meta-data
android:name="autoStoreLocales"
android:value="true" />
</service>
...
</application>
Perhatikan bahwa menyetel nilai autoStoreLocales
ke true
akan menyebabkan pembacaan blocking
di thread utama dan dapat menyebabkan pelanggaran
StrictMode
diskRead
dan
diskWrite
jika Anda melakukan logging pada pelanggaran thread. Lihat
AppCompatDelegate.setApplicationLocales()
untuk mengetahui informasi selengkapnya.
Penanganan penyimpanan kustom
Menghapus entri manifes atau menetapkan autoStoreLocales
ke false
menandakan bahwa Anda menangani penyimpanan Anda sendiri. Dalam hal ini, Anda harus menyediakan
lokalitas yang disimpan sebelum onCreate
dalam siklus proses aktivitas dan panggilan gate ke
AppCompatDelegate.setApplicationLocales()
di Android 12 (level API 32) atau
versi lebih rendah.
Jika aplikasi Anda memiliki lokasi penyimpanan lokalitas khusus, sebaiknya gunakan pengalihan satu kali
antara solusi penyimpanan lokalitas khusus dan autoStoreLocales
sehingga
pengguna dapat terus menikmati aplikasi Anda dalam bahasa yang mereka inginkan. Hal ini terutama
berlaku jika aplikasi Anda pertama kali dijalankan setelah perangkat diupgrade ke
Android 13. Dalam hal ini, Anda dapat memberikan lokalitas yang diminta oleh pengguna yang sudah ada sebelumnya
dengan mengambil lokalitas dari penyimpanan khusus Anda dan meneruskan lokalitas ke
AppCompatDelegate.setApplicationLocales()
.
Implementasi menggunakan API framework Android
Meskipun kami sangat menyarankan Anda menggunakan support library AndroidX untuk
menerapkan pemilih bahasa dalam aplikasi, Anda juga dapat menggunakan metode
setApplicationLocales()
dan getApplicationLocales()
dalam framework Android untuk perangkat yang menjalankan Android 13.
Misalnya, untuk menyetel bahasa pilihan pengguna, Anda akan meminta pengguna memilih lokalitas dalam pemilih bahasa, lalu menyetel nilai tersebut dalam sistem:
// 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
Agar bahasa pilihan pengguna saat ini ditampilkan di pemilih bahasa, aplikasi Anda dapat memperoleh kembali nilai dari sistem:
// 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
Praktik terbaik tambahan
Perhatikan praktik terbaik berikut.
Mempertimbangkan bahasa saat memanggil intent di aplikasi lain
Intent yang berfokus pada bahasa dapat memungkinkan Anda menentukan bahasa yang
ingin digunakan oleh aplikasi yang dipanggil. Salah satu contohnya adalah fitur
EXTRA_LANGUAGE
dari Speech Recognizer API.
Mempertimbangkan header Accept-Language untuk Tab khusus Chrome
Pertimbangkan untuk menambahkan Header Accept-Language
melalui Browser.EXTRA_HEADERS
untuk membuka halaman web dalam bahasa aplikasi Anda saat memanggil Tab khusus Chrome.
Jika Anda menghapus preferensi bahasa per aplikasi dalam setelan sistem, reset lokalitas aplikasi Anda ke lokalitas sistem
Jika Anda menghapus preferensi bahasa aplikasi dari setelan sistem (dengan menghapus
android:localeConfig
dari AndroidManifest.xml
aplikasi Anda), pengguna tidak akan dapat
mereset bahasa aplikasinya dengan mudah kembali ke default sistem.
Oleh karena itu, jika Anda menghapus android:localeConfig
, pertimbangkan untuk mereset
lokalitas aplikasi ke lokalitas sistem menggunakan
LocaleListCompat.getEmptyLocaleList()
atau
LocaleList.getEmptyLocaleList()
seperti yang terlihat dalam cuplikan kode berikut:
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());
Referensi tambahan
Lihat contoh kode, artikel blog, dan video kami untuk informasi tambahan.
- Blog Preferensi Bahasa Per Aplikasi Bagian 1
- Blog Preferensi Bahasa Per Aplikasi Bagian 2
- Aplikasi contoh
- Video Mem-build untuk dunia multibahasa
Contoh file locale_config.xml
Secara default, Android menyertakan terjemahan tingkat sistem di Proyek Open
Source Android (AOSP) untuk sekumpulan standar lokalitas yang paling sering digunakan.
Contoh file locale_config.xml
yang disertakan di bagian ini menampilkan
format yang disarankan untuk setiap lokalitas ini. Rujuk file contoh ini untuk membantu
Anda membuat file locale_config.xml
sendiri untuk sekumpulan bahasa yang
didukung aplikasi Anda.
<?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>