[Résolu] Version multilingue

busterTheobusterTheo Membre
février 2016 modifié dans API UIKit #1

Bonjour à  tous,


je reviens après une longue absence, car j'étais plongé dans mon projet (com'Dab').


 


Et bonne année, au fait. Un peu en retard, je sais.


 


J'arrive à  la fin, enfin presque, j'en suis aux corrections du client.


 


Et maintenant, le client a décidé que le projet serait multilingue. Français Anglais, dans un premier temps, puis Italien, Espagnol, etc.


 


Je tente donc d'installer un process de multilinguisme.


J'ai fait pas mal de recherches.


J'ai bien lu cela :


Ce lien


Puis ce lien


Et des liens Apple, et plein d'autres.


Comme celui-ci en objC.


 


Mais moi je suis en swift.


 


Et cela semble un peu vieux.


Existe-t-il une technique plus récente ?


 


Perso, je pensais faire (un peu comme un blaireau, vu que le projet est presque prêt - Je sais que ça craint). Un fichier externe, genre p.list ou autre (pas string car Aligator a bien expliqué que c'était d'la daube).


 


Puis placer le choix de la langue dans les "Préférences", puis détecter la langue partout dans mes fichiers avec un "IF", et choisir je sais pas trop comment encore la bonne version.


 


Ou bien placer tout cela en BDD, enfin dans CoreData. Mais ça, c'est chaud, car dès qu'on rajoutera une nouvelle langue, faudra mettre à  jour la BDD de l'utilisateur qui téléchargera la nouvelle version, et je sais que c'est chaud de ne pas écraser ses données précédentes.


 


Donc, je me disais qu'un fichier externe était l'idéal, mais lequel ?


 


Voilà , je ne m'étend pas plus, car je vois bien que cela doit vous sembler confus.


 


D'autant plus que j'ai des textes dans mes fichiers et dans certains xibs.


 


Merci d'avance. :D


Réponses



  •  


    Puis placer le choix de la langue dans les "Préférences", puis détecter la langue partout dans mes fichiers avec un "IF", et choisir je sais pas trop comment encore la bonne version.




     


    Je n'ai pas encore traité de cas "multilingue" en swift, mais je pense que çà  doit être un peu comme en obj-C et donc, le choix de la langue est automatique en fonction de la langue du terminal. Tu choisis la langue par défaut dans les informations de ton projet ("Localization native development region"), en général, c'est conseillé de mettre l'anglais. Et si la langue du terminal ne fait pas partie des langues prévues dans ton application, elle apparaitra en anglais. 

  • Merci Alf1996 pour ta réponse, mais dans mon cas, il faut qu'une personne, par exemple, à  Venise, puisse changer la langue dans les prefs, et donc visionner la version anglaise ou espagnole ou etc quand il veut.


     


    En gros, il faut toutes les langues dans une seule appli.


     


    Donc, je pense que les langues doivent être dans un (ou plusieurs) fichier(s) externe(s), puis être chargées lorsque l'on change de langue (dans les prefs).


     


    C'est le désir du client, et c'est beaucoup mieux, je trouve, que de dépendre d'Apple, ou de techniques spécifiques en fonction du pays du visiteur.


     


    Si t'as une idée, je suis preneur. Merci


  • Bah de mon côté, j'utilisais NSLocalizedString en objective-C, mais dans ton cas, çà  ne fonctionnera pas effectivement.


    Dans ce cas, j'opterai pour des fichiers plist (un par langue), sous forme de dictionnaires (clé : texte à  traduire, valeur : traduction), que tu chargerais au début et à  chaque changement de langue (en espérant qu'ils ne soient pas trop lourd, mais çà  dépend du nombre de textes à  traduire).

  • Joanna CarterJoanna Carter Membre, Modérateur
    février 2016 modifié #5

    Il est bien possible à  changer le langage d'une appli mais, tout d'abord, il faut suivre les étapes pour internationaliser puis localiser l'appli.


    Je sais que c'est en anglais mais il y a un très bon tuto de chez Wenderlich http://www.raywenderlich.com/64401/internationalization-tutorial-for-ios-2014


     


    Tu profiteras bien de lire ce tuto   :)


     


    Avant de faire les traductions, il est impératif de préparer tous les fichiers ; code, XIB et storyboard.


     


    À part des fichiers strings pour le code, tu peux localiser les XIBs et les storyboards soient comme fichiers strings, soient comme XIBs et storyboards.


     


    Surtout, n'utilises pas les autres méthodes comme fichiers .plist, etc. Si tu utilises les outils recommandés de Xcode, tu peux profiter des fichiers .xliff https://developer.apple.com/library/ios/documentation/MacOSX/Conceptual/BPInternational/LocalizingYourApp/LocalizingYourApp.html#//apple_ref/doc/uid/10000171i-CH5-SW1


     


    Si tu suis cette méthode, tout ce qu'il faut que tu fasses, c'est à  exporter le projet pour localisation, puis importer les fichiers .xliff traduits, même si tu continues à  faire les modifications aux fichiers code ou UI.


  • CéroceCéroce Membre, Modérateur

    Si t'as une idée, je suis preneur. Merci

    On peut passer un flag au lancement de l'appli ou mettre une clef dans NSUserDefaults pour changer la langue de l'appli.
  • Joanna CarterJoanna Carter Membre, Modérateur
    Surtout, si tu n'as pas utilisé autolayout, c'est beaucoup plus difficile à  localiser.
  • busterTheobusterTheo Membre
    février 2016 modifié #8

    Merci beaucoup pour tout cela. Je m'en vais de ce pas chez Ray que j'adore.  o:)


  • Je me suis fait le tuto de Ray. C'est carrément fantastique.


    Génialissime. Les mots me manquent.


     


    Je vais opter pour cette technique.

    Cela correspond exactement à  ce que je recherchais.


    Bravo Joanna Carter pour ta culture.


     


     


    Hâte de m'y mettre pour de vrai. J'attend l'accord du devis.


     


      :p   :D


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