Highload-блоки на разных языках

Наш модуль «Мультиязычность: Инфоблоки на разных языках» позволяет расширить поддержку мультиязычности и на highload-блоки. Это особенно удобно, если вы храните справочную информацию (например, цвета, размеры, страны и пр.) в HL-блоках и хотите отображать значения на языке, соответствующем текущей языковой версии сайта.

Пример использования

Допустим, у вас есть highload-блок «Цвета» с такими полями, как UF_NAME (название цвета). При использовании нашего модуля вы можете получать перевод названия цвета на активном языке сайта.

Ниже представлен пример, как можно получить значение поля UF_NAME на нужном языке для конкретного элемента HL-блока:

Code Copy code Code copied!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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);

Ожидаемый результат

Если текущая языковая версия сайта, например, русская, результат будет следующим:

Code Copy code Code copied!
1
2
3
4
Array
(
    [UF_NAME] => Фиолетовый
)

При переключении языка сайта (например, на английский), поле UF_NAME будет автоматически содержать перевод «Purple», если он указан в мультиязычных данных HL-блока.

Где применяется

  • Справочники (цвета, бренды, страны)
  • Таблицы соответствий (размерные сетки, условия доставки и т.д.)
  • Любые кастомные структуры данных, завязанные на HL-блоки

Благодаря нашему решению, вы получаете централизованную и гибкую систему мультиязычности не только для инфоблоков, но и для HL-блоков.