2015-06-25 4 views
2

Я пытаюсь использовать кнопку смены языка, я использую следующее:Как изменить язык во время выполнения на iOS?

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

Но это работает только тогда, когда приложение будет перезапущен.

Как я могу изменить язык во время выполнения?

ответ

0

Свифт 3

1. Скачать "NSBundle + Language" классов .h .m здесь https://gist.github.com/narikbi/352e93e446e8b1faf283

2. #import "NSBundle + Language.h" до Объектив-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 или тумблер Действие: -

@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) 

} 

Счастливое кодирование :)

Смежные вопросы