Traduire une application Laravel en chinois simplifié
Déposez le fichier JSON de langue de votre application Laravel (par exemple <code>lang/fr.json</code>) : Manuce traduit les valeurs en chinois simplifié et laisse les clés, les paramètres <code>:name</code> et les balises intacts. Vous récupérez le même fichier, à renommer selon votre locale chinoise, avec un rapport des chaînes traduites et de celles laissées telles quelles.
Combien ça coûte
Pour les fichiers de langue d'une application Laravel totalisant environ 2 500 mots, vers le chinois :
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 Laravel attend pour une locale chinoise
Avec les traductions JSON, Laravel utilise la chaîne source comme clé : __('Bienvenue, :name') cherche la clé "Bienvenue, :name" dans le fichier de la locale active. Le fichier chinois doit donc garder exactement les mêmes clés que le fichier source ; seules les valeurs passent en chinois. C'est ce que fait Manuce : les clés ne sont jamais traduites, et elles ne sont pas comptées dans le prix, qui porte uniquement sur les mots des valeurs.
Le nom du fichier suit la locale que vous passez à App::setLocale(). Choisissez-en une et tenez-vous-y, par exemple zh_CN : le fichier devient lang/zh_CN.json (ou resources/lang/zh_CN.json selon la version de Laravel). Si votre gabarit Blade construit l’attribut lang à partir de la locale en remplaçant le tiret bas par un tiret, la page sortira en lang="zh-CN", ce qui aide le navigateur à choisir une police chinoise adaptée.
Les fichiers en tableaux PHP (lang/fr/validation.php, auth.php, pagination.php) ne sont pas pris en charge. Pour les traduire, convertissez-les en JSON avec des clés à plat, par exemple "validation.required", puis réintégrez le résultat dans votre projet.
Les pièges propres au chinois dans les chaînes Laravel
- Ordre des paramètres. La phrase chinoise se réorganise souvent : « Commande n° :number de :name » devient
:name 的第 :number 号订单. Les paramètres nommés le permettent. En revanche, une phrase découpée en plusieurs__()mis bout à bout dans Blade ne pourra pas être remise dans le bon ordre : regroupez-la en une seule chaîne avant la traduction. - Pluriel. Le chinois n’a qu’une catégorie (other) et Laravel, pour
zh, retient toujours le premier segment d’une chaînetrans_choice. Si une valeur traduite garde la forme « 1 commentaire|:count commentaires » sous la forme1 条评论|:count 条评论, l’application affichera « 1 条评论 » quel que soit le nombre. La bonne valeur est un seul segment ::count 条评论. Les intervalles explicites ({0},[2,*]) continuent, eux, de fonctionner. - Ponctuation pleine chasse. Le texte chinois emploie
,。:?!sans espace autour. « Le champ :attribute est obligatoire. » devient:attribute 不能为空。 - Majuscules. Les variantes
:Nameet:NAMEn’ont pas d’effet sur les caractères chinois, mais elles sont conservées telles quelles : elles servent quand la valeur insérée est en lettres latines. - Espaces entre chinois et latin. Beaucoup d’interfaces de Chine continentale placent une espace simple entre caractères chinois et chiffres ou mots latins (
共 :count 条结果). C’est un choix de style à fixer pour toute l’application.
Mise en page : moins de caractères, pas moins de place
Une valeur chinoise compte deux à trois fois moins de caractères que sa source française, mais chaque caractère est plus large : la place occupée à l’écran varie peu. Ne réduisez donc pas la largeur des boutons ou des colonnes en vous fiant au nombre de caractères.
Attention aux troncatures : Str::limit() mesure la largeur d’affichage, et un caractère chinois compte double. Un Str::limit($titre, 40) coupera vers vingt caractères chinois, ce qui est cohérent visuellement mais peut surprendre si vous comptiez en caractères.
Enfin, une police latine ne contient pas les idéogrammes. Si votre CSS ne déclare qu’une police web latine, le navigateur basculera sur une police système, parfois peu lisible. Prévoyez une pile explicite, par exemple "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif. Évitez aussi text-transform: uppercase et les petites tailles de police dans les zones qui afficheront du chinois.
Ce que Manuce rend, et ce qu’il ne fait pas
Vous récupérez le même fichier JSON : indentation, ordre des clés, guillemets, fins de ligne, encodage et BOM sont conservés, seules les valeurs changent. Chaque valeur traduite est comparée à la source : si un paramètre comme :attribute ou une balise comme <b> manque ou diffère et que l’écart persiste, la valeur source est gardée et le rapport le signale. Ne sont pas traduits : les valeurs vides, les URL, les adresses email, les nombres, les couleurs, les formats de date (un Y-m-d reste un Y-m-d), les identifiants et tout ce que vous marquez non traduisible.
- Manuce ne traduit pas les chaînes écrites en dur dans les vues Blade ou les contrôleurs : seules celles passées par
__()et présentes dans le fichier de langue sont concernées. - Il ne lit pas directement les tableaux PHP : conversion en JSON préalable.
- Le chinois traditionnel (Taïwan, Hong Kong) est une langue distincte : pour un fichier
zh_TW.json, il faut le commander à part. - Il ne fournit pas de traduction assermentée, par exemple pour des conditions générales ayant une valeur juridique en Chine.
Le chinois est une langue à supplément : un coefficient ×1,6 s’applique au prix au mot.
Préparer le fichier et vérifier le résultat
- Partez du fichier JSON le plus complet (souvent celui de la langue source) et vérifiez qu’il est valide.
- Repérez les chaînes de pluriel (celles qui contiennent
|) : vous les contrôlerez après traduction. - Après livraison, renommez le fichier en
zh_CN.json, puis lisez le rapport : chaque valeur restée en source doit être comprise. - Si vous régénérez ce fichier par script, utilisez
JSON_UNESCAPED_UNICODE: sans cette option,json_encode()écrit\u6b22\u8fceau lieu de欢迎, ce qui reste valide mais devient illisible en revue de code. - Passez l’application en
zh_CNet parcourez les formulaires : messages de validation, pagination, courriels de réinitialisation du mot de passe. Réglez aussi Carbon sur la même locale pour obtenir des dates de la forme3月5日.
En pratique
- Exportez lang/fr.json (et convertissez en JSON vos fichiers PHP de traduction si besoin).
- Déposez le fichier sur Manuce, choisissez le chinois simplifié et consultez l’extrait gratuit.
- Récupérez le fichier traduit et son rapport, puis renommez-le lang/zh_CN.json.
- Contrôlez les chaînes de pluriel, les polices et les messages de validation en locale zh_CN.
Questions fréquentes
Faut-il nommer le fichier zh.json ou zh_CN.json ?
Laravel charge le fichier qui porte le nom exact de la locale active. Les deux fonctionnent si vous passez la même valeur à App::setLocale(). zh_CN a l’avantage de distinguer clairement le chinois simplifié d’un futur zh_TW.
Mes messages de validation sont dans lang/fr/validation.php : Manuce peut-il les traduire ?
Pas sous cette forme : les tableaux PHP ne sont pas pris en charge. Convertissez-les en JSON avec des clés à plat comme "validation.required", faites traduire ce fichier, puis réintégrez le résultat. Pensez aussi au tableau attributes, sans quoi :attribute affichera le nom technique du champ.
Les paramètres :name et :count risquent-ils d’être traduits ou supprimés ?
Chaque valeur traduite est comparée à la source sur ses paramètres et ses balises. En cas d’écart persistant, la valeur source est conservée et le rapport l’indique. Les paramètres peuvent en revanche changer de place dans la phrase, ce qui est normal en chinois.
Pourquoi mes pluriels affichent-ils toujours la forme « 1 » en chinois ?
Pour zh, Laravel retient toujours le premier segment d’une chaîne séparée par |. Si ce segment contient un « 1 » écrit en dur, il s’affiche pour tous les nombres. Remplacez la valeur par un seul segment utilisant :count.
Le même fichier peut-il servir pour Taïwan ou Hong Kong ?
Non. Le chinois traditionnel est une langue distincte chez Manuce, avec ses propres caractères et usages. Commandez-le séparément et enregistrez-le dans un fichier dédié, par exemple zh_TW.json.
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 chinois, 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.