Traducción JSON

Traduce archivos JSON de localización sin tocar tus claves.

Las claves siguen siendo claves. El anidamiento permanece intacto. Solo se traducen los valores de cadena — y solo los valores de cadena. Cualquier otro tipo de propiedad se mantiene exactamente como se envió.

Claves
siempre preservadas
Anidados
objetos manejados recursivamente
36
idiomas de salida por solicitud
100K
tokens gratis / mes

Las herramientas de traducción estándar no entienden JSON.

Las API de traducción genéricas ven tu JSON como un muro de texto. Traducen los nombres de las claves junto con los valores. Aplanan objetos anidados. Concatenan cadenas que no deberían. Lo que regresa es un JSON estructuralmente roto que requiere corrección manual antes de poder usarse. Si mantienes archivos de localización para una aplicación en producción, sabes que alimentarlos en una API de traducción estándar crea más trabajo del que ahorra.

El problema va más allá de los nombres de las claves. Las API de traducción estándar también alteran las variables de interpolación. Una cadena como "Hello {name}, you have {count} messages" regresa con los nombres de variables traducidos — "Hola {nombre}, tienes {cuenta} mensajes" — lo que rompe cualquier entorno de ejecución que esperaba el nombre original de la variable. Siguen horas de depuración.

Para equipos que mantienen archivos de localización en varios idiomas para una aplicación en producción, esto no es una preocupación teórica. Ya ha ocurrido. La pregunta es cuánto tarda el proceso de reparación manual cada vez.

PolyLingo recorre tu JSON antes de traducir.

PolyLingo entiende la estructura JSON. Recorre recursivamente tu objeto, identifica los valores de cadena que contienen texto traducible y envía solo esos valores al modelo de traducción. Los nombres de las claves nunca se modifican. Los números, booleanos, valores nulos y tipos no cadena se mantienen sin cambios. La salida es un JSON válido con una estructura idéntica — solo con valores de cadena traducidos.

Las variables de interpolación — {name}, {{count}}, %s y patrones similares — se identifican y preservan durante todo el proceso de traducción. Se reemplazan con marcadores antes de la traducción y se restablecen en su forma original en la salida. El modelo de traducción nunca las ve como texto traducible.

Los arreglos se manejan correctamente: cada elemento de cadena se traduce, mientras que los índices numéricos y la estructura del arreglo permanecen sin cambios. Los arreglos mixtos que contienen cadenas y no cadenas (números, objetos) se recorren correctamente con los tipos no cadena pasados sin cambios.

Entrada — JSON plano de localización (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."
}
Salida — Francés (claves 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 anidado de localización (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"
  }
}
Salida — Español (estructura 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"
  }
}
Solicitud API — traducir a 5 idiomas en una llamada
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\"}",
#     ...
#   }
# }

Lo que PolyLingo garantiza para cada traducción JSON

  • Nombres de claves nunca modificados
  • Objetos y arreglos anidados manejados recursivamente
  • Números, booleanos, valores nulos pasados sin cambios
  • Los 36 idiomas en una sola solicitud
  • Detectado automáticamente como JSON — no se requiere indicador de formato
  • Funciona con archivos de localización planos y profundamente anidados
  • Variables de interpolación ({name}, {{count}}, %s) preservadas exactamente
  • La salida es JSON válido — parseable sin modificaciones

Tres pasos para archivos de localización traducidos

1

Pega tu JSON o llama a la API

Usa el traductor sin código para traducciones puntuales: pega tu JSON, elige tus idiomas, descarga los archivos traducidos. Para automatización, llama a POST /v1/translate con tu contenido JSON y códigos de idioma destino.

2

Recibe todos los idiomas en una respuesta

La API devuelve un objeto JSON con una entrada por idioma destino, cada una con el archivo de localización completamente traducido y estructura idéntica. Sin llamadas por idioma. Sin bucles. Una solicitud para todas las salidas.

3

Coloca las salidas en tu directorio de mensajes

Escribe cada archivo traducido en messages/es.json, messages/fr.json, messages/de.json — o donde tu biblioteca i18n los espere. La estructura es idéntica a tu archivo fuente, por lo que no se necesita procesamiento adicional.

Dónde importa más la traducción JSON

🌐

i18n de apps con next-intl o i18next

Traduce directamente tus archivos messages/*.json o locales/*.json. Las claves permanecen intactas, el anidamiento se conserva y las variables de interpolación no se modifican. Coloca los archivos en tu directorio de mensajes y despliega.

🗄️

Exportaciones de contenido CMS

Las plataformas CMS sin cabeza suelen exportar contenido estructurado como JSON. PolyLingo traduce los valores de cadena preservando nombres de campos, tipos de contenido anidados y valores no cadena como fechas, booleanos e IDs.

⚙️

Respuestas API y archivos de configuración

Cualquier estructura JSON con valores de cadena traducibles — descripciones de productos, plantillas de notificaciones, textos en la app servidos vía API — puede traducirse sin modificar la estructura de la que depende tu aplicación.

Preguntas frecuentes sobre traducción JSON

¿Se preservan las variables de interpolación como {name} o {{count}}?

Sí. PolyLingo identifica patrones comunes de interpolación incluyendo {variable}, {{variable}}, %(variable)s y %s antes de la traducción. Estos se reemplazan con marcadores estables, el texto circundante se traduce y los nombres originales de las variables se restablecen en la salida. El modelo de traducción nunca ve los nombres de variables como contenido traducible.

¿Qué pasa con los valores no cadena — números, booleanos, nulos?

Los valores no cadena se pasan completamente sin cambios. PolyLingo solo traduce valores de cadena que contienen texto en lenguaje natural. Números, booleanos, valores nulos y arreglos de no cadenas se preservan exactamente como aparecen en la fuente.

¿Puede PolyLingo manejar estructuras JSON profundamente anidadas?

Sí. PolyLingo recorre recursivamente objetos de cualquier profundidad de anidamiento. La traducción se aplica a todos los valores de cadena en toda la estructura, sin importar cuán profundamente estén anidados.

¿Qué pasa si algunas claves contienen contenido no traducible como slugs o códigos?

PolyLingo traduce todos los valores de cadena por defecto. Si tienes campos de cadena que no deben traducirse — slugs, códigos de idioma, identificadores técnicos — la recomendación es excluirlos del JSON que envías o usar el parámetro de formato explícito y especificar campos a omitir (próximamente). Para la mayoría de archivos de localización, todos los valores de cadena están destinados a traducirse.

¿Funciona con JSON5 o JSONC (JSON con comentarios)?

Actualmente PolyLingo procesa JSON estándar. JSON5 y JSONC (con comentarios) deben preprocesarse para eliminar comentarios y convertir a JSON estándar antes de enviarlos. Esto es un paso común en pipelines de construcción y añade una sobrecarga mínima.

¿A cuántos idiomas puedo dirigirme en una sola solicitud?

Hasta los 36 idiomas soportados en una sola solicitud. La respuesta contiene un objeto JSON traducido por cada código de idioma. Los límites de tasa varían según el plan — el nivel gratuito permite 10 solicitudes por minuto, mientras que los planes Growth y Scale permiten entre 200 y 600 solicitudes por minuto.

Traduce tus archivos de localización en segundos.

Pega tu JSON, elige tus idiomas, recibe archivos de localización válidos para cada idioma destino.

Comenzar a traducir gratis

Pega tu JSON de localización y ve la salida — gratis, sin necesidad de cuenta.

Traduce archivos JSON de localización sin tocar tus claves — PolyLingo | PolyLingo