HomeAmbiente di testVetrinaAppDocBlog
    • Englishinglese
      EN
    • русскийrusso
      RU
    • 日本語giapponese
      JA
    • françaisfrancese
      FR
    • 한국어coreano
      KO
    • 中文cinese
      ZH
    • españolspagnolo
      ES
    • Deutschtedesco
      DE
    • العربيةarabo
      AR
    • italianoitaliano
      IT
    • British Englishinglese britannico
      EN-GB
    • portuguêsportoghese
      PT
    • हिन्दीhindi
      HI
    • Türkçeturco
      TR
    • polskipolacco
      PL
    • Indonesiaindonesiano
      ID
    • Tiếng Việtvietnamita
      VI
    • українськаucraino
      UK
    /
    Filtra la documentazione per framework
    Alt+←
    Perché Intlayer?
    Iniziare
    Concetto
    • Come funziona Intlayer
    • Configurazione
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • Editor visuale
    • CMS
    • Integrazione CI/CD
    • TraduzionePluraleEnumerazioneCondizioneGenereInserimentoFileAnnidamentoMarkdownHTMLRecupero funzione
    • File per locale
    • Compilatore
    • Compilazione automatica
    • Test
    • Ottimizzazione del bundle
    Ambiente
    • Next.js 14 e App Router
      Next.js 15
      Next.js senza locale URL
      Next.js e Page Router
      Compiler
    • Tanstack Start Solid
    • Astro e React
      Astro e Svelte
      Astro e Vue
      Astro e Solid
      Astro e Preact
      Astro e Lit
      Astro e Vanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • Nuxt e Vue
    • Vite e Solid
    • SvelteKit
    • Vite e Preact
    • Vite e Vanilla JS
    • Vite e Lit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React Native e Expo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • Lynx e React
    Plugins
    • JSON
    • gettext (.po)
    Estensione VS Code
    Agente
    • Server MCP
    • Abilità dell’agente
    Versioni
    • v8
    • v7
    • v6
    Benchmark
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    Blog
    Fai una domanda
    1. Documentation
    2. Perché Intlayer?
    Creazione:2024-08-14Ultimo aggiornamento:2025-09-27
    Riferimento a questa documentazione al tuo assistente AI preferito
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Pose una domanda e ottieni un riassunto del documento facendo riferimento a questa pagina e al provider AI di tua scelta

    Cronologia delle versioni

    1. "Rilascio del Compilatore"
      v7.3.127/11/2025
    2. "Aggiornamento della tabella comparativa"
      v5.8.019/08/2025
    3. "Inizio cronologia"
      v5.5.1029/06/2025

    Il contenuto di questa pagina è stato tradotto con un'IA.

    Vedi l'ultima versione del contenuto originale in inglese
    Modifica questa documentazione

    Se hai un’idea per migliorare questa documentazione, non esitare a contribuire inviando una pull request su GitHub.

    Collegamento GitHub alla documentazione
    Copia

    Copia il Markdown del documento nella porta-documenti

    Perché dovresti considerare Intlayer?

    Cos'è Intlayer?

    Intlayer è una libreria di internazionalizzazione progettata specificamente per gli sviluppatori JavaScript. Permette la dichiarazione dei tuoi contenuti ovunque nel tuo codice. Converte le dichiarazioni di contenuti multilingue in dizionari strutturati per integrarsi facilmente nel tuo codice. Usando TypeScript, Intlayer rende il tuo sviluppo più solido ed efficiente.

    Perché è stato creato Intlayer?

    Intlayer è stato creato per risolvere un problema comune che affligge tutte le comuni librerie i18n come next-intl, react-i18next, react-intl, next-i18next, react-intl e vue-i18n.

    Tutte queste soluzioni adottano un approccio centralizzato per elencare e gestire i tuoi contenuti. Ad esempio:

    bash
    Copiare il codice

    Copiare il codice nella clipboard

    .├── locales│   ├── en.json│   ├── es.json│   └── fr.json├── i18n.ts└── src    └── components        └── MyComponent            └── index.tsx

    O qui usando i namespace:

    bash
    Copiare il codice

    Copiare il codice nella clipboard

    .├── locales│   ├── en│   │  ├── footer.json│   │  └── navbar.json│   ├── fr│   │  ├── footer.json│   │  └── navbar.json│   └── es│      ├── footer.json│      └── navbar.json├── i18n.ts└── src    └── components        └── MyComponent            └── index.tsx

    Questo tipo di architettura rallenta il processo di sviluppo e rende la base di codice più complessa da mantenere per diversi motivi:

    1. Per ogni nuovo componente creato, dovresti:

      • Creare la nuova risorsa/namespace nella cartella locales
      • Ricordarti di importare il nuovo namespace nella tua pagina
      • Tradurre i tuoi contenuti (spesso fatto manualmente copiando/incollando da fornitori di IA)
    2. Per ogni modifica apportata ai tuoi componenti, dovresti:

      • Cercare la risorsa/namespace correlata (lontana dal componente)
      • Tradurre i tuoi contenuti
      • Assicurarti che il tuo contenuto sia aggiornato per ogni locale
      • Verificare che il tuo namespace non includa chiavi/valori non utilizzati
      • Assicurarti che la struttura dei tuoi file JSON sia la stessa per tutti i locale

    Sui progetti professionali che utilizzano queste soluzioni, vengono spesso utilizzate piattaforme di localizzazione per aiutare a gestire la traduzione dei tuoi contenuti. Tuttavia, questo può diventare rapidamente costoso per i progetti di grandi dimensioni.

    Per risolvere questo problema, Intlayer adotta un approccio che delimita i tuoi contenuti per componente e li mantiene vicini al componente stesso, come spesso facciamo con i CSS (styled-components), i tipi, la documentazione (storybook) o i test unitari (jest).

    bash
    Copiare il codice

    Copiare il codice nella clipboard

    .└── components    └── MyComponent        ├── index.content.ts        ├── index.test.tsx        ├── index.stories.tsx        └── index.tsx
    ./components/MyComponent/index.content.ts
    Copiare il codice

    Copiare il codice nella clipboard

    import { t, type Dictionary } from "intlayer";
    
    const componentExampleContent = {
      key: "component-example",
      content: {
        myTranslatedContent: t({
          en: "Hello World",
          es: "Hola Mundo",
          fr: "Bonjour le monde",
        }),
      },
    } satisfies Dictionary;
    
    export default componentExampleContent;
    ./components/MyComponent/index.tsx
    Copiare il codice

    Copiare il codice nella clipboard

    import { useIntlayer } from "react-intlayer";
    
    export const ComponentExample = () => {
      const { myTranslatedContent } = useIntlayer("component-example");
    
      return <span>{myTranslatedContent}</span>;
    };

    Questo approccio ti consente di:

    1. Aumentare la velocità di sviluppo

      • I file .content.{{ts|mjs|cjs|json}} possono essere creati utilizzando un'estensione di VSCode
      • Gli strumenti di completamento automatico IA nel tuo IDE (come GitHub Copilot) possono aiutarti a dichiarare i tuoi contenuti, riducendo il copia/incolla
    2. Pulire la tua base di codice

      • Ridurre la complessità
      • Aumentare la manutenibilità
    3. Duplicare i tuoi componenti e i relativi contenuti più facilmente (Esempio: componenti di login/registrazione, ecc.)

      • Limitando il rischio di impattare sui contenuti di altri componenti
      • Copiando/incollando i tuoi contenuti da un'applicazione all'altra senza dipendenze esterne
    4. Evitare di inquinare la tua base di codice con chiavi/valori non utilizzati per componenti non utilizzati

      • Se non usi un componente, Intlayer non importerà il relativo contenuto
      • Se elimini un componente, ti ricorderai più facilmente di rimuovere il relativo contenuto poiché sarà presente nella stessa cartella
    5. Ridurre il costo di ragionamento per gli agenti IA per dichiarare i tuoi contenuti multilingue

      • L'agente IA non dovrà scansionare l'intera base di codice per sapere dove implementare i tuoi contenuti
      • Le traduzioni possono essere eseguite facilmente dagli strumenti di completamento automatico IA nel tuo IDE (come GitHub Copilot)
    6. Ottimizzare le prestazioni di caricamento

      • Se un componente viene caricato in modalità lazy, il relativo contenuto verrà caricato contemporaneamente

    Funzionalità aggiuntive di Intlayer

    Mostra tutto il contenuto della tabella

    Apri la tabella in una finestra modale per visualizzare tutti i dati in modo chiaro

    Funzionalità Descrizione
    Funzionalità Supporto Cross-Framework

    Intlayer è compatibile con tutti i principali framework e librerie, inclusi Next.js, React, Vite, Vue.js, Nuxt, Preact, Express e altri ancora.
    Feature Gestione dei contenuti alimentata da JavaScript

    Sfrutta la flessibilità di JavaScript per definire e gestire i tuoi contenuti in modo efficiente.

    - Dichiarazione del contenuto
    Funzionalità Compilatore

    Il Compilatore Intlayer estrae automaticamente il contenuto dai componenti e genera i file dei dizionari.

    - Compilatore
    Feature File di dichiarazione dei contenuti per locale

    Accelera il tuo sviluppo dichiarando i tuoi contenuti una sola volta, prima della generazione automatica.

    - File di dichiarazione dei contenuti per locale
    Feature Ambiente Type-Safe

    Sfrutta TypeScript per garantire che le definizioni dei contenuti e il codice siano privi di errori, beneficiando al contempo dell'autocompletamento dell'IDE.

    - Configurazione TypeScript
    Feature Configurazione Semplificata

    Inizia rapidamente con una configurazione minima. Regola le impostazioni per l'internazionalizzazione, il routing, l'IA, la build e la gestione dei contenuti con facilità.

    - Esplora l'integrazione con Next.js
    Feature Recupero dei contenuti semplificato

    Non c'è bisogno di chiamare la tua funzione t per ogni pezzo di contenuto. Recupera tutti i tuoi contenuti direttamente utilizzando un unico hook.

    - Integrazione React
    Feature Implementazione coerente dei Server Component

    Perfettamente adatto per i server component di Next.js, utilizza la stessa implementazione sia per i componenti client che server, senza necessità di passare la tua funzione t attraverso ogni server component.

    - Server Component
    Feature Base di codice organizzata

    Mantieni la tua base di codice più organizzata: 1 componente = 1 dizionario nella stessa cartella. Le traduzioni vicine ai rispettivi componenti migliorano la manutenibilità e la chiarezza.

    - Come funziona Intlayer
    Feature Routing Avanzato

    Supporto completo del routing delle app, adattandosi perfettamente alle strutture applicative complesse, per Next.js, React, Vite, Vue.js, ecc.

    - Esplora l'integrazione con Next.js
    Feature Supporto Markdown

    Importa e interpreta file locale e Markdown remoto per contenuti multilingue come informative sulla privacy, documentazione, ecc. Interpreta e rendi accessibili i metadati Markdown nel tuo codice.

    - File di contenuto
    Feature Editor Visuale e CMS Gratuiti

    Un editor visuale e un CMS gratuiti sono disponibili per i redattori di contenuti, eliminando la necessità di una piattaforma di localizzazione. Mantieni i tuoi contenuti sincronizzati usando Git, o esternalizzali totalmente o parzialmente con il CMS.

    - Intlayer Editor
    - Intlayer CMS
    Feature Contenuto Tree-shakable

    Contenuto tree-shakable, riducendo le dimensioni del bundle finale. Carica i contenuti per componente, escludendo qualsiasi contenuto inutilizzato dal tuo bundle. Supporta il lazy loading per migliorare l'efficienza di caricamento dell'app.

    - Ottimizzazione della build dell'app
    Feature Rendering Statico

    Non blocca il Rendering Statico.

    - Integrazione Next.js
    Feature Traduzione basata su IA

    Trasforma il tuo sito web in 231 lingue con un solo clic utilizzando gli avanzati strumenti di traduzione basati su IA di Intlayer, utilizzando il tuo fornitore di IA/chiave API.

    - Integrazione CI/CD
    - CLI di Intlayer
    - Auto fill
    Feature Integrazione del Server MCP

    Fornisce un server MCP (Model Context Protocol) per l'automazione dell'IDE, consentendo una gestione fluida dei contenuti e flussi di lavoro i18n direttamente all'interno del proprio ambiente di sviluppo.

    - Server MCP
    Feature Estensione per VSCode

    Intlayer fornisce un'estensione per VSCode per aiutarti a gestire i tuoi contenuti e le tue traduzioni, costruire i tuoi dizionari, tradurre i tuoi contenuti e altro ancora.

    - Estensione per VSCode
    Feature Interoperabilità

    Consente l'interoperabilità con react-i18next, next-i18next, next-intl e react-intl.

    - Intlayer e react-intl
    - Intlayer e next-intl
    - Intlayer e next-i18next
    Test delle traduzioni mancanti (CLI/CI) ✅ CLI: npx intlayer content test (audit compatibile con CI)

    Confronto di Intlayer con altre soluzioni

    Mostra tutto il contenuto della tabella

    Apri la tabella in una finestra modale per visualizzare tutti i dati in modo chiaro

    Funzionalità intlayer react-i18next react-intl (FormatJS) lingui next-intl next-i18next vue-i18n
    Traduzioni vicine ai componenti ✅ Sì, contenuto co-localizzato con ogni componente ❌ No ❌ No ❌ No ❌ No ❌ No ✅ Sì - usando Single File Components (SFC)
    Integrazione TypeScript ✅ Avanzata, tipi stretti generati automaticamente ⚠️ Base; configurazione extra per la sicurezza ✅ Buona, ma meno stretta ⚠️ Tipizzazioni, necessita di configurazione ✅ Buona ⚠️ Base ✅ Buona (tipi disponibili; sicurezza chiavi richiede setup)
    Rilevamento traduzioni mancanti ✅ Evidenziazione errori TypeScript ed errori/avvisi in fase di build ⚠️ Principalmente stringhe di fallback a runtime ⚠️ Stringhe di fallback ⚠️ Richiede configurazione extra ⚠️ Fallback a runtime ⚠️ Fallback a runtime ⚠️ Fallback/avvisi a runtime (configurabile)
    Contenuto ricco (JSX/Markdown/componenti) ✅ Supporto diretto ⚠️ Limitato / solo interpolazione ⚠️ Sintassi ICU, non vero JSX ⚠️ Limitato ❌ Non progettato per nodi ricchi ⚠️ Limitato ⚠️ Limitato (componenti tramite <i18n-t>, Markdown via plugin)
    Traduzione basata su IA ✅ Sì, supporta più fornitori di IA. Utilizzabile con le proprie chiavi API. Considera il contesto dell'app e l'ambito del contenuto ❌ No ❌ No ❌ No ❌ No ❌ No ❌ No
    Editor Visuale ✅ Sì, editor visuale locale + CMS opzionale; può esternalizzare i contenuti del codice; integrabile ❌ No / disponibile tramite piattaforme di localizzazione esterne ❌ No / disponibile tramite piattaforme di localizzazione esterne ❌ No / disponibile tramite piattaforme di localizzazione esterne ❌ No / disponibile tramite piattaforme di localizzazione esterne ❌ No / disponibile tramite piattaforme di localizzazione esterne ❌ No / disponibile tramite piattaforme di localizzazione esterne
    Routing Localizzato ✅ Sì, supporta percorsi localizzati nativamente (funziona con Next.js e Vite) ⚠️ Nessuno integrato, richiede plugin (es. next-i18next) o configurazione router personalizzata ❌ No, solo formattazione messaggi, il routing deve essere manuale ⚠️ Nessuno integrato, richiede plugin o configurazione manuale ✅ Integrato, App Router supporta il segmento [locale] ✅ Integrato ✅ Integrato
    Generazione dinamica delle rotte ✅ Sì ⚠️ Plugin/ecosistema o setup manuale ❌ Non fornito ⚠️ Plugin/manuale ✅ Sì ✅ Sì ❌ Non fornito (Nuxt i18n lo fornisce)
    Pluralizzazione ✅ Modelli basati su enumerazione ✅ Configurabile (plugin come i18next-icu) ✅ (ICU) ✅ (ICU/messageformat) ✅ Buona ✅ Buona ✅ Regole di pluralizzazione integrate
    Formattazione (date, numeri, valute) ✅ Formattatori ottimizzati (Intl sotto il cofano) ⚠️ Tramite plugin o uso personalizzato di Intl ✅ Formattatori ICU ✅ Helper ICU/CLI ✅ Buona (helper Intl) ✅ Buona (helper Intl) ✅ Formattatori date/numeri integrati (Intl)
    Formato del contenuto ✅ .tsx, .ts, .js, .json, .md, .txt, (.yaml WIP) ⚠️ .json ✅ .json, .js ⚠️ .po, .json ✅ .json, .js, .ts ⚠️ .json ✅ .json, .js
    Supporto ICU ⚠️ WIP ⚠️ Tramite plugin (i18next-icu) ✅ Sì ✅ Sì ✅ Sì ⚠️ Tramite plugin (i18next-icu) ⚠️ Tramite formattatore/compilatore personalizzato
    Helper SEO (hreflang, sitemap) ✅ Strumenti integrati: helper per sitemap, robots.txt, metadati ⚠️ Plugin della community/manuale ❌ Non core ❌ Non core ✅ Buona ✅ Buona ❌ Non core (Nuxt i18n fornisce helper)
    Ecosistema / Community ⚠️ Più piccolo ma in rapida crescita e reattivo ✅ Più grande e maturo ✅ Grande ⚠️ Più piccolo ✅ Dimensioni medie, focalizzato su Next.js ✅ Dimensioni medie, focalizzato su Next.js ✅ Grande nell'ecosistema Vue
    Server-side Rendering & Server Component ✅ Sì, ottimizzato per SSR / React Server Component ⚠️ Supportato a livello di pagina ma occorre passare le funzioni t nell'albero dei componenti per i figli ⚠️ Supportato a livello di pagina con setup aggiuntivo, ma occorre passare le funzioni t nell'albero dei componenti per i figli ✅ Supportato, setup richiesto ⚠️ Supportato a livello di pagina ma occorre passare le funzioni t nell'albero dei componenti per i figli ⚠️ Supportato a livello di pagina ma occorre passare le funzioni t nell'albero dei componenti per i figli ✅ SSR tramite Nuxt/Vue SSR (no RSC)
    Tree-shaking (carica solo i contenuti usati) ✅ Sì, per componente in fase di build tramite plugin Babel/SWC ⚠️ Solitamente carica tutto (può essere migliorato con namespace/code-splitting) ⚠️ Solitamente carica tutto ❌ Non predefinito ⚠️ Parziale ⚠️ Parziale ⚠️ Parziale (con code-splitting/setup manuale)
    Lazy loading ✅ Sì, per locale / per dizionario ✅ Sì (es. backend/namespace su richiesta) ✅ Sì (bundle locale divisi) ✅ Sì (importazioni dinamiche catalogo) ✅ Sì (per rotta/per locale), richiede gestione namespace ✅ Sì (per rotta/per locale), richiede gestione namespace ✅ Sì (messaggi locale asincroni)
    Pulizia contenuti non usati ✅ Sì, per dizionario in fase di build ❌ No, solo tramite segmentazione manuale dei namespace ❌ No, tutti i messaggi dichiarati vengono inclusi nel bundle ✅ Sì, chiavi non usate rilevate e rimosse in build ❌ No, può essere gestito manualmente con la gestione dei namespace ❌ No, può essere gestito manualmente con la gestione dei namespace ❌ No, possibile solo tramite lazy-loading manuale
    Gestione di progetti grandi ✅ Incoraggia la modularità, adatto per design-system ⚠️ Richiede una buona disciplina dei file ⚠️ I cataloghi centrali possono diventare grandi ⚠️ Può diventare complesso ✅ Modulare con setup ✅ Modulare con setup ✅ Modulare con setup Vue Router/Nuxt i18n

    Stelle di GitHub

    Le stelle di GitHub sono un forte indicatore della popolarità di un progetto, della fiducia della comunità e della pertinenza a lungo termine. Sebbene non siano una misura diretta della qualità tecnica, riflettono quanti sviluppatori trovano il progetto utile, ne seguono i progressi e sono propensi ad adottarlo. Per stimare il valore di un progetto, le stelle aiutano a confrontare la trazione tra le alternative e forniscono approfondimenti sulla crescita dell'ecosistema.

    Star History Chart


    Interoperabilità

    intlayer può anche aiutare a gestire i tuoi namespace react-intl, react-i18next, next-intl, next-i18next e vue-i18n.

    Usando intlayer, puoi dichiarare i tuoi contenuti nel formato della tua libreria i18n preferita, e intlayer genererà i tuoi namespace nella posizione di tua scelta (esempio: /messages/{{locale}}/{{namespace}}.json).

    Iniziare
    Alt+→

    In questa pagina

      Le discussioni sono anonime e vengono regolarmente esaminate per affrontare problemi comuni. Sentiti libero di condividere idee per nuove funzionalità, feedback sulla documentazione o qualsiasi cosa relativa a Intlayer, utilizziamo questi input per definire la nostra roadmap e migliorare il prodotto.

      .├── locales│   ├── en.json│   ├── es.json│   └── fr.json├── i18n.ts└── src    └── components        └── MyComponent            └── index.tsx
      .├── locales│   ├── en│   │  ├── footer.json│   │  └── navbar.json│   ├── fr│   │  ├── footer.json│   │  └── navbar.json│   └── es│      ├── footer.json│      └── navbar.json├── i18n.ts└── src    └── components        └── MyComponent            └── index.tsx
      .└── components    └── MyComponent        ├── index.content.ts        ├── index.test.tsx        ├── index.stories.tsx        └── index.tsx