パッケージ | 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():String
Tue Jun 12 2018, 10:34 AM Z