新的谷歌Chrome自动翻译功能是绊倒在我们的应用程序中的一个页面。当我们导航到这个特定的页面时,Chrome会告诉我们这个页面是丹麦语的,并提供翻译。这个页面是英文的,就像我们应用程序中的其他页面一样。这个特定的页面是一个内部测试页面,有几十个带英文标签的表单字段。我不知道为什么Chrome浏览器认为这个页面是丹麦语。

有人有洞察这个语言检测功能是如何工作的,我如何可以确定是什么原因导致Chrome认为页面是丹麦语?


当前回答

如果其他解决方案不起作用,尝试在<html>中包含属性xml:lang="":

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

其他回答

铬认为这个页面在菲律宾:http://www.reyalvarado.com/portfolio/cuba/ 注意:除了所有者的名字和菜单项之外,页面上几乎没有任何文本。菜单项由FLIR动态替换为图像。

HTML声明页面为美式英语:

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

更新:根据谷歌

我们不使用任何代码级语言信息,比如lang 属性。

他们建议你明确网站的语言是什么。 尽管Content-Language被弃用,谷歌说他们忽略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,所以谷歌的推荐贴在上面。对于其他浏览器,通常有三种方法来实现这一点:

W3C recommendation: Use the lang and/or xml:lang attributes in the html tag: <html lang="en" xml:lang="en" xmlns= "http://www.w3.org/1999/xhtml"> UPDATE: previously a Google recommendation now deprecated spec although it may still help with Chrome. : meta http-equiv (as described above): <meta http-equiv="Content-Language" content="en"> Use HTTP headers (not recommended based on cross-browser recognition tests): 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并不总是在标签刷新时选择新的元标签。

我添加了lang="en"到doctype声明,在HTML报头中添加了字符集utf-8和Content-Language的元标记,在HTTP响应报头中指定字符集为utf-8和Content-Language为en,它没有阻止Chrome声明我的页面是葡萄牙语。唯一能解决这个问题的就是把这个添加到HTML头中:

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

但现在我阻止用户将我的页面翻译成他们自己的语言。干得可怜,Chrome。你可以做得更好。

如果其他解决方案不起作用,尝试在<html>中包含属性xml:lang="":

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

在不知道文本内容的情况下,也许ngram检测被页面内容欺骗了。

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

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