Uygulamaya özgü dil tercihleri

Sistem ayarlarındaki uygulamaya özel diller

Çok dilli kullanıcılar çoğu durumda sistem dillerini İngilizce gibi tek bir dile ayarlar, ancak belirli uygulamalar için Felemenkçe, Çince veya Hintçe gibi başka diller de seçmek isterler. Android 13, uygulamaların bu kullanıcılara daha iyi bir deneyim sunmasına yardımcı olmak için birden fazla dili destekleyen uygulamalarda aşağıdaki özellikleri kullanıma sunuyor:

  • Sistem ayarları: Kullanıcıların her uygulama için tercih ettiği dili seçebileceği merkezi bir konumdur.

    Uygulamanızı, uygulamaya özgü dil tercihlerini desteklemek için gereken dosyaları otomatik olarak oluşturacak ve sistem ayarlarında görünecek şekilde yapılandırabilirsiniz. Daha fazla bilgi edinmek için uygulama başına otomatik dil desteğini etkinleştirme talimatlarına bakın.

  • Ek API'ler: LocaleManager ürünündeki setApplicationLocales() ve getApplicationLocales() yöntemleri gibi herkese açık bu API'ler, uygulamaların çalışma zamanında sistem dilinden farklı bir dil ayarlamasına olanak tanır.

    Bu API'ler sistem ayarlarıyla otomatik olarak senkronize edilir. Bu sayede, özel uygulama içi dil seçiciler oluşturmak için bu API'leri kullanan uygulamalar, dil tercihlerinin seçiminden bağımsız olarak kullanıcılarına tutarlı bir kullanıcı deneyimi sunar. Herkese açık API'ler, standart kod miktarını azaltmanıza yardımcı olur, bölünmüş APK'ları ve uygulama düzeyinde kullanıcı dili ayarlarını depolamak için Uygulamalar için Otomatik Yedekleme'yi destekler.

    Önceki Android sürümleriyle geriye dönük uyumluluk için AndroidX'te de eşdeğer API'ler mevcuttur. Bununla birlikte, geriye dönük uyumlu API'ler Android 12 (API düzeyi 32) ve önceki sürümlerde uygulama bağlamıyla değil, AppCompatActivity bağlamıyla çalışır. Appcompat 1.6.0 veya sonraki sürümlerle geriye dönük uyumlu API'lere erişin.

Bu özelliğin uygulanmasına genel bakış

Aşağıdaki tabloda, farklı kullanım durumlarına göre önerilen uygulamalar gösterilmektedir.

Kullanım alanı Önerilen uygulama
Uygulamanızda uygulama içi dil seçici yok
  1. LocaleConfig dosyası oluşturmak ve uygulamanızın dillerini sistem ayarlarına eklemek için uygulama başına otomatik dil desteğini etkinleştirin.
  2. İsteğe bağlı olarak, uygulama içi dil seçici eklemek isterseniz AndroidX kitaplığını kullanın ve autoStoreLocales aracılığıyla geriye dönük uyumluluğu desteklemek için API uygulamamızı etkinleştirin.
Uygulamanızda zaten bir uygulama içi dil seçici var
  1. LocaleConfig dosyası oluşturmak ve uygulamanızın dillerini sistem ayarlarına eklemek için uygulama başına otomatik dil desteğini etkinleştirin.
  2. Kullanıcıların tutarlı bir deneyim yaşamasını sağlamak için uygulamanızın özel mantığını herkese açık API'leri kullanacak şekilde taşıyın.
  3. Aşağıdaki köşe vakalarını ele alın:
    1. Uygulamanız Android 13 çalıştıran bir cihazda ilk kez çalıştırıldığında AppCompatDelegate.setApplicationLocales() numaralı telefonu arayın.
    2. Aşağıdaki durumlarda sisteme önceden kullanıcı tarafından istenen yerel ayarları sağlamak üzere AppCompatDelegate.setApplicationLocales() çağrısı yapın:

