Свифт 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)
}
Счастливое кодирование :)