ManuceTraduire un fichierTraduire une application Java (Spring) en chinois simplifié

Traduire une application Java (Spring) en chinois simplifié

Manuce traduit les valeurs de vos fichiers messages.properties en chinois simplifié et vous rend le même fichier, prêt à devenir messages_zh_CN.properties. Clés, variables {0}, échappements \uXXXX, commentaires et encodage restent en place. Un rapport indique chaque chaîne laissée telle quelle et pourquoi.

Déposer mon fichier Voir les tarifs

Combien ça coûte

Pour les fichiers de langue d'une application Java (Spring) totalisant environ 2 000 mots, vers le chinois :

Essentiel
19 €

Comprendre, usage interne.

Professionnel
58 €

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

Premium
112 €

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 messages Spring

Le chinois n'a qu'une catégorie de pluriel CLDR, other. Une valeur comme cart.items={0} articles devient cart.items=购物车中有 {0} 件商品\u00a0: pas de singulier, mais un classificateur placé devant le nom (件 pour des objets, 条 pour des messages, 个 en usage général). Si vous employez un motif {0,choice,0#aucun article|1#un article|1<{0} articles}, ses branches se ressembleront en chinois\u00a0; vous pourrez le simplifier dans le code une fois la traduction reçue.

La ponctuation passe en pleine chasse\u00a0: , 。 : ?. Le message Erreur : fichier introuvable. devient 错误:找不到文件。, sans espace avant les deux-points. Il n'y a pas d'espace entre les mots\u00a0; l'usage d'une espace entre un caractère chinois et une variable ou un chiffre varie selon les projets, l'essentiel est de rester constant d'un écran à l'autre.

Registre\u00a0: dans une interface professionnelle destinée à la Chine continentale, on s'adresse à l'utilisateur avec 您 plutôt que 你. Les libellés de boutons sont très brefs\u00a0: 保存 (enregistrer), 取消 (annuler), 删除 (supprimer).

Longueur\u00a0: un texte chinois compte deux à trois fois moins de caractères que le français, mais chaque caractère est plus large. La place occupée à l'écran varie donc peu. Ce sont surtout les retours à la ligne qui changent, puisque le navigateur peut couper entre deux caractères quelconques.

Encodage, échappements et nom de fichier\u00a0: les pièges propres à Java

Historiquement, Properties.load(InputStream) lit les fichiers en ISO-8859-1, un encodage qui ne contient aucun idéogramme. C'est pourquoi beaucoup de projets écrivent les caractères non latins sous forme d'échappements, par exemple \u4fdd\u5b58 pour 保存. Depuis Java 9, ResourceBundle lit les .properties en UTF-8, et Spring Boot règle spring.messages.encoding sur UTF-8 par défaut. Un ResourceBundleMessageSource configuré à la main ou un ancien outil de build peut toutefois encore attendre de l'ISO-8859-1.

Avant l'envoi, vérifiez donc comment le fichier est enregistré et lu\u00a0:

  • en UTF-8, les caractères chinois y seront écrits tels quels\u00a0;
  • si votre projet repose sur les échappements \uXXXX, Manuce les conserve là où ils sont utilisés\u00a0;
  • un fichier en ISO-8859-1 sans échappements ne peut pas contenir de hanzi\u00a0: convertissez-le en UTF-8 au préalable.

Nom du fichier\u00a0: pour le chinois simplifié, la convention est messages_zh_CN.properties (locale Locale.SIMPLIFIED_CHINESE), ou messages_zh.properties si vous ne distinguez pas les variantes. Spring cherche d'abord zh_CN, puis zh, puis le fichier par défaut. Conséquence\u00a0: un navigateur réglé sur zh-TW retombera lui aussi sur messages_zh.properties et affichera du simplifié à un lecteur de Taïwan. Le chinois traditionnel est une langue distincte chez Manuce\u00a0; il se commande à part et se range dans messages_zh_TW.properties.

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

Vous déposez votre fichier de messages (messages.properties, messages_fr.properties…) et vous recevez le même fichier, dans le même format\u00a0: indentation, ordre des clés, guillemets, commentaires, fins de ligne, encodage et BOM conservés. Seules les valeurs changent.

  • Les variables {0}, {1} et les balises présentes dans les valeurs sont comparées à la source pour chaque chaîne. Si une valeur chinoise perd un {1} et que l'écart persiste, la valeur source est gardée et le rapport le signale.
  • Les apostrophes de MessageFormat sont gérées\u00a0: l''identifiant {0} ne laisse pas derrière lui une apostrophe orpheline qui empêcherait le remplacement de {0}.
  • Les lignes de continuation, terminées par une barre oblique inverse, restent valides.
  • Ne sont pas traduits\u00a0: les clés, les valeurs vides, les URL, les adresses e-mail, les nombres, les couleurs, les formats de date, les identifiants et tout ce que vous marquez non traduisible. Une ligne date.pattern=dd/MM/yyyy reste donc identique.

Le rapport livré avec le fichier liste les chaînes traduites et celles laissées telles quelles, avec la raison. Le prix porte sur les mots des valeurs, clés et balises exclues, avec le coefficient ×1,6 propre au chinois.

Manuce ne touche pas à votre code\u00a0: il ne configure pas le LocaleResolver, ne traduit pas les textes écrits en dur dans les gabarits Thymeleaf ou les classes Java, n'adapte pas les motifs de date et n'installe aucune police. Il ne produit pas non plus de traduction assermentée\u00a0: si des mentions légales doivent être certifiées, passez par un traducteur expert.

Préparer le fichier et vérifier avant la mise en production

  • Polices. Une police latine n'a pas les caractères chinois. Les PDF générés côté serveur (JasperReports, OpenPDF) et les images dessinées en Java2D afficheront des carrés si aucune police CJK n'est disponible. Embarquez une police comme Noto Sans CJK SC, y compris dans votre image Docker, et déclarez-la dans vos modèles de documents.
  • Dates et nombres. Les motifs restent ceux de la source\u00a0: passez-les vous-même à l'usage chinois, par exemple yyyy-MM-dd ou yyyy年M月d日, ou laissez DateTimeFormatter.ofLocalizedDate choisir selon la locale.
  • Non traduisible. Marquez ce qui doit rester en caractères latins\u00a0: nom de marque, code produit, nom de module.
  • Test. Appelez l'application avec l'en-tête Accept-Language: zh-CN ou le paramètre de votre LocaleChangeInterceptor, puis parcourez les messages de validation, les courriels et les menus.
  • Mise en page. Contrôlez les colonnes étroites et les infobulles\u00a0: une coupure entre deux caractères peut rejeter un 。 ou un , en début de ligne.

Pour juger le rendu avant de payer, l'extrait gratuit traduit un paragraphe du fichier au niveau choisi\u00a0: prenez une portion qui contient des variables et des messages d'erreur.

En pratique

  1. Vérifiez l'encodage du fichier source (UTF-8 ou échappements \uXXXX) et marquez les valeurs à ne pas traduire.
  2. Déposez le fichier .properties\u00a0: le devis s'affiche aussitôt, calculé sur les mots des valeurs.
  3. Demandez l'extrait gratuit pour juger le chinois obtenu, puis réglez la commande.
  4. Renommez le fichier reçu en messages_zh_CN.properties et placez-le à côté des autres fichiers de messages.
  5. Testez avec Accept-Language: zh-CN et vérifiez polices, dates et mise en page.

Questions fréquentes

Faut-il nommer le fichier messages_zh ou messages_zh_CN\u00a0?

Pour du chinois simplifié, messages_zh_CN.properties est le plus précis. Avec messages_zh.properties seul, un utilisateur en zh-TW recevra aussi le simplifié, car Spring retombe de zh_TW sur zh. Si vous prévoyez le traditionnel, gardez les deux variantes séparées.

Les caractères chinois seront-ils écrits en clair ou en \uXXXX\u00a0?

Le fichier rendu garde l'encodage et le BOM de la source, et les échappements \uXXXX sont conservés s'ils sont utilisés. Le plus simple est de partir d'un fichier UTF-8, lu tel quel par Spring Boot. Si votre chaîne d'outils exige des échappements partout, un plugin Maven ou Gradle peut les produire après coup.

Comment sont gérés les pluriels en chinois\u00a0?

Le chinois n'a qu'une forme (catégorie CLDR other)\u00a0: le nombre s'exprime avec un classificateur, comme 件 ou 条. Les variables de chaque valeur sont vérifiées par rapport à la source. Relisez vos motifs choice après traduction\u00a0: ils peuvent souvent être simplifiés côté code.

Pourquoi le chinois coûte-t-il plus cher que d'autres langues\u00a0?

Le chinois est une langue à supplément, avec un coefficient ×1,6 sur le prix au mot. Le décompte porte uniquement sur les mots des valeurs\u00a0: les clés et les balises ne sont pas comptées. Le devis exact s'affiche dès le dépôt du fichier.

Puis-je obtenir aussi le chinois traditionnel pour Taïwan ou Hong Kong\u00a0?

Oui, mais c'est une langue distincte chez Manuce, à ajouter comme seconde langue cible. La remise s'applique alors à toute la commande, −20\u00a0% pour deux langues. Vous rangerez ce second fichier dans messages_zh_TW.properties.

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