เหตุใด Chrome จึงระบุหน้าเว็บไม่ถูกต้องในภาษาอื่นและเสนอให้แปล


173

คุณลักษณะการแปลอัตโนมัติของ Google Chrome ใหม่จะเพิ่มขึ้นเป็นหนึ่งหน้าในแอปพลิเคชันของเรา เมื่อใดก็ตามที่เราไปยังหน้านี้ Chrome จะบอกเราว่าหน้านั้นอยู่ในเดนมาร์กและมีข้อเสนอให้แปล หน้าเป็นภาษาอังกฤษเหมือนกับทุก ๆ หน้าในแอพของเรา หน้านี้โดยเฉพาะคือหน้าทดสอบภายในที่มีเขตข้อมูลแบบฟอร์มไม่กี่โหลพร้อมป้ายชื่อภาษาอังกฤษ ฉันไม่รู้ว่าทำไม Chrome จึงคิดว่าหน้านี้เป็นภาษาเดนมาร์ก

ใครบ้างมีความเข้าใจอย่างถ่องแท้ว่าคุณลักษณะการตรวจจับภาษานี้ทำงานอย่างไรและฉันจะทราบได้อย่างไรว่าอะไรทำให้ Chrome คิดว่าหน้าเว็บเป็นภาษาเดนมาร์ก


1
นี่เป็นช็อตยาว แต่หน้ามีคำน้อยมาก? ลองหน้าอื่น ๆ ที่มีคำไม่กี่คำพวกเขาแสดงอาการแบบเดียวกันหรือไม่? ฉันเดาว่ามีการกำหนดค่าบางอย่างบนเซิร์ฟเวอร์ที่ตั้งค่าสถานที่เป็นเดนมาร์กและเนื่องจากมีคำไม่เพียงพอในหน้าเพื่อกำหนดภาษา Chrome จึงไปตามสมมติฐานของเซิร์ฟเวอร์
hasen


7
Norweigian Bokmal ที่นี่ ฉันใช้คำว่า 'Barf' กับปุ่มไม่กี่ปุ่ม ฉันเปลี่ยนคำว่า 'Bounce' และตอนนี้ Chrome คิดว่าเป็นภาษาดัตช์ Whaaaaaat?
มัส - ปีเตอร์

คำตอบ:


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

หากไม่ได้ผลคุณสามารถวางข้อความ (หน้า "เกี่ยวกับ" เป็นต้น) ไว้ใน div ที่ซ่อนอยู่ ที่อาจช่วยทำ SEO เช่นกัน

แก้ไข (และข้อมูลเพิ่มเติม)

OP กำลังถามเกี่ยวกับ 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/…
Joshua Davis

7
@Emile: ใช้งานได้หากคุณโหลดหน้าเว็บในแท็บใหม่ มันไม่ทำงานหากคุณเพียงแค่กด F5 เพื่อรีเฟรช
Stefan Steiger

1
ใน html5 ควรเป็นเนื้อหาแทนที่จะเป็นค่า: <meta name = "google" content = "notranslate" />
r03

1
@ แจ็คนั่นไม่ใช่คำแนะนำของ Google หรือ W3C แม้ว่าความท้าทายของคุณจะทำให้ข้อมูลที่น่าสนใจซึ่งเรียกคำตอบของฉันกลายเป็นคำถาม: w3.org/International/tests/html-css/language-declarations/ …
Kyle

2
Chrome ดูเหมือนจะทำทุกอย่างที่ต้องการ ฉันสามารถส่งคืนไฟล์ txt เป็นภาษาอังกฤษโดยระบุว่าเป็น ASCII ในส่วนหัวการตอบกลับ HTTP และแม้ว่าข้อมูลจะมีเฉพาะอักขระ ASCII เท่านั้น, โครเมี่ยมยังคงทำการวิเคราะห์ความถี่บนไบต์และแจ้งให้ผู้ใช้ทราบว่าเป็นภาษาอื่น
Myforwik

3

ฉันเพิ่มlang="en"การประกาศประเภท doctype เพิ่มเมตาแท็กสำหรับ charset utf-8 และเนื้อหา-Langauge ในส่วนหัว HTML, charset ที่ระบุเป็น 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 เพิกเฉย!
Joshua Davis

