kazuakix の日記

Windows Phone とか好きです

Windows Phone アプリのフォント対策のための言語指定

連休最終日という事で、みなさん MSCC アプリの開発・テストに取り掛かっているみたいですね。

そんな中、Prism を使っておられるという チーム丸焼き のみなさんが Windows Phone で正しいフォントが表示されないとツイートされていました。


 
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" がセットされてしまうみたいです。

f:id:kazuakix:20150112125811j:plain

f:id:kazuakix:20150112131913j:plain

僕らが普通にプロジェクトを作ると "ja-JP" になっているので気付きにくい問題ですね。
 
でも、海外と日本のユーザー数の違いを考えると既定の言語は en-US にしておきたいところ...。そこで既定の言語は "en-US" にしておいて Package.appxmanifest に言語を追加してやります。

GUI だとどこで編集するのかわからなかったのでテキストエディタで開いて Resources の下の Language を書き換えます。

f:id:kazuakix:20150112130349j:plain,w500

この部分を...

<Resources>
  <Resource Language="x-generate"/>
</Resources>

とりあえず英語、日本語にしてみました。

<Resources>
  <Resource Language="en-US"/>
  <Resource Language="ja-JP"/>
</Resources>

無事に "ja" がセットされています。

f:id:kazuakix:20150112130450j:plain

でも、普通に多言語対応すれば無意識のうちに対応してしまってるような気もします。 「UI 英語版だけだけど日本語も表示するよ」という場合は要注意ですね。
 

今回の指摘

そういう事ですよね...