Kullanıcılar için sistem ayarları

Android 13'ten itibaren Android, uygulamaya özgü dil tercihlerini ayarlamak için sistem ayarlarında merkezi bir konum içerir. Uygulamanızın dillerinin, Android 13 veya sonraki sürümleri çalıştıran cihazlarda sistem ayarlarında yapılandırılabilir olmasını sağlamak için uygulama başına otomatik dil desteğini etkinleştirin (önerilir) veya desteği manuel olarak yapılandırın.

Uygulama başına otomatik dil desteğini etkinleştir

Uygulamanızı, Android Studio Giraffe ve AGP 8.1'den başlayarak, uygulamaya özel dil tercihlerini otomatik olarak destekleyecek şekilde yapılandırabilirsiniz. AGP, proje kaynaklarınıza bağlı olarak LocaleConfig dosyasını oluşturur ve nihai manifest dosyasına bir referans ekler. Böylece artık bunu manuel olarak yapmanız gerekmez. AGP, LocaleConfig dosyasına dahil edilecek yerel ayarları belirlemek için uygulama modüllerinizin res klasörlerindeki kaynakları ve tüm kitaplık modülü bağımlılıklarını kullanır. Yani, uygulamanıza yeni bir dil için kaynaklar eklerseniz LocaleConfig dosyasını güncelleme konusunda endişelenmenize gerek kalmaz.

Uygulamaya özgü otomatik dil özelliğinin, Android 13 (API düzeyi 33) veya sonraki sürümleri çalıştıran uygulamaları desteklediğini unutmayın. Bu özelliği kullanmak için compileSdkVersion değerini 33 veya daha yüksek bir değere ayarlamanız gerekir. Android'in önceki sürümlerine ilişkin uygulamaya özgü dil tercihlerini yapılandırmak için yine de API'leri ve uygulama içi dil seçicileri kullanmanız gerekir.

Uygulama başına otomatik dil desteğini etkinleştirmek için şu adımları izleyin:

  1. Bu özelliği etkinleştirmek için modül düzeyindeki build.gradle.kts dosyasının androidResources {} bloğundaki generateLocaleConfig ayarını kullanın (Groovy kullanıyorsanız build.gradle dosyası). Bu özellik varsayılan olarak devre dışıdır.

    Kotlin

        android {
          androidResources {
            generateLocaleConfig = true
          }
        }
        

    Modern

        android {
          androidResources {
            generateLocaleConfig true
          }
        }
        
  2. Varsayılan bir yerel ayar belirtin:
    1. Uygulama modülünün res klasöründe resources.properties adlı yeni bir dosya oluşturun.
    2. resources.properties dosyasında, varsayılan yerel ayarı unqualifiedResLocale etiketiyle belirleyin. Yerel adları biçimlendirmek için Yerel ayar adları nasıl oluşturulur? bölümüne göz atın.

AGP, bu varsayılan yerel ayarı ve res klasöründeki values-* dizinlerini kullanarak belirttiğiniz tüm alternatif yerel ayarları otomatik oluşturulan LocaleConfig dosyasına ekler.

Yerel adlar nasıl oluşturulur?

Yerel ayar adları oluşturmak için dil kodunu isteğe bağlı komut dosyası ve bölge kodlarıyla birleştirerek her birini kısa çizgiyle ayırın:

  • Dil: İki veya üç harfli ISO 639-1 kodunu kullanın.
  • Metin (isteğe bağlı): ISO 15924 kodunu kullanın.
  • Bölge (isteğe bağlı): İki harfli ISO 3166-1-alpha-2 kodunu veya üç haneli UN_M.49 kodunu kullanın.

Örneğin, varsayılan yerel ayarınız Amerikan İngilizcesi ise:

unqualifiedResLocale=en-US

Desteklenen dilleri sistem ayarlarına eklemek için android:localeConfig kodunu kullanın

