2011-01-17 14 views
7

मैं जावा 1.6 में उपलब्ध लोकेल में अधिक लोकेल जोड़ने का एक तरीका ढूंढ रहा हूं। लेकिन जिन इलाकों में मैं बनाना चाहता हूं उनमें आईएसओ -3166 देश कोड नहीं हैं, न ही आईएसओ -639 भाषा कोड। क्या वैसे भी ऐसा करने का कोई तरीका है? स्थलों मैं जोड़ना चाहते हैं केवल भाषा के नाम में मतभेद है, लेकिन छोटे एक जातीय समूह है, अधिक picky वे अपनी पहचान ;-) के बारे में मिलउपलब्ध जावा लोकेल की सूची का विस्तार कैसे करें

तो मैं

की तरह एक मौजूदा लोकेल कुछ विस्तार के बारे में सोचा
UserDefinedLocale extends Locale { 
    UserDefinedLocale (Locale parentLocale) {...} 
} 

लेकिन java.util.Locale अंतिम है, जो यह विशेष रूप से कठिन चारों ओर कुछ को हैक करने में आता है ...

तो, यह विचार है कि जावा स्थान सूची संपूर्ण है? क्या मैं कुछ और लोकेल याद करने वाला हूं?

उत्तर

1

this answer देखें:

... आप Spiš के माध्यम से अतिरिक्त स्थानों के लिए समर्थन में प्लग कर सकते हैं (here बताया गया है)। उदाहरण के लिए, एक नए लोकेल के लिए डेट फॉर्मेटर प्रदान करने के लिए, आप DateFormatProvider सेवा को लागू करके ऐसा करेंगे। आप मौजूदा कार्यान्वयन को सजाने के द्वारा ऐसा करने में सक्षम हो सकते हैं - मुझे यह देखने के लिए ICU4J लाइब्रेरी पर एक नज़र डालेंगे कि यह आपके द्वारा समर्थित समर्थन प्रदान करता है या नहीं।

+0

धन्यवाद। दुख की बात है कि हर उपयोगकर्ता में हेरफेर करना जेआरई मेरे आवेदन के लिए एक विकल्प नहीं है: "चूंकि लोकेल संवेदनशील सेवा एसपीआई मानक जावा एक्सटेंशन मैकेनिज्म पर आधारित हैं, इसलिए आप उन्हें एक जेएआर फ़ाइल के रूप में पैकेज कर सकते हैं (इसकी मैनिफ़ेस्ट फ़ाइल में कुछ चालें हैं, जो कर सकते हैं यहां पाए जाएं) और इसे विस्तार निर्देशिका में रखें। " – alfonx

4

java.util Locale के लिए जावाडोक पढ़ें।

इसे कहते हैं:

यह भी कहते हैं: "एक स्थानीय वस्तु इस वर्ग में कंस्ट्रक्टर्स का उपयोग कर बनाएँ": "क्योंकि एक स्थानीय वस्तु सिर्फ एक क्षेत्र के लिए एक पहचानकर्ता है, कोई वैधता की जांच आप जब किया जाता है लोकेल का निर्माण करें "

यह भी कहता है: " एक लोकेल ऑब्जेक्ट (संख्याफॉर्मेट) की पहचान करने के लिए तंत्र है जिसे आप प्राप्त करना चाहते हैं। लोकेल केवल वस्तुओं की पहचान करने के लिए एक तंत्र है, न कि कंटेनर के लिए ऑब्जेक्ट्स स्वयं "

और अंत में, getAvailableLocales के लिए जावाडोक() विधि कहते हैं:

"लौटे सरणी जावा क्रम पर्यावरण से और स्थापित LocaleServiceProvider कार्यान्वयन द्वारा समर्थित स्थानों के मिलन का प्रतिनिधित्व करता है" तो तुम सिर्फ एक भाषा कोड का आविष्कार करने की है, जो मानक सूची में नहीं है, और इसे अपने लोकेल के लिए पहचानकर्ता के रूप में उपयोग करें।

+0

_ "तो आपको केवल एक भाषा कोड का आविष्कार करना है जो मानक सूची में नहीं है, और इसे अपने लोकेल के लिए पहचानकर्ता के रूप में उपयोग करें।" _ - क्या आपने 'लोकेल सेवा प्रदाता' स्थापित करने के बारे में उद्धृत बिट को याद किया? –

+0

मैं मानता हूं कि यह एक शॉर्टकट है। लेकिन चूंकि ओपी ने स्पष्ट रूप से समझाया नहीं कि "उपलब्ध लोकल की सूची का विस्तार" करने का क्या अर्थ है, मुझे संदेह था कि वह जो चाहता था उसे सिर्फ एक नया करने के लिए जरूरी था। संसाधन बंडल का उपयोग करने से किसी नए लोकेल के अलावा किसी और चीज की आवश्यकता नहीं है। संख्या और दिनांक स्वरूपण किसी अन्य भाषा से नियमों का पुन: उपयोग कर सकता है। उसके बाद उसे केवल एक नया देश कोड या संस्करण कोड का उपयोग करना होगा। –

संबंधित मुद्दे