استخدم مساعدك المفضل للملخص واستخدم هذه الصفحة والموفر AI الذي تريده
تمت ترجمة محتوى هذه الصفحة باستخدام الذكاء الاصطناعي.
اعرض آخر نسخة المحتوى الأصلي باللغة الإنكليزيةإذا كان لديك فكرة لتحسين هذه الوثيقة، فلا تتردد في المساهمة من خلال تقديم طلب سحب على GitHub.
رابط GitHub للتوثيقنسخ الـ Markdown من المستند إلى الحافظة
هل أصبحت مكتبة i18next قديمة في عام 2026؟
أُطلقت i18next في عام 2011، قبل أن تصبح مكونات React وحزم Webpack ولغة TypeScript معايير أساسية في تطوير الويب. هيمنت على النظام البيئي بفضل مرونتها وانتشارها، وحصلت على إضافات لمعظم التقنيات وحلول جاهزة على StackOverflow لكل مشكلة تقريباً.
المشروع لم يُهمل، فالتحديثات والإصلاحات مستمرة بانتظام. ومع ذلك، هناك فرق جوهري بين صيانة محرك قديم ليبقى قيد التشغيل، وبين مواكبة البنى الحديثة للواجهات الأمامية.
خلال السنوات الأخيرة، اتجهت الواجهات الأمامية نحو الترجمة أثناء البناء (Build-time Compilation)، وReact Server Components (RSC)، والتقليم الصارم للشيفرات غير المستخدمة (Tree-shaking)، وسير العمل القائم على الذكاء الاصطناعي. في المقابل، بقي جوهر i18next كما كان قبل عقد: كائن منفرد يعمل في وقت التشغيل ليطابق مفاتيح النصوص في المتصفح.
النقاط الرئيسية
وضع الصيانة:
خلال الاثني عشر شهراً الماضية، سجلت next-i18next قرابة 63 تعديلاً (commit)، وسجلت react-i18next حوالي 157 تعديلاً، واقتصر معظمها على تحديث التبعيات وإصلاحات طفيفة.
عبء وقت التشغيل:
تضيف كل من react-i18next وnext-i18next ما بين 17 إلى 18 كيلوبايت مضغوطة بـ gzip (نحو 60 كيلوبايت minified) قبل عرض أي كلمة مترجمة، أي نحو 4 أضعاف حجم next-intlayer (4.7 كيلوبايت).
تسريب كبير للمحتوى:
في الإعدادات الثابتة الافتراضية، فإن ما يصل إلى 89.8% من بيانات الترجمة المحملة في الصفحة تنتمي إلى مسارات أخرى أو لغات غير معروضة.
صعوبة التقليم (Tree-shaking):
استدعاء النصوص ديناميكياً مثل t("home.hero.title") يمنع أدوات الحزم من تحليله ثابتاً، مما يضطرها لتضمين ملفات JSON كاملة في حزمة العميل.
الحوافز التجارية:
يدير المشرفون على المكتبة منصة Locize التجارية. بالتالي، فإن بناء أداة ترجمة محلية مجانية بالذكاء الاصطناعي مدمجة في الـ CLI سيتعارض مباشرة مع مصدر دخلهم الأساسي.
الصيانة في مقابل التطور المستمر
تعكس نجوم GitHub الشعبية التاريخية للمشروع، لكنها لا تعكس وتيرة التحديث المعماري الراهنة.
افتح الجدول في نافذة منبثقة لعرض جميع محتويات البيانات بوضوح
نشاط التطوير في الأشهر الاثني عشر الماضية:
افتح الجدول في نافذة منبثقة لعرض جميع محتويات البيانات بوضوح
| المشروع | إجمالي التعديلات | آخر 12 شهراً | محور التركيز |
|---|---|---|---|
next-i18next | 1,311 | 63 | التوافق مع Next.js وإصلاح الأخطاء |
react-i18next | 1,988 | 157 | تعريفات الأنواع والصيانة |
i18next core | 2,626 | 259 | تحسينات طفيفة |
| Intlayer | 7,156 | 4,343 | المترجم، أدوات IDE، ومحرك الذكاء الاصطناعي |
المكتبات المستقرة توفر الأمان البرمجي، لكن أدوات التدويل تشهد تطوراً سريعاً: حزم البناء الحديثة تستبعد النصوص غير المستخدمة وقت البناء، ونماذج الذكاء الاصطناعي تترجم آلياً في مرحلة CI، وبيئات التطوير تستفيد من خوادم اللغات (LSP) والوكلاء الأذكياء. نموذج i18next المعتمد كلياً على وقت التشغيل يواجه صعوبة في مواكبة هذه التحولات.
قياس التأثير على الحزم
تحميل JSON الديناميكي
تحميل الترجمات ببطء في وقت التشغيل
JSON المحدد (أسماء المحيط)
مساحات أسماء الترجمة لكل صفحة
مقياس أداء I18n
ما هو هذا المقياس؟
الحجم الإجمالي المضغوط بتنسيق gzip لحزمة مكتبة التدويل. وهي تتضمن فقط المزود ومنطق استرداد المحتوى بعد تقليل الحجم (tree-shaking) والضغط (minification).
لماذا هو مهم؟
يقلل حجم المكتبة الأصغر من حمولة JavaScript الأولية، مما يؤدي إلى سرعة التنزيل وأوقات التنفيذ على العميل.
عرض كـ
تم الاختبار في بيئة بناء إنتاجية تتضمن 10 مسارات و10 لغات مع ضغط gzip. التفاصيل متاحة في تقرير مقارنة أداء i18n.
العبء الأساسي للمكتبات
الحجم الأولي قبل إضافة أي محتوى مترجم:
افتح الجدول في نافذة منبثقة لعرض جميع محتويات البيانات بوضوح
| المكتبة | الحجم (gzip) | الحجم المصغر (Minified) |
|---|---|---|
next-i18next@16.0.5 | 17.8 KB | 61.2 KB |
react-i18next@17.0.2 | 17.3 KB | 59.8 KB |
intlayer@8.7.12 | 4.7 KB | 12.8 KB |
وزن الصفحة وتسريب البيانات
الاختبار في بيئة React / TanStack Start (استراتيجية ثابتة):
افتح الجدول في نافذة منبثقة لعرض جميع محتويات البيانات بوضوح
| المكتبة | متوسط JS / صفحة (gz) | تسريب اللغات | تسريب الصفحات الأخرى | متوسط المكون (gz) | وقت الـ Hydration |
|---|---|---|---|---|---|
react-i18next | 180.3 KB | 50.0% | 89.8% | 24.3 KB | 85.1 ms |
| Intlayer | 127.8 KB | 50.0% | 0.8% | 7.1 KB | 24.1 ms |
| Intlayer (scoped dyn) | 118.1 KB | 0.0% | 0.8% | 4.6 KB | 23.7 ms |
في Next.js:
افتح الجدول في نافذة منبثقة لعرض جميع محتويات البيانات بوضوح
| المكتبة | متوسط JS / صفحة (gz) | تسريب الصفحات الأخرى | متوسط المكون (gz) |
|---|---|---|---|
| الأساس (دون i18n) | 150.8 KB | 0.0% | 0.7 KB |
next-i18next | 227.5 KB | 89.8% | 24.5 KB |
next-intlayer | 152.1 KB | 0.0% | 7.2 KB |
أهم النتائج
حجم الصفحات:
في Next.js، تضيف next-i18next حوالي 76.7 كيلوبايت مضغوطة مقارنة بالتطبيق الأساسي (+50%). بينما تضيف next-intlayer نحو 1.3 كيلوبايت فقط.
تسريب الترجمات:
بشكل افتراضي، ما يقرب من 90% من النصوص المحملة لأي مسار تخص مسارات وصفحات أخرى. تقسيم ملفات الترجمة يدوياً يستهلك وقتاً ويزيد من احتمالية الأخطاء.
تأخير تفاعلية الصفحة (Hydration):
استغرقت مكونات react-i18next نحو 85 مللي ثانية للتفاعل، مقابل 24 مللي ثانية في Intlayer. تمرير كائنات JSON الضخمة يبطئ الاستجابة الأولية للمستخدم.
لماذا تعد i18next ثقيلة؟
تراكم المزايا في وقت التشغيل
الاعتماد الكامل على المتصفح يفرض تحميل كل المكونات مسبقاً: نصوص الاستبدال، وقواعد الجمع، والسياقات، ومنسقات البيانات، وموجّهات الأحداث. حتى عند عرض نص عادي وبسيط، يتم دفع ضريبة المحرك بأكمله.
المفاتيح الديناميكية تعطل الـ Tree-shaking
نظراً لأن المفتاح مثل "hero.title" يُعالج ديناميكياً أثناء التشغيل، تعجز أدوات الحزم عن معرفة النصوص المستخدمة فعلياً. وبالتالي، تبقى النصوص الفائضة داخل حزم العميل.
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
يقوم مترجم Intlayer بتحليل الخصائص المستخدمة في Hero.tsx بدقة ويستبعد النصوص غير المستعملة قبل تجميع حزم العميل. راجع تحسين الحزم للمزيد.
تجربة المطورين
ملفات JSON المعزولة مقابل التجميع المشترك
في i18next، تُحفظ الترجمات في مجلدات JSON منفصلة وبعيدة عن المكونات. بينما تتيح Intlayer وضع ملفات المحتوى بجوار مكوناتها مباشرة:
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
عند نقل المكون Hero.tsx أو حذفه، ينتقل ملف المحتوى التابع له أو يُحذف تلقائياً.
الإكمال التلقائي مقابل أمان الأنواع الصارم
يمنح إعداد CustomTypeOptions اقتراحات داخل المحرر، لكنه لا يضمن اكتمال الترجمات عبر كل اللغات. حذف مفتاح من ar/home.json لن يعطل البناء بل سيكتفي بالرجوع للنص الافتراضي وقت التشغيل.
تستنتج Intlayer الأنواع مباشرة من تعريفات المحتوى، ويقوم وضع strictMode بتحويل أي ترجمة مفقودة إلى خطأ فوري يوقف عملية البناء.
مقارنة الأدوات
افتح الجدول في نافذة منبثقة لعرض جميع محتويات البيانات بوضوح
| الميزة | بيئة i18next | Intlayer |
|---|---|---|
| إضافة VS Code | إضافات خارجية فقط | ✅ إضافة رسمية |
| خادم اللغة (LSP) | ❌ غير متوفر | ✅ LSP مدمج ومخصص |
| خادم MCP للذكاء الاصطناعي | ❌ غير متوفر | ✅ خادم MCP جاهز |
| مهارات الوكلاء (Skills) | ❌ غير متوفر | ✅ مهارات جاهزة |
| نظام CMS مرئي | Locize (خدمة مدفوعة) | ✅ مجاني ومفتوح المصدر |
الترجمة ونموذج Locize
تعتبر Locize المنصة التجارية التابعة لمطوري i18next. استدامة المصادر المفتوحة أمر ضروري، لكن هذا النموذج يولد تضارباً في المصالح: فالمشروع الذي يعتمد دخله على منصة ترجمة مدفوعة لن يملك حافزاً كبيراً لتوفير أدوات ترجمة محلية مجانية بالذكاء الاصطناعي داخل الـ CLI.
تتبنى Intlayer نهجاً مفتوحاً بالكامل:
- أمر
intlayer fillيتكفل بملء الترجمات الناقصة في الطرفية أو أدوات CI باستخدام مفاتيحك الخاصة من OpenAI أو Anthropic أو Mistral أو Gemini. - نظام Intlayer CMS مفتوح المصدر ويمكن استضافته ذاتياً عبر Docker Compose.
- المترجم، والـ CLI، والمحرر، ونظام إدارة المحتوى جميعها مرخصة تحت رخصة Apache 2.0.
متى تظل i18next خياراً ملائماً؟
إذا كان تطبيقك الحالي يعمل بكفاءة ولا يشكل حجم الحزمة عائقاً أمام أهدافك، فلا داعي للاستعجال في إعادة بنائه.
تغطي إضافات i18next الواسعة منصات فريدة (مثل Electron، وتطبيقات jQuery القديمة، والجسور المخصصة للهواتف) التي لا تركز عليها المترجمات الحديثة افتراضياً.
يسهل العثور على حلول للمشكلات المعقدة والفريدة بفضل الأرشيف الضخم على StackOverflow وGitHub.
كيف أطور إعدادات i18next الحالية في مشروعي؟
توفر Intlayer حزم توافق مباشرة تحتفظ بنفس تواقيع دوال مكتبات i18next (i18next وreact-i18next وnext-i18next). لن تحتاج إلى إعادة كتابة مكوناتك للاستفادة من مزايا المعمارية المعتمدة على المترجم.
يتم الإعداد عبر أمر واحد فقط:
نسخ الكود إلى الحافظة
تقوم هذه الأداة التفاعلية بما يلي تلقائياً:
- تثبيت حزمة التوافق
@intlayer/i18next. - ضبط الأسماء المستعارة (aliases) في أداة الحزم لتوجه استدعاءاتك الحالية (
useTranslation، وTrans، وt) بسلاسة نحو Intlayer، مما يتيح لك إزالة المكتبة القديمة من ملفpackage.json. - تفعيل تشخيصات خادم اللغة (LSP) داخل المحرر مباشرة، وتطبيق تحسينات الحزم أثناء البناء (tree-shaking كامل)، وتشغيل أدوات الترجمة الآلية بالذكاء الاصطناعي محلياً دون تعديلات معقدة.
للاطلاع على الخطوات التفصيلية، راجع أدلتنا المتخصصة:
- طبقات التوافق المباشر: احتفظ بصيغ كودك السابقة عبر طبقات التوافق لـ i18next، وreact-i18next، وnext-i18next.
- دليل تحويل الملفات: حول ملفات JSON إلى قواميس معرفة الأنواع: من i18next، ومن react-i18next، ومن next-i18next.
- الدمج التدريجي: احتفظ بـ i18next في وقت التشغيل مع استخدام Intlayer مع i18next للحصول على أمان الأنواع والترجمة بالذكاء الاصطناعي محلياً.
افحص موقعك وتأكد من نسبة التسريب عبر ماسح SEO للتدويل المجاني:
مقالات مقترحة
التعليقات
لا توجد تعليقات بعد. كن أول من يشارك أفكاره.
