当我试图本地化一个字符串时,它返回上一个值。我在this post中发现,实际上必须使缓存失效。
或多或少这是我试过的代码。在localizableStringsPath中,该文件实际上显示了我从inet下载的翻译,但是bundle返回上一个值。我必须关闭应用程序,然后bundle从localizableStringsPath返回上一个值。

func translateFromInet(key: String) -> String {
    let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first ?? ""
    let localizableStringsPath = documentsPath + "/Localizable.strings" // This file is downloaded from the inet with custom translations
    let bundle = Bundle(path: documentsPath)
    return bundle!.localizedString(forKey: key, value: nil, table: nil)
}

最佳答案

将可本地化文件另存为Localizable.nocache.strings,而不是Localizable.strings
您可以在apple文档中找到更多详细信息:
developer.apple.com - Resource Programming Guide - String Resources
您可以将下载的文件重命名为Localizable.nocache.strings,然后按以下方式对代码进行编辑:

func translateFromInet(key: String) -> String {
    let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first ?? ""
    let localizableStringsPath = documentsPath + "/Localizable.nocache.strings" // This file is downloaded from the inet with custom translations
    let bundle = Bundle(path: documentsPath)
    return bundle!.localizedString(forKey: key, value: nil, table: nil)
}

10-06 13:25