- Le paramétrage de la langue basé sur l’IP est une fonctionnalité fondée sur une hypothèse erronée
- Une adresse IP n’indique que la localisation et ne reflète pas la véritable préférence linguistique de l’utilisateur
- L’en-tête Accept-Language transmet avec précision les informations de préférence linguistique
- La langue de l’interface doit être définie à partir de l’en-tête du navigateur, un signal fiable
- Le principe le plus important est de respecter le choix linguistique de l’utilisateur et son expérience
Les limites du paramétrage de la langue déduit de l’IP
- Déterminer la langue d’usage à partir de la géolocalisation IP (GeoIP) repose encore sur une mauvaise hypothèse
- Une adresse IP ne fournit que des informations sur le lieu de la requête
- Elle ne permet pas de savoir quelle langue l’utilisateur préfère réellement ou comprend
- Cette méthode échoue souvent dans de nombreuses situations : VPN, voyage à l’étranger, résidence à l’étranger, pays à plusieurs langues officielles, etc.
- Ce n’est pas de l’intelligence, mais une source de désagrément et de confusion
Le décalage entre le nombre de langues officielles et la réalité
- Le pays et les informations IP ne se mappent pas à la langue en 1:1
- La Belgique en a 3, la Suisse 4, l’Inde 22, le Canada officiellement 2, et il s’agit en pratique d’un pays multilingue
- L’utilisateur peut résider dans ce pays, le visiter, ou simplement voir son trafic transiter par ce pays par hasard
- Imposer une seule langue d’interface à partir de la seule information sur le pays est une mauvaise pratique
Un exemple de mauvaise ingénierie
- S’appuyer sur des données erronées est une façon paresseuse de développer
- L’excuse « les grands sites web font pareil » n’est pas valable
- Si l’on ne peut pas le faire correctement, mieux vaut ne rien faire du tout
La valeur de l’en-tête Accept-Language
- Beaucoup d’utilisateurs vivent une expérience frustrante, par exemple lorsqu’un VPN force l’affichage d’une nouvelle langue
- Tous les navigateurs envoient un en-tête Accept-Language
- La préférence linguistique est définie selon les paramètres du système d’exploitation ou du navigateur de l’utilisateur
- L’utilisateur peut définir ou modifier directement cette valeur s’il le souhaite
- Exemple :
Accept-Language: en-US,en;q=0.9,de;q=0.8
- Cet en-tête est une information précise, gratuite et déjà intégrée, sans licence ni maintenance supplémentaire
La bonne manière de gérer la langue
- Comme la résolution d’écran ou les couleurs, la langue fait partie de l’environnement de l’utilisateur et doit être respectée
- On voit souvent des attributions absurdes : un utilisateur anglophone reçoit du français en France, un francophone à Bruxelles reçoit du néerlandais, un utilisateur sur un VPN à Hong Kong reçoit du chinois
- Cela entraîne des plaintes, une perte d’utilisateurs, et des tentatives de contournement après avoir fouillé l’interface
- Ces erreurs viennent du fait que la donnée IP, peu fiable, sert de base au choix de la langue
Solution concrète
- Lire Accept-Language
- Respecter cette valeur
- Permettre à l’utilisateur de changer lui-même la langue s’il le souhaite (les choix peuvent être enregistrés dans des cookies ou des paramètres d’URL)
- Utiliser les informations GeoIP uniquement pour la devise, la livraison et les aspects juridiques, et jamais pour la langue
Conclusion
- Si un logiciel est destiné à des humains, il ne faut pas deviner les préférences de l’utilisateur
- Il vaut mieux implémenter cela correctement, ou ne pas proposer du tout de fonctionnalité de choix de langue
1 commentaires
Avis Hacker News
Je trouve vraiment agaçant que des sites web ignorent l’en-tête Accept-Language. Les sites multilingues traduisent souvent même le bouton de changement de langue ou la liste des langues dans la langue actuelle, ce qui crée de la confusion ; dans ce domaine, je pense que Wikipédia est le modèle de référence. Wikipédia utilise une icône multilingue claire, une liste affichant le nom de chaque langue dans cette langue elle-même, et place les langues recommandées tout en haut. Il ne faut pas essayer de deviner la langue à l’avance. Faire comme Wikipédia aide beaucoup
Je déteste l’expérience où, après être arrivé sur la page voulue via un moteur de recherche, une fenêtre modale surgit pour me demander de choisir un pays, puis me redirige de force vers la page d’accueil du site local une fois le choix fait. Certains sites ont un bouton de fermeture (X), mais beaucoup n’en ont pas, ce qui est exaspérant
La liste des langues de Wikipédia ne semble pas forcément être en « ordre alphabétique ». Par exemple, il arrive que « 中文 » ou « Italiano » apparaissent parmi les langues recommandées, et le reste semble regroupé par zone géographique ou par système d’écriture. Même si ce n’est pas un véritable ordre alphabétique propre à chaque langue, Wikipédia gère bien la localisation. Le point important est que la notion d’ordre alphabétique « exact » devient compliquée quand on affiche le nom des langues dans leur propre langue
Wikipédia se souvient aussi de la langue choisie précédemment par l’utilisateur et l’affiche en haut. Une vraie expérience utilisateur
Il m’est déjà arrivé que l’application YouTube bascule soudainement en amharique. Le document d’assistance de Google indiquait où trouver le bouton English, mais pour moi qui ne connais pas l’amharique, cette aide était inutile. Même l’app de traduction de l’iPhone ne reconnaissait pas cette langue. S’il y avait simplement eu une icône multilingue universelle, j’aurais pu m’en sortir facilement
Ironiquement, même Universal Language Selector (U.S.L) s’appuie surtout sur les informations de pays déduites de l’IP de l’utilisateur pour recommander une langue. Cette méthode est souvent imprécise. D’après la FAQ de l’U.S.L, le système détermine d’abord le pays d’origine via l’IP, puis propose les principales langues candidates
Je n’aime pas les designs qui partent du principe que tout le monde n’utilise qu’une seule langue. Je peux lire confortablement dans quatre langues, et en général je préfère l’original à la traduction. Les prédictions de langue basées sur l’IP se trompent très souvent. J’ai déjà défini mes langues prises en charge, il faudrait donc respecter cela. Sur YouTube, le doublage IA automatique est activé par défaut, et je me retrouve sans cesse à l’écouter quelques secondes avant de revenir en arrière pour le désactiver. Cela ne prend pas longtemps, mais c’est vraiment pénible
Le doublage IA de YouTube est d’une qualité vraiment déplorable. Il m’a fallu cinq minutes pour comprendre à peine que la voix de la vidéo était censée correspondre à l’audio d’origine. Je déteste aussi que les titres des vidéos soient traduits. Je regarde une vidéo parlée en anglais, mais le titre est affiché dans une langue sortie de nulle part
Même si je configure Google en espagnol comme langue utilisée, YouTube traduit automatiquement tout en anglais. Je veux regarder du contenu original pour améliorer mon espagnol, mais YouTube me complique la tâche
La fonction de traduction automatique des titres de vidéos dans ma langue configurée sur YouTube est vraiment agaçante. Je comprends l’anglais, je n’ai donc pas besoin qu’on me le traduise
Si c’est une langue que je ne peux pas lire, il y a de fortes chances que la vidéo n’ait pas été faite pour moi au départ. La plupart des vidéos à portée internationale existent en anglais, donc si l’auteur l’avait voulu, il aurait probablement déjà fourni une traduction. Et un titre de vidéo manque de contexte, donc il se traduit mal de toute façon. Une fois, une vidéo portugaise intitulée « Vamos assistir uma conexão com o passado » était en réalité « Let’s play A Link to the Past ». Pour retrouver le titre anglais, il fallait retraduire et deviner. Cette fonction peut améliorer l’accessibilité, mais il faudrait au minimum pouvoir la désactiver
L’algorithme de YouTube pousse sans doute à utiliser ce genre de fonction, et peut-être même le récompense au nom de l’accessibilité des contenus, mais je préfère encore un titre anglais à une traduction automatique norvégienne disgracieuse. D’après mon expérience, quand je vois ce type de titre traduit automatiquement, je configure la plateforme pour ne plus me recommander cette chaîne
Mon ordinateur est allemand, mais réglé en anglais. Malgré cela, YouTube me fait écouter des voix traduites automatiquement, ou traduit bizarrement en anglais des vidéos et publicités allemandes. C’est souvent vraiment étrange et maladroit
Le problème ne concerne pas seulement les titres, mais aussi les pistes audio traduites. Quand un YouTubeur que je regarde souvent propose plusieurs pistes audio créées par des fans, je dois toujours remettre manuellement la version originale. Avec la traduction automatique, les jeux de mots et les nuances culturelles disparaissent souvent. Parfois, pour changer de piste linguistique, il faut même revenir au début de la vidéo, sans compter les conflits avec les extensions du navigateur. J’aimerais une interface où ces traductions ne sont pas activées par défaut, mais simplement disponibles via un bouton à activer librement
Maintenant, Google, Kagi et d’autres affichent aussi les résultats Reddit traduits. Je croyais trouver une réponse écrite dans ma langue, alors qu’il s’agissait en fait d’un message anglais traduit automatiquement
Par-dessus tout, il faut éviter d’appliquer la traduction automatique par défaut dans n’importe quelle situation. Il suffit de montrer clairement la liste des langues réellement traduites. Le bouton de traduction existe déjà dans le navigateur, donc l’utilisateur peut l’activer lui-même. L’anglais n’est ni ma première ni ma deuxième langue, mais je le lis très bien. Je veux éviter d’avoir à chercher un bouton au milieu d’un fatras d’auto-traductions juste pour retrouver l’anglais d’origine. Dans les autres paramètres régionaux, ce problème est plus rare ; au contraire, il semble particulièrement fréquent avec l’anglais. Si on veut utiliser la traduction automatique, il faudrait au moins vérifier le résultat en la lançant vraiment, pour voir si l’intention et le rendu coïncident
Reddit affiche du contenu traduit automatiquement en français, mais le style propre à Reddit est presque impossible à rendre correctement, même pour un vrai traducteur humain. Même sans connaître un mot d’anglais, ces versions automatiques ne valent pas la peine d’être lues. En plus, selon l’appareil ou l’application, il est difficile de trouver l’option pour voir l’original ou changer de langue, et Reddit pousse sans arrêt à installer son application
La traduction automatique est devenue assez bonne depuis quelques années, au point que même des natifs peuvent parfois ne pas se rendre compte qu’il s’agit d’une traduction
Ce qui me gêne le plus, c’est Google. Google connaît mon identité, sait si je voyage, et connaît ma langue préférée, l’anglais, mais continue malgré tout à afficher certaines pages dans la langue locale selon la région. J’aimerais que Google utilise davantage les informations qu’il collecte pour améliorer l’expérience utilisateur
Je suis utilisateur du catalan, mais l’espagnol n’a jamais été enregistré ni dans mon compte Google ni comme langue du système ou du navigateur, et pourtant on me l’impose constamment. Je vis aux États-Unis, et malgré cela, pour des recherches liées à la Catalogne, Google met en avant la Wikipédia en espagnol. Le comportement des moteurs de recherche sur ce point a toujours été mauvais. C’est un problème pour les personnes qui ne parlent pas espagnol, comme mes enfants, et aussi pour les régions catalanophones qui ne sont pas en Espagne. En particulier, Google Gemini considère le contenu en catalan comme dangereux et bloque la conversation. Google était autrefois vraiment attentif à la diversité, mais ce n’est plus le cas aujourd’hui
Récemment, Google a aussi cessé de traduire en anglais les avis locaux, par exemple sur Maps, et les affiche tels quels. Comme j’ai séjourné longtemps dans cet endroit, Google semble supposer que j’en connais la langue, alors qu’en réalité j’ai souvent besoin de l’anglais. C’est pareil dans les résultats de recherche. Utiliser la langue locale ne signifie pas forcément qu’on la maîtrise ; cela peut simplement vouloir dire qu’on cherche à se renseigner sur un contexte local. Google ne reflète pas correctement ce type d’usage
J’ai déjà eu ce débat directement avec un développeur Google. Il disait que Google, à cause d’un processus de double rendu, ne pouvait pas encore utiliser les informations utilisateur sur la page principale pour refléter les préférences linguistiques, mais je trouve que cela n’a pas de sens, puisque l’en-tête Accept-Language est déjà inclus dans la requête initiale
Google sait que je vis au Royaume-Uni et que je parle anglais. Pourtant, si je me connecte sur la télévision d’un hôtel en Espagne pour regarder une vidéo YouTube en anglais, il m’affiche des publicités en espagnol. J’ai l’impression qu’alors même que Google sait que je ne comprends pas cette langue, il le fait quand même pour satisfaire les annonceurs
Dès que j’utilise un nouvel appareil ou un nouveau navigateur, Google et ses services démarrent en hébreu. Je les remets systématiquement en anglais, mais il faut le refaire à chaque fois ; je peux lire l’hébreu, mais je préfère l’anglais comme langue plus universelle
Tous les navigateurs peuvent envoyer un en-tête Accept-Language pour indiquer les langues préférées de l’utilisateur, et si cela les intéresse, les utilisateurs peuvent aussi le modifier eux-mêmes. Mais Accept-Language ne résout pas tout, parce que la plupart des utilisateurs multilingues n’ont pas un ordre de préférence absolu ; leurs préférences dépendent du sujet. Par exemple, même si l’on maîtrise le français, on ne veut pas forcément la version française traduite d’un article d’actualité initialement en anglais. Les exploitants de sites n’ont pas besoin de créer de force des mécanismes compliqués ; il suffit de proposer une interface de changement de langue claire et rapide. Wikipédia fait cela très bien
En réalité, plus important que des mécanismes comme Accept-Language, c’est d’offrir de bonnes traductions complètes plutôt qu’une auto-traduction bancale. Pour l’interface et le contenu propre du site, il vaut mieux maintenir des traductions officielles ; pour le contenu généré par les utilisateurs, il faut l’afficher de manière optionnelle via le bouton de traduction du navigateur plutôt que par traduction automatique imposée. Je recommande de choisir une langue prioritaire avec Accept-Language, tout en fournissant en parallèle une option de changement de langue clairement visible. Sur Wikipédia, chaque version linguistique est un site distinct dont le contenu est réécrit séparément
Accept-Language permet aussi d’indiquer des pondérations par langue (
q value). Les sites devraient permettre à l’utilisateur de remplacer la langue demandée par le navigateur, et les navigateurs devraient eux aussi proposer des choix par site comme « valeur par défaut du site », « langue du système » ou « demander l’anglais ». L’idéal serait que les sites publient clairement la liste des langues prises en charge dans unmanifest.jsonou équivalent, et que la sélection de la langue soit gérée côté clientL’idée selon laquelle l’utilisateur règle Accept-Language sur la langue qui lui est en pratique la plus confortable reste fragile. Comme la plupart des sites gèrent mal Accept-Language, je doute que les utilisateurs fassent ce réglage avec une vraie stratégie en tête
Sur un site lié à l’administration, j’avais mis en place un système de sélection de langue par défaut via Accept-Language pour le support multilingue et l’accessibilité. Puis le PM a ignoré cette décision et a forcé EN comme seule valeur par défaut. L’auditeur accessibilité a exigé l’usage d’Accept-Language, et quand il a appris que l’implémentation avait été annulée, il l’a fortement reproché. Au final, ce genre d’absurdité m’a valu quelques semaines de contrat supplémentaires
J’aimerais aussi évoquer un problème de langue qui me concerne. J’ai un membre de ma famille qui ne parle que japonais sur Apple TV. Le pays de mon compte Apple est la Finlande. Je voulais regarder The Martian avec ma famille, mais comme seules les langues prises en charge dans le pays du compte sont proposées dans les pistes audio, il était impossible de choisir le doublage japonais. Et on ne peut pas changer le pays du compte si un abonnement Apple TV est actif. Résultat : on n’a pas pu regarder le film ensemble
J’imagine que c’est probablement lié à des questions de licence par région. Le doublage dans cette langue n’est sans doute pas autorisé pour un usage en Finlande
Netflix a eu un problème similaire. En Finlande, il fallait régler la langue du compte en anglais pour pouvoir regarder Kim's Convenience. Même si l’on utilise des sous-titres anglais, avec une interface en finnois, il était impossible d’accéder au contenu lui-même
J’ai déjà développé moi-même un système qui, à partir d’Accept-Language, fournissait la traduction la plus proche pour améliorer l’accessibilité de l’utilisateur. Par exemple, si le portugais du Portugal n’existait pas, on servait automatiquement le portugais brésilien. Techniquement, cela marchait bien et c’était agréable à implémenter, mais en pratique, la majorité des utilisateurs voulaient simplement l’anglais, quelle que soit la valeur d’Accept-Language, et l’option de changement de langue, placée dans le pied de page, n’était pas assez visible. Nous sommes donc passés à une approche où l’on demande directement à l’utilisateur, et la satisfaction a fortement augmenté
Demander directement signifie quoi exactement : qu’à chaque visite sur le site, en l’absence de cookie enregistré, une fenêtre de choix de langue s’affiche obligatoirement ? Ces pop-ups sont incohérentes, et on en vient presque à être reconnaissant quand il y a au moins un bouton X. Dans 95 cas sur 100, la langue du lien que j’ai cliqué me suffit déjà, et si besoin, il me suffit largement d’un sélecteur de langue en haut à droite ou dans le pied de page. Je préférerais éviter complètement les pop-ups et les modales
Il vaut mieux utiliser Accept-Language comme valeur par défaut tout en laissant un vrai choix à l’utilisateur. Je suis favorable à la suppression des icônes dans le design du changement de langue, mais je trouve dommage de regrouper plusieurs régions sous une seule langue
La plupart des utilisateurs laissent la langue par défaut de leur OS telle quelle, sans même savoir comment la changer, simplement parce qu’ils s’y sont habitués
À l’étranger, ce problème est vraiment absurde, et même dans son propre pays, les versions localisées de documentation de programmation, par exemple, diffèrent souvent du contenu original et sont de moins bonne qualité. Dans l’idéal, je veux voir la version anglaise d’origine. Dernièrement, les résultats de recherche commencent aussi à afficher de plus en plus de contenus traduits automatiquement. Reddit a récemment adopté cette approche lui aussi. Si j’utilise volontairement une requête de recherche dans une langue autre que l’anglais, c’est parce que je veux trouver des informations propres à cette langue
On dirait que l’équipe Reddit a conçu cette fonction en partant du principe que les utilisateurs ne comprennent que leur langue maternelle. Ce n’est pas nécessaire, puisque partout dans le monde, beaucoup de gens comprennent plusieurs langues
J’ai aussi déjà été furieux à cause du changement automatique de langue dans la documentation MongoDB. Dans les résultats de recherche, la page apparaît en anglais, mais dès qu’on l’ouvre, le JavaScript la bascule en portugais du Brésil. Puis, une fois le chargement complet terminé, elle revient en anglais, alors que l’URL reste toujours en
/pt-br/. En plus, la qualité de traduction sent clairement l’automatisation. Comme je suis utilisateur du portugais du Portugal, les nuances me dérangent encore davantage