Internationaliser un site React ou Next.js

Guide i18n pour React et Next.js

Internationaliser un site React ou Next.js (next-intl) | We.Inc

Traduisez correctement un site React ou Next.js : fichiers de messages, routage par langue avec next-intl, formatage Intl des dates, des montants et des pluriels, mises en page de droite à gauche et balises hreflang.

Gardez toutes les chaînes dans un fichier de messages JSON par langue, donnez à chaque langue sa propre URL comme /de/about, et formatez les dates, les prix et les pluriels avec les API Intl intégrées au navigateur. Dans le Next.js App Router, next-intl relie le tout : un segment de route [locale], un proxy qui choisit la langue, et useTranslations dans les composants.

Les éléments d'un site traduit

Traduire, ce n'est pas seulement remplacer des mots. L'ordre des mots change, les règles de pluriel diffèrent, l'arabe se lit de droite à gauche et chaque pays écrit les dates à sa façon. Essayez le sélecteur ci-dessous pour voir une petite fiche produit changer de langue, puis construisez la même chose dans votre application avec les fichiers de configuration et le générateur hreflang.

Questions fréquentes

Quelle bibliothèque i18n utiliser avec React ?

Pour le Next.js App Router, next-intl est conçu exprès et prend en charge les Server Components. Pour une application React sans Next.js, choisissez une bibliothèque qui stocke les messages en JSON, pour qu'un passage ultérieur à une autre reste gérable.

Les langues doivent-elles être dans des sous-dossiers, des sous-domaines ou des domaines distincts ?

Les sous-dossiers comme example.com/de/ sont les plus simples à gérer, car un seul site et un seul domaine portent tout. next-intl prend aussi en charge le routage par domaine si vous avez besoin de de.example.com ou d'un domaine national.

Comment ajouter hreflang dans Next.js ?

Renvoyez alternates.languages depuis metadata ou generateMetadata, avec une entrée par URL de langue. Next.js génère une balise link rel="alternate" hreflang pour chacune. Chaque version linguistique doit lister toutes les autres et elle-même, sinon les moteurs de recherche risquent d'ignorer l'ensemble.

Puis-je traduire mon site automatiquement ?

Vous pouvez utiliser la traduction automatique comme premier jet, mais faites-la relire par une personne qui maîtrise la langue, surtout les titres, les prix et les textes juridiques. Des traductions pauvres ou non relues peuvent dérouter les lecteurs et affaiblir la confiance.

Des messages, pas des chaînes dans les composants

Laissez Intl s'occuper du formatage

Langues de droite à gauche

Configuration de next-intl pour l'App Router

Installez avec npm install next-intl. Ces fichiers suivent la structure du guide de démarrage de next-intl pour le routage par locale.

Un fichier par langue, avec les mêmes clés dans chacun. La syntaxe ICU gère les pluriels à l'intérieur du message.

src/i18n/routing.ts et src/proxy.ts

Le routage liste vos locales une seule fois. Le proxy (appelé middleware.ts avant Next.js 16) redirige les visiteurs vers un préfixe de langue.

src/i18n/request.ts

Lit la locale depuis le segment [locale], rejette les locales inconnues et charge les messages de cette langue.

next.config.ts, layout et une page

Le plugin relie request.ts. Déplacez vos pages sous app/[locale]/ et lisez les messages avec useTranslations. next/root-params est activé par défaut à partir de Next.js 16.3 ; les versions antérieures nécessitent experimental.rootParams.

Formater sans bibliothèque

Intl en JavaScript pur

Fonctionne dans n'importe quelle application React, traduite ou non.

Les règles hreflang que vérifient les moteurs de recherche

Bien annoter les langues

Essayez : une fiche en cinq langues

Changez de langue et modifiez le nombre d'articles. Les chaînes viennent d'un objet de messages, et le prix, la date et la forme du pluriel viennent des API Intl du navigateur.

Langue

Articles dans le panier : {n}

Catégorie de pluriel choisie :

Sens :

La démo ne convertit aucune devise ; elle formate seulement le même nombre.

Générateur hreflang

Saisissez votre domaine, un chemin de page et vos codes de langue pour obtenir les balises link du head, ou l'objet alternates de Next.js.

Domaine

Chemin de la page

Codes de langue (séparés par des virgules)

Langue x-default

Codes invalides ignorés : {codes}. Utilisez une forme comme de ou en-GB.

Format de sortie

Balises link HTML

Metadata Next.js

Copier

Commencer gratuitement · Sans carte bancaire

Voir aussi: Guides

Produit

Pour qui

Fonctionnalités

Ressources

Entreprise

Plan du site