Localize constants not updating properly even after relaunch app? - ios

I have app level language change option (English & Greek) in my app settings irrespective of device language.
App default language is English.
When I change the app language into Greek and re-launch the app some of the strings are not changing into Greek, but when I do the same in English it is working fine. When I re-launch the twice like that all words are changing into the Greek, but not in single re-launch.
How to resolve this language change issue?
We are using RKLocalization from GitHub.

Related

xcode 9 localization App Problems

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.

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.

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.

Localization in an iOS app

I am trying to localize my iOS app. However, I do not have translations for all the languages supported by Apple. I have translations for French and Dutch, with English as the base language. I wanted to know the common behavior in the following scenario.
Suppose I set the iPhone language to French and then navigate to the app. I am able to correctly see all the translations.
Now, I set the iPhone language to Portuguese. Now when I navigate to the app and I see the translations are still in French and not in English (the base language of my app).
Is this behavior right? Shouldn't the language be set to English?
The language fallback is in the Settings app. It defaults to languages the user has set the phone to in the past -- they can change it in iOS 9.

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