Flutter iOS应用zh-Hans本地化显示名称失效,仅显示Runner
Flutter iOS应用简体中文(zh-Hans)本地化显示名称异常解决办法
问题现象
切换至简体中文(zh-Hans)语言环境时,主屏幕和设置界面的应用图标下方名称显示为Flutter默认的Runner,但通过Dart代码在应用内获取显示名称、删除应用的确认对话框中均能显示正确的中文名称。
可能的解决步骤
1. 确认Xcode项目的本地化语言配置
- 打开iOS项目的Xcode工程,进入Info标签页,找到Localizations列表
- 确保
Chinese (Simplified)(对应zh-Hans)已添加,且状态为「已完成」,无灰色未激活状态 - 若未添加,点击
+号选择简体中文并完成添加流程
2. 检查InfoPlist.xcstrings的编译配置
- 进入Xcode的Build Phases -> Copy Bundle Resources,确认
InfoPlist.xcstrings已在列表中;若没有,点击+号手动添加该文件 - 编译应用后,右键点击生成的
.app包选择「显示包内容」,查看zh-Hans.lproj目录下是否存在InfoPlist.strings,且文件内包含正确的CFBundleDisplayName和CFBundleName值
3. 适配iOS语言区域映射
- iOS系统中部分简体中文环境可能对应
zh-CN而非zh-Hans,可以在InfoPlist.xcstrings中添加zh-CN的本地化条目:"zh-CN": { "stringUnit": { "state": "translated", "value": "瓦工帮" } } - 或者在Xcode中选中
InfoPlist.xcstrings,打开右侧File Inspector,在Localizations部分勾选Chinese (Simplified),确保区域映射正确
4. 清理缓存并重新安装
- 执行Xcode清理:
Cmd + Shift + K - 删除模拟器/真机上的目标应用
- 重启模拟器/真机
- 重新编译并安装应用
5. 确认InfoPlist.xcstrings配置正确性
用户当前的InfoPlist.xcstrings配置如下,CFBundleDisplayName和CFBundleName的zh-Hans值已正确设置:
{ "sourceLanguage" : "en", "strings" : { "CFBundleDisplayName" : { "comment" : "Display name", "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", "value" : "xBangon" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", "value" : "瓦工帮" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", "value" : "瓦工幫" } }, "zh-HK" : { "stringUnit" : { "state" : "translated", "value" : "瓦工帮" } } } }, "CFBundleName" : { "comment" : "Bundle name", "extractionState" : "extracted_with_value", "localizations" : { "en" : { "stringUnit" : { "state" : "new", "value" : "xBangon" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", "value" : "瓦工帮" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", "value" : "瓦工幫" } }, "zh-HK" : { "stringUnit" : { "state" : "translated", "value" : "瓦工帮" } } } } }, "version" : "1.0" }
内容的提问来源于stack exchange,提问作者iStar
相关产品推荐
相关产品推荐

