我的设备运行iOS 12,并且英语为主要语言,希伯来语为辅助语言。
现在,我将使用英语作为基础本地化版本来打开我的应用程序。
在应用程序中,我列出了三种语言:英语,希伯来语和法语。
首先,属性catch
的结果是:[“ en-IL”,“ he-IL”,“ fr-IL”]
如果我想在不更改操作系统语言的情况下本地化整个应用程序,则只更改Locale.preferredLanguages
上的AppleLanguages
数组,如下所示:
UserDefaults
做出更改后,我将重新启动应用程序,并且更改语言。
问题是,在我将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"]
后备本地化版本。
此外,我想现在如何像在Facebook上那样用preferredLanguages
更改应用程序语言后,如何在操作系统上获得当前正在运行的设备语言
我想提一提,我注意到当我将应用程序语言的运行方案编辑为另一种语言时,它也会同时更改AppleLanguages。
答案 0 :(得分:0)
不是仅用单个值替换“ AppleLanguages”数组,而是更新现有列表,以便将指定的语言移至顶部。
http://blah.example.com:8080/info/getips/
这将保留完整列表。只是重新排列值,以便所需的语言排在第一位。