1

We have an iOS App that supports only English-language UI. 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.

To experiment, I created a single-view project that only does two things: request permission for notifications and show a MapKit map view, the two things we're most concerned with. 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, similar to the solutions described in Setting "AppleLanguages" doesn't change app language)
let defaults = UserDefaults.standard
defaults.set(["en-CA"], forKey: "AppleLanguages")
defaults.synchronize()

Posts on the Apple Developer forums that suggest changing localization on the fly can/should not be attempted (e.g. https://forums.developer.apple.com/thread/85549, https://forums.developer.apple.com/message/36704#36704) but that's not exactly what we're going for. 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.

Is there some way to inform the system that the app is running in a specified localization that we've just overlooked?

Evan Kirkwood
  • 418
  • 4
  • 14

0 Answers0