NSLocale.current.language 返回错误值

NSLocale.current.language returning the wrong value

当我在 iPhone 设置中更改我的语言时,它不会反映在 NSLocale.current.language 中。

这是因为我的应用不支持西班牙语吗?我希望它无论如何都能得到反映。最终,我正在尝试获取用户首选语言的 ISO 639-1(2 位)区域代码。

代码:

guard var preferredLanguage = NSLocale.preferredLanguages.first else { return }

for language in NSLocale.preferredLanguages {
    print("preferredLanguage: \(language)")
}

print("languageCode: \(NSLocale.current.languageCode)")
print("regionCode: \(NSLocale.current.regionCode)")

输出:

preferredLanguage: es-US
preferredLanguage: haw-US
preferredLanguage: en-US
languageCode: Optional("en")
regionCode: Optional("US")

自 iOS 11 起,NSLocale.current 只能 return 您的应用支持的语言。

可在此处找到更多信息:

https://jaanus.com/ios-11-changes-localized-date-handling/