スタイルをローカライズするには、スタイルプロパティの値をリソースバンドルの値にバインドします。例えば、リソースプロパティファイルに FONTCOLOR キーの値(FONTCOLOR=0xFF0000)が定義されている場合は、次の例のようにその値をアプリケーションのスタイルプロパティにバインドすると使用できます。
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" themeColor="{resourceManager.getUint('MyStyles', 'color')}">
ResourceManager を使用してリソースバンドルの値を参照している場合は、適切なメソッドを必ず使用してください。例えば、値が 0xFF0000 などのカラーである場合は、ResourceManager の getUint() メソッドを使用します。値がプログラムスキンなどのクラスである場合は、getClass() メソッドを使用します。
カラースタイルの場合は、カラースタイルをリソースにバインドするときに、リソースプロパティファイルで VGA カラー名(red、blue、fuchsia など)ではなく 16 進表記(0xFF0000 など)を使用する必要があります。
アプリケーションが使用するフォントをローカライズすることもできます。例えば、ロケールが ja_JP の場合は日本語の文字をサポートするフォントの使用が必要なときがありますが、ロケールが en_US の場合ははるかに少ない英語の文字セットをサポートするフォントで十分です。
アプリケーションのフォントをローカライズする方法の 1 つは、すべてのフォントを埋め込んで、リソースバンドルからフォントのクラスセレクタの名前を取得することです。リソースプロパティファイルでは、次の例のようにフォントの値を設定できます。
# /locale/en_US/FontProps.properties TEXTSTYLE=myENFont # /locale/ja_JP/FontProps.properties TEXTSTYLE=myJAFont
アプリケーションのスタイルシートでは、次の例のように両方のフォントを埋め込むことができます。
<mx:Style>
@font-face {
src: url("ENFont.ttf");
fontFamily: EmbeddedENFont;
}
@font-face {
src: url("JAFont.ttf");
fontFamily: EmbeddedJAFont;
}
.myENFont{
fontFamily: EmbeddedENFont;
}
.myJAFont{
fontFamily: EmbeddedJAFont;
}
</mx:Style>
MXML タグでは、次の例のように styleName プロパティを使用して適切なクラスセレクタを適用できます。
<mx:Text styleName="{resourceManager.getString('FontProps', 'TEXTSTYLE')}"/>
フォントをローカライズする別の方法は、スタイルモジュールを使用することです。スタイルモジュールは、選択されているロケールに応じて実行時にロードします。このためには、フォントが埋め込まれ、必要なセレクタが設定されているスタイルモジュールを、フォントとロケールの組み合わせごとにコンパイルします。スタイルモジュールは次のように簡単な記述にできます。
@font-face {
src:url("../assets/MyENFont.ttf");
fontFamily: myFontFamily;
advancedAntiAliasing: true;
}
.global {
fontFamily: myFontFamily;
}
スタイルモジュールの SWF ファイルをコンパイルするときには任意の名前を付けてもかまいませんが、ロケールを含む名前にしておくとアプリケーションでプログラムからその名前を使用できます。例えば、スタイルモジュールの名前を en_US ロケールでは MyStyleSheet_en_US.swf、ja_JP ロケールでは MyStyleSheet_ja_JP.swf としておきます。
リソースバンドルの更新ロジックを実行するアプリケーションでは、既存のスタイルモジュールをアンロードし、現在のロケールに応じて新しいものをロードするロジックを追加できます。また、スタイルシートの名前をリソースバンドルに追加して、ロケールの変更時にそこから抽出することもできます。
スタイルモジュールの使用の詳細については、実行時のスタイルシートのロードを参照してください。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート