Autore:
    Creazione:2026-08-24Ultimo aggiornamento:2026-08-24

    Pacchetto elysia-intlayer

    Il pacchetto elysia-intlayer fornisce un plugin per applicazioni Elysia per gestire l'internazionalizzazione. Rileva la locale dell'utente e inietta un oggetto intlayer nel contesto della route.

    Installazione

    bash
    npm install intlayer elysia-intlayer
    
    elysia è una peer dependency (>=1.0.0). Elysia è pensato per il runtime Bun.

    Esportazioni

    Plugin

    Importazione:

    ts
    import { intlayer } from "elysia-intlayer";
    
    Funzione Descrizione Documento correlato
    intlayer Plugin Elysia che integra Intlayer nella tua applicazione Elysia. Gestisce il rilevamento della locale dallo storage (cookie, header) e poi da Accept-Language, inietta un oggetto intlayer che espone locale, t, getIntlayer e getDictionary nel contesto della route e configura il contesto di richiesta AsyncLocalStorage. intlayer

    Funzioni

    Importazione:

    ts
    import { t, getIntlayer, getDictionary } from "elysia-intlayer";
    
    Funzione Descrizione Documento correlato
    t Funzione di traduzione globale che recupera il contenuto per la locale corrente in Elysia. Utilizza AsyncLocalStorage per accedere al contesto di richiesta configurato dal plugin intlayer e ricade sulla locale predefinita al di fuori di esso. Accessibile anche tramite intlayer.t. translation
    getIntlayer Recupera un dizionario tramite la sua chiave dalla dichiarazione generata e ne restituisce il contenuto per la locale corrente. Versione ottimizzata di getDictionary. Utilizza AsyncLocalStorage per accedere al contesto della richiesta. Accessibile anche tramite intlayer.getIntlayer. -
    getDictionary Elabora gli oggetti dizionario e restituisce il contenuto per la locale corrente. Elabora traduzioni t(), enumerazioni, markdown, HTML, ecc. Utilizza AsyncLocalStorage per accedere al contesto della richiesta. Accessibile anche tramite intlayer.getDictionary. -

    Tipi

    Importazione:

    ts
    import type { IntlayerContext, TranslateFunction } from "elysia-intlayer";
    
    Tipo Descrizione
    IntlayerContext Forma dell'oggetto intlayer iniettato in ogni contesto di route: locale, locale_storage, locale_detected, defaultLocale, t, getIntlayer, getDictionary.
    TranslateFunction Firma della funzione di traduzione, che traduce una locale map nel contenuto corrispondente alla locale della richiesta corrente.

    Utilizzo

    src/index.ts
    import { Elysia } from "elysia";
    import { getDictionary, getIntlayer, intlayer, t } from "elysia-intlayer";
    import dictionaryExample from "./index.content";
    
    const app = new Elysia()
      // Carica il plugin di internazionalizzazione
      .use(intlayer())
      // Leggi la locale e gli helper dal contesto della route
      .get("/", ({ intlayer }) => ({
        locale: intlayer!.locale,
        greeting: intlayer!.t({
          it: "Ciao",
          en: "Hello",
          fr: "Bonjour",
          es: "Hola",
        }),
        content: intlayer!.getIntlayer("index").exampleOfContent,
      }))
      // Oppure usa gli helper standalone, legati alla richiesta corrente
      .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);
    
    console.log(
      `🦊 Elysia is running at ${app.server?.hostname}:${app.server?.port}`
    );
    
    Il plugin registra il proprio contesto tramite un derive globale, che Elysia tipizza come Partial<{ 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.

    Documentazione correlata