Sari la conținut

Traducător JSON care Păstrează Structura | Instrument i18n Gratuit

Traducător JSON gratuit care menține structura intactă. Traduceți fișiere i18n, răspunsuri API și JSON imbricat, păstrând cheile, tipurile de date și formatarea. Perfect pentru aplicații i18next și multilingve.

Traducător de Structuri JSON

Această unealtă traduce conținutul obiectelor JSON păstrând structura lor. Lipește JSON-ul în panoul din stânga, selectează o limbă țintă și vizualizează rezultatul tradus în panoul din dreapta.

Rezultatul traducerii va apărea aici...

Cum se Utilizează

  1. Lipește obiectul JSON în câmpul JSON Sursă.
  2. Selectează limba țintă din meniul derulant.
  3. JSON-ul tradus va apărea automat în panoul din dreapta.
  4. Apasă butonul Copiază pentru a copia JSON-ul tradus în clipboard.
Calculator de încărcare...
📚

Documentație

Ce este un Traducător care Păstrează Structura JSON?

Ați încercat vreodată să copiați JSON în Google Translate și ați ajuns cu chei stricate, acolade lipsă sau sintaxă stricată? Exact această problemă o rezolvă această unealtă.

Un traducător care păstrează structura JSON convertește valorile string din interiorul obiectelor JSON într-o altă limbă, păstrând totul neschimbat — cheile rămân la fel, numerele rămân numere, boolean-urile rămân boolean, iar structura înregistrată nu se prăbușește.

Iată ce îl face diferit de uneltele de traducere obișnuite: atunci când traduceți un fișier i18n tipic cu peste 50 de chei înregistrate, aveți nevoie ca structura să rămână identică pentru ca codul dvs. să poată în continuare să facă referire la user.profile.displayName în spaniolă, franceză sau japoneză. Ruperea acestei structuri și veți depana ore întregi.

Această unealtă gestionează automat traversarea recursivă, identificând care string-uri necesită traducere și care elemente (precum cheile API, valorile de configurație sau ID-urile numerice) ar trebui să rămână exact cum sunt.

Cum Funcționează Păstrarea Structurii JSON

De ce Contează Păstrarea Structurii

Atunci când lucrați cu traducerea JSON, de obicei vă confruntați cu una dintre aceste scenarii:

  • Fișiere i18n unde aplicația dvs. se așteaptă ca en.json și fr.json să aibă chei identice
  • Răspunsuri API care necesită o structură consecventă între limbi pentru parsarea clientului
  • Fișiere de configurare unde schimbarea numelui unei chei distruge întreaga aplicație
  • Exporturi de baze de date unde relațiile depind de nume specifice de câmpuri

Provocarea: JSON nu este doar text. Este date structurate cu o schemă pe care codul dvs. se bazează. Schimbarea "userName" în "numeUtilizator" în timpul traducerii, iar aplicația dvs. aruncă o eroare undefined.

Cum Funcționează Procesul de Traducere

Iată ce se întâmplă sub capotă atunci când traduceți JSON:

1. Parsare și Validare Instrumentul validează mai întâi sintaxa JSON. Dacă lipsește o virgulă sau aveți o paranteză în plus, veți primi un mesaj de eroare clar înainte de a începe orice traducere - salvându-vă de la ieșire coruptă.

2. Traversare Recursivă Pornind de la rădăcină, algoritmul parcurge fiecare nod din arborele JSON. Pentru fiecare element, verifică tipul de date:

  • Șir? Pune-l la coadă pentru traducere
  • Număr, boolean, null? Sări-l complet
  • Obiect sau array? Recursează în el

3. Traducere Sigură ca Tip Numai valorile de tip șir sunt trimise la API-ul de traducere. "quantity": 42 rămâne 42, nu "patruzeci și doi". "isActive": true rămâne true, nu "adevărat".

4. Păstrarea Cheilor Toate cheile obiectului rămân în limba lor originală. Acest lucru este critic deoarece translations.header.welcomeMessage trebuie să fie aceeași cale în fiecare fișier de limbă.

5. Reasamblare Structură Șirurile traduse sunt reintroduse exact în aceleași poziții, menținând toate nivelurile de îngribuire, indicii de array și ierarhiile de obiecte.

O capcană obișnuită: Unii developeri încearcă să JSON.stringify() obiectul, să traducă întregul șir, apoi să-l parseze înapoi. Acest lucru se strică pentru că traducătorul modifică cheile, parantezele și sintaxa. Abordarea recursivă evită acest lucru complet.

Utilizarea Traducătorului care Păstrează Structura JSON

Ghid Pas cu Pas

1. Lipește JSON-ul Copiază obiectul JSON și lipește-l în panoul din stânga. Instrumentul gestionează orice JSON valid - fie un obiect simplu cu 5 chei, fie o structură adâncă cu array-uri și mai multe niveluri.

2. Selectează Limba Țintă Alege din lista de limbi: Spaniolă, Franceză, Germană, Italiană, Portugheză, Chineză, Japoneză, Coreeană, Rusă și altele. Dacă traduci pentru un proiect i18next, potrivește codul de limbă pe care îl așteaptă framework-ul.

3. Obține Traducerea Instantanee Rezultatul tradus apare automat în panoul din dreapta. Fără buton "Traducere" - procesează imediat ce ai un JSON valid și o limbă selectată.

4. Copiază și Utilizează Apasă butonul "Copiază" pentru a prelua JSON-ul tradus. Este gata să fie lipit direct în proiect - fără curățare necesară.

5. Șterge pentru Următoarea Traducere Apasă "Șterge Tot" când ești gata să traduci alt fișier. Instrumentul resetează instantaneu ambele panouri.

Probleme Comune și Soluții

Eroare "Format JSON Invalid" Vei vedea asta când există o problemă de sintaxă. Cauze obișnuite:

  • Virgulă lipsă între perechile cheie-valoare
  • Virgulă în plus după ultimul element (validă în JavaScript, nu în JSON)
  • Ghilimele simple în loc de ghilimele duble
  • Caractere speciale nescăpate în șiruri

Rezolvare rapidă: Rulează JSON-ul prin validatorul JSONLint înainte de a-l lipi.

Traducerea Eșuează Fără Mesaj Dacă panoul de ieșire rămâne gol:

  • Verifică conexiunea la internet - traducerea necesită acces API
  • Confirmă selectarea limbii țintă
  • Încearcă cu un fragment JSON mai mic pentru a izola problema

Rezultate Neașteptate la Traducere Traducerea automată funcționează bine pentru fraze standard, dar are dificultăți cu:

  • Termeni tehnici sau termeni specifici unui domeniu
  • Nume de brand (care ar trebui de obicei lăsate netraduse)
  • Sintaxă de substituție precum {{username}} sau %s

Pentru aplicații de producție, folosește acest instrument ca primă trecere, apoi lasă un vorbitor nativ să revizuiască conținutul specific domeniului sau destinat clienților.

Sfaturi Pro pentru Rezultate Mai Bune

Păstrează Șirurile Tehnice Separate Dacă JSON-ul tău amestecă text destinat utilizatorilor cu identificatori tehnici, ia în considerare separarea lor. De exemplu:

1{
2  "display": {"welcome": "Bun venit înapoi"},
3  "config": {"apiKey": "abc123", "endpoint": "https://api.example.com"}
4}
5

Traduce separat obiectul display pentru a evita procesarea accidentală a valorilor din config.

Folosește Context în Șirurile Tale "Trimite" s-ar putea traduce diferit în funcție de context. "Trimite formular" sau "Trimite plată" oferă traducătorilor (umani sau automate) un context mai bun pentru o traducere precisă.

Testează cu Date Reale Înainte de a traduce întregul fișier i18n cu 500+ de chei, testează cu un eșantion mic care include toate tipurile de date - șiruri, numere, obiecte imbricate, array-uri.

Exemple de Cod

Traducerea JSON cu JavaScript

1// Exemplu de cum ați putea implementa funcționalitate similară în JavaScript
2function translateJsonStructure(jsonObj, targetLanguage) {
3  // Funcție ajutătoare pentru a traduce un șir de caractere
4  function translateString(str, lang) {
5    // Într-o implementare reală, aceasta ar apela un API de traducere
6    return `[${lang}] ${str}`;
7  }
8  
9  // Funcție recursivă pentru a parcurge și traduce 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    // Returnează numere, boolean-uri etc. neschimbate
30    return node;
31  }
32  
33  return processNode(jsonObj);
34}
35
36// Exemplu de utilizare
37const sourceJson = {
38  "product": {
39    "name": "Căști Wireless",
40    "description": "Căști wireless de înaltă calitate cu anulare a zgomotului",
41    "features": ["Bluetooth 5.0", "Durată de viață a bateriei de 40 de ore", "Design pliabil"],
42    "price": 99.99,
43    "inStock": true
44  }
45};
46
47const translatedJson = translateJsonStructure(sourceJson, "es");
48console.log(JSON.stringify(translatedJson, null, 2));
49

Traducerea JSON cu Python

