Контекстный перевод для веб-приложений

Инструмент Crowdin In-Context позволяет переводить тексты непосредственно в реальном веб-приложении. Таким образом, сохраняется лучшее качество перевода.

Контекстная локализация связана с фактическим проектом, созданным в Crowdin, где хранятся переводимые файлы.

Этот инструмент делает все тексты в веб-приложении редактируемыми. Более того процесс перевода можно видеть в реальном времени. Таким образом можно переводить даже динамическую часть приложения и заполнители.

Технический обзор

Crowdin In-Context работает с помощью однострочного фрагмента Javascript и пакета псевдо-языка. Он создает пакет псевдоязыка на основе файлов локализации, загруженных в ваш проект, которые позже будут интегрированы в ваше приложение как язык дополнительной локализации.

Интегрированный псевдо-язык содержит некоторые специальные идентификаторы вместо исходных текстов, поэтому при переключении приложения на этот язык все метки преобразуются в специальные идентификаторы. Javascript ищет эти идентификаторы и заменяет их редактируемыми метками. Таким образом, переводчик не видит никакой разницы между живым приложением и приложением с встроенным инструментом Crowdin In-Context. Однако инструмент определяет, какая часть приложения является переводимой, и предоставляет все средства, чтобы переводчик мог локализовать с использованием контекста.

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

Интеграция

Существует два распространенных подхода к интеграции Crowdin In-Context с вашим приложением: - проверенный перевод или окружение перевода. Если вы не считаете нужным привлекать конечных пользователей сайта к переводу и предпочитаете не иметь “режим перевода” на продакшне, интеграция Crowdin In-Context в отдельную среду для перевода будет отличным решением. - Производственная среда. Crowdin In-Context не требует никаких изменений кода в вашем приложении, поэтому его можно использовать даже на производственном сервере. Вы сами решаете, как включить его и для какого сегмента пользователей его можно активировать. Функция, которая включает режим перевода, может быть скрыта, Были случаи, когда режим перевода был включен как дополнительный язык.

Следуйте пошаговой инструкции настройки интеграции, которую вы можете найти во вкладке In-Context пункта Настройки проекта.

После успешной интеграции и обновления вашего приложения вы должны увидеть диалоговое окно приглашения и окно входа в Crowdin.

Необязательные Параметры

Вы можете добавить эти параметры в _jipt массив в фрагменте конфигурации.

Предварительная загрузка строк

_jipt.push(['preload_texts', true]);

Ускоряет динамическое отображение инструмента In-Context сжатия всех строк источника. Автоматически отключается для крупных проектов (5000+ строк). Допустимые значения: true или false.

Кнопка перевод всегда видна

_jipt.push(['touch_optimized', true]);

Эта опция включена на сенсорных экранах по умолчанию и делает кнопку перевод рядом с каждой переводимой строкой постоянно видимой, в отличие от отображения при наведении. Допустимые значения: true, false.

Вызов функции перед коммитом

_jipt.push(['before_commit', function(source, translation, context, language_code) {
  return status_obj;
}]);

Функция для проверки предложения перед коммитом.

Параметры
sourceИсходный текст
translationТекст перевода
contextКонтекст исходной строки
language_codeКод языка перевода (коды языка)
Возвращаемые значения
status_obj Объект. status_obj.status может быть "ок", "ошибка" или "исправлено". В случае ошибки, status_obj.message содержит описание ошибки. Когда статус «исправлен», status_obj.correction содержит исправленный перевод

Вызов функции перед вставкой в DOM

_jipt.push(['before_dom_insert', function(text, node, attribute) {
  return 'text';
}]);

Функция для преобразования строки перед ее подставлением в DOM.

Параметры
textСтрока для вставки
node
необязательный
Элемент DOM, в который должен быть вставлен текст. Может быть опущен, если текст не содержит target элемента (текст внутри всплывающего окна браузера)
attribute
необязательный
Атрибут элемента DOM, если текст является частью атрибута
Возвращаемые значения
textСтрока для вставки
falseЕсли функция возвращает false, то DOM не будет обновляться

Вызов функции при закрытии наложения In-Context

_jipt.push(['escape', function() {
  window.location.href = "http://app_domain.com";
}]);

Определяет, могут ли пользователи закрыть In-Context оверлей, если они не хотят переводить. Реализуйте эту функцию на вашей стороне. Он должен изменить язык приложения или перенаправить из среды перевода в производственное приложение, зависимости от подхода интеграции In-Context.

Была ли эта статья полезной?