@lingo.dev/cli

Обновлено: на прошлой неделе · 3 мин чтения

@lingo.dev/cli отправляет исходный контент в движок локализации, который переводит его на стороне сервера и записывает результаты на диск — в той же команде с --wait или позже с lingo pull. Это замена устаревшего рабочего процесса npx lingo.dev: тот же проект, но совершенно другая архитектура.

Что изменилось по сравнению с устаревшим CLI#

Устаревший CLI (npx lingo.dev run) извлекал строки, вызывал LLM напрямую с вашей машины и за один проход записывал файлы локально. Текущий CLI разделяет работу на push и pull:

  • lingo push загружает исходники в ваш движок, запускает серверный процесс и либо ждёт завершения, либо сразу возвращает ID запуска
  • lingo pull скачивает результаты последнего push — даже если вы закрыли терминал в процессе перевода. Главное — выполнять pull на той же машине из того же репозитория.
  • lockfile (.lingo/lock.json) хранит последнюю известную на сервере версию каждой целевой локали, чтобы механизм обнаружения конфликтов мог предупредить о локальных изменениях до того, как они будут перезаписаны

Это то, чего старый CLI не умел: длительные переводы без зависшего терминала. Отправьте задание, закройте терминал и заберите результаты когда удобно.

Ожидание результатов#

lingo push загружает источники, запускает рабочий процесс на сервере и сразу завершается — не ждёт перевода и ничего не записывает. Заберите результаты с помощью lingo pull или передайте --wait (-w), чтобы сделать всё за одну команду.

bash
lingo push            # submit the run and exit (default)
lingo pull            # later: re-attach to the most recent push and download its outputs

lingo push --wait     # submit, wait, and write outputs in one command
  • --wait (-w) блокирует выполнение до завершения процесса и записывает результаты в рамках той же команды.
  • lingo pull переподключается к последнему push для этого проекта и скачивает результаты — даже после закрытия терминала. Состояние запуска хранится на уровне машины в ~/.lingo/runs/<project-hash>.json с привязкой к пути проекта, так что pull продолжит работу на той же машине из того же репозитория.

Авторизация: обе команды читают LINGO_API_KEY (или --api-key, или сессию lingo login). В CI достаточно задать LINGO_API_KEY.

Режимы push#

КомандаРежимКогда использовать
lingo pushИнкрементальный — сравнивает исходники с .lingo/lock.json, переводит только новые и изменённые ключи в существующие целевые файлы, остальное сохраняет без измененийКаждый плановый запуск (добавьте --wait в CI)
lingo push --backfill-missingBootstrap — заполняет целевые ФАЙЛЫ, которых ещё нетПервый push или после добавления новой локали
lingo push --forceПолный повторный перевод — перезаписывает все целевые файлы (включая ручные правки); --yes/-y пропускает запрос подтвержденияРедко (например, после изменения глоссария или движка)

--backfill-missing — это флаг bootstrap. Он выполняет отдельный новый запрос в заданной области и добавляет только целые целевые файлы, которых не хватает, — он НЕ переводит новые ключи в уже переведённых файлах (в отчёте запуска будет указано "already up-to-date", и ключ будет пропущен). Для текущих изменений используйте обычный lingo push.

Редактирование переводов вручную#

Обычный lingo push сохраняет ручные правки на уровне ключей:

  • Измените целевую строку (если исходник не менялся) → эта строка сохранится; остальные ключи продолжат обновляться.
  • Изменился исходник у отредактированного ключа → для этого ключа будет создан новый перевод, который заменит ручную правку.
  • Добавлен новый исходный ключ → он будет переведён и добавлен даже в файлы с ручными правками.

Что в этом разделе#

Быстрый старт
Установка, авторизация, подключение к движку, первый push и pull.
Конфигурация
`.lingo/config.json`, `.lingo/lock.json` и состояние запуска для каждой машины в `~/.lingo/runs/<hash>.json`.
lingo push
Отправьте источники и запустите перевод — добавьте `--wait`, чтобы получить результаты сразу. Шаблоны по области, `--force`, повторные попытки.
lingo pull
Скачайте результаты последнего push — между сессиями терминала, на той же машине. Обнаружение конфликтов.
Другие команды
login, logout, link, unlink, whoami — команды для настройки и управления учётной записью.