Прескочи на садржај

JSON Преводилац Који Чува Структуру | Бесплатан i18n Алат

Бесплатни JSON преводилац који задржава вашу структуру непромењеном. Преводите i18n датотеке, API одговоре и угнеждени JSON уз очување кључева, типова података и форматирања. Савршен за i18next и вишејезичне апликације.

Преводилац са очувањем JSON структуре

Овај алат преводи садржај JSON објеката уз очување њихове структуре. Налепите свој JSON у леви панел, изаберите циљни језик и погледајте преведени резултат на десном панелу.

Преведени резултат ће се појавити овде...

Упутство за коришћење

  1. Налепите свој JSON објекат у поље Изворни JSON.
  2. Изаберите циљни језик из падајућег менија.
  3. Преведени JSON ће се аутоматски појавити у десном панелу.
  4. Кликните на дугме Копирај да бисте копирали преведени JSON у привремену меморију.
Kalkulator učitavanja...
📚

Dokumentacija

Шта је JSON Преводилац за Очување Структуре?

Икада покушали да копирате JSON у Google Translate и завршили са покварених кључева, недостајућих заграда или оштећене синтаксе? Управо тај проблем ово алат решава.

JSON преводилац за очување структуре конвертује string вредности унутар ваших JSON објеката на други језик док истовремено задржава све остало непромењено — кључеви остају исти, бројеви остају бројеви, булове вредности остају булове, а ваша угнеждена структура се не руши.

Ево шта чини ово различитим од уобичајених алата за превод: када преводите типичну i18n датотеку са 50+ угнеждених кључева, потребно вам је да структура остане идентична тако да ваш код може и даље да реферира user.profile.displayName на шпанском, француском или јапанском. Прекините ту структуру, и бићете за debugovanjem сатима.

Овај алат аутоматски обавља рекурзивно претраживање, препознајући које стрингове треба превести, а који елементи (попут API кључева, конфигурационих вредности или нумеричких ID-ова) треба да остану потпуно исти.

Kako funkcioniše očuvanje JSON strukture

Zašto je očuvanje strukture važno

Kada radite sa prevođenjem JSON-a, tipično se susrećete sa jednim od ovih scenarija:

  • i18n datoteke gde vaša aplikacija očekuje da en.json i fr.json imaju identične ključeve
  • API odgovori kojima je potrebna konzistentna struktura između jezika za klijentsko parsiranje
  • Konfiguracione datoteke gde promena naziva ključa lomi čitavu aplikaciju
  • Izvozi baze podataka gde odnosi zavise od specifičnih naziva polja

Izazov: JSON nije samo tekst. To je strukturirani podaci sa šemom na koju se vaš kod oslanja. Promena "userName" u "nombreUsuario" tokom prevođenja, i vaša aplikacija izbacuje undefined grešku.

Kako funkcioniše proces prevođenja

Evo šta se dešava ispod haube kada prevodite JSON:

1. Parsiranje i Validacija Alat prvo validira JSON sintaksu. Ako nedostaje zarez ili imate višak zagrade, dobićete jasnu poruku o grešci pre početka prevođenja - čuvajući vas od oštećenog izlaza.

2. Rekurzivno Obilaženje Počevši od korena, algoritam prolazi kroz svaki čvor u JSON stablu. Za svaki element proverava tip podatka:

  • String? Stavi ga u red za prevođenje
  • Broj, boolean, null? Potpuno ga preskoči
  • Objekat ili niz? Rekurzivno uđi u njega

3. Prevođenje Sigurno po Tipu Samo string vrednosti se šalju API-ju za prevođenje. Vaš "quantity": 42 ostaje 42, ne "četrdeset i dva". Vaš "isActive": true ostaje true, ne "tačno".

4. Očuvanje Ključeva Svi objektni ključevi ostaju na originalnom jeziku. Ovo je kritično jer translations.header.welcomeMessage mora biti ista putanja u svakoj jezičkoj datoteci.

5. Ponovni Sastav Strukture Prevedeni stringovi se vraćaju na tačno iste pozicije, čuvajući sve nivoe ugnežđivanja, indekse nizova i hijerarhije objekata.

