2017-01-06 5 views
0

英語、アラビア語、ペルシア語の3言語でウェブサイトを作成しています。このウェブサイトを相対的な言語で表示しようとしています。例えば、ブラウザの言語がアラビア語であるならば、ウェブサイトはアラビア語で表示され、そのがペルシャであるならば、ペルシャ語のウェブサイトは、私がこれまで何をしたかここに表示ブラウザロケールをJavaに設定できませんResourceBundle

次のようになります。

private Locale locale(){ 
     Locale locale=null;  
      if(country == null){ 
       locale = request.getLocale(); 
       if(locale.equals("ar")){      
        locale  = new Locale("ar", "AE");     
       } 
       else if(locale.equals("fa")){     
        locale  = new Locale("fa", "IR"); 
       } 
       else if(locale.equals("en")){     
        language = "en"; 
        locale  = new Locale("en", "US"); 
       } 

      }else{   
       locale = new Locale(language, country); 
      } 
System.out.println("return---locale=>"+locale);   
    return locale; 
    } 

この方法はlocale=>ar

を印刷します
ResourceBundle rb = ResourceBundle.getBundle("LabelBundles.Labels",locale()); 

if(country == null){}ブロックは機能しませんが、​​ は問題なく動作しています。 locale = new Locale();language _ COUNTRYはなぜそので唯一の国せずに「AR」と出力を与えている2つの値を必要としながら

2)locale = request.getLocale();出力が「AR」とは?

教えてくださいと感謝見越して

答えて

0

request.getLocaleは()ロケールではなく、文字列を返します。したがって

locale.equals("ar") 

は、常にfalseになります。文字列のみがStringに等しいことができます。また、ロケールはロケールに等しいことができます。

あなたはしかし、あなたの2番目の質問については

if (locale.getLanguage().equals("ar")) 

を行うことができ、それはthe javadocによって答えはもちろんです。読んだ場合、ロケールは言語、オプションの国、オプションのバリアントであることがわかります。そして、引数として言語だけを取るコンストラクタがあります。

javadocを読んでください。それはあなたが学ぶ方法です。

+1

私の心の底からありがとう。今はうまくいきます。あなたはjavadocsについてよく言った。私は主な問題は、なぜこのような問題に直面しているのjavadocsを読んで気にしないということです。 – Ghayel

関連する問題