190 votes

Pourquoi Chrome détermine-t-il de manière incorrecte que la page est dans une autre langue et propose de la traduire ?

La nouvelle fonction de traduction automatique de Google Chrome se bloque sur une page de l'une de nos applications. Chaque fois que nous naviguons vers cette page particulière, Chrome nous indique que la page est en danois et nous propose de la traduire. La page est en anglais, comme toutes les autres pages de notre application. Cette page particulière est une page de test interne qui comporte quelques dizaines de champs de formulaire avec des libellés en anglais. Je ne sais pas pourquoi Chrome pense que cette page est en danois.

Quelqu'un a-t-il une idée du fonctionnement de cette fonction de détection de la langue et de la manière dont je peux déterminer ce qui fait que Chrome pense que la page est en danois ?

1 votes

Je ne sais pas encore, mais la page contient-elle très peu de mots ? Essayez d'autres pages qui ont peu de mots, présentent-elles le même symptôme ? Je pense qu'il y a une configuration quelque part sur le serveur qui définit la locale sur le danois, et parce qu'il n'y a pas assez de mots sur la page pour déterminer la langue, chrome se contente de suivre la supposition du serveur.

1 votes

7 votes

Bokmal norvégien ici. J'ai utilisé le mot "Barf" sur quelques boutons. J'ai changé le mot en "Bounce" et maintenant Chrome pense que c'est du néerlandais. Whaaaaaat ?

234voto

Emile Points 3847

Mise à jour : selon Google

Nous n'utilisons pas d'informations linguistiques au niveau du code, comme les attributs lang attributs.

Ils vous recommandent de faire en sorte que la langue de votre site soit évidente. Utilisez ce qui suit qui semble aider bien que Content-Language est déprécié et Google dit qu'il ignore lang

<html lang="en" xml:lang="en" xmlns= "http://www.w3.org/1999/xhtml">
<meta charset="UTF-8">
<meta name="google" content="notranslate">
<meta http-equiv="Content-Language" content="en">

Si cela ne fonctionne pas, vous pouvez toujours placer un tas de texte (votre page "À propos", par exemple) dans une division cachée. Cela peut également contribuer au référencement.

EDIT (et plus d'informations)

L'OP pose une question sur Chrome, donc La recommandation de Google est affiché ci-dessus. Il y a généralement trois façons d'accomplir cela pour les autres navigateurs :

  1. Recommandation du W3C : Utilisez le lang et/ou xml:lang dans la balise html :

    <html lang="en" xml:lang="en" xmlns= "http://www.w3.org/1999/xhtml">
  2. UPDATE : précédemment une recommandation de Google maintenant spécification dépréciée bien que cela puisse encore aider avec Chrome. : meta http-equiv (comme décrit ci-dessus) :

    <meta http-equiv="Content-Language" content="en">
  3. Utiliser les en-têtes HTTP (non recommandé d'après les données de l'enquête) tests de reconnaissance inter-navigateurs ) :

    HTTP/1.1 200 OK
    Date: Wed, 05 Nov 2003 10:46:04 GMT
    Content-Type: text/html; charset=iso-8859-1
    Content-Language: en

Quittez complètement Chrome et redémarrez-le pour vous assurer que la modification est détectée. Chrome ne détecte pas toujours la nouvelle métabalise lors de l'actualisation de l'onglet.

1 votes

Voici une description des métabalises de Google : support.google.fr/webmasters/bin/

0 votes

@RickM, non ? Ceci vient de Google : "Si vous êtes un webmaster et que vous préférez que votre page Web ne soit pas traduite par Google Translate, il suffit d'insérer la balise méta suivante dans votre fichier HTML : <meta name="google" value="notranslate">" Voir : support.google.com/translate

0 votes

Non, cela ne fonctionne pas sur les versions Windows et Mac de Chrome. Il semble qu'un certain nombre de personnes ne parviennent pas à le faire fonctionner... c'est un peu aléatoire !

8voto

protonfish Points 780

J'ai ajouté lang="en" à la déclaration doctype, ajouté des balises méta pour charset utf-8 et Content-Langauge dans l'en-tête HTML, spécifié charset comme utf-8 et Content-Language comme en dans les en-têtes de réponse HTTP et cela n'a rien fait pour empêcher Chrome de déclarer que ma page était en portugais. La seule chose qui a résolu le problème a été d'ajouter ceci à l'en-tête HTML :

<meta name="google" content="notranslate">

