Прескочи към съдържанието

JSON Преводач, Който Запазва Структурата | Безплатен i18n Инструмент

Безплатен JSON преводач, който запазва вашата структура. Превеждайте i18n файлове, API отговори и вложени JSON, като запазвате ключовете, типовете данни и форматирането. Перфектен за i18next и многоезични приложения.

Преводач с Запазване на JSON Структура

Този инструмент превежда съдържанието на JSON обекти, като запазва тяхната структура. Поставете вашия JSON в левия панел, изберете целеви език и вижте преведения резултат в десния панел.

Преведеният резултат ще се покаже тук...

Как се използва

  1. Поставете вашия JSON обект в полето Изходен JSON.
  2. Изберете целевия език от падащото меню.
  3. Преведеният JSON ще се покаже автоматично в десния панел.
  4. Натиснете бутона Копирай, за да копирате преведения JSON в буферната памет.
Калкулатор за зареждане...
📚

Документация

Какво е JSON Преводач, Който Запазва Структурата?

Опитвали ли сте някога да копирате JSON в Google Translate и да получите повредени ключове, липсващи скоби или изкривена синтаксис? Точно този проблем този инструмент решава.

JSON преводач, който запазва структурата, превежда низовите стойности вътре във вашите JSON обекти на друг език, като запазва всичко останало непроменено — ключовете остават същите, числата си остават числа, булевите стойности си остават булеви, а вашата вложена структура не се разпада.

Ето какво го отличава от обикновените инструменти за превод: когато превеждате типичен i18n файл с над 50 вложени ключа, трябва структурата да остане идентична, така че вашият код да може да продължи да се позовава на user.profile.displayName на испански, френски или японски. Счупите ли тази структура, ще отстранявате грешки с часове.

Този инструмент автоматично извършва рекурсивно обхождане, като идентифицира кои низове се нуждаят от превод и кои елементи (като API ключове, конфигурационни стойности или числови идентификатори) трябва да останат точно такива, каквито са.

Как работи запазването на JSON структура

Защо запазването на структурата е важно

Когато работите с превод на JSON, обикновено се сблъсквате с един от следните сценарии:

  • i18n файлове, където вашето приложение очаква en.json и fr.json да имат идентични ключове
  • API отговори, които се нуждаят от последователна структура между езиците за клиентски анализ
  • Конфигурационни файлове, където промяната на име на ключ може да счупи цялото ви приложение
  • Експортирани бази данни, където връзките зависят от специфични имена на полета

Предизвикателството: JSON не е просто текст. Това са структурирани данни със схема, от която вашият код зависи. Промяната на "userName" на "nombreUsuario" по време на превод може да предизвика грешка undefined в приложението.

Как работи процесът на превод

Ето какво се случва под капака, когато превеждате JSON:

1. Анализ и Валидация Инструментът първо валидира JSON синтаксиса. Ако липсва запетая или има допълнителна скоба, ще получите ясно съобщение за грешка преди началото на превода - което ви спестява корумпиран изход.

2. Рекурсивно Обхождане Започвайки от корена, алгоритъмът преминава през всеки възел в JSON дървото. За всеки елемент проверява типа данни:

  • Низ? Включва го за превод
  • Число, булев израз, нула? Пропуска го напълно
  • Обект или масив? Рекурсивно навлиза в него

3. Превод с Безопасен Тип Само низовите стойности се изпращат към API за превод. Вашето "quantity": 42 остава 42, не "четиридесет и две". Вашето "isActive": true остава true, не "истина".

4. Запазване на Ключове Всички обектни ключове остават на оригиналния език. Това е критично, защото translations.header.welcomeMessage трябва да бъде същият път във всеки езиков файл.

5. Възстановяване на Структурата Преведените низове се вмъкват обратно точно на същите позиции, като се запазват всички нива на вложеност, индекси на масиви и йерархии на обекти.

Честа грешка: Някои разработчици опитват да направят JSON.stringify() на обекта, да преведат целия низ, после да го парснат обратно. Това се чупи, защото преводачът модифицира ключове, скоби и синтаксис. Рекурсивният подход напълно избягва това.

Използване на JSON Структуро-Запазващ Преводач

Стъпка по Стъпка Ръководство

1. Поставете Вашия JSON Копирайте вашия JSON обект и го поставете в левия панел. Инструментът работи с всеки валиден JSON - независимо дали е прост обект с 5 ключа или дълбоко вложена структура с масиви и множество нива.

2. Изберете Целеви Език Изберете от падащото меню за език: испански, френски, немски, италиански, португалски, китайски, японски, корейски, руски и други. Ако превеждате за i18next проект, съгласувайте езиковия код, който вашата рамка очаква.

3. Получете Незабавен Превод Преведеният резултат се появява автоматично в десния панел. Не е необходим бутон "Превод" - обработва се веднага щом имате валиден JSON и избран език.

4. Копирайте и Използвайте Кликнете бутона "Копирай", за да вземете преведения JSON. Готов е за директно поставяне в проекта - без нужда от почистване.

5. Изчистване за Следващ Превод Натиснете "Изчисти всичко", когато сте готови да преведете друг файл. Инструментът незабавно нулира и двата панела.

Общи Проблеми и Решения

Грешка "Невалиден JSON Формат" Ще видите това, когато има синтактичен проблем. Чести причинители:

  • Липсваща запетая между двойки ключ-стойност
  • Trailing запетая след последния елемент (валидна в JavaScript, не и в JSON)
  • Единични кавички вместо двойни
  • Неекранирани специални знаци в низове

Бърз fix: Пуснете вашия JSON през валидатор като JSONLint преди поставяне.