Čest propust: Neki programeri pokušavaju da JSON.stringify() objekat, prevedu čitav string, a zatim ga ponovo parsiraju. Ovo lomi jer prevodilac menja ključeve, zagrade i sintaksu. Rekurzivni pristup ovo potpuno izbegava.

Коришћење JSON Преводиоца за Очување Структуре

Корак по Корак Водич

1. Налепите Свој JSON Копирајте свој JSON објекат и налепите га у леви панел. Алат подржава било који важећи JSON - било да је то једноставан објекат са 5 кључева или дубоко угнежђена структура са низовима и више нивоа.

2. Изаберите Циљни Језик Одаберите из падајућег менија језика: шпански, француски, немачки, италијански, португалски, кинески, јапански, корејски, руски и друге. Ако преводите за i18next пројекат, усагласите код језика који ваш оквир очекује.

3. Добијте Тренутни Превод Преведени резултат се појављује аутоматски у десном панелу. Није потребан "Преведи" дугме - обрађује се чим имате важећи JSON и изабрани језик.

4. Копирајте и Користите Кликните на дугме "Копирај" да бисте преузели преведени JSON. Спреман је за директно лепљење у ваш пројекат - без чишћења.

5. Очистите за Следећи Превод Притисните "Очисти све" када сте спремни да преведете други фајл. Алат тренутно ресетује оба панела.

Уобичајени Проблеми и Решења

"Неважећи JSON Формат" Грешка Видећете ово када постоји синтаксни проблем. Уобичајени кривци:

  • Недостаје зарез између парова кључ-вредност
  • Trailing зарез после последњег елемента (важећи у JavaScript-у, не и у JSON-у)
  • Једноструки наводници уместо дуплих
  • Неизбегнути специјални карактери у стринговима

Брзо решење: Пустите свој JSON кроз валидатор попут JSONLint пре лепљења.

Превод ТихоFailuje Ако излазни панел остане празан:

  • Проверите интернет конекцију - превод захтева API приступ
  • Проверите да ли сте изабрали циљни језик
  • Покушајте са мањим JSON исечком да изолујете проблем

Неочекивани Резултати у Преводу Машинско превођење добро функционише за стандардне фразе, али се бори са:

  • Техничким жаргоном или терминима специфичним за домен
  • Именима брендова (која треба да остану непреведена)
  • Синтаксом резервисаних места попут {{username}} или %s

За производне апликације, користите овај алат као први пролаз, а затим нека native говорник прегледа садржај специфичан за домен или намењен купцима.

Про Савети за Боље Резултате

Држите Техничке Стрингове Одвојено Ако ваш JSON меша текст намењен кориснику са техничким идентификаторима, размислите о подели. На пример:

1{
2  "display": {"welcome": "Добродошли назад"},
3  "config": {"apiKey": "abc123", "endpoint": "https://api.example.com"}
4}
5

Преведите display објекат одвојено да бисте избегли случајну обраду config вредности.

Користите Контекст у Вашим Стринговима "Пошаљи" се може различито преводити у зависности од контекста. "Пошаљи образац" или "Пошаљи плаћање" пружа преводиоцима (људским или машинским) бољи контекст за тачан превод.

Тестирајте са Стварним Подацима Пре превођења целог i18n фајла са 500+ кључева, тестирајте са малим узорком који укључује све типове података - стрингове, бројеве, угнежђене објекте, низове.

Примери кода

Превођење JSON-а помоћу JavaScript-а

1// Пример како бисте могли имплементирати сличну функционалност у JavaScript-у
2function translateJsonStructure(jsonObj, targetLanguage) {
3  // Помоћна функција за превођење стринга
4  function translateString(str, lang) {
5    // У стварној имплементацији, ово би позвало API за превођење
6    return `[${lang}] ${str}`;
7  }
8  
9  // Рекурзивна функција за кретање и превођење 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    // Враћа бројеве, булове итд. непромењене
30    return node;
31  }
32  
33  return processNode(jsonObj);
34}
35
36// Пример употребе
37const sourceJson = {
38  "product": {
39    "name": "Wireless Headphones",
40    "description": "High-quality wireless headphones with noise cancellation",
41    "features": ["Bluetooth 5.0", "40-hour battery life", "Foldable design"],
42    "price": 99.99,
43    "inStock": true
44  }
45};
46
47const translatedJson = translateJsonStructure(sourceJson, "es");
48console.log(JSON.stringify(translatedJson, null, 2));
49

