しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

ResXManager を使って UWP アプリケーションの多言語対応を簡単に行う

UWP アプリケーションを作った場合には、日本語だけの対応だとダウンロード数が伸びにくいので、出来れば多言語に対応しておいた方が良さそうです。

これまで手動で頑張って ResX を追加するという、非常に生産的ではないことを行なっていましたが、Visual Studio に神拡張機能があることを知ったので試しました。

ResXManager - Visual Studio Marketplace

ResX をキー名ベースで編集できるだけでも便利なのですが、Microsoft Translator や Bing Translator を使って、自動的に機械翻訳された ResX を作ってくれます。

今回は手軽な Cognitive Services の Translator Text API を使ってみました。Azure Portal で Cognitive Services のアカウントを新しく作ります。API Type を Translator Text API にするのを忘れないように。

f:id:shiba-yan:20170220130609p:plain

作成が終わったらアクセスキーをコピーしておきます。これを ResXManager に設定する必要があります。

f:id:shiba-yan:20170220135531p:plain

翻訳の準備が出来たので、新しく UWP アプリケーションを作成して、最初に元になる言語リソースを追加しておきます。今回は日本語をベースに各言語に翻訳するので、ja-JP でリソースを作成しておきました。

予めキーとテキストを入力しておきます。最初の 1 つ目はファイルを作成しておかないといけないようです。

f:id:shiba-yan:20170220140740p:plain

Visual Studio から ResXManager を開いて、新しく言語を追加します。まずはわかりやすいように en-US を追加しました。ダイアログでは入力補完が効くので簡単です。

f:id:shiba-yan:20170220135828p:plain

英語だけではつまらないと思ったので、ついでにドイツ語も追加してみました。この時点で ResXManager の表示は以下のようになっているはずです。

f:id:shiba-yan:20170220140412p:plain

言語を追加しただけではリソースファイル自体は生成されないのですが、赤くなっている部分のセルをダブルクリックするとファイル作成ダイアログが表示されるので、ここから作ることが出来ます。

これで機械翻訳 API の準備が出来たので、画面下にあるタブから Translate を選びます。上に機械翻訳サービスのタブがあるので、Azure を選んでコピーしておいたアクセスキーを張り付けておきます。

f:id:shiba-yan:20170220143248p:plain

Source と Target を選択しないといけないので、Source には日本語を Target には英語とドイツ語を選んでおきます。これで準備は完了です。

画面下にある Restart ボタンをクリックすると、翻訳が実際に行われます。

f:id:shiba-yan:20170220140509p:plain

翻訳結果はドロップダウンメニューにもなっているので、選択すると別の翻訳結果を見ることも出来ます。

今は Azure しか設定していないですが、他の API の設定を行うと、それぞれから最良の結果を選べるようになっているみたいですね。

f:id:shiba-yan:20170220143604p:plain

最後に Apply All か Apply Selected をクリックすると、実際にリソースファイルに反映されます。

f:id:shiba-yan:20170220140545p:plain

予め 1 つはリソースを作っておく必要はありますが、後は完全に自動で行えるのはかなり便利でした。

機械翻訳も最近はニューラルネットワークを使うことで質が上がっているので、かなり良い選択になった気がします。今回は UWP に対して使いましたが、当然ながら ASP.NET など ResX を使うアプリケーション全てに対応しています。