Traductor JSON que Preserva la Estructura | Herramienta i18n Gratuita
Traductor JSON gratuito que mantiene intacta su estructura. Traduce archivos i18n, respuestas de API y JSON anidados mientras preserva claves, tipos de datos y formato. Perfecto para aplicaciones i18next y multilingües.
Traductor de Estructura JSON
Esta herramienta traduce el contenido de objetos JSON manteniendo su estructura. Pegue su JSON en el panel izquierdo, seleccione un idioma de destino y vea la salida traducida en el panel derecho.
La traducción aparecerá aquí...
Cómo Usar
- Pegue su objeto JSON en el campo de JSON de Origen.
- Seleccione su idioma de destino en el menú desplegable.
- El JSON traducido aparecerá automáticamente en el panel derecho.
- Haga clic en el botón Copiar para copiar el JSON traducido en su portapapeles.
Documentación
¿Qué es un Traductor que Preserva la Estructura JSON?
¿Alguna vez has intentado copiar JSON en Google Translate y terminaste con claves rotas, corchetes faltantes o sintaxis estropeada? Ese es precisamente el problema que esta herramienta resuelve.
Un traductor de estructura JSON preserva los valores de cadena dentro de tus objetos JSON a otro idioma mientras mantiene todo lo demás intacto: las claves permanecen igual, los números siguen siendo números, los booleanos continúan siendo booleanos, y tu estructura anidada no se colapsa.
Esto es lo que lo hace diferente de las herramientas de traducción habituales: cuando traduces un archivo i18n típico con más de 50 claves anidadas, necesitas que la estructura permanezca idéntica para que tu código pueda seguir referenciando user.profile.displayName en español, francés o japonés. Romper esa estructura, y estarás depurando durante horas.
Esta herramienta maneja el recorrido recursivo automáticamente, identificando qué cadenas necesitan traducción y qué elementos (como claves API, valores de configuración o ID numéricos) deben permanecer exactamente como están.
Cómo Funciona la Preservación de la Estructura JSON
Por Qué Importa la Preservación de Estructura
Cuando trabajas con traducción de JSON, normalmente te enfrentas a uno de estos escenarios:
- Archivos i18n donde tu aplicación espera que
en.jsonyfr.jsontengan claves idénticas - Respuestas de API que necesitan una estructura consistente entre idiomas para el análisis del cliente
- Archivos de configuración donde cambiar un nombre de clave rompe toda tu aplicación
- Exportaciones de bases de datos donde las relaciones dependen de nombres de campos específicos
El desafío: JSON no es solo texto. Es un dato estructurado con un esquema del que tu código depende. Cambiar "userName" a "nombreUsuario" durante la traducción, y tu aplicación lanza un error undefined.
Cómo Funciona el Proceso de Traducción
Esto es lo que sucede bajo el capó cuando traduces JSON:
1. Analizar y Validar La herramienta primero valida la sintaxis JSON. Si te falta una coma o tienes un corchete extra, obtendrás un mensaje de error claro antes de que comience cualquier traducción, ahorrándote una salida corrupta.
2. Recorrido Recursivo Comenzando desde la raíz, el algoritmo recorre cada nodo en el árbol JSON. Para cada elemento, comprueba el tipo de dato:
- ¿Cadena? Ponla en cola para traducir
- ¿Número, booleano, nulo? Omítelo completamente
- ¿Objeto o array? Recurre en él
3. Traducción Segura por Tipo
Solo los valores de cadena se envían a la API de traducción. Tu "quantity": 42 se mantiene como 42, no "cuarenta y dos". Tu "isActive": true permanece true, no "verdadero".
4. Preservación de Claves
Todas las claves de objetos permanecen en su idioma original. Esto es crítico porque translations.header.welcomeMessage debe ser la misma ruta en cada archivo de idioma.
5. Reensamblaje de Estructura Las cadenas traducidas se insertan de vuelta en las mismas posiciones exactas, manteniendo todos los niveles de anidación, índices de array y jerarquías de objetos.
Una trampa común: Algunos desarrolladores intentan usar JSON.stringify() del objeto, traducir toda la cadena y luego analizarla de nuevo. Esto se rompe porque el traductor modifica claves, corchetes y sintaxis. El enfoque recursivo evita esto completamente.
Uso del Traductor de Estructura JSON
Guía Paso a Paso
1. Pegar su JSON Copie su objeto JSON y péguelo en el panel izquierdo. La herramienta maneja cualquier JSON válido, ya sea un objeto simple con 5 claves o una estructura profundamente anidada con matrices y múltiples niveles.
2. Seleccionar Idioma de Destino Elija en el menú desplegable de idiomas: Español, Francés, Alemán, Italiano, Portugués, Chino, Japonés, Coreano, Ruso y más. Si está traduciendo para un proyecto i18next, use el código de idioma que espera su framework.
3. Obtener Traducción Instantánea La salida traducida aparece automáticamente en el panel derecho. No se necesita botón "Traducir"—se procesa tan pronto como tenga un JSON válido y un idioma seleccionado.
4. Copiar y Usar Haga clic en el botón "Copiar" para obtener el JSON traducido. Está listo para pegar directamente en su proyecto, sin necesidad de limpieza.
5. Limpiar para Siguiente Traducción Pulse "Limpiar Todo" cuando esté listo para traducir otro archivo. La herramienta reinicia ambos paneles instantáneamente.
Problemas Comunes y Soluciones
Error "Formato JSON Inválido" Verá esto cuando haya un problema de sintaxis. Los sospechosos habituales:
- Coma faltante entre pares clave-valor
- Coma final después del último elemento (válido en JavaScript, no en JSON)
- Comillas simples en lugar de comillas dobles
- Caracteres especiales sin escapar en cadenas
Solución rápida: Ejecute su JSON a través de un validador como JSONLint antes de pegarlo.
Traducción Falla Silenciosamente Si el panel de salida permanece vacío:
- Compruebe su conexión a internet—la traducción requiere acceso a API
- Verifique que ha seleccionado un idioma de destino
- Pruebe con un fragmento JSON más pequeño para aislar el problema
Resultados Inesperados en la Traducción La traducción automática funciona bien para frases estándar, pero tiene dificultades con:
- Jerga técnica o términos específicos de un dominio
- Nombres de marca (que generalmente deben permanecer sin traducir)
- Sintaxis de marcadores de posición como
{{username}}o%s
Para aplicaciones de producción, use esta herramienta como primer paso y luego haga que un hablante nativo revise el contenido específico del dominio o dirigido al cliente.
Consejos Profesionales para Mejores Resultados
Mantener Cadenas Técnicas Separadas Si su JSON mezcla texto orientado al usuario con identificadores técnicos, considere dividirlos. Por ejemplo:
1{
2 "display": {"welcome": "Bienvenido de nuevo"},
3 "config": {"apiKey": "abc123", "endpoint": "https://api.example.com"}
4}
5Traduzca el objeto display por separado para evitar procesar accidentalmente los valores de config.
Usar Contexto en sus Cadenas "Enviar" podría traducirse de manera diferente según el contexto. "Enviar formulario" o "Enviar pago" proporciona a los traductores (humanos o automáticos) un mejor contexto para resultados precisos.
Probar con Datos Reales Antes de traducir todo su archivo i18n con 500+ claves, pruebe con una muestra pequeña que incluya todos sus tipos de datos: cadenas, números, objetos anidados, matrices.
Ejemplos de Código
Traduciendo JSON con JavaScript
1// Ejemplo de cómo podrías implementar funcionalidad similar en JavaScript
2function translateJsonStructure(jsonObj, targetLanguage) {
3 // Función auxiliar para traducir una cadena
4 function translateString(str, lang) {
5 // En una implementación real, esto llamaría a una API de traducción
6 return `[${lang}] ${str}`;
7 }
8
9 // Función recursiva para recorrer y traducir JSON
10 function processNode(node) {
11 if (node === null) return null;
12
13 if (typeof node === 'string') {
14 return translateString(node, targetLanguage);
15 }
16
17 if (Array.isArray(node)) {
18 return node.map(item => processNode(item));
19 }
20
21 if (typeof node === 'object') {
22 const result = {};
23 for (const key in node) {
24 result[key] = processNode(node[key]);
25 }
26 return result;
27 }
28
29 // Devolver números, booleanos, etc. sin cambios
30 return node;
31 }
32
33 return processNode(jsonObj);
34}
35
36// Ejemplo de uso
37const sourceJson = {
38 "product": {
39 "name": "Auriculares inalámbricos",
40 "description": "Auriculares inalámbricos de alta calidad con cancelación de ruido",
41 "features": ["Bluetooth 5.0", "Batería de 40 horas", "Diseño plegable"],
42 "price": 99.99,
43 "inStock": true
44 }
45};
46
47const translatedJson = translateJsonStructure(sourceJson, "es");
48console.log(JSON.stringify(translatedJson, null, 2));
49Traduciendo JSON con Python
1import json
2
3def translate_json_structure(json_obj, target_language):
4 """
5 Traduce valores de cadena en un objeto JSON manteniendo la estructura.
6
7 Args:
8 json_obj: El objeto JSON analizado
9 target_language: Código de idioma de destino (por ejemplo, 'es', 'fr')
10
11 Returns:
12 Objeto JSON traducido con estructura preservada
13 """
14 def translate_string(text, lang):
15 # En una implementación real, esto llamaría a una API de traducción
16 return f"[{lang}] {text}"
17
18 def process_node(node):
19 if node is None:
20 return None
21
22 if isinstance(node, str):
23 return translate_string(node, target_language)
24
25 if isinstance(node, list):
26 return [process_node(item) for item in node]
27
28 if isinstance(node, dict):
29 result = {}
30 for key, value in node.items():
31 result[key] = process_node(value)
32 return result
33
34 # Devolver números, booleanos, etc. sin cambios
35 return node
36
37 return process_node(json_obj)
38
39# Ejemplo de uso
40source_json = {
41 "user": {
42 "name": "Jane Smith",
43 "bio": "Desarrolladora de software y colaboradora de código abierto",
44 "skills": ["JavaScript", "Python", "React"],
45 "active": True,
46 "followers": 245
47 }
48}
49
50translated_json = translate_json_structure(source_json, "fr")
51print(json.dumps(translated_json, indent=2))
52Traduciendo JSON con PHP
1<?php
2/**
3 * Traduce la estructura JSON manteniendo la estructura original
4 *
5 * @param mixed $jsonObj El objeto JSON analizado
6 * @param string $targetLanguage El código de idioma de destino
7 * @return mixed El objeto JSON traducido
8 */
9function translateJsonStructure($jsonObj, $targetLanguage) {
10 // Función auxiliar para traducir una cadena
11 function translateString($text, $lang) {
12 // En una implementación real, esto llamaría a una API de traducción
13 return "[$lang] $text";
14 }
15
16 // Función recursiva para procesar cada nodo
17 function processNode($node, $lang) {
18 if ($node === null) {
19 return null;
20 }
21
22 if (is_string($node)) {
23 return translateString($node, $lang);
24 }
25
26 if (is_array($node)) {
27 // Comprobar si es un array asociativo (objeto) o indexado
28 if (array_keys($node) !== range(0, count($node) - 1)) {
29 // Array asociativo (objeto)
30 $result = [];
31 foreach ($node as $key => $value) {
32 $result[$key] = processNode($value, $lang);
33 }
34 return $result;
35 } else {
36 // Array indexado
37 return array_map(function($item) use ($lang) {
38 return processNode($item, $lang);
39 }, $node);
40 }
41 }
42
43 // Devolver números, booleanos, etc. sin cambios
44 return $node;
45 }
46
47 return processNode($jsonObj, $targetLanguage);
48}
49
50// Ejemplo de uso
51$sourceJson = [
52 "company" => [
53 "name" => "Global Tech Solutions",
54 "description" => "Empresa innovadora de desarrollo de software",
55 "founded" => 2010,
56 "services" => ["Desarrollo Web", "Aplicaciones Móviles", "Soluciones en la Nube"],
57 "active" => true
58 ]
59];
60
61$translatedJson = translateJsonStructure($sourceJson, "de");
62echo json_encode($translatedJson, JSON_PRETTY_PRINT);
63?>
64Casos de Uso del Mundo Real
Archivos de i18n para Aplicaciones Web
La mayoría de los frameworks modernos como Next.js, React o Vue almacenan traducciones en formato JSON. Cuando necesitas agregar un nuevo idioma a tu aplicación, te enfrentas a una elección: copiar y pegar manualmente cada clave (propenso a errores) o usar esta herramienta para generar un primer borrador en minutos.
Un escenario real: Tu aplicación tiene en.json con más de 200 claves de traducción en categorías anidadas: navegación, formularios, mensajes de error, tooltips. Necesitas versiones en francés y alemán para el próximo sprint.
Entrada (en.json):
1{
2 "common": {
3 "welcome": "Bienvenido a nuestra aplicación",
4 "login": "Iniciar sesión",
5 "signup": "Registrarse",
6 "errorMessages": {
7 "required": "Este campo es obligatorio",
8 "invalidEmail": "Por favor, introduzca una dirección de correo electrónico válida"
9 }
10 }
11}
12Traduce al francés, obtén fr.json con estructura idéntica. Tu código sigue haciendo referencia a t('common.errorMessages.required') sin cambios.
Lo que he encontrado que funciona bien: Genera traducciones con esta herramienta y luego haz que un miembro del equipo bilingüe revise los términos técnicos y las etiquetas de los botones. Esto detecta casos donde "Enviar" podría necesitar diferentes traducciones para "Enviar formulario" vs. "Enviar pago".
Localización de Respuestas de API
¿Construyendo una API para múltiples países? Necesitas estructuras de respuesta consistentes en diferentes idiomas. Una API de notificaciones podría devolver:
1{
2 "status": "éxito",
3 "notification": {
4 "title": "Pedido Enviado",
5 "message": "Su pedido #12345 ha sido enviado",
6 "priority": 1,
7 "timestamp": 1678901234
8 }
9}
10Tu aplicación móvil analiza notification.title y notification.message. Si la traducción al francés cambia la estructura de las claves, la aplicación se rompe para usuarios franceses.
Esta herramienta garantiza que notification.title siga siendo notification.title en cada idioma, cambiando solo los valores de cadena. Tu código de cliente funciona idénticamente en todas las configuraciones regionales.
Una limitación a tener en cuenta: La traducción automática no comprende tu dominio. "Enviado" en un contexto de comercio electrónico podría traducirse de manera diferente que en un contexto logístico o marítimo. Para API orientadas al cliente, revisa la salida antes de implementarla.
Traducción de Contenido de CMS Headless
Plataformas de CMS Headless como Contentful o Strapi a menudo exportan contenido como JSON. Cuando tienes 50 entradas de blog con metadatos estructurados (autor, etiquetas, URL de imagen destacada, fechas de publicación), quieres traducir el cuerpo y el título sin tocar los metadatos.
Una exportación típica incluye cadenas de contenido y configuración:
- Contenido: cuerpo del artículo, titular, extracto
- Estructura: ID de autor, rutas de imágenes, slugs de categorías, marcas de tiempo
La traducción manual arriesga cambiar un slug de tecnología a technology, rompiendo tu enrutamiento. La traducción que preserva la estructura maneja solo los campos de contenido.
Archivos de Configuración para Implementaciones Multi-Región
¿Implementando en diferentes regiones? Tus archivos de configuración podrían necesitar cadenas localizadas manteniendo endpoints, credenciales e indicadores de características idénticos:
1{
2 "region": "eu-west",
3 "welcomeMessage": "Bienvenido a nuestro servicio",
4 "endpoint": "https://api.eu.example.com",
5 "retryAttempts": 3,
6 "features": {"darkMode": true}
7}
8Traduce welcomeMessage al alemán dejando endpoint, retryAttempts y features intactos.
Comparando Enfoques de Traducción
| Método | Mejor Para | Velocidad | Precisión | Seguridad de Estructura | Costo |
|---|---|---|---|---|---|
| Esta Herramienta | Generación rápida de archivos i18n, prototipos, herramientas internas | Instantáneo | Bueno para contenido estándar | 100% preservado | Gratis |
| Google Translate (copiar/pegar) | Frases únicas, texto no técnico | Instantáneo | Variable | Rompe JSON | Gratis |
| Traducción Profesional | Contenido para clientes, documentos legales, marketing | Días | Excelente | Trabajo manual necesario | $0.08-0.15/palabra |
| Sistemas de Gestión de Traducción (Lokalise, Phrase) | Aplicaciones empresariales, flujos de trabajo de colaboración | Horas-Días | Excelente con revisión | Soporte JSON integrado | $$$+ |
Cuándo usar esta herramienta: Proyectos en etapa inicial, generación de borradores para revisión, aplicaciones internas donde la traducción perfecta no es crítica.
Cuándo invertir en traducción profesional: Contenido para clientes, texto legal/cumplimiento, mensajes de marca, o cuando el matiz cultural importa más que la velocidad.
Consideraciones Técnicas y Casos Límite
Qué Se Traduce (y Qué No)
La herramienta utiliza la comprobación de tipos para determinar qué traducir:
✅ Traducido:
- Valores de cadena:
"Welcome"→"Bienvenido" - Cadenas en matrices:
["Hello", "World"]→["Hola", "Mundo"] - Cadenas en cualquier nivel de anidación
❌ No Traducido:
- Números:
42,3.14,-10permanecen sin cambios - Booleanos:
trueyfalsese mantienen igual - Nulo:
nullpermanecenull - Claves de objetos:
"userName"como clave se mantiene"userName" - Cadenas vacías:
""se queda""
Manejo de Caracteres Especiales
Unicode y Emoji La herramienta maneja UTF-8 correctamente, por lo que los emoji y caracteres no latinos funcionan bien:
1{"greeting": "👋 Hello"}
2Se traduce al español como:
1{"greeting": "👋 Hola"}
2Secuencias de Escape
Las secuencias de escape de JSON (\n, \t, \") se preservan:
1{"message": "Line 1\nLine 2"}
2El \n se mantiene intacto en la traducción.
Marcadores de Posición
Aquí hay un posible problema: Si sus cadenas contienen marcadores de posición como {username} o %s, podrían traducirse o reordenarse. En idiomas como árabe o hebreo con texto de derecha a izquierda, las posiciones de los marcadores pueden cambiar. Revíselos cuidadosamente.
Rendimiento de JSON Grande
La herramienta web maneja archivos de i18n típicos (menos de 500 KB) sin problemas. Para conjuntos de datos más grandes:
- 500 KB - 2 MB: Funciona, pero puede ser lento en el navegador
- Más de 2 MB: Considere dividirlo en fragmentos lógicos (por ejemplo, archivos separados por característica o sección)
La memoria del navegador es el factor limitante, no el algoritmo en sí.
Preguntas Frecuentes
¿En qué se diferencia esto de pegar JSON en Google Translate?
Google Translate trata JSON como texto plano, lo que significa que intenta traducir todo, incluyendo claves, caracteres de sintaxis y valores numéricos. Obtendrás una salida como:
1{ "nom d'utilisateur": "Jean Dupont", "âge": "vingt-cinq" }
2Observa cómo "username" se convirtió en "nom d'utilisateur" y el número 25 se convirtió en la cadena "vingt-cinq"? Tu código se rompe instantáneamente.
Esta herramienta comprende la estructura JSON y solo traduce valores de cadena, dejando las claves y otros tipos de datos intactos.
¿Manejará JSON con estructuras anidadas profundas y matrices?
Sí. El algoritmo recursivo procesa cada nivel de anidamiento:
1{
2 "users": [
3 {"name": "John", "roles": ["admin", "editor"]},
4 {"name": "Jane", "roles": ["viewer"]}
5 ]
6}
7Traduce todos los valores de cadena ("John", "Jane", "admin", "editor", "viewer") manteniendo la estructura exacta.
¿Qué sucede si mi JSON tiene contenido en inglés y ya traducido?
La herramienta traduce todas las cadenas que encuentra, incluso si algunas ya están en el idioma de destino. Si estás agregando nuevas claves a un archivo de traducción existente, traduce solo la nueva sección por separado y luego combina los resultados.
¿Puedo usarlo para archivos i18next o react-intl?
Absolutamente. La estructura de salida coincide con lo que estos marcos esperan. Un archivo JSON de i18next como:
1{"translation": {"welcome": "Hello", "goodbye": "Goodbye"}}
2Se convierte en:
1{"translation": {"welcome": "Hola", "goodbye": "Adiós"}}
2Tus llamadas t('translation.welcome') permanecen sin cambios.
¿Qué tan precisa es la traducción automática para contenido técnico?
Depende del contexto:
- Texto general de interfaz de usuario: "Guardar", "Cancelar", "Enviar" → Generalmente preciso
- Jerga técnica: "webhook", "OAuth2", "idempotente" → Puede ser mal traducido o dejado como está
- Términos específicos de dominio: "registro de paciente" (médico) vs "paciente" (paciencia) → Contexto a menudo perdido
Para aplicaciones de producción, úsalo como primer paso y luego que alguien revise los términos técnicos y específicos del dominio.
¿Qué hay de los idiomas con diferentes conjuntos de caracteres (chino, árabe, ruso)?
La herramienta maneja Unicode correctamente, por lo que todos los conjuntos de caracteres funcionan. Una cosa a tener en cuenta: el árabe y el hebreo son de derecha a izquierda (RTL), lo que puede afectar cómo aparecen los marcadores de posición en las cadenas traducidas. La estructura JSON se mantiene correcta, pero revisa el texto traducido para su legibilidad.
¿Conservará mi formato (sangría, saltos de línea)?
La salida es JSON válido, pero el formato (espacios en blanco, sangría) puede diferir de la entrada. Si necesitas un formato específico, ejecuta la salida a través de un formateador JSON con tus configuraciones preferidas.
¿Puedo traducir valores de configuración como URL o claves API?
La herramienta traduce todas las cadenas, incluyendo URL y valores de configuración. Para evitar esto:
- Divide tu JSON en contenido visible para el usuario y configuración
- Traduce solo la sección de contenido
- Mantén la configuración sin traducir
Mejor aún, estructura tus archivos para separar el contenido traducible de los valores técnicos desde el principio.
¿Es gratis? ¿Hay límites de tasa?
La herramienta web es gratuita para uso típico. La traducción de alto volumen (cientos de archivos por minuto) puede alcanzar los límites de tasa en el servicio de traducción subyacente. Para la mayoría de los flujos de trabajo de desarrollo, no encontrarás límites.
Referencias y Lecturas Adicionales
Para una comprensión más profunda de la estructura JSON, estándares de internacionalización y mejores prácticas:
-
ECMA-404: La Sintaxis de Intercambio de Datos JSON - La especificación oficial de JSON por Ecma International que define el formato estándar: ecma-international.org/publications-and-standards/standards/ecma-404/
-
Documentos Web de MDN: Trabajando con JSON - Guía completa de Mozilla sobre análisis, conversión a cadena y estructura de JSON: developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON
-
Actividad de Internacionalización de W3C (i18n) - Estándares y mejores prácticas para internacionalización web: w3.org/International/
-
RFC 8259: El Formato de Intercambio de Datos JSON - Especificación de IETF para sintaxis y semántica de JSON: datatracker.ietf.org/doc/html/rfc8259
Comienza a Traducir tus Archivos JSON
¿Necesitas generar rápidamente archivos de traducción para tu aplicación multilingüe? Pega tu JSON, selecciona un idioma de destino y obtén traducciones que preservan la estructura al instante. Funciona con i18next, react-intl, vue-i18n y cualquier framework que requiera una estructura JSON consistente entre idiomas.
Comienza la traducción ahora: