Tradução JSON

Traduza arquivos JSON de localização sem alterar suas chaves.

Chaves permanecem chaves. O aninhamento permanece intacto. Apenas os valores de string são traduzidos — e somente os valores de string. Todos os outros tipos de propriedade permanecem exatamente como enviados.

Chaves
sempre preservadas
Aninhados
objetos tratados recursivamente
36
idiomas de saída por solicitação
100K
tokens gratuitos / mês

Ferramentas de tradução padrão não entendem JSON.

APIs genéricas de tradução veem seu JSON como um bloco de texto. Elas traduzem nomes de chaves junto com os valores. Achatar objetos aninhados. Concatenam strings que não deveriam. O que retorna é um JSON estruturalmente quebrado que requer correção manual antes de poder ser usado. Se você mantém arquivos de localização para uma aplicação em produção, sabe que enviá-los para uma API de tradução padrão cria mais trabalho do que economiza.

O problema vai além dos nomes das chaves. APIs de tradução padrão também alteram variáveis de interpolação. Uma string como "Olá {name}, você tem {count} mensagens" retorna com os nomes das variáveis traduzidos — "Hola {nombre}, tienes {cuenta} mensajes" — o que quebra qualquer runtime que esperava o nome original da variável. Seguem horas de depuração.

Para equipes que mantêm arquivos de localização em vários idiomas para uma aplicação em produção, isso não é uma preocupação teórica. Já aconteceu. A questão é quanto tempo o processo manual de reparo leva a cada vez.

PolyLingo percorre seu JSON antes de traduzir.

PolyLingo entende a estrutura JSON. Ele percorre recursivamente seu objeto, identifica valores de string que contêm texto traduzível e envia apenas esses valores para o modelo de tradução. Nomes de chaves nunca são modificados. Números, booleanos, valores nulos e tipos não string são mantidos inalterados. A saída é um JSON válido com estrutura idêntica — apenas com valores de string traduzidos.

Variáveis de interpolação — {name}, {{count}}, %s e padrões similares — são identificadas e preservadas durante todo o processo de tradução. Elas são substituídas por espaços reservados antes da tradução e reinstauradas em sua forma original na saída. O modelo de tradução nunca as vê como texto traduzível.

Arrays são tratados corretamente: cada elemento string é traduzido, enquanto índices numéricos e a estrutura do array permanecem inalterados. Arrays mistos contendo strings e não-strings (números, objetos) são percorridos corretamente com tipos não-string mantidos inalterados.

Entrada — JSON plano de localização (Inglês)
{
  "nav_home": "Home",
  "nav_pricing": "Pricing",
  "hero_title": "Grow your audience globally",
  "hero_cta": "Get started for free",
  "footer_rights": "All rights reserved."
}
Saída — Francês (chaves idênticas)
{
  "nav_home": "Accueil",
  "nav_pricing": "Tarifs",
  "hero_title": "Développez votre audience mondiale",
  "hero_cta": "Commencer gratuitement",
  "footer_rights": "Tous droits réservés."
}
Entrada — JSON aninhado de localização (Inglês)
{
  "nav": {
    "home": "Home",
    "pricing": "Pricing",
    "blog": "Blog"
  },
  "hero": {
    "title": "Grow your audience globally",
    "subtitle": "Translate in seconds.",
    "cta": "Get started for free"
  },
  "errors": {
    "notFound": "Page not found",
    "serverError": "Something went wrong"
  }
}
Saída — Espanhol (estrutura intacta)
{
  "nav": {
    "home": "Inicio",
    "pricing": "Precios",
    "blog": "Blog"
  },
  "hero": {
    "title": "Expande tu audiencia globalmente",
    "subtitle": "Traduce en segundos.",
    "cta": "Comienza gratis"
  },
  "errors": {
    "notFound": "Página no encontrada",
    "serverError": "Algo salió mal"
  }
}
Requisição API — traduzir para 5 idiomas em uma chamada
curl -X POST https://api.usepolylingo.com/v1/translate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "{\"nav_home\": \"Home\", \"hero_title\": \"Get started\"}",
    "format": "json",
    "targets": ["es", "fr", "de", "ja", "zh"],
    "model": "standard"
  }'

# Response:
# {
#   "translations": {
#     "es": "{\"nav_home\": \"Inicio\", \"hero_title\": \"Empezar\"}",
#     "fr": "{\"nav_home\": \"Accueil\", \"hero_title\": \"Commencer\"}",
#     ...
#   }
# }

