JDKが提供するLocaleクラスとResourceBundleクラスの関係について教えてください。これは、この回答で示されているi18nとl10nの違いと同じですか?
質問する
492 次
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 に答える