WindowsストアアプリやWindows Phoneアプリで多言語対応するときに便利なのが多言語アプリツールキットです。
http://msdn.microsoft.com/ja-JP/windows/apps/hh848309
ダウンロードサイトから「日本語」のmsiをダウンロードします。この「日本語」というのは「日本語」環境のVisual Studioで使うメニューなどが日本語化されている版という意味で、これだけで多言語対応が可能です。最初、必要な言語分をダウンロードしてインストールするのかと思ったら違いました。
なお、多言語アプリツールキットがサポートしているのは、WindowsストアアプリとWindowsPhoneアプリのみになります。
準備
多言語対応したいプロジェクトをVisual Studioで開きます。
まずはプロジェクトのナチュラル言語が設定されているかを確認しておきましょう。
日本語の場合、「日本語」と「日本語(日本)」がありますが、「ja-jp」という言語識別子にしないといけないため、「日本語(日本)」を選択しておきましょう。
これが、このアプリケーションの主言語となります。なお、主言語とは言ってもOSの言語指定がja-jpの時以外はen-usとかにしたいときもニュートラル言語は「日本語(日本)」で問題ありません。
ソリューションエクスプローラでプロジェクトを右クリックして新しくフォルダの追加で「Resources」フォルダとその中に「ja-jp」というフォルダを作成します。
[ja-jp]フォルダを右クリックして新規項目として「リソースファイル」を追加します。
名前は必ず「Resources.resw」のままとします。
追加されたResources.reswファイルをソリューションエクスプローラでダブルクリックして編集します。
試しに、AppName.Textという名前で「はてなボカロニュース」という文字列を登録してみましょう。
このリソースを使うときは
XAMLであればコントロールのuidに「AppName」と指定すれば「AppName.Text」の設定値がTextプロパティに設定されます。
この状態でもエディタでの画面表示にはリソースの設定値が反映されるという情報もありましたが、試した範囲では(C#であっても)表示されませんでした。
なにか設定が抜けているのでしょうか。
コードの場合、「AppName.Text」というドット付の名前は使えないので、「AppNameCode」という名前でリソースを用意して
Dim loader As New Windows.ApplicationModel.Resources.ResourceLoader Dim title As String = loader.GetString("AppNameCode")
のように使います。
これで多言語アプリツールキットを使って多言語化する元ができました。
多言語アプリツールキットの使い方 - 翻訳言語の追加
インストールしたら、Visual Studioでソリューションを開き、[ツール]-[多言語アプリツールキットの有効化]メニューをクリックして有効化します。
この有効化メニューはツールメニューの下にありますが、プロジェクトごとに有効化操作が必要です。また、現時点で有効化できるのは「Windowsストアアプリ」と「WindowsPhoneアプリ」のプロジェクトだけで、Windowsフォームなどでは有効化メニューが使用不可になっています。
有効化するとプロジェクトに[MultilingualResources]というフォルダが追加されます。
次に[プロジェクト]-[翻訳言語の追加]メニューをクリックします。
ニュートラル言語として日本語を指定してあるので、表示される翻訳言語ダイアログでは「ja-jp」にはすでのチェックが入っていて外せなくなっています。
追加で「英語[en]」もチェックしましょう。
翻訳言語の追加を行うとMultilingualResourcesフォルダの下にhogehoge_en.xlfというファイルが作成されます。
HatenaVocalidNews_en.xlfファイルを右クリックして[ファイルを開くアプリケーションを選択]-[XAMエディター]を選択します。
ほぼ無定義のファイルが開きます。
ここで[ビルド]-[リビルド]をしてみましょう。
事前に「ja-jp」フォルダに作っていたResources.reswファイルに登録した内容が転機されてきます。
多言語アプリツールキットの使い方 - 翻訳
日本語リソースに定義された定義が自動転記されるだけでもリソース追記ミスなどがなくなり便利なのですがが、多言語アプリツールキットのすばらしい点はこの後にあります。
ソリューションエクスプローラでhogehoge_en.xlfファイルを右クリックすると[機械翻訳を生成]というメニューが追加されています。
[機械翻訳を生成]メニューをクリックするとhogehoge_en.xlfファイルに転記されていた日本語をenつまり英語に機械翻訳してくれます。
なぜか「はてな」が「Apple iPad」となっていますが「ボカロニュース」は「vocaloid news」に英語翻訳されています。
え?「ボカロ」が「voscaloid」だって知っているの?
ここまでは説明の都合でXMLエディターでxlfファイルを開いてきましたが、既定のエディタである「多言語エディタ」で開いてみましょう。
機械翻訳した結果を訂正したいときは多言語エディタの翻訳欄を訂正することで対応できます。
訂正が終わったら保存を押せば完了です。
結果の確認
まずは日本語の状態の確認。きちんと「はてなボカロニュース」となっていますね。
シミュレータの言語に英語を追加してみましょう。
言語順で英語を先頭にします。
シミュレータ上でアプリを終了してからスタート画面を表示して、そこにあるアプリのタイルから起動すると、タイトルが英語版リソースに切り替わっています。
デフォルト言語の考察
それでは、リソースが用意されていない、つまり、日本語と英語の環境ではどのように表示されるかを最後に確認してみましょう。
中文-English-日本語の順番のときは
最初にリソースがある言語であるEnglishなリソースが使われます。
リソースの順番を、中文-日本語-Englishとすれば、日本語リソースが使われます。
多言語アプリツールキットを使えば、リソースの転記、そしてリソースの翻訳という2つの作業がだいぶ簡略化されます。
ぜひ、多言語アプリツールキットを活用してアプリの多言語化を行って、世界を配布対象としたアプリを作成してみてください。