WPFアプリをローカライズするときは、言語リソースをサテライトアセンブリとして配布するのが普通だと思う。アセンブリはResource.resxのテーブルに書いてVSで作る方法や、使ったことはないがLocBamlというツールを使って生成する方法などがある。
しかし、今回Picmvrでは、とにかくローカライズの手間を減らしたかったのでサテライトアセンブリを作らなかった。どれくらい手間を減らしたかったというと、言語リソースファイルすら一つも作りたくなかった(特に言語リソースの文字列それぞれのリソース名を考えたり見るのが苦痛で、匿名リソース的なものにできないかと考えていた)。
そこで、今回C#とXAMLの文字列リテラルを擬似的に多言語化して記入することにした。これはText="$りんご$Apple"的な記法を使う。そしてC#とXAMLに対応したプリプロセッサ的なツールを作り、そのソースコード内のリテラルをビルド時に解決するというやり方をしてみた。一応うまくいったようだ。
ローカライズ情報がC#とXAMLコード内に完全におさまるので、翻訳の分業には全く向かないが、プログラマが一人でプログラミングと全翻訳を担当するケースであれば作業効率の点でなかなか良いかもしれない。プリプロセッサ的なツールの設計・実装からローカライズまで短時間でできた。いつものようにソースコードを書くだけで、翻訳テーブルを広げて編集するような手間は発生しない。
配布アプリは、言語リソースがなく、EXEファイルに言語情報が完全に含まれる非グローバルなアプリと同じような構成になる。そしてVSのソリューション構成の方に別言語が追加される。
ビルドのたびにローカライズ処理が発生するのが難点。またBlendなどでのデザイン編集がとてもやりにくくなる。
ビルドのたびにローカライズ処理が発生するのが難点。またBlendなどでのデザイン編集がとてもやりにくくなる。
ダウンロード: