Описание
Метод нестатический: Выполняет перевод одного элемента инфоблока на указанный язык. Метод принимает массив исходных данных, включая свойства, и сохраняет их как перевод в соответствующие таблицы. Используется при автоматическом или ручном переводе контента. Поддерживает работу с пользовательскими свойствами и шаблонами SEO.
Сигнатура метода
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
.
Пример
// Получаем данные элемента $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