استخدم مساعدك المفضل للملخص واستخدم هذه الصفحة والموفر AI الذي تريده
تاريخ الإصدارات
- "إضافة خيار splitKeys (قاموس واحد لكل مفتاح مساحة اسم من المستوى الأعلى) لتخطيطات الملف الواحد في next-intl / react-intl"v9.0.021/6/2026
- "إضافة دعم تنسيقات ICU و i18next"v7.5.013/12/2025
- "الوثائق الأولية لمكون مزامنة JSON"v6.1.65/10/2025
تمت ترجمة محتوى هذه الصفحة باستخدام الذكاء الاصطناعي.
اعرض آخر نسخة المحتوى الأصلي باللغة الإنكليزيةإذا كان لديك فكرة لتحسين هذه الوثيقة، فلا تتردد في المساهمة من خلال تقديم طلب سحب على GitHub.
رابط GitHub للتوثيقنسخ الـ Markdown من المستند إلى الحافظة
مزامنة JSON (جسور التدويل) - مزامنة JSON مع دعم ICU / i18next
استخدم Intlayer كمكون إضافي إلى نظام التدويل (i18n) الحالي لديك. يحافظ هذا المكون على مزامنة رسائل JSON الخاصة بك مع قواميس Intlayer بحيث يمكنك:
- الاحتفاظ بـ i18next، next-intl، react-intl، vue-i18n، next-translate، nuxt-i18n، Solid-i18next، svelte-i18n، وغيرها.
- إدارة وترجمة رسائلك باستخدام Intlayer (CLI، CI، المزودين، نظام إدارة المحتوى)، دون الحاجة لإعادة هيكلة تطبيقك.
- نشر الدروس ومحتوى تحسين محركات البحث (SEO) المستهدف لكل نظام بيئي، مع اقتراح Intlayer كطبقة لإدارة JSON.
ملاحظات ونطاق العمل الحالي:
- التصدير إلى نظام إدارة المحتوى يعمل للترجمات والنصوص التقليدية.
- لا يوجد دعم حتى الآن للإدخالات، الجمع/ICU، أو الميزات المتقدمة في وقت التشغيل لمكتبات أخرى.
- محرر الواجهة البصرية غير مدعوم حتى الآن لمخرجات التدويل من طرف ثالث.
متى تستخدم هذا المكون
- أنت تستخدم بالفعل مكتبة i18n وتخزن الرسائل في ملفات JSON.
- تريد ملء بمساعدة الذكاء الاصطناعي، واختبار في CI، وعمليات المحتوى دون تغيير وقت تشغيل العرض الخاص بك.
التثبيت
نسخ الكود إلى الحافظة
Plugins
توفر هذه الحزمة مكونين إضافيين:
loadJSON: تحميل ملفات JSON إلى قواميس Intlayer.- يستخدم هذا المكون الإضافي لتحميل ملفات JSON من مصدر وسيتم تحميلها في قواميس Intlayer. يمكنه مسح جميع قواعد التعليمات البرمجية والبحث عن ملفات JSON محددة.
يمكن استخدام هذا المكون الإضافي
- إذا كنت تستخدم مكتبة i18n تفرض موقعًا محددًا لملفات JSON الخاصة بك ليتم تحميلها (على سبيل المثال:
next-intl،i18next،react-intl،vue-i18n، إلخ)، ولكنك تريد وضع إعلان المحتوى الخاص بك حيثما تريد في قاعدة التعليمات البرمجية الخاصة بك. - يمكن استخدامه أيضًا إذا كنت ترغب في جلب رسائلك من مصدر بعيد (على سبيل المثال: نظام إدارة محتوى، واجهة برمجة تطبيقات، إلخ) وتخزين رسائلك في ملفات JSON.
- إذا كنت تستخدم مكتبة i18n تفرض موقعًا محددًا لملفات JSON الخاصة بك ليتم تحميلها (على سبيل المثال:
تحت الغطاء، سيقوم هذا المكون الإضافي بمسح جميع قواعد التعليمات البرمجية والبحث عن ملفات JSON محددة وتحميلها في قواميس Intlayer. لاحظ أن هذا المكون الإضافي لن يكتب المخرجات والترجمات مرة أخرى إلى ملفات JSON.
- يستخدم هذا المكون الإضافي لتحميل ملفات JSON من مصدر وسيتم تحميلها في قواميس Intlayer. يمكنه مسح جميع قواعد التعليمات البرمجية والبحث عن ملفات JSON محددة.
يمكن استخدام هذا المكون الإضافي
syncJSON: مزامنة ملفات JSON مع قواميس Intlayer.- يستخدم هذا المكون الإضافي لمزامنة ملفات JSON مع قواميس Intlayer. يمكنه مسح الموقع المحدد وتحميل ملفات JSON التي تتطابق مع النمط لملفات JSON محددة. هذا المكون الإضافي مفيد إذا كنت ترغب في الحصول على فوائد Intlayer أثناء استخدام مكتبة i18n أخرى.
Using both plugins
نسخ الكود إلى الحافظة
syncJSON plugin
Quick start
أضف المكون الإضافي إلى ملف intlayer.config.ts وأشر إلى هيكل JSON الحالي الخاص بك.
نسخ الكود إلى الحافظة
البديل: ملف واحد لكل لغة (شائع مع إعدادات i18next/react-intl):
نسخ الكود إلى الحافظة
كيف يعمل
- القراءة: يكتشف المكون الإضافي ملفات JSON من منشئ
sourceالخاص بك ويحمّلها كقواميس Intlayer. - الكتابة: بعد عمليات البناء والملء، يكتب ملفات JSON المحلية مرة أخرى إلى نفس المسارات (مع سطر جديد نهائي لتجنب مشاكل التنسيق).
- الملء التلقائي: يعلن المكون الإضافي عن مسار
autoFillلكل قاموس. تشغيل الأمرintlayer fillيقوم بتحديث الترجمات المفقودة فقط في ملفات JSON الخاصة بك بشكل افتراضي.
واجهة برمجة التطبيقات (API):
نسخ الكود إلى الحافظة
format ('intlayer' | 'icu' | 'i18next')
يحدد المُنسق الذي سيتم استخدامه لمحتوى القاموس عند مزامنة ملفات JSON. يسمح هذا باستخدام صيغ تنسيق رسائل مختلفة متوافقة مع وقت تشغيل Intlayer.
undefined: لن يتم استخدام أي مُنسق، سيتم استخدام محتوى JSON كما هو.'intlayer': مُنسق Intlayer الافتراضي (الافتراضي).'icu': يستخدم تنسيق رسائل ICU (متوافق مع مكتبات مثل react-intl، vue-i18n).'i18next': يستخدم تنسيق رسائل i18next (متوافق مع i18next، next-i18next، Solid-i18next).
لاحظ أن استخدام مُنسق سيحول محتوى JSON الخاص بك في المدخلات والمخرجات. بالنسبة لقواعد JSON المعقدة مثل صيغ الجمع ICU، قد لا يضمن التحليل تطابقاً 1 إلى 1 بين المدخلات والمخرجات. إذا كنت لا تستخدم وقت تشغيل Intlayer، قد تفضل عدم تعيين مُنسق.
مثال:
نسخ الكود إلى الحافظة
splitKeys (منطقية)
يتحكم هذا الخيار فيما إذا كان ملف JSON واحد، الذي تكون مفاتيحه من المستوى الأول هي مساحات أسماء، يجب أن يصبح قاموسًا واحدًا لكل مفتاح من المستوى الأعلى، بدلاً من قاموس واحد يحمل الملف بأكمله.
يتطابق هذا مع نموذج مساحة الأسماء للمكتبات مثل next-intl و react-intl، حيث يقوم ملف messages/{locale}.json واحد بتجميع عدة مساحات أسماء بواسطة مفاتيحه من المستوى الأول، ويتم التعامل مع كل منها بشكل مستقل (على سبيل المثال، useTranslations('Hero') يحل إلى قاموس Hero).
undefined(افتراضي): يتم الكشف عنه تلقائيًا — يتم تقسيم الملف عندما لا يحتوي نمطsourceعلى جزء{key}(ملف واحد يحمل كل مساحة اسم)، ويتم الاحتفاظ به كقاموس واحد بخلاف ذلك (ملف واحد لكل مفتاح).true: دائمًا يقسم كل مفتاح من المستوى الأعلى إلى قاموس خاص به.false: لا يقسم أبدًا؛ يصبح الملف بأكمله قاموسًا واحدًا.
بالنظر إلى ملف messages/{locale}.json واحد:
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
ينتج عن هذا ثلاثة قواميس — Hero و Nav و About — بحيث يتم حل useTranslations('Hero') (next-intl) بشكل صحيح. عند إعادة الكتابة، يتم إعادة تجميع جميع مساحات الأسماء في نفس الملف لكل لغة.
عندما تحتفظ بالجزء الصريح{key}فيsourceالخاص بك (على سبيل المثال،./locales/${locale}/${key}.json)، يكون كل ملف بالفعل مساحة اسم واحدة، لذلك يتم تعطيل التقسيم افتراضيًا.
Multiple JSON sources and priority
يمكنك إضافة عدة مكونات إضافية syncJSON لمزامنة مصادر JSON مختلفة. هذا مفيد عندما يكون لديك مكتبات i18n متعددة أو هياكل JSON مختلفة في مشروعك.
Priority system
عندما تستهدف عدة مكونات إضافية نفس مفتاح القاموس، يحدد معامل priority أي مكون إضافي له الأسبقية:
- الأرقام الأعلى في الأولوية تفوز على الأقل منها
- الأولوية الافتراضية لملفات
.contentهي0 - الأولوية الافتراضية لملفات محتوى المكونات الإضافية هي
0 - تتم معالجة المكونات الإضافية التي لها نفس الأولوية بالترتيب الذي تظهر به في التكوين
نسخ الكود إلى الحافظة
Load JSON plugin
Quick start
أضف المكون الإضافي إلى ملف intlayer.config.ts لاستيعاب ملفات JSON الموجودة كقواميس Intlayer. هذا المكون الإضافي للقراءة فقط (لا يكتب على القرص):
نسخ الكود إلى الحافظة
البديل: تخطيط لكل لغة، لا يزال للقراءة فقط (يتم تحميل اللغة المحددة فقط):
نسخ الكود إلى الحافظة
How it works
- اكتشاف: يبني glob من منشئ
sourceالخاص بك ويجمع ملفات JSON المطابقة. - استيعاب: يحمل كل ملف JSON كقاموس Intlayer باللغة المقدمة
locale. - للقراءة فقط: لا يكتب أو ينسق ملفات الإخراج؛ استخدم
syncJSONإذا كنت بحاجة إلى مزامنة ذهابًا وإيابًا. - جاهز للملء التلقائي: يحدد نمط
fillبحيث يمكن لـintlayer content fillملء المفاتيح المفقودة عبر CLI عندما تختار ذلك.
API
نسخ الكود إلى الحافظة
format ('intlayer' | 'icu' | 'i18next')
يحدد المُنسق الذي سيتم استخدامه لمحتوى القاموس عند تحميل ملفات JSON. يسمح هذا باستخدام صيغ تنسيق رسائل مختلفة متوافقة مع مكتبات i18n المتنوعة.
'intlayer': مُنسق Intlayer الافتراضي (الافتراضي).'icu': يستخدم تنسيق رسائل ICU (متوافق مع مكتبات مثل react-intl، vue-i18n).'i18next': يستخدم تنسيق رسائل i18next (متوافق مع i18next، next-i18next، Solid-i18next).
مثال:
نسخ الكود إلى الحافظة
splitKeys (منطقية)
نفس السلوك كما في syncJSON: عندما يجمع ملف JSON واحد عدة مساحات أسماء بواسطة مفاتيحه من المستوى الأول، يصبح كل مفتاح من المستوى الأعلى قاموسًا خاصًا به.
undefined(افتراضي): يتم الكشف عنه تلقائيًا — يتم التقسيم عندما لا يحتوي نمطsourceعلى جزء{key}، أو قاموس واحد بخلاف ذلك.true/false: فرض أو تعطيل التقسيم.
نسخ الكود إلى الحافظة
Behavior and conventions
- إذا كان قناع
sourceالخاص بك يتضمن عنصر نائب للغة، فسيتم استيعاب الملفات الخاصة باللغةlocaleالمحددة فقط. - إذا لم يكن هناك جزء
{key}في القناع الخاص بك، يصبح كل مفتاح من المستوى الأعلى للملف قاموسًا خاصًا به افتراضيًا (انظرsplitKeys). قم بتعيينsplitKeys: falseلتحميل الملف بأكمله كقاموسindexواحد بدلاً من ذلك. - يتم اشتقاق المفاتيح من مسارات الملفات عن طريق استبدال العنصر النائب
{key}في منشئsourceالخاص بك. - يستخدم المكون الإضافي الملفات المكتشفة فقط ولا يقوم بإنشاء لغات أو مفاتيح مفقودة.
- يتم استنتاج مسار
fillمنsourceالخاص بك ويستخدم لتحديث القيم المفقودة عبر CLI عندما تختار ذلك.
Conflict resolution
عندما يوجد نفس مفتاح الترجمة في مصادر JSON متعددة:
- يحدد المكون الإضافي ذو الأولوية الأعلى القيمة النهائية
- تُستخدم المصادر ذات الأولوية الأقل كاحتياطيات للمفاتيح المفقودة
- يتيح لك هذا الحفاظ على الترجمات القديمة أثناء الترحيل التدريجي إلى الهياكل الجديدة
CLI
سيتم اعتبار ملفات JSON المتزامنة كملفات .content أخرى. هذا يعني أن جميع أوامر intlayer ستكون متاحة لملفات JSON المتزامنة. بما في ذلك:
intlayer content testلاختبار ما إذا كانت هناك ترجمات مفقودةintlayer content listلعرض قائمة ملفات JSON المتزامنةintlayer content fillلملء الترجمات المفقودةintlayer content pushلدفع ملفات JSON المتزامنةintlayer content pullلسحب ملفات JSON المتزامنة
راجع Intlayer CLI لمزيد من التفاصيل.
القيود (الحالية)
- لا توجد إدخالات أو دعم للجمع/ICU عند استهداف مكتبات الطرف الثالث.
- محرر بصري غير متوفر بعد لبيئات التشغيل غير الخاصة بـ Intlayer.
- مزامنة JSON فقط؛ تنسيقات الكتالوج غير JSON غير مدعومة.
لماذا هذا مهم
- يمكننا التوصية بحلول i18n المعروفة ووضع Intlayer كإضافة.
- نستفيد من تحسين محركات البحث/الكلمات المفتاحية الخاصة بهم مع الدروس التي تنتهي باقتراح استخدام Intlayer لإدارة JSON.
- يوسع الجمهور المستهدف من "المشاريع الجديدة" إلى "أي فريق يستخدم i18n بالفعل".