O que o PolyLingo garante para toda tradução JSON

  • Nomes das chaves nunca modificados
  • Objetos e arrays aninhados tratados recursivamente
  • Números, booleanos, valores nulos mantidos inalterados
  • Todos os 36 idiomas em uma única solicitação
  • Detectado automaticamente como JSON — sem necessidade de sinalizador de formato
  • Funciona com arquivos de localização planos e profundamente aninhados
  • Variáveis de interpolação ({name}, {{count}}, %s) preservadas exatamente
  • Saída é JSON válido — analisável sem modificação

Três passos para arquivos de localização traduzidos

1

Cole seu JSON ou chame a API

Use o tradutor sem código para traduções pontuais: cole seu JSON, escolha seus idiomas, baixe os arquivos traduzidos. Para automação, chame POST /v1/translate com seu conteúdo JSON e códigos dos idiomas alvo.

2

Receba todos os idiomas em uma resposta

A API retorna um objeto JSON com uma entrada por idioma alvo, cada uma contendo o arquivo de localização totalmente traduzido com estrutura idêntica. Sem chamadas por idioma. Sem loops. Uma solicitação para todas as saídas.

3

Coloque as saídas no seu diretório de mensagens

Grave cada arquivo traduzido em messages/es.json, messages/fr.json, messages/de.json — ou onde sua biblioteca i18n espera. A estrutura é idêntica ao seu arquivo fonte, então não é necessário processamento adicional.

Onde a tradução JSON é mais importante

🌐

i18n de app com next-intl ou i18next

Traduza seus arquivos messages/*.json ou locales/*.json diretamente. Chaves permanecem intactas, o aninhamento é preservado e variáveis de interpolação permanecem inalteradas. Coloque os arquivos no diretório de mensagens e faça o deploy.

🗄️

Exportações de conteúdo CMS

Plataformas headless CMS frequentemente exportam conteúdo estruturado como JSON. PolyLingo traduz os valores de string preservando nomes de campos, tipos de conteúdo aninhados e valores não string como datas, booleanos e IDs.

⚙️

Respostas de API e arquivos de configuração

Qualquer estrutura JSON com valores de string traduzíveis — descrições de produtos, templates de notificação, textos in-app servidos via API — pode ser traduzida sem modificar a estrutura da qual sua aplicação depende.

Perguntas frequentes sobre tradução JSON

Variáveis de interpolação como {name} ou {{count}} são preservadas?

Sim. PolyLingo identifica padrões comuns de interpolação incluindo {variável}, {{variável}}, %(variável)s e %s antes da tradução. Estes são substituídos por espaços reservados estáveis, o texto ao redor é traduzido e os nomes originais das variáveis são reinstaurados na saída. O modelo de tradução nunca vê os nomes das variáveis como conteúdo traduzível.

O que acontece com valores não string — números, booleanos, nulos?

Valores não string são mantidos completamente inalterados. PolyLingo traduz apenas valores de string que contenham texto em linguagem natural. Números, booleanos, valores nulos e arrays de não-strings são preservados exatamente como aparecem na fonte.

PolyLingo consegue lidar com estruturas JSON profundamente aninhadas?

Sim. PolyLingo percorre recursivamente objetos de qualquer profundidade de aninhamento. A tradução se aplica a todos os valores de string em toda a estrutura, independentemente do nível de aninhamento.

E se algumas chaves contiverem conteúdo não traduzível como slugs ou códigos?

PolyLingo traduz todos os valores de string por padrão. Se você tem campos string que não devem ser traduzidos — slugs, códigos de idioma, identificadores técnicos — a abordagem recomendada é excluí-los do JSON enviado ou usar o parâmetro de formato explícito e especificar campos a pular (em breve). Para a maioria dos arquivos de localização, todos os valores de string são destinados à tradução.

Funciona com JSON5 ou JSONC (JSON com comentários)?

Atualmente PolyLingo processa JSON padrão. JSON5 e JSONC (com comentários) devem ser pré-processados para remover comentários e converter para JSON padrão antes do envio. Isso é um passo comum em pipelines de build e adiciona sobrecarga mínima.

Quantos idiomas posso direcionar em uma única solicitação?

Até todos os 36 idiomas suportados em uma única solicitação. A resposta contém um objeto JSON traduzido por código de idioma. Limites de taxa variam por plano — o plano gratuito permite 10 solicitações por minuto, enquanto os planos Growth e Scale permitem de 200 a 600 solicitações por minuto.

Traduza seus arquivos de localização em segundos.

Cole seu JSON, escolha seus idiomas, receba arquivos de localização válidos para cada idioma alvo.

Comece a traduzir gratuitamente

Cole seu JSON de localização e veja a saída — grátis, sem necessidade de conta.

Traduza arquivos JSON de localização sem alterar suas chaves — PolyLingo | PolyLingo