Наш модуль «Мультиязычность: Инфоблоки на разных языках» позволяет расширить поддержку мультиязычности и на highload-блоки. Это особенно удобно, если вы храните справочную информацию (например, цвета, размеры, страны и пр.) в HL-блоках и хотите отображать значения на языке, соответствующем текущей языковой версии сайта.
Пример использования
Допустим, у вас есть highload-блок «Цвета» с такими полями, как UF_NAME (название цвета). При использовании нашего модуля вы можете получать перевод названия цвета на активном языке сайта.
Ниже представлен пример, как можно получить значение поля UF_NAME на нужном языке для конкретного элемента HL-блока:
use Bitrix\Main\Loader; // Наш класс для работы с highload-блоками use Modulemarket\Translator\Highloadblock\HighLoadBlockTable as HL; // Подключение модуля для работы с highload-блоками Loader::includeModule('modulemarket.translator'); $hl = 1; // ID сущности highload-блока, с которым мы будем работать $violetColorId = 564; // ID элемента, перевод которого мы хотим получить $entity = HL::compileEntity($hl); // Получаем объект сущности highload-блока $entity_data_class = $entity->getDataClass(); // Получаем класс для работы с данными highload-блока $rsPropEnums = $entity_data_class::getRow([ 'filter' => ['ID' => $violetColorId], // Фильтр по ID элемента 'select' => ['UF_NAME'], // Выбираем только поле UF_NAME ]); print_r($rsPropEnums);
Ожидаемый результат
Если текущая языковая версия сайта, например, русская, результат будет следующим:
Array ( [UF_NAME] => Фиолетовый )
При переключении языка сайта (например, на английский), поле UF_NAME будет автоматически содержать перевод «Purple», если он указан в мультиязычных данных HL-блока.
Где применяется
- Справочники (цвета, бренды, страны)
- Таблицы соответствий (размерные сетки, условия доставки и т.д.)
- Любые кастомные структуры данных, завязанные на HL-блоки
Благодаря нашему решению, вы получаете централизованную и гибкую систему мультиязычности не только для инфоблоков, но и для HL-блоков.