تلقي إشعارات حول الإصدارات القادمة من Intlayer
    إنشاء:2025-09-22آخر تحديث:2025-09-22

    الإصدار الجديد Intlayer v6 - ما الجديد؟

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

    أبرز النقاط

    • أمر جديد: npx intlayer content test لاكتشاف الترجمات المفقودة
    • خيار عالمي جديد autoFill لتوليد الترجمات المفقودة تلقائيًا
    • أمر التعبئة (Fill) يتخطى الترجمات الموجودة بشكل افتراضي: npx intlayer fill
    • امتداد VS Code: شريط نشاط Intlayer جديد (بحث وقواميس)، أزرار شريط الأدوات/السياق، الكشف التلقائي، أوامر التعبئة/الاختبار
    • بناء أسرع 10 مرات بفضل التوازي في الوعود (promise parallelization)
    • تخزين مؤقت للقاموس عن بُعد لتجنب إعادة التحميل عند بدء التطبيق
    • تحسين التسجيل: اضبط log.mode: 'verbose' لفحص السلوك
    • تحقق أقوى لمنع تعطل التطبيق بسبب مشاكل في القاموس
    • تحديثات حية مع نظام إدارة المحتوى (CMS) باستخدام build.importMode = 'live' و pnpm intlayer live
    • إصلاحات: تكامل Vue.js، محول Lynx، المحرر المرئي على ويندوز

    جديد: اختبار الترجمات المفقودة

    قم بتدقيق مشروعك بسرعة لمعرفة المفاتيح/اللغات المفقودة.

    bash
    npx intlayer content test

    الإخراج:

    bash
    pnpm intlayer content testالترجمات المفقودة: - blog-data       - اليابانية (ja)، الكورية (ko)، الصينية (zh)، الألمانية (de)، الإيطالية (it) - src/components/BlogPage/blogData.content.ts - demo-page       - الفرنسية (fr)، الإيطالية (it)                                         - src/components/DemoPage/demo.content.ts - locale-switcher - الإيطالية (it)، البرتغالية (pt)                                       - src/components/LocaleSwitcher/localeSwitcher.content.tsاللغات: الإنجليزية (en)، الروسية (ru)، اليابانية (ja)، الفرنسية (fr)، الكورية (ko)، الصينية (zh)، الإسبانية (es)، الألمانية (de)، العربية (ar)، الإيطالية (it)، الإنجليزية البريطانية (en-GB)، البرتغالية (pt)، الهندية (hi)اللغات المطلوبة: الإنجليزية (en)اللغات المفقودة: اليابانية (ja)، الكورية (ko)، الصينية (zh)، الألمانية (de)، الإيطالية (it)، الفرنسية (fr)، البرتغالية (pt)اللغات المطلوبة المفقودة: -إجمالي اللغات المفقودة: 7إجمالي اللغات المطلوبة المفقودة: 0

    راجع المزيد من الخيارات في وثائق CLI: مرجع CLI → "اختبار الترجمات المفقودة". وكذلك دليل الاختبار.


    جديد: التعبئة التلقائية العالمية لإكمال الترجمات المفقودة

    يمكنك الآن تمكين التعبئة التلقائية على مستوى العالم بحيث يتم إكمال أي قاموس يحتوي على ترجمات مفقودة تلقائيًا.

    intlayer.config.ts
    import { type IntlayerConfig, Locales } from "intlayer";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],    defaultLocale: Locales.ENGLISH,    requiredLocales: [Locales.ENGLISH, Locales.FRENCH],  },  content: {    // توليد تلقائي للترجمات المفقودة لجميع القواميس    autoFill: "./{{fileName}}.content.ts",    //    // autoFill: "/messages/{{locale}}/{{key}}/{{fileName}}.content.json",    //    // autoFill: true, // توليد تلقائي للترجمات المفقودة لجميع القواميس مثل استخدام "./{{fileName}}.content.json"    //    // autoFill: {    //   en: "./{{fileName}}.en.content.json",    //   fr: "./{{fileName}}.fr.content.json",    //   es: "./{{fileName}}.es.content.json",    // },  },};export default config;

    يمكنك أيضًا ضبط كل قاموس بدقة باستخدام حقل autoFill في ملفات المحتوى. راجع المرجع الكامل في doc/autoFill و doc/dictionary/content_file.


    أمر fill: إعدادات افتراضية أكثر أمانًا

    أمر fill الآن، بشكل افتراضي، يملأ الترجمات المفقودة فقط ويتخطى المحتوى الموجود.

    bash
    npx intlayer fill
    bash
    المفاتيح المتأثرة في القواميس للمعالجة: access-key-creation-form-schema, doc-search-metadata, doc-search-page  - [access-key-creation-form-schema]      القاموس لا يحتوي على مسار ملف. يتم التخطي.  - [access-key-creation-form-schema]      معالجة إعلان المحتوى: src/components/Dashboard/ProjectForm/AccessKey/useAccessKeyCreationFormSchema.content.ts  - [access-key-creation-form-schema]      لا توجد لغات لملئها - يتم تخطي القاموس  - [doc-search-metadata]                  القاموس لا يحتوي على مسار ملف. يتم التخطي.  - [doc-search-metadata]                  معالجة إعلان المحتوى: src/app/[locale]/(docs)/doc/search/metadata.content.ts  - [doc-search-metadata]                  لا توجد لغات لملئها - يتم تخطي القاموس  - [doc-search-page]                      القاموس لا يحتوي على مسار ملف. يتم التخطي.  - [doc-search-page]                      معالجة إعلان المحتوى: src/app/[locale]/(docs)/doc/search/page.content.ts  - [doc-search-page]                     [الروسية (ru)]                   تجهيز الترجمة للقاموس من الإنجليزية (en) إلى الروسية (ru)[intlayer]  تم تطبيق تنسيق Prettier على src/app/[locale]/(docs)/doc/search/page.content.ts  - [doc-search-page]                      تم كتابة إعلان المحتوى إلى src/app/[locale]/(docs)/doc/search/page.content.ts

    أمثلة CI متاحة في CI/CD.


    تحديث امتداد VS Code

    يتضمن الامتداد الآن تبويب مخصص لـ Intlayer في شريط النشاط وعدة تحسينات في سير العمل:

    • شريط نشاط Intlayer مع عرضين:
      • عرض ويب البحث (intlayer.searchBar) للبحث المباشر في القاموس/المحتوى
      • شجرة القواميس (intlayer.dictionaries) التي تعرض البيئات، القواميس، والملفات المساهمة
    • شريط أدوات في عرض القواميس: بناء، سحب، دفع، ملء، تحديث، اختبار، إنشاء ملف قاموس
    • قوائم السياق: سحب/دفع على القواميس؛ ملء على الملفات
    • الكشف التلقائي: يتم تمييز ملف المحرر الحالي في شجرة القواميس عند الاقتضاء
    • أوامر جديدة متاحة من لوحة الأوامر: ملء القواميس واختبار القواميس

    راجع التفاصيل في توثيق امتداد VS Code الرسمي.


    الأداء: أسرع 10 مرات

    • حل متوازي للقواميس المحلية والبعيدة
    • يتم تخزين القواميس البعيدة مؤقتًا لتجنب إعادة الجلب عند بدء تشغيل التطبيق
    bash
    npx intlayer build

    المخرجات:

    bash
    [intlayer]  Preparing Intlayer (v6.0.1)[intlayer]  Dictionaries:[intlayer]  ✓ Local content: 163/163[intlayer]  ✓ Remote content: 100/100[intlayer]   - access-key-creation-form             [local: ✔ built] [distant: ✔ imported][intlayer]   - access-key-creation-form-schema      [local: ✔ built] [distant: ✔ imported][intlayer]   - access-key-form                      [local: ✔ built] [distant: ✔ imported][intlayer]   - ai-ab-testing-section                                 [distant: ✔ imported][intlayer]   - application-not-running-view         [local: ✔ built] [distant: ✔ imported][intlayer]   - application-template-message         [local: ✔ built] [distant: ✔ fetched][intlayer]   - aside-navigation                     [local: ✔ built] [distant: ✔ imported][intlayer]   - ask-reset-password                   [local: ✔ built] [distant: ✔ imported][intlayer]   - ask-reset-password-schema            [local: ✔ built] [distant: ✔ imported][intlayer]   - autocompletion-section               [local: ✔ built] [distant: ✔ fetched][intlayer]   - available-techno-section             [local: ✔ built] [distant: ✔ imported][intlayer]   - blog-data                            [local: ✔ built][intlayer]   - blog-metadata                        [local: ✔ built][intlayer]   - blog-nav-list                        [local: ✔ built] [distant: ✔ imported][intlayer]   - blog-page                                             [distant: ✔ fetched][intlayer]   - blog-search-metadata                 [local: ✔ built] [distant: ✔ imported][intlayer]   - blog-search-page                     [local: ✔ built] [distant: ✔ imported]...[intlayer]  تم تحميل المحتوى  (الإجمالي: 8401 مللي ثانية - محلي: 4050 مللي ثانية - عن بُعد: 4222 مللي ثانية)

    تحسينات التسجيل

    تم تحسين نظام التسجيل لتوفير معلومات أكثر تفصيلاً حول ما يحدث أثناء عمليات التحويل في وقت البناء والتشغيل.

    قم بتمكين السجلات المفصلة لفهم أفضل لما يحدث أثناء عمليات التحويل في وقت البناء والتشغيل.

    intlayer.config.ts
    export default {  log: {    mode: "verbose", // الخيارات: "default" | "verbose" | "disabled"  },};

    راجع التكوين لجميع خيارات التسجيل.


    تحقق أقوى

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


    التحديثات الحية مع نظام إدارة المحتوى (آمن للإنتاج)

    قم بتقديم تحديثات المحتوى الحية (مثل التحديثات التحريرية) في بيئة الإنتاج دون الحاجة إلى إعادة بناء تطبيقك.

    1. قم بتمكين وضع الاستيراد الحي:
    intlayer.config.ts
    import { type IntlayerConfig } from "intlayer";const config: IntlayerConfig = {  build: {    importMode: "live", // "static" | "dynamic" | "live"  },  editor: {    liveSync: true, // تمكين المزامنة الحية على جانب الخادم  },};export default config;
    1. قم بتشغيل تطبيقك والمعالجة الحية جنبًا إلى جنب:
    bash
    npx intlayer live --process 'vite preview'

    ملاحظات:

    • سيتم جلب القواميس التي تم تمييزها لاستخدام الوضع الحي فقط بشكل مباشر. أما القواميس الأخرى فهي محسّنة للأداء.
    • يتم الرجوع إلى الاستيراد الديناميكي إذا لم يكن من الممكن الوصول إلى واجهة برمجة التطبيقات الحية.

    راجع نظام إدارة المحتوى والمزامنة الحية و التكوين للحصول على إرشادات كاملة.


    ملاحظات الترحيل

    • تمت الإزالة: dictionaryOutput (كان يُستخدم سابقًا مع i18next أو next-intl). سيعود هذا كموصلات قابلة للإضافة في الإصدارات المستقبلية. قم بإزالة هذا الحقل من تكوينك.
    • إزالة ذات صلة: i18nextResourcesDir (راجع سجل التغييرات في doc/configuration).
    • يُفضل استخدام الخيار العالمي الجديد content.autoFill لتوليد الترجمات المفقودة على نطاق واسع.
    • استخدم الأمر npx intlayer content test للتحقق من طلبات السحب (PRs) المتعلقة بالترجمات المفقودة.
    • للحصول على تشخيص مفصل، قم بتعيين log.mode = 'verbose'.

    الإصلاحات

    • استقرار تكامل Vue.js
    • تحسينات موصل Lynx
    • المحرر المرئي على نظام ويندوز

    روابط مفيدة

    تلقي إشعارات حول الإصدارات القادمة من Intlayer