Go ऐप्स का अंतर्राष्ट्रीयकरण: $ से € तक बिना सिरदर्द के

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

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

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

आपके Go एप्लिकेशन को अंतर्राष्ट्रीयकरण (i18n) की आवश्यकता क्यों है?

\n\n

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

\n\n

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

\n\n

i18n और l10n क्या है? शब्दावली को समझें

\n\n

कोड लिखने से पहले, आइए शब्दों को स्पष्ट करें:

\n\n
    \n
  • i18n (Internationalization) — एप्लिकेशन को इस तरह डिज़ाइन करने की प्रक्रिया ताकि इसे कोड को फिर से लिखे बिना विभिन्न भाषाओं और क्षेत्रों के अनुकूल बनाया जा सके। यह आर्किटेक्चर के बारे में है।
  • \n
  • l10n (Localization) — किसी विशिष्ट लोकेल (जैसे, hi-IN, en-US, de-DE) के लिए सामग्री (पाठ अनुवाद, दिनांक प्रारूप, मुद्रा) का अनुकूलन।
  • \n
\n\n

Go एप्लिकेशन के अंतर्राष्ट्रीयकरण के संदर्भ में, i18n का मतलब कोड तैयार करना (स्ट्रिंग के बजाय कुंजियों का उपयोग करना) है, जबकि l10n का मतलब इन कुंजियों को अनुवादों से भरना है।

\n\n

लाइब्रेरी चुनना: go-i18n क्यों?

\n\n

Go में अनुवाद के लिए कई लोकप्रिय लाइब्रेरी हैं। विभिन्न विकल्पों का परीक्षण करने के बाद, अधिकांश प्रोजेक्ट्स के लिए सबसे अच्छा विकल्प nicksnyder का go-i18n है। क्यों?

\n\n
    \n
  • उपयोग में आसानी — न्यूनतम boilerplate कोड।
  • \n
  • बहुवचन (Pluralization) के लिए समर्थन — "1 संदेश", "2 संदेश", "5 संदेश" के लिए सही रूप।
  • \n
  • TOML/YAML/JSON के साथ काम करता है — अपनी पसंद का अनुवाद प्रारूप चुनें।
  • \n
  • टेम्पलेट के लिए समर्थन — अनुवाद स्ट्रिंग में सीधे वेरिएबल डाल सकते हैं।
  • \n
  • कुंजी निकालने के लिए अंतर्निहित उपयोगिता — मैन्युअल रूप से अनुवाद लिखने की आवश्यकता नहीं है।
  • \n
\n\n

व्यावहारिक उदाहरण: Go में बहुभाषी सेवा बनाना

\n\n

आइए Go में एक सरल वेब सर्वर बनाएं जो उपयोगकर्ता का उसकी भाषा में स्वागत करता है।

\n\n

चरण 1: इंस्टॉलेशन और प्रोजेक्ट संरचना

\n\n

लाइब्रेरी इंस्टॉल करें और डायरेक्टरी संरचना बनाएं:

\n\n
go get github.com/nicksnyder/go-i18n/v2/i18n\ngo get golang.org/x/text/language
\n\n

प्रोजेक्ट संरचना:

\n\n
myapp/\n├── main.go\n└── locales/\n    ├── active.en.toml\n    ├── active.hi.toml\n    └── active.de.toml
\n\n

चरण 2: अनुवाद फ़ाइलें बनाएं

\n\n

locales/active.en.toml:

\n\n
[greeting]\ndescription = "उपयोगकर्ता का अभिवादन"\none = "Hello, {{.Name}}!"\nother = "Hello, {{.Name}}!"\n\n[inbox]\ndescription = "इनबॉक्स में संदेशों की संख्या"\none = "You have {{.Count}} new message."\nother = "You have {{.Count}} new messages."
\n\n

locales/active.hi.toml:

\n\n
[greeting]\ndescription = "उपयोगकर्ता का अभिवादन"\none = "नमस्ते, {{.Name}}!"\nother = "नमस्ते, {{.Name}}!"\n\n[inbox]\ndescription = "इनबॉक्स में संदेशों की संख्या"\none = "आपके पास {{.Count}} नया संदेश है।"\nother = "आपके पास {{.Count}} नए संदेश हैं।"
\n\n

हिंदी में बहुवचन रूपों पर ध्यान दें: one और other। Go में बहुवचन (Pluralization) एक शक्तिशाली सुविधा है जो जटिल विभक्ति नियमों को सही ढंग से संभालती है।

\n\n

चरण 3: Go कोड लिखें

\n\n

अब सबसे दिलचस्प हिस्सा — अंतर्राष्ट्रीयकरण कोड लिखना।

ब्लॉग

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