ManuceTraduire un fichierTraduire une application Angular en chinois simplifié

Traduire une application Angular en chinois simplifié

Vous déposez le messages.xlf produit par ng extract-i18n, Manuce remplit les cibles en chinois simplifié et vous rend le même fichier, balises d'interpolation conservées, avec un rapport des chaînes traduites ou laissées telles quelles. Reste à votre charge ce que le chinois change côté interface : polices, pluriels ICU, ponctuation collée au gabarit.

Déposer mon fichier Voir les tarifs

Combien ça coûte

Pour les fichiers de langue d'une application Angular 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 messages.xlf

Le chinois simplifié n'a qu'une catégorie de pluriel CLDR : other. Une expression ICU source comme {count, plural, =1 {1 file} other {{{count}} files}} n'a pas besoin de branche one en chinois ; la forme utile est {count, plural, other {{{count}} 个文件}}, avec éventuellement une branche exacte =0 si vous voulez un message propre au zéro. Le nom ne varie pas, mais un classificateur s'intercale entre le nombre et le nom : 个 en général, 条 pour des messages, 项 pour des éléments d'une liste.

L'ordre des mots bouge. « Welcome back, {{ name }} » devient « {{ name }},欢迎回来 » : l'interpolation passe en tête. Dans le XLIFF, elle apparaît sous forme de balise (<x id='INTERPOLATION'/> en 1.2, <ph .../> en 2.0) ; la balise peut changer de place dans la cible, c'est normal, elle ne doit simplement pas disparaître.

La ponctuation est pleine chasse : ,。:?!. « Nom : » devient « 姓名: », sans espace avant les deux-points. Il n'y a pas d'espace entre les mots. En nombre de caractères, le texte est deux à trois fois plus court, mais chaque caractère est plus large : la place occupée à l'écran varie peu par rapport à l'anglais ou au français.

Polices, retours à la ligne et CSS : ce qui se joue hors du fichier

Une police latine n'a pas les caractères chinois. Si votre thème charge une police web limitée au latin, le navigateur bascule sur une police système pour les hanzi et le mélange se voit, en particulier dans les boutons et les titres. Prévoyez une pile de repli explicite pour la locale chinoise, par exemple font-family: 'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', sans-serif;, appliquée via :lang(zh) ou une classe posée sur la racine.

Quelques règles CSS n'ont plus d'effet ou en ont un mauvais :

  • text-transform: uppercase ne fait rien sur des hanzi : un libellé qui ne se distinguait que par les majuscules perd son relief.
  • L'italique n'existe pas dans la typographie chinoise ; le navigateur incline artificiellement les caractères. Préférez le gras ou la couleur pour l'emphase.
  • letter-spacing pensé pour le latin écarte les caractères et rend le texte haché.
  • Les validateurs maxLength comptent des caractères : une limite de 20 autorise en chinois une phrase entière.

Côté retours à la ligne, le navigateur peut couper entre deux hanzi sans espace ; un texte long ne déborde donc pas comme un mot allemand, mais un libellé de bouton peut se scinder au milieu d'un mot de deux caractères. Testez les composants à largeur fixe.

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

Vous recevez le même messages.xlf, en XLIFF 1.2 ou 2.0 selon ce que vous avez extrait : indentation, ordre, guillemets, commentaires, fins de ligne, encodage et BOM sont conservés ; seules les cibles sont remplies. Chaque valeur traduite est comparée à la source : si une balise d'interpolation ou une variable manque ou diffère et que l'écart persiste, la valeur source est gardée et le rapport le signale. Vous savez ainsi quelles chaînes restent en anglais (ou dans votre langue source) et pourquoi.

Ne sont pas traduits : les identifiants (y compris vos @@id personnalisés), les valeurs vides, les URL, les adresses email, les nombres, les couleurs, les formats de date et tout ce qui est marqué non traduisible. Le devis porte sur les mots des valeurs, balises et identifiants exclus ; le chinois est une langue à supplément, avec un coefficient ×1.6 sur le prix au mot.

