|
Documentação
Marcar uma demonstraçãoPlataforma
PlataformaMCPCLIAPIWorkflows
Guias
Changelog

Localização

  • Visão geral
  • API de Tradução
  • Localização de aplicações web
  • Localização de Apps Mobile
  • iOS com String Catalogs
  • Android com strings.xml
  • Localização de emails
  • Conteúdo Estático (ex.: .md, .json)
  • Next.js com Markdoc
  • Rails com i18n

Workflows

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

Localização de emails

A CLI e a API de localização do Lingo.dev suportam dois modelos para a localização de emails: traduzir ficheiros de template no momento do build para publicar templates por idioma, ou traduzir conteúdo em runtime antes do envio. Em ambos os casos, tudo passa por um motor de localização configurado, com regras de glossário, voz da marca e seleção de modelo aplicadas automaticamente.

Escolha a abordagem certa#

AbordagemMais indicado paraComo funciona
Build-time (CLI)Ficheiros de template — strings JSON do react-emailTraduza os ficheiros no seu repositório e faça deploy de templates por idioma
Runtime (API)Conteúdo dinâmico, templates processados pelo ESPChame a API de localização antes do envio e passe o conteúdo traduzido ao seu fornecedor de email

Que abordagem deve escolher?

Se o texto traduzível dos seus emails estiver no repositório sob a forma de ficheiros de recursos, use a abordagem em tempo de compilação. Se o conteúdo do email for gerado dinamicamente ou armazenado no seu fornecedor de serviços de email, use a abordagem em tempo de execução.

Pré-requisitos#

Cada tradução passa por um motor de localização — a configuração que define que modelo de LLM, glossário, voz da marca e regras se aplicam. Crie um no painel da Lingo.dev e, depois, 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 email a partir de ficheiros de recursos JSON. Extraia o texto traduzível para JSON, aponte a CLI para esse ficheiro e obtenha ficheiros por idioma lado a lado com o ficheiro de origem.

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

Execute lingo init para gerar a configuração e lingo link para associar a sua organização e o motor. O ficheiro .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 faz parte do caminho: a CLI substitui o idioma de origem no padrão por cada idioma de destino, por isso emails/locales/en.json produz emails/locales/es.json, emails/locales/fr.json e assim sucessivamente. Faça commit de .lingo/config.json no seu repositório.

Na primeira execução, traduza todos os idiomas; nas seguintes, traduza apenas o que mudou:

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

No momento da renderização, passe o idioma ao seu componente de email e carregue o ficheiro JSON correspondente. A função react-email render() gera HTML específico para cada idioma, pronto a enviar.

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

Localização em runtime#

Quando o conteúdo do email é dinâmico — notificações personalizadas, resumos de conteúdo gerado pelo utilizador ou copy de marketing armazenada num CMS — traduza-o em runtime antes do envio. Isto 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
AssuntosMantenha-os abaixo dos 50 caracteres. Use um glossário para evitar a tradução de nomes de marca.
Texto de pré-visualizaçãoTraduza-o separadamente do corpo — os clientes de email apresentam-no de forma independente.
Voz da marcaConfigure o tom por idioma no motor de localização. Emails de marketing em japonês exigem um registo diferente dos emails em alemão.
Idiomas RTLTeste o resultado renderizado em clientes de email para árabe, hebraico e persa. O tratamento de HTML dir="rtl" varia de cliente para cliente.
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 através da API
Vozes da marca
Defina o tom e a formalidade para cada idioma de destino
Glossários
Controle que termos são traduzidos e quais devem permanecer inalterados
GitHub App
Automatize a tradução de templates de email em cada pull request

Esta página foi útil?

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