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
- "Allinea la guida al template Elysia (tipizzazione del contesto, setup Bun, script)"v9.4.024/08/2026
- "init Elysia plugin"v9.4.023/08/2026
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 tuo sito backend Elysia utilizzando Intlayer | Internazionalizzazione (i18n)
elysia-intlayer è un potente plugin di internazionalizzazione (i18n) per applicazioni Elysia, progettato per rendere i tuoi servizi backend accessibili a livello globale fornendo risposte localizzate in base alle preferenze del client.
Vedi l'implementazione del package su GitHub: https://github.com/aymericzip/intlayer/tree/main/packages/elysia-intlayer
Casi d'uso pratici
- Visualizzazione degli errori del backend nella lingua dell'utente: Quando si verifica un errore, visualizzare i messaggi nella lingua nativa dell'utente migliora la comprensione e riduce la frustrazione. Questo è particolarmente utile per i messaggi di errore dinamici che potrebbero essere mostrati in componenti front-end come toast o modal.
- Recupero di contenuti multilingue: Per le applicazioni che recuperano contenuti da un database, l'internazionalizzazione garantisce che tu possa servire questo contenuto in più lingue. Questo è cruciale per piattaforme come siti di e-commerce o sistemi di gestione dei contenuti che hanno bisogno di 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 l'engagement e l'efficacia.
- Notifiche push multilingue: Per le applicazioni mobili, l'invio di notifiche push nella lingua preferita dall'utente può migliorare l'interazione e la retention. Questo tocco personale può rendere le notifiche più rilevanti e azionabili.
- Altre comunicazioni: Qualsiasi forma di comunicazione dal backend, come messaggi SMS, avvisi di sistema o aggiornamenti dell'interfaccia utente, beneficia di essere nella 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, rendendola un passo fondamentale nel ridimensionamento dei tuoi servizi a livello mondiale.
Iniziare
Consulta il Template dell'Applicazione su GitHub.
Installazione
Per iniziare a utilizzare elysia-intlayer, installa il pacchetto usando npm:
Copiare il codice nella clipboard
il flag--interactiveè opzionale. Usaintlayer-cli initse sei un agente AI.
Questo comando rileverà il tuo ambiente e installerà i pacchetti necessari. Per esempio:
Copiare il codice nella clipboard
Elysia è pensato per il runtime Bun.elysia-intlayersi affida adAsyncLocalStorage(invece della libreriacls-hookedusata dai plugin Intlayer basati su Node) proprio perché Bun non implementaasync_hooks.createHook.
Configurazione
Configura le impostazioni di internazionalizzazione creando un file intlayer.config.ts nella radice 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],
/**
* Locale predefinita usata come fallback se la locale richiesta non viene trovata.
*/
defaultLocale: Locales.ENGLISH,
},
};
export default config;
Dichiara il Tuo Contenuto
Crea e gestisci le tue dichiarazioni di contenuto per archiviare le traduzioni:
Copiare il codice nella clipboard
import { t, type Dictionary } from "intlayer";
const indexContent = {
key: "index",
content: {
exampleOfContent: t({
it: "Esempio di contenuto restituito in italiano",
en: "Example of returned content in English",
fr: "Exemple de contenu renvoyé en français",
es: "Ejemplo de contenido devuelto en español",
}),
},
} satisfies Dictionary;
export default indexContent;
Le tue dichiarazioni di contenuto possono essere definite ovunque nella tua applicazione purché siano incluse nella directorycontentDir(per impostazione predefinita,./src). E corrispondano all'estensione del file di dichiarazione del contenuto (per impostazione predefinita,.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}).
Per ulteriori dettagli, consulta la documentazione sulla dichiarazione del contenuto.
Configurazione dell'Applicazione Elysia
Configura la tua applicazione Elysia per utilizzare elysia-intlayer:
Copiare il codice nella clipboard
import { Elysia } from "elysia";
import { intlayer } from "elysia-intlayer";
const app = new Elysia()
// Carica il plugin di internazionalizzazione
.use(intlayer())
// Route
.get("/", ({ intlayer }) => ({
// Locale utilizzato per questa richiesta, negoziato da `Accept-Language` o letto dall'archiviazione
locale: intlayer!.locale,
greeting: intlayer!.t({
it: "Ciao",
en: "Hello",
fr: "Bonjour",
es: "Hola",
}),
content: intlayer!.getIntlayer("index").exampleOfContent,
}))
.listen(3000);
console.log(
`🦊 Elysia is running at ${app.server?.hostname}:${app.server?.port}`
);
Il plugin registra il proprio contesto tramite underiveglobale, che Elysia tipizza comePartial<{ intlayer: IntlayerContext }>. A runtime il valore è sempre presente per le route registrate dopo.use(intlayer()), quindi usa la non-null assertion (intlayer!.locale) — oppure l'optional chaining — per soddisfare TypeScript in modalitàstrict.
Il contesto della route espone:
Apri la tabella in una finestra modale per visualizzare tutti i dati in modo chiaro
| Proprietà | Descrizione |
|---|---|
locale | La locale da usare per questa richiesta, con locale_storage che ha la precedenza su locale_detected. |
locale_storage | La locale richiesta esplicitamente dal client tramite un cookie o un header. |
locale_detected | La locale negoziata a partire dagli header della richiesta. |
defaultLocale | La locale configurata come fallback in intlayer.config.ts. |
t | Una funzione di traduzione. |
getIntlayer | Una funzione per recuperare i dizionari tramite chiave. |
getDictionary | Una funzione per elaborare gli oggetti dizionario. |
Gli stessi helper sono esportati anche in versione standalone. Risolvono la richiesta corrente tramite AsyncLocalStorage, quindi puoi richiamarli senza destrutturare il contesto:
Copiare il codice nella clipboard
import { Elysia } from "elysia";
import { intlayer, t, getDictionary, getIntlayer } from "elysia-intlayer";
import dictionaryExample from "./index.content";
const app = new Elysia()
.use(intlayer())
.get("/t_example", () =>
t({
it: "Esempio di contenuto restituito in italiano",
en: "Example of returned content in English",
fr: "Exemple de contenu renvoyé en français",
es: "Ejemplo de contenido devuelto en español",
})
)
.get("/getIntlayer_example", () => getIntlayer("index").exampleOfContent)
.get(
"/getDictionary_example",
() => getDictionary(dictionaryExample).exampleOfContent
)
.listen(3000);
Il contesto della richiesta viene rilasciato una volta mappata la risposta, così gli helper autonomi non si risolvono mai su una richiesta già terminata. Quando vengono chiamati al di fuori di una richiesta gestita dal plugin, ricadono sulla locale predefinita configurata.
Esegui la tua applicazione
Aggiungi gli script di Intlayer al tuo package.json. intlayer build compila le tue dichiarazioni di contenuto nella directory .intlayer e genera i tipi TypeScript:
Copiare il codice nella clipboard
Poi avvia il server:
Copiare il codice nella clipboard
Testa la negoziazione della locale con Accept-Language:
Copiare il codice nella clipboard
intlayer buildnon è strettamente necessario prima dibun run src/index.ts: il plugin prepara i dizionari anche all'avvio dell'applicazione Elysia. Eseguirlo in anticipo mantiene i tipi generati allineati per il tuo editor ed evita il costo della build alla prima richiesta.
Compatibilità
elysia-intlayer è completamente compatibile con:
react-intlayerper applicazioni Reactnext-intlayerper applicazioni Next.jsvite-intlayerper applicazioni Vite
Funziona inoltre in modo fluido con qualsiasi soluzione di internazionalizzazione in vari ambienti, inclusi browser e richieste API.
Per impostazione predefinita, il plugin risolve la locale in questo ordine:
- Il cookie
INTLAYER_LOCALE. - L'header
x-intlayer-locale. - La negoziazione dell'header
Accept-Language.
Puoi personalizzare il cookie e l’header usati per il rilevamento della locale:
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 ulteriori informazioni sulla configurazione e argomenti avanzati, visita la nostra documentazione.
Configura TypeScript
elysia-intlayer sfrutta le solide capacità di TypeScript per migliorare il processo di internazionalizzazione. La tipizzazione statica di TypeScript garantisce che ogni chiave di traduzione sia contabilizzata, riducendo il rischio di traduzioni mancanti e migliorando la manutenibilità.
Assicurati che i tipi generati automaticamente (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 Intlayer per VS Code.
Installa dal VS Code Marketplace
Questa estensione fornisce:
- Autocompletamento per le chiavi di traduzione.
- Rilevamento errori in tempo reale per traduzioni mancanti.
- Anteprime inline dei contenuti tradotti.
- Azioni rapide per creare e aggiornare facilmente le traduzioni.
Per maggiori dettagli su come utilizzare l'estensione, consulta la documentazione dell'Estensione Intlayer per VS Code.
Configurazione Git
Si consiglia di ignorare i file generati da Intlayer. Questo consente di evitare di eseguirne il commit nel repository Git.
Per farlo, puoi aggiungere le seguenti istruzioni al tuo file .gitignore:
Copiare il codice nella clipboard
