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

Posted

技术标签:

【中文标题】如何获取系统设备语言,swift iOS【英文标题】:How to get system device language, swift iOS 【发布时间】:2021-05-13 08:56:26 【问题描述】:

如何获取系统设备语言,使用 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英语,但如果用户将语言设置为意大利语呢?我们如何才能获得 Italianit

注意:我再次说我不是在谈论应用语言,我是在谈论设备语言。

编辑: 模拟器和真机都不行

已在模拟器 iPhone 11、OS 14.4 中签入

已在真机 iPhone 7、OS 13.3 中签入

Xcode 12.4 版

也试过了: UserDefaults.standard.stringArray(forKey: "AppleLanguages")

更新和解决 感谢@Charnpreet Singh 从编辑方案中,您需要更改应用程序语言,最重要的是,所有变量都会打印出与您在设备设置中看到的结果相同的结果。

【问题讨论】:

这能回答你的问题吗? How to get current language code with Swift? @Raptor 不,我也尝试了该链接中的所有内容。你可以检查我上面的代码并输出,谢谢。 【参考方案1】:

试试这个

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

输出将类似于 - ["en-US"]

它将返回一个带有语言代码的数组,第一个索引是iPhone设置中设置的当前语言(如果设置中的首选语言顺序为空,它将是一个单项数组。)

【讨论】:

不,同样的问题只得到 ["en"],我检查了模拟器和真实设备。在我的首选语言设置中,意大利语和英语列表中有两种语言。 它对我有用。在应用程序目标下检查应用程序语言和应用程序区域到系统的管理方案。 它有效,但仅适用于其他人 - 应用程序目标 -> 编辑方案 -> 应用程序语言更改为系统语言。所有变量不仅适用于“AppLanguages”,而且适用于所有其他变量,如“preferredLanguages”“languageCode”等......谢谢。

以上是关于如何获取系统设备语言,swift iOS的主要内容,如果未能解决你的问题,请参考以下文章

iOS:如何获取设备当前语言设置?

iOS swift 获取设备连接的WiFi的信息

如何在 iOS/Android 上获取当前设备语言?

如何在 sencha touch 或架构师中获取设备语言

如何在 iOS 中仅获取可见日历

如何在 Swift 中测量 iOS 设备上的抖动量?