App Store doesn't display English among available languages for my new app

I published several apps in the past that display the correct languages in the App Store, but my newest app, which has English as the default development language in Xcode, displays all languages set in Xcode except English. My other projects seem to be set up in the exact same way, except they display correctly. What could be the issue?

Xcode project info:

Localizable.xcstrings (English is also fully localized):

App Store Connect website:

App Store page (my Mac has the primary language set to Italian):

Do you check if the app bundle you submitted for App Store publication has the en.lproj folder?

The value of the Languages field in the App Store is determined by the existence of .lproj folders in your app bundle. English is your default development language, and so Xcode should automatically generate en.lproj for you, if you use string catalogs for localization, but maybe you are not using a string catalog?

Best,
——
Ziqiao Chen
 Worldwide Developer Relations.

The submitted app does indeed miss a en.lproj folder. How do I know if I'm using a string catalog? Isn't having Localizable.xcstrings enough?

These are the project settings filtered by "catalog", they are the same for the other projects that show the correct languages on the App Store:

The target build settings filtered by "catalog":

Localizable.xcstrings is a string catalog, and so you are good.

Do you localize the English column for your string catalog then? If not, Xcode will not generate the en.jproj for you. You can check with the following steps:

  1. Select Localizable.xcstrings in Xcode Project Navigator to show string catalog view.

  2. Select English to show the English localization.

There, if the rows in the English(en) column are all grayed, Xcode won't generate the localization folder for you. So make sure you have at least one key localized.

Best,
——
Ziqiao Chen
 Worldwide Developer Relations.

The rows in the English column all contain black text, which is the text passed as the value argument to NSLocalizedString(_:value:comment:). The app also runs in English if I select it in the Xcode scheme editor.

Hmm, that sounds pretty strange. If you don't mind to provide a stripped project to demonstrate the issue, I'd try to figure out what happens.

Best,
——
Ziqiao Chen
 Worldwide Developer Relations.

I figured it out. It seems that when all English strings are provided via NSLocalizedString's value argument, en.lproj is not created. In fact, when mixing localized strings with and without default values, only those that have no default value are included in the final app's en.lproj/Localizable.strings. Still, when running the app, the default value is correctly presented, so I guess since it's not in the strings file it is hard-coded in the executable.

Maybe I'm not supposed to use the value argument this way? Should I instead cut all the default values and insert them manually in the string catalog? I was already considering to move all English values for my other projects from the string catalog to the source code so that I directly know what a localized string's contents are, but I'm happy now I didn't do that yet.

I created FB21733395.

App Store doesn't display English among available languages for my new app
 
 
Q