Локализация блока
Выберите инструмент для разработки с AI-агентом:
- используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
- используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации
Локализация блока задает переводы подписей интерфейса, которые пользователь видит в редакторе сайта: название блока, названия нод, карточек, полей атрибутов и пунктов меню. Переводы описывают в файле манифеста через ключи lang_original и lang.
Локализация нужна пользовательским блокам, которые приложение добавляет в репозиторий методом landing.repo.register. Типовой сценарий — приложение Маркетплейса со своими блоками, которое устанавливают в Битрикс24 с разными языками интерфейса. Системные блоки Битрикс24 переводятся языковыми файлами продукта и ключи lang_original и lang не используют.
Границы темы:
- локализация не переводит контент блока. Текст, ссылки и изображения, которые пользователь ввел в блоке на странице, хранятся в контенте и остаются на исходном языке
- ключи
lang_originalиlangс теми же именами есть у пользовательских шаблонов сайтов, но это отдельный механизм с другим набором переводимых полей. Он описан в статье Локализация шаблона
Как добавить локализацию
- Соберите манифест блока на одном языке.
- Передайте код этого языка в
lang_original. - Соберите массив
lang: для каждого языка перечислите исходные фразы манифеста и их переводы. - Зарегистрируйте блок методом landing.repo.register, передав
lang_originalиlangв параметреmanifest. - Добавьте блок на страницу и вызовите landing.block.getmanifest. В ответе значения
nameдолжны прийти на языке Битрикс24, ключlang— отсутствовать, аlang_original— сохраниться в исходном виде.
Ключи локализации в манифесте
lang_original— код исходного языка фраз в манифесте, напримерrulang— набор переводов по кодам языков
Код языка совпадает с кодом языка Битрикс24. Текущий язык возвращает метод app.info в поле LANGUAGE_ID.
В массиве lang ключами выступают исходные фразы из манифеста, а значениями — переводы этих фраз.
Пример:
'lang_original' => 'ru',
'lang' => [
'en' => [
'Заголовок с разделителем на светлом фоне' => 'Title with a separator on a light background',
'Кнопка' => 'Button',
],
'de' => [
'Заголовок с разделителем на светлом фоне' => 'Titel mit Trennlinie auf hellem Hintergrund',
'Кнопка' => 'Schaltfläche',
],
],
Какие подписи участвуют в переводе
Система обходит манифест целиком и подменяет значения только у ключей name на любом уровне вложенности. Другие ключи не переводятся, даже если в lang есть подходящая фраза.
Ключи name, которые встречаются в манифесте:
|
Ключ манифеста |
Что это за подпись |
|
|
Название блока в каталоге блоков и в списке репозитория |
|
|
Название ноды в форме редактирования блока |
|
|
Название группы карточек |
|
|
Название пресета карточки в списке |
|
|
Подпись элемента в панели стилей, если она задана ключом |
|
|
Название поля атрибута в редакторе. У элемента-группы — название самой группы |
|
|
Название поля внутри группы атрибутов |
|
|
Подпись варианта в списочных типах атрибутов: |
|
|
Название поля атрибута, выведенного в форму дизайна |
|
|
Название поля атрибута, заданного отдельно для карточки |
|
|
Название меню в интерфейсе |
|
|
Название ноды внутри пункта меню |
Таблица перечисляет места, где ключ name встречается в типовом манифесте. Правило шире таблицы: переводится любой ключ name на любом уровне вложенности, поэтому проверяйте свой манифест целиком.
Не переводятся:
block.description— описание блокаstyle.nodes.<селектор>.title— подпись элемента в панели стилей, заданная ключомtitle- служебные поля атрибутов:
placeholder,title,stubText - значения
valueв спискахitems - селекторы, коды разделов, типы нод и типы стилей
В примере манифеста подписи в style.nodes заданы то ключом name, то ключом title. Если такую подпись нужно переводить, укажите ее ключом name.
Пример манифеста с подписями, которые попадут в перевод:
$manifest = [
'block' => [
'name' => 'Заголовок с разделителем',
'section' => ['text'],
],
'nodes' => [
'.landing-block-node-title' => [
'name' => 'Заголовок',
'type' => 'text',
],
],
'lang_original' => 'ru',
'lang' => [
'en' => [
'Заголовок с разделителем' => 'Title with a separator',
'Заголовок' => 'Title',
],
],
];
Как система выбирает перевод
Система выбирает одну ветку языка из массива lang и применяет ее ко всему манифесту:
- Определяет язык Битрикс24. Для языков
ru,kz,byиuzиспользуется веткаru. - Если ветка с этим кодом есть в
lang, берет переводы из нее. - Если ветки нет, а
lang_originalотличается от языка Битрикс24, берет переводы из веткиen. - Если подходящей ветки нет, оставляет исходные фразы манифеста.
Внутри выбранной ветки перевод подставляется только для тех фраз, которые есть в ней как ключи. Фразы без перевода остаются на языке lang_original.
Какие методы возвращают переведенный манифест
|
Метод |
Что возвращает |
|
Манифест блока, размещенного на странице, с уже подставленными переводами. Ключ |
|
|
Исходный манифест блока без подстановки переводов, вместе с ключами |
|
|
Список блоков репозитория, где переводится только название блока. Остальные подписи в этот ответ не входят |
Чтобы увидеть переводы, вызывайте landing.block.getmanifest для блока, уже добавленного на страницу. Язык подстановки задает язык Битрикс24, а не параметр метода.
В ответе этого метода проверьте:
- значения
nameвblock,nodes,cards,attrsиmenu— они должны быть на языке Битрикс24 - ключ
lang— его в ответе нет, система удаляет его после подстановки переводов - ключ
lang_original— он остается в том виде, в котором был передан при регистрации
Если значения name пришли на исходном языке, сверьте фразы-ключи в lang со строками манифеста и проверьте, есть ли в lang ветка для языка Битрикс24 или ветка en.
Права и ограничения
Scope:
landingКто может выполнять метод: в зависимости от метода
Ограничения локализации:
- переводится только значение ключа
name - ключом перевода служит точная строка из манифеста, включая регистр, пробелы и знаки препинания
- одна фраза переводится одинаково во всех местах манифеста, отдельный перевод для конкретного селектора задать нельзя
- коды веток в
langограничены кодами языков, доступных в Битрикс24. Ветка с кодом, которого нет среди языков интерфейса, не будет выбрана
Что учитывать
- Указывайте в
lang_originalтот язык, на котором фразы записаны в манифесте. Если значение не совпадает с фактическим языком, запасная веткаenне сработает. - Задавайте одинаковый набор ключей во всех языковых ветках, чтобы интерфейс не смешивал языки.
- Различайте подписи с разным смыслом уже на исходном языке. Например, вместо двух подписей «Название» используйте «Название блока» и «Название кнопки».
- Заводите отдельную ветку
en, даже если основной язык блока другой. Она используется как запасной вариант для языков без своего перевода.