「 使用許可ダイアログにアプリのローカライズ設定が反映されない… 」
「 ダイアログ説明文の多言語対応ってどうやるの…? 」
iOSアプリでは、利用者にカメラや写真などのアクセス許可を求めるために、以下のようなダイアログが表示されますね。
こちらのダイアログの説明文をローカライズ(多言語対応)するには、アプリ自身のローカライズとは別の手順が必要になります。
今回はiOSアプリにおけるアクセス許可ダイアログのローカライズ方法について見ていきましょう!
[ 本記事はこんな人におすすめ ]
・SwiftでiOSアプリ開発をしている
・アクセス許可ダイアログのローカライズ方法が知りたい
環境・バージョン
> Swift 5.7.2
> Xcode 14.2
> macOS 13.0 Ventura
まずはXcodeのLocalizations設定から、対応したい言語を決めます。
LocalizationsはXcode内の以下の場所から設定できます。
左下の(+)ボタンをクリックして、対応言語を追加しましょう。
今回は日本語(ja)、英語(en)の二言語で進めていきます。
英語はデフォルトで設定されているので、日本語を新しく追加しました。
Localizations設定が完了したら、「InfoPlist.strings」という名前のローカライズファイルを作成していきます。
①プロジェクトを右クリックして、[New File…]から新規ファイルを作成します。
②新規ファイルリストの下部にある[Strings File]を選択します。
③ファイル名を「InfoPlist.strings」にしてstringsファイルを作成します。
POINT
ここで作成するファイル名を一語一句でも間違えると、ローカライズが反映されません。
「InfoPlist.strings」⬅︎こちらをコピーして貼り付けると間違いないです。
先ほど作成したinfoPlist.stringsファイルを開いて、右側のユーティリティエリアから[Localize…]を選択します。
どの言語を対象にするかの選択ダイアログが表示されますが、後からもう片方も追加できるのでこの時点ではどちらを選んでも構いません。
言語を決めたら[Localize]を実行します。
[Localize]が実行されると、ユーティリティエリアのLocalization項目に対応言語のリストが表示されます。
先ほど選択ダイアログで指定した言語には既にチェックがついているので、もう片方の言語にもチェックを入れましょう。
以下のように、infoPlistファイルがフォルダに変化して、フォルダ内に対応言語ごとのファイルが作成できていればOKです。
対応言語ごとのInfoPlist.stringsファイルが作成できたら、それぞれのファイルに”キー”と”値”(表示する文章)を入力していきましょう。
アプリ本体のローカライズと異なる点として、機能の種類によってローカライズに必要な”キー”は固定です。
(機能ごとのキーを調べるためには一手間作業が必要となります。後述で解説します)
[ ローカライズに必要な各機能の”キー”一例 ]
・カメラへのアクセス : NSCameraUsageDescription
・マイクへのアクセス : NSMicrophoneUsageDescription
・フォトライブラリへのアクセス : NSPhotoLibraryUsageDescription
これらのキーを用いて、InfoPlist.stringsにローカライズを設定すると、以下のようになります。
共通の”キー”に対して、言語ごとに表示する文章を設定しています。
これでアクセス許可ダイアログのローカライズ設定は完了です!
最後に、実機を使ってローカライズが反映されているか見てみましょう。
iPhone本体の言語設定を切り替えてカメラ機能の許可ダイアログを確認してみます。
InfoPlist.stringsに設定したローカライズが反映されていますね。
これで使用許可ダイアログのローカライズは完了です!
「カメラ」「マイク」「フォトライブラリ」など、各機能の許可ダイアログにローカライズを反映させるためには、機能それぞれに合わせた特定の”キー”が必要になります。
では、そのキーはどこから参照すればいいのか、見ていきましょう。
アクセス許可ダイアログを有効化する中で、以下の[Custom iOS Terget Properties]設定リストにプライバシー設定を追加しているかと思います。
こちらのリストの左辺が「Key」とされており、例えばカメラの使用許可設定だと「Privacy – Camera usage Description」と書かれていますが、この文字をローカライズファイルに”キー”として設定しても、ローカライズは反映されません。
機能ごとの適切なキーを取り出すには、リストの表示を変更する必要があります。
リスト要素を右クリックして、[Raw Keys and Values]を選択します。
すると以下のように、Keyの表示が変化します。カメラ使用許可設定のKeyにも、先ほどInfoPlist.stringsファイルで用いた「NSCameraUsageDescription」が表示されていますね。
このように[Target Properties]のKey表示を変更することで、各機能ごとでローカライズに必要なキーを参照することができます。
取り出したキーをInfoPlist.stringsファイルに用いることで、ローカライズが反映されます。
以上、アクセス許可ダイアログのローカライズ(多言語対応)方法についてでした!
ポイントをおさらいしておきます。
・「InfoPlist.strings」ファイルに値を設定する(ファイル名を確認!)
・info内のKeyの表示設定を変更して、機能ごとに適切な”キー”を取得する
基本的な設定操作はアプリ自身のローカライズ方法と似ていますが、ローカライズに必要な.stringsファイルの命名が異なることや、機能に合わせた特定のキーが必要なところなど、ポイントを留意しておきましょう。
本記事が開発の参考になれば幸いです
\ SHARE /
アプリ開発が学べる勉強会を開催中!
CodeCandyではアプリ開発を学ぶための勉強会を定期開催しています。
学習する習慣を身につけたい、他の参加者と作業したい、アプリ開発の基本をマスターしたい、という方のために無料で学べる勉強会です。
グループにメンバー登録して頂くと、イベント開催時にメールで通知されます。
徹底した基礎学習からマスターするiPhoneアプリ開発集中オンライン講座開講!
本書「iPhoneアプリ開発集中講座」を執筆している現役エンジニア講師陣が直接に指導!
基礎、課題実習で実践力を鍛えて、オリジナルアプリ公開までチャレンジ!
充実した転職支援もあるので、エンジニアへ転職したい人にもおすすめです!
まずは、現役エンジニアに相談できる無料相談をご利用ください。
2022年2月よりSwift学習を始め、4月からiOSアプリ開発オンラインスクール「CodeCandy」にてアプリ開発を学ぶ。 2023年10月に個人開発アプリ「unico」をリリース。現在はアプリの機能アップデートをしながら、スクール運営の技術ブログの執筆や、出版書籍の入稿チェック・デバッグにも携わる。