Java – ResourceBundleの例
`java.util.ResourceBundle`は、国際化(複数言語)に使用されるライブラリです。システム用に構成されたデフォルトのロケールごとにメッセージを返すことができます。このような機能は、世界中で使用されるシステムを開発するときに使用されます。
1.どのように動作するのですか?
ライブラリは、プロパティの命名に使用されるロケールと名前の接尾辞に基づいてプロパティファイルを読み込みます。例えば、 `MyLabels
en
US.properties`という名前のラベルファイルを考えてみましょう。 LocaleがUS-Englishを表すen__USに設定されている場合、このファイルは `ResourceBundle`ユーティリティによって読み込まれます。
ロケールは、その属性を持つリージョンまたはロケーションを表します。ロケールは一般に、アプリケーションを使用しているクライアントに関する詳細を維持するために使用されます。ロケールには、それぞれの場所で使用される場所と言語の属性が含まれています。したがって、Localeは、ユーザが所属する場所を決定することによって正しいラベルファイルを選択するために `ResourceBundle`を支援します。
2.例
トピックをさらに明確にするために、以下の例を見てみましょう。
MyLabels
en
US.properties
how__are__you = How are you?
MyLabels
ms
MY.properties
how__are__you = apa khabar
Application.java
package com.techfou;
import java.util.Locale;
import java.util.ResourceBundle;
public class Application {
public static void main(String[]args) {
//en__US
System.out.println("Current Locale: " + Locale.getDefault());
ResourceBundle mybundle = ResourceBundle.getBundle("MyLabels");
//read MyLabels__en__US.properties
System.out.println("Say how are you in US English: " + mybundle.getString("how__are__you"));
Locale.setDefault(new Locale("ms", "MY"));
//read MyLabels__ms__MY.properties
System.out.println("Current Locale: " + Locale.getDefault());
mybundle = ResourceBundle.getBundle("MyLabels");
System.out.println("Say how are you in Malaysian Malaya language: " + mybundle.getString("how__are__you"));
}
}
このコードを実行すると、以下の出力が得られます。
Current Locale: en__US Say how are you in US English: How are you? Current Locale: ms__MY Say how are you in Malaysian Malaya language: apa khabar
これは、ロケールセットに設定されているデフォルト値に応じて、出力に表示されます。このユーティリティは、主にWebアプリケーションで使用され、Webブラウザがリモートユーザのロケールを把握するのに役立ちます。これにより、Webサイトを特定の言語で表示することが可能になります。
ソースコードをダウンロードする
ダウンロードする –
ResourceBundleExample.zip(8 KB)
参考文献
Javadocs]。
https://docs.oracle.com/javase/8/docs/api/java/util/ResourceBundle.html
[ResourceBundle
Javadocs]。
利用可能なロケール