Lingo.dev CLI

Max PrilutskiyГенеральный директор и соучредительUpdated в прошлом месяце · 2 min read

Deprecated

These docs cover the legacy CLI (v0). The current CLI is v1. See the current CLI docs

CLI Lingo.dev переводит приложения и контент: читает единый файл конфигурации i18n.json, извлекает переводимые строки из исходных файлов и направляет их через движок локализации или напрямую к LLM-провайдеру. Затем записывает переводы обратно на диск и отслеживает изменения, чтобы при следующем запуске обрабатывать только дельту.

Пятишаговый пайплайн#

Когда вы запускаете npx lingo.dev@latest run, CLI последовательно выполняет пять шагов:

1

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

CLI сканирует проект и находит исходные и целевые файлы на основе конфигураций bucket в i18n.json. Каждый bucket задаёт формат файла и набор шаблонов включения и исключения, которые подсказывают CLI, где находится переводимый контент.

json
{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de"]
  },
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"]
    },
    "markdown": {
      "include": ["docs/[locale]/*.md"]
    }
  }
}

Плейсхолдер [locale] во время выполнения подставляет настроенные коды исходной и целевой локали.

2

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

Не весь контент нужно переводить. CLI отфильтровывает значения, которые должны оставаться неизменными в любых языках: числа, логические значения, даты ISO, UUID, URL и пустые строки. Это уменьшает объём данных, отправляемых в переводческий бэкенд, и снижает расход токенов и время обработки.

3

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

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

Благодаря такому инкрементальному подходу в проекте с 10 000 ключей, где изменились только 12, будут переведены именно эти 12 ключей, а не весь набор.

4

Локализация

Дельта отправляется в настроенный переводческий бэкенд. CLI поддерживает два режима:

РежимКак это работает
Движок Lingo.devПропускает запросы через движок локализации и автоматически применяет тональность бренда, глоссарий, правила и конфигурацию модели.
Raw LLM providerОтправляет запросы на перевод напрямую в OpenAI, Anthropic, Google, Mistral, OpenRouter или Ollama с пользовательским промптом.

CLI повторяет неудачные запросы с экспоненциальной задержкой, сохраняет частичный прогресс и параллельно обрабатывает несколько целевых языков.

5

Запись контента

Переведённые строки записываются обратно на диск точно в те места, где находится исходный контент. CLI сохраняет структуру и форматирование файлов, чтобы изменения были минимальными и удобными для ревью. Если в проекте настроен Prettier, результат будет соответствовать вашим правилам форматирования.

Выходные файлы#

Типичный запуск даёт два типа изменений:

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

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

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