无法从应用程序扩展访问本地化资源

Cannot access localized resource from app extension

我无法从我的 Intents 扩展访问本地化资源。 我有几个 JSON 文件,它们在我的应用程序和扩展程序之间共享的框架中本地化为不同的语言。当我通过 path(forResource:ofType) 通过我的应用程序访问它们时,它会访问正确的本地化版本,但如果我从快捷方式应用程序中的扩展调用它,那么它 returns 英语,即使应用程序本身和快捷方式应用程序都设置为另一种语言。

让正确语言显示的唯一方法是更改​​设备语言 - 仅针对应用程序或快捷方式进行更改不会有任何效果。

我正在使用 iOS 14 SDK 进行构建,但是在 iOS 13 和 14 上都会出现相同的行为。

首先,请检查 Localizable 文件的 Target Membership,确保已检查您的扩展名。

其次,将您的应用程序语言保存在具有 AppGroups 的 UserDefaults 中。

static func setLanguageExtension(_ language: String, forKey: String) {
        if let userDefault = UserDefaults(suiteName: "APP_LANGUAGE") {
            userDefault.setValue(language, forKey: forKey)
        }
    }
    
    static func getLanguageExtension(key: String) -> String? {
        if let userDefault = UserDefaults(suiteName: "APP_LANGUAGE") {
            return userDefault.string(forKey: key)
        } else {
            return "en-US"
        }
    }