Xcode 7 - Localising the storyboard doesn't work properly - ios

I have an application that must support two languages: english and french.
English is the Development Language and I also added French.
I have three children below the Main.storyboard: Main.storyboard(Base), Main.storyboard(English) and Main.storyboard(French). Unfortunately the Main.storyboard(Base) has the texts in french and my English file is ignored.
How can I fix this? I struggle already for 2 hours. When I run the application all the texts are in french tough the device language is english.
I tried to change all the strings in the base storyboard to be in english but after that some of the french texts from Main.storyboard(french) are ignored. It driving me nuts.

Related

Should I have Localizable.strings Base or English?

Following Ray Wenderlich tutorial (https://www.raywenderlich.com/180356/ios-internationalization), the Localizable.strings is as following. Notice there is no Localizable.strings(Base)
But in some other tutorials, they would use Base instead of English, so did I in my project as follow.
My iPhone's preferred language order is English then Chinese and is currently set to English. But whenever I run the app, it goes to Chinese except when I explicitly edit scheme to ask Xcode to run it in English. Does that mean I should have Localizable.strings (English) instead of Localizable.strings (Base)?
Another question, I have Main.storyboard (Base) and Main.strings (Chinese (Simplified)) under Main.storyboard. But no matter what I do, the storyboard always shows up in Chinese version. What have I done wrong?
=== Update ===
I played around with it (simply remove and recreate, nothing changed), and then magically the localization works as expected: The app default to English, which is my system language, and switches to Chinese when I edit scheme. However, now my storyboard is stuck with (Base) version no matter what I do.
I am no expert on this, but as I understand the Base file is a fallback if your app doesn't have a Localizable.strings file for the user's device language.
So if you have English and Chinese as localization files, but your preferred languages are German and Japanese, the system will check the Base file for strings.
In your case you have Chinese and the base files. English is not found, so it takes the other preferred language (Chinese). Therefore the base strings are not used -- the app defaults to the Chinese localization.
To solve the problem, you need to make an English strings file in addition to your base strings.

Localization IOS default Language

I have build an iphone app and I started with Dutch texts in the app. I would like to expand it to other countries so I Localized the app and added English.
So I have now to localization folders en.lproj and nl.lproj.
When I install the app on the iphone and set the language to Dutch I get the Dutch language in the App. When I switch to English I get this. But when I switch to German I get the Dutch language. I would like to have default the English language when the is no localization folder for it.
How do I do this?
A little late to the party, but just recently run into this issue and somebody helped me, so here is the magic:
Suppose your app supports English and Spanish.
If the list of languages in the Settings app is Portuguese, Spanish, English then Spanish will be shown to the user. If the list has been Portuguese, English, Spanish then English would be shown to the user.
In short, the language are loaded in order, so if you want English to be loaded when German (or any other missing language) is set, your settings screen should read:
German | English | Dutch | everything else
But you don't know how your users has the languages set and English might be at the bottom. So far, the best solution workaround I found was to manually change the Locale order on startup so English is always second, and therefore, default.
In your Info.plist you have to set the Localization native development region to English (en) and it should work fine.

Base localization not loaded keeps on last used one

I'm localizing my app to support English and Spanish.
If I set the device to Spanish and then I change to a non supported language, for example Italian or French, the app still shows the labels in Spanish. I'm not setting the values from code using NSLocalizedString. I'm localizing it in Interface Builder using the Main.strings file.
I have the Base localization in English, so it should show the content in English for other languages, but it’s not working. It keeps showing the last localization used.
Is this the correct behavior? How can I force it to use the Base localization when the language is neither English or Spanish?

Localization not working in the base language

Hi i dont seem to have a problem with doing localization it has worked fine in other apps, however this app is doing something quite funky.
It localizes fine to french , or other languages, but not the base language english in that regard the label is left empy any ideas why that could be the case?
Solved my own problem..lol
I had go to the main project window click on the minus sign remove english localization and then click + and add english , as it had not localized the storyboard for English, this i could see by how it had localized 2 files where the other languages had localized 3.

Add English localization to non-English app

I want to add English language to my app, because right now the app is only Swedish language. Under the "Project" and "Localizations" there is already English there:
.
So all the text I have in my app is in Swedish, but I also want to add English. I do have many .swift files with many strings and arrays:
Any tips how I can do this? I have seen a few tutorials, but in those they started from a new project, and the base language was English, but for me it is Swedish. Thanks in advance for help.

Resources