I am trying to load different configuration for the widgets depending on the app language, but when I use something like:
Locale.preferredLanguages
Bundle.main.pr
There is a simple solution:
Add AppGroups capability for both Parent App and the widget.
Create simple UserDefaults
let SharedGroupName = "group.pl.blueworld.fieldservice"
let PreferredLanguageKey = "PreferredLanguageKey"
extension UserDefaults {
static let shared = UserDefaults(suiteName: SharedGroupName)!
}
Save current language in shared UserDefaults
.
func applicationDidBecomeActive(_ application: UIApplication) {
UserDefaults.shared.setValue(Locale.preferredLanguages[0].prefix(2), forKey: PreferredLanguageKey)
}
Access value inside Widget View:
struct MyView: View {
var language: String {
return UserDefaults.shared.string(forKey: PreferredLanguageKey) ?? "en"
}
}