जावा में अंतर्राष्ट्रीयकरण (i18n): एप्लिकेशन को बहुभाषी बनाना
अंतर्राष्ट्रीयकरण (अक्सर संक्षेप में i18n — internationalization शब्द से, जहाँ 18 पहले 'i' और अंतिम 'n' के बीच के अक्षरों की संख्या है) — सॉफ़्टवेयर को इस तरह डिज़ाइन करने की प्रक्रिया है कि इसे स्रोत कोड को बदले बिना विभिन्न भाषाओं और क्षेत्रीय विशेषताओं के अनुकूल बनाया जा सके। Java में, यह कार्य अंतर्निहित API: java.util.Locale, java.util.ResourceBundle और स्वरूपण के लिए कक्षाओं के सेट के साथ सुरुचिपूर्ण और शक्तिशाली तरीके से हल किया जाता है।
इस लेख में, हम मानक टूल का उपयोग करके Java एप्लिकेशन में कई भाषाओं के लिए समर्थन लागू करने का तरीका समझेंगे। आप सीखेंगे कि स्थानीयकरण फ़ाइलें कैसे बनाएं, गतिशील रूप से भाषा कैसे बदलें, और संख्याओं, दिनांकों और मुद्राओं को सही ढंग से कैसे प्रारूपित करें।
Java में i18n के मुख्य घटक
Java अंतर्राष्ट्रीयकरण के लिए तीन प्रमुख तत्व प्रदान करता है:
- Locale — एक ऑब्जेक्ट जो किसी विशिष्ट भाषा और क्षेत्र का प्रतिनिधित्व करता है (उदाहरण के लिए, रूस में रूसी भाषा —
ru_RU, अमेरिका में अंग्रेज़ी —en_US)। - ResourceBundle —
.propertiesफ़ाइलों या कक्षाओं से स्थानीयकृत संसाधनों (स्ट्रिंग, संदेश, लेबल) को लोड करने के लिए क्लास। - फ़ॉर्मेटर — पैकेज
java.text(NumberFormat,DateFormat,MessageFormat) से कक्षाएं संख्याओं, दिनांकों और मिश्रित संदेशों को सही ढंग से प्रदर्शित करने के लिए।
चरण 1: संसाधन फ़ाइलें बनाना
स्थानीयकृत स्ट्रिंग्स को संग्रहीत करने का पारंपरिक तरीका .properties फ़ाइलें हैं। वे निम्नलिखित नियम के अनुसार बनाई जाती हैं:
Messages.properties # डिफ़ॉल्ट फ़ाइल (आमतौर पर अंग्रेज़ी)Messages_ru_RU.properties # रूसी भाषा के लिए (रूस)Messages_de_DE.properties # जर्मन के लिए (जर्मनी)Messages_fr.properties # फ़्रेंच के लिए (बिना क्षेत्र निर्दिष्ट किए)Messages.properties फ़ाइल की सामग्री का उदाहरण (अंग्रेज़ी, डिफ़ॉल्ट):
welcome.message = Welcome to our application!farewell.message = Goodbye!date.format = dd/MM/yyyyMessages_ru_RU.properties फ़ाइल की सामग्री का उदाहरण (रूसी):
welcome.message = Добро пожаловать в наше приложение!farewell.message = До свидания!date.format = dd.MM.yyyyमहत्वपूर्ण: फ़ाइलें ISO 8859-1 (Latin-1) एन्कोडिंग में होनी चाहिए या इस एन्कोडिंग में शामिल नहीं होने वाले वर्णों के लिए Unicode एस्केपिंग का उपयोग करना चाहिए। रूसी अक्षरों के लिए एस्केपिंग की आवश्यकता होगी, उदाहरण के लिए \\u0414\\u043E\\u0431\\u0440\\u043E। हालाँकि, आधुनिक विकास वातावरण (IntelliJ IDEA, Eclipse) और Maven/Gradle के साथ बिल्ड करते समय, यह अक्सर स्वचालित होता है।
चरण 2: कोड में संसाधन लोड करना
स्थानीयकृत स्ट्रिंग्स का उपयोग करने के लिए, बस एक Locale ऑब्जेक्ट बनाएं और संबंधित ResourceBundle प्राप्त करें:
import java.util.Locale;import java.util.ResourceBundle;
public class I18nDemo { public static void main(String[] args) { // रूसी भाषा के लिए लोकेल बनाएं Locale ruLocale = new Locale("ru", "RU"); // बंडल लोड करें (फ़ाइल का आधार नाम - "Messages") ResourceBundle bundle = ResourceBundle.getBundle("Messages", ruLocale);
// स्ट्रिंग्स प्राप्त करें String welcome = bundle.getString("welcome.message"); String farewell = bundle.getString("farewell.message");
System.out.println(welcome); // Добро пожаловать в наше приложение! System.out.println(farewell); // До свидания! }}यदि किसी विशिष्ट लोकेल के लिए फ़ाइल नहीं मिलती है, तो Java स्वचालित रूप से डिफ़ॉल्ट फ़ाइल (Messages.properties) का उपयोग करता है।
चरण 3: गतिशील भाषा स्विचिंग
वेब एप्लिकेशन में