2011-07-02 13 views
16

आप देश कोड US, FR (आईएसओ-3166-1 अल्फ़ा -2 देश कोड), तुम कैसे लोकेल कोड (Locale.US, Locale.FRANCE) इस तरह कुछ करने के लिए मिलता है है:यदि आपके पास आईएसओ देश कोड 'यूएस`,' एफआर` है, तो आप लोकेल कोड (`लोकेल.यूएस ',' लोकेल.फ्रेंस`) कैसे प्राप्त करते हैं?

System.out.println(DecimalFormat.getCurrencyInstance(Locale.US).format(12.34)); 
System.out.println(DecimalFormat.getCurrencyInstance(Locale.FRANCE).format(12.34)); 

$12.34 
12,34 € 

उत्तर

13

आप नहीं कर सकते, क्योंकि लोकेल को भाषा रखने के लिए इस्तेमाल किया जाता है, देश नहीं। यह एक विशिष्ट देश के लिए एक भाषा, और इस देश में एक विशिष्ट संस्करण के लिए हो सकता है, लेकिन यह पहले एक भाषा है। और एक भाषा और देश के बीच कोई एक-एक संबंध नहीं है। अधिकांश देशों में विभिन्न भाषाओं में बोली जाती है, और कई देशों में कई भाषाएं हैं।

यदि आपके पास भाषा के लिए देश कोड था, तो आप new Locale(code) का उपयोग कर सकते हैं। लेकिन एक देश कोड के साथ, आप कर सकते हैं getAvailableLocales पर कॉल करें, परिणामों के माध्यम से लूप करें, और अपना देश कोड प्राप्त करें। लेकिन कई लोग हो सकते हैं।

2

आप Locale.getAvailableLocales() के माध्यम से वातावरण बना सकते हैं,

new Locale("en", "US") 
new Locale("fr", "FR") 

या

पुनरावृति आप अपने स्थान को खोजने और फिर उस उदाहरण का उपयोग तक।

1

जावा 7 में Locale.Builder है, लेकिन बीओआर एथैट एक आसान तरीका नहीं है। हालांकि एक उपयोगिता विधि बना सकते हैं: अगर locale.getCountryCode().equals(countryCodeParam) प्रत्येक चेक के लिए

  1. पाश Locale.getAvailableLocales()
  2. और वापसी में यह
2

एक स्थान ISO-639 भाषा कोड द्वारा सबसे महत्वपूर्ण बात यह निर्दिष्ट किया जाता है, यह भी संभव एक आईएसओ -3166 देश कोड और एक संस्करण। Locale कक्षा में रचनाकार हैं जो या तो केवल एक भाषा कोड लेते हैं, या इसके अतिरिक्त एक देश कोड, या अतिरिक्त रूप से एक संस्करण।

यदि आपके पास केवल देश कोड है, तो आपको सबसे पहले एक मानचित्र की आवश्यकता होती है जो इसे एक भाषा कोड में परिवर्तित करता है - लेकिन यह एक अनूठा परिणाम नहीं देता है, कई देश एक से अधिक आधिकारिक भाषा का उपयोग करते हैं।

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