Что делать, если
Разбор ситуаций, в которых модуль ведёт себя не так, как ожидали.
Если вы ищете конкретную фразу об ошибке, которую увидели на экране, — она на странице Все сообщения модуля: там полный список, и по тексту фразы он ищется поиском браузера.
Перевод сделан, а на сайте по-прежнему русский
Проверяйте по порядку, не перескакивая.
- Перевод записан? Найдите запись в словаре или откройте элемент в админке и посмотрите языковое свойство. Если пусто — переводить и надо, а не искать причину в выводе.
- Шаблон читает перевод? Для фраз — зовётся ли
LANG_VAR. Для инфоблоков — стоит ли вызов подстановки в том шаблоне, который реально подключён: на боевых сборках у компонента бывает несколько шаблонов. - Кеш сброшен? Подстановка происходит при сборке кеша компонента. До истечения кеша витрина показывает прежние значения.
- Язык страницы тот? Модуль берёт язык у Битрикса. Если языковые версии сделаны не языками платформы, он везде отдаёт один и тот же язык, см. Известные ограничения.
Не появляется кнопка «Обновить»
Битрикс показывает её, только когда версия в файлах больше записанной в базе. Совпали — кнопки нет, и это не поломка. Способы — Если кнопки «Обновить» нет.
Витрина переводит, а автоперевод отвечает ошибкой
Характерная пара: на страницах сайта переводы подставляются, админка открывается, словарь редактируется — а очередь, автоперевод и индексация отвечают ошибкой или ничего не делают.
Почти всегда это версия PHP ниже требуемой модулем. Модуль в таком положении не выключается целиком: он снимает из автозагрузки только то, что на этой версии не может прочитать, и отказывает ровно в машинном переводе. Остальное продолжает работать, поэтому снаружи это выглядит как выборочная поломка.
Где посмотреть: экран Проверка стенда, вкладка «Обзор»,
строка О1.10. Там же написано, какая версия стоит и какая нужна. Вторая
запись — в журнале событий Битрикса, тип TRANSLATE_PHP_VERSION; она
появляется не чаще раза в сутки, чтобы не раздувать таблицу.
Лечится подъёмом версии PHP на сервере. После этого нажмите «Обновить» в списке модулей: на старом PHP обновление отказывалось, и схема базы могла остаться от прежней версии.
Возможность просто перестала работать, без ошибок
Очередь не наполняется, зеркало не появляется, меню осталось русским, кнопки перевода нет.
Почти всегда это пропавший обработчик события, и почти всегда причина одна: файлы заменили, а «Обновить» не нажали. Проверить — экран Проверка стенда, вкладка «Обзор».
Индексация висит или обрывается
Прогресс, замерший на несколько секунд, — норма: идёт очередная порция файлов.
Если оборвалась — просто запустите заново. Тяжёлое состояние хранится во временном файле, а не в сессии, поэтому повтор безопасен.
На кластере без общего хранилища сессий индексацию запускайте с одной ноды.
Индексация показывает ноль у заведомо используемой фразы
Два варианта, оба ожидаемы:
- код собирается в программе из кусков, либо выводится через вашу обёртку, которую сканер не знает. Обёртку можно добавить, см. Своя обёртка;
- файл лежит в исключённом каталоге.
Удалять такие фразы нельзя. Именно поэтому список в «Мусорщике» называется кандидатами.
Мусорщик показывает актуальные фразы
Запустите Индексацию — счётчики обновятся. Мусорщик показывает результат последнего прогона, а не считает на лету.
Если после индексации фразы всё равно в списке — см. пункт выше.
После добавления языка не появилось поле в словаре
Посмотрите на экране Проверка стенда, приходило ли событие о новом языке.
И помните: свойства инфоблоков модуль не создаёт сам. Поле в словаре появляется по событию, а свойства — только кнопкой синхронизации, осознанно. См. Добавить язык.
Сервис переводов недоступен
Экран не должен висеть: он покажет последний известный баланс. Прогон остановится с понятным текстом, кнопка запуска снова станет активной.
Проверьте исходящий доступ с сервера сайта до api.mrlexndr.com. На стендах с
DEMO-лицензией используется отдельный идентификатор, и это нормально.
Сообщение на экране адреса и подробностей транспорта не называет —
намеренно. Всё это в журнале событий, тип TRANSLATE_SAAS_NETWORK.
Что модуль делает с отказами сам — Сеть, таймауты и повторы.
Ответ сервиса не сошёлся по количеству
Модуль отказывается писать перевод целиком. Это защита: разложить ответы «по порядку» означало бы записать перевод названия в описание.
Если повторяется на одном и том же тексте — дело почти всегда в самом тексте. Посмотрите его глазами.
Ошибка без подробностей
Если перевод отвечает общей фразой про непредвиденную ошибку — подробности
не потерялись, они в журнале событий Битрикса, тип
TRANSLATE_ENDPOINT_FAILURE. Там имя класса, файл и строка.
Наружу они не отдаются намеренно: в таком тексте оказываются адрес сервиса, пути файлов и куски запросов к базе. См. Права и безопасность.
Очередь показала на перевод весь каталог
Не нажимайте «Перевести накопленное», пока не разберётесь.
Законные причины: включили очередь впервые, или полный пересчёт нашёл испорченные переводы.
Незаконная: разъехались хеши исходников после обновления. Это чинится ремонтом, а не оплатой, см. Хеш исходника.
Разметка вылезла текстом на странице
Почти наверняка фраза выведена без сырого режима в атрибуте тега, в заголовке страницы или в строке JavaScript, и у вас включён режим правки. См. Lang::get и LANG_VAR.
Список устаревших переводов не уменьшается после импорта
Так и работает: импорт отметку не снимает. Снимайте кнопкой «Перевод проверен». См. Импорт и экспорт CSV.
Подписи в оформлении заказа сбрасываются на русский
Проверьте, что сбрасываются они именно после смены способа доставки без перезагрузки. Тогда дело во втором обработчике события — он регистрируется, только если установлен модуль заказов. См. Страница заказа.
Если ничего из этого не подошло
Откройте Проверка стенда и приложите содержимое паспорта к обращению в поддержку: оно отвечает на половину уточняющих вопросов сразу.