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

Sam*_*eff 161 html localization google-chrome internationalization

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

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

Kyl*_*yle 212

使用以下内容:

<meta charset="UTF-8">
<meta name="google" content="notranslate">
<meta http-equiv="Content-Language" content="en">
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,您可以随时在隐藏的div中放置一堆文本(例如"关于"页面).这也可能有助于搜索引擎优化.

编辑(和更多信息)

OP正在询问Chrome,因此Google的建议已在上面发布.通常有三种方法可以为其他浏览器实现此目的:

  1. W3C建议:使用html标记中的lang和/或xml:lang属性:

    <html lang="en" xml:lang="en" xmlns= "http://www.w3.org/1999/xhtml">
    
    Run Code Online (Sandbox Code Playgroud)
  2. 谷歌推荐 :(meta http-equiv如上所述):

    <meta http-equiv="Content-Language" content="en">
    
    Run Code Online (Sandbox Code Playgroud)
  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
    
    Run Code Online (Sandbox Code Playgroud)

  • @Emile:如果您在新标签页中加载页面,它会起作用.如果只按F5刷新它就不起作用. (7认同)
  • Chrome似乎无所不能.我可以返回英文的txt文件,指定HTTP响应头中的ASCII,即使数据只包含ASCII字符,chrome仍会对字节进行频率分析,并提示用户使用不同的语言. (2认同)

Chr*_*ski 8

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

<meta name="google" content="notranslate">
Run Code Online (Sandbox Code Playgroud)

但是现在我已经阻止用户将我的页面翻译成他们自己的语言。糟糕的工作,铬。你可以比这更好。

  • 如此真实!他们说“我们不使用任何代码级语言信息,例如 lang 属性”*。是的,因为那会很奇怪。相反,我们使用一些秘密/专有的魔法算法。当 IE 这样做来确定 Content-Type 时,我们说他们不遵循标准,但是当我们这样做时,突然感觉很棒。耶! (3认同)

mat*_*tar 5

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

<html lang="en">
    ...
    <span><a href="#" translate="no" class="notranslate">English</a></span>
Run Code Online (Sandbox Code Playgroud)

解释:

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

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

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

回答:Google 正在尝试帮助您实现国际化,但我们需要了解为什么会失败。根据NinjaCat 的答案,我们假设 Google使用N-gram 算法读取并预测您网站的语言- 因此,我们无法确切说明为什么 Google 要翻译您的页面;我们只能假设:

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

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

在此输入图像描述

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

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