Posez votre question et obtenez un résumé du document en referencant cette page et le Provider AI de votre choix
Historique des versions
- "Déplacement de la section « Synchronisation en direct » vers sa propre page (live-sync.md), conservation d'une courte introduction avec lien ici"v9.0.008/07/2026
- "Ajout de la section Auto-hébergement : bootstrap Docker Compose, inventaire des services, configuration SDK, fonctionnalités optionnelles et notes de mise à niveau"v9.0.030/06/2026
- "Ajout de la documentation sur la synchronisation en direct"v6.0.122/09/2025
- "Remplacement du champ `hotReload` par `liveSync`"v6.0.004/09/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
Documentation du Système de Gestion de Contenu (CMS) Intlayer
Le CMS Intlayer est une application qui vous permet d'externaliser le contenu d'un projet Intlayer.
Pour cela, Intlayer introduit le concept de « dictionnaires distants ».

Table of Contents
Comprendre les dictionnaires distants
Intlayer fait une distinction entre les dictionnaires « locaux » et « distants ».
Un dictionnaire « local » est un dictionnaire déclaré dans votre projet Intlayer. Par exemple, le fichier de déclaration d’un bouton ou votre barre de navigation. Externaliser votre contenu n’a pas de sens dans ce cas, car ce contenu n’est pas censé changer fréquemment.
Un dictionnaire « distant » est un dictionnaire géré via le CMS Intlayer. Cela peut être utile pour permettre à votre équipe de gérer directement votre contenu sur votre site web, et vise également à utiliser des fonctionnalités de tests A/B et d’optimisation automatique SEO.
Éditeur visuel vs CMS
L’éditeur Intlayer Visual est un outil qui vous permet de gérer votre contenu dans un éditeur visuel pour les dictionnaires locaux. Une fois qu’une modification est effectuée, le contenu sera remplacé dans la base de code. Cela signifie que l’application sera reconstruite et que la page sera rechargée pour afficher le nouveau contenu.
En revanche, le CMS Intlayer est un outil qui vous permet de gérer votre contenu dans un éditeur visuel pour les dictionnaires distants. Une fois qu’une modification est effectuée, le contenu n’impactera pas votre base de code. Et le site web affichera automatiquement le contenu modifié.
Intégration
Pour plus de détails sur la façon d’installer le package, consultez la section correspondante ci-dessous :
Intégration avec Next.js
Pour l’intégration avec Next.js, référez-vous au guide d’installation.
Intégration avec Create React App
Pour l’intégration avec Create React App, référez-vous au guide d’installation.
Intégration avec Vite + React
Pour l’intégration avec Vite + React, référez-vous au guide d’installation.
Configuration
Exécutez la commande suivante pour vous connecter à l'Intlayer CMS :
Copier le code dans le presse-papiers
Cela ouvrira votre navigateur par défaut pour compléter le processus d'authentification et recevoir les identifiants nécessaires (Client ID et Client Secret) pour utiliser les services Intlayer.
Dans votre fichier de configuration Intlayer, vous pouvez personnaliser les paramètres du CMS :
Copier le code dans le presse-papiers
import type { IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
// ... autres paramètres de configuration
editor: {
/**
* Obligatoire
*
* L'URL de l'application.
* C'est l'URL ciblée par l'éditeur visuel.
*/
applicationURL: process.env.INTLAYER_APPLICATION_URL,
/**
* Obligatoire
*
* L'ID client et le secret client sont nécessaires pour activer l'éditeur.
* Ils permettent d'identifier l'utilisateur qui édite le contenu.
* Ils peuvent être obtenus en créant un nouveau client dans le tableau de bord Intlayer - Projets (https://app.intlayer.org/projects).
* clientId: process.env.INTLAYER_CLIENT_ID,
* clientSecret: process.env.INTLAYER_CLIENT_SECRET,
*/
clientId: process.env.INTLAYER_CLIENT_ID,
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
/**
* Optionnel
*
* Dans le cas où vous hébergez vous-même le CMS Intlayer, vous pouvez définir l'URL du CMS.
*
* L'URL du CMS Intlayer.
* Par défaut, elle est définie sur https://intlayer.org
*/
cmsURL: process.env.INTLAYER_CMS_URL,
/**
* Optionnel
*
* Dans le cas où vous hébergez vous-même le CMS Intlayer, vous pouvez définir l'URL du backend.
*
* L'URL du backend Intlayer.
* Par défaut, elle est définie sur https://back.intlayer.org
*/
backendURL: process.env.INTLAYER_BACKEND_URL,
},
};
export default config;
Si vous ne disposez pas d'un ID client et d'un secret client, vous pouvez les obtenir en créant un nouveau client dans le Tableau de bord Intlayer - Projets.
Pour voir tous les paramètres disponibles, référez-vous à la documentation de configuration.
Utilisation du CMS
Poussez votre configuration
Pour configurer le CMS Intlayer, vous pouvez utiliser les commandes du intlayer CLI.
Copier le code dans le presse-papiers
Si vous utilisez des variables d'environnement dans votre fichier de configurationintlayer.config.ts, vous pouvez spécifier l'environnement souhaité en utilisant l'argument--env:
Copier le code dans le presse-papiers
Cette commande téléverse votre configuration vers le CMS Intlayer.
Pousser un dictionnaire
Pour transformer vos dictionnaires de locale en un dictionnaire distant, vous pouvez utiliser les commandes du intlayer CLI.
Copier le code dans le presse-papiers
Si vous utilisez des variables d'environnement dans votre fichier de configurationintlayer.config.ts, vous pouvez spécifier l'environnement souhaité en utilisant l'argument--env:
Copier le code dans le presse-papiers
Cette commande télécharge vos dictionnaires de contenu initiaux, les rendant disponibles pour une récupération et une édition asynchrones via la plateforme Intlayer.
Modifier le dictionnaire
Vous pourrez alors voir et gérer votre dictionnaire dans le CMS Intlayer.
Synchronisation en direct
La synchronisation en direct permet à votre application de refléter les modifications du contenu CMS en temps réel. Aucune reconstruction ou redéploiement n'est nécessaire. Lorsqu'elle est activée, les mises à jour sont diffusées vers un serveur de synchronisation en direct qui actualise les dictionnaires que votre application utilise.
Pour le guide de configuration complet (activation, démarrage du serveur Live Sync, flux de travail en développement local et contraintes), consultez la documentation Live Sync.
Installation
Copier le code dans le presse-papiers
Fonctionnement : authenticator + endpoints
Le SDK est divisé en deux imports distincts à dessein, pour maintenir la taille de votre bundle réduite :
createIntlayerCMS— crée un authenticator léger. Il ne transporte que les credentials et le token d'accès géré ; il ne connaît rien sur aucun domaine spécifique.dictionaryEndpoint,projectEndpoint, … — des endpoint binders par domaine, chacun importé depuis son propre chemin (@intlayer/api/dictionary,@intlayer/api/project, …). Vous passez l'authenticator à l'endpoint dont vous avez besoin.
Parce que chaque endpoint est importé séparément, votre bundle inclut uniquement les domaines que vous utilisez réellement — importer dictionaryEndpoint ne tire jamais le client du projet, de l'IA ou d'un autre domaine.
Copier le code dans le presse-papiers
WARNING Les credentials du CMS (clientId/clientSecret) accordent un accès en écriture à votre contenu. Ne créez l'authenticator que du côté serveur (server actions, route handlers, scripts, CI). Ne l'importez jamais dans du code côté client ni n'exposez vos credentials au navigateur.
Si vous préférez ne pas vous fier à la configuration au moment de la construction, passez les credentials explicitement :
Copier le code dans le presse-papiers
Obtenez vos credentials en créant une nouvelle clé d'accès dans le Tableau de bord Intlayer - Projets.
Connecter votre projet à une instance auto-hébergée
Copier le code dans le presse-papiers
import type { IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
editor: {
clientId: process.env.INTLAYER_CLIENT_ID,
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
/**
* URL du tableau de bord CMS auto-hébergé.
* Par défaut : https://app.intlayer.org
*/
cmsURL: process.env.INTLAYER_CMS_URL, // ex. http://localhost:3000
/**
* URL de l'API backend auto-hébergée.
* Par défaut : https://back.intlayer.org
*/
backendURL: process.env.INTLAYER_BACKEND_URL, // ex. http://localhost:3100
},
};
export default config;
SDK @intlayer/api : pointer vers un backend auto-hébergé
Copier le code dans le presse-papiers
Fonctionnalités optionnelles
Ces fonctionnalités nécessitent des comptes externes et fonctionnent normalement même sans leurs clés dans le fichier .env auto-hébergé :
Copier le code dans le presse-papiers
Ouvrir le tableau dans une fenêtre modale pour voir tout le contenu clairement
| Fonctionnalité | Variable(s) d'environnement |
|---|---|
| Traduction / audit par IA | OPENAI_API_KEY |
| Facturation | STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, … |
| OAuth GitHub | GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET |
| OAuth Google | GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET |
| OAuth GitLab / Microsoft / LinkedIn | GITLAB_*, MICROSOFT_*, LINKEDIN_* |
| E-mail transactionnel via Resend | RESEND_API_KEY (par défaut : Mailpit SMTP) |
Persistance des données et mises à niveau
Ports exposés sur l'hôte :
Ouvrir le tableau dans une fenêtre modale pour voir tout le contenu clairement
| Port | Service |
|---|---|
3000 | Tableau de bord |
3100 | API Backend |
8025 | Interface web Mailpit |
9000 | API S3 MinIO (requise pour le chargement des assets dans le navigateur) |
9001 | Console MinIO |
Synchronisation en direct
La Synchronisation en direct permet à votre application de refléter les changements de contenu CMS à l'exécution — aucune reconstruction ou redéploiement requis. Lorsqu'elle est activée, les mises à jour sont diffusées vers un serveur Live Sync qui actualise les dictionnaires que votre application lit.
Pour le guide de configuration complet (configuration, démarrage du serveur Live Sync, le flux de travail de développement local et les contraintes), consultez la documentation Live Sync.
Auto-hébergement
Intlayer peut s'exécuter entièrement sur votre propre infrastructure. Une seule commande bootstrap la pile complète (dashboard, API, base de données, stockage d'objets et email) avec Docker Compose :
Copier le code dans le presse-papiers
Pour le guide de configuration complet, la référence des variables d'environnement, les instructions de mise à jour et les procédures de sauvegarde/restauration, consultez le Guide d'auto-hébergement.
Débogage
Si vous rencontrez des problèmes avec le CMS, vérifiez les points suivants :
L'application est en cours d'exécution.
- La configuration de
editorest correctement définie dans votre fichier de configuration Intlayer.- Champs requis :
- L'URL de l'application doit correspondre à celle que vous avez définie dans la configuration de l'éditeur (
applicationURL). L'URL du CMS
Assurez-vous que la configuration du projet a été poussée vers le CMS Intlayer.
L'éditeur visuel utilise un iframe pour afficher votre site web. Assurez-vous que la politique de sécurité du contenu (Content Security Policy, CSP) de votre site autorise l'URL du CMS en tant que
frame-ancestors('https://app.intlayer.org' par défaut). Vérifiez la console de l'éditeur pour toute erreur.
Questions fréquentes
L'éditeur visuel modifie les dictionnaires locaux et réécrit le changement dans votre base de code, si bien que l'application est reconstruite et que le changement passe par votre relecture et votre déploiement habituels. Le CMS modifie les dictionnaires distants : le changement ne touche pas votre base de code et le site en cours d'exécution le prend en compte sans déploiement. Les équipes utilisent souvent les deux, l'éditeur pour le contenu appartenant aux développeurs et le CMS pour le contenu que le marketing modifie chaque semaine.
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. 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 i18next ou le guide de migration next-intl. Ou vous pouvez conserver entièrement votre API actuelle : les adaptateurs de compatibilité exposent exactement la même API que i18next, react-i18next, next-intl, next-i18next, react-intl, use-intl, vue-i18n et Lingui, 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é.
