iosxcodelocalization

iOS app not using using Base Internationalization language


I am adding localization to an iOS application with Xcode 8. I have base internationalization set with English as the language. The app also supports spanish (es), french (canada), and portuguese (brazil). When I set the device language to ES, fr-CA, or pr-BR the appropriate language is displayed in the app - great.

However, if the current device language is ES, fr-CA, or pt-BR > I shut down my app > change the device language to German > start the app back up...

Rather than the app falling back to English (Base), it uses the language I just had set. For example, if I had the app open in fr-CA, shut down the app and change to German, when I open the app back up the language displayed is fr-CA.

Unless I missing something here, I am expecting English to be displayed since the app does not support the German language.

One other thing to note - when i change the device language to English, the app displays English to the user.

Can anyone shed light on this issue? Thanks.


Solution

  • iOS determines the fallback language by the user's most preferred language.

    So if there's a localization available for one of the user's preferred language it will automatically use this localization. Only if none of the user's preferred languages is supported by your app it will use your app's development region.

    Source: Technical Q&A QA1828 - How iOS Determines the Language For Your App

    Here's a similar question with some solutions by other users: Localizing strings in iOS: default (fallback) language?