Este guia mostra, do início ao fim, como traduzir um único componente React: instalar o runtime, envolver a aplicação, escrever uma tradução, extraí-la e apresentar o resultado noutro idioma.
Instalar o runtime
npm install @lingo.dev/reactSe estiver a usar Next.js, instale também @lingo.dev/react-next — adiciona utilitários integrados com o router sobre o mesmo runtime.
Envolver a aplicação com LingoProvider
import { LingoProvider } from "@lingo.dev/react";
import esMessages from "./locales/es.json";
export function App() {
return (
<LingoProvider locale="es" messages={esMessages}>
<Page />
</LingoProvider>
);
}messages é um objeto indexado por hash de conteúdo — exatamente o que o CLI gera em locales/<locale>.json. Na primeira execução, está vazio, e não há problema: as cadeias por traduzir usam o texto de origem.
Escrever uma tradução no código-fonte
import { useLingo } from "@lingo.dev/react";
function Page() {
const l = useLingo();
return <h1>{l.text("Hello", { context: "Hero heading" })}</h1>;
}l.text(source, { context }) é a chamada canónica. context é obrigatório — permite aos tradutores distinguir cadeias que se leem da mesma forma em inglês, mas têm significados diferentes noutros idiomas ("Save" como verbo vs. "Save" como nome).
Extrair a cadeia
lingo extractIsto analisa o seu código-fonte, calcula um hash estável para "Hello" + o contexto e escreve-o no ficheiro do seu idioma de origem (locales/en.jsonc por predefinição). Volte a executar após qualquer alteração — a extração é idempotente.
Enviar para tradução
lingo push --backfill-missingO CLI carrega o ficheiro de origem, pede ao motor para traduzir para os idiomas de destino configurados e transfere o resultado de volta para locales/<locale>.json. A partir daqui, cada envio inclui apenas o que mudou.
Apresentar o texto traduzido
Importe o ficheiro JSON do idioma em que a sua aplicação está a ser apresentada (ou selecione-o dinamicamente com base no utilizador) e passe-o a LingoProvider. A chamada do hook do passo 3 mantém-se igual — l.text("Hello", ...) devolve agora o valor traduzido porque o hash corresponde ao que foi transferido.
Este é o ciclo completo: escrever código no idioma de origem, extrair, enviar, apresentar. Não há qualquer espaço de nomes de chaves i18n separado para manter — a cadeia de origem é a chave (via hash).
Onde continuar#
- LingoProvider — como deve ser
messages, quando aninhar providers, mudança de idioma. - useLingo — a API completa do hook, incluindo
l.rich()para subárvores React dentro de traduções. - Plurais e select — tratar corretamente "1 item" / "N items".
