Warum stellt Chrome fälschlicherweise fest, dass die Seite in einer anderen Sprache vorliegt und bietet eine Übersetzung an?

173

Die neue automatische Übersetzungsfunktion von Google Chrome wird in einer unserer Anwendungen auf einer Seite angezeigt. Wenn wir zu dieser bestimmten Seite navigieren, teilt Chrome uns mit, dass die Seite auf Dänisch ist und bietet Übersetzungen an. Die Seite ist in Englisch, genau wie jede andere Seite in unserer App. Diese spezielle Seite ist eine interne Testseite mit einigen Dutzend Formularfeldern mit englischen Bezeichnungen. Ich habe keine Ahnung, warum Chrome diese Seite für dänisch hält.

Hat jemand Einblicke in die Funktionsweise dieser Spracherkennungsfunktion und wie ich feststellen kann, warum Chrome denkt, dass die Seite auf Dänisch ist?

Samuel Neff
quelle
1
Dies ist ein langer Schuss, aber hat die Seite nur sehr wenige Wörter? Probieren Sie einige andere Seiten mit wenigen Wörtern aus. Zeigen sie das gleiche Symptom? Ich vermute, dass es irgendwo auf dem Server eine Konfiguration gibt, die das Gebietsschema auf Dänisch setzt. Da die Seite nicht genügend Wörter enthält, um die Sprache zu bestimmen, entspricht Chrome einfach der Annahme des Servers.
Hasen
7
Norweigian Bokmal hier. Ich habe das Wort "Barf" auf einigen Knöpfen verwendet. Ich habe das Wort in "Bounce" geändert und jetzt hält Chrome es für niederländisch. Whaaaaaat?
Thomas-Peter

Antworten:

222

Update: laut Google

Wir verwenden keine Sprachinformationen auf Codeebene, wie z. B. lang-Attribute.

Sie empfehlen Ihnen, die Sprache Ihrer Website deutlich zu machen. Verwenden Sie Folgendes, was zu helfen scheint, obwohl Content-Languagees veraltet ist und Google sagt, dass sie es ignorierenlang

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

Wenn das nicht funktioniert, können Sie immer eine Menge Text (z. B. Ihre "Über" -Seite) in ein verstecktes Div einfügen. Das könnte auch bei der Suchmaschinenoptimierung helfen.

EDIT (und mehr Infos)

Das OP fragt nach Chrome, daher wird die Empfehlung von Google oben veröffentlicht. Es gibt im Allgemeinen drei Möglichkeiten, dies für andere Browser zu erreichen:

  1. W3C-Empfehlung : Verwenden Sie dieAttributelangund / oderxml:langim HTML-Tag:

    <html lang="en" xml:lang="en" xmlns= "http://www.w3.org/1999/xhtml">
  2. UPDATE: Früher war eine Google-Empfehlung jetzt veraltet, obwohl sie bei Chrome möglicherweise noch hilft. : meta http-equiv(wie oben beschrieben):

    <meta http-equiv="Content-Language" content="en">
  3. Verwenden Sie HTTP-Header (aufgrund von browserübergreifenden Erkennungstests nicht empfohlen ):

    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

Beenden Sie Chrome vollständig und starten Sie es neu, um sicherzustellen, dass die Änderung erkannt wird. Chrome nimmt das neue Meta-Tag beim Aktualisieren von Registerkarten nicht immer auf.

Kyle
quelle
1
Hier ist eine Beschreibung der Meta-Tags von Google: support.google.com/webmasters/bin/…
Joshua Davis
7
@Emile: Es funktioniert, wenn Sie die Seite in eine neue Registerkarte laden. Es funktioniert nicht, wenn Sie zum Aktualisieren nur F5 drücken.
Stefan Steiger
1
In HTML5 sollte es Inhalt statt Wert sein: <meta name = "google" content = "notranslate" />
r03
1
@ Jack, das ist weder die Empfehlung von Google noch vom W3C. Obwohl Ihre Herausforderung interessante Informationen ergab, die meine Antwort in Frage stellten: w3.org/International/tests/html-css/language-declarations/…
Kyle
2
Chrome scheint zu tun, was es will. Ich kann txt-Dateien in Englisch zurückgeben und angeben, dass es sich bei den HTTP-Antwortheadern um ASCII-Dateien handelt. Auch wenn die Daten nur ASCII-Zeichen enthalten, führt chrome eine Frequenzanalyse der Bytes durch und fordert den Benutzer auf, sich in einer anderen Sprache zu befinden.
Myforwik
3

Ich fügte hinzu lang="en" habe der Doctype-Deklaration Meta-Tags für Zeichensatz utf-8 und Content-Langauge im HTML-Header hinzugefügt, Zeichensatz als utf-8 und Content-Language wie enin den HTTP -Antwortheadern angegeben und Chrome nicht daran gehindert, my zu deklarieren Seite war in Portugiesisch. Das einzige, was das Problem behoben hat, war das Hinzufügen zum HTML-Header:

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

Aber jetzt habe ich Benutzer daran gehindert, meine Seite, die eindeutig auf Englisch ist, in ihre eigene Sprache zu übersetzen. Schlechte Arbeit, Chrome. Du kannst besser sein als das.

Chris Broski
quelle
2

Ohne zu wissen, was der Text war, wird die Ngram-Erkennung möglicherweise durch den Inhalt Ihrer Seite ausgetrickst.

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

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

