Traductor JSON que Preserva l'Estructura | Eina i18n Gratuïta
Traductor JSON gratuït que manté intacta la seva estructura. Tradueix arxius i18n, respostes d'API i JSON imbricats mentre es preserven les claus, els tipus de dades i el format. Perfecte per a aplicacions i18next i multilingües.
Traductor de Preservació de l'Estructura JSON
Aquesta eina tradueix el contingut d'objectes JSON mentre preserva la seva estructura. Enganxa el teu JSON al panell esquerre, selecciona un idioma de destinació i veure la sortida traduïda al panell dret.
La traducció apareixerà aquí...
Com Usar-ho
- Enganxa el teu objecte JSON al camp de JSON Original.
- Selecciona l'idioma de destinació al menú desplegable.
- El JSON traduït apareixerà automàticament al panell dret.
- Fes clic al botó Copiar per copiar el JSON traduït al teu portapapers.
Documentació
Què és un Traductor de Preservació d'Estructura JSON?
Alguna vegada has intentat copiar JSON a Google Translate i has acabat amb claus trencades, claudàtors perduts o sintaxi malmesa? Aquest és exactament el problema que aquesta eina resol.
Un traductor de preservació d'estructura JSON converteix els valors de cadena dins dels objectes JSON a un altre idioma mentre manté tot la resta intacte: les claus es mantenen igual, els números segueixen sent números, els booleans segueixen sent booleans, i l'estructura imbricada no es col·lapsa.
Heus aquí el que fa diferent a les eines de traducció habituals: quan traduïu un arxiu i18n típic amb més de 50 claus imbricades, necessiteu que l'estructura romangui idèntica perquè el vostre codi pugui seguir fent referència a user.profile.displayName en espanyol, francès o japonès. Trencar eixa estructura, i estareu depurant durant hores.
Aquesta eina gestiona el recorregut recursiu automàticament, identificant quines cadenes necessiten traducció i quins elements (com claus API, valors de configuració o ID numèrics) han de romandre exactament com estan.
Com funciona la preservació de l'estructura JSON
Per què importa la preservació de l'estructura
Quan treballes amb traducció JSON, normalment et trobes amb un d'aquests escenaris:
- Arxius i18n on la teva aplicació espera que
en.jsonifr.jsontinguin claus idèntiques - Respostes d'API que necessiten una estructura consistent entre idiomes per a l'anàlisi del client
- Arxius de configuració on canviar el nom d'una clau trenca tota la teva aplicació
- Exportacions de bases de dades on les relacions depenen de noms de camps específics
El repte: JSON no és només text. És dades estructurades amb un esquema en el qual el teu codi confia. Canviar "userName" a "nombreUsuario" durant la traducció, i la teva aplicació llança un error undefined.
Com funciona el procés de traducció
Aquí és el que passa sota el capó quan tradueixis JSON:
1. Analitzar i Validar L'eina primer valida la sintaxi JSON. Si et falta una coma o tens un claudàtor extra, rebràs un missatge d'error clar abans que comenci qualsevol traducció, estalviant-te una sortida corrompuda.
2. Recorregut Recursiu Començant des de l'arrel, l'algoritme recorre cada node de l'arbre JSON. Per a cada element, comprova el tipus de dades:
- Cadena? Afegeix-la a la cua de traducció
- Número, booleà, nul? Salta-ho completament
- Objecte o matriu? Recorre-ho recursivament
3. Traducció Segura de Tipus
Només els valors de cadena s'envien a l'API de traducció. El teu "quantity": 42 es manté com 42, no "quaranta i dos". El teu "isActive": true roman true, no "verdader".
4. Preservació de Claus
Totes les claus d'objecte es mantenen en el seu idioma original. Això és crític perquè translations.header.welcomeMessage ha de ser la mateixa ruta en cada arxiu d'idioma.
5. Reassemblatge de l'Estructura Les cadenes traduïdes s'insereixen de nou a les mateixes posicions, mantenint tots els nivells de nidació, índexs de matriu i jerarquies d'objectes.
Un parany comú: Alguns desenvolupadors intenten JSON.stringify() l'objecte, traduir tota la cadena, i després analitzar-la de nou. Això es trenca perquè el traductor modifica claus, claudàtors i sintaxi. L'enfocament recursiu ho evita completament.
Ús del Traductor de Preservació de l'Estructura JSON
Guia Pas a Pas
1. Enganxa el teu JSON Copia el teu objecte JSON i enganxa'l al panell esquerre. L'eina gestiona qualsevol JSON vàlid, ja sigui un objecte simple amb 5 claus o una estructura profundament aniuada amb arrays i múltiples nivells.
2. Selecciona l'Idioma de Destinació Tria des del menú desplegable d'idiomes: Espanyol, Francès, Alemany, Italià, Portuguès, Xinès, Japonès, Coreà, Rus, i més. Si estàs traduint per a un projecte i18next, fes coincidir el codi d'idioma que espera el teu marc de treball.
3. Obtén la Traducció Instantània La sortida traduïda apareix automàticament al panell dret. No cal botó "Traduir"—es processa tan aviat com tinguis un JSON vàlid i un idioma seleccionat.
4. Copia i Utilitza Fes clic al botó "Copiar" per agafar el JSON traduït. Està llest per enganxar directament al teu projecte, sense necessitat de neteja.
5. Neteja per a la Propera Traducció Prem "Neteja tot" quan estiguis preparat per traduir un altre arxiu. L'eina reinicia tots dos panells instantàniament.
Problemes Comuns i Solucions
Error "Format JSON Invàlid" Veuràs això quan hi hagi un problema de sintaxi. Els culpables habituals:
- Coma perduda entre parells clau-valor
- Coma final després de l'últim element (vàlid en JavaScript, no en JSON)
- Cometes simples en lloc de cometes dobles
- Caràcters especials sense escapar en cadenes
Solució ràpida: Passa el teu JSON per un validador com JSONLint abans d'enganxar.
La Traducció Falla Silenciosament Si el panell de sortida es queda buit:
- Comprova la teva connexió a internet—la traducció requereix accés a l'API
- Verifica que has seleccionat un idioma de destinació
- Prova amb un fragment JSON més petit per aïllar el problema
Resultats Inesperats en la Traducció La traducció automàtica funciona bé per frases estàndard però té dificultats amb:
- Terminologia tècnica o termes específics de domini
- Noms de marca (que sovint haurien de quedar sense traduir)
- Sintaxi de marcadors de posició com
{{username}}o%s
Per a aplicacions de producció, utilitza aquesta eina com a primer pas i després fes que un parlant natiu revisi el contingut específic de domini o dirigit al client.
Consells Pro per a Millors Resultats
Mantén Separades les Cadenes Tècniques Si el teu JSON barreja text dirigit a l'usuari amb identificadors tècnics, considera separar-los. Per exemple:
1{
2 "display": {"welcome": "Benvingut de nou"},
3 "config": {"apiKey": "abc123", "endpoint": "https://api.example.com"}
4}
5Tradueix l'objecte display per separat per evitar processar accidentalment els valors de config.
Utilitza Context en les Teves Cadenes "Enviar" podria traduir-se de manera diferent depenent del context. "Enviar formulari" o "Enviar pagament" dona als traductors (humans o automàtics) millor context per a una traducció precisa.
Prova amb Dades Reals Abans de traduir tot el teu arxiu i18n amb 500+ claus, prova amb una mostra petita que inclogui tots els teus tipus de dades: cadenes, números, objectes aniuats, arrays.
Exemples de Codi
Traduint JSON amb JavaScript
1// Exemple de com podries implementar una funcionalitat similar en JavaScript
2function translateJsonStructure(jsonObj, targetLanguage) {
3 // Funció auxiliar per traduir una cadena
4 function translateString(str, lang) {
5 // En una implementació real, això cridaria una API de traducció
6 return `[${lang}] ${str}`;
7 }
8
9 // Funció recursiva per recórrer i traduir 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 // Retorna números, booleans, etc. sense canvis
30 return node;
31 }
32
33 return processNode(jsonObj);
34}
35
36// Exemple d'ús
37const sourceJson = {
38 "product": {
39 "name": "Auriculars sense fils",
40 "description": "Auriculars sense fils d'alta qualitat amb cancel·lació de soroll",
41 "features": ["Bluetooth 5.0", "Bateria de 40 hores", "Disseny plegable"],
42 "price": 99.99,
43 "inStock": true
44 }
45};
46
47const translatedJson = translateJsonStructure(sourceJson, "es");
48console.log(JSON.stringify(translatedJson, null, 2));
49Traduint JSON amb Python
1import json
2
3def translate_json_structure(json_obj, target_language):
4 """
5 Tradueix valors de cadena en un objecte JSON mantenint l'estructura.
6
7 Args:
8 json_obj: L'objecte JSON analitzat
9 target_language: Codi de l'idioma de destinació (p. ex., 'es', 'fr')
10
11 Returns:
12 Objecte JSON traduït amb estructura preservada
13 """
14 def translate_string(text, lang):
15 # En una implementació real, això cridaria una API de traducció
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 # Retorna números, booleans, etc. sense canvis
35 return node
36
37 return process_node(json_obj)
38
39# Exemple d'ús
40source_json = {
41 "user": {
42 "name": "Jane Smith",
43 "bio": "Desenvolupadora de programari i col·laboradora de codi obert",
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))
52Traduint JSON amb PHP
1<?php
2/**
3 * Tradueix l'estructura JSON mantenint l'estructura original
4 *
5 * @param mixed $jsonObj L'objecte JSON analitzat
6 * @param string $targetLanguage El codi de l'idioma de destinació
7 * @return mixed L'objecte JSON traduït
8 */
9function translateJsonStructure($jsonObj, $targetLanguage) {
10 // Funció auxiliar per traduir una cadena
11 function translateString($text, $lang) {
12 // En una implementació real, això cridaria una API de traducció
13 return "[$lang] $text";
14 }
15
16 // Funció recursiva per processar cada node
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 // Comprova si és un array associatiu (objecte) o indexat
28 if (array_keys($node) !== range(0, count($node) - 1)) {
29 // Array associatiu (objecte)
30 $result = [];
31 foreach ($node as $key => $value) {
32 $result[$key] = processNode($value, $lang);
33 }
34 return $result;
35 } else {
36 // Array indexat
37 return array_map(function($item) use ($lang) {
38 return processNode($item, $lang);
39 }, $node);
40 }
41 }
42
43 // Retorna números, booleans, etc. sense canvis
44 return $node;
45 }
46
47 return processNode($jsonObj, $targetLanguage);
48}
49
50// Exemple d'ús
51$sourceJson = [
52 "company" => [
53 "name" => "Global Tech Solutions",
54 "description" => "Empresa innovadora de desenvolupament de programari",
55 "founded" => 2010,
56 "services" => ["Desenvolupament Web", "Aplicacions Mòbils", "Solucions al Núvol"],
57 "active" => true
58 ]
59];
60
61$translatedJson = translateJsonStructure($sourceJson, "de");
62echo json_encode($translatedJson, JSON_PRETTY_PRINT);
63?>
64Casos d'Ús del Món Real
Arxius d'Internacionalització per a Aplicacions Web
La majoria dels marcs moderns com Next.js, React o Vue emmagatzemen traduccions en format JSON. Quan necessiteu afegir un nou idioma a la vostra aplicació, us enfronteu a una elecció: copiar i enganxar manualment i traduir cada clau (propens a errors), o usar aquesta eina per generar un primer esborrany en minuts.
Un escenari real: La vostra aplicació té en.json amb més de 200 claus de traducció en categories imbricades: navegació, formularis, missatges d'error, consells emergents. Necessiteu versions en francès i alemany per al proper sprint.
Entrada (en.json):
1{
2 "common": {
3 "welcome": "Benvingut a la nostra aplicació",
4 "login": "Iniciar sessió",
5 "signup": "Registrar-se",
6 "errorMessages": {
7 "required": "aquest camp és obligatori",
8 "invalidEmail": "Si us plau, introduïu una adreça de correu electrònic vàlida"
9 }
10 }
11}
12Traduïu al francès, obtingueu fr.json amb una estructura idèntica. El vostre codi segueix fent referència a t('common.errorMessages.required') sense canvis.
El que he trobat que funciona bé: Genereu traduccions amb aquesta eina, després feu que un membre de l'equip bilingüe revisi els termes tècnics i les etiquetes dels botons. Això detecta casos en què "Enviar" pot necessitar traduccions diferents per a "Enviar formulari" vs "Enviar pagament".
Localització de Respostes d'API
Construint una API que serveix diversos països? Necessiteu estructures de resposta coherents en tots els idiomes. Una API de notificacions podria retornar:
1{
2 "status": "èxit",
3 "notification": {
4 "title": "Comanda Enviada",
5 "message": "La vostra comanda #12345 ha estat enviada",
6 "priority": 1,
7 "timestamp": 1678901234
8 }
9}
10La vostra aplicació mòbil analitza notification.title i notification.message. Si la traducció francesa canvia l'estructura de la clau, l'aplicació es trenca per als usuaris francesos.
Aquesta eina garanteix que notification.title romangui notification.title en cada idioma, amb només els valors de cadena traduïts. El vostre codi client funciona de manera idèntica en tots els locals.
Una limitació a tenir en compte: La traducció automàtica no entén el vostre domini. "Enviat" en el context de comerç electrònic pot traduir-se de manera diferent que en un context logístic o marítim. Per a API orientades al client, reviseu la sortida abans de desplegar.
Traducció de Contingut de CMS Sense Capçalera
Plataformes de CMS sense capçalera com Contentful o Strapi sovint exporten contingut com a JSON. Quan teniu 50 articles de blog amb metadades estructurades (autor, etiquetes, URL d'imatges destacades, dates de publicació), voleu traduir el cos i el títol sense tocar els metadades.
Una exportació típica inclou cadenes de contingut i configuració:
- Contingut: cos de l'article, titular, extracte
- Estructura: ID d'autor, rutes d'imatges, slug de categories, marques de temps
La traducció manual risca canviar un slug de tecnologia a tecnología, trencant el vostre encaminament. La traducció que preserva l'estructura gestiona només els camps de contingut.
Arxius de Configuració per a Desplegaments Multi-Regions
Desplegant a diverses regions? Els vostres arxius de configuració podrien necessitar cadenes localitzades mentre es mantenen punts finals, credencials i banderes de característiques idèntiques:
1{
2 "region": "eu-west",
3 "welcomeMessage": "Benvingut al nostre servei",
4 "endpoint": "https://api.eu.example.com",
5 "retryAttempts": 3,
6 "features": {"darkMode": true}
7}
8Traduïu welcomeMessage a alemany mentre es deixen endpoint, retryAttempts i features sense modificar.
Comparació d'Enfocaments de Traducció
| Mètode | Millor Per | Velocitat | Precisió | Seguretat d'Estructura | Cost |
|---|---|---|---|---|---|
| Aquesta Eina | Generació ràpida de fitxers i18n, prototips, eines internes | Instantani | Bo per contingut estàndard | 100% preservat | Gratuït |
| Google Translate (copiar/enganxar) | Frases individuals, text no tècnic | Instantani | Varia | Trenca JSON | Gratuït |
| Traducció Professional | Contingut per a clients, documents legals, màrqueting | Dies | Excel·lent | Treball manual necessari | $0.08-0.15/paraula |
| Sistemes de Gestió de Traduccions (Lokalise, Phrase) | Aplicacions empresarials, fluxos de treball col·laboratius | Hores-Dies | Excel·lent amb revisió | Suport JSON integrat | $$$+ |
Quan usar aquesta eina: Projectes en fase inicial, generació d'esborranys per revisar, aplicacions internes on la traducció perfecta no és crítica.
Quan invertir en traducció professional: Contingut per a clients, text legal/compliment, missatges de marca, o quan el matís cultural importa més que la velocitat.
Consideracions Tècniques i Casos Límit
Què es Tradueix (i Què No)
L'eina utilitza la comprovació de tipus per determinar què traduir:
✅ Traduït:
- Valors de cadena:
"Welcome"→"Benvingut" - Cadenes en arrays:
["Hello", "World"]→["Hola", "Món"] - Cadenes a qualsevol nivell de nus
❌ No Traduït:
- Números:
42,3.14,-10es mantenen sense canvis - Booleans:
trueifalsees queden com estan - Null:
nullromannull - Claus d'objecte:
"userName"com a clau es manté"userName" - Cadenes buides:
""es queda""
Gestió de Caràcters Especials
Unicode i Emoji L'eina gestiona UTF-8 correctament, de manera que els emoji i caràcters no llatins funcionen bé:
1{"greeting": "👋 Hello"}
2Es tradueix al català com:
1{"greeting": "👋 Hola"}
2Seqüències d'Escapament
Les seqüències d'escapament JSON (\n, \t, \") es preserven:
1{"message": "Line 1\nLine 2"}
2El \n es manté intacte en la traducció.
Marcadors de Posició
Aquí hi ha un possible problema: Si les vostres cadenes contenen marcadors de posició com {username} o %s, podrien ser traduïts o reordenats. En llengües com l'àrab o l'hebreu amb text de dreta a esquerra, les posicions dels marcadors de posició poden canviar. Reviseu-los amb cura.
Rendiment de JSON Gran
L'eina web gestiona arxius i18n típics (menys de 500 KB) sense problemes. Per a conjunts de dades més grans:
- 500 KB - 2 MB: Funciona però pot ser lent al navegador
- Més de 2 MB: Considereu dividir en parts lògiques (per exemple, arxius separats per característica o secció)
La memòria del navegador és el factor limitant, no l'algoritme en si.
Preguntes Freqüents
Com difereix això de copiar JSON al Google Translate?
Google Translate tracta JSON com a text pla, la qual cosa significa que intenta traduir-ho tot, incloent claus, caràcters de sintaxi i valors numèrics. Obtindreu una sortida com:
1{ "nom d'utilisateur": "Jean Dupont", "âge": "vingt-cinq" }
2Observeu com "username" es va convertir en "nom d'utilisateur" i el número 25 es va convertir en la cadena "vingt-cinq"? El vostre codi es trenca immediatament.
Aquesta eina entén l'estructura JSON i només tradueix valors de cadena, deixant intactes les claus i altres tipus de dades.
Pot gestionar JSON amb estructures profundament imbricades amb arrays?
Sí. L'algoritme recursiu processa cada nivell d'imbricació:
1{
2 "users": [
3 {"name": "John", "roles": ["admin", "editor"]},
4 {"name": "Jane", "roles": ["viewer"]}
5 ]
6}
7Tradueix tots els valors de cadena ("John", "Jane", "admin", "editor", "viewer") mantenint l'estructura exacta.
Què passa si el meu JSON té contingut en anglès i ja traduït?
L'eina tradueix cada cadena que trobi, fins i tot si algunes ja estan en el llenguatge de destinació. Si esteu afegint noves claus a un arxiu de traducció existent, traduïu només la nova secció per separat i després fusioneu els resultats.
Puc usar-ho per a arxius i18next o react-intl?
Absolutament. L'estructura de sortida coincideix amb el que esperen aquests marcs. Un arxiu JSON d'i18next com:
1{"translation": {"welcome": "Hello", "goodbye": "Goodbye"}}
2Es converteix en:
1{"translation": {"welcome": "Hola", "goodbye": "Adéu"}}
2Les vostres crides t('translation.welcome') romanen sense canvis.
Quina precisió té la traducció automàtica per a contingut tècnic?
Depèn del context:
- Text general d'interfície d'usuari: "Desa", "Cancel·la", "Envia" → Generalment precís
- Argot tècnic: "webhook", "OAuth2", "idempotent" → Pot ser mal traduït o deixat com està
- Termes específics de domini: "registre de pacient" (mèdic) vs "pacient" (paciència) → Context sovint perdut
Per a aplicacions de producció, useu-ho com a primer pas i després feu que algú revisi els termes tècnics i específics de domini.
Què passa amb els llenguatges amb conjunts de caràcters diferents (xinès, àrab, rus)?
L'eina gestiona Unicode correctament, de manera que tots els conjunts de caràcters funcionen. Una cosa a vigilar: l'àrab i l'hebreu són de dreta a esquerra (RTL), la qual cosa pot afectar com apareixen els marcadors de posició en cadenes traduïdes. L'estructura JSON es manté correcta, però reviseu el text traduït per a la llegibilitat.
Preservarà el meu format (sagnat, salts de línia)?
La sortida és JSON vàlid, però el format (espais en blanc, sagnat) pot diferir de la vostra entrada. Si necessiteu un format específic, executeu la sortida a través d'un formatador JSON amb els vostres paràmetres preferits.
Puc traduir valors de configuració com URL o claus API?
L'eina tradueix totes les cadenes, incloent URL i valors de configuració. Per evitar-ho:
- Dividiu el vostre JSON en contingut visible per a l'usuari i configuració
- Traduïu només la secció de contingut
- Mantingueu la configuració sense traduir
Millor encara, estructureu els vostres arxius per separar el contingut traduïble dels valors tècnics des del principi.
És gratuït? Hi ha límits de taxa?
L'eina web és gratuïta per a ús típic. La traducció de volum molt alt (centenars d'arxius per minut) pot arribar als límits de taxa del servei de traducció subjacent. Per a la majoria dels fluxos de treball de desenvolupament, no trobareu límits.
Referències i Lectures Addicionals
Per a una comprensió més profunda de l'estructura JSON, estàndards d'internacionalització i millors pràctiques:
-
ECMA-404: La Sintaxi d'Intercanvi de Dades JSON - L'especificació oficial de JSON per Ecma International que defineix el format estàndard: ecma-international.org/publications-and-standards/standards/ecma-404/
-
MDN Web Docs: Treballant amb JSON - Guia completa de Mozilla sobre l'anàlisi, stringificació i estructura de JSON: developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON
-
Activitat d'Internacionalització de W3C (i18n) - Estàndards i millors pràctiques per a la internacionalització web: w3.org/International/
-
RFC 8259: El Format d'Intercanvi de Dades JSON - Especificació de l'IETF per a la sintaxi i semàntica de JSON: datatracker.ietf.org/doc/html/rfc8259
Comença a traduir els teus arxius JSON
Necessites generar ràpidament arxius de traducció per a la teva aplicació multilingüe? Enganxa el teu JSON, selecciona un idioma de destinació i obtén traduccions que preservin l'estructura a l'instant. Funciona amb i18next, react-intl, vue-i18n i qualsevol marc que esperi una estructura JSON consistent entre idiomes.
Comença la traducció ara: