如何获取系统设备语言,Swift iOS。

8

如何使用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,并在所有变量之上打印相同的结果,就像你在设备设置中看到的那样。 enter image description here


这个回答解决了你的问题吗?如何使用Swift获取当前语言代码? - Raptor
@Raptor 不好意思,我已经尝试了链接中的所有方法。你可以检查一下我的代码和输出结果,谢谢。 - Bhavesh Lathigara
2个回答

5

试试这个

UserDefaults.standard.stringArray(forKey: "AppleLanguages")

输出结果将会是- ["en-US"]
它将返回一个语言代码数组,第一个索引是iPhone设置中当前设置的语言(如果设置中的首选语言顺序为空,则它将是一个单项数组)。

不是,同样的问题只得到了["en"],我在模拟器和真实设备中都检查过了。在我的首选语言设置中,列表中有两种语言:意大利语和英语。 - Bhavesh Lathigara
2
它适用于我。在应用程序目标下检查管理方案,以将应用程序语言和应用程序区域设置为系统。 - Chanpreet Singh
1
它可以工作,但只是对于其他人 - 应用程序目标 -> 编辑方案 -> 应用程序语言更改为系统语言。并且所有变量都将起作用,不仅限于“AppLanguages”,还包括所有其他变量,如“preferredLanguages”、“languageCode”等...谢谢。 - Bhavesh Lathigara

0

你尝试过使用Locale.current.identifier吗? 当前标识符


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接