1
@JoshuaDavis ฉันลองทุกอย่างที่อยู่เหนือแอตทริบิวต์ lang, เมตาแท็ก (ยกเว้นข้อความที่แปล) ในที่สุดสิ่งที่แก้ไขให้ฉันคือการเพิ่มแอตทริบิวต์ dir = "ltr"
Dan Morphis

1
dir = "ltr" คือ ... ทิศทางจากซ้ายไปขวาฉันเดาใช่ไหม ว้าว.
Joshua Davis

1

ระบุภาษาเริ่มต้นสำหรับเอกสารจากนั้นใช้คุณลักษณะการแปลและnotranslateคลาสของ Google ต่อองค์ประกอบ / คอนเทนเนอร์เช่นเดียวกับใน:

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

คำอธิบาย:

คำตอบที่ยอมรับนำเสนอวิธีแก้ปัญหาแบบครอบคลุม แต่ไม่ได้ระบุวิธีระบุภาษาต่อองค์ประกอบซึ่งสามารถแก้ไขข้อบกพร่องและตรวจสอบให้แน่ใจว่าหน้าของคุณยังคงแปลได้

ทำไมสิ่งนี้ถึงดีกว่า สิ่งนี้จะร่วมมือกับการทำให้เป็นสากลของ Google เมื่อเทียบกับการปิด อ้างอิงกลับไปที่ OP:

เหตุใด Chrome จึงระบุหน้าเว็บไม่ถูกต้องในภาษาอื่นและเสนอให้แปล

คำตอบ : Google พยายามช่วยคุณให้เป็นสากล แต่เราต้องเข้าใจว่าทำไมสิ่งนี้ถึงล้มเหลว อาคารออกจากNinjaCat ของคำตอบที่เราคิดว่า Google อ่านและคาดการณ์ภาษาของเว็บไซต์ของคุณโดยใช้นั้นขั้นตอนวิธี N-กรัม - ดังนั้นเราไม่สามารถพูดได้ว่าทำไม Google ต้องการแปลหน้าเว็บของคุณ เราสามารถสันนิษฐานได้ว่า:

  1. มีคำในหน้าของคุณที่เป็นภาษาอื่น
  2. การทำเครื่องหมายองค์ประกอบที่มีเป็นtranslate="no"และlang="en"(หรือลบคำเหล่านี้) จะช่วยให้ Google สามารถทำนายภาษาของหน้าเว็บของคุณได้อย่างถูกต้อง

น่าเสียดายที่คนส่วนใหญ่ที่มาถึงโพสต์นี้จะไม่รู้ว่าคำใดเป็นสาเหตุของปัญหา ใช้คุณสมบัติ "แปลเป็นภาษาอังกฤษ" ของ Chrome (ในเมนูบริบทคลิกขวา) เพื่อดูสิ่งที่ได้รับการแปลคุณอาจเห็นคำแปลที่ไม่คาดคิดดังนี้ :

ป้อนคำอธิบายรูปภาพที่นี่

ดังนั้นอัปเดต html ของคุณด้วยแท็กการแปลที่เหมาะสมจนกว่า Google Translation ของหน้าเว็บของคุณจะไม่มีอะไรเปลี่ยนแปลงดังนั้นเราควรคาดหวังว่าป๊อปอัปจะหายไปสำหรับผู้เยี่ยมชมในอนาคต

จะเป็นงานที่ต้องเพิ่มแท็กพิเศษเหล่านี้หรือไม่ ใช่มีโอกาสมาก หากคุณใช้ Wordpress หรือระบบการจัดการเนื้อหาอื่นให้ดูในเอกสารประกอบของพวกเขาสำหรับวิธีที่รวดเร็วในการอัปเดตโค้ดของคุณ


สิ่งนี้ใช้งานได้สำหรับฉันเมตาแท็กยังคงอนุญาตให้ป๊อปอัปแปล
Ryan

0

ลองใส่คุณสมบัติ xml:lang=""ไปที่<html>หากวิธีการอื่นไม่ได้ผล:

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

1
วิธีนี้ไม่ได้ผลสำหรับฉัน Chrome ดูเหมือนจะละเว้น lang = "... " และ xml: lang = "... "
Joshua Davis

วิธีนี้จะทำให้ Chrome สับสนในการไม่รู้ว่าหน้าเว็บเป็นภาษาอะไรดังนั้นจึงไม่มีการแปล
Carter Medlin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.