Traduci

Traduci file di localizzazione i18next e JSON

Il JSON di localizzazione è nidificato e le sue stringhe contengono variabili come {{name}}. Uno strumento che vede solo testo può rinominare una chiave, appiattire il nidificamento o tradurre la variabile. KAERIS restituisce il file nella stessa forma, con ogni variabile al suo posto.

KAERIS ha tradotto questa pagina e controllato ogni riga ritraducendola. Un madrelingua non l'ha ancora revisionata. Originale in inglese

Come è costruito un file JSON di localizzazione

Un file per lingua (en.json, de.json), o uno per namespace (locales/en/common.json). Le chiavi sono il contratto con il tuo codice, quindi solo i valori vengono tradotti. i18next scrive le forme plurali come chiavi separate (inbox_one, inbox_other); next-intl, Vue I18n e FormatJS le inseriscono in una singola stringa ICU.

File sorgenteen.json
{
  "nav": { "greeting": "Welcome back, {{name}}!" },
  "inbox_one": "{{count}} new message",
  "inbox_other": "{{count}} new messages"
}

Cosa osservare nelle traduzioni JSON

Una vera esecuzione, prima e dopo

Una vera esecuzione: il nostro file di test di 97 stringhe, tedesco, 26 ottobre 2026, ridotto a quattro chiavi. L'ultima riga mostra una perdita che il controllo ha rilevato in quella esecuzione.

Primaen.json
{
  "ph": {
    "mustache": "Hi {{firstName}}, your order {{orderId}} has shipped.",
    "reactTrans": "By continuing you accept our <0>Terms</0> and <1>Privacy Policy</1>.",
    "nesting": "$t(nav.cart) has been updated"
  },
  "icu": {
    "copiesLeft": "{count, plural, =0 {Sold out} one {Only # copy left} other {Only # copies left}}"
  }
}
Dopode.json
{
  "ph": {
    "mustache": "Hallo {{firstName}}, Ihre Bestellung {{orderId}} wurde versendet.",
    "reactTrans": "Durch die fortgesetzte Nutzung stimmen Sie unseren <0>Nutzungsbedingungen</0> und <1>Datenschutzrichtlinien</1> zu.",
    "nesting": "Der Warenkorb wurde aktualisiert"
  },
  "icu": {
    "copiesLeft": "{count, plural, =0 {Ausverkauft} one {Nur noch # Exemplar} other {Nur noch # Exemplare}}"
  }
}
Controllo gratuito su questo file/check
error ph.nesting: lost placeholder $t(nav.cart)

Cosa fa KAERIS con esso

Eseguilo in tre passaggi

  1. Installa la CLI

    Esegui pip install kaeris. Non è necessario un account per i limiti gratuiti.

  2. Traduci il file

    Esegui kaeris translate en.json --langs de,ja --verify. I file de.json e ja.json appaiono accanto al sorgente.

  3. Controlla il risultato

    Esegui kaeris check --source en.json --langs de,ja. Esce con codice 1 se una variabile, un numero o una chiave è errata, così la CI può fermare il merge.

pip install kaeris
kaeris init --preset i18next
kaeris translate en.json --langs de,ja --verify
kaeris check --source en.json --langs de,ja

Domande

Quali layout JSON funzionano?

File chiave-valore piatti e nidificati, come usati da i18next, Vue I18n, next-intl e FormatJS. Il livello superiore deve essere un oggetto, come {"greeting": "Hello"}. Anche gli array di stringhe vengono tradotti.

Mantiene i riferimenti {{count}} e $t(…)?

Variabili e riferimenti vengono confrontati con il sorgente dopo la traduzione. Una riga che ne ha persa una viene segnalata; l'esempio sopra mostra una vera esecuzione in cui $t(nav.cart) è stato perso e il controllo lo ha rilevato.

È gratuito?

Sì, senza account: 10.000 caratteri per file e fino a 8 lingue per esecuzione. Una chiave API gratuita aumenta il limite di file a 50.000 caratteri. A vita costa $79 una tantum, sulla tua chiave OpenRouter; i piani mensili partono da $19. Prezzi

Posso eseguirlo dal terminale o in CI?

Sì. pip install kaeris, poi kaeris translate en.json --langs de,ja. La GitHub Action esegue la stessa traduzione in una pull request. Documentazione CLI · GitHub Action

Continua

Riferimento CLI · Riferimento Check · Traduci nel browser · Controllo gratuito · Converti formati · Pseudo-localizzazione

Altri formati: YAML · .po · ARB · XLIFF · .strings · .xcstrings · .properties · .resx · CSV · Markdown · Fluent · Android XML