Is there a way to set a default language to be used when the device UI language is not supported by an app?
Example:
My app is localized into English and German:
// en.lproj:
"POWER_TO_THE_PEOPLE_BTN" = "Power";
"POWER_PLUG_BTN" = "Power";
// de.lproj:
"POWER_TO_THE_PEOPLE_BTN" = "Macht";
"POWER_PLUG_BTN" = "Spannung";
Now, if I run the app on a device with UI language set to Italian the app will use the key strings POWER_TO_THE_PEOPLE_BTN and POWER_PLUG_BTN.
There must be a way to specify a default (fallback) language to be used by the application in such a case.
From the above example it should be clear that using the English string as a key will not work.
The only option I see right now is to use NSLocalizedStringWithDefaultValue instead of NSLocalizedString.
Perhaps this should help? — iPhone: localization / internationalization default strings file
It should fallback to English by default. I’ve just switched my phone to a language into which my app is not localized, and the text was all in English, as expected.
Important: as @hyperspasm commented : To expand on/rephrase this, the fallback language is the language which was most recently chosen by the user in the device Settings, that is also represented in the app’s bundle.