FCIBlockElement::Translate

Описание

Метод нестатический: Выполняет перевод одного элемента инфоблока на указанный язык. Метод принимает массив исходных данных, включая свойства, и сохраняет их как перевод в соответствующие таблицы. Используется при автоматическом или ручном переводе контента. Поддерживает работу с пользовательскими свойствами и шаблонами SEO.

Сигнатура метода

Code Copy code Code copied!
1
2
3
4
5
6
7
8
bool
FCIBlockElement::Translate(
 int|string $ID,
 array $arFields,
 string $target,
 string|bool $siteId = false,
 string|bool $source = false
);

Параметры вызова

Параметр Описание С версии
ID Идентификатор элемента инфоблока, который необходимо перевести. 2.5.0
arFields Массив данных для перевода, включая поля элемента, свойства и SEO-шаблоны. Формируется вручную или с помощью GetFieldsForTranslation(). 2.5.0
target Целевой язык перевода (например, "en", "fr", "de"). 2.5.0
siteId Идентификатор сайта. Если не указан, используется значение параметра target. 2.5.0
source Исходный язык перевода. Используется при работе с внешними переводчиками. По умолчанию определяется автоматически. 2.5.0

Возвращаемое значение

Метод возвращает true в случае успешной записи переведённых данных. Если массив arFields пустой или перевод не может быть выполнен, возвращается false.

Пример

Code Copy code Code copied!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// Получаем данные элемента
$res = CIBlockElement::GetList(["ID" => "asc"], $arFilter);
if ($ob = $res->GetNextElement()) {
    $arFields = $ob->GetFields();
    $props = $ob->GetProperties();

    // Формируем структуру PROPERTY_VALUES для перевода
    foreach ($props as $prop) {
        if (is_array($prop['PROPERTY_VALUE_ID'])) {
            foreach ($prop['PROPERTY_VALUE_ID'] as $key => $propertyValueId) {
                $arFields["PROPERTY_VALUES"][$prop["ID"]][$propertyValueId] = [
                    'VALUE' => $prop['~VALUE'][$key],
                    'DESCRIPTION' => $prop['~DESCRIPTION'][$key],
                ];
            }
        } else {
            $arFields["PROPERTY_VALUES"][$prop["ID"]] = [
                $prop['PROPERTY_VALUE_ID'] => [
                    "VALUE" => $prop['~VALUE'],
                    'DESCRIPTION' => $prop['~DESCRIPTION'],
                ]
            ];
        }
    }

    // Выполняем перевод на все языки, настроенные в инфоблоке
    foreach (CFanTranslator::getIblockAutoLangs($arFields['IBLOCK_ID']) as $lid) {
        $element = new FCIBlockElement();
        $element->Translate($arFields["ID"], $arFields, $lid);
    }
}

Примечание: Метод используется совместно с GetFieldsForTranslation() и getIblockAutoLangs() при массовом переводе элементов инфоблока. Вся логика перевода делегируется внутреннему обработчику CFanTranslator.

Количество показов: 532
Дата изменения: 23.06.2025 13:58:20