原文
WPF Localization Guidance 「Rick StrahlとMichele Leroux Bustamante(2009年6月)」の和訳です。地域設定の実装の参考にしてください。
関連ファイル
MSBuild作業を使用する
Using an MSBuild Task
先程のセクションで説明されるバッチファイルは、 地域設定されたBAMLリソースとResxリソースを結合する処理の進行過程を見ることがより簡単になります。 別の方法は、MsBuildタスクを使用することです。 それは、設定にもう少し作業がありますが、その時、あなたが、ビルド処理を利用することができるように 、サテライト・アセンブリ出力は、それに、構築され、さらに統合されており、信頼できます。
先に述べたと同じCodeProject記事は、(http://www.codeproject.com/KB/WPF/LocBamlClickOnce.aspx) ツールのようないくつかの他の役に立つ作業と一緒に、どのように、この作業を実行するかを示します。 それは、エクスポートされたCSVの結果を、以前に地域設定されたCSVコンテンツと同期することができます。 本記事の概念は、類似したビルド・スクリプトをつくるために使用されています。
Figure 16は、わずかに単純なビルド・スクリプトを具体的に説明します。 それは、LocBamlの生成とサテライト・アセンブリの結合だけを処理します。
FIGURE 16:
サテライト・アセンブリを作成するLocBamlを実行するためにMsBuild Targetを使用します。
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Adds the build action 'LocBamlCsv' -->
<!-- ビルド動作『LocBamlCsv』を追加します -->
<ItemGroup>
<AvailableItemName Include="LocBamlCsv"/>
</ItemGroup>
<Target Name="AfterBuild"
DependsOnTargets="$(CreateSatelliteAssembliesDependsOn)" >
<!-- Locbaml needs the runtime assemblies in the output dir -->
<!-- Locbamlは、出力ディレクトリにランタイム・アセンブリを必要とします。-->
<Copy SourceFiles="$(ProjectDir)..\Tools\LocBaml.exe"
DestinationFolder="$(OutputPath)" />
<!-- generate a .resources file for .csv merged output -->
<!-- .csvの出力を結合した.resourcesファイルを生成します。 -->
<Exec Command="LocBaml /generate
..\..\$(IntermediateOutputPath)$(TargetName).g.$(UICulture).resources
/trans:%(LocBamlCsv.FullPath) /out:..\..\$(IntermediateOutputPath)
/cul:%(LocBamlCsv.Culture)"
WorkingDirectory="$(OutputPath)"
ContinueOnError="true"/>
<Exec Command="al /template:$(TargetName).exe /culture:%(LocBamlCsv.Culture)
/out:..\..\$(OutputPath)%(LocBamlCsv.Culture)\$(TargetName).resources.dll
/embed:$(TargetName).g.%(LocBamlCsv.Culture).resources
/embed:$(TargetName).Properties.Resources.%(LocBamlCsv.Culture).resources"
WorkingDirectory="$(IntermediateOutputPath)"
ContinueOnError="true"/>
</Target>
</Project>
このビルド・ターゲットを使用するために、次に示す準備が必要です。:
- LocBaml.exeは、あなたのプロジェクトと同じフォルダ・レベルの、\Toolsフォルダの中に存在する必要があります。
- 地域設定されたCSVファイルは、プロジェクト・ルート下で\Resフォルダに存在する必要があります。 それぞれのカルチャ.csvファイルは、.csv拡張子(すなわち、de.csv)を追加した、カルチャ識別子で名前を付ける必要があります。
- あなたのプロジェクト・ファイルの存在するターゲットの後に、ビルド・ターゲットを追加します。:
<Import Project="$(ProjectDir)LocBamlCsv.Target.xml" />
- あなたが、エクスポートして、それを結合したい、それぞれのカルチャためにアイテム・エントリを追加します。:
<LocBamlCsv Include="Res\de.csv">
<Culture>de</Culture>
</LocBamlCsv>
</code>
/embed:$(TargetName).MyResources.%(LocBamlCsv.Culture).resources
あなたは、これを処理するために、手動でプロジェクト・ファイルとLocBamlCsv.Target.xmlファイルを編集する必要があります。 あなたは、どのように、これが、完全なプロジェクトに設定されるか見るために、WpfLocalizationLocBamlプロジェクトを確認することができます。
ビルド作業は、対象とする出力フォルダ(bin\Debugやbin\Release)に、LocBaml.exeをコピーします。 そして、そこから、LocBamlを実行します。それは、続いて、中間の(obj\DebugやRelease)フォルダに、出力リソースを作成します。 アセンブリ・リンカは、続いて、最終的なサテライト・リソース・アセンブリを構築するために呼び出されます。それには、地域設定されたResxとBAMLリソースが含まれています。