Как это работает

Lingo.dev CLI скрывает сложный процесс локализации за элегантным интерфейсом командной строки.

Когда вы запускаете npx lingo.dev@latest run, CLI читает стандартный файл конфигурации i18n.json и выполняет следующие 5 шагов:

1. Поиск контента

Lingo.dev CLI рассматривает ваш проект как единственный источник правды. Он рекурсивно сканирует проект в поисках исходных и целевых файлов для перевода на основе ваших bucket-конфигураций, загружая их в память для обработки.

Этап поиска учитывает:

  • Шаблоны включения, такие как locales/[locale].json
  • Шаблоны исключения для файлов, которые вы хотите пропустить
  • Несколько bucket-конфигураций для разных типов файлов

2. Очистка данных

Не весь контент требует перевода. В продакшн-приложениях встречаются числа, булевы значения, даты, UUID и фрагменты кода, которые обычно не меняются при локализации.

Lingo.dev CLI умно фильтрует:

  • Числовые значения, такие как 42 или 3.14
  • Булевы значения (true/false)
  • Даты и временные метки в формате ISO
  • UUID и похожие идентификаторы
  • Блоки кода и технические сниппеты

Такое фильтрование снижает стоимость работы LLM и ускоряет обработку, фокусируясь только на переводимом контенте.

3. Вычисление дельты

Контент, который не изменился, не должен переводиться заново. Lingo.dev CLI использует продвинутую систему версионирования, которая:

  • Создаёт отпечатки контента с помощью SHA-256 хеширования
  • Сравнивает текущий контент с предыдущим состоянием, сохранённым в i18n.lock
  • Определяет новые, изменённые и удалённые ключи перевода
  • Отправляет только дельту в движок перевода

Такой инкрементальный подход позволяет платить только за новый или изменённый контент, а не за всю библиотеку при каждом запуске.

Подробнее: i18n.lock Lockfile

4. Локализация

Локализация должна быть надёжной, даже при нестабильном интернете или сбоях у LLM-провайдера. На этом этапе Lingo.dev CLI берёт дельту и отправляет её в настроенный вами backend для перевода.

CLI реализует:

  • Экспоненциальную стратегию повторных попыток при сетевых сбоях
  • Автоматическое восстановление после ошибок и сохранение частичного прогресса
  • Поддержку как raw LLM API (OpenAI, Anthropic), так и Lingo.dev Engine
  • Параллельную обработку для нескольких целевых языков

Каждый запрос на перевод содержит контекстную информацию, чтобы обеспечить согласованность и качество по всему вашему проекту.

5. Внедрение контента

Чтобы изменения были чистыми и легко проверяемыми, Lingo.dev CLI вставляет переводы точно в те места, где находится исходный контент. Такой подход:

  • Сохраняет структуру и форматирование файлов
  • Избегает ненужных конфликтов в git
  • Создаёт минимальные, сфокусированные диффы
  • Учитывает вашу существующую конфигурацию Prettier, если она есть

В результате вы получаете локализованные файлы, которые выглядят так, будто их переводили вручную — они готовы к code review и деплою.

Полный рабочий процесс

Эти пять шагов обычно приводят к двум типам изменений:

  1. Файлы локализации — обновляются с новыми и изменёнными переводами
  2. Файл i18n.lock — обновляется с отпечатками контента для отслеживания состояния

Оба файла стоит коммитить в репозиторий — вручную или автоматически через CI/CD-интеграции.

Такая архитектура позволяет Lingo.dev CLI эффективно масштабироваться: от одного разработчика, переводящего несколько строк, до команд, управляющих миллионами слов на десятках языков.

Следующие шаги

Теперь, когда вы понимаете, как Lingo.dev CLI работает внутри, вы можете:

  • Присоединиться к нашему сообществу: Discord — общайтесь с другими разработчиками, использующими Lingo.dev CLI, делитесь отзывами и получайте помощь по вопросам локализации;
  • Внести вклад в проект: Open issues — Lingo.dev CLI — это open source, и мы рады любым вкладчикам. Просматривайте открытые задачи, предлагайте новые функции или отправляйте pull request'ы, чтобы сделать инструмент лучше для всех.

Готовы начать? Запустите npx lingo.dev@latest init, чтобы настроить свой первый проект.