web-dev-qa-db-fra.com

Pourquoi Chrome détermine-t-il que la page est dans une langue différente et propose de traduire?

La nouvelle fonctionnalité de traduction automatique de Google Chrome commence à apparaître sur une page de l'une de nos applications. Chaque fois que nous accédons à cette page, Chrome nous indique que la page est en danois et propose de le traduire. La page est en anglais, comme toutes les autres pages de notre application. Cette page en particulier est une page de test interne contenant quelques dizaines de champs de formulaire avec des étiquettes en anglais. Je ne sais pas pourquoi Chrome pense que cette page est en danois.

Quelqu'un a-t-il des idées sur le fonctionnement de cette fonctionnalité de détection de la langue et sur la manière dont je peux déterminer la cause qui fait que Chrome pense que la page est en danois?

152
Samuel Neff

Utilisez le suivant:

<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 de" par exemple) dans un div masqué. Cela pourrait aider avec le référencement aussi.

EDIT (et plus d'infos)

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

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

    <html lang="en" xml:lang="en" xmlns= "http://www.w3.org/1999/xhtml">
    
  2. recommandation Google: meta http-equiv (comme décrit ci-dessus):

    <meta http-equiv="Content-Language" content="en">
    
  3. Utilisez des en-têtes HTTP (non recommandé sur la base de tests de reconnaissance entre 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 Chrome complètement et redémarrez-le pour vous assurer que le changement est détecté. Chrome ne récupère pas toujours la nouvelle balise méta lors de l'actualisation de l'onglet.

204
Kyle

Chromium pense cette page 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 de menu. Les éléments de menu sont remplacés de manière dynamique par FLIR pour les images.

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

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

Sans connaître le texte, la détection de ngram est peut-être 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
NinjaCat

J'ai ajouté lang="en" à la déclaration du type de document, ajout de balises méta pour charset utf-8 et Content-Langauge dans l'en-tête HTML, spécifiant charset comme utf-8 et Content-Language comme en dans les en-têtes de réponse HTTP sans rien modifier arrêter Chrome de déclarer ma page en portugais. La seule chose qui a résolu le problème était de l'ajouter à l'en-tête HTML:

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

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

2
Chris Broski

Spécifiez la langue par défaut du document, puis utilisez le attribut de traduction et la classe notranslate de Google 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 globale, mais n'indique pas comment spécifier la langue par élément, ce qui peut corriger le bogue et garantir votre page reste traduisible .

Pourquoi est-ce mieux? Cela va coopérer avec l'internationalisation de Google par rapport à son arrêt. Renvoyant au PO:

Pourquoi Chrome détermine-t-il que la page est dans une langue différente et propose de traduire?

Answer: Google essaie de vous aider à internationaliser, mais nous devons comprendre pourquoi cela échoue. En nous basant sur la réponse NinjaCat , nous supposons que Google lit et prédit la langue de votre site Web en utilisant un algorithme N-gram - alors, nous ne peut pas dire exactement pourquoi Google veut traduire votre page; nous ne pouvons que supposer que:

  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 qui accèdent à ce poste ne sauront pas quels mots sont à l'origine du problème. Utilisez la fonction intégrée "Traduire en anglais" de Chrome (dans le menu contextuel du clic droit) pour voir ce qui est traduit, mais des traductions inattendues peuvent s'afficher comme ci-dessous :

enter image description here

Donc, mettez à jour votre html avec les balises de traduction appropriées jusqu'à ce que la traduction Google de votre page ne change rien - alors nous devrions nous attendre à ce que le popup disparaisse pour les futurs visiteurs.

Cela ne va-t-il pas être très difficile d'ajouter toutes ces balises supplémentaires? Oui, très probablement. Si vous utilisez Wordpress ou un autre système de gestion de contenu, consultez leur documentation pour trouver des moyens rapides de mettre à jour votre code!

1
mattavatar

Essayez d'inclure la propriété xml:lang="" au <html>, si les autres solutions ne fonctionnent pas:

<html class="no-js" lang="pt-BR" dir="ltr" xml:lang="pt-BR">
0
Alan