web-dev-qa-db-de.com

Lokalisierte Zeichenfolgen Xcode 4 ... Kopieren der .strings-Datei Fehlerüberprüfung fehlgeschlagen

Wie definiere ich lokalisierte Zeichenfolgen in Xcode 4?

Ich ging davon aus, dass ich InfoPlist.strings einfach mithilfe der Eigenschaft "Lokalisierung" (Dateiinspektor, rechtes Bedienfeld) Sprachen hinzufügen kann.

... und geben Sie dann in jeder lokalisierten Version "key" = "value" ein.

Aber ich kann das Projekt nicht bauen. Ich erhalte diesen Fehler:

Kopieren der .strings-Datei Fehlerüberprüfung fehlgeschlagen: Die Daten konnten nicht gelesen werden, da sie beschädigt wurden.

Das Konvertieren der Textcodierung in UTF 16 behebt das Problem nicht. Xcode wird auch nicht beendet und neu gestartet.

F1: wie behebe ich diese Erstellungsfehler?

Durch einen Zufall habe ich es einmal geschafft, eine Test-App zum Hinzufügen einer InfoPlist.strings (Französisch) und (Englisch) auszuführen. Ich habe den Fehler in der französischen Zeichenfolgendatei nicht erhalten, aber ich habe ihn in der englischen Datei erhalten. Also habe ich das Englische in Ruhe gelassen und einfach einen Parameter in das Französische eingegeben. Im Simulator jedoch auf Französisch eingestellt - der Parameter wurde nicht erfasst. Es wurde auf den in NSLocalizedString () angegebenen Standard zurückgesetzt.

F2: Wie bekomme ich es zum Laufen, auch wenn die Build-Fehler behoben sind?

65
user433579

Könnte so einfach sein wie ein fehlendes Semikolon am Ende der Zeile.

237
Tyler A.

Ich hatte gleich das Problem die Fehler in der Lokalisierungsdatei zu finden ...

Verwenden Sie einfach das Tool plutil im Terminal, um die Datei zu konvertieren, und Sie erhalten eine richtige Fehlermeldung mit der Zeilennummer.

plutil -lint Localizable.strings

Antwort

plutil [74058: 707] CFPropertyListCreateFromXMLData (): Plist-Parser im alten Stil: fehlendes Semikolon im Wörterbuch in Zeile 422. Die Analyse wird abgebrochen. Unterbrechen Sie das Debuggen von _CFPropertyListMissingSemicolon. Localizable.strings: Unerwartetes Zeichen "in Zeile 1

98
TomTom

ja habe gerade 500 übersetzungen durchgearbeitet

beachten Sie, dass KISS in der zweiten Zeichenfolge in doppelten Anführungszeichen steht, die sich IN einem anderen DOUBLE QUOTES ERROR befinden

"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.";

Das ist in Ordnung

"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.";

wie es ist (durch einfache Anführungszeichen INNERHALB DES DOPPELTEN ersetzen)

"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.";

TIPP Verwenden Sie eine binäre Suche, um die fehlerhafte Zeile zu finden.

  1. holen Sie sich lokalisierte Dateien vom Übersetzer zurück.
  2. kopieren Sie alle Loclaizable.strings in die lokalisierten Ordner Ihres Projekts.
  3. Öffnen Sie XCODE
  4. Reinigen Sie alle iOS-Geräte/alle Simulatoren
  5. Bauen
  6. Kopieren der .strings-Datei Fehlerüberprüfung fehlgeschlagen: Die Daten konnten nicht gelesen werden, da sie beschädigt wurden.
  7. Öffnen Sie den Protokollnavigator
  8. Sehen Sie, welche der Übersetzungen beschädigt ist.
  9. Ich habe die Localizable.strings in TextWrangler geöffnet. Unten in der Symbolleiste hatte Translator die UTF-16-Datei als zurückgesendet

UTF-16 Little Endian hat es wieder auf 'UTF-16' geändert. 10. Bereinigter Build/Build-GLEICHER FEHLER

Irgendwo in der Datei ist

Fehlendes Semikolon?

/* popup message */
"Save mix" = "Enregistrer le mixage";

/* popup message */
"Save mix" = "Enregistrer le mixage"

