Возвращает статическое значение по умолчанию, если ключ локализации не существует - PullRequest
0 голосов
/ 17 января 2019

Как я могу вернуть статическую строку (то есть "AAA"), когда я передаю ключ к NSLocalizedString (), который не существует в файле локализации? Я мог только найти информацию о том, как вернуться к языку по умолчанию, но не о том, как вернуть жестко закодированную строку в случае, если ключ не существует в файле локализации.

Этот код работает для меня, но мне нужен запасной вариант:

let localizationKey = "articles_label_" + type.lowercased()
let localizedValue = localizationKey.localized

1 Ответ

0 голосов
/ 17 января 2019

NSLocalizedString() принимает параметр value, который возвращается, если в таблице для данного ключа не найдено локализованной строки.

Я предполагаю, что localized - это вычисляемое свойство, добавленное в расширение String. Примерно так:

extension String {
    var localized: String {
        return NSLocalizedString(self, tableName: "MyTable", bundle: Bundle.main, comment: "")
    }
}

Если вы хотите добавить значение по умолчанию, вы должны преобразовать это вычисленное свойство в функцию.

extension String {
    func localized(defaultValue: String? = nil) -> String {
        return NSLocalizedString(self, tableName: "MyTable", bundle: Bundle.main, value: defaultValue ?? self, comment: "")
    }
}

И используйте это так:

let localizationKey = "articles_label_" + type.lowercased()
let localizedValue = localizationKey.localized(defaultValue: "AAA")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...