|
Документация
Заказать демоПлатформа
ПлатформаMCPCLI
APIПроцессы
РуководстваЖурнал изменений

Обзор

  • @lingo.dev/cli

Начало работы

  • Быстрый старт
  • Конфигурация

Справочник

  • lingo push
  • lingo pull
  • Другие команды
  • lingo purge

Конфигурация

  • Управление ключами
  • Форматы
  • Локали

Руководства

  • Добавление локали
  • Существующие переводы
  • Повторный перевод
  • Примечания для переводчика
  • Запуски, состояние и восстановление
  • CI/CD
  • Монорепозитории
  • Крупные проекты

Ищете CLI прежней версии (v0)? См. документацию по CLI прежней версии

lingo push

Отправляет исходные файлы в движок, дожидается завершения запуска и сохраняет результаты на диск.

text
lingo push [patterns...] [--force] [--backfill-missing] [--yes]

Поведение по умолчанию — delta push#

Без аргументов lingo push работает в режиме только дельты:

  1. Вычисляет хеш для каждого исходного файла, подходящего под шаблоны files из конфигурации
  2. Сравнивает каждый хеш с lockfile, чтобы определить, какие исходники изменились
  3. Загружает изменённые исходники в движок как запуск
  4. Дожидается завершения запуска
  5. Записывает результаты на диск
  6. Сохраняет новые хеши исходников в lockfile

Если с момента последней успешной отправки ни один исходник не изменился, команда сразу завершается с ✓ Nothing to push. — без обращения к серверу и без расхода токенов.

Аргументы и флаги#

Позиционный аргумент: patterns... — push с ограниченной областью действия#

bash
lingo push docs/en/about.md
lingo push 'docs/en/**/*.md' 'locales/en.json'

Ограничивает push конкретными файлами (они должны уже соответствовать шаблонам в .lingo/config.json). Переключает команду в режим ограниченной области действия:

  • Без сравнения с предыдущими исходниками — каждый подходящий исходник считается входящим в область действия, даже если он не изменился.
  • На стороне сервера выполняется noop для целевых файлов, которые уже существуют и имеют совпадающие хеши исходников — движок пропускает их, а CLI помечает как кэшированные.

Используйте, если нужно перевести ровно один обновлённый файл без повторного хеширования всего проекта, или если нужно заново перевести одну страницу с помощью --force.

--force / -f#

bash
lingo push docs/en/about.md --force

Заново переводит каждый подходящий целевой файл, игнорируя существующие переводы и обходя серверное кэширование. Требует область действия — либо позиционные шаблоны, либо --backfill-missing. Использование lingo push --force без указания области отклоняется, потому что это привело бы к повторному переводу всего проекта.

По умолчанию --force запрашивает подтверждение перед запуском:

text
! --force will retranslate every target for pattern(s): docs/en/about.md and
  overwrite existing translations. Continue? (Yes, retranslate / Cancel)

Передайте --yes / -y, чтобы пропустить запрос подтверждения (удобно для CI).

--backfill-missing#

bash
lingo push --backfill-missing

Переводит каждый целевой файл, которого ещё нет, по всем настроенным шаблонам. Эквивалентно push с ограниченной областью действия по всем шаблонам из конфигурации, но создаёт только отсутствующие файлы. Используйте после добавления новой локали в targetLocales или при первом push для нового проекта.

Используйте вместе с --force, чтобы заново перевести всё с нуля:

bash
lingo push --backfill-missing --force --yes

--yes / -y#

Пропускает запрос подтверждения для --force. Без --force не действует.

Вывод#

При успешном выполнении:

text
Pushing source files to localization engine…
✓ Run run_a8c...: localized 12 target file(s), 4 already up-to-date, uploaded 1 new artifact(s).

Сводка включает:

  • Локализовано N целевых файлов — движок создал новые переводы, а CLI записал их на диск.
  • N уже актуальны — попадания в серверный кэш (исходник совпал, целевой файл переиспользован).
  • Загружено N новых артефактов — исходники, которых движок раньше не видел (двоичный или объёмный контент сохраняется один раз и затем переиспользуется по ссылке).
  • Пропущено N целевых файлов (локальные правки) — локальные хеши целевых файлов расходятся с lockfile. Перезапустите с --force, чтобы перезаписать их.

Если ошибка возникает для отдельных целевых файлов, CLI выводит ошибку для каждого из них и завершается с ненулевым кодом — удобно для CI:

text
✓ Run run_a8c...: localized 10 target file(s).
  2 target(s) failed:
    locales/de.json: rate limit on engine; retry later
    locales/fr.json: timeout

Логика повторных попыток#

Lockfile обновляется только после полностью успешного запуска. При частичном сбое (например, если по одной локали произошёл тайм-аут) хеши исходников в lockfile остаются без изменений, поэтому следующий lingo push повторит ту же разницу — без ручного сброса.

Если движок завершится с ошибкой до начала перевода (авторизация, валидация), ничего не будет записано, а lockfile останется без изменений.

Типовые сценарии#

CI: перевод при merge#

yaml
- run: lingo push --backfill-missing --yes
- run: git add . && git commit -m "chore: refresh translations" && git push

--backfill-missing — безопасный вариант по умолчанию: ничего не перезаписывает, а только заполняет недостающие файлы.

Итерация по одному файлу#

bash
lingo push docs/en/onboarding.md -f -y

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

Добавление новой локали#

После обновления targetLocales в .lingo/config.json:

bash
lingo push --backfill-missing

Переводит весь корпус в новую локаль, не затрагивая уже существующие переводы.

Эта страница была полезной?

Max PrilutskiyMax Prilutskiy·Обновлено около 1 месяца назад·3 минуты чтения