|Labs
Marcar uma demonstraçãoPlataforma
React (Lingo Compiler)
Alpha
React (MCP)React (i18n)CLI antiga (v0)
Descontinuado

Lingo.dev CLI

  • Como funciona
  • Configuração
  • Início rápido
  • Monorepos

Configuração

  • Formatos suportados
  • i18n.json
  • i18n.lock
  • Idiomas suportados

Funcionalidades

  • Traduções existentes
  • Adicionar idiomas
  • Substituições
  • Notas para tradutores
  • Chaves de tradução
  • Renomeação de chaves
  • Bloqueio de chaves
  • Ignorar chaves
  • Preservação de Chaves
  • Extraia chaves com IA

Desempenho

  • Projetos de Grande Escala
  • Processamento Paralelo
  • Estimativa de custo

Retradução

  • Retradução automática
  • Retradução
  • Remover traduções

Esta documentação abrange a CLI anterior (v0) e foi descontinuada. A CLI atual é a v1. Consulte a documentação da CLI atual

Formatos suportados

A CLI do Lingo.dev usa tipos de bucket para processar e traduzir diferentes formatos de ficheiro. Cada tipo de bucket é um parser específico, criado para um formato concreto. Configure um ou mais buckets no seu i18n.json para definir que ficheiros a CLI deve traduzir.

Tipos de bucket#

Tipo de bucketFormatoModo de saída[locale] obrigatório
jsonFicheiros JSONFicheiros separados por idiomaSim
json5Ficheiros JSON5Ficheiros separados por idiomaSim
jsoncFicheiros JSONC (com comentários)Ficheiros separados por idiomaSim
json-dictionaryDicionário JSON (chave-valor simples)Ficheiros separados por idiomaSim
yamlFicheiros YAMLFicheiros separados por idiomaSim
yaml-root-keyYAML com chaves de raiz por idiomaAltera o ficheiro de origemNão
markdownFicheiros MarkdownFicheiros separados por idiomaSim
mdxFicheiros MDXFicheiros separados por idiomaSim
markdocFicheiros MarkdocFicheiros separados por idiomaSim
htmlFicheiros HTMLFicheiros separados por idiomaSim
mjmlTemplates de email em MJMLFicheiros separados por idiomaSim
androidRecursos XML do AndroidFicheiros separados por idiomaSim
xcode-stringsFicheiros Xcode .stringsFicheiros separados por idiomaSim
xcode-stringsdictFicheiros Xcode .stringsdictFicheiros separados por idiomaSim
xcode-xcstringsCatálogos Xcode .xcstringsAltera o ficheiro de origemNão
flutterFicheiros ARB do FlutterFicheiros separados por idiomaSim
poFicheiros PO do GNU gettextFicheiros separados por idiomaSim
propertiesFicheiros Java .propertiesFicheiros separados por idiomaSim
csvFicheiros CSVAltera o ficheiro de origemNão
csv-per-localeFicheiros CSV (um por idioma)Ficheiros separados por idiomaSim
xmlFicheiros XML genéricosFicheiros separados por idiomaSim
xliffFicheiros XLIFFFicheiros separados por idiomaSim
srtFicheiros de legendas SRTFicheiros separados por idiomaSim
vttFicheiros de legendas VTTFicheiros separados por idiomaSim
phpArrays de localização em PHPFicheiros separados por idiomaSim
typescriptFicheiros TypeScriptFicheiros separados por idiomaSim
vue-jsonBlocos JSON do Vue i18nFicheiros separados por idiomaSim
txtFicheiros de texto simplesFicheiros separados por idiomaSim

Modos de saída#

Os buckets funcionam num de dois modos de saída:

Ficheiros separados por idioma — a CLI cria um ficheiro distinto para cada idioma de destino. Os padrões de inclusão têm de conter o placeholder [locale]:

json
{
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"]
    }
  }
}

Isto gera locales/en.json, locales/es.json, locales/fr.json, etc.

Altera o ficheiro de origem — a CLI escreve as traduções no mesmo ficheiro que contém o conteúdo original. O placeholder [locale] não é utilizado:

json
{
  "buckets": {
    "csv": {
      "include": ["translations.csv"]
    }
  }
}

Os ficheiros CSV normalmente guardam todos os idiomas em colunas dentro de um único ficheiro. Os catálogos Xcode .xcstrings e o YAML com chaves de raiz funcionam de forma semelhante.

Exemplos de configuração#

Aplicação web com JSON#

json
{
  "buckets": {
    "json": {
      "include": ["src/locales/[locale].json"],
      "lockedKeys": ["brand/name"]
    }
  }
}

Site de documentação com Markdown#

json
{
  "buckets": {
    "markdown": {
      "include": ["docs/[locale]/*.md"],
      "exclude": ["docs/[locale]/drafts/*.md"]
    }
  }
}

Aplicação móvel (iOS + Android)#

json
{
  "buckets": {
    "xcode-xcstrings": {
      "include": ["ios/Localizable.xcstrings"]
    },
    "android": {
      "include": ["android/app/src/main/res/values-[locale]/strings.xml"]
    }
  }
}

Monorepo com vários formatos#

json
{
  "buckets": {
    "json": {
      "include": ["apps/web/locales/[locale].json"]
    },
    "mdx": {
      "include": ["packages/docs/content/[locale]/*.mdx"]
    },
    "flutter": {
      "include": ["apps/mobile/lib/l10n/app_[locale].arb"]
    }
  }
}

Funcionalidades específicas por bucket#

Alguns buckets suportam funcionalidades adicionais para além dos padrões de inclusão/exclusão:

FuncionalidadeBuckets suportadosDescrição
Key LockingFormatos de chave-valor (JSON, YAML, etc.)Copiar os valores de origem sem traduzir
Key IgnoringFormatos de chave-valorExcluir completamente as chaves dos ficheiros de destino
Key PreservingFormatos de chave-valorInicializar uma vez e depois proteger contra atualizações
Translator NotesJSONC, XCStringsFornecer contexto através de comentários para melhorar a tradução

Regras dos padrões de inclusão#

  • Os padrões são relativos à localização do ficheiro i18n.json
  • Use [locale] como placeholder para os códigos de idioma (obrigatório para buckets de "ficheiros separados")
  • O asterisco (*) corresponde a qualquer nome de ficheiro: locales/[locale]/*.json
  • Os padrões recursivos (**) correspondem a ficheiros em qualquer profundidade: src/**/[locale].json, config/locales/**/[locale].yml. Quando um padrão usa **, node_modules, .git, dist, build, .next e .turbo são excluídos por predefinição — adicione as suas próprias entradas exclude conforme necessário (requer CLI 0.135.0+)
  • As extensões dos ficheiros não afetam o processamento — o tipo de bucket determina o parser

Próximos passos#

i18n.json
Referência completa de configuração
Key Locking
Proteja chaves específicas da tradução
Traduções existentes
Adicione a CLI a um projeto que já tem traduções
Configuração
Instale e configure a CLI

Esta página foi útil?

Max PrilutskiyMax Prilutskiy·Atualizado há 5 dias·4 min de leitura