استخدم مساعدك المفضل للملخص واستخدم هذه الصفحة والموفر AI الذي تريده
تمت ترجمة محتوى هذه الصفحة باستخدام الذكاء الاصطناعي.
اعرض آخر نسخة المحتوى الأصلي باللغة الإنكليزيةإذا كان لديك فكرة لتحسين هذه الوثيقة، فلا تتردد في المساهمة من خلال تقديم طلب سحب على GitHub.
رابط GitHub للتوثيقنسخ الـ Markdown من المستند إلى الحافظة
Intlayer v8 الجديد - ما الجديد؟
مرحبًا بك في Intlayer v8! يركز هذا الإصدار على تعزيز تجربة المطور من خلال اكتشاف المحتوى التلقائي، وضمان سلامة البيانات عبر التحقق من صحة المخططات، وتوفير مزيد من التحكم في إدارة القواميس.
جدول المحتويات
تطور المحتوى الغني: Markdown و HTML
يجلب Intlayer v8 تحسينات كبيرة على كيفية التعامل مع المحتوى الغني، حيث يقدم عقد HTML (التي لم تكن موجودة في v7) ويوحد واجهة برمجة التطبيقات مع عقد Markdown (التي كانت موجودة في v7 ولكن تم تحسينها).
واجهة برمجة التطبيقات الموحدة .use()
قدمنا طريقة .use() لكل من عقد Markdown و HTML. تتيح لك هذه الطريقة تخصيص وسوم HTML أو المكونات المستخدمة أثناء العرض.
- استبدال المكونات: يمكنك بسهولة استبدال وسوم HTML أو المكونات المخصصة بمكونات الإطار الخاص بك (مثل استبدال
<a>بـNextLinkأو<CustomCmp>بمكون React). - سلامة النوع: جميع الدوال الخاصة بتوفير المكونات مكتوبة بالكامل، مما يضمن تلقيك للخصائص الصحيحة.
سلوك العرض الافتراضي
في v7، إذا لم يتم تعريف مزود، كانت عقد Markdown تُصير كسلاسل نصية خام، مما يتطلب غالبًا مكتبات خارجية لتحليلها.
في v8، يتضمن Intlayer محلل Markdown داخلي خاص به. بشكل افتراضي، تُصير عقد Markdown الآن مباشرة كـ HTML دون الحاجة إلى أي مكتبات خارجية.
أدوات Renderer و Provider الجديدة
لقد قدمنا دوال ومكونات renderer مستقلة جديدة لمنحك مزيدًا من التحكم خارج تدفق useIntlayer القياسي.
- Markdown:
MarkdownRendererوuseMarkdownRendererوrenderMarkdown. (ملاحظة: كانMarkdownProviderموجودًا في v7 ولكنه يتكامل الآن مع هذه الأدوات الجديدة). - HTML:
HTMLRendererوuseHTMLRendererوrenderHTMLوHTMLProvider.
أمثلة: أدوات عرض Markdown
1. استخدام المكون:
نسخ الكود إلى الحافظة
2. استخدام Hook:
نسخ الكود إلى الحافظة
3. استخدام أداة المساعدة:
نسخ الكود إلى الحافظة
1. استخدام المكون:
نسخ الكود إلى الحافظة
1. استخدام المكون:
نسخ الكود إلى الحافظة
2. استخدام Hook:
نسخ الكود إلى الحافظة
3. استخدام أداة المساعدة:
نسخ الكود إلى الحافظة
1. استخدام الخدمة:
نسخ الكود إلى الحافظة
1. استخدام المكون:
نسخ الكود إلى الحافظة
2. استخدام Hook:
نسخ الكود إلى الحافظة
3. استخدام أداة المساعدة:
نسخ الكود إلى الحافظة
1. استخدام المكون:
نسخ الكود إلى الحافظة
2. استخدام Hook:
نسخ الكود إلى الحافظة
3. استخدام أداة المساعدة:
نسخ الكود إلى الحافظة
أمثلة: أدوات عرض HTML
1. استخدام المكون:
نسخ الكود إلى الحافظة
2. استخدام Hook:
نسخ الكود إلى الحافظة
3. استخدام أداة المساعدة:
نسخ الكود إلى الحافظة
1. استخدام المكون:
نسخ الكود إلى الحافظة
1. استخدام المكون:
نسخ الكود إلى الحافظة
2. استخدام Hook:
نسخ الكود إلى الحافظة
3. استخدام أداة المساعدة:
نسخ الكود إلى الحافظة
1. الاستخدام المباشر:
في Angular، يمكنك استخدام ربط [innerHTML] القياسي.
نسخ الكود إلى الحافظة
1. استخدام المكون:
نسخ الكود إلى الحافظة
2. استخدام Hook:
نسخ الكود إلى الحافظة
3. استخدام أداة المساعدة:
نسخ الكود إلى الحافظة
1. استخدام المكون:
نسخ الكود إلى الحافظة
2. استخدام Hook:
نسخ الكود إلى الحافظة
3. استخدام أداة المساعدة:
نسخ الكود إلى الحافظة
لمزيد من التفاصيل، راجع توثيق محتوى HTML و توثيق Markdown.
ملفات محتوى YAML و Markdown (v8.10.0)
يمكنك الآن تعريف المحتوى مباشرة باستخدام امتدادات الملفات .content.md و .content.yaml. هذا مثالي للمحتوى الطويل، المدونات، التوثيقات، وسياسات الخصوصية.
هذه الملفات قابلة للتحرير بالكامل من المحرر المرئي، مما يوفر سير عمل مبسطًا لأعضاء الفريق غير التقنيين.
لمزيد من التفاصيل، راجع توثيق ملفات محتوى YAML و توثيق ملفات محتوى Markdown.
إعادة كتابة عناوين URL المخصصة
تقدّم Intlayer v8 دعمًا لـ إعادة كتابة عناوين URL المخصصة، مما يتيح لك تعريف مسارات خاصة بكل لغة تختلف عن البنية القياسية /locale/path. هذه ميزة قوية لتحسين الـ SEO المحلي وتوفير تجربة مستخدم أكثر طبيعية للمتحدثين بغير الإنجليزية.
التحسينات الرئيسية في v8:
- منسقات الأطر: تمت إضافة
nextjsRewrite,svelteKitRewrite,reactRouterRewrite,vueRouterRewrite,solidRouterRewrite,tanstackRouterRewrite,nuxtRewrite, وviteRewriteلتوفير صياغة نمطية ملائمة لكل راوتر. useRewriteURLهوك: هو هوك جديد على جهة العميل يصحح شريط العنوان بهدوء إلى العنوان المحلي الأجمل ("pretty" localized URL) دون تحفيز تنقلات الراوتر.- إعادة توجيه SEO التلقائية: الوكلاء المدمجون يعيدون توجيه المستخدمين تلقائيًا من المسارات canonical المكتوبة يدويًا (على سبيل المثال،
/fr/about) إلى نسخها المحلية الأجمل (على سبيل المثال،/fr/a-propos).
مثال على التكوين:
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
تدعم هذه الميزة مباشرةً في Next.js و Vite عبر بروكسيات Intlayer، ويمكن دمجها بسهولة مع موجهات أخرى مثل TanStack Router و React Router و Vue Router و SvelteKit و Solid Router.
لمزيد من المعلومات ودلائل التكامل، راجع توثيق إعادة كتابة عناوين URL المخصصة.
قيم الإدراج المحسّنة
في الإصدار v8، يمكن لقيم الإدراج الآن قبول عناصر React (أو عقد Vue) بالإضافة إلى السلاسل النصية والأرقام. يتيح لك هذا حقن مكونات غنية وتفاعلية مباشرة في قوالب الإدراج الخاصة بك.
يتعامل Intlayer الآن بشكل متين مع العقد المتداخلة من React وPreact داخل الإدخالات، مما يضمن الحفاظ على هياكل واجهة المستخدم المعقدة وعرضها بشكل صحيح.
مثال:
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
قواعد الجمع في Unicode CLDR (v8.8.0)
تم تقديم مساعد عقدة plural جديد يعتمد على قواعد الجمع المحددة بواسطة مشروع Unicode CLDR، مما يحسن دعم اللغات المعقدة.
نسخ الكود إلى الحافظة
يمكنك بعد ذلك تمرير العدد ديناميكيًا في مكون إطار العمل الخاص بك:
نسخ الكود إلى الحافظة
لمزيد من المعلومات، راجع توثيق الجمع.
التحقق من صحة مخطط المحتوى
تقدم Intlayer v8 التحقق من صحة المخططات للقواميس. يمكنك الآن تعريف مخططات تحقق قابلة لإعادة الاستخدام في إعداداتك باستخدام Zod وتطبيقها على ملفات المحتوى الخاصة بك. يضمن ذلك التزام محتواك دائمًا بالهيكل المتوقع واكتشاف الأخطاء أثناء وقت البناء.
1. تعريف المخططات
عَرِّف مخططاتك في intlayer.config.ts:
نسخ الكود إلى الحافظة
2. تطبيق المخططات على القواميس
أشر إلى مفتاح المخطط في تعريف القاموس الخاص بك:
نسخ الكود إلى الحافظة
إذا لم يتطابق المحتوى مع المخطط (مثلاً، كان العنوان قصيراً جداً)، فستؤدي عملية البناء إلى رفع خطأ.
TypeScript: IntlayerNode Primitive Accessors
تم تحديث نوع IntlayerNode للسماح باستدعاء دوال JavaScript البدائية مباشرة على عقد المحتوى. هذا يجعل من الممكن التفاعل مع المحتوى المترجم الخاص بك مباشرة كما لو كان سلسلة نصية قياسية، رقم، قيمة منطقية، أو مصفوفة بدائية.
مدعوم عبر React، Preact، Solid، Svelte، Vue، و Angular.
مثال على السلسلة النصية
نسخ الكود إلى الحافظة
مثال على المصفوفة
نسخ الكود إلى الحافظة
الكشف التلقائي المحسَّن للمحتوى
في الإصدار v8، يقوم Intlayer باكتشاف صيغة Markdown وعلامات HTML وإدراج المتغيرات داخل سلاسل المحتوى بذكاء. هذا يعني أنه يمكنك غالبًا الاستغناء عن دوال المساعدة مثل md()، html()، أو insert().
هذا السلوك مفعلٌ افتراضيًا. يمكنك الآن ضبط هذا الكشف بدقة إما على مستوى الإعدادات العامة في intlayer.config.ts أو لكل قاموس على حدة.
تحكم دقيق
يمكنك تفعيل أو تعطيل أنواع محددة من التحويلات:
نسخ الكود إلى الحافظة
سلوك v7 (التغليف اليدوي):
نسخ الكود إلى الحافظة
سلوك v8 (الكشف التلقائي):
نسخ الكود إلى الحافظة
يظل ناتج JSON الأساسي كما هو، محافظًا على معلومات النوع الغنية اللازمة لعملية العرض:
نسخ الكود إلى الحافظة
التوطين: الخطاف الجديد useIntl
يتوفر الآن خطاف useIntl() في React وNext.js وVue. يوفر هذا الخطاف كائن Intl مرتبطًا بالـ locale ويستخدم اللغة الحالية تلقائيًا لتنسيق الأرقام والتواريخ والمزيد، دون الحاجة إلى تمرير الـ locale يدويًا.
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
الأدوات: تحسينات امتداد VSCode
تلقى امتداد Intlayer لـ VSCode تحديثات رئيسية في v8 لتبسيط سير عمل الترجمة الخاصة بك:
- زمن البدء: تحسينات في الأداء عند فتح المشروع.
- التخزين المؤقت: طبقة تخزين مؤقت محسّنة لتمكين التحقق من الصحة والإكمال التلقائي شبه الفوري.
- اكتشاف المفاتيح غير المستخدمة والمفاتيح المكررة: ميزات جديدة لاكتشاف المفاتيح غير المستخدمة والمفاتيح المكررة عبر قواميسك تلقائيًا، مما يساعدك على الحفاظ على محتوى نظيف وفعّال.
الأدوات: مراقب C++ و LSP المعتمد على OXC (v8.12.0)
يجلب Intlayer v8.12.0 تحسينات كبيرة لتجربة المطور:
- Parcel Watcher: تم ترحيل مراقب المحتوى من
chokidarإلى@parcel/watcher، مستفيدًا من مراقبة الملفات الأصلية بـ C++ لتوفير تحديثات أسرع واستهلاك أقل للذاكرة بشكل ملحوظ. - بروتوكول خادم اللغة الجديد (LSP): يتوفر الآن LSP جديد تمامًا. تم بناؤه باستخدام تحليل يعتمد على OXC، ويساعد بيئة التطوير المتكاملة (IDE) ووكلاء الذكاء الاصطناعي على ربط استدعاءات
useIntlayer('my-key')بملفات.contentالمقابلة لها بسلاسة، والعكس صحيح.
لمزيد من التفاصيل، راجع توثيق LSP.
تحسينات المجمّع
يتضمن Intlayer الإصدار 8 طبقة تخزين مؤقت جديدة لمجمّع Markdown وHTML. هذا يضمن أن سلاسل المحتوى المتطابقة بنفس التهيئة يتم تحليلها مرة واحدة فقط، مما يقلل بشكل كبير من العبء أثناء إعادة العرض أو عند استخدام نفس المحتوى في أماكن متعددة.
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
بالنسبة لـ Vue / Svelte ستحتاج إلى تثبيت حزمة المترجم المناسبة:
bashنسخ الكودنسخ الكود إلى الحافظة
bashنسخ الكودنسخ الكود إلى الحافظة
تحسينات البناء التجريبية: التصغير والتطهير (Minify & Purge) (v8.7.0)
يقدم Intlayer v8.7.0 ميزات بناء تجريبية جديدة في ملف intlayer.config.ts الخاص بك، مصممة لتحسين حزمة الإنتاج الخاصة بك:
- تصغير القواميس (Dictionary Minification): يقوم بتصغير ملفات القواميس لتقليل حجمها.
- تطهير المفاتيح غير المستخدمة (Unused Key Purging): يقوم بمسح وإزالة مفاتيح الترجمة غير المستخدمة من القواميس، وإعادة تسمية المفاتيح النشطة إلى أحرف قصيرة (مثل
"products" -> "a","pricing" -> "b"). هذا يقلل من حجم الحزمة بنسبة تصل إلى 5%. - تعطيل فحوصات TypeScript: تسريع عمليات البناء عن طريق تعطيل فحص أنواع TypeScript أثناء خطوة التجميع.
نسخ الكود إلى الحافظة
المرونة: وضع استيراد موحّد
تم إهمال الخاصية البوليانية live لصالح خاصية أكثر شمولاً تسمى importMode. تتيح هذه الخاصية تحديد صريح لكيفية تحميل القواميس: بشكل ثابت، أو ديناميكيًا، أو عبر مزامنة حية.
الأوضاع
static(افتراضي): يتم تجميع القاموس في وقت البناء. الأفضل للأداء.dynamic: يتم تحميل القاموس أثناء وقت التشغيل (مثلاً عبر جلب JSON أو باستخدام suspense).fetch: يتم جلب القاموس من الـ CMS/الخادم أثناء وقت التشغيل ومزامنته.
الترحيل:
افتح الجدول في نافذة منبثقة لعرض جميع محتويات البيانات بوضوح
| تكوين v7 | تكوين v8 |
|---|---|
live: true | importMode: 'fetch' |
live: false | importMode: 'static' (أو 'dynamic') |
ملاحظة: في Intlayer v8، تم نقل الخاصية importMode من تهيئة build إلى تهيئة dictionary في intlayer.config.ts. هذا يتيح لك تحديد وضع استيراد افتراضي لجميع قواميسك مع الحفاظ على إمكانية تجاوزه على مستوى كل قاموس على حدة.
مثال التهيئة العامة:
نسخ الكود إلى الحافظة
مثال القاموس:
نسخ الكود إلى الحافظة
التحكم في موقع القواميس
تقدم النسخة v8 الخاصية location لإدارة مكان تواجد القواميس وكيفية تزامنها بشكل صريح. هذا مفيد بشكل خاص في سير عمل هجين يتضمن كلًا من الملفات المحلية ومحتوى أنظمة إدارة المحتوى (CMS) البعيدة.
الخيارات
local: يتواجد القاموس محليًا فقط. لن يتم دفعه إلى نظام إدارة المحتوى (CMS) البعيد.remote: يتم إدارة القاموس عن بُعد. بمجرد دفعه إلى نظام إدارة المحتوى (CMS)، سيتم فصله عن القاموس المحلي. وسيتم سحب القاموس البعيد من الـ CMS.local_and_remote: يتواجد القاموس في كلا الموقعين. التغييرات المحلية تُدفع، والتغييرات البعيدة تُسحب (مزامنة).
مثال:
نسخ الكود إلى الحافظة
فصل تكوين النظام
يفصل Intlayer v8 تكوين مصادر المحتوى عن المسارات الداخلية للنظام والإخراج. هذا ينظف خاصية content ويوضح أي الإعدادات مخصصة لإدارة المستخدم مقابل تلك التي يديرها نظام Intlayer.
تم نقل الخصائص التالية من content إلى خاصية system الجديدة في intlayer.config.ts:
dictionariesDirmoduleAugmentationDirunmergedDictionariesDirtypesDirmainDirconfigDircacheDiroutputFilesPatternWithPath
سلوك v7:
نسخ الكود إلى الحافظة
سلوك v8:
نسخ الكود إلى الحافظة
فصل دلائل المحتوى وملفات الشيفرة
Intlayer v8 يفصل إعدادات تعريف ملفات المحتوى عن إعدادات تحويل الشيفرة. هذا يتيح مراقبة ومسح أدق، مما يحسّن أداء عملية البناء.
في السابق، كان يتم استخدام contentDir لكل من مراقبة ملفات .content.* ومسح الشيفرة بحثًا عن استدعاءات useIntlayer. الآن:
contentDir: مخصّص لملفات تعريف المحتوى الخاصة بك.codeDir: مخصّص لشيفرة التطبيق التي تحتاج إلى تحويل (مثل: pruning، optimization).
الترحيل:
إذا كنت قد قمت سابقًا بتعيين contentDir، فسيستخدم Intlayer v8 هذا أيضًا كقيمة افتراضية لـ codeDir، لكنه سيعرض تحذيرًا. يجب عليك تعريف codeDir صراحةً في تكوينك.
سلوك v7:
نسخ الكود إلى الحافظة
سلوك v8:
نسخ الكود إلى الحافظة
إطار العمل: تحسينات Svelte
يتم الآن تحليل محتوى Markdown و HTML في Svelte تلقائيًا إلى HTML عند تحويله إلى سلسلة (stringified). هذا يجعل استخدامه مع تركيب Svelte {@html} أسهل بكثير، إذ يمكنك الآن ببساطة تمرير عقدة المحتوى مباشرة.
دعم Angular: مجمّع Vite (v8.11.0)
لمستخدمي Angular، يدعم Intlayer الآن مجمّع Vite بشكل أصلي من خلال مكون إضافي جديد مخصص لـ esbuild، مما يسرع أوقات التطوير والبناء.
للحصول على تفاصيل حول التكوين، راجع توثيق بيئة Angular.
إنشاء خريطة الموقع (Sitemap) (v8.6.0)
يقوم Intlayer الآن بإنشاء خرائط المواقع تلقائيًا بناءً على اللغات ووضع التوجيه الخاص بك. هذا مفيد بشكل خاص لتحسين محركات البحث (SEO) في معماريات الموجهات مثل TanStack Router:
نسخ الكود إلى الحافظة
ملاحظات الترحيل من الإصدار v7
تغييرات التكوين
- خاصية
live: تمت إزالة خاصيةliveمن القواميس. استخدمimportMode: 'fetch'بدلاً منها. - importMode: تم إهمال خاصية
build.importModeفي التكوين. استخدمdictionary.importModeبدلاً منها. contentDirوcodeDir: أصبحcontentDirمخصّصًا الآن لملفات المحتوى. تمت إضافة خاصية جديدةcodeDirلتحويل الكود. إذا لم يتم تعيينcodeDir، فسيقوم Intlayer بالرجوع إلىcontentDirوتسجيل تحذير.- التحقق من المخطط (Schema Validation): لاستخدام ميزة
schemaالجديدة، تأكد من تثبيتzodفي مشروعك.
