連休最終日という事で、みなさん MSCC アプリの開発・テストに取り掛かっているみたいですね。
そんな中、Prism を使っておられるという チーム丸焼き のみなさんが Windows Phone で正しいフォントが表示されないとツイートされていました。
@kazuakix kazuakiさんの中華フォント対策のブログ記事ですが、検証で使った端末を教えてください。手持ちのLumia 1520/620ではApplicationLanguages.Languagesにen-USしかなくて、中華フォントのままなもので。
— のぶ@普通のひぐまがろこどるやってみた (@kumar0001) 2015, 1月 12
Prism に限らずですが、最近の Windows Phone アプリのフォント対応は Frame.Language に Windows.Globalization.ApplicationLanguages.Languages[0] を指定するのが鉄板と思われます。
Prism アプリだとこんな感じですね。
protected override void OnLaunched(LaunchActivatedEventArgs args) { base.OnLaunched(args); var frame = Window.Current.Content as Frame; frame.Language = Windows.Globalization.ApplicationLanguages.Languages[0]; }
ただ、この対応をしても プロジェクトの Package.appxmanifest で既定の言語が "en-US" になっていると電話の言語設定に関係なく "en-US" がセットされてしまうみたいです。
僕らが普通にプロジェクトを作ると "ja-JP" になっているので気付きにくい問題ですね。
でも、海外と日本のユーザー数の違いを考えると既定の言語は en-US にしておきたいところ...。そこで既定の言語は "en-US" にしておいて Package.appxmanifest に言語を追加してやります。
GUI だとどこで編集するのかわからなかったのでテキストエディタで開いて Resources の下の Language を書き換えます。
この部分を...
<Resources> <Resource Language="x-generate"/> </Resources>
とりあえず英語、日本語にしてみました。
<Resources> <Resource Language="en-US"/> <Resource Language="ja-JP"/> </Resources>
無事に "ja" がセットされています。
でも、普通に多言語対応すれば無意識のうちに対応してしまってるような気もします。 「UI 英語版だけだけど日本語も表示するよ」という場合は要注意ですね。
今回の指摘
x-generate って、多言語化ツールキットでサポートされてる言語の一覧で置換されるから、普通に多言語化しましょ? 🏠
— ゆたか (@tmyt) 2015, 1月 12
そういう事ですよね...