リソースバンドル
日本語 | 資源束 |
英語 | resource bundle |
ふりがな | りそーすばんどる |
フリガナ | リソースバンドル |
ロケールに応じてリソースが自動的に決定される仕組み。
狭義においては、プロパティファイルを言語に合わせて自動取得するための仕組みを指す。
プロパティファイルにはプログラムの各種設定を記述する。
その設定を多言語化した場合に、ロケールに合わせて自動的に適切な言語のプロパティファイルを取得するための仕組みが「リソースバンドル」である。
各種言語に対応したプロパティファイルは「プロパティファイル名_言語コード.properties」となる。「言語コード」にはロケールの言語コードを使用する。日本であれば「ja」となる。
このプロパティファイルの選択を、リソースバンドルはロケールに合わせて自動的に行う。ロケールに日本を指定すれば、「プロパティファイル名」を指定するだけで自動的に「プロパティファイル名_言語コード.properties」に変換しプロパティファイルを読み込む。
リソースバンドルはResourceBundleクラスを用いて行う。
ResourceBundleクラスのgetBundle()メソッドで「プロパティファイル名」を指定することで、デフォルトのロケールでそのロケールに該当するプロパティファイルを読み込む。また、ロケールを直接指定することもできる。
リソースバンドルを使用する場合、プロパティファイルはクラスファイル(拡張子が.classのファイル)と同じディレクトリ(通常はbinディレクトリ)の下に置く。
また、各言語コードで記述したプロパティファイルは、Unicodeに変換する必要がある。Unicodeへの変換は、J2SEに付属しているnative2asciiコマンドを使用する。
狭義においては、プロパティファイルを言語に合わせて自動取得するための仕組みを指す。
プロパティファイルにはプログラムの各種設定を記述する。
その設定を多言語化した場合に、ロケールに合わせて自動的に適切な言語のプロパティファイルを取得するための仕組みが「リソースバンドル」である。
各種言語に対応したプロパティファイルは「プロパティファイル名_言語コード.properties」となる。「言語コード」にはロケールの言語コードを使用する。日本であれば「ja」となる。
このプロパティファイルの選択を、リソースバンドルはロケールに合わせて自動的に行う。ロケールに日本を指定すれば、「プロパティファイル名」を指定するだけで自動的に「プロパティファイル名_言語コード.properties」に変換しプロパティファイルを読み込む。
リソースバンドルはResourceBundleクラスを用いて行う。
ResourceBundleクラスのgetBundle()メソッドで「プロパティファイル名」を指定することで、デフォルトのロケールでそのロケールに該当するプロパティファイルを読み込む。また、ロケールを直接指定することもできる。
リソースバンドルを使用する場合、プロパティファイルはクラスファイル(拡張子が.classのファイル)と同じディレクトリ(通常はbinディレクトリ)の下に置く。
また、各言語コードで記述したプロパティファイルは、Unicodeに変換する必要がある。Unicodeへの変換は、J2SEに付属しているnative2asciiコマンドを使用する。
参考サイト
// Sample.java
import java.util.ResourceBundle;
public class Sample
{
public static void main( String[] args )
{
// リソースのひとつ、プロパティファイルを取得します。
// クラスファイル(.classファイル)のあるディレクトリ、通常はbinディレクトリに
// ApplicationResources.properties
// というテキストファイルを作って、その中に次の文を記述してください。
// sample.data=100
// このリソースファイルを開いて、キーを元に値を取得します。
// 拡張子を付けないリソースファイル名を指定します。
ResourceBundle resourceBundle = ResourceBundle.getBundle( "ApplicationResources" );
// キーを元に値を取得します。
// キーは「sample.data」、値は=の右の「100」です。
String value = resourceBundle.getString( "sample.data" );
System.out.println( value );
// 100
// リソースファイルの中に日本語を入れる場合。
// まず、さきほどのリソースファイルと同じディレクトリに
// ApplicationResources_ja.txtというテキストファイルを作って、
// その中に次の文を記述してください。
// sample.name=あいうえお
// 次に、コマンドラインでカレントディレクトリを
// ApplicationResources_ja.txtファイルがあるディレクトリに変えてから、
// 以下のコマンドを実行してください。
// native2ascii ApplicationResources_ja.txt ApplicationResources_ja.properties
// あとは同じように取得します。
// リソースファイル名を指定する文字列が全く同じなのに注意してください。
// つまり、「_ja」を付ける必要はありません。デフォルトのロケールが日本なので、
// 日本の言語コード「ja」を元に自動的に付けられます。
resourceBundle = ResourceBundle.getBundle( "ApplicationResources" );
String name = resourceBundle.getString( "sample.name" );
System.out.println( name );
// あいうえお
}
}
import java.util.ResourceBundle;
public class Sample
{
public static void main( String[] args )
{
// リソースのひとつ、プロパティファイルを取得します。
// クラスファイル(.classファイル)のあるディレクトリ、通常はbinディレクトリに
// ApplicationResources.properties
// というテキストファイルを作って、その中に次の文を記述してください。
// sample.data=100
// このリソースファイルを開いて、キーを元に値を取得します。
// 拡張子を付けないリソースファイル名を指定します。
ResourceBundle resourceBundle = ResourceBundle.getBundle( "ApplicationResources" );
// キーを元に値を取得します。
// キーは「sample.data」、値は=の右の「100」です。
String value = resourceBundle.getString( "sample.data" );
System.out.println( value );
// 100
// リソースファイルの中に日本語を入れる場合。
// まず、さきほどのリソースファイルと同じディレクトリに
// ApplicationResources_ja.txtというテキストファイルを作って、
// その中に次の文を記述してください。
// sample.name=あいうえお
// 次に、コマンドラインでカレントディレクトリを
// ApplicationResources_ja.txtファイルがあるディレクトリに変えてから、
// 以下のコマンドを実行してください。
// native2ascii ApplicationResources_ja.txt ApplicationResources_ja.properties
// あとは同じように取得します。
// リソースファイル名を指定する文字列が全く同じなのに注意してください。
// つまり、「_ja」を付ける必要はありません。デフォルトのロケールが日本なので、
// 日本の言語コード「ja」を元に自動的に付けられます。
resourceBundle = ResourceBundle.getBundle( "ApplicationResources" );
String name = resourceBundle.getString( "sample.name" );
System.out.println( name );
// あいうえお
}
}
// Sample.java import java.util.ResourceBundle; public class Sample { public static void main( String[] args ) { // リソースのひとつ、プロパティファイルを取得します。 // クラスファイル(.classファイル)のあるディレクトリ、通常はbinディレクトリに // ApplicationResources.properties // というテキストファイルを作って、その中に次の文を記述してください。 // sample.data=100 // このリソースファイルを開いて、キーを元に値を取得します。 // 拡張子を付けないリソースファイル名を指定します。 ResourceBundle resourceBundle = ResourceBundle.getBundle( "ApplicationResources" ); // キーを元に値を取得します。 // キーは「sample.data」、値は=の右の「100」です。 String value = resourceBundle.getString( "sample.data" ); System.out.println( value ); // 100 // リソースファイルの中に日本語を入れる場合。 // まず、さきほどのリソースファイルと同じディレクトリに // ApplicationResources_ja.txtというテキストファイルを作って、 // その中に次の文を記述してください。 // sample.name=あいうえお // 次に、コマンドラインでカレントディレクトリを // ApplicationResources_ja.txtファイルがあるディレクトリに変えてから、 // 以下のコマンドを実行してください。 // native2ascii ApplicationResources_ja.txt ApplicationResources_ja.properties // あとは同じように取得します。 // リソースファイル名を指定する文字列が全く同じなのに注意してください。 // つまり、「_ja」を付ける必要はありません。デフォルトのロケールが日本なので、 // 日本の言語コード「ja」を元に自動的に付けられます。 resourceBundle = ResourceBundle.getBundle( "ApplicationResources" ); String name = resourceBundle.getString( "sample.name" ); System.out.println( name ); // あいうえお } }