Flex アプリケーションを国際化するためのベスト プラクティス?
-
02-07-2019 - |
質問
現在取り組んでいる Flex アプリケーションの国際化を検討していますが、そのためのベスト プラクティスや推奨事項があるかどうか知りたいです。
このような情報をグーグルで検索すると、いくつかの小さな記事やブログ投稿が見つかりますが、それぞれの方法が異なり、長所と短所は正確には明らかではありません。
範囲を狭めて編集:
- 2 つの言語 (en_CA と fr_CA) のみをサポートする必要がある
- 実行時に切り替えることができる必要がある
解決
もちろん、もう少しグーグルで調べてみると、次のような記事を見つけました。 ランタイムローカリゼーション.
そして、次の手順に従いました。
以下をコンパイラ引数に追加して、サポートされるロケールとそのパスを指定します。(Flex Builder で、プロジェクトを選択し、プロパティ -> Flex Compiler -> Additional Compiler Arguments (追加のコンパイラ引数) に移動します)
-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'
バグに関連しているようです SDK-12507
回避策:
の中に 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