Le CLI prend en charge six formats de fichier. Le format est déduit de l’extension du fichier ; pour le remplacer, définissez format sur une entrée files[].
| Format | Extensions | Valeur de format | Notes |
|---|---|---|---|
| JSON | .json | json | Paires clé-valeur. Prend en charge les contrôles de clé. |
| JSONC | .jsonc | jsonc | JSON avec commentaires. Les commentaires sont conservés et font aussi office de notes pour les traducteurs. |
| Markdown | .md | md | La prose est traduite ; le frontmatter doit être activé explicitement. |
| MDX | .mdx | mdx | Markdown + JSX. Les props des composants doivent être activées explicitement. |
| Markdoc | .mdoc | markdoc | Markdown + balises. Frontmatter + attributs de balise. |
| OpenAPI YAML | .yaml | yaml-openapi | Spécifications OpenAPI. Définissez toujours format explicitement. |
Voir le fonctionnement de bout en bout
Le projet de démonstration inclut un fichier par format, avec la configuration exacte nécessaire pour chacun. Clonez-le avec npx degit lingodotdev/lingo.dev/demo/new-cli my-lingo-demo et lancez un push.
npx degit lingodotdev/lingo.dev/demo/new-cli my-lingo-demo
cd my-lingo-demoJSON et JSONC#
Traduction simple en clé-valeur. Chaque valeur de chaîne est traduite, sauf si un contrôle de clé indique le contraire.
{ "pattern": "content/en/app.json", "lockedKeys": ["meta.version"] }JSONC conserve aussi les commentaires, que le moteur interprète comme du contexte — voir les notes pour les traducteurs.
{ "pattern": "content/en/settings.jsonc", "preservedKeys": ["featureFlags"] }Markdown, MDX et Markdoc#
Le texte du corps est traduit par défaut. Le frontmatter et les composants intégrés ne sont pas traduits, sauf si vous les activez explicitement.
Frontmatter#
Listez les champs de frontmatter à traduire avec translateFrontmatterFields :
{
"pattern": "content/en/guide.md",
"translateFrontmatterFields": ["title", "description"]
}Props des composants MDX#
Avec MDX, vous pouvez traduire des props spécifiques sur des composants précis avec translateComponentProps :
{
"pattern": "content/en/landing.mdx",
"translateFrontmatterFields": ["title"],
"translateComponentProps": [{ "component": ["Hero", "Callout"], "props": ["title", "body"] }]
}Cela traduit les props title et body sur <Hero> et <Callout>, et laisse toutes les autres props inchangées.
Markdoc#
Markdoc fonctionne comme Markdown, avec conservation du frontmatter et des attributs de balise :
{
"pattern": "content/en/changelog.mdoc",
"translateFrontmatterFields": ["title"]
}OpenAPI YAML#
Le YAML générique étant ambigu, les spécifications OpenAPI nécessitent un format explicite :
{ "pattern": "content/en/api.yaml", "format": "yaml-openapi" }Le moteur traduit les champs destinés aux utilisateurs (résumés, descriptions) et laisse intactes les clés de schéma, les chemins et les identifiants d’opération.
Chemins de sortie#
Les cibles sont écrites en remplaçant le segment de langue du motif source — content/en/app.json → content/de/app.json. Conservez la langue source dans le chemin pour que le CLI sache où écrire les cibles. Voir Configuration.
Vous venez de l’ancien CLI ?#
L’ancien CLI prenait en charge ~25 formats (CSV, PO, XLIFF, chaînes Android/Xcode, Flutter ARB, HTML, etc.). La prise en charge de ces formats est ajoutée au CLI actuel en fonction de l’usage ; en attendant que le vôtre arrive, la documentation du legacy CLI le couvre.
