2014年10月15日

続 Xamarin.Formsでローカライズ

久しぶりですが
Xamarin.Formsでローカライズ
Xamarin.Formsでローカライズ(XAML編)

の続きです。
Xamarin.FormsってタイトルですがXamarin.iOS限定で。

前回・前々回ではString.resxを使った.Net的なローカライズを書きました。(便宜上.Net形式とします)

ですがもともとXamarin.iOS(というかiOSのアプリ)ではApple strings形式(?)なファイルを使ったローカライズがあります。
*.stringsってファイルを作って言語のフォルダ作ってごにょごにょ、って感じです。ググればいくらでも出てくるので割愛。

iOSの部分は上記Apple形式で、共通部分は.Net形式でローカライズしたんですが、ガッツリはまりましたよ。

.Net形式では使用する言語は
System.Threading.Thread.CurrentThread.CurrentUICulture
で切り替えます。(多分)

Apple形式ではどうやら
NSLocale.PreferredLanguages[0]
を使うみたいです。(使っていることがわかるだけ?)

それぞれOSのどこを見るかというと、

iOS Simulator Screen Shot 2014.10.15 18.39.27.png

こんな感じです。
.Net形式は書式変えると言語が変わります。

この仕様が正しいのかどうかしりませんが、Apple形式と.Net形式で見ている設定が違うのは困ったもんです。


ということで AppDelegate.FinishedLaunching の先頭にでも

System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(NSLocale.PreferredLanguages[0]);

でCurrentUICultureを書き換えてやればApple形式と同じ言語を使ってくれます。

めでたしめでたし(?)

posted by ぷにお at 19:16 | Comment(0) | Xamarin | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。