如何使用Swift在iOS中获取系统设备语言,而不是应用程序语言,这样我就没有问题了。
我想要从用户设置的语言中获取设备语言,该语言可以在“设置 -> 通用 -> 语言”中找到。
我尝试了以下代码:
let appLang = Locale.preferredLanguages
print("appLang ======== \(appLang)")
let bungleLang = Bundle.main.preferredLocalizations
print("bungleLang ======== \(bungleLang)")
let code = Locale.autoupdatingCurrent.languageCode
print("code ======== \(code ?? "")")
if let code = Locale.current.languageCode {
print("Locale.current.languageCode ======== \(code)")
}
print("currentLanguage ======== \(Localize.currentLanguage())")
let local = getPreferredLocale()
print("local ======== \(local)")
print("languageCode = \(local.languageCode ?? "")")
print("regionCode = \(local.regionCode ?? "")")
输出:
appLang ======== ["en"]
bungleLang ======== ["en"]
code ======== en
Locale.current.languageCode ======== en
currentLanguage ======== en
local ======== en (fixed)
languageCode = en
regionCode =
无论用户在设备设置中设置了什么语言,我都无法获取设备语言。
问题:
这是否可行?我尝试了所有的方法。
所有的代码都只能得到 en
或 英语,但是如果用户将语言设置为意大利语呢?我们如何获得 意大利语 或 it
?
注意:我再次声明,我不是在谈论应用程序语言,我在谈论设备语言。
编辑: 同时在模拟器和真实设备上均不起作用
在模拟器 iPhone 11、OS 14.4 中进行了检查
在真实设备 iPhone 7、OS 13.3 中进行了检查
Xcode 版本为 12.4
还尝试了: UserDefaults.standard.stringArray(forKey: "AppleLanguages")
更新并解决:
感谢 @Charnpreet Singh
你需要从 Edit Scheme 中更改 App Language,并在所有变量之上打印相同的结果,就像你在设备设置中看到的那样。