Как я автоматизировал перевод 10 000 строк на 3 языка за один день

Frontend-тимлид из Казахстана описывает, как за один день перевёл «захардкоженный» русский UI в крупной HR-платформе (8000+ TypeScript-файлов) на два дополнительных языка — английский и казахский — без недели ручного копипаста.

Итог автоматизации: 9 823 ключа переводов, 39 086 вызовов t() в коде, обработано 8 198 файлов; суммарное время работы скриптов — около 5 минут.

  • Пайплайн: EXTRACT → SYNC → TRANSLATE → CONVERT (четыре узкоспециализированных скрипта).
  • EXTRACT: поиск русских строк (regex по кириллице), генерация ключей, замена строк на t(), исключения для уже обёрнутого текста и логов.
  • SYNC: синхронизация структуры JSON локалей и контроль заполненности (пример: после извлечения ru 100%, en/kk — 11% до автоперевода).
  • TRANSLATE: автоперевод пустых значений через API — DeepL для EN и Translate для KK (батчинг по 50 строк, параллелизация, паузы из-за rate limiting).
  • CONVERT: устранение раннего вызова i18n в константах — замена значений на ленивые getter'ы, чтобы t() не вызывался при импорте.

Грабли: JSX-атрибуты требуют синтаксиса вида {t(...)}, шаблонные строки превращаются в t("key", { name }), нужно учитывать alt у img, бороться с дублями фраз (например, «Сохранить» десятки раз) и с банами Google при частых запросах. Минусы подхода: автопереводы «80% ок, 20% — на вычитку», после смены языка требуется перезагрузка, а ключи на транслитерации выглядят неаккуратно (вместо семантических неймспейсов).

Читайте также

  1. Что меня беспокоит в агентской разработке: заметки инженера в 2026 году
  2. SOLID в вашей дрели
  3. Сигналы открытого интереса и автоматический трейдинг: пишем телеграм-бота для трейдинга
  4. Список дел в формате RPG, экспресс-чтение по 5 минут в день и ещё 8 российских стартапов
  5. Сравнение ChatGPT 5.2 Pro, Claude Sonnet 4.5 и Gemini 3 Pro: кто лучше пишет тексты
Ключевые инсайты из новости (по версии ChatGPT)
  • AST-подход к массовой i18n-миграции в TS/React: Для больших TypeScript/React-кодовых баз безопаснее извлекать строки через AST (Babel parser + traverse + generator), чем через «поиск/замену» по regex. Так можно точечно обрабатывать StringLiteral/JSXText/TemplateLiteral и учитывать контекст (импорты, ключи объектов, TS-типы), уменьшая риск поломок и пропусков строк.
    [Инженерия → Локализация (i18n)]
Для получения полного доступа оформите подписку PubMag PRO.
Зарегистрированные пользователи видят только два тезиса.
Зарегистрироваться
Инсайты автоматически генерируются с помощью искусственного интеллекта на основе текста статьи.
← Назад в лентуЧитать оригинал →
✈️ Подписывайтесь на мой Telegram-канал — там еще больше интересного про AdTech, MarTech, AI и многое другое!