Почему Chrome неправильно определяет страницу на другом языке и предлагает перевести?

Новая функция автоматического перевода Google Chrome отключается на одной странице в одном из наших приложений. Всякий раз, когда мы переходим на эту страницу, Chrome сообщает нам, что страница находится на датском языке и предлагает перевести. Страница на английском языке, как и любая другая страница нашего приложения. Эта страница представляет собой внутреннюю страницу тестирования, содержащую несколько десятков полей формы с английскими надписями. Я понятия не имею, почему Chrome считает эту страницу датской.

Кто-нибудь знает, как работает эта функция обнаружения языка, и как я могу определить, что заставляет Chrome думать, что страница находится на датском языке?

Ответ 1

Используйте следующее:

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

Если это не сработает, вы всегда можете поместить кучу текста (например, страницу "О нас") в скрытый блок. Это также может помочь с SEO.

РЕДАКТИРОВАТЬ (и больше информации)

ОП спрашивает о Chrome, поэтому рекомендации Google размещены выше. Как правило, есть три способа сделать это для других браузеров:

  1. Рекомендация W3C: используйте атрибуты lang и/или xml:lang в теге html:

    <html lang="en" xml:lang="en" xmlns= "http://www.w3.org/1999/xhtml">
    
  2. Рекомендация Google: meta http-equiv (как описано выше):

    <meta http-equiv="Content-Language" content="en">
    
  3. Используйте заголовки HTTP (не рекомендуется на основе тестов распознавания между браузерами):

    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
    

Полностью выйдите из Chrome и перезапустите его, чтобы убедиться, что изменение обнаружено. Chrome не всегда выбирает новый метатег при обновлении вкладки.

Ответ 2

Chromium считает эту страницу филиппинской: http://www.reyalvarado.com/portfolio/cuba/ Примечания. На странице практически нет текста, кроме имени владельца и пунктов меню. Элементы меню динамически заменяются изображениями с помощью FLIR.

HTML объявляет страницу как английский:

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

Ответ 4

Я добавил lang="en" в объявление doctype, добавил метатеги для charset utf-8 и Content-Langauge в заголовке HTML, указанную кодировку как utf-8 и Content-Language как en в заголовках ответа HTTP и он ничего не сделал, чтобы остановить Chrome от объявления моей страницы на португальском языке. Единственное, что исправляло проблему, заключалось в добавлении этого в заголовок HTML:

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

Но теперь я запретил пользователям переводить мою страницу, которая явно написана на английском языке на их родном языке. Бедная работа, Chrome. Вы можете быть лучше этого.

Ответ 5

Попробуйте включить свойство xml:lang="" в <html>, если другие решения не работают:

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

Ответ 6

Укажите язык по умолчанию для документа, затем используйте атрибут translate и Google notranslate class для элемента/контейнера, как notranslate в:

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

Объяснение:

Принятый ответ представляет собой общее решение, но не описывает, как указать язык для каждого элемента, что может исправить ошибку и обеспечить перевод вашей страницы.

Почему это лучше? Это будет взаимодействовать с интернационализацией Google, а не отключать ее Возвращаясь к ОП:

Почему Chrome неправильно определяет страницу на другом языке и предлагает перевод?

Ответ: Google пытается помочь вам с интернационализацией, но мы должны понять, почему это не удается. Опираясь на ответ NinjaCat, мы предполагаем, что Google читает и предсказывает язык вашего сайта, используя алгоритм N-граммы - поэтому мы не можем точно сказать, почему Google хочет перевести вашу страницу; мы можем только предположить, что:

  1. На вашей странице есть слова, которые принадлежат другому языку.
  2. Пометка содержащего элемента как translate="no" и lang="en" (или удаление этих слов) поможет Google правильно предсказать язык вашей страницы.

К сожалению, большинство людей, попадающих на этот пост, не знают, какие слова вызывают проблемы. Используйте встроенную в Chrome функцию "Перевести на английский" (в контекстном меню правого клика), чтобы увидеть, что переводится, вы можете увидеть неожиданные переводы, подобные следующим:

enter image description here

Поэтому обновляйте ваш html соответствующими тегами перевода, пока перевод Google вашей страницы ничего не изменит - тогда мы должны ожидать, что всплывающее окно исчезнет для будущих посетителей.

Не будет ли много работы по добавлению всех этих дополнительных тегов? Да, очень вероятно. Если вы используете Wordpress или другую систему управления контентом, посмотрите в их документации быстрые способы обновления вашего кода!

Ответ 7

У меня была такая же проблема с моим сайтом. По прихоти я выбрал "Nope", затем я получил страницу, в которой спрашивали, всегда ли я хотел, чтобы меня попросили перевести (я не помню точной формулировки). После того, как я выбрал "Нет", проблема закончилась.