Pose una domanda e ottieni un riassunto del documento facendo riferimento a questa pagina e al provider AI di tua scelta
Cronologia delle versioni
- "Spostata la sezione «Sincronizzazione live» nella propria pagina (live-sync.md), lasciando qui una breve introduzione con link"v9.0.008/07/2026
- "Aggiunta sezione Self-Hosting: bootstrap Docker Compose, inventario dei servizi, configurazione SDK, funzionalità opzionali e note di aggiornamento"v9.0.030/06/2026
- "Aggiunta documentazione sulla sincronizzazione live"v6.0.122/09/2025
- "Sostituito il campo `hotReload` con `liveSync`"v6.0.004/09/2025
- "Inizializzazione della cronologia"v5.5.1029/06/2025
Il contenuto di questa pagina è stato tradotto con un'IA.
Vedi l'ultima versione del contenuto originale in ingleseSe hai un’idea per migliorare questa documentazione, non esitare a contribuire inviando una pull request su GitHub.
Collegamento GitHub alla documentazioneCopia il Markdown del documento nella porta-documenti
Documentazione del Sistema di Gestione dei Contenuti (CMS) di Intlayer
Il CMS di Intlayer è un'applicazione che ti permette di esternalizzare i contenuti di un progetto Intlayer.
Per questo, Intlayer introduce il concetto di 'dizionari remoti'.

