Как я автоматизировал перевод 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. Как OpenAI похоронила традиционный BI — и что пришло ему на смену
  2. Почему страницы сайта выпадают из индекса
  3. MVVM для курильщика: почему ваша ViewModel — это помойка на 2000 строк и как это исправить
  4. Как закон «О запрете иностранных слов» влияет на рекламу и брендинг
  5. А деньги где? Проверяем сайт на ошибки поисковой оптимизации: как сделать SEO окупаемым и увеличить число заявок
Ключевые инсайты из новости (по версии ChatGPT)
  • AST-подход к массовой i18n-миграции в TS/React: Для больших TypeScript/React-кодовых баз безопаснее извлекать строки через AST (Babel parser + traverse + generator), чем через «поиск/замену» по regex. Так можно точечно обрабатывать StringLiteral/JSXText/TemplateLiteral и учитывать контекст (импорты, ключи объектов, TS-типы), уменьшая риск поломок и пропусков строк.
    [Инженерия → Локализация (i18n)]
Для получения полного доступа оформите подписку PubMag PRO.
Зарегистрированные пользователи видят только два тезиса.
Зарегистрироваться
Инсайты автоматически генерируются с помощью искусственного интеллекта на основе текста статьи.
← Назад в лентуЧитать оригинал →
✈️ Подписывайтесь на мой Telegram-канал — там еще больше интересного про AdTech, MarTech, AI и многое другое!