Perché Chrome determina erroneamente che la pagina è in una lingua diversa e si offre di tradurre?


173

La nuova funzione di traduzione automatica di Google Chrome sta saltando su una pagina all'interno di una delle nostre applicazioni. Ogni volta che accediamo a questa particolare pagina, Chrome ci informa che la pagina è in danese e si offre di tradurre. La pagina è in inglese, proprio come ogni altra pagina nella nostra app. Questa particolare pagina è una pagina di test interna che presenta alcune dozzine di campi modulo con etichette inglesi. Non ho idea del perché Chrome pensi che questa pagina sia danese.

Qualcuno ha approfondimenti su come funziona questa funzione di rilevamento della lingua e su come posso determinare cosa sta facendo credere a Chrome che la pagina sia in danese?


1
Questo è un colpo lungo, ma la pagina ha pochissime parole? Prova alcune altre pagine che hanno poche parole, mostrano lo stesso sintomo? La mia ipotesi è che ci sia una configurazione da qualche parte sul server che imposta le impostazioni locali su danese e, poiché non ci sono abbastanza parole sulla pagina per determinare la lingua, Chrome segue semplicemente il presupposto del server.
hasen


7
Norweigian Bokmal qui. Ho usato la parola "Barf" su alcuni pulsanti. Ho cambiato la parola in "Bounce" e ora Chrome pensa che sia olandese. Whaaaaaat?
thomas-peter,

Risposte:


222

Aggiornamento: secondo Google

Non utilizziamo alcuna informazione linguistica a livello di codice come gli attributi lang.

Ti raccomandano di rendere evidente la lingua del tuo sito. Usa quanto segue che sembra aiutare sebbene Content-Languagesia deprecato e Google dice che ignoralang

<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">

Se il problema persiste, puoi sempre inserire un gruppo di testo (ad esempio la tua pagina "Informazioni") in un div nascosto. Ciò potrebbe aiutare anche con la SEO.

MODIFICA (e altre informazioni)

L'OP chiede informazioni su Chrome, quindi la raccomandazione di Google è pubblicata sopra. Esistono in genere tre modi per ottenere questo risultato per altri browser:

  1. Raccomandazione W3C : utilizzare gliattributilange / oxml:langnel tag html:

    <html lang="en" xml:lang="en" xmlns= "http://www.w3.org/1999/xhtml">
  2. AGGIORNAMENTO: in precedenza una raccomandazione di Google ora specifica obsoleta sebbene possa ancora aiutare con Chrome. : meta http-equiv(come descritto sopra):

    <meta http-equiv="Content-Language" content="en">
  3. Utilizza le intestazioni HTTP (non consigliato in base ai test di riconoscimento tra browser ):

    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

Chiudi Chrome completamente e riavvialo per assicurarti che la modifica sia rilevata. Chrome non preleva sempre il nuovo meta tag all'aggiornamento della scheda.


1
Ecco una descrizione dei meta tag di Google: support.google.com/webmasters/bin/…
Joshua Davis,

7
@Emile: funziona se carichi la pagina in una nuova scheda. Non funziona se si preme semplicemente F5 per aggiornare.
Stefan Steiger,

1
In html5 dovrebbe essere contenuto anziché valore: <meta name = "google" content = "notranslate" />
r03

1
@Jack, questa non è la raccomandazione di Google o del W3C. Sebbene la tua sfida abbia rivelato
Kyle

2
Chrome sembra fare tutto ciò che vuole. Posso restituire i file txt in inglese specificando che sono ASCII nelle intestazioni della risposta HTTP e anche se i dati contengono solo caratteri ASCII, Chrome esegue ancora un'analisi di frequenza sui byte e richiede all'utente di trovarsi in una lingua diversa.
Myforwik,

3

Ho aggiunto lang="en"alla dichiarazione doctype, aggiunto metatag per charset utf-8 e Content-Langauge nell'intestazione HTML, specificato charset come utf-8 e Content-Language come ennelle intestazioni di risposta HTTP e non ha fatto nulla per impedire a Chrome di dichiarare il mio la pagina era in portoghese. L'unica cosa che ha risolto il problema è stata l'aggiunta di questo all'intestazione HTML:

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

Ma ora ho impedito agli utenti di tradurre la mia pagina che è chiaramente in inglese nella loro lingua. Povero lavoro, Chrome. Puoi essere migliore di così.


2

Senza sapere quale fosse il testo, forse il rilevamento di ngram viene ingannato dal contenuto della tua pagina.

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

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


2
Ma la domanda è: come posso eseguire il debug o ottenere maggiori informazioni per Chrome per capire esattamente perché ha fatto la scelta che ha fatto?
Samuel Neff,

2
Senza vedere il testo, non posso dirlo con certezza. Alcune cose da provare: - Se copi il testo e lo incolli in translate.google.com e lo imposti su "Rileva lingua", ti dice che è inglese o no? - Se dice che è danese o altro, allora inizierei a rimuovere le frasi finché non trovi il piantagrane.
NinjaCat,

Ciao Sam - Questo è in effetti quello che sto suggerendo. Non c'è modo di chiedergli perché abbia preso la decisione. C'è qualche frase o frase nel tuo testo che lo sta ingannando (dopo tutto la traduzione automatica non è quasi perfetta). Per eseguire il debug di questa cosa, eliminerei frase per frase fino a quando non riconosce la lingua corretta.
NinjaCat,

1

Chromium pensa a questa pagina in filippino: http://www.reyalvarado.com/portfolio/cuba/ Note: non c'è praticamente alcun testo sulla pagina tranne il nome del proprietario e le voci di menu. Le voci di menu vengono sostituite dinamicamente con le immagini da FLIR.

L'HTML dichiara la pagina come inglese americano:

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

1
Sì, ho lo stesso problema. Non c'è molto testo nella pagina e l'elemento <html> ha lang = "en" e xml: lang = "en". Chrome lo ignora!
Joshua Davis,

1
@JoshuaDavis, ho provato tutto sopra l'attributo lang, i metatag (tranne quello notranslate). Ciò che finalmente risolto per me è stato l'aggiunta dell'attributo dir = "ltr".
Dan Morphis,

1
dir = "ltr" è ... direzione, da sinistra a destra credo? Wow.
Joshua Davis,

1

Specifica la lingua predefinita per il documento, quindi utilizza l' attributo translate e la notranslateclasse di Google per elemento / contenitore, come in:

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

Spiegazione:

La risposta accettata presenta una soluzione generale, ma non indica come specificare la lingua per elemento, il che può correggere l'errore e garantire che la tua pagina rimanga traducibile .

Perché è meglio? Questo collaborerà con l'internazionalizzazione di Google anziché spegnerlo. Riferendosi all'OP:

Perché Chrome determina erroneamente che la pagina è in una lingua diversa e si offre di tradurre?

Risposta : Google sta cercando di aiutarti con l'internazionalizzazione, ma dobbiamo capire perché questo non sta funzionando. Partendo dalla risposta di NinjaCat , supponiamo che Google legga e preveda la lingua del tuo sito Web utilizzando un algoritmo N-gram, quindi non possiamo dire esattamente perché Google vuole tradurre la tua pagina; possiamo solo supporre che:

  1. Ci sono parole sulla tua pagina che appartengono a una lingua diversa.
  2. Contrassegnare l'elemento contenente come translate="no"e lang="en"(o rimuovere queste parole) aiuterà Google a prevedere correttamente la lingua della tua pagina.

Sfortunatamente, la maggior parte delle persone che raggiungono questo post non sapranno quali parole stanno causando il problema. Utilizza la funzione "Traduci in inglese" integrata di Chrome (nel menu contestuale del tasto destro del mouse) per vedere cosa viene tradotto, potresti vedere traduzioni inattese come le seguenti :

inserisci qui la descrizione dell'immagine

Quindi, aggiorna il tuo html con i tag di traduzione appropriati fino a quando la traduzione di Google della tua pagina non cambia nulla, quindi dovremmo aspettarci che il popup scompaia per i futuri visitatori.

Non ci vorrà molto lavoro per aggiungere tutti questi tag extra? Sì, molto probabilmente. Se stai usando Wordpress o un altro sistema di gestione dei contenuti, cerca nella loro documentazione i modi rapidi per aggiornare il tuo codice!


Questo funziona per me, i meta tag consentivano ancora il popup di traduzione.
Ryan,

0

Prova a includere la proprietà xml:lang=""in <html>, se le altre soluzioni non funzionano:

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

1
Questo approccio non ha funzionato per me. Chrome sembra ignorare lang = "..." e xml: lang = "...".
Joshua Davis,

Questo aiuta a confondere Chrome nel non sapere in che lingua è la pagina, quindi non offrirà una traduzione.
Carter Medlin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.