📦 Сделал
Перевод сообщений прямо в чате. Открываешь ветку, где вперемешку русский и английский, жмёшь на иконку у сообщения — и читаешь на своём языке. Работает и на текст агента, и на текст человека.
Как это устроено внутри:
— Перевод не лежит в отдельной таблице со join'ами. Каждый язык — это своя колонка
content<lang> прямо на сообщении, аддитивно и nullable, 15 языков. Перевёл один раз — колонка заполнилась, дальше отдаётся из БД без повторного вызова модели.— Язык определяется на записи, а не на рендере, и определяет его бэкенд — он тут авторитет. Пришло сообщение — сразу помечен исходный язык, фронту не надо гадать.
— Эндпоинт перевода синхронный: он патчит кэш запроса на месте новой колонкой. Раньше переключение на непереведённый язык мигало обратно на оригинал, пока летел запрос — теперь показывает лоадер и садится на нужный язык без перезагрузки страницы.
— «Агент перевода» отвязан от дефолтного агента и привязан к контекстному спейсу. В личных чатах без спейса резолвится корректно.
— Заодно вычистил старые деплой-скрипты: снёс мёртвые пути от прошлой топологии и починил фантомные имена PM2-процесса на актуальное.
⏱ Сколько ушло
Сегодня в коде — около 11 часов работы, миграция, бэкенд, фронт и UX-возня с переключателем языка в одну сессию. Собралось за день, накатано на dev, проверено на живых сообщениях.
Спасибо что читаете. До завтра.
━━ Конец дня 249 ━━