ManuceTraduire un fichierTraduire une application Angular en allemand

Traduire une application Angular en allemand

Pour traduire une application Angular en allemand, on traduit le fichier messages.xlf produit par ng extract-i18n. Manuce remplit les cibles en allemand, garde les balises d'interpolation et rend le même fichier XLIFF, accompagné d'un rapport. Reste à vérifier ce que l'allemand impose à l'interface : des libellés plus longs, des majuscules aux noms et un registre cohérent.

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 l’allemand :

Essentiel
15 €

Comprendre, usage interne.

Professionnel
45 €

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

Premium
88 €

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 contient messages.xlf et ce qui doit en sortir

Avec l'internationalisation intégrée d'Angular, les textes marqués par l'attribut i18n dans les gabarits et par $localize dans le code TypeScript sont extraits par ng extract-i18n dans un fichier messages.xlf. Ce fichier est au format XLIFF 1.2 par défaut, ou XLIFF 2.0 sur option. C'est lui, et lui seul, qu'il faut traduire : chaque unité contient une <source> dans la langue d'origine et attend une <target> en allemand.

La difficulté tient aux balises insérées dans les phrases. Un gabarit comme Vous avez reçu {{ nb }} <b>messages</b> devient, en XLIFF 1.2, une source parsemée d'éléments <x id="INTERPOLATION"/> et <x id="START_BOLD_TEXT"/>. En allemand, ces balises changent souvent de place, car le participe part en fin de phrase : « Sie haben {{ nb }} <b>Nachrichten</b> erhalten ». Si une balise est perdue ou mal fermée, la compilation de la version allemande échoue.

Les identifiants d'unité ne doivent pas bouger, qu'ils soient générés par Angular ou fixés avec @@ (par exemple i18n="@@boutonEnregistrer"). C'est par eux que le compilateur relie la traduction au gabarit.

L'allemand dans une interface Angular : longueur, majuscules, pluriels

  • Longueur. Le texte allemand est souvent 20 à 35 % plus long que l'anglais, et les mots composés ne se coupent pas d'eux-mêmes. « Droits d'accès » devient « Zugriffsberechtigungen », et « Paramètres du compte » devient « Kontoeinstellungen ». Un onglet, un bouton ou une colonne calibrés pour le français peuvent alors déborder.
  • Majuscules. Tous les noms prennent une majuscule, y compris dans un bouton : « Ajouter au panier » devient « In den Warenkorb ». Une règle CSS text-transform: lowercase ou capitalize héritée de la version française fausse le résultat.
  • Registre. On emploie Sie dans un logiciel professionnel, et souvent du dans une application grand public. Un mélange dans la même interface (« Melden Sie sich an » ici, « Speichere deine Daten » là) se remarque aussitôt.
  • Ponctuation. L'allemand ne met pas d'espace avant « ? », « ! » ou « : », et ses guillemets s'écrivent „…“. « Mot de passe oublié ? » donne donc « Passwort vergessen? », sans l'espace insécable.
  • Pluriels ICU. L'allemand n'a que deux catégories CLDR, one et other. Ainsi, {count, plural, =0 {Aucun fichier} =1 {Un fichier} other {{{count}} fichiers}} devient =0 {Keine Datei} =1 {Eine Datei} other {{{count}} Dateien}. Les mots-clés restent tels quels, seul le texte entre accolades change. Attention au zéro : en français, 0 relève de one ; en allemand, il relève de other (« 0 Dateien »). Une source qui compte sur one pour le zéro doit être revue.

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

Vous déposez le messages.xlf, ou sa copie messages.de.xlf, en XLIFF 1.2 ou 2.0. Manuce remplit les cibles en allemand et conserve les balises d'interpolation. Le fichier rendu est le même : indentation, ordre des unités, guillemets, commentaires, fins de ligne, encodage et BOM restent identiques. Seules les valeurs changent, ce qui garde un diff lisible dans votre dépôt.

Chaque valeur traduite est comparée à la source : les variables et les balises doivent être les mêmes. Si un écart persiste, par exemple un <x id="INTERPOLATION_1"/> manquant, la valeur source est gardée et le rapport le signale.

