Översätt JSON-lokalfiler utan att röra dina nycklar.
Nycklar förblir nycklar. Nästling förblir intakt. Endast strängvärden översätts — och bara strängvärden. Alla andra egenskapstyper återkommer exakt som skickats.
Standardverktyg för översättning förstår inte JSON.
Generiska översättnings-API:er ser din JSON som en textmassa. De översätter nyckelnamn tillsammans med värden. De plattar ut nästlade objekt. De sammanfogar strängar som de inte borde. Det som kommer tillbaka är strukturellt trasig JSON som kräver manuell korrigering innan den kan användas. Om du underhåller lokalfiler för en produktionsapplikation vet du att det att mata in dem i ett standardöversättnings-API skapar mer arbete än det sparar.
Problemet går djupare än bara nyckelnamn. Standardöversättnings-API:er förstör också interpolationsvariabler. En sträng som "Hello {name}, you have {count} messages" kommer tillbaka med variabelnamnen översatta — "Hola {nombre}, tienes {cuenta} mensajes" — vilket bryter varje runtime som förväntade sig det ursprungliga variabelnamnet. Timmar av felsökning följer.
För team som underhåller lokalfiler på flera språk för en produktionsapplikation är detta inte en teoretisk oro. Det har redan hänt. Frågan är hur lång den manuella reparationsprocessen tar varje gång.
PolyLingo traverserar din JSON innan översättning.
PolyLingo förstår JSON-strukturen. Det traverserar rekursivt ditt objekt, identifierar strängvärden som innehåller översättbar text och skickar endast dessa värden till översättningsmodellen. Nyckelnamn ändras aldrig. Nummer, booleska värden, null och icke-strängstyper passerar oförändrade. Resultatet är giltig JSON med identisk struktur — bara med översatta strängvärden.
Interpolationsvariabler — {name}, {{count}}, %s och liknande mönster — identifieras och bevaras genom hela översättningsprocessen. De ersätts med platshållare före översättning och återställs i sin ursprungliga form i utmatningen. Översättningsmodellen ser dem aldrig som översättbar text.
Arrayer hanteras korrekt: varje strängelement översätts, medan numeriska index och arraystruktur förblir oförändrade. Blandade arrayer som innehåller både strängar och icke-strängar (nummer, objekt) traverseras korrekt med icke-strängstyper som passerar oförändrade.
{
"nav_home": "Home",
"nav_pricing": "Pricing",
"hero_title": "Grow your audience globally",
"hero_cta": "Get started for free",
"footer_rights": "All rights reserved."
}{
"nav_home": "Accueil",
"nav_pricing": "Tarifs",
"hero_title": "Développez votre audience mondiale",
"hero_cta": "Commencer gratuitement",
"footer_rights": "Tous droits réservés."
}{
"nav": {
"home": "Home",
"pricing": "Pricing",
"blog": "Blog"
},
"hero": {
"title": "Grow your audience globally",
"subtitle": "Translate in seconds.",
"cta": "Get started for free"
},
"errors": {
"notFound": "Page not found",
"serverError": "Something went wrong"
}
}{
"nav": {
"home": "Inicio",
"pricing": "Precios",
"blog": "Blog"
},
"hero": {
"title": "Expande tu audiencia globalmente",
"subtitle": "Traduce en segundos.",
"cta": "Comienza gratis"
},
"errors": {
"notFound": "Página no encontrada",
"serverError": "Algo salió mal"
}
}curl -X POST https://api.usepolylingo.com/v1/translate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "{\"nav_home\": \"Home\", \"hero_title\": \"Get started\"}",
"format": "json",
"targets": ["es", "fr", "de", "ja", "zh"],
"model": "standard"
}'
# Response:
# {
# "translations": {
# "es": "{\"nav_home\": \"Inicio\", \"hero_title\": \"Empezar\"}",
# "fr": "{\"nav_home\": \"Accueil\", \"hero_title\": \"Commencer\"}",
# ...
# }
# }Vad PolyLingo garanterar för varje JSON-översättning
- ✓Nyckelnamn ändras aldrig
- ✓Nästlade objekt och arrayer hanteras rekursivt
- ✓Nummer, booleska värden, null passerar oförändrade
- ✓Alla 36 språk i en enda förfrågan
- ✓Automatiskt identifierat som JSON — ingen formatflagga krävs
- ✓Fungerar med platta och djupt nästlade lokalfiler
- ✓Interpolationsvariabler ({name}, {{count}}, %s) bevaras exakt
- ✓Utmatningen är giltig JSON — kan tolkas utan modifiering
Tre steg till översatta lokalfiler
Klistra in din JSON eller anropa API:et
Använd den kodfria översättaren för engångsöversättningar: klistra in din JSON, välj dina språk, ladda ner de översatta filerna. För automatisering, anropa POST /v1/translate med ditt JSON-innehåll och målspråkskoder.
Ta emot alla språk i ett svar
API:et returnerar ett JSON-objekt med en post per målspråk, var och en innehållande den fullständigt översatta lokalfiler med identisk struktur. Inga anrop per språk. Ingen loopning. En förfrågan för alla utdata.
Lägg utdata i din messages-katalog
Skriv varje översatt fil till messages/es.json, messages/fr.json, messages/de.json — eller där din i18n-bibliotek förväntar sig dem. Strukturen är identisk med din källfil, så ingen ytterligare bearbetning behövs.
Där JSON-översättning är viktigast
App i18n med next-intl eller i18next
Översätt dina messages/*.json eller locales/*.json-filer direkt. Nycklar förblir intakta, nästling bevaras och interpolationsvariabler passerar oförändrade. Lägg filerna i din messages-katalog och distribuera.
CMS-innehållsexport
Headless CMS-plattformar exporterar ofta strukturerat innehåll som JSON. PolyLingo översätter strängvärden samtidigt som fältnamn, nästlade innehållstyper och icke-strängvärden som datum, booleska värden och ID:n bevaras.
API-svar och konfigurationsfiler
Vilken JSON-struktur som helst med översättbara strängvärden — produktbeskrivningar, notifikationsmallar, in-app-texter som serveras via API — kan översättas utan att ändra strukturen som din applikation är beroende av.
Vanliga frågor om JSON-översättning
Bevaras interpolationsvariabler som {name} eller {{count}}?
Ja. PolyLingo identifierar vanliga interpolationsmönster inklusive {variable}, {{variable}}, %(variable)s och %s före översättning. Dessa ersätts med stabila platshållare, den omgivande texten översätts och de ursprungliga variabelnamnen återställs i utmatningen. Översättningsmodellen ser aldrig variabelnamnen som översättbart innehåll.
Vad händer med icke-strängvärden — nummer, booleska värden, null?
Icke-strängvärden passerar helt oförändrade. PolyLingo översätter endast strängvärden som innehåller naturligt språk. Nummer, booleska värden, null och arrayer av icke-strängar bevaras exakt som de förekommer i källan.
Kan PolyLingo hantera djupt nästlade JSON-strukturer?
Ja. PolyLingo traverserar rekursivt objekt på vilken nästlingsnivå som helst. Översättningen gäller alla strängvärden i hela strukturen, oavsett hur djupt de är nästlade.
Vad händer om vissa nycklar innehåller icke-översättbart innehåll som slugs eller koder?
PolyLingo översätter alla strängvärden som standard. Om du har strängfält som inte ska översättas — slugs, språkkoder, tekniska identifierare — rekommenderas att antingen exkludera dem från JSON:en du skickar, eller använda det explicita formatparametern och specificera fält att hoppa över (kommer snart). För de flesta lokalfiler är alla strängvärden avsedda att översättas.
Fungerar det med JSON5 eller JSONC (JSON med kommentarer)?
För närvarande bearbetar PolyLingo standard-JSON. JSON5 och JSONC (med kommentarer) bör förbehandlas för att ta bort kommentarer och konverteras till standard-JSON innan de skickas. Detta är ett vanligt steg i byggpipelines och lägger till minimal overhead.
Hur många språk kan jag rikta in mig på i en förfrågan?
Upp till alla 36 stödda språk i en enda förfrågan. Svaret innehåller ett översatt JSON-objekt per språkkod. Hastighetsbegränsningar varierar per plan — gratisnivån tillåter 10 förfrågningar per minut, medan Growth- och Scale-planerna tillåter 200–600 förfrågningar per minut.
Relaterade guider
Lägg till flerspråkighet i Next.js
Hur PolyLingo passar in i en next-intl- eller next-i18next-arbetsflöde.
Översätt Markdown utan att förstöra formateringen
För innehåll som finns i .md-filer istället för JSON.
Flerspråkighet för headless CMS
Översättning av Sanity-, Contentful- och Webflow-innehåll på CMS-nivå.
Översätt dina lokalfiler på sekunder.
Klistra in din JSON, välj dina språk, få tillbaka giltiga lokalfiler för varje målspråk.
Börja översätta gratisKlistra in din lokala JSON och se resultatet — gratis, inget konto krävs.