无法从应用扩展访问本地化资源
Posted
技术标签:
【中文标题】无法从应用扩展访问本地化资源【英文标题】:Cannot access localized resource from app extension 【发布时间】:2020-09-15 02:11:11 【问题描述】:我在从 Intents 扩展程序访问本地化资源时遇到问题。
在我的应用程序和扩展程序之间共享的框架中,我有几个本地化为不同语言的 JSON 文件。当我通过我的应用程序通过path(forResource:ofType)
访问它们时,它会访问正确的本地化版本,但如果我从快捷方式应用程序中的扩展程序调用它,它会返回英文,即使应用程序本身和快捷方式应用程序都是设置为另一种语言。
我可以让正确的语言显示的唯一方法是如果我更改设备语言 - 仅为应用程序或快捷方式更改它没有效果。
我正在使用 ios 14 SDK 进行构建,但在 iOS 13 和 14 上都会发生相同的行为。
【问题讨论】:
【参考方案1】:首先,请检查 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"
【讨论】:
以上是关于无法从应用扩展访问本地化资源的主要内容,如果未能解决你的问题,请参考以下文章
无法从 Blazor WebAssembly 应用本地访问 Azure Function Api
VNET 上的 Azure Functions 无法与本地资源通信
使用springboot访问本地电脑资源,并解决中文路径无法访问的问题
Cordova 10 和 Android SDK 30:无法访问本地文件(“不允许加载本地资源:file:///storage/emulated/0/Android/data...”)