JavaScript (Node.js) में अंतर्राष्ट्रीयकरण (i18n)
अंतर्राष्ट्रीयकरण (संक्षेप में i18n — अंग्रेजी के "internationalization" से, जहाँ 18 पहले "i" और अंतिम "n" के बीच के अक्षरों की संख्या को दर्शाता है) सॉफ्टवेयर को डिजाइन और विकसित करने की प्रक्रिया है ताकि कोड में बदलाव किए बिना इसे विभिन्न भाषाओं और क्षेत्रों के लिए आसानी से अनुकूलित किया जा सके। Node.js इकोसिस्टम में कई शक्तिशाली लाइब्रेरीज़ हैं जो इस कार्य को काफी सरल बनाती हैं। इस लेख में हम दो सबसे लोकप्रिय लाइब्रेरीज़ पर विचार करेंगे: i18next और node-polyglot।
अंतर्राष्ट्रीयकरण की आवश्यकता क्यों है?
आधुनिक वेब एप्लिकेशन और सर्वर-साइड सेवाएँ अक्सर विभिन्न देशों के उपयोगकर्ताओं के साथ काम करती हैं। कई भाषाओं का समर्थन उपयोगिता (UX) को बढ़ाता है और दर्शकों का विस्तार करता है। i18n के बिना, डेवलपर्स को एक ही भाषा में स्ट्रिंग्स को हार्ड-कोड करना होगा, जिससे बहुभाषी समर्थन अत्यधिक श्रम-साध्य और त्रुटि-प्रवण हो जाता है।
Node.js में i18n लाइब्रेरीज़ द्वारा हल किए जाने वाले मुख्य कार्य:
- अनुवाद फ़ाइलों का समर्थन (आमतौर पर JSON या YAML)।
- बहुवचन (संख्या के आधार पर शब्दों का सही रूप: "1 कप कॉफी", "2 कप कॉफी", "5 कप कॉफी")।
- स्ट्रिंग्स में वेरिएबल का इंटरपोलेशन (उदाहरण के लिए, "नमस्ते, {{name}}!")।
- अनुवाद संरचना को व्यवस्थित करने के लिए नेस्टेड कुंजियों का समर्थन।
- उपयोगकर्ता की भाषा का स्वचालित पता लगाना (HTTP हेडर, कुकी, सबडोमेन के माध्यम से)।
i18next लाइब्रेरी
i18next JavaScript की दुनिया में अंतर्राष्ट्रीयकरण के लिए शायद सबसे लोकप्रिय और सुविधा संपन्न लाइब्रेरी है। यह ब्राउज़र और Node.js सर्वर दोनों पर काम करती है। i18next प्लगइन्स का एक समृद्ध पारिस्थितिकी तंत्र प्रदान करती है, जिसमें React, Vue, Express और अन्य फ्रेमवर्क के साथ एकीकरण शामिल है।
स्थापना और बुनियादी सेटअप
// npm के माध्यम से स्थापनाnpm install i18nextअनुवाद फ़ाइलें बनाएँ। इन्हें आमतौर पर locales फ़ोल्डर में संग्रहीत किया जाता है:
locales/hi/translation.json
{ "greeting": "नमस्ते, {{name}}!", "coffee": "आपने {{count}} कप कॉफी पी", "coffee_plural": "आपने {{count}} कप कॉफी पी", "menu": { "home": "मुख्य पृष्ठ", "about": "हमारे बारे में" }}locales/en/translation.json
{ "greeting": "Hello, {{name}}!", "coffee": "You drank {{count}} cup of coffee", "coffee_plural": "You drank {{count}} cups of coffee", "menu": { "home": "Home", "about": "About us" }}अब एप्लिकेशन में i18next को इनिशियलाइज़ करें:
const i18next = require('i18next');const fs = require('fs');const path = require('path');
// फ़ाइलों से अनुवाद लोड करेंfunction loadTranslation(lng) { const filePath = path.join(__dirname, 'locales', lng, 'translation.json'); return JSON.parse(fs.readFileSync(filePath, 'utf8'));}
i18next.init({ lng: 'hi', // डिफ़ॉल्ट भाषा fallbackLng: 'en', // आरक्षित भाषा resources: { hi: { translation: loadTranslation('hi') }, en: { translation: loadTranslation('en') } }, interpolation: { escapeValue: false // Node.js के लिए HTML को एस्केप करने की आवश्यकता नहीं है }});
// उपयोगconsole.log(i18next.t('greeting', { name: 'अलेक्सेई' }));// आउटपुट: नमस्ते, अलेक्सेई!
console.log(i18next.t('coffee', { count: 1 }));// आउटपुट: आपने 1 कप कॉफी पी
console.log(i18next.t('coffee', { count: 5 }));// आउटपुट: आपने 5 कप कॉफी पी
console.log(i18next.t('menu.home'));// आउटपुट: मुख्य पृष्ठतुरंत भाषा बदलना
i18next.changeLanguage('en');console.log(i18next.t('greeting', { name: 'Alex' }));// आउटपुट: Hello, Alex!node-polyglot लाइब्रेरी
node-polyglot i18next का एक हल्का और सरल विकल्प है। यह छोटे प्रोजेक्ट्स के लिए या जब
पुस्तकालय में भी
Swift (iOS/macOS) अनुप्रयोगों का कॉन्फ़िगरेशन: सर्वोत्तम अभ्यास और उपकरण
PHP पर छवियों के साथ कार्य: resize, crop (आकार बदलना और क्रॉप करना)
PDFKit JavaScript (Node.js) गाइड: उदाहरणों के साथ पूर्ण ट्यूटोरियल