Tại sao Chrome xác định không chính xác trang bằng ngôn ngữ khác và đề nghị dịch?


173

Tính năng tự động dịch Google Chrome mới đang bị vấp trên một trang trong một trong các ứng dụng của chúng tôi. Bất cứ khi nào chúng tôi điều hướng đến trang cụ thể này, Chrome sẽ cho chúng tôi biết trang đó bằng tiếng Đan Mạch và đề nghị dịch. Trang này bằng tiếng Anh, giống như mọi trang khác trong ứng dụng của chúng tôi. Trang đặc biệt này là một trang thử nghiệm nội bộ có vài chục trường mẫu có nhãn tiếng Anh. Tôi không biết tại sao Chrome nghĩ trang này là tiếng Đan Mạch.

Có ai có cái nhìn sâu sắc về cách tính năng phát hiện ngôn ngữ này hoạt động không và làm cách nào tôi có thể xác định điều gì khiến Chrome nghĩ trang này bằng tiếng Đan Mạch?


1
Đây là một cú sút xa, nhưng trang có rất ít từ? Hãy thử một số trang khác có ít từ, chúng có biểu hiện cùng một triệu chứng không? Tôi đoán là có một cấu hình ở đâu đó trên máy chủ đặt ngôn ngữ thành Đan Mạch và vì không có đủ từ trên trang để xác định ngôn ngữ, chrome chỉ đi với giả định của máy chủ.
hasen


7
Norweigian Bokmal ở đây. Tôi đã sử dụng từ 'Barf' trên một vài nút. Tôi đã đổi từ thành 'Bounce' và bây giờ Chrome nghĩ đó là tiếng Hà Lan. Ai vậy?
thomas-peter

Câu trả lời:


222

Cập nhật: theo Google

Chúng tôi không sử dụng bất kỳ thông tin ngôn ngữ cấp mã nào, chẳng hạn như thuộc tính lang.

Họ khuyên bạn nên làm rõ ngôn ngữ trang web của bạn là gì. Sử dụng những thứ sau đây có vẻ hữu ích mặc dù Content-Languagekhông được dùng nữa và Google cho biết họ bỏ qualang

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

Nếu điều đó không hiệu quả, bạn luôn có thể đặt một loạt văn bản (ví dụ: trang "Giới thiệu" của bạn) trong một div ẩn. Điều đó có thể giúp với SEO là tốt.

EDIT (và thêm thông tin)

OP đang hỏi về Chrome, vì vậy khuyến nghị của Google được đăng ở trên. Nhìn chung có ba cách để thực hiện điều này cho các trình duyệt khác:

  1. Đề xuất W3C : Sử dụng cácthuộc tínhlangvà / hoặcxml:langtrong thẻ html:

    <html lang="en" xml:lang="en" xmlns= "http://www.w3.org/1999/xhtml">
  2. CẬP NHẬT: trước đây, một đề xuất của Google hiện không được chấp nhận mặc dù nó vẫn có thể trợ giúp với Chrome. : meta http-equiv(như được mô tả ở trên):

    <meta http-equiv="Content-Language" content="en">
  3. Sử dụng các tiêu đề HTTP (không được đề xuất dựa trên các thử nghiệm nhận dạng trên nhiều trình duyệt ):

    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
    

Thoát hoàn toàn Chrome và khởi động lại nó để đảm bảo thay đổi được phát hiện. Chrome không phải lúc nào cũng chọn thẻ meta mới khi làm mới tab.


1
Dưới đây là mô tả về thẻ meta của Google: support.google.com/webmasters/bin/ Kẻ
Joshua Davis

7
@Emile: Nó hoạt động, nếu bạn tải trang trong một tab mới. Nó không hoạt động nếu bạn chỉ nhấn F5 để làm mới.
Stefan Steiger

1
Trong html5, nó phải là nội dung thay vì giá trị: <meta name = "google" content = "notransTable" />
r03

1
@Jack, đó không phải là đề xuất của Google hoặc W3C. Mặc dù thử thách của bạn đã đưa ra thông tin thú vị đã gọi câu trả lời của tôi thành câu hỏi: w3.org/I quốc / tests / html
Kyle

2
Chrome dường như làm bất cứ điều gì nó muốn. Tôi có thể trả về các tệp txt bằng tiếng Anh chỉ định rằng ASCII trong các tiêu đề phản hồi HTTP và ngay cả khi dữ liệu chỉ chứa các ký tự ASCII, chrome vẫn thực hiện phân tích tần số trên các byte và nhắc người dùng rằng nó ở ngôn ngữ khác.
Myforwik

3

Tôi đã thêm vào lang="en"khai báo doctype, thêm thẻ meta cho bộ ký tự utf-8 và Content-Langauge trong tiêu đề HTML, chỉ định bộ ký tự là utf-8 và Ngôn ngữ nội dung như entrong các tiêu đề phản hồi HTTP và không có gì ngăn Chrome khai báo trang bằng tiếng Bồ Đào Nha. Điều duy nhất khắc phục sự cố là thêm phần này vào tiêu đề HTML:

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

Nhưng bây giờ tôi đã ngăn người dùng dịch trang của tôi rõ ràng bằng tiếng Anh sang ngôn ngữ của họ. Công việc tồi tệ, Chrome. Bạn có thể tốt hơn thế này.


2

Không biết văn bản là gì, có lẽ phát hiện ngram đang bị lừa bởi nội dung trang của bạn.

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

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


