【XCode】バグ?Development LanguageをJapaneseにしているのにEnglishが表示される

iOSアプリの審査でリジェクトが発生し、調査している中で発覚した内容を明記

簡単なサンプルアプリを作って検証を行いました

下記条件が前提となります
1.「PROJECT」のinfoにて、LocalizationsのLanguageにてEnglishとJapaneseの2つを登録
2.JapaneseがDevelopment Languageに設定している
3.iPhoneのシステム言語をフランス語にして動作確認をする

スクリーンショット 2019-04-15 17.09.36.png

たたみます

位置情報の権限を取得確認をするために
Info.plistに「Privacy - Location When In Use Usage Description」キーを追加し、説明文を追加します

スクリーンショット 2019-04-15 18.25.31.png

そしてInfoPlist.stringsファイルを追加し、
English、Japaneseとファイルを各々作成して文言をローカライズ対応をします

InfoPlist.strings(Japanese)

NSCameraUsageDescription = "InfoPlist(Japanese)の文字列";
NSLocationWhenInUseUsageDescription = "InfoPlist(Japanese)の文字列";


InfoPlist.strings(English)

NSCameraUsageDescription = "InfoPlist(English)の文字列";
NSLocationWhenInUseUsageDescription = "InfoPlist(English)の文字列";



初期表示するViewControllerのviewDidLoad内にて
CLLocationManagerの「requestWhenInUseAuthorization」をコールさせる
比較用にAVCaptureDeviceの「requestAccessForMediaType」をコールさせた結果が以下の通り

言語:日本語
位置情報
IMG_0123.PNG

カメラ
カメラ(日本語)


言語:英語
位置情報
位置情報(英語)

カメラ
カメラ(英語)


言語:フランス語
位置情報
位置情報(フランス語)

カメラ
カメラ(フランス語)

フランス語(アプリのローカライズ言語対象外)で位置情報の権限確認を表示した場合
なぜか英語側が表示される
カメラの権限確認はきちんとデフォルト言語の日本語側が表示されるというのに・・・


今回Appleからリジェクトを受けたのは
こんな感じで日本語をメイン言語としているのに位置情報権限のダイアログで英語がでるのはおかしいといった内容でした


Guideline 4.0 - Design

We noticed an issue in your app that contributes to a lower quality user experience than Apple users expect:

- Your app's modal alerts are in English, but your app's primary language is Japanese. To help users understand why your app is requesting access to a specific feature, your app's modal alerts should be in the same language as the rest of your app.

Next Steps

To resolve this issue, please revise your app to address all instances of this type of issue.

Resources

For information on improving and enhancing your app:

- Watch the video The Ingredients of Great Apps to understand the basics of great apps.
- Watch the video iPhone and iPad User Interface Design for practical design tips.
- Watch iOS Development Videos to learn about programming and design tips.
- Review the iOS Human Interface Guidelines and ensure that your app's interface and design adhere to these guidelines.


今回検証は「NSLocationWhenInUseUsageDescription」で行ったが
「NSLocationAlwaysUsageDescription」でも同様な結果が出てくると思う



おまけ
日本語をDevelopment Languageに設定する方法

以下のURLを参考にして改良をいれています
https://qiita.com/ko2ic/items/8918034d940f66fee97d

1.Finder上で「XXX.xcodeproj」を右クリックメニューでパッケージの内容を表示する
スクリーンショット 2019-04-15 18.54.54.png

2.project.pbxprojをテキストエディタで開く
3.developmentRegion = ja;と変更する ※Japaneseとすると非推奨と怒られてしまう
knowsRegionsの国コードを指定しておけば、PROJECTのLanguagesにて重複表示がなくなる

developmentRegion = ja;
knownRegions = (
 en,
 Base,
 ja,
);

この記事へのコメント