2011-08-17 25 views
5

Ho un file plist che ho usato nella mia app che posso localizzare in modo da ottenere due voci nel mio progetto, una per l'inglese e una per lo spagnolo e quando compilo una corsa l'app funziona ma ovviamente in questa fase i contenuti sono identici.I rapporti XCode plist localizzati sono corrotti

Poi in Finder sostituisco il plist spagnolo con uno che è stato tradotto per me in spagnolo e posso nell'editor XCode visualizzare il contenuto senza problemi.

Tuttavia quando provo a compilare ottengo un errore affermando:

.../en.lproj/myData.plist: 0: errore: la lettura plist: I dati non è stato possibile leggere perché è stato corrotti.

Ma quello inglese non è stato toccato?

Sicuramente è possibile copiare un file localizzato nel progetto in questo modo?

+0

Forse il file è danneggiato. Hai guardato? – jtbandes

+0

"e posso nell'editor XCode visualizzare il contenuto senza problemi." – user7865437

risposta

4

Una cosa che può accadere è che qualcuno ha incasinato uno dei tuoi tag.

In Xcode click destro sul vostro plist spagnola, selezionare Apri come poi Source Code

Poi controllare la vostra plist per garantire tutti i tuoi apertura e chiusura tag sono ancora lì, non ci sono errori di battitura, sono ci sono dei caratteri illeggibili in là, e che non si sta tentando di utilizzare una stringa in un intero etc:

Esempio:

<?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> 

Una volta ho avuto qualche problema quando qualcosa è stato copiato e incollato in Xcode da un PDF (forse una specie di simbolo errato?) E ha funzionato bene quando l'ho appena reinserito. Inoltre è spesso difficile generare un plist valido da un word processor.

+0

questo è molto utile! Grazie, lo farò e ti faccio sapere ... Inoltre, a parte questo, ho ragione nel presumere di avere due file plist, en e es e contengono dizionari che contengono stringhe posso usare la localizzazione per leggere la stringa nella lingua giusta ? Grazie – user7865437

+0

Sì, guarda Apple: [Internazionalizzazione e localizzazione iOS] (http://developer.apple.com/library/ios/#documentation/MacOSX/Conceptual/BPInternational/Articles/InternatAndLocaliz.html#//apple_ref/doc/uid/20000277-SW1) – Cephi

4

Ciò può accadere anche con il file di stringhe se si dimentica il punto e virgola alla fine delle righe. Silly me.

+0

anche io ................ – Maulik

2

Per beneficio di chi aveva il mio problema esatto:

ho avuto il problema plist corrotto troppo.

Il mio plist è stato generato esportando un foglio di calcolo in OpenOffice in CSV (in formato UTF-8). Quindi convertivo il file CSV in un plist usando un semplice script Python che avevo scritto. Credo che il mio problema fosse che c'erano degli errori di riferimento di cella nel foglio di calcolo che avevo salvato (ad esempio, le celle dicevano "Err: 511"). L'esistenza di errori stava causando il fallimento dell'esportazione UTF-8 in qualche modo, quindi il plist corrotto.

Non ho assolutamente verificato quanto sopra, ma sono abbastanza sicuro che questo è il problema: dopo aver corretto gli errori in alcune celle in OpenOffice, il mio plist funziona di nuovo.

This answer dimostra l'uso del comando iconv per verificare che un file sia codificato correttamente, potrebbe essere utile in casi come questo.

4

Questo può verificarsi anche se si dispone di & all'interno di una stringa.

Sostituire:

<string>SomeText & SomeMoreText</string> 

Con:

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

Questo è successo a me, perché sono riuscito a cadere una virgoletta casuale (") nel mio plist rimosso e ottenuto di lavorare..

ho aperto il file in TextWrangler tutti utilizzati Cmd-F per la ricerca di eventuali caratteri che potrebbero causare il reato.

6
  1. open disk utility permessi di riparazione.

  2. terminale aperto ed eseguire questo comando:

    plutil -s /somewhere/yourfile1.plist

vi farà fuoco con tutti i dettagli del problema mostrando l'errore esatto e la linea. Quindi dovrai recarti sulla linea segnalata & risolverlo da solo con un editor di testo.

0

Per me è stato uno spazio nel nome della stringa localizzata:

Invece di this_is_the_string_we_will_translate

avevo this_is_the string_we_will_translate.

Ingannevole da individuare.

0

Un ottimo punto di partenza plists debug è quello di utilizzare un validatore XML come ad esempio: http://www.w3schools.com/xml/xml_validator.asp

Questa funzione è anche costruito in maggior parte degli ambienti di sviluppo web.

0

successo a me, perso 0: 2012-12-9T06: 00: 00Z dovrebbe essere 2012-12-09T06: 00: 00Z

Problemi correlati