हर ऐप्लिकेशन के हिसाब से पसंद की भाषा

सिस्टम सेटिंग में, हर ऐप्लिकेशन के लिए अलग-अलग भाषाएं इस्तेमाल करने की सुविधा

कई मामलों में, एक से ज़्यादा भाषाएं जानने वाले उपयोगकर्ता अपने सिस्टम की भाषा को एक भाषा पर सेट करते हैं—जैसे जैसे कि अंग्रेज़ी—लेकिन वे विशिष्ट ऐप्लिकेशन के लिए अन्य भाषाएं चुनना चाहते हैं, जैसे कि डच, चाइनीज़ या हिन्दी. इन सेवाओं का बेहतर अनुभव देने में ऐप्लिकेशन की मदद करने के लिए Android 13 में, उन ऐप्लिकेशन के लिए ये सुविधाएं मिलती हैं जो Android 13 में एकाधिक भाषाएं:

  • सिस्टम सेटिंग: एक ऐसी जगह जिसे उपयोगकर्ता एक ही जगह पर चुन सकते हैं हर ऐप्लिकेशन के लिए पसंदीदा भाषा सेट की जा सकती है.

    ऐप्लिकेशन को इस तरह कॉन्फ़िगर किया जा सकता है कि वह अपने-आप जनरेट हो सके हर ऐप्लिकेशन के लिए पसंदीदा भाषा की सेटिंग का इस्तेमाल करती हैं और सिस्टम सेटिंग में दिखती हैं. यहां की यात्रा पर हूं ज़्यादा जानकारी के लिए, हर ऐप्लिकेशन के लिए अपने-आप भाषा चुनने की सुविधा चालू करना.

  • अतिरिक्त एपीआई: ये सार्वजनिक एपीआई, जैसे कि setApplicationLocales() और getApplicationLocales() LocaleManager में तरीके आज़माएं, ऐप्लिकेशन को रनटाइम के दौरान सिस्टम की भाषा से अलग कोई भाषा सेट करें.

    ये एपीआई, सिस्टम की सेटिंग के साथ अपने-आप सिंक हो जाते हैं; इसलिए, वे ऐप्लिकेशन जो इन एपीआई की मदद से, अपनी पसंद के मुताबिक इन-ऐप्लिकेशन भाषा पिकर बनाएं चाहे वे किसी भी प्लैटफ़ॉर्म पर हों, उन्हें एक जैसा उपयोगकर्ता अनुभव मिलता हो पसंदीदा भाषा चुनें. सार्वजनिक एपीआई, आपको यह काम करने में मदद करते हैं कि बॉयलरप्लेट कोड के साथ काम करता है, वे स्प्लिट APK का समर्थन करते हैं और वे ऐप्लिकेशन में उपयोगकर्ता की भाषा सेव करने के लिए ऐप्लिकेशन सेटिंग.

    Android के पिछले वर्शन के साथ काम करने की सुविधा के लिए, मिलते-जुलते एपीआई AndroidX में भी उपलब्ध हैं. हालांकि, पुराने सिस्टम के साथ काम करने वाले एपीआई काम करते हैं Android 12 के लिए, ऐप्लिकेशन के कॉन्टेक्स्ट के बजाय AppCompatActivity कॉन्टेक्स्ट के साथ (एपीआई लेवल 32) और इससे पहले के वर्शन. पुराने सिस्टम के साथ काम करने वाले एपीआई को इसके साथ ऐक्सेस करें Appcompat 1.6.0 या उससे ज़्यादा.

इस सुविधा को लागू करने के बारे में खास जानकारी

इस टेबल में, अलग-अलग इस्तेमाल के हिसाब से, टैग लागू करने के सुझाव दिए गए हैं मामले.

इस्तेमाल का उदाहरण लागू करने के सुझाव
आपके ऐप्लिकेशन में भाषा चुनने की सुविधा मौजूद नहीं है
  1. हर ऐप्लिकेशन के लिए अपने-आप भाषा की सुविधा चालू करें, ताकि LocaleConfig फ़ाइल और अपने ऐप्लिकेशन की भाषाएं सिस्टम में जोड़ें सेटिंग.
  2. इसके अलावा, अगर आपको इन-ऐप्लिकेशन लैंग्वेज पिकर जोड़ना है, तो: AndroidX लाइब्रेरी पर जाएं और हमारी पुराने सिस्टम के साथ काम करने के लिए एपीआई को लागू करना autoStoreLocales तक काम करता है.
