sibirix/sibirix-translator

There is no license information available for the latest version (0.2.3) of this package.

Sibirix.Translator composer package for Bitrix

0.2.3 2019-06-07 05:03 UTC

This package is auto-updated.

Last update: 2025-07-07 20:11:40 UTC


README

Пакет для 1С-Битрикс, для простой мультиязычности текстовых полей элементов/разделов инфоблоков. Удобно для создания симметричный языковых версий - в одном элементе инфоблока будут задаваться тексты для всех языкоовых версий сразу.

При редактировании элемента/раздела добавляется по вкладке для каждого языка в системе и в них дублируются нужные (какие вы настроите) текстовые поля. Введённые строки для всех языков сохраняются в одно исходное поле в специальном формате {{ru:Текст на русском}}{{en:English text}}.

В связи с этим и ограничение - запрет на использование в тексте двойных фигурных скобок и ограничение на максимальную суммарную длину текста. Но зато не требуются никакие изменения в БД.

Из-за ограничения на макс. длину текста модуль не рекомендуется использовать на сайтах с более чем 3 языками.

Возможности

Поддерживается перевод только текстовых полей:

  • стандартные поля элемента инфолбока NAME, PREVIEW_TEXT, DETAIL_TEXT
  • дополнительные свойства элемента инфоблока типов Строка и HTML/Текст
  • стандартные поля раздела инфоблока NAME, DESCRIPTION
  • дополнительные свойства раздела инфоблока типа Строка

Установка

Установка модуля

Если у вас в проекте уже используется composer:

composer require sibirix/sibirix-translator

Если вы хотите использовать данный модуль переводов в проекте, где ещё нет композера:

  1. в папке /local/ выполнить composer require sibirix/sibirix-translator
  2. подключить файл автозагрузки композера: в файле /local/php_interface/init.php (создайте, если он у вас отсутствует) добавить строку require_once($_SERVER["DOCUMENT_ROOT"] . '/local/vendor/autoload.php');

Добавление обработчиков событий

Добавьте обработчики событий модуля: в файле /local/php_interface/init.php:

use Bitrix\Main\EventManager as BitrixEventManager;
use Sibirix\Translator\IBlockLocales;

$manager = BitrixEventManager::getInstance();
$manager->addEventHandler("main", "OnBeforeProlog", [IBlockLocales::class, 'onBeforeProlog']);
$manager->addEventHandler("main", "OnAdminTabControlBegin", [IBlockLocales::class, 'onAdminTabControlBegin']);

Настройка формы редактирования в админке

  1. Открываем страницу редактирования элемента/раздела инфоблока
  2. Открываем настройки формы редактирования
  3. Жмём кнопку "Добавить" рядом со списком вкладок, вводим название вкладки "{{}}" (без кавычек, 2 открвающихся и 2 закрывающихся фигурных скобки)
  4. Выбираем новую вкладку в спике и добавляем на неё те поля, для которых требуется выполнять перевод
  5. Сохраняем настройки формы

В форме появятся вкладки с названиями "Перевод: ...", список языков для перевода берётся из языков, используемых в созданных в системе сайтах (Настройки - Настройки продукта - Сайты - Список сайтов. Открываем редактирование свойств сайта, блок "Региональные настройки", поле "Язык").

Вывод данных в шаблонах

<?= \Sibirix\Translator\IBlockLocales::t($item['PROPERTY_TEXT_VALUE']) ?>

$item['PROPERTY_TEXT_VALUE'] - строка с данными в формате {{}}, сохранённая пакетом в админке.

Выводит текст в языке текущего сайта (определяется по константе LANGUAGE_ID, [https://dev.1c-bitrix.ru/api_help/main/general/constants.php])