我们说我的项目中有2个字符串文件:
Localizable.strings (Base)
"hello_key" = "Hello";
"bye_key" = "Goodbye";
和
Localizable.strings (Chinese Traditional)
"hello_key" = "您好";
我使用以下代码来本地化"你好"串
NSLocalizedString("hello_key", comment: "")
它适用于" hello_key",但如果我使用" bye_key"在我的iPhone手机语言设置为传统中文,我得到" bye_key"作为本地化字符串。
换句话说,没有使用Base本地化。是否有可能展示Base English" GoodBye"在这种情况下?
感谢。
答案 0 :(得分:2)
这是不受支持的词组的情况,因为您没有完全翻译繁体中文。
Apple不会回退到基本语言,只需返回密钥即可。这就是它的行为方式。我在blog中写了更多关于它的内容。
您必须像这样编写自定义NSLocalizedString
(该示例使用en
作为后备语言):
public func LS(_ key: String) -> String {
let value = NSLocalizedString(key, comment: "")
if value != key || NSLocale.preferredLanguages.first == "en" {
return value
}
// Fall back to en
guard
let path = Bundle.main.path(forResource: "en", ofType: "lproj"),
let bundle = Bundle(path: path)
else { return value }
return NSLocalizedString(key, bundle: bundle, comment: "")
}