| パッケージ | mx.resources | 
| インターフェイス | public interface IResourceBundle | 
| 実装者 | ResourceBundle | 
| 言語バージョン: | ActionScript 3.0 | 
| 製品バージョン: | Flex 3 | 
| ランタイムバージョン: | Flash Player 9, AIR 1.1 | 
ローカライズには、ロケール、リソースおよびリソースバンドルの 3 つの主要な概念が関係します。
ロケールは、アプリケーションをローカライズした後の言語と国を指定します。 たとえば、ロケール "en_US" は、米国で使用される英語を指定します。 詳細については、mx.resources.Locale クラスを参照してください。
リソースは、ロケールに依存した名前付きの値です。 たとえば、アプリケーションに "OPEN" という名前のリソースがある場合、英語ロケールでのそのリソースの値は "Open" です。一方、フランス語ロケールの場合、値は "Ouvrir" です。
リソースバンドルは、値が特定のロケール用にローカライズされたリソースの、名前付きのグループです。 リソースバンドルは、bundleName と locale の組み合わせによって識別され、バンドルのリソースの名前と値のペアを含む content オブジェクトを持っています。
IResourceBundle インタフェースは、特定のリソースバンドルを表します。 ただし、ほとんどのアプリケーションで使用する必要があるのは IResourceManager のみです。 このインタフェースを実装した単一の ResourceManager オブジェクトは、(場合によっては複数のロケールの)複数のリソースバンドルを管理し、リソースバンドルに含まれるリソースへのアクセスを提供します。 たとえば、resourceManager.getString(bundleName, resourceName) を呼び出すことにより、特定のリソースをストリングとして取得できます。 ResourceManager の localeChain プロパティを変更すると、リソースバンドルの検索対象のリソース値を変更できます。
通常、リソースバンドルを作成する必要はありません。リソースバンドルは *.properties ファイルから自動的にコンパイルされます。 MyResources.properties という名前のプロパティファイルの場合、"MyResources" が bundleName であるリソースバンドルが生成されます。 プロパティファイルは通常、複数のバージョン(アプリケーションがサポートするロケールごとに 1 つずつ)を作成します。
Flex のプロパティファイルは Java のプロパティファイルと似ていますが、Flex では MXML の Embed() ディレクティブと ClassReference() ディレクティブもサポートされます。 これらのディレクティブは、プロパティファイル内でも、CSS ファイル内に記述した場合と同じようにクラス参照を作成します。 また、Flex プロパティファイルは常に UTF-8 にエンコードされているものと見なされます。
Flex フレームワークのリソースは、米国英語("en_US" ロケール)用と日本語("ja_JP" ロケール)用にローカライズされています。 フレームワークリソースは、フレームワークパッケージに対応する複数のバンドルに編成されます。たとえば、"formatters" バンドルは mx.formatters パッケージのクラスで使用されます。 複数のパッケージで使用されるリソース用の "SharedResources" バンドルもあります。
フレームワークリソース用のプロパティファイル(formatters.properties など)は、Flex SDK の frameworks/projects/framework/bundles/{locale}/src ディレクトリにあります。 通常、アプリケーションは、frameworks/libs ディレクトリ内の、Flex フレームワークのコンパイル済みライブラリである framework.swc にリンクします。 このライブラリ内にリソースはありません。 代わりに、フレームワークリソースは、framework_rb.swc などの個別のリソースバンドルライブラリにコンパイルされています。 これらのライブラリは frameworks/locales/{locale} ディレクトリにあり、アプリケーションもこれらの 1 つまたは複数のライブラリにリンクする必要があります。
アプリケーションの独自のリソースを、使いやすい任意のバンドルに編成できます。 "en_US" と "ja_JP" 以外のロケールのアプリケーションをローカライズする場合は、それらのロケールのフレームワークのプロパティファイルもローカライズし、そのリソースバンドルライブラリをコンパイルする必要があります。
アプリケーションを起動すると、アプリケーションにコンパイルされたリソースバンドルを使用して、ResourceManager が自動的に設定されます。 コードモジュールを作成すると、クラスに必要なリソースがデフォルトでモジュールにコンパイルされます。 モジュールがアプリケーションにロードされると、まだアプリケーションにないバンドルが ResourceManager に追加されます。
リソースのみを持つ "リソースモジュール" をコンパイルし、ResourceManager の loadResourceModule() メソッドを使用してそれらをロードできます。 リソースモジュールを使用すると、リソースをアプリケーションにコンパイルする代わりに、実行時に必要なリソースをロードして複数のロケールをサポートできます。
通常、ResourceManager は、アプリケーションにコンパイルされているかモジュールからロードしたリソースバンドルを使用して設定されますが、プログラムでリソースバンドルを作成し、addResourceBundle() メソッドを使用して ResourceManager に追加することもできます。
関連する API エレメント
| プロパティ | 定義元 | ||
|---|---|---|---|
| bundleName : String [読み取り専用] 
      このリソースバンドルを識別する "MyResources" などの名前です。 | IResourceBundle | ||
