iOS 10 から、プライバシーに関わるデータにアクセスする機能を利用する場合は、Info.plist に利用目的を明記することが義務付けられました。
通常は Info.plist に設定した文字列が利用確認ポップアップのサブタイトルとしてユーザーに表示されます。
ですが、最初から日本語オンリーでアプリを作成していればともかく、多くの場合 Base は English だと思いますので、そのままではポップアップの利用目的が日本語環境でも英語で表示されてしまいます。
まぁ、別に英語でも構わないのですが、日本人には日本語で表示してあげたいなーと思った時に、一瞬「ん?」となったので覚え書き。
どなたかのお役に立ちましたら。
読み込み中です。少々お待ち下さい
まえおき
まずは、Info.plist に利用目的を記述せずにプライバシーデータにアクセスする機能を利用しようとしたら、どうなるかを確認してみましょう。
今回は、位置情報にアクセスするアプリを適当に拵えて、利用目的を書かずに起動を試みます。
すると、コンソールに以下のように出力されて、アプリを起動できません。
2017-05-18 17:17:54.898 SampleProject[37366:9358239] This app has attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSLocationWhenInUseUsageDescription key with a string value explaining to the user how the app uses this data
やはり、「Info.plist に然るべきキーを追加して利用目的書けよ、コノヤロー」と怒られてしまいます。
胴元に凄まれては仕方ないので、唯々諾々と追加しましょう。
利用目的の追加
Xcode で Info.plist を開いて、利用目的を追加します。
英語の場合はこれで問題ないのですが、「Get current location」の部分を日本語環境では日本語で表示しようというのが、今回の記事の主旨になります。
多言語化しよう
もし、まだ「Project > Info > Localizations」に「Japanese (ja)」を追加していない場合は、追加しておきましょう。
既に追加してある場合は、次へ進んでください。
InfoPlist.strings の追加
続いて、日本語環境では日本語で利用目的を表示する為に、InfoPlist.strings ファイルを作成します。
- プロジェクトフォルダの右クリックから「New File...」を選択する等して、新規にファイルを追加します
- 「Strings File」を選択して「Next」ボタンを押下します
- 「Save As」に「InfoPlist」と入力して「Create」ボタンを押下します
- 作成された「InfoPlist.strings」を左ペインで選択し、右ペインの「Localize...」ボタンを押下します
- 「Japanese」を選択して「Localize」ボタンを押下すると、Info.plist の日本語用の文字列ファイルが作成されます
- 作成されたファイルを開き、「Privacy - Location When In Use Usage Description」に対応する「NSLocationWhenInUseUsageDescription」というキーに日本語表記を設定します。
- ポップアップの文字列が、無事に日本語化されました
補足:
プライバシーデータにアクセスする機能を利用する際に記述すべきキーの対応表は、Apple 本家の Q&A 等を参照してください。
おわりに
日本語用の InfoPlist.strings ファイルで「CFBundleDisplayName」というキーを設定することにより、アプリの名前を日本語以外の環境ではデフォルト(通常は英語)のまま、日本語環境では日本語にすることも可能です。