Traduire un fichier JSON i18n en turc, variables et pluriels intacts
Déposez votre fichier JSON (i18next, react-intl, vue-i18n, next-intl, ngx-translate) : Manuce traduit les valeurs en turc, laisse les clés intactes et vérifie chaque variable chaîne par chaîne. Vous récupérez le même fichier, prêt à devenir votre <code>tr.json</code>, avec un rapport des chaînes traduites et de celles laissées telles quelles.
Combien ça coûte
Pour un fichier JSON i18n d'environ 2 000 mots de valeurs, vers le turc :
Comprendre, usage interne.
Prêt à transmettre, par le spécialiste technique.
Relecture croisée. Pour ce qui engage.
Prix pour une langue, mise en page d'origine comprise. TVA non applicable, article 293 B du CGI. Le devis exact, calculé sur le nombre de mots de votre fichier, s'affiche avant paiement.
Ce que le turc change dans vos chaînes
Le turc est une langue agglutinante : là où l’anglais ou le français ajoutent des mots, le turc ajoute des suffixes au même mot. Un libellé court peut devenir un seul mot long, comme Kaydedilemedi (« Impossible d’enregistrer »). Ces mots ne se coupent pas facilement à la ligne : un bouton ou un onglet calibré au pixel sur la langue source risque de déborder.
L’ordre des mots change aussi : le verbe vient en fin de phrase. La variable se déplace donc souvent :
- source :
"Delete {count} files?" - turc :
"{count} dosya silinsin mi?"
Ce déplacement est normal. Ce qui compte, c’est que {count} soit présent, une seule fois, comme dans la source : c’est ce que Manuce contrôle.
Le piège propre au turc, ce sont les suffixes accrochés à une variable. Avec un nom propre, le suffixe se sépare par une apostrophe et dépend des voyelles et de la dernière lettre du mot : Mehmet’e, mais Ali’ye. Une chaîne comme "{name}'e mesaj gönderildi" sera juste pour certaines valeurs et fausse pour d’autres. La traduction ne connaît pas la valeur qu’aura {name} à l’exécution : repérez ces chaînes et préférez une tournure qui n’accroche pas de suffixe à la variable.
Dernier point de langue : le registre. Une interface turque vouvoie (siz, Emin misiniz?) ou tutoie (sen, Emin misin?). Regardez le registre retenu dans l’extrait gratuit avant de commander.
Le i turc, les pluriels et les signes à surveiller
Le i avec et sans point. Le turc a quatre lettres là où l’anglais en a deux : i/İ et ı/I. La traduction les écrit correctement, mais une mise en majuscules faite par votre code peut les fausser. En JavaScript, "istanbul".toUpperCase() donne ISTANBUL au lieu de İSTANBUL, et "KAYIT".toLowerCase() donne kayit au lieu de kayıt. Utilisez toLocaleUpperCase('tr'), ou une transformation CSS avec lang="tr" sur la page.
Les pluriels. Le turc n’a que deux catégories CLDR, one et other, et le nom reste au singulier après un nombre : 3 dosya, pas 3 dosyalar. Un message ICU donne donc souvent la même forme dans les deux branches :
{count, plural, one {# dosya silindi} other {# dosya silindi}}
Ce n’est pas une erreur. Pour i18next, les clés _one et _other de la source suffisent : aucune catégorie supplémentaire n’est requise.
Le signe pourcent. En turc, il se place devant le nombre : %20 indirim. Dans un fichier à variables de type %s ou %d, vérifiez que ce % n’est pas interprété comme un marqueur par votre bibliothèque.
Les polices. ğ, ş, ı et İ ne figurent pas dans tous les sous-ensembles de polices web : si vous chargez seulement le sous-ensemble « latin », ces lettres s’afficheront avec une police de secours.
Ce que Manuce rend, et ce qu’il ne fait pas
Vous récupérez le même fichier, dans le même format : indentation, ordre des clés, guillemets, commentaires, fins de ligne, encodage et BOM sont conservés. Seules les valeurs changent. Le JSON peut être plat ou imbriqué et contenir des tableaux de chaînes.
- Les clés ne sont jamais traduites :
"checkout.button.pay"reste tel quel. - Les variables
{name},{{count}},%set les messages ICU (plural,select) sont vérifiés chaîne par chaîne : mêmes variables, autant de fois. - Les catégories de pluriel ICU que réclame la langue cible sont ajoutées ; pour le turc, ce sont
oneetother. - Ne sont pas traduits : valeurs vides, URL, adresses email, nombres, couleurs, formats de date, identifiants et tout ce qui est marqué non traduisible. Un format comme
DD/MM/YYYYreste donc à adapter dans votre code si besoin.
Chaque valeur traduite est comparée à la source (variables, balises). En cas d’écart persistant, la valeur source est gardée et le rapport l’indique : vous savez exactement quelles chaînes restent à traiter.
Ce que Manuce ne fait pas : il ne voit pas votre interface et ne connaît pas les valeurs de vos variables à l’exécution. Il ne raccourcit pas un libellé pour qu’il tienne dans un bouton et ne corrige pas une mise en majuscules faite par votre code. Ces contrôles se font dans l’application.
Préparer le fichier et vérifier au retour
Avant le dépôt :
- Partez du fichier source complet et à jour, enregistré en UTF-8.
- Repérez les chaînes où un suffixe est collé à une variable, du type
{name}'eou{{city}}'de: si possible, reformulez la source pour isoler la variable. - Marquez comme non traduisibles les noms de produit ou de marque à garder tels quels, si votre format le permet.
Le devis est calculé sur les mots des valeurs, clés et balises exclues. Avant de payer, l’extrait gratuit vous montre un paragraphe traduit au niveau choisi : vérifiez-y le registre (siz ou sen) et la façon dont un terme de marque est rendu.
Au retour :
- Lisez le rapport : chaînes laissées en langue source et raison.
- Chargez le fichier avec la locale
tret parcourez les écrans les plus denses : boutons, menus, messages d’erreur. - Testez un nom propre terminé par une voyelle et un autre par une consonne dans les chaînes à variable.
- Vérifiez les textes mis en majuscules :
İdoit garder son point. - Affichez un compteur à
1puis à5pour contrôler les deux branches du pluriel.
En pratique
- Exportez votre fichier JSON source complet, en UTF-8.
- Déposez-le sur Manuce : le devis s’affiche, calculé sur les mots des valeurs.
- Contrôlez l’extrait gratuit (registre, variables), choisissez le niveau et payez.
- Récupérez le fichier turc et lisez le rapport des chaînes laissées telles quelles.
- Testez l’application en locale tr : majuscules, mots longs, pluriels, variables suivies d’un suffixe.
Questions fréquentes
Les clés de mon fichier seront-elles traduites ?
Non. Seules les valeurs sont traduites ; les clés, l’ordre, l’indentation et les commentaires restent identiques. Vous pouvez remettre le fichier dans le projet comme nouvelle locale tr.
Faut-il ajouter des formes de pluriel pour le turc ?
Le turc n’utilise que les catégories one et other, comme l’anglais. Après un nombre, le nom reste au singulier, si bien que les deux branches portent souvent le même texte. C’est attendu et correct.
Que se passe-t-il avec une variable suivie d’un suffixe turc ?
Le suffixe dépend de la dernière syllabe du mot remplacé, que la traduction ne peut pas connaître : Ali’ye, mais Mehmet’e. Manuce garantit que la variable est présente autant de fois que dans la source, pas que le suffixe convient à toutes les valeurs. Testez ces chaînes avec plusieurs noms, ou reformulez la source pour éviter le suffixe.
Pourquoi mes majuscules turques s’affichent-elles mal ?
C’est presque toujours le code, pas la traduction : une mise en majuscules sans locale transforme i en I au lieu de İ. Utilisez toLocaleUpperCase('tr') ou déclarez lang="tr" pour que le CSS applique la bonne règle.
Le tarif est-il différent pour le turc ?
Oui, le turc est une langue à supplément : un coefficient ×1.25 s’applique au prix au mot. Le devis ne compte que les mots des valeurs, clés et balises exclues, et s’affiche dès le dépôt du fichier.
Le spécialiste qui s’en charge
Ce sujet est confié à Dédale, le spécialiste technique. Voir comment il travaille.
Le même fichier, vers une autre langue
Vers le turc, d’autres fichiers
À lire aussi
Testez sur votre fichier, gratuitement
Un extrait de votre fichier traduit au niveau choisi, avant tout paiement. Vous jugez, puis vous décidez.