我有这样的扩展:斯威夫特本地化问题
func localized() -> String {
return NSLocalizedString(self, tableName: nil, bundle: NSBundle.mainBundle(), value: "", comment: "")
}
它工作正常,但如果用户改变了手机上的语言来一个我们不支持,用户界面将显示“example_label”。如果它没有为当前的iOS语言设置找到一个,我希望它默认为英文翻译。
我该怎么做?
修复: 不知道我是否会使用这个,而不是最好的代码/方法,但这个工程。
func localized() -> String {
var localizedString = NSLocalizedString(self, tableName: nil, bundle: NSBundle.mainBundle(), value: "", comment: "")
if self == localizedString {
let path = NSBundle.mainBundle().pathForResource("en", ofType: "lproj")
let bundle = NSBundle(path: path!)
localizedString = NSLocalizedString(self, tableName: nil, bundle: bundle!, value: "", comment: "")
}
return localizedString
}
“如果找不到密钥并且值为零或空字符串,则返回密钥。”这是对的。我希望它接下来搜索该密钥的英文版本,而不是仅仅返回密钥本身。 – KotaBear233
@ KotaBear233哦,我想你的钥匙是英文字符串。好的,一秒 – Alexander
@ KotaBear233这个'example_label'从哪里来? 'NSLocalizedString'根据它们的优先级来尝试每一种用户语言,并且如果找不到其他语言,则会回到英语。 – Alexander