Traduci un file JSON
Invii en.json e ricevi fr.json con le stesse chiavi, lo stesso annidamento e solo il testo tradotto; un valore come 3 o true torna intatto. Le variabili come {{username}} restano al loro posto e il nuovo file entra subito nella tua app.
Esegui online
Esegui questo sui nostri server con il tuo account. Gli strumenti gratuiti girano nel tuo browser; questo viene addebitato sul tuo saldo KIT al prezzo indicato sopra.
i valori sì, le chiavi no
Perché le chiavi non devono cambiare
Un file di lingua è un contratto: le chiavi sono il vocabolario del codice, i valori sono ciò che legge una persona. Capita di esportare en.json, passarlo a un traduttore e riaverlo tre giorni dopo con una chiave annidata rinominata o un elenco riordinato perché “suonava meglio”: l’app si blocca sulla chiave mancante e nessuno se ne accorge finché una schermata non appare vuota agli utenti. Qui le chiavi sono identificatori intoccabili e solo i testi vengono tradotti: la struttura che invii è esattamente quella che ricevi.
Cosa si traduce e cosa resta com’è
I testi vengono tradotti e gli oggetti annidati vengono percorsi fino in fondo, così un file con sezioni per pulsanti, errori e messaggi di benvenuto viene tradotto in ogni ramo senza appiattire la struttura. Numeri, valori true e false, valori vuoti ed elenchi senza testo restano invariati, perché un’attesa di 3000 millisecondi vale lo stesso in ogni lingua. Le variabili come {{username}} o %s restano al loro posto e cambia lingua solo la frase intorno: è proprio l’errore tipico della traduzione a mano, che rompe la schermata solo quando viene mostrata.
Le chiavi non si toccano
In un file di localizzazione la chiave ("button.save") è un identificatore che il codice cerca per nome: se cambia, l’app si rompe. Qui viene tradotto solo il valore ("Salva" → "Save"), mentre chiavi, annidamenti e ordine restano identici. Il file che riottieni ha la stessa forma dell’originale: lo confronti a colpo d’occhio e non devi rimettere a posto niente.
Segnaposto e variabili al sicuro
I testi delle app sono pieni di segnaposto come {count} messaggi o %s, e a volte di frammenti HTML per il grassetto. Questi elementi restano intatti nella nuova lingua e finiscono nella posizione giusta della frase: se in italiano scrivi “Hai {count} nuovi messaggi”, in inglese ottieni “You have {count} new messages”, con la variabile al posto corretto. Le stringhe con plurali vengono gestite come tali, non tradotte a caso.
Un file, tutte le lingue
Parti dal tuo it.json e generi en.json, de.json, fr.json una lingua alla volta, tenendo le chiavi allineate tra i file. Il costo si conta a chiave tradotta, quindi sai già in anticipo quanto ti costa un file di 400 stringhe.
Casi d'uso
L’app da pubblicare in inglese
Alessandro Ferrari sta per pubblicare un’app gestionale e ha it.json con 300 stringhe. Genera en.json in un colpo: le chiavi restano quelle che il codice si aspetta, cambia solo il testo mostrato.
Le nuove stringhe di ogni rilascio
A ogni versione Luca Esposito aggiunge una manciata di chiavi nuove. Traduce solo il blocco aggiornato e lo reincolla nel file della lingua, senza rifare tutta la localizzazione.
Domande frequenti
Cosa succede ai segnaposto come {name} o %s?
Restano intatti e vengono spostati nella posizione giusta della frase tradotta. Non vengono tradotti né cancellati, così le variabili continuano a funzionare nell’app.
Posso tradurre solo alcune chiavi?
Sì: puoi passare solo il blocco di stringhe nuove o modificate e reincollarlo nel file della lingua di destinazione, senza rielaborare l’intero file.
Come viene calcolato il prezzo?
Un file da 200 stringhe costa poco più di due dollari e mezzo, e sai il conto prima di partire perché dipende dal numero di chiavi.
C’è un limite di dimensione del file?
Un file di localizzazione molto grande va diviso in più blocchi e tradotto a pezzi, poi ricomposto.
Anche i numeri e i valori true o false vengono tradotti?
No. Numeri, valori true e false, valori vuoti ed elenchi senza testo passano invariati: un contatore pari a 3 torna con 3. Vengono tradotti solo i testi, mentre le chiavi restano identiche in ogni lingua.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/translate/json \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"json":{"greeting":"Hola"},"target_lang":"en"}'const res = await fetch("https://api.kit.forhosting.com/translate/json", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"json": {
"greeting": "Hola"
},
"target_lang": "en"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/translate/json",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"json": {
"greeting": "Hola"
},
"target_lang": "en"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/translate/json", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"json":{"greeting":"Hola"},"target_lang":"en"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"json":{"greeting":"Hola"},"target_lang":"en"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/translate/json", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"json": {
"greeting": "Hola"
},
"target_lang": "en"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "translate.json",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_tokens | 20000 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
422 | task_failed | L'attività non è andata a buon fine: non ti viene addebitato nulla. |
Note tecniche
Se localizzi un’app o un sito, i testi stanno in un file JSON di coppie chiave-valore. Questo strumento traduce solo i valori — il testo che l’utente vede — e lascia intatte le chiavi e i segnaposto. Carichi il file, scegli la lingua e riottieni un JSON valido, pronto per la produzione.
Un file, tutte le lingue
Il limite pratico è di circa 20.000 token per richiesta: un file molto grande si divide in blocchi.
Casi di integrazione
Il sito in tre lingue
Rossi & Figli S.r.l. tiene i testi del sito in file JSON. Per aprire ai mercati tedesco e francese traduce i valori mantenendo i segnaposto dei prezzi e delle quantità intatti.
Domande tecniche
Il file che riottengo è ancora JSON valido?
Sì: la struttura, le virgolette, gli annidamenti e la formattazione restano corretti. Puoi metterlo in produzione o passarlo allo strumento di validazione JSON per una controprova.