Swift ऐप इंटरनेशनलाइज़ेशन: अपने कोड को दुनिया भर के लिए समझदार बनाएं

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

आपके ऐप को इंटरनेशनलाइज़ेशन की ज़रूरत क्यों है?

\n

कल्पना करें: आपने एक शानदार iOS ऐप बनाया है। यह बिल्कुल सही काम करता है, इंटरफ़ेस देखने लायक है, और भारतीय उपयोगकर्ता इसे पाँच स्टार दे रहे हैं। लेकिन क्या होगा अगर आपका कोड अंग्रेज़ी में बोलने लगे? या चीनी में? या अरबी में, जहाँ टेक्स्ट दाएँ से बाएँ पढ़ा जाता है?

\n

Swift में इंटरनेशनलाइज़ेशन सिर्फ़ बटन का अनुवाद नहीं है। यह एक आर्किटेक्चरल दृष्टिकोण है जो आपके ऐप को उपयोगकर्ता की भाषा में बोलने, उसकी सांस्कृतिक विशेषताओं (तारीख, मुद्रा, माप की इकाइयों के फ़ॉर्मेट) का सम्मान करने और लोकेल बदलने पर टूटने से बचाने में मदद करता है।

\n

इस लेख में, हम जानेंगे कि Xcode के आधुनिक टूल्स और बेस्ट प्रैक्टिसेज़ का उपयोग करके Swift प्रोजेक्ट में i18n (internationalization) को सही तरीके से कैसे लागू किया जाए। क्या आप अपने कोड को दुनिया का नागरिक बनाने के लिए तैयार हैं? चलिए शुरू करते हैं!

\n\n

Swift में लोकलाइज़ेशन की बुनियाद: NSLocalizedString से String Catalog तक

\n

पारंपरिक तरीका: NSLocalizedString

\n

सबसे बुनियादी टूल मैक्रो NSLocalizedString है। यह .strings फ़ाइलों में अनुवाद खोजता है, और अगर नहीं मिलता है, तो की (या डिफ़ॉल्ट वैल्यू) दिखाता है।

\n
let hello = NSLocalizedString("hello_world", comment: "होम स्क्रीन पर अभिवादन")\nprint(hello) // डिवाइस की भाषा के अनुसार अनुवाद दिखाएगा
\n

कमेंट सिर्फ़ औपचारिकता नहीं है। यह अनुवादकों को संदर्भ समझने में मदद करता है: "hello_world" अभिवादन या सेक्शन का नाम हो सकता है। हमेशा सार्थक comment लिखें।

\n\n

String Catalog — नया मानक (Xcode 15+)

\n

दर्जनों Localizable.strings फ़ाइलों को भूल जाइए। Xcode 15 में String Catalogs (.xcstrings) आए हैं। यह एक ही फ़ाइल है जो कई भाषाओं, प्लूरलाइज़ेशन और संदर्भ नोट्स को सपोर्ट करती है।

\n

कैटलॉग बनाने के लिए: File → New → File → String Catalog। की जोड़ें — और हो गया:

\n
// कोड वही रहता है!\nlet welcome = NSLocalizedString("welcome_message", comment: "नए उपयोगकर्ता के लिए अभिवादन")\n\n// String Catalog में आप बस en, hi, ar आदि के लिए अनुवाद जोड़ते हैं
\n

फ़ायदे: फ़ाइलों को सिंक करने की ज़रूरत नहीं, एन्कोडिंग में गलती की संभावना कम, प्लूरलाइज़ेशन के लिए बिल्ट-इन सपोर्ट।

\n\n

तारीख और नंबर फ़ॉर्मेटिंग: सांस्कृतिक कोड

\n

गलती: तारीख का फ़ॉर्मेट "dd.MM.yyyy" हार्डकोड करना। अमेरिका में "MM/dd/yyyy" लिखते हैं, जापान में "yyyy年MM月dd日"। Swift में DateFormatter और NumberFormatter बचाव में आते हैं।

\n\n

तारीखें जो दिखाने लायक हों

\n
let date = Date()\nlet formatter = DateFormatter()\nformatter.dateStyle = .long\nformatter.timeStyle = .none\nformatter.locale = Locale.current // डिवाइस की भाषा के अनुसार ऑटोमैटिक एडजस्ट होता है\n\nlet localizedDate = formatter.string(from: date)\n// en के लिए: "January 15, 2025"\n// hi के लिए: "15 जनवरी 2025"\n// de के लिए: "15. Januar 2025"\nprint(localizedDate)
\n

dateFormat स्ट्रिंग का उपयोग न करें! .short, .medium, .long का उपयोग करें — ये पहले से सांस्कृतिक नियमों को ध्यान में रखते हैं।

\n\n

नंबर और मुद्राएँ: कॉमा और डॉट का सम्मान करें

\n

भारत में संख्या 1234.56 को "1,234.56" लिखा जाता है, जबकि जर्मनी में "1.234,56"। NumberFormatter यह जानता है:

\n
let price = 1234.56\nlet numberFormatter = NumberFormatter()\nnumberFormatter.numberStyle = .currency\nnumberFormatter.locale = Locale.current\n\nlet localizedPrice = numberFormatter.string(from: NSNumber(value: price))!\n// en_US के लिए: "$1,234.56"\n// hi_IN के लिए: "₹1,234.56"\n// de_DE के लिए: "1.234,56 €"\nprint(localizedPrice)
\n\n

प्लूरलाइज़ेशन: एक, दो, अनेक — अनुमान न लगाएं

\n

"एक — अनेक" का नियम सिर्फ़ अंग्रेज़ी में काम करता है। हिंदी में "1 मिनट", "2 मिनट", "5 मिनट" होता है। अरबी में छह रूप होते हैं! String Catalog और NSStringPluralRule इसे सुंदर तरीके से हल करते हैं।

\n

String Catalog में आप की जोड़ते हैं, टाइप "Plural" चुनते हैं और फ़ॉर्म भरते हैं:

\n
// कोड में                

ब्लॉग

पुस्तक अनुशंसाएँ