Android 13 veya sonraki sürümleri çalıştıran cihazlardaki sistem ayarlarında dillerinin yapılandırılabilir olmasını sağlamak için uygulamanızı manuel olarak ayarlayabilirsiniz. Bunu yapmak için bir locales_config XML dosyası oluşturun ve android:localeConfig özelliğini kullanarak bu dosyayı uygulamanızın manifest dosyasına ekleyin. android:localeConfig manifest girişinin atlanması, kullanıcıların sistem ayarlarındaki sistem dillerinden bağımsız olarak uygulamanızın dilini ayarlayabilmeleri gerektiğini belirtir.

Uygulamanızın desteklediği dilleri bir kullanıcının sistem ayarlarına manuel olarak eklemek için:

  1. res/xml/locales_config.xml adlı bir dosya oluşturun ve res/values/strings.xml içinde belirtilen yerel ayar olan son yedek yerel ayar da dahil olmak üzere uygulamanızın dillerini belirtin.

    Biçim şartları için Yerel ad oluşturma bölümüne bakın. En sık kullanılan yerel ayarların listesi için sample locale_config.xmlfile'a da bakın.

    Örneğin, locales_config.xml dosyasını aşağıdaki dilleri destekleyen bir uygulama için şu şekilde biçimlendirin:

    • Son yedek dil olarak İngilizce (ABD)
    • İngilizce (BK)
    • Fransızca
    • Japonca
    • Çince (Basitleştirilmiş, Makau)
    • Çince (Geleneksel, 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>
    
  2. Manifest'te, bu yeni dosyayı işaret eden bir satır ekleyin:

    <manifest>
        ...
        <application
            ...
            android:localeConfig="@xml/locales_config">
        </application>
    </manifest>
    

Android Ayarları'ndan, uygulamaya özgü dil listesinde görüntülenen dil grubunu özelleştirmek için uygulamanızın localeConfig dilini LocaleManager.setOverrideLocaleConfig ile dinamik olarak güncelleyebilirsiniz. Bu, aşağıdaki örnekte gösterildiği gibi, uygulamanız sunucu tarafı yerelleştirme aktarmaları kullanıyorsa bölge bazında dil listesini özelleştirmenize, A/B denemeleri çalıştırmanıza ve güncellenmiş yerel ayarlar sağlamanıza olanak tanır:

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();

Ayrıca IME'ler, aşağıda gösterildiği gibi klavye dilini güncellemek amacıyla mevcut uygulamanın kullanıcı arayüzü dilini öğrenmek için artık LocaleManager.getApplicationLocales'i kullanabilir:

Kotlin

val currentAppLocales: LocaleList = applicationContext.getSystemService(LocaleManager::class.java).getApplicationLocales(appPackageName)

Java

LocaleList currentAppLocales =
    mContext.getSystemService(LocaleManager.class).getApplicationLocales(appPackageName);

Gradle'da desteklenen dilleri belirtme

Henüz yoksa uygulamanızın modül düzeyindeki build.gradle dosyasında resourceConfigurations özelliğini kullanarak aynı dilleri belirtin:

android {
  ...
  defaultConfig {
    resourceConfigurations += ["en", "en-rGB", "fr", "ja", "b+zh+Hans+MO", "b+zh+Hant+MO"]
  }
}

resourceConfigurations özelliği mevcut olduğunda, derleme sistemi APK'daki dil kaynağını yalnızca belirtilen bu diller için dahil eder. Böylece uygulamanızın desteklemediği dilleri destekleyebilecek diğer kitaplıklardan çevrilen dizelerin dahil edilmesini engeller. Daha fazla bilgi için uygulamanızın desteklediği dilleri belirtme bölümüne bakın.

Kullanıcılar sistem ayarlarında uygulama dilini nasıl seçer?

Kullanıcılar, sistem ayarları üzerinden her uygulama için tercih ettikleri dili seçebilir. Bu ayarlara iki farklı şekilde erişebilirler:

  • Sistem ayarları üzerinden erişim

    Ayarlar > Sistem > Diller ve Giriş > Uygulama Dilleri > (bir uygulama seçin)

  • Uygulama ayarları üzerinden erişim

    Ayarlar > Uygulamalar > (bir uygulama seçin) > Dil

Uygulama içi dil seçicileri işleme

Uygulama içi dil seçici bulunan veya kullanmak isteyen uygulamalarda, ayarları yapmak ve kullanıcıların tercih ettiği dili almak için özel uygulama mantığı yerine herkese açık API'leri kullanın. Uygulama içi dil seçicide herkese açık API'leri kullanırsanız cihazın sistem ayarları, kullanıcının uygulama içi deneyiminizde seçtiği dile uyacak şekilde otomatik olarak güncellenir.

Önceki Android sürümleriyle geriye dönük uyumluluk için, bir uygulama içi dil seçici uygularken AndroidX destek kitaplığının kullanılmasını önemle tavsiye ederiz. Ancak gerekirse çerçeve API'lerini doğrudan da uygulayabilirsiniz.

AndroidX destek kitaplığını kullanarak uygulama

Appcompat 1.6.0 veya sonraki sürümlerde setApplicationLocales() ve getApplicationLocales() yöntemlerini kullanın. Geriye dönük uyumlu API'lerin, Android 12 (API düzeyi 32) ve önceki sürümlerde uygulama bağlamıyla değil, AppCompatActivity içeriğiyle çalıştığını unutmayın.

Örneğin, kullanıcının tercih ettiği dili ayarlamak için kullanıcıdan dil seçicide bir yerel ayar seçmesini ve ardından bu değeri sistemde ayarlamasını istersiniz:

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);

