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.
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.
{
"nav_home": "Home",
"nav_pricing": "Pricing",
"hero_title": "Grow your audience globally",
"hero_cta": "Get started for free",
"footer_rights": "All rights reserved."
}{
"nav_home": "Accueil",
"nav_pricing": "Tarifs",
"hero_title": "Développez votre audience mondiale",
"hero_cta": "Commencer gratuitement",
"footer_rights": "Tous droits réservé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"
}
}{
"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"
}
}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
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.
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.
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.
Guias relacionados
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 gratuitamenteCole seu JSON de localização e veja a saída — grátis, sem necessidade de conta.