Manuce ne fait pas :

  • la mise à jour de angular.json, des polices ou du CSS ;
  • la traduction des textes que vous n'avez pas marqués avec i18n ou $localize : ils ne sont pas dans le fichier ;
  • le chinois traditionnel (Taïwan, Hong Kong), qui est une langue distincte à commander à part si vous visez aussi ces marchés.

Vérifiez vous-même la structure des expressions ICU au premier essai : la branche other est celle que le chinois utilisera.

Préparer le projet et vérifier le résultat

Avant l'extraction, donnez du contexte aux libellés courts. « Open » peut être un verbe (打开) ou un état (未关闭, 开放中) ; une description comme i18n='Bouton qui ouvre le fichier|Open@@fileOpenButton' est reprise dans le XLIFF et lève l'ambiguïté. Ne concaténez pas de ponctuation dans le gabarit : {{ label }} : donnerait « 姓名 : » avec des deux-points demi-chasse ; mettez les deux-points dans la chaîne traduisible.

Pour les dates, n'écrivez pas de format figé comme 'dd/MM/yyyy' dans le DatePipe : il ne sera pas traduit. Avec un format nommé ('longDate', 'mediumDate'), la locale chinoise produit d'elle-même une forme comme 2025年3月5日.

Après livraison :

  • lisez le rapport et traitez les chaînes laissées telles quelles ;
  • déclarez la locale (zh-Hans ou zh) et le chemin du fichier traduit dans la configuration i18n du projet, puis compilez avec --localize ;
  • parcourez les écrans avec les pluriels (0, 1, 5 éléments), les messages d'erreur de formulaire et les boutons étroits ;
  • contrôlez qu'aucun caractère ne s'affiche en carré vide, signe d'une police sans hanzi.

En pratique

  1. Marquez les textes avec i18n ou $localize, en ajoutant une description aux libellés ambigus.
  2. Lancez ng extract-i18n et déposez le messages.xlf obtenu sur Manuce.
  3. Lisez l'extrait gratuit, choisissez le niveau et validez le devis.
  4. Récupérez le fichier rempli et le rapport, renommez-le pour la locale zh-Hans et déclarez-le dans angular.json.
  5. Compilez avec --localize et vérifiez polices, pluriels et boutons à l'écran.

Questions fréquentes

Faut-il utiliser le code de locale zh, zh-CN ou zh-Hans ?

Angular accepte ces codes et charge les données de locale correspondantes. zh-Hans désigne l'écriture simplifiée sans lier l'application à un pays, ce qui convient aussi à Singapour. Manuce traduit en chinois simplifié dans tous les cas ; le code est un choix de configuration de votre côté.

Mes pluriels ICU fonctionneront-ils en chinois ?

Le chinois n'utilise que la catégorie other : c'est cette branche qui s'affichera. Les branches exactes comme =0 restent utilisables si vous voulez un message particulier. Vérifiez au premier essai que la branche other de chaque expression contient bien la balise du nombre.

Que se passe-t-il si une balise d'interpolation est perdue à la traduction ?

Chaque valeur est comparée à la source. Si l'écart sur une balise ou une variable persiste, la valeur source est conservée dans la cible et le rapport l'indique. Votre build ne casse pas, et vous savez quelle chaîne reprendre.

Puis-je obtenir aussi le chinois traditionnel pour Taïwan ?

Oui, mais c'est une langue distincte chez Manuce, à ajouter à la commande. Le fichier simplifié n'est pas converti automatiquement : le vocabulaire diffère aussi, pas seulement les caractères. Commander plusieurs langues ensemble ouvre droit à la remise sur toute la commande.

Les textes écrits en dur dans mes composants seront-ils traduits ?

Non, seulement ce qui figure dans messages.xlf. Un texte sans attribut i18n ni $localize n'est pas extrait par Angular et reste donc dans la langue d'origine. Faites une passe de marquage avant l'extraction.

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