当本地化密钥不存在时返回静态默认值

时间:2019-01-17 14:41:06

标签: swift nslocalizedstring

当我将密钥传递给本地化文件中不存在的NSLocalizedString()时,如何返回静态字符串(即“ AAA”)? 如果本地化文件中不存在密钥,我只能找到有关如何退回到默认语言的信息,而找不到如何返回硬编码字符串的信息。

此代码对我有用,但我需要一个后备选项:

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

1 个答案:

答案 0 :(得分:0)

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