Превођење JSON-а помоћу Python-а

1import json
2
3def translate_json_structure(json_obj, target_language):
4    """
5    Преводи стрингове вредности у JSON објекту уз очување структуре.
6    
7    Args:
8        json_obj: Парсирани JSON објекат
9        target_language: Циљни језички код (нпр. 'es', 'fr')
10        
11    Returns:
12        Преведени JSON објекат са очуваном структуром
13    """
14    def translate_string(text, lang):
15        # У стварној имплементацији, ово би позвало API за превођење
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        # Враћа бројеве, булове итд. непромењене
35        return node
36    
37    return process_node(json_obj)
38
39# Пример употребе
40source_json = {
41    "user": {
42        "name": "Jane Smith",
43        "bio": "Software developer and open source contributor",
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

Превођење JSON-а помоћу PHP-а

1<?php
2/**
3 * Преводи JSON структуру уз очување оригиналне структуре
4 * 
5 * @param mixed $jsonObj Парсирани JSON објекат
6 * @param string $targetLanguage Циљни језички код
7 * @return mixed Преведени JSON објекат
8 */
9function translateJsonStructure($jsonObj, $targetLanguage) {
10    // Помоћна функција за превођење стринга
11    function translateString($text, $lang) {
12        // У стварној имплементацији, ово би позвало API за превођење
13        return "[$lang] $text";
14    }
15    
16    // Рекурзивна функција за обраду сваког чвора
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            // Провера да ли је асоцијативни низ (објекат) или индексирани низ
28            if (array_keys($node) !== range(0, count($node) - 1)) {
29                // Асоцијативни низ (објекат)
30                $result = [];
31                foreach ($node as $key => $value) {
32                    $result[$key] = processNode($value, $lang);
33                }
34                return $result;
35            } else {
36                // Индексирани низ
37                return array_map(function($item) use ($lang) {
38                    return processNode($item, $lang);
39                }, $node);
40            }
41        }
42        
43        // Враћа бројеве, булове итд. непромењене
44        return $node;
45    }
46    
47    return processNode($jsonObj, $targetLanguage);
48}
49
50// Пример употребе
51$sourceJson = [
52    "company" => [
53        "name" => "Global Tech Solutions",
54        "description" => "Innovative software development company",
55        "founded" => 2010,
56        "services" => ["Web Development", "Mobile Apps", "Cloud Solutions"],
57        "active" => true
58    ]
59];
60
61$translatedJson = translateJsonStructure($sourceJson, "de");
62echo json_encode($translatedJson, JSON_PRETTY_PRINT);
63?>
64

Реални случајеви употребе

i18n датотеке за веб апликације

Већина модерних оквира попут Next.js, React или Vue чувају преводе у JSON формату. Када треба да додате нови језик у апликацију, суочавате се са избором: ручно копирати и преводити сваки кључ (подложно грешкама) или користити овај алат да генеришете прву верзију за неколико минута.

Стваран сценарио: Ваша апликација има en.json са преко 200 кључева превода у угнежђеним категоријама—навигација, обрасци, порука о грешкама, tooltip-ови. Требате француску и немачку верзију до следећег спринта.

Улаз (en.json):

1{
2  "common": {
3    "welcome": "Welcome to our application",
4    "login": "Log in",
5    "signup": "Sign up",
6    "errorMessages": {
7      "required": "This field is required",
8      "invalidEmail": "Please enter a valid email address"
9    }
10  }
11}
12

Преведите на француски, добијте fr.json са идентичном структуром. Ваш код и даље реферира t('common.errorMessages.required') без промена.

Оно што сам открио да добро функционише: Генеришите преводе помоћу овог алата, а затим нека члан тима који говори два језика провери техничке термине и натписе на дугмићима. Ово омогућава да се уоче случајеви где "Submit" може имати различите преводе за "Submit form" и "Submit payment."

Локализација API одговора

Градите API који опслужује више земаља? Потребне су вам конзистентне структуре одговора across језика. API за обавештења може vratiti:

