65 votes

Localisée Chaînes De XCode 4 ... Copie .les chaînes de l'Erreur de fichier de Validation a échoué

Comment puis-je définir des chaînes localisées dans XCode 4?

J'ai supposé que je pourrais juste ajouter des langues à InfoPlist.les chaînes à l'aide de la "Localisation" de la propriété (inspecteur de Fichiers, panneau de droite).

...puis tapez dans la "touche" = "valeur"s dans chaque version localisée.

Mais je ne peux pas construire le projet. J'obtiens cette erreur:-

Copie .les chaînes de l'Erreur de fichier de Validation a échoué: Les données ne peut pas être lue parce qu'il a été endommagé.

Convertir l'encodage de texte UTF 16 ne résout pas le problème. Ne cesser de Xcode et de commencer à nouveau.

Q1: Comment puis-je remédier à ces erreurs de build?

En quelques coup de chance, j'ai réussi à obtenir une application de test pour exécuter l'ajout d'un InfoPlist.les chaînes (françaises) et (en anglais). Je n'ai pas l'erreur de français sur le fichier de chaînes, mais je l'ai fait avec les anglais. J'ai donc quitté l'anglais seul, et il suffit de mettre un paramètre en français. Toutefois, dans le simulateur, le français - le paramètre n'a pas été reprise. Elle est revenue à la valeur par défaut spécifiée dans NSLocalizedString()

Q2: Comment puis-je le faire fonctionner, même si la construction d'erreurs sont corrigées?

237voto

Tyler A. Points 2158

Pourrait être aussi simple que de manque un point-virgule à la fin de la ligne.

99voto

TomTom Points 955

J'ai eu le même problème à trouver des erreurs dans le fichier de localisation...

Utilisez simplement l'outil plutil dans le terminal de convertir le fichier et vous obtiendrez un message d'erreur approprié avec le numéro de la ligne.

plutil -lint Localizable.les chaînes

Réponse

plutil[74058:707] CFPropertyListCreateFromXMLData(): de style Ancien plist de l'analyseur: point-virgule manquant dans le dictionnaire de la ligne 422. L'analyse sera abandonné. Pause sur _CFPropertyListMissingSemicolon à déboguer. Localizable.chaînes de caractères: un caractère Imprévu " à la ligne 1

14voto

brian.clear Points 2424

oui juste chaluté par le biais de 500 traductions

remarque le BAISER dans la deuxième chaîne est dans les guillemets qui sont à l'INTÉRIEUR d'un autre GUILLEMETS ERREUR

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

C'est OK

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

qu'est-ce (remplacer par des apostrophes à l'INTÉRIEUR de LA DOUBLE)

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

ASTUCE UTILISER un BINAIRE de RECHERCHE pour trouver la ligne fautive.

  1. obtenir des fichiers de retour de traducteur.
  2. copie de tous les Loclaizable.des chaînes dans votre projet localisé dossiers.
  3. Ouvrez XCODE
  4. Nettoyer tout - en Appareil iOS/tous les Simulateurs
  5. Construire
  6. Copie .les chaînes de l'Erreur de fichier de Validation a échoué: Les données ne peut pas être lue parce qu'il a été endommagé.
  7. Ouvrez le journal navigator
  8. Voir qui des traductions est corrompu.
  9. J'ai ouvert la Localizable.des chaînes dans TextWrangler En bas dans la barre d'outils Traducteur avait envoyé UTF-16 fichier

UTF-16 Little Endian Changé de retour pour tout 'UTF-16' 10. Nettoyer build/build MÊME ERREUR

Quelque part dans le fichier est

Point-virgule manquant?

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

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

"Extra "guillemets" à l'intérieur des guillemets doubles"

MAL

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

DROIT

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

AUSSI DROIT

/* popup message */
"Save mix" = "Enregistrer le 'mix'age"
  • rappelez-vous il peut y avoir plus d'une erreur dans un fichier J'ai trouvé "BAISER" en double-guillemets doubles dans deux endroits

8voto

Dan Bennett Points 875

Vérifiez votre fichier de codage. Cela est souvent causé par des caractères étendus (comme les caractères accentués) et non suivant l'encodage UTF. En particulier, il y a un bug dans XCode 4, si vous copiez les caractères accentués dans un fichier de chaînes à partir de Safari, il sera puis "enregistrer sous" de l'Ouest de Mac OS Romaine.

7voto

MOK9 Points 311

C'est une honte que XCode du vérificateur de syntaxe ne peut pas comprendre cela.

Vous pouvez également copier le texte dans le Texte Wrangler (quelque chose que je fais après la réception d'un fichier à partir d'un traducteur) pour vérifier correctement les chaînes entre guillemets, ou d'exécuter une regex pour vérifier des points-virgules. La coloration de syntaxe dans le Texte Wrangler montrera mal cité (ou de mauvaise échappé) les chaînes de caractères où XCode les ficelles de l'éditeur ne le fait pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X