LoginSignup
2
2

More than 1 year has passed since last update.

iOSはどのようにアプリの表示言語を決めるのか

Posted at

日本語のみ対応しているFlutterアプリが、Appストア上で「言語:英語、日本語」と表示されて困ってしまいました。

スクリーンショット.png
(※スクリーンショットはTestFlightアプリなので多言語が表示されるのは正しいのですが、ここにアプリ非対応の英語が表示されて困ったという話です)

解決のため、アプリの表示言語の仕組みを調査しました。

結論

Appleの下記サイトに表示言語の決定方法が記述されています。

Technical Q&A QA1828: How iOS Determines the Language For Your App

iOSはどのようにアプリの表示言語を決めるのか

言語は以下の順番で決定されます。

  1. iOSは最初にユーザーの設定言語を調査します。これは「設定>言語と地域」の一番上の言語です。
  2. (1)の言語がアプリでサポートされているか?を確認します。アプリバンドルを検索して、(1)の言語に一致する .lproj フォルダを探します。
    2.1 フォルダが存在する場合、アプリがその言語にローカライズされているとみなし、アプリ用に選択します。
    2.2 フォルダが存在しない場合、「設定>言語と地域」での次の言語を選択し、上記のチェックを繰り返します。
  3. 上記のチェックに該当する言語がアプリでサポートされていない場合、iOS はアプリの Info.plist の CFBundleDevelopmentRegion に一致する言語を選択します。(この場合は Info.plist の CFBundleLocalizations の設定も必要になるようです)

アプリストアに表示される対応言語について

次に、ストアのアプリ情報欄に表示される言語についてです。

スクリーンショット.png

ここの表示については、QA1828 の注釈に書いてあります。

アプリストアに表示される言語欄は、 iTunesConnect(現AppStoreConnect)での設定よりも、.lprojフォルダの存在が優先されます。

そして、アプリストアの言語欄にアプリがサポートしていない言語が表示されている場合は、以下の項目をチェックすれば良いようです。

  • .lprojフォルダを使用している場合 → フォルダの存在を確認しましょう
  • .lprojフォルダを使用していない場合 → Info.plist の CFBundleLocalizations に言語を設定しているか確認しましょう

まとめ

おそらく、下記を行えばアプリの表示言語・ストアでの表示言語ともに対応できるのでは、と思います。

  • 多言語対応するアプリの場合 → 各言語の .lprojフォルダ の存在を確認
  • 多言語対応しないアプリの場合 → Info.plist の CFBundleDevelopmentRegion と CFBundleLocalizations の設定を確認

ただ、多言語対応しているアプリでも、サポート範囲外の言語のユーザーを想定して、 CFBundleDevelopmentRegion と CFBundleLocalizations は設定しておくべきでしょうか。

参考資料

Technical Q&A QA1828: How iOS Determines the Language For Your App

免責

記事中では多言語対応についても書いていますが、私自身多言語アプリを作成したことがないので、誤りがあるかもしれません><
正しい情報は公式ドキュメント QA1828 を参照してください

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2