iOS模拟器设备语言与设置不匹配问题求助
以下是针对你遇到的「系统语言为英文,但App内部分控件显示阿拉伯语、NSLocale.current.languageCode返回ar」问题的排查和解决步骤:
检查App本地化配置
打开项目的Info.plist,确认CFBundleLocalizations数组里包含en,同时排查是否误加了ar且未正确配置对应的本地化文件。另外检查en.lproj下的Localizable.strings和InfoPlist.strings,确保内容完整,没有被阿拉伯语资源意外覆盖。验证设备/模拟器的区域设置
系统语言设为英文但地区选阿拉伯区域(如沙特、阿联酋)时,部分系统控件(导航返回按钮、Apple登录)会触发RTL布局和对应文本。进入「设置>通用>语言与地区>地区」,确认选择英语地区(如美国、英国)。排查代码中的Locale强制设置
检查项目里有没有代码强制修改了语言偏好,比如通过UserDefaults设置AppleLanguages键为["ar"]。测试时可以临时添加代码重置偏好(上线前记得移除):UserDefaults.standard.removeObject(forKey: "AppleLanguages") UserDefaults.standard.synchronize()或者直接删除App后重新安装,清除旧的UserDefaults数据。
清理Xcode缓存并重构
执行Cmd + Shift + K清理项目缓存,再用Cmd + Option + Shift + K清理构建文件夹,重启Xcode后重新运行项目,避免旧本地化资源被缓存。检查Scheme运行配置
编辑Scheme(快捷键Cmd + <),在「Run」>「Options」标签下,确认「Application Language」和「Application Region」都设为「System Default」,不要手动指定阿拉伯语。
内容的提问来源于stack exchange,提问作者ChicagoBen83