NinjaCat
quelle
2
Die Frage ist jedoch, wie ich es debuggen oder weitere Informationen für Chrome erhalten kann, um genau herauszufinden, warum es die Wahl getroffen hat, die es getroffen hat.
Samuel Neff
2
Ohne den Text zu sehen, kann ich nicht sicher sagen. Einige Dinge, die Sie versuchen sollten: - Wenn Sie den Text kopieren und in translate.google.com einfügen und auf "Sprache erkennen" setzen, wird Ihnen dann mitgeteilt, dass es sich um Englisch handelt oder nicht? - Wenn es heißt, es ist dänisch oder was auch immer, dann würde ich anfangen, Sätze zu entfernen, bis Sie den Unruhestifter finden.
NinjaCat
Hallo Sam, genau das schlage ich vor. Es gibt keine Möglichkeit zu fragen, warum es die Entscheidung getroffen hat. Es gibt einen Satz oder eine Formulierung in Ihrem Text, die ihn austrickst (schließlich ist die maschinelle Übersetzung bei weitem nicht perfekt). Um dieses Ding zu debuggen, würde ich Satz für Satz herausnehmen, bis es die richtige Sprache erkennt.
NinjaCat
1

Chromium hält diese Seite für philippinisch: http://www.reyalvarado.com/portfolio/cuba/ Hinweise: Auf der Seite befindet sich so gut wie kein Text außer dem Namen des Besitzers und den Menüelementen. Menüelemente werden von FLIR dynamisch durch Bilder ersetzt.

Der HTML-Code deklariert die Seite als US-Englisch:

<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US"> 
James Revillini
quelle
1
Ja, ich habe das gleiche Problem. Nicht viel Text auf der Seite, und das <html> -Element hat lang = "en" und xml: lang = "en". Chrome ignoriert es!
Joshua Davis
1
@JoshuaDavis, ich habe alles über dem Lang-Attribut Meta-Tags versucht (außer dem nicht übersetzten). Was es für mich endgültig behoben hat, war das Hinzufügen des Attributs dir = "ltr".
Dan Morphis
1
dir = "ltr" ist ... Richtung, von links nach rechts, denke ich? Beeindruckend.
Joshua Davis
1

Geben Sie die Standardsprache für das Dokument an und verwenden Sie dann das Übersetzungsattribut und die Google- notranslateKlasse pro Element / Container wie folgt:

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

Erläuterung:

Die akzeptierte Antwort stellt eine pauschale Lösung dar, behandelt jedoch nicht die Angabe der Sprache pro Element, wodurch der Fehler behoben und sichergestellt werden kann, dass Ihre Seite übersetzbar bleibt .

Warum ist das besser? Dies wird mit der Internationalisierung von Google zusammenarbeiten und diese nicht ausschalten. Zurück zum OP:

Warum stellt Chrome fälschlicherweise fest, dass die Seite in einer anderen Sprache vorliegt und bietet eine Übersetzung an?

Antwort : Google versucht, Ihnen bei der Internationalisierung zu helfen, aber wir müssen verstehen, warum dies fehlschlägt. Aufbauend auf der Antwort von NinjaCat gehen wir davon aus, dass Google die Sprache Ihrer Website mithilfe eines N-Gramm-Algorithmus liest und vorhersagt. Daher können wir nicht genau sagen, warum Google Ihre Seite übersetzen möchte. wir können nur annehmen, dass:

  1. Auf Ihrer Seite befinden sich Wörter, die zu einer anderen Sprache gehören.
  2. Durch Markieren des enthaltenen Elements als translate="no"und lang="en"(oder Entfernen dieser Wörter) kann Google die Sprache Ihrer Seite korrekt vorhersagen.

Leider wissen die meisten Leute, die diesen Beitrag erreichen, nicht, welche Wörter die Probleme verursachen. Verwenden Sie die in Chrome integrierte Funktion "In Englisch übersetzen" (im Kontextmenü mit der rechten Maustaste), um zu sehen, was übersetzt wird. Möglicherweise werden unerwartete Übersetzungen wie die folgenden angezeigt :

Geben Sie hier die Bildbeschreibung ein

Aktualisieren Sie also Ihr HTML mit den entsprechenden Übersetzungs-Tags, bis die Google-Übersetzung Ihrer Seite nichts mehr ändert. Dann sollten wir erwarten, dass das Popup für zukünftige Besucher nicht mehr angezeigt wird.

Wird es nicht viel Arbeit sein, all diese zusätzlichen Tags hinzuzufügen? Ja, sehr wahrscheinlich. Wenn Sie Wordpress oder ein anderes Content Management System verwenden, lesen Sie in der Dokumentation nach, wie Sie Ihren Code schnell aktualisieren können!

Mattavatar
quelle
Das funktioniert bei mir, die Meta-Tags erlaubten immer noch das Übersetzungs-Popup.
Ryan
0

Versuchen Sie, die Eigenschaft xml:lang=""in das einzuschließen <html>, wenn die anderen Lösungen nicht funktionieren:

<html class="no-js" lang="pt-BR" dir="ltr" xml:lang="pt-BR">
Alan
quelle
1
Dieser Ansatz hat bei mir nicht funktioniert. Chrome scheint lang = "..." und xml: lang = "..." zu ignorieren.
Joshua Davis
Dies führt dazu, dass Chrome verwirrt wird, weil es nicht weiß, welche Sprache die Seite ist, sodass keine Übersetzung angeboten wird.
Carter Medlin