Help us understand the problem. What is going on with this article?

LaunchScreen Storyboardの多言語化

スプラッシュウィンドウをこれまでLaunchImagesで作成していた方も多いかと思いますが、iPad OS登場以降はiPadの画面分割への対応からLaunchScreen.storyboard(もしくはLaunchScreen.xib)の使用が推奨されるようになりました。
アプリが複数の言語に対応している場合、スプラッシュウィンドウも多言語化(ローカライズ)する必要がありますので、今回はLaunchScreen.storyboardの多言語化の方法を調べてみました。

結論・・・意外と簡単

LaunchScreen.storyboardに表示する画像を言語ごとに分けることはできなかったのですが、起動スプラッシュに使用するStoryboardの名称がInfo.plistに設定される様になっている為、Info.plistを多言語化して言語ごとに使用するStoryboardを変えるようにすれば簡単にできました。

手順

環境:Xcode 11(といっても今回の手順はXcodeのバージョンには依存しません)

  1. 今回のサンプルプログラムでは英語と日本語に対応するものとします。Xcodeの[PROJECT] - [Info]にある[Localizations]に英語と日本語を設定します。
    スクリーンショット 2019-09-29 16.27.31.png

  2. 英語用と日本語用のスプラッシュウィンドウの画像を用意します。
    スクリーンショット 2019-09-29 16.34.37.png

  3. Assets.xcassetsに英語用のスプラッシュウィンドウの画像と日本語用のスプラッシュウィンドウの画像を登録します。
    スクリーンショット 2019-09-29 16.39.44.png

  4. まずデフォルトで存在するLaunchScreen.storyboardは英語用のスプラッシュウィンドウにします。LaunchScreen.storyboardのViewControllerにUIImageViewを追加し英語用のスプラッシュウィンドウの画像を設定します。
    スクリーンショット 2019-09-29 16.43.36.png

  5. 次に日本語用のスプラッシュウィンドウを表示する為のStoryboardを追加します。Xcodeの[File]-[New]-[File...]を選択しダイアログで[Storyboard]を選択し[Next]を押下します。
    スクリーンショット 2019-09-29 16.45.34.png

  6. Storyboardの名称は[LaunchScreen_Japanese.storyboard]として[Create]を押下します。
    スクリーンショット 2019-09-29 16.45.54.png

  7. 作成されたLaunchScreen_Japanese.storyboardにUIViewControllerを追加し、[is Initial View Controller]にチェックを入れます。そしてUIImageViewを追加し日本語用のスプラッシュウィンドウの画像を設定します。
    スクリーンショット 2019-09-29 16.50.21.png
    これで英語用のスプラッシュウィンドウを表示するStoryboardと日本語用のスプラッシュウィンドウを表示するStoryboardの用意ができました。次からは言語毎にStoryboardを使い分ける設定を行います。

  8. Xcodeの[TARGETS]の[App Icons and Launch Images]で[Launch Screen File]が[LaunchScreen]になっていることを確認します。
    スクリーンショット 2019-09-29 16.51.59.png

  9. この状態でInfo.plistを見るとLaunchScreen.storyboardの名称がUILaunchStoryboardNameというキーに設定されていることが分かります。
    スクリーンショット 2019-09-29 16.53.36.png
    ということで、このUILaunchStoryboardNameの値を言語毎に変えられる様にします。

  10. Info.plistを多言語化する為のInfoPlist.stringsを追加します。Xcodeの[File]-[New]-[File...]を選択しダイアログで[Strings File]を選択し[Next]を押下します。
    スクリーンショット 2019-09-29 16.56.12.png

  11. ファイル名を[InfoPlist.strings]として[Create]を押下します。
    スクリーンショット 2019-09-29 16.57.57.png

  12. 追加したInfoPlist.stringsを選択し[Localize...]を押下します。
    スクリーンショット 2019-09-29 16.58.56.png

  13. [Do you want to localize this file?]と聞かれますので日本語を選択して[Localize]を押下します。
    スクリーンショット 2019-09-29 16.59.06.png

  14. InfoPlist.stirngsに以下のキーと値を設定します。
    "UILaunchStoryboardName" = "LaunchScreen_Japanese";
    スクリーンショット 2019-09-29 17.01.29.png

これで日本語のときだけスプラッシュウィンドウにLaunchScreen_Japanese.storyboardが使用され、それ以外の言語の時はデフォルトのLaunchScreen.storyboardが使用される様になりました。

では動かしてみましょう。

[iOSの言語設定が英語の場合]
english.gif

[iOSの言語設定が日本語の場合]
japanese.gif

参考文献

How to localize launch screen - Stack Overflow

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした