2014-11-09 75 views
1

我想检测用户拥有哪种语言的设备。然后,我想将语言更改为不同的语言,应用程序将加载适当的图像,字符串,故事板。如何使用Swift检测和更改ios应用程序语言?

我用下面的检测语言:

let lang: String = NSLocale.preferredLanguages()[0] as String 

然而,这将返回“en”我连我的iOS模拟器设置为阿拉伯语。

基于Objective-C的问题,我试着做如下改变语言为阿拉伯语:

NSUserDefaults.setValue("ar", forKey: "AppleLanguage") 

但是,这发出了一个错误:

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSUserDefaults 0x103daa350> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key AppleLanguage.' 

回答

1

随着你做的代码,编译器认为你正在尝试使用KVO,将值“ar”设置为NSUserDefaults类的属性“AppleLanguage”。哪些不存在。

使用setObject:forKey:代替setValue:forKey

NSUserDefaults.setObject(["ar"], forKey: "AppleLanguage") // First param is an array. 

而且我从来没有在斯威夫特编码,但并不需要更新了什么东西之前得到标准的默认NSUserDefaults.standardUserDefaults()

+0

的setObject是更好,但会的setValue工作为好。你的第二点解决了这个问题。 – 2014-11-09 11:22:17

+0

没有为我工作。该应用程序没有更改为RTL,当重新运行应用程序时,NSLocale.preferredLanguages()[0]返回的语言始终为“en-US” – Zvi 2016-08-26 22:04:35

0

要回答这个问题有关检测设备上的当前语言是

NSLocale.currentLocale().objectForKey(NSLocaleLanguageCode)! as! String 
相关问题