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:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
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.
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 ?
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 :
NSLocalizedString().
Bah du coup, ça ne fonctionne pas, j'ai expliqué le soucis et nos posts se sont croisés ^^
P.S.: Ne passe pas ton simu dans la langue à tester. Fixe la variable dans le Scheme de Xcode:
-AppleLanguages (fr)
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
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
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.
@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 ^^