如何使用Swift检测和更改ios app语言?

时间:2014-11-09 08:27:08

标签: ios swift

我想检测用户对设备使用的语言。然后我想将语言更改为其他语言,应用程序将加载适当的图像,字符串,故事板。

我使用以下方法检测语言:

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

然而,即使我的iOS模拟器设置为阿拉伯语,这也会为我返回“en”。

根据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.'

2 个答案:

答案 0 :(得分:1)

使用您编写的代码,编译器认为您正在尝试使用KVO,设置值&#34; ar&#34;到物业&#34; AppleLanguage&#34; NSUserDefaults类。哪个不存在。

使用setObject:forKey:代替setValue:forKey

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

我从未在Swift中编码,但是在更新其中的任何内容之前,您是否需要获得标准默认值NSUserDefaults.standardUserDefaults()

答案 1 :(得分:0)

回答有关检测设备当前语言的问题

NSLocale.currentLocale().objectForKey(NSLocaleLanguageCode)! as! String