ManuceTraduire un fichierTraduire une application React ou Next.js en chinois

Traduire une application React ou Next.js en chinois

Manuce traduit en chinois simplifié les fichiers JSON d’i18next, react-intl ou next-intl et vous rend le même fichier : clés, interpolations {{name}} et messages ICU intacts, seules les valeurs changent. Reste à votre charge ce que le chinois impose au code : police, pluriels réduits à une seule catégorie, concaténations à supprimer.

Déposer mon fichier Voir les tarifs

Combien ça coûte

Pour les fichiers de langue d'une application React ou Next.js totalisant environ 2 500 mots, vers le chinois :

Essentiel
24 €

Comprendre, usage interne.

Professionnel
72 €

Prêt à transmettre, par le spécialiste technique.

Premium
140 €

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 chinois change dans vos chaînes

Le chinois simplifié n’a qu’une catégorie de pluriel CLDR : other. Avec i18next, une paire cart_one / cart_other ne sera lue qu’en cart_other pour la locale zh. Avec react-intl ou next-intl, un message {count, plural, one {# article} other {# articles}} n’utilisera que la branche other. Une branche one restante ne gêne pas, mais ne sera jamais affichée.

Le nombre s’accompagne d’un classificateur qui dépend du nom : « 3 条消息 » pour des messages, « 3 件商品 » pour des articles. Une chaîne isolée, accolée au nombre dans le JSX, ne peut donc pas porter le bon classificateur : le nombre doit être dans la même valeur que le nom.

L’ordre des mots change aussi : « Bonjour {{name}} » devient « {{name}},您好 ». La ponctuation est pleine chasse (,。:?!) et il n’y a pas d’espace entre les mots. Enfin, le registre : 您 est la forme polie, 你 la forme directe fréquente dans les applications grand public. Décidez lequel vous attendez et contrôlez-le sur l’extrait gratuit.

Polices et mise en page dans un projet React ou Next.js

Une police latine n’a pas les caractères chinois. Si vous chargez Inter avec next/font et le seul sous-ensemble latin, le navigateur se rabat sur une police système, différente selon l’appareil. Prévoyez une pile explicite pour la locale chinoise, par exemple Noto Sans SC, puis PingFang SC et Microsoft YaHei.

Le texte est deux à trois fois plus court en caractères, mais chaque caractère est plus large : « Enregistrer les modifications » devient « 保存更改 », et la place occupée varie peu. Le chinois peut se couper entre deux caractères quelconques ; regardez les titres qui se cassent au milieu d’un mot de deux caractères.

  • Déclarez la langue dans l’attribut lang de la page (zh-CN ou zh-Hans) : le navigateur choisit alors des glyphes simplifiés.
  • text-transform: uppercase n’a aucun effet sur les hanzi, et l’italique y est peu lisible : l’emphase passe par la graisse ou la couleur.
  • Évitez {t('hello')} {name} : l’espace du JSX et l’ordre imposé ne conviennent pas au chinois. Passez par une interpolation dans une seule valeur.

Ce que Manuce rend exactement, et ce qu’il ne fait pas

Vous déposez le fichier JSON, par exemple messages/fr.json pour next-intl ou public/locales/fr/common.json pour i18next. Manuce rend le même fichier, dans le même format : indentation, ordre des clés, guillemets, commentaires, fins de ligne, encodage et BOM conservés. Seules les valeurs changent ; une clé imbriquée comme checkout.summary.total reste identique.

  • Les interpolations {{name}} et les messages ICU sont conservés.
  • Chaque valeur traduite est comparée à la source, variables et balises comprises (une balise de texte riche comme <link>). En cas d’écart persistant, la valeur source est gardée et le rapport le signale.
  • Ne sont pas traduits : clés, valeurs vides, URL, adresses email, nombres, couleurs, formats de date, identifiants, et tout ce qui est marqué non traduisible. Un format dd/MM/yyyy reste tel quel : pour afficher « 2024年5月3日 », réglez-le vous-même ou passez par Intl.DateTimeFormat avec la locale zh-CN.

Le rapport liste les chaînes traduites et celles laissées telles quelles, avec la raison. Manuce ne touche pas à votre code, ni au routage, ni à la configuration des locales, et n’ajoute ni ne supprime de clés de pluriel. Il ne produit pas non plus de traduction assermentée. Le prix porte sur les mots des valeurs, clés et balises exclues, avec le coefficient ×1,6 du chinois.

Simplifié ou traditionnel, et nom du fichier

Le chinois de Manuce est le chinois simplifié, celui de la Chine continentale et de Singapour. Le chinois traditionnel (Taïwan, Hong Kong) est une langue distincte : un fichier simplifié affiché à Taipei paraîtra étranger. Si vous visez les deux publics, commandez les deux langues ; dès deux langues, la remise de 20 % s’applique à toute la commande.

Nommez le fichier rendu selon votre configuration : zh.json, zh-CN.json ou zh-Hans.json doivent correspondre exactement aux locales déclarées dans le middleware de next-intl ou dans la configuration i18n de Next.js. Avec i18next, une locale zh-CN sans fichier dédié retombe sur zh puis sur la langue de repli : vérifiez que c’est bien le fichier chinois qui se charge, et non la source.

Préparer les fichiers et vérifier le résultat

  1. Partez du fichier source le plus complet et le plus à jour ; une clé absente de la source sera absente du chinois.
  2. Avant l’envoi, remplacez les concaténations par des interpolations : "welcome": "Bonjour {{name}}, vous avez {{count}} messages" peut devenir « {{name}},您好,您有 {{count}} 条消息 », pas trois morceaux collés.
  3. Gardez nombre et nom dans la même valeur pour que le classificateur soit juste.

Après réception :

  • lancez un build pour confirmer que le JSON se charge ;
  • affichez les écrans avec la locale chinoise sur mobile et vérifiez que la police chinoise est bien appliquée partout ;
  • testez count = 1 et count = 5 : les deux doivent lire la branche other ;
  • relisez le rapport et reprenez les valeurs restées dans la langue source.

En pratique

  1. Rassemblez les fichiers JSON source (i18next, react-intl ou next-intl) et remplacez les concaténations par des interpolations.
  2. Déposez les fichiers sur Manuce, choisissez le chinois simplifié et lisez l’extrait gratuit pour juger le registre.
  3. Récupérez le même fichier traduit et nommez-le selon votre locale (zh, zh-CN ou zh-Hans).
  4. Ajoutez une police chinoise, puis testez écrans, pluriels et dates en vous aidant du rapport.

Questions fréquentes

Que deviennent mes clés _one et _other d’i18next en chinois ?

Les clés restent identiques, Manuce ne les renomme pas et n’en supprime pas. Le chinois n’ayant que la catégorie other, i18next lira toujours la clé _other pour la locale zh. La clé _one ne gêne pas, elle n’est simplement jamais affichée.

Le fichier fonctionnera-t-il pour Taïwan ou Hong Kong ?

Non, il est en chinois simplifié, destiné à la Chine continentale et à Singapour. Le chinois traditionnel est une langue distincte chez Manuce, à commander en plus. La remise multilingue s’applique alors à toute la commande.

Pourquoi mes textes chinois s’affichent-ils dans une police différente selon l’appareil ?

Votre police est probablement latine et ne contient pas de hanzi : le navigateur prend alors une police système. Déclarez une pile de polices chinoises pour la locale zh et l’attribut lang de la page. Manuce ne modifie pas vos styles.

Les dates seront-elles au format chinois ?

Les formats de date du fichier ne sont pas traduits : un dd/MM/yyyy reste tel quel. Pour obtenir « 2024年5月3日 », modifiez la valeur vous-même ou formatez la date avec Intl.DateTimeFormat et la locale zh-CN.

Que se passe-t-il si une variable ou une balise disparaît dans la traduction ?

Chaque valeur traduite est comparée à la source. Si l’écart persiste, la valeur source est conservée et le rapport l’indique, pour que vous sachiez quelle chaîne reprendre. Votre application ne recevra donc pas de chaîne avec une variable manquante.

Le spécialiste qui s’en charge

Ce sujet est confié à Dédale, le spécialiste technique. Voir comment il travaille.

Testez sur votre fichier, gratuitement

Un extrait de votre fichier traduit au niveau choisi, avant tout paiement. Vous jugez, puis vous décidez.

Déposer mon fichier