46 votes

NSLocalizedString ne récupère que la clé, pas la valeur dans Localizable.strings (IOS)

J'ai créé un fichier de chaînes nommé "Localizable.strings" et j'y ai ajouté deux langues, comme ceci :

 "CONNECTIONERROR" = "Check that you have a working internet connection.";
"CONNECTIONERRORTITLE" = "Network error";

J'ai également converti les fichiers en Unicode UTF-8 Cependant, lorsque je crée un UIAlertView comme celui-ci :

  UIAlertView *myAlert = [[UIAlertView alloc]
 initWithTitle:NSLocalizedString(@"CONNECTIONERRORITLE",nil)
 message:NSLocalizedString(@"CONNECTIONERROR",nil)                    
 delegate:self
 cancelButtonTitle:@"Ok"
 otherButtonTitles:nil];

la vue d'alerte n'affiche que le texte de la clé, pas la valeur. Cela fonctionne si, par exemple, je définis un texte UITextviews sur NSLocalizedString(@"CONNECTIONERROR",nil), mais la vue d'alerte n'affiche que la clé. Quelqu'un sait ce qui ne va pas ?

27voto

Pelanes Points 744

Même problème, résolu en utilisant le nom de fichier : Localizable.strings

19voto

alicanozkara Points 1908

Changez votre nom de fichier .strings Localizable.strings , cela a fonctionné pour moi.

18voto

virsunen Points 66

Vérifiez que le Localizable.strings est ajouté à

Cibles -> BuildPhases -> Copier les ressources de l'ensemble

Il n'avait pas été ajouté automatiquement pour moi.

Edit 2021 : avec XCode 12 les Localizable.strings doivent être ajoutés à

Cibles -> Phases de construction -> Compiler les ressources

13voto

aiwis31 Points 154

J'ai cherché la solution pendant 5 heures, j'ai essayé tout ce que j'ai pu pour que la localisation de mon application fonctionne.

Le problème était que l'un des pods de mon projet avait un fichier Localizable.strings (en fait, c'était le pod Parse qui ne l'avait pas renommé). Par conséquent, mon fichier Localizable.strings n'a pas été reconnu par mon application.

J'ai résolu le problème en changeant le nom du fichier en "MyappnameLocalizable.strings" et en utilisant NSLocalizedString de cette façon :

         NSLocalizedString("key", tableName: "MyappnameLocalizable", comment: "comment")

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