Traduire

Traduire les fichiers de locale i18next et JSON

Le JSON de locale est imbriqué, et ses chaînes contiennent des variables comme {{name}}. Un outil qui ne voit que du texte peut renommer une clé, aplatir l'imbrication ou traduire la variable. KAERIS renvoie le fichier dans la même structure, avec chaque variable à sa place.

KAERIS a traduit cette page et vérifié chaque ligne en la retraduisant. Un locuteur natif ne l'a pas encore revue. Original anglais

Comment un fichier JSON de locale est construit

Un fichier par langue (en.json, de.json), ou un par espace de noms (locales/en/common.json). Les clés sont le contrat avec votre code, donc seules les valeurs sont traduites. i18next écrit les formes plurielles comme des clés séparées (inbox_one, inbox_other) ; next-intl, Vue I18n et FormatJS les placent dans une seule chaîne ICU.

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

Ce à quoi il faut faire attention dans les traductions JSON

Une exécution réelle, avant et après

Une exécution réelle : notre fichier de test de 97 chaînes, allemand, 26 octobre 2026, réduit à quatre clés. La dernière ligne montre une perte que la vérification a détectée lors de cette exécution.

Avanten.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}}"
  }
}
Aprèsde.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}}"
  }
}
Vérification gratuite de ce fichier/check
error ph.nesting: lost placeholder $t(nav.cart)

Ce que KAERIS en fait

Exécutez-le en trois étapes

  1. Installer le CLI

    Exécutez pip install kaeris. Aucun compte n'est nécessaire pour les limites gratuites.

  2. Traduire le fichier

    Exécutez kaeris translate en.json --langs de,ja --verify. Les fichiers de.json et ja.json apparaissent à côté de la source.

  3. Vérifier le résultat

    Exécutez kaeris check --source en.json --langs de,ja. Il se termine avec le code 1 si une variable, un nombre ou une clé est incorrect, afin que la CI puisse arrêter la fusion.

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

Questions

Quels formats JSON sont compatibles ?

Fichiers clé-valeur plats et imbriqués, tels qu'utilisés par i18next, Vue I18n, next-intl et FormatJS. Le niveau supérieur doit être un objet, comme {"greeting": "Hello"}. Les tableaux de chaînes sont également traduits.

Conserve-t-il les références {{count}} et $t(…) ?

Les variables et les références sont comparées à la source après traduction. Une ligne qui en a perdu une est signalée ; l'exemple ci-dessus montre une exécution réelle où $t(nav.cart) a été omis et la vérification l'a détecté.

Est-ce gratuit ?

Oui, sans compte : 10 000 caractères par fichier et jusqu'à 8 langues par exécution. Une clé API gratuite augmente la limite de fichiers à 50 000 caractères. La licence à vie est de 79 $ une fois, sur votre propre clé OpenRouter ; les plans mensuels commencent à 19 $. Tarifs

Puis-je l'exécuter depuis le terminal ou en CI ?

Oui. pip install kaeris, puis kaeris translate en.json --langs de,ja. Le GitHub Action exécute la même traduction dans une pull request. Docs CLI · GitHub Action

Continuer

Référence CLI · Référence Check · Traduire dans le navigateur · Vérification gratuite · Convertir les formats · Localisation fictive

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