Indice dei contenuti
Comprendere i dizionari remoti
Intlayer distingue tra dizionari 'locali' e 'remoti'.
Un dizionario 'locale' è un dizionario dichiarato nel tuo progetto Intlayer. Come ad esempio il file di dichiarazione di un pulsante o la tua barra di navigazione. Esternalizzare i contenuti in questo caso non ha senso perché questi contenuti non dovrebbero cambiare spesso.
Un dizionario 'remoto' è un dizionario gestito tramite il CMS di Intlayer. Potrebbe essere utile per permettere al tuo team di gestire direttamente i contenuti sul tuo sito web, e mira anche a utilizzare funzionalità di A/B testing e ottimizzazione SEO automatica.
Editor visivo vs CMS
L'editor Intlayer Visual è uno strumento che ti permette di gestire i tuoi contenuti in un editor visuale per dizionari locali. Una volta effettuata una modifica, il contenuto verrà sostituito nel codice sorgente. Ciò significa che l'applicazione verrà ricostruita e la pagina ricaricata per mostrare il nuovo contenuto.
Al contrario, il CMS di Intlayer è uno strumento che ti permette di gestire i tuoi contenuti in un editor visuale per dizionari remoti. Una volta effettuata una modifica, il contenuto non influenzerà il codice sorgente. E il sito web mostrerà automaticamente il contenuto modificato.
Integrazione
Per maggiori dettagli su come installare il pacchetto, consulta la sezione pertinente qui sotto:
Integrazione con Next.js
Per l'integrazione con Next.js, consulta la guida all'installazione.
Integrazione con Create React App
Per l'integrazione con Create React App, consulta la guida all'installazione.
Integrazione con Vite + React
Per l'integrazione con Vite + React, consulta la guida all'installazione.
Configurazione
Esegui il seguente comando per accedere all'Intlayer CMS:
Copiare il codice nella clipboard
Questo aprirà il tuo browser predefinito per completare il processo di autenticazione e ricevere le credenziali necessarie (Client ID e Client Secret) per utilizzare i servizi Intlayer.
Nel file di configurazione di Intlayer, puoi personalizzare le impostazioni del CMS:
Copiare il codice nella clipboard
import type { IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
// ... altre impostazioni di configurazione
editor: {
/**
* Obbligatorio
*
* L'URL dell'applicazione.
* Questo è l'URL a cui punta l'editor visuale.
*/
applicationURL: process.env.INTLAYER_APPLICATION_URL,
/**
* Obbligatorio
*
* Client ID e client secret sono necessari per abilitare l'editor.
* Permettono di identificare l'utente che sta modificando il contenuto.
* Possono essere ottenuti creando un nuovo client nel Dashboard di Intlayer - Progetti (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,
/**
* Facoltativo
*
* Nel caso in cui stiate ospitando autonomamente l'Intlayer CMS, potete impostare l'URL del CMS.
*
* L'URL dell'Intlayer CMS.
* Di default, è impostato su https://intlayer.org
*/
cmsURL: process.env.INTLAYER_CMS_URL,
/**
* Opzionale
*
* Nel caso in cui stiate ospitando autonomamente l'Intlayer CMS, potete impostare l'URL del backend.
*
* L'URL dell'Intlayer CMS.
* Di default, è impostato su https://back.intlayer.org
*/
backendURL: process.env.INTLAYER_BACKEND_URL,
},
};
export default config;
Se non hai un client ID e un client secret, puoi ottenerli creando un nuovo client nel Intlayer Dashboard - Projects.
Per vedere tutti i parametri disponibili, fai riferimento alla documentazione di configurazione.
Utilizzo del CMS
Invia la tua configurazione
Per configurare l'Intlayer CMS, puoi utilizzare i comandi della intlayer CLI.
Copiare il codice nella clipboard
Se utilizzi variabili d'ambiente nel file di configurazioneintlayer.config.ts, puoi specificare l'ambiente desiderato usando l'argomento--env:
Copiare il codice nella clipboard
Questo comando carica la tua configurazione sull'Intlayer CMS.
Caricare un dizionario
Per trasformare i tuoi dizionari di localizzazione in un dizionario remoto, puoi utilizzare i comandi della intlayer CLI.
Copiare il codice nella clipboard
Se utilizzi variabili d'ambiente nel file di configurazioneintlayer.config.ts, puoi specificare l'ambiente desiderato usando l'argomento--env:
Copiare il codice nella clipboard
Questo comando carica i tuoi dizionari di contenuti iniziali, rendendoli disponibili per il recupero asincrono e la modifica tramite la piattaforma Intlayer.
Modifica il dizionario
Successivamente potrai visualizzare e gestire il tuo dizionario nel Intlayer CMS.
Sincronizzazione live
La Sincronizzazione Live consente alla tua app di riflettere le modifiche ai contenuti del CMS in tempo reale. Non è necessario ricostruire o ridistribuire. Quando abilitata, gli aggiornamenti vengono trasmessi a un server di Sincronizzazione Live che aggiorna i dizionari letti dalla tua applicazione.
Per la guida completa alla configurazione (attivazione, avvio del server Live Sync, flusso di lavoro di sviluppo locale e limitazioni), consulta la documentazione di Live Sync.
Installazione
Copiare il codice nella clipboard
Come funziona: authenticator + endpoints
L'SDK è suddiviso in due import separati di proposito, per mantenere il bundle piccolo:
createIntlayerCMS— crea un leggero authenticator. Contiene solo le credenziali e il token di accesso gestito; non conosce nulla di alcun dominio specifico.dictionaryEndpoint,projectEndpoint, … — endpoint binder per dominio, ognuno importato dal suo sottopercorso (@intlayer/api/dictionary,@intlayer/api/project, …). Passi l'authenticator all'endpoint di cui hai bisogno.
Poiché ogni endpoint è importato separatamente, il tuo bundle include solo i domini che effettivamente utilizzi — importare dictionaryEndpoint non porta mai con sé il client del progetto, dell'AI o di alcun altro dominio.
Copiare il codice nella clipboard
WARNING Le credenziali CMS (clientId/clientSecret) concedono accesso in scrittura ai tuoi contenuti. Crea sempre l'authenticator sul lato server (server actions, route handlers, script, CI). Non importarlo mai nel codice lato client o esporre le tue credenziali al browser.
Se preferisci non fare affidamento sulla configurazione al momento della build, passa le credenziali esplicitamente:
Copiare il codice nella clipboard
Ottieni le tue credenziali creando una nuova chiave di accesso in Intlayer Dashboard - Projects.
Connettere il tuo progetto a un'istanza self-hosted
Copiare il codice nella clipboard
import type { IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
editor: {
clientId: process.env.INTLAYER_CLIENT_ID,
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
/**
* URL del dashboard CMS self-hosted.
* Predefinito: https://app.intlayer.org
*/
cmsURL: process.env.INTLAYER_CMS_URL, // es. http://localhost:3000
/**
* URL dell'API backend self-hosted.
* Predefinito: https://back.intlayer.org
*/
backendURL: process.env.INTLAYER_BACKEND_URL, // es. http://localhost:3100
},
};
export default config;
SDK @intlayer/api: puntare a un backend self-hosted
Copiare il codice nella clipboard
Funzionalità opzionali
Queste funzionalità richiedono account esterni e funzionano correttamente anche quando le loro chiavi sono assenti dal .env self-hosted:
Copiare il codice nella clipboard
Apri la tabella in una finestra modale per visualizzare tutti i dati in modo chiaro
| Funzionalità | Variabile/i d'ambiente |
|---|---|
| Traduzione / audit con IA | OPENAI_API_KEY |
| Fatturazione | 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 transazionale via Resend | RESEND_API_KEY (predefinito: Mailpit SMTP) |
Persistenza dei dati e aggiornamenti
Porte esposte sull'host:
Apri la tabella in una finestra modale per visualizzare tutti i dati in modo chiaro
| Porta | Servizio |
|---|---|
3000 | Dashboard |
3100 | API Backend |
8025 | Interfaccia web e-mail Mailpit |
9000 | API S3 MinIO (necessaria per il caricamento degli asset nel browser) |
9001 | Console MinIO |
Live sync
Live Sync consente all'app di riflettere i cambiamenti del contenuto CMS in fase di runtime — nessuna ricostruzione o ridistribuzione richiesta. Quando abilitato, gli aggiornamenti vengono trasmessi a un server Live Sync che aggiorna i dizionari letti dall'applicazione.
Per la guida di configurazione completa (configurazione, avvio del server Live Sync, workflow di sviluppo locale e vincoli), consulta la documentazione Live Sync.
Self-Hosting
Intlayer può funzionare interamente sulla tua infrastruttura. Un singolo comando inizializza l'intero stack (dashboard, API, database, object storage, e email) con Docker Compose:
Copiare il codice nella clipboard
Per la guida di configurazione completa, il riferimento delle variabili di ambiente, le istruzioni di aggiornamento e le procedure di backup/restore, consulta la Guida Self-Hosting.
Debug
Se riscontri problemi con il CMS, verifica quanto segue:
L'applicazione è in esecuzione.
- La configurazione dell'
editorè correttamente impostata nel file di configurazione di Intlayer.- Campi obbligatori:
- L'URL dell'applicazione deve corrispondere a quello impostato nella configurazione dell'editor (
applicationURL). L'URL del CMS
Assicurati che la configurazione del progetto sia stata inviata al CMS di Intlayer.
L'editor visivo utilizza un iframe per visualizzare il tuo sito web. Assicurati che la Content Security Policy (CSP) del tuo sito consenta l'URL del CMS come
frame-ancestors('https://app.intlayer.org' per impostazione predefinita). Controlla la console dell'editor per eventuali errori.
Domande frequenti
L'editor visivo modifica i dizionari locali e riscrive la modifica nel tuo codice, quindi l'app viene ricostruita e la modifica passa attraverso la tua normale revisione e deployment. Il CMS modifica i dizionari remoti: la modifica non tocca il tuo codice e il sito in esecuzione la recepisce senza un deployment. I team spesso usano entrambi, l'editor per i contenuti di proprietà degli sviluppatori e il CMS per i contenuti che il marketing cambia ogni settimana.
Molto meno di una configurazione basata su namespace, perché una pagina non scarica mai un catalogo che non renderizza. Il markup renderizzato lato server risolve i suoi contenuti sul server, e il compilatore in fase di build sostituisce le chiamate useIntlayer con le esatte voci del dizionario che un componente utilizza, quindi le chiavi e le lingue non utilizzate vengono eliminate. I dizionari dinamici suddividono il resto per locale. Misurato rispetto alle alternative abituali, Intlayer riduce la dimensione del bundle e delle pagine fino al 50%. Vedi ottimizzazione del bundle e il benchmark.
Sì, e ci sono due percorsi. Puoi migrare il contenuto progressivamente con la guida alla migrazione da i18next o la guida alla migrazione da next-intl. Oppure puoi mantenere interamente la tua API attuale: gli adattatori di compatibilità espongono esattamente la stessa API di i18next, react-i18next, next-intl, next-i18next, react-intl, use-intl, vue-i18n e Lingui, ma servita dai dizionari Intlayer, quindi cambiano gli import e il codice dei componenti no.
Sì. Il plugin di sincronizzazione JSON mantiene i tuoi file /messages/{locale}/{namespace}.json come fonte di verità e genera dizionari Intlayer da essi, in entrambe le direzioni. Un plugin di sincronizzazione PO fa lo stesso per i cataloghi gettext, e i file per locale ti permettono di dividere il contenuto per lingua invece di raggruppare i locale in un unico file.
No. Esegui npx intlayer extract e Intlayer legge i tuoi file sorgente, estrae le stringhe visibili all'utente e scrive un file .content accanto a ciascuno, così puoi rivedere un diff invece di copiare le stringhe in un catalogo una alla volta. Vedi il comando extract.
Per una pipeline completamente automatizzata, il Compilatore Intlayer fa lo stesso in fase di build sul codice sorgente JSX, TSX, Vue e Svelte, generando i dizionari ad ogni modifica così non ci sono chiavi da mantenere a mano. Funziona per analisi statica, quindi le stringhe che esistono solo a runtime restano fuori portata, e ha bisogno di alcune annotazioni per distinguere il testo visibile all'utente dalla logica applicativa.
Cinque componenti, tutti opzionali:
- Estensione VS Code: salta da una chiave
useIntlayeral file di contenuto che la dichiara, estrai il contenuto da un componente ed esegui build, fill, test, push e pull dalla palette dei comandi o da una scheda Intlayer dedicata. - Server LSP: la stessa consapevolezza in qualsiasi editor che parla LSP, con vai alla definizione, trova tutti i riferimenti, anteprime al passaggio del mouse di un valore tradotto, autocompletamento di chiavi e campi, e un avviso quando una chiave non è dichiarata da nessuna parte. Risolve anche le chiamate
i18next,react-i18next,next-intleuse-intl, il che aiuta durante la migrazione. - Server MCP: espone la documentazione di Intlayer e la CLI a Cursor, VS Code, Claude Desktop, Claude Code e ChatGPT, così un assistente risponde in base alla documentazione aggiornata invece di tirare a indovinare, e può eseguire da solo comandi come
intlayer fill. - Agent skills: competenze mirate come
intlayer-config,intlayer-clieintlayer-content, più una per framework, che insegnano a un agente la tua configurazione di routing e i tipi di nodo dei contenuti. - Plugin ESLint:
no-raw-textsegnala le stringhe hardcoded, con ulteriori regole per le chiavi statiche dei dizionari e i contenuti non utilizzati.
