xcode 9 localization App Problems - ios

I'm trying to localize my app in Italian, English and Japanese language. but I've a problem. when try the localisation in iOS device to other language, the language don't change. It changes if the region be changed. E.g. The default language is English and the region of my iPhone is Italia. and if I change the language of device in Italian, app too change and become Italian. but if I change the language in Japanese or other language, like French, the language of app, don't change. remain Italian. now if I change the region to Japan, the language, change and become Japanese! just question: why?
and how can I make change the language of my app changing only the language of device?
thanks
p.s. this is the screenshot
UPDATE
I don't know why, but if I try my app in the simulator, this problem don't happen. It happen only on my physical device. why?

Solution Found!!!!
I've found the problem. I don't know why, but it solves all problem (or it seems so)
In Info.plist file I've changed Localisation native development region to Italy, as you can see in screenshot. When I restored the original value (Unite States), everything work perfectly.

Do your localization folder names contain a country as well as the language? You should have it.lproj/Localizable.strings, not it_IT.lproj/Localizable.strings, for the Italian language in any region, for example.

Related

How can I test app localization?

I am testing that a specific app that is in English also works in Hebrew. In iPad Settings, my region is set to Israel, and I've changed the Language Settings from English to Hebrew. I tried restarting the app and the iPad, but the app text is still in English.
Some of the apps on my iPad have switched to Hebrew, but others are still in English.
What am I doing wrong?
See screenshots.some apps are still in English some apps are still in English
You need to change schema run options as described here
https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPInternational/TestingYourInternationalApp/TestingYourInternationalApp.html
You will not need to change device/simulator region or language settings.

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.

iOS app not using the only localization available

Good morning,
I have an iOS app with English and Hebrew localizations and a device set on English.
I need to build the app with Hebrew only for this version (so the app will launch in Hebrew).
I tried to delete en.lproj and remove the references in Xcode, but the app just uses the base localization in the storyboard and the string I use as a parameter in NSLocalizedString, instead of the Hebrew files.
I've also tried to change the development language to Hebrew: How do I change the Development language in Xcode before internationalizing my app?
but that didn't help.
When setting NSUserDefaults-AppleLanguages key in main() it works but not on the first launch.
I would love to use a different implementation for NSLocalizedString so I could manage the localizations myself, but the problem is that English is written from left to right and Hebrew is from right to left, so updating the strings is not enough.
Do you have any idea how can I force the app to launch for every device in the localization that I choose?
Thanks!
I think that I found what was the problem, I left a single image localized in English.
It seems that when there is anything localized to a language, it adds the language to a list of supported languages. Because the device is in English and the app "supports" it, English will be used.
If anyone knows a way to modify this list of supported languages without deleting files, and making it work from the first launch, and maybe even having a different list for each target, please let me know!

(Base) localization not working in iOS 7?

It seams base localization does not work on iOS7?
I have an app (its available on the app store) that has localisations for Dutch, Chinese and a base localization = English. This looks like this in xcode 6:
The plist file contains the "Localization native development region" key:
Problem:
When the app runs on on iPhone iOS7 configured for English, it
uses the Dutch localization ?! I would expect that iOS uses the base
localization since its configured as English?
I do not have a "development language" entry in the Localizations
section of Xcode, I have seen this in some posts, what is the meaning of this "development language"? And could this be a possible cause or something?
I can solve the problem by adding an localization language "English" (which then seams to become the development language, I have tested this) but this would simply be a duplicate of my "base" language. Surely this is not the way to go?
I know there are many topics on localizations already but I have read them all (I believe) and cannot find a clear answer.
1.Localization native development language states the preferred language to be use if the iOS language and your app languages doesn't match, so I'm thinking about a storyboard that has been localized in english and a strings file in english, to make your app use english language.
2.Development language is not the same of the first point, is the base language, by default is set to english and it doesn't seems to exist a clear way to change that (I've filed a radar to Apple about it asking for xcode to show a menu at the beginning of each project). To change it you need to do it manually, but appstore will always show english as language
3.This is the solution, when iOS doesn't find a suitable localization it iterates through an array of laguages until it finds an existing one, if you add an english localization you could solve the problem.
Appstore reads directories in your app bundle

How do I set the default locale in xcode 5 and ios 7?

I know this is an already asked question, but no one of the answers helped me.
I'm writing an iOS app localized in italian and english.
I've already done two storyboards and two Localizable.strings file for the texts.
Now, if I set the english language on the phone, the app picks the english files, if I set the italian language on the phone the app picks the italian files.
But if I set french language(or spanish, or german), the app picks the italian files, which is wrong, how can I set english as the default language?
An iOS device keeps track of which languages you have set the locale to. If the currently selected locale is unsupported in an app, then the device will use the last user-selected language you used that is supported by the application.
So for example, imagine you had changed your device to English, then Italian, then Spanish. The app would first try and provide a Spanish localization. If one wasn't available, it would attempt Italian. If that wasn't available, then it would finally use English.
If you view the list of languages in the device's Settings, you'll see that they're ordered by 'last used'. I'm not aware of any way to alter this (seemingly intentional) feature.

Resources