We have an App that supports only English-language UI. However, when we run it on a device set to a different Language/Region (e.g. fr-CA), system UIs appear in the device language, not in English. Our preference would be to have all UI displayed "inside" the App appear in English.
There are two system UIs that we're particularly concerned with: the standard alert requesting the user to allow notifications, and MapKit map views. To experiment, I created a single-view project that only does two things: request permission for notifications and show a map view. I've tried the following, none of which appears to have the desired effect:
- No localizations whatsoever (i.e. default when creating a new Xcode iOS project)
- Added explicit "English - Development Language" localizaton (i.e. CFBundleLocalizations) and no other localizations
- Tried setting the "AppleLanguages" in UserDefaults early in the App lifecycle (tried this in the AppDelegate and in a custom main.swift). I realize this is bad/dangerous/grounds-for-app-rejection territory, but just trying to explore all options.
There are a number of posts on the topic of overriding system localization, and these ones in particular suggest that what we're attempting is not supported:
https://forums.developer.apple.com/thread/85549
https://forums.developer.apple.com/message/36704#36704
However, these seem to talk about changing localization on the fly, which is not exactly what we're attempting. We don't want to change on the fly (e.g. in response to a language option inside our app), but rather just have all UIs, whether ours or from the system/frameworks appear only in English.
There's a quote from @Eskimo that stands out for me in the latter post:
If the system puts up a UI component on your behalf (the document picker, or Game Center user interface parts, or whatever) it will do so in the localisation that it thinks that your app is running in.
Is there some way to inform the system that the app is running in a specified localization that we've just overlooked?