Uygulamanız yerel ayar değişikliklerini kendi başına işlemediği sürece setApplicationLocales() çağrısının Activity öğenizi yeniden oluşturduğunu unutmayın.

Kullanıcının tercih ettiği yerel ayarı almak için AppCompatDelegate.getApplicationLocales() kodunu kullanın. Kullanıcı, sistem ayarlarından veya uygulama içi dil seçicinizden uygulama yerel ayarını seçmiş olabilir.

Android 12 ve önceki sürümleri destekler

Android 12 (API düzeyi 32) ve önceki sürümleri çalıştıran cihazları desteklemek için AndroidX'e aşağıdaki kod snippet'inde gösterildiği gibi uygulamanızın AppLocalesMetadataHolderService hizmetiyle ilgili manifest girişinde autoStoreLocales değerini true ve android:enabled olarak belirleyerek false değerine ayarlayarak AndroidX'e yerel depolamayı işlemesini söyleyin:

<application
  ...
  <service
    android:name="androidx.appcompat.app.AppLocalesMetadataHolderService"
    android:enabled="false"
    android:exported="false">
    <meta-data
      android:name="autoStoreLocales"
      android:value="true" />
  </service>
  ...
</application>

autoStoreLocales değerinin true olarak ayarlanmasının, ana iş parçacığında engelleme okumasına neden olabileceğini ve iş parçacığı ihlallerini günlüğe kaydediyorsanız StrictMode diskRead ve diskWrite ihlaline neden olabileceğini unutmayın. Daha fazla bilgi için AppCompatDelegate.setApplicationLocales() sayfasını inceleyin.

Özel depolama alanı işleme

Manifest girişinin atlanması veya autoStoreLocales değerinin false olarak ayarlanması, kendi depolama alanınızı yönettiğinizi gösterir. Bu durumda, depolanan yerel ayarları etkinlik yaşam döngüsünde onCreate tarihinden önce sağlamanız ve Android 12 (API düzeyi 32) veya önceki sürümlerde AppCompatDelegate.setApplicationLocales() için kapı çağrıları sağlamanız gerekir.

