Chrome为什么会错误地确定页面使用其他语言并提供翻译?


173

新的Google Chrome自动翻译功能在我们的一个应用程序中的一页上跳了起来。每当我们导航到该特定页面时,Chrome就会告诉我们该页面为丹麦语,并提供翻译服务。该页面是英语的,就像我们应用程序中的其他页面一样。此特定页面是内部测试页面,其中包含几十个带有英文标签的表单字段。我不知道为什么Chrome认为此页面是丹麦语。

是否有人对这种语言检测功能的工作方式以及我如何确定导致Chrome认为该页面为丹麦语的内容有见解?


1
这是一个远景,但是页面上的单词很少吗?尝试其他一些单词很少的页面,它们是否表现出相同的症状?我的猜测是服务器上某处的配置将语言环境设置为丹麦语,并且由于页面上没有足够的单词来确定语言,因此chrome仅符合服务器的假设。
哈森


7
挪威文Bokmal在这里。我在几个按钮上使用了“ Barf”一词。我将单词改为“ Bounce”,现在Chrome认为它是荷兰语。哇啊啊
thomas-peter 2012年

Answers:


222

更新:根据谷歌

我们不使用任何代码级语言信息,例如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建议:使用html标签中的lang和/或xml:lang属性:

    <html lang="en" xml:lang="en" xmlns= "http://www.w3.org/1999/xhtml">
  2. 更新:虽然谷歌的建议可能现在仍然对Chrome有所帮助,但以前推荐使用Google规范。:(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浏览器并不总是在标签刷新时获取新的meta标签。


1
以下是对Google元标记的描述:support.google.com/webmasters/bin/…–
Joshua Davis

7
@Emile:如果您在新标签页中加载页面,则可以使用。如果您仅按F5刷新,它将不起作用。
Stefan Steiger 2012年

1
在html5中,它应该是内容而不是值:<meta name =“ google” content =“ notranslate” />
r03 2012年

1
@Jack,那不是Google或W3C的推荐。尽管您的挑战确实引起了有趣的信息,但这却使
Kyle

2
Chrome似乎可以做任何想做的事情。我可以返回英文的txt文件,以指定HTTP响应标头中的ASCII为ASCII,即使数据仅包含ASCII字符,chrome仍然会对字节进行频率分析,并提示用户它是另一种语言。
Myforwik 2014年

3

lang="en"在doctype声明中添加了代码,在HTML标头中添加了字符集utf-8和Content-Langauge的元标记,en在HTTP响应标头中将字符集指定为utf-8和Content-Language,并没有阻止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://zh.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会忽略它!
约书亚·戴维斯

1
@JoshuaDavis,我尝试了lang属性,meta标记(除了notranslate之外)之外的所有内容。最终为我解决的问题是添加dir =“ ltr”属性。
Dan Morphis 2014年

1
dir =“ ltr”是...方向,我猜是从左到右?哇。
约书亚·戴维斯

1

指定文档的默认语言,然后对每个元素/容器使用translate属性和Google的notranslate类,如下所示:

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

说明:

接受的答案提供了一个总括的解决方案,但没有解决如何为每个元素指定语言,这可以修复错误并确保您的页面可翻译

为什么这样更好?这将与Google的国际化合作,而不是将其关闭。回到OP:

Chrome为什么会错误地确定页面使用其他语言并提供翻译?

:Google试图帮助您进行国际化,但是我们需要了解为什么这会失败。根据NinjaCat的回答,我们假设Google 使用N-gram算法读取和预测您网站的语言-因此,我们无法确切地说出Google为什么要翻译您的网页;我们只能假设:

  1. 您页面上的某些单词属于另一种语言。
  2. 将包含元素标记为translate="no"lang="en"(或删除这些单词)将有助于Google正确预测页面的语言。

不幸的是,大多数到达此职位的人都不知道是什么词引起了麻烦。使用Chrome内置的“翻译成英文”功能(在右键单击上下文菜单中)查看要翻译的内容,您可能会看到类似以下内容的意外翻译:

在此处输入图片说明

因此,请使用适当的翻译标签更新html,直到页面的Google翻译没有任何变化为止–然后,我们应该希望弹出的窗口消失,以供将来的访问者使用。

添加所有这些额外的标签会不会花费很多工作?是的,很有可能。如果您使用的是Wordpress或其他内容管理系统,请查看其文档以获取更新代码的快速方法!


这对我有用,元标记仍允许翻译弹出窗口。
瑞安

0

如果其他解决方案无效,请尝试将属性包括 xml:lang=""到中<html>

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

1
这种方法对我不起作用。Chrome似乎忽略了lang =“ ...”和xml:lang =“ ...”。
约书亚·戴维斯

这可以使chrome迷惑不知道页面是什么语言,因此不会提供翻译。
卡特·梅德林
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.