|
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

Projets d’exemple

Chaque exemple ci-dessous est un vrai dépôt avec .lingo/config.json versionné et des traductions déjà en place, pour que vous puissiez consulter la config juste à côté du résultat qu’elle produit. La plupart sont des applications que vous pouvez lancer ; certains servent simplement à montrer un format de fichier à lui seul. Clonez ou forkez-en un, exécutez lingo link pour y associer votre propre moteur, puis poussez.

Choisissez d’abord une approche#

Il existe deux façons de localiser avec le CLI, et c’est ce qui détermine les exemples pertinents pour vous.

Traduisez les fichiers que vous avez déjà. Votre framework stocke les traductions dans son propre format — YAML Rails, XML Android, PHP Laravel, ARB, Markdown — et le CLI traduit ces fichiers directement sur place. Votre code, lui, ne change pas. C’est le cas de neuf des onze exemples ci-dessous.

Rédigez sans clés. Vous entourez les chaînes avec l.text(...) là où elles apparaissent, lingo extract génère pour vous un catalogue basé sur des clés de hachage, et vous n’avez aucune clé de traduction à nommer ou à maintenir. En contrepartie, cela ajoute une étape de build et un package d’exécution — c’est ce qu’illustrent les deux exemples d’app web.

Applications mobiles#

ExempleFormatPourquoi ce choix
iOSxcode-xcstringsUn String Catalog regroupe toutes les langues, donc le chemin cible est identique au chemin source.
Androidandroidvalues/ brut comme source, avec les qualifiants natifs d’Android (values-pt-rBR/)
FlutterflutterLes métadonnées @ et les placeholders ICU sont conservés, tandis que @@locale est réécrit fichier par fichier

Applications web#

Les deux exemples sans clés. Tous deux encapsulent les chaînes avec l.text(...) et génèrent leur catalogue avec lingo extract, donc la colonne du milieu indique le package d’exécution plutôt qu’un format de fichier.

ExemplePackagePourquoi ce choix
React + Vite@lingo.dev/reactRédaction sans clé ; les déclarations générées restreignent l.text() aux chaînes extraites
Next.js@lingo.dev/react-nextRédaction sans clés avec routage par langue, hreflang et un sélecteur : Pages Router

hreflang en production

LingoHead construit ses URL hreflang à partir d’une prop baseUrl vide par défaut, donc les balises sont relatives prêtes à l’emploi. Les moteurs de recherche attendent des URL absolues — transmettez l’origine de votre site (<LingoHead baseUrl="https://example.com" />) avant de vous y fier.

Contenu et spécifications#

ExempleFormatPourquoi ce choix
Docs Markdownmd, mdxLe texte courant par défaut, avec les champs de frontmatter et les props MDX activés sur option
Markdocmarkdoc, jsonContenu Next.js et chaînes d’interface en une seule publication — trois entrées, avec des options différentes pour chacune
OpenAPIyaml-openapiRésumés et descriptions uniquement ; chemins, identifiants d’opération et enums restent inchangés

Catalogues de framework#

ExempleFormatPourquoi ce choix
Railsyaml-root-keyLa langue est la clé racine du YAML ; la clé racine elle-même est donc réécrite
Laravelphp, poCatalogues Laravel plus un fichier gettext ; les placeholders :name sont conservés dans les deux
Modules TypeScripttypescriptDes catalogues sous forme de modules TypeScript plutôt qu’en JSON. Le format uniquement — aucune application ne les utilise.

Les catalogues TypeScript nécessitent un export par défaut

Le format typescript lit un export par défaut — export default { … }, avec ou sans as const. Un export nommé ne produit aucun contenu traduisible, et l’exécution se termine en recopiant la source telle quelle. Donc si un push indique des fichiers localisés mais quasiment zéro jeton en sortie, commencez par vérifier la forme de l’export.

Utiliser l’un de ces exemples#

bash
npm install -g @lingo.dev/cli
lingo login
lingo link          # writes your own orgId and engineId into .lingo/config.json
lingo push --wait

Aucun de ces exemples ne versionne orgId ni engineId — pour éviter qu’un fork pousse via le moteur de quelqu’un d’autre. lingo link renseigne les deux en local.

Si vous préférez la GitHub App au CLI

La GitHub App lit engineId depuis le .lingo/config.json versionné dans votre dépôt — elle détermine l’organisation à partir de l’installation de l’App elle-même, mais le moteur doit figurer dans le fichier. Après un fork, exécutez lingo link et validez la configuration mise à jour avant d’installer l’App.

Tous les formats n’ont pas leur exemple#

Ces onze exemples couvrent les frameworks les plus demandés, mais le CLI traduit dix-huit formats. xliff, srt, les .strings Xcode et .stringsdict, les yaml génériques, ainsi que les fichiers JSON/JSONC autonomes fonctionnent tous sans dépôt ici — voir Formats pour la liste complète et la configuration requise pour chacun.

Étapes suivantes#

Formats
Les dix-huit formats que le CLI traduit, y compris ceux qui n’ont pas d’exemple ici
Configuration
Référence complète de .lingo/config.json
Quickstart
Installez, authentifiez-vous et lancez un premier push en quelques minutes
GitHub App
Traduire à chaque push, côté serveur

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

Mike ShulgaMike Shulga·Mis à jour il y a environ 5 heures·4 min de lecture