作業中のFlexアプリケーションの国際化を検討していますが、そのためのベストプラクティスや推奨事項があるかどうか知りたいです。
そのような情報をグーグルで検索すると、いくつかの小さな記事やブログ投稿が作成され、それぞれが異なる方法でそれを行うことについてのものであり、長所と短所は正確には明確ではありません。
範囲を狭めるために編集:
- 2つの言語(en_CAとfr_CA)のみをサポートする必要があります
- 実行時に切り替えることができる必要があります
作業中のFlexアプリケーションの国際化を検討していますが、そのためのベストプラクティスや推奨事項があるかどうか知りたいです。
そのような情報をグーグルで検索すると、いくつかの小さな記事やブログ投稿が作成され、それぞれが異なる方法でそれを行うことについてのものであり、長所と短所は正確には明確ではありません。
範囲を狭めるために編集:
もちろん、もう少しグーグルで調べた後、runtime localizationに関する記事に出くわしました。
そして、次の手順に従いました。
以下をコンパイラ引数に追加して、サポートされているロケールとそのパスを指定します: (Flex Builder で、プロジェクトを選択し、[プロパティ] -> [Flex コンパイラ] -> [追加のコンパイラ引数] に移動します)
-locale=en_CA,fr_CA -source-path=locale/{locale}
次のファイルを作成します。
src/locale/en_CA/resources.properties
src/locale/fr_CA/resources.properties
そして、コンパイラは不平を言います:unable to open 'C:\Program Files\Adobe\Flex Builder 3\sdks\3.1.0\frameworks\locale\en_CA'
回避策:ディレクトリで、次のコマンドを実行します
。sdks\3.1.0\bin
copylocale en_US en_CA
copylocale en_US fr_CA
これにより、Flex Builder のインストールにロケール ディレクトリが作成され、必要なリソースが構築されます。
次に、.mxml
ファイルでリソース バンドルを参照します。
<mx:Metadata>
[ResourceBundle("resources")]
</mx:Metadata>
文字列を国際化します。
<mx:TitleWindow title="Window Title">
になります:
<mx:TitleWindow
title="{resourceManager.getString('resources', 'windowTitle')}">
と
var name:String = "Name";
になります:
var name:String = resourceManager.getString("resources", "name");
そしてあなたのsrc/locale/en_CA/resources.properties
ファイルで:
windowTitle=Window Title
name=Name