Повторный перевод
lingo push переводит только то, что изменилось: сверяет каждый источник с локфайлом и пропускает совпадения. Это разумное поведение по умолчанию — но иногда нужно переперевести контент с тем же исходным текстом: например, после смены модели движка, обновления правил или глоссария, или чтобы исправить проблему с качеством.
Есть три способа, и каждый стоит по-разному: --key для отдельных строк, ограниченный по области --force push для целых файлов или purge с последующим обычным push для всей локали. Выбирайте самый узкий вариант, который покрывает нужное.
Повторный перевод отдельных ключей#
--key переводит заново только нужные ключи, объединяет их с существующим переводом и не трогает всё остальное. Различия в источнике игнорируются — строка будет переведена заново, даже если в английском оригинале ничего не менялось.
lingo push --key auth.loginЧтобы указать несколько ключей, повторите флаг:
lingo push --key auth.login --key billing.planШаблон охватывает ключ точно, как префикс с границей ., /, - или [, либо как glob. Например, auth.login захватывает и auth.login.title, но не auth.login_url; обычный auth охватывает всё поддерево auth, но не authority. Заключайте glob-шаблоны в кавычки — иначе оболочка раскроет их раньше, чем CLI их увидит:
lingo push --key "auth.*"Это самый экономичный вариант — вы платите только за те ключи, которые указали, и ни за что сверху. Для работы нужен уже существующий перевод: если локаль ещё ни разу не переводилась, она будет пропущена с сообщением, которое отправит вас к --backfill-missing. Некоторые форматы вообще не поддерживают выбор ключей — в Форматах объясняется, какие именно и почему.
Полное описание поведения, в том числе что происходит с неуказанными ключами, см. в lingo push.
Принудительный выборочный push#
--force переводит заново все подходящие цели, игнорируя существующие переводы и серверный кэш. Ограничивайте область — если только вы не хотите затронуть весь проект: голый lingo push --force покрывает все настроенные шаблоны, и единственное, что останавливает, — запрос подтверждения.
Один файл#
lingo push content/en/landing.mdx --forceПоддерево#
lingo push 'content/en/**/*.md' --forceВсё#
lingo push --backfill-missing --force --yes--force запрашивает подтверждение перед перезаписью. Передайте --yes, чтобы пропустить запрос (CI). Полный список флагов см. в lingo push.
Повторный перевод одной локали#
У push нет флага для отдельной локали. Чтобы заново перевести только один язык, удалите его файлы и выполните backfill:
lingo purge --locale fr
lingo push --backfill-missingpurge удаляет цели fr, а --backfill-missing затем восстанавливает только недостающее — остальные локали остаются нетронутыми. Это также дешевле, чем --force, потому что всё, кроме fr, по-прежнему берётся из кэша. См. Purge.
Оцените затраты до запуска#
Любой push принимает --estimate: он оценивает стоимость запуска и завершает работу без перевода:
lingo push 'content/en/**/*.md' --force --estimateКоманда также работает вместе с --key — можно оценить стоимость ключевой области до запуска:
lingo push --key auth.login --estimateОценка приблизительная, а не точный расчёт — итоговая стоимость может отличаться.
Когда нужен повторный перевод#
| Ситуация | Что запускать |
|---|---|
| Исходный текст изменился | Ничего — обычный lingo push сам всё подхватит |
| Несколько строк, которые вас не устраивают | lingo push --key auth.login --key billing.plan |
| Сменили модель движка | lingo push <scope> --force |
| Обновлённые правила / глоссарий | lingo push --key <affected keys> или lingo push <scope> --force |
| Низкое качество в одной локали | lingo purge --locale <code>, затем lingo push --backfill-missing |
| Начинаете с чистого листа | lingo push --backfill-missing --force --yes |