Как получить локализованные языки моего приложения для iOS? - PullRequest
0 голосов
/ 16 марта 2019

Я хочу добавить функцию для изменения языка приложения внутри приложения (независимо от языка iPhone).

Чтобы показать доступные языки, вместо их жесткого кодирования, я хочу получить список поддерживаемых локализованных языков и сделать его динамичным. Затем каждый раз, когда я добавляю новый локализованный язык, он автоматически добавляется в список доступных языков.

Есть ли способ сделать это?

1 Ответ

2 голосов
/ 16 марта 2019

Использование:

let languageIds = Bundle.main.localizations

, чтобы получить список идентификаторов языков. Затем вы можете преобразовать каждый идентификатор языка в локализованное имя языка с помощью:

let loc = Locale(identifier: langId)
let name = loc.localizedString(forLanguageCode: langId) ?? "Unknown"

Вот некоторый код, который создает словарь доступных языков в комплекте вашего приложения. Он вводится с помощью идентификатора локали (идентификатора языка), и каждое значение является локализованным именем языка для каждого идентификатора локали.

let langIds = Bundle.main.localizations
var languages = [String:String]()
for langId in langIds {
    let loc = Locale(identifier: langId)
    if let name = loc.localizedString(forLanguageCode: langId) {
        languages[langId] = name
    } else {
        // this should never be reached
    }
}

Класс Bundle также предоставляет свойство preferredLocalizations и несколько других связанных свойств и функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...