Application multilingue

Bonjour, je crée actuellement une application sur iPad dont le but et d'avoir en temps réelle la production de plusieurs ateliers dans une usine. Et l'application doit être multilingue.


 


Donc dans ma première vue j'ai un menu déroulant avec au choix Français ou Anglais. Et après je doit faire toute les vues en double avec une en anglais et une en français ou est ce qu'il y a un autre procédé ? 


Réponses

  • CéroceCéroce Membre, Modérateur
    janvier 2016 modifié #2

    Non, on ne fait absolument pas ainsi. En gros, tout ce qui est traduit est stocké soit dans le storyboard/xib (avec un fichier par langue), soit dans des fichiers .strings qui font correspondre une traduction à  une clef.


    Voir le guide "Internationalization" pour les détails. Je te laisse digérer un peu la doc.


     


    Une information supplémentaire: la langue courante est normalement celle de l'iPad. ça convient à  ton problème si chaque iPad est attribué à  une seule personne. Si ce n'est pas le cas, sache qu'il est possible d'écrire une clef dans les NSUserDefaults pour supplanter par une autre langue; auquel cas tu pourrais donner le choix dans des préférences, dans l'application Réglages, par exemple.


  • Je ne sais pas comment ça marche sur iPad. Sur Mac on peut effectivement faire tous les xib en double, mais ce n'est pas le plus malin. Il faut parfois le faire quand même! Je ne sais pas comment c'est traité sur iPad, mais sur Mac il est connu qu'entre deux langues, les textes sont différents et les géométries (et autres caractéristiques) peuvent également être différentes. Dans ces cas là , les strings traduits sont insuffisants.


  • CéroceCéroce Membre, Modérateur


    les géométries (et autres caractéristiques) peuvent également être différentes.




    On règle ça avec l'autolayout. Sur Mac comme sur iOS, la tendance est de n'avoir le storyboard/les xibs qu'en une seule langue.

  • A l'examen de différentes applications Apple, j'ai constaté que ce n'est qu'une tendance. Il y a un dossier Base.lproj et un dossiers lproj par langue (normal). Dans les dossiers lproj il ne devrait y avoir que des fichiers strings, mais ce n'est pas toujours le cas. Par exemple, dans Aperçu.app, le MainMenu Anglais est dans Base.lproj, et chaque dossier .lproj contient son propre fichier MainMenu.nib (sauf le English.lprog bien sur). Tous les dossiers lproj contiennent également 5 autres nibs, même le English.lproj.


    Par contre, dans Calculette.app tout les nibs sont dans Base.lproj.

  • CéroceCéroce Membre, Modérateur

    Apple a mis des années à  comprendre le besoin parce qu'ils ont une armée de traducteurs et que ça ne les gênait pas de refaire tout traduire à  chaque version.


     


    Ce que tu constates, c'est qu'ils passent à  la Base.localization progressivement, ne le faisant que pour les nib des applis qui évoluent.


  • tabliertablier Membre
    janvier 2016 modifié #7

    Eh bien, wait and see ! Car je ne suis pas sur que ce soit si évident que cela.


    Quand à  tout retraduire à  chaque coup, il y a longtemps que certaines applications sont capables de reporter la traduction d'une application dans sa version suivante. Il ne reste plus alors qu'à  traduire les quelques strings supplémentaires.  Par exemple en utilisant ibtool, on fait ça facilement.


  • KolKol Membre
    février 2016 modifié #8

    J'ai utilisé le système de clés avec un fichier Main.Strings (English) et un autre Main.Strings (French) comme Céroce la précisé et ça marche super bien. Merci.


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