Traduire une application Angular en japonais
Déposez le fichier messages.xlf produit par ng extract-i18n : Manuce remplit les cibles en japonais, conserve les balises d'interpolation et vous rend le même fichier, prêt à devenir messages.ja.xlf. Le japonais impose ses propres règles (ordre des mots, ponctuation pleine chasse, une seule forme de pluriel, registre poli) : voici ce qu'il faut préparer et vérifier.
Combien ça coûte
Pour les fichiers de langue d'une application Angular totalisant environ 2 500 mots, vers le japonais :
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 japonais change dans un messages.xlf
Le japonais mêle trois écritures : les kanji pour les notions (設定, « réglages »), les hiragana pour la grammaire (を, が, ます), les katakana pour les mots empruntés (ダウンロード). Il n'y a pas d'espace entre les mots et la ponctuation est pleine chasse : 、 pour la virgule, 。 pour le point, ? et : en fin de libellé. Une cible japonaise ne garde donc aucune espace autour des signes, contrairement à la typographie française.
L'ordre des mots est sujet-objet-verbe. La chaîne Supprimer {{ fileName }} ? devient {{ fileName }}を削除しますか? : la variable passe en tête. Dans le XLIFF, la balise <x id="INTERPOLATION" equiv-text="{{ fileName }}"/> (ou <ph name="INTERPOLATION"/> en XLIFF 2.0) change de place dans la cible. C'est normal : Angular reconstitue la phrase à partir de la position des balises, pas de leur ordre dans la source.
Le registre compte. Dans une interface professionnelle, les messages se terminent en forme polie (-masu, -desu) : 保存しました plutôt que 保存した pour « Enregistré ». Les boutons restent des noms ou des verbes courts : 保存, キャンセル, 閉じる. Les messages de validation des formulaires suivent la même logique : « Ce champ est obligatoire » se rend par この項目は必須です.
Pluriels ICU et formats : ce que la locale ja fait d'elle-même
Le CLDR ne connaît qu'une catégorie de pluriel pour le japonais : other. Une expression {count, plural, =0 {Aucun fichier} one {1 fichier} other {{{count}} fichiers}} reste valide, mais avec la locale ja, Angular n'utilise jamais la branche one : pour une quantité de 1, c'est other qui s'affiche. La cible utile est donc other {{{count}}件のファイル}, correcte pour toutes les quantités. Les cas explicites comme =0 ou =1, eux, restent appliqués.
Le japonais ne marque pas le genre grammatical : une expression select sur le genre aboutit souvent à des branches identiques. Ce n'est pas une erreur, et la structure ICU doit rester intacte pour que le fichier compile.
Les dates, nombres et devises ne passent pas par la traduction : DatePipe et CurrencyPipe les formatent selon la locale. Avec ja, le format longDate donne 2025年3月14日 et le yen s'affiche sans décimales. Un format écrit en dur comme 'dd/MM/yyyy' dans un gabarit ne sera pas modifié : préférez les formats nommés avant l'extraction.
Ce que Manuce rend, et ce qu'il ne fait pas
Vous déposez le fichier produit par ng extract-i18n, en XLIFF 1.2 ou 2.0. Manuce remplit les cibles et vous rend le même fichier : indentation, ordre des clés, guillemets, commentaires, fins de ligne, encodage et BOM sont conservés ; seules les valeurs changent. Renommé messages.ja.xlf, il se replace dans le projet.
Chaque valeur japonaise est comparée à la source : mêmes balises, mêmes variables. Si un écart persiste, la valeur source est gardée et le rapport le dit. Vous savez ainsi quelles unités sont restées dans la langue d'origine et pourquoi, au lieu de le découvrir à la compilation.
Ne sont pas traduits : les identifiants d'unité (y compris vos @@id personnalisés), les valeurs vides, URL, adresses email, nombres, couleurs, formats de date, identifiants et tout ce qui est marqué non traduisible. Le prix porte sur les mots des valeurs, clés et balises exclues ; le japonais est une langue à supplément (coefficient ×1,6).
Manuce ne touche ni à angular.json, ni à vos gabarits, ni à vos feuilles de style : la déclaration de la locale, la compilation et le contrôle visuel restent de votre côté. Il ne produit pas non plus de traduction assermentée, si un texte juridique de l'application devait être certifié.
Préparer le fichier et vérifier le rendu
- Donnez du contexte dans les attributs :
i18n="bouton|Ferme la fenêtre de dialogue@@closeDialog". « Fermer » une fenêtre se dit 閉じる, mais un ticket « Fermé » se rend par 完了 ou クローズ. Le sens et la description passent dans le XLIFF et lèvent l'ambiguïté. - Ne découpez pas les phrases. Un texte réparti en trois éléments
i18n(Bonjour,<b>{{ name }}</b>,bienvenue) ne peut pas être réordonné. Gardez la phrase dans un seul élément, balises internes comprises : le japonais placera le nom et la formule de politesse là où il le faut ({{ name }}様、ようこそ). - Évitez la concaténation en TypeScript :
'Page ' + n + ' sur ' + totalne deviendra jamais{{ total }}ページ中{{ n }}ページ目. Utilisez$localizeavec des placeholders, queng extract-i18nplace dans le même fichier. - Prévoyez les polices : ajoutez au
font-familydes polices japonaises de repli (Hiragino Sans, Yu Gothic, Noto Sans JP) et vérifiez que la page portelang="ja", faute de quoi certains systèmes affichent les kanji avec des glyphes chinois. - Testez la longueur : 設定 est plus court que « Paramètres », mais les katakana allongent vite (« Télécharger » → ダウンロード) et chaque caractère est pleine chasse. Sans espaces, le navigateur coupe les lignes presque partout : contrôlez les boutons, les onglets et les colonnes étroites.
En pratique
- Lancez ng extract-i18n et récupérez messages.xlf (XLIFF 1.2 ou 2.0).
- Déposez le fichier : devis immédiat sur le nombre exact de mots et extrait gratuit d'un paragraphe au niveau choisi.
- Récupérez le fichier rempli et le rapport, puis renommez-le messages.ja.xlf.
- Déclarez la locale ja dans le projet, compilez et vérifiez le rendu des écrans.
Questions fréquentes
Faut-il garder la branche one dans mes pluriels ICU ?
La structure ICU reste telle quelle pour que le fichier compile. Avec la locale ja, Angular n'utilise que la branche other, qui doit donc convenir à toutes les quantités. Les cas explicites =0 ou =1 restent pris en compte.
Les balises d'interpolation peuvent-elles changer de place dans la cible ?
Oui, et c'est indispensable en japonais, où le verbe se place en fin de phrase. Les balises sont conservées et chaque cible est comparée à la source. Si une balise manque ou diffère, la valeur source est gardée et le rapport l'indique.
Quel registre de politesse est utilisé ?
Pour une interface professionnelle, la forme polie en -masu et -desu est la norme dans les messages, tandis que les boutons restent des mots courts. Si votre application vise un public particulier, précisez-le dans les descriptions des attributs i18n.
Les chaînes $localize de mon code TypeScript sont-elles traduites ?
Oui, si elles figurent dans le messages.xlf produit par ng extract-i18n : elles y sont traitées comme les autres unités. Les chaînes concaténées à la main, en revanche, n'apparaissent pas dans le fichier et restent dans la langue d'origine.
Puis-je commander le japonais avec d'autres langues ?
Oui, la remise s'applique à toute la commande dès deux langues : −20 % pour 2, −30 % pour 3, −40 % pour 4 et −50 % à partir de 5. Chaque langue est rendue dans son propre fichier, au même format.
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 japonais, 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.