Intlayer وثائق التكوين

    نظرة عامة

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


    دعم ملفات التكوين

    يدعم Intlayer تنسيقات ملفات التكوين JSON، JS، MJS، و TS:

    • intlayer.config.ts
    • intlayer.config.js
    • intlayer.config.json
    • intlayer.config.cjs
    • intlayer.config.mjs
    • .intlayerrc

    ملف تكوين مثال

    intlayer.config.ts
    import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH],  },  content: {    typesDir: "content/types",  },  middleware: {    noPrefix: false,  },};export default config;

    مرجع التكوين

    تصف الأقسام التالية إعدادات التكوين المختلفة المتاحة لـ Intlayer.


    تكوين التدويل

    تعريف الإعدادات المتعلقة بالتدويل، بما في ذلك اللغات المتاحة واللغة الافتراضية للتطبيق.

    الخصائص

    • locales:

      • النوع: string[]
      • الافتراضي: ['en']
      • الوصف: قائمة اللغات المدعومة في التطبيق.
      • مثال: ['en', 'fr', 'es']
    • requiredLocales:
      • النوع: string[]
      • الافتراضي: []
      • الوصف: قائمة اللغات المطلوبة في التطبيق.
      • مثال: []
      • ملاحظة: إذا كانت فارغة، فإن جميع اللغات مطلوبة في وضع strict.
      • ملاحظة: تأكد من أن اللغات المطلوبة محددة أيضًا في حقل locales.
    • strictMode:

      • النوع: string
      • الافتراضي: inclusive
      • الوصف: ضمان تنفيذ قوي للمحتوى المترجم باستخدام TypeScript.
      • ملاحظة: إذا تم تعيينها إلى "strict"، فإن وظيفة الترجمة t ستتطلب تعريف كل لغة معلنة. إذا كانت لغة واحدة مفقودة، أو إذا لم يتم الإعلان عن لغة في التكوين الخاص بك، فسيتم طرح خطأ.
      • ملاحظة: إذا تم تعيينها إلى "inclusive"، فإن وظيفة الترجمة t ستتطلب تعريف كل لغة معلنة. إذا كانت لغة واحدة مفقودة، فسيتم عرض تحذير. ولكن سيتم قبولها إذا لم يتم الإعلان عن لغة في التكوين الخاص بك، ولكنها موجودة.
      • ملاحظة: إذا تم تعيينها إلى "loose"، فإن وظيفة الترجمة t ستقبل أي لغة موجودة.
    • defaultLocale:

      • النوع: string
      • الافتراضي: 'en'
      • الوصف: اللغة الافتراضية المستخدمة كنسخة احتياطية إذا لم يتم العثور على اللغة المطلوبة.
      • مثال: 'en'
      • ملاحظة: يتم استخدام هذا لتحديد اللغة عندما لا يتم تحديد أي لغة في عنوان URL أو الكوكيز أو الرأس.

    تكوين المحرر

    تعريف الإعدادات المتعلقة بالمحرر المدمج، بما في ذلك منفذ الخادم وحالة النشاط.

    الخصائص

    • applicationURL:

      • النوع: string
      • الافتراضي: '*'
      • الوصف: عنوان URL للتطبيق. يستخدم لتقييد أصل المحرر لأسباب أمنية.
      • مثال:
        • '*'
        • 'http://localhost:3000'
        • 'https://example.com'
        • process.env.INTLAYER_EDITOR_URL
      • ملاحظة: عنوان URL للتطبيق. يستخدم لتقييد أصل المحرر لأسباب أمنية. إذا تم تعيينه إلى '*'، فإن المحرر يكون متاحًا من أي أصل.
    • port:

      • النوع: number
      • الافتراضي: 8000
      • الوصف: المنفذ المستخدم بواسطة خادم المحرر المرئي.
    • editorURL:

      • النوع: string
      • الافتراضي: 'http://localhost:8000'
      • الوصف: عنوان URL لخادم المحرر. يستخدم لتقييد أصل المحرر لأسباب أمنية.
        • 'http://localhost:3000'
        • 'https://example.com'
        • process.env.INTLAYER_EDITOR_URL
        • ''*'
      • ملاحظة: عنوان URL لخادم المحرر للوصول من التطبيق. يستخدم لتقييد الأصول التي يمكنها التفاعل مع التطبيق لأسباب أمنية. إذا تم تعيينه إلى '*'، فإن المحرر يكون متاحًا من أي أصل. يجب تعيينه إذا تم تغيير المنفذ، أو إذا تم استضافة المحرر على نطاق مختلف.
    • cmsURL:

      • النوع: string
      • الافتراضي: 'https://intlayer.org'
      • الوصف: عنوان URL لنظام إدارة المحتوى Intlayer.
      • مثال: 'https://intlayer.org'
      • ملاحظة: عنوان URL لنظام إدارة المحتوى Intlayer.
    • backendURL:

      • النوع: string
      • الافتراضي: https://back.intlayer.org
      • الوصف: عنوان URL لخادم الخلفية.
      • مثال: http://localhost:4000
    • enabled:

      • النوع: boolean
      • الافتراضي: true
      • الوصف: يشير إلى ما إذا كان التطبيق يتفاعل مع المحرر المرئي.
      • مثال: process.env.NODE_ENV !== 'production'
      • ملاحظة: إذا كانت القيمة true، فسيكون المحرر قادرًا على التفاعل مع التطبيق. إذا كانت القيمة false، فلن يتمكن المحرر من التفاعل مع التطبيق. في أي حال، يمكن تمكين المحرر فقط بواسطة المحرر المرئي. تعطيل المحرر لبيئات معينة هو وسيلة لتعزيز الأمان.
    • clientId:

      • النوع: string | undefined
      • الافتراضي: undefined
      • الوصف: clientId و clientSecret يسمحان لحزم intlayer بالمصادقة مع الخلفية باستخدام مصادقة oAuth2. يتم استخدام رمز وصول للمصادقة على المستخدم المرتبط بالمشروع. للحصول على رمز وصول، انتقل إلى https://intlayer.org/dashboard/project وقم بإنشاء حساب.
      • مثال: true
      • ملاحظة: مهم: يجب الاحتفاظ بـ clientId و clientSecret بشكل سري وعدم مشاركتهما علنًا. يرجى التأكد من الاحتفاظ بهما في مكان آمن، مثل متغيرات البيئة.
    • clientSecret:

      • النوع: string | undefined
      • الافتراضي: undefined
      • الوصف: clientId و clientSecret يسمحان لحزم intlayer بالمصادقة مع الخلفية باستخدام مصادقة oAuth2. يتم استخدام رمز وصول للمصادقة على المستخدم المرتبط بالمشروع. للحصول على رمز وصول، انتقل إلى https://intlayer.org/dashboard/project وقم بإنشاء حساب.
      • مثال: true
      • ملاحظة: مهم: يجب الاحتفاظ بـ clientId و clientSecret بشكل سري وعدم مشاركتهما علنًا. يرجى التأكد من الاحتفاظ بهما في مكان آمن، مثل متغيرات البيئة.
    • hotReload:

      • النوع: boolean
      • الافتراضي: false
      • الوصف: يشير إلى ما إذا كان التطبيق يجب أن يقوم بإعادة تحميل تكوينات اللغة تلقائيًا عند اكتشاف تغيير.
      • مثال: true
      • ملاحظة: على سبيل المثال، عند إضافة أو تحديث قاموس جديد، سيقوم التطبيق بتحديث المحتوى لعرضه في الصفحة.
      • ملاحظة: لأن إعادة التحميل التلقائي تتطلب اتصالًا مستمرًا بالخادم، فهي متاحة فقط لعملاء خطة enterprise.
    • dictionaryPriorityStrategy:

      • النوع: string
      • الافتراضي: 'local_first'
      • الوصف: الإستراتيجية لتحديد أولويات القواميس في حالة وجود قواميس محلية وبعيدة. إذا تم تعيينها إلى 'distant_first'، فسيعطي التطبيق الأولوية للقواميس البعيدة على القواميس المحلية. إذا تم تعيينها إلى 'local_first'، فسيعطي التطبيق الأولوية للقواميس المحلية على القواميس البعيدة.
      • مثال: 'distant_first'

    تكوين الوسيط

    إعدادات تتحكم في سلوك الوسيط، بما في ذلك كيفية تعامل التطبيق مع الكوكيز، الرؤوس، والبادئات لعناوين URL لإدارة اللغة.

    الخصائص

    • headerName:
      • النوع: string
      • الافتراضي: 'x-intlayer-locale'
      • الوصف: اسم رأس HTTP المستخدم لتحديد اللغة.
      • مثال: 'x-custom-locale'
      • ملاحظة: هذا مفيد لتحديد اللغة بناءً على API.
    • cookieName:
      • النوع: string
      • الافتراضي: 'intlayer-locale'
      • الوصف: اسم الكوكي المستخدم لتخزين اللغة.
      • مثال: 'custom-locale'
      • ملاحظة: يستخدم للحفاظ على اللغة عبر الجلسات.
    • prefixDefault:
      • النوع: boolean
      • الافتراضي: true
      • الوصف: ما إذا كان يجب تضمين اللغة الافتراضية في عنوان URL.
      • مثال: false
      • ملاحظة: إذا كانت القيمة false، فلن تحتوي عناوين URL للغة الافتراضية على بادئة اللغة.
    • basePath:
      • النوع: string
      • الافتراضي: ''
      • الوصف: المسار الأساسي لعناوين URL للتطبيق.
      • مثال: '/my-app'
      • ملاحظة: يؤثر هذا على كيفية إنشاء عناوين URL للتطبيق.
    • serverSetCookie:
      • النوع: string
      • الافتراضي: 'always'
      • الوصف: قاعدة لتعيين كوكي اللغة على الخادم.
      • الخيارات: 'always', 'never'
      • مثال: 'never'
      • ملاحظة: يتحكم في ما إذا كان يتم تعيين كوكي اللغة في كل طلب أو أبدًا.
    • noPrefix:
      • النوع: boolean
      • الافتراضي: false
      • الوصف: ما إذا كان يجب حذف بادئة اللغة من عناوين URL.
      • مثال: true
      • ملاحظة: إذا كانت القيمة true، فلن تحتوي عناوين URL على معلومات اللغة.

    تكوين المحتوى

    إعدادات تتعلق بمعالجة المحتوى داخل التطبيق، بما في ذلك أسماء الدلائل، امتدادات الملفات، والتكوينات المشتقة.

    الخصائص

    • watch:
      • النوع: boolean
      • الافتراضي: process.env.NODE_ENV === 'development'
      • الوصف: يشير إلى ما إذا كان Intlayer يجب أن يراقب التغييرات في ملفات إعلان المحتوى في التطبيق لإعادة بناء القواميس ذات الصلة.
    • fileExtensions:
      • النوع: string[]
      • الافتراضي: ['.content.ts', '.content.js', '.content.cjs', '.content.mjs', '.content.json', '.content.tsx', '.content.jsx']
      • الوصف: امتدادات الملفات التي يجب البحث عنها عند بناء القواميس.
      • مثال: ['.data.ts', '.data.js', '.data.json']
      • ملاحظة: تخصيص امتدادات الملفات يمكن أن يساعد في تجنب التعارضات.
    • baseDir:
      • النوع: string
      • الافتراضي: process.cwd()
      • الوصف: الدليل الأساسي للمشروع.
      • مثال: '/path/to/project'
      • ملاحظة: يتم استخدام هذا لحل جميع الأدلة المتعلقة بـ Intlayer.
    • dictionaryOutput:
      • النوع: string[]
      • الافتراضي: ['intlayer']
      • الوصف: نوع إخراج القاموس الذي يجب استخدامه، مثل 'intlayer' أو 'i18next'.
    • contentDirName:
      • النوع: string
      • الافتراضي: 'src'
      • الوصف: اسم الدليل الذي يتم تخزين المحتوى فيه.
      • مثال: 'data', 'content', 'locales'
      • ملاحظة: إذا لم يكن في مستوى الدليل الأساسي، قم بتحديث contentDir.
    • contentDir:

      • النوع: string
      • مشتق من: 'baseDir' / 'contentDirName'
      • الوصف: مسار الدليل حيث يتم تخزين المحتوى.
    • resultDirName:
      • النوع: string
      • الافتراضي: '.intlayer'
      • الوصف: اسم الدليل حيث يتم تخزين النتائج.
      • مثال: 'outputOFIntlayer'
      • ملاحظة: إذا لم يكن هذا الدليل في المستوى الأساسي، قم بتحديث resultDir.
    • resultDir:

      • النوع: string
      • مشتق من: 'baseDir' / 'resultDirName'
      • الوصف: مسار الدليل لتخزين النتائج الوسيطة أو النهائية.
    • moduleAugmentationDirName:

      • النوع: string
      • الافتراضي: 'types'
      • الوصف: دليل لتوسيع الوحدة، مما يسمح باقتراحات أفضل في IDE وفحص الأنواع.
      • مثال: 'intlayer-types'
      • ملاحظة: تأكد من تضمين هذا في tsconfig.json.
    • moduleAugmentationDir:

      • النوع: string
      • مشتق من: 'baseDir' / 'moduleAugmentationDirName'
      • الوصف: المسار لتوسيع الوحدة وتعريفات الأنواع الإضافية.
    • dictionariesDirName:
      • النوع: string
      • الافتراضي: 'dictionary'
      • الوصف: دليل لتخزين القواميس.
      • مثال: 'translations'
      • ملاحظة: إذا لم يكن في مستوى دليل النتائج، قم بتحديث dictionariesDir.
    • dictionariesDir:

      • النوع: string
      • مشتق من: 'resultDir' / 'dictionariesDirName'
      • الوصف: الدليل لتخزين قواميس الترجمة.
    • i18nextResourcesDirName:
      • النوع: string
      • الافتراضي: 'i18next_dictionary'
      • الوصف: دليل لتخزين قواميس i18n.
      • مثال: 'translations'
      • ملاحظة: إذا لم يكن في مستوى دليل النتائج، قم بتحديث i18nextResourcesDir.
      • ملاحظة: تأكد من أن إخراج قواميس i18n يتضمن i18next لبناء القواميس لـ i18next
    • i18nextResourcesDir:

      • النوع: string
      • مشتق من: 'resultDir' / 'i18nextResourcesDirName'
      • الوصف: الدليل لتخزين قواميس i18n.
      • ملاحظة: تأكد من تكوين هذا الدليل لنوع إخراج i18next.
    • typeDirName:

      • النوع: string
      • الافتراضي: 'types'
      • الوصف: دليل لتخزين أنواع القواميس.
      • مثال: 'intlayer-types'
      • ملاحظة: إذا لم يكن في مستوى دليل النتائج، قم بتحديث typesDir.
    • typesDir:

      • النوع: string
      • مشتق من: 'resultDir' / 'typeDirName'
      • الوصف: الدليل لتخزين أنواع القواميس.
    • mainDirName:
      • النوع: string
      • الافتراضي: 'main'
      • الوصف: دليل لتخزين الملفات الرئيسية.
      • مثال: 'intlayer-main'
      • ملاحظة: إذا لم يكن في مستوى دليل النتائج، قم بتحديث mainDir.
    • mainDir:
      • النوع: string
      • مشتق من: 'resultDir' / 'mainDirName'
      • الوصف: الدليل حيث يتم تخزين الملفات الرئيسية للتطبيق.
    • excludedPath:
      • النوع: string[]
      • الافتراضي: ['node_modules']
      • الوصف: الأدلة المستبعدة من البحث عن المحتوى.
      • ملاحظة: هذا الإعداد لم يتم استخدامه بعد، ولكنه مخطط للتنفيذ في المستقبل.

    تكوين السجل

    إعدادات تتحكم في السجل، بما في ذلك البادئة التي يجب استخدامها.

    الخصائص

    • mode:
      • النوع: string
      • الافتراضي: default
      • الوصف: يشير إلى وضع السجل.
      • الخيارات: default, verbose, disabled
      • مثال: default
      • ملاحظة: وضع السجل. وضع verbose سيسجل المزيد من المعلومات، ولكن يمكن استخدامه لأغراض التصحيح. وضع disabled سيعطل السجل.
    • prefix:
      • النوع: string
      • الافتراضي: '[intlayer] '
      • الوصف: بادئة السجل.
      • مثال: '[my custom prefix] '
      • ملاحظة: بادئة السجل.

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

    رابط GitHub للتوثيق