|Labs
Agende uma demoPlataforma
React (Lingo Compiler)
Alpha
React (MCP)React (i18n)CLI legado (v0)
Descontinuado

Lingo.dev Compiler

  • Como funciona
  • Configuração
  • Primeiros passos com o Compiler

Frameworks

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

Guias

  • Troca de idioma
  • Pluralização automática
  • Overrides manuais
  • Modos de build
  • Estrutura do Projeto
  • Provedores de tradução
  • Resolvedores personalizados de idioma
  • Ferramentas de desenvolvimento

Referência

  • Boas práticas
  • Referência de configuração
  • Solução de problemas
  • Guia de migração
  • Otimização
  • Formatos de saída

Estrutura do Projeto

Alpha

O Compiler da Lingo.dev está em alpha. Ele é instável, não é recomendado para uso em 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 para armazenar metadados de tradução e cache. Entender essa estrutura ajuda você a gerenciar traduções no controle de versão, depurar traduções ausentes e otimizar o desempenho do build.

O diretório .lingo/#

O Compiler cria esse diretório automaticamente no primeiro build. Ele reúne todos os metadados de tradução usados no 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 arquivo principal no diretório .lingo/. Ele 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 idioma
  • Snapshots do texto-fonte — o texto-fonte no momento da tradução, usado para detectar alterações

O Compiler lê esse arquivo no início de cada build. Strings com hashes correspondentes reutilizam traduções em cache. Strings com hashes alterados ou ausentes são enviadas ao provedor de tradução configurado.

Faça commit no controle de versão

Sempre faça commit de .lingo/metadata.json no repositório. Builds de produção no modo cache-only leem as traduções exclusivamente desse arquivo. Se ele não estiver versionado, os builds de produção vão falhar.

Cuidados com o .gitignore#

Não adicione .lingo/ ao .gitignore. Esse diretório deve ser versionado. Exemplo de .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 qual diretório o Compiler vai varrer em busca de componentes React traduzíveis:

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

O Compiler faz uma varredura recursiva de todos os arquivos .tsx, .ts, .jsx e .js dentro de sourceRoot em busca de conteúdo JSX traduzível. Arquivos fora desse diretório não são processados.

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

Um sourceRoot mais amplo faz a varredura de mais arquivos, o que aumenta o tempo de build. Mantenha-o o mais restrito possível. Se apenas alguns arquivos precisarem de tradução, use a opção useDirective.

Modo opt-in com 'use i18n'#

Por padrã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, apenas arquivos que começam com a diretiva 'use i18n' são processados:

tsx
'use i18n';

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

Arquivos 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
App pequeno em que todo o conteúdo deve ser traduzidoPadrão (useDirective: false)
Base de código grande com apenas algumas páginas voltadas ao usuárioOpt-in (useDirective: true)
Monorepo com componentes internos e externos compartilhadosOpt-in (useDirective: true)
Adoção gradual — adicionando i18n a um app existenteOpt-in (useDirective: true)

lingoDir#

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

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

Isso é ú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 personalizados de idioma
Adicione arquivos resolvedores a .lingo/
Referência de Configuração
Opções sourceRoot, lingoDir e useDirective
Boas práticas
Dicas de controle de versão e configuração do projeto

Esta página foi útil?

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