Traducteur JSON qui Préserve la Structure | Outil i18n Gratuit
Traducteur JSON gratuit qui maintient votre structure intacte. Traduisez des fichiers i18n, des réponses API et des JSON imbriqués tout en préservant les clés, les types de données et le formatage. Parfait pour i18next et les applications multilingues.
Traducteur de Structure JSON
Cet outil traduit le contenu des objets JSON tout en préservant leur structure. Collez votre JSON dans le panneau de gauche, sélectionnez une langue cible et consultez la sortie traduite à droite.
La sortie traduite apparaîtra ici...
Comment Utiliser
- Collez votre objet JSON dans le champ JSON Source.
- Sélectionnez votre langue cible dans le menu déroulant.
- Le JSON traduit apparaîtra automatiquement dans le panneau de droite.
- Cliquez sur le bouton Copier pour copier le JSON traduit dans votre presse-papiers.
Documentation
Qu'est-ce qu'un Traducteur Préservant la Structure JSON ?
Avez-vous déjà essayé de copier du JSON dans Google Translate et vous êtes retrouvé avec des clés cassées, des crochets manquants ou une syntaxe déformée ? C'est exactement le problème que cet outil résout.
Un traducteur préservant la structure JSON convertit les valeurs de chaîne à l'intérieur de vos objets JSON dans une autre langue tout en laissant tout le reste intact — les clés restent les mêmes, les nombres demeurent des nombres, les booléens restent booléens, et votre structure imbriquée ne s'effondre pas.
Voici ce qui le différencie des outils de traduction classiques : lorsque vous traduisez un fichier i18n typique avec plus de 50 clés imbriquées, vous avez besoin que la structure reste identique afin que votre code puisse toujours référencer user.profile.displayName en espagnol, français ou japonais. Cassez cette structure, et vous déboguez pendant des heures.
Cet outil gère automatiquement la traversée récursive, identifiant quelles chaînes nécessitent une traduction et quels éléments (comme les clés API, les valeurs de configuration ou les identifiants numériques) doivent rester exactement tels quels.
Comment fonctionne la préservation de la structure JSON
Pourquoi la préservation de la structure est importante
Lorsque vous travaillez avec la traduction JSON, vous êtes généralement confronté à l'un de ces scénarios :
- Fichiers i18n où votre application s'attend à ce que
en.jsonetfr.jsonaient des clés identiques - Réponses API qui nécessitent une structure cohérente dans toutes les langues pour l'analyse côté client
- Fichiers de configuration où la modification d'un nom de clé casse entièrement votre application
- Exports de base de données où les relations dépendent de noms de champs spécifiques
Le défi : JSON n'est pas simplement du texte. C'est une donnée structurée avec un schéma sur lequel votre code s'appuie. Changez "userName" en "nombreUsuario" pendant la traduction, et votre application génère une erreur undefined.
Comment fonctionne le processus de traduction
Voici ce qui se passe sous le capot lors de la traduction JSON :
1. Analyse et Validation L'outil valide d'abord la syntaxe JSON. Si vous manquez une virgule ou avez un crochet supplémentaire, vous obtiendrez un message d'erreur clair avant le début de toute traduction — vous évitant ainsi une sortie corrompue.
2. Traversée Récursive En partant de la racine, l'algorithme parcourt chaque nœud de l'arbre JSON. Pour chaque élément, il vérifie le type de données :
- Chaîne ? Mise en file d'attente pour traduction
- Nombre, booléen, null ? Ignorer complètement
- Objet ou tableau ? Récursion à l'intérieur
3. Traduction Sécurisée par Type
Seules les valeurs de chaîne sont envoyées à l'API de traduction. Votre "quantity": 42 reste 42, pas "quarante-deux". Votre "isActive": true reste true, pas "vrai".
4. Préservation des Clés
Toutes les clés d'objet restent dans leur langue originale. Ceci est crucial car translations.header.welcomeMessage doit être le même chemin dans chaque fichier de langue.
5. Réassemblage de la Structure Les chaînes traduites sont réinsérées exactement aux mêmes positions, en conservant tous les niveaux d'imbrication, indices de tableau et hiérarchies d'objets.
Un piège courant : Certains développeurs essaient de JSON.stringify() l'objet, de traduire la chaîne entière, puis de l'analyser à nouveau. Cela casse car le traducteur modifie les clés, les crochets et la syntaxe. L'approche récursive évite complètement cela.
Utilisation du Traducteur de Structure JSON
Guide Étape par Étape
1. Collez Votre JSON Copiez votre objet JSON et collez-le dans le panneau de gauche. L'outil gère tous les JSON valides—qu'il s'agisse d'un objet simple avec 5 clés ou d'une structure profondément imbriquée avec des tableaux et plusieurs niveaux.
2. Sélectionnez la Langue Cible Choisissez dans la liste déroulante : Espagnol, Français, Allemand, Italien, Portugais, Chinois, Japonais, Coréen, Russe, et plus encore. Si vous traduisez pour un projet i18next, utilisez le code de langue attendu par votre framework.
3. Obtenez la Traduction Instantanée La traduction apparaît automatiquement dans le panneau de droite. Pas besoin de bouton "Traduire"—le traitement se fait dès que vous avez un JSON valide et une langue sélectionnée.
4. Copiez et Utilisez Cliquez sur le bouton "Copier" pour récupérer le JSON traduit. Il est prêt à être collé directement dans votre projet—aucun nettoyage nécessaire.
5. Effacez pour la Prochaine Traduction Cliquez sur "Tout Effacer" quand vous êtes prêt à traduire un autre fichier. L'outil réinitialise instantanément les deux panneaux.
Problèmes Courants et Solutions
Erreur "Format JSON Invalide" Vous verrez ceci en cas de problème de syntaxe. Les causes courantes :
- Virgule manquante entre les paires clé-valeur
- Virgule de fin après le dernier élément (valide en JavaScript, pas en JSON)
- Guillemets simples au lieu de guillemets doubles
- Caractères spéciaux non échappés dans les chaînes
Correction rapide : Validez votre JSON avec un outil comme JSONLint avant de coller.
Échec de Traduction Silencieux Si le panneau de sortie reste vide :
- Vérifiez votre connexion internet—la traduction nécessite un accès API
- Assurez-vous d'avoir sélectionné une langue cible
- Essayez avec un extrait JSON plus petit pour isoler le problème
Résultats Inattendus dans la Traduction La traduction automatique fonctionne bien pour les phrases standard mais a des difficultés avec :
- Le jargon technique ou les termes spécifiques à un domaine
- Les noms de marque (qui doivent souvent rester non traduits)
- La syntaxe des espaces réservés comme
{{username}}ou%s
Pour les applications de production, utilisez cet outil comme première étape, puis faites relire le contenu spécifique au domaine ou destiné aux clients par un locuteur natif.
Conseils Pro pour de Meilleurs Résultats
Séparez les Chaînes Techniques Si votre JSON mélange du texte destiné aux utilisateurs et des identifiants techniques, envisagez de les séparer. Par exemple :
1{
2 "display": {"welcome": "Welcom back"},
3 "config": {"apiKey": "abc123", "endpoint": "https://api.example.com"}
4}
5Traduisez l'objet display séparément pour éviter de traiter accidentellement les valeurs de config.
Utilisez du Contexte dans Vos Chaînes "Soumettre" pourrait se traduire différemment selon le contexte. "Soumettre un formulaire" ou "Soumettre un paiement" donne aux traducteurs (humains ou machines) un meilleur contexte pour une traduction précise.
Testez avec des Données Réelles Avant de traduire l'intégralité de votre fichier i18n avec 500+ clés, testez avec un petit échantillon incluant tous vos types de données—chaînes, nombres, objets imbriqués, tableaux.
Exemples de Code
Traduction de JSON avec JavaScript
1// Exemple de mise en œuvre d'une fonctionnalité similaire en JavaScript
2function translateJsonStructure(jsonObj, targetLanguage) {
3 // Fonction d'assistance pour traduire une chaîne
4 function translateString(str, lang) {
5 // Dans une implémentation réelle, cela appellerait une API de traduction
6 return `[${lang}] ${str}`;
7 }
8
9 // Fonction récursive pour parcourir et traduire JSON
10 function processNode(node) {
11 if (node === null) return null;
12
13 if (typeof node === 'string') {
14 return translateString(node, targetLanguage);
15 }
16
17 if (Array.isArray(node)) {
18 return node.map(item => processNode(item));
19 }
20
21 if (typeof node === 'object') {
22 const result = {};
23 for (const key in node) {
24 result[key] = processNode(node[key]);
25 }
26 return result;
27 }
28
29 // Retourne les nombres, booléens, etc. sans changement
30 return node;
31 }
32
33 return processNode(jsonObj);
34}
35
36// Exemple d'utilisation
37const sourceJson = {
38 "product": {
39 "name": "Écouteurs sans fil",
40 "description": "Écouteurs sans fil de haute qualité avec réduction de bruit",
41 "features": ["Bluetooth 5.0", "Autonomie de 40 heures", "Design pliable"],
42 "price": 99.99,
43 "inStock": true
44 }
45};
46
47const translatedJson = translateJsonStructure(sourceJson, "es");
48console.log(JSON.stringify(translatedJson, null, 2));
49Traduction de JSON avec Python
1import json
2
3def translate_json_structure(json_obj, target_language):
4 """
5 Traduit les valeurs de chaîne dans un objet JSON tout en préservant la structure.
6
7 Args:
8 json_obj: L'objet JSON analysé
9 target_language: Code de langue cible (par exemple, 'es', 'fr')
10
11 Returns:
12 Objet JSON traduit avec structure préservée
13 """
14 def translate_string(text, lang):
15 # Dans une implémentation réelle, cela appellerait une API de traduction
16 return f"[{lang}] {text}"
17
18 def process_node(node):
19 if node is None:
20 return None
21
22 if isinstance(node, str):
23 return translate_string(node, target_language)
24
25 if isinstance(node, list):
26 return [process_node(item) for item in node]
27
28 if isinstance(node, dict):
29 result = {}
30 for key, value in node.items():
31 result[key] = process_node(value)
32 return result
33
34 # Retourne les nombres, booléens, etc. sans changement
35 return node
36
37 return process_node(json_obj)
38
39# Exemple d'utilisation
40source_json = {
41 "user": {
42 "name": "Jane Smith",
43 "bio": "Développeuse logicielle et contributrice open source",
44 "skills": ["JavaScript", "Python", "React"],
45 "active": True,
46 "followers": 245
47 }
48}
49
50translated_json = translate_json_structure(source_json, "fr")
51print(json.dumps(translated_json, indent=2))
52Traduction de JSON avec PHP
1<?php
2/**
3 * Traduit la structure JSON tout en préservant la structure originale
4 *
5 * @param mixed $jsonObj L'objet JSON analysé
6 * @param string $targetLanguage Le code de langue cible
7 * @return mixed L'objet JSON traduit
8 */
9function translateJsonStructure($jsonObj, $targetLanguage) {
10 // Fonction d'assistance pour traduire une chaîne
11 function translateString($text, $lang) {
12 // Dans une implémentation réelle, cela appellerait une API de traduction
13 return "[$lang] $text";
14 }
15
16 // Fonction récursive pour traiter chaque nœud
17 function processNode($node, $lang) {
18 if ($node === null) {
19 return null;
20 }
21
22 if (is_string($node)) {
23 return translateString($node, $lang);
24 }
25
26 if (is_array($node)) {
27 // Vérifie s'il s'agit d'un tableau associatif (objet) ou indexé
28 if (array_keys($node) !== range(0, count($node) - 1)) {
29 // Tableau associatif (objet)
30 $result = [];
31 foreach ($node as $key => $value) {
32 $result[$key] = processNode($value, $lang);
33 }
34 return $result;
35 } else {
36 // Tableau indexé
37 return array_map(function($item) use ($lang) {
38 return processNode($item, $lang);
39 }, $node);
40 }
41 }
42
43 // Retourne les nombres, booléens, etc. sans changement
44 return $node;
45 }
46
47 return processNode($jsonObj, $targetLanguage);
48}
49
50// Exemple d'utilisation
51$sourceJson = [
52 "company" => [
53 "name" => "Solutions Technologiques Globales",
54 "description" => "Entreprise innovante de développement logiciel",
55 "founded" => 2010,
56 "services" => ["Développement Web", "Applications Mobiles", "Solutions Cloud"],
57 "active" => true
58 ]
59];
60
61$translatedJson = translateJsonStructure($sourceJson, "de");
62echo json_encode($translatedJson, JSON_PRETTY_PRINT);
63?>
64Cas d'utilisation réels
Fichiers i18n pour applications web
La plupart des frameworks modernes comme Next.js, React ou Vue stockent les traductions au format JSON. Lorsque vous devez ajouter une nouvelle langue à votre application, vous êtes confronté à un choix : copier-coller et traduire manuellement chaque clé (source d'erreurs), ou utiliser cet outil pour générer un premier brouillon en quelques minutes.
Un scénario réel : Votre application a un fichier en.json avec plus de 200 clés de traduction réparties dans des catégories imbriquées — navigation, formulaires, messages d'erreur, info-bulles. Vous avez besoin de versions française et allemande pour le prochain sprint.
Entrée (en.json) :
1{
2 "common": {
3 "welcome": "Welcome to our application",
4 "login": "Log in",
5 "signup": "Sign up",
6 "errorMessages": {
7 "required": "This field is required",
8 "invalidEmail": "Please enter a valid email address"
9 }
10 }
11}
12Traduisez en français, obtenez fr.json avec une structure identique. Votre code continue de référencer t('common.errorMessages.required') sans changement.
Ce que j'ai trouvé qui fonctionne bien : Générez des traductions avec cet outil, puis faites vérifier les termes techniques et les libellés de boutons par un membre de l'équipe bilingue. Cela permet de repérer les cas où « Soumettre » peut nécessiter différentes traductions pour « Soumettre le formulaire » vs « Soumettre le paiement ».
Localisation des réponses d'API
Construisez une API desservant plusieurs pays ? Vous avez besoin de structures de réponse cohérentes dans toutes les langues. Une API de notifications pourrait retourner :
1{
2 "status": "success",
3 "notification": {
4 "title": "Order Shipped",
5 "message": "Your order #12345 has been shipped",
6 "priority": 1,
7 "timestamp": 1678901234
8 }
9}
10Votre application mobile analyse notification.title et notification.message. Si la traduction française modifie la structure des clés, l'application plante pour les utilisateurs français.
Cet outil garantit que notification.title reste notification.title dans chaque langue, avec uniquement les valeurs de chaîne traduites. Votre code client fonctionne de manière identique dans tous les paramètres régionaux.
Une limitation à noter : La traduction automatique ne comprend pas votre domaine. « Expédié » dans un contexte de commerce électronique peut se traduire différemment que dans un contexte logistique ou maritime. Pour les API destinées aux clients, examinez la sortie avant le déploiement.
Traduction de contenu pour CMS sans interface
Les plateformes de CMS sans interface comme Contentful ou Strapi exportent souvent du contenu au format JSON. Lorsque vous avez 50 articles de blog avec des métadonnées structurées (auteur, balises, URL d'image à la une, dates de publication), vous voulez traduire le corps et le titre sans toucher aux métadonnées.
Un export typique comprend des chaînes de contenu et une configuration :
- Contenu : corps de l'article, titre, extrait
- Structure : ID d'auteur, chemins d'image, slugs de catégorie, horodatages
La traduction manuelle risque de modifier un slug de technology en tecnología, cassant votre routage. La traduction préservant la structure ne gère que les champs de contenu.
Fichiers de configuration pour déploiements multi-régions
Déploiement dans plusieurs régions ? Vos fichiers de configuration peuvent nécessiter des chaînes localisées tout en conservant des points de terminaison, des identifiants et des indicateurs de fonctionnalités identiques :
1{
2 "region": "eu-west",
3 "welcomeMessage": "Welcome to our service",
4 "endpoint": "https://api.eu.example.com",
5 "retryAttempts": 3,
6 "features": {"darkMode": true}
7}
8Traduisez welcomeMessage en allemand tout en laissant endpoint, retryAttempts et features intacts.
Comparaison des Approches de Traduction
| Méthode | Convient Le Mieux À | Vitesse | Précision | Préservation de la Structure | Coût |
|---|---|---|---|---|---|
| Cet Outil | Génération rapide de fichiers i18n, prototypes, outils internes | Instantané | Bon pour le contenu standard | 100% préservé | Gratuit |
| Google Traduction (copier/coller) | Phrases uniques, texte non technique | Instantané | Variable | Casse le JSON | Gratuit |
| Traduction Professionnelle | Contenu destiné aux clients, documents juridiques, marketing | Jours | Excellente | Travail manuel nécessaire | 0,08-0,15$/mot |
| Systèmes de Gestion de Traduction (Lokalise, Phrase) | Applications d'entreprise, workflows de collaboration | Heures-Jours | Excellente avec révision | Support JSON intégré | $$$+ |
Quand utiliser cet outil : Projets en phase initiale, génération de brouillons pour révision, applications internes où la traduction parfaite n'est pas critique.
Quand investir dans une traduction professionnelle : Contenu destiné aux clients, textes juridiques/de conformité, messages de marque, ou lorsque la nuance culturelle compte plus que la vitesse.
Considérations techniques et cas limites
Ce qui est traduit (et ce qui ne l'est pas)
L'outil utilise la vérification de type pour déterminer ce qui doit être traduit :
✅ Traduit :
- Valeurs de chaînes :
"Welcome"→"Bienvenue" - Chaînes dans des tableaux :
["Hello", "World"]→["Bonjour", "Monde"] - Chaînes à n'importe quel niveau d'imbrication
❌ Non traduit :
- Nombres :
42,3.14,-10restent inchangés - Booléens :
trueetfalserestent tels quels - Null :
nullrestenull - Clés d'objets :
"userName"comme clé reste"userName" - Chaînes vides :
""reste""
Gestion des caractères spéciaux
Unicode et Emoji L'outil gère correctement l'UTF-8, donc les emoji et les caractères non latins fonctionnent bien :
1{"greeting": "👋 Hello"}
2Se traduit en espagnol comme :
1{"greeting": "👋 Hola"}
2Séquences d'échappement
Les séquences d'échappement JSON (\n, \t, \") sont préservées :
1{"message": "Line 1\nLine 2"}
2Le \n reste intact lors de la traduction.
Espaces réservés
Voici un problème potentiel : si vos chaînes contiennent des espaces réservés comme {username} ou %s, ils peuvent être traduits ou réorganisés. Dans des langues comme l'arabe ou l'hébreu avec un texte de droite à gauche, les positions des espaces réservés peuvent se déplacer. Vérifiez-les attentivement.
Performances des grands fichiers JSON
L'outil web gère les fichiers i18n typiques (moins de 500 Ko) sans problème. Pour les ensembles de données plus volumineux :
- 500 Ko - 2 Mo : Fonctionne mais peut être lent dans le navigateur
- Plus de 2 Mo : Envisagez de diviser en morceaux logiques (par exemple, fichiers séparés par fonctionnalité ou section)
La mémoire du navigateur est le facteur limitant, pas l'algorithme lui-même.
Questions fréquemment posées
En quoi cela diffère-t-il du collage de JSON dans Google Translate ?
Google Translate traite le JSON comme du texte brut, ce qui signifie qu'il essaie de traduire tout, y compris les clés, les caractères de syntaxe et les valeurs numériques. Vous obtiendrez une sortie comme :
1{ "nom d'utilisateur": "Jean Dupont", "âge": "vingt-cinq" }
2Remarquez comment "username" est devenu "nom d'utilisateur" et le nombre 25 est devenu la chaîne "vingt-cinq" ? Votre code se casse instantanément.
Cet outil comprend la structure JSON et ne traduit que les valeurs de chaîne, laissant les clés et les autres types de données intacts.
Gérera-t-il les JSON profondément imbriqués avec des tableaux ?
Oui. L'algorithme récursif traite chaque niveau d'imbrication :
1{
2 "users": [
3 {"name": "John", "roles": ["admin", "editor"]},
4 {"name": "Jane", "roles": ["viewer"]}
5 ]
6}
7Il traduit toutes les valeurs de chaîne ("John", "Jane", "admin", "editor", "viewer") tout en maintenant la structure exacte.
Que se passe-t-il si mon JSON contient à la fois du contenu en anglais et déjà traduit ?
L'outil traduit toutes les chaînes qu'il trouve, même si certaines sont déjà dans la langue cible. Si vous ajoutez de nouvelles clés à un fichier de traduction existant, traduisez uniquement la nouvelle section séparément, puis fusionnez les résultats.
Puis-je l'utiliser pour les fichiers i18next ou react-intl ?
Absolument. La structure de sortie correspond à ce que ces frameworks attendent. Un fichier JSON i18next comme :
1{"translation": {"welcome": "Hello", "goodbye": "Goodbye"}}
2Devient :
1{"translation": {"welcome": "Hola", "goodbye": "Adiós"}}
2Vos appels t('translation.welcome') restent inchangés.
Quelle est la précision de la traduction automatique pour le contenu technique ?
Cela dépend du contexte :
- Texte d'interface utilisateur général : "Enregistrer", "Annuler", "Soumettre" → Généralement précis
- Jargon technique : "webhook", "OAuth2", "idempotent" → Peut être mal traduit ou laissé tel quel
- Termes spécifiques à un domaine : "dossier patient" (médical) vs "patient" (patience) → Contexte souvent manqué
Pour les applications de production, utilisez ceci comme première passe, puis faites-le vérifier par quelqu'un pour les termes techniques et spécifiques au domaine.
Qu'en est-il des langues avec différents jeux de caractères (chinois, arabe, russe) ?
L'outil gère correctement Unicode, donc tous les jeux de caractères fonctionnent. Un point à surveiller : l'arabe et l'hébreu sont de droite à gauche (RTL), ce qui peut affecter l'apparence des espaces réservés dans les chaînes traduites. La structure JSON reste correcte, mais vérifiez la lisibilité du texte traduit.
Va-t-il préserver mon formatage (indentation, sauts de ligne) ?
La sortie est un JSON valide, mais le formatage (espaces, indentation) peut différer de votre entrée. Si vous avez besoin d'un formatage spécifique, passez la sortie à travers un formateur JSON avec vos paramètres préférés.
Puis-je traduire des valeurs de configuration comme des URL ou des clés API ?
L'outil traduit toutes les chaînes, y compris les URL et les valeurs de configuration. Pour éviter cela :
- Divisez votre JSON en contenu destiné aux utilisateurs et configuration
- Traduisez uniquement la section de contenu
- Laissez la configuration non traduite
Mieux encore, structurez vos fichiers pour séparer le contenu traduisible des valeurs techniques dès le départ.
Est-ce gratuit ? Y a-t-il des limites de débit ?
L'outil web est gratuit pour une utilisation typique. Une traduction à très haut volume (centaines de fichiers par minute) peut atteindre les limites de débit du service de traduction sous-jacent. Pour la plupart des flux de travail de développement, vous n'atteindrez pas ces limites.
Références et lectures complémentaires
Pour une compréhension approfondie de la structure JSON, des normes d'internationalisation et des meilleures pratiques :
-
ECMA-404 : La syntaxe d'échange de données JSON - La spécification JSON officielle par Ecma International définissant le format standard : ecma-international.org/publications-and-standards/standards/ecma-404/
-
MDN Web Docs : Travailler avec JSON - Guide complet de Mozilla sur l'analyse, la conversion en chaîne et la structure JSON : developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON
-
Activité d'internationalisation du W3C (i18n) - Normes et meilleures pratiques pour l'internationalisation web : w3.org/International/
-
RFC 8259 : Le format d'échange de données JSON - Spécification IETF pour la syntaxe et la sémantique JSON : datatracker.ietf.org/doc/html/rfc8259
Commencez à traduire vos fichiers JSON
Besoin de générer rapidement des fichiers de traduction pour votre application multilingue ? Collez votre JSON, sélectionnez une langue cible et obtenez des traductions qui préservent la structure instantanément. Fonctionne avec i18next, react-intl, vue-i18n et tout framework nécessitant une structure JSON cohérente entre les langues.
Commencez la traduction maintenant :