はつねの日記

Kinect, Windows 10 UWP, Windows Azure, IoT, 電子工作

多言語アプリツールキット

WindowsストアアプリやWindows Phoneアプリで多言語対応するときに便利なのが多言語アプリツールキットです。

http://msdn.microsoft.com/ja-JP/windows/apps/hh848309

ダウンロードサイトから「日本語」のmsiをダウンロードします。この「日本語」というのは「日本語」環境のVisual Studioで使うメニューなどが日本語化されている版という意味で、これだけで多言語対応が可能です。最初、必要な言語分をダウンロードしてインストールするのかと思ったら違いました。

なお、多言語アプリツールキットがサポートしているのは、WindowsストアアプリとWindowsPhoneアプリのみになります。

準備

多言語対応したいプロジェクトをVisual Studioで開きます。

 

まずはプロジェクトのナチュラル言語が設定されているかを確認しておきましょう。

image

日本語の場合、「日本語」と「日本語(日本)」がありますが、「ja-jp」という言語識別子にしないといけないため、「日本語(日本)」を選択しておきましょう。

これが、このアプリケーションの主言語となります。なお、主言語とは言ってもOSの言語指定がja-jpの時以外はen-usとかにしたいときもニュートラル言語は「日本語(日本)」で問題ありません。

 

ソリューションエクスプローラでプロジェクトを右クリックして新しくフォルダの追加で「Resources」フォルダとその中に「ja-jp」というフォルダを作成します。

image

image

 

[ja-jp]フォルダを右クリックして新規項目として「リソースファイル」を追加します。

image

名前は必ず「Resources.resw」のままとします。

 

追加されたResources.reswファイルをソリューションエクスプローラでダブルクリックして編集します。

試しに、AppName.Textという名前で「はてなボカロニュース」という文字列を登録してみましょう。

image

 

このリソースを使うときは

XAMLであればコントロールのuidに「AppName」と指定すれば「AppName.Text」の設定値がTextプロパティに設定されます。

image

この状態でもエディタでの画面表示にはリソースの設定値が反映されるという情報もありましたが、試した範囲では(C#であっても)表示されませんでした。

なにか設定が抜けているのでしょうか。

コードの場合、「AppName.Text」というドット付の名前は使えないので、「AppNameCode」という名前でリソースを用意して

        Dim loader As New Windows.ApplicationModel.Resources.ResourceLoader         Dim title As String = loader.GetString("AppNameCode")

のように使います。

 

これで多言語アプリツールキットを使って多言語化する元ができました。

 

多言語アプリツールキットの使い方 - 翻訳言語の追加

インストールしたら、Visual Studioでソリューションを開き、[ツール]-[多言語アプリツールキットの有効化]メニューをクリックして有効化します。

image

この有効化メニューはツールメニューの下にありますが、プロジェクトごとに有効化操作が必要です。また、現時点で有効化できるのは「Windowsストアアプリ」と「WindowsPhoneアプリ」のプロジェクトだけで、Windowsフォームなどでは有効化メニューが使用不可になっています。

 

有効化するとプロジェクトに[MultilingualResources]というフォルダが追加されます。

image

 

次に[プロジェクト]-[翻訳言語の追加]メニューをクリックします。

image

 

ニュートラル言語として日本語を指定してあるので、表示される翻訳言語ダイアログでは「ja-jp」にはすでのチェックが入っていて外せなくなっています。

追加で「英語[en]」もチェックしましょう。

image

 

翻訳言語の追加を行うとMultilingualResourcesフォルダの下にhogehoge_en.xlfというファイルが作成されます。

image

 

HatenaVocalidNews_en.xlfファイルを右クリックして[ファイルを開くアプリケーションを選択]-[XAMエディター]を選択します。

image

 

ほぼ無定義のファイルが開きます。

image

 

ここで[ビルド]-[リビルド]をしてみましょう。

image

事前に「ja-jp」フォルダに作っていたResources.reswファイルに登録した内容が転機されてきます。

 

多言語アプリツールキットの使い方 - 翻訳

日本語リソースに定義された定義が自動転記されるだけでもリソース追記ミスなどがなくなり便利なのですがが、多言語アプリツールキットのすばらしい点はこの後にあります。

ソリューションエクスプローラでhogehoge_en.xlfファイルを右クリックすると[機械翻訳を生成]というメニューが追加されています。

image

 

機械翻訳を生成]メニューをクリックするとhogehoge_en.xlfファイルに転記されていた日本語をenつまり英語に機械翻訳してくれます。

image

image

なぜか「はてな」が「Apple iPad」となっていますが「ボカロニュース」は「vocaloid news」に英語翻訳されています。

え?「ボカロ」が「voscaloid」だって知っているの?

 

ここまでは説明の都合でXMLエディターでxlfファイルを開いてきましたが、既定のエディタである「多言語エディタ」で開いてみましょう。

image

 

機械翻訳した結果を訂正したいときは多言語エディタの翻訳欄を訂正することで対応できます。

image

訂正が終わったら保存を押せば完了です。

 

結果の確認

まずは日本語の状態の確認。きちんと「はてなボカロニュース」となっていますね。

image

 

シミュレータの言語に英語を追加してみましょう。

image

 

言語順で英語を先頭にします。

image

 

シミュレータ上でアプリを終了してからスタート画面を表示して、そこにあるアプリのタイルから起動すると、タイトルが英語版リソースに切り替わっています。

image

 

デフォルト言語の考察

それでは、リソースが用意されていない、つまり、日本語と英語の環境ではどのように表示されるかを最後に確認してみましょう。

image

 

 

中文-English-日本語の順番のときは

imageimage

最初にリソースがある言語であるEnglishなリソースが使われます。

 

リソースの順番を、中文-日本語-Englishとすれば、日本語リソースが使われます。

image

image

 

多言語アプリツールキットを使えば、リソースの転記、そしてリソースの翻訳という2つの作業がだいぶ簡略化されます。

ぜひ、多言語アプリツールキットを活用してアプリの多言語化を行って、世界を配布対象としたアプリを作成してみてください。