Uygulamanız özel bir yerel ayar depolama konumuna sahipse özel yerel depolama çözümünüz ile autoStoreLocales arasında tek seferlik bir aktarım yapmanızı öneririz. Böylece kullanıcılar, uygulamanızı tercih ettikleri dilde kullanmaya devam edebilirler. Bu, özellikle uygulamanızın, cihaz Android 13'e yükseltildikten sonra ilk kez çalıştırıldığı durumlarda geçerlidir. Bu durumda, özel depolama alanınızdaki yerel ayarları alarak ve yerel ayarları AppCompatDelegate.setApplicationLocales() öğesine ileterek önceden var olan, kullanıcı tarafından istenen yerel ayarları sağlayabilirsiniz.

Android çerçeve API'lerini kullanarak uygulama

Uygulama içi dil seçicileri uygulamak için AndroidX destek kitaplığını kullanmanızı önemle tavsiye ederiz. Bununla birlikte, Android 13 çalıştıran cihazlar için Android çerçevesinde setApplicationLocales() ve getApplicationLocales() yöntemlerini de kullanabilirsiniz.

Örneğin, kullanıcının tercih ettiği dili ayarlamak için kullanıcıdan dil seçicide bir yerel ayar seçmesini ve ardından bu değeri sistemde ayarlamasını istersiniz:

// 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

Kullanıcının dil seçicide görüntülemek üzere tercih ettiği mevcut dili almak için uygulamanız, değeri sistemden geri alabilir:

// 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

Diğer en iyi uygulamalar

Aşağıdaki en iyi uygulamaları göz önünde bulundurun.

Başka bir uygulamada bir intent çağırırken dili göz önünde bulundurun

Dil odaklı amaçlar, çağrılan uygulamanın olmasını istediğiniz dili belirtmenize olanak sağlayabilir. Buna örnek olarak Speech Recognizer API'deki EXTRA_LANGUAGE özelliği verilebilir.

Chrome Özel sekmesi için Accept-Language üstbilgisini dikkate alma

Bir Chrome Özel sekmesini çağırırken web sayfasını uygulamanızın dilinde açmak için Browser.EXTRA_HEADERS üzerinden Kabul-Dil Üstbilgisi eklemeyi düşünün.

Sistem ayarlarından uygulamaya özgü dil tercihlerini kaldırırsanız uygulamanızın yerel ayarını sistem yerel ayarına sıfırlayın

Uygulamanızın dil tercihlerini sistem ayarlarından kaldırırsanız (uygulamanızın AndroidManifest.xml öğesinden android:localeConfig öğesini kaldırarak) kullanıcılar uygulama dillerini kolayca sistem varsayılanına geri döndüremezler.

Bu nedenle, android:localeConfig öğesini kaldırırsanız aşağıdaki kod snippet'inde gösterildiği gibi LocaleListCompat.getEmptyLocaleList() veya LocaleList.getEmptyLocaleList() kullanarak uygulama yerel ayarını sistem yerel ayarına sıfırlamayı düşünün:

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());

Ek kaynaklar

Ek bilgi için kod örneklerimize, blog makalelerimize ve videolarımıza bakın.

Örnek locale_config.xml dosyası

Android, en yaygın şekilde kullanılan standart bir grup yerel ayar için Android Açık Kaynak Projesi'ne (AOSP) varsayılan olarak sistem düzeyinde çeviriler ekler. Bu bölümde yer alan örnek locale_config.xml dosyası, bu yerel ayarların her biri için önerilen biçimi gösterir. Uygulamanızın desteklediği dil grubu için kendi locale_config.xml dosyanızı oluşturmanıza yardımcı olması için bu örnek dosyaya bakın.

<?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="en-XA"/> <!-- English (Pseudo-Accents) -->
   <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="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="my-MM"/> <!-- Burmese (Myanmar) -->
   <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="tl"/> <!-- Filipino -->
   <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-CN"/> <!-- Chinese (Simplified) -->
   <locale android:name="zh-HK"/> <!-- Chinese (Hong Kong) -->
   <locale android:name="zh-TW"/> <!-- Chinese (Traditional) -->
   <locale android:name="zu"/> <!-- Zulu -->
</locale-config>