الرئيسيةبيئة اختبارمعرض الأعمالتطبيقوثيقةمدونة
    • Englishالإنجليزية
      EN
    • русскийالروسية
      RU
    • 日本語اليابانية
      JA
    • françaisالفرنسية
      FR
    • 한국어الكورية
      KO
    • 中文الصينية
      ZH
    • españolالإسبانية
      ES
    • Deutschالألمانية
      DE
    • العربيةالعربية
      AR
    • italianoالإيطالية
      IT
    • British Englishالإنجليزية (المملكة المتحدة)
      EN-GB
    • portuguêsالبرتغالية
      PT
    • हिन्दीالهندية
      HI
    • Türkçeالتركية
      TR
    • polskiالبولندية
      PL
    • Indonesiaالإندونيسية
      ID
    • Tiếng Việtالفيتنامية
      VI
    • українськаالأوكرانية
      UK
    /
    تصفية المستندات حسب الإطار
    Alt+←
    لماذا Intlayer؟
    ابدأ
    مفهوم
    • كيف يعمل Intlayer
    • التكوين
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • المحرر المرئي
    • CMS
    • تكامل CI/CD
    • ترجمةجمعتعدادشرطجنسإدراجملفتداخلMarkdownHTMLجلب الوظيفة
    • ملف لكل لغة
    • محرر
    • الملء التلقائي
    • اختبار
    • تحسين الحزمة
    بيئة
    • Next.js 14 وموجه التطبيق
      Next.js 15
      Next.js بدون locale URL
      Next.js وموجه الصفحة
      المترجم
    • Tanstack Start Solid
    • Astro و React
      Astro و Svelte
      Astro و Vue
      Astro و Solid
      Astro و Preact
      Astro و Lit
      Astro و Vanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • Nuxt و Vue
    • Vite و Solid
    • SvelteKit
    • Vite و Preact
    • Vite و Vanilla JS
    • Vite و Lit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React Native و Expo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • Lynx و React
    Plugins
    • JSON
    • gettext (.po)
    امتداد VS Code
    وكيل
    • خادم MCP
    • مهارات الوكيل
    إصدارات
    • v8
    • v7
    • v6
    مؤشر أداء
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    مدونة
    طرح سؤال
    1. Documentation
    2. مفهوم
    3. إعلان المحتوى
    4. جمع
    إنشاء:2026-05-04آخر تحديث:2026-05-04
    استخدم هذه الصفحة والموفر AI الذي تريده
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    استخدم مساعدك المفضل للملخص واستخدم هذه الصفحة والموفر AI الذي تريده

    تاريخ الإصدارات

    1. "Init history"
      v8.8.04‏/5‏/2026

    تمت ترجمة محتوى هذه الصفحة باستخدام الذكاء الاصطناعي.

    اعرض آخر نسخة المحتوى الأصلي باللغة الإنكليزية
    تعديل هذه الوثيقة

    إذا كان لديك فكرة لتحسين هذه الوثيقة، فلا تتردد في المساهمة من خلال تقديم طلب سحب على GitHub.

    رابط GitHub للتوثيق
    نسخ

    نسخ الـ Markdown من المستند إلى الحافظة

    محتوى الجمع / الجمع في Intlayer

    كيف يعمل الجمع

    في Intlayer، يتم تحقيق محتوى الجمع من خلال وظيفة plural التي تربط فئات الجمع في CLDR, zero و one و two و few و many و other, بالمحتوى المقابل لها. يتم اختيار الفئة الصحيحة تلقائيًا بناءً على اللغة النشطة وقيمة العدد، باستخدام واجهة برمجة تطبيقات Intl.PluralRules المدمجة في النظام الأساسي.

    على عكس enu، الذي يختار المحتوى بناءً على نطاقات رقمية تحددها بنفسك، تفوض وظيفة plural الاختيار لقواعد CLDR. وهذا ما يجعلها قابلة للتوسع للغات ذات قواعد الجمع المعقدة, مثل الروسية أو البولندية أو العربية أو الويلزية, دون الحاجة إلى كتابة منطق الحساب يدويًا.

    متى تستخدم plural مقابل enu

    اظهار جميع محتويات الجدول

    افتح الجدول في نافذة منبثقة لعرض جميع محتويات البيانات بوضوح

    حالة الاستخدام المساعد
    أشكال الجمع النحوية المتوافقة مع اللغة (تفاحة واحدة / تفاحتان / 5 تفاحات) plural
    النطاقات الرقمية المخصصة (<5 ، >=10) أو الفئات غير التابعة لـ CLDR enu

    إذا كنت تستهدف اللغة الإنجليزية فقط (التي تحتوي فقط على one / other) ، فكلاهما يعمل. لأي لغة بها تمييزات few / many / two ، يفضل استخدام plural.

    إعداد محتوى الجمع

    لإعداد محتوى الجمع في مشروع Intlayer الخاص بك، قم بإنشاء وحدة محتوى تستخدم مساعد plural. فئة other مطلوبة وتستخدم كبديل عندما لا تحدد اللغة فئة أكثر تحديدًا.

    **/*.content.ts
    نسخ الكود

    نسخ الكود إلى الحافظة

    import { plural, t, type Dictionary } from "intlayer";
    
    const openingsContent = {
      key: "total_openings",
      content: {
        totalOpenings: t({
          en: plural({
            one: "{{count}} opening",
            other: "{{count}} openings",
          }),
          ar: plural({
            zero: "لا توجد وظائف شاغرة",
            one: "وظيفة شاغرة واحدة",
            two: "وظيفتان شاغرتان",
            few: "{{count}} وظائف شاغرة",
            many: "{{count}} وظيفة شاغرة",
            other: "{{count}} وظيفة شاغرة",
          }),
        }),
      },
    } satisfies Dictionary;
    
    export default openingsContent;

    الفئات المدعومة هي zero و one و two و few و many و other. تحتاج فقط إلى التصريح عن الفئات التي تستخدمها لغتك المستهدفة, يعود Intlayer إلى other عندما لا تتطابق أي فئة محددة.

    يتم استبدال العنصر النائب {{count}} تلقائيًا بالعدد الذي تمرره في وقت التشغيل. يمكنك تضمين عناصر نائبة أخرى أيضًا (انظر العناصر النائبة المخصصة أدناه).

    استخدام محتوى الجمع مع React Intlayer

    لاستخدام محتوى الجمع داخل مكون React، قم باسترجاعه عبر خطاف useIntlayer واستدعه مع العدد. يتم دمج اللغة النشطة والعدد لاختيار فئة CLDR المطابقة.

    **/*.tsx
    نسخ الكود

    نسخ الكود إلى الحافظة

    import type { FC } from "react";
    import { useIntlayer } from "react-intlayer";
    
    const OpeningsComponent: FC<{ count: number }> = ({ count }) => {
      const { totalOpenings } = useIntlayer("total_openings");
    
      return (
        <div>
          {/* باللغة الإنجليزية:                                 */}
          {/*  count=0  → "0 openings"   (other)           */}
          {/*  count=1  → "1 opening"    (one)             */}
          {/*  count=2  → "2 openings"   (other)           */}
          {/*  count=21 → "21 openings"  (other)           */}
          <p>{totalOpenings(count)}</p>
        </div>
      );
    };
    
    export default OpeningsComponent;

    يمكنك استدعاء الوظيفة المرجعة بطريقتين متكافئتين:

    tsx
    نسخ الكود

    نسخ الكود إلى الحافظة

    totalOpenings(21); // اختصار: العدد فقطtotalOpenings({ count: 21 }); // النموذج الصريح

    العناصر النائبة المخصصة

    يمكن أن تتضمن سلاسل الجمع عناصر نائبة أخرى غير {{count}}. قم بتمريرها في شكل كائن بجانب count:

    **/*.content.ts
    نسخ الكود

    نسخ الكود إلى الحافظة

    import { plural, type Dictionary } from "intlayer";
    
    const inboxContent = {
      key: "inbox_summary",
      content: {
        summary: plural({
          one: "{{name}}، لديك رسالة جديدة واحدة",
          other: "{{name}}، لديك {{count}} رسائل جديدة",
        }),
      },
    } satisfies Dictionary;
    
    export default inboxContent;
    **/*.tsx
    نسخ الكود

    نسخ الكود إلى الحافظة

    const { summary } = useIntlayer("inbox_summary");
    
    summary({ count: 1, name: "Alice" });
    // → "Alice، لديك رسالة جديدة واحدة"
    
    summary({ count: 7, name: "Alice" });
    // → "Alice، لديك 7 رسائل جديدة"

    فئات CLDR في لمحة

    تستخدم اللغات المختلفة مجموعات فرعية مختلفة من فئات CLDR. بعض الحالات الشائعة:

    اظهار جميع محتويات الجدول

    افتح الجدول في نافذة منبثقة لعرض جميع محتويات البيانات بوضوح

    اللغة الفئات المستخدمة
    الإنجليزية (en) one ، other
    الفرنسية (fr) one ، many ، other
    الروسية (ru) one ، few ، many ، other
    البولندية (pl) one ، few ، many ، other
    العربية (ar) zero ، one ، two ، few ، many ، other
    اليابانية / الصينية other فقط

    لا تحتاج إلى حفظ هذا, صرح عن الفئات التي لديك ترجمات لها، وسيعود Intlayer إلى other عند الحاجة.

    قيود

    مقارنة بالعقد الأخرى، لا يمكن تداخل العقدة plural مع العقد الفرعية حتى الآن.

    مثال:

    صالح:

    ts
    نسخ الكود

    نسخ الكود إلى الحافظة

        totalOpenings: t({      en: plural({        one: "{{count}} opening",        other: "{{count}} openings",      }),      fr: plural({        one: "{{count}} offre",        other: "{{count}} offres",      }),    }),

    غير صالح:

    ts
    نسخ الكود

    نسخ الكود إلى الحافظة

    totalOpenings: plural({  one: t({    en: "{{count}} opening",    fr: "{{count}} offre",  }),  other: t({    en: "{{count}} openings",    fr: "{{count}} offres",  }),}),

    موارد إضافية

    لمزيد من المعلومات التفصيلية حول التكوين والاستخدام، راجع الموارد التالية:

    • توثيق التعداد (Enumeration)
    • توثيق الإدراج (Insertion)
    • توثيق Intlayer CLI
    • توثيق React Intlayer
    • توثيق Next Intlayer

    تقدم هذه الموارد مزيدًا من الرؤى حول إعداد واستخدام Intlayer عبر بيئات وأطر عمل مختلفة.

    ترجمة
    تعداد
    Alt+→

    في هذه الصفحة

      المناقشات مجهولة الهوية ويتم مراجعتها بانتظام لمعالجة المشكلات الشائعة. لا تتردد في مشاركة أفكار الميزات أو التعليقات على الوثائق أو أي شيء يتعلق بـ Intlayer, نستخدم هذه المدخلات لتشكيل خارطة الطريق وتحسين المنتج.

      totalOpenings(21); // اختصار: العدد فقطtotalOpenings({ count: 21 }); // النموذج الصريح
          totalOpenings: t({      en: plural({        one: "{{count}} opening",        other: "{{count}} openings",      }),      fr: plural({        one: "{{count}} offre",        other: "{{count}} offres",      }),    }),
      totalOpenings: plural({  one: t({    en: "{{count}} opening",    fr: "{{count}} offre",  }),  other: t({    en: "{{count}} openings",    fr: "{{count}} offres",  }),}),