与Discourse和Google Translate的奇怪互动

这是由我们的一位常规用户提出的,他使用 Firefox 插件进行页面翻译,但这似乎与该插件无关,并且在 meta 的任何页面上都可以重现。

步骤:

  1. 前往 https://translate.google.com/
  2. 粘贴一个网址,例如 https://meta.discourse.org/t/using-discourse-index/308031
  3. 点击翻译图标/按钮

您很可能会进入一个 Discourse 404 页面,网址如下:

https://meta-discourse-org.translate.goog/t/using-discourse-index/308031/t/using-discourse-index/308031?_x_tr_sl=en&_x_tr_tl=pt-PT&_x_tr_hl=en&_x_tr_pto=wapp&_x_tr_hist=true

请注意,网址中重复了路径 /t/using-discourse-index/308031。删除重复的部分后,翻译就可以正常工作了 如预期

通常情况下,这会是 Google 翻译的问题,但似乎只发生在 Discourse 上(我已经尝试了其他一些网站),并且在我们更新到 3.2 版本之后。

2 个赞

抱歉重复提及此事,但我认为我选择了错误的标题(和角度),因此没有得到应有的关注。

目前,Discourse 与 Google Translate 不兼容,而 Google Translate 可能是最常用的翻译工具。

将任何主题 URL 粘贴到 Google Translate 中,最终都会翻译 404 页面,而不是实际的主题。它在处理主页和主题列表 URL 时效果很好——但不是主题。

也许 Google Translate 被提供了一些特殊的爬虫/打印版本,但它不适用于此目的?

我经常使用 Google Translate,只在 Discourse 主题中看到这种行为,所以至少部分问题似乎出在 Discourse 上。

看起来这会影响所有 Ember 应用。例如,就连 Ember 自家的 文档应用 也会受影响。

看起来 Google 正在代理该网站,注入一些 JavaScript,并注入一个 <base> 标签。我们或许可以检测到 Google 的这些 hack 并绕过 404 问题……但我非常怀疑像 Discourse 这样复杂的 JS 应用能否很好地通过 Google 的代理运行。

一种解决方法是使用浏览器内置的翻译功能(原生或通过扩展程序)。这些功能没有相同的代理/注入行为。

1 个赞