NSLocale.current.language返回错误的值

时间:2018-04-24 14:49:35

标签: ios swift translation nslocale

当我在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")

1 个答案:

答案 0 :(得分:3)

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

可在此处找到更多信息:

https://stackoverflow.com/a/47678964/173623

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