Это мощный модуль перевода контента. Из коробки, позволяет делать это вручную, вытягивая поля сущности в единый список. К нему можно подключить Deepl в качестве провайдера (tmgmt_deepl) и автоматизировать перевод контента.
Модуль решает очень большую и важную задачу, но проблем с ним хватает. Поделюсь решением тех проблем, с которыми сталкивался сам.
Немного теории о модуле. При выполнении перевода статьи, модуль реализует три этапа:
- Сбор информации о структуре статьи. Это не просто информация о типах полей, а рекурсивный проход в том числе и через в entity reference.
- Запрос переводов у провайдера (я пользовался Deepl). Выполняется как batch процесс.
- Сохранение переводов, рекурсивная процедура по аналогии с первым этапом.
Проблемы
Рекурсия
Рекурсия на первом этапе может быть источников проблемы, когда сбор данных о структуре заходит в рекурсивную петлю. Это возможно при сложных перелинковках сущностей, и вообще случается не редко.
Пропущенные тексты
Иногда случается ошибка, когда часть текстов в переводе статьи отсутствует. Это могут быть отдельные параграфы, текстовые поля целиком.
Error Code 1366 of Mysql
При записи данных в базу (на третьем этапе) выводится ошибка о якобы не допустимых кодах символа кодировки UTF8. При этом ваша база настроена как нужно, для текстовых полей используется utf8mb4.
Проблема с сохранением asymmetric paragraphs
Вернее они сохраняются, но не верно. Обычно это приводит к тому, что вы вместо перевода видите текст из статьи-источника.
Превышение лимитов памяти/времени исполнения на этапа сохранения переводов
Даже если проблема с рекурсией решена, на последнем этапе все равно может не хватить времени или ОЗУ, чтобы выполнить сохранение результатов перевода.