आपके ऐप्लिकेशन में, भाषा चुनने की सुविधा पहले से मौजूद है
  1. हर ऐप्लिकेशन के लिए अपने-आप भाषा की सुविधा चालू करें, ताकि LocaleConfig फ़ाइल और अपने ऐप्लिकेशन की भाषाएं सिस्टम में जोड़ें सेटिंग.
  2. इस एपीआई का इस्तेमाल करने के लिए, अपने ऐप्लिकेशन के कस्टम लॉजिक को माइग्रेट करें सार्वजनिक एपीआई का इस्तेमाल कर सकें, ताकि यह पक्का किया जा सके कि उपयोगकर्ताओं को एक जैसा अनुभव मिलेगा.
  3. कोने के इन केस को हैंडल करें:
    1. AppCompatDelegate.setApplicationLocales() को जब आपका ऐप्लिकेशन Android 13 वर्शन वाले डिवाइस पर पहली बार चलाया जा रहा हो.
    2. AppCompatDelegate.setApplicationLocales() को इस नंबर पर कॉल करें के लिए सिस्टम पर पहले से मौजूद उपयोगकर्ता-अनुरोधित स्थान उपलब्ध कराएँ ये मामले:

उपयोगकर्ताओं के लिए सिस्टम सेटिंग

Android 13 की शुरुआत से, Android 13 में एक ही जगह से सभी काम करने की सुविधा मिलेगी हर ऐप्लिकेशन के लिए भाषा की प्राथमिकताएं सेट करने की सेटिंग. यह पक्का करने के लिए कि आपके ऐप्लिकेशन का Android 13 या इसके बाद के वर्शन वाले डिवाइसों पर, सिस्टम सेटिंग में भाषाओं को कॉन्फ़िगर किया जा सकता है बाद के लिए, हर ऐप्लिकेशन के लिए अपने-आप भाषा सहायता पाने की सुविधा चालू करें (सुझाया गया) या कॉन्फ़िगर करें मैन्युअल रूप से समर्थन करें.

हर ऐप्लिकेशन के लिए अपने-आप काम करने वाली भाषा की सुविधा चालू करें

Android Studio जिराफ़ और AGP 8.1 के बाद, अपने ऐप्लिकेशन को हर ऐप्लिकेशन के लिए चुनी गई भाषा के हिसाब से काम करता हो प्राथमिकताएं स्वचालित रूप से. आपके प्रोजेक्ट के संसाधनों के आधार पर, AGP LocaleConfig जनरेट करता है फ़ाइल और अंतिम मेनिफ़ेस्ट फ़ाइल में इसमें एक संदर्भ जोड़ देता है, ताकि आप अब आपको यह काम मैन्युअल तरीके से करना होगा. AGP, आपके ऐप्लिकेशन के res फ़ोल्डर में मौजूद संसाधनों का इस्तेमाल करता है मॉड्यूल और किसी लाइब्रेरी मॉड्यूल डिपेंडेंसी के ज़रिए, यह तय किया जा सकता है कि किन स्थान-भाषा को शामिल करना है LocaleConfig फ़ाइल में. इसका मतलब है कि अगर आप किसी नए तो आपको LocaleConfig को अपडेट करने के बारे में चिंता करने की ज़रूरत नहीं है फ़ाइल से लिए जाते हैं.

ध्यान दें कि हर ऐप्लिकेशन में अपने-आप काम करने वाली भाषा की सुविधा, Android पर चलने वाले ऐप्लिकेशन के साथ काम करती है 13 (एपीआई लेवल 33) या उसके बाद के वर्शन. इस सुविधा का इस्तेमाल करने के लिए, आपको compileSdkVersion से 33 या उससे ज़्यादा. हर ऐप्लिकेशन के हिसाब से, पसंद की भाषा कॉन्फ़िगर करने के लिए Android के पिछले वर्शन के लिए, आपको अब भी एपीआई और इन-ऐप्लिकेशन लैंग्वेज पिकर का इस्तेमाल करना.

