Lab 24 : Internationalisation (i18n)
📖 Ressources
Section intitulée « 📖 Ressources »🚀 Code de départ
Section intitulée « 🚀 Code de départ »album-wholesale-v17-signal-pre-jest
Dans ce lab, vous ajouterez la prise en charge multi-langues à l’application album wholesale en utilisant le système i18n natif d’Angular. Vous marquerez les chaînes pour la traduction, extrairez un fichier de messages XLIFF, fournirez une traduction française et construirez un bundle localisé.
📝 Instructions
Section intitulée « 📝 Instructions »Étape 1 : Marquer les chaînes dans les templates
Section intitulée « Étape 1 : Marquer les chaînes dans les templates »Ajoutez l’attribut i18n aux éléments texte :
<!-- Texte simple --><h1 i18n="@@app.title">Album Store</h1>
<!-- Avec description pour les traducteurs --><p i18n="Nombre d'albums|Affiche le nombre d'albums@@album.count"> Albums disponibles</p>
<!-- Traduction d'attribut --><input type="search" i18n-placeholder="@@search.placeholder" placeholder="Rechercher des albums…"/>
<!-- Bouton --><button i18n="@@cart.add">Ajouter au panier</button>Marquez au moins 5 chaînes dans l’application.
Étape 2 : Configurer la locale source
Section intitulée « Étape 2 : Configurer la locale source »Dans angular.json, ajoutez la configuration i18n :
{ "projects": { "album-wholesale": { "i18n": { "sourceLocale": "en-US", "locales": { "fr": { "translation": "src/locale/messages.fr.xlf" } } } } }}Étape 3 : Extraire le fichier de messages
Section intitulée « Étape 3 : Extraire le fichier de messages »ng extract-i18n --format xlf2 --output-path src/localeCela génère src/locale/messages.xlf. Ouvrez le fichier — vous verrez chaque chaîne marquée comme une <trans-unit>.
Étape 4 : Créer la traduction française
Section intitulée « Étape 4 : Créer la traduction française »Copiez le fichier source et renommez-le :
cp src/locale/messages.xlf src/locale/messages.fr.xlfOuvrez messages.fr.xlf et ajoutez des éléments <target> pour chaque unité :
<trans-unit id="app.title" datatype="html"> <source>Album Store</source> <target>Boutique d'Albums</target></trans-unit>
<trans-unit id="cart.add" datatype="html"> <source>Add to cart</source> <target>Ajouter au panier</target></trans-unit>
<trans-unit id="search.placeholder" datatype="html"> <source>Search albums…</source> <target>Rechercher des albums…</target></trans-unit>Traduisez toutes les unités extraites.
Étape 5 : Utiliser les expressions pluriel et select
Section intitulée « Étape 5 : Utiliser les expressions pluriel et select »<!-- Pluriel --><p i18n="@@cart.items"> {itemCount, plural, =0 {Aucun article dans le panier} =1 {1 article dans le panier} other {{{itemCount}} articles dans le panier} }</p>
<!-- Select (genre ou catégorie) --><span i18n="@@album.type"> {albumType, select, vinyl {Disque vinyle} cd {Disque compact} other {Numérique} }</span>Ajoutez les traductions françaises pour ces expressions dans messages.fr.xlf :
<trans-unit id="cart.items" datatype="html"> <source> {itemCount, plural, =0 {No items in cart} =1 {1 item in cart} other {{{itemCount}} items in cart} } </source> <target> {itemCount, plural, =0 {Aucun article} =1 {1 article} other {{{itemCount}} articles} } </target></trans-unit>Étape 6 : Construire avec la localisation
Section intitulée « Étape 6 : Construire avec la localisation »Configurez la cible de build dans angular.json :
"build": { "configurations": { "fr": { "localize": ["fr"] }, "production": { "localize": true } }}Construisez toutes les locales :
ng build --localizeInspectez le dossier dist/ — vous devriez voir les sous-dossiers browser/en-US/ et browser/fr/.
Étape 7 : Servir et vérifier
Section intitulée « Étape 7 : Servir et vérifier »Servez le build français localement :
cd dist/album-wholesale/browser/frnpx http-server -p 8080Ouvrez http://localhost:8080 et vérifiez que toutes les chaînes marquées apparaissent en français.

