ページ

2012年5月7日月曜日

[MetroStyle] メトロスタイルアプリのグローバリゼーション

「WinRT でのグローバリゼーションはどうなってるんだろう?」 と思ってたらちょうど Tim Heuer 氏がまとめてくれてた。
Develop your app for everyone–localize your UI
以下、個人的に気になったところなどを覚え書きを兼ねて。

JavaScript WinRT
How to manage string resources」 によると、strings フォルダを作り、その下に en-us、ja-jp などのフォルダを作り、その下にリソースファイル(resources.resjson)を作る。ちなみに .resjson は拡張子からわかるように JSON 形式。
まず、以下のように onloaded で WinJS.Resources.processAll(); を呼び出しておく。

WinJS.Application.onloaded = function(){
    WinJS.Resources.processAll();
}

XAML では

<span data-win-res="{textContent:'greeting'}"></span>

というような形式で使える。data-win-res は 「Quickstart: Loading user- and device-specific UI resources」 によると data-win-res="{propertyname: 'resource ID', propertyname2: 'resource ID2}" という形式。(ならば、textContent じゃなく innerText と書いてもいいのかな?)
JavaScript では

var resLoader = new Windows.ApplicationModel.Resources.ResourceLoader();
xxx = resLoader.getString("resource ID");

で文字列リソースを取れる。
あと、画像には <img src=”images/logo.png”/> と書いてもスケールにあわせて images/logo.scale-100.png、images/logo.scale-140.png、images/logo.scale-180.png を使ってくれるという機能もある。(images を en-us、ja-jp とかの下に作っておくと言語別の画像を使ってくれるのかどうかは記述が見つからなかった)

C#/VB WinRT
QuickStart: Make your Metro style app world ready」 によると、en-us、ja-jp などのフォルダの下に画像ファイルやリソースファイル(Resources.resw)を入れる。
XAML は、

<TextBlock x:Uid="HelloWorld" Text="Hello World" />

という感じで書いておく。
Resources.resw には

Name=”HelloWorld.Text” Value=”こんにちは、世界”

という具合に書く。
Resources.resw の Name は 「Uid の値」 + 「プロパティ名」 で、Width など文字列以外のプロパティも書ける模様。(たぶん、文字列から変換するコンバーターがあればいいんだと思う) また、添付プロパティで別ネームスペースのものはネームスペースも明示しろとのこと。例: AutomationPeer.Name の場合は MediumButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name のようになる。
余談だが、XAML で xmlns:xx=”clr-namespace:Xxxx” と書いていたのも “using:Xxxx” と書くようになったとか。
C# で文字列リソースを取得するのは、

var resLoader = new Windows.ApplicationModel.Resources.ResourceLoader();
xxx = resLoader.GetString("resource ID");

という感じ。

その他
CodePlex に RESX Translator with Bing というツールがある。どうやら .resx を丸ごと Bing で翻訳してくれるみたい。

Visual Studio 11 Beta には Multilingual App Toolkit というツールがある。これを使うと TPX や XLIFF で管理できる?(よくわからないけど XLIFF というのはマルチランゲージを管理するための形式の一つみたい)

http://amanuens.com/ というサイト。どうやらマルチランゲージのリソースを管理できるサイト。「New Feature: Support for Windows Metro Resource Files」 によるとすでに .resw や .resjson に対応済み。あと、このサイトには英語から/への翻訳を人手でしてくれるサービスもある模様 Software localization service powered by Humans (品質とかはよくわからない)

0 件のコメント:

コメントを投稿