Certains éléments ne sont pas traduits : les identifiants, 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.

Vous recevez le fichier XLIFF prêt à remettre dans le projet, souvent dans src/locale/. Il est accompagné d'un rapport qui liste les chaînes traduites, celles laissées telles quelles et la raison.

En revanche, Manuce ne modifie ni vos gabarits ni votre angular.json, ne compile pas l'application et ne contrôle pas l'affichage. Un texte écrit en dur dans un composant, sans i18n ni $localize, n'est pas dans le fichier : il ne sera donc pas traduit. Pour des conditions générales (AGB) destinées à une clientèle allemande, prévoyez une relecture juridique. Manuce ne produit pas de traduction assermentée.

Préparer le fichier et vérifier le build allemand

  1. Donnez du contexte aux libellés ambigus avec le sens et la description : i18n="bouton|Enregistre le profil@@saveProfile". « Enregistrer » peut se traduire par « Speichern » (sauvegarder) ou par « Registrieren » (s'inscrire), et une chaîne isolée ne permet pas de trancher.
  2. Vérifiez l'en-tête du fichier : target-language="de" sur l'élément <file> en XLIFF 1.2, ou trgLang="de" sur la racine en 2.0.
  3. Déclarez la locale "de" dans le bloc i18n de angular.json, en la faisant pointer vers le fichier traduit, puis lancez ng build --localize.
  4. Parcourez les écrans les plus denses : barres d'onglets, en-têtes de tableau, boutons à largeur fixe. Avec lang="de" sur la page, la règle CSS hyphens: auto laisse le navigateur couper les mots composés.
  5. Contrôlez les pipes. Avec la locale de, DatePipe affiche 15.03.2025 et CurrencyPipe affiche 1.234,56 €. Ces formats viennent des données de locale d'Angular, pas de la traduction : une date écrite en dur dans une chaîne restera telle quelle.
  6. Lisez le rapport : chaque chaîne restée dans la langue source y figure, avec sa raison.

En pratique

  1. Lancez ng extract-i18n, puis copiez messages.xlf sous le nom messages.de.xlf.
  2. Déposez le fichier sur Manuce : le devis s'affiche aussitôt, et vous pouvez obtenir un paragraphe traduit gratuitement pour juger du résultat.
  3. Récupérez le fichier XLIFF rempli en allemand et le rapport des chaînes.
  4. Placez le fichier dans le projet, déclarez la locale de dans angular.json, puis lancez ng build --localize.
  5. Vérifiez les écrans denses, les pluriels et les chaînes signalées par le rapport.

Questions fréquentes

Mon projet utilise XLIFF 2.0 : faut-il le convertir ?

Non. Manuce traite le messages.xlf en XLIFF 1.2 comme en 2.0 et rend le fichier dans le même format. Gardez celui que votre configuration Angular attend.

Les balises comme <x id="INTERPOLATION"/> survivent-elles au changement d'ordre des mots allemand ?

Elles sont conservées et chaque valeur traduite est comparée à la source. Si une variable ou une balise manque malgré tout, la valeur source est gardée et le rapport l'indique, pour que le build ne casse pas.

Sie ou du : quel registre obtiendrai-je ?

Pour une application professionnelle, Sie est l'usage attendu en allemand. Vérifiez le registre sur l'extrait gratuit avant de payer, puis contrôlez la cohérence sur les écrans de connexion et les messages d'erreur, où le mélange se voit le plus.

Comment sont traités les pluriels ICU ?

Le texte entre accolades est traduit, tandis que la structure et les mots-clés (plural, =0, one, other) restent en place. L'allemand n'utilisant que one et other, vérifiez surtout le cas du zéro si votre source française le rangeait dans one.

Quels mots sont comptés dans le devis ?

Seuls les mots des valeurs à traduire sont comptés. Les identifiants d'unité, les balises, les URL et les nombres en sont exclus. Le devis s'affiche dès le dépôt du fichier, calculé sur le nombre exact de mots.

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