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

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-реквесты, чтобы помочь улучшить инструмент для всех.