各国のUIフォントに対するためのより簡単な対応方法
#wp7dev_jp
Windows Phone アプリケーション開発時の対応策を前回紹介しましたが、より簡単な方法をご提案いただきました。感謝!
綾野ちい さん、Shintaro Wakayama さんありがとうございました。
もっとも簡単なマルチランゲージに対応したエレガントなやり方
ようは、ページごとに設定するのではなくその上位のFrameで設定すればいいという話。WPFやSilverlightは上位の設定を引き継ぎますからね。
やり方は(紹介してくれた方法とちょっと違いますが)App.xaml.cs のなかの App のクラスのコンストラクタにこちらを入れるだけ。
using System.Globalization;
using System.Windows.Markup;
public partial class App : Application
{
:
public App()
{
:
RootFrame.Language = XmlLanguage.GetLanguage(CultureInfo.CurrentUICulture.Name);
}
}
もしくは、1行だけで対応したい場合はこちらですね。
public partial class App : Application
{
:
public App()
{
:
RootFrame.Language = System.Windows.Markup.XmlLanguage.GetLanguage(System.Globalization.CultureInfo.CurrentUICulture.Name);
}
}
App.xaml.cs 内の1行だけでいいのは助かりますね。
Befor & After
べつに、自分の名前がちゃんとでないから頑張っているわけじゃないんだからね!
テンプレート化
これで、簡単にできるわけですが、やっぱり入れ忘れがあるかも。今回は Item Template の修正がいらないので楽。
WindowsPhoneApplicationTemplate.zip :Windows Phone アプリケーション
WindowsPhoneDataboundApplication.zip :データバインドアプリケーション
WindowsPhonePanoramaApplication.zip :パノラマアプリケーション
WindowsPhonePivotApplication.zip :ピボットアプリケーション
WindowsPhoneSlXnaApplication.zip :ハイブリッドアプリケーション
で、あちこちのマシンに入れるのに楽をするための、上書きするバッチファイルも作って完成。解凍したらバッチを「管理者として実行」すればOK。なお、前回の WpJpSupporyProject.zip を使った方は、一端元のテンプレートに戻すバッチを実行してください。(ItemTemplateを戻さないといけないので)
- 使う方は自己責任で。
- 実行するとテンプレートを上書きします。
- テンプレートは以下のフォルダに入っています。
- %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\CSharp\Silverlight for Windows Phone\1041
- %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\VisualBasic\Silverlight for Windows Phone\1041
- 手動で行う場合は %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\devenv /setup をお忘れなく。
今回は一応Visual Basicにも対応。
Comments
Anonymous
December 03, 2011
いつもこちらのブログにお世話になっております。 今まではいちいちページごとにxamlで言語指定していたのですが、こちらのテンプレートファイルのおかげで楽になりました。 一点、バッチファイルでテンプレートファイルをコピー後、VSのディレクトリに移動する部分で環境変数が64bitのもの固定になっているようで、32bit環境ではうまく動きませんでした。 手動で32bitの環境変数を指定することで回避できましたので、他の方のためにも、お手すきのときにバッチファイルの修正をしていただければと思います。Anonymous
December 05, 2011
ご報告ありがとうございます。 修正しました。