1{
2  "status": "success",
3  "notification": {
4    "title": "Order Shipped",
5    "message": "Your order #12345 has been shipped",
6    "priority": 1,
7    "timestamp": 1678901234
8  }
9}
10

Ваша мобилна апликација анализира notification.title и notification.message. Ако француски превод промени структуру кључа, апликација се квари за француске кориснике.

Овај алат обезбеђује да notification.title остане notification.title на сваком језику, са само преведеним вредностима стрингова. Ваш клијентски код ради идентично на свим локалима.

Једно ограничење које треба напоменути: Аутоматски превод не разуме ваш домен. "Shipped" у контексту електронске трговине може се другачије преводити него у контексту логистике или поморства. За API који се тиче крајњих корисника, прегледајте излаз пре него што га deploy-ujete.

Превод садржаја за Headless CMS

Headless CMS платформе попут Contentful-а или Strapi-ја често извозе садржај као JSON. Када имате 50 блог постова са структурираним метаподацима (аутор, тагови, URL-ови слика, датуми објаве), желите да преведете тело и наслов без дирања метаподатака.

Типичан извоз укључује и садржајне стрингове и конфигурацију:

  • Садржај: текст чланка, наслов, извод
  • Структура: ID-ови аутора, путање слика, slug-ови категорија, временске ознаке

Ручни превод ризикује промену slug-а из technology у tecnología, што квари рутирање. Превод који чува структуру обрађује само поља садржаја.

Конфигурационе датотеке за multi-region deploy-ове

Deploy-ујете широм региона? Ваше конфигурационе датотеке можда захтевају локализоване стрингове уз очување идентичних endpoint-а, credentials и feature flags:

1{
2  "region": "eu-west",
3  "welcomeMessage": "Welcome to our service",
4  "endpoint": "https://api.eu.example.com",
5  "retryAttempts": 3,
6  "features": {"darkMode": true}
7}
8

Преведите welcomeMessage на немачки остављајући endpoint, retryAttempts и features непромењене.

Поређење приступа превођењу

МетодНајбоље заБрзинаТачностБезбедност структуреЦена
Овај алатБрза i18n генерација датотека, прототипови, интерни алатиТренутноДобро за стандардни садржај100% очуваноБесплатно
Google Translate (копирај/налепи)Појединачне фразе, нетехнички текстТренутноВарираКвари JSONБесплатно
Професионално превођењеСадржај за крајње кориснике, правни документи, маркетингДаниОдличноПотребан ручни рад$0.08-0.15/реч
Системи за управљање превођењем (Lokalise, Phrase)Корпоративне апликације, токови сарадњеСати-ДаниОдлично уз прегледУграђена JSON подршка$$$+

Када користити овај алат: Пројекти у раној фази, генерисање нацрта за преглед, интерне апликације где савршено превођење није критично.

Када инвестирати у професионално превођење: Садржај за крајње кориснике, правни/усаглашавајући текст, порука бренда или када културна нијанса важи више од брзине.

Техничке напомене и ивични случајеви

Шта се преводи (а шта не)

Алат користи провере типова да би одредио шта треба да се преведе:

Преведено:

  • Вредности стрингова: "Welcome""Добродошли"
  • Стрингови у низовима: ["Hello", "World"]["Здраво", "Свет"]
  • Стрингови на било ком нивоу угњеждавања

Није преведено:

  • Бројеви: 42, 3.14, -10 остају непромењени
  • Булове вредности: true и false остају исте
  • Null: null остаје null
  • Кључеви објеката: "userName" као кључ остаје "userName"
  • Празни стрингови: "" остаје ""

Руковање специјалним карактерима

Уникод и Емоџи Алат правилно обрађује UTF-8, тако да емоџи и не-латински карактери функционишу без проблема:

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

Преводи се на српски као:

1{"greeting": "👋 Здраво"}
2

