Localization (स्थानीयकरण, l10n) — मोबाइल ऐप सामग्री का लक्षित दर्शकों की भाषा, क्षेत्र और सांस्कृतिक विशेषताओं के अनुसार अनुकूलन। अंतर्राष्ट्रीयकरण (i18n) के विपरीत, जहाँ कोड अनुवाद के लिए तैयार किया जाता है, स्थानीयकरण स्ट्रिंग्स के अनुवाद, दिनांकों, संख्याओं और मुद्राओं के स्वरूपण, छवियों के चयन और स्थानीय मानदंडों पर विचार करने की वास्तविक प्रक्रिया है। iOS पर, अनुवाद Localizable.strings (प्रत्येक भाषा के लिए .lproj फ़ोल्डर) में संग्रहीत होते हैं, Android पर — values-ru, values-de और अन्य संसाधन निर्देशिकाओं में। और जानें Android स्थानीयकरण गाइड में।
मुख्य बिंदु
स्थानीयकरण (संक्षेप में l10n — “l” और “n” के बीच 10 अक्षर) किसी एप्लिकेशन को किसी विशिष्ट भाषा और क्षेत्र में ढालने की प्रक्रिया है। यदि i18n वास्तुशिल्प नींव है, तो l10n सामग्री है। i18n अनुवाद को संभव बनाता है, l10n इसे क्रियान्वित करता है। स्थानीयकरण में शामिल है: सभी इंटरफ़ेस टेक्स्ट का अनुवाद, दिनांक और संख्या स्वरूपों का अनुकूलन, सांस्कृतिक रूप से संवेदनशील छवियों को बदलना, कानूनी टेक्स्ट (गोपनीयता नीति, EULA) को समायोजित करना, क्षेत्र के लिए भुगतान प्रणाली कॉन्फ़िगर करना और लक्ष्य उपकरणों पर परीक्षण करना।
व्यावसायिक ROI — स्थानीयकरण सीधे रूपांतरण को प्रभावित करता है। CSA Research (2023) के अनुसार, 76% उपयोगकर्ता अपनी मातृभाषा में ऐप्स में खरीदारी करना पसंद करते हैं, और 40% कभी भी विदेशी भाषा में खरीदारी नहीं करते। खुदरा ऐप के लिए जापानी में स्थानीयकरण से रूपांतरण में औसतन 150% की वृद्धि होती है (Google, 2022)। स्थानीयकृत ऐप्स को क्षेत्रीय ASO (लक्ष्य भाषा में कीवर्ड) के कारण क्षेत्रीय App Store और Google Play में 2–3 गुना अधिक जैविक इंस्टॉल मिलते हैं।
i18n बनाम l10n — एक ही प्रक्रिया के दो पहलू। i18n: स्ट्रिंग्स को संसाधनों में निकालना, RTL समर्थन, संख्या स्वरूपण। डेवलपर्स द्वारा एक बार किया जाता है। l10n: स्ट्रिंग्स का अनुवाद, सामग्री अनुकूलन, स्थानीय परीक्षण। अनुवादकों और QA द्वारा प्रत्येक लोकेल के लिए बार-बार किया जाता है। IT Sectr में, हम प्रत्येक नई भाषा के लिए स्थानीयकरण हेतु स्प्रिंट समय का 20–30% आवंटित करते हैं — इसमें अनुवाद, समीक्षा, उपकरण परीक्षण और बग फिक्सिंग शामिल है।
Localizable.strings — iOS में अनुवाद संग्रहीत करने के लिए मुख्य फ़ाइल। प्रत्येक लोकेल का अपना .lproj फ़ोल्डर होता है: en.lproj/Localizable.strings, ru.lproj/Localizable.strings, de.lproj/Localizable.strings। प्रारूप: “कुंजी” = “मान”; (अर्धविराम के साथ)। Apple Base Internationalization का उपयोग करता है: Storyboard और XIB एक बार बनाए जाते हैं (Base.lproj), और इंटरफ़ेस स्ट्रिंग्स प्रत्येक भाषा के लिए Localizable.strings में निर्यात की जाती हैं। यह प्रत्येक लोकेल के लिए XIB की प्रतियाँ बनाने की आवश्यकता को समाप्त करता है।
// en.lproj/Localizable.strings
// "settings.title" = "सेटिंग्स";
// "profile.greeting" = "नमस्ते, %@!";
// "items.count" = "%d आइटम";
// ru.lproj/Localizable.strings
// "settings.title" = "सेटिंग्स";
// "profile.greeting" = "नमस्ते, %@!";
// "items.count" = "%d आइटम";
// कुंजी द्वारा स्ट्रिंग लोड करना
navigationItem.title = NSLocalizedString(
"settings.title",
comment: "सेटिंग्स स्क्रीन का शीर्षक"
)
// पैरामीटर के साथ स्ट्रिंग
let name = "अन्ना"
greetingLabel.text = String.localizedStringWithFormat(
NSLocalizedString("profile.greeting", comment: ""), name
)
// XLIFF आयात (Xcode → Editor → Import Localizations)
// अनुवादक के काम के बाद स्वचालित रूप से .lproj फ़ाइलों को अपडेट करता है
Base Internationalization — Apple का दृष्टिकोण जहाँ इंटरफ़ेस (Storyboard, XIB) Base.lproj में एक बार बनाया जाता है। भाषा जोड़ते समय, Xcode Base से XLIFF फ़ाइल में स्ट्रिंग्स निर्यात करता है। अनुवादक XLIFF का अनुवाद करता है। आयात के बाद, Xcode अनुवादित स्ट्रिंग्स के साथ .lproj बनाता है। लाभ: प्रत्येक भाषा के लिए XIB को डुप्लिकेट करने की आवश्यकता नहीं। सीमा: RTL भाषाओं (अरबी, हिब्रू) के लिए, मिरर किए गए लेआउट के साथ अलग XIB की आवश्यकता हो सकती है।
InfoPlist.strings — ऐप नाम (CFBundleDisplayName), कैमरा/माइक्रोफ़ोन अनुमतियाँ (NSCameraUsageDescription) और Info.plist के अन्य मानों को स्थानीयकृत करने के लिए फ़ाइल। .lproj में बनाई जाती है: ru.lproj/InfoPlist.strings। प्रारूप: CFBundleDisplayName = “मेरा ऐप”; NSCameraUsageDescription = “ऐप को फ़ोटो लेने के लिए कैमरा एक्सेस चाहिए”;। InfoPlist.strings स्थानीयकरण के बिना, सिस्टम डायलॉग अंग्रेज़ी में होंगे।
Android संसाधन स्थानीयकरण के लिए निर्देशिका नामों में क्वालिफ़ायर के माध्यम से व्यवस्थित होते हैं। रूसी के लिए — res/values-ru/, जर्मन के लिए — res/values-de/, ब्राज़ीलियाई पुर्तगाली के लिए — res/values-pt-rBR/। Android 160 से अधिक लोकेल का समर्थन करता है। सिस्टम डिवाइस भाषा (Locale.getDefault()) के आधार पर स्वचालित रूप से संसाधनों का चयन करता है। यदि सटीक लोकेल नहीं मिलता है, तो values/ (आधार लोकेल, आमतौर पर en) से संसाधनों का उपयोग किया जाता है।
// res/values/strings.xml (आधार — अंग्रेज़ी)
<string name="settings_title">Settings</string>
<string name="greeting">Hello, %s!</string>
// res/values-ru/strings.xml (रूसी)
<string name="settings_title">सेटिंग्स</string>
<string name="greeting">नमस्ते, %s!</string>
// res/values-de/strings.xml (जर्मन)
<string name="settings_title">Einstellungen</string>
<string name="greeting">Hallo, %s!</string>
// Kotlin — सभी भाषाओं के लिए एकीकृत कोड
textView.text = getString(R.string.settings_title)
// पैरामीटर के साथ स्ट्रिंग
val greeting = getString(R.string.greeting, userName)
// स्थानीयकृत छवियाँ
// res/drawable-ru/flag.png — रूसी संस्करण के लिए झंडा
// res/drawable/flag.png — डिफ़ॉल्ट झंडा
// लेआउट स्थानीयकरण (RTL भाषाओं के लिए)
// res/layout-ar/activity_main.xml — अरबी संस्करण
स्ट्रिंग्स से परे स्थानीयकरण — Android छवियों (res/drawable-ru/), रंगों (res/values-ru/colors.xml), आयामों (res/values-ru/dimens.xml), एनिमेशन, मेनू और यहाँ तक कि पूरे लेआउट को स्थानीयकृत करने की अनुमति देता है। विभिन्न शब्द लंबाई वाली भाषाओं के लिए (जर्मन अंग्रेज़ी से 30–40% लंबा है), बढ़ी हुई बटन चौड़ाई के साथ स्थानीयकृत dimens.xml का उपयोग करें। विभिन्न रंग प्रतीकवाद वाले क्षेत्रों के लिए (चीन में सफेद शोक है), स्थानीयकृत colors.xml का उपयोग करें।
परीक्षण — सेटिंग्स → सिस्टम → भाषा के माध्यम से डिवाइस भाषा को लक्ष्य भाषा में बदलें। जाँचें: सभी स्ट्रिंग्स का अनुवाद हुआ है, दिनांक सही ढंग से स्वरूपित हैं, संख्याएँ उपयुक्त विभाजक के साथ प्रदर्शित होती हैं, छवियाँ क्षेत्र से मेल खाती हैं, लंबी स्ट्रिंग्स से लेआउट नहीं टूटता। स्वचालन के लिए, LocaleTestRule (Android Testing Library) के साथ Espresso का उपयोग करें — यह मैन्युअल रूप से भाषा बदले बिना विभिन्न लोकेल के साथ परीक्षण चलाने की अनुमति देता है।
सांस्कृतिक विशेषताएँ — स्थानीयकरण केवल स्ट्रिंग्स के अनुवाद तक सीमित नहीं है। रंग प्रतीकवाद भिन्न होता है: लाल चीन में भाग्य, अमेरिका में खतरा, दक्षिण अफ्रीका में शोक है। सफेद यूरोप में पवित्रता, चीन में शोक है। हावभाव आइकन: अंगूठा ऊपर अमेरिका में सकारात्मक, मध्य पूर्व में अपमान है। लोगों की छवियाँ: अरब देशों में, महिलाओं की स्विमसूट में छवियाँ अस्वीकार्य हैं। धार्मिक प्रतीक: क्रॉस, क्रिसेंट, डेविड का सितारा केवल उपयुक्त संदर्भ में उपयोग किया जाना चाहिए।
कानूनी आवश्यकताएँ — प्रत्येक देश के डिजिटल उत्पादों के अपने कानून हैं। GDPR (EU) — कुकीज़ और डेटा प्रसंस्करण के लिए अनिवार्य सहमति। CCPA (कैलिफ़ोर्निया) — डेटा हटाने का अधिकार। व्यक्तिगत डेटा कानून (रूस, 152-FZ) — रूसी सर्वर पर डेटा संग्रहण। LGPD (ब्राज़ील) — GDPR समकक्ष। भुगतान: चीन में Alipay/WeChat Pay आवश्यक हैं, भारत में — UPI, ब्राज़ील में — Boleto और PIX। स्थानीयकरण लॉन्च करने से पहले क्षेत्र के लिए भुगतान गेटवे कॉन्फ़िगर करें।
| पहलू | अमेरिका | चीन | यूएई | जर्मनी |
|---|---|---|---|---|
| भुगतान प्रणाली | Apple Pay, कार्ड | Alipay, WeChat Pay | कार्ड, Apple Pay | PayPal, Giropay |
| ब्रांड रंग | कोई भी | लाल — भाग्य | हरा — इस्लाम | काला/पीला |
| सोशल नेटवर्क | Instagram, X | WeChat, Douyin | WhatsApp, X | WhatsApp, X |
| दिनांक | MM/dd/yyyy | yyyy/MM/dd | dd/MM/yyyy | dd.MM.yyyy |
| डेटा कानून | CCPA | PIPL | PDPL | GDPR |
उदाहरण और सामग्री — उदाहरणों को क्षेत्र के अनुसार ढालें। जर्मन स्थानीयकरण के लिए, मीट्रिक प्रणाली (किग्रा, किमी) का उपयोग करें, अमेरिकी के लिए — इंपीरियल (पाउंड, मील)। फ़ोन नंबर, पिन कोड, पते — सभी अलग-अलग स्वरूपित होते हैं। मुद्रा उदाहरण: जापान में ¥1000, अमेरिका में $9.99, रूस में 999 ₽। भोजन, कपड़े और इंटीरियर की छवियाँ क्षेत्रीय मानकों से मेल खानी चाहिए। IT Sectr में, हम सांस्कृतिक अनुकूलन को सत्यापित करने के लिए स्थानीय सलाहकारों को नियुक्त करने की सलाह देते हैं।
स्थानीयकरण उपकरण — पेशेवर प्लेटफ़ॉर्म प्रक्रिया को स्वचालित करते हैं: Lokalise, Crowdin, POEditor, Smartling, Phrase। ये रिपॉज़िटरी के साथ एकीकृत होते हैं, स्वचालित रूप से नई स्ट्रिंग्स आयात करते हैं, परिवर्तनों को ट्रैक करते हैं (डेल्टा अपडेट — केवल बदली गई स्ट्रिंग्स का अनुवाद होता है), अनुवाद मेमोरी (TM — पहले से अनुवादित वाक्यांशों का भंडारण) और शब्दावली प्रदान करते हैं। पेशेवर अनुवाद की औसत लागत: $0.08–0.15 प्रति शब्द (भाषा के अनुसार)।
प्रक्रिया — (1) डेवलपर कोड में i18n कुंजियाँ जोड़ता है, रिपॉज़िटरी में पुश करता है। (2) CI/CD (GitHub Actions / GitLab CI) स्वचालित रूप से नई कुंजियाँ स्थानीयकरण प्लेटफ़ॉर्म पर भेजता है। (3) अनुवादकों को सूचना मिलती है, वे अनुवाद करते हैं और सहेजते हैं। (4) अनुवादित फ़ाइलें स्वचालित रूप से रिपॉज़िटरी में PR बनाती हैं। (5) QA उपकरणों पर स्थानीयकरण की जाँच करता है। (6) रिलीज़। एक लोकेल के लिए चक्र: 2–5 कार्य दिवस (मात्रा के अनुसार)। 10 लोकेल के लिए: अनुवादकों के समानांतर काम के साथ 5–15 दिन।
मशीन अनुवाद + मानव समीक्षा — आधुनिक मानक। न्यूरल नेटवर्क अनुवाद (DeepL, Google Translate, GPT-4) लोकप्रिय भाषा जोड़ियों के लिए 80–90% गुणवत्ता प्रदान करता है। मानव अनुवादक जाँचता है: शब्दावली, संदर्भ (शब्दों के अलग-अलग स्क्रीन पर अलग-अलग अर्थ हो सकते हैं), सांस्कृतिक अनुकूलन। IT Sectr में, हम एक हाइब्रिड दृष्टिकोण का उपयोग करते हैं: ML अनुवाद + देशी वक्ता समीक्षा। महत्वपूर्ण स्ट्रिंग्स (कानूनी, भुगतान) के लिए — केवल पेशेवर अनुवाद। बचत: गुणवत्ता बनाए रखते हुए 60% तक लागत बचत।
अक्सर पूछे जाने वाले प्रश्न
अंतर्राष्ट्रीयकरण — अनुवाद के लिए कोड तैयार करना (स्ट्रिंग्स निकालना, RTL, स्वरूपण)। स्थानीयकरण — वास्तविक अनुवाद और सांस्कृतिक अनुकूलन। i18n डेवलपर एक बार करता है, l10n — अनुवादक प्रत्येक भाषा के लिए। i18n बिना l10n — ऐप अनुवाद के लिए तैयार है लेकिन अनुवादित नहीं। l10n बिना i18n — प्रत्येक भाषा के लिए कोड फिर से लिखना होगा।
.lproj फ़ोल्डरों के अंदर Localizable.strings फ़ाइलों में। प्रत्येक भाषा के लिए: en.lproj (अंग्रेज़ी), ru.lproj (रूसी), de.lproj (जर्मन)। प्रारूप: “कुंजी” = “मान”;। बहुवचन के लिए — Localizable.stringsdict। ऐप सेटिंग्स (CFBundleDisplayName) — InfoPlist.strings में। Xcode Base Internationalization के माध्यम से .lproj का प्रबंधन करता है।
values-ru — रूसी भाषा के लिए Android संसाधन निर्देशिका। इसमें अनुवाद के साथ strings.xml होता है। इसी तरह अन्य भाषाओं के लिए: values-de (जर्मन), values-fr (फ़्रेंच)। Android सिस्टम भाषा के आधार पर संसाधनों का चयन करता है। यदि values-ru नहीं मिलता है, तो यह values/ (आधार भाषा, आमतौर पर अंग्रेज़ी) का उपयोग करता है।
हमेशा Locale API का उपयोग करें। iOS: DateFormatter.locale = Locale(identifier: locale)। Android: DateFormat.getDateInstance(DateFormat.SHORT, locale)। रूस: 31.12.2024। अमेरिका: 12/31/2024। जापान: 2024/12/31। कभी भी निश्चित प्रारूप निर्धारित न करें — प्रत्येक देश के अपने मानक होते हैं। दिनांक इनपुट के लिए, UIDatePicker / DatePicker का उपयोग करें।
वैश्विक पहुँच के लिए, 10–15 भाषाएँ पर्याप्त हैं: अंग्रेज़ी, स्पेनिश, फ़्रेंच, जर्मन, जापानी, चीनी, कोरियाई, पुर्तगाली, रूसी, इतालवी, अरबी। क्षेत्रीय के लिए — 1–2 भाषाएँ। प्रत्येक अतिरिक्त लोकेल संबंधित क्षेत्र में जैविक इंस्टॉल में 5–15% की वृद्धि करता है। App Store को कम से कम अंग्रेज़ी स्थानीयकरण की आवश्यकता होती है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें