5 votes

La chaîne localisée xcode n'est pas chargée

J'ai rencontré un problème étrange avec les chaînes localisées. J'ai seulement un 'Localizable.strings' dans mon dossier 'en.lproj' et cela fonctionne bien. toutes les chaînes sont affichées sur le périphérique. mais la prochaine fois que je le compile et l'exécute, il n'affiche que l'ID des chaînes. même si je ne change rien et que je clique seulement sur build&debug. et la prochaine fois, cela fonctionne à nouveau correctement et la prochaine fois, c'est à nouveau l'ID qui est affiché.

Je n'ai pas eu le temps de m'en rendre compte, mais j'ai eu l'occasion de me rendre compte que je n'avais pas le temps de m'en rendre compte.

4voto

GtotheB Points 1923

Ma SOLUTION se trouve en bas de page :

J'ai rencontré le même problème : des séries alternant des traductions correctes, puis des traductions incorrectes (uniquement pour l'anglais cependant).

L'ajout de "-NSShowNonLocalizedStrings YES" en tant qu'argument de l'application a donné un résultat :

Localizable string "MyKey" not found in strings table "Localizable" of bundle CFBundle

J'ai donc essayé de charger le fichier clé directement depuis le bundle sous la forme d'une chaîne de caractères et de l'extraire. Les fois où cela n'a pas fonctionné correctement, il a affiché un tas de messages intégrés à iOS. Je suis donc allé dans le fichier APP qui a été construit, j'ai ouvert le contenu du paquet et j'ai regardé le fichier en.lproj/Localizable.strings... et voilà ! Le fichier avait été rempli avec des paires clé/valeur Apple iOS. Lors de la compilation suivante, le fichier a été rempli comme prévu.

Bien sûr, cela n'a rien à voir avec l'encodage des fichiers (qui devrait être UTF-16). Je n'ai pas été en mesure de trouver quoi que ce soit qui mentionne ce problème spécifique.

MA SOLUTION :

J'ai copié le contenu du fichier anglais légitime Localizable.strings À PARTIR DU PAQUET D'APPLICATIONS (qui ne provient pas de ma source) dans un fichier XML (lors de la compilation, le fichier .strings est converti en XML) et je l'ai ajouté à mon projet. J'ai ensuite chargé ce fichier dans un dictionnaire au démarrage, et si l'appel à NSLocalizedString renvoyait la clé au lieu de la valeur, je faisais une recherche dans le dictionnaire que j'avais chargé. En théorie, vous pourriez faire cela pour toutes les langues, mais je n'avais ce problème qu'avec l'anglais.

Oui, ce n'est pas la solution au problème, mais c'est une solution de contournement.

3voto

Reggian Points 172

Vérifiez si vous avez plus d'un Localizable.strings dans votre projet. Les fusionner en un seul a résolu le problème pour moi. (Vérifiez tout code externe que vous utilisez, par exemple ShareKit).

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