استخدم مساعدك المفضل للملخص واستخدم هذه الصفحة والموفر AI الذي تريده
بدءاً من الدمج مع خادم MCP Intlayer ، يمكن لمساعدك الذكي الاسترجاع من جميع المستندات مباشرة من ChatGPT ، DeepSeek ، Cursor ، VSCode ، إلخ.
عرض الوثائق الخاصة بالخادم MCPتاريخ الإصدارات
- الوثائق الأولية لمكون مزامنة JSONv6.1.65/10/2025
تمت ترجمة محتوى هذه الصفحة باستخدام الذكاء الاصطناعي.
اعرض آخر نسخة المحتوى الأصلي باللغة الإنكليزيةإذا كان لديك فكرة لتحسين هذه الوثيقة، فلا تتردد في المساهمة من خلال تقديم طلب سحب على GitHub.
رابط GitHub للتوثيقنسخ الـ Markdown من المستند إلى الحافظة
مزامنة JSON (جسور التدويل)
استخدم 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، وعمليات المحتوى دون تغيير وقت تشغيل العرض الخاص بك.
التثبيت
pnpm add -D @intlayer/sync-json-plugin# أوnpm i -D @intlayer/sync-json-pluginبداية سريعة
أضف المكون الإضافي إلى ملف intlayer.config.ts وأشر إلى هيكل JSON الحالي الخاص بك.
نسخ الكود إلى الحافظة
import { defineConfig, Locales } from "intlayer";import { syncJSON } from "@intlayer/sync-json-plugin";export default defineConfig({ internationalization: { locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], defaultLocale: Locales.ENGLISH, }, // حافظ على مزامنة ملفات JSON الحالية مع قواميس Intlayer plugins: [ syncJSON({ // تخطيط لكل لغة ولكل مساحة أسماء (مثل next-intl، i18next مع مساحات الأسماء) source: ({ key, locale }) => `./locales/${locale}/${key}.json`, }), ],});البديل: ملف واحد لكل لغة (شائع مع إعدادات i18next/react-intl):
نسخ الكود إلى الحافظة
plugins: [ syncJSON({ source: ({ locale }) => `./locales/${locale}.json`, }),];كيف يعمل
- القراءة: يكتشف المكون الإضافي ملفات JSON من منشئ source الخاص بك ويحمّلها كقواميس Intlayer.
- الكتابة: بعد عمليات البناء والملء، يكتب ملفات JSON المحلية مرة أخرى إلى نفس المسارات (مع سطر جديد نهائي لتجنب مشاكل التنسيق).
- الملء التلقائي: يعلن المكون الإضافي عن مسار autoFill لكل قاموس. تشغيل الأمر intlayer fill يقوم بتحديث الترجمات المفقودة فقط في ملفات JSON الخاصة بك بشكل افتراضي.
واجهة برمجة التطبيقات (API):
syncJSON({ source: ({ key, locale }) => string, // مطلوب location?: string, // تسمية اختيارية، الافتراضي: "plugin" priority?: number, // أولوية اختيارية لحل التعارضات، الافتراضي: 0});مصادر JSON متعددة والأولوية
يمكنك إضافة عدة مكونات إضافية syncJSON لمزامنة مصادر JSON مختلفة. هذا مفيد عندما يكون لديك مكتبات i18n متعددة أو هياكل JSON مختلفة في مشروعك.
نظام الأولوية
عندما تستهدف عدة مكونات إضافية نفس مفتاح القاموس، يحدد معامل priority أي مكون إضافي له الأسبقية:
- الأرقام الأعلى في الأولوية تفوز على الأقل منها
- الأولوية الافتراضية لملفات .content هي 0
- الأولوية الافتراضية لملفات محتوى المكونات الإضافية هي -1
- تتم معالجة المكونات الإضافية التي لها نفس الأولوية بالترتيب الذي تظهر به في التكوين
نسخ الكود إلى الحافظة
import { defineConfig, Locales } from "intlayer";import { syncJSON } from "@intlayer/sync-json-plugin";export default defineConfig({ internationalization: { locales: [Locales.ENGLISH, Locales.FRENCH], defaultLocale: Locales.ENGLISH, }, plugins: [ // المصدر الأساسي لملفات JSON (الأولوية الأعلى) syncJSON({ source: ({ key, locale }) => `./locales/${locale}/${key}.json`, location: "main-translations", priority: 10, }), // المصدر الاحتياطي لملفات JSON (أولوية أقل) syncJSON({ source: ({ locale }) => `./fallback-locales/${locale}.json`, location: "fallback-translations", priority: 5, }), // المصدر القديم لملفات JSON (الأولوية الأدنى) syncJSON({ source: ({ locale }) => `/my/other/app/legacy/${locale}/messages.json`, location: "legacy-translations", priority: 1, }), ],});حل النزاعات
عندما يوجد نفس مفتاح الترجمة في مصادر JSON متعددة:
- يحدد المكون الإضافي ذو الأولوية الأعلى القيمة النهائية
- تُستخدم المصادر ذات الأولوية الأقل كاحتياطيات للمفاتيح المفقودة
- يتيح لك هذا الحفاظ على الترجمات القديمة أثناء الترحيل التدريجي إلى الهياكل الجديدة
التكاملات
فيما يلي الخرائط الشائعة. احتفظ ببيئة التشغيل الخاصة بك دون تغيير؛ فقط أضف المكون الإضافي.
i18next
تخطيط الملف النموذجي: ./public/locales/{locale}/{namespace}.json أو ./locales/{locale}/{namespace}.json.
نسخ الكود إلى الحافظة
import { syncJSON } from "@intlayer/sync-json-plugin";export default { plugins: [ syncJSON({ source: ({ key, locale }) => `./locales/${locale}/${key}.json`, }), ],};next-intl
رسائل JSON لكل لغة (غالبًا ./messages/{locale}.json) أو لكل مساحة أسماء.
نسخ الكود إلى الحافظة
plugins: [ syncJSON({ source: ({ locale, key }) => `./messages/${locale}/${key}.json`, }),];انظر أيضًا: docs/ar/intlayer_with_next-intl.md.
react-intl
عادةً ما يكون ملف JSON واحد لكل لغة:
نسخ الكود إلى الحافظة
plugins: [ syncJSON({ source: ({ locale }) => `./locales/${locale}.json`, }),];vue-i18n
إما ملف واحد لكل لغة أو لكل مساحة أسماء:
نسخ الكود إلى الحافظة
plugins: [ syncJSON({ source: ({ key, locale }) => `./src/locales/${locale}/${key}.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 بالفعل".