|
Documentation
Réserver une démoPlateforme
PlateformeMCPCLI
APIWorkflows
GuidesChangelog

Vue d'ensemble

  • @lingo.dev/cli

Premiers pas

  • Démarrage rapide
  • Configuration
  • Exemples

Référence

  • lingo push
  • lingo pull
  • lingo purge
  • Autres commandes

Configuration

  • Contrôle des clés
  • Formats
  • Langues

Guides

  • Ajouter une langue
  • Traductions existantes
  • Retraduction
  • Notes de traduction
  • Exécutions, état et reprise
  • CI/CD
  • Monorepos
  • Grands projets

Vous cherchez l’ancien CLI (v0) ? Voir la documentation du CLI historique

lingo push

Envoyez les fichiers source au moteur, attendez la fin de l’exécution, puis écrivez les fichiers de sortie sur le disque.

text
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 :

  1. Calculer le hash de chaque fichier source correspondant aux motifs files de la configuration
  2. Comparer chaque hash au fichier de verrouillage pour repérer les sources modifiées
  3. Téléverser les sources modifiées sous forme d’exécution sur le moteur
  4. Attendre la fin de l’exécution
  5. Écrire les fichiers de sortie sur le disque
  6. 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é#

bash
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#

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

Retraduit 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 :

text
! --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#

bash
lingo push --backfill-missing

Traduit 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 :

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

--yes / -y#

Ignore l’invite de confirmation --force. Aucun effet sans --force.

--estimate#

bash
lingo push --estimate
lingo push 'docs/en/**/*.md' --estimate

Affiche 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 :

text
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 :

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).

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 --force pour é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 :

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

Avec --estimate :

text
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#

yaml
- 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#

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

Retraduisez 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 :

bash
lingo push --backfill-missing

Traduit l’ensemble du corpus dans la nouvelle langue, sans retraduire les langues existantes.

Cette page vous a-t-elle été utile ?

Max PrilutskiyMax Prilutskiy·Mis à jour il y a 19 jours·4 min de lecture