5

作業中のFlexアプリケーションの国際化を検討していますが、そのためのベストプラクティスや推奨事項があるかどうか知りたいです。

そのような情報をグーグルで検索すると、いくつかの小さな記事やブログ投稿が作成され、それぞれが異なる方法でそれを行うことについてのものであり、長所と短所は正確には明確ではありません。

範囲を狭めるために編集:

  • 2つの言語(en_CAとfr_CA)のみをサポートする必要があります
  • 実行時に切り替えることができる必要があります
4

1 に答える 1

5

もちろん、もう少しグーグルで調べた後、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'

バグ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
于 2008-09-25T13:53:02.133 に答える