1import json
2
3def translate_json_structure(json_obj, target_language):
4    """
5    Traduce valorile șirurilor de caractere într-un obiect JSON păstrând structura.
6    
7    Args:
8        json_obj: Obiectul JSON parsat
9        target_language: Codul limbii țintă (de ex., 'es', 'fr')
10        
11    Returns:
12        Obiect JSON tradus cu structură păstrată
13    """
14    def translate_string(text, lang):
15        # Într-o implementare reală, aceasta ar apela un API de traducere
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        # Returnează numere, boolean-uri etc. neschimbate
35        return node
36    
37    return process_node(json_obj)
38
39# Exemplu de utilizare
40source_json = {
41    "user": {
42        "name": "Jane Smith",
43        "bio": "Dezvoltator de software și contributor open source",
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))
52

Traducerea JSON cu PHP

1<?php
2/**
3 * Traduce structura JSON păstrând structura originală
4 * 
5 * @param mixed $jsonObj Obiectul JSON parsat
6 * @param string $targetLanguage Codul limbii țintă
7 * @return mixed Obiectul JSON tradus
8 */
9function translateJsonStructure($jsonObj, $targetLanguage) {
10    // Funcție ajutătoare pentru a traduce un șir de caractere
11    function translateString($text, $lang) {
12        // Într-o implementare reală, aceasta ar apela un API de traducere
13        return "[$lang] $text";
14    }
15    
16    // Funcție recursivă pentru a procesa fiecare nod
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            // Verifică dacă este un array asociativ (obiect) sau un array indexat
28            if (array_keys($node) !== range(0, count($node) - 1)) {
29                // Array asociativ (obiect)
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        // Returnează numere, boolean-uri etc. neschimbate
44        return $node;
45    }
46    
47    return processNode($jsonObj, $targetLanguage);
48}
49
50// Exemplu de utilizare
51$sourceJson = [
52    "company" => [
53        "name" => "Global Tech Solutions",
54        "description" => "Companie inovatoare de dezvoltare software",
55        "founded" => 2010,
56        "services" => ["Dezvoltare Web", "Aplicații Mobile", "Soluții Cloud"],
57        "active" => true
58    ]
59];
60
61$translatedJson = translateJsonStructure($sourceJson, "de");
62echo json_encode($translatedJson, JSON_PRETTY_PRINT);
63?>
64

Cazuri de utilizare din lumea reală

Fișiere i18n pentru aplicații web

Cele mai multe framework-uri moderne precum Next.js, React sau Vue stochează traducerile în format JSON. Atunci când trebuie să adăugați o nouă limbă în aplicație, vă confruntați cu o alegere: să copiați și să traduceți manual fiecare cheie (riscant), sau să utilizați acest instrument pentru a genera o primă schiță în câteva minute.

Un scenariu real: Aplicația dvs. are en.json cu peste 200 de chei de traducere în categorii imbricate - navigație, formulare, mesaje de eroare, tooltipuri. Aveți nevoie de versiuni în franceză și germană pentru următoarea sprintă.

Input (en.json):

1{
2  "common": {
3    "welcome": "Bun venit la aplicația noastră",
4    "login": "Autentificare",
5    "signup": "Înregistrare",
6    "errorMessages": {
7      "required": "Acest câmp este obligatoriu",
8      "invalidEmail": "Vă rugăm să introduceți o adresă de email validă"
9    }
10  }
11}
12

