[Résolu] Version multilingue
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 :
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.
Réponses
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).
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.
Merci beaucoup pour tout cela. Je m'en vais de ce pas chez Ray que j'adore.
Je me suis fait le tuto de Ray. C'est carrément fantastique.
Génialissime. Les mots me manquent.
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.