2010-06-19 14 views
10

वर्तमान में, मैं जानना चाहता हूं कि मेरे आवेदन में कौन सी गुण फ़ाइल लोड की जा रही है।लोकेल तुलना करने के लिए सही तरीका

Hello 
Locale.SIMPLIFIED_CHINESE's language : zh 
Locale.CHINA's language : zh 
Locale.TRADITIONAL_CHINESE's language : zh 
Locale.CHINESE's language : zh 
Locale.SIMPLIFIED_CHINESE's country : CN 
Locale.CHINA's country : CN 
Locale.TRADITIONAL_CHINESE's country : TW 
Locale.CHINESE's country : 

इससे पहले, कि क्या गुण फ़ाइल Bundle_zh_CH.properties लोड किया जाएगा, मैं निम्नलिखित तुलना प्रदर्शन कर रहा हूँ निर्धारित करने के लिए:

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 

package example0; 

import java.util.Locale; 

/** 
* 
* @author yccheok 
*/ 
public class Main { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     //Locale.setDefault(Locale.SIMPLIFIED_CHINESE);  // Bundle_zh_CH.properties will be loaded. 
     //Locale.setDefault(Locale.CHINA);     // Bundle_zh_CH.properties will be loaded. 
     //Locale.setDefault(Locale.TRADITIONAL_CHINESE); // Bundle.properties will be loaded. 
     //Locale.setDefault(Locale.CHINESE);    // Bundle.properties will be loaded. 

     String Hello = java.util.ResourceBundle.getBundle("example0/Bundle").getString("HELLO"); 
     System.out.println(Hello); 

     System.out.println("Locale.SIMPLIFIED_CHINESE's language : " + Locale.SIMPLIFIED_CHINESE.getLanguage()); 
     System.out.println("Locale.CHINA's language : " + Locale.CHINA.getLanguage()); 
     System.out.println("Locale.TRADITIONAL_CHINESE's language : " + Locale.TRADITIONAL_CHINESE.getLanguage()); 
     System.out.println("Locale.CHINESE's language : " + Locale.CHINESE.getLanguage()); 

     System.out.println("Locale.SIMPLIFIED_CHINESE's country : " + Locale.SIMPLIFIED_CHINESE.getCountry()); 
     System.out.println("Locale.CHINA's country : " + Locale.CHINA.getCountry()); 
     System.out.println("Locale.TRADITIONAL_CHINESE's country : " + Locale.TRADITIONAL_CHINESE.getCountry()); 
     System.out.println("Locale.CHINESE's country : " + Locale.CHINESE.getCountry()); 
    } 

} 

निम्नलिखित उत्पादन होता है।

if (Locale.getDefault() == Locale.SIMPLIFIED_CHINESE) 

हालांकि, SIMPLIFIED_CHINESE की तुलना में कुछ लोकेल अन्य Bundle_zh_CH.properties रूप में अच्छी तरह से लोड होगा।

ऐसा करने के लिए मेरे लिए विश्वसनीय तरीका क्या है?

मैं

if (Locale.getDefault() == Locale.SIMPLIFIED_CHINESE || Locale.getDefault() == Locale.China) 

या

if (Locale.getDefault().equals("CN")) 

उत्तर

21

पर भरोसा न करें दूँ ऑपरेटर तुलना के बराबर होती है के रूप में आप अपने सार्वजनिक कंस्ट्रक्टर्स के साथ नए लोकेल उदाहरण बना सकते हैं।

Locale simpChinese = new Locale("zh","CN",""); 
System.out.println(simpChinese == Locale.SIMPLIFIED_CHINESE); 
System.out.println(simpChinese.equals(Locale.SIMPLIFIED_CHINESE)); 

प्रिंट:: निम्न कोड में

false 
true 
+2

हमेशा 'साथ .equals (वस्तु) वस्तुओं के बीच समानता की जाँच' – Radu

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