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