java - Internationalization in a website -


मैं ResourceBundle विधि getBundle (Propertyfilename, Local.languagename) वर्ग का उपयोग कर रहा हूँ जो स्थानीय

rb = ResourceBundle.get बंडल ("लोकेल स्ट्रिंग्स", लोकेल। एआरएबीएसी); - समर्थित नहीं है

अरबी, बैंड अंग्रेजी का समर्थन करने के लिए मैं इसका उपयोग कैसे कर सकता हूं।

सबसे पहले, वास्तव में लोकेल .ARABIC स्थिर नहीं है लेकिन यह आपको कोड कोड को लेकर लोकेल कन्स्ट्रक्टर का प्रयोग करके खुद को परिभाषित करने से रोक नहीं सकता:

  सार्वजनिक स्थिर अंतिम लोकेल अरबीक = नया लोकेल ("एआर") ;  

दूसरा, गुण फ़ाइलें ResourceBundle के अंतर्गत हैं InputStream के रूप में ISO-8859-1 < / कोड> एन्कोडिंग इसलिए आपको वास्तव में दो अलग-अलग प्रॉपर्टी फ़ाइलों की ज़रूरत होगी, इनमें से एक UTF-8 एन्कोडिंग जो आप मूल्यों को बनाए रखने के लिए उपयोग करते हैं (जैसे text_ar.properties.utf8 ) और अन्य में ISO-8859-1 एन्कोडिंग (जैसे text_ar.properties ) जो आप जावा अनुप्रयोग को प्रदान करने के लिए उपयोग करते हैं। UTF-8 फ़ाइल से ISO-8859-1 फ़ाइल से रूपांतरित करने के लिए आप native2asci उपकरण का उपयोग कर सकते हैं:

  c: \ path \ to \ jdk \ bin \ native2ascii.exe -encoding UTF-8 text_ar.properties.utf8 text_ar.properties  

यह गैर ISO को परिवर्तित करेगा -8859-1 अक्षरों को यूनिकोड कोडपॉइंट। जैसे मुहिम बन जाएगा \ u0627 \ u0644 \ u0642 \ u064a \ u0645 \ u0629 (जो इस तरह से इसे अचूक बना देता है, इसलिए संपादन के लिए मूल रखने की सिफारिश)।

या, अगर आप पहले से जावा 6 पर हैं, तो आप डिफ़ॉल्ट रूप से UTF-8 का उपयोग करके गुणों की फ़ाइलों का उपयोग कर सकते हैं।

एक किकऑफ़ उदाहरण मानते हुए यह है कि एक "सादे" UTF-8 इनकोडिंग text_ar.properties निम्नलिखित सामग्री के साथ classpath में फ़ाइल:

  कुंजी = किमुम्बा   
<पूर्व> पैकेज com.stackoverflow.q2183245; आयात java.io.IOException; Import java.io.InputStream; आयात करें java.io.InputStreamReader; Import java.net.URL; आयात करें java.net.URLConnection; Import java.util.Locale; आयात करें java.util.PropertyResourceBundle; आयात करें java.util.ResourceBundle; आयात करें java.util.ResourceBundle.Control; सार्वजनिक कक्षा टेस्ट {निजी स्थिर अंतिम लोकेल अराबीक = नया लोकेल ("एआर"); निजी स्थिर अंतिम नियंत्रण UTF8CONTROL = नया UTF8Control (); सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग अरिज []) अपवाद फेंकता {ResourceBundle bundle = ResourceBundle.getBundle ("text", ARABIC, UTF8CONTROL); Println (bundle.getString ( "कुंजी")); // प्रिंटों القيمة}} वर्ग UTF8Control फैली नियंत्रित {सार्वजनिक ResourceBundle newBundle (स्ट्रिंग basename, लोकेल लोकेल, स्ट्रिंग प्रारूप, classloader लोडर, बूलियन पुनः लोड) फेंकता IllegalAccessException, InstantiationException, IOException {स्ट्रिंग bundleName = toBundleName (basename, स्थान); स्ट्रिंग संसाधननाम = toResourceName (बंडलनाम, "गुण"); संसाधन बंडल बंडल = नल; InputStream स्ट्रीम = नल; अगर (पुनः लोड करें) {URL url = loader.getResource (resourceName); अगर (url! = नल) {URL कनेक्शन कनेक्शन = url.openConnection (); अगर (कनेक्शन! = नल) {connection.setUseCaches (गलत); स्ट्रीम = connection.getInputStream (); }}} {Stream = loader.getResourceAsStream (resourceName); } If (stream! = Null) {try {// इस लाइन को यूटीएफ -8 के रूप में गुण फाइलों को पढ़ने के लिए बदल दिया गया है। बंडल = नया प्रॉपर्टीरासबंडल (नया इंटस्टस्ट्रीम रीडर (स्ट्रीम, "यूटीएफ -8")); } अंत में {stream.close (); }} वापसी बंडल; }}

नोट: newBundle () विधि मूल स्रोत से copypasted है और यदि आप आप चाहते हैं थोड़ा, कोड उदाहरण कम वर्बोज़ बनाने के लिए बदल गया मूल करने के लिए इसे वापस कर सकते हैं और सिर्फ PropertyResourceBundle यह एक UTF-8 ले जाने पर निर्माण इनकोडिंग रीडर के साथ लाइन बदल जाते हैं। < / p>


Comments

Popular posts from this blog

sql - dynamically varied number of conditions in the 'where' statement using LINQ -

asp.net mvc - Dynamically Generated Ajax.BeginForm -

Debug on symbian -