Salut,
Très bonne initiative que ce tutoriel.
Étant suisse d’une part, et d’autre part développeur d’une plate-forme de jeux traduite en 6 langues, je ne peux que reconnaître, en tant que développeur les nombreuses difficultés citées que j’ai moi aussi rencontrées pour certaines, et en tant qu’utilisateur les problèmes récurrents constatés (et les frustrations associées) sur les sites et applications que j’utilise.
Alors bravo, je crois que tu fais un joli tour d’horizon; difficile cependant de dire s’il est vraiment complet, car moi-même je ne me suis pas encore frotté à tout (notamment aux aspects commerciaux).
Ca commence bien sur la deuxième page:
L’utilisateur peut toujours choisir la langue qu’il veut parmi toutes celles disponibles.
Rrrrh, je ne compte plus les sites qui font l’association hâtive et définitive suisse = allemand.
Même si statistiquement c’est correct 2 fois sur 3, c’est toujours frustrant.
Tiens d’ailleurs, ça me fait penser aux sites où, pour changer de langue, il faut d’abord cliquer sur la langue actuelle avant de pouvoir en sélectionner une autre.
Cliquer sur "Deutsch", voir le menu de sélection apparaître, puis cliquer sur "Français", c’est facile. Mais comment je suis censé trouvé le mot "Chinois" écrit dans cette langue ? Pas toujours évident.
Du coup j’étendrais cette recommandation: … et l’ensemble des langues disponibles est affiché en permanence.
Ou alors on affiche le code ISO "fr", "de", "it", "en", … que la plupart des gens comprennent aussi bien que le nom de leur langue.
Le nom d’une langue est toujours dans la langue elle-même, jamais dans celle affichée.
Ahahah, pour une fois je suis content d’avoir fait juste ! Mais bizarrement le jour où je me suis posé cette question, il me semblais que je faisais autrement que les autres.
On utilise jamais de drapeau pour représenter une langue.
Ah celui-là par contre, il faudra que je m’en souvienne. Cela dit, l’avantage des drapeaux, c’est qu’on a aucun doute de l’endroit où cliquer pour sélectionner la langue (cf. le premier point ci-dessus).
Je ne pense pas qu’un suisse, belge ou québécois se soit déjà senti offensé en voyant le drapeau français pour représenter la langue de Molière, mais effectivement, ne sait-on jamais…
On ne supprime jamais les didactiques. Il n’y a plus de raison de faire ça
Ah bon ? Et pour les pseudos je fais comment ?
- Je veux bannir un utilisateur chinois malveillant… je ne peux pas taper son pseudo sur mon clavier, et le temps que je le copie-colle il est déjà à des années-lumières.
- Comment je peux être sûr que cet utilisateur chinois n’a pas pris un pseudo insultant, raciste, etc. ?
Ah, et question, tu appelles ça les didactiques… il me semblais que ça s’appelait plutôt des diacritiques. Est-ce que c’est la même chose ou pas ?
Deuxième page.
Pas mal de s’attarder sur les noms, je n’y avais pas pensé.
En parlant des dates:
La norme officielle peut n’être utilisée par personne dans la vie courante (comme au Canada)
Comment ça ? Ça mérite un peu plus d’explications je trouve.
Ca vaudrait la peine, que tu donnes justement cette forme officielle que personne n’utilise, et celle effectivement utilisée dans la vie courante.
De retour sur les noms, une petite faute s’est glissée ici:
La seule solution simple et fiable est d’utiliser un seul champ pour tout ça, avec une invite qui dit quelque chose comme _« Comment souhaitez-vous que
l’on vous appele ? ».
Troisième page
Clés signifiantes, clés techniques et mutualisation, j’ajouterais un avantage pour les clés techniques par rapport aux clés signifiantes.
Dans le cas où on utilise des clés signifiantes, si on doit modifier un libellé dans la langue de base, on doit mettre à jour tous les fichiers de traduction. C’est pas toujours si évident qu’un simple rechercher/remplacer (p.ex. si les traductions sont en base de donnée, ou compilés dans un format binaire particulier).
Avis perso: c’est pour ça que j’aime pas gettext et tous les tutoriels qui le présentent…
En plus avec les clés techniques, quand les utilisateurs rapportent des bugs de traduction manquante, même les moins malins identifient rapidement et de manière très ciblée que quelque chose n’est pas normal.
Par contre c’est plus difficile à débugger quand on vous dit "je comprends pas, ça s’affiche à moitié en anglais".
Je termine avec une difficulté que tu n’as pas citée, les messages paramétrés, la conjugaison et les accords. Je vais prendre un exemple que j’ai expérimenté avec mon jeu et que je n’ai pas totalement résolu (faute de temps et surtout d’envie en fait…)
Admettons, dans mon jeu on ramasse des objets. Je démarre avec deux phrases associées à deux clés:
"Vous prenez {objet}"
et
"{joueur} prend {objet}"
La substitution de "{objet}" et de "{joueur}" se faisant au moment où les phrases doivent être affichées.
Sur le même principe, j’ajoute aussi la phrase:
"{objet} tombe au sol"
Il y a deux objets que je peux prendre dans mon jeu, "un livre" et "une boîte".
Et j’ai deux joueurs actuellement, "Alice" et "Bob".
En français, tout va bien, n’importe quelle substitution de "{joueur}" par "Alice" ou "Bob", et de "{objet}" par "une boîte" ou "un livre", avec n’importe quelle clé, donne toujours des phrases correctes.
En allemand… on a des cas. IL faut deux traductions différentes de "un livre" et de "une boîte", car on l’utilise au nominatif et à l’accusatif.
Le traducteur italien est venu me dire un jour que le verbe, ici "prendre", se conjugue différemment selon que l’objet désigné soit masculin ou féminin.
ON a deux formes, 3ème personne singulier + COD masculin, et 3ème personne singulier + COD féminin.
Un autre traducteur d’une autre langue (je ne me souviens plus laquelle) est aussi venu me dire que le verbe (toujours "prendre") a deux formes mais dans l’autre sens: 3ème personne singulier + sujet masculin, et 3ème personne singulier + sujet féminin.
Et là j’ai pris un exemple parmi les plus simples, il y en a des centaines comme ça.
Qu’est-ce qu’on fait ? ON factorise, quitte à avoir 600 phrases juste pour dire "X prend Y" parce qu’on a 100 objets différents dans le jeu et 3 genres possibles, ou alors on généralise et donc on accepte que dans certaines langues les traductions soient plus ou moins inexactes voire plutôt pourries ?
Dans un cas c’est fastidieux pour tout le monde, et dans l’autre ça fait naître des frustrations car on est obligé d’écrire des phrases incorrectes à cause de contraintes techniques.
Est-ce qu’on essaie d’adopter tant que possible un "langage neutre" pour se simplifier le travail, c’est-à-dire éviter à la fois le vouvoiement et le tutoiement (p.ex. "vous avez commis une erreur" => "une erreur s’est produite"), de même qu’ignorer les répétitions intempestives au lieu d’utiliser des pronoms (p.ex. "Bob prend la clé, mais il n’arrive pas à ouvrir la porte" => "Bob prend la clé. Bob n’arrive pas à ouvrir la porte").
Mais alors on perd un certain charme qui peut être important dans certains contextes… pour un site e-commerce je pense qu’on s’en fout royalement (encore que… les fautes n’inspirent pas confiance), mais dans un jeu sûrement beaucoup moins, si on veut que le joueur se sente touché/investi/impreigné par l’ambiance et le scénario.
Bref, développeur expert en i18n/l10n, c’est un job à part entière dans les grosses boîtes.
Avis perso: ça m’est moi-même déjà arrivé de mettre un jeu en VO parce que je trouvais la VF mal traduite; ET ça m’arrive souvent aussi dans des logiciels.
Voilà. Merci de m’avoir lu jusqu’au bout ! Et désolé d’avoir écrit un roman.