Envoyez les fichiers source au moteur, attendez la fin de l’exécution, puis écrivez les fichiers de sortie sur le disque.
lingo push [patterns...] [--force] [--backfill-missing] [--yes] [--wait] [--estimate]Comportement par défaut — push delta#
Sans argument, lingo push exécute le mode delta uniquement :
- Calculer le hash de chaque fichier source correspondant aux motifs
filesde la configuration - Comparer chaque hash au fichier de verrouillage pour repérer les sources modifiées
- Téléverser les sources modifiées sous forme d’exécution sur le moteur
- Attendre la fin de l’exécution
- Écrire les fichiers de sortie sur le disque
- Enregistrer les nouveaux hash source dans le fichier de verrouillage
Si aucune source n’a changé depuis le dernier push réussi, la commande s’arrête immédiatement avec ✓ Nothing to push. — aucun aller-retour vers le serveur, aucune consommation de jetons.
Arguments et options#
Positionnel : patterns... — push ciblé#
lingo push docs/en/about.md
lingo push 'docs/en/**/*.md' 'locales/en.json'Limite le push à des fichiers précis (ils doivent déjà correspondre à des motifs définis dans .lingo/config.json). La commande bascule alors en mode ciblé :
- Aucune comparaison avec l’état précédent des sources — chaque source correspondante est considérée dans le périmètre, même si elle n’a pas changé.
- No-op côté serveur pour les cibles qui existent déjà avec des hash source identiques — le moteur les ignore et le CLI les signale comme mises en cache.
À utiliser si vous voulez traduire exactement un fichier mis à jour sans recalculer les hash de tout le projet, ou retraduire une seule page avec --force.
--force / -f#
lingo push docs/en/about.md --forceRetraduit chaque cible correspondante, en ignorant les traductions existantes et en contournant le cache côté serveur. Nécessite un périmètre — soit des motifs positionnels, soit --backfill-missing. lingo push --force seul est refusé, car il retraduirait l’intégralité du projet.
Par défaut, --force demande une confirmation avant de s’exécuter :
! --force will retranslate every target for pattern(s): docs/en/about.md and
overwrite existing translations. Continue? (Yes, retranslate / Cancel)Passez --yes / -y pour ignorer la demande de confirmation (compatible CI).
--backfill-missing#
lingo push --backfill-missingTraduit chaque cible qui n’existe pas encore pour tous les motifs configurés. Équivalent à un push ciblé sur tous les motifs de la configuration, mais en ne produisant que les fichiers absents. À utiliser après l’ajout d’une nouvelle langue à targetLocales, ou lors du premier push d’un nouveau projet.
Combinez-le avec --force pour tout retraduire depuis zéro :
lingo push --backfill-missing --force --yes--yes / -y#
Ignore l’invite de confirmation --force. Aucun effet sans --force.
--estimate#
lingo push --estimate
lingo push 'docs/en/**/*.md' --estimateAffiche le coût approximatif de ce push, puis s’arrête sans traduire. Le CLI exécute tout le pipeline de push — hachage, delta et téléversement des octets source — pour permettre au serveur de calculer le delta exact, puis demande au moteur d’estimer le coût de l’exécution au lieu de la lancer. Rien n’est traduit, écrit ni facturé ; le fichier de verrouillage et vos fichiers cibles restent inchangés.
Les montants affichés sont des estimations, pas des devis. --estimate se combine avec la portée ainsi qu’avec --force / --backfill-missing, pour vous permettre d’estimer précisément le push que vous êtes sur le point d’exécuter.
Si aucune source n’a changé, --estimate s’interrompt immédiatement avec ✓ Nothing to push., comme lors d’un push classique.
Si une exécution portant sur les mêmes sources est déjà en cours, --estimate échoue plutôt que d’estimer le coût d’une exécution déjà partiellement lancée :
Error: Cannot estimate: existing group run_a8c... is already in 'running' state. Change a source file or wait for the run to finish.Sortie#
En cas de succès :
Pushing source files to localization engine…
✓ Run run_a8c...: localized 12 target file(s), 4 already up-to-date, uploaded 1 new artifact(s).Le résumé se décompose ainsi :
- N fichier(s) cible localisé(s) — le moteur a généré de nouvelles traductions et le CLI les a écrites.
- N déjà à jour — correspondances dans le cache côté serveur (source identique, cible réutilisée).
- N nouvel/nouveaux artefact(s) téléversé(s) — sources que le moteur n’avait encore jamais vues (contenu binaire/volumineux stocké une seule fois, puis référencé).
- N cible(s) ignorée(s) (modifications locales) — les hash locaux des cibles diffèrent du fichier de verrouillage. Relancez avec
--forcepour écraser.
En cas d’échec sur une cible, le CLI affiche l’erreur de chaque cible en échec et se termine avec un code non nul — pratique pour la 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: timeoutAvec --estimate :
Estimating push cost…
› Estimated cost: ~$1.87 (12 target(s), ~48,000 output tokens — estimate, not a quote)
de: ~$0.9350 (6 target(s), ~24,000 tokens)
fr: ~$0.9350 (6 target(s), ~24,000 tokens)
4 target(s) already up-to-date — no cost.
✓ Estimate complete — nothing was translated. Run `lingo push` to start the translation.Sémantique de relance#
Le fichier de verrouillage n’est mis à jour qu’après une exécution entièrement réussie. En cas d’échec partiel (par ex. une langue expire sur délai), les hash source restent inchangés dans le fichier de verrouillage, de sorte que le prochain lingo push relance le même diff — sans réinitialisation manuelle.
Si le moteur renvoie une erreur avant toute traduction (authentification, validation), rien n’est écrit et le fichier de verrouillage reste inchangé.
Motifs courants#
CI : traduction au merge#
- run: lingo push --backfill-missing --yes
- run: git add . && git commit -m "chore: refresh translations" && git push--backfill-missing est l’option sûre par défaut : rien n’est écrasé, seuls les manques sont comblés.
Itération sur un seul fichier#
lingo push docs/en/onboarding.md -f -yRetraduisez une seule source après une modification majeure du contenu. Ignorez l’invite de confirmation pour itérer rapidement.
Ajout d’une nouvelle langue#
Après avoir mis à jour targetLocales dans .lingo/config.json :
lingo push --backfill-missingTraduit l’ensemble du corpus dans la nouvelle langue, sans retraduire les langues existantes.
