|
Documentação
Marcar uma demonstraçãoPlataforma
PlataformaMCPCLI
APIWorkflows
GuiasChangelog

Visão geral

  • @lingo.dev/cli

Primeiros passos

  • Início rápido
  • Configuração

Introdução

  • Exemplos

Referência

  • lingo push
  • lingo pull
  • lingo purge
  • Outros comandos

Configuração

  • Controlos de chaves
  • Formatos
  • Idiomas

Guias

  • Adicionar um idioma
  • Traduções existentes
  • Retradução
  • Notas do tradutor
  • Execuções, estado e recuperação
  • CI/CD
  • Monorepos
  • Projetos de grande escala

Está à procura da CLI anterior (v0)? Consulte a documentação da CLI anterior

Projetos de exemplo

Cada exemplo abaixo é um repositório real com .lingo/config.json registado e traduções já preparadas, para que possa consultar a configuração ao lado do resultado que gerou. A maioria são aplicações que pode executar; alguns existem apenas para mostrar um formato de ficheiro isoladamente. Clone ou crie um fork de um deles, execute lingo link para associar o seu próprio motor e faça push.

Escolha primeiro a abordagem#

Há duas formas de localizar com a CLI, e é isso que determina quais os exemplos relevantes para si.

Traduza os ficheiros que já tem. A sua framework guarda as traduções no seu próprio formato — Rails YAML, Android XML, Laravel PHP, ARB, Markdown — e a CLI traduz esses ficheiros no local. Nada no seu código muda. É o caso de nove dos onze exemplos abaixo.

Escreva sem chaves. Envolve as strings em l.text(...) onde aparecem, o lingo extract gera por si um catálogo indexado por hash, e deixa de haver chaves de tradução para dar nome ou manter. Isto implica uma etapa de build e um pacote de runtime, e é isso que mostram os dois exemplos de aplicações web.

Aplicações móveis#

ExemploFormatoPorque escolher este
iOSxcode-xcstringsUm Catálogo de Strings inclui todos os idiomas, por isso o caminho de destino é o mesmo que o caminho de origem.
Androidandroidvalues/ simples como origem, com os próprios qualificadores do Android (values-pt-rBR/)
FlutterflutterMetadados de @ e placeholders ICU preservados, @@locale reescrito em cada ficheiro

Aplicações web#

Os dois exemplos sem chaves. Ambos envolvem as strings com l.text(...) e geram o respetivo catálogo com lingo extract, por isso a coluna do meio indica o pacote de runtime em vez de um formato de ficheiro.

ExemploPacotePorque escolher este
React + Vite@lingo.dev/reactCriação sem chaves; as declarações geradas restringem l.text() às strings extraídas
Next.js@lingo.dev/react-nextCriação sem chaves, mais routing por idioma, hreflang e um seletor — Pages Router

hreflang em produção

LingoHead constrói os URLs hreflang a partir de uma prop baseUrl que, por omissão, é vazia, por isso as tags são relativas out of the box. Os motores de busca esperam URLs absolutos — passa a origem do teu site (<LingoHead baseUrl="https://example.com" />) antes de confiares nelas.

Conteúdo e especificações#

ExemploFormatoPorque escolher este
Documentação em Markdownmd, mdxProsa por predefinição, com campos de frontmatter e props de MDX incluídos opcionalmente
Markdocmarkdoc, jsonConteúdo em Next.js e strings da interface num único push — três entradas, com opções diferentes em cada uma
OpenAPIyaml-openapiApenas resumos e descrições; paths, operation IDs e enums mantêm-se intocados

Catálogos de frameworks#

ExemploFormatoPorque escolher este
Railsyaml-root-keyO idioma é a chave de raiz do YAML, por isso a própria chave de raiz é reescrita
Laravelphp, poCatálogos do Laravel mais um ficheiro gettext; placeholders :name preservados em ambos
Módulos TypeScripttypescriptCatálogos como módulos TypeScript em vez de JSON. Apenas o formato — nenhuma aplicação os utiliza

Os catálogos TypeScript precisam de um default export

O formato typescript lê uma exportação default — export default { … }, com ou sem as const. Uma exportação com nome não produz conteúdo traduzível, e a execução termina depois de copiar o código-fonte tal como está. Por isso, se um push indicar ficheiros localizados mas praticamente zero tokens de saída, verifica primeiro a forma da exportação.

Como usar um destes exemplos#

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

Nenhum dos exemplos regista no repositório orgId nem engineId — assim evita-se que um fork faça push através do motor de outra pessoa. lingo link preenche ambos localmente.

Se preferir a GitHub App ao CLI

A GitHub App lê engineId a partir do .lingo/config.json comitado no teu repositório — a organização é resolvida a partir da própria instalação da App, mas o motor tem de estar no ficheiro. Depois de fazeres fork, executa lingo link e faz commit da configuração atualizada antes de instalares a App.

Nem todos os formatos têm exemplo#

Estes onze cobrem os frameworks sobre os quais as pessoas mais perguntam, mas a CLI traduz dezoito formatos. xliff, srt, Xcode .strings e .stringsdict, yaml genérico e JSON/JSONC autónomo funcionam todos sem ser preciso haver aqui um repositório — vê Formats para a lista completa e a configuração de que cada um precisa.

Próximos passos#

Formatos
Os dezoito formatos que a CLI traduz, incluindo os que não têm exemplo aqui
Configuração
Referência completa de .lingo/config.json
Quickstart
Instale, autentique-se e faça o primeiro push em poucos minutos
GitHub App
Traduza a cada push, do lado do servidor

Esta página foi útil?

Mike ShulgaMike Shulga·Atualizado há aproximadamente 5 horas·4 min de leitura