Mengapa Chrome salah menentukan halaman dalam bahasa yang berbeda dan menawarkan untuk menerjemahkan?

173

Fitur terjemahan otomatis Google Chrome tersandung pada satu halaman dalam salah satu aplikasi kami. Setiap kali kami menavigasi ke halaman khusus ini, Chrome memberi tahu kami bahwa halaman tersebut dalam bahasa Denmark dan menawarkan untuk menerjemahkan. Halaman ini dalam bahasa Inggris, sama seperti setiap halaman lainnya di aplikasi kami. Halaman khusus ini adalah halaman pengujian internal yang memiliki beberapa lusin bidang formulir dengan label bahasa Inggris. Saya tidak tahu mengapa Chrome berpikir bahwa laman ini adalah bahasa Denmark.

Adakah yang memiliki wawasan tentang bagaimana fitur deteksi bahasa ini bekerja dan bagaimana saya dapat menentukan apa yang menyebabkan Chrome berpikir bahwa halaman tersebut dalam bahasa Denmark?

Samuel Neff
sumber
1
Ini sangat sulit, tetapi apakah halaman tersebut memiliki sedikit kata? Coba beberapa halaman lain yang memiliki sedikit kata, apakah mereka menunjukkan gejala yang sama? Dugaan saya adalah ada konfigurasi di suatu tempat di server yang menetapkan lokal menjadi Denmark, dan karena tidak ada cukup kata pada halaman untuk menentukan bahasa, chrome hanya sesuai dengan asumsi server.
Hasen
7
Norweigian Bokmal di sini. Saya menggunakan kata 'Barf' pada beberapa tombol. Saya mengubah kata menjadi 'Terpental' dan sekarang Chrome menganggap itu bahasa Belanda. Whaaaaaat?
thomas-peter

Jawaban:

222

Pembaruan: menurut Google

Kami tidak menggunakan informasi bahasa level kode seperti atribut lang.

Mereka menyarankan Anda memperjelas apa bahasa situs Anda. Gunakan yang berikut yang tampaknya membantu meskipun Content-Languagesudah usang dan Google mengatakan mereka mengabaikannyalang

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

Jika itu tidak berhasil, Anda selalu dapat menempatkan banyak teks (misalnya halaman "Tentang" Anda) di div tersembunyi. Itu mungkin membantu dengan SEO juga.

EDIT (dan info lainnya)

