Chrome neden sayfanın farklı bir dilde olduğunu ve çeviri teklifini neden yanlış saptadı?


173

Yeni Google Chrome otomatik çeviri özelliği, uygulamalarımızdan birinde bir sayfada açılıyor. Bu belirli sayfaya her gittiğimizde, Chrome bize sayfanın Danca olduğunu ve çeviri teklif ettiğini söyler. Sayfa, tıpkı uygulamamızdaki diğer tüm sayfalar gibi İngilizce'dir. Bu belirli sayfa, İngilizce etiketli birkaç düzine form alanına sahip bir dahili test sayfasıdır. Chrome'un bu sayfanın neden Danimarka dili olduğunu düşündüğü hakkında hiçbir fikrim yok.

Bu dil algılama özelliğinin nasıl çalıştığına ve Chrome'un sayfanın Danca olduğunu düşünmesine neyin neden olduğunu nasıl belirleyebilirim?


1
Bu uzun bir çekim, ancak sayfada çok az kelime var mı? Birkaç kelimesi olan başka sayfaları deneyin, aynı belirtiyi gösteriyorlar mı? Tahminimce, sunucuda yerel ayarı Danimarkaca ayarlayan bir yapılandırma var ve sayfada dili belirlemek için yeterli kelime olmadığından, krom sadece sunucunun varsayımıyla devam ediyor.
hasen


7
Norveçli Bokmal burada. Birkaç düğme üzerinde 'Barf' kelimesini kullandım. Kelimeyi 'Bounce' olarak değiştirdim ve şimdi Chrome Hollandaca olduğunu düşünüyor. Whaaaaaat?
thomas-peter

Yanıtlar:


222

Güncelleme: Google'a göre

Dil öznitelikleri gibi kod düzeyinde bir dil bilgisi kullanmıyoruz.

Sitenizin dilinin ne olduğunu açıkça belirtmenizi önerirler. Kullanımdan Content-Languagekaldırılmış olmasına rağmen yardımcı görünen aşağıdakileri kullanın ve Google, görmezden geldiklerini söylüyorlang

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

Bu işe yaramazsa, gizli bir div'e her zaman bir grup metin (örneğin, "Hakkında" sayfanız) yerleştirebilirsiniz. Bu SEO ile de yardımcı olabilir.

DÜZENLE (ve daha fazla bilgi)

OP Chrome'u soruyor, bu nedenle Google'ın tavsiyesi yukarıda yayınlandı. Bunu diğer tarayıcılarda yapmanın genellikle üç yolu vardır:

  1. W3C önerisi :html etiketindekilangve / veyaxml:langniteliklerinikullanın:

    <html lang="en" xml:lang="en" xmlns= "http://www.w3.org/1999/xhtml">
  2. GÜNCELLEME: Önceden bir Google önerisi , Chrome'a ​​yardımcı olmasına rağmen spesifikasyonları artık kullanımdan kaldırmıştır . : meta http-equiv(yukarıda açıklandığı gibi):

    <meta http-equiv="Content-Language" content="en">
  3. HTTP üstbilgilerini kullanın ( tarayıcılar arası tanıma testlerine dayanarak önerilmez ):

    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'dan tamamen çıkın ve değişikliğin algılandığından emin olmak için yeniden başlatın. Chrome, sekme yenilemesinde her zaman yeni meta etiketi almaz.


1
Google'ın meta etiketlerinin açıklaması aşağıdadır: support.google.com/webmasters/bin/…
Joshua Davis

7
@Emile: Sayfayı yeni bir sekmeye yüklerseniz çalışır. Yenilemek için sadece F5 tuşuna basarsanız çalışmaz.
Stefan Steiger

1
Html5'de değer yerine içerik olmalıdır: <meta name = "google" content = "notranslate" />
r03

1
@Jack, bu ne Google'ın ne de W3C'nin önerisi. Karşılaştığınız zorluk, cevabımı soruya çağıran ilginç bir bilgi vermesine rağmen: w3.org/International/tests/html-css/language-declarations/…
Kyle

2
Chrome istediği her şeyi yapıyor gibi görünüyor. HTTP yanıt başlıklarında ASCII olduğunu belirterek İngilizce txt dosyalarını döndürebilirim ve veriler yalnızca ASCII karakterleri içeriyor olsa bile, krom hala baytlarda bir frekans analizi yapar ve kullanıcıya farklı bir dilde olduğunu sorar.
Myforwik

3

Ben ekledi lang="en", doctype bildiriye HTML başlığındaki charset utf-8 ve İçerik-langauge için eklenen meta etiketleri, utf-8 gibi Content-dil olarak belirtilen karakter kümesi enHTTP yanıt başlıklarında ve ilan Chrome'un durdurmak için hiçbir şey yapmadı benim sayfası Portekizce idi. Sorunu çözen tek şey bunu HTML başlığına eklemekti:

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

Ancak şimdi kullanıcıların açıkça İngilizce olan sayfamı kendi dillerine çevirmelerini engelledim. Kötü iş, Chrome. Bundan daha iyi olabilirsin.