Превод Fail Мълчаливо Ако изходният панел остане празен:

  • Проверете интернет връзката си - преводът изисква API достъп
  • Потвърдете, че сте избрали целеви език
  • Опитайте с по-малък JSON фрагмент, за да изолирате проблема

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

  • Технически термини или специфични за домейн термини
  • Търговски марки (които обикновено трябва да останат непреведени)
  • Placeholder синтаксис като {{username}} или %s

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

Про Съвети за По-Добри Резултати

Дръжте Техническите Низове Отделно Ако вашият 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": "Безжични слушалки",
40    "description": "Висококачествени безжични слушалки с шумопотискане",
41    "features": ["Bluetooth 5.0", "40-часов живот на батерията", "Сгъваем дизайн"],
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    Аргументи:
8        json_obj: Парсираният JSON обект
9        target_language: Код на целевия език (напр. 'es', 'fr')
10        
11    Връща:
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": "Джейн Смит",
43        "bio": "Софтуерен разработчик и участник в отворен код",
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" => "Глобални технологични решения",
54        "description" => "Иновативна софтуерна компания",
55        "founded" => 2010,
56        "services" => ["Уеб разработка", "Мобилни приложения", "Облачни решения"],
57        "active" => true
58    ]
59];
60
61$translatedJson = translateJsonStructure($sourceJson, "de");
62echo json_encode($translatedJson, JSON_PRETTY_PRINT);
63?>
64

Реални приложения

Файлове за интернационализация на уеб приложения

Повечето съвременни framework-ове като Next.js, React или Vue съхраняват преводите в JSON формат. Когато трябва да добавите нов език към вашето приложение, изправени сте пред избор: ръчно копиране и превеждане на всеки ключ (рисковано), или използване на този инструмент за генериране на първоначален вариант за минути.

Реален сценарий: Вашето приложение има en.json с над 200 преводни ключа в nested категории—навигация, формуляри, съобщения за грешки, подсказки. Нуждаете се от френска и немска версия до следващия спринт.

Вход (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, което обслужва множество държави? Нужни са ви последователни структури на отговорите през различните езици. Нотификационно API може да върне:

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, насочени към клиенти, прегледайте резултата преди внедряване.

Превод на съдържание в Headless CMS

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

Типичен експорт включва както низове за съдържание, така и конфигурация:

  • Съдържание: текст на статия, заглавие, резюме
  • Структура: идентификатори на автори, пътища към изображения, slug-ове на категории, времеви отпечатъци

Ръчният превод крие риск от промяна на slug от technology на tecnología, което може да наруши маршрутизацията. Преводът, който запазва структурата, обработва само полетата за съдържание.

Конфигурационни файлове за мултирегионални разгръщания

Разгръщане в различни региони? Вашите конфигурационни файлове може да се нуждаят от локализирани низове, като се запазят endpoints, credentials и флагове за функции идентични:

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 support$$$+

Кога да използваме този инструмент: В началните етапи на проекти, генериране на чернови за преглед, вътрешни приложения, където перфектният превод не е критичен.

Кога да инвестираме в професионален превод: Съдържание за клиенти, правни/регулаторни текстове, фирмени послания или когато културните нюанси са по-важни от скоростта.

Технически съображения и гранични случаи

Какво се превежда (и какво не)

Инструментът използва проверка на типа, за да определи какво да преведе:

Превежда се:

  • Стрингови стойности: "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 Translate?

Google Translate третира 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 файлове?

Абсолютно. Изходната структура отговаря на очакванията на тези framework-ове. JSON файл за i18next като:

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

Става:

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

Извикванията ви t('translation.welcome') остават непроменени.

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

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

  • Общ потребителски интерфейс: "Save", "Cancel", "Submit" → Обикновено точни
  • Технически термини: "webhook", "OAuth2", "idempotent" → Може да бъдат неправилно преведени или оставени без промяна
  • Специфични за домейна термини: "patient record" (медицински) спрямо "patient" (търпение) → Контекстът често се пропуска

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

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

Инструментът работи правилно с Unicode, така че всички знакови системи работят. Едно нещо, което трябва да се има предвид: арабски и иврит са от дясно наляво (RTL), което може да повлияе на начина, по който се показват плейсхолдърите в преведените низове. JSON структурата остава правилна, но прегледайте преведения текст за четимост.

Ще запази ли моето форматиране (отстъпи, нови редове)?

Изходът е валиден JSON, но форматирането (интервали, отстъпи) може да се различава от входа. Ако се нуждаете от конкретно форматиране, пуснете изхода през JSON форматиращ инструмент с предпочитаните от вас настройки.

Мога ли да превеждам конфигурационни стойности като URL адреси или API ключове?

Инструментът превежда всички низове, включително URL адреси и конфигурационни стойности. За да предотвратите това:

  1. Разделете JSON файла на потребителско съдържание и конфигурация
  2. Преведете само секцията със съдържание
  3. Оставете конфигурацията непреведена

По-добре е да структурирате файловете си така, че от самото начало да разделите преводимото съдържание от техническите стойности.

Безплатно ли е това? Има ли ограничения за честотата на заявките?

Уеб базираният инструмент е безплатен за типична употреба. Много голям обем на превод (стотици файлове в минута) може да достигне ограниченията за честота на базовата услуга за превод. За повечето работни процеси при разработка, няма да срещнете ограничения.

Препратки и допълнителна литература

За по-задълбочено разбиране на JSON структурата, стандарти за интернационализация и най-добри практики:

Започнете превода на вашите JSON файлове

Имате нужда бързо да генерирате файлове с преводи за вашето многоезично приложение? Поставете вашия JSON, изберете целеви език и получете незабавно преводи, които запазват структурата. Работи с i18next, react-intl, vue-i18n и всяка друга рамка, която изисква последователна JSON структура между езиците.

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