Posez votre question et obtenez un résumé du document en referencant cette page et le Provider AI de votre choix
Le contenu de cette page a été traduit à l'aide d'une IA.
Voir la dernière version du contenu original en anglaisSi vous avez une idée d’amélioration pour améliorer cette documentation, n’hésitez pas à contribuer en submitant une pull request sur GitHub.
Lien GitHub de la documentationCopier le Markdown du doc dans le presse-papiers
Traduisez votre site Next.js 15 utilisant next-intl avec Intlayer | Internationalisation (i18n)
Ce guide vous accompagne à travers les bonnes pratiques de next-intl dans une application Next.js 15 (App Router), et montre comment superposer Intlayer pour une gestion robuste des traductions et une automatisation efficace.
Consultez la comparaison dans next-i18next vs next-intl vs Intlayer.
- Pour les débutants : suivez les sections étape par étape pour obtenir une application multilingue fonctionnelle.
- Pour les développeurs intermédiaires : faites attention à l’optimisation du payload et à la séparation serveur/client.
- Pour les seniors : notez la génération statique, le middleware, l’intégration SEO et les hooks d’automatisation.
Ce que nous allons couvrir :
- Configuration et structure des fichiers
- Optimisation du chargement des messages
- Utilisation des composants client et serveur
- Métadonnées, sitemap, robots pour le SEO
- Middleware pour le routage des locales
- Ajout d’Intlayer par-dessus (CLI et automatisation)
Configurez votre application avec next-intl
Installez les dépendances next-intl :
Copier le code dans le presse-papiers
Copier le code dans le presse-papiers
Configuration et chargement du contenu
Chargez uniquement les namespaces dont vos routes ont besoin et validez les locales dès le début. Gardez les composants serveur synchrones lorsque c’est possible et envoyez uniquement les messages nécessaires au client.
Copier le code dans le presse-papiers
Copier le code dans le presse-papiers
Copier le code dans le presse-papiers
Utilisation dans un composant client
Prenons un exemple d'un composant client affichant un compteur.
Traductions (forme réutilisée ; chargez-les dans les messages next-intl comme vous préférez)
Copier le code dans le presse-papiers
Copier le code dans le presse-papiers
Composant client
Copier le code dans le presse-papiers
N'oubliez pas d'ajouter le message "about" dans les messages client de la page (n'incluez que les namespaces dont votre client a réellement besoin).
Utilisation dans un composant serveur
Ce composant UI est un composant serveur et peut être rendu sous un composant client (page → client → serveur). Gardez-le synchrone en passant des chaînes pré-calculées.
Copier le code dans le presse-papiers
Notes :
- Calculez
formattedCountcôté serveur (par exemple,const initialFormattedCount = format.number(0)). /// Évitez de passer des fonctions ou des objets non sérialisables dans les composants serveur.
Copier le code dans le presse-papiers
Copier le code dans le presse-papiers
Copier le code dans le presse-papiers
Middleware pour le routage des locales
Ajoutez un middleware pour gérer la détection de la locale et le routage :
Copier le code dans le presse-papiers
Bonnes pratiques
- Définir les attributs html
langetdir: Danssrc/app/[locale]/layout.tsx, calculezdirviagetLocaleDirection(locale)et définissez<html lang={locale} dir={dir}>. - Séparer les messages par namespace : Organisez les fichiers JSON par locale et namespace (par exemple,
common.json,about.json). - Minimiser la charge côté client : Sur les pages, envoyer uniquement les namespaces requis à
NextIntlClientProvider(par exemple,pick(messages, ['common', 'about'])). - Préférer les pages statiques : Exporter
export const dynamic = 'force-static'et générer des paramètres statiques pour toutes leslocales. - Composants serveur synchrones : Passer des chaînes pré-calculées (labels traduits, nombres formatés) plutôt que des appels asynchrones ou des fonctions non sérialisables.
Implémenter Intlayer par-dessus next-intl
Installer les dépendances d'intlayer :
Copier le code dans le presse-papiers
Créer le fichier de configuration intlayer :
Copier le code dans le presse-papiers
Ajoutez les scripts dans package.json :
Copier le code dans le presse-papiers
Notes :
intlayer fill: utilise votre fournisseur d'IA pour remplir les traductions manquantes en fonction des locales configurées.intlayer test: vérifie les traductions manquantes ou invalides (à utiliser en CI).
Vous pouvez configurer les arguments et les fournisseurs ; voir Intlayer CLI.