Locale クラスの使用

Locale クラス (mx.lang.Locale) クラスを使用すると、Flash アプリケーションで実行時に表示される多言語テキストを制御できます。[ストリング] パネルを使用することで、ダイナミックテキストフィールドにストリングリテラルではなくストリング ID を使用することができ、これによって言語別の XML ファイルからロードされたテキストを表示する SWF ファイルを作成することが可能となります。XLIFF (XML Localization Interchange File Format) ファイルに含まれている言語別の文字列を表示するには、次のような方法があります。

実行時に自動で Flash Player によってストリング ID が、language (capabilities.language プロパティ) から返されるデフォルトのシステム言語と一致する XML ファイル内のストリングに置き換えられます。

ステージ言語を使用して手動で コンパイル時にストリング ID がストリングに置き換えられるので、Flash Player では変更できません。

実行時に ActionScript を使用して ストリング ID の置き換えを ActionScript を使用して実行時に制御します。このオプションでは、ストリング ID を置き換えるタイミングと言語を両方とも制御できます。

アプリケーションが Flash Player で再生される際にアプリケーションを ActionScript で制御してストリング ID を置き換える場合は、Locale クラスのプロパティとメソッドを使用できます。Locale の使用法の例については、次の手順を参照してください。

Locale クラスを使用して多言語サイトを作成するには :

  1. 新しい Flash ドキュメントを作成し、locale.fla という名前で保存します。
  2. [ストリング] パネル ([ウィンドウ]-[その他のパネル]-[ストリング]) を開き、[設定] をクリックします。
  3. [en (英語)] および [fr (フランス語)] の 2 つの言語を選択し、[追加] をクリックして [アクティブな言語] ペインにこの 2 つの言語を追加します。
  4. [実行時に ActionScript を使用して] オプションを選択し、実行時のデフォルト言語をフランス語に設定して [OK] をクリックします。
  5. ComboBox コンポーネントを [コンポーネント] パネル ([ウィンドウ]-[コンポーネント]) の "User Interface" フォルダからステージまでドラッグし、インスタンス名を lang_cb とします。
  6. テキストツールを使用してステージ上にダイナミックテキストフィールドを作成し、そのテキストフィールドのインスタンス名を greeting_txt とします。
  7. ステージでそのテキストフィールドを選択し、[ストリング] パネルの [ID] テキストボックスにストリング識別子を「greeting」と入力します。それから [適用] をクリックしてください。

    Flash により、入力した greeting というストリングが IDS_GREETING へと変換されます。

  8. [ストリング] パネルのグリッドで、[en] 列に「hello」というストリングを入力します。
  9. [fr] 列に「bonjour」というストリングを入力します。

    これらのストリングは、lang_cb コンボボックスを使ってステージ上の言語を変更するときに使用します。

  10. メインタイムラインのフレーム 1 に次の ActionScript を追加します。
    import mx.lang.Locale;
    Locale.setLoadCallback(localeListener);
    lang_cb.dataProvider = Locale.languageCodeArray.sort();
    lang_cb.addEventListener("change", langListener);
    greeting_txt.autoSize = "left";
    Locale.loadLanguageXML(lang_cb.value);
    
    function langListener(eventObj:Object):Void {
        Locale.loadLanguageXML(eventObj.target.value);
    }
    function localeListener(success:Boolean):Void {
        if (success) {
            greeting_txt.text = Locale.loadString("IDS_GREETING");
        } else {
            greeting_txt.text = "unable to load language XML file.";
        }
    }
    

    上記の ActionScript は 2 つのセクションに分けることができます。コードの最初のセクションでは、Locale クラスを読み込み、言語別の XML ファイルの読み込みが完了したときに呼び出されるコールバックリスナーを指定しています。次に、使用可能な言語のソート済みの配列が lang_cb コンボボックスに設定されます。lang_cb の値が変更されると、Flash のイベントディスパッチャーによって、言語別の XML ファイルをロードする langListener() 関数がトリガされます。コードの 2 番目のセクションでは、langListener() および localeListener() という 2 つの関数が定義されています。最初の関数、langListener() は、lang_cb コンボボックスの値がユーザーによって変更されたときに呼び出されます。2 番目の関数、localeListener() は、言語別の XML ファイルの読み込みが完了したときに呼び出されます。この関数では読み込みに成功したかどうかがチェックされ、成功していれば、greeting_txt インスタンスの text プロパティを選択された言語の挨拶の文に設定します。

  11. [制御]-[ムービープレビュー] を選択して Flash ドキュメントをテストします。

    ヒント

     

    使用する XML ファイルでは、XLIFF (XML Localization Interchange File Format) を使用する必要があります。

    注意

     

    Locale クラスは、『ActionScript 2.0 リファレンスガイド』で説明されている他のクラスとは異なり、Flash Player には含まれていません。このクラスは Flash Authoring クラスパスにインストールされているため、自動的に SWF ファイルにコンパイルされます。Locale クラスは SWF ファイルにコンパイルする必要があるため、このクラスを使うことによって SWF ファイルのサイズはわずかに大きくなります。

詳細については、『ActionScript 2.0 リファレンスガイド』の「Locale (mx.lang.Locale)」を参照してください。


 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00000944.html