我尝试使用语言更改按钮,我使用以下内容:
NSUserDefaults.standardUserDefaults().setObject(["de"], forKey:
"AppleLanguages") NSUserDefaults.standardUserDefaults().synchronize()
但它仅在重新启动应用程序时有效。
如何在运行时更改语言?
答案 0 :(得分:0)
IN SWIFT 3
<强> 1。从这里下载“NSBundle +语言”.h .m课程 https://gist.github.com/narikbi/352e93e446e8b1faf283
<强> 2。 #import“NSBundle + Language.h”进入 Objective-c桥接头文件以便快速使用
第3。将此全局方法放入“Appdelegate.swift”: -
//MARK:- Language Setter
public func changeLanguage(){
if var arr = (UserDefaults.standard.object(forKey: "AppleLanguages") as? [String]){
let changedKey = arr[0] == "ja" ? "en":"ja"
//this will set current language key for future use
UserDefaults.standard.set([changedKey], forKey: "AppleLanguages")
UserDefaults.standard.synchronize()
//Run time conversion if you want
Bundle.setLanguage(changedKey)//Magic Line ;)
}
}
<强> 4。使用UIButton或Switch切换操作控制器中的任何位置: -
@IBAction func btnSwitchTaped(_ sender: Any) {
print(UserDefaults.standard.object(forKey: "AppleLanguages") ?? "")
(UIApplication.shared.delegate as! AppDelegate).changeLanguage()
//if you want to check your string programatically on console print when switch toggle value(testing purpose)
let check = NSLocalizedString("Test", comment: "testing")
print(check)
}
快乐编码:)