Spring til indhold

JSON-oversætter der bevarer struktur | Gratis i18n-værktøj

Gratis JSON-oversætter der bevarer din struktur intakt. Oversæt i18n-filer, API-svar og nestede JSON-dokumenter samtidig med at nøgler, datatyper og formatering bevares. Perfekt til i18next og flersprogede apps.

JSON-strukturbevarende oversætter

Dette værktøj oversætter indholdet af JSON-objekter samtidig med at deres struktur bevares. Indsæt din JSON i venstre panel, vælg et målsprog, og se den oversatte output i højre panel.

Oversat output vises her...

Sådan bruges

  1. Indsæt dit JSON-objekt i feltet Kilde JSON.
  2. Vælg dit målsprog fra rullemenuen.
  3. Den oversatte JSON vil automatisk vises i højre panel.
  4. Klik på Kopiér-knappen for at kopiere den oversatte JSON til udklipsholderen.
Indlæsningsberegner...
📚

Dokumentation

Hvad er en JSON Struktur-Bevarende Oversætter?

Har du nogensinde prøvet at kopiere JSON ind i Google Translate og endt med ødelagte nøgler, manglende parenteser eller forvreden syntaks? Det er præcis det problem, dette værktøj løser.

En JSON struktur-bevarende oversætter konverterer de strengværdier, der er inde i dine JSON-objekter til et andet sprog, mens alt andet forbliver uændret - nøgler forbliver de samme, tal forbliver tal, boolske værdier forbliver boolske, og din indlejrede struktur falder ikke sammen.

Her er det, der adskiller dette fra almindelige oversættelsesværktøjer: når du oversætter en typisk i18n-fil med 50+ indlejrede nøgler, skal strukturen forblive identisk, så din kode stadig kan referere til user.profile.displayName på spansk, fransk eller japansk. Ødelæg den struktur, og du bruger timer på fejlretning.

