0

JDKが提供するLocaleクラスとResourceBundleクラスの関係について教えてください。これは、この回答で示されているi18nとl10nの違いと同じですか?

4

1 に答える 1

1

LocaleとResourceBundleの関係は、Localeは適切なプロパティファイルを読み取るために使用されます。基本的に、ResourceBundle.ControlクラスはLocaleオブジェクトを受け取り、プロパティファイルのベース名を指定して、最も一致するものを見つけようとします。例えば:

ResourceBundle rb = ResourceBundle.getbundle("messages", Locale.forLanguageTag("zh-TW");

これを行うと、ResourceBundle.Controlはmesssages_zh_TW.properties、messages_zh-Hant-TW.properties、messages_zh-Hant.properties、messages_zh.propertiesを検索し、特定のいずれも見つからない場合は最後にmessages.propertiesにフォールバックします。リソースファイル。

編集

最後にもう1つ追加します。Localeパラメータを省略するResourceBundle.getBundle(String)と、デフォルトのロケールに基づいてプロパティファイルが返されます。これは次のように取得できます。

Locale default = Locale.getDefault(Locale.Category.DISPLAY);

(デスクトップアプリケーションのコンテキストでは)過度の入力は不要に思えるかもしれませんが、コードを理解しやすくするため、常にロケールを渡すことをお勧めします。

于 2012-10-06T09:59:41.740 に答える