Escape секвенце JSON escape секвенце (\n, \t, \") се чувају:

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

\n остаје непромењен приликом превода.

Резервисани знаци Ево потенцијалног проблема: Ако ваши стрингови садрже резервисане знаке попут {username} или %s, они могу бити преведени или преуређени. У језицима са писмом са десна на лево, позиције резервисаних знака могу да се промене. Пажљиво их прегледајте.

Перформансе великих JSON датотека

Веб алат обрађује типичне i18n датотеке (испод 500KB) без проблема. За веће скупове података:

  • 500KB - 2MB: Ради, али може бити спор у прегледачу
  • Преко 2MB: Размислите о подели на логичке делове (нпр. одвојене датотеке по функцији или секцији)

Меморија прегледача је ограничавајући фактор, а не сам алгоритам.

Често постављана питања

Чиме се ово разликује од копирања JSON-а у Google Преводилац?

Google Преводилац третира JSON као обичан текст, што значи да покушава да преведе све - укључујући кључеве, синтаксне знакове и нумеричке вредности. Добићете излаз попут:

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

Приметите како се "username" претворио у "nom d'utilisateur" и број 25 постао стринг "vingt-cinq"? Ваш код би одмах престао да ради.

Овај алат разуме JSON структуру и преводи само стринг вредности, остављајући кључеве и друге типове података непромењеним.

Да ли ће обрадити дубоко угнежђени JSON са низовима?

Да. Рекурзивни алгоритам обрађује сваки ниво угњеждавања:

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

Преводи све стринг вредности ("John", "Jane", "admin", "editor", "viewer") уз очување тачне структуре.

Шта ако мој JSON садржи и енглески и већ преведени садржај?

Алат преводи сваки стринг који пронађе, чак и ако су неки већ на циљном језику. Ако додајете нове кључеве у постојећу датотеку превода, преведите само нови одељак одвојено, а затим спојите резултате.

Да ли могу да користим ово за i18next или react-intl датотеке?

Апсолутно. Излазна структура одговара оном што ови оквири очекују. i18next JSON датотека попут:

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

Постаје:

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

Ваши t('translation.welcome') позиви остају непромењени.

Колико је тачан аутоматски превод за техничке садржаје?

Зависи од контекста:

  • Општи UI текст: "Save", "Cancel", "Submit" → Углавном тачно
  • Технички жаргон: "webhook", "OAuth2", "idempotent" → Може бити погрешно преведено или остати исто
  • Термини специфични за домен: "patient record" (медицина) насупрот "patient" (стрпљење) → Контекст често промакне

За производне апликације, користите ово као први корак, а затим нека неко прегледа техничке и термине специфичне за домен.

Шта је са језицима са различитим скуповима знакова (кинески, арапски, руски)?

Алат правилно rukuje Unicode-ом, тако да сви скупови знакова функционишу. На једну ствар треба обратити пажњу: арапски и хебрејски су са десна на лево (RTL), што може утицати на то како се плејсхолдери појављују у преведеним стринговима. JSON структура остаје тачна, али прегледајте преведени текст ради читљивости.

Да ли ће сачувати моје formatiranje (увлачење, прелази у линији)?

Излаз је важећи JSON, али formatiranje (празан простор, увлачење) може бити различито од вашег улаза. Ако вам треба специфично formatiranje, пропустите излаз кроз JSON форматер са вашим омиљеним подешавањима.

Да ли могу да преведем конфигурационе вредности попут URL-ова или API кључева?

Алат преводи све стрингове, укључујући URL-ове и конфигурационе вредности. Да бисте спречили ово:

  1. Поделите свој JSON на садржај за кориснике и конфигурацију
  2. Преведите само одељак садржаја
  3. Оставите конфигурацију непреведену

Још боље, структурирајте своје датотеке да одвојите преводиви садржај од техничких вредности од самог почетка.

Да ли је ово бесплатно? Да ли постоје ограничења брзине?

Веб алат је бесплатан за уобичајену употребу. Веома висок обим превода (стотине датотека у минуту) може наићи на ограничења брзине на основној услузи превода. За већину развојних токова рада, нећете наићи на ограничења.

Референце и додатна литература

За дубље разумевање JSON структуре, стандарда интернационализације и најбоље праксе:

Почните да преводите своје JSON датотеке

Требате брзо да генеришете датотеке превода за вишејезичну апликацију? Налепите свој JSON, одаберите циљни језик и добијте преводе који чувају структуру тренутно. Ради са i18next, react-intl, vue-i18n и било којим оквиром који очекује доследну JSON структуру између језика.

Започните превод сада: