我创建了 3 个带有翻译的文件:
我有这个方法可以通过按键获取字符串:
static func localized(key: String) -> String? {
if let path = Bundle.main.path(forResource: currentLanguage, ofType: "lproj") {
if let bundle = Bundle(path: path) {
return NSLocalizedString(key, tableName: nil, bundle: bundle, value: "", comment: "")
}
}
return nil;
}
但是我得到了“NSBundle < /var/containers/Bundle/Application/213B1469-9751-4459-ABED-80879B80EFBE/Dicken.app/en.lproj>(尚未加载)”
为什么没有加载,问题出在哪里?
扩展如下
extension String {
func localized(lang:String) -> String {
let path = Bundle.main.path(forResource: lang, ofType: "lproj")
let bundle = Bundle(path: path!)
return NSLocalizedString(self, tableName: nil, bundle: bundle!, value: "", comment: "")
}
let label: UILabel
var language: String?
label.text = “Hello”.localized(lang: self.language! )
这是一个已知的 XCode 错误。清除缓存后,第5次可能会起作用,也可能不起作用。
此外,将翻译存储在
LANG_CODE.lproj/FORM_NAME.strings
中被认为是过时的技术。
一个不错的选择是通过选择 “迁移到字符串目录” 项来迁移到新技术。更多详情见下图:
您还可以在这里找到其他答案:UiTextView localized with xib strings file