Форматы: HTML, JSON, конструкторы
Текст текстом не ограничивается. Модуль различает три случая.
Обычная строка
Название товара, подпись кнопки, короткое поле. Переводится как есть.
Неразрывный пробел в такой строке ставится символом, а не сущностью: в поле без разметки сущность была бы видна человеку как есть.
HTML
Описание товара, текст новости. Разметка должна вернуться из перевода целой.
Здесь неразрывный пробел ставится сущностью — в HTML это правильный вид.
Незакрытый тег чинится всегда, независимо от настроек типографики. Ответ
модели вида <span>текст<span> вместо закрывающего тега — это не вопрос
оформления, а сломанная разметка: один такой тег разъезжает вёрстку всей
страницы.
Что модуль считает поломкой и как их ищет — Сверка перевода с оригиналом.
Конструкторы страниц
Поле с содержимым визуального конструктора (sprint.editor) — это JSON со структурой блоков. Переводить его как текст нельзя: перевелись бы имена ключей и служебные значения.
Модуль отдаёт JSON целиком, отдельным форматом. Разбор структуры и выбор переводимых узлов делает сервис: он переводит подписи, заголовки и текстовые значения, оставляя структуру нетронутой.
Проверка после перевода — число узлов должно совпасть. Не совпало — запись отменяется.
Типографика к содержимому конструктора не применяется. Оно идёт другим путём и до типографа не доходит.
Новые ключи конструктора
Добавляются на стороне сервиса, в его разборщике. На стороне Битрикса менять нечего: модуль передаёт JSON целиком и о его внутреннем устройстве не знает.
Это сознательное разделение: знание о формате блоков живёт в одном месте, а не в каждом установленном модуле.