Localization 本地化字符串Xcode 4。。。复制.strings文件错误验证失败
如何在Xcode 4中定义本地化字符串 我假设我可以使用“本地化”属性(文件检查器,右面板)将语言添加到InfoPlist.strings中 …然后在每个本地化版本中键入“key”=“value” 但是我不能建造这个项目。我得到这个错误: Copy.strings文件错误验证失败:无法读取数据,因为它已损坏 将文本编码转换为UTF16并不能解决这个问题。退出Xcode并重新启动它也是如此 问题1:如何纠正这些构建错误 出于某种侥幸,我曾经设法让一个测试应用程序运行,添加了InfoPlist.strings(法语)和(英语)。我没有在法语字符串文件中得到错误,但在英语字符串文件中得到了错误。所以我把英文的放在一边,把一个参数放在法文的里面。然而,在模拟器中,设置为法语-参数没有被拾取。它恢复为NSLocalizedString()中指定的默认值Localization 本地化字符串Xcode 4。。。复制.strings文件错误验证失败,localization,xcode4,Localization,Xcode4,如何在Xcode 4中定义本地化字符串 我假设我可以使用“本地化”属性(文件检查器,右面板)将语言添加到InfoPlist.strings中 …然后在每个本地化版本中键入“key”=“value” 但是我不能建造这个项目。我得到这个错误: Copy.strings文件错误验证失败:无法读取数据,因为它已损坏 将文本编码转换为UTF16并不能解决这个问题。退出Xcode并重新启动它也是如此 问题1:如何纠正这些构建错误 出于某种侥幸,我曾经设法让一个测试应用程序运行,添加了InfoPlist.st
问题2:即使修复了生成错误,我如何使其工作?可能很简单,就像行末尾缺少分号一样。检查文件编码。这通常是由扩展字符(如重音字符)和非UTF编码引起的。特别是在XCode 4中有一个bug,如果您将重音字符从Safari复制到字符串文件中,它将保存为Western Mac OS Roman。很遗憾XCode的语法检查器无法解决这个问题
您还可以将文本复制到text Wrangler(我从翻译器收到文件后会这样做),以检查是否有正确引用的字符串,或者运行正则表达式检查分号。Text Wrangler中的语法着色将显示错误引用(或错误转义)的字符串,而XCode的字符串编辑器目前不显示这些字符串。在我的例子中,这是从网站粘贴的“引用”符号副本的问题,不被接受
我应该从语法突出显示中检测到它不起作用,但我只是读取了源代码“引号符号、键、引号符号、等号、引号符号、值、引号符号……是的,好的” 是的,刚刚翻了500遍 请注意,第二个字符串中的吻在另一个双引号内的双引号中 错误 这没关系
"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.";
原样(替换为双引号内的单引号)
小费
使用二进制搜索查找有问题的行
/* popup message */
"Save mix" = "Enregistrer le 'mix'age"
- 请记住,一个文件中可能有多个错误 我在两个地方找到了双引号中的“KISS”
- 我也有同样的问题。我有一个大约60页长的本地化文件,只有一个“太多了-花了一段时间才发现这一点”我想从一个小时开始为一个大的本地化文件解决同样的问题,应用所有上述步骤都不会解决我的问题,最后我要做的是,将文件本地化到一些范围(部分),比如说a、b、c部分…然后从文件中剪切这些字符串,并将它们保存在文本文件中,重新构建项目,直到我到达只剩下k部分的点,我发现我错误地在键盘上按了f。.fewww!问题解决了。我知道这不是一个解决方案,但可能对像我这样的人有所帮助:)在本地化文件中查找错误时遇到相同问题
只需使用终端中的plutil工具转换文件,您将得到一条带有行号的正确错误消息
plutil-lint Localizable.strings
回应
plutil[74058:707]CFPropertyListCreateFromXMLData():旧式plist解析器:第422行的字典中缺少分号。解析将被放弃。在_cfPropertyListMissing分号上中断以进行调试。
Localizable.strings:第1行出现意外字符“1”
我的朋友在Windows上为我翻译。我发现,改变编码没有帮助,
所以我所做的是:我注释了所有的字符串,然后取消注释了一些字符串,并按下cmd-B,以找出哪些字符串有问题。然后我手动重写了问题字符串,然后它就开始工作了 在我的例子中,
plutil-lint Localizable.strings
没有帮助,因为它产生的错误消息是第1行的“意外字符”,而实际错误是第2340行的”
,而不是”
。如果在本地化中使用双引号“,别忘了用反斜杠将它们转义。应该检查如下语法
"Recharge_Data" = "Data";
1) ”“应该在适当的地方
2) =应进行检查
3) );应该在声明的末尾 谢谢。这很有帮助。然而,尽管它构建并运行,但仍然不起作用。NSLocalizedString(@“default”,@“greeting”)始终为我提供默认值。是否有多个.strings文件?如果是,请使用NSLocalizedStringFromTable。它现在可以工作了。不知道为什么。可能会再次保存和加载?您的问题是NSLocalizedString(x,y)将所需的键作为第一个参数(x),并将注释作为第二个参数(y),因此您在注释中编写的内容应该是:NSLocalizedString(@“greeting”,@“default”)
当缺少分号时,Xcode不知何故直到y才显示该警告
/* 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"
"Recharge_Data" = "Data";