Pose una domanda e ottieni un riassunto del documento facendo riferimento a questa pagina e al provider AI di tua scelta
Cronologia delle versioni
- "Inizializzazione della documentazione"v9.4.024/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
Documentazione del plugin intlayer per Elysia
Il plugin intlayer per Elysia rileva la locale dell'utente e inietta un oggetto intlayer nel contesto della route. Consente inoltre l'uso di funzioni di traduzione globali all'interno del contesto della richiesta.
Utilizzo
Copiare il codice nella clipboard
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!.t) — oppure l'optional chaining — per soddisfare TypeScript in modalitàstrict.
Gli stessi helper sono disponibili come export autonomi, così puoi richiamarli senza destrutturare il contesto della route:
Copiare il codice nella clipboard
Descrizione
Il plugin esegue le seguenti operazioni:
- Rilevamento della locale: Legge la locale impostata esplicitamente dal client dallo storage (cookie, header), quindi ricade sulla locale negoziata a partire dall'header
Accept-Language. - Iniezione nel contesto: Aggiunge una proprietà
intlayeral contesto della route di Elysia (vedi la tabella Contesto della route qui sotto). - Gestione del contesto: Utilizza
AsyncLocalStorageper gestire un contesto asincrono, consentendo alle funzioni globali di Intlayer (t,getIntlayer,getDictionary) di accedere alla locale specifica della richiesta senza dover passare l'oggetto di contesto. - Preparazione dei dizionari: Richiama
prepareIntlayeralla creazione del plugin, così i dizionari vengono costruiti all'avvio dell'applicazione.
Contesto della route
Apri la tabella in una finestra modale per visualizzare tutti i dati in modo chiaro
| Proprietà | Tipo | Descrizione |
|---|---|---|
locale | Locale | La locale da usare per questa richiesta, con locale_storage che ha la precedenza su locale_detected. |
locale_storage | Locale (opzionale) | La locale richiesta esplicitamente dal client tramite un cookie o un header. |
locale_detected | Locale | La locale negoziata a partire dagli header della richiesta. |
defaultLocale | Locale | La locale configurata come fallback in intlayer.config.ts. |
t | TranslateFunction | Una funzione di traduzione. |
getIntlayer | typeof getIntlayer | Una funzione per recuperare i dizionari tramite chiave. |
getDictionary | typeof getDictionary | Una funzione per elaborare gli oggetti dizionario. |
A differenza dei plugin Intlayer basati su Node,elysia-intlayersi affida adAsyncLocalStorageanziché acls-hooked, poichécls-hookeddipende daasync_hooks.createHook, che Bun non implementa.
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.
Ordine di risoluzione della locale
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. - La
defaultLocaleconfigurata.
Copiare il codice nella clipboard
Configurazione
Il plugin legge il tuo file intlayer.config.ts. Puoi personalizzare il cookie e l'header utilizzati per il rilevamento della locale:
Copiare il codice nella clipboard
import { Locales, type IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
internationalization: {
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
defaultLocale: Locales.ENGLISH,
},
routing: {
storage: [
{ type: "header", name: "my-locale-header" },
{ type: "cookie", name: "my-locale-cookie" },
],
},
};
export default config;
Per maggiori informazioni sulla configurazione, consulta la documentazione di configurazione.
