Xcode 9.3导出.stringsdict为.xliff时数据丢失问题求助
Xcode 9.3导出.stringsdict到.xliff数据丢失的问题解决
问题原因
这个是Xcode 9.3版本本地化导出工具的已知bug:苹果在9.3版本中调整了.stringsdict文件的解析逻辑,但对复数条目(尤其是带有复杂规则、注释或特定结构的条目)的处理存在漏洞,导致原本在Xcode 9.2中能被正确识别导出的内容,在9.3里被误跳过或解析失败,最终造成数据丢失。
修复方法
这里有几个可行的解决思路,按优先级排序:
临时降级到Xcode 9.2导出
这是最省心的方案,如果你的项目暂时不需要依赖9.3的新特性,直接用Xcode 9.2打开项目完成.xliff导出,就能保证数据完整,和之前的正常表现一致。用命令行工具
xcodebuild导出
Xcode GUI的导出工具出问题时,命令行版本的逻辑往往更稳定。执行以下命令(替换成你的项目信息):xcodebuild -exportLocalizations -localizationPath ./xliff-exports -project YourProject.xcodeproj -exportLanguage zh-CN导出后检查xliff文件,大概率能找回丢失的数据。
手动修复导出的xliff文件
如果必须用Xcode 9.3,那就对比原.stringsdict和导出的xliff,手动补全丢失的内容:- 打开原.stringsdict,找到丢失的复数条目(比如
%d items对应的one/other等变体) - 在xliff文件中添加对应的
<trans-unit>节点,示例结构:
注意要根据不同复数规则(one/other/few等)补全所有变体的节点。<trans-unit id="%d items"> <source>%d items</source> <target>%d 个项目</target> <note>Plural rule: one</note> </trans-unit>
- 打开原.stringsdict,找到丢失的复数条目(比如
升级到Xcode 9.4及以上版本
苹果在后续的Xcode 9.4版本中修复了这个.stringsdict导出的bug,升级到新版本后,导出流程会正确处理复数字典的所有内容,彻底解决这个问题。
内容的提问来源于stack exchange,提问作者Ivan
相关产品推荐
相关产品推荐

