Localization avec NSLocalizedString ou dans .xib ?

Bonjour tout le monde,


Je suis à  la recherche d'une information que je n'ai pas trouvé sur Internet. J'aimerais savoir dans quelle version d'iOS est apparue la localization avec NSLocalizedString ? (c'est peut-être présent depuis le début ?)


J'aimerais également savoir dans quelle cas utiliser la localization dans les .xib et dans quelle cas utiliser NSLocalizedString ?


Je pose cette question car je travaille sur un projet iOS qui utilise ces deux méthodes (dans les .xib ET NSLocalizedString), et je ne sais pas pourquoi ne pas avoir utiliser qu'une seule de ces deux méthodes... (le projet sur lequel je travaille date de 2011, d'où ma 1ere question ^^)


Dernière question, pour un nouveau projet, laquelle de ces 2 méthodes recommanderiez-vous le plus ?


Désolé pour toutes ces questions, et merci d'avance de vos réponses ! =)


Réponses

  • CéroceCéroce Membre, Modérateur
    juillet 2015 modifié #2

    Les deux méthodes existents depuis le tout début. Elle ne servent pas à  la même chose.

    Les xib ne contiennent que ce qui a trait à  l'organisation des vues.

    Par exemple, si tu veux afficher une UIAlertView, tu vas devoir aller chercher la traduction dans un fichier .strings.


    Ensuite, les xib présentent un autre problème. Imagine que tu aies une version 1.0, traduite en anglais et français. Dans la version 1.1, tu ajoutes un bouton: tu es bon pour traduire tout le xib à  nouveau.


    Donc, ce que nous, nous faisons, c'est que nous n'avons qu'une version du xib, et le texte du bouton est une clef, par exemple "button.delete".

    Nous avons deux fichiers .Strings, qui sont eux traduits:



    // en.lproj/Localized.strings
    "button.delete" = "Delete";

    // fr.lproj/Localized.strings
    "button.delete" = "Supprimer";

    Avec un peu de code intelligent, quand le xib/storyboard est chargé, on remplace le texte du bouton par la valeur associée dans la bonne langue.


    Apple a un système similaire "Base Localization". Personnellement, je trouve que cette solution ne résout pas le problème, l'incrémentation des versions étant très mal pensée. Je ne rappelle plus les détails.

     


  • Merci Céroce pour cette réponse, c'est une bonne chose de savoir que les 2 méthodes sont la depuis le début. 


     



     


     


    Ensuite, les xib présentent un autre problème. Imagine que tu aies une version 1.0, traduite en anglais et français. Dans la version 1.1, tu ajoutes un bouton: tu es bon pour traduire tout le xib à  nouveau.

     


    C'est justement là  tout mon problème : mon application existe en Français et en Anglais, et l'on souhaiterais ajouter 2 nouvelles langues à  notre application. Ce qui signifie qu'il faut reprendre tous les .xib déjà  localizés et en ajouter 2 pour chacun (un espagnol et un allemand). Et comme il y a pas mal de .xib dans mon application, cette tâche risque d'être assez longue, et je me demandais si ça valait le coup de tout mettre dans les fichiers de localization (.string)...


  • tabliertablier Membre
    juillet 2015 modifié #4

    Pour les nib/xib il existe des applications qui permettent de reporter les localisations d'une version de l'appli à  la version suivante, qui ont une aide à  l'adjonction d'une nouvelle langue et qui sont adaptés à  résoudre ces problèmes comme iLocalize, Localise ... etc. L'ensemble de ces applications est basé sur ibtool (généralement).


     


    Quoi qu'il en soit, quand tu ajoutes une nouvelle langue, tu dois traduire (ou faire traduire) tous les textes que tu utilises. Les phrases dans les xib/nib comme les phrases dans les fichiers .strings. Tu ne peux pas y couper!


  • CéroceCéroce Membre, Modérateur


     Et comme il y a pas mal de .xib dans mon application, cette tâche risque d'être assez longue, et je me demandais si ça valait le coup de tout mettre dans les fichiers de localization (.string)...




    Sache qu'ibtool permet d'extraire les chaà®nes des xib, si besoin.

  • Merci, je vais essayer les outils dont vous m'avez parlé et on va espérer que cela puisse m'aider ! =)


Connectez-vous ou Inscrivez-vous pour répondre.