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
- "Ajouter la commande init"v7.5.930/12/2025
- "Historique initial"v7.1.1020/11/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 SvelteKit avec Intlayer | Internationalisation (i18n)
Table des matières
Pourquoi Intlayer plutôt que des alternatives ?
Par rapport aux solutions principales telles que svelte-i18n ou i18next, Intlayer est une solution dotée d'optimisations intégrées telles que :
Intlayer est optimisé pour fonctionner parfaitement avec SvelteKit en offrant le routage multilingue, la prise en charge SSR 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 SvelteKit
Voir Modèle d'application sur GitHub.
Pour commencer, créez un nouveau projet SvelteKit. Voici la structure finale que nous allons réaliser :
Copier le code dans le presse-papiers
Installer les dépendances
Installez les paquets nécessaires en utilisant 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 paquet principal pour l'internationalisation (i18n).
- svelte-intlayer : Fournit des context providers et des stores pour Svelte/SvelteKit.
- vite-intlayer : Le plugin Vite pour intégrer les déclarations de contenu dans le processus de build.
Configuration de votre projet
Créez un fichier de configuration à la racine de votre projet :
intlayer.config.tsCopier le codeCopier le code dans le presse-papiers
Intégrer Intlayer dans votre configuration Vite
Mettez à jour votre fichier
vite.config.tspour inclure le plugin Intlayer. Ce plugin gère la transpilation de vos fichiers de contenu.vite.config.tsCopier le codeCopier le code dans le presse-papiers
Déclarez votre contenu
Créez vos fichiers de déclaration de contenu n'importe où dans votre dossier
src(par exemple,src/lib/contentou à côté de vos composants). Ces fichiers définissent le contenu traduisible pour votre application en utilisant la fonctiont()pour chaque locale.Utilisez Intlayer dans vos composants
Vous pouvez maintenant utiliser la fonction
useIntlayerdans n'importe quel composant Svelte. Elle retourne un store réactif qui se met à jour automatiquement lorsque la locale change. La fonction respectera automatiquement la locale actuelle (à la fois lors du SSR et de la navigation côté client).pour accéder à sa valeur réactive (par exemple,
$content.title).src/lib/components/Component.svelteCopier le codeCopier le code dans le presse-papiers
Configurer le routage
FacultatifLes étapes suivantes montrent comment configurer un routage basé sur la locale dans SvelteKit. Cela permet à vos URLs d'inclure le préfixe de la locale (par exemple,
/en/about,/fr/about) pour un meilleur SEO et une meilleure expérience utilisateur.bashCopier le codeCopier le code dans le presse-papiers
Gérer la détection de la locale côté serveur
Dans SvelteKit, le serveur doit connaître la locale de l'utilisateur pour rendre le contenu correct lors du SSR. Nous utilisons
hooks.server.tspour détecter la locale à partir de l'URL ou des cookies.Créez ou modifiez
src/hooks.server.ts:src/hooks.server.tsCopier le codeCopier le code dans le presse-papiers
Ensuite, créez un helper pour obtenir la locale de l'utilisateur à partir de l'événement de requête :
src/lib/getLocale.tsCopier le codeCopier le code dans le presse-papiers
getLocaleFromStoragevérifiera la locale à partir de l'en-tête ou du cookie selon votre configuration. Voir Configuration pour plus de détails.La fonction
localeDetectortraitera l'en-têteAccept-Languageet retournera la meilleure correspondance.Si la locale n'est pas configurée, nous souhaitons retourner une erreur 404. Pour faciliter cela, nous pouvons créer une fonction
matchpour vérifier si la locale est valide :/src/params/locale.tsCopier le codeCopier le code dans le presse-papiers
Note : Assurez-vous que votre fichier
src/app.d.tsinclut la définition de la locale :typescriptCopier le codeCopier le code dans le presse-papiers
Pour le fichier
+layout.svelte, nous pouvons tout supprimer afin de ne conserver que le contenu statique, non lié à l’i18n :src/+layout.svelteCopier le codeCopier le code dans le presse-papiers
Ensuite, créez une nouvelle page et un layout sous le groupe
[[locale=locale]]:src/routes/[[locale=locale]]/+layout.tsCopier le codeCopier le code dans le presse-papiers
src/routes/[[locale=locale]]/+layout.svelteCopier le codeCopier le code dans le presse-papiers
src/routes/[[locale=locale]]/+page.tsCopier le codeCopier le code dans le presse-papiers
src/routes/[[locale=locale]]/+page.svelteCopier le codeCopier le code dans le presse-papiers
Liens internationalisés
FacultatifPour le SEO, il est recommandé de préfixer vos routes avec la locale (par exemple,
/en/about,/fr/about). Ce composant préfixe automatiquement tout lien avec la locale courante.src/lib/components/LocalizedLink.svelteCopier le codeCopier le code dans le presse-papiers
Si vous utilisez
gotode SvelteKit, vous pouvez utiliser la même logique avecgetLocalizedUrlpour naviguer vers l'URL localisée :typescriptCopier le codeCopier le code dans le presse-papiers
Sélecteur de langue
FacultatifPour permettre aux utilisateurs de changer de langue, mettez à jour l’URL.
src/lib/components/LanguageSwitcher.svelteCopier le codeCopier le code dans le presse-papiers
Ajouter un proxy backend
FacultatifPour ajouter un proxy backend à votre application SvelteKit, vous pouvez utiliser la fonction
intlayerProxyfournie par le pluginvite-intlayer. Ce plugin détectera automatiquement la meilleure locale pour l'utilisateur en fonction de l'URL, des cookies et des préférences linguistiques du navigateur.Depuis Intlayer v9,
intlayerProxy()est fourni directement dans le pluginintlayer()et activé par défaut via l'optionrouting.enableProxy(truepar défaut). L'enregistrement séparé comme indiqué ci-dessous est désormais optionnel — il est conservé pour la compatibilité rétroactive et les configurations qui nécessitent de contrôler l'ordre des plugins. Définissezrouting.enableProxy: falsepour désactiver cette fonctionnalité. Consultez les notes de version v9.vite.config.tsCopier le codeCopier le code dans le presse-papiers
Configurer l'éditeur / CMS intlayer
FacultatifPour configurer l'éditeur intlayer, vous devez suivre la documentation de l'éditeur intlayer.
Pour configurer le CMS intlayer, vous devez suivre la documentation du CMS intlayer.
Pour pouvoir visualiser le sélecteur de l'éditeur intlayer, vous devrez utiliser la syntaxe composant dans votre contenu intlayer.
Component.svelteCopier le codeCopier le code dans le presse-papiers
Extraire le contenu de vos composants
FacultatifSi vous avez une base de code existante, transformer des milliers de fichiers peut prendre beaucoup de temps.
Pour faciliter ce processus, Intlayer propose un compilateur / extracteur pour transformer vos composants et extraire le contenu.
Pour le configurer, vous pouvez ajouter une section
compilerdans votre fichierintlayer.config.ts:intlayer.config.tsCopier le codeCopier le code dans le presse-papiers
import { type IntlayerConfig } from "intlayer"; const config: IntlayerConfig = { // ... Reste de votre configuration compiler: { /** * Indique si le compilateur doit être activé. */ enabled: true, /** * Définit le chemin des fichiers de sortie */ output: ({ fileName, extension }) => `./${fileName}${extension}`, /** * Indique si les composants doivent être sauvegardés après avoir été transformés. De cette façon, le compilateur peut être exécuté une seule fois pour transformer l'application, puis il peut être supprimé. */ saveComponents: false, /** * Préfixe de clé de dictionnaire */ dictionaryKeyPrefix: "", }, }; export default config;Exécutez l'extracteur pour transformer vos composants et extraire le contenu
bashCopier le codeCopier le code dans le presse-papiers
Since v9, the
intlayerCompileris included in theintlayerplugin. So you don't need to add it manually.Mettez à jour votre fichier
vite.config.tspour inclure le pluginintlayerCompiler:vite.config.tsCopier le codeCopier le code dans le presse-papiers
bashCopier le codeCopier le code dans le presse-papiers
Configuration Git
Il est recommandé d'ignorer les fichiers générés par Intlayer.
Copier le code dans le presse-papiers
Aller plus loin
- Éditeur Visuel : Intégrez l'Éditeur Visuel Intlayer pour éditer les traductions directement depuis l'interface utilisateur.
- CMS : Externalisez la gestion de votre contenu en utilisant le CMS Intlayer.
Questions fréquentes
svelte-i18nettypesafe-i18n: des catalogues de messages basés sur des stores, câblés à la main dans les fonctions load.Paraglide: des messages compilés avec un typage solide, centré uniquement sur la couche de messages.Intlayer: contenu déclaré à côté de chaque composant et compilé au moment du build, avec routage sensible à la locale, détection de la locale côté serveur, traduction par IA, un éditeur visuel et un CMS.
Sur SvelteKit, la différence se voit dans les éléments côté serveur : la détection de la locale dans les hooks, les liens localisés et l'intégration de l'éditeur sont fournis avec la bibliothèque au lieu d'être assemblés par projet. Voir pourquoi Intlayer et le benchmark Svelte 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.
En grande partie. Suivez le guide de migration Svelte I18n pour transférer le contenu. Vous pouvez aussi migrer progressivement : le plugin de synchronisation JSON conserve vos catalogues JSON existants comme source de vérité et génère les dictionnaires Intlayer à partir d'eux, si bien que les deux couches restent synchronisées pendant que vous déplacez les composants un par un.
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 composants, 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. L'étape 12 de ce guide le détaille.
Pour un pipeline entièrement automatisé, le compilateur Intlayer fait la même chose au moment du build : il analyse votre code source JSX, TSX, Vue et Svelte à chaque changement, génère les dictionnaires et les garde synchronisés via le remplacement de module à chaud, de sorte qu'il n'y a plus aucune clé à maintenir à la main.
Deux limites méritent d'être connues avant d'activer le compilateur. Il fonctionne par analyse statique : les chaînes qui n'existent qu'à l'exécution, comme les codes d'erreur d'API ou les champs de CMS, restent hors de portée. Et il doit distinguer le texte destiné aux utilisateurs de la logique applicative comme className="active" ou un code de statut, ce qui nécessite quelques annotations dans une grande base de code. La commande extract évite les deux en vous gardant dans la boucle.
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é.
