本地化stringXCode 4 …复制.strings文件错误validation失败
如何在XCode 4中定义本地化的string?
我以为我可以使用“本地化”属性(文件检查器,右侧面板)添加语言InfoPlist.strings。
…然后在每个本地化版本中input“key”=“value”。
但是我不能build立这个项目。 我得到这个错误:
复制.strings文件错误validation失败:数据无法读取,因为它已损坏。
将文本编码转换为UTF 16不能解决问题。 也不退出Xcode并重新启动它。
问题1:如何弥补这些构build错误?
有些侥幸,我曾经设法得到一个testing应用程序来运行添加InfoPlist.strings(法文)和(英文)。 我没有得到法文string文件的错误,但我用英文做了。 所以我把英文单独留下,只给法文一个参数。 但是,在模拟器中,设置为法语 – 参数未被拾取。 它恢复到在NSLocalizedString()中指定的默认值
问题2:即使构build错误得到纠正,我如何才能正常工作?
可能就像在行尾有一个缺失的分号一样简单。
我有同样的问题在本地化文件中find错误…
只要使用terminal中的工具plutil转换文件,你将得到一个适当的错误信息的行号。
plutil -lint Localizable.strings
响应
plutil [74058:707] CFPropertyListCreateFromXMLData():旧样式的plistparsing器:在第422行的字典中缺less分号。parsing将被废弃。 打破_CFPropertyListMissingSemicolon进行debugging。 Localizable.strings:意想不到的字符“在第1行
是的,只是通过500翻译拖网
请注意第二个string中的KISS是双引号,它们是INSIDE另一个双引号错误
"Before using KISS Remixer, you must agree to the terms and conditions of use." = "Vor der Nutzung des Remixers "KISS" müssen Sie die Allgemeinen Geschäftsbedingungen akzeptieren.";
还行吧
"Before using KISS Remixer, you must agree to the terms and conditions of use." = "Vor der Nutzung des Remixers KISS müssen Sie die Allgemeinen Geschäftsbedingungen akzeptieren.";
就像这样(用单引号代替内部双引号)
"Before using KISS Remixer, you must agree to the terms and conditions of use." = "Vor der Nutzung des Remixers 'KISS' müssen Sie die Allgemeinen Geschäftsbedingungen akzeptieren.";
提示使用二进制search来查找违规行。
- 从翻译器获取本地化的文件。
- 将所有Loclaizable.strings复制到您的项目本地化文件夹中。
- 打开XCODE
- 全部清除iOS设备/全部模拟器
- build立
- 复制.strings文件错误validation失败:数据无法读取,因为它已损坏。
- 打开日志导航器
- 看看哪些翻译是腐败的。
- 我在TextWrangler中打开了Localizable.strings在工具栏的底部,Translator发回了UTF-16文件
UTF-16 Little Endian将其更改回“UTF-16”10.清除构build/构buildSAME ERROR
文件中的某处是
缺less分号?
/* popup message */ "Save mix" = "Enregistrer le mixage"; /* popup message */ "Save mix" = "Enregistrer le mixage"
“额外”双引号“双引号”
错误
/* popup message */ "Save mix" = "Enregistrer le "mix" age"
对
/* popup message */ "Save mix" = "Enregistrer le mixage"
也是对的
/* popup message */ "Save mix" = "Enregistrer le 'mix'age"
- 记住在一个文件中可能有多个错误,我在两个双引号中find了“KISS”
检查你的文件编码。 这通常是由扩展字符(如重音字符)和非UTF编码引起的。 特别是在XCode 4中有一个错误,如果你从Safari中将重音字符复制到一个string文件中,它将会保存为西方的Mac OS Roman。
XCode的语法检查器无法弄清楚这一点真是太遗憾了。
您也可以将文本复制到文本Wrangler(我从转换器接收文件后做的事情)来检查引用正确的string或运行正则expression式检查分号。 Text Wrangler中的语法着色将显示错误引用(或错误转义)的string,其中XCode的string编辑器当前没有。
在我的情况下, plutil -lint Localizable.strings
没有帮助,因为它产生的错误消息是“ Unexpected character " at line 1
” Unexpected character " at line 1
当真正的错误是”
而不是"
在2340行。
在我的情况下,这是一个从网站复制粘贴“引号”的问题,没有被接受。
我应该检测到,从语法高亮不起作用,但我只是读源“引号,键,引号,平等标志,报价标志,价值,报价标志… y好吗”。
如果您在本地化中使用双引号“”,请不要忘记使用反斜杠来转义它们。
你应该像这样检查语法
"Recharge_Data" = "Data";
1)“”应该在适当的地方。
2)=应该被检查。
3); 应该在声明的结尾。
我曾经也有过一样的问题。 我有一个长约60页的本地化文件,只有一个“太多 – 花了一段时间才发现
我从一个小时的大本地化文件相同的问题,并应用以上所有步骤将不会解决我的问题,最后我做的是,将本地化文件放入一些范围(部分),说part-a,b ,c …,并从文件中剪下这些string,并将它们保存在一个文本文件中,再次构build项目,除非和直到我只剩下部分-k的地方,我发现错误地按了f在我的键盘上..fewww! 它解决了。 我知道这不是一个解决scheme,但可能会帮助像我这样的人:)
我的朋友在Windows中为我做了翻译。 我发现,改变编码没有帮助,所以我做了:我评论了所有的string,然后我取消了一些注释,按下cmd-B,找出哪些string有问题。 然后,我手动重写了问题string,然后工作。