JSON-oversetter som bevarer struktur | Gratis i18n-verktøy
Gratis JSON-oversetter som beholder strukturen intakt. Oversett i18n-filer, API-svar og nestede JSON-er mens du bevarer nøkler, datatyper og formatering. Perfekt for i18next og flerspråklige apper.
JSON Struktur-Bevarende Oversetter
Dette verktøyet oversetter innholdet i JSON-objekter mens strukturen beholdes. Lim inn JSON-en i venstre panel, velg et målspråk, og se den oversatte utgangen på høyre side.
Oversatt resultat vil vises her...
Hvordan bruke
- Lim inn JSON-objektet i Kilde JSON-feltet.
- Velg målspråk fra rullegardinmenyen.
- Den oversatte JSON-en vil automatisk vises i høyre panel.
- Klikk Kopier-knappen for å kopiere den oversatte JSON-en til utklippstavlen.
Dokumentasjon
Hva er en JSON-strukturbevarende oversetter?
Har du noen gang prøvd å kopiere JSON inn i Google Translate og endt opp med ødelagte nøkler, manglende klammer eller ødelagt syntaks? Det er nettopp problemet denne verktøyet løser.
En JSON-strukturbevarende oversetter konverterer strengverdiene inne i JSON-objektene dine til et annet språk mens alt annet forblir uberørt—nøkler forblir de samme, tall forblir tall, boolske verdier forblir boolske, og den nestede strukturen kollapser ikke.
Her er det som gjør dette annerledes enn vanlige oversettelsesverktøy: når du oversetter en typisk i18n-fil med 50+ nestede nøkler, trenger du at strukturen forblir identisk slik at koden din fortsatt kan referere til user.profile.displayName på spansk, fransk eller japansk. Ødelegg den strukturen, og du feilsøker i timevis.
Dette verktøyet håndterer rekursiv traversering automatisk, og identifiserer hvilke strenger som trenger oversettelse og hvilke elementer (som API-nøkler, konfigurasjonsverdier eller numeriske IDer) som skal forbli nøyaktig som de er.
Hvordan JSON-strukturbevarelse fungerer
Hvorfor strukturbevarelse er viktig
Når du arbeider med JSON-oversettelse, håndterer du vanligvis ett av disse scenariene:
- i18n-filer der appen din forventer at
en.jsonogfr.jsonhar identiske nøkler - API-svar som trenger konsistent struktur på tvers av språk for klientanalyse
- Konfigurasjonsfiler der endring av et nøkkelnavn ødelegger hele applikasjonen
- Databaseeksporter der relasjoner avhenger av spesifikke feltnavn
Utfordringen: JSON er ikke bare tekst. Det er strukturerte data med et skjema som koden din er avhengig av. Endre "userName" til "nombreUsuario" under oversettelse, og appen din kaster en undefined-feil.
Hvordan oversettelsesprosessen fungerer
Her er hva som skjer under panseret når du oversetter JSON:
1. Parsing og validering Verktøyet validerer først JSON-syntaksen. Hvis du mangler et komma eller har en ekstra parentes, får du en tydelig feilmelding før oversettelsen starter—og redder deg fra ødelagt output.
2. Rekursiv traversering Med start fra roten går algoritmen gjennom hver node i JSON-treet. For hvert element sjekker den datatypen:
- Streng? Sett den i oversettelseskøen
- Tall, boolsk, null? Hopp over den fullstendig
- Objekt eller array? Gå rekursivt inn i den
3. Typesikker oversettelse
Kun strengverdier sendes til oversettelsesAPI-en. Din "quantity": 42 forblir 42, ikke "førtito". Din "isActive": true forblir true, ikke "sann".
4. Nøkkelbevarelse
Alle objektnøkler forblir på originalspråket. Dette er kritisk fordi translations.header.welcomeMessage må være samme sti i hver språkfil.
5. Strukturell rekonstruksjon Oversatte strenger settes tilbake på nøyaktig samme posisjoner, og opprettholder alle nestingsnivåer, arrayindekser og objekthierarkier.
En vanlig fallgruve: Noen utviklere prøver å JSON.stringify() objektet, oversette hele strengen, så parse den tilbake. Dette ødelegger fordi oversetteren modifiserer nøkler, parenteser og syntaks. Den rekursive tilnærmingen unngår dette fullstendig.
Bruke JSON Struktur-Bevarende Oversetter
Trinn-for-Trinn Veiledning
1. Lim inn JSON Kopier JSON-objektet ditt og lim det inn i venstre panel. Verktøyet håndterer enhver gyldig JSON—enten det er et enkelt objekt med 5 nøkler eller en dypt nestet struktur med arrayer og flere nivåer.
2. Velg Målspråk Velg fra språkmenyen: Spansk, Fransk, Tysk, Italiensk, Portugisisk, Kinesisk, Japansk, Koreansk, Russisk, og flere. Hvis du oversetter for et i18next-prosjekt, match språkkoden som rammeverket forventer.
3. Få Øyeblikkelig Oversettelse Den oversatte utgangen vises automatisk i høyre panel. Ingen "Oversett"-knapp er nødvendig—den behandles så snart du har gyldig JSON og et valgt språk.
4. Kopier og Bruk Klikk "Kopier"-knappen for å hente den oversatte JSON-en. Den er klar til å limes direkte inn i prosjektet—ingen opprydding nødvendig.
5. Tøm for Neste Oversettelse Trykk "Tøm Alt" når du er klar til å oversette en annen fil. Verktøyet nullstiller begge paneler umiddelbart.
Vanlige Problemer og Løsninger
"Ugyldig JSON-format" Feil Du vil se dette når det er et syntaksproblem. Vanlige syndere:
- Manglende komma mellom nøkkel-verdi-par
- Etterfølgende komma etter siste element (gyldig i JavaScript, ikke JSON)
- Enkle anførselstegn i stedet for doble
- Uunngåtte spesialtegn i strenger
Rask løsning: Kjør JSON-en gjennom en validator som JSONLint før du limer inn.
Oversettelse Feiler Stille Hvis utgangspanelet forblir tomt:
- Sjekk internettforbindelsen—oversettelse krever API-tilgang
- Bekreft at du har valgt et målspråk
- Prøv med en mindre JSON-bit for å isolere problemet
Uventede Resultater i Oversettelse Maskinoversettelse fungerer godt for standard fraser, men sliter med:
- Teknisk fagspråk eller domenespesifikke termer
- Merkenavn (som ofte bør forbli uoversatt)
- Plassholdersyntaks som
{{username}}eller%s
For produksjonsapplikasjoner, bruk dette verktøyet som første gjennomgang, og la så en morsmålstaler gjennomgå domene-spesifikk eller kundevendt innhold.
Pro Tips for Bedre Resultater
Hold Tekniske Strenger Atskilt Hvis JSON-en din blander brukervendte tekster med tekniske identifikatorer, bør du vurdere å dele dem opp. For eksempel:
1{
2 "display": {"welcome": "Velkommen tilbake"},
3 "config": {"apiKey": "abc123", "endpoint": "https://api.example.com"}
4}
5Oversett display-objektet separat for å unngå utilsiktet behandling av config-verdiene.
Bruk Kontekst i Strengene Dine "Send inn" kan oversettes forskjellig avhengig av kontekst. "Send inn skjema" eller "Send inn betaling" gir oversettere (menneske eller maskin) bedre kontekst for nøyaktig resultat.
Test med Ekte Data Før du oversetter hele i18n-filen med 500+ nøkler, test med en liten prøve som inkluderer alle dine datatyper—strenger, tall, nestede objekter, arrayer.
Kodeeksempler
Oversettelse av JSON med JavaScript
1// Eksempel på hvordan du kan implementere lignende funksjonalitet i JavaScript
2function translateJsonStructure(jsonObj, targetLanguage) {
3 // Hjelpefunksjon for å oversette en streng
4 function translateString(str, lang) {
5 // I en virkelig implementering ville dette kalle et oversettelsesAPI
6 return `[${lang}] ${str}`;
7 }
8
9 // Rekursiv funksjon for å traversere og oversette 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 tall, boolske verdier osv. uendret
30 return node;
31 }
32
33 return processNode(jsonObj);
34}
35
36// Eksempel på bruk
37const sourceJson = {
38 "product": {
39 "name": "Trådløse hodetelefoner",
40 "description": "Høykvalitets trådløse hodetelefoner med støyreduksjon",
41 "features": ["Bluetooth 5.0", "40-timers batteritid", "Sammenleggbar design"],
42 "price": 99.99,
43 "inStock": true
44 }
45};
46
47const translatedJson = translateJsonStructure(sourceJson, "es");
48console.log(JSON.stringify(translatedJson, null, 2));
49Oversettelse av JSON med Python
1import json
2
3def translate_json_structure(json_obj, target_language):
4 """
5 Oversetter strengverdier i et JSON-objekt mens strukturen beholdes.
6
7 Args:
8 json_obj: Det analyserte JSON-objektet
9 target_language: Målspråkets kode (f.eks. 'es', 'fr')
10
11 Returns:
12 Oversatt JSON-objekt med bevart struktur
13 """
14 def translate_string(text, lang):
15 # I en virkelig implementering ville dette kalle et oversettelsesAPI
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 tall, boolske verdier osv. uendret
35 return node
36
37 return process_node(json_obj)
38
39# Eksempel på bruk
40source_json = {
41 "user": {
42 "name": "Jane Smith",
43 "bio": "Programvareutvikler og bidragsyter til åpen kildekode",
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))
52Oversettelse av JSON med PHP
1<?php
2/**
3 * Oversetter JSON-struktur mens den opprinnelige strukturen beholdes
4 *
5 * @param mixed $jsonObj Det analyserte JSON-objektet
6 * @param string $targetLanguage Målspråkets kode
7 * @return mixed Det oversatte JSON-objektet
8 */
9function translateJsonStructure($jsonObj, $targetLanguage) {
10 // Hjelpefunksjon for å oversette en streng
11 function translateString($text, $lang) {
12 // I en virkelig implementering ville dette kalle et oversettelsesAPI
13 return "[$lang] $text";
14 }
15
16 // Rekursiv funksjon for å 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 // Sjekk om det er en assosiativ matrise (objekt) eller indeksert matrise
28 if (array_keys($node) !== range(0, count($node) - 1)) {
29 // Assosiativ matrise (objekt)
30 $result = [];
31 foreach ($node as $key => $value) {
32 $result[$key] = processNode($value, $lang);
33 }
34 return $result;
35 } else {
36 // Indeksert matrise
37 return array_map(function($item) use ($lang) {
38 return processNode($item, $lang);
39 }, $node);
40 }
41 }
42
43 // Returner tall, boolske verdier osv. uendret
44 return $node;
45 }
46
47 return processNode($jsonObj, $targetLanguage);
48}
49
50// Eksempel på bruk
51$sourceJson = [
52 "company" => [
53 "name" => "Global Tech Solutions",
54 "description" => "Innovativt programvareutviklingsselskap",
55 "founded" => 2010,
56 "services" => ["Webutvikling", "Mobile apper", "Skyløsninger"],
57 "active" => true
58 ]
59];
60
61$translatedJson = translateJsonStructure($sourceJson, "de");
62echo json_encode($translatedJson, JSON_PRETTY_PRINT);
63?>
64Virkelige brukstilfeller
i18n-filer for webapplikasjoner
De fleste moderne rammeverk som Next.js, React eller Vue lagrer oversettelser i JSON-format. Når du trenger å legge til et nytt språk i appen din, står du overfor et valg: manuelt kopiere og oversette hver nøkkel (feilaktig), eller bruke dette verktøyet for å generere et første utkast på noen minutter.
Et virkelig scenario: Appen din har en.json med 200+ oversettelsesnøkler på tvers av nestede kategorier—navigasjon, skjemaer, feilmeldinger, verktøytips. Du trenger franske og tyske versjoner innen neste sprint.
Input (en.json):
1{
2 "common": {
3 "welcome": "Velkommen til vår applikasjon",
4 "login": "Logg inn",
5 "signup": "Registrer deg",
6 "errorMessages": {
7 "required": "Dette feltet er påkrevd",
8 "invalidEmail": "Vennligst oppgi en gyldig e-postadresse"
9 }
10 }
11}
12Oversett til fransk, få fr.json med identisk struktur. Koden din refererer fortsatt til t('common.errorMessages.required') uten endringer.
Det jeg har funnet fungerer godt: Generer oversettelser med dette verktøyet, og la deretter et tospråklig teammedlem sjekke de tekniske termene og knappetekstene. Dette fanger opp tilfeller der "Send" kan trenge forskjellige oversettelser for "Send skjema" vs. "Send betaling."
API-respons-lokalisering
Bygger du et API som betjener flere land? Du trenger konsistente responsstrukturer på tvers av språk. Et varslingsAPI kan returnere:
1{
2 "status": "suksess",
3 "notification": {
4 "title": "Ordre sendt",
5 "message": "Din ordre #12345 har blitt sendt",
6 "priority": 1,
7 "timestamp": 1678901234
8 }
9}
10Mobilappen din analyserer notification.title og notification.message. Hvis den franske oversettelsen endrer nøkkelstrukturen, vil appen slutte å fungere for franske brukere.
Dette verktøyet sikrer at notification.title forblir notification.title på hvert språk, med kun strengverdiene oversatt. Klientkoden fungerer identisk på tvers av alle språk.
En begrensning å merke seg: Automatisk oversettelse forstår ikke domenet ditt. "Sendt" i e-handelskontekst kan oversettes annerledes enn i en logistikk- eller maritim kontekst. For kunde-rettede API-er, gjennomgå resultatene før distribusjon.
Hodløs CMS-innholdsoversettelse
Hodløse CMS-plattformer som Contentful eller Strapi eksporterer ofte innhold som JSON. Når du har 50 blogginnlegg med strukturerte metadata (forfatter, merkelapper, URL-er for fremhevede bilder, publiseringsdatoer), vil du oversette brødteksten og tittelen uten å røre metadata.
En typisk eksport inkluderer både innholdsstrenger og konfigurasjon:
- Innhold: artikkelbrødtekst, overskrift, utdrag
- Struktur: forfatter-IDer, bildestier, kategorislug-er, tidsstempler
Manuell oversettelse risikerer å endre en slug fra teknologi til tecnología, som ødelegger ruteringen. Strukturbevarende oversettelse håndterer kun innholdsfeltene.
Konfigurasjonsfiler for flerregional distribusjon
Distribuerer på tvers av regioner? Konfigurasjonsfiler kan trenge lokaliserte strenger mens endepunkter, legitimasjon og funksjonsflagger forblir identiske:
1{
2 "region": "eu-west",
3 "welcomeMessage": "Velkommen til vår tjeneste",
4 "endpoint": "https://api.eu.example.com",
5 "retryAttempts": 3,
6 "features": {"darkMode": true}
7}
8Oversett welcomeMessage til tysk mens endpoint, retryAttempts og features forblir urørt.
Sammenligning av oversettelsesmetoder
| Metode | Best For | Hastighet | Nøyaktighet | Strukturell sikkerhet | Kostnad |
|---|---|---|---|---|---|
| Dette verktøyet | Rask i18n-filoppretting, prototyper, interne verktøy | Øyeblikkelig | Godt for standard innhold | 100% bevart | Gratis |
| Google Oversett (kopier/lim inn) | Enkeltsetninger, ikke-teknisk tekst | Øyeblikkelig | Varierer | Ødelegger JSON | Gratis |
| Profesjonell oversettelse | Kundevendt innhold, juridiske dokumenter, markedsføring | Dager | Utmerket | Manuelt arbeid nødvendig | $0.08-0.15/ord |
| Oversettelsesadministrasjonssystemer (Lokalise, Phrase) | Bedriftsapper, samarbeidsarbeidsflyter | Timer-Dager | Utmerket med gjennomgang | Innebygd JSON-støtte | $$$+ |
Når du bør bruke dette verktøyet: Tidlige prosjektfaser, generere utkast til gjennomgang, interne applikasjoner der perfekt oversettelse ikke er kritisk.
Når du bør investere i profesjonell oversettelse: Kundevendt innhold, juridisk/compliance-tekst, merkevarebudskap, eller når kulturell nyanse betyr mer enn hastighet.
Tekniske hensyn og grensetilfeller
Hva blir oversatt (og hva blir ikke)
Verktøyet bruker typekontroll for å bestemme hva som skal oversettes:
✅ Oversatt:
- Strengverdier:
"Welcome"→"Velkommen" - Strenger i matriser:
["Hello", "World"]→["Hei", "Verden"] - Strenger på alle nestingsnivåer
❌ Ikke oversatt:
- Tall:
42,3.14,-10forblir uendret - Boolske verdier:
trueogfalseforblir som de er - Null:
nullforblirnull - Objektnøkler:
"userName"som nøkkel forblir"userName" - Tomme strenger:
""forblir""
Håndtering av spesielle tegn
Unicode og Emoji Verktøyet håndterer UTF-8 riktig, så emoji og ikke-latinske tegn fungerer fint:
1{"greeting": "👋 Hello"}
2Oversettes til norsk som:
1{"greeting": "👋 Hei"}
2Escape-sekvenser
JSON escape-sekvenser (\n, \t, \") blir bevart:
1{"message": "Line 1\nLine 2"}
2\n forblir intakt i oversettelsen.
Plassholdere
Her er et potensielt problem: Hvis strengene dine inneholder plassholdere som {username} eller %s, kan de bli oversatt eller omorganisert. I språk som arabisk eller hebraisk med høyre-mot-venstre tekst, kan plassholdernes posisjoner forskyves. Gjennomgå disse nøye.
Ytelse for store JSON-filer
Det nettbaserte verktøyet håndterer typiske i18n-filer (under 500 KB) uten problemer. For større datasett:
- 500 KB - 2 MB: Fungerer, men kan være tregt i nettleseren
- Over 2 MB: Vurder å dele opp i logiske deler (f.eks. separate filer per funksjon eller seksjon)
Nettleserens minne er den begrensende faktoren, ikke algoritmen i seg selv.
Ofte stilte spørsmål
Hvordan skiller dette seg fra å lime inn JSON i Google Translate?
Google Translate behandler JSON som vanlig tekst, noe som betyr at den prøver å oversette alt—inkludert nøkler, syntakstegn og numeriske verdier. Du vil få utdata som:
1{ "nom d'utilisateur": "Jean Dupont", "âge": "vingt-cinq" }
2Legg merke til hvordan "username" ble til "nom d'utilisateur" og tallet 25 ble til strengen "vingt-cinq"? Koden din ødelegges umiddelbart.
Dette verktøyet forstår JSON-struktur og oversetter kun strengverdier, og lar nøkler og andre datatyper være intakte.
Vil det håndtere dypt nestede JSON-er med arrays?
Ja. Den rekursive algoritmen behandler alle nivåer av nesting:
1{
2 "users": [
3 {"name": "John", "roles": ["admin", "editor"]},
4 {"name": "Jane", "roles": ["viewer"]}
5 ]
6}
7Den oversetter alle strengverdier ("John", "Jane", "admin", "editor", "viewer") mens den beholder den nøyaktige strukturen.
Hva hvis JSON-en min har både engelsk og allerede oversatt innhold?
Verktøyet oversetter alle strenger det finner, selv om noen allerede er på målspråket. Hvis du legger til nye nøkler i en eksisterende oversettingsfil, oversett kun den nye seksjonen separat, og slå deretter sammen resultatene.
Kan jeg bruke dette for i18next eller react-intl filer?
Absolutt. Utdatastrukturen matcher det disse rammeverkene forventer. En i18next JSON-fil som:
1{"translation": {"welcome": "Hello", "goodbye": "Goodbye"}}
2Blir til:
1{"translation": {"welcome": "Hola", "goodbye": "Adiós"}}
2Dine t('translation.welcome') kall fungerer uendret.
Hvor nøyaktig er automatisk oversettelse for teknisk innhold?
Det kommer an på kontekst:
- Generell UI-tekst: "Lagre", "Avbryt", "Send inn" → Vanligvis nøyaktig
- Teknisk fagspråk: "webhook", "OAuth2", "idempotent" → Kan være feiloversat eller forbli uendret
- Domenespesifikke termer: "pasientjournal" (medisinsk) vs "pasient" (tålmodighet) → Kontekst ofte oversett
For produksjonsapper, bruk dette som et første utkast, og la deretter noen gjennomgå tekniske og domenespesifikke termer.
Hvordan er det med språk med forskjellige tegnsett (kinesisk, arabisk, russisk)?
Verktøyet håndterer Unicode riktig, så alle tegnsett fungerer. En ting å være oppmerksom på: Arabisk og hebraisk er høyre-til-venstre (RTL), noe som kan påvirke hvordan plassholdere vises i oversatte strenger. JSON-strukturen forblir korrekt, men gjennomgå den oversatte teksten for lesbarhet.
Vil det bevare formateringen min (innrykk, linjeskift)?
Utdataen er gyldig JSON, men formatering (mellomrom, innrykk) kan variere fra inndataen. Hvis du trenger spesifikk formatering, kjør utdataen gjennom en JSON-formatter med dine foretrukne innstillinger.
Kan jeg oversette konfigurasjonsverdier som URL-er eller API-nøkler?
Verktøyet oversetter alle strenger, inkludert URL-er og konfigurasjonsverdier. For å forhindre dette:
- Del JSON-en din i brukervendt innhold og konfigurasjon
- Oversett kun innholdsseksjonen
- La konfigurasjon være uoversatt
Enda bedre, strukturer filene dine for å skille oversettbart innhold fra tekniske verdier fra starten av.
Er dette gratis? Er det hastighetsbegrensninger?
Det webbaserte verktøyet er gratis for typisk bruk. Svært høy volum oversettelse (hundrevis av filer per minutt) kan ramme hastighetsbegrensninger på den underliggende oversettelsestjenesten. For de fleste utviklingsarbeidsflyter vil du ikke støte på begrensninger.
Referanser og videre lesning
For dypere forståelse av JSON-struktur, internasjonaliseringsstandarder og beste praksis:
-
ECMA-404: JSON-datautvekslingsyntaks - Den offisielle JSON-spesifikasjonen av Ecma International som definerer standardformatet: ecma-international.org/publications-and-standards/standards/ecma-404/
-
MDN Web Docs: Arbeide med JSON - Mozillas omfattende guide til JSON-parsing, strengifisering og struktur: developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON
-
W3C Internasjonaliseringsaktivitet (i18n) - Standarder og beste praksis for web-internasjonalisering: w3.org/International/
-
RFC 8259: JSON-datautvekslingsformatet - IETF-spesifikasjon for JSON-syntaks og semantikk: datatracker.ietf.org/doc/html/rfc8259
Start Oversettelse av JSON-filer
Trenger du raskt å generere oversettelsefiler for din flerspråklige applikasjon? Lim inn din JSON, velg et målspråk, og få strukturbevarende oversettelser umiddelbart. Fungerer med i18next, react-intl, vue-i18n, og alle rammeverk som forventer konsistent JSON-struktur på tvers av språk.
Begynn oversettelsen nå: