Questa pagina ha un modello di applicazione disponibile.
Pose una domanda e ottieni un riassunto del documento facendo riferimento a questa pagina e al provider AI di tua scelta
Cronologia delle versioni
- "Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà"v8.9.004/05/2026
- "Aggiunto comando init"v7.6.031/12/2025
- "Inizializzata cronologia"v7.6.031/12/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
Traduci il sito web del tuo backend Fastify usando Intlayer | Internazionalizzazione (i18n)
fastify-intlayer è un potente plugin di internazionalizzazione (i18n) per applicazioni Fastify, progettato per rendere i tuoi servizi backend accessibili a livello globale fornendo risposte localizzate in base alle preferenze del client.
Vedi l'implementazione del pacchetto su GitHub.
Casi d'uso pratici
- Visualizzazione degli errori del backend nella lingua dell'utente: Quando si verifica un errore, mostrare i messaggi nella lingua madre dell'utente migliora la comprensione e riduce la frustrazione. Questo è particolarmente utile per messaggi di errore dinamici che potrebbero essere visualizzati in componenti front-end come toast o modali.
- Recupero di contenuti multilingue: Per le applicazioni che recuperano contenuti da un database, l'internazionalizzazione garantisce che sia possibile servire tali contenuti in più lingue. Questo è fondamentale per piattaforme come siti di e-commerce o sistemi di gestione dei contenuti che devono visualizzare descrizioni di prodotti, articoli e altri contenuti nella lingua preferita dall'utente.
- Invio di email multilingue: Che si tratti di email transazionali, campagne di marketing o notifiche, l'invio di email nella lingua del destinatario può aumentare significativamente il coinvolgimento e l'efficacia.
- Notifiche push multilingue: Per le applicazioni mobili, l'invio di notifiche push nella lingua preferita dell'utente può migliorare l'interazione e la fidelizzazione. Questo tocco personale può rendere le notifiche più pertinenti e azionabili.
- Altre comunicazioni: Qualsiasi forma di comunicazione dal backend, come messaggi SMS, avvisi di sistema o aggiornamenti dell'interfaccia utente, beneficia dell'uso della lingua dell'utente, garantendo chiarezza e migliorando l'esperienza utente complessiva.
Internazionalizzando il backend, la tua applicazione non solo rispetta le differenze culturali, ma si allinea anche meglio alle esigenze del mercato globale, rendendolo un passaggio chiave per scalare i tuoi servizi in tutto il mondo.
Per iniziare
Vedi il Template dell'applicazione su GitHub.
Installazione
Per iniziare a usare fastify-intlayer, installa il pacchetto usando npm:
Copiare il codice nella clipboard
il flag--interactiveè opzionale. Usaintlayer-cli initse sei un agente IA.
Questo comando rileverà il tuo ambiente e installerà i pacchetti richiesti. Ad esempio:
Copiare il codice nella clipboard
Configurazione
Configura le impostazioni di internazionalizzazione creando un file intlayer.config.ts nella root del tuo progetto:
Copiare il codice nella clipboard
import { Locales, type IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
internationalization: {
locales: [
Locales.ENGLISH,
Locales.FRENCH,
Locales.SPANISH_MEXICO,
Locales.SPANISH_SPAIN,
],
defaultLocale: Locales.ENGLISH,
},
};
export default config;
Dichiara i tuoi contenuti
Crea e gestisci le tue dichiarazioni di contenuto per memorizzare le traduzioni:
Copiare il codice nella clipboard
import { t, type Dictionary } from "intlayer";
const indexContent = {
key: "index",
content: {
exampleOfContent: t({
en: "Example of returned content in English",
fr: "Exemple de contenu renvoyé en français",
"es-ES": "Ejemplo de contenuto devuelto en español (España)",
"es-MX": "Ejemplo de contenuto devuelto en español (México)",
}),
},
} satisfies Dictionary;
export default indexContent;
Le dichiarazioni di contenuto possono essere definite ovunque nella tua applicazione, purché siano incluse nella directorycontentDir(per impostazione predefinita,./src). E devono corrispondere all'estensione del file di dichiarazione del contenuto (per impostazione predefinita,.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}).
Per maggiori dettagli, consulta la documentazione sulla dichiarazione del contenuto.
Configurazione dell'applicazione Fastify
Configura la tua applicazione Fastify per usare fastify-intlayer:
Copiare il codice nella clipboard
import Fastify from "fastify";
import { intlayer, t, getDictionary, getIntlayer } from "fastify-intlayer";
import dictionaryExample from "./index.content";
const fastify = Fastify({ logger: true });
// Carica il plugin di internazionalizzazione
await fastify.register(intlayer);
// Rotte
fastify.get("/t_example", async (_req, reply) => {
return t({
en: "Example of returned content in English",
fr: "Exemple de contenuto renvoyé en français",
"es-ES": "Ejemplo de contenuto devuelto en español (España)",
"es-MX": "Ejemplo de contenuto devuelto en español (México)",
});
});
fastify.get("/getIntlayer_example", async (_req, reply) => {
return getIntlayer("index").exampleOfContent;
});
fastify.get("/getDictionary_example", async (_req, reply) => {
return getDictionary(dictionaryExample).exampleOfContent;
});
// Avvia il server
const start = async () => {
try {
await fastify.listen({ port: 3000 });
} catch (err) {
fastify.log.error(err);
process.exit(1);
}
};
start();
Compatibilità
fastify-intlayer è completamente compatibile con:
react-intlayerper applicazioni Reactnext-intlayerper applicazioni Next.jsvite-intlayerper applicazioni Vite
Funziona perfettamente anche con qualsiasi soluzione di internazionalizzazione in vari ambienti, inclusi browser e richieste API. Puoi personalizzare il middleware per rilevare la locale tramite header o cookie:
Copiare il codice nella clipboard
import { Locales, type IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
// ... Altre opzioni di configurazione
routing: {
storage: [
{ type: "header", name: "my-locale-header" },
{ type: "cookie", name: "my-locale-cookie" },
],
},
};
export default config;
Per impostazione predefinita, fastify-intlayer interpreterà l'header Accept-Language per determinare la lingua preferita del client.
Per ulteriori informazioni sulla configurazione e su argomenti avanzati, visita la nostra documentazione.
Configura TypeScript
fastify-intlayer sfrutta le potenti capacità di TypeScript per migliorare il processo di internazionalizzazione. La tipizzazione statica di TypeScript garantisce che ogni chiave di traduzione sia considerata, riducendo il rischio di traduzioni mancanti e migliorando la manutenibilità.
Assicurati che i tipi autogenerati (per impostazione predefinita in ./types/intlayer.d.ts) siano inclusi nel tuo file tsconfig.json.
Copiare il codice nella clipboard
Estensione VS Code
Per migliorare la tua esperienza di sviluppo con Intlayer, puoi installare l'estensione ufficiale Intlayer VS Code Extension.
Installa dal VS Code Marketplace
Questa estensione offre:
- Autocompletamento per le chiavi di traduzione.
- Rilevamento degli errori in tempo reale per le traduzioni mancanti.
- Anteprime inline del contenuto tradotto.
- Azioni rapide per creare e aggiornare facilmente le traduzioni.
Per maggiori dettagli sull'uso dell'estensione, consulta la documentazione dell'estensione Intlayer VS Code.
Configurazione Git
Si consiglia di ignorare i file generati da Intlayer. Questo ti consente di evitare di inserirli nel tuo repository Git.
Per farlo, puoi aggiungere le seguenti istruzioni al tuo file .gitignore:
Copiare il codice nella clipboard
Domande frequenti
L'opzione generica è i18next con fastify-i18next o un hook scritto a mano, che carica cataloghi JSON per namespace e memorizza la locale sulla richiesta. L'alternativa è Intlayer tramite fastify-intlayer, che registra il plugin per te, risolve la locale per richiesta e condivide lo stesso contenuto tipizzato del tuo frontend.
Il motivo per cui internazionalizzare il backend è che gran parte del testo che un utente legge non passa mai per il frontend: messaggi di errore delle API, email transazionali, notifiche push, SMS ed esportazioni PDF. Questi hanno bisogno della lingua del destinatario, risolta per richiesta invece che per sessione.
Vedi perché Intlayer.
Molto poco. I dizionari sono compilati in anticipo e vengono inclusi solo i locale che dichiari, quindi non c'è caricamento di cataloghi all'avvio né letture di file sul percorso della richiesta. Questo conta di più sui deployment serverless ed edge, dove la dimensione del bundle determina il tempo di cold start. Vedi ottimizzazione del bundle.
Sì, e ci sono due percorsi. Puoi migrare il contenuto progressivamente con la guida alla migrazione da i18next. Oppure puoi mantenere interamente la tua API attuale: gli adattatori di compatibilità espongono esattamente la stessa API di i18next, ma servita dai dizionari Intlayer, quindi cambiano gli import e il codice degli handler 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.
Sul lato frontend dello stesso progetto, il Compilatore Intlayer va oltre e genera i dizionari in fase di build dal tuo codice sorgente JSX, TSX, Vue o Svelte, così le due metà dell'app condividono un unico livello di contenuto senza chiavi mantenute a mano.
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.