Dette værktøj håndterer den rekursive traversering automatisk og identificerer, hvilke strenge der skal oversættes, og hvilke elementer (som API-nøgler, konfigurationsværdier eller numeriske ID'er) skal forblive nøjagtigt, som de er.

Hvordan JSON-strukturbevarelse fungerer

Hvorfor strukturbevarelse er vigtig

Når du arbejder med JSON-oversættelse, handler det typisk om et af disse scenarier:

  • i18n-filer hvor din app forventer, at en.json og fr.json har identiske nøgler
  • API-svar der skal have konsistent struktur på tværs af sprog for klientaflæsning
  • Konfigurationsfiler hvor ændring af et nøglenavn ødelægger hele din applikation
  • Databaseeksporter hvor relationer afhænger af specifikke feltnavn

Udfordringen: JSON er ikke bare tekst. Det er struktureret data med et skema, som din kode er afhængig af. Ændring af "userName" til "nombreUsuario" under oversættelsen får din app til at kaste en undefined-fejl.

Hvordan oversættelsesprocessen fungerer

Her er, hvad der sker under overfladen, når du oversætter JSON:

1. Parsing og validering Værktøjet validerer først din JSON-syntaks. Hvis du mangler et komma eller har en ekstra parentes, får du en klar fejlmeddelelse, før oversættelsen begynder - hvilket redder dig fra ødelagt output.

2. Rekursiv gennemgang Med start fra roden gennemgår algoritmen hver node i dit JSON-træ. For hvert element tjekker den datatypen:

  • Streng? Sæt den i kø til oversættelse
  • Tal, boolsk værdi, null? Spring den helt over
  • Objekt eller array? Rekurser ind i det

3. Typesikker oversættelse Kun strengværdier sendes til oversættelses-API'en. Din "quantity": 42 forbliver 42, ikke "fyrre og to". Din "isActive": true forbliver true, ikke "sand".

4. Nøglebevarelse Alle objektnøgler forbliver på deres originale sprog. Dette er kritisk, fordi translations.header.welcomeMessage skal være den samme sti i hver sprogfil.

5. Strukturgensamling Oversatte strenge indsættes tilbage på præcis samme positioner og bevarer alle niveauer, arrayindeks og objekthierarkier.

En almindelig faldgrube: Nogle udviklere forsøger at JSON.stringify() objektet, oversætte hele strengen og derefter parse den tilbage. Dette ødelægger, fordi oversætteren ændrer nøgler, parenteser og syntaks. Den rekursive tilgang undgår dette fuldstændigt.

Brug af JSON Struktur-Bevarende Oversætter

Trinvis Guide

1. Indsæt Din JSON Kopier din JSON-objekt og indsæt den i venstre panel. Værktøjet håndterer enhver gyldig JSON - uanset om det er et simpelt objekt med 5 nøgler eller en dybt indlejret struktur med arrays og flere niveauer.

2. Vælg Destinationssprog Vælg fra sprogrullemenuen: Spansk, Fransk, Tysk, Italiensk, Portugisisk, Kinesisk, Japansk, Koreansk, Russisk og flere. Hvis du oversætter til et i18next-projekt, så match sprogkoden, som dit framework forventer.

3. Få Øjeblikkelig Oversættelse Den oversatte output vises automatisk i højre panel. Ingen "Oversæt"-knap nødvendig - den behandler med det samme, du har gyldig JSON og et valgt sprog.

4. Kopier og Brug Klik på "Kopier"-knappen for at hente den oversatte JSON. Den er klar til at indsætte direkte i dit projekt - ingen oprydning nødvendig.

5. Ryd til Næste Oversættelse Tryk på "Ryd Alt" når du er klar til at oversætte en anden fil. Værktøjet nulstiller begge paneler med det samme.

Almindelige Problemer og Løsninger

"Ugyldig JSON-Format" Fejl Du vil se dette, når der er et syntaksproblem. Almindelige syndere:

  • Manglende komma mellem nøgle-værdi-par
  • Efterslæbende komma efter det sidste element (gyldigt i JavaScript, ikke JSON)
  • Enkeltanførselstegn i stedet for dobbeltanførselstegn
  • Ikke-undslupne specialtegn i strenge

Hurtig løsning: Kør din JSON gennem en validator som JSONLint før indsættelse.

Oversættelse Fejler Lydløst Hvis output-panelet forbliver tomt:

  • Tjek din internetforbindelse - oversættelse kræver API-adgang
  • Bekræft at du har valgt et destinationssprog
  • Prøv med et mindre JSON-uddrag for at isolere problemet

Uventede Resultater i Oversættelse Maskinoversættelse fungerer godt for standardsætninger, men kæmper med:

  • Teknisk fagsprog eller domænespecifikke termer
  • Brandnavne (som ofte bør forblive uoversatte)
  • Pladsholdersyntaks som {{username}} eller %s

Til produktionsapplikationer, brug dette værktøj som første gennemgang, og lad derefter en modersmålstaler gennemgå domænespecifikt eller kundevendt indhold.

Pro Tips til Bedre Resultater

Hold Tekniske Strenge Adskilt Hvis din JSON blander brugervendt tekst med tekniske identifikatorer, så overvej at opdele dem. For eksempel:

1{
2  "display": {"welcome": "Velkommen tilbage"},
3  "config": {"apiKey": "abc123", "endpoint": "https://api.example.com"}
4}
5

Oversæt display-objektet separat for at undgå utilsigtet behandling af config-værdierne.

Brug Kontekst i Dine Strenge "Indsend" kan oversættes anderledes afhængigt af kontekst. "Indsend formular" eller "Indsend betaling" giver oversættere (menneske eller maskine) bedre kontekst for nøjagtig oversættelse.

Test med Rigtige Data Inden du oversætter hele din i18n-fil med 500+ nøgler, så test med en lille prøve, der inkluderer alle dine datatyper - strenge, tal, indlejrede objekter, arrays.

Kodeeksempler

Oversættelse af JSON med JavaScript

1// Eksempel på hvordan du kan implementere lignende funktionalitet i JavaScript
2function translateJsonStructure(jsonObj, targetLanguage) {
3  // Hjælpefunktion til at oversætte en streng
4  function translateString(str, lang) {
5    // I en reel implementering ville dette kalde en oversættelsestjeneste
6    return `[${lang}] ${str}`;
7  }
8  
9  // Rekursiv funktion til at gennemgå og oversætte 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    // Returner tal, booleans osv. uændret
30    return node;
31  }
32  
33  return processNode(jsonObj);
34}
35
36// Eksempel på brug
37const sourceJson = {
38  "product": {
39    "name": "Trådløse Hovedtelefoner",
40    "description": "Højtydende trådløse hovedtelefoner med støjreduktion",
41    "features": ["Bluetooth 5.0", "40-timers batterilevetid", "Foldbar design"],
42    "price": 99.99,
43    "inStock": true
44  }
45};
46
47const translatedJson = translateJsonStructure(sourceJson, "es");
48console.log(JSON.stringify(translatedJson, null, 2));
49

