Aqlier/ 6月 23, 2016/ iPhone

iOS 9以降の機種で、日本語化対応(ローカライズ)が異常になる現象が発生していました。
最低サポートバージョンのiOS 7.1で動作確認を行っている関係で、この発見は、いまごろ発覚しています。

アプリでは、英語と日本語の環境下であれば、使用している端末の利用言語に合わせて項目やメッセージを使用言語で表示するようにしています。その方法は、以下で行っていました。

//ios7.1での対応
if([currentLanguage compare:@"ja"] != NSOrderedSame){
  //日本語化処理

}

この設定で、取得値が、「言語ー地域」の情報に変更になっていました。そのため、以下の方法での判断が必要になります。

//ios9.1での対応
if([currentLanguage compare:@"ja-JP"] != NSOrderedSame){

     //日本語化処理

}

ios7.1以降の使用であれば、@”ja”と@”ja-JP”のどちらかという判定が必要になり、旧と新の判定が必要です。

//ios7.1以降をサポートする場合
if(([currentLanguage compare:@"ja"] == NSOrderedSame) ||
([currentLanguage compare:@"ja-JP"] == NSOrderedSame)){

  //日本語化処理

}

iphoneの設定で、「言語:日本語で、地域:アメリカ」で使用する場合は、@”ja-US”が取得値となります。