Android कई इलाकों में कई डिवाइसों पर काम करता है. ज़्यादा से ज़्यादा उपयोगकर्ताओं तक पहुंचने के लिए, पक्का करें कि यह ऐप्लिकेशन, टेक्स्ट, ऑडियो फ़ाइलों, संख्याओं, मुद्रा, और ग्राफ़िक को आपके ऐप्लिकेशन का इस्तेमाल जिन स्थान-भाषाओं में किया जाता है उनके लिए सही तरीके शामिल करना.
इस पेज पर, Android को स्थानीय भाषा के मुताबिक बनाने के सबसे सही तरीकों के बारे में बताया गया है दिखाई देता है.
आपके पास Kotlin या Java प्रोग्रामिंग में काम करने की जानकारी होनी चाहिए और भाषा से जुड़े हों Android रिसॉर्स लोड हो रहे हैं, एक्सएमएल में यूज़र इंटरफ़ेस एलिमेंट का एलान करना, आने वाले समय में कई चीज़ों पर ध्यान देना, जैसे कि गतिविधि का लाइफ़साइकल, और स्थानीय भाषा के मुताबिक बनाने के सामान्य सिद्धांत शामिल हैं.
अलग-अलग पहलुओं को फ़िल्टर करने के लिए, Android रिसॉर्स फ़्रेमवर्क का इस्तेमाल करना आपके ऐप्लिकेशन के मुख्य फ़ंक्शन से ज़्यादा से ज़्यादा स्थानीय भाषा में बदलाव किए जा सकें.
- अपने ऐप्लिकेशन के यूज़र इंटरफ़ेस का ज़्यादातर या सभी कॉन्टेंट संसाधन फ़ाइलें, जैसा कि इस पेज पर और ऐप्लिकेशन के संसाधनों के बारे में खास जानकारी.
- वहीं दूसरी ओर, यूज़र इंटरफ़ेस का व्यवहार इस आधार पर तय होता है कि आपके Kotlin-आधारित या Java-आधारित कोड के हिसाब से. उदाहरण के लिए, अगर उपयोगकर्ता अपनी ज़रूरत के हिसाब से कोई डेटा को स्थान-भाषा के हिसाब से अलग-अलग फ़ॉर्मैट या क्रम से लगाया जा सकता है, तो Kotlin या प्रोग्राम के हिसाब से डेटा को मैनेज करने के लिए Java प्रोग्रामिंग भाषा. इस पेज का काम नहीं करना इसमें Kotlin-आधारित या Java-आधारित कोड को लोकलाइज़ करने का तरीका बताया गया है.
अपने ऐप्लिकेशन में स्ट्रिंग को स्थानीय भाषा में लिखने के बारे में जानकारी देने वाली गाइड देखने के लिए, यह देखें अलग-अलग भाषाओं में काम करते हैं और संस्कृतियां.
खास जानकारी: Android में संसाधन स्विच करना
रिसॉर्स में टेक्स्ट स्ट्रिंग, लेआउट, साउंड, ग्राफ़िक्स, और अन्य स्टैटिक एलिमेंट शामिल हैं जिसकी ज़रूरत आपके Android ऐप्लिकेशन को होती है. एक ऐप्लिकेशन में कई सारे संसाधनों का सेट, जिसमें से हर एक को एक अलग डिवाइस कॉन्फ़िगरेशन के लिए कस्टमाइज़ किया गया है. जब जब लोग ऐप्लिकेशन चलाते हैं, तो Android अपने-आप संसाधनों को चुनता है और उन्हें लोड करता है जो डिवाइस के साथ सबसे बेहतर मेल खाते हों.
इस पेज का फ़ोकस, स्थानीय भाषा के मुताबिक और जगह के हिसाब से है. पूरी जानकारी के लिए और ऐसे सभी कॉन्फ़िगरेशन उपलब्ध कराए जा सकते हैं जिनसे जैसे स्क्रीन ओरिएंटेशन या टचस्क्रीन टाइप उपलब्ध कराएं वैकल्पिक संसाधन शामिल करें.
ऐप्लिकेशन लिखते समय, डिफ़ॉल्ट और वैकल्पिक संसाधन बनाए जाते हैं
आपके ऐप्लिकेशन को इस्तेमाल करने के लिए. जब उपयोगकर्ता आपका ऐप्लिकेशन इस्तेमाल करते हैं, तो Android सिस्टम
इस नीति से, डिवाइस की स्थान-भाषा के हिसाब से लोड किए जाने वाले संसाधनों को चुना जाता है.
संसाधन बनाने के लिए, आप फ़ाइलों को
प्रोजेक्ट की res/
डायरेक्ट्री की खास नाम वाली सबडायरेक्ट्री.
डिफ़ॉल्ट संसाधन अहम क्यों हैं
जब ऐप्लिकेशन आपकी नहीं दी गई किसी भी स्थान-भाषा में काम करता है
स्थान-भाषा के हिसाब से टेक्स्ट के लिए, Android इनसे डिफ़ॉल्ट स्ट्रिंग लोड करता है
res/values/strings.xml
. अगर यह डिफ़ॉल्ट फ़ाइल मौजूद नहीं है या
अगर कोई स्ट्रिंग मौजूद नहीं है, तो आपका ऐप्लिकेशन नहीं चलता है
और एक गड़बड़ी दिखाता है. यह उदाहरण दिखाता है कि
डिफ़ॉल्ट टेक्स्ट फ़ाइल अधूरी है.
उदाहरण:
किसी ऐप्लिकेशन का Kotlin-आधारित या Java पर आधारित कोड सिर्फ़ दो स्ट्रिंग, text_a
से संबंधित होता है
और text_b
. ऐप्लिकेशन में, स्थानीय जगह के मुताबिक संसाधन फ़ाइल मौजूद होती है
(res/values-en/strings.xml
) है जो text_a
और
text_b
अंग्रेज़ी में है. ऐप्लिकेशन में, डिफ़ॉल्ट
ऐसी संसाधन फ़ाइल (res/values/strings.xml
) जिसमें
text_a
के लिए परिभाषा है, लेकिन text_b
के लिए नहीं.
- जब इस ऐप्लिकेशन को किसी ऐसे डिवाइस पर लॉन्च किया जाता है जिसकी स्थान-भाषा को अंग्रेज़ी पर सेट किया गया हो,
ऐप्लिकेशन बिना किसी समस्या के चल सकता है. इसकी वजह यह है कि
res/values-en/strings.xml
में दोनों ज़रूरी टेक्स्ट शामिल हैं स्ट्रिंग. - हालांकि, जब इस ऐप्लिकेशन को किसी ऐसे डिवाइस पर लॉन्च किया जाता है जो अंग्रेज़ी के अलावा कोई अन्य भाषा इस्तेमाल करने पर, उपयोगकर्ता को गड़बड़ी का मैसेज दिखता है. इसके बाद, 'फ़ोर्स बंद करें' बटन दिखता है बटन. ऐप्लिकेशन लोड न हो पाना.
इस स्थिति से बचने के लिए पक्का करें कि res/values/strings.xml
फ़ाइल मौजूद है और यह हर ज़रूरी स्ट्रिंग के बारे में बताती है. यह स्थिति इन पर लागू होती है:
स्ट्रिंग ही नहीं, बल्कि सभी तरह के संसाधन: आपको डिफ़ॉल्ट
ऐसी संसाधन फ़ाइलें जिनमें आपके ऐप्लिकेशन से जुड़े सभी संसाधन मौजूद होते हैं,
जैसे कि लेआउट, ड्रॉएबल या ऐनिमेशन. जांच के बारे में जानने के लिए, यहां जाएं:
डिफ़ॉल्ट संसाधनों की जांच करना सेक्शन.
स्थानीय भाषा के मुताबिक बनाने के लिए संसाधनों का इस्तेमाल करें
इस सेक्शन में, डिफ़ॉल्ट संसाधनों के साथ-साथ वैकल्पिक संसाधन बनाने के तरीके के बारे में बताया गया है. यह इस बात की भी जानकारी देता है कि संसाधनों को प्राथमिकता कैसे दी जाती है और आपकी संसाधन भी नहीं जोड़े जा सकते.
डिफ़ॉल्ट संसाधन बनाएं
ऐप्लिकेशन का डिफ़ॉल्ट टेक्स्ट res/values/strings.xml
में रखें. इन स्ट्रिंग के लिए,
डिफ़ॉल्ट भाषा—वह भाषा जिसका आप ज़्यादातर
के उपयोगकर्ताओं को सूचित कर सकता है.
डिफ़ॉल्ट संसाधन सेट में सभी डिफ़ॉल्ट ड्रॉबल और लेआउट भी शामिल होते हैं और इसमें दूसरी तरह के संसाधन भी शामिल हो सकते हैं, जैसे कि ऐनिमेशन. ये संसाधन नीचे दी गई डायरेक्ट्री में जाएं:
res/drawable/
: कम से कम ज़रूरी डायरेक्ट्री में एक ग्राफ़िक फ़ाइल, Google Play पर ऐप्लिकेशन के आइकॉन के लिएres/layout/
: एक्सएमएल होल्ड करने के लिए ज़रूरी डायरेक्ट्री डिफ़ॉल्ट लेआउट को परिभाषित करने वाली फ़ाइलres/anim/
: ज़रूरी है, अगर आपके पास कोई होres/anim-<qualifiers>
फ़ोल्डरres/xml/
: ज़रूरी है, अगर आपके पास कोई होres/xml-<qualifiers>
फ़ोल्डरres/raw/
: ज़रूरी है, अगर आपके पास कोई होres/raw-<qualifiers>
फ़ोल्डर
सलाह: अपने कोड में, Android संसाधन. पक्का करें कि हर एक के लिए एक डिफ़ॉल्ट संसाधन तय किया गया है. यह भी पक्का करें कि डिफ़ॉल्ट स्ट्रिंग फ़ाइल पूरी हो: स्थानीय जगह के अनुसार स्ट्रिंग फ़ाइल में स्ट्रिंग का एक सबसेट हो सकता है, लेकिन डिफ़ॉल्ट स्ट्रिंग फ़ाइल में वे सभी शामिल होने चाहिए.
वैकल्पिक संसाधन बनाएं
किसी ऐप्लिकेशन को स्थानीय भाषा में लिखने का एक बड़ा हिस्सा अलग-अलग भाषाओं में ब्राउज़ कर सकते हैं. कुछ मामलों में, आपके पास वैकल्पिक ग्राफ़िक, साउंड, लेआउट, और स्थान-भाषा के हिसाब से बनाए गए अन्य संसाधन.
कोई ऐप्लिकेशन, कई res/<qualifiers>/
तय कर सकता है
डायरेक्ट्री, हर एक अलग-अलग क्वालीफ़ायर के साथ. के लिए एक वैकल्पिक संसाधन बनाने के लिए
कोई अन्य स्थान-भाषा है, तो आप ऐसे क्वालीफ़ायर का इस्तेमाल करते हैं जो किसी भाषा या
अलग-अलग भाषाओं और इलाकों का मिला-जुला रूप. रिसॉर्स डायरेक्ट्री का नाम,
में बताई गई नामकरण स्कीम के अनुसार
उपलब्ध कराएं
वैकल्पिक संसाधन इस्तेमाल किए जा सकते हैं. इसके अलावा, ऐसा भी हो सकता है कि आपके ऐप्लिकेशन को कंपाइल नहीं किया जा सके.
उदाहरण:
मान लीजिए कि आपके ऐप्लिकेशन की डिफ़ॉल्ट भाषा अंग्रेज़ी है और वह
आपको अपने ऐप्लिकेशन के सारे टेक्स्ट को फ़्रेंच में और सभी स्थानीय भाषाओं में करना है
ऐप्लिकेशन के शीर्षक को छोड़कर, नीचे दिए गए टेक्स्ट में
जैपनीज़. इस मामले में, आपको तीन strings.xml
बनाने होंगे
फ़ाइलें, जिनमें से हर एक स्थानीय खास रिसॉर्स डायरेक्ट्री में स्टोर की गई है:
res/values/strings.xml
इसमें, ऐप्लिकेशन में इस्तेमाल की जाने वाली सभी स्ट्रिंग के लिए अंग्रेज़ी टेक्स्ट होता है,title
नाम की स्ट्रिंग के लिए टेक्स्ट सहित.res/values-fr/strings.xml
title
के साथ-साथ सभी स्ट्रिंग के लिए फ़्रेंच टेक्स्ट शामिल होना चाहिए.res/values-ja/strings.xml
सिर्फ़ सभी स्ट्रिंग के लिए जैपनीज़ टेक्स्ट शामिल होtitle
.
अगर आपका Kotlin-आधारित या Java-आधारित कोड R.string.title
को रेफ़र करता है, तो यहां बताया गया है कि
रनटाइम के दौरान होता है:
- अगर डिवाइस को फ़्रेंच के अलावा किसी दूसरी भाषा पर सेट किया जाता है, तो Android
res/values/strings.xml
फ़ाइल सेtitle
. - अगर डिवाइस को फ़्रेंच पर सेट किया गया है, तो Android,
title
res/values-fr/strings.xml
फ़ाइल.
अगर डिवाइस को जैपनीज़ पर सेट किया गया है, तो Android
res/values-ja/strings.xml
फ़ाइल में title
. लेकिन
उस फ़ाइल में ऐसी कोई स्ट्रिंग शामिल नहीं की जाती है, इसलिए Android
डिफ़ॉल्ट रूप से लोड होती है और title
को
res/values/strings.xml
फ़ाइल.
किन संसाधनों को प्राथमिकता दी जाती है?
अगर एक से ज़्यादा रिसॉर्स फ़ाइलें किसी डिवाइस के कॉन्फ़िगरेशन से मेल खाती हैं, तो Android नियमों का सेट शामिल करता है. उन क्वालिफ़ायर में से जिन्हें किसी रिसॉर्स डायरेक्ट्री के नाम में बताया गया है, स्थान-भाषा करीब-करीब हमेशा प्राथमिकता.
उदाहरण:
मान लें कि किसी ऐप्लिकेशन में, ग्राफ़िक का डिफ़ॉल्ट सेट और दो अन्य ग्राफ़िक के सेट, जिनमें से हर एक को अलग डिवाइस सेटअप के लिए ऑप्टिमाइज़ किया गया है:
res/drawable/
इसमें डिफ़ॉल्ट ग्राफ़िक मौजूद होते हैं.res/drawable-small-land-stylus/
इसमें ऐसे ग्राफ़िक हैं जिन्हें ऐसे डिवाइस के साथ इस्तेमाल करने के लिए ऑप्टिमाइज़ किया गया है जो स्टाइलस और लैंडस्केप ओरिएंटेशन में QVGA स्क्रीन है, जो कम डेंसिटी वाली है.
res/drawable-ja/
इसमें जैपनीज़ भाषा के लिए ऑप्टिमाइज़ किए गए ग्राफ़िक शामिल हैं.
अगर ऐप्लिकेशन ऐसे डिवाइस पर चलता है जिसे जैपनीज़ भाषा में इस्तेमाल करने के लिए कॉन्फ़िगर किया गया है,
Android, res/drawable-ja/
से ग्राफ़िक लोड करता है. भले ही, डिवाइस
CANNOT TRANSLATE
स्क्रीन की लैंडस्केप दिशा में.
अपवाद: सिर्फ़ ऐसे क्वालीफ़ायर होते हैं जो चुनने की प्रक्रिया में स्थान-भाषा के मुकाबले मोबाइल देश कोड (एमसीसी) और मोबाइल नेटवर्क को प्राथमिकता दी जाती है कोड (MNC).
उदाहरण:
मान लें कि आपको इस समस्या का सामना करना पड़ रहा है:
- ऐप्लिकेशन कोड
R.string.text_a
के लिए कॉल करता है .
- दो प्रासंगिक संसाधन फ़ाइलें उपलब्ध हैं:
res/values-mcc404/strings.xml
, जिसमें शामिल हैं ऐप्लिकेशन की डिफ़ॉल्ट भाषा मेंtext_a
, इस मामले में अंग्रेज़ी.res/values-hi/strings.xml
, जिसमें शामिल हैं हिन्दी मेंtext_a
.
- यह ऐप्लिकेशन ऐसे डिवाइस पर चल रहा है जिसमें:
कॉन्फ़िगरेशन:
- सिम कार्ड, भारत में किसी मोबाइल नेटवर्क (एमसीसी 404) से जुड़ा है.
- भाषा को हिन्दी (
hi
) पर सेट किया गया हो.
Android, text_a
यहां से लोड करता है
res/values-mcc404/strings.xml
(अंग्रेज़ी में), भले ही डिवाइस
हिन्दी के लिए कॉन्फ़िगर किया गया. ऐसा इसलिए है, क्योंकि संसाधन चुनने की प्रक्रिया में, Android
भाषा से मेल खाने वाले एमसीसी मैच को प्राथमिकता देता है.
चुनने की प्रोसेस हमेशा इन उदाहरणों जितनी आसान नहीं होती सुझाव. प्रोसेस के बारे में ज़्यादा बारीकी से जानने के लिए, देखें कि android कैसे ढूंढता है सबसे ज़्यादा मेल खाने वाला संसाधन उपलब्ध कराती है. सभी क्वालिफ़ायर इस क्रम में बताए गए हैं और प्राथमिकता के क्रम में जोड़े गए हैं. ऐप्लिकेशन के संसाधनों की खास जानकारी.
कोड में संसाधनों को देखें
अपने ऐप्लिकेशन के Kotlin-आधारित या Java-आधारित कोड में, सिंटैक्स का इस्तेमाल करके संसाधनों को देखें
R.resource_type.resource_name
या
android.R.resource_type.resource_name
.
ज़्यादा जानकारी के लिए, यह देखें
अपने ऐप्लिकेशन के संसाधनों को ऐक्सेस करें.
स्थानीय भाषा के अनुसार स्ट्रिंग मैनेज करें
इस सेक्शन में, स्थानीय भाषा के मुताबिक स्ट्रिंग को मैनेज करने के सबसे सही तरीकों के बारे में बताया गया है.
सभी स्ट्रिंग कोString.xml में ले जाएं
ऐप्लिकेशन बनाते समय, किसी भी स्ट्रिंग को हार्डकोड न करें. इसके बजाय, अपने सभी उपयोगकर्ताओं को
स्ट्रिंग, डिफ़ॉल्ट strings.xml
फ़ाइल में संसाधन के तौर पर मौजूद होती हैं. इससे, फ़ाइलों को अपडेट करना आसान हो जाता है
और उन्हें स्थानीय भाषा में उपलब्ध कराया जा सकता है. strings.xml
फ़ाइल की स्ट्रिंग आसानी से निकाली जा सकती हैं,
अनुवाद किया गया हो और जिसे सही क्वालीफ़ायर के साथ, आपके ऐप्लिकेशन में वापस इंटिग्रेट कर दिया गया हो.
कंपाइल किए गए कोड में बदलाव करता है.
अगर टेक्स्ट वाली इमेज जनरेट की जाती हैं, तो उन स्ट्रिंग को भी strings.xml
में रखें और
अनुवाद के बाद इमेज फिर से जनरेट करने के लिए कहें.
यूज़र इंटरफ़ेस (यूआई) स्ट्रिंग के लिए Android के दिशा-निर्देशों को अपनाएं
अपने यूज़र इंटरफ़ेस (यूआई) को डिज़ाइन और डेवलप करते समय, इस बात पर खास ध्यान दें कि अपने उपयोगकर्ता से बात करते हैं. सामान्य तौर पर, छोटी स्टाइल का इस्तेमाल करें साथ ही, पूरे यूज़र इंटरफ़ेस (यूआई) में एक जैसी स्टाइल का इस्तेमाल करें.
पक्का करें कि आपने लेखन स्टाइल और शब्दों का विकल्प. ऐसा करने से आपके ऐप्लिकेशन, लोगों को ज़्यादा शानदार दिखते हैं. साथ ही, उपयोगकर्ताओं को यह समझने में मदद मिलती है कि आपके ऐप्लिकेशन यूज़र इंटरफ़ेस को आसानी से ऐक्सेस किया जा सकता है.
साथ ही, जहां भी मुमकिन हो वहां Android की स्टैंडर्ड शब्दावली का इस्तेमाल करें. जैसे, यूज़र इंटरफ़ेस (यूआई) एलिमेंट, जैसे कि ऐप बार, विकल्प मेन्यू, सिस्टम बार, और सूचनाएं. Android के लिए शर्तों का इस्तेमाल करना अनुवाद को सही और लगातार आसान बनाता है. इससे एक बेहतर अंतिम प्रॉडक्ट मिलता है उपयोगकर्ताओं के लिए.
एलान की गई स्ट्रिंग के लिए ज़रूरी जानकारी दें
अपनी strings.xml
फ़ाइल में स्ट्रिंग का एलान करते समय, कॉन्टेक्स्ट की जानकारी देना न भूलें
जिसमें स्ट्रिंग का इस्तेमाल किया जाता है. यह जानकारी अनुवादक के लिए अत्यंत महत्वपूर्ण है और परिणाम देती है
बेहतर गुणवत्ता वाला अनुवाद. इससे आपको अपनी स्ट्रिंग भी ज़्यादा असरदार तरीके से मैनेज करने में मदद मिलती है.
उदाहरण के लिए:
<!-- The action for submitting a form. This text is on a button that can fit 30 chars --> <string name="login_submit_button">Sign in</string>
इस तरह की जानकारी दें:
- यह स्ट्रिंग किसलिए है? यह लोगों को कब और कहां दिखता है?
- लेआउट में यह कहां है? उदाहरण के लिए, अनुवाद टेक्स्ट बॉक्स के बजाय अन्य बटन पर क्लिक करें.
मैसेज के वे हिस्से मार्क करें जिनका अनुवाद नहीं किया जाना है
अक्सर, स्ट्रिंग में ऐसा टेक्स्ट होता है जिसका अन्य भाषाओं में अनुवाद नहीं किया जाना चाहिए. कॉमन उदाहरण के लिए, कोई कोड, वैल्यू के लिए प्लेसहोल्डर, कोई खास सिंबल या नाम. अगर आपने अनुवाद के लिए अपनी स्ट्रिंग तैयार करना, टेक्स्ट को ढूंढना और मार्क करना अनुवाद किया है, ताकि अनुवादक इसे न बदले.
जिस टेक्स्ट का अनुवाद नहीं करना है उसके बारे में मार्क करने के लिए, <xliff:g>
का इस्तेमाल करें
प्लेसहोल्डर टैग. यहां एक उदाहरण टैग दिया गया है जो बताता है कि "%1$s"
टेक्स्ट
अनुवाद के दौरान बदलने के लिए, संदेश को तोड़ने से बचाने के लिए:
<string name="countdown"> <xliff:g id="time" example="5 days">%1$s</xliff:g> until holiday </string>
प्लेसहोल्डर टैग का एलान करते समय, एक आईडी एट्रिब्यूट जोड़ें. यह एट्रिब्यूट यह बताता है कि प्लेसहोल्डर इसके लिए है. अगर आपका ऐप्लिकेशन बाद में प्लेसहोल्डर वैल्यू की जगह ले लेता है, तो उदाहरण के तौर पर दिया गया एट्रिब्यूट.
यहां प्लेसहोल्डर टैग के कुछ और उदाहरण दिए गए हैं:
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <!-- Example placeholder for a special Unicode symbol --> <string name="star_rating">Check out our 5 <xliff:g id="star">\u2605</xliff:g> </string> <!-- Example placeholder for a URL --> <string name="app_homeurl"> Visit us at <xliff:g id="application_homepage">http://my/app/home.html</xliff:g> </string> <!-- Example placeholder for a name --> <string name="prod_name"> Learn more at <xliff:g id="prod_gamegroup">Game Group</xliff:g> </string> <!-- Example placeholder for a literal --> <string name="promo_message"> Please use the "<xliff:g id="promotion_code">ABCDEFG</xliff:g>" to get a discount. </string> ... </resources>
स्थानीय भाषा के अनुसार चेकलिस्ट
Android ऐप्लिकेशन को स्थानीय भाषा में उपलब्ध कराने और उसे लोगों तक पहुंचाने की प्रोसेस के बारे में पूरी जानकारी पाने के लिए, देखें ऐप्लिकेशन के कॉन्टेंट का अनुवाद करें और उसे स्थानीय भाषा के मुताबिक बनाएं.
स्थानीय भाषा के अनुसार सलाह
अपने ऐप्लिकेशन का स्थानीय भाषा में अनुवाद करते समय इन सुझावों पर अमल करें.
अपने ऐप्लिकेशन को इस तरह डिज़ाइन करें कि वह किसी भी स्थान-भाषा में काम कर सके
उपयोगकर्ता जिस डिवाइस पर आपका प्रॉडक्ट चलाता है, उसके बारे में कुछ भी न सोचें है. डिवाइस में ऐसा हार्डवेयर हो सकता है जिसकी आपको उम्मीद नहीं थी या हो सकता है कि यह किसी ऐसी स्थान-भाषा पर सेट हो जिसके लिए आपने सोचा नहीं था या जिसकी जांच नहीं की जा सकती. अपने ऐप्लिकेशन को इस तरह डिज़ाइन करें कि वह सामान्य रूप से काम करे या अच्छे से काम न करे इससे कोई फ़र्क़ नहीं पड़ता कि वह किस डिवाइस पर चलता है.
अहम जानकारी: पक्का करें कि आपका ऐप्लिकेशन
इसमें डिफ़ॉल्ट संसाधनों का पूरा सेट शामिल होता है:
res/drawable/
और res/values/
फ़ोल्डर बिना
फ़ोल्डर के नाम में अतिरिक्त मॉडिफ़ायर जिसमें सभी इमेज और टेक्स्ट शामिल होते हैं
की ज़रूरत होती है.
अगर किसी ऐप्लिकेशन में एक भी डिफ़ॉल्ट संसाधन मौजूद नहीं है, तो वह
किसी ऐसे स्थान-भाषा पर सेट हो जो काम नहीं करता. उदाहरण के लिए, अगर
res/values/strings.xml
डिफ़ॉल्ट फ़ाइल में एक ऐसी स्ट्रिंग नहीं है जो
जब ऐप्लिकेशन किसी ऐसी स्थान-भाषा में चलता हो जो उस पर काम नहीं करती और
res/values/strings.xml
को लोड करने की कोशिश करता है, तो उपयोगकर्ता को गड़बड़ी दिखती है
और एक ज़बरदस्ती बंद करें बटन.
अधिक जानकारी के लिए, डिफ़ॉल्ट के लिए परीक्षण देखें संसाधन सेक्शन में भी जाना जा सकता है.
ज़रूरत के हिसाब से लेआउट डिज़ाइन करना
अगर आपको लेआउट को फिर से व्यवस्थित करना है, ताकि वह भाषा के हिसाब से सही हो,
तो उस भाषा के लिए एक वैकल्पिक लेआउट बनाया जा सकता है, जैसे
जर्मन भाषा के लेआउट के लिए res/layout-de/main.xml
. हालांकि, ऐसा करने से
हो सकता है कि आपके ऐप्लिकेशन का रखरखाव मुश्किल हो जाए. बेहतर है कि एक कॉलम बनाएं
ज़्यादा सुविधाजनक लेआउट.
एक और सामान्य स्थिति ऐसी भाषा है, जिसमें भाषा में कुछ अलग की आवश्यकता होती है लेआउट. उदाहरण के लिए, आपके पास एक संपर्क फ़ॉर्म हो सकता है, जिसमें ये दो चीज़ें शामिल हों जब ऐप्लिकेशन जैपनीज़ में चलता है, तो नाम फ़ील्ड. हालाँकि, जब ऐप्लिकेशन जैपनीज़ में चलता है, तो नाम वाले फ़ील्ड ऐप्लिकेशन किसी दूसरी भाषा में चलता हो. इसे इनमें से किसी एक में मैनेज किया जा सकता है दो तरीके:
- ऐसे फ़ील्ड के साथ एक लेआउट बनाएं जिसे प्रोग्राम के हिसाब से चालू किया जा सकता है या को भाषा के आधार पर बंद कर सकते हैं.
- मुख्य लेआउट में एक और लेआउट शामिल करें, जिसमें बदला जा सकने वाला लेआउट शामिल हो फ़ील्ड में डालें. दूसरे लेआउट में भाषाएं.
ज़रूरत से ज़्यादा रिसॉर्स फ़ाइलें और टेक्स्ट स्ट्रिंग न बनाएं
शायद आपको प्रत्येक
संसाधन भी मिल सकता है. उदाहरण के लिए,
res/layout/main.xml
फ़ाइल किसी भी स्थान-भाषा में काम कर सकती है. ऐसा होने पर, यह फ़ाइल किसी भी स्थान-भाषा में काम कर सकती है.
कोई दूसरी लेआउट फ़ाइल बनाने की ज़रूरत नहीं है.
साथ ही, हो सकता है कि आपको हर स्ट्रिंग के लिए वैकल्पिक टेक्स्ट बनाने की ज़रूरत न पड़े. इसके लिए उदाहरण के लिए, निम्न मान लें:
- आपके ऐप्लिकेशन की डिफ़ॉल्ट भाषा अमेरिकन इंग्लिश है. हर स्ट्रिंग जो
इस ऐप्लिकेशन में अमेरिकन इंग्लिश स्पेलिंग का इस्तेमाल करके, इसकी जानकारी दी गई है
res/values/strings.xml
. - कुछ ज़रूरी वाक्यांशों के लिए, आपको ब्रिटिश अंग्रेज़ी स्पेलिंग देनी है. आप इन वैकल्पिक स्ट्रिंग का इस्तेमाल तब करना चाहते हैं, जब आपका ऐप्लिकेशन किसी पर काम करता है.
ऐसा करने के लिए, नाम की एक छोटी फ़ाइल बनाएं
res/values-en-rGB/strings.xml
जिसमें सिर्फ़ वे स्ट्रिंग शामिल होती हैं
यू.के. में ऐप्लिकेशन चलने पर अलग-अलग होते हैं. बाकी सभी के लिए
स्ट्रिंग डिफ़ॉल्ट रूप से सेट हो जाती है और डिफ़ॉल्ट सेटिंग
res/values/strings.xml
में परिभाषित किया गया है.
मैन्युअल तरीके से स्थान-भाषा का पता लगाने के लिए, Android कॉन्टेक्स्ट ऑब्जेक्ट का इस्तेमाल करें
Context
ऑब्जेक्ट का इस्तेमाल करके, स्थान-भाषा को खोजा जा सकता है
को Android पर उपलब्ध कराता है, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:
Kotlin
val primaryLocale: Locale = context.resources.configuration.locales[0] val locale: String = primaryLocale.displayName
Java
Locale primaryLocale = context.getResources().getConfiguration().getLocales().get(0); String locale = primaryLocale.getDisplayName();
ऐप्लिकेशन का अनुवाद करने की सेवा का इस्तेमाल करना
ऐप्लिकेशन का अनुवाद सेवा Play Console पर टैप करें. यह आपको कोटेशन पाएं और अनुवाद कंपनी है. एक या एक से ज़्यादा भाषाओं में अनुवाद का ऑर्डर दिया जा सकता है ऐप्लिकेशन यूज़र इंटरफ़ेस (यूआई) स्ट्रिंग, Play स्टोर पेज का टेक्स्ट, आईएपी के नाम, और विज्ञापन कैंपेन के टेक्स्ट के लिए.
स्थानीय जगह के अनुसार ऐप्लिकेशन की जांच करें
किसी डिवाइस पर या Android Emulator का इस्तेमाल करके, अपने स्थानीय भाषा के मुताबिक बनाए गए ऐप्लिकेशन की जांच करें. खास तौर पर, अपने ऐप्लिकेशन की जांच करें, ताकि यह पक्का किया जा सके कि सभी ज़रूरी डिफ़ॉल्ट संसाधन शामिल हों.
किसी डिवाइस पर टेस्ट करें
ध्यान रखें कि जिस डिवाइस पर आपको टेस्ट किया जा रहा है वह दूसरे डिवाइस से काफ़ी अलग हो सकता है दूसरे देशों में उपभोक्ताओं के लिए उपलब्ध डिवाइस. उपलब्ध स्थान-भाषाएं आपके डिवाइस और दूसरे डिवाइसों पर मौजूद ऐप्लिकेशन के बीच अंतर हो सकता है. साथ ही, डिवाइस की स्क्रीन का रिज़ॉल्यूशन और सघनता अलग-अलग हो सकती है. इसका असर आपके यूज़र इंटरफ़ेस (यूआई) में स्ट्रिंग और ड्रॉबल डिसप्ले करने की सुविधा.
किसी डिवाइस पर स्थान-भाषा या भाषा बदलने के लिए, सेटिंग ऐप्लिकेशन का इस्तेमाल करें.
एम्युलेटर पर टेस्ट करें
एम्युलेटर का इस्तेमाल करने के बारे में जानकारी के लिए, Android Emulator पर ऐप्लिकेशन चलाएं को देखें.
पसंद के मुताबिक स्थान-भाषा बनाना और उसका इस्तेमाल करना
"पसंद के मुताबिक" स्थान-भाषा, भाषा या क्षेत्र का ऐसा कॉम्बिनेशन है जिसे Android सिस्टम चित्र स्पष्ट रूप से समर्थन नहीं करता. यह जांच की जा सकती है कि आपका ऐप्लिकेशन कैसे काम करता है को एम्युलेटर में एक कस्टम स्थान-भाषा बनाकर. दो इस तरीके का इस्तेमाल करें:
- कस्टम स्थान ऐप्लिकेशन का इस्तेमाल करें, जिसे कर सकते हैं. आपके द्वारा कोई कस्टम स्थान बनाने के बाद, उस पर स्विच करने के लिए & होल्ड पर है स्थान-भाषा का नाम.
adb
शेल से कस्टम स्थान-भाषा में बदलें, जैसा कि नीचे दिए गए सेक्शन में बताया गया है.
जब एम्युलेटर को किसी ऐसी जगह पर सेट किया जाता है जो Android में उपलब्ध नहीं है सिस्टम इमेज होती है, तो सिस्टम खुद अपनी डिफ़ॉल्ट भाषा में दिखता है. आपका हालांकि, ऐप सही तरीके से लोकलाइज़ हो जाता है.
adb शेल से एम्युलेटर स्थान-भाषा बदलें
adb
शेल का इस्तेमाल करके एम्युलेटर में स्थान-भाषा बदलने के लिए, यह तरीका अपनाएं:
- वह स्थान-भाषा चुनें जिसकी जांच करनी है और उसका BCP-47 भाषा टैग तय करें.
जैसे कि कैनेडियन फ़्रेंच के लिए
fr-CA
.
- एम्युलेटर लॉन्च करें.
- होस्ट कंप्यूटर पर कमांड-लाइन शेल से, निम्न को चलाएं
आदेश:
adb shell
या, अगर आपके पास कोई डिवाइस है, तो जोड़कर यह बताएं कि आपको एम्युलेटर चाहिए-e
विकल्प:
adb -e shell
adb
शेल प्रॉम्प्ट (#
) पर, इस निर्देश को चलाएं:
setprop persist.sys.locale [BCP-47 language tag];stop;sleep 5;start
ब्रैकेट किए गए सेक्शन को चरण में दिए गए सही कोड से बदलें 1.
उदाहरण के लिए, कैनेडियन फ़्रेंच भाषा में टेस्ट करने के लिए:
setprop persist.sys.locale fr-CA;stop;sleep 5;start
इससे एम्युलेटर रीस्टार्ट हो जाता है. होम स्क्रीन के दोबारा दिखने पर, ऐप्लिकेशन को फिर से लॉन्च करें. और ऐप्लिकेशन नई जगह के साथ लॉन्च हो जाता है.
डिफ़ॉल्ट संसाधनों की जांच करें
यह जांचने के लिए कि किसी ऐप्लिकेशन में उसकी ज़रूरत के मुताबिक सभी स्ट्रिंग रिसॉर्स शामिल हैं या नहीं, नीचे दिया गया तरीका अपनाएं:
- एम्युलेटर या डिवाइस को उस भाषा पर सेट करें जो आपका ऐप्लिकेशन इस्तेमाल नहीं करता
सहायता. उदाहरण के लिए, अगर ऐप्लिकेशन में फ़्रेंच स्ट्रिंग
res/values-fr/
लेकिन इसमें कोई स्पैनिश स्ट्रिंग नहीं हैres/values-es/
के बाद, एम्युलेटर की स्थान-भाषा को स्पैनिश पर सेट करें. कस्टम स्थान-भाषा ऐप्लिकेशन का इस्तेमाल करके, एम्युलेटर को असमर्थित स्थानिकी. - ऐप्लिकेशन चलाएं.
- अगर ऐप्लिकेशन, गड़बड़ी का मैसेज और 'ज़बरदस्ती बंद करें' बटन दिखाता है, तो
ऐसी स्ट्रिंग ढूंढ रहे हैं जो उपलब्ध नहीं है. पक्का करें कि
res/values/strings.xml
फ़ाइल में हर स्ट्रिंग का इस्तेमाल करता है.
अगर जांच सफल होती है, तो दूसरी तरह के कॉन्फ़िगरेशन के लिए इसे दोहराएं. इसके लिए
उदाहरण के लिए, अगर ऐप्लिकेशन में
res/layout-land/main.xml
, लेकिन इसमें इस नाम की कोई फ़ाइल नहीं है
res/layout-port/main.xml
. इसके बाद, एम्युलेटर या डिवाइस को
पोर्ट्रेट ओरिएंटेशन देख सकते हैं और देख सकते हैं कि ऐप्लिकेशन चलता है या नहीं.