1110 1110 - 4 months ago 30
Swift Question

Setting "AppleLanguages" doesn't change app language

I am trying to implement a function that can change app language.

I tried to set it like this:

let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject("de", forKey: "AppleLanguages")


And after app restart language is still 'system default'.

Now I test different languages by setting
Scheme > Application Language > language
.

But is it possible to user click a button and after restart to see picked language?



Also what is the proper way to do this to avoid changing language on restart?

Answer

Yes you can change the app language immediately like,

var language = "de"
let path = NSBundle.mainBundle().pathForResource(language, ofType: "lproj")
let bundle = NSBundle(path: path!)
let string = bundle?.localizedStringForKey("key", value: nil, table: nil)

use your NSUserDefaults value to language.