Странное взаимодействие между Discourse и Google Translate

Эту проблему поднял один из постоянных участников, использующего расширение Firefox для перевода страниц, но, похоже, она не зависит от него и воспроизводится на любой странице в meta.

Шаги:

  1. Перейдите на https://translate.google.com/
  2. Вставьте URL, например https://meta.discourse.org/t/using-discourse-index/308031
  3. Нажмите кнопку перевода

Скорее всего, вы попадёте на страницу 404 Discourse с URL вроде этого:

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

Обратите внимание, что в URL путь /t/using-discourse-index/308031 дублируется. Удаление дублирующегося фрагмента позволяет переводу работать как ожидалось.

Обычно это была бы проблема Google Translate, но она, похоже, возникает только с Discourse (я пробовал несколько других сайтов) и только после обновления до версии 3.2.

2 лайка

Извините, что возвращаюсь к этой теме, но я думаю, что выбрал неверный заголовок (и ракурс), и это не привлекло должного внимания.

На данный момент Discourse несовместим с Google Translate, который, вероятно, является самым используемым инструментом перевода.

Любой URL темы, вставленный в Google Translate, всегда приводит к тому, что переводится страница 404, а не сама тема. С URL-адресами главной страницы и списков тем всё работает нормально, но не с отдельной темой.

Возможно, Google Translate получает какую-то специальную версию для краулеров/печати, которая не подходит для этих целей?

Я регулярно пользуюсь Google Translate и заметил такое поведение только с темами Discourse, поэтому, по крайней мере, часть проблемы, похоже, кроется в самом Discourse.

Похоже, это затрагивает все приложения Ember. Например, даже собственное приложение документации Ember

Кажется, что Google выступает в роли прокси для сайта, внедряет некоторый JavaScript и добавляет тег <base>. Возможно, мы сможем обнаружить эти манипуляции Google и обойти проблему 404… но я сильно сомневаюсь, что какое-либо сложное JS-приложение, вроде Discourse, будет нормально работать через прокси Google.

Обходным решением является использование встроенной в браузеры функции перевода (как нативной, так и через расширение). У них нет аналогичного поведения проксирования/внедрения.

1 лайк