Что проверить после выкладки
Прогон на пятнадцать минут. Он не заменяет тестирование, но ловит то, что ломается чаще всего: не разложились файлы, не встали обработчики, не создалось поле языка.
Проходите сверху вниз — порядок от «модуль вообще жив» к «перевод работает».
Версия PHP
- [ ] На экране Проверка стенда, вкладка «Обзор», строка О1.10 зелёная.
Красная строка здесь объясняет большинство расхождений ниже: на PHP старее требуемого модуль остаётся живым, но без машинного перевода. Витрина будет подставлять переводы, админка откроется, а очередь, разовый перевод и подсчёт использования фраз ответят ошибкой. Пока эта строка красная, остальной прогон проходить бессмысленно — сначала поднимите версию PHP.
Модуль на месте
- [ ] Пункт Модули mrLexndr → Переводы → Перевод открывается под администратором.
- [ ] Под группой без прав на модуль пункта меню нет. Если виден — права разъехались, см. Права и безопасность.
- [ ] Открываются все шесть экранов: Перевод, Пополнение баланса, Файловые фразы, Настройки, Обслуживание, Проверка стенда. Карта — Где живёт модуль в админке.
- [ ] Красного предупреждения о структуре базы нет.
Хранилище
- [ ] Highload-блоки → Словарь сайта открывается.
- [ ] В нём есть
UF_CODE,UF_USAGE_COUNTи по полюUF_LANG_<ID>на каждый активный язык сайта. - [ ] На вкладке Настройки → Языки список языков перевода отмечен и сохранён. До сохранения модуль работает по автоопределению и предупреждает об этом.
Обработчики и агент
- [ ] Настройки → Агенты: есть
\mrLexndr\Translate\Agent\QueueAgent::run();с периодом 60 секунд. - [ ] Там же нет агента
Agents\LangIblockQueue::tick();. Он удалён из модуля, и обновление снимает запись. Если остался — обновление не выполнялось, и агент падает на каждом запуске: класса больше нет. - [ ] Настройки → Инструменты → Файлы обработчиков событий — регистрации модуля на месте. Что именно должно быть — События.
Быстрее всего это смотреть на экране Проверка стенда: он проверяет и обработчики, и схему, и настройки разом.
Перевод работает
- [ ] Вставьте на служебную страницу
LANG_VAR('MRLEXNDR_TEST', 'Проверка'), откройте её — в словаре появилась запись. - [ ] В режиме правки на сайте фраза подсвечена, клик открывает карточку. См. Правка прямо на сайте.
- [ ] Подсчёт использования (Обслуживание → Неиспользуемые фразы, шаг 1) проходит до конца. На небольшом проекте это быстро.
- [ ] Разовый перевод доходит до конца; при обрыве появляется кнопка «Продолжить с места остановки».
- [ ] В журнале событий нет ошибок вида
TRANSLATE_ERRORилиDICTIONARY_ADD_EXCEPTION.
Если сервис переводов недоступен
Отдельная проверка — она показывает, ведёт ли себя модуль прилично, когда сеть до api.mrlexndr.com не проходит. Воспроизводится подменой адреса сервиса в настройках на заведомо недоступный.
- [ ] Экран «Перевод» открывается за приемлемое время, показывает последний известный баланс и не висит.
- [ ] Разовый перевод останавливается с понятным текстом, кнопка запуска снова активна.
- [ ] Ответ
402даёт сообщение о нехватке средств и обновляет локальный баланс;502и503— сообщение о временной недоступности. - [ ] Пустой или битый ответ не подвешивает интерфейс.
Что модуль делает с сетевыми отказами сам — Сеть, таймауты и повторы.
Лицензия на локальном стенде
На стендах с DEMO, TRIAL или учебной лицензией боевого хеша нет, и сервис узнаёт сайт по устойчивому идентификатору разработчика.
- [ ] Идентификатор не меняется между запросами.
- [ ] Смена имени сервера на стенде его не меняет.
Что делать, если пункт не сошёлся
Сначала посмотрите на строку О1.10: если версия PHP ниже требуемой, часть пунктов не сойдётся именно из-за неё, и чинить их по отдельности бесполезно.
Дальше — большая часть расхождений на этом прогоне означает, что обновление не выполнялось: файлы заменили, а кнопку «Обновить» не нажали. Начните с неё — Обновление на бою. Остальное разбирает страница Что делать, если.