単一の衛星アセンブリでLocBamlとリソースを組み合わせる
-
07-07-2019 - |
質問
WPFでのローカライズへの推奨アプローチは、LocBamlツールを使用してローカライズ可能なアイテムを抽出することです。 csvファイル、アイテムを目的の言語に翻訳し、このcsvファイルから新しいsatteliteアセンブリを再生成します。しかし、私の実験から、これはresources.resxファイルからのサテライトアセンブリの生成と競合しているようです。どちらもリソースを単一のリソースファイルに結合せず、既存のサテライトアセンブリを単にオーバーライドするためです。
" merge"を実行するための推奨アプローチ(または、さらに優れた既存のツール)はありますか? LocBaml / generateからの出力と、resources.resxファイルで実行中のresgenの出力(これは、VSのビルドでデフォルトで実行されます)。誰も同じ問題に取り組んでいますか?
解決
LocBamlから.resourcesを生成し、アセンブリリンカーを使用してResxリソースとBAMLリソースをマージすることにより、手動でこれを行う必要があります。
プロセスは次のようになります。
LocBaml.exe /generate ..\obj\WpfLocalization.g.en-US.resources
/trans:Res\de.csv /out:de /culture:de
REM Combine resource files w/ Assembly Linker
al /template:WpfLocalization.exe
/embed:de\WpfLocalization.g.de.resources
/embed:..\..\obj\WpfLocalization.Properties.Resources.de.resources
/culture:de /out:de\WpfLocalization.resources.dll
(バッチファイルの1行のすべて)。
上記をプロジェクト用にカスタマイズされたバッチファイルに入れることができます。 LocBamlは出力ファイルと同じフォルダー内にある必要があることに注意してください。これをビルド後のタスクとして追加できます。
他のヒント
WinFormsと同じアプローチを使用でき、LocBamlよりもはるかに使いやすいです。
少し調べて、resources.resxとlocbamlで生成されたリソースを単一のファイル(al.exeを使用)にマージする方法に関する非常に詳細な説明を含まないLocBamlの使用方法を説明するこのページを見つけました。
このページでは、LocBamlを使用する3つの方法について説明します。アプローチ3の最後のステップを探していました。