2017-02-08 13 views
0

私は次のようにJavaのResourceBundleの中で動的にロケールを設定しようとしています:私は、ブラウザの言語を検出し、それを設定するには、私の次のコード内のすべての可能性を網羅しようとしましたが、存在しない場合は
ResourceBundle rb = ResourceBundle.getBundle(pathAndFilename,locale());のJavaのResourceBundleロケール()NULL例外

バンドルで、その後はen_USがデフォルト言語として使用することができます:私は間違いを犯していますどこ

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

    private Locale locale(){ 
     Locale locale=null;  
      if(country == null){ 
       locale = setLanguage();     
      }else{   
       locale = new Locale(language, country); 
      } 
    return locale; 
    } 

が、メソッドのロケール()null_NULL
を返して教えてください?

私は多くのことを探索したが

+1

質問直面した場合、私に教えてください希望の動作が含まれている必要があり、特定の問題

private Locale locale(){ Locale locale=null; if(country == null || country.equals("null")){ locale = setLanguage(); }else{ locale = new Locale(language, country); } return locale; } 

か(「なぜこのコードは動作しないの?」):だからif(country == null || country.equals("null")){として、それを変更しますエラーとその問題自体を再現するのに必要な最短のコードです。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:[最小限で完全で検証可能なサンプルの作成方法](http://stackoverflow.com/help/mcve) –

+0

質問に詳しい情報を追加しました。まだ明確でない場合は教えてください – usr169

答えて

0

はあなたが値として「ヌル」を取得しているかもしれません以下の方法。あなたはまだ問題にデバッグの助けを求める

+0

あなたは私の日を救う!私はこの3時間の問題を分類していましたが、この点を理解することはできませんでした。どうもありがとうございました – usr169

0

は(あなたのsetLanguage内のコードを変更してみてください、私の間違いを見つけることができない)方法: LocaleクラスのJavadocのから

を取らISO 639がstandard-いくつか安定していません言語のコードが変更されました。ロケールのコンストラクタは、コードが変更された言語の新しいコードと古いコードの両方を認識しますが、この関数は常に古いコードを返します。あなたはそのコードが変更された、実行しない特定の言語をチェックしたい場合:

if (locale.getLanguage().equals("he")) // BAD! 
    ... 

代わりに、

if (locale.getLanguage().equals(new Locale("he").getLanguage())) 
    ... 
+0

私のコードとアドバイスを最適化してくれてありがとうございますが、null_NULLをどのようにコントロールするのに役立ちますか? – usr169

+0

私は言われた方法から値が来ることを期待していました:/それは助けになりませんでした。 – Nayriva