Oversættelse af JSON med Python

1import json
2
3def translate_json_structure(json_obj, target_language):
4    """
5    Oversætter strengværdier i et JSON-objekt samtidig med at strukturen bevares.
6    
7    Args:
8        json_obj: Det fortolkede JSON-objekt
9        target_language: Målsprogets kode (f.eks. 'es', 'fr')
10        
11    Returns:
12        Oversat JSON-objekt med bevaret struktur
13    """
14    def translate_string(text, lang):
15        # I en reel implementering ville dette kalde en oversættelsestjeneste
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        # Returner tal, booleans osv. uændret
35        return node
36    
37    return process_node(json_obj)
38
39# Eksempel på brug
40source_json = {
41    "user": {
42        "name": "Jane Smith",
43        "bio": "Softwareudvikler og open source-bidragyder",
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

Oversættelse af JSON med PHP

1<?php
2/**
3 * Oversætter JSON-struktur samtidig med at den originale struktur bevares
4 * 
5 * @param mixed $jsonObj Det fortolkede JSON-objekt
6 * @param string $targetLanguage Målsprogets kode
7 * @return mixed Det oversatte JSON-objekt
8 */
9function translateJsonStructure($jsonObj, $targetLanguage) {
10    // Hjælpefunktion til at oversætte en streng
11    function translateString($text, $lang) {
12        // I en reel implementering ville dette kalde en oversættelsestjeneste
13        return "[$lang] $text";
14    }
15    
16    // Rekursiv funktion til at behandle hver 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            // Tjek om det er et associativt array (objekt) eller et indekseret array
28            if (array_keys($node) !== range(0, count($node) - 1)) {
29                // Associativt array (objekt)
30                $result = [];
31                foreach ($node as $key => $value) {
32                    $result[$key] = processNode($value, $lang);
33                }
34                return $result;
35            } else {
36                // Indekseret array
37                return array_map(function($item) use ($lang) {
38                    return processNode($item, $lang);
39                }, $node);
40            }
41        }
42        
43        // Returner tal, booleans osv. uændret
44        return $node;
45    }
46    
47    return processNode($jsonObj, $targetLanguage);
48}
49
50// Eksempel på brug
51$sourceJson = [
52    "company" => [
53        "name" => "Global Tech Solutions",
54        "description" => "Innovativt softwareudviklingsselskab",
55        "founded" => 2010,
56        "services" => ["Webudvikling", "Mobile Apps", "Cloud-løsninger"],
57        "active" => true
58    ]
59];
60
61$translatedJson = translateJsonStructure($sourceJson, "de");
62echo json_encode($translatedJson, JSON_PRETTY_PRINT);
63?>
64

Virkelige Use Cases

Web Application i18n Filer

De fleste moderne frameworks som Next.js, React eller Vue gemmer oversættelser i JSON-format. Når du skal tilføje et nyt sprog til din app, står du over for et valg: manuelt kopiere og oversætte hver nøgle (fejlbehæftet), eller bruge dette værktøj til at generere et første udkast på få minutter.

Et reelt scenarie: Din app har en.json med 200+ oversættelsesnøgler på tværs af nestede kategorier—navigation, formularer, fejlmeddelelser, tooltips. Du har brug for franske og tyske versioner inden næste sprint.

Input (en.json):

1{
2  "common": {
3    "welcome": "Velkommen til vores applikation",
4    "login": "Log ind",
5    "signup": "Tilmeld",
6    "errorMessages": {
7      "required": "Dette felt er påkrævet",
8      "invalidEmail": "Indtast venligst en gyldig e-mailadresse"
9    }
10  }
11}
12

Oversæt til fransk, få fr.json med identisk struktur. Din kode refererer stadig til t('common.errorMessages.required') uden ændringer.

Det jeg har fundet virker godt: Generer oversættelser med dette værktøj, og lad derefter et tosprogligt teammedlem tjekke de tekniske termer og knaptekster. Dette fanger tilfælde, hvor "Indsend" måske kræver forskellige oversættelser for "Indsend formular" vs. "Indsend betaling."

API Respons Lokalisering

Bygger du en API, der betjener flere lande? Du har brug for konsistente responsstrukturer på tværs af sprog. En notifikations-API kan returnere:

1{
2  "status": "succes",
3  "notification": {
4    "title": "Ordre afsendt",
5    "message": "Din ordre #12345 er blevet afsendt",
6    "priority": 1,
7    "timestamp": 1678901234
8  }
9}
10

