shogouki's 技術系メモ

WindowsPhoneとか、WPFとか、Androidとかその辺の技術メモ

画像をローカライズするテスト

AppHubに「画像のローカライズしたいんだけど」って質問があったので、方法を考えてみました。

アプリを国際化する

まずは、先人のノウハウをもとにアプリを国際化します。

参考 覚え書き:Windows Phoneアプリをローカライズする
http://darutk-oboegaki.blogspot.jp/2011/06/windows-phone_10.html

画像をローカライズする

言語環境ごとに画像をローカライズする方法を考えます。

  1. 言語リソースに画像を追加する
  2. ImageのUriを言語リソースに登録し、それをBindingで参照する
  3. 言語設定を取得し、コードビハインドからImageのSourceにセットする

1は試してみたところ、System.Drawing.Bitmap名前空間がWPでは使えないため×っぽいです。
3は確実に出来るのでいいのですが、画像ごとに処理を記述するのは面倒です。

というわけで、今回は2を試してみます。

まず、こんな感じでローカライズする画像を追加します。
f:id:shogouki3:20120319223750p:plain

次に、言語リソースに文字列として、
名前:TopImageUri
値:Images/other/other.png

というように、対応言語ごとに表示したい画像のUriを同じ名前で登録します。

ローカライズしたい画像はこのようにXAMLで記述します。

<Image Source="{Binding Source={StaticResource AppResourcesProvider}, Path=AppResources.TopImageUri}"/>

そうすると、

英語環境
f:id:shogouki3:20120319232402p:plain

日本語(英語以外)環境
f:id:shogouki3:20120319232458p:plain

と、このように画像が環境によって変わりました。




が、デザイン画面ではこのように画像が表示されません。
f:id:shogouki3:20120319233504p:plain

これは困るのでちょっと良い方法がないか検討してみます&あったら教えてください。