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

Lingo.dev Compiler

  • Como funciona
  • Configuração
  • Introdução rápida ao Compiler

Frameworks

  • Integração com Next.js
  • Vite + React

Guias

  • Alternância de idioma
  • Pluralização automática
  • Substituições manuais
  • Modos de build
  • Estrutura do Projeto
  • Fornecedores de Tradução
  • Resolvers personalizados de idioma
  • Ferramentas de desenvolvimento

Referência

  • Boas práticas
  • Referência de Configuração
  • Resolução de problemas
  • Guia de migração
  • Otimização
  • Formatos de Saída

Estrutura do Projeto

Alfa

O Compiler da Lingo.dev está em alfa. É instável, não é recomendado para produção e as APIs podem mudar entre versões.

O Compiler da Lingo.dev cria e mantém um diretório .lingo/ na raiz do projeto, onde armazena metadados de tradução e cache. Perceber esta estrutura ajuda-o a gerir traduções no controlo de versões, diagnosticar traduções em falta e otimizar o desempenho da build.

O diretório .lingo/#

O Compiler cria este diretório automaticamente na primeira build. Contém todos os metadados de tradução usados pelo pipeline de build:

text
.lingo/
  metadata.json              # Translation cache and content hashes
  locale-resolver.server.ts  # Optional: custom server-side locale resolver
  locale-resolver.client.ts  # Optional: custom client-side locale resolver

metadata.json#

Este é o ficheiro principal no diretório .lingo/. Armazena:

  • Hashes de conteúdo — identificadores estáveis baseados em hash para cada string traduzível
  • Traduções em cache — traduções geradas para cada par de idiomas
  • Snapshots do texto de origem — o texto de origem no momento da tradução, usado para detetar alterações

O Compiler lê este ficheiro no início de cada build. As strings com hashes correspondentes reutilizam as traduções em cache. As strings com hashes alterados ou em falta são enviadas para o fornecedor de tradução configurado.

Faça commit para o controlo de versões

Faça sempre commit de .lingo/metadata.json no repositório. As builds de produção em modo cache-only leem as traduções exclusivamente deste ficheiro. Se não for incluído em commit, as builds de produção vão falhar.

Considerações sobre o .gitignore#

Não adicione .lingo/ ao .gitignore. O diretório deve ficar sob controlo de versões. Exemplo de um .gitignore típico para um projeto que usa o Compiler:

gitignore
# Do NOT ignore .lingo/ - it contains translation cache
node_modules/
dist/
.env

sourceRoot#

A opção sourceRoot define que diretório o Compiler analisa à procura de componentes React traduzíveis:

ts
{
  sourceRoot: "./app",  // Next.js App Router
  // or
  sourceRoot: "src",    // Vite + React
}

O Compiler analisa recursivamente todos os ficheiros .tsx, .ts, .jsx e .js dentro de sourceRoot à procura de conteúdo JSX traduzível. Os ficheiros fora deste diretório não são processados.

Valor de sourceRootO que é analisado
"./app"Todos os ficheiros no diretório app/ (convenção Next.js)
"src"Todos os ficheiros no diretório src/ (convenção Vite)
"."Todos os ficheiros na raiz do projeto (útil para monorepos com packages partilhados)

Um sourceRoot mais abrangente analisa mais ficheiros, o que aumenta o tempo de build. Mantenha-o o mais limitado possível. Se apenas alguns ficheiros precisarem de tradução, use antes a opção useDirective.

Modo opt-in com "use i18n"#

Por predefinição, o Compiler traduz todo o texto JSX em sourceRoot. Para mudar para o modo opt-in, defina useDirective: true:

ts
{
  useDirective: true,
}

No modo opt-in, só são processados os ficheiros que começam com a diretiva 'use i18n':

tsx
'use i18n';

export function Welcome() {
  return <h1>Welcome to our app</h1>;
  // This text IS translated
}

Os ficheiros sem a diretiva são ignorados:

tsx
export function InternalAdmin() {
  return <h1>Admin Dashboard</h1>;
  // This text is NOT translated
}

Quando usar o modo opt-in#

CenárioModo recomendado
Aplicação pequena em que todo o conteúdo deve ser traduzidoPredefinição (useDirective: false)
Base de código grande com apenas algumas páginas visíveis para o utilizadorOpt-in (useDirective: true)
Monorepo com componentes internos e externos partilhadosOpt-in (useDirective: true)
Adoção gradual — adicionar i18n a uma aplicação existenteOpt-in (useDirective: true)

lingoDir#

A opção lingoDir altera a localização do diretório de metadados:

ts
{
  lingoDir: ".lingo",  // Default
  // or
  lingoDir: ".translations",  // Custom location
}

Isto é útil se .lingo/ entrar em conflito com um diretório já existente no projeto.

Próximos passos#

Modos de Build
Como o metadata.json é usado em cada modo
Resolvedores de idioma personalizados
Adicione ficheiros de resolução a .lingo/
Referência de Configuração
Opções sourceRoot, lingoDir e useDirective
Boas Práticas
Dicas para controlo de versões e configuração do projeto

Esta página foi útil?

Max PrilutskiyMax Prilutskiy·Atualizado há 4 meses·3 min de leitura