Языки инфоблока: единый источник истины

Откуда модуль знает, на какие языки переводить.

Один список на всё

Целевые языки задаются в одном месте: экран Инфоблоки, вкладка «Языки». Всё остальное — создание свойств, панель перевода на карточке, массовый прогон, очередь, чистка — работает только по этому списку.

Язык, который заведён в Битриксе, но не отмечен здесь, модуль игнорирует полностью. Это не недосмотр, а защита: языковая версия сайта и желание её переводить — разные вещи.

Пока список не сохранён

Модуль работает по автоопределению: берёт языки сайтов плюс те, для которых уже есть поля словаря. И показывает об этом предупреждение.

Автоопределение — режим «пока не спросили», а не нормальный режим работы. Зайдите и сохраните список осознанно: это снимает предупреждение и фиксирует поведение, которое иначе изменится само, стоит кому-нибудь завести на сайте новый язык.

Список фильтрует даже прямые вызовы из кода

IblockHelper::syncProperties($iblockId, ['en']);

Второй аргумент пересекается с целевыми языками, а не заменяет их. Поэтому «лишний» язык не пролезет даже при вызове из кода, минуя интерфейс.

Правило одно для всех путей: нет языка в списке — модуль с ним не работает.

Как перевод лежит в элементе

Не копией элемента, а свойством рядом с оригиналом:

Что Где перевод
Название, анонс, описание элемента свойства NAME_EN, PREVIEW_TEXT_EN, …
Название и описание раздела поля раздела UF_NAME_EN, UF_DESCRIPTION_EN
Значения свойств парное свойство COLOR_RUCOLOR_EN
Подписи свойств и название инфоблока словарь, служебные коды
SEO-шаблоны отдельный highload-блок

Из этого следует главное свойство схемы: перевод нельзя потерять отдельно от оригинала. Удалили элемент — ушло всё вместе, рассинхрона не бывает.

Что читать дальше

Как получить элементы на языке Выборка с учётом языка
Как создать структуру под перевод Синхронизация структуры
Подписи свойств и фильтр Названия и подсказки свойств
Название самого инфоблока Названия и подписи инфоблока
Торговые предложения Торговые предложения
Справочники Справочники highload-блоков
Правка перевода в обычной форме Зеркало языка