Chapitre 3.5
Traduction
La traduction d'un site est l'un des principaux aspects de sa localisation.
Traducteurs, designers et développeurs travaillent
en étroite collaboration pour assurer la meilleure expérience à l'utilisateur.
Les traducteurs ne se contentent pas de traduire littéralement.
Avec leurs compétences en copywriting, ils adaptent les textes aux différentes cultures tout en maintenant
la cohérence de la marque. Tutoiement vs vouvoiement, communication fun vs sérieuse, vocabulaire technique vs
grand public...
Traduire, ce n'est pas seulement remplacer des mots, les règles typographiques changent selon la langue et la culture.
Quelques exemples :
- Les francophones sont parmi les seuls à ajouter des espaces devant les points d'interrogation, d'exclamation, le point-virgule et les doubles points.
- Les anglophones utilisent le tiret cadratin "—" pour diviser une phrase en deux. Les autres préfèrent la virgule, le point-virgule ou des parenthèses.
- Certains utilisent les guillemets à chevrons « », d'autres les guillemets droits "". Les Polonais et Tchèques utilisent les guillemets bas „. Les Chinois utilisent les chevrons arrondis「」.
- Certaines langues sont genrées, avec un masculin, un féminin et parfois un neutre. Met-on en place une forme d'écriture inclusive ? Si oui, par utilisation d'un point médian ? Par reformulation ? Les anglophones utilisent souvent le pronom "they" comme forme neutre lorsqu'on ne connaît pas ou qu'on ne souhaite pas préciser le genre.
- Les Japonais mettent les noms avant les prénoms. Les occidentaux font l'inverse.
- Les Français mettent les noms de famille tout en majuscule. C'est assez rare dans le reste du monde.
- Les Allemands mettent des majuscules aux noms communs, aux jours et aux mois. Les Néerlandais mettent tout en minuscule.
- Les adresses postales en russe ou arabe vont du plus grand au plus petit.
- Les hispanophones ajoutent les points d'exclamation et d'interrogation inversés en début de phrase : ¡ et ¿.
- Le japonais autorise la césure d'un mot entre chaque caractère. En arabe, la découpe doit respecter la forme des lettres.
À toutes ces règles culturelles s'ajoutent les contraintes techniques :
-
Certaines langues, typiquement le néerlandais, produisent des mots généralement longs. Elles peuvent casser le design du site : menus, boutons, formulaires, grilles...
Les designers et développeurs tentent de préserver une interface fonctionnelle : taille de texte adaptative, césures bien placées... Mais parfois rien n'y fait, ça ne passe pas. Les traducteurs commencent alors le travail de reformulation. - Certains sites forcent automatiquement le passage en majuscules sur les boutons ou les titres. Ça ne fonctionne pas dans toutes les langues. Par exemple en allemand, la lettre ß n'avait jusqu'en 2017 pas de majuscule directe, elle devait être remplacée par SS. Cette nouvelle lettre n'existe que dans les polices de caractères modernes.
- Certains outils ne supportent qu'une seule variable par phrase. Il faut découper et reformuler le texte en conséquence. Par exemple, il est impossible pour eux de traduire "1€ / mois pendant X mois, puis 2€ / mois pendant Y mois".
Les pluriels
Les pluriels sont un cauchemar à gérer automatiquement, chaque langage a ses propres règles :
-
Le russe a trois formes possibles.
Singulier si le nombre termine par 1... mais pas par 11.
Pluriel intermédiaire si le nombre termine par 2, 3 ou 4... mais pas par 12, 13 ou 14.
Pluriel complet pour les autres cas.
L'arabe a six formes. - Le slovène et l'irlandais ont un "duel", un pluriel associé au chiffre 2.
- Pas de pluriel direct en japonais, chinois et coréen, c'est soit implicite, soit marqué par un mot séparé.
- En hindi, la forme du pluriel dépend du genre.
-
En français courant, 0 appelle généralement un pluriel : zéro messages, zéro erreurs, zéro points.
Le singulier est utilisé dans des formules figées ou des contextes spécifiques : zéro faute, zéro degré.
Les outils de traduction ne savent pas distinguer ces cas. Ils peuvent donc produire des traductions contraires à l'usage réel si les règles ne sont pas personnalisées.
Les outils
Pour traduire leurs sites, les développeurs se reposent sur des outils intégrant cette gestion du pluriel.
Prenons l'exemple de gettext, l'un des outils les plus répandus car faisant partie de la suite de logiciels libres GNU.
Nous voulons traduire "Profitez de X mois gratuits" :
-
Les traducteurs analysent la phrase : il y a une variable.
Une variable ne nécessite pas toujours de gestion du pluriel, par exemple "X€ par mois". Quelle que soit la valeur, il n'y a rien à accorder.
Pour notre cas, il y a bien un pluriel à gérer pour "mois gratuits". -
Les traducteurs remplissent un fichier de configuration dédié pour chaque langue.
Ils attribuent une clé à cette traduction et ils indiquent toutes les variantes de pluriel.
Pour l'anglais britannique par exemple, ils vont ajouter dans le fichier en-GB.po :Pour l'arabe, ils doivent renseigner les 6 formes.msgid "FREE_TRIAL_PERIOD" msgid_plural "FREE_TRIAL_PERIOD" msgstr[0] "Enjoy %d free month" msgstr[1] "Enjoy %d free months" - Les développeurs vont compiler ces fichiers de configuration en un format optimisé pour être utilisé par la machine.
- Pour chaque utilisateur, après avoir détecté quelle locale utiliser, ils vont brancher l'outil sur le bon fichier compilé.
- Les développeurs peuvent finalement directement utiliser dans leur code des fonctionnalités de gettext. Ils lui demandent "donne-moi la phrase qui correspond à la clé FREE_TRIAL_PERIOD, sachant que le nombre est 3". Gettext va automatiquement renvoyer la phrase construite "Enjoy 3 free months".
Gettext fait partie de ces outils qui ne savent gérer qu'une seule variable.
Les outils plus modernes se basent sur le MessageFormat de l'International Components for Unicode (ICU).
MessageFormat est un format de message structuré qui permet de décrire dynamiquement le contenu d'une phrase selon des variables, des pluriels, des genres, etc.
ICU est une bibliothèque logicielle open source développée par l'Unicode Consortium, l'organisme qui définit les standards
: caractères, émojis, encodage...
Elle fait référence pour tout ce qui touche à la localisation.
Reformuler en fonction du pluriel
Prenons comme exemple la phrase "X jours gratuits puis Y mois à 10€ par mois." dans une traduction en français et analysons ses variables :
- X, sur lequel se base l'accord "jour gratuit" vs "jours gratuits".
-
Y, qui en français semble ne rien accorder car "mois" est un mot invariable.
Mais on se rend compte que si Y vaut 1, la phrase devient "puis 1 mois à 10€ par mois". C'est pas terrible ! On va vouloir reformuler le singulier en "puis 1 mois à 10€". - On va préférer variabiliser le prix aussi pour ne pas avoir à refaire toute la chaîne de traduction pour une autre offre.
Le MessageFormat correspondant ressemble à :
{nbDays, plural,
one {# jour gratuit}
other {# jours gratuits}
}
puis
{nbMonths, plural,
one {# mois à {price}}
other {# mois à {price} par mois}
}.
MessageFormat peut s'avérer complexe à lire, surtout dans les textes qui multiplient les variantes. Même s'il offre plus de fonctionnalités que gettext, il reste préférable de privilégier les phrases courtes avec une seule gestion de pluriel.
Le piège classique
Tu veux afficher sur ton site "X mois". Tu as déjà les traductions du mot "mois", au singulier et au pluriel. Pour éviter de refaire des traductions, tu te demandes si tu ne pourrais pas juste ajouter le nombre de mois devant.
- Français : 1 mois, 3 mois
- Anglais : 1 month, 3 months
- Espagnol : 1 mes, 3 meses
- Allemand : 1 Monat, 3 Monate
Ça semble fonctionner !
Mais, il ne faut jamais faire ça !
- C'est incompatible avec l'arabe et l'hébreu puisque ces langues se lisent de droite à gauche.
-
Chaque langue a ses particularités, c'est impossible de concaténer des bouts de phrases qui ont été traduits hors contexte.
Par exemple, le mot "mois" en japonais est 月. On pourrait s'attendre à ce que 3月 signifie "3 mois" mais ça représente en fait mars, le troisième mois.
La seule bonne façon de faire est d'injecter des variables dans des phrases complètes.
