日本語フォントは美しいYu Gothicなのに、WP7の仕様のために例え日本語ロケールでも中華フォントになってて悲しい思いをします。
その修正をするために、各PageのxamlのPage要素に「Language="ja-jp"」の属性をぶち込む作業は地道で仕方がないです。けど、多言語対応でもし中国語も対応したいというときに、中国人にとっても悲しい思いをすることになるでしょう。
そこで僕はこうしました。
コードで各Pageのコンストラクターに
// (2011/11/20修正)↓だと、地域設定が日本以外だと中華フォントになってしまう //this.Language = XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.Name); //こっちで安定 this.Language = XmlLanguage.GetLanguage(CultureInfo.CurrentUICulture.Name);
を入れることにしました。これで自動的にシステムのロケール設定に応じて適切に変わることでしょう。
Tangoではぜひこの面倒な作業を解消させて下さい ;-)
追記 (2011/11/20)
コンストラクターに渡したデータのうち、CultureInfo.CurrentCulture.Nameではなく、CultureInfo.CurrentUICulture.Nameの方がいいかもしれないという指摘をいただきました。
@ChiiAyano もしかするとCurrentCultureよりCurrentUICulture使ったほうがいいかもしれないです。詳細は以下で書きました>< URL #wp7dev_jp
2011-11-19 18:14:50 via web to @ChiiAyano
この指摘を受けて、試しにエミュ上で実験してみました。「表示言語」を日本語に、「地域設定」を英語(米国)にして、
Debug.WriteLine(CultureInfo.CurrentCulture.Name); Debug.WriteLine(CultureInfo.CurrentUICulture.Name);
を呼び出して実行させてみると、
en-US
ja-JP
という結果が出ました。確かに違います。
なので、UICultureの方を使う方が良い感じがします。
また、このコードのビヘイビアを作った方もいます。
参考にカスタム Behavior を書いてみた。URL RT @ChiiAyano 書いてみた #wp7jp #wp7dev_jp / 日本語フォントが中華フォントにならないために - 古事連書帖 URL
2011-11-19 16:10:21 via Janetter2 to @ChiiAyano
Page.Language を設定する Behavior « WP7 私的 Dev ノート
さらに、id:tmytもやっていました。
XamlのLanguage - tmytのらくがき
そして、コンストラクターに既に上記のコードが書かれているようになるテンプレートパッチが用意されました。
GJ!案をいただいて、テンプレートに全部入れちゃいました。 URL RT @ChiiAyano 昨日のLanguageの件について、加筆修正しました。 #wp7jp #wp7dev_jp URL
各国のUIフォントに対するための対応方法 - 高橋 忍のブログ - Site Home - MSDN Blogs