我有這樣的擴展:斯威夫特本地化問題
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