Change language of iOS app in App Store - ios

In App Store my iOS app is declared as "Language En" but it should be "Language German". How can I do this? In iTunes Connect I set the language to German, but it doesn't work. What do I have to set in Xcode do make the app declared as german?

Set CFBundleDevelopmentRegion to de_DE in your project's xxx-Info.plist.
From Apple's docs:
CFBundleDevelopmentRegion (String - iOS, OS X) specifies the default
language and region for the bundle, as a language ID. For example,
English for the United Kingdom has the language ID en-UK. The system
uses this value if it cannot locate a resource for the user’s
preferred language.
for more info follow this link.

You can't do that from iTunesConnect. The language is read from your IPA and the default language for base language is english. I think that this is a pretty nasty issue and I've filed a radar to Apple asking for a language selection during the creation of a project.

Related

iTunes Connect - Primary Language question

So my apps Primary Language is currently Norwegian in iTunes Connect, but in the new version I have added localization for English language. When I test on my device and set language to Sweden (just for testing), it still shows Norwegian. But what I want is to have English language in the app in all countries, and Norwegian only for Norway. Anyone know how I can do this?
You should use a Base language in the project as default language for other localizations not supported by your app. Means, if you want Norwegian as default for other localizations, then under localizations for your Localizable.strings select "Base" which will generate Base.lproj folder and a localization file. Just make sure you have Norwegian strings in that file, Xcode may choose English in that file, just copy paste Norwegian content and replace. It should work fine.
Itunes Connect language has not effect on the language in the app.
If you want to change the app language you need to set the base localization to english as explained here: https://stackoverflow.com/a/50232581/3698961

iOS Localization: simulator behaves differently than device

I have set up 2 languages in my app:
English (development language)
Italian
I am expecting that in case the device is set to a language different than Italian, the app would come up in English.
However I noticed an inconsistency, between simulator and device:
If I set the simulator to Spanish, the app comes up in English
If I set the device to Spanish, the app comes up in Italian
how can I make sure the app comes up in English when the device language is set to Spanish?
I believe this inconsistency is due to the preferred language order in Setting App -> General -> Language & Region. Your iPhone device is likely to have ordered Italian with higher preference.
As stated in Apple's documentation (https://developer.apple.com/library/ios/qa/qa1828/_index.html)
To determine the language for your app, iOS considers not only the order of the user language preferences (in General > Language & Region of the Settings application) but also the localizations your app declares it supports. Here is the detailed process:
iOS first looks up your user's most preferred language, which is the first entry in their language preferences.
It proceeds to check if that language is supported by your app. iOS searches your app bundle for an .lproj folder matching the preferred language. If the folder exists, iOS infers that your app has been localized for that language and chooses it for your app. Otherwise, iOS selects the next language in the user language preferences, then repeats the above check.
The dialect support in iOS may slightly change the above behavior. If your user's preferred language is a regional variant that is not supported by your app, iOS will try to fall back to a more generic language before giving up. For example, if your user's preferred language is British English and your app bundle doesn't contain an en-GB.lproj or en_GB.lproj folder, iOS then searches your bundle for an en.lproj folder and chooses English for your app if the folder exists.
If none of the user’s preferred languages are supported by your app, iOS chooses the language matching your app's development region (CFBundleDevelopmentRegion).
In Summary,
a. For user who knows both Italian and English, it will display in their
preference.
b. If they only know one of the two, it will display the correct one.
c. If they don't know both, you should set CFBundleDevelopmentRegion in your info.plist to select English.

CFBundleDevelopmentRegion doesn't work while setting not supportive language

I'm designing an app which supports English, German and Simple Chinese(The app default is English).
However, while I set a language (like German, supportive language) to launch my app, it's normal. Then I set another language (like Korean, not supportive) and launch the app. The app still shows German version but English.
I'm pretty sure my CFBundleDevelopmentRegion is set en.
What to do to make the app show English version in other language?
I found the solution by myself.
First, go to info.plist to see CFBundleDevelopmentRegion
Before Xcode 7, we only need to choose the language as below.
enter image description here
We want English to be default language. Then we set "en".
However, Xcode 7 update Localization choices for same language.
Like en-UK and en-US are actually English.
So just choose the Localization wiz country
enter image description here
I choose United State then the bug is solved.

How does an iOS app know the final user's language choice?

Let's suppose we've translated our application to a new language and we have the localization files in our project.
Now, how is the app going to know the language of the final user?
Is the app going to change the language depending on the settings of the iPhone/iPad?
The app determines which language to use based on the Region and Language set up by the user.
iOS 13 and newer support language selection on a "per app" basis.
Apple Developer News: How to support per-app language settings in your app
Although, I have noticed the "per app" language selection capability may not itially be visible to the user ...
Starting with iOS 14, if a "per app language setting" via the Settings app is not accessible, then some second language for the device in Setting > General > Language & Region needs to be added. After any second language is added at the device level, then all language choices for the app are visible in the Settings > Some Example App > Preferred Language section.

What is the meaning of "Localization native development region" entry in info.plist?

I don't know if I really understood the function of the "Localization native development region" entry in info.plist file.
Somewhere I read that this entry allows to specify the app language when there is no matching with a language resource dir.
I have an app localized in three languages: english, italian and spanish (en.lproj, it.lproj and es.lproj) and I set "Localization native development region" entry to Italy. When I change the language and locale in "Settings" (for example by chosing the arabic language and a proper region), the app language is english. Shouldn't be it italian as I set "Localization native development region" to Italy in the info.plist?
Any ideas? Could it be tied to the AppStore app description language?
From the CFBundle documentation:
kCFBundleDevelopmentRegionKey
The name of the development language of the bundle.
When CFBundle looks for resources, the fallback is to look in the lproj whose name is given by the kCFBundleDevelopmentRegionKey in the Info.plist file. You must, therefore, ensure that a bundle contains an lproj with that exact name containing a copy of every localized resource, otherwise CFBundle cannot guarantee the fallback mechanism will work.
Available in iOS 2.0 and later.
Declared in CFBundle.h.
No relation to the AppStore Description language.
I resolved using the settings below.
The native development region also sets the default language spoken by VoiceOver. If you set this correctly you won't have to override the accessibility language in all the default components used in your app (which fall back to English).

Resources