Traduire un fichier JSON i18n sans toucher aux clés, variables ni pluriels
Déposez en.json (ou plusieurs fichiers d'espaces de noms) et récupérez es.json avec les mêmes clés imbriquées, le même ordre et la même indentation. Seules les valeurs sont traduites, et chaque {name}, {{count}} et pluriel ICU est vérifié dans chaque chaîne. Les premières chaînes sont gratuites sans inscription ; la tâche entière, jusqu'à 5,000 chaînes, coûte $5, en paiement unique.
- Les clés et leur imbrication ne sont jamais traduites ; les tableaux, nombres et booléens restent tels quels
- Placeholders vérifiés : {name}, {{count}}, %s, :attribute, $t(key), @:key
- Les pluriels ICU conservent leur structure et reçoivent les catégories dont la langue cible a besoin
- ARB Flutter : @metadata conservé et utilisé comme contexte, @@locale mis à jour
- Fichier nommé d'après la langue : en.json devient es.json, app_en.arb devient app_es.arb
{
"home.greeting": "Good morning, {name}Buenos días, {name}",
"home.nearby": "{count, plural, =0 {No trails near you yet} one {# trail near you} other {# trails near you}}{count, plural, =0 {Aún no hay rutas cerca de ti} one {# ruta cerca de ti} other {# rutas cerca de ti}}",
"trail.offline_done": "<b>{name}</b> is saved on this phone. You can use the map without a signal.<b>{name}</b> está guardado en este teléfono. Puedes usar el mapa sin señal.",
"trail.share_text": "I just finished {trail} with Trailbook! {km} km and {meters} m up. 🥾¡Acabo de terminar {trail} con Trailbook! {km} km y {meters} m de subida. 🥾",
"saved.empty": "You have not saved any trails yet.\nTap the heart on a trail to keep it here.Aún no has guardado ninguna ruta.\nToca el corazón en una ruta para guardarla aquí."
}
Jaune: variables et syntaxe de pluriel ICU, vérifiées dans chaque chaîne. Turquoise: balises, séquences d'échappement et emoji, conservés tels quels.
Mêmes clés. Mêmes variables. Nouvelle langue.
Seules les valeurs changent. Le fichier revient avec la même imbrication et le même ordre, sous le nom es.json, et toute chaîne qui perd une variable est redemandée avant de pouvoir atteindre votre build.
Appli de démonstration conçue pour cette page ; les chaînes en espagnol sont le résultat réel de l'outil, à partir d'un fichier de 85 chaînes.
Ce qui est traduit, et ce qui ne l'est pas
Chaque valeur textuelle est envoyée à la traduction avec sa clé complète comme contexte : « settings.save » et « cart.save » peuvent ainsi donner des mots différents. Les clés ne sont jamais envoyées. Les valeurs qui ne sont pas du texte, comme une URL, une adresse e-mail ou une valeur composée uniquement de placeholders tels que « {count} », restent telles quelles.
Les balises de texte enrichi utilisées par react-intl et les bibliothèques similaires, comme <b>{name}</b> ou <link>Annuler</link>, sont remplacées par des marqueurs avant la traduction, puis remises en place ensuite. Les séquences littérales \n et les emoji doivent aussi être conservés ; une chaîne qui en perd un est traduite à nouveau, et si elle échoue deux fois, l'anglais reste en place et la clé vous est signalée dans une liste.
Pluriels
Un message ICU tel que {count, plural, one {# trail} other {# trails}} est traduit comme une seule chaîne. Le traducteur reçoit les catégories de pluriel utilisées par la langue cible, par exemple one, few, many et other pour le russe ou le polonais, et le résultat est vérifié pour que le nom de la variable et le mot-clé plural soient conservés. Les fichiers i18next qui utilisent des clés séparées comme trail_one et trail_other sont traduits clé par clé ; les clés manquantes pour la langue cible (trail_few, trail_many) ne sont pas ajoutées.
Le fonctionnement de l'outil, son coût et le traitement de vos fichiers sont détaillés sur la page Traduire des fichiers de localisation ; les prix de chaque outil figurent sur la page tarifs.
Dernière mise à jour :
Questions et réponses
Ma mise en forme sera-t-elle conservée ?
Oui. L'indentation (deux espaces, quatre espaces ou tabulations), l'ordre des clés, l'espace après les deux-points et le saut de ligne final sont repris de votre fichier. Un fichier minifié reste sur une seule ligne.
Puis-je déposer plusieurs fichiers d'espaces de noms à la fois ?
Oui, jusqu'à 20 fichiers dans une même tâche, par exemple common.json, cart.json et errors.json. Ils se téléchargent ensemble dans un seul ZIP.
Et les chaînes qui ne doivent pas être traduites ?
Indiquez les noms de produits et de marques sous « Ne jamais traduire » ; chaque chaîne qui en contient un est vérifiée pour qu'il soit conservé. Les valeurs qui ne sont qu'une URL, une adresse e-mail ou des placeholders sont ignorées automatiquement.
Combien ça coûte ?
Les premières chaînes sont gratuites. La tâche entière, jusqu'à 5,000 chaînes, coûte $5, en paiement unique. Illimité couvre jusqu'à 15,000 chaînes par tâche. Les petites tâches font exception : une tâche de moins de 300 chaînes est entièrement gratuite, téléchargements compris.