如何使用 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 ?? "")")
Run Code Online (Sandbox Code Playgroud)
输出:
appLang ======== ["en"]
bungleLang ======== ["en"]
code ======== en
Locale.current.languageCode ======== en
currentLanguage ======== en
local ======== en (fixed)
languageCode = en
regionCode =
Run Code Online (Sandbox Code Playgroud)
因此,我没有获得用户在设备设置中设置的设备语言。
问题:
可能还是不可能?我尝试了一切。
所有代码都只获取enEnglish ,但是如果用户将语言设置为意大利语呢?我们如何获得意大利语或it?
注意:我再说一遍,我不是在谈论应用程序语言,而是在谈论设备语言。
编辑: 在模拟器和真实设备中都不起作用
在模拟器 iPhone 11、操作系统 14.4 中检查
在真机 iPhone 7、操作系统 13.3 中检查
Xcode 版本 12.4
还尝试过: UserDefaults.standard.stringArray(forKey: "AppleLanguages")
更新和解决
感谢 @Charnpreet Singh 从编辑方案,您需要更改应用程序语言,最重要的是,所有变量打印的结果与您在设备设置中看到的结果相同。

尝试这个
UserDefaults.standard.stringArray(forKey: "AppleLanguages")
Run Code Online (Sandbox Code Playgroud)
输出将类似于 - ["en-US"]。
它将返回一个包含语言代码的数组,第一个索引是 iPhone 设置中设置的当前语言(如果设置中的首选语言顺序为空,它将是一个单项数组。)