| content : Object [読み取り専用] 
      このリソースバンドルのリソースのキーと値のペアを含むオブジェクトです。 | IResourceBundle | ||
| locale : String [読み取り専用] 
      ローカライズされたこのバンドルのリソースのロケールです。 | IResourceBundle | ||
| bundleName | プロパティ | 
bundleName:String  [読み取り専用] | 言語バージョン: | ActionScript 3.0 | 
| 製品バージョン: | Flex 3 | 
| ランタイムバージョン: | Flash Player 9, AIR 1.1 | 
      このリソースバンドルを識別する "MyResources" などの名前です。
     
      
この読み取り専用のプロパティは、リソースバンドルを作成するときに設定されます。
コンパイル済みのプロパティファイルから自動的に作成されるリソースバンドルには、それらのファイルの名前に基づいてバンドル名が付けられます。 例えば、MyResources.properties という名前のプロパティファイルの場合、bundleName が "MyResources" であるリソースバンドルが作成されます。
ResourceManager は、同じ bundleName を持つ複数のバンドルを管理できますが、各バンドルの locale プロパティの値が異なっている場合に限ります。
実装
    public function get bundleName():String| content | プロパティ | 
content:Object  [読み取り専用] | 言語バージョン: | ActionScript 3.0 | 
| 製品バージョン: | Flex 3 | 
| ランタイムバージョン: | Flash Player 9, AIR 1.1 | 
このリソースバンドルのリソースのキーと値のペアを含むオブジェクトです。
リソースにアクセスするときは通常、リソースバンドル内のリソースに直接アクセスする代わりに、getString() などの IResourceManager メソッドを使用します。 ただし、プログラムで独自のリソースバンドルを作成している場合は、リソースを使用して次のようにリソースバンドルを初期化できます。
      var rb:IResourceBundle = new ResourceBundle("fr_FR", "MyResources");
      rb.content["LANGUAGE"] = "Francais";
      rb.content["GREETING"] = "Bonjour";
      
     
      プロパティファイルをコンパイルしてリソースバンドルを作成すると、リソースの値は String 型または Class 型のいずれかになります。 例えば、プロパティファイルに次の内容が格納されているとします。
      LANGUAGE=English
      MINIMUM_AGE=18
      ENABLED=true
      LOGO=Embed("logo.png")
      
     
      この場合、LANGUAGE リソースの値はストリング "English" になり、MINIMUM_AGE リソースの値はストリング "18" になります。また、ENABLED リソースの値はストリング "true" になり、LOGO リソースの値は埋め込まれた PNG ファイルを表すクラスになります。
getInt() や getBoolean() などの IResourceManager メソッドを使用すると、"18" や "true" などのリソースストリングをコードに適した型に変換できます。
実装
    public function get content():Object| locale | プロパティ | 
locale:String  [読み取り専用] | 言語バージョン: | ActionScript 3.0 | 
| 製品バージョン: | Flex 3 | 
| ランタイムバージョン: | Flash Player 9, AIR 1.1 | 
      ローカライズされたこのバンドルのリソースのロケールです。 米国英語の場合の "en_US" などのストリングです。
     
      
この読み取り専用のプロパティは、リソースバンドルを作成するときに設定されます。
コンパイル済みのプロパティファイルから自動的に作成されるリソースバンドルには、mxmlc または compc -compiler.locale オプションに基づいてロケールが設定されます。 たとえば、-compiler.locale=en_US,ja_JP オプションを使用してアプリケーションをコンパイルし、resources/en_US/MyResources.properties および resources/ja_JP/MyResources.properties にあるアプリケーションのリソースが検出されるように -compiler.source-path=resources/{locale} と指定したとします。 この場合、bundleName が "MyResources" の 2 つのリソースバンドルがアプリケーションに作成されます。1 つは locale が "en_US" に設定され、もう 1 つは locale が "ja_JP" に設定されます。
実装
    public function get locale():StringTue Jun 12 2018, 10:34 AM Z