Java Language
स्थानीयकरण और अंतर्राष्ट्रीयकरण
खोज…
टिप्पणियों
जावा आपके अनुप्रयोगों को स्थानीय बनाने के लिए एक शक्तिशाली और लचीली व्यवस्था के साथ आता है, लेकिन यह एक प्रोग्राम के साथ दुरुपयोग और हवा करना भी आसान है जो उपयोगकर्ता के लोकेल की अवहेलना करता है या इसलिए करता है, और इसलिए वे आपके कार्यक्रम के व्यवहार की अपेक्षा करते हैं।
आपके उपयोगकर्ता उन डेटा को स्थानीय स्वरूप में देखने की अपेक्षा करेंगे, जिनका वे उपयोग कर रहे हैं और मैन्युअल रूप से इसका समर्थन करने का प्रयास एक मूर्खतापूर्ण कार्य है। यहां उन अलग-अलग तरीकों का एक छोटा सा उदाहरण है, जिनसे उपयोगकर्ताओं को आपके द्वारा निश्चित सामग्री को "हमेशा" प्रदर्शित करने की उम्मीद है।
खजूर | नंबर | स्थानीय मुद्रा | विदेशी मुद्रा | दूरियां | |
---|---|---|---|---|---|
ब्राज़िल | |||||
चीन | |||||
मिस्र | |||||
मेक्सिको | 20/3/16 | 1.234,56 | $ 1,000.50 | 1,000.50 USD | |
यूके | 20/3/16 | 1,234.56 | £ 1,000.50 | 100 किमी | |
अमेरीका | 3/20/16 | 1,234.56 | $ 1,000.50 | 1,000.50 एमएक्सएन | 60 मील |
सामान्य संसाधन
- विकिपीडिया: अंतर्राष्ट्रीयकरण और स्थानीयकरण
जावा संसाधन
- जावा ट्यूटोरियल: अंतर्राष्ट्रीयकरण
- ओरेकल: अंतर्राष्ट्रीयकरण: जावा प्लेटफॉर्म में लोकेल को समझना
- JavaDoc:
Locale
"स्थान" का उपयोग करके स्वचालित रूप से स्वरूपित तिथियाँ
SimpleDateFormatter
एक चुटकी में महान है, लेकिन जैसा कि नाम से पता चलता है कि यह अच्छी तरह से पैमाने पर नहीं है।
यदि आप अपने आवेदन पर अपने सभी अंतर्राष्ट्रीय उपयोगकर्ताओं को "MM/dd/yyyy"
हार्ड-कोड देते हैं, तो आप खुश नहीं होंगे।
जावा को आपके लिए काम करने दें
अपने उपयोगकर्ता के लिए सही स्वरूपण को पुनः प्राप्त करने के लिए DateFormat
में static
विधियों का उपयोग करें। एक डेस्कटॉप एप्लिकेशन के लिए (जहां आप डिफ़ॉल्ट लोकेल पर भरोसा करेंगे), बस कॉल करें:
String localizedDate = DateFormat.getDateInstance(style).format(date);
कहाँ style
स्वरूपण स्थिरांक (में से एक है FULL
, LONG
, MEDIUM
, SHORT
, आदि) में निर्दिष्ट DateFormat
।
सर्वर-साइड एप्लिकेशन के लिए, जहां उपयोगकर्ता अनुरोध के भाग के रूप में अपना स्थान निर्दिष्ट करता है, आपको इसे getDateInstance()
बजाय स्पष्ट रूप से पास करना चाहिए:
String localizedDate =
DateFormat.getDateInstance(style, request.getLocale()).format(date);
स्ट्रिंग तुलना
मामले की अनदेखी दो स्ट्रिंग्स की तुलना करें:
"School".equalsIgnoreCase("school"); // true
उपयोग न करें
text1.toLowerCase().equals(text2.toLowerCase());
ऊपरी और निचले मामले को परिवर्तित करने के लिए भाषाओं के अलग-अलग नियम हैं। एक 'I' को अंग्रेजी में 'i' में बदल दिया जाएगा। लेकिन तुर्की में एक 'I' एक 'ı' बन जाता है। यदि आपको toLowerCase()
उपयोग करना है जो एक Locale
: String.toLowerCase(Locale)
अपेक्षा ओवरलोड का उपयोग करता है।
मामूली अंतर की अनदेखी करने वाले दो तारों की तुलना:
Collator collator = Collator.getInstance(Locale.GERMAN);
collator.setStrength(Collator.PRIMARY);
collator.equals("Gärten", "gaerten"); // returns true
प्राकृतिक भाषा के आदेश का सम्मान करते हुए स्ट्रिंग्स को क्रमबद्ध करें, मामले को अनदेखा करें (उपयोग की कोलेशन कुंजी:
String[] texts = new String[] {"Birne", "äther", "Apfel"};
Collator collator = Collator.getInstance(Locale.GERMAN);
collator.setStrength(Collator.SECONDARY); // ignore case
Arrays.sort(texts, collator::compare); // will return {"Apfel", "äther", "Birne"}
स्थान
java.util.Locale
वर्ग का उपयोग किसी दिए गए पाठ, संख्या, तिथि या ऑपरेशन को स्थानीय बनाने के लिए "भौगोलिक, राजनीतिक या सांस्कृतिक" क्षेत्र का प्रतिनिधित्व करने के लिए किया जाता है। एक स्थानीय वस्तु में इस प्रकार एक देश, क्षेत्र, भाषा, और भाषा का एक प्रकार भी हो सकता है, उदाहरण के लिए किसी देश के एक निश्चित क्षेत्र में बोली जाने वाली बोली, या उस देश की तुलना में एक अलग देश में बोली जाने वाली भाषा जहाँ से उत्पत्ति होती है।
लोकेल का उदाहरण उन घटकों को दिया जाता है जिन्हें अपने कार्यों को स्थानीय बनाने की आवश्यकता होती है, चाहे वह इनपुट, आउटपुट को परिवर्तित कर रहा हो, या केवल आंतरिक संचालन के लिए आवश्यक हो। लोकेल वर्ग अपने आप से कोई अंतर्राष्ट्रीयकरण या स्थानीयकरण नहीं कर सकता है
भाषा: हिन्दी
भाषा में ISO 639 2 या 3 वर्ण भाषा कोड या 8 वर्णों का एक पंजीकृत भाषा उपटैग होना चाहिए। यदि किसी भाषा में 2 और 3 वर्ण भाषा कोड है, तो 2 वर्ण कोड का उपयोग करें। भाषा कोड की एक पूरी सूची IANA भाषा सबटैग रजिस्ट्री में पाई जा सकती है।
भाषा कोड असंवेदनशील होते हैं, लेकिन लोकेल वर्ग हमेशा भाषा कोड के लोअरकेस संस्करण का उपयोग करता है
एक लोकेल बनाना
java.util.Locale
उदाहरण बनाना चार अलग-अलग तरीकों से किया जा सकता है:
Locale constants
Locale constructors
Locale.Builder class
Locale.forLanguageTag factory method
जावा रिसोर्सबंडल
आप इस तरह एक ResourceBundle उदाहरण बनाएँ:
Locale locale = new Locale("en", "US");
ResourceBundle labels = ResourceBundle.getBundle("i18n.properties");
System.out.println(labels.getString("message"));
विचार करें कि मेरे पास एक संपत्ति फ़ाइल है i18n.properties
:
message=This is locale
आउटपुट:
This is locale
लोकेल सेट करना
यदि आप अन्य भाषाओं का उपयोग करके राज्य को पुन: उत्पन्न करना चाहते हैं, तो आप setDefault()
विधि का उपयोग कर सकते हैं। इसका उपयोग:
setDefault(Locale.JAPANESE); //Set Japanese