iOS: как получить строки локали для конкретной локали, отличной от той, которую пользователь установил в ОС?

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

Примечание: это не дубликат вышеуказанного вопроса. Я не хочу переопределять текущие настройки в моем приложении, я просто хочу иметь возможность извлекать языковые значения любой локали, которую я желаю программно. Содержимое моего приложения может отображать текст на английском языке, но я хочу, чтобы определенный компонент моего приложения отображал другой язык.

1 ответ

Я решил это, расширив String этим методом. Таким образом вы можете получить локализованную строку для любого языкового стандарта в вашем приложении.

      extension String {
    func localized(forLanguageCode lanCode: String) -> String {
        guard
            let bundlePath = Bundle.main.path(forResource: lanCode, ofType: "lproj"),
            let bundle = Bundle(path: bundlePath)
        else { return "" }
        
        return NSLocalizedString(
            self,
            bundle: bundle,
            value: " ",
            comment: ""
        )
    }
}

Пример (получить локализованную строку для украинского языка, если системный язык английский):

      "settings_choose_language".localized(forLanguageCode: "uk")
Другие вопросы по тегам