チュートリアル : ハイブリッド アプリケーションのローカライズ
更新 : 2007 年 11 月
このチュートリアルでは、WPF ベースのハイブリッド アプリケーション内にある Windows フォーム 要素をローカライズする方法を示します。
このチュートリアルでは、以下のタスクを行います。
Windows フォーム ホスト プロジェクトを作成する。
ローカライズ可能な内容を追加する。
ローカライズを有効にする。
リソース識別子を割り当てる。
LocBaml ツールを使用してサテライト アセンブリを生成する。
このチュートリアルで示すタスクの完全なコード一覧については、「ハイブリッド アプリケーションのローカライズのサンプル」を参照してください。
終了すると、ローカライズされたハイブリッド アプリケーションが作成されています。
メモ 使用している設定またはエディションによっては、ヘルプの記載と異なるダイアログ ボックスやメニュー コマンドが表示される場合があります。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。
前提条件
このチュートリアルを完了するには、次のコンポーネントが必要です。
- Visual Studio 2008.
Windows フォームのホスト プロジェクトの作成
最初に Windows フォーム アプリケーション プロジェクトを作成し、内容をローカライズする WPF 要素を追加します。
ホスト プロジェクトを作成するには
LocalizingWpfInWf という名前の WPF アプリケーション プロジェクトを作成します。詳細については、「方法 : Windows アプリケーション プロジェクトを作成する」を参照してください。
SimpleControl という WPFUserControl 要素をプロジェクトに追加します。
ElementHost コントロールを使用して、フォームに SimpleControl 要素を配置します。詳細については、「チュートリアル : Windows フォームでの Windows Presentation Foundation 複合コントロールのホスト」を参照してください。
ローカライズ可能な内容を追加する
次に、Windows フォーム ラベル コントロールを追加し、WPF 要素の内容にローカライズ可能な文字列を設定します。
ローカライズ可能な内容を追加する手順
ソリューション エクスプローラで [SimpleControl.xaml] をダブルクリックして、WPF デザイナでそのファイルを開きます。
次のコードを使用している Button コントロールの内容を設定します。
ソリューション エクスプローラで [Form1] をダブルクリックして Windows フォーム デザイナを開きます。
ツールボックスを開いて、[ラベル] をダブルクリックし、フォームにラベル コントロールを追加します。Text プロパティの値を「Hello」に設定します。
F5 キーを押してアプリケーションをビルドし、実行します。
SimpleControl 要素とラベル コントロールにより、テキスト [Hello] が表示されます。
ローカライズを有効にする
Windows フォーム デザイナでは、サテライト アセンブリのローカライズを有効にする設定を行うことができます。
ローカライズを有効にする手順
ソリューション エクスプローラで、[Form1.cs] をダブルクリックして Windows フォーム デザイナで開きます。
[プロパティ] ウィンドウで、フォームの [ローカライズ可能] プロパティを true に設定します。
[プロパティ] ウィンドウで、[言語] プロパティを [スペイン語 (スペイン)] に設定します。
Windows フォーム デザイナで、ラベル コントロールを選択します。
[プロパティ] ウィンドウで、Text プロパティの値を「Hola」に設定します。
Form1.es-ES.resx という名前の新しいリソース ファイルが、プロジェクトに追加されます。
ソリューション エクスプローラで、[Form1.cs] を右クリックし、[コードの表示] をクリックしてコード エディタで開きます。
InitializeComponent の呼び出しの前にある Form1 コンストラクタに次のコードをコピーします。
ソリューション エクスプローラで、[LocalizingWpfInWf] を右クリックし、[プロジェクトのアンロード] をクリックします。
プロジェクト名に (利用不可) のマークが付きます。
[LocalizingWpfInWf] を右クリックし、[LocalizingWpfInWf.csproj の編集] をクリックします。
コード エディタでプロジェクト ファイルが開きます。
プロジェクト ファイルの最初の PropertyGroup に次の行をコピーします。
<UICulture>en-US</UICulture>
プロジェクト ファイルを保存して閉じます。
ソリューション エクスプローラで、[LocalizingWpfInWf] を右クリックし、[プロジェクトの再読み込み] をクリックします。
リソース識別子を割り当てる
リソース識別子を使用すると、ローカライズ可能な内容をリソース アセンブリにマッピングできます。updateuid オプションを指定すると、MsBuild.exe アプリケーションが自動的にリソース識別子を割り当てます。
リソース識別子を割り当てる手順
[スタート] メニューから、Visual Studio コマンド プロンプトを開きます。
次のコマンドを使用して、ローカライズ可能な内容にリソース識別子を割り当てます。
msbuild /t:updateuid LocalizingWpfInWf.csproj
ソリューション エクスプローラで、[SimpleControl.xaml] をダブルクリックして、コード エディタでそのファイルを開きます。msbuild コマンドによって、すべての要素に Uid 属性が追加されています。これにより、リソース識別子の割り当てを用いたローカライズが容易になります。
F6 キーを押してソリューションをビルドします。
LocBaml を使用してサテライト アセンブリを生成する
ローカライズされた内容は、リソース専用サテライト アセンブリに格納されています。LocBaml.exe コマンド ライン ツールを使用して WPF 内容のローカライズされたアセンブリを生成します。
サテライト アセンブリを生成する手順
プロジェクトの obj\Debug フォルダに LocBaml.exe をコピーします。詳細については、「方法 : アプリケーションをローカライズする」を参照してください。
コマンド プロンプト ウィンドウで、次のコマンドを使用してテンポラリ ファイルにリソース文字列を抽出します。
LocBaml /parse LocalizingWpfInWf.g.en-US.resources /out:temp.csv
Visual Studio または別のテキスト エディタで temp.csv ファイルを開きます。文字列 "Hello" をそのスペイン語の訳語 "Hola" に置き換えます。
temp.csv ファイルを保存します。
次のコマンドを使用して、ローカライズされたリソース ファイルを生成します。
LocBaml /generate /trans:temp.csv LocalizingWpfInWf.g.en-US.resources /out:. /cul:es-ES
LocalizingWpfInWf.g.es-ES.resources ファイルは、obj\Debug フォルダに作成されます。
次のコマンドを使用して、ローカライズされたサテライト アセンブリを作成します。
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 フォルダに作成されます。
プロジェクトの bin\Debug\es-ES フォルダに LocalizingWpfInWf.resources.dll ファイルをコピーします。既存のファイルを置き換えます。
プロジェクトの bin\Debug フォルダにある LocalizingWpfInWf.exe を実行します。サテライト アセンブリが上書きされるので、アプリケーションを再度ビルドしないでください。
アプリケーションにより、英語の文字列の代わりにローカライズされた文字列が表示されます。
参照
処理手順
チュートリアル : Windows フォームのローカリゼーション