【发布时间】:2019-09-29 08:58:54
【问题描述】:
我的设备运行 iOS 12,并以英语为主要语言,希伯来语为次要语言。
现在我用英语打开我的应用程序,因为它是基本本地化。
在应用程序中,我列出了三种语言:英语、希伯来语和法语。
起初属性Locale.preferredLanguages结果是:["en-IL", "he-IL", "fr-IL"]
如果我想在不更改操作系统语言的情况下本地化整个应用程序,我只更改 UserDefaults 上的 AppleLanguages 数组,如下所示:
func currentAppleLanguage() -> String {
return (UserDefaults.standard.object(forKey: "AppleLanguages") as? NSArray)?
.firstObject as? String ?? ""
}
func setAppleLanguageTo(lang: String) {
UserDefaults.standard.set([lang], forKey: "AppleLanguages")
}
在进行更改后,我将重新启动我的应用程序并更改语言。
问题是在我将AppleLanguages 更改为UserDefaults 例如"he" 后,Locale.preferredLanguages 属性变为:["he"]
所以现在我没有在操作系统的设置应用程序中设置的preferredLanguages 后备本地化。
此外,我现在想知道,即使我像 facebook 一样使用 AppleLanguages 更改应用程序语言后,如何在操作系统上获取当前正在运行的设备语言
我想提一下,当我将应用程序语言的运行方案编辑为另一种语言时,它也会更改 AppleLanguages。
【问题讨论】: