web-dev-qa-db-fra.com

Pourquoi la langue de mon site Web serait-elle mal détectée et comment puis-je la définir dans la bonne langue?

Lorsque je visite mon site Web personnel sur mon téléphone (application Chrome), la langue de la page est détectée en tant que "portugais" et me demande si je souhaite la traduire. Cependant, la page est en anglais et j'ai défini la langue en anglais à l'aide de la balise:

<html lang="en">

Pourquoi ma page est-elle enregistrée en portugais et comment puis-je empêcher le déclenchement du bouton de traduction?

screenshot of page showing translate option

6
Niahc

Une chose à noter est que lorsque Google suggère "Cette page est en XYZ" et offre une traduction, cela ne signifie pas nécessairement que la page entière est dans cette langue. Même s'il pense qu'une très petite partie de la page est dans cette langue, il offre la même option pour traduire la page.

Dans votre exemple, si vous cliquez sur le lien traduire , la seule partie qui semble être "traduite" est la partie locale visible de l'adresse électronique. faith devient Faith.

Le contrôle de la source HTML de la page indique que cet élément est une entité HTML (fortement) encodée (l'attribut href est codé à la fois en% (URL encodée) et en HTML), probablement pour tenter d'arrêter les récupérateurs de courrier électronique:

<a href='mai&#108;&#116;o&#58;f%61i&#37;74%68%40fa%&#54;9th%6&#50;ot&#46;c%&#54;F&#37;6D'>fai&#116;h&#64;faith&#98;ot&#46;com</a>

Il se peut que cet encodage soit trompe Google translate? Ce n'est peut-être pas le voir comme une adresse email? Je remarque que dans Chrome, le %40 (codé @) n'est pas décodé lorsque Chrome indique la source du lien dans l'info-bulle lorsque l'utilisateur la survole. En outre, si l'utilisateur sélectionne "Copier l'adresse e-mail" dans le menu contextuel, l'adresse e-mail copiée correspond uniquement à l'entité HTML décodée. Elle n'est pas codée en% (c'est-à-dire. f%61i%74%68%40fa%69th%62ot.c%6F%6D) - il s'agit donc d'une possibilité d'utilisation problème.

Solution

Selon = Google Help Docs , vous pouvez essayer d'ajouter la balise suivante autour d'éléments spécifiques que vous ne souhaitez pas voir pris en compte pour la traduction:

<span class="notranslate">....</span>

Vous pourrez peut-être simplement ajouter class="notranslate" à l'ancre ou vous aurez peut-être besoin de l'intégralité de l'élément, mais je n'en suis pas sûr.

Il est également possible que vous puissiez utiliser l'attribut translate="no" de HTML5?

Référence:
https://stackoverflow.com/questions/9628507/how-can-i-tell-google-translate-to-not-translate-a-section-of-a-website

5
DocRoot

Essayez ceci dans la section <head>:

<meta charset="UTF-8">
<meta name="google" content="notranslate">
<meta http-equiv="Content-Language" content="en">
3
Steve

Je crois que en utilisant hreflang pour la langue résoudrait le problème. Ce que Steve suggère dans la réponse ci-dessus pourrait également fonctionner.

1
Prasad Ajinkya