OP bertanya tentang Chrome, jadi rekomendasi Google diposting di atas. Pada umumnya ada tiga cara untuk mencapai ini untuk browser lain:

  1. Rekomendasi W3C : Gunakanatributlangdan / atauxml:langdalam tag html:

    <html lang="en" xml:lang="en" xmlns= "http://www.w3.org/1999/xhtml">
  2. UPDATE: sebelumnya rekomendasi Google sekarang sudah tidak berlaku lagi meskipun masih dapat membantu dengan Chrome. : meta http-equiv(seperti dijelaskan di atas):

    <meta http-equiv="Content-Language" content="en">
  3. Gunakan tajuk HTTP (tidak disarankan berdasarkan uji pengenalan lintas-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

Keluar dari Chrome sepenuhnya dan mulai ulang untuk memastikan perubahan terdeteksi. Chrome tidak selalu mengambil tag meta baru di penyegaran tab.

Kyle
sumber
1
Berikut adalah deskripsi tag meta Google: support.google.com/webmasters/bin/…
Joshua Davis
7
@ Emile: Berhasil, jika Anda memuat halaman di tab baru. Tidak berfungsi jika Anda cukup menekan F5 untuk menyegarkan.
Stefan Steiger
1
Dalam html5 seharusnya isinya bukan nilai: <meta name = "google" content = "notranslate" />
r03
1
@ Jack, itu bukan rekomendasi dari Google atau W3C. Meskipun tantangan Anda memang memunculkan info menarik yang menjadikan jawaban saya menjadi pertanyaan: w3.org/International/tests/html-css/language-declarations/…
Kyle
2
Chrome tampaknya melakukan apa pun yang diinginkannya. Saya dapat mengembalikan file txt dalam bahasa Inggris yang menyatakan bahwa ASCII di header respons HTTP, dan bahkan jika data hanya berisi karakter ASCII, chrome masih melakukan analisis frekuensi pada byte dan meminta pengguna bahwa itu dalam bahasa yang berbeda.
Myforwik
3

Saya menambahkan lang="en"ke deklarasi doctype, menambahkan meta tag untuk charset utf-8 dan Content-Langauge di header HTML, menetapkan charset sebagai utf-8 dan Content-Language seperti enpada header respons HTTP dan tidak melakukan apa pun untuk menghentikan Chrome dari menyatakan saya halaman dalam bahasa Portugis. Satu-satunya hal yang memperbaiki masalah adalah menambahkan ini ke header HTML:

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

Tetapi sekarang saya telah mencegah pengguna menerjemahkan halaman saya yang jelas dalam bahasa Inggris ke bahasa mereka sendiri. Pekerjaan yang buruk, Chrome. Anda bisa lebih baik dari ini.

Chris Broski
sumber
2

Tanpa mengetahui teksnya, mungkin deteksi ngram sedang diperdayai oleh konten halaman Anda.

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

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

NinjaCat
sumber
2
Tetapi pertanyaannya adalah, bagaimana saya bisa men-debug-nya atau mendapatkan lebih banyak info untuk Chrome untuk mencari tahu mengapa itu membuat pilihan?
Samuel Neff
2
Tanpa melihat teksnya, saya tidak bisa mengatakan dengan pasti. Beberapa hal untuk dicoba: - Jika Anda menyalin teks dan menempelkannya ke translate.google.com, dan atur ke "Detect Language", apakah itu memberitahu Anda bahwa itu bahasa Inggris atau bukan? - Jika dikatakan Denmark atau apa pun, maka saya akan mulai menghapus kalimat sampai Anda menemukan pengacau.
NinjaCat
Hai Sam - Itu berlaku apa yang saya sarankan. Tidak ada cara untuk bertanya mengapa itu membuat keputusan. Ada beberapa kalimat atau kata-kata dalam teks Anda yang menipu itu (setelah semua terjemahan mesin hampir tidak sempurna). Untuk men-debug hal ini saya akan mengeluarkan kalimat demi kalimat sampai mengenali bahasa yang benar.
NinjaCat
1

Chromium menganggap halaman ini dalam bahasa Filipina: http://www.reyalvarado.com/portfolio/cuba/ Catatan: Hampir tidak ada teks pada halaman kecuali nama pemilik dan item menu. Item menu diganti secara dinamis dengan gambar oleh FLIR.

HTML menyatakan halaman sebagai Bahasa Inggris AS:

<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US"> 
James Revillini
sumber
1
Ya, saya memiliki masalah yang sama. Tidak banyak teks pada halaman, dan elemen <html> memiliki lang = "en" dan xml: lang = "en". Chrome mengabaikannya!
Joshua Davis
1
@ JoshuaDavis, saya mencoba semuanya di atas atribut lang, meta tag (kecuali yang tidak diterjemahkan). Apa yang akhirnya diperbaiki untuk saya adalah menambahkan atribut dir = "ltr".
Dan Morphis
1
dir = "ltr" is ... direction, kiri ke kanan kurasa? Wow.
Joshua Davis
1

Tentukan bahasa default untuk dokumen, lalu gunakan atribut terjemahan dan notranslatekelas Google per elemen / wadah, seperti dalam:

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

Penjelasan:

Jawaban yang diterima menyajikan solusi menyeluruh, tetapi tidak membahas bagaimana menentukan bahasa per elemen, yang dapat memperbaiki bug dan memastikan halaman Anda tetap dapat diterjemahkan .

Kenapa ini lebih baik? Ini akan bekerja sama dengan internasionalisasi Google versus mematikannya. Mengacu kembali ke OP:

Mengapa Chrome salah menentukan halaman dalam bahasa yang berbeda dan menawarkan untuk menerjemahkan?

Jawaban : Google berusaha membantu Anda dalam internasionalisasi, tetapi kami perlu memahami mengapa ini gagal. Membangun dari jawaban NinjaCat , kami berasumsi bahwa Google membaca dan memprediksi bahasa situs web Anda menggunakan algoritma N-gram - jadi, kami tidak dapat mengatakan dengan tepat mengapa Google ingin menerjemahkan halaman Anda; kita hanya dapat berasumsi bahwa:

  1. Ada kata-kata di halaman Anda yang berasal dari bahasa yang berbeda.
  2. Menandai elemen yang mengandung sebagai translate="no"dan lang="en"(atau menghapus kata-kata ini) akan membantu Google untuk memprediksi bahasa halaman Anda dengan benar.

Sayangnya, sebagian besar orang yang mencapai pos ini tidak akan tahu kata-kata apa yang menyebabkan masalah. Gunakan fitur "Terjemahkan ke Bahasa Inggris" bawaan Chrome (di menu konteks Klik Kanan) untuk melihat apa yang diterjemahkan, Anda mungkin melihat terjemahan yang tidak terduga seperti berikut :

masukkan deskripsi gambar di sini

Jadi, perbarui html Anda dengan tag terjemahan yang sesuai sampai Google Terjemahan dari halaman Anda tidak mengubah apa pun - maka kami seharusnya mengharapkan popup pergi untuk pengunjung masa depan.

Bukankah akan banyak pekerjaan untuk menambahkan semua tag tambahan ini? Ya, sangat mungkin. Jika Anda menggunakan Wordpress atau Sistem Manajemen Konten lain, lihat dokumentasi mereka untuk mengetahui cara cepat memperbarui kode Anda!

matt[
sumber
Ini berfungsi untuk saya, tag meta masih memungkinkan munculan terjemahan.
Ryan
0

Coba sertakan properti xml:lang=""ke <html>, jika solusi lain tidak berhasil:

<html class="no-js" lang="pt-BR" dir="ltr" xml:lang="pt-BR">
Alan
sumber
1
Pendekatan ini tidak berhasil untuk saya. Chrome tampaknya mengabaikan lang = "..." dan xml: lang = "...".
Joshua Davis
Ini berfungsi untuk membingungkan chrome agar tidak tahu bahasa apa halaman itu, sehingga tidak akan menawarkan terjemahan.
Carter Medlin