ブログランキング・にほんブログ村へ


iPhone/iPad用潜水艦ゲームアプリ ソナーエコー iTunesにて公開中

2015年09月19日

[iOS] iOS9 日本語環境の判断コードの変更が必要に [NSLocale preferredLanguages]

iOS9でぜーったいなにか起こる‥と思って今日やっとテストしてみたら‥やっぱり‥

日本語が出るべき時にでない。

デバッガで調べてみると、日本語判断に失敗している。

[NSLocale preferredLanguages];
NSArray *languages = [NSLocale preferredLanguages];
NSString *currentLanguage = [languages objectAtIndex:0];

if( [currentLanguage isEqual:@"ja"] ){
isJapan = true;
}
みたいなコードがあちこちにあるので使ってる人も多いと思うのだけど、これのcurrentLanguageが
"ja" から "ja-JP"になってる。
さらにこの件で調べると、前のほうがLanguage、後ろのほうがRegionになっているので
ja-USとかもありうるようになったということらしい。

if (
[currentLanguage isEqualToString:@"ja"] || // iOS8以前
[currentLanguage hasPrefix:@"ja-"]) { // iOS9 対応

isJapan = true;
}

に変更したいほうがよさそう。
単に
if( [currentLanguage hasPrefix:@"ja" )
でもよさそうだけど、一応jaで始まる3文字以上の何かの文字で間違わないようにって感じか。
言語コードで3文字ってあったかなって気もするけど。

しかしこの変更は地味だけどうちのほとんどのアプリが影響を受ける。
どうしてこういうところを互換性ない仕様に変えるかな‥

アプリの更新はいいけど、アプリ更新するとやっと集まった星が全部没収になる仕様なんで嫌になる。
なんでこんな仕様なんだろうapp store。

@2015.9.20 追記
その後の調査で判明:

プレビューβ版のときから指摘されていて、いくらなんでも影響を受けるアプリが多いだろうためGMでは修正されるんじゃないかとの観測もあったにも関わらず、Appleはこの仕様をつっきった模様。
この仕様はリリースノートに載ってないという発言も目にした(実際には未確認)。

その結果、同様の問題を起こすアプリが続出している。Twitterアプリなどが大きめなところ。ゲームの接続サーバーが英語になったとか、そんな結構大きい影響が出ている。

iOS9アップデートすると多くのアプリが英語に!混乱まとめ

影響されるアプリが相当数になる為、他にも出ているバグフィクスと一緒に変更される可能性も多少はあるかもしれない。

なんにせよ、特に目的の機能があるとかでないかぎり、テスト以外の目的で通常のユーザーが”なんとなく”で現在のiOS9にアップデートするのは無用のリスクを背負う以外のなにものでもなさそう。
タグ:iOS ios9
posted by みこあいさ at 11:57| iOS開発