如何在iOS上运行时更改语言?

时间:2015-06-25 19:38:58

标签: ios swift cocoa-touch nsuserdefaults

我尝试使用语言更改按钮,我使用以下内容:

NSUserDefaults.standardUserDefaults().setObject(["de"], forKey: 
"AppleLanguages") NSUserDefaults.standardUserDefaults().synchronize()

但它仅在重新启动应用程序时有效。

如何在运行时更改语言?

1 个答案:

答案 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)

}

快乐编码:)