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

    حزمة @intlayer/babel

    توفر حزمة @intlayer/babel مجموعة من إضافات Babel المتخصصة لـ Intlayer. تُغطي دورة البناء الكاملة: استخراج تصريحات المحتوى، وإعادة كتابة استدعاءات useIntlayer / getIntlayer إلى استيرادات قواميس مُحسَّنة، وتنقية الحقول غير المستخدمة، وتصغير أسماء الحقول.

    التثبيت

    bash
    npm install @intlayer/babel
    

    التصديرات

    استيراد:

    ts
    import { ... } from "@intlayer/babel";
    

    الإضافات (Plugins)

    الدالة / الفئةالوصف
    intlayerExtractBabelPluginإضافة Babel تستخرج المحتوى القابل للترجمة من ملفات المصدر وتُدرج hooks useIntlayer / getIntlayer تلقائيًا. مُصمَّمة للاستخدام مع Next.js وأدوات البناء المعتمدة على Babel.
    intlayerOptimizeBabelPluginإضافة Babel تُحوِّل استدعاءات useIntlayer وgetIntlayer وتُعيد كتابة استيراداتها إلى استيرادات قواميس JSON مُحسَّنة (ثابتة أو ديناميكية أو عبر fetch).
    intlayerPurgeBabelPluginإضافة Babel تُحلِّل ملفات المصدر وتُعيد كتابة ملفات JSON للقواميس المُجمَّعة لحذف الحقول غير المستخدمة (build.purge) أو إعادة تسميتها بأسماء مختصرة (build.minify).
    intlayerMinifyBabelPluginإضافة Babel تُعيد كتابة ملفات المصدر لاستخدام أسماء الحقول المختصرة المُعيَّنة أثناء مرحلة التصغير (مثلاً content.titlecontent.a). تعتمد على intlayerPurgeBabelPlugin.
    makeFieldRenameBabelPluginدالة مُنشِئة (factory) تُنتج إضافة Babel تُعيد تسمية وصولات حقول محتوى القاموس في ملفات المصدر وفق خريطة dictionaryKeyToFieldRenameMap الموجودة في PruneContext.
    makeUsageAnalyzerBabelPluginدالة مُنشِئة تُنتج إضافة Babel تُحلِّل استخدام useIntlayer / getIntlayer في الكود المصدري وتُجمِّع بيانات استخدام الحقول في PruneContext المُشترك.
    getSharedPruneContextدالة مساعدة تُعيد كائن PruneContext المُشترك للمجلد الأساسي المُحدَّد، أو null إن لم يُهيَّأ بعد.

    دوال إعداد الإضافات

    الدالةالوصف
    getExtractPluginOptionsتُحمِّل إعداد Intlayer وتُعيد خيارات ExtractPluginOptions جاهزة للاستخدام مع intlayerExtractBabelPlugin.
    getOptimizePluginOptionsتُحمِّل إعداد Intlayer والقواميس المُجمَّعة وتُعيد خيارات OptimizePluginOptions جاهزة للاستخدام مع intlayerOptimizeBabelPlugin.
    getPurgePluginOptionsتُحمِّل إعداد Intlayer وتُعيد خيارات PurgePluginOptions جاهزة للاستخدام مع intlayerPurgeBabelPlugin.
    getMinifyPluginOptionsتُحمِّل إعداد Intlayer وتُعيد خيارات MinifyPluginOptions جاهزة للاستخدام مع intlayerMinifyBabelPlugin.

    الأنواع

    النوعالوصف
    CompilerModeوضع المُجمِّع: 'dev' للتطوير مع دعم HMR أو 'build' لبناء الإنتاج.
    ExtractPluginOptionsخيارات intlayerExtractBabelPlugin: قائمة الملفات، الإعداد، callback onExtract، وغيرها.
    ExtractResultنتيجة الاستخراج: مفتاح القاموس، مسار الملف، المحتوى، واللغة.
    OptimizePluginOptionsخيارات intlayerOptimizeBabelPlugin: مسارات القواميس، وضع الاستيراد، خريطة الأوضاع لكل قاموس، إلخ.
    PurgePluginOptionsخيارات intlayerPurgeBabelPlugin: المجلد الأساسي، علامات purge/minify/optimize، قائمة ملفات المكوّنات.
    MinifyPluginOptionsخيارات intlayerMinifyBabelPlugin: المجلد الأساسي، علامات minify/optimize/editorEnabled.
    PruneContextالحالة المُشتركة بين إضافات التحليل والتنقية: خرائط استخدام الحقول، خرائط إعادة التسمية، إلخ.
    DictionaryFieldUsageنتيجة استخدام الحقول لقاموس واحد: Set<string> أو 'all' عند تعذُّر التحديد الساكن.
    NestedRenameEntryعقدة في شجرة إعادة التسمية: الاسم المختصر shortName وخريطة الأبناء children.
    NestedRenameMapمستوى واحد في شجرة إعادة التسمية: Map<string, NestedRenameEntry>.
    CompatCallerConfigإعداد مُحلِّل استخدام مُتوافق لحزم الـ compat-adapter (اسم المُستدعي وخيارات المعالجة).
    ScriptBlockكتلة script مستخرجة من ملف SFC (Vue أو Svelte): المحتوى وإزاحتا البداية والنهاية.

    الأدوات المساعدة

    الدالةالوصف
    generateShortFieldNameتُحوِّل رقمًا صحيحًا (ابتداءً من الصفر) إلى معرِّف أبجدي مختصر: 0 → 'a', 25 → 'z', 26 → 'aa', إلخ.
    buildNestedRenameMapFromContentتبني NestedRenameMap بصورة مُتكرِّرة من قيمة محتوى قاموس مُجمَّع، مع احترام بنية عقد Intlayer (translation، enumeration، إلخ).
    createPruneContextتُنشئ كائن PruneContext فارغًا جديدًا مُهيَّأً بالقيم الافتراضية.
    extractScriptBlocksتستخرج كتل <script> من ملفات SFC (Vue / Svelte) للتحليل اللاحق بـ Babel.
    BABEL_PARSER_OPTIONSثابت يُمثِّل خيارات مُحلِّل Babel تُغطي مجموعة الأُطر المدعومة (React/Vue/Svelte/Angular/…).
    INTLAYER_CALLER_NAMESقائمة ثابتة بأسماء المُستدعِيين الأصلية لـ Intlayer: ['useIntlayer', 'getIntlayer'].

    مثال على الاستخدام

    js
    // babel.config.js
    const {
      intlayerExtractBabelPlugin,
      intlayerPurgeBabelPlugin,
      intlayerMinifyBabelPlugin,
      intlayerOptimizeBabelPlugin,
      getExtractPluginOptions,
      getPurgePluginOptions,
      getMinifyPluginOptions,
      getOptimizePluginOptions,
    } = require("@intlayer/babel");
    
    module.exports = {
      presets: ["next/babel"],
      plugins: [
        [intlayerExtractBabelPlugin, getExtractPluginOptions()],
        [intlayerPurgeBabelPlugin, getPurgePluginOptions()],
        [intlayerMinifyBabelPlugin, getMinifyPluginOptions()],
        [intlayerOptimizeBabelPlugin, getOptimizePluginOptions()],
      ],
    };
    
    ملاحظة: يجب أن تُدرَج intlayerPurgeBabelPlugin قبل intlayerMinifyBabelPlugin، لأن الأخيرة تقرأ خريطة إعادة التسمية التي تبنيها الأولى. كما يجب أن تسبقهما معًا intlayerOptimizeBabelPlugin حتى تتمكّن من رؤية مفاتيح القاموس قبل إعادة كتابة استدعاءات useIntlayer.