在运行时更改应用程序语言

时间:2016-10-21 10:37:05

标签: ios swift3 nslocalizedstring

我正在尝试更改运行时使用NSLocalizedString获得的lang。

我知道这个问题一直在问,但我没有找到Swift 3的答案。

我试过了:

UserDefaults.standard.removeObject(forKey: "AppleLanguages")
UserDefaults.standard.set("en", forKey: "AppleLanguages")
UserDefaults.standard.synchronize()

和:

let language = "en"
let path = Bundle.main.path(forResource: language, ofType: "lproj")
let bundle = Bundle(path: path!)
let string = bundle?.localizedString(forKey: "AppleLanguages", value: language, table: nil)

但没有任何作用......

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

所以最后,我使用了Github上提供的自定义localisator类,它允许您从应用程序的任何位置切换语言,甚至可以保存,以便进一步启动应用程序。

它是用swift 2.2编写的,但是Xcode会自动将代码更新为Swift 3.只需要更改到Demo中的地方:

notification.name == kNotificationLanguageChanged

到:

notification.name.rawValue == kNotificationLanguageChanged

https://github.com/micazeve/iOS-CustomLocalisator