Зачем это нужно
Платформе необходимо распространять контент на нескольких языках без дублирования или разветвления базовой модели контента. Поддержка перевода создаёт языковые варианты на уровне документов, связывая их с исходными документами и сохраняя оригинальную схему и структуру содержимого.
Используйте, когда
- нужно перевести один или несколько компонентов на несколько языков
- необходимо отслеживать прогресс пакетного задания на перевод
- требуется повторно запустить неудавшиеся переводы
- нужно вручную исправить машинные переводы
- нужно читать переведённый контент в приложении документации или на сайте
- требуется строить языковые представления документов в CMS
Что в него входит
- массовый выбор компонентов и языков в CMS
- асинхронные задания на перевод с отслеживанием прогресса
- перевод документов на основе TensorZero
- автоматическое пропускание переводов, которые уже актуальны
- дедупликация идентичных активных заданий на перевод
- восстановление прогресса активных заданий после навигации в CMS
- элементы управления повтором для неудавшихся переводов
- сохранение предпочтений целевых языков
- ручная корректировка перевода через конечную точку patch
- выборка документов с учётом языка
- хэши источников для обнаружения устаревших переводов
- столбцы и индексы базы данных с учётом переводов
Основной рабочий процесс
- Откройте страницу «Components» и выберите Отправить на перевод.
- Выберите один или несколько компонентов и целевые языки.
- Просмотрите предполагаемое количество переводов и поставьте пакет в очередь.
- Менеджер переводов загружает опубликованные исходные документы и пропускает переводы, у которых хэш источника уже актуален.
- Оставшиеся переводы обрабатываются асинхронно через TensorZero.
- Отслеживайте в CMS переводы в очереди, выполненные, пропущенные и завершившиеся ошибкой.
- При необходимости повторно запускайте неудавшиеся переводы.
- Вручную корректируйте переведённый контент, когда машинный результат требует доработки.
- Читайте переведённые варианты через схемы и API документов с учётом языка.
Задания на перевод
Отправка пакета создаёт задание на перевод. В нём фиксируется:
- выбранные компоненты и языки
- обработанные исходные документы
- запланированные переводы
- переводы, пропущенные из-за актуальности
- выполненные переводы
- переводы с ошибками
- текущий статус задания
Отправка того же набора, пока эквивалентное задание активно, подключается к существующему заданию вместо создания дублирующей работы.
CMS локально хранит идентификатор активного задания, чтобы прогресс можно было восстановить после навигации. Состояние задания на перевод в данный момент удерживается в памяти менеджером переводов и очищается при перезапуске сервиса. Развёртывайте сервис как одиночный экземпляр или используйте привязанный роутинг, чтобы запросы на отправку заданий и получение статуса попадали в один и тот же процесс.
Обнаружение устаревших переводов
Каждый переведённый документ хранит хэш опубликованного содержимого исходного документа на момент перевода.
Когда отправляется другой пакет на перевод:
- совпадающие хэши означают, что перевод актуален и его можно пропустить
- различающиеся хэши означают, что источник изменился и перевод нужно обновить
Это позволяет безопасно запускать массовый перевод неоднократно без повторного перевода неизменённого контента.
Конечные точки API
POST /translation — поставить переводы для одного или нескольких компонентов в очередьGET /translation-jobs/{job_id} — получить статус и прогресс задания на переводPATCH /translations — вручную скорректировать переведённый контент
Поверхности системы
- диалог массового перевода в CMS
- элементы управления статусом и восстановлением задания на перевод в CMS
- API менеджера переводов и фоновые обработчики
- интеграция перевода с TensorZero
- языковые представления документов в CMS
- загрузка контента с учётом языка в приложении документации
- хранение переводов и отслеживание хэшей источников