Penulis:
    Dibuat:2026-06-12Terakhir diperbarui:2026-06-12

    Catatan Dinamis

    Sebuah catatan dinamis (dynamic record) adalah file konten yang identitasnya bukan merupakan indeks berurutan atau varian bernama, melainkan kumpulan pasangan kunci-nilai arbitrer yang dideklarasikan dalam bidang meta. Intlayer menggunakan bidang-bidang tersebut sebagai selektor pada saat runtime, sehingga memungkinkan untuk merujuk pada catatan CMS, salinan khusus pengguna, atau konten apa pun yang kuncinya tidak diketahui pada waktu kompilasi.

    Mendeklarasikan catatan dinamis

    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;

    Mengonsumsi catatan dinamis

    Semua bidang meta adalah wajib dalam selektor. Mengabaikan bidang apa pun akan mengembalikan null dan merupakan kesalahan 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 memastikan bahwa `id` dan `userId` telah disediakan.
    
      if (!content) return null;
    
      return <p>{content.description}</p>;
    };

    Dengan lokalitas eksplisit

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

    Kolom meta hilang — kesalahan pada waktu kompilasi

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

    Mode pemuatan (loading mode)

    Catatan dinamis biasanya dimuat secara lambat (lazy loading). Tetapkan importMode pada kamus untuk mengontrol hal ini:

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

    Lihat optimalisasi bundel untuk detail tentang mode static, dynamic, dan fetch.

    Kasus penggunaan umum

    • Salinan pemasaran per produk yang dikelola di CMS
    • Konten khusus pengguna atau khusus akun
    • Konten apa pun yang diidentifikasi oleh ID runtime buram