المؤلف:
    إنشاء:2026-06-12آخر تحديث:2026-06-12

    السجلات الديناميكية

    السجل الديناميكي (dynamic record) هو ملف محتوى لا يتم تحديد هويته بواسطة فهرس تسلسلي أو متغير مسمى، بل بواسطة مجموعة عشوائية من أزواج المفاتيح والقيم المعلنة في حقل meta. يستخدم Intlayer هذه الحقول كمحدد في وقت التشغيل، مما يتيح معالجة سجلات CMS، أو نسخ محددة للمستخدم، أو أي محتوى لا تُعرف مفاتيحه في وقت البناء.

    الإعلان عن السجلات الديناميكية

    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;

    استهلاك السجلات الديناميكية

    جميع حقول meta مطلوبة في المحدد. يؤدي حذف أي حقل إلى إرجاع null ويعد خطأ في 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 توفير كل من `id` و `userId`.
    
      if (!content) return null;
    
      return <p>{content.description}</p>;
    };

    مع تحديد لغة صريحة

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

    حقل meta مفقود — خطأ وقت الترجمة

    ts
    // خطأ في النوع: `userId` مفقودconst content = useIntlayer("product-copy", { id: "prod_abc" });

    وضع التحميل

    عادة ما يتم تحميل السجلات الديناميكية بشكل كسول. قم بتعيين importMode في القاموس للتحكم في ذلك:

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

    انظر تحسين الحزمة لمعرفة التفاصيل حول الأوضاع static و dynamic و fetch.

    حالات الاستخدام الشائعة

    • نسخة تسويقية لكل منتج تتم إدارتها في نظام إدارة المحتوى (CMS)
    • محتوى خاص بالمستخدم أو خاص بالحساب
    • أي محتوى يتم تعيينه بواسطة معرف تشغيل غير شفاف