XCode报告本地化的plist已损坏

时间:2011-08-17 17:12:12

标签: iphone localization

我有一个plist文件,我在我的应用程序中使用,我可以本地化,所以我在我的项目中得到两个条目,一个用于英语,一个用于西班牙语,当我编译运行应用程序时它可以工作但当然在这个阶段内容相同。

然后我在Finder中将西班牙语plist替换为已翻译成西班牙语的plist,我可以在XCode编辑器中查看内容而没有问题。

然而,当我尝试编译时,我得到一个错误说明:

... / en.lproj / myData.plist:0:错误:读取plist:无法读取数据,因为它已损坏。

但英国人没有被触及?

当然,您可以通过这种方式将本地化文件复制到项目中吗?

9 个答案:

答案 0 :(得分:6)

  1. 打开磁盘实用程序修复权限。

  2. 打开终端并运行此命令:

    plutil -s /somewhere/yourfile1.plist

  3. 通过向您显示确切的错误和行,它将使您专注于问题的所有细节。所以你必须去报告的线和&用文本编辑器自己修复它。

答案 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 &amp; 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