"Zusätzliche" doppelte Anführungszeichen "in doppelten Anführungszeichen"

FALSCH

/* popup message */
"Save mix" = "Enregistrer le "mix" age"

RICHTIG

/* popup message */
"Save mix" = "Enregistrer le mixage"

AUCH RICHTIG

/* popup message */
"Save mix" = "Enregistrer le 'mix'age"
  • denken Sie daran, dass möglicherweise mehr als ein Fehler in einer Datei vorliegt. Ich habe "KISS" in doppelten Anführungszeichen an zwei Stellen gefunden
14
brian.clear

Überprüfen Sie Ihre Dateicodierung. Dies wird häufig durch erweiterte Zeichen (wie Akzentzeichen) und eine Nicht-UTF-Codierung verursacht. Insbesondere gibt es einen Fehler in XCode 4, der beim Kopieren von Zeichen mit Akzent in eine Zeichenfolgendatei aus Safari als Western Mac OS Roman gespeichert wird.

8
Dan Bennett

Es ist eine Schande, dass die Syntaxprüfung von XCode dies nicht herausfinden kann.

Sie können den Text auch in Text Wrangler kopieren (etwas, das ich mache, nachdem ich eine Datei von einem Übersetzer erhalten habe), um nach korrekt zitierten Zeichenfolgen zu suchen, oder um eine Regex-Prüfung auf Semikolons durchzuführen. Die Syntaxfarbe in Text Wrangler zeigt falsch zitierte (oder falsch maskierte) Zeichenfolgen an, während dies im Zeichenfolgen-Editor von XCode derzeit nicht der Fall ist.

7
MOK9

In meinem Fall hat plutil -lint Localizable.strings Nicht geholfen, da die Fehlermeldung "Unexpected character " at line 1" Lautete, als der eigentliche Fehler ein Anstelle eines " War. auf Linie 2340.

4
BenRW

In meinem Fall handelte es sich um ein Problem mit dem von einer Website kopierten "Anführungszeichen", das nicht akzeptiert wurde.

Ich hätte feststellen sollen, dass die Syntax-Hervorhebung nicht funktioniert, aber ich habe gerade die Quelle "Anführungszeichen, Schlüssel, Anführungszeichen, Gleichheitszeichen, Anführungszeichen, Wert, Anführungszeichen ... ja, okay" gelesen.

2
Kheldar

Wenn Sie in Ihrer Lokalisierung "" doppelte Anführungszeichen verwenden, vergessen Sie nicht, diese mit einem Schrägstrich zu "" maskieren.

2

Man sollte die Syntax so überprüfen

"Recharge_Data" = "Data";

1) "" sollte an der richtigen Stelle sein.

2) = sollte geprüft werden.

3) ; sollte am Ende der Aussage da sein.

1
Nico

Ich würde das gleiche Problem für eine große lokalisierte Datei ab einer Stunde haben und alle obigen Schritte anwenden, um mein Problem nicht zu lösen. Schließlich bin ich damit fertig, die lokalisierte Datei in einige Bereiche (Teile) zu unterteilen, z. B. Teil-a, b , c ... und schneiden Sie diese Zeichenfolgen aus der Datei aus und speichern Sie sie in einer Textdatei. Erstellen Sie das Projekt erneut, es sei denn, und bis ich den Punkt erreicht habe, an dem nur Teil-k übrig war, habe ich fälschlicherweise Folgendes gedrückt: f auf meiner Tastatur..fewww! es löste sich. Ich weiß, das ist keine Lösung, kann aber jemandem wie mir helfen :)

0
Hemang

Mein Freund hat für mich in Windows übersetzt. Ich habe festgestellt, dass das Ändern der Codierung nicht hilft. Also habe ich Folgendes getan: Ich habe alle Zeichenfolgen kommentiert und dann ein paar Kommentare entfernt und cmd-B gedrückt, um herauszufinden, bei welchen Zeichenfolgen Probleme aufgetreten sind. Dann habe ich Problemstrings manuell umgeschrieben und danach hat es funktioniert.

0
Shmidt

Ich hatte das gleiche problem Ich hatte eine etwa 60 Seiten lange Lokalisierungsdatei und nur eine "zu viele" - es dauerte eine Weile, bis ich das bemerkte

0
user1607498