Traduceți în franceză, obțineți fr.json cu aceeași structură. Codul dvs. continuă să facă referire la `t('common.errorMessages.required')' fără modificări.

Ceea ce am descoperit că funcționează bine: Generați traduceri cu acest instrument, apoi lăsați un membru al echipei bilingv să verifice termenii tehnici și etichetele butoanelor. Astfel se prind cazurile în care "Trimite" ar putea avea traduceri diferite pentru "Trimite formular" vs. "Trimite plată."

Localizarea răspunsurilor API

Construiți un API care deservește mai multe țări? Aveți nevoie de structuri de răspuns consecvente în mai multe limbi. Un API de notificări ar putea returna:

1{
2  "status": "succes",
3  "notification": {
4    "title": "Comandă expediată",
5    "message": "Comanda dvs. #12345 a fost expediată",
6    "priority": 1,
7    "timestamp": 1678901234
8  }
9}
10

Aplicația mobilă parsează notification.title și notification.message. Dacă traducerea în franceză schimbă structura cheilor, aplicația se defectează pentru utilizatorii francezi.

Acest instrument asigură că notification.title rămâne notification.title în fiecare limbă, modificând doar valorile șirurilor. Codul client funcționează identic în toate localurile.

O limitare de reținut: Traducerea automată nu înțelege contextul domeniului. "Expediat" în contextul comerțului electronic s-ar putea traduce diferit decât în contextul logistic sau maritim. Pentru API-uri destinate clienților, revizuiți rezultatul înainte de implementare.

Traducerea conținutului pentru CMS fără interfață

Platformele CMS fără interfață precum Contentful sau Strapi exportă adesea conținutul ca JSON. Atunci când aveți 50 de articole de blog cu metadate structurate (autor, etichete, URL-uri imagini în prim-plan, date de publicare), doriți să traduceți corpul și titlul fără a atinge metadatele.

Un export tipic include atât șiruri de conținut, cât și configurație:

  • Conținut: corp articol, titlu, rezumat
  • Structură: ID-uri autor, căi imagini, slug-uri categorie, marcaje temporale

Traducerea manuală riscă să schimbe un slug de la technology la tecnología, întrerupând rutarea. Traducerea care păstrează structura gestionează doar câmpurile de conținut.

Fișiere de configurare pentru implementări multi-regionale

Implementare în mai multe regiuni? Fișierele dvs. de configurare ar putea necesita șiruri localizate, păstrând punctele finale, credențialele și indicatorii de caracteristici identici:

1{
2  "region": "eu-west",
3  "welcomeMessage": "Bun venit la serviciul nostru",
4  "endpoint": "https://api.eu.example.com",
5  "retryAttempts": 3,
6  "features": {"darkMode": true}
7}
8

Traduceți welcomeMessage în germană, lăsând endpoint, retryAttempts și features neschimbate.

Compararea Abordărilor de Traducere

MetodăPotrivit pentruVitezăAcuratețeSiguranța StructuriiCost
Acest instrumentGenerare rapidă fișiere i18n, prototipuri, instrumente interneInstantBun pentru conținut standard100% păstratGratuit
Google Translate (copiere/lipire)Fraze individuale, text non-tehnicInstantVariabilDistruge JSONGratuit
Traducere profesionalăConținut pentru clienți, documente juridice, marketingZileExcelentăNecesită lucru manual$0.08-0.15/cuvânt
Sisteme de Management al Traducerilor (Lokalise, Phrase)Aplicații enterprise, fluxuri de colaborareOre-ZileExcelentă cu verificareSuport JSON integrat$$$+

Când să utilizezi acest instrument: Proiecte în stadiu incipient, generare de ciorne pentru revizuire, aplicații interne unde traducerea perfectă nu este critică.

Când să investești în traducere profesională: Conținut pentru clienți, text juridic/de conformitate, mesaje de brand sau atunci când nuanța culturală contează mai mult decât viteza.

Considerații Tehnice și Cazuri Limită

Ce Se Traduce (și Ce Nu)

Instrumentul utilizează verificarea tipului pentru a determina ce să traducă:

Tradus:

  • Valori de tip șir: "Welcome""Bun venit"
  • Șiruri în array-uri: ["Hello", "World"]["Bună", "Lume"]
  • Șiruri la orice nivel de înmânare

Netradus:

  • Numere: 42, 3.14, -10 rămân neschimbate
  • Valori booleene: true și false rămân la fel
  • Null: null rămâne null
  • Chei de obiect: "userName" ca și cheie rămâne "userName"
  • Șiruri goale: "" rămâne ""

Gestionarea Caracterelor Speciale

Unicode și Emoji Instrumentul gestionează UTF-8 corespunzător, astfel încât emoji și caracterele non-latine funcționează bine:

1{"greeting": "👋 Hello"}
2

Se traduce în română astfel:

1{"greeting": "👋 Bună"}
2

Secvențe de Escape Secvențele de escape JSON (\n, \t, \") sunt păstrate:

1{"message": "Line 1\nLine 2"}
2

\n rămâne intact în traducere.

Substituenți Iată o potențială problemă: Dacă șirurile conțin substituenți precum {username} sau %s, aceștia ar putea fi traduși sau reordonați. În limbi precum arabă sau ebraică cu text de la dreapta la stânga, pozițiile substituenților se pot schimba. Verificați-le cu atenție.

Performanța JSON Mare

Instrumentul web gestionează fișiere i18n tipice (sub 500KB) fără probleme. Pentru seturi de date mai mari:

  • 500KB - 2MB: Funcționează, dar poate fi lent în browser
  • Peste 2MB: Luați în considerare împărțirea în segmente logice (de exemplu, fișiere separate pe caracteristici sau secțiuni)

Memoria browserului este factorul limitativ, nu algoritmul în sine.

Întrebări frecvente

Cum diferă aceasta de lipirea JSON-ului în Google Translate?

Google Translate tratează JSON-ul ca text simplu, ceea ce înseamnă că încearcă să traducă totul - inclusiv cheile, caracterele de sintaxă și valorile numerice. Veți obține o ieșire de genul:

1{ "nom d'utilisateur": "Jean Dupont", "âge": "vingt-cinq" }
2

Observați cum "username" a devenit "nom d'utilisateur" și numărul 25 a devenit șirul "vingt-cinq"? Codul dvs. se strică imediat.

Acest instrument înțelege structura JSON și traduce doar valorile șirurilor, lăsând cheile și alte tipuri de date intacte.

Va gestiona acesta JSON-ul cu mai multe niveluri de încuibărire cu array-uri?

Da. Algoritmul recursiv procesează fiecare nivel de încuibărire:

1{
2  "users": [
3    {"name": "John", "roles": ["admin", "editor"]},
4    {"name": "Jane", "roles": ["viewer"]}
5  ]
6}
7

Traduce toate valorile șirurilor ("John", "Jane", "admin", "editor", "viewer") menținând structura exactă.

Și dacă JSON-ul meu conține atât conținut în engleză, cât și deja tradus?

Instrumentul traduce fiecare șir pe care îl găsește, chiar și dacă unele sunt deja în limba țintă. Dacă adăugați noi chei într-un fișier de traducere existent, traduceți doar noua secțiune separat, apoi îmbinați rezultatele.

Pot folosi acest instrument pentru fișiere i18next sau react-intl?

Absolut. Structura de ieșire se potrivește cu ceea ce aceste framework-uri așteaptă. Un fișier JSON i18next precum:

1{"translation": {"welcome": "Hello", "goodbye": "Goodbye"}}
2

Devine:

1{"translation": {"welcome": "Hola", "goodbye": "Adiós"}}
2

Apelurile dvs. t('translation.welcome') rămân neschimbate.

Cât de precisă este traducerea automată pentru conținutul tehnic?

Depinde de context:

  • Text UI general: "Save", "Cancel", "Submit" → De obicei precise
  • Jargon tehnic: "webhook", "OAuth2", "idempotent" → Pot fi greșit traduse sau lăsate neschimbate
  • Termeni specifici domeniului: "patient record" (medical) vs "patient" (răbdare) → Contextul este adesea ratat

Pentru aplicații de producție, folosiți acest instrument ca primă trecere, apoi lăsați pe cineva să revizuiască termenii tehnici și specifici domeniului.

Dar pentru limbi cu seturi de caractere diferite (chineză, arabă, rusă)?

Instrumentul gestionează Unicode corespunzător, astfel încât toate seturile de caractere funcționează. Un lucru la care să fiți atenți: araba și ebraica sunt de la dreapta la stânga (RTL), ceea ce poate afecta modul în care apar substituenții în șirurile traduse. Structura JSON rămâne corectă, dar revizuiți textul tradus pentru lizibilitate.

Va păstra formatarea mea (indentare, linii noi)?

Ieșirea este un JSON valid, dar formatarea (spațiu alb, indentare) poate diferi de intrarea dvs. Dacă aveți nevoie de o anumită formatare, rulați ieșirea printr-un formator JSON cu setările preferate.

Pot traduce valori de configurare precum URL-uri sau chei API?

Instrumentul traduce toate șirurile, inclusiv URL-uri și valori de configurare. Pentru a preveni acest lucru:

  1. Separați JSON-ul în conținut pentru utilizator și configurație
  2. Traduceți doar secțiunea de conținut
  3. Păstrați configurația netradusă

Mai bine, structurați-vă fișierele pentru a separa conținutul traducibil de valorile tehnice de la bun început.

Este gratuit? Există limite de rată?

Instrumentul web este gratuit pentru utilizarea tipică. Traducerea de volum foarte mare (sute de fișiere pe minut) poate atinge limitele de rată ale serviciului de traducere subiacent. Pentru cele mai multe fluxuri de lucru de dezvoltare, nu veți întâlni limite.

Referințe și Lectură Suplimentară

Pentru o înțelegere mai profundă a structurii JSON, standardelor de internaționalizare și celor mai bune practici:

Începeți Traducerea Fișierelor JSON

Aveți nevoie să generați rapid fișiere de traducere pentru aplicația dvs. multilingvă? Inserați JSON-ul, selectați o limbă țintă și obțineți traduceri care păstrează structura în mod instantaneu. Funcționează cu i18next, react-intl, vue-i18n și orice cadru care necesită o structură JSON consecventă între limbi.

Începeți traducerea acum: