De A à Z : installation, authentification, liaison à un moteur, envoi des sources, récupération des traductions.
Prérequis
Node.js 22+ (node -v pour vérifier). Une fois installé, le CLI s’exécute via lingo.
Configuration#
Installer
npm install -g @lingo.dev/cliOu pnpm add -g @lingo.dev/cli / yarn global add @lingo.dev/cli / bun add -g @lingo.dev/cli.
S’authentifier
lingo loginSaisissez votre adresse e-mail ; le CLI envoie un code à usage unique et stocke un jeton de session dans ~/.lingo/auth.json. Pour les contextes CI ou non interactifs, utilisez une clé API : lingo login --api-key lk_... (ou définissez --api-key comme option globale sur n’importe quelle commande).
Initialiser le projet
À la racine de votre projet :
lingo initVous êtes invité à renseigner la langue source, les langues cibles et les motifs de fichiers (globs pointant vers vos fichiers source). La section de localisation est ensuite écrite dans .lingo/config.json. Commitez ce fichier — c’est la source de référence de tout ce qui est traduit.
Relier à un moteur
lingo linkChoisissez (ou créez) une organisation et un moteur de localisation. Le moteur regroupe la configuration de votre modèle d’IA, les glossaires, la voix de marque et les règles — configurez-le une seule fois sur la plateforme Lingo.dev, puis réutilisez-le dans tous vos projets. link ajoute orgId et engineId à .lingo/config.json (également commités).
Premier push#
Une fois un fichier source non vide en place (par ex. locales/en.json) :
lingo push --backfill-missingTraduit toutes les cibles manquantes pour chaque motif configuré. Le CLI attend la fin de l’exécution, puis écrit les sorties (locales/de.json, locales/fr.json, ...) sur le disque. Sur un checkout propre, cela peut prendre de quelques secondes (petit JSON) à quelques minutes (lots volumineux de fichiers markdown).
Une fois terminé :
✓ Run run_a8c... : localized 12 target file(s), uploaded 1 new artifact(s).Exécutions suivantes#
Après avoir modifié des fichiers source, un simple lingo push ne traduit que le delta — les fichiers dont le hash source n’a pas changé sont ignorés côté serveur. Les modifications locales des cibles sont conservées par défaut ; passez --force (avec une portée) pour les écraser.
lingo push # delta only
lingo push docs/en/**/*.md # scoped: only this subtree
lingo push docs/en/about.md -f # scoped + force: retranslate even if up to dateRécupérer depuis une autre machine#
push enregistre l’ID d’exécution dans ~/.lingo/runs/<hash>.json (indexé par chemin absolu du projet). Sur n’importe quelle machine avec le même checkout et les mêmes identifiants :
lingo pull…récupère les sorties du dernier push. Pratique pour la CI ("le traducteur lance push depuis son laptop, la CI lance pull à chaque build") ou simplement pour reprendre après avoir fermé le terminal.
Pour aller plus loin#
- Configuration — schéma
.lingo/config.json, fichier de verrouillage, emplacement de l’état d’exécution. - lingo push — motifs avec portée,
--force, sémantique de nouvelle tentative. - lingo pull — détection des conflits,
--dry-run.
