|
Documentação
Agende uma demoPlataforma
PlataformaMCPCLIAPIWorkflows
Guias
Changelog

Localização

  • Visão geral
  • API de Tradução
  • Localização de apps web
  • Localização de aplicativos mobile
  • iOS com String Catalogs
  • Android com strings.xml
  • Localização de e-mails
  • Conteúdo estático (ex.: .md, .json)
  • Next.js com Markdoc
  • Rails com i18n

Workflows

  • Configuração do engine com MCP
  • Triagem no Jira
  • CI/CD

Localização de e-mails

A CLI e a API de localização do Lingo.dev oferecem duas abordagens para localização de e-mails: traduzir arquivos de template no build para publicar templates por idioma, ou traduzir o conteúdo em tempo de execução antes do envio. Em ambos os casos, tudo passa por um engine de localização configurado, com regras de glossário, voz da marca e seleção de modelo aplicadas automaticamente.

Escolha sua abordagem#

AbordagemIdeal paraComo funciona
Build-time (CLI)Arquivos de template — strings JSON do react-emailTraduza os arquivos no seu repositório e faça o deploy de templates por idioma
Runtime (API)Conteúdo dinâmico, templates renderizados pelo ESPChame a API de localização antes do envio e passe o conteúdo traduzido para seu provedor de e-mail

Qual abordagem escolher?

Se o conteúdo traduzível dos seus e-mails estiver no repositório como arquivos de recurso, use a abordagem em tempo de build. Se o conteúdo do e-mail for gerado dinamicamente ou armazenado no seu provedor de serviço de e-mail, use a abordagem em tempo de execução.

Pré-requisitos#

Cada tradução passa por um engine de localização — a configuração que define qual modelo de LLM, glossário, voz da marca e regras serão aplicados. Crie um no painel da Lingo.dev e, em seguida, instale e autentique a CLI:

bash
npm install -g @lingo.dev/cli
lingo login

A CLI requer Node 22+. Em CI, defina LINGO_API_KEY em vez de executar lingo login.

Localização em build-time#

A CLI traduz conteúdo de e-mail a partir de arquivos de recurso JSON. Extraia o conteúdo traduzível para JSON, aponte a CLI para ele e gere arquivos por idioma ao lado dos arquivos de origem.

Os templates react-email são componentes React que renderizam em HTML. Extraia as strings traduzíveis para arquivos de recurso JSON usando uma biblioteca de i18n como react-i18next e, depois, traduza os arquivos JSON com a CLI.

Execute lingo init para gerar a configuração e lingo link para vincular sua organização e seu engine. O .lingo/config.json resultante fica assim:

json
{
  "orgId": "org_abc123",
  "engineId": "eng_abc123",
  "sourceLocale": "en",
  "targetLocales": ["es", "fr", "de", "ja"],
  "files": [{ "pattern": "emails/locales/en.json" }]
}

O idioma fica no caminho: a CLI substitui o idioma de origem no padrão por cada idioma de destino, então emails/locales/en.json gera emails/locales/es.json, emails/locales/fr.json e assim por diante. Faça commit de .lingo/config.json no seu repositório.

Na primeira execução, traduza todos os idiomas. Nas próximas, traduza apenas o que mudou:

bash
lingo push --backfill-missing   # first run / new locale
lingo push                      # delta on later runs

Na hora da renderização, passe o idioma para o componente de e-mail e carregue o arquivo JSON correspondente. A função react-email render() gera HTML específico por idioma, pronto para envio.

Para recuperar os resultados da última execução de push a qualquer momento, use lingo pull. Para verificar se as traduções estão atualizadas sem gravar alterações (por exemplo, em CI), use lingo check.

Localização em runtime#

Quando o conteúdo do e-mail é dinâmico — como notificações personalizadas, resumos de conteúdo gerado por usuários ou texto de marketing armazenado em um CMS — traduza tudo em tempo de execução antes do envio. Isso segue o padrão descrito no guia da API de Tradução.

javascript
async function sendLocalizedEmail(userId, templateId, content) {
  const user = await db.users.findById(userId);

  const response = await fetch("https://api.lingo.dev/process/localize", {
    method: "POST",
    headers: {
      "X-API-Key": process.env.LINGODOTDEV_API_KEY,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      engineId: "eng_abc123",
      sourceLocale: "en",
      targetLocale: user.locale,
      data: {
        subject: content.subject,
        preheader: content.preheader,
        body: content.body,
      },
    }),
  });

  const { data } = await response.json();

  await emailProvider.send({
    to: user.email,
    subject: data.subject,
    html: renderTemplate(templateId, data),
  });
}

Boas práticas#

ÁreaRecomendação
AssuntoMantenha abaixo de 50 caracteres. Use um glossário para evitar a tradução de nomes de marca.
Texto de préviaTraduza separadamente do corpo do e-mail — os clientes de e-mail exibem esse texto de forma independente.
Voz da marcaConfigure o tom por idioma no engine de localização. E-mails de marketing em japonês exigem um registro diferente dos em alemão.
Idiomas RTLTeste a saída renderizada em clientes de e-mail para árabe, hebraico e persa. O tratamento de HTML dir="rtl" varia entre clientes.
Bloqueio de chavesUse chaves bloqueadas para URLs, nomes de produtos e identificadores legais que não devem ser traduzidos.

Próximos passos#

API de Tradução
Guia completo para localização em runtime via API
Vozes da marca
Defina tom e formalidade por idioma de destino
Glossários
Controle quais termos são traduzidos e quais permanecem como estão
App do GitHub
Automatize a tradução de templates de e-mail em toda pull request

Esta página foi útil?

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