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

    Varianten

    Eine Variante ist eine Gruppe von Inhaltsdateien, die denselben Wörterbuch-key teilen, aber jeweils einen anderen variant-Wert tragen. Intlayer liefert die passende Datei basierend auf dem an useIntlayer übergebenen Selektor.

    Der variant-Wert kann zwei Formen annehmen:

    • Ein String — eine einzelne benannte Alternative (A/B-Tests, saisonale Banner, Feature-Flags).
    • Ein Objekt — ein strukturierter Diskriminator, der über eine Reihe von Feldern adressiert wird (CMS-Datensätze, benutzerspezifische Inhalte, beliebige Inhalte mit einer opaken ID als Schlüssel). Das gesamte Objekt ist die Identität: Der Selektor muss ein gleiches Objekt liefern, um den Eintrag aufzulösen.
    Die Objektform ersetzt das frühere meta-Feld. Überall, wo Sie zuvor meta: { id, … } geschrieben haben, schreiben Sie variant: { id, … } und wählen es mit { variant: { id, … } } aus.

    Benannte (String-)Varianten

    Jede Datei stellt eine benannte Alternative dar. Das Weglassen von variant (oder das Setzen auf "default") markiert sie als Fallback.

    hero-banner.content.ts
    import { t, type Dictionary } from "intlayer";
    
    const dictionary = {
      key: "hero-banner",
      variant: "default",
      content: {
        headline: t({
          en: "Build faster with Intlayer",
          fr: "Développez plus vite avec Intlayer",
        }),
        cta: t({ en: "Get started", fr: "Commencer" }),
      },
    } satisfies Dictionary;
    
    export default dictionary;
    hero-banner.black-friday.content.ts
    import { t, type Dictionary } from "intlayer";
    
    const dictionary = {
      key: "hero-banner",
      variant: "black_friday",
      content: {
        headline: t({
          en: "50 % off — today only",
          fr: "−50 % — aujourd'hui seulement",
        }),
        cta: t({ en: "Shop now", fr: "Acheter maintenant" }),
      },
    } satisfies Dictionary;
    
    export default dictionary;

    Benannte Varianten verwenden

    Standardvariante

    Hero.tsx
    import { useIntlayer } from "react-intlayer";
    
    export const Hero = () => {
      const { headline, cta } = useIntlayer("hero-banner");
      // → Standardvariante
    
      return (
        <section>
          <h1>{headline}</h1>
          <a>{cta}</a>
        </section>
      );
    };

    Benannte Variante

    tsx
    const { headline, cta } = useIntlayer("hero-banner", {  variant: "black_friday",});

    Benannte Variante mit explizitem Locale

    tsx
    const content = useIntlayer("hero-banner", {  variant: "black_friday",  locale: "fr",});

    Objekt-Varianten (strukturiert)

    Eine Objekt-Variante adressiert Inhalte über eine beliebige Menge von Schlüssel-Wert-Paaren, die im variant-Feld deklariert sind — wodurch sich CMS-Datensätze, benutzerspezifische Inhalte oder beliebige Inhalte mit einer opaken ID als Schlüssel modellieren lassen. Das gesamte Objekt ist die Identität: Der Selektor muss ein gleiches Objekt liefern, damit der Eintrag aufgelöst wird.

    product.abc.content.ts
    import { t, type Dictionary } from "intlayer";
    
    const dictionary = {
      key: "product",
      variant: { 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.abcd.content.ts
    import { t, type Dictionary } from "intlayer";
    
    const dictionary = {
      key: "product",
      variant: { 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;

    Objekt-Varianten verwenden

    Übergeben Sie das passende Objekt an variant. Jedes im Wörterbuch deklarierte Feld muss angegeben und gleich sein; andernfalls ist das Ergebnis null. Die Reihenfolge der Felder spielt keine Rolle.

    Product.tsx
    import { useIntlayer } from "react-intlayer";
    
    export const Product = ({
      productId,
      userId,
    }: {
      productId: string;
      userId: string;
    }) => {
      const content = useIntlayer("product", {
        variant: { id: productId, userId },
      });
    
      if (!content) return null;
    
      return <p>{content.description}</p>;
    };

    Mit explizitem Locale

    tsx
    const content = useIntlayer("product", {  variant: { id: "prod_abc", userId: "user_123" },  locale: "fr",});

    Fehlendes Feld — keine Übereinstimmung

    ts
    // Gibt null zurück: `userId` fehlt, daher passt das Objekt nicht zur deklarierten Varianteconst content = useIntlayer("product", { variant: { id: "prod_abc" } });

    Lademodus

    Objekt-Varianten werden oft verzögert geladen. Setzen Sie importMode im Wörterbuch, um dies zu steuern:

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

    Siehe Bundle-Optimierung für Details zu den Modi static, dynamic und fetch.

    Typische Anwendungsfälle

    • A/B-Texttests, gesteuert durch einen Experiment-Schlüssel
    • Saisonale oder Werbebanner
    • Feature-Flag-gesteuerte Nachrichten
    • Locale-spezifische Marketingkampagnen
    • Produktspezifische Marketingtexte, die in einem CMS verwaltet werden
    • Benutzer- oder kontospezifische Inhalte
    • Beliebige Inhalte, die durch eine opake Laufzeit-ID adressiert werden