2
Nhưng câu hỏi là, làm cách nào tôi có thể gỡ lỗi hoặc nhận thêm thông tin cho Chrome để tìm hiểu chính xác lý do tại sao nó đưa ra lựa chọn?
Samuel Neff

2
Không nhìn thấy văn bản, tôi không thể nói chắc chắn. Một số điều cần thử: - Nếu bạn sao chép văn bản và dán nó vào transl.google.com và đặt nó thành "Phát hiện ngôn ngữ", nó có cho bạn biết đó có phải là tiếng Anh hay không? - Nếu nó nói đó là tiếng Đan Mạch hoặc bất cứ điều gì, thì tôi sẽ bắt đầu xóa câu cho đến khi bạn tìm thấy kẻ gây rối.
NinjaCat

Xin chào Sam - Đó là hiệu quả những gì tôi đang đề xuất. Không có cách nào để hỏi nó tại sao nó lại đưa ra quyết định. Có một số câu hoặc từ ngữ trong văn bản của bạn đang đánh lừa nó (sau khi tất cả các bản dịch máy gần như không hoàn hảo). Để gỡ lỗi điều này, tôi sẽ lấy ra từng câu cho đến khi nó nhận ra ngôn ngữ chính xác.
NinjaCat

1

Chromium nghĩ rằng trang này bằng tiếng Philipin: http://www.reyalvarado.com/port portfolio / cuba / Ghi chú: Không có nhiều văn bản trên trang ngoại trừ tên của chủ sở hữu và các mục menu. Các mục menu được thay thế động bằng hình ảnh bằng FLIR.

HTML tuyên bố trang là tiếng Anh Mỹ:

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

1
Vâng, tôi có cùng một vấn đề. Không có nhiều văn bản trên trang và phần tử <html> có lang = "en" và xml: lang = "en". Chrome bỏ qua nó!
Joshua Davis

1
@JoshuaDavis, tôi đã thử mọi thứ ở trên thuộc tính lang, thẻ meta (ngoại trừ thẻ notransTable). Điều cuối cùng đã sửa nó cho tôi là thêm thuộc tính dir = "ltr".
Dan Morp4

1
Tôi đoán dir = "ltr" là ... hướng từ trái sang phải? Ồ
Joshua Davis

1

Chỉ định ngôn ngữ mặc định cho tài liệu, sau đó sử dụng thuộc tính dịchnotranslatelớp của Google cho mỗi phần tử / vùng chứa, như trong:

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

Giải trình:

Câu trả lời được chấp nhận trình bày một giải pháp chăn, nhưng không giải quyết cách chỉ định ngôn ngữ cho mỗi thành phần, có thể sửa lỗi và đảm bảo trang của bạn vẫn có thể dịch được .

Tại sao điều này tốt hơn? Điều này sẽ hợp tác với quốc tế hóa của Google thay vì tắt nó. Giới thiệu trở lại OP:

Tại sao Chrome xác định không chính xác trang bằng ngôn ngữ khác và đề nghị dịch?

Trả lời : Google đang cố gắng giúp bạn quốc tế hóa, nhưng chúng tôi cần hiểu lý do tại sao điều này thất bại. Dựa trên câu trả lời của NinjaCat , chúng tôi giả định rằng Google đọc và dự đoán ngôn ngữ của trang web của bạn bằng thuật toán N-gram - vì vậy, chúng tôi không thể nói chính xác lý do tại sao Google muốn dịch trang của bạn; chúng ta chỉ có thể giả định rằng:

  1. Có những từ trên trang của bạn thuộc về một ngôn ngữ khác.
  2. Đánh dấu thành phần có chứa là translate="no"lang="en"(hoặc xóa những từ này) sẽ giúp Google dự đoán chính xác ngôn ngữ của trang của bạn.

Thật không may, hầu hết mọi người tiếp cận bài đăng này sẽ không biết những từ nào gây rắc rối. Sử dụng tính năng "Dịch sang tiếng Anh" tích hợp của Chrome (trong menu ngữ cảnh Nhấp chuột phải) để xem những gì được dịch, bạn có thể thấy các bản dịch bất ngờ như sau :

nhập mô tả hình ảnh ở đây

Vì vậy, hãy cập nhật html của bạn với các thẻ dịch phù hợp cho đến khi Google Dịch trang của bạn không thay đổi gì - thì chúng ta nên hy vọng cửa sổ bật lên sẽ biến mất cho khách truy cập trong tương lai.

Sẽ không có nhiều việc phải thêm tất cả các thẻ phụ này phải không? Vâng, rất có thể. Nếu bạn đang sử dụng Wordpress hoặc Hệ thống quản lý nội dung khác thì hãy xem tài liệu của họ để biết cách nhanh chóng để cập nhật mã của bạn!


Điều này hoạt động với tôi, các thẻ meta vẫn cho phép cửa sổ bật lên dịch.
Ryan

0

Hãy thử bao gồm tài sản xml:lang=""cho <html>, nếu các giải pháp khác không hoạt động:

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

1
Cách tiếp cận này không hiệu quả với tôi. Chrome dường như bỏ qua lang = "..." và xml: lang = "...".
Joshua Davis

Điều này làm cho chrome khó hiểu khi không biết ngôn ngữ của trang là gì, vì vậy nó sẽ không cung cấp bản dịch.
Carter Medlin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.