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")
当我向 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")