Модуль переводит сайт на Битриксе: интерфейс, инфоблоки, каталог, SEO-поля и оформление заказа. Перевод хранится в базе рядом с оригиналом — в том же элементе, а не в копии сайта и не в языковых файлах. Дубли инфоблоков заводить не нужно, а править тексты может контент-менеджер.
Что переводится
- Фразы интерфейса — подписи кнопок, меню, подсказки, тексты блоков вёрстки, письма. Каждая фраза заводится один раз и выводится на языке посетителя.
- Инфоблоки — названия, анонсы, описания, свойства и их значения, подписи свойств, разделы, торговые предложения, справочники Highload-блоков.
- SEO — шаблоны title, description, alt и title картинок на каждом языке, с наследованием по разделам.
- Магазин — названия товаров и свойств на витрине и в корзине, свойства заказа, типы плательщиков, названия платёжных систем и служб доставки, единицы измерения.
- Поиск, хлебные крошки, даты — посетитель английской версии видит результаты выдачи и названия месяцев на своём языке.
Названия платёжных систем и служб доставки ядро Битрикса хранит одним текстом на все языки, поля под перевод там нет вовсе. Модуль переносит их в словарь и переводит как обычные фразы — поэтому оформление заказа на английском выглядит английским целиком, а не наполовину.
Длина текста не ограничена, форматы — тоже
Модуль различает три случая и ведёт себя в каждом по-своему.
- Обычная строка — название товара, подпись кнопки, короткое поле. Переводится как есть.
- HTML — описание товара, текст новости. Разметка обязана вернуться из перевода целой, а незакрытый тег чинится всегда, независимо от настроек: один такой тег разъезжает вёрстку всей страницы.
- Конструкторы страниц. Поле sprint.editor — это JSON со структурой блоков, и переводить его как текст нельзя: перевелись бы имена ключей и служебные значения. Модуль отдаёт такое поле отдельным форматом, переводятся только подписи, заголовки и текстовые значения. Если после перевода число узлов не совпало, запись отменяется целиком. Поддержка идёт из коробки, настраивать ничего не нужно.
Предельной длины у переводимого текста нет: статья на сорок тысяч знаков уходит целиком, а не режется на куски. Размер порции влияет только на то, сколько элементов поедет одним запросом.
Одинаковые строки внутри порции отправляются один раз, а строки без единой буквы — артикулы, числа, коды — не отправляются вовсе. Платить за перевод артикула незачем.
Машинным переводом пользоваться необязательно
Модуль остаётся полноценным хранилищем переводов, даже если вы не потратите на машинный перевод ни рубля. Языковые поля создаются, переключение языка работает, подстановка на витрине идёт — а тексты вы заполняете руками: в карточке элемента, в словаре, выгрузкой в CSV и обратно.
Так работают проекты, где перевод делает штатный редактор или бюро: модуль даёт структуру и инструменты, а откуда взялся текст, ему безразлично. Машинный перевод включается тогда, когда руками становится долго.
Разработчик пишет текст прямо в коде
Выносить фразы в языковые файлы заранее не нужно. Текст на базовом языке пишется прямо в шаблоне, вторым аргументом:
<?= LANG_VAR('SUBMIT_BTN', 'Отправить заявку') ?>
При первом показе страницы фраза заводится в словаре сама, с этим самым текстом. Поля остальных языков остаются пустыми — это честное состояние «перевода ещё нет», и ровно такие поля подбирает автоперевод.
Отсюда следствие, ради которого всё и сделано: верстать и программировать можно по-русски, как будто мультиязычности на проекте нет. Сайт работает с первой минуты, словарь наполняется сам, а решение о языках принимается когда угодно потом — тексты к этому моменту уже собраны в одном месте. Отдельного этапа «вынести все надписи шаблона в языковые файлы» в проекте не возникает вовсе.
Переменные подставляются по имени, чтобы фраза оставалась целой: LANG_VAR('DAYS_LEFT', ['COUNT' => 5]) для записи «Осталось #COUNT# дней». Склейка вида LANG_VAR('LEFT') . $n . LANG_VAR('DAYS') не переводится в принципе — в других языках другой порядок слов, — а целую фразу переводчик видит целиком. Один и тот же код, встреченный на странице дважды, даёт одно обращение к базе, а не два.
Проект уже живёт на языковых файлах Битрикса? Модуль забирает их разом: просматривает /local/templates, /local/components и /local/php_interface, собирает все $MESS и заводит в словаре записи для тех кодов, которых там ещё нет. Существующие коды пропускаются, ничего не перетирается. Старые языковые файлы при этом можно не удалять: пока шаблон зовёт $MESS, он читает их, — так что переезд делается постепенно, а не одним рискованным заходом.
Копий штатных компонентов в поставке нет
Модуль не подменяет компоненты Битрикса своими копиями. Он подставляет перевод в данные, которые компонент уже получил, — одной строкой в result_modifier.php шаблона:
IblockHelper::substituteStandardFields($arResult);
Копия штатного компонента живёт до следующего обновления ядра. Дальше её чинит тот, кто внедрял, и так на каждом обновлении. Корзина и оформление заказа меняются от версии к версии чаще остального, и их копии ломаются заметнее всего — поэтому оформление заказа модуль переводит событиями, и в его шаблон лезть не нужно вовсе.
Если элементы вы выбираете сами, не нужно и строки: перевод подставляется при выборке.
Счёт за перевод предсказуем
- Очередь запоминает, что изменилось, но сама ничего не переводит. Деньги списываются в момент, когда вы нажимаете кнопку. Обмен с 1С на тысячи позиций поэтому не превращается в неожиданный счёт.
- Сравнение идёт по каждому полю отдельно: поправили заголовок — в перевод уйдёт заголовок, за описание вы не платите второй раз.
- Кнопка «Остановить» проверяется перед каждым платным шагом. Останавливается и фоновое задание, и прогон из браузера, даже если вкладку уже закрыли. После этого перевод продолжается с того же места.
- Баланс и история операций видны в админке, пополнение — оттуда же.
Перевод предсказуем так же, как счёт
- Контекст проекта — несколько предложений о сайте — уходит модели перед каждым переводом. Без него слово «заявка» переводится одним из десятка способов в зависимости от соседних слов.
- Глоссарий задаёт термины, которые модель не подбирает, а берёт у вас: [EN] О компании = About Us, Сбербанк = Sberbank.
- Отказ модели обрабатывается сам. Иногда вместо перевода приходит «я не могу обсуждать эту тему» — срабатывает на безобидных текстах про очереди на границе или таможенные ограничения. Модуль делает три попытки подряд: обычный перевод, повтор со строгой формулировкой, машинный переводчик Яндекса. Поля, которые перевела машина, попадают в отдельный список — глоссарий к ним не применялся, и их стоит просмотреть.
- Сверка находит испорченные переводы — потерянную ссылку, незакрытый тег, оборванный текст. Обычная проверка их не замечает никогда: оригинал не менялся, значит с её точки зрения всё переведено. А на странице при этом может не быть половины текста.
- Правка руками сильнее машины. Перевод, сохранённый человеком, очередь машинным не заменит.
Как с этим работает контент-менеджер
- Переключите язык админки и откройте карточку товара: поля показывают перевод, сохранение записывает перевод, оригинал остаётся нетронутым. Сверху жёлтая плашка, чтобы вы не перепутали, в каком режиме находитесь.
- Фразы интерфейса правятся прямо на странице сайта: клик по фразе открывает маленький редактор, результат сразу виден в вёрстке. Длину текста видно только там — фраза, которая в списке записей выглядит нормальной, на кнопке не помещается, а в узкой колонке разваливает сетку.
- Словарь выгружается в CSV и заливается обратно. Можно выгрузить все языки, отдать переводчику один и залить только его: остальные колонки не затрутся.
Переведённые страницы индексируются
Поисковый робот получает готовую HTML-страницу с переведённым текстом. Ничего не подменяется скриптом на лету и не накладывается поверх оригинала.
Шаблоны title и description переводятся на каждом языке отдельно, поэтому языковые версии не конкурируют между собой в выдаче. Макросы {=this.name} и {=this.property.CODE} подставляют переведённые значения; если модель потеряла макрос при переводе, шаблон не записывается вовсе. Разметка hreflang и файл sitemap настраиваются штатными средствами Битрикса.
Безопасность: что уходит с вашего сервера
Единственный внешний адрес во всём модуле — api.mrlexndr.com. В запросе: строки на перевод, языки, формат, выбранный движок, глоссарий, контекст проекта и домен сайта.
Телеметрии в модуле нет. Данные посетителей, статистика посещений, сведения об установке и содержимое сайта помимо переводимых строк наружу не передаются. Пока вы не запустили перевод, модуль не обращается никуда вовсе.
Ключей Яндекса и Google на сайте заводить не нужно: сайт узнаётся по хешу лицензии Битрикса, а ключи живут на стороне сервиса — красть из настроек модуля нечего. Всё, что меняет данные, идёт методом POST с проверкой токена сессии и права на запись: ссылка, которая что-то меняет, однажды окажется в чужом письме. Служебные консольные скрипты в поставку не входят вовсе.
Переводы остаются вашими
Удаление модуля идёт мастером из двух шагов. Переводы не удаляются ни при какой настройке: словарь и таблица состояния остаются на месте. Это контент, а не служебные данные, и восстановить его неоткуда — вернёте модуль, переводить заново и платить второй раз не придётся. Галочка на первом шаге мастера, включённая по умолчанию, отвечает за другое: за настройки модуля — список языков, глоссарий, контекст и выбранный движок.
Хранятся переводы в штатных объектах Битрикса, а не в собственном формате: языковые свойства элементов (NAME_EN, PREVIEW_TEXT_EN), пользовательские поля разделов, highload-блок со словарём. Прочитать их обычным API Битрикса можно и без установленного модуля.
В коде проекта от модуля остаются вызовы LANG_VAR() и IblockHelper в шаблонах. Убрать их — значит вернуться к исходным русским значениям; сайт при этом продолжит работать. Если такая привязка смущает заранее, заведите свою функцию-обёртку: тогда имя модуля будет знать один файл проекта, и этому в документации посвящена отдельная страница.
Для разработчика
- Публичный интерфейс — LANG_VAR(), Lang::get() и IblockHelper. Спрятать модуль за своей обёрткой, чтобы код проекта не знал его имени, — штатный сценарий, ему посвящена отдельная страница документации.
- Есть и чтение без автосоздания — Lang::peek(), для случаев, когда код фразы приходит из данных, а не из шаблона, и мусорить в словаре не нужно.
- Около двадцати пяти обработчиков событий. Экран «Проверка стенда» показывает, все ли они на месте, и отдаёт паспорт установки: версия модуля, версия PHP, из какого каталога он загружен, какие модули доступны, какие языки целевые, включён ли запуск агентов по расписанию. Отсутствие обработчика снаружи не видно — очередь просто перестаёт наполняться, и ошибки при этом нет.
- Кастомный компонент от штатного ничем не отличается: перевод подставляется в тот массив с элементами, который компонент уже собрал.
- Документация — отдельный раздел на сайте разработчика, от первой установки до внутреннего устройства SEO-хранилища и списка всех сообщений модуля.
Требования
- PHP 8.2 или новее. Требование жёсткое и не декларативное: часть классов модуля объявлена readonly-классами, а такой конструкции до 8.2 не было.
- Модули Битрикса: главный и Highload-блоки; для перевода инфоблоков — «Информационные блоки», для магазина — «Интернет-магазин».
- Исходящий HTTPS до сервиса перевода. Без сети словарь и подстановка переводов на витрине работают, не работает только машинный перевод.
Чего модуль не делает
- Языковые версии сайта делаются языками Битрикса. Если на сайте они устроены иначе — папками или доменами без привязки языка, — модуль будет отдавать один и тот же язык везде.
- Движки перевода: Яндекс и Google Gemini. DeepL нет.
- В шаблон штатного компонента добавляется строка вызова. Готовых рецептов под коммерческие сборки вроде Аспро в документации нет: принцип от шаблона не зависит, а точное место вставки зависит от того шаблона, который у вас реально подключён.
- Включённая перезапись существующих переводов необратима — восстанавливать придётся из бэкапа.
Сколько это стоит
Модуль — 99 990 рублей. Машинный перевод оплачивается отдельно, с баланса, по фактическому расходу: квоты покупать не нужно, минимального пополнения нет. Сайт на тысячу товаров переводится на один язык через Google Gemini от 500 рублей.
Баланс пополняется картой прямо из интерфейса модуля. Нужен счёт — напишите, выставим.
Перед покупкой
Проведём демонстрацию: покажем работу модуля на живом стенде и ответим на вопросы по вашему проекту. Напишите, о чём идёт речь, и договоримся о времени.
Что переводится
- Фразы интерфейса — подписи кнопок, меню, подсказки, тексты блоков вёрстки, письма. Каждая фраза заводится один раз и выводится на языке посетителя.
- Инфоблоки — названия, анонсы, описания, свойства и их значения, подписи свойств, разделы, торговые предложения, справочники Highload-блоков.
- SEO — шаблоны title, description, alt и title картинок на каждом языке, с наследованием по разделам.
- Магазин — названия товаров и свойств на витрине и в корзине, свойства заказа, типы плательщиков, названия платёжных систем и служб доставки, единицы измерения.
- Поиск, хлебные крошки, даты — посетитель английской версии видит результаты выдачи и названия месяцев на своём языке.
Названия платёжных систем и служб доставки ядро Битрикса хранит одним текстом на все языки, поля под перевод там нет вовсе. Модуль переносит их в словарь и переводит как обычные фразы — поэтому оформление заказа на английском выглядит английским целиком, а не наполовину.
Машинным переводом пользоваться необязательно
Модуль остаётся полноценным хранилищем переводов, даже если вы не потратите на машинный перевод ни рубля. Языковые поля создаются, переключение языка работает, подстановка на витрине идёт — а тексты вы заполняете руками: в карточке элемента, в словаре, выгрузкой в CSV и обратно.
Так работают проекты, где перевод делает штатный редактор или бюро: модуль даёт структуру и инструменты, а откуда взялся текст, ему безразлично. Машинный перевод включается тогда, когда руками становится долго.
Разработчик пишет текст прямо в коде
Выносить фразы в языковые файлы заранее не нужно. Текст на базовом языке пишется прямо в шаблоне, вторым аргументом:
<?= LANG_VAR('SUBMIT_BTN', 'Отправить заявку') ?>
При первом показе страницы фраза заводится в словаре сама, с этим самым текстом. Поля остальных языков остаются пустыми — это честное состояние «перевода ещё нет», и ровно такие поля подбирает автоперевод.
Отсюда следствие, ради которого всё и сделано: верстать и программировать можно по-русски, как будто мультиязычности на проекте нет. Сайт работает с первой минуты, словарь наполняется сам, а решение о языках принимается когда угодно потом — тексты к этому моменту уже собраны в одном месте. Отдельного этапа «вынести все надписи шаблона в языковые файлы» в проекте не возникает вовсе.
Переменные подставляются по имени, чтобы фраза оставалась целой: LANG_VAR('DAYS_LEFT', ['COUNT' => 5]) для записи «Осталось #COUNT# дней». Склейка вида LANG_VAR('LEFT') . $n . LANG_VAR('DAYS') не переводится в принципе — в других языках другой порядок слов, — а целую фразу переводчик видит целиком. Один и тот же код, встреченный на странице дважды, даёт одно обращение к базе, а не два.
Копий штатных компонентов в поставке нет
Модуль не подменяет компоненты Битрикса своими копиями. Он подставляет перевод в данные, которые компонент уже получил, — одной строкой в result_modifier.php шаблона:
IblockHelper::substituteStandardFields($arResult);
Копия штатного компонента живёт до следующего обновления ядра. Дальше её чинит тот, кто внедрял, и так на каждом обновлении. Корзина и оформление заказа меняются от версии к версии чаще остального, и их копии ломаются заметнее всего — поэтому оформление заказа модуль переводит событиями, и в его шаблон лезть не нужно вовсе.
Если элементы вы выбираете сами, не нужно и строки: перевод подставляется при выборке.
Счёт за перевод предсказуем
- Очередь запоминает, что изменилось, но сама ничего не переводит. Деньги списываются в момент, когда вы нажимаете кнопку. Обмен с 1С на тысячи позиций поэтому не превращается в неожиданный счёт.
- Сравнение идёт по каждому полю отдельно: поправили заголовок — в перевод уйдёт заголовок, за описание вы не платите второй раз.
- Кнопка «Остановить» проверяется перед каждым платным шагом. Останавливается и фоновое задание, и прогон из браузера, даже если вкладку уже закрыли. После этого перевод продолжается с того же места.
- Баланс и история операций видны в админке, пополнение — оттуда же.
Перевод предсказуем так же, как счёт
- Контекст проекта — несколько предложений о сайте — уходит модели перед каждым переводом. Без него слово «заявка» переводится одним из десятка способов в зависимости от соседних слов.
- Глоссарий задаёт термины, которые модель не подбирает, а берёт у вас: [EN] О компании = About Us, Сбербанк = Sberbank.
- Отказ модели обрабатывается сам. Иногда вместо перевода приходит «я не могу обсуждать эту тему» — срабатывает на безобидных текстах про очереди на границе или таможенные ограничения. Модуль делает три попытки подряд: обычный перевод, повтор со строгой формулировкой, машинный переводчик Яндекса. Поля, которые перевела машина, попадают в отдельный список — глоссарий к ним не применялся, и их стоит просмотреть.
- Сверка находит испорченные переводы — потерянную ссылку, незакрытый тег, оборванный текст. Обычная проверка их не замечает никогда: оригинал не менялся, значит с её точки зрения всё переведено. А на странице при этом может не быть половины текста.
- Правка руками сильнее машины. Перевод, сохранённый человеком, очередь машинным не заменит.
Как с этим работает контент-менеджер
- Переключите язык админки и откройте карточку товара: поля показывают перевод, сохранение записывает перевод, оригинал остаётся нетронутым. Сверху жёлтая плашка, чтобы вы не перепутали, в каком режиме находитесь.
- Фразы интерфейса правятся прямо на странице сайта: клик по фразе открывает маленький редактор, результат сразу виден в вёрстке. Длину текста видно только там — фраза, которая в списке записей выглядит нормальной, на кнопке не помещается, а в узкой колонке разваливает сетку.
- Словарь выгружается в CSV и заливается обратно. Можно выгрузить все языки, отдать переводчику один и залить только его: остальные колонки не затрутся.
Переведённые страницы индексируются
Поисковый робот получает готовую HTML-страницу с переведённым текстом. Ничего не подменяется скриптом на лету и не накладывается поверх оригинала.
Шаблоны title и description переводятся на каждом языке отдельно, поэтому языковые версии не конкурируют между собой в выдаче. Макросы {=this.name} и {=this.property.CODE} подставляют переведённые значения; если модель потеряла макрос при переводе, шаблон не записывается вовсе. Разметка hreflang и файл sitemap настраиваются штатными средствами Битрикса.
Что уходит с вашего сервера
Единственный внешний адрес во всём модуле — api.mrlexndr.com. В запросе уходят тексты на перевод, языки, формат, выбранный движок, глоссарий, контекст проекта и домен сайта. Данные посетителей, статистика посещений и содержимое сайта помимо переводимых строк наружу не передаются.
Ключей Яндекса и Google на сайте заводить не нужно: сайт узнаётся по хешу лицензии Битрикса. Всё, что меняет данные, идёт методом POST с проверкой токена сессии и права на запись. Служебные консольные скрипты в поставку не входят.
Для разработчика
- Публичный интерфейс — LANG_VAR(), Lang::get() и IblockHelper. Спрятать модуль за своей обёрткой, чтобы код проекта не знал его имени, — штатный сценарий, ему посвящена отдельная страница документации.
- Есть и чтение без автосоздания — Lang::peek(), для случаев, когда код фразы приходит из данных, а не из шаблона, и мусорить в словаре не нужно.
- Около двадцати пяти обработчиков событий. Экран «Проверка стенда» показывает, все ли они на месте, и отдаёт паспорт установки: версия модуля, версия PHP, из какого каталога он загружен, какие модули доступны, какие языки целевые, включён ли запуск агентов по расписанию. Отсутствие обработчика снаружи не видно — очередь просто перестаёт наполняться, и ошибки при этом нет.
- Кастомный компонент от штатного ничем не отличается: перевод подставляется в тот массив с элементами, который компонент уже собрал.
- Документация — отдельный раздел на сайте разработчика, от первой установки до внутреннего устройства SEO-хранилища и списка всех сообщений модуля.
Требования
- PHP 8.2 или новее. Требование жёсткое и не декларативное: часть классов модуля объявлена readonly-классами, а такой конструкции до 8.2 не было.
- Модули Битрикса: главный и Highload-блоки; для перевода инфоблоков — «Информационные блоки», для магазина — «Интернет-магазин».
- Исходящий HTTPS до сервиса перевода. Без сети словарь и подстановка переводов на витрине работают, не работает только машинный перевод.
Чего модуль не делает
- Языковые версии сайта делаются языками Битрикса. Если на сайте они устроены иначе — папками или доменами без привязки языка, — модуль будет отдавать один и тот же язык везде.
- Движки перевода: Яндекс и Google Gemini. DeepL нет.
- В шаблон штатного компонента добавляется строка вызова. Готовых рецептов под коммерческие сборки вроде Аспро в документации нет: принцип от шаблона не зависит, а точное место вставки зависит от того шаблона, который у вас реально подключён.
- Включённая перезапись существующих переводов необратима — восстанавливать придётся из бэкапа.
Сколько это стоит
Машинный перевод оплачивается отдельно, с баланса, по фактическому расходу: квоты покупать не нужно, минимального пополнения нет. Сайт на тысячу товаров переводится на один язык через Google Gemini от 500 рублей.
Баланс пополняется картой прямо из интерфейса модуля. Нужен счёт — напишите, выставим.
Перед покупкой
Проведём демонстрацию: покажем работу модуля на живом стенде и ответим на вопросы по вашему проекту. Напишите, о чём идёт речь, и договоримся о времени.
Что нужно до установки
- PHP 8.2 или новее. Требование жёсткое и не декларативное: часть классов модуля объявлена readonly-классами, а такой конструкции до 8.2 не было. На более старой версии установка отменится с сообщени
Что нужно до установки
- PHP 8.2 или новее. Требование жёсткое и не декларативное: часть классов модуля объявлена readonly-классами, а такой конструкции до 8.2 не было. На более старой версии установка отменится с сообщением.
- Модули Битрикса: главный и «Highload-блоки». Для перевода инфоблоков — «Информационные блоки», для магазина — «Интернет-магазин».
- Расширения PHP: curl, mbstring, iconv, json, openssl.
- Права на запись у веб-сервера: /bitrix/cache/ и /local/styles/.
- Исходящий HTTPS до api.mrlexndr.com — только для машинного перевода, баланса и пополнения. Без сети словарь и подстановка переводов на витрине работают.
Других модулей ставить не нужно. У решения нет зависимости от отдельного «ядра» разработчика: всё, что модулю требуется, он создаёт сам.
Установка
Marketplace → Установленные решения → Установить, дальше мастер до конца.Если вы разворачиваете модуль вручную — кладите каталог в /local/modules/mrlexndr.translate/, а не в /bitrix/modules/. Каталог /local/ не трогают обновления ядра, и он обычно под системой контроля версий. Держать две копии в обоих каталогах не нужно: Битрикс возьмёт ту, что в /local/, и правки во вторую перестанут что-либо менять.
Что появится после установки
- Highload-блок «Словарь сайта» — хранилище фраз интерфейса, с полем на каждый активный язык сайта.
- Таблица состояния b_mrlexndr_translate_state — очередь перевода и отметки о том, что переведено, что устарело и что перевести не удалось.
- Около двадцати пяти обработчиков событий и одно фоновое задание с периодом 60 секунд. Простаивающее задание читает состояние и выходит: нагрузки оно не создаёт и платной работы само не начинает.
- Права — администраторским группам выдаётся доступ на запись. Выданные вручную права не трогаются: доступ досевается только тем группам, у которых его не было, иначе установка модуля отменяла бы решения администратора.
Пять шагов до первой переведённой страницы
Установка — один шаг. Настройка занимает пять, и каждый из них вы делаете сами.- Завести язык в Битриксе: Настройки → Настройки продукта → Сайт → Языки. Это язык самой платформы, модуль тут ни при чём — но поле под новый язык в словаре появится сразу после сохранения.
- Отметить язык целевым: Модули mrLexndr → Инфоблоки → вкладка «Языки». Язык, заведённый в Битриксе, но не отмеченный здесь, модуль игнорирует полностью. Языковая версия сайта и желание её переводить — разные вещи.
- Создать языковые свойства инфоблоков — там же, вкладка «Синхронизация».
- Заполнить переводы. Весь каталог разом с экрана «Перевод», точечно кнопкой на карточке элемента — или руками: машинный перевод необязателен, модуль работает и как хранилище переводов, сделанных вашим редактором или бюро.
- Вывести на сайте. Фразы интерфейса выводятся вызовом LANG_VAR() с текстом прямо в шаблоне. Для инфоблоков подстановка идёт при выборке, и шаблон обычно менять не нужно; в штатный компонент добавляется одна строка в result_modifier.php.
Каждый шаг разобран в документации отдельно, а все пять подряд — в сквозном сценарии «Добавить язык»: от языка в настройках Битрикса до выведенной на странице фразы.
Если проект уже живёт на языковых файлах
На экране «Словарь HL» есть миграция: модуль просматривает /local/templates, /local/components и /local/php_interface, собирает все $MESS и заводит в словаре записи для тех кодов, которых там ещё нет. Существующие коды пропускаются, ничего не перетирается, в отчёте видно, сколько импортировано и сколько пропущено.Старые языковые файлы удалять сразу не нужно: пока шаблон зовёт $MESS, он читает их, а не словарь. Переезд — это замена вызовов в шаблонах, и делать её можно постепенно, по одному шаблону за раз.
Почему свойства не создаются сами
До версии 6.0.0 языковые свойства создавал фоновый агент. От этого отказались намеренно: размножение свойств по всему каталогу — операция, которую администратор должен запускать осознанно, а не обнаруживать постфактум, разбираясь, откуда в инфоблоке взялось втрое больше свойств.По той же причине модуль не переводит сам при сохранении элемента. Очередь запоминает, что изменилось, а перевод запускаете вы: обмен с 1С на тысячи позиций иначе превращался бы в неожиданный счёт.
Проверка после установки
В модуле есть экран «Проверка стенда». Он показывает паспорт установки — версию модуля, версию PHP, из какого каталога модуль загружен, какие модули Битрикса доступны, какие языки целевые, включён ли запуск агентов по расписанию, — и прогоняет проверки: встали ли обработчики событий, в порядке ли схема базы, не противоречат ли друг другу настройки.Открывать его стоит сразу после установки и после каждого обновления. Отсутствие обработчика события снаружи не видно: ошибки нет, очередь просто перестаёт наполняться, зеркало языка не появляется, — и причину ищут не там. Полный чек-лист из пятнадцати минут есть в документации.
Коммерческие шаблоны
Готовых рецептов «вставьте вот сюда» под Аспро, Next и подобные сборки в документации нет: мы их под рукой не держим и придумывать наугад не будем. Принцип от шаблона не зависит — вызов идёт в result_modifier.php того шаблона, который у вас реально подключён. Если шаблон выбирает элементы сам, не нужно и вызова: перевод подставляется при выборке.Обновление
Выложить файлы и нажать «Обновить» в Маркетплейсе. Второй шаг обязателен, а не формален: часть файлов модуль раскладывает вне своего каталога — стили, скрипты, заглушки страниц админки, — и без обновления они останутся от прежней версии.Версию PHP проверьте до того, как зальёте файлы. На версии старее 8.2 обновление откажется само и базу не тронет, но файлы к тому моменту уже заменены, и вернуть их сможет только бэкап.
Удаление
Удаление идёт мастером из двух шагов, с предупреждением и подтверждением. Снимаются обработчики событий, фоновое задание, права и служебные файлы.Переводы остаются всегда, при любых настройках: это контент, а не служебные данные, и восстановить его неоткуда. Если модуль вернуть, переводить заново и платить второй раз не придётся.
Галочка на первом шаге мастера, включённая по умолчанию, отвечает не за переводы, а за настройки модуля: список языков, глоссарий, контекст проекта и выбранный движок. Снимете — уйдут они, переводы всё равно останутся.
Если что-то пойдёт не так
Модуль не подменяет стандартные объекты Битрикса и не держит в поставке копий штатных компонентов. Даже полное удаление каталога сайт не ломает: пропадёт подстановка переводов, и посетитель увидит исходные русские значения. Модуль перевода не может стать причиной недоступности сайта, и искать в нём причину аварии не нужно.Документация и помощь
Полная документация — https://mrlexndr.com/docs/translate/. Там первая установка, сквозной сценарий «добавить язык», рецепты под штатные компоненты, внутреннее устройство SEO-хранилища, полный список сообщений модуля и разбор частых случаев вида «перевод записан, а на странице по-прежнему русский».Перед покупкой проведём демонстрацию: покажем работу модуля на живом стенде и ответим на вопросы по вашему проекту. Напишите, о чём идёт речь, и договоримся о времени.
ем. - PHP 8.2 или новее. Требование жёсткое и не декларативное: часть классов модуля объявлена readonly-классами, а такой конструкции до 8.2 не было. На более старой версии установка отменится с сообщением.
- Модули Битрикса: главный и «Highload-блоки». Для перевода инфоблоков — «Информационные блоки», для магазина — «Интернет-магазин».
- Расширения PHP: curl, mbstring, iconv, json, openssl.
- Права на запись у веб-сервера: /bitrix/cache/ и /local/styles/.
- Исходящий HTTPS до api.mrlexndr.com — только для машинного перевода, баланса и пополнения. Без сети словарь и подстановка переводов на витрине работают.
Других модулей ставить не нужно. У решения нет зависимости от отдельного «ядра» разработчика: всё, что модулю требуется, он создаёт сам.
Установка
Marketplace → Установленные решения → Установить, дальше мастер до конца.
Если вы разворачиваете модуль вручную — кладите каталог в /local/modules/mrlexndr.translate/, а не в /bitrix/modules/. Каталог /local/ не трогают обновления ядра, и он обычно под системой контроля версий. Держать две копии в обоих каталогах не нужно: Битрикс возьмёт ту, что в /local/, и правки во вторую перестанут что-либо менять.
Что появится после установки
- Highload-блок «Словарь сайта» — хранилище фраз интерфейса, с полем на каждый активный язык сайта.
- Таблица состояния b_mrlexndr_translate_state — очередь перевода и отметки о том, что переведено, что устарело и что перевести не удалось.
- Около двадцати пяти обработчиков событий и одно фоновое задание с периодом 60 секунд. Простаивающее задание читает состояние и выходит: нагрузки оно не создаёт и платной работы само не начинает.
- Права — администраторским группам выдаётся доступ на запись. Выданные вручную права не трогаются: доступ досевается только тем группам, у которых его не было, иначе установка модуля отменяла бы решения администратора.
Пять шагов до первой переведённой страницы
Установка — один шаг. Настройка занимает пять, и каждый из них вы делаете сами.
- Завести язык в Битриксе: Настройки → Настройки продукта → Сайт → Языки. Это язык самой платформы, модуль тут ни при чём — но поле под новый язык в словаре появится сразу после сохранения.
- Отметить язык целевым: Модули mrLexndr → Инфоблоки → вкладка «Языки». Язык, заведённый в Битриксе, но не отмеченный здесь, модуль игнорирует полностью. Языковая версия сайта и желание её переводить — разные вещи.
- Создать языковые свойства инфоблоков — там же, вкладка «Синхронизация».
- Заполнить переводы. Весь каталог разом с экрана «Перевод», точечно кнопкой на карточке элемента — или руками: машинный перевод необязателен, модуль работает и как хранилище переводов, сделанных вашим редактором или бюро.
- Вывести на сайте. Фразы интерфейса выводятся вызовом LANG_VAR() с текстом прямо в шаблоне. Для инфоблоков подстановка идёт при выборке, и шаблон обычно менять не нужно; в штатный компонент добавляется одна строка в result_modifier.php.
Каждый шаг разобран в документации отдельно, а все пять подряд — в сквозном сценарии «Добавить язык»: от языка в настройках Битрикса до выведенной на странице фразы.
Почему свойства не создаются сами
До версии 6.0.0 языковые свойства создавал фоновый агент. От этого отказались намеренно: размножение свойств по всему каталогу — операция, которую администратор должен запускать осознанно, а не обнаруживать постфактум, разбираясь, откуда в инфоблоке взялось втрое больше свойств.
По той же причине модуль не переводит сам при сохранении элемента. Очередь запоминает, что изменилось, а перевод запускаете вы: обмен с 1С на тысячи позиций иначе превращался бы в неожиданный счёт.
Проверка после установки
В модуле есть экран «Проверка стенда». Он показывает паспорт установки — версию модуля, версию PHP, из какого каталога модуль загружен, какие модули Битрикса доступны, какие языки целевые, включён ли запуск агентов по расписанию, — и прогоняет проверки: встали ли обработчики событий, в порядке ли схема базы, не противоречат ли друг другу настройки.
Открывать его стоит сразу после установки и после каждого обновления. Отсутствие обработчика события снаружи не видно: ошибки нет, очередь просто перестаёт наполняться, зеркало языка не появляется, — и причину ищут не там. Полный чек-лист из пятнадцати минут есть в документации.
Коммерческие шаблоны
Готовых рецептов «вставьте вот сюда» под Аспро, Next и подобные сборки в документации нет: мы их под рукой не держим и придумывать наугад не будем. Принцип от шаблона не зависит — вызов идёт в result_modifier.php того шаблона, который у вас реально подключён. Если шаблон выбирает элементы сам, не нужно и вызова: перевод подставляется при выборке.
Обновление
Выложить файлы и нажать «Обновить» в Маркетплейсе. Второй шаг обязателен, а не формален: часть файлов модуль раскладывает вне своего каталога — стили, скрипты, заглушки страниц админки, — и без обновления они останутся от прежней версии.
Версию PHP проверьте до того, как зальёте файлы. На версии старее 8.2 обновление откажется само и базу не тронет, но файлы к тому моменту уже заменены, и вернуть их сможет только бэкап.
Удаление
Удаление идёт мастером из двух шагов, с предупреждением и подтверждением. Снимаются обработчики событий, фоновое задание, права и служебные файлы.
Переводы остаются всегда, при любых настройках: это контент, а не служебные данные, и восстановить его неоткуда. Если модуль вернуть, переводить заново и платить второй раз не придётся.
Если что-то пойдёт не так
Модуль не подменяет стандартные объекты Битрикса и не держит в поставке копий штатных компонентов. Даже полное удаление каталога сайт не ломает: пропадёт подстановка переводов, и посетитель увидит исходные русские значения. Модуль перевода не может стать причиной недоступности сайта, и искать в нём причину аварии не нужно.
Документация и помощь
Полная документация — https://mrlexndr.com/docs/translate/. Там первая установка, сквозной сценарий «добавить язык», рецепты под штатные компоненты, внутреннее устройство SEO-хранилища, полный список сообщений модуля и разбор частых случаев вида «перевод записан, а на странице по-прежнему русский».
Перед покупкой проведём демонстрацию: покажем работу модуля на живом стенде и ответим на вопросы по вашему проекту. Напишите, о чём идёт речь, и договоримся о времени.
Что нужно до установки
- PHP 8.2 или новее. Требование жёсткое и не декларативное: часть классов модуля объявлена readonly-классами, а такой конструкции до 8.2 не было. На более старой версии установка отменится с сообщением.
- Модули Битрикса: главный и «Highload-блоки». Для перевода инфоблоков — «Информационные блоки», для магазина — «Интернет-магазин».
- Расширения PHP: curl, mbstring, iconv, json, openssl.
- Права на запись у веб-сервера: /bitrix/cache/ и /local/styles/.
- Исходящий HTTPS до api.mrlexndr.com — только для машинного перевода, баланса и пополнения. Без сети словарь и подстановка переводов на витрине работают.
Других модулей ставить не нужно. У решения нет зависимости от отдельного «ядра» разработчика: всё, что модулю требуется, он создаёт сам.
Установка
Marketplace → Установленные решения → Установить, дальше мастер до конца.
Если вы разворачиваете модуль вручную — кладите каталог в /local/modules/mrlexndr.translate/, а не в /bitrix/modules/. Каталог /local/ не трогают обновления ядра, и он обычно под системой контроля версий. Держать две копии в обоих каталогах не нужно: Битрикс возьмёт ту, что в /local/, и правки во вторую перестанут что-либо менять.
Что появится после установки
- Highload-блок «Словарь сайта» — хранилище фраз интерфейса, с полем на каждый активный язык сайта.
- Таблица состояния b_mrlexndr_translate_state — очередь перевода и отметки о том, что переведено, что устарело и что перевести не удалось.
- Около двадцати пяти обработчиков событий и одно фоновое задание с периодом 60 секунд. Простаивающее задание читает состояние и выходит: нагрузки оно не создаёт и платной работы само не начинает.
- Права — администраторским группам выдаётся доступ на запись. Выданные вручную права не трогаются: доступ досевается только тем группам, у которых его не было, иначе установка модуля отменяла бы решения администратора.
Пять шагов до первой переведённой страницы
Установка — один шаг. Настройка занимает пять, и каждый из них вы делаете сами.
- Завести язык в Битриксе: Настройки → Настройки продукта → Сайт → Языки. Это язык самой платформы, модуль тут ни при чём — но поле под новый язык в словаре появится сразу после сохранения.
- Отметить язык целевым: Модули mrLexndr → Инфоблоки → вкладка «Языки». Язык, заведённый в Битриксе, но не отмеченный здесь, модуль игнорирует полностью. Языковая версия сайта и желание её переводить — разные вещи.
- Создать языковые свойства инфоблоков — там же, вкладка «Синхронизация».
- Заполнить переводы. Весь каталог разом с экрана «Перевод», точечно кнопкой на карточке элемента — или руками: машинный перевод необязателен, модуль работает и как хранилище переводов, сделанных вашим редактором или бюро.
- Вывести на сайте. Фразы интерфейса выводятся вызовом LANG_VAR() с текстом прямо в шаблоне. Для инфоблоков подстановка идёт при выборке, и шаблон обычно менять не нужно; в штатный компонент добавляется одна строка в result_modifier.php.
Каждый шаг разобран в документации отдельно, а все пять подряд — в сквозном сценарии «Добавить язык»: от языка в настройках Битрикса до выведенной на странице фразы.
Почему свойства не создаются сами
До версии 6.0.0 языковые свойства создавал фоновый агент. От этого отказались намеренно: размножение свойств по всему каталогу — операция, которую администратор должен запускать осознанно, а не обнаруживать постфактум, разбираясь, откуда в инфоблоке взялось втрое больше свойств.
По той же причине модуль не переводит сам при сохранении элемента. Очередь запоминает, что изменилось, а перевод запускаете вы: обмен с 1С на тысячи позиций иначе превращался бы в неожиданный счёт.
Проверка после установки
В модуле есть экран «Проверка стенда». Он показывает паспорт установки — версию модуля, версию PHP, из какого каталога модуль загружен, какие модули Битрикса доступны, какие языки целевые, включён ли запуск агентов по расписанию, — и прогоняет проверки: встали ли обработчики событий, в порядке ли схема базы, не противоречат ли друг другу настройки.
Открывать его стоит сразу после установки и после каждого обновления. Отсутствие обработчика события снаружи не видно: ошибки нет, очередь просто перестаёт наполняться, зеркало языка не появляется, — и причину ищут не там. Полный чек-лист из пятнадцати минут есть в документации.
Коммерческие шаблоны
Готовых рецептов «вставьте вот сюда» под Аспро, Next и подобные сборки в документации нет: мы их под рукой не держим и придумывать наугад не будем. Принцип от шаблона не зависит — вызов идёт в result_modifier.php того шаблона, который у вас реально подключён. Если шаблон выбирает элементы сам, не нужно и вызова: перевод подставляется при выборке.
Обновление
Выложить файлы и нажать «Обновить» в Маркетплейсе. Второй шаг обязателен, а не формален: часть файлов модуль раскладывает вне своего каталога — стили, скрипты, заглушки страниц админки, — и без обновления они останутся от прежней версии.
Версию PHP проверьте до того, как зальёте файлы. На версии старее 8.2 обновление откажется само и базу не тронет, но файлы к тому моменту уже заменены, и вернуть их сможет только бэкап.
Удаление
Удаление идёт мастером из двух шагов, с предупреждением и подтверждением. Снимаются обработчики событий, фоновое задание, права и служебные файлы.
Переводы остаются всегда, при любых настройках: это контент, а не служебные данные, и восстановить его неоткуда. Если модуль вернуть, переводить заново и платить второй раз не придётся.
Если что-то пойдёт не так
Модуль не подменяет стандартные объекты Битрикса и не держит в поставке копий штатных компонентов. Даже полное удаление каталога сайт не ломает: пропадёт подстановка переводов, и посетитель увидит исходные русские значения. Модуль перевода не может стать причиной недоступности сайта, и искать в нём причину аварии не нужно.
Документация и помощь
Полная документация — https://mrlexndr.com/docs/translate/. Там первая установка, сквозной сценарий «добавить язык», рецепты под штатные компоненты, внутреннее устройство SEO-хранилища, полный список сообщений модуля и разбор частых случаев вида «перевод записан, а на странице по-прежнему русский».
Перед покупкой проведём демонстрацию: покажем работу модуля на живом стенде и ответим на вопросы по вашему проекту. Напишите, о чём идёт речь, и договоримся о времени.
Каналы связи:
E-mail: mrlexndr@gmail.com
- Сайт разработчика: https://mrlexndr.com
Регламент работы службы поддержки:
График работы: Понедельник — Пятница, с 10:00 до 19:00 (по Московскому времени).
Выходные дни: Суббота, Воскресенье и государственные праздники РФ.
Время реакции на обращение: до 48 часов в рабочие дни.
При обращении в поддержку, пожалуйста, указывайте:
Адрес сайта, на котором установлен модуль.
- Версию модуля и редакцию 1С-Битрикс.
- Подробное описание проблемы или вопрос.
Для покупки товара в нашем интернет-магазине выберите понравившийся товар и добавьте его в корзину. Далее перейдите в Корзину и нажмите на «Оформить заказ» или «Быстрый заказ».
Если оформляете быстрый заказ: напишите ФИО, телефон и e-mail. Вам перезвонит менеджер и уточнит условия заказа. По результатам разговора вам придет подтверждение оформления товара на почту или через СМС. Теперь останется только ждать доставки и радоваться новой покупке.
Оформление заказа в стандартном режиме выглядит следующим образом. Заполняете полностью форму по последовательным этапам: адрес, способ доставки, оплаты, данные о себе. Советуем в комментарии к заказу написать информацию, которая поможет курьеру вас найти. Нажмите кнопку «Оформить заказ».
Оплачивайте покупки удобным способом. В интернет-магазине доступно 3 варианта оплаты:
- Наличные при самовывозе или доставке курьером. Специалист свяжется с вами в день доставки, чтобы уточнить время и заранее подготовить сдачу с любой купюры. Вы подписываете товаросопроводительные документы, вносите денежные средства, получаете товар и чек.
- Безналичный расчет при самовывозе или оформлении в интернет-магазине: карты МИР. Чтобы оплатить покупку на сайте, система перенаправит вас на сервер платежной системы. Здесь нужно ввести номер карты, срок действия и имя держателя.
- Электронные системы при онлайн-заказе: ЮMoney. Для совершения покупки система перенаправит вас на страницу платежного сервиса. Здесь необходимо заполнить форму по инструкции.
- Безналичная оплата на наш расчетный счет по выставленному счету.
Экономьте время на получении заказа. В интернет-магазине доступно 4 варианта доставки:
- Электронная поставка - все необходимые сведения о лицензии, праве пользования, кодах, ключах и др. высылаются покупателю на его e-mail.
- Курьерская доставка. Когда товар будет отправлен с нашего склада, Вам придет уведомление. В день доставки с Вами заблаговременно свяжется курьер для уточнения времени и деталей доставки. Доставка производится "до двери". Осмотрите упаковку на целостность и соответствие указанной комплектации.
- Постамат. Когда заказ поступит на точку, на Ваш телефон или e-mail придет уникальный код. Заказ нужно оплатить в терминале постамата. Срок хранения — 3 дня.
- Доставка Почтой России. Когда заказ придет в отделение, на Ваш адрес придет извещение о посылке. Перед оплатой Вы можете оценить состояние коробки: вес, целостность. Вскрывать коробку самостоятельно Вы можете только после оплаты заказа. Один заказ может содержать не больше 10 позиций и его стоимость не должна превышать 100 000 р.
Дополнительная информация.
Изучите полный алгоритм продления лицензий на модули 1С-Битрикс: Маркетплейс, включая активацию льготных купонов. Мы детально разбираем все условия: обязательный 30-дневный срок для сохранения максимальной выгоды, пропорциональное ценообразование (12,5%, 25%, 50% от цены модуля) и ограничение по минимальной сумме в 500 рублей. Этот гайд поможет вам эффективно планировать бюджет и гарантировать актуальность вашего проекта.