うさぎ駆動開発

UWP, Xamarin.Macを中心によしなしごとを書いていきます。

UWP アプリのローカライズをしよう (後編)

UWP アプリの国際化対応に便利なツールを紹介します。前編はこちらから。

aile.hatenablog.com

よくわたしが使う二つのツールを紹介しますが,これらを使った場合はビルドする環境すべてにインストールしておく必要があるので注意してください。

プロジェクト構成

デフォルト言語en-USで,これに日本語リソースを追加していきます。

f:id:ailen0ada:20160405220826p:plain

ResW File Code Generator

コード内からリソース文字列を参照するにはResourceLoaderを使う必要がありました。たとえばこういう感じ。

var r = ResourceLoader.GetForCurrentView();
TextBlock1.Text = r.GetString("Greeting");

実に面倒ですし,typoによる見つけにくい間違いも起きそうです。そこでこちらのツールResW File Code Generatorをお勧めしたいです。

reswcodegen.codeplex.com

vsixパッケージをインストールし,reswファイルのプロパティからカスタムツールに設定します。設定するのはデフォルト言語のリソースファイルだけでかまいません。

f:id:ailen0ada:20160409212037p:plain

ファイル名と同じクラスが,指定した名前空間以下に自動生成されるようになります。

f:id:ailen0ada:20160409212700p:plain

生成されたコードを見るとResourceLoaderを呼んでラップしているだけですが,get-onlyプロパティにしてくれるため,リソース名を変更したときにきちんとエラーになりますし,インテリセンスも効きます。しかもコメント付き。

f:id:ailen0ada:20160409212440p:plain

日本語が入っていると化けますので,英語リソースに設定しておくと大変捗ります。

Multilingual App Toolkit

リソースファイルを各言語間で同期していくのはかなり大変な作業になります。言語が増えればなおさらです。そんなときにこちらのツールキット。

visualstudiogallery.msdn.microsoft.com

インストール後,ツールメニューからプロジェクトに対して有効にします。 f:id:ailen0ada:20160409214220p:plain

次に言語を選択します。本来は疑似言語のリソースを作っておいて,これに英語や日本語を追加していくのがまっとうな使い方のようですが,デフォルト言語en-USに対して日本語を追加していくことにします。 f:id:ailen0ada:20160409214450p:plain

ダイアログで,ja-JPを検索してチェックマークを入れ,OKをクリックします。このとき,すでに存在するja-JP以下のファイルはダミーのものに置き換えられますので注意してください。今後,置き換えられたダミーファイルをいじる必要はありません。

f:id:ailen0ada:20160409214659p:plain f:id:ailen0ada:20160409214705p:plain

ではさっそく,追加されたApp3.ja-JP.xlfをダブルクリックしてエディタを開きます。ここでローカライズを行っていくことになります。 f:id:ailen0ada:20160409214932p:plain

新しいリソースをen-USに追加した後に,このエディタを開くと新しいエントリが増えています。

翻訳を追加して保存すると,ビルド時にツールキットがリソースファイルを生成してくれます。

まとめ

国際化対応の際に便利なツールを紹介しましたが,これらは自動生成を行うツールのため,ビルドする環境にインストールされていない場合はビルドすらできません。

その点がクリアできれば大変便利に国際化対応を行っていくことができます。ぜひ試してみてください。