在 运行 次更改应用程序语言
Change app language at run time
我正在尝试更改我在 运行 时使用 NSLocalizedString 获得的语言。
我知道这个问题已经被问过了,但我找不到 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)
但没有任何效果....
感谢您的帮助!
所以最后,我使用了 Github 上可用的自定义本地化器 class,它允许您从应用程序的任何位置切换语言,甚至可以保存以供进一步启动应用程序。
它是在swift 2.2 中编写的,但是Xcode 自动将代码更新为Swift 3. 只需更改Demo 中的位置:
notification.name == kNotificationLanguageChanged
至:
notification.name.rawValue == kNotificationLanguageChanged
我正在尝试更改我在 运行 时使用 NSLocalizedString 获得的语言。
我知道这个问题已经被问过了,但我找不到 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)
但没有任何效果....
感谢您的帮助!
所以最后,我使用了 Github 上可用的自定义本地化器 class,它允许您从应用程序的任何位置切换语言,甚至可以保存以供进一步启动应用程序。
它是在swift 2.2 中编写的,但是Xcode 自动将代码更新为Swift 3. 只需更改Demo 中的位置:
notification.name == kNotificationLanguageChanged
至:
notification.name.rawValue == kNotificationLanguageChanged