Xcode为何忽略本地化InfoPlist.strings?匈牙利语应用名未生效
iOS应用匈牙利语本地化:桌面名称不生效问题
问题详情
- 应用已完成匈牙利语本地化,应用内其他文本翻译正常,但桌面显示的应用名称始终为英文
- 已创建对应本地化文件:
en.proj/InfoPlist.strings:"CFBundleName" = "English test"; "CFBundleDisplayName" = "English test";hu.proj/InfoPlist.strings:"CFBundleName" = "Az Én 1RM Kalk"; "CFBundleDisplayName" = "Az Én 1RM Kalk";
- 模拟器已设置App Language为匈牙利语、App Region为匈牙利,应用内文本正常显示匈牙利语
- 更新:运行时通过代码
Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String ?? ""能正确获取到匈牙利语名称,但模拟器桌面仍显示英文名称
可行解决方法
1. 检查主Info.plist配置
确保主Info.plist中没有硬编码CFBundleDisplayName或CFBundleName的值,避免覆盖本地化文件的设置。如果主文件写死了英文名称,系统会优先读取这里的内容。
2. 验证本地化文件编译配置
- 打开Xcode项目设置,进入Build Phases -> Copy Bundle Resources,确认
hu.proj/InfoPlist.strings已被添加到列表,无遗漏。 - 选中
InfoPlist.strings文件,在右侧File Inspector中确认匈牙利语(Hungarian)已被勾选,确保文件归属对应本地化目标。
3. 清理模拟器缓存并重启
模拟器桌面图标名称可能存在缓存,执行以下操作:
- 从模拟器中删除应用,使用命令
xcrun simctl erase all清空所有模拟器数据 - 重启模拟器后重新编译安装应用
4. 调整系统语言优先级
进入模拟器设置 -> 通用 -> 语言与地区,确认匈牙利语排在首选语言列表的最顶部,避免英文优先级更高导致的读取问题。
5. 检查本地化语法与键名
确认hu.proj/InfoPlist.strings中的CFBundleDisplayName拼写正确,引号、分号等语法细节无错误——iOS对本地化文件的语法要求严格,微小错误会导致文件失效。
6. 确认项目本地化列表
进入项目Info标签页,在Localizations部分确认匈牙利语已添加到项目本地化列表中,且状态为“已完成”(非未激活或引用状态)。
内容的提问来源于stack exchange,提问作者Jim
相关产品推荐
相关产品推荐

