Модуль «Мультиязичність: Інфоблоки різними мовами» за останні півтора місяці пройшов шлях від критичного оновлення безпеки до помітного розширення функціональності — масового автопереведення Highload-блоків, підтримки глосарію DeepL та перенесення керування примусовим переведенням із коду в інтерфейс адмінки. Розберемо, що змінилося у кожній із версій.
Версія 2.6.46 - обов'язкове оновлення безпеки
31 травня вийшла версія з важливим оновленням безпеки: були усунені вразливості, виявлені за вимогами технічної перевірки 1С-Бітрікс Маркетплейс, - обхід автентифікації та розкриття інформації в AJAX-ендпоінті інфоблоків, що зберігається XSS в налаштуваннях модуля, небезпечна десеріалізація, а також Розробники відзначили це оновлення як обов'язкове для всіх користувачів модуля.
Крім усунення вразливостей, у цій версії:
- Виправлено збереження та читання записів режиму перекладу Highload-блоків — коректна робота з таблицями mm_hl_*, обробка рядкових полів користувача через COALESCE та множинних полів після вибірки.
- Знижено кількість зайвих запитів до бази даних під час компіляції сутностей та отримання списків за рахунок кешування перевірки таблиць та оптимізації обходу UF-полів.
- Неперекладні поля HL (файли, прив'язки до інших HL-блоків) у режимі перекладу тепер відображаються лише для перегляду, без помилок сервісу токенів диска, а файли доступні через стандартний механізм завантаження.
Версія 2.7.0 - масовий автопереклад Highload-блоків
30 червня в модуль додано одну з найпомітніших нових можливостей — масове автопереведення записів Highload-блоків. У меню «Мультимовність» з'явився окремий пункт «Масовий автопереклад Highload-блоків», де в налаштуваннях можна вибрати потрібні HL-блоки та встановити мови перекладу для кожного з них. Реалізовано перепустку вже переведених записів та можливість продовжити обробку з останнього місця зупинки.
Також у цій версії:
- Доданий пошуковий індекс для перекладів розділів інфоблоків – при збереженні розділу та переіндексації пошуку оновлюється поле SEARCHABLE_CONTENT у таблиці перекладів, тому пошук по розділах тепер враховує переведену назву та опис.
- Виправлено збереження перекладів при редагуванні елементів і розділів - коректна обробка полів користувача типу customhtml (включаючи множинні значення) і customfaq, а також підказок розумного фільтра у властивостей розділу.
- Виправлено збереження множинних властивостей елементів у режимі перекладу - значення тепер коректно прив'язуються до рядків оригіналу, нові пункти FAQ додаються до базової таблиці властивостей без помилок, а видалені переклади очищаються без втрати даних оригіналу.
- Виправлений автопереклад Highload-блоків — метадані UF та значення для перекладу беруться з основної сутності HL, а не з порожньої службової таблиці, через що раніше автопереклад міг пропускати частину полів.
- Додано єдиний механізм читання значень полів користувача з форми в режимі перекладу через подію OnResolveUserFieldPostValue, що спрощує підключення власних типів полів без правок ядра модуля.
- Покращена нормалізація значень властивостей та UF перед записом у таблиці перекладів – коректна серіалізація HTML-полів, файлів та складових типів даних.
Версія 2.7.1 - підтримка глосарію DeepL
14 липня вийшло оновлення, що додало підтримку глосарію DeepL при автоперекладі: при встановленому окремому модулі «Глосарій DeepL» та синхронізованій мовній парі переклад тепер враховує зафіксовані у глосарії терміни.
Крім того, логін і пароль для авторизації сервісу перекладу більше не задаються в налаштуваннях самого модуля мультимовності - авторизація тепер налаштовується централізовано в модулі "Ядро" (modulemarket.core), а в налаштуваннях перекладача додано підказку з посиланням на потрібний розділ. Також виправлено коректне відображення помилок сервісу перекладу в пісочниці, включаючи помилки авторизації та відповіді API.
Версія 2.7.2 - доопрацювання та сумісність
17 липня вийшла версія з дрібними доробками та доданою сумісністю з модулями uffaq та ufhowto.
Версія 2.7.5 – примусовий автопереклад переїхав до налаштувань
Того ж дня, 17 липня, вийшло оновлення, яке змінює спосіб керування примусовим автоперекладом. Тепер під вибором мов кожен інфоблок має окрему галочку «Примусовий автопереклад» — при її включенні всі зміни елемента перекладаються заново при кожному збереженні. Колишній спосіб через константи виду FORCE_TRANSLATE_IB_ID_XX у файлі init.php повністю прибрано - прописувати їх більше не потрібно.
Також доданий прапор «Не бере участі в автоперекладі» для властивостей інфоблоків та полів користувача — зазначені властивості та поля виключаються з автоперекладу. Галочка відображається прямо в штатних формах редагування властивості інфоблоку та поля користувача, без заміни самих форм.
Що важливо врахувати під час оновлення
Розробники окремо попереджають: якщо раніше примусове автопереведення включалося через константи в init.php, після оновлення потрібно відзначити відповідні інфоблоки галочкою «Примусовий автопереклад» безпосередньо в налаштуваннях модуля — колишні константи більше не враховуються системою.
Підсумок: куди рухається модуль
За півтора місяці модуль «Мультиязичность» пройшов шлях від закриття критичних уразливостей безпеки до помітного розширення автоматизації перекладу. Основні напрями розвитку - це перенесення налаштувань з коду в зручний інтерфейс адмінки (примусовий переклад, прапори виключення полів), масштабування автопереведення на нові типи даних (Highload-блоки), підвищення точності перекладу за рахунок інтеграції з глосарієм DeepL і поступове усунення помилок, що накопичилися в обробці множинних.