Как изменить язык приложения ios во время выполнения самой базовой интернационализации swift 3? - PullRequest
0 голосов
/ 03 мая 2018

Я сослался на ссылку ниже и другие ссылки. Я могу изменить язык приложения после выхода.

Можно ли в любом случае изменить язык приложения с помощью Base Internationalization на ходу? Например: если пользователь выбирает английский, это должно быть отражено во всем приложении.

ручной выбор языка в iOS-приложении (iPhone и iPad)

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Я нашел решение в конце. Хотя ответ, который дает Au Ris, еще велик, нам нужно будет обработать все языковые обновления. Более простым способом было использовать 'Localize Pod' , предложенный в другой ветке. Я надеюсь, что тот, кто ищет то же самое, найдет это более простым способом.

0 голосов
/ 03 мая 2018

Вот как я это сделал. Я создал расширение для класса String и создал переменную localized, которая получает строковые значения из моих Localizable.strings файлов языка

public extension String {
    var localized: String {
        // currentLanguageCode is e.g. "en" or "nl"
        let path = Bundle.main.path(forResource: LocalizationService.shared.currentLanguageCode, ofType: "lproj")
        let bundle = Bundle(path: path!)

        return NSLocalizedString(self, tableName: nil, bundle: bundle!, value: "", comment: "")
    }
}

Затем везде в моем коде, когда я хочу назначить локализованные строковые значения, я делаю:

titleLabel.text = "settings_label_userProfile".localized

Когда пользователь меняет язык, например в моем разделе настроек LocalizationService устанавливает другой код языка и с тех пор свойство localized будет возвращать значения этого кода языка. Необходимо убедиться, что пользовательский интерфейс перезагружен, если он все еще отображает предыдущие языковые строки.

РЕДАКТИРОВАТЬ:

Это решение будет работать, только если вы устанавливаете локализуемые строки программно.

...