2011-08-17 20 views
5

我有我在我的應用程序使用的plist文件,我可以本地化,所以我得到在我的項目兩個項目,一個是英語和一個西班牙語,當我編譯運行的應用程序它的工作原理但當然在這個階段內容是相同的。的XCode報告本地化的plist損壞

然後我在Finder中與一個已經爲我當翻譯成西班牙文取代了西班牙的plist,我可以在Xcode編輯器中查看沒有問題的內容。

然而,當我嘗試編譯我得到一個錯誤,指出:

.../en.lproj/myData.plist:0:錯誤:讀取的plist:無法讀取數據,因爲它已經損壞。

但是英文一直沒有被觸動?

當然,你可以本地化的文件複製到這樣的項目呢?

+0

也許文件已損壞。你看過嗎? – jtbandes

+0

「,我可以在XCode編輯器中查看沒有問題的內容。」 – user7865437

回答

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。

+0

這非常有幫助!謝謝我會這樣做,並讓你知道......除此之外,我正確地假設我是否有兩個plist文件,en和es,並且它們包含包含字符串的字典,我可以使用本地化以正確的語言讀取字符串?謝謝 – user7865437

+0

是的,請參閱Apple的:[iOS國際化和本地化](http://developer.apple.com/library/ios/#documentation/MacOSX/Conceptual/BPInternational/Articles/InternatAndLocaliz.html#//apple_ref/doc/uid/20000277-SW1) – Cephi

4

這也可以用字符串發生,如果您在線路末端忘了分號的文件。傻我。

+0

我也................ – Maulik

2

對於任何人誰了我的確切問題的好處:

我有腐敗的plist的問題太多。已通過導出的OpenOffice到CSV電子表格(以UTF-8格式)生成

我plist中。然後,我會使用我編寫的一個簡單的Python腳本將CSV文件轉換爲plist。我相信我的問題是我保存的電子表格中存在一些單元格引用錯誤(即單元格顯示爲「錯誤:511」)。錯誤的存在導致UTF-8出口以某種方式失敗,因此腐敗的plist。

我還沒有完全證實上述的情況一樣,但我敢肯定,這就是問題所在:當我在OpenOffice的一些細胞修復錯誤,我的plist再次工作。

This answer演示如何使用iconv命令驗證文件是否正確編碼 - 在這種情況下可能很有用。

4

如果在一個字符串中有一個&,也會發生這種情況。

替換:

<string>SomeText & SomeMoreText</string> 

有了:

<string>SomeText &amp; SomeMoreText </string> 
0

這發生在我身上,因爲我設法在我的plist下降隨機引號(「),刪除它,得到它的工作。

我打開該文件中所有的TextWrangler使用Cmd的-F以搜索可能會導致犯罪的任何字符。

6
  1. 打開磁盤實用程序修復權限。

  2. 打開終端,運行以下命令:

    plutil -s /somewhere/yourfile1.plist

它會讓你通過展示你確切的錯誤,並符合問題的所有細節關注。所以你必須去報告的行&自己用文本編輯器修復它。

0

對我來說是本地化字符串的名稱空間:

而不是this_is_the_string_we_will_translate

this_is_the string_we_will_translate

棘手的一個現貨。

0

發生在我身上,錯過了0: 2012-12-9T06:00:00Z 應該 2012-12-09T06:00:00Z