Swift中如何获取设备设置里的首选语言?
解决获取设备首选语言始终返回
en的问题 排查方向与解决方案
1. 检查项目本地化配置
你的代码返回en大概率是因为项目未添加目标语言的本地化支持,导致App默认 fallback 到英文:
- 打开Xcode,选中项目根节点 → 切换到「Info」标签页 → 找到「Localizations」区域
- 点击「+」号,添加你设备设置中选择的目标语言(比如截图里的简体中文)
- 勾选需要本地化的资源文件(如Info.plist、Strings文件等),完成添加
2. 排查强制设置语言的代码
全局搜索项目中的AppleLanguages关键字,确认是否存在硬编码覆盖系统设置的代码:
UserDefaults.standard.set(["en"], forKey: "AppleLanguages") UserDefaults.standard.synchronize()
如果有,删除这类代码,避免干扰系统首选语言的获取。
3. 正确获取首选语言的代码
完成上述配置后,使用以下代码即可正确获取系统首选语言列表的顶部语言:
// 获取完整语言标识(如"zh-Hans-CN") if let topLanguage = Locale.preferredLanguages.first { print(topLanguage) } // 仅获取语言代码(如"zh-Hans"或"en") if let languageCode = Locale.current.languageCode { print(languageCode) }
额外说明
地区信息能正常显示是因为**地区(Region)和语言(Language)**是系统中独立的设置项,Locale.current.regionCode不受App本地化配置的影响。
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

