2014-11-09 30 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