LocBAML

WPFアプリケーションを多言語化(ローカライズ)する方法には2種類あります。ひとつはリソース(文字列テーブル)を使う方法で、もうひとつはLocBAMLツールとMSBuildを使う方法です。LocBAMLはSDKのサンプルにあるツールですが、実際のローカライズにも使えます。

LocBAMLを使ったローカライズは次の手順で行います。

  1. msbuildを使ってリソースDLLを作成
    1. プロジェクトファイル(.csprojか.vbproj)にUICultureを追加
      <UICulture>ja-JP<UICulture>
    2. XAMLファイルにuidを追加 (msbuildはコマンドプロンプトで使用)
      > msbuid /t:updateuid HelloApp.csproj
      > msbuild /t:checkuid HelloApp.csproj (チェックのみ)
    3. リソースDLLを作成
      > msbuild HelloApp.csproj
      bin\debug(release)\ja-JP\HelloApp.resources.dll が作成される
  2.  SDKサンプルにあるLocBAMLをビルドする
  3. LocBAMLを使ってローカライズ (ここでは<TextBlock >こんにちは</TextBlock>があるとする)
    1. csvファイルにローカライズするテキストを抽出 (locBAMLもコマンドプロンプトで使用)
      > LocBAML.exe /parse HelloApp.resources.dll /out:.\Hello.csv
          csvファイルの出力例「HelloApp.g.ja-JP.resources:window1.baml, Text1:System.Windows.Controles.TextBlock.$Content, None, TRUE, TRUE,,こんにちは」
    2. bin\debug(release)\en-US フォルダを作成して、HelloApp.exeとLocBAML.exeとHello.csvをコピー
    3. csvファイルを編集、たとえば
      「HelloApp.g.en-US.resources:window1.baml, Text1:System.Windows.Controles.TextBlock.$Content, None,T RUE, TRUE, , Hello」
    4. 新しいdllを作成
      > LocBAML.exe /generate HelloApp.resources.dll /trans:Hello.csv /out:c:\ /cul:en-US
  4.  実行ファイルと、ローカライズしたそれぞれのフォルダおよびその中のHelloApp.resources.dllを配置すれば、アプリケーション実行時にOSのロケールに応じて自動的に表示言語が変わります。

デフォルト ロケール(指定したロケール以外のロケールのときに使用するロケール) を指定するには、ソリューション エクスプローラのプロジェクトのPropertiesにあるAssemblyInfo.csにある次の行(32行目)のコメントを外してください。

//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]

すると、この場合は「en-US」がデフォルト ロケールになります。これをしないと、該当ロケールがないときに例外を投げて実行できません。

 

詳しくはSDKドキュメント(英語)を参照してください。