O CLI traduz seis formatos de arquivo. O formato é inferido pela extensão do arquivo; para sobrescrevê-lo, defina format em uma entrada files[].
| Formato | Extensões | valor de format | Observações |
|---|---|---|---|
| JSON | .json | json | Chave/valor. Compatível com key controls. |
| JSONC | .jsonc | jsonc | JSON com comentários. Os comentários são preservados e também servem como translator notes. |
| Markdown | .md | md | A prosa é traduzida; o frontmatter é opcional. |
| MDX | .mdx | mdx | Markdown + JSX. Props de componentes são opcionais. |
| Markdoc | .mdoc | markdoc | Markdown + tags. Frontmatter + atributos de tag. |
| OpenAPI YAML | .yaml | yaml-openapi | Especificações OpenAPI. Sempre defina format explicitamente. |
Veja na prática, do início ao fim
O demo project inclui um arquivo por formato com a configuração exata de que cada um precisa. Clone com npx degit lingodotdev/lingo.dev/demo/new-cli my-lingo-demo e faça um push.
npx degit lingodotdev/lingo.dev/demo/new-cli my-lingo-demo
cd my-lingo-demoJSON e JSONC#
Tradução simples de chave/valor. Todo valor de string é traduzido, a menos que um key control indique o contrário.
{ "pattern": "content/en/app.json", "lockedKeys": ["meta.version"] }O JSONC também preserva os comentários, que o engine usa como contexto — veja translator notes.
{ "pattern": "content/en/settings.jsonc", "preservedKeys": ["featureFlags"] }Markdown, MDX e Markdoc#
A prosa do corpo é traduzida por padrão. Frontmatter e componentes incorporados não são traduzidos, a menos que você opte por isso.
Frontmatter#
Liste os campos de frontmatter que devem ser traduzidos com translateFrontmatterFields:
{
"pattern": "content/en/guide.md",
"translateFrontmatterFields": ["title", "description"]
}Props de componentes MDX#
No MDX, traduza props específicas em componentes específicos com translateComponentProps:
{
"pattern": "content/en/landing.mdx",
"translateFrontmatterFields": ["title"],
"translateComponentProps": [{ "component": ["Hero", "Callout"], "props": ["title", "body"] }]
}Isso traduz as props title e body em <Hero> e <Callout>, e deixa todas as outras props intactas.
Markdoc#
O Markdoc funciona como Markdown, com frontmatter e atributos de tag preservados:
{
"pattern": "content/en/changelog.mdoc",
"translateFrontmatterFields": ["title"]
}OpenAPI YAML#
Como YAML genérico é ambíguo, especificações OpenAPI exigem um format explícito:
{ "pattern": "content/en/api.yaml", "format": "yaml-openapi" }O engine traduz os campos voltados para leitura humana (resumos, descrições) e mantém intactos as chaves de schema, os paths e os IDs de operação.
Caminhos de saída#
Os destinos são gravados substituindo o segmento de idioma do padrão de origem — content/en/app.json → content/de/app.json. Mantenha o idioma de origem no caminho para que o CLI saiba para onde enviar os destinos. Veja Configuração.
Vindo do CLI legado?#
O CLI legado oferecia suporte a ~25 formatos (CSV, PO, XLIFF, strings de Android/Xcode, Flutter ARB, HTML e mais). O suporte a esses formatos está sendo adicionado ao CLI atual com base no consumo; até que o seu formato chegue, a documentação do CLI legado cobre isso.
