2011-11-18
日本語フォントが中華フォントにならないために
日本語フォントは美しい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
blog:2011:11:languageはコードビハインドで指定するべきかも [mecab Personal Wiki]
この指摘を受けて、試しにエミュ上で実験してみました。「表示言語」を日本語に、「地域設定」を英語(米国)にして、
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もやっていました。
そして、コンストラクターに既に上記のコードが書かれているようになるテンプレートパッチが用意されました。
GJ!案をいただいて、テンプレートに全部入れちゃいました。 URL RT @ChiiAyano 昨日のLanguageの件について、加筆修正しました。 #wp7jp #wp7dev_jp URL
- 177 http://www.google.co.jp/url?sa=t&rct=j&q=中華フォント&source=web&cd=15&ved=0CIYBEBYwDg&url=http://d.hatena.ne.jp/ChiiAyano/20111118/p1&ei=5u3HTuDgCI_HmQXtrfAx&usg=AFQjCNEsk_KcisM8OdIu1mAevHJQ9ye9yA&sig
- 115 http://t.co/nHOev6k8
- 102 http://t.co/xcPp7W4U
- 81 http://t.co/HWfsdYCf
- 61 http://t.co/90lPFtPy
- 47 http://htn.to/fHDAWm
- 43 http://t.co/bLLglVzK
- 34 http://blogs.msdn.com/b/shintak/archive/2011/11/20/10238814.aspx
- 22 http://longurl.org
- 20 http://t.co/iHqwKPYw
