多言語アプリツールキットをWindowsフォームで試してみた
前回の記事で多言語アプリツールキットがWindowsフォームに対応していると書いたので、使用した感じを少々。 Visual Studio 2013です。
WPFは練度が足りないので、後回し(たぶんやりません)。
操作手順
まず、アセンブリ情報でニュートラル言語を設定。「日本語」にすべしという記事があるけど、なんか気持ち悪いので「英語」で。
適当にボタンを配置して・・・
おもむろに、ツール-多言語アプリツールキットの有効化(少し前はこれが出来なかったそうですね)。
すると、*.xlfファイルという見慣れないファイルができます。
翻訳言語の追加、で日本語(日本)と英語を選択すると、
言語に対応したxlfファイルができます。
この時点ではなぜかxlfファイルが空なので、Windowsフォームのデザイナを開いて、FormのLanguageを日本語に設定。 よくあるWindowsフォームの多言語の手順ですね。 (ここでもしかするとビルドが必要かも)
xlfファイルをダブルクリックすると、翻訳専用のウィンドウが開きます。先ほど作ったボタンのリソースが登録されていますね。この時点では英語のままです。
そこで、xlfファイルを選んで、機械翻訳の生成を実行すると・・・
日本語化されました!
このプロジェクトをビルドして、日本語環境で実行すると、翻訳されたリソースで表示されます。[○○]の形はいまいちですけど、翻訳エディタで編集すればOKですね。
感想など
どうやって実現しているのかなぁと思いましたが、Windowsフォームからリソースを抽出->xlf形式で保存->カスタムツール(XliffResxGenerator)でresxファイルを生成、としているようですね。 結局はresx形式なので、出力されるアセンブリは同じなんでしょう。 逆に、今までできていたWindowsフォームの子供のresxは作られないようなので、デフォルトの機能を置き換える何かがあるのだと思います。
WindowsのUIってある程度同じような用語が並ぶことがあるので、機械翻訳があるのはうれしいですね。 ただ、翻訳用のエディタは、翻訳作業を意識して文字リソースごとにレビュー済み等のステートを持たせてるようですが、 うまく使えば便利なんでしょうが、私の現状では使うイメージがないです。
また、Visual StudioにおけるWindowsフォームの多言語対応の機能は割と優秀なのでなかなかやめられないです。
逆にWPFは多言語対応が弱いので、そちらでうまく使えるかどうかが気になりますね。
あと、画面以外のリソースについても同じように翻訳ができます。 この場合は、resxにリソースを追加してビルドするだけで対応言語すべてのxlfファイルにリソースが追加されるので 通常のresxだけより便利かと思います。
xlfって何?
XLIFF形式という、翻訳用のXMLファイルのようですね。
Visual StudioのXMLエディタで開けば中を見ることができます。
割と単純な構造のようなので既存のresxから移行する際は、コンバートすればいけそう。 多言語アプリツールキットでは、スキーマはインストールされないようなので、それは少し残念です。