【问题标题】:Why does Chrome incorrectly determine page is in a different language and offer to translate?为什么 Chrome 会错误地确定页面使用不同的语言并提供翻译?
【发布时间】:2026-01-21 22:05:01
【问题描述】:

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

是否有人深入了解此语言检测功能的工作原理以及我如何确定导致 Chrome 认为该页面是丹麦语的原因?

【问题讨论】:

  • 这是一个长镜头,但是页面上的文字很少吗?试试其他一些单词少的页面,它们是否表现出相同的症状?我的猜测是服务器上某处的配置将语言环境设置为丹麦语,并且由于页面上没有足够的单词来确定语言,chrome 只是与服务器的假设一致。
  • 挪威博克马尔在这里。我在几个按钮上使用了“Barf”这个词。我将单词更改为“Bounce”,现在 Chrome 认为它是荷兰语。哇哦?
  • @thomas-peter 荷兰人。 “Barf”甚至不是我听说过的荷兰语!也不知道为什么谷歌认为它是荷兰语:p

标签: html localization internationalization google-chrome


【解决方案1】:

Chromium 认为此页面为菲律宾语:http://www.reyalvarado.com/portfolio/cuba/ 注意:除了所有者的姓名和菜单项外,页面上几乎没有文字。 FLIR 将菜单项动态替换为图像。

HTML 将页面声明为美国英语:

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

【讨论】:

  • 是的,我也有同样的问题。页面上的文本不多, 元素有 lang="en" 和 xml:lang="en"。 Chrome 会忽略它!
  • @JoshuaDavis,我尝试了 lang 属性、元标记(除了 notranslate 之外)之上的所有内容。最终为我解决的问题是添加 dir="ltr" 属性。
  • dir="ltr" 是...方向,我猜是从左到右?哇。
【解决方案2】:

更新:according to Google

我们不使用任何代码级语言信息,例如 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,因此在上面发布了 Google's recommendation。对于其他浏览器,通常有三种方法可以完成此操作:

  1. W3C recommendation:在 html 标记中使用lang 和/或xml:lang 属性:

    <html lang="en" xml:lang="en" xmlns= "http://www.w3.org/1999/xhtml">
    
  2. 更新:previously a Google recommendation 现在是deprecated spec,尽管它可能仍然对 Chrome 有帮助。 :meta http-equiv(如上所述):

    <meta http-equiv="Content-Language" content="en">
    
  3. 使用 HTTP 标头(基于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 并不总是在标签刷新时选择新的元标记。

【讨论】:

  • 这里是谷歌元标签的描述:support.google.com/webmasters/bin/…
  • @Emile:如果您在新选项卡中加载页面,它会起作用。直接按F5刷新是不行的。
  • 在 html5 中它应该是内容而不是值:
  • 设置正确的响应标头比 http-equiv 元标记更可取。
  • Chrome 似乎随心所欲。我可以用英文返回 txt 文件,指定 HTTP 响应标头中的 ASCII,即使数据只包含 ASCII 字符,chrome 仍然会对字节进行频率分析并提示用户它是不同的语言。
【解决方案3】:

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

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

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

【讨论】:

  • 但问题是,我怎样才能调试它或获得更多信息让 Chrome 弄清楚它为什么做出这样的选择?
  • 没有看到文字,我不能肯定。可以尝试的一些事情: - 如果您复制文本并将其粘贴到 translate.google.com,并将其设置为“检测语言”,它会告诉您它是不是英语吗? - 如果它说它是丹麦语或其他什么,那么我会开始删除句子,直到你找到麻烦制造者。
  • 嗨 Sam - 这实际上是我的建议。没有办法问它为什么做出这个决定。您的文本中有一些句子或措辞在欺骗它(毕竟机器翻译并不完美)。为了调试这个东西,我会逐句取出,直到它识别出正确的语言。
【解决方案4】:

如果其他解决方案不起作用,请尝试将属性 xml:lang="" 包含到 &lt;html&gt;

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

【讨论】:

  • 这种方法对我不起作用。 Chrome 似乎忽略了 lang="..." 和 xml:lang="..."。
  • 这会使 chrome 混淆,使其不知道页面是什么语言,因此它不会提供翻译。
【解决方案5】:

我在 doctype 声明中添加了lang="en",在 HTML 标头中添加了 charset utf-8 和 Content-Langauge 的元标记,在 HTTP 响应标头中将 charset 指定为 utf-8,将 Content-Language 指定为 en 和它没有阻止 Chrome 声明我的页面是葡萄牙语。解决问题的唯一方法是将其添加到 HTML 标头中:

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

但是现在我阻止了用户将我的页面明显是英文的翻译成他们自己的语言。干得不好,铬。你可以比这更好。

【讨论】:

  • 如此真实!他们说'我们不使用任何代码级语言信息,例如语言属性'。是的,因为那会很奇怪。相反,我们使用一些秘密/专有的魔法算法。当 IE 这样做是为了确定 Content-Type 时,我们说他们不遵循标准,但是当我们这样做时,突然之间就很棒了。耶!
【解决方案6】:

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

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

说明:

接受的答案提供了一个全面的解决方案,但没有解决如何指定每个元素的语言,这可以修复错误并确保您的page remains translatable

为什么这样更好?这将配合谷歌的国际化而不是关闭它。回顾OP:

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

回答:Google 正在努力帮助您实现国际化,但我们需要了解失败的原因。基于NinjaCat's 的回答,我们假设谷歌reads and predicts 使用N-gram algorithm 您网站的语言——所以,我们无法确切说明谷歌为什么要翻译您的页面;我们只能假设:

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

不幸的是,大多数看到这篇文章的人都不知道是什么词造成了麻烦。使用 Chrome 内置的“翻译成英语”功能(在右键单击上下文菜单中)查看翻译的内容,您可能会看到意想不到的翻译like the following

因此,使用适当的翻译标签更新您的 html,直到您的页面的 Google 翻译没有任何改变——然后我们应该期望弹出窗口对未来的访问者消失。

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

【讨论】:

  • 这对我有用,元标签仍然允许翻译弹出窗口。
最近更新 更多