チュートリアル : ハイブリッド アプリケーションのローカライズ

更新 : 2007 年 11 月

このチュートリアルでは、WPF ベースのハイブリッド アプリケーション内にある Windows フォーム 要素をローカライズする方法を示します。

このチュートリアルでは、以下のタスクを行います。

  • Windows フォーム ホスト プロジェクトを作成する。

  • ローカライズ可能な内容を追加する。

  • ローカライズを有効にする。

  • リソース識別子を割り当てる。

  • LocBaml ツールを使用してサテライト アセンブリを生成する。

このチュートリアルで示すタスクの完全なコード一覧については、「ハイブリッド アプリケーションのローカライズのサンプル」を参照してください。

終了すると、ローカライズされたハイブリッド アプリケーションが作成されています。

メモ   使用している設定またはエディションによっては、ヘルプの記載と異なるダイアログ ボックスやメニュー コマンドが表示される場合があります。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。

前提条件

このチュートリアルを完了するには、次のコンポーネントが必要です。

  • Visual Studio 2008.

Windows フォームのホスト プロジェクトの作成

最初に Windows フォーム アプリケーション プロジェクトを作成し、内容をローカライズする WPF 要素を追加します。

ホスト プロジェクトを作成するには

  1. LocalizingWpfInWf という名前の WPF アプリケーション プロジェクトを作成します。詳細については、「方法 : Windows アプリケーション プロジェクトを作成する」を参照してください。

  2. SimpleControl という WPFUserControl 要素をプロジェクトに追加します。

  3. ElementHost コントロールを使用して、フォームに SimpleControl 要素を配置します。詳細については、「チュートリアル : Windows フォームでの Windows Presentation Foundation 複合コントロールのホスト」を参照してください。

ローカライズ可能な内容を追加する

次に、Windows フォーム ラベル コントロールを追加し、WPF 要素の内容にローカライズ可能な文字列を設定します。

ローカライズ可能な内容を追加する手順

  1. ソリューション エクスプローラで [SimpleControl.xaml] をダブルクリックして、WPF デザイナでそのファイルを開きます。

  2. 次のコードを使用している Button コントロールの内容を設定します。

  3. ソリューション エクスプローラで [Form1] をダブルクリックして Windows フォーム デザイナを開きます。

  4. ツールボックスを開いて、[ラベル] をダブルクリックし、フォームにラベル コントロールを追加します。Text プロパティの値を「Hello」に設定します。

  5. F5 キーを押してアプリケーションをビルドし、実行します。

    SimpleControl 要素とラベル コントロールにより、テキスト [Hello] が表示されます。

ローカライズを有効にする

Windows フォーム デザイナでは、サテライト アセンブリのローカライズを有効にする設定を行うことができます。

ローカライズを有効にする手順

  1. ソリューション エクスプローラで、[Form1.cs] をダブルクリックして Windows フォーム デザイナで開きます。

  2. [プロパティ] ウィンドウで、フォームの [ローカライズ可能] プロパティを true に設定します。

  3. [プロパティ] ウィンドウで、[言語] プロパティを [スペイン語 (スペイン)] に設定します。

  4. Windows フォーム デザイナで、ラベル コントロールを選択します。

  5. [プロパティ] ウィンドウで、Text プロパティの値を「Hola」に設定します。

    Form1.es-ES.resx という名前の新しいリソース ファイルが、プロジェクトに追加されます。

  6. ソリューション エクスプローラで、[Form1.cs] を右クリックし、[コードの表示] をクリックしてコード エディタで開きます。

  7. InitializeComponent の呼び出しの前にある Form1 コンストラクタに次のコードをコピーします。

  8. ソリューション エクスプローラで、[LocalizingWpfInWf] を右クリックし、[プロジェクトのアンロード] をクリックします。

    プロジェクト名に (利用不可) のマークが付きます。

  9. [LocalizingWpfInWf] を右クリックし、[LocalizingWpfInWf.csproj の編集] をクリックします。

    コード エディタでプロジェクト ファイルが開きます。

  10. プロジェクト ファイルの最初の PropertyGroup に次の行をコピーします。

    <UICulture>en-US</UICulture> 
    
  11. プロジェクト ファイルを保存して閉じます。

  12. ソリューション エクスプローラで、[LocalizingWpfInWf] を右クリックし、[プロジェクトの再読み込み] をクリックします。

リソース識別子を割り当てる

リソース識別子を使用すると、ローカライズ可能な内容をリソース アセンブリにマッピングできます。updateuid オプションを指定すると、MsBuild.exe アプリケーションが自動的にリソース識別子を割り当てます。

リソース識別子を割り当てる手順

  1. [スタート] メニューから、Visual Studio コマンド プロンプトを開きます。

  2. 次のコマンドを使用して、ローカライズ可能な内容にリソース識別子を割り当てます。

    msbuild /t:updateuid LocalizingWpfInWf.csproj
    
  3. ソリューション エクスプローラで、[SimpleControl.xaml] をダブルクリックして、コード エディタでそのファイルを開きます。msbuild コマンドによって、すべての要素に Uid 属性が追加されています。これにより、リソース識別子の割り当てを用いたローカライズが容易になります。

  4. F6 キーを押してソリューションをビルドします。

LocBaml を使用してサテライト アセンブリを生成する

ローカライズされた内容は、リソース専用サテライト アセンブリに格納されています。LocBaml.exe コマンド ライン ツールを使用して WPF 内容のローカライズされたアセンブリを生成します。

サテライト アセンブリを生成する手順

  1. プロジェクトの obj\Debug フォルダに LocBaml.exe をコピーします。詳細については、「方法 : アプリケーションをローカライズする」を参照してください。

  2. コマンド プロンプト ウィンドウで、次のコマンドを使用してテンポラリ ファイルにリソース文字列を抽出します。

    LocBaml /parse LocalizingWpfInWf.g.en-US.resources /out:temp.csv
    
  3. Visual Studio または別のテキスト エディタで temp.csv ファイルを開きます。文字列 "Hello" をそのスペイン語の訳語 "Hola" に置き換えます。

  4. temp.csv ファイルを保存します。

  5. 次のコマンドを使用して、ローカライズされたリソース ファイルを生成します。

    LocBaml /generate /trans:temp.csv LocalizingWpfInWf.g.en-US.resources /out:. /cul:es-ES
    

    LocalizingWpfInWf.g.es-ES.resources ファイルは、obj\Debug フォルダに作成されます。

  6. 次のコマンドを使用して、ローカライズされたサテライト アセンブリを作成します。

    Al.exe /out:LocalizingWpfInWf.resources.dll /culture:es-ES /embed:LocalizingWpfInWf.Form1.es-ES.resources /embed:LocalizingWpfInWf.g.es-ES.resources
    

    LocalizingWpfInWf.resources.dll ファイルは、obj\Debug フォルダに作成されます。

  7. プロジェクトの bin\Debug\es-ES フォルダに LocalizingWpfInWf.resources.dll ファイルをコピーします。既存のファイルを置き換えます。

  8. プロジェクトの bin\Debug フォルダにある LocalizingWpfInWf.exe を実行します。サテライト アセンブリが上書きされるので、アプリケーションを再度ビルドしないでください。

    アプリケーションにより、英語の文字列の代わりにローカライズされた文字列が表示されます。

参照

処理手順

チュートリアル : Windows フォームのローカリゼーション

概念

方法 : アプリケーションをローカライズする

参照

ElementHost

WindowsFormsHost

その他の技術情報

WPF デザイナ

移行および相互運用性に関する「方法」トピック