Mais maintenant, j'ai empêché les utilisateurs de traduire ma page qui est clairement en anglais dans leur propre langue. Mauvais travail, Chrome. Tu peux faire mieux que ça.

2voto

NinjaCat Points 3809

Sans savoir quel était le texte, peut-être que la détection ngram est trompée par le contenu de votre page.

http://googleresearch.blogspot.com/2006/08/all-our-n-gram-are-belong-to-you.html

https://en.wikipedia.org/wiki/N-gram

2 votes

Mais la question est la suivante : comment puis-je le déboguer ou obtenir plus d'informations pour Chrome afin de comprendre exactement pourquoi il a fait ce choix ?

2 votes

Sans voir le texte, je ne peux pas me prononcer avec certitude. Vous pouvez essayer : - Si vous copiez le texte et le collez dans translate.google.com, et que vous le réglez sur "Détecter la langue", est-ce qu'il vous dit que c'est de l'anglais ou non ? - S'il indique que c'est du danois ou autre, je commencerais à supprimer des phrases jusqu'à ce que vous trouviez le problème.

0 votes

Bonjour Sam - C'est en effet ce que je suggère. Il n'y a aucun moyen de lui demander pourquoi il a pris cette décision. Il y a une phrase ou une formulation dans votre texte qui le trompe (après tout, la traduction automatique est loin d'être parfaite). Afin de déboguer cette chose, je supprimerais phrase par phrase jusqu'à ce qu'elle reconnaisse la langue correcte.

1voto

mattavatar Points 439

Indiquez la langue par défaut du document, puis utilisez la fonction attribut de traduction et celui de Google notranslate classe par élément/conteneur, comme dans :

<html lang="en">
    ...
    <span><a href="#" translate="no" class="notranslate">English</a></span>

Explication :

La réponse acceptée présente une solution générale, mais n'aborde pas la manière de spécifier la langue par élément, ce qui peut corriger le bogue et assurer que votre la page reste traduisible .

Pourquoi est-ce mieux ? Cela va coopérer avec l'internationalisation de Google au lieu de la désactiver. Pour en revenir à l'OP :

Pourquoi Chrome détermine-t-il de manière incorrecte que la page est dans une autre langue et propose de la traduire ?

Réponse : : Google essaie de vous aider avec l'internationalisation, mais nous devons comprendre pourquoi cela échoue. En se basant sur NinjaCat's réponse, nous supposons que Google lit et prédit la langue de votre site web en utilisant un Algorithme N-gram -- Ainsi, nous ne pouvons pas dire exactement pourquoi Google veut traduire votre page ; nous ne pouvons que le supposer :

  1. Il y a des mots sur votre page qui appartiennent à une autre langue.
  2. Marquer l'élément contenant comme translate="no" et lang="en" (ou la suppression de ces mots) aidera Google à prédire correctement la langue de votre page.

Malheureusement, la plupart des personnes atteignant ce poste ne sauront pas quels sont les mots qui posent problème. Utilisez la fonction intégrée de Chrome "Traduire en anglais" (dans le menu contextuel du clic droit) pour voir ce qui est traduit, vous pouvez voir des traductions inattendues. comme les suivantes :

enter image description here

Mettez donc à jour votre code html avec les balises de traduction appropriées jusqu'à ce que la traduction Google de votre page ne change rien, puis nous devrions nous attendre à ce que la fenêtre contextuelle disparaisse pour les futurs visiteurs.

N'est-ce pas un travail considérable que d'ajouter toutes ces balises supplémentaires ? Oui, très probablement. Si vous utilisez Wordpress ou un autre système de gestion de contenu, regardez dans la section documentation pour des moyens rapides de mettre à jour votre code !

1voto

James Revillini Points 88

Chrome pense que cette page est en philippin : http://www.reyalvarado.com/portfolio/cuba/ Notes : Il n'y a pratiquement pas de texte sur la page, à l'exception du nom du propriétaire et des éléments du menu. Les éléments du menu sont remplacés dynamiquement par des images par FLIR.

Le HTML déclare que la page est en anglais américain :

<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">

1 votes

Oui, j'ai le même problème. Pas beaucoup de texte sur la page, et l'élément <html> a lang="en" et xml:lang="en". Chrome l'ignore !

1 votes

@JoshuaDavis, j'ai essayé tout ce qui précède l'attribut lang, les balises méta (sauf celle de notranslate). Ce qui a finalement réglé le problème pour moi a été d'ajouter l'attribut dir="ltr".

1 votes

Dir="ltr" est... la direction, de gauche à droite je suppose ? Wow.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X