#ios #swift3 #nslocalizedstring
#iOS #swift3 #nslocalizedstring
Вопрос:
Я пытаюсь изменить язык, который я получаю с помощью 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)
но ничего не работает….
Спасибо за вашу помощь!
Ответ №1:
Итак, в конце я использовал пользовательский класс localisator, доступный на Github, который позволяет переключать язык из любого места в приложении и даже сохранять if для дальнейших запусков приложения.
Оно написано на swift 2.2, но Xcode автоматически обновляет код до Swift 3. Просто пришлось изменить местами в демо:
notification.name == kNotificationLanguageChanged
Для:
notification.name.rawValue == kNotificationLanguageChanged