El CLI traduce seis formatos de archivo. El formato se deduce a partir de la extensión del archivo; establece format en una entrada files[] para forzarlo.
| Formato | Extensiones | valor de format | Notas |
|---|---|---|---|
| JSON | .json | json | Clave/valor. Admite controles de clave. |
| JSONC | .jsonc | jsonc | JSON con comentarios. Los comentarios se conservan y también sirven como notas para traductores. |
| Markdown | .md | md | Se traduce la prosa; el frontmatter es opcional. |
| MDX | .mdx | mdx | Markdown + JSX. Las props de los componentes son opcionales. |
| Markdoc | .mdoc | markdoc | Markdown + etiquetas. Frontmatter + atributos de etiquetas. |
| OpenAPI YAML | .yaml | yaml-openapi | Especificaciones OpenAPI. Define siempre format de forma explícita. |
Velo de principio a fin
El proyecto de demostración incluye un archivo por formato con la configuración exacta que necesita cada uno. Clónalo con npx degit lingodotdev/lingo.dev/demo/new-cli my-lingo-demo y ejecuta un push.
npx degit lingodotdev/lingo.dev/demo/new-cli my-lingo-demo
cd my-lingo-demoJSON y JSONC#
Traducción básica de clave/valor. Se traduce cada valor de tipo string, salvo que un control de clave indique lo contrario.
{ "pattern": "content/en/app.json", "lockedKeys": ["meta.version"] }Además, JSONC conserva los comentarios, que el motor interpreta como contexto; consulta notas para traductores.
{ "pattern": "content/en/settings.jsonc", "preservedKeys": ["featureFlags"] }Markdown, MDX y Markdoc#
La prosa del cuerpo se traduce por defecto. El frontmatter y los componentes integrados no se traducen a menos que lo actives expresamente.
Frontmatter#
Indica con translateFrontmatterFields qué campos del frontmatter quieres traducir:
{
"pattern": "content/en/guide.md",
"translateFrontmatterFields": ["title", "description"]
}Props de componentes MDX#
En MDX, traduce props concretas de componentes concretos con translateComponentProps:
{
"pattern": "content/en/landing.mdx",
"translateFrontmatterFields": ["title"],
"translateComponentProps": [{ "component": ["Hero", "Callout"], "props": ["title", "body"] }]
}Esto traduce las props title y body de <Hero> y <Callout>, y deja intactas todas las demás.
Markdoc#
Markdoc funciona como Markdown, con el frontmatter y los atributos de las etiquetas conservados:
{
"pattern": "content/en/changelog.mdoc",
"translateFrontmatterFields": ["title"]
}OpenAPI YAML#
El YAML genérico es ambiguo, así que las especificaciones OpenAPI requieren un format explícito:
{ "pattern": "content/en/api.yaml", "format": "yaml-openapi" }El motor traduce los campos visibles para las personas usuarias (resúmenes, descripciones) y deja intactas las claves del esquema, las rutas y los ID de operación.
Rutas de salida#
Los destinos se escriben sustituyendo el segmento de idioma del patrón de origen — content/en/app.json → content/de/app.json. Mantén el idioma de origen en la ruta para que el CLI sepa dónde van los destinos. Consulta Configuración.
¿Vienes del CLI heredado?#
El CLI heredado admitía unos 25 formatos (CSV, PO, XLIFF, cadenas de Android/Xcode, Flutter ARB, HTML y más). La compatibilidad con ellos se está incorporando al CLI actual en función del uso; hasta que llegue tu formato, la documentación del CLI heredado lo cubre.
