Return 本地化密钥不存在时的静态默认值

Return static default value when localization key does not exist

当我向 NSLocalizedString() 传递本地化文件中不存在的密钥时,如何 return 静态字符串(即 "AAA")? 我只能找到有关如何回退到默认语言的信息,但找不到如何 return 硬编码字符串,以防本地化文件中不存在密钥。

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

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

NSLocalizedString() 采用参数 value,如果在给定键的 table 中未找到本地化字符串,则返回该参数。

我推断 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")