質問

現在取り組んでいる 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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top