Flex2 Beta1から新機能として追加された、国際化対応をず~と試したいと思っていたのですが手付かずのままBeta2になってしばらく経ちました。
そこでFlex2 Beta2で改めて、国際化対応の内容を確かめてみました。
このエントリーでもふれていますが、Beta1から国際化対応として、ResourceBundleを利用してメッセージを外部ファイル化することが可能になっています。
しかし、Javaのようにpropertyファイルをクラスパスにに含めれば利用できるという訳ではなく、swcファイルとしてまとめないと利用することができないようです。
Localizeされたアプリケーションを作成するには以下のステップで行います。
・プロパティを含んだswc作成
・作成したswcを--include-librariesオプションでリンクしてmxmlをコンパイル
詳細はここにあるので、その通りに行えば作れると思いますが、忘れないように一部のポイントだけ書きます。
1.プロパティファイルの作成
まず新規にFlex プロジェクトを作成して、localeフォルダを作成します。 つぎに作成したディレクトリにja_JP,en_USフォルダを作成します。 このフォルダが次のcompcで指定するlocale名称になります。 作成したロケール単位のフォルダ下にプロパティファイルを作成します。プロパティはHelloWorld.propertiesとして作成します。
${project}/locale/ja_JP/HelloWorld.properties
${project}/locale/en_US/HelloWorld.properties
2.compcでswcファイルの作成
作成したプロパティをcompcを利用して、swcファイルにまとめます。
-localeオプションを利用してそのswcのlocaleを指定します。
compc -locale ja_JP -actionscript-classpath locale/{locale} -include-resource-bundles HelloWorld -output locale/ja_JP/HelloWorld.swc
3.作成したswcをリンクしてmxmlcを実行してswfを作成
2.で指定したプロパティの内容を含んだswcを"-include-libraries"で指定してmxmlcを実行します。これで、完成です。mxmlのファイル名で拡張子が"swf"になったファイルが
生成されていると思います。
アプリケーション作成時に、ラベルなどの文字列が増えるたびにcompc->mxmlcを繰り返し行うのは面倒ですし、効率もよくありません。
そこで、antを利用してcompcとmxmlcを行うようにしてみました。
buildをすると、まず最初にcompcで"ja"と"en"のリソースをswc化します。
その後mxmlcも"ja"と"en"2回実行してswfを生成します。
作成したbuild.xmlを含むプロジェクトはこちら。
antをeclipseから利用するには、JDT(javaの開発環境)が必要になります。
Flex Builder2単体だとJDTが含まれていません。
別途アップデートサイトなどからダウンロードする必要があります。
Beta2から、Flex Builderもフレームワーク以下に環境に応じたlocaleがないとコンパイル時にエラーがでるようになってしまいます。
現状"en_US"を"ja_JP"にコピーして利用しています。
Validatorなどのメッセージを国際化(日本語対応)にするには、コピーした"ja_JP"以下のプロパティを変更してcompcでframework_rb.swcを再作成すればできるかもしれません。
S2Flex2の次(かその次(^_^;)) のリリース時にsampleなどは国際化対応したものにしてみようと思います。
プロパティエディタ
プロパティファイルを日本語で記述するときに便利です。
http://propedit.sourceforge.jp/
Creating a localized application
まずはここから
http://livedocs.macromedia.com/labs/1/flex20beta2/00001162.html
Building a simple localized application
compcとmxmlcを使って作成します。
http://livedocs.macromedia.com/labs/1/flex20beta2/00001171.html
About the command line compilers
ant のbuild.xmlを作るときに参考にしました。
http://livedocs.macromedia.com/labs/1/flex20beta2/00002751.html
About the application compiler options
http://livedocs.macromedia.com/labs/1/flex20beta2/00002763.html
publisherは?
これらもあながちまちがいぢゃなかったのか...
http://livedocs.macromedia.com/labs/1/flex20beta2/00002765.html
この記事に対するコメント