1

正しいMessegesBundle_en_GB.propertiesファイルから読み取るJavaで次のResourceBundleを作成しました。

ResourceBundle labels = 
        ResourceBundle.getBundle("MessegesBundle",new Locale( "en", "GB"));
labels.getString("Test");

ただし、別の言語(スコットランドゲール語)を使用しようとすると、デフォルトでen_GBに戻ります。

ResourceBundle labels = 
        ResourceBundle.getBundle("MessegesBundle",new Locale( "gd", "GB"));
system.out.println(labels.getLocale()); // returns en-GB
labels.getString("Test");

から利用可能なロケールのリストを調べてLocale.getAvailableLocales();も、「gd」は表示されません。

これは、I18Nに使用できないことを意味しますResourceBundleか、それともゲール語を追加するかResourceBundle、正しいプロパティファイルを強制的に使用する方法がありますか?

ありがとう

4

2 に答える 2

1

によって返されるロケールはgetAvailableLocales()あまり重要ではありません。以前のように新しいロケールを作成できるからですnew Locale( "gd", "GB")

Locale Java docsに記載されているように、ロケールの主な目的は、リソース (リソース バンドル、数値形式など) を識別することです。 を識別する文字列はLocale、作成時にも検証されません。

私の推測では、クラスパスで利用可能な MessegesBundle_gd_GB.properties リソースがありません。

于 2012-08-21T19:44:08.590 に答える
0

サーバーにロードするには、その文字セット言語をインストールする必要があります。ただし、ページを提供するときに「強制」することはできますが、そのページ言語を割り当てるためのリクエストとして、ユーザーから具体的に情報を取得する必要があります。

于 2012-08-21T19:44:33.913 に答える