Posez votre question et obtenez un résumé du document en referencant cette page et le Provider AI de votre choix
Historique des versions
- "Mettre à jour l'utilisation de l'API useIntlayer de Solid pour un accès direct aux propriétés"v8.9.004/05/2026
- "Mise à jour de LocaleSwitcher, SEO, métadonnées"v7.3.1107/12/2025
- "Historique initial"v5.5.1029/06/2025
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 Nuxt et Vue avec Intlayer | Internationalisation (i18n)
Table des matières
Pourquoi Intlayer plutôt que des alternatives ?
Par rapport aux solutions principales telles que @nuxtjs/i18n ou i18next, Intlayer est une solution dotée d'optimisations intégrées telles que :
Intlayer est optimisé pour fonctionner parfaitement avec Nuxt en offrant un routage multilingue, un middleware pour la détection des paramètres régionaux, un plan du site et toutes les fonctionnalités nécessaires à la mise à l'échelle de l'internationalisation (i18n).
Au lieu de charger de lourds fichiers JSON dans vos pages, ne chargez que le contenu strictement nécessaire. Intlayer vous aide à réduire la taille de votre bundle et de vos pages jusqu'à 50 %.
Déclarer le contenu directement au plus près de vos composants facilite la maintenance des applications de grande envergure. Vous pouvez dupliquer ou supprimer le dossier d'une fonctionnalité sans le fardeau mental de devoir passer en revue toute votre base de code de contenu. De plus, Intlayer est entièrement typé pour garantir l'exactitude de vos traductions.
La colocalisation du contenu réduit le contexte nécessaire aux grands modèles de langage (LLM). Intlayer est également livré avec une suite d'outils, tels qu'une CLI pour vérifier les traductions manquantes, un LSP, un MCP et des agent skills, afin de rendre l'expérience développeur (DX) encore plus fluide pour les agents IA.
Automatisez les traductions dans votre pipeline CI/CD en utilisant le LLM de votre choix au coût de votre propre fournisseur d'IA. Intlayer propose également un compilateur pour automatiser l'extraction de contenu, ainsi qu'une plateforme web pour vous aider à traduire en arrière-plan.
Associer de gros fichiers JSON à vos composants peut ralentir les performances et impacter la réactivité. Intlayer optimise le chargement du contenu directement au moment du build.
Bien plus qu'une simple solution i18n, Intlayer propose un éditeur visuel auto-hébergé et un CMS complet pour gérer votre contenu multilingue en temps réel. Cela rend la collaboration avec les traducteurs, concepteurs-rédacteurs et autres membres de l'équipe extrêmement simple. Le contenu peut être stocké localement et/ou à distance.
Guide étape par étape pour configurer Intlayer dans une application Nuxt
Voir le Modèle d'application sur GitHub.
Installer les dépendances
Installez les paquets nécessaires avec npm :
bashCopier le codeCopier le code dans le presse-papiers
l'indicateur
--interactiveest facultatif. Utilisezintlayer-cli initsi vous êtes un agent IA.Cette commande détectera votre environnement et installera les packages requis. Par exemple :
bashCopier le codeCopier le code dans le presse-papiers
intlayer
Le package principal qui fournit des outils d'internationalisation pour la gestion de la configuration, la traduction, la déclaration de contenu, la transpilation, et les commandes CLI.
vue-intlayer Le package qui intègre Intlayer avec l'application Vue. Il fournit les composables pour les composants Vue.
nuxt-intlayer Le module Nuxt qui intègre Intlayer avec les applications Nuxt. Il fournit une configuration automatique, un middleware pour la détection de la locale, la gestion des cookies, et la redirection des URL.
Configuration de votre projet
Créez un fichier de configuration pour configurer les langues de votre application :
intlayer.config.tsCopier le codeCopier le code dans le presse-papiers
import { Locales, type IntlayerConfig } from "intlayer"; const config: IntlayerConfig = { internationalization: { locales: [ Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH, // Vos autres locales ], defaultLocale: Locales.ENGLISH, }, }; export default config;Grâce à ce fichier de configuration, vous pouvez configurer des URLs localisées, la redirection via middleware, les noms des cookies, l'emplacement et l'extension de vos déclarations de contenu, désactiver les logs Intlayer dans la console, et bien plus encore. Pour une liste complète des paramètres disponibles, consultez la documentation de configuration.
Intégrer Intlayer dans votre configuration Nuxt
Ajoutez le module intlayer à votre configuration Nuxt :
nuxt.config.tsCopier le codeCopier le code dans le presse-papiers
Le module
nuxt-intlayergère automatiquement l'intégration d'Intlayer avec Nuxt. Il configure la construction des déclarations de contenu, surveille les fichiers en mode développement, fournit un middleware pour la détection de la locale, et gère le routage localisé.Déclarez Votre Contenu
Créez et gérez vos déclarations de contenu pour stocker les traductions :
Vos déclarations de contenu peuvent être définies n'importe où dans votre application tant qu'elles sont incluses dans le répertoire
contentDir(par défaut,./src). Et correspondent à l'extension des fichiers de déclaration de contenu (par défaut,.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}).Pour plus de détails, consultez la documentation sur la déclaration de contenu.
Utilisez Intlayer dans votre code
Accédez à vos dictionnaires de contenu dans toute votre application Nuxt en utilisant le composable
useIntlayer:components/HelloWorld.vueCopier le codeCopier le code dans le presse-papiers
Accès au contenu dans Intlayer
Intlayer propose différentes API pour accéder à votre contenu :
Syntaxe basée sur les composants (recommandée) : Utilisez la syntaxe
<myContent />, ou<Component :is="myContent" />pour rendre le contenu en tant que nœud Intlayer. Cela s'intègre parfaitement avec l'Éditeur Visuel et le CMS.Syntaxe basée sur les chaînes : Utilisez
{{ myContent }}pour afficher le contenu en texte brut, sans support de l'Éditeur Visuel.Syntaxe HTML brute : Utilisez
<div v-html="myContent" />pour afficher le contenu en HTML brut, sans support de l'Éditeur Visuel.Syntaxe de déstructuration : Le composable
useIntlayerretourne un Proxy contenant le contenu. Ce proxy peut être déstructuré pour accéder au contenu tout en conservant la réactivité.- Utilisez
const content = useIntlayer("myContent");et{{ content.myContent }}/<content.myContent />. - Ou utilisez
const { myContent } = useIntlayer("myContent");et{{ myContent}}/<myContent/>pour déstructurer le contenu.
- Utilisez
Changer la langue de votre contenu
FacultatifPour changer la langue de votre contenu, vous pouvez utiliser la fonction
setLocalefournie par le composableuseLocale. Cette fonction vous permet de définir la locale de l'application et de mettre à jour le contenu en conséquence.Créez un composant pour basculer entre les langues en utilisant
NuxtLink. Utiliser des liens plutôt que des boutons pour le changement de locale est une bonne pratique pour le SEO et la découvrabilité des pages, car cela permet aux moteurs de recherche d'explorer et d'indexer toutes les versions localisées de vos pages :components/LocaleSwitcher.vueCopier le codeCopier le code dans le presse-papiers
Utiliser
NuxtLinkavec des attributshrefappropriés (viagetLocalizedUrl) garantit que les moteurs de recherche peuvent découvrir toutes les variantes linguistiques de vos pages. Cela est préférable au changement de langue uniquement via JavaScript, que les robots des moteurs de recherche peuvent ne pas suivre.Ensuite, configurez votre
app.vuepour utiliser des layouts :app.vueCopier le codeCopier le code dans le presse-papiers
Ajouter le routage localisé à votre application
FacultatifNuxt gère automatiquement le routage localisé lorsqu'on utilise le module
nuxt-intlayer. Cela crée des routes pour chaque langue automatiquement en fonction de la structure de votre répertoire pages.Exemple :
plaintextCopier le codeCopier le code dans le presse-papiers
Pour créer des pages localisées, il suffit de créer vos fichiers Vue dans le répertoire
pages/. Voici deux exemples de pages :Page d'accueil (
pages/index.vue) :pages/index.vueCopier le codeCopier le code dans le presse-papiers
Page À propos (
pages/about.vue) :pages/about.vueCopier le codeCopier le code dans le presse-papiers
Remarque :
useHeadest importé automatiquement dans Nuxt. Vous pouvez accéder aux valeurs du contenu en utilisant soit.value(réactif) soit.raw(chaîne primitive) selon vos besoins.Le module
nuxt-intlayerfera automatiquement :- Détecter la locale préférée de l'utilisateur
- Gérer le changement de locale via l'URL
- Définir l'attribut
<html lang="">approprié - Gérer les cookies de locale
- Rediriger les utilisateurs vers l'URL localisée appropriée
Création d'un composant de lien localisé
FacultatifPour garantir que la navigation de votre application respecte la locale actuelle, vous pouvez créer un composant personnalisé
Links. Ce composant préfixe automatiquement les URLs internes avec la langue courante, ce qui est essentiel pour le SEO et la découvrabilité des pages.components/Links.vueCopier le codeCopier le code dans le presse-papiers
Ensuite, utilisez ce composant dans toute votre application :
layouts/default.vueCopier le codeCopier le code dans le presse-papiers
En utilisant
NuxtLinkavec des chemins localisés, vous vous assurez que :- Les moteurs de recherche peuvent explorer et indexer toutes les versions linguistiques de vos pages
- Les utilisateurs peuvent partager directement des URLs localisées
- L'historique du navigateur fonctionne correctement avec des URLs préfixées par la locale
Gérer les métadonnées et le SEO
FacultatifNuxt offre d'excellentes capacités SEO via le composable
useHead(auto-importé). Vous pouvez utiliser Intlayer pour gérer les métadonnées localisées en utilisant l'accesseur.rawou.valuepour obtenir la valeur primitive de chaîne :pages/about.vueCopier le codeCopier le code dans le presse-papiers
Alternativement, vous pouvez utiliser la fonction
import { getIntlayer } from "intlayer"pour obtenir le contenu sans la réactivité de Vue.Accéder aux valeurs du contenu :
- Utilisez
.rawpour obtenir la valeur primitive de la chaîne (non réactive) - Utilisez
.valuepour obtenir la valeur réactive - Utilisez la syntaxe composant
<content.key />pour le support de l'éditeur visuel
Créez la déclaration de contenu correspondante :
pages/about-page.content.tsCopier le codeCopier le code dans le presse-papiers
import { t, type Dictionary } from "intlayer"; const aboutPageContent = { key: "about-page", content: { metaTitle: t({ en: "About Us - My Company", fr: "À Propos - Ma Société", es: "Acerca de Nosotros - Mi Empresa", }), metaDescription: t({ en: "Learn more about our company and our mission", fr: "En savoir plus sur notre société et notre mission", es: "Conozca más sobre nuestra empresa y nuestra misión", }), title: t({ en: "About Us", fr: "À Propos", es: "Acerca de Nosotros", }), }, } satisfies Dictionary; export default aboutPageContent;- Utilisez
Créer une mise en page avec Navigation
FacultatifLes layouts Nuxt vous permettent de définir une structure commune pour vos pages. Créez un layout par défaut qui inclut le sélecteur de locale et la navigation :
layouts/default.vueCopier le codeCopier le code dans le presse-papiers
Le composant
Links(montré ci-dessous) garantit que les liens de navigation interne sont automatiquement localisés.
Configuration Git
Il est recommandé d'ignorer les fichiers générés par Intlayer. Cela vous permet d'éviter de les committer dans votre dépôt Git.
Pour ce faire, vous pouvez ajouter les instructions suivantes dans votre fichier .gitignore :
Copier le code dans le presse-papiers
Extension VS Code
Pour améliorer votre expérience de développement avec Intlayer, vous pouvez installer l’extension officielle Intlayer pour VS Code.
Installer depuis le Marketplace VS Code
Cette extension offre :
- Autocomplétion pour les clés de traduction.
- Détection d’erreurs en temps réel pour les traductions manquantes.
- Aperçus en ligne du contenu traduit.
- Actions rapides pour créer et mettre à jour facilement les traductions.
Pour plus de détails sur l’utilisation de l’extension, consultez la documentation de l’extension Intlayer pour VS Code.
Aller plus loin
Pour aller plus loin, vous pouvez implémenter l’éditeur visuel ou externaliser votre contenu en utilisant le CMS.
Questions fréquentes
Deux options réalistes :
@nuxtjs/i18n: le module établi, bâti survue-i18n, avec des fichiers de locale chargés par page et une large surface de configuration.Intlayer: contenu déclaré à côté de chaque composant et compilé au moment du build, entièrement typé, avec routage sensible à la locale, traduction par IA, un éditeur visuel et un CMS.
La différence est l'endroit où vit le contenu. @nuxtjs/i18n le centralise dans des fichiers locales/*.json, tandis qu'Intlayer le co-localise avec le composant qui l'affiche, si bien qu'une page ne livre que les entrées qu'elle utilise et qu'un dossier de fonctionnalité peut être déplacé ou supprimé d'un seul bloc. Voir pourquoi Intlayer et le benchmark Vue i18n.
Bien moins qu'une configuration basée sur des espaces de noms, car une page ne télécharge jamais un catalogue qu'elle n'affiche pas. Le balisage rendu côté serveur résout son contenu sur le serveur, et le compilateur au moment du build remplace les appels useIntlayer par les entrées de dictionnaire exactes qu'un composant utilise, si bien que les clés inutilisées et les langues inutilisées sont éliminées, et les dictionnaires dynamiques répartissent le reste par locale. Mesuré face aux alternatives habituelles, Intlayer réduit la taille du bundle et des pages jusqu'à 50 %. Voir l'optimisation du bundle et le benchmark.
Oui, et il existe deux voies. Vous pouvez migrer le contenu progressivement avec le guide de migration @nuxtjs/i18n. Ou vous pouvez conserver entièrement votre API actuelle : les adaptateurs de compatibilité exposent exactement la même API que vue-i18n, mais servie par des dictionnaires Intlayer : seuls les imports changent, pas le code des composants.
Oui. Le plugin de synchronisation JSON conserve vos fichiers /messages/{locale}/{namespace}.json comme source de vérité et génère les dictionnaires Intlayer à partir d'eux, dans les deux sens. Un plugin de synchronisation PO fait de même pour les catalogues gettext, et les fichiers par locale permettent de séparer le contenu par langue au lieu de regrouper les locales dans un seul fichier.
Non. Lancez npx intlayer extract et Intlayer lit vos fichiers source, en extrait les chaînes destinées aux utilisateurs et écrit un fichier .content à côté de chacun, de sorte que vous relisez un diff plutôt que de copier des chaînes dans un catalogue une par une. Voir la commande extract.
Pour un pipeline entièrement automatisé, le compilateur Intlayer fait la même chose au moment du build sur du code source JSX, TSX, Vue et Svelte, en générant les dictionnaires à chaque changement, de sorte qu'il n'y a aucune clé à maintenir à la main. Il fonctionne par analyse statique : les chaînes qui n'existent qu'à l'exécution restent hors de portée, et il a besoin de quelques annotations pour distinguer le texte destiné aux utilisateurs de la logique applicative.
Cinq éléments, tous optionnels :
- Extension VS Code : passez d'une clé
useIntlayerau fichier de contenu qui la déclare, extrayez du contenu depuis un composant, et lancez build, fill, test, push et pull depuis la palette de commandes ou un onglet Intlayer dédié. - Serveur LSP : la même connaissance dans tout éditeur qui parle LSP, avec aller à la définition, rechercher toutes les références, aperçus au survol d'une valeur traduite, autocomplétion des clés et des champs, et un avertissement lorsqu'une clé n'est déclarée nulle part. Il résout aussi les appels
i18next,react-i18next,next-intletuse-intl, ce qui aide pendant la migration. - Serveur MCP : expose la documentation et la CLI d'Intlayer à Cursor, VS Code, Claude Desktop, Claude Code et ChatGPT, afin qu'un assistant réponde à partir de la documentation actuelle au lieu de deviner, et puisse exécuter lui-même des commandes telles que
intlayer fill. - Compétences d'agent : des compétences ciblées telles que
intlayer-config,intlayer-clietintlayer-content, plus une par framework, qui apprennent à un agent votre configuration de routage et les types de nœuds de contenu. - Plugin ESLint :
no-raw-textsignale les chaînes codées en dur, avec d'autres règles pour les clés de dictionnaire statiques et le contenu inutilisé.
