コンウェイとピーターの狭間で

ずっと放置しつつQiitaに移ったりしていましたが、スマートホームについて書いていこうかと

多言語アプリツールキットをWindowsフォームで試してみた

前回の記事で多言語アプリツールキットがWindowsフォームに対応していると書いたので、使用した感じを少々。 Visual Studio 2013です。

WPFは練度が足りないので、後回し(たぶんやりません)。

操作手順

まず、アセンブリ情報でニュートラル言語を設定。「日本語」にすべしという記事があるけど、なんか気持ち悪いので「英語」で。

f:id:banban525:20150415090946p:plain

適当にボタンを配置して・・・

f:id:banban525:20150415090954p:plain

おもむろに、ツール-多言語アプリツールキットの有効化(少し前はこれが出来なかったそうですね)。

f:id:banban525:20150415090957p:plain

すると、*.xlfファイルという見慣れないファイルができます。

f:id:banban525:20150415091022p:plain

翻訳言語の追加、で日本語(日本)と英語を選択すると、

f:id:banban525:20150415091027p:plain

f:id:banban525:20150415091032p:plain

言語に対応したxlfファイルができます。

f:id:banban525:20150415091039p:plain

この時点ではなぜかxlfファイルが空なので、Windowsフォームのデザイナを開いて、FormのLanguageを日本語に設定。 よくあるWindowsフォームの多言語の手順ですね。 (ここでもしかするとビルドが必要かも)

f:id:banban525:20150415091044p:plain

xlfファイルをダブルクリックすると、翻訳専用のウィンドウが開きます。先ほど作ったボタンのリソースが登録されていますね。この時点では英語のままです。

f:id:banban525:20150415091048p:plain

そこで、xlfファイルを選んで、機械翻訳の生成を実行すると・・・

f:id:banban525:20150415091055p:plain

日本語化されました!

f:id:banban525:20150415091100p:plain

このプロジェクトをビルドして、日本語環境で実行すると、翻訳されたリソースで表示されます。[○○]の形はいまいちですけど、翻訳エディタで編集すればOKですね。

f:id:banban525:20150415091106p:plain

感想など

どうやって実現しているのかなぁと思いましたが、Windowsフォームからリソースを抽出->xlf形式で保存->カスタムツール(XliffResxGenerator)でresxファイルを生成、としているようですね。 結局はresx形式なので、出力されるアセンブリは同じなんでしょう。 逆に、今までできていたWindowsフォームの子供のresxは作られないようなので、デフォルトの機能を置き換える何かがあるのだと思います。

f:id:banban525:20150415233642p:plain

WindowsのUIってある程度同じような用語が並ぶことがあるので、機械翻訳があるのはうれしいですね。 ただ、翻訳用のエディタは、翻訳作業を意識して文字リソースごとにレビュー済み等のステートを持たせてるようですが、 うまく使えば便利なんでしょうが、私の現状では使うイメージがないです。

また、Visual StudioにおけるWindowsフォームの多言語対応の機能は割と優秀なのでなかなかやめられないです。

逆にWPFは多言語対応が弱いので、そちらでうまく使えるかどうかが気になりますね。

あと、画面以外のリソースについても同じように翻訳ができます。 この場合は、resxにリソースを追加してビルドするだけで対応言語すべてのxlfファイルにリソースが追加されるので 通常のresxだけより便利かと思います。

xlfって何?

XLIFF形式という、翻訳用のXMLファイルのようですね。

XLIFF - Wikipedia

Visual StudioXMLエディタで開けば中を見ることができます。

f:id:banban525:20150416003555p:plain

割と単純な構造のようなので既存のresxから移行する際は、コンバートすればいけそう。 多言語アプリツールキットでは、スキーマはインストールされないようなので、それは少し残念です。