it-swarm.com.de

Localizable.strings-Dateien .. in xcode4

In xcode4 (ich habe bisher v4.0.1 verwendet und gestern v4.0.2 heruntergeladen.) Ich habe Localizable.string-Dateien erstellt und mein Projekt kompiliert. (Wie Sie wissen, verwendet mein Quellcode Die Makrofunktion NSLocalizedString.)

Mein Projekt kann jedoch nicht mit der Datei Localizable.string kompiliert werden. Wenn ich den gesamten Code in dieser Datei in Kommentare umwandle (wie hier -> //), wird mein Projekt vollständig kompiliert.

Das Ergebnis sind Localizable.string-Dateien. Ich habe bei Google danach gesucht, Ich habe festgestellt, dass UTF-8-Dateien (Localizable.string) in UTF-16 geändert wurden. Und obwohl ich das probiert habe ... dieser Weg hat auch nicht funktioniert.

In diesem Moment versuchen viele Leute, Localizable.string-Dateien zu verwenden. Aber sie könnten dieses Problem lösen, das ich nicht lösen kann. Weil es nicht die Fragen zu diesem Problem gibt so viele.

================================================== ==============

In der Datei Localizable.string

"LOCAL_APP_GRADE" = "Basic"

"LOCAL_APP_LAST_UPDATED_DATE" = "2011/04/20"

"LOCAL_MAIN_MENU_TITLE" = "Hauptmenü"

In meinem Quellcode

NSLocalizedString( @"LOCAL_MAIN_MENU_TITLE", @"" );

Fehlermeldung,

.Strings-Datei kopieren Fehlerüberprüfung fehlgeschlagen: Die Daten konnten nicht gelesen werden weil es beschädigt wurde.

39
MonsterK

Ich gehe hier von Xcode 4 aus. Prüfen Sie noch einmal, was für die Kodierung in jeder Localization.string-Datei im Dateiinspektor angezeigt wird. Als ich diesen Fehler hatte, lag es daran, dass eine der Dateien als Mac Roman anstelle von UTF-16 gelesen wurde. Sobald ich die Kodierung geändert hatte, ging die Warnung weg. Was mich anfangs verrückt machte, war, dass die Warnung nur in Xcode 4 geschah. Xcode 3 gab es nicht.

Sie haben auch ein Problem mit der Formatierung Ihrer .string-Datei. Alle Zeilen sollten mit einem Semikolon enden.

"LOCAL_APP_GRADE" = "Basic";
"LOCAL_APP_LAST_UPDATED_DATE" = "2011/04/20";
"LOCAL_MAIN_MENU_TITLE" = "Main Menu"; 

Ich glaube nicht, dass dies die Ursache der Warnung ist. Zumindest habe ich noch nie eine Warnung dafür gesehen. Es manifestiert sich normalerweise nur zur Laufzeit, wenn LOCAL_MAIN_MENU_TITLE in der App anstelle des Hauptmenüs angezeigt wird. Es wäre schön, wenn der Build-Prozess nach Semikolons suchen würde. Es ist leicht, das Hinzufügen von Dateien beim Bearbeiten der Dateien zu übersehen.

93
McCygnus

Pro Apple:

Wenn Sie beim Testen auf Probleme stoßen und feststellen, dass die Funktionen und Makros zum Abrufen von Zeichenfolgen geben immer den gleichen Schlüssel zurück Führen Sie (im Gegensatz zum übersetzten Wert) das Tool/usr/bin/plutil auf .__ aus. Ihre Strings-Datei. Eine String-Datei ist im Wesentlichen eine Eigenschaftslistendatei in einer besonderen Weise formatiert. Das Ausführen von plutil mit der Option -lint kann verborgene Zeichen oder andere Fehler aufdecken, die Zeichenfolgen verhindern korrekt abgerufen werden.

Starten Sie ein Konsolenfenster, gehen Sie in Ihren Projektordner und führen Sie folgende Schritte aus:

/usr/bin/plutil -lint ja.lproj/Localizable.strings

(Ersetzen Sie natürlich den richtigen Namen des Sprachordners). Hier erfahren Sie genau, wo das Problem liegt!

64
Ser Pounce

Alle Zeilen in der .strings-Datei sollten mit einem Semikolon enden. Es hat für mich funktioniert.

18
Muhammad_Awaab

Ich hatte heute das gleiche Problem, nachdem ich die Lokalisierungen von Apple Notes importiert hatte, und die Ursache war wirklich subtil. Die standardmäßigen doppelten Anführungszeichen wurden mit schrägen doppelten Anführungszeichen getauscht.

Schräges doppeltes Zitat: ”

Standard-Anführungszeichen: "

7
Nigel

Ich habe mit dem gleichen Fehler gekämpft und hatte am Ende ein paar ähnliche Probleme, jedoch mit unterschiedlichen Details. Zunächst einmal, obwohl es scheint, dass Xcodes internes "builtin-copyStrings" -Tool in der Lage sein sollte, sowohl Little-Endian- als auch Big-Endian-UTF-16-Dateien zu verarbeiten, wirklich nur Big Endian. Meine Theorie ist, dass es einen zusätzlichen Validierungsschritt durchführt (vielleicht mit dem plutil-Befehlszeilenprogramm), der in Xcode 3 nicht vorkam, und dass dieses Tool auf etwas anderem als dem Big-Endian-UTF-16 steht. Nicht ganz sicher.

Der zweite Trick ist, dass Sie sicherstellen müssen, dass Ihre String-Dateien mit no BOM (Byte Order Marker) gespeichert werden. Ich habe einige meiner .strings-Dateien in BBEdit bearbeitet, was dazu führte, dass eine Stückliste in der Datei gespeichert wurde, und Xcode 4 scheint auch eine passende Passform zu haben. Xcode selbst scheint keine Möglichkeit zu haben, die Stückliste aus der Datei zu entfernen. Daher muss dies in einem Texteditor wie BBEdit oder TextWrangler geschehen, der dies für Sie tun kann.

3
Brian Webster

Bei Xcode 10.1 stoppt ein fehlendes Semikolon die Kompilierung mit diesem Fehler:

Localizable.strings: Lesen fehlgeschlagen: Eigenschaftsliste konnte nicht analysiert werden, weil Die Eingabedaten hatten ein ungültiges Format

Übrigens können Sie herausfinden, ob der Fehler in Ihrer Datei allgemein ist (ein Codierungsproblem) oder spezifisch für eine oder mehrere Zeilen ist, indem Sie den Großteil des Dateiinhalts vorübergehend entfernen. Sie können das Problem dann finden, indem Sie den Inhalt schrittweise wieder hinzufügen, bis der Fehler zurückgegeben wird.

1
arlomedia

Mein Problem war, dass ich ; in einer der Zeilen vergessen habe

0
Vlad Pulichev

Stellen Sie sicher, dass Sie die Zeichenfolge in folgendem Format deklariert haben:

"YOUR_STRING_LABEL" = "Your message";

Hinweis: Nicht vergessen Anführungszeichen ("), Gleichheitszeichen (=) und Semikolon (;) am Ende .

0
Chintan Shah

Ich hatte dieses Problem. Mein Fix Fügen Sie am Anfang der Datei eine neue Zeile ein. Bizarr, aber es hat für mich funktioniert.

Anstatt also oben in meiner Datei folgendes zu haben:

/* comment */
"LOCAL_APP_GRADE" = "Basic"

Ich musste es tun:

[newline]
/* comment */
"LOCAL_APP_GRADE" = "Basic"

(Die Formatierung kann nicht richtig angezeigt werden. Geben Sie nicht "Newline" ein, sondern drücken Sie die Eingabetaste.)

0
tactusben

Vielleicht haben Sie etwas wie: "Bla" = "bla" ;;

Beachten Sie das Duplikat. Symbol. Wenn dies der Fall ist, wird es ordnungsgemäß kompiliert, schlägt jedoch zur Laufzeit fehl.

0
Ricardo

In Verbindung damit - Vorsicht beim manuellen Zusammenführen von Zeichenfolgen in Localizable.strings - Ich habe es geschafft, BEIDE Zeichenfolgen aus einem NSLocalizedString () -Makro zu kopieren/einzufügen, sodass der Eintrag Localizable.strings in dieser Form vorhanden war:

"KEY" = "STRING", @"COMMENT STRING COPIED ACROSS ALSO, IN ERROR";

Das Bit ,@"xxx" beim Bauen verursachte den Fehler: 

Lesen fehlgeschlagen: Die Daten konnten nicht gelesen werden, da sie nicht korrekt sind Format.

In diesem Fall half eine schnelle Suche nach @" dabei, die Orte zu identifizieren, an denen ich dies getan habe.

0
Rob Glassey

Sieht so aus, als wäre dies eine Standardnachricht für Fehler beim Lesen der String-Datei.

In meinem Fall war es ein Doppelpunkt (json force of habit) anstelle eines Gleichheitszeichens:

"key1" = "String1";
"key2" : "String2";
"key3" = "String3";

Änderte es zu = und alles funktionierte gut.

0
gfpacheco