Чому Chrome неправильно визначає сторінку на іншій мові і пропонує перекласти?


173

Нова функція автоматичного перекладу Google Chrome вимикається на одній сторінці в одному з наших додатків. Щоразу, коли ми переходимо на цю конкретну сторінку, Chrome повідомляє нам, що вона є данською мовою та пропонує перекласти її. Сторінка англійською мовою, як і будь-яка інша сторінка у нашому додатку. Ця конкретна сторінка - це внутрішня сторінка тестування, яка містить кілька десятків полів форми з англійськими мітками. Я поняття не маю, чому Chrome вважає цю сторінку датською.

Хтось має уявлення про те, як працює ця функція виявлення мови та як я можу визначити, що змушує Chrome думати, що сторінка є датською?


1
Це тривалий знімок, але чи є на сторінці дуже мало слів? Спробуйте кілька інших сторінок, на яких є кілька слів, вони виявляють такий же симптом? Я здогадуюсь, що десь на сервері є конфігурація, яка встановлює мову на датській мові, і оскільки на сторінці не вистачає слів для визначення мови, chrome просто йде з припущенням сервера.
hasen


7
Норвегійський Бокмал тут. Я використав слово "Барф" на кількох кнопках. Я змінив слово на "Відмов", і тепер Chrome вважає, що це голландська мова. Whaaaaaat?
thomas-peter

Відповіді:


222

Оновлення: за даними Google

Ми не використовуємо жодної інформації мови на рівні коду, наприклад атрибутів lang.

Вони рекомендують вам зрозуміти, якою є мова вашого веб-сайту. Скористайтеся наступним, яке, здається, допомагає, хоча Content-Languageзастаріле, і Google каже, що вони ігнорують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">

Якщо це не спрацює, ви завжди можете розмістити купу тексту (наприклад, свою сторінку "Про") у прихованому знаку. Це може допомогти і з SEO.

EDIT (та додаткова інформація)

ОП запитує про Chrome, тому рекомендація Google розміщена вище. Зазвичай існує три способи досягти цього для інших браузерів:

  1. Рекомендація W3C : Використовуйтеlangта / абоxml:langатрибути в html-тезі:

    <html lang="en" xml:lang="en" xmlns= "http://www.w3.org/1999/xhtml">
  2. ОНОВЛЕННЯ: раніше рекомендація Google тепер застаріла, але вона все ще може допомогти Chrome. : 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 не завжди отримує новий метатег на оновлення вкладки.


1
Ось опис метатегів Google: support.google.com/webmasters/bin/…
Джошуа Девіс

7
@Emile: Це працює, якщо ви завантажите сторінку на новій вкладці. Це не працює, якщо ви просто натисніть F5, щоб оновити.
Стефан Штайгер

1
У html5 він повинен бути вмістом замість значення: <meta name = "google" content = "notranslate" />
r03

1
@Jack, це ні рекомендація Google, ні W3C. Хоча у вашому виклику з’явилася цікава інформація, яка поставила під сумнів мою відповідь: w3.org/International/tests/html-css/language-declarations/…
Кайл

2
Здається, Chrome робить все, що завгодно. Я можу повернути txt-файли англійською мовою, вказавши, що це ASCII в заголовках відповідей HTTP, і навіть якщо дані містять лише символи ASCII, chrome все ще робить аналіз частоти в байтах і спонукає користувача, що він є іншою мовою.
Myforwik

3

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

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

Але тепер я заважав користувачам перекладати мою сторінку, яка чітко англійською, на їхню власну мову. Погана робота, Chrome. Ти можеш бути кращим за це.


2

Не знаючи, що це за текст, можливо, виявлення ngram підманює вміст вашої сторінки.

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

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


2
Але питання полягає в тому, як я можу налагодити його або отримати більше інформації для Chrome, щоб зрозуміти, чому саме він зробив вибір, який він зробив?
Семюел Нефф

2
Не бачачи тексту, я не можу сказати точно. Деякі речі, які слід спробувати: - Якщо ви скопіюєте текст і вставите його на translate.google.com та встановите його на "Виявити мову", чи говорить вам, що це англійська мова чи ні? - Якщо в ній сказано, що це данська мова чи що завгодно, я б почав видаляти речення, поки не знайдеш проблему.
NinjaCat

Привіт Сем - це фактично те, що я пропоную. Немає можливості запитати, чому він прийняв рішення. У вашому тексті є якесь речення або формулювання, яке обмацує його (адже машинний переклад майже не ідеальний). Щоб налагодити цю річ, я виймав би речення за вироком, поки він не визнає правильну мову.
NinjaCat

1

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

HTML оголошує сторінку як американську англійську:

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

1
Так, у мене те саме питання. На сторінці не так багато тексту, а елемент <html> має lang = "en" та xml: lang = "en". Chrome ігнорує це!
Джошуа Девіс

1
@JoshuaDavis, я спробував усе, що було вище, атрибут lang, метатеги (крім неперекладеного). Що остаточно для мене виправило це додавання атрибуту dir = "ltr".
Ден Морфіс

1
dir = "ltr" - це ... напрям, ліворуч направо я здогадуюсь? Ого.
Джошуа Девіс

1

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

<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 (у контекстному меню правою кнопкою миші), щоб побачити, що буде перекладено, ви можете побачити несподівані переклади, наприклад :

введіть тут опис зображення

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

Не буде багато роботи над тим, щоб додати всі ці додаткові теги? Так, дуже ймовірно. Якщо ви використовуєте Wordpress або іншу систему управління контентом, то ознайомтеся з їхньою документацією для швидких способів оновлення коду!


Це працює для мене, мета-теги все ще дозволяли перекласти спливаюче вікно.
Райан

0

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

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

1
Такий підхід для мене не спрацював. Здається, Chrome ігнорує lang = "..." і xml: lang = "...".
Джошуа Девіс

Це працює на заплутанні хрому в тому, що він не знає, якою мовою є сторінка, тому переклад не пропонує.
Картер Медлін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.