【问题标题】:Can i detect if a web page has been translated by Google?我可以检测网页是否已被谷歌翻译?
【发布时间】:2018-04-10 08:12:42
【问题描述】:

我有一个荷兰语网页,上面有一个带有单选按钮的投票。 我想知道用户说哪种语言。有没有办法可以在他们提交时检测页面是否已被谷歌翻译? 我不使用翻译栏,我说的是自发的谷歌翻译。

【问题讨论】:

  • 这是在客户端完成的,因此您无法检测到它。检查 accept-language 标头,但请注意它不可靠。
  • 您可以查看服务器日志以查看 Google 是否访问了您的网站...
  • 我不知道是否有很多人经常使用谷歌浏览器翻译,因此这对于用户说什么语言是否有任何有用的指标。似乎是一个需要担心的小环岛场景……
  • 似乎浏览器将类添加到html标签class="translated-ltr"
  • 一个理论上的想法:使用 onSubmit 事件调用一个 javascript 函数来查找特定的单词。将结果放入隐藏字段,然后汇总表格。在服务器端创建一个列表,其中包含该单词的一系列翻译,并将其与提交的值进行比较。

标签: javascript php google-translate


【解决方案1】:

如果文本与您的文本匹配,只需检查已知元素。

function isDutch() {
    return $('#readmore').text() === "Meer lezen";
}

或非 jQuery 解决方案:

function isDutch() {
    document.querySelector('#readmore').innerText  === "Meer lezen";
}

只要确保你拥有的元素是一个易于翻译的句子,比如阅读更多。

然后用结果更新表单中的隐藏字段。

您可以在您的单选按钮上注册点击时执行此操作。

我刚刚在俄罗斯网站 lenta.ru 上对其进行了测试,并在通过右键单击页面并选择翻译此页面(chrome)翻译后运行$('a[href="/parts/news"]').text();。在 jquery text() 中返回的内容是我的语言(荷兰语)。

【讨论】:

    【解决方案2】:

    当通过谷歌翻译翻译时,目标语言被注入到主html标签的lang属性中,你可以通过以下方式检索它:

    document.getElementsByTagName('html')[0].getAttribute('lang')

    这会导致类似

    en-x-mtfrom-nl... 反过来,您可以登录到您的服务器或设置为 cookie。

    【讨论】:

    • 其实 lang 属性不变,只是增加了一个 class : translate-ltr。它显示:。如果我删除 lang 属性,它只会显示:。这表示翻译,但不表示翻译的语言。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    相关资源
    最近更新 更多