2011-08-15 9 views
0

ロケールを作成し、そのロケールを使用してResourceBundleを作成しようとします。フィンランドのロケールを使用すると、ResourceBundleはそれを受け入れる/理解しないように見えますが、代わりにヌルのロケールを取得します。英語のロケールを使用すると、うまく動作しているようです。ResourceBundleは "en"ロケールのみを認識します

Locale obj = new Locale("en"); 
ResourceBundle resource = ResourceBundle.getBundle("web_resources", obj); 
log.debug(resource.getLocale()); 
log.debug(obj); 

ログ "en"、 "en"。

Locale obj = new Locale("fi"); 
ResourceBundle resource = ResourceBundle.getBundle("web_resources", obj); 
log.debug(resource.getLocale()); 
log.debug(obj); 

ログ ""、 "fi"。

私はfr(フランス語)とドイツ語(デ)のロケールもテストしました。どちらも動作しません。国コードを追加することは役に立たなかったようです。私は何が欠けていますか?

+0

これをサポートするためにアプリケーションに実際にどのファイルがありますか? –

答えて

0

この問題は1か月ほど前に発見されました。リソースファイルの文字エンコーディングが間違っています。私が正しく覚えていれば、ファイルはUTF-8であるはずですが、ある時点でエンコーディングがISO 8859-4に変更されています。

愚かな間違いですが、にもかかわらず貴重な教訓がありました。

1

classpathのルートにweb_resources_fi.propertiesのweb_resources_fi.classがありますか?そうでない場合、ResourceBundle.getBundleはweb_resources.classまたはweb_resources.propertiesを検索します(デフォルトのロケールをベース名に追加したファイルを探した後)。

この方法の詳細については、http://download.oracle.com/javase/6/docs/api/java/util/ResourceBundle.html#getBundle%28java.lang.String,%20java.util.Locale,%20java.lang.ClassLoader%29を参照してください。

+0

web_resources.properties、web_resources_en.properties、* _fi.propertiesおよび* _fi_FI.propertiesがあります。 * _en.propertiesファイルで何かを変更して、ロードされているファイルであるかどうかを確認してください。そうだった。 –

関連する問題