Autore:
    Creazione:2026-06-12Ultimo aggiornamento:2026-06-12

    Record Dinamici

    Un record dinamico (dynamic record) è un file di contenuto la cui identità non è un indice sequenziale o una variante denominata, ma un insieme arbitrario di coppie chiave-valore dichiarate in un campo meta. Intlayer utilizza questi campi come selettore al momento dell'esecuzione, rendendo possibile indirizzare record di CMS, testi specifici dell'utente o qualsiasi contenuto le cui chiavi non sono note a tempo di compilazione.

    Dichiarare record dinamici

    product-copy.abc.content.ts
    import { t, type Dictionary } from "intlayer";
    
    const dictionary = {
      key: "product-copy",
      meta: {
        id: "prod_abc",
        userId: "user_123",
      },
      content: {
        name: t({ en: "Widget Pro", fr: "Widget Pro" }),
        description: t({ en: "The best widget.", fr: "Le meilleur widget." }),
      },
    } satisfies Dictionary;
    
    export default dictionary;
    product-copy.abcd.content.ts
    import { t, type Dictionary } from "intlayer";
    
    const dictionary = {
      key: "product-copy",
      meta: {
        id: "prod_abcd",
        userId: "user_123",
      },
      content: {
        name: t({ en: "Widget Lite", fr: "Widget Lite" }),
        description: t({ en: "A lighter option.", fr: "Une option plus légère." }),
      },
    } satisfies Dictionary;
    
    export default dictionary;

    Consumare record dinamici

    Tutti i campi meta sono obbligatori nel selettore. L'omissione di qualsiasi campo restituisce null ed è un errore di TypeScript.

    ProductCopy.tsx
    import { useIntlayer } from "react-intlayer";
    
    export const ProductCopy = ({
      productId,
      userId,
    }: {
      productId: string;
      userId: string;
    }) => {
      const content = useIntlayer("product-copy", { id: productId, userId });
      // TypeScript garantisce che vengano forniti sia `id` che `userId`.
    
      if (!content) return null;
    
      return <p>{content.description}</p>;
    };

    Con locale esplicita

    tsx
    const content = useIntlayer("product-copy", {  id: "prod_abc",  userId: "user_123",  locale: "it",});

    Campo meta mancante — errore in tempo di compilazione

    ts
    // Errore di tipo: manca `userId`const content = useIntlayer("product-copy", { id: "prod_abc" });

    Modalità di caricamento (loading mode)

    I record dinamici vengono solitamente caricati in modo differito (lazy loading). Imposta importMode sul dizionario per controllare questo comportamento:

    ts
    const dictionary = {
      key: "product-copy",
      importMode: "fetch", // o "dynamic"
      meta: { id: "prod_abc", userId: "user_123" },
      content: { … },
    } satisfies Dictionary;
    
    export default dictionary;

    Vedi ottimizzazione del bundle per i dettagli sulle modalità static, dynamic e fetch.

    Casi d'uso tipici

    • Testi di marketing per prodotto gestiti in un CMS
    • Contenuti specifici dell'utente o dell'account
    • Qualsiasi contenuto identificato da un ID runtime opaco