2

Metnin ne olduğunu bilmeden, belki de ngram algılaması sayfanızın içeriği tarafından kandırılıyor.

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

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


2
Ancak soru şu, Chrome'da neden seçimi yaptığını tam olarak anlaması için nasıl hata ayıklayabilir veya daha fazla bilgi alabilirim?
Samuel Neff

2
Metni görmeden, kesin olarak söyleyemem. Denenecek bazı şeyler: - Metni kopyalayıp translate.google.com'a yapıştırır ve "Dili Algıla" olarak ayarlarsanız, size İngilizce olup olmadığını söyler mi? - Danca veya başka bir şey yazıyorsa, sorun çıkarana kadar cümleleri kaldırmaya başlarım.
NinjaCat

Merhaba Sam - Bu aslında önerdiğim şey. Neden karar verdiğini sormanın bir yolu yok. Metninizde aldatan bir cümle veya ifade var (tüm makine çevirisi neredeyse mükemmel değilse). Bu şeyi ayıklamak için doğru dili tanıyana kadar cümle cümle çıkaracağım.
NinjaCat

1

Chromium bu sayfayı Filipince dilinde düşünüyor: http://www.reyalvarado.com/portfolio/cuba/ Notlar: Sayfada sahibinin adı ve menü öğeleri dışında hemen hemen hiç metin yok. Menü öğeleri dinamik olarak FLIR tarafından resimlerle değiştirilir.

HTML, sayfayı ABD İngilizcesi olarak bildirir:

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

1
Evet, bende aynı sorun var. Sayfada çok fazla metin yok ve <html> öğesinde lang = "en" ve xml: lang = "en" var. Chrome bunu görmezden geliyor!
Joshua Davis

1
@JoshuaDavis, lang niteliğinin üzerindeki her şeyi denedim, meta etiketler (notlatelate biri hariç). Sonunda benim için ne düzeltti dir = "ltr" özniteliğini eklemek oldu.
Dan Morphis

1
dir = "ltr" ... yön, soldan sağa sanırım? Vay.
Joshua Davis

1

Doküman için varsayılan dili belirtin, ardından translate niteliğini ve notranslateöğe / kapsayıcı başına Google'ın sınıfını aşağıdaki gibi kullanın:

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

Açıklama:

Kabul edilen cevap, kapsamlı bir çözüm sunar, ancak hatayı düzeltebilecek ve sayfanızın çevrilebilir kalmasını sağlayabilecek, öğe başına dilin nasıl belirtileceğini ele almaz .

Bu neden daha iyi? Bu, Google'ın uluslararasılaştırılmasıyla işbirliği yapmasına karşın kapatmaya çalışacaktır. OP'ye atıfta bulunarak:

Chrome neden sayfanın farklı bir dilde olduğunu ve çeviri teklifini neden yanlış saptadı?

Yanıt : Google size uluslararasılaşma konusunda yardımcı olmaya çalışıyor, ancak bunun neden başarısız olduğunu anlamamız gerekiyor. Off Bina NinjaCat en cevabı, Google farz okur ve tahmin bir kullanarak web dili N-gram algoritması - bu yüzden, Google sayfanızı çevirmek istiyor tam olarak neden diyemeyiz; sadece şunu varsayabiliriz:

  1. Sayfanızda farklı bir dile ait kelimeler var.
  2. İçeren öğeyi translate="no"ve olarak işaretlemek lang="en"(veya bu kelimeleri kaldırmak) Google'ın sayfanızın dilini doğru bir şekilde tahmin etmesine yardımcı olur.

Ne yazık ki, bu gönderiye ulaşan çoğu insan hangi kelimelerin soruna neden olduğunu bilmiyor. Neyin çevrildiğini görmek için Chrome'un yerleşik "İngilizceye Çevir" özelliğini (Sağ Tıklama bağlam menüsünde) kullanın , aşağıdaki gibi beklenmedik çeviriler görebilirsiniz :

resim açıklamasını buraya girin

Bu nedenle, sayfanızın Google Çevirisi hiçbir şey değişinceye kadar html'nizi uygun çeviri etiketleriyle güncelleyin - o zaman pop-up'ın gelecek ziyaretçiler için gitmesini beklemeliyiz.

Tüm bu ekstra etiketleri eklemek çok fazla iş olmayacak mı? Evet, büyük olasılıkla. Wordpress veya başka bir İçerik Yönetim Sistemi kullanıyorsanız , kodunuzu güncellemenin hızlı yolları için belgelerine bakın!


Bu benim için çalışıyor, meta etiketler hala açılır pencereye izin veriyordu.
Ryan

0

Mülkiyet dahil deneyin xml:lang=""için <html>diğer çözümler işe yaramazsa,:

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

1
Bu yaklaşım benim için işe yaramadı. Chrome, lang = "..." ve xml: lang = "..." yoksayıyor gibi görünüyor.
Joshua Davis

Bu, kromun sayfanın hangi dili olduğunu bilmemesini sağlamaya çalışır, bu nedenle bir çeviri sunmaz.
Carter Medlin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.