Traduction d'une application ?

Bonjour tout le monde,


 


J'ai regardé un peu sur le net pour traduire une application en plusieurs langues mais j'ai l'impression qu'il me manque des trucs..


 


En gros, j'aimerai traduire mon application en anglais..


 


Dans mon projet, j'ai rajouté une langue (Localizations >> + >> French) car il y avait déjà  une langue dedans (English - Development language)


 


 


Sur mon main.storyboard, j'ai coché les 2 langues (English et French)


 


Mots clés:

Réponses

  • CéroceCéroce Membre, Modérateur
    octobre 2017 modifié #2
    Dans le fichier .strings, les clefs indiquent les noms des objets (bouton, label, etc.) à  traduire.
    Les clefs seront donc les mêmes dans les deux fichiers .strings.

    C'est à  l'ouverture du Storyboard que les textes sont remplacés par le contenu des fichiers .strings. Donc, ce qui s'affiche dans le storyboard n'apparaà®tra dans l'appli finale que pour les langues pour lesquelles il n'y a pas de fichiers .strings.
    (Peut-être peut on avoir un aperçu dans la Preview de Xcode, mais j'en doute).
    Aussi, je te conseille d'avoir ton storyboard en anglais, et de virer le .string English.

    Je te préviens dès maintenant: le gros souci du système des Base Localizations d'Apple, ce sont les mises à  jour du storyboard:
    Xcode n'est (n'était?) pas capable de mettre à  jour les fichiers .strings en leur ajoutant les nouvelles clefs et en retirant celles qui ne sont plus utiles. Et les clefs n'ont rien d'évident.

    Personnellement, j'utilise à  la place https://github.com/AliSoftware/OHAutoNIBi18n pour cette raison.
    Cherche, tu trouveras aussi des bidouilles.


  • C'est à  l'ouverture du Storyboard que les textes sont remplacés par le contenu des fichiers .strings. Donc, ce qui s'affiche dans le storyboard n'apparaà®tra dans l'appli finale que pour les langues pour lesquelles il n'y a pas de fichiers .strings.

    (Peut-être peut on avoir un aperçu dans la Preview de Xcode, mais j'en doute).

    Aussi, je te conseille d'avoir ton storyboard en anglais, et de virer le .string English.




     


    Ok.. donc dans tout ce qui s'affiche dans le storyboard, je met en anglais, comme ça, si le téléphone est dans n'importe quelle langue, l'anglais sera affiché.


    Si le téléphone est en français, alors il prend le .strings associé.


    J'ai bon ?


     


    ..et comment ça se passe pour les traductions directement dans le code ?


    Par exemple, je créer un bouton via le code pour le texte du bouton, comment je lui dis d'utiliser la traduction de la langue du téléphone ?

  • InsouInsou Membre
    octobre 2017 modifié #4

    Bon j'suis en train de faire quelques tests et ça ne fonctionne pas comme prévu..


    J'ai peut-être louper un truc..


     


    1/ J'ai supprimé l'anglais


     


    Voir screen :


  • CéroceCéroce Membre, Modérateur

    J'ai bon ?

    Oui.
     

    ..et comment ça se passe pour les traductions directement dans le code ?
    Par exemple, je créer un bouton via le code pour le texte du bouton, comment je lui dis d'utiliser la traduction de la langue du téléphone ?

    NSLocalizedString().
  • Bah du coup, ça ne fonctionne pas, j'ai expliqué le soucis et nos posts se sont croisés ^^

  • CéroceCéroce Membre, Modérateur
    octobre 2017 modifié #7

    J'ai loupé une étape ?

    Retire l'appli du simu et réinstalle-là . Le fichier .strings pour l'anglais doit toujours être présent.

    P.S.: Ne passe pas ton simu dans la langue à  tester. Fixe la variable dans le Scheme de Xcode:
    -AppleLanguages (fr)

  • Retire l'appli du simu et réinstalle-là . Le fichier .strings pour l'anglais doit toujours être présent.



     


    Je ne passe pas par le simulateur mais par un iPhone de dev..


    Je l'ai quand même désinstallé et réinstallé.. même soucis.. il prends la traduction dans le Main.strings (French) alors que le téléphone est en anglais :/


  • CéroceCéroce Membre, Modérateur
    octobre 2017 modifié #9
    Je te dit ça de mémoire, je me trompe sans doute, et il faudrait bien alors un fichier .strings par langue.
    Vérifie tout de même que CFBundleDevelopmentRegion = en dans ton Info.plist.
  • Ah bah ça fonctionne mieux comme ça en effet..


    Un fichier par langue et là  j'ai bien mes traductions qui changent.. nickel 


     


    J'vais continuer mes tests et je reviens si j'ai d'autres questions ^^


     


    Merci :)


  • CéroceCéroce Membre, Modérateur
    Utilise quand même AppleLanguages, même sur le device. ça fait gagner un temps fou.
  • MagiicMagiic Membre
    octobre 2017 modifié #12

    D'ailleurs, à  ce sujet il y a plein de nouveautés au sujet de l'internationalisation. Pour le debug, dans le Scheme, on peut activer des warnings quand un texte n'est pas traduit. Dans les xib et storyboards, il y a des warnings pour la localisation des textes qui pourraient être trop longs et donc des suggestion de contraintes sont délivrées.


     


    J'ai vu également que dans les Build Settings de nouvelles variables ont fait leur apparition à  ce sujet comme des warnings qui peuvent être activés pour signifier que des traductions n'ont pas de commentaires.


     


    Il y a aussi le stringsDict qui dispose de nouvelles clés pour gérer les textes variables par exemple, très utile je trouve.


  • Joanna CarterJoanna Carter Membre, Modérateur
    octobre 2017 modifié #13

    @Insou. C'est quoi ton marché ? Surtout français ou anglais ? Si français, c'est mieux de faire CFBundleDevelopmentRegion comme français et ajouter les traductions pour l'anglais et les autres langages.


     


    En plus, il faut faire attention avec l'anglais - le défaut est en_US mais tu pourrais spécifier en_GB à  sa place, ou tu peux avoir les deux pour que les mots comme : colour, grey, aluminium, laboratory (en_GB) ou color, gray, aluminum, labratory (en_US)) soient différenciés.




  • @Insou. C'est quoi ton marché ? Surtout français ou anglais ? Si français, c'est mieux de faire CFBundleDevelopmentRegion comme français et ajouter les traductions pour l'anglais et les autres langages.


     


    En plus, il faut faire attention avec l'anglais - le défaut est en_US mais tu pourrais spécifier en_GB à  sa place, ou tu peux avoir les deux pour que les mots comme : colour, grey, aluminium, laboratory (en_GB) ou color, gray, aluminum, labratory (en_US)) soient différenciés.




     


    Là  c'est surtout français mais l'anglais va vite arriver, puis d'autres langues vont suivre (polonais, russe, etc etc)


     


    Bien vu pour l'en_US et l'en_GB.. j'vais prendre ça en compte ^^

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