Ios 导出的XLIFF文件中隐藏的奇怪字符

Ios 导出的XLIFF文件中隐藏的奇怪字符,ios,xcode,internationalization,xliff,Ios,Xcode,Internationalization,Xliff,每当我尝试“为国际化导出”时,导出的文件都包含一个奇怪的隐藏字符,这使得XLIFF编辑器无法对其进行解析。问题似乎出现在原始的.string文件中,不知何故,这些文件中插入了奇怪的字符。我已经删除了这个奇怪的字符,但每当我导出它时,它仍然会潜入xliff文件中。我尝试清理和重建项目,重新启动Xcode。。。所有这些似乎都不起作用 Xcode是否以某种方式使用了包含坏字符的“bad”.strings文件的缓存版本 使用Xcode 如果我尝试导出进行本地化Editor> 我得到: /usr/bin/

每当我尝试“为国际化导出”时,导出的文件都包含一个奇怪的隐藏字符,这使得XLIFF编辑器无法对其进行解析。问题似乎出现在原始的
.string
文件中,不知何故,这些文件中插入了奇怪的字符。我已经删除了这个奇怪的字符,但每当我导出它时,它仍然会潜入
xliff
文件中。我尝试清理和重建项目,重新启动Xcode。。。所有这些似乎都不起作用

Xcode是否以某种方式使用了包含坏字符的“bad”
.strings
文件的缓存版本

使用Xcode 如果我尝试导出进行本地化Editor> 我得到:

/usr/bin/xmllint已退出,状态为1


使用终端 当我像这样从终端运行它时:

xcodebuild-exportLocalizations-localizationPath
/Users/Kymer/Downloads/Wolf-project Wolf.xcodeproj-exportLanguage fr

我得到以下错误:

parser error : attributes construct error
parser error : Couldn't find end of Start Tag trans-unit
parser error : PCDATA invalid Char value 19
parser error : PCDATA invalid Char value 19
parser error : Opening and ending tag mismatch
parser error : invalid character in attribute value
parser error : attributes construct error
parser error : Couldn't find end of Start Tag
parser error : PCDATA invalid Char value

/Uxcodebuild: error: /usr/bin/xmllint exited with status 1
在这两种情况下,导出的
xliff
文件在使用升华文本进行检查时包含奇怪的隐藏字符:


如果我手动删除坏字符,xliff编辑器完全可以读取该文件,但这当然不是一个好的长期解决方案。

我发现了问题:当导出到xliff文件时,Xcode不会查看.string文件,它都是从项目本身生成的(即,它查看所有
NSLocalizedString
调用和您的故事板)。这是有道理的。我在我的一个代码文件中发现了奇怪的隐藏字符。将其从源文件中删除修复了导出问题

最简单的XLIFF工作流 我还将提到这一点供将来参考:向项目中添加新语言的最简单方法是首先使用命令行:

cd
到您的项目并运行:

xcodebuild -exportLocalizations -localizationPath <path>  -project <projectname>.xcodeproj -exportLanguage <language code>
xcodebuild-exportLocalizations-localizationPath-project.xcodeproj-exportLanguage
这将创建一个新的XLIFF文件,并将正确设置文件中的目标语言(源语言将是您的基础语言)。翻译器现在可以轻松添加所有必要的翻译。之后,您可以将翻译后的XLIFF文件重新导入Xcode(选择目标和
编辑器>导入本地化
).Xcode将生成所有必要的.string文件

更新现有语言:如果添加新的UI元素并希望更新现有本地化语言,只需导出现有本地化(选择目标并
编辑器>导出本地化
)。该XLIFF文件将包含所有以前的翻译以及新字符串。翻译人员只需填写“空白”行。无需亲自触摸
.string
文件,因为手动管理该文件是一件痛苦的事情(尤其是对于疯狂的故事板ID)