Din mobilapp analyserer notification.title og notification.message. Hvis den franske oversættelse ændrer nøglestrukturen, går appen i stykker for franske brugere.

Dette værktøj sikrer, at notification.title forbliver notification.title på hvert sprog, med kun strengværdierne oversat. Din klientkode fungerer identisk på tværs af alle lokaler.

En begrænsning at bemærke: Automatisk oversættelse forstår ikke din domæne. "Afsendt" i e-handelssammenhæng kan oversættes anderledes end i en logistisk eller maritim sammenhæng. For kundevendte API'er, gennemgå outputtet før implementering.

Headless CMS Indholdsoversættelse

Headless CMS-platforme som Contentful eller Strapi eksporterer ofte indhold som JSON. Når du har 50 blogindlæg med struktureret metadata (forfatter, tags, featured billedstier, udgivelsesdatoer), vil du oversætte brødteksten og titlen uden at røre metadataene.

Et typisk eksport inkluderer både indholdsstrenge og konfiguration:

  • Indhold: artikelbrødtekst, overskrift, uddrag
  • Struktur: forfatter-ID'er, billedstier, kategori-slugs, tidsstempler

Manuel oversættelse risikerer at ændre en slug fra teknologi til technology, hvilket ødelægger din routing. Strukturbevarende oversættelse håndterer kun indholdsfeltene.

Konfigurationsfiler til Multi-Region Deployments

Deployment på tværs af regioner? Dine konfigurationsfiler kan have brug for lokaliserede strenge, mens endpoints, legitimationsoplysninger og funktionsflags forbliver identiske:

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

Oversæt welcomeMessage til tysk, mens endpoint, retryAttempts og features forbliver urørte.

Sammenligning af oversættelsesmetoder

MetodeBedst tilHastighedNøjagtighedStrukturbevarelseOmkostninger
Dette VærktøjHurtig i18n-filoprettelse, prototyper, interne værktøjerØjeblikkeligtGod til standardindhold100% bevaretGratis
Google Oversæt (kopier/indsæt)Enkeltfraser, ikke-teknisk tekstØjeblikkeligtVariererØdelægger JSONGratis
Professionel OversættelseKundevendt indhold, juridiske dokumenter, marketingDageFremragendeManuelt arbejde påkrævet0,08-0,15 $/ord
Oversættelsesstyringssystemer (Lokalise, Phrase)Virksomhedsapplikationer, samarbejdsworkflowsTimer-DageFremragende med gennemgangIndbygget JSON-support$$$+

Hvornår bruges dette værktøj: Tidlige projektfaser, generering af udkast til gennemgang, interne applikationer hvor perfekt oversættelse ikke er kritisk.

Hvornår investeres i professionel oversættelse: Kundevendt indhold, juridisk/compliance-tekst, brandbudskaber, eller når kulturel nuance betyder mere end hastighed.

Tekniske overvejelser og Grænsetilfælde

Hvad Oversættes (og Hvad Gør Ikke)

Værktøjet bruger typekontrol til at bestemme, hvad der skal oversættes:

Oversættes:

  • Strengværdier: "Welcome""Velkommen"
  • Strenge i arrays: ["Hello", "World"]["Hej", "Verden"]
  • Strenge på ethvert nestningsniveau

Ikke Oversat:

  • Tal: 42, 3.14, -10 forbliver uændret
  • Boolske værdier: true og false forbliver som de er
  • Null: null forbliver null
  • Objektnøgler: "userName" som nøgle forbliver "userName"
  • Tomme strenge: "" forbliver ""

Håndtering af Specialtegn

Unicode og Emoji Værktøjet håndterer UTF-8 korrekt, så emoji og ikke-latinske tegn fungerer fint:

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

Oversættes til dansk som:

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

