Отправляет исходные файлы в движок, дожидается завершения запуска и сохраняет результаты на диск.
lingo push [patterns...] [--force] [--backfill-missing] [--yes]Поведение по умолчанию — delta push#
Без аргументов lingo push работает в режиме только дельты:
- Вычисляет хеш для каждого исходного файла, подходящего под шаблоны
filesиз конфигурации - Сравнивает каждый хеш с lockfile, чтобы определить, какие исходники изменились
- Загружает изменённые исходники в движок как запуск
- Дожидается завершения запуска
- Записывает результаты на диск
- Сохраняет новые хеши исходников в lockfile
Если с момента последней успешной отправки ни один исходник не изменился, команда сразу завершается с ✓ Nothing to push. — без обращения к серверу и без расхода токенов.
Аргументы и флаги#
Позиционный аргумент: patterns... — push с ограниченной областью действия#
lingo push docs/en/about.md
lingo push 'docs/en/**/*.md' 'locales/en.json'Ограничивает push конкретными файлами (они должны уже соответствовать шаблонам в .lingo/config.json). Переключает команду в режим ограниченной области действия:
- Без сравнения с предыдущими исходниками — каждый подходящий исходник считается входящим в область действия, даже если он не изменился.
- На стороне сервера выполняется noop для целевых файлов, которые уже существуют и имеют совпадающие хеши исходников — движок пропускает их, а CLI помечает как кэшированные.
Используйте, если нужно перевести ровно один обновлённый файл без повторного хеширования всего проекта, или если нужно заново перевести одну страницу с помощью --force.
--force / -f#
lingo push docs/en/about.md --forceЗаново переводит каждый подходящий целевой файл, игнорируя существующие переводы и обходя серверное кэширование. Требует область действия — либо позиционные шаблоны, либо --backfill-missing. Использование lingo push --force без указания области отклоняется, потому что это привело бы к повторному переводу всего проекта.
По умолчанию --force запрашивает подтверждение перед запуском:
! --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#
lingo push --backfill-missingПереводит каждый целевой файл, которого ещё нет, по всем настроенным шаблонам. Эквивалентно push с ограниченной областью действия по всем шаблонам из конфигурации, но создаёт только отсутствующие файлы. Используйте после добавления новой локали в targetLocales или при первом push для нового проекта.
Используйте вместе с --force, чтобы заново перевести всё с нуля:
lingo push --backfill-missing --force --yes--yes / -y#
Пропускает запрос подтверждения для --force. Без --force не действует.
Вывод#
При успешном выполнении:
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:
✓ 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#
- run: lingo push --backfill-missing --yes
- run: git add . && git commit -m "chore: refresh translations" && git push--backfill-missing — безопасный вариант по умолчанию: ничего не перезаписывает, а только заполняет недостающие файлы.
Итерация по одному файлу#
lingo push docs/en/onboarding.md -f -yЗаново переведите только один исходник после серьёзного изменения текста. Чтобы ускорить итерацию, пропустите запрос подтверждения.
Добавление новой локали#
После обновления targetLocales в .lingo/config.json:
lingo push --backfill-missingПереводит весь корпус в новую локаль, не затрагивая уже существующие переводы.
