JavaA2Z

KAB-studio > プログラミング > JavaA2Z > リソースバンドルとは

リソースバンドル

日本語 資源束
英語 resource bundle
ふりがな りそーすばんどる
フリガナ リソースバンドル

解説

ロケールに応じてリソースが自動的に決定される仕組み。
狭義においては、プロパティファイルを言語に合わせて自動取得するための仕組みを指す。
 
プロパティファイルにはプログラムの各種設定を記述する。
その設定を多言語化した場合に、ロケールに合わせて自動的に適切な言語のプロパティファイルを取得するための仕組みが「リソースバンドル」である。
各種言語に対応したプロパティファイルは「プロパティファイル_言語コード.properties」となる。「言語コード」にはロケールの言語コードを使用する。日本であれば「ja」となる。
このプロパティファイルの選択を、リソースバンドルはロケールに合わせて自動的う。ロケールに日本を指定すれば、「プロパティファイル名」を指定するだけで自動的に「プロパティファイル_言語コード.properties」に変換しプロパティファイルを読み込む。
 
リソースバンドルはResourceBundleクラスを用いてう。
ResourceBundleクラスのgetBundle()メソッドで「プロパティファイル名」を指定することで、デフォルトロケールでそのロケールに該当するプロパティファイルを読み込む。また、ロケールを直接指定することもできる。
 
リソースバンドルを使用する場合、プロパティファイルクラスファイル拡張子.classファイル)と同じディレクトリ(通常はbinディレクトリ)の下に置く。
また、各言語コードで記述したプロパティファイルは、Unicodeに変換する必要がある。Unicodeへの変換は、J2SEに付属しているnative2asciiコマンドを使用する。

参考サイト


(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// 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 );
        // あいうえお
    }
}
// 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 );
        // あいうえお
    }
}

この単語を含むページ

「みだし」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/06/03
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。