Autor:
    Erstellung:2026-06-12Letzte Aktualisierung:2026-06-12

    Dynamische Einträge

    Ein dynamischer Eintrag (dynamic record) ist eine Inhaltsdatei, deren Identität kein sequenzieller Index oder eine benannte Variante ist, sondern ein beliebiges Satz von Schlüssel-Wert-Paaren, die in einem meta-Feld deklariert sind. Intlayer verwendet diese Felder zur Laufzeit als Selektor. Dadurch ist es möglich, CMS-Einträge, benutzerspezifische Texte oder beliebige Inhalte zu adressieren, deren Schlüssel zur Build-Zeit noch nicht bekannt sind.

    Deklarieren von dynamischen Einträgen

    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;

    Nutzen von dynamischen Einträgen

    Alle meta-Felder sind im Selektor erforderlich. Das Weglassen eines Feldes gibt null zurück und führt zu einem TypeScript-Fehler.

    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 erzwingt, dass sowohl `id` als auch `userId` angegeben werden.
    
      if (!content) return null;
    
      return <p>{content.description}</p>;
    };

    Mit explizitem Locale

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

    Fehlendes Meta-Feld — Fehler zur Compile-Zeit

    ts
    // Typfehler: `userId` fehltconst content = useIntlayer("product-copy", { id: "prod_abc" });

    Lademodus (loading mode)

    Dynamische Einträge werden normalerweise verzögert (lazy) geladen. Legen Sie importMode für das Wörterbuch fest, um dies zu steuern:

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

    Weitere Details zu den Modi static, dynamic und fetch finden Sie unter Bundle-Optimierung.

    Typische Anwendungsfälle

    • Produktbezogene Marketingtexte, die in einem CMS verwaltet werden
    • Benutzerspezifische oder kontospezifische Inhalte
    • Beliebige Inhalte, die durch eine opake Runtime-ID gekennzeichnet sind