web-dev-qa-db-fra.com

Localizable.strings ne fonctionne pas dans iOS

J'ai ce problème vraiment époustouflant.

J'ai créé un fichier Localizable.strings dans XCode puis 2 langues dedans.

J'ai rempli ces fichiers avec les traductions de la langue, j'ai fait un build/clean puis une nouvelle build, mais il n'y a aucun moyen que les chaînes de localisation apparaissent dans mon projet. Si j'essaye quelque chose comme:

self.title = NSLocalizedString(@"HEAD", nil);

seul "HEAD" au lieu de la traduction apparaît dans le simulateur d'appareil.

Voici ma hiérarchie de projet:

project hierarchy

Et voici le contenu du fichier de localisation anglais: enter image description here

Des idées?

35
jbssm

J'ai trouvé la réponse moi-même.

En plus de nettoyer et de reconstruire le projet et tout ce que j'ai décrit ci-dessus. Vous devez également supprimer l'application dans le simulateur iPhone, puis la reconstruire! Après cela, cela fonctionne parfaitement.

Parlez de simplifier Apple ...

73
jbssm

Assurez-vous que:

  1. Le fichier est appelé: "Localizable.strings".
  2. "Localizable.strings" appartient à la cible avec laquelle vous traitez.

Quelques vérifications:

  1. Assurez-vous que le nom de fichier est exactement Localizable.strings et est inclus dans la cible
  2. Chaque chaîne se termine par ;
  3. Chaque chaîne est entre guillemets doubles avec "
  4. Les commentaires commencent par // (NE PAS #)
13
samwize

Assurez-vous que vous disposez de Localizable.strings sous Build Phases, Copy Bundle Resources.

9
irmu

Vérifiez le nom du fichier si la première lettre est en majuscules Localizable.strings

4
Adobels

La solution de @ jbssm fonctionne, mais un meilleur moyen (en s'assurant que la ressource continuera à se mettre à jour sans nettoyage et suppression à chaque fois) sera d'ajouter une phase de construction de script personnalisé qui modifie le temps d'accès du Localizable.bundle.

Comme décrit dans https://stackoverflow.com/a/19274844/414037

3
yonix

J'ai trouvé 1 réponse moi-même.

Assurez-vous que toutes les valeurs ont un point final avec; Sinon, ça ne marche pas ..

2
Hrushikesh Betai

Dans mon cas, mon fichier Localizable.strings n'a pas été correctement formaté, en raison de certains restes de texte. Le compilateur ne s'est pas plaint, mais toutes les chaînes après la section illégale du fichier ont été ignorées. Mon fichier ressemblait à ceci:

"Key1" = "String1";

  • Un string

  • Un string

  • Un string

Un string";

"Key2" = "String2";

Assurez-vous donc d'inspecter manuellement toutes les chaînes Localizable.strings qui ne sont pas traitées correctement. Vous ne pouvez pas faire confiance au compilateur pour détecter toutes les erreurs de formatage.

0
phatmann

Mes deux cents sur la localisation. J'ai modifié les fichiers de localisation, les ai ajoutés et supprimés, et le projet a fait l'objet de nombreuses mises à jour Xcode. Trouvez plus tard qu'à l'exception de l'anglais, aucune localisation ne fonctionne.

Le problème était que je dois avoir une localisation base, je dois cocher la base sur le côté droit quand j'ai fait qu'un fichier à gauche soit ajouté et qu'une autre traduction apparaisse dans l'application. Il y a sûrement les cordes là-bas ...

enter image description here

0
karim

J'ai également dû définir l'encodage du fichier .strings donné.

Pour ce faire, sélectionnez le fichier dans le navigateur de projet, puis dans le panneau de droite, sélectionnez l'encodage dans la section "Paramètres de texte". J'ai utilisé Unicode (UTF-8).

enter image description here

0
Chuck Boris
  1. Remplacez la position de Localizable.strings
  2. Faites une vérification croisée avec Localizable.strings coupé et passé dans le bloc-notes afin que nous puissions facilement identifier les caractères cachés et les textes sublimes. résolvez-le, suivez les étapes ci-dessous.
  3. Assurez-vous que le nom de fichier est exactement Localizable.strings et est inclus dans la cible
  4. Chaque chaîne se termine par;
  5. Chaque chaîne est mise entre guillemets "
  6. Les commentaires commencent par // (NOT #)

Supprimez également l'application dans le simulateur iPhone, puis recréez-la! Après cela, cela fonctionne parfaitement.

0
user3108511

Outre tous les conseils mentionnés ailleurs dans ce fil, Localizable.strings doit également se trouver dans le dossier racine du projet dans certains cas.

0
Aron