Cordova/PhoneGap Build下iOS应用名称本地化失效问题排查
你已经做了不少基础配置,但中文(简繁)本地化没生效,大概率是几个细节没处理对,我来给你梳理下可能的问题和修复方案:
1. 检查InfoPlist.strings的编码与内容格式
iOS对这个文件的编码有严格要求:必须是带BOM的UTF-8或者UTF-16编码,如果是普通无BOM的UTF-8,PhoneGap Build打包时可能无法正确识别。另外,文件内的键值对格式要严格遵循:
CFBundleDisplayName = "你的简体中文应用名称";
注意:键名必须是CFBundleDisplayName,每个键值对结尾要有分号,字符串必须用双引号包裹。繁体中文的InfoPlist.strings同理替换对应名称即可。
2. 简化resource-file配置,避免冲突
你现在既复制了整个lproj文件夹,又单独复制里面的InfoPlist.strings,这可能导致打包时文件覆盖或识别混乱。只保留文件夹级别的复制配置即可,删掉单独复制strings文件的行:
<resource-file src="res/zh-hant.lproj" target="zh-hant.lproj" /> <resource-file src="res/zh.lproj" target="zh.lproj" /> <resource-file src="res/en.lproj" target="en.lproj" />
复制整个文件夹已经包含了内部的strings文件,重复操作反而容易出问题。
3. 修正CFBundleLocalizations的区域代码
iOS的语言区域代码是区分大小写且有标准规范的:
- 简体中文标准代码是
zh-Hans(不是你用的zh) - 繁体中文标准代码是
zh-Hant(注意H大写)
所以你的edit-config要改成:
<edit-config target="CFBundleLocalizations" file="*-Info.plist" mode="overwrite"> <array> <string>en</string> <!-- English --> <string>zh-Hans</string> <!-- Simplified Chinese --> <string>zh-Hant</string> <!-- Traditional Chinese --> </array> </edit-config>
同时要把你的本地文件夹名称对应改成zh-Hans.lproj和zh-Hant.lproj,保持和配置里的代码完全一致,iOS才能根据系统语言自动匹配对应的本地化文件。
4. 调整LSHasLocalizedDisplayName的配置方式
这个配置用merge模式比replace更稳妥,避免覆盖其他iOS配置项,修改为:
<config-file platform="ios" parent="." mode="merge"> <key>LSHasLocalizedDisplayName</key> <true/> </config-file>
5. 清理打包缓存并重新测试
PhoneGap Build有时会缓存旧的打包资源,导致新配置不生效。你可以在打包页面点击「Clear Cache」按钮,然后重新打包。另外测试前要删除iPhone上的旧应用,最好切换语言后重启设备(系统有时不会立刻刷新应用名称)。
按照上面的步骤调整后,应该就能让中文本地化名称正常显示了。
内容的提问来源于stack exchange,提问作者Biswas Khayargoli

