Launchscreen ignoring my localization

Hi everyone!


I`m having an odd problem with localization. I localized my app to English and Brazilian Portuguese. They both work fine, except for the launch screen.

It ignores completely my localization in Pt-Br. I have just a label on it with a loading message. I've tried both strings and storyboards files with no use. Only the english is loaded.


Do you guys have any idea why this is happening?


Thanks!

Danilo

Replies

The proper/easiest way to localize a launch image is to embed that text into the image. Saves headscratching...

From the HIG:


https://developer.apple.com/ios/human-interface-guidelines/graphics/launch-screen/


"Avoid including text on your launch screen. Because launch screens are static, any displayed text won’t be localized."


iOS apps are not supposed to display a "loading message", and they are not expected to display any text at all in the launch storyboard.

I face the same problem now. Development language is french, but launch screen displays always in english.


So, I understand we should not use text. But then, what is the purpose of launchScreen.strings, which are created for every language ?


It seems to read the text always from launchScreen.strings(English), whatever settings for the language on iPhone. Why english ?

I’m not 100% sure what’s going on here but I suspect that file is getting created because you’ve localised your

LaunchScreen.storyboard
file. That file should not be localised.

Try this:

  1. Create a new iOS project from the Single View App template.

  2. In the project editor, add a localisation.

  3. As this in the first localisation (other than the the base), Xcode will ask you which files you want to localise. It does this by showing you a list of localisable files, where all files start out as checked. You’ll want to uncheck

    LaunchScreen.storyboard
    .

You could reasonable argue that showing you

LaunchScreen.storyboard
here is a bug (or perhaps it should be unchecked by default), and if so I recommend you file a bug report about that. Please post your bug number, just for the record.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"

This is a bad look for Apple. If we decide not to add text, our tabbar icons lowers and then lifts when the App is loaded. This a small but significant UX detail that hurts the Apps overall design.


Apple should work on localizing text on LaunchScreens.

With reference to Answer by QuinceyMorris :

Actually the text on label can get localized, if we uncheck "Static Text" in Accessibility settings

Steps :-
1) Localize "LaunchScreen.storyboard" file. That file should BE localized as follows:
Create a new iOS project from the Single View App template.
In the project editor, add a localization.
As this in the first localization (other than the the base), Xcode will ask you which files you want to localize. It does this by showing you a list of localize files, where all files start out as checked. Keep them checked.

2) Open "LaunchScreen.storyboard"
Add Label and select it.

3) in "Show the File Inspector" tab (first tab)
'Check' all your localization including Base.

3) in "Show the Identity Inspector" tab
Note the "Object Id" in Document section
in "Accessibility" section
'Uncheck' Static Text option.

4) All your LaunchScreen.strings files should have following text to localize.

eg. LaunchScreen.strings (English)
Code Block
/* "<<Label's Object Id.text>>" = "<<Localized text>>"; */
"17x-cE-Ge9.text" = "Sanjay's Swift Application";

eg. LaunchScreen.strings (Gujarati (India))
Code Block
/* "<<Label's Object Id.text>>" = "<<Localized text>>"; */
"17x-cE-Ge9.text" = "સંજયની સ્વીફ્ટ એપ્લિકેશન";


This is not supported at the moment. Please submit a feedback.

In the meantime, you can have a launch screen with no text, and add that the Loading text if needed in your next screen.

I tested @sanjaysampat solution, unfortunately it did not work (Xcode 12.4).

I do understand the limits of launch screen. But then, it is so misleading that Xcode creates automatically the launchscreen.strings localisation files.

And that does not explain why the language for display is not the development language, nor the iPhone language. Is it because en is the first in my list, of localisation files ? Really misleading.

Take a look at this answer https://stackoverflow.com/a/45436837/5790492

Add multiple "LaunchScreen.storyboard" for each language from "Add New File" menu in project. (Lets say for spanish - Launch Screen_sp)

Localize your "Info.plist" from identity inspector menu as InfoPlist.strings (Base) , InfoPlist.strings(Spanish) for each language you want to use.

Now as example: in InfoPlist.strings (spanish) add following key :

"UILaunchStoryboardName" = "LaunchScreen_sp";

and you are done. Do not forget to set "LaunchScreen" as your Launch Screen File in "General" settings of your project.