You cannot immediately change the application language by changing the value of AppleLanguages . This requires a restart of the application before the change takes effect.
It seems that your problem is accessing localization strings in different languages, and not changing the application language, right? If you want your application to support multiple languages, you can simply provide translations and rely on settings.app for the actual change.
If you want to access localization strings other than the current localization used, you need to access the correct set of translations. And then just request this package for translations. The following code snippet should do the trick.
let language = "en" let path = NSBundle.mainBundle().pathForResource(language, ofType: "lproj") let bundle = NSBundle(path: path!) let string = bundle?.localizedStringForKey("key", value: nil, table: nil)
source share