हर ऐप्लिकेशन के लिए अपने-आप काम करने वाली भाषा की सुविधा चालू करने के लिए, यह तरीका अपनाएं:

  1. इस सुविधा को चालू करने के लिए, generateLocaleConfig का इस्तेमाल करें मॉड्यूल-लेवल के androidResources {} ब्लॉक में सेटिंग build.gradle.kts फ़ाइल (build.gradle फ़ाइल, अगर आप का इस्तेमाल किया जा सकता है. यह सुविधा डिफ़ॉल्ट रूप से बंद होती है.

    Kotlin

        android {
          androidResources {
            generateLocaleConfig = true
          }
        }
        

    ग्रूवी

        android {
          androidResources {
            generateLocaleConfig true
          }
        }
        
  2. डिफ़ॉल्ट स्थान-भाषा तय करें:
    1. ऐप्लिकेशन मॉड्यूल के res फ़ोल्डर में, इस नाम की नई फ़ाइल बनाएं resources.properties.
    2. resources.properties फ़ाइल में, डिफ़ॉल्ट फ़ाइल टाइप सेट करें unqualifiedResLocale लेबल वाली स्थान-भाषा. फ़ॉर्मैट करने के लिए स्थान-भाषा के नाम के लिए, स्थान-भाषा के नाम बनाने का तरीका देखें.

AGP इस डिफ़ॉल्ट स्थान-भाषा को और किसी अन्य स्थानीय भाषा आपने res फ़ोल्डर में values-* डायरेक्ट्री का इस्तेमाल करके, अपने-आप जनरेट हुई LocaleConfig फ़ाइल.

स्थानीय भाषा में नाम लिखने का तरीका

स्थान-भाषा का नाम बनाने के लिए, भाषा कोड को वैकल्पिक स्क्रिप्ट के साथ जोड़ें और क्षेत्र कोड, हर एक को डैश से अलग करते हुए:

  • भाषा: दो- या तीन-अक्षर का उपयोग करें आईएसओ 639-1 कोड.
  • स्क्रिप्ट (वैकल्पिक): अपने कीवर्ड ISO 15924 कोड.
  • इलाका (ज़रूरी नहीं): दो अक्षरों में से किसी एक का इस्तेमाल करें आईएसओ 3166-1-ऐल्फ़ा-2 कोड या तीन अंकों वाला UN_M.49 कोड.

उदाहरण के लिए, अगर आपकी डिफ़ॉल्ट स्थान-भाषा अमेरिकन इंग्लिश है, तो:

unqualifiedResLocale=en-US

android:localeConfig का इस्तेमाल करके, सिस्टम की सेटिंग में काम करने वाली भाषाएं जोड़ें

अपने ऐप्लिकेशन को मैन्युअल तरीके से सेट अप करके, यह पक्का किया जा सकता है कि ऐप्लिकेशन की भाषाएं कॉन्फ़िगर की जा सकती हैं या नहीं Android 13 या इसके बाद के वर्शन वाले डिवाइसों पर सिस्टम की सेटिंग. ऐसा करने के लिए, locales_config एक्सएमएल फ़ाइल को डाउनलोड करेगा और android:localeConfig एट्रिब्यूट की वैल्यू सबमिट करें. android:localeConfig मेनिफ़ेस्ट को छोड़ा जा रहा है ऐसे एंट्री सिग्नल जिनसे लोगों को ऐप्लिकेशन की भाषा सेट नहीं करनी चाहिए और सिस्टम की भाषा से अलग हो.

उपयोगकर्ता की सिस्टम सेटिंग में, अपने ऐप्लिकेशन पर इस्तेमाल की जा सकने वाली भाषाओं को मैन्युअल तरीके से जोड़ने के लिए:

  1. res/xml/locales_config.xml नाम की फ़ाइल बनाएं और अपने ऐप्लिकेशन के बारे में बताएं भाषाएं, जिनमें आपके ऐप्लिकेशन की भाषाएं शामिल हैं अल्टिमेट फ़ॉलबैक स्थान, जो res/values/strings.xml में बताई गई स्थान-भाषा है.

    फ़ॉर्मैट की ज़रूरी शर्तों के बारे में जानने के लिए, स्थानीय भाषा में नाम बनाने का तरीका लेख पढ़ें. यहां दी गई सूची की सूची के लिए, सैंपल locale_config.xmlफ़ाइल भी देखें सबसे ज़्यादा इस्तेमाल होने वाली स्थान-भाषाएँ हैं.

    उदाहरण के लिए, जिस ऐप्लिकेशन के लिए locales_config.xml फ़ाइल को फ़ॉर्मैट करना है उसे इस तरह से फ़ॉर्मैट करें इन भाषाओं में काम करता है:

    • फ़ॉलबैक स्थान के तौर पर अंग्रेज़ी (अमेरिका)
    • अंग्रेज़ी (यूनाइटेड किंगडम)
    • फ़्रेंच
    • जैपनीज़
    • चाइनीज़ (सिंप्लिफ़ाइड, मकाओ)
    • चाइनीज़ (ट्रेडिशनल, मकाओ)
    <?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>
        ...
        <application
            ...
            android:localeConfig="@xml/locales_config">
        </application>
    </manifest>
    

आप डाइनैमिक रूप से अपने ऐप्लिकेशन के localeConfig को अपडेट कर सकते हैं: भाषाओं के सेट को पसंद के मुताबिक बनाने के लिए LocaleManager.setOverrideLocaleConfig Android सेटिंग में हर ऐप्लिकेशन के लिए भाषा सूची में दिखेगा. इससे आपको क्षेत्र के हिसाब से भाषा की सूची अपनी पसंद के मुताबिक बनाना, A/B एक्सपेरिमेंट चलाना, और अपडेट किए गए नतीजे उपलब्ध कराना स्थान-भाषाएँ, अगर आपका ऐप्लिकेशन, सर्वर-साइड लोकलाइज़ेशन पुश का इस्तेमाल करता है, जैसा कि यहां दिखाया गया है नीचे दिया गया उदाहरण:

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

इसके अलावा, IME अब इस्तेमाल कर सकते हैं LocaleManager.getApplicationLocales मौजूदा ऐप्लिकेशन की यूज़र इंटरफ़ेस (यूआई) भाषा जानने के लिए, ताकि कीबोर्ड भाषा को दिखाया गया:

Kotlin

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

Java

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

Gradle में इस्तेमाल की जा सकने वाली भाषाएं चुनें

अगर पहले से मौजूद नहीं है, तो resourceConfigurations प्रॉपर्टी के लिए:build.gradle

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

resourceConfigurations प्रॉपर्टी मौजूद होने पर, बिल्ड सिस्टम में सिर्फ़ APK में इन बताई गई भाषाओं के लिए भाषा संसाधन है, जो अनूदित स्ट्रिंग को ऐसी अन्य लाइब्रेरी से शामिल किए जाने से रोकें, जो ऐसी भाषाएं जो आपके ऐप्लिकेशन पर काम नहीं करतीं. ज़्यादा जानकारी के लिए, यह देखें उन भाषाओं के बारे में बताएं जो आपके ऐप्लिकेशन में काम करती हैं.

उपयोगकर्ता, सिस्टम की सेटिंग में किसी ऐप्लिकेशन की भाषा कैसे चुनते हैं

उपयोगकर्ता, सिस्टम की मदद से हर ऐप्लिकेशन के लिए अपनी पसंदीदा भाषा चुन सकते हैं सेटिंग. वे इन सेटिंग को दो अलग-अलग तरीकों से ऐक्सेस कर सकते हैं:

  • सिस्टम सेटिंग से ऐक्सेस करें

    सेटिंग > सिस्टम > भाषाएं और इनपुट > ऐप्लिकेशन की भाषाएं > (कोई ऐप्लिकेशन चुनें)

  • ऐप्लिकेशन सेटिंग की मदद से ऐक्सेस करें

    सेटिंग > ऐप्लिकेशन > (कोई ऐप्लिकेशन चुनें) > भाषा

इन-ऐप्लिकेशन भाषा चुनने की सुविधा को मैनेज करना

जिन ऐप्लिकेशन में पहले से ही भाषा चुनने की सुविधा मौजूद है या जिनका इस्तेमाल करना है उनके लिए, सेटिंग मैनेज करने और उपयोगकर्ता की जानकारी पाने के लिए, कस्टम ऐप्लिकेशन लॉजिक के बजाय सार्वजनिक एपीआई आपके ऐप्लिकेशन की पसंदीदा भाषा. अगर आपके इन-ऐप्लिकेशन के लिए सार्वजनिक एपीआई इस्तेमाल किए जाते हैं भाषा चुनने की सुविधा, डिवाइस की सिस्टम सेटिंग अपने-आप ऐप्लिकेशन में उपयोगकर्ता की चुनी गई किसी भी भाषा से मेल खाती हो.

हमारा सुझाव है कि Android के पुराने वर्शन पर पुराने सिस्टम के साथ काम करने की सुविधा के लिए, हमारा सुझाव है कि AndroidX की सहायता लाइब्रेरी का इस्तेमाल करके, इन-ऐप्लिकेशन भाषा पिकर का इस्तेमाल किया जा सकता है. हालांकि, फ़्रेमवर्क एपीआई को सीधे तौर पर भी लागू किया जा सकता है .

AndroidX की सहायता लाइब्रेरी का इस्तेमाल करके लागू करना

setApplicationLocales() और getApplicationLocales() का इस्तेमाल करें Appcompat 1.6.0 में तरीके या उससे ज़्यादा. ध्यान दें कि पुराने सिस्टम के साथ काम करने वाले एपीआई, AppCompatActivity कॉन्टेक्स्ट के साथ काम करते हैं, Android 12 (एपीआई लेवल 32) और उससे पहले के वर्शन के लिए, ऐप्लिकेशन का कॉन्टेक्स्ट नहीं है.

उदाहरण के लिए, किसी व्यक्ति की पसंदीदा भाषा सेट करने के लिए, आपको उपयोगकर्ता से भाषा चुनने की सुविधा से स्थान-भाषा चुनें. इसके बाद, सिस्टम में वह वैल्यू सेट करें:

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

ध्यान दें कि setApplicationLocales() को कॉल करने पर, आपके Activity को तब तक फिर से बनाया जाएगा, जब तक कि आपका ऐप्लिकेशन स्थान-भाषा कॉन्फ़िगरेशन को मैनेज करता है अपने-आप बदल जाता है.

उपयोगकर्ता की पसंदीदा स्थान-भाषा को वापस पाने के लिए, AppCompatDelegate.getApplicationLocales() का इस्तेमाल करें. ऐसा हो सकता है कि उपयोगकर्ता ने सिस्टम सेटिंग या आपके इन-ऐप्लिकेशन लैंग्वेज पिकर से अपने ऐप्लिकेशन की स्थान-भाषा को चुना हो.

Android 12 और इससे पहले के वर्शन पर काम करता है

Android 12 (एपीआई लेवल 32) और इससे पहले के वर्शन वाले डिवाइसों पर काम करने के लिए, autoStoreLocales मान को इस पर सेट करके स्थानीय मेमोरी प्रबंधित करने के लिए AndroidX आपके ऐप्लिकेशन की मेनिफ़ेस्ट एंट्री में true और android:enabled से false तक की AppLocalesMetadataHolderService सेवा, जैसा कि इस कोड में दिखाया गया है snippet:

<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 वैल्यू को true पर सेट करने से, रीड ब्लॉक हो जाता है भेजा है और इसकी वजह से StrictMode diskRead और लॉग थ्रेड उल्लंघन करने पर, diskWrite उल्लंघन. यहां जाएं: AppCompatDelegate.setApplicationLocales() हमारा वीडियो देखें.

पसंद के मुताबिक स्टोरेज मैनेज करना

मेनिफ़ेस्ट एंट्री को छोड़ना या autoStoreLocales को false सिग्नल पर सेट करना कि आप अपना स्टोरेज खुद मैनेज कर रहे हैं. इस स्थिति में, आपको गतिविधि के लाइफ़साइकल और गेट कॉल में onCreate से पहले सेव की गई स्थान-भाषाएं Android 12 (एपीआई लेवल 32) में AppCompatDelegate.setApplicationLocales() या कम.

अगर आपके ऐप्लिकेशन में पसंद के मुताबिक स्थान-भाषा को सेव करने की जगह है, तो हमारा सुझाव है कि आप एक बार का स्टोरेज इस्तेमाल करें अपने कस्टम स्थान-भाषा स्टोरेज समाधान को autoStoreLocales के बीच ट्रांसफ़र करें, ताकि उपयोगकर्ता अपनी पसंद की भाषा में आपके ऐप्लिकेशन का आनंद लेते रहेंगे. यह खास तौर पर तब लागू होता है, जब डिवाइस के अपग्रेड हो जाने के बाद, आपका ऐप्लिकेशन पहली बार चलाया जाता है Android 13. इस स्थिति में, आप पहले से मौजूद, उपयोगकर्ता-अनुरोध की गई स्थान-भाषाएं उपलब्ध करा सकते हैं अपने कस्टम मेमोरी से स्थान-भाषाएँ हासिल करके और उन्हें पास करके AppCompatDelegate.setApplicationLocales().

Android फ़्रेमवर्क के एपीआई का इस्तेमाल करके लागू करना

हमारा सुझाव है कि आप इन कामों के लिए AndroidX की सहायता लाइब्रेरी का इस्तेमाल करें इन-ऐप भाषा पिकर लागू करें, आप setApplicationLocales() और getApplicationLocales() Android 13 वर्शन वाले डिवाइसों के लिए, Android फ़्रेमवर्क में बताए गए तरीकों का इस्तेमाल करता है.

उदाहरण के लिए, किसी व्यक्ति की पसंदीदा भाषा सेट करने के लिए, आपको उपयोगकर्ता से भाषा चुनने की सुविधा से स्थान-भाषा चुनें. इसके बाद, सिस्टम में वह वैल्यू सेट करें:

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

उपयोगकर्ता की मौजूदा पसंदीदा भाषा को भाषा चुनने की सुविधा में दिखाने के लिए, तो आपके ऐप्लिकेशन को सिस्टम से वैल्यू वापस मिल सकती है:

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

सबसे सही अन्य तरीके

इन सबसे सही तरीकों पर ध्यान दें.

किसी दूसरे ऐप्लिकेशन में इंटेंट का अनुरोध करते समय भाषा का इस्तेमाल करें

भाषा पर आधारित इंटेंट से, आपको वह भाषा तय करने की सुविधा मिल सकती है जिसमें आपको को शामिल करना ज़रूरी है. इसका एक उदाहरण है: EXTRA_LANGUAGE की सुविधा का इस्तेमाल करके तय किया जा सकता है.

Chrome के कस्टम टैब के लिए 'स्वीकार करें-भाषा' हेडर का इस्तेमाल करें

स्वीकार-भाषा का हेडर जोड़ें Browser.EXTRA_HEADERS तक का इस्तेमाल करें.

अगर सिस्टम की सेटिंग में, हर ऐप्लिकेशन के लिए भाषा की प्राथमिकताओं को हटाया जाता है, तो अपने ऐप्लिकेशन की स्थान-भाषा को सिस्टम की स्थान-भाषा पर रीसेट करें

अगर आप अपने ऐप्लिकेशन की भाषा प्राथमिकताओं को सिस्टम सेटिंग से हटाते हैं (ऐसा करने के लिए, आपके ऐप्लिकेशन के AndroidManifest.xml से android:localeConfig), उपयोगकर्ता ये काम नहीं कर सकते उनके ऐप्लिकेशन की भाषा को आसानी से वापस सिस्टम की डिफ़ॉल्ट भाषा पर रीसेट कर सकता है.

इस कारण से, अगर आप android:localeConfig को निकाल देते हैं, तो ऐप्लिकेशन की स्थान-भाषा को सिस्टम की स्थान-भाषा का इस्तेमाल करना LocaleListCompat.getEmptyLocaleList() या LocaleList.getEmptyLocaleList() जैसा कि नीचे दिए गए कोड स्निपेट में दिखाया गया है:

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

अन्य संसाधन

ज़्यादा जानकारी के लिए, हमारे कोड सैंपल, ब्लॉग लेख, और वीडियो देखें.

local_config.xml फ़ाइल का नमूना

डिफ़ॉल्ट रूप से, Android में Android Open में सिस्टम-लेवल के अनुवाद शामिल होते हैं सबसे ज़्यादा इस्तेमाल होने वाली जगहों के स्टैंडर्ड सेट के लिए सोर्स प्रोजेक्ट (AOSP). इस सेक्शन में शामिल की गई सैंपल locale_config.xml फ़ाइल में, के फ़ॉर्मैट का सुझाव देते हैं. मदद के लिए इस सैंपल फ़ाइल का रेफ़रंस दें आप उस भाषा समूह के लिए अपनी locale_config.xml फ़ाइल बनाते हैं जिसे जो आपके ऐप्लिकेशन में काम करते हैं.

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