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

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

Когда вы запускаете npx lingo.dev@latest i18n, 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

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

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

CLI реализует:

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

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

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

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

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

Результат — локализованные файлы, которые выглядят так, как будто они были созданы вручную, готовые к коду-ревью и развертыванию.

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

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

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

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

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

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

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

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