lproj 文件尚未加载

问题描述 投票:0回答:2

我创建了 3 个带有翻译的文件:

  • localized.strings(英文)
  • localized.strings(瑞典语)
  • localized.strings(芬兰语)

我有这个方法可以通过按键获取字符串:

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>(尚未加载)”

为什么没有加载,问题出在哪里?

ios swift localization
2个回答
2
投票

扩展如下

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! )

0
投票

这是一个已知的 XCode 错误。清除缓存后,第5次可能会起作用,也可能不起作用。

此外,将翻译存储在

LANG_CODE.lproj/FORM_NAME.strings
中被认为是过时的技术。

一个不错的选择是通过选择 “迁移到字符串目录” 项来迁移到新技术。更多详情见下图:

enter image description here

您还可以在这里找到其他答案:UiTextView localized with xib strings file

© www.soinside.com 2019 - 2024. All rights reserved.