JavaScript (Node.js) में अंतर्राष्ट्रीयकरण (i18n): i18next लाइब्रेरी
अंतर्राष्ट्रीयकरण (संक्षेप में i18n — अंग्रेज़ी के "internationalization" से, जहाँ 18 पहले 'i' और आखिरी 'n' के बीच के अक्षरों की संख्या है) सॉफ़्टवेयर को डिज़ाइन और डेवलप करने की प्रक्रिया है, जिससे बिना सोर्स कोड बदले इसे विभिन्न भाषाओं और क्षेत्रीय विशेषताओं के अनुकूल बनाया जा सके। आधुनिक Node.js वेब डेवलपमेंट में, ग्लोबल मार्केट में जाने के लिए बहुभाषी एप्लिकेशन बनाना एक ज़रूरत बन गया है।
JavaScript (Node.js सहित) इकोसिस्टम में i18n लागू करने के लिए सबसे लोकप्रिय और शक्तिशाली लाइब्रेरी में से एक है i18next। यह एक लचीली आर्किटेक्चर, कई ट्रांसलेशन फ़ाइल फ़ॉर्मेट, इंटरपोलेशन, प्लूरलाइज़ेशन और कॉन्टेक्स्ट-आधारित अनुवाद का समर्थन करती है। इस लेख में हम सर्वर-साइड पर i18next की इंस्टॉलेशन, कॉन्फ़िगरेशन और उपयोग को विस्तार से समझेंगे।
इंस्टॉलेशन और सेटअप
Node.js प्रोजेक्ट में i18next के साथ शुरुआत करने के लिए, npm के ज़रिए लाइब्रेरी इंस्टॉल करें:
npm install i18next
फ़ाइल सिस्टम से अनुवाद फ़ाइलें लोड करने के लिए i18next-fs-backend पैकेज भी इंस्टॉल करने की सलाह दी जाती है:
npm install i18next-fs-backend
इंस्टॉल करने के बाद, एक इनिशियलाइज़ेशन फ़ाइल बनाएँ, जैसे i18n.js:
const i18next = require('i18next');
const Backend = require('i18next-fs-backend');
i18next.use(Backend).init({
lng: 'hi', // डिफ़ॉल्ट भाषा (हिंदी)
fallbackLng: 'en', // बैकअप भाषा
backend: {
loadPath: './locales/{{lng}}/{{ns}}.json' // अनुवाद फ़ाइलों का पथ
},
interpolation: {
escapeValue: false // HTML को एस्केप न करें (Node.js के लिए)
}
});
module.exports = i18next;
अनुवाद फ़ाइलों की संरचना
प्रोजेक्ट की रूट में locales नामक फ़ोल्डर बनाएँ। इसके अंदर प्रत्येक भाषा के लिए एक सबफ़ोल्डर (जैसे, hi, en, de) बनाएँ। प्रत्येक सबफ़ोल्डर में अनुवाद के लिए JSON फ़ाइलें रखें। आमतौर पर प्रति भाषा एक translation.json फ़ाइल का उपयोग किया जाता है, लेकिन मॉड्यूलरिटी के लिए इसे नेमस्पेस में भी विभाजित किया जा सकता है।
locales/hi/translation.json फ़ाइल का उदाहरण:
{
"welcome": "हमारी वेबसाइट पर आपका स्वागत है!",
"greeting": "नमस्ते, {{name}}!",
"items": "{{count}} आइटम",
"items_plural": "{{count}} आइटम",
"menu": {
"home": "होम",
"about": "हमारे बारे में",
"contact": "संपर्क"
}
}
locales/en/translation.json फ़ाइल का उदाहरण:
{
"welcome": "Welcome to our website!",
"greeting": "Hello, {{name}}!",
"items": "{{count}} item",
"items_plural": "{{count}} items",
"menu": {
"home": "Home",
"about": "About",
"contact": "Contact"
}
}
i18next की मुख्य विशेषताएँ
सरल अनुवाद
अनुवाद प्राप्त करने के लिए t() फ़ंक्शन (translate से) का उपयोग करें:
const i18next = require('./i18n');
// एसिंक्रोनस इनिशियलाइज़ेशन (वास्तविक प्रोजेक्ट में तैयार होने तक प्रतीक्षा करें)
i18next.t('welcome'); // "हमारी वेबसाइट पर आपका स्वागत है!" (यदि lng: 'hi')
वेरिएबल इंटरपोलेशन
डबल कर्ली ब्रैकेट का उपयोग करके स्ट्रिंग में डायनामिक वैल्यू डालें:
i18next.t('greeting', { name: 'राहुल' });
// परिणाम: "नमस्ते, राहुल!"
प्लूरलाइज़ेशन (बहुवचन)
लाइब्रेरी भाषा के नियमों के आधार पर स्वचालित रूप से सही बहुवचन रूप चुनती है। इसके लिए _plural सफ़िक्स वाली कुंजियाँ जोड़ें:
i18next.t('items', { count: 1 }); // "1 आइटम"
i18next.t('items', { count: 5 }); // "5 आइटम"
हिंदी में, i18next बिल्ट-इन प्लूरलाइज़ेशन नियमों का उपयोग करता है जो संख्याओं को संभालता है।
नेस्टेड कुंजियाँ और नेमस्पेस
डॉट के माध्यम से नेस्टेड ऑब्जेक्ट तक पहुँचें:
i18next.t('menu.home'); // "होम"