Dlaczego Chrome błędnie określa, że strona jest w innym języku i oferuje tłumaczenie?

Nowa funkcja Google Chrome auto-tłumaczenie potknie się na jednej stronie w jednej z naszych aplikacji. Za każdym razem, gdy przechodzimy do tej konkretnej strony, Chrome informuje nas, że strona jest w języku duńskim i oferuje tłumaczenie. Strona jest w języku angielskim, podobnie jak każda inna strona w naszej aplikacji. Ta konkretna strona jest wewnętrzną stroną testową, która zawiera kilkadziesiąt pól formularza z angielskimi etykietami. Nie mam pojęcia, dlaczego Chrome uważa tę stronę za duńską.

Czy ktoś ma wgląd w to, jak działa ta funkcja wykrywania języka i jak Mogę określić, co powoduje, że Chrome myśli, że strona jest w języku duńskim?

Author: Samuel Neff, 2010-03-18

6 answers

Update: according to Google

Nie używamy żadnych informacji o języku na poziomie kodu, takich jak lang atrybuty.

Zalecają, abyś zrozumiał, jaki jest język twojej witryny. Użyj następujących, które wydają się pomóc, chociaż Content-Language jest przestarzałe, a Google twierdzi, że ignorują 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">

Jeśli to nie zadziała, zawsze możesz umieścić kilka tekstów (na przykład stronę" About") w ukrytym div. To może pomóc w SEO jako cóż.

EDIT (and more info)

OP pyta o Chrome, więc rekomendacja Google {[11] } jest zamieszczona powyżej. Istnieją ogólnie trzy sposoby, aby to osiągnąć dla innych przeglądarek:

  1. Rekomendacja W3C: użyj atrybutów lang i/lub xml:lang w znaczniku html:

    <html lang="en" xml:lang="en" xmlns= "http://www.w3.org/1999/xhtml">
    
  2. UPDATE: wcześniej rekomendacja Google teraz przestarzały spec chociaż może nadal pomóc z chromem. : meta http-equiv (jak opisano powyżej):

    <meta http-equiv="Content-Language" content="en">
    
  3. Użyj nagłówków HTTP (nie zaleca się na podstawie testów rozpoznawania między przeglądarkami):

    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
    

Wyjdź całkowicie z Chrome i uruchom go ponownie, aby upewnić się, że zmiana została wykryta. Chrome nie zawsze odbiera nowy znacznik meta przy odświeżaniu kart.

 225
Author: Kyle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-16 18:46:21

Dodałem lang="en" do deklaracji doctype, dodałem meta tagi dla charset utf-8 i Content-Langauge w nagłówku HTML, podałem charset jako utf-8 i Content-Language jako en w nagłówkach odpowiedzi HTTP i nic nie powstrzymało Chrome przed deklarowaniem mojej strony w języku portugalskim. Jedyną rzeczą, która naprawiła problem było dodanie tego do nagłówka HTML:

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

Ale teraz uniemożliwiłem użytkownikom tłumaczenie mojej strony, która jest wyraźnie w języku angielskim na ich własny język. Słaba praca, Chrome. Stać Cię na więcej.

 4
Author: Chris Broski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-20 15:55:56

Nie wiedząc, co to był tekst, być może wykrywanie ngram jest oszukane przez zawartość twojej strony.

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

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

 2
Author: NinjaCat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-02 00:16:44

Chromium myśli, że ta strona jest po Filipińsku: http://www.reyalvarado.com/portfolio/cuba / Uwagi: na stronie nie ma prawie żadnego tekstu, z wyjątkiem nazwy właściciela i pozycji menu. Pozycje Menu są dynamicznie zastępowane obrazami przez FLIR.

HTML deklaruje stronę jako US English:

<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US"> 
 1
Author: James Revillini,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-08 21:25:41

Określ domyślny język dokumentu, a następnie użyj atrybutu translate I klasy Google notranslate dla elementu / kontenera, jak w:

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

Explanation:

Przyjęta odpowiedź przedstawia rozwiązanie ogólne, ale nie określa, jak określić język dla każdego elementu, co może naprawić błąd i zapewnić, że strona pozostanie tłumaczalna .

Dlaczego tak jest lepiej? To będzie współpracować z internacjonalizacji Google kontra wyłączyć go. Odwołując się do OP:

Dlaczego Chrome błędnie określa, że strona jest w innym języku i oferuje tłumaczenie?

odpowiedź : Google próbuje pomóc ci w umiędzynarodowieniu, ale musimy zrozumieć, dlaczego to zawodzi. Bazując na odpowiedzi NinjaCat , Zakładamy, że Google czyta i przewiduje język twojej witryny za pomocą algorytmu N-gram - więc nie możemy dokładnie powiedzieć, dlaczego Google chce Przetłumacz swoją stronę; możemy tylko założyć, że:

  1. są słowa na twojej stronie, które należą do innego języka.
  2. oznaczenie elementu zawierającego jako translate="no" i lang="en" (lub usunięcie tych słów) pomoże Google prawidłowo przewidzieć język twojej strony.

Niestety, większość osób docierających do tego postu nie będzie wiedziała, jakie słowa powodują kłopoty. Użyj wbudowanej funkcji "Przetłumacz na angielski" Chrome (w menu kontekstowym kliknij prawym przyciskiem myszy), aby zobaczyć, co się stanie przetłumaczone, możesz zobaczyć nieoczekiwane tłumaczenia , takie jak następujące:

Tutaj wpisz opis obrazka

Tak więc, Zaktualizuj swój html z odpowiednimi znacznikami tłumaczenia, aż tłumaczenie Google Twojej strony nic nie zmieni - wtedy powinniśmy oczekiwać, że popup odejdzie dla przyszłych odwiedzających.

czy nie będzie dużo pracy, aby dodać te wszystkie dodatkowe tagi?Tak, bardzo prawdopodobne. Jeśli korzystasz z Wordpress lub innego systemu zarządzania treścią, zajrzyj do ich dokumentacja aby szybko zaktualizować swój kod!

 1
Author: mattavatar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-07-16 18:59:08

Spróbuj dołączyć Właściwość xml:lang="" do <html>, jeśli inne rozwiązania nie działają:

<html class="no-js" lang="pt-BR" dir="ltr" xml:lang="pt-BR">
 0
Author: Alan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-07 20:26:43