我有一个plist文件,我在我的应用程序中使用,我可以本地化,所以我在我的项目中得到两个条目,一个用于英语,一个用于西班牙语,当我编译运行应用程序时它可以工作但当然在这个阶段内容相同。
然后我在Finder中将西班牙语plist替换为已翻译成西班牙语的plist,我可以在XCode编辑器中查看内容而没有问题。
然而,当我尝试编译时,我得到一个错误说明:
... / en.lproj / myData.plist:0:错误:读取plist:无法读取数据,因为它已损坏。
但英国人没有被触及?
当然,您可以通过这种方式将本地化文件复制到项目中吗?
答案 0 :(得分:6)
打开磁盘实用程序修复权限。
打开终端并运行此命令:
plutil -s /somewhere/yourfile1.plist
通过向您显示确切的错误和行,它将使您专注于问题的所有细节。所以你必须去报告的线和&用文本编辑器自己修复它。
答案 1 :(得分:4)
可能发生的一件事是有人弄乱了你的一个标签。
在Xcode中右键单击您的西班牙语plist,选择打开AS ,然后选择源代码
然后检查你的plist以确保你的所有开始和结束标签仍然存在,没有拼写错误,那里是否有任何垃圾字符,并且你没有尝试使用整数等字符串:
示例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>1</key>
<dict>
<key>a</key>
<string>a1</string>
<key>b</key>
<string>b1</string>
</dict>
<key>2</key>
<dict>
<key>a</key>
<string>a2</string>
<key>b</key>
<string>b2</string>
</dict>
<key>3</key>
<dict>
<key>a</key>
<string>a3</string>
<key>b</key>
<string>b3</string>
</dict>
</dict>
</plist>
我曾经遇到过一些问题,当某些东西被复制并从PDF中粘贴到Xcode中时(可能会出现某种不正确的符号?)当我刚刚重新输入它时它工作正常。此外,通常很难从文字处理器生成有效的plist。
答案 2 :(得分:4)
如果您忘记了行尾的分号,那么对于strings文件也会发生这种情况。傻我。
答案 3 :(得分:4)
如果您在字符串中包含&amp; ,也会发生这种情况。
替换:
<string>SomeText & SomeMoreText</string>
使用:
<string>SomeText & SomeMoreText </string>
答案 4 :(得分:2)
为了解决我确切问题的人的利益:
我也有腐败的plist问题。
我的plist是通过将OpenOffice中的电子表格导出为CSV(UTF-8格式)生成的。然后我使用我编写的简单Python脚本将CSV文件转换为plist。我相信我的问题是我保存的电子表格中存在一些单元格引用错误(即单元格表示“Err:511”)。错误的存在导致UTF-8导出以某种方式失败,因此腐败的plist。
我还没有完全验证上面的情况,但我很确定这是问题:在我修复了OpenOffice中某些单元格中的错误后,我的plist再次工作。
This answer演示了使用iconv
命令来验证文件是否正确编码 - 在这种情况下可能很有用。
答案 5 :(得分:0)
这件事发生在我身上,因为我设法在我的plist中删除了一个随机引号(“)。删除它并让它工作。
我在TextWrangler中打开了所有使用Cmd-F的文件,以搜索可能导致攻击的任何字符。
答案 6 :(得分:0)
对我来说,这是一个本地化字符串名称中的空格:
而不是this_is_the_string_we_will_translate
我有this_is_the string_we_will_translate
。
棘手的一个人。
答案 7 :(得分:0)
开始调试plist的好地方是使用XML验证器,例如:http://www.w3schools.com/xml/xml_validator.asp
此功能也内置于大多数Web开发环境中。
答案 8 :(得分:0)
发生在我身上,错过了0: 2012-12-9T06:00:00Z 应该 2012-12-09T06:00:00Z