Escape-sekvenser JSON escape-sekvenser (\n, \t, \") bevares:

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

\n forbliver intakt ved oversættelse.

Pladsholdere Her er et potentielt problem: Hvis dine strenge indeholder pladsholdere som {username} eller %s, kan de muligvis blive oversat eller omplaceret. I sprog som arabisk eller hebraisk med RTL-tekst kan pladsholderpositioner flytte sig. Gennemgå disse omhyggeligt.

Ydeevne for Store JSON-filer

Det webbaserede værktøj håndterer typiske i18n-filer (under 500 KB) uden problemer. For større datasæt:

  • 500 KB - 2 MB: Fungerer, men kan være langsomt i browseren
  • Over 2 MB: Overvej at opdele i logiske dele (f.eks. separate filer pr. funktion eller sektion)

Browserhukommelse er den begrænsende faktor, ikke algoritmen selv.

Ofte stillede spørgsmål

Hvordan adskiller dette sig fra at indsætte JSON i Google Translate?

Google Translate behandler JSON som ren tekst, hvilket betyder, at den forsøger at oversætte alt - herunder nøgler, syntakskarakterer og numeriske værdier. Du vil få output som:

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

Bemærk hvordan "username" blev til "nom d'utilisateur" og tallet 25 blev til strengen "vingt-cinq"? Din kode bryder øjeblikkeligt.

Dette værktøj forstår JSON-strukturen og oversætter kun strengværdier, mens nøgler og andre datatyper forbliver intakte.

Kan det håndtere dybt indlejrede JSON med arrays?

Ja. Den rekursive algoritme behandler alle niveauer af indlejring:

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

Den oversætter alle strengværdier ("John", "Jane", "admin", "editor", "viewer") samtidig med at den bevarer den nøjagtige struktur.

Hvad nu hvis min JSON indeholder både engelsk og allerede oversatte indhold?

Værktøjet oversætter alle strenge, det finder, selv hvis nogle allerede er på målsproget. Hvis du tilføjer nye nøgler til en eksisterende oversættelsesfil, skal du oversætte den nye sektion separat og derefter flette resultaterne.

Kan jeg bruge dette til i18next eller react-intl filer?

Absolut. Outputstrukturen matcher det, disse frameworks forventer. En i18next JSON-fil som:

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

Bliver til:

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

Dine t('translation.welcome') kald fungerer uændret.

Hvor nøjagtig er automatisk oversættelse af teknisk indhold?

Det afhænger af konteksten:

  • Generel UI-tekst: "Gem", "Annuller", "Indsend" → Normalt nøjagtig
  • Teknisk fagsprog: "webhook", "OAuth2", "idempotent" → Kan være forkert oversat eller forblive uændret
  • Domænespecifikke termer: "patient record" (medicinsk) vs "patient" (tålmodighed) → Kontekst misses ofte

Til produktionsapplikationer, brug dette som første gennemgang, og få derefter nogen til at gennemgå tekniske og domænespecifikke termer.

Hvad med sprog med forskellige tegnsæt (Kinesisk, Arabisk, Russisk)?

Værktøjet håndterer Unicode korrekt, så alle tegnsæt fungerer. En ting at være opmærksom på: Arabisk og Hebraisk er højre-mod-venstre (RTL), hvilket kan påvirke, hvordan pladsholdere vises i oversatte strenge. JSON-strukturen forbliver korrekt, men gennemgå den oversatte tekst for læsbarhed.

Vil det bevare min formatering (indrykning, linjeskift)?

Outputtet er gyldig JSON, men formatering (mellemrum, indrykning) kan variere fra dit input. Hvis du har brug for specifik formatering, kan du køre outputtet gennem en JSON-formatter med dine foretrukne indstillinger.

Kan jeg oversætte konfigurationsværdier som URL'er eller API-nøgler?

Værktøjet oversætter alle strenge, herunder URL'er og konfigurationsværdier. For at forhindre dette:

  1. Del din JSON op i brugervendt indhold og konfiguration
  2. Oversæt kun indholdssektionen
  3. Behold konfiguration uoversat

Endnu bedre: Strukturer dine filer til at adskille oversættelige indhold fra tekniske værdier fra starten.

Er dette gratis? Er der hastighedsgrænser?

Den webbaserede værktøj er gratis til typisk brug. Meget høj volumen af oversættelse (hundredvis af filer pr. minut) kan ramme hastighedsgrænser på den underliggende oversættelsestjeneste. I de fleste udviklingsworkflows vil du ikke støde på grænser.

Referencer og yderligere læsning

For dybere forståelse af JSON-struktur, internationaliseringsstandarder og bedste praksisser:

Start med at oversætte dine JSON-filer

Har du brug for hurtigt at generere oversættelsesfiler til din flersproget applikation? Indsæt din JSON, vælg et målsprog, og få øjeblikkeligt oversættelser, der bevarer strukturen. Fungerer med i18next, react-intl, vue-i18n og enhver ramme, der forventer konsistent JSON-struktur på tværs af sprog.

Begynd oversættelsen nu: