استخدم مساعدك المفضل للملخص واستخدم هذه الصفحة والموفر AI الذي تريده
تمت ترجمة محتوى هذه الصفحة باستخدام الذكاء الاصطناعي.
اعرض آخر نسخة المحتوى الأصلي باللغة الإنكليزيةإذا كان لديك فكرة لتحسين هذه الوثيقة، فلا تتردد في المساهمة من خلال تقديم طلب سحب على GitHub.
رابط GitHub للتوثيقنسخ الـ Markdown من المستند إلى الحافظة
ترجمة موقع Next.js 15 الخاص بك باستخدام next-i18next باستخدام Intlayer | التدويل (i18n)
لمن هذا الدليل
- مبتدئ: اتبع الخطوات الدقيقة ونسخ كتل الكود. ستحصل على تطبيق متعدد اللغات يعمل.
- متوسط المستوى: استخدم قوائم التحقق والتنبيهات لأفضل الممارسات لتجنب الأخطاء الشائعة.
- متقدم: تصفح الهيكل العام، وأقسام تحسين محركات البحث (SEO)، والأتمتة؛ ستجد الإعدادات الافتراضية المعقولة ونقاط التمديد.
ما ستبنيه
- مشروع App Router مع مسارات محلية (مثل
/،/fr/...) - إعداد i18n مع اللغات، اللغة الافتراضية، ودعم الاتجاه من اليمين إلى اليسار (RTL)
- تهيئة i18n على جانب الخادم ومزود للعميل
- ترجمات ذات مساحات أسماء تُحمّل عند الطلب
- تحسين محركات البحث مع
hreflang، وخريطة الموقعالمحلية، وrobots - وسيط (Middleware) لتوجيه اللغة
- تكامل Intlayer لأتمتة سير عمل الترجمة (الاختبارات، التعبئة بالذكاء الاصطناعي، مزامنة JSON)
ملاحظة: تم بناء next-i18next على أساس i18next. يستخدم هذا الدليل بدائيات i18next المتوافقة مع next-i18next في App Router، مع الحفاظ على بنية بسيطة وجاهزة للإنتاج. للمقارنة الأوسع، راجع next-i18next مقابل next-intl مقابل Intlayer.
1) هيكل المشروع
قم بتثبيت تبعيات next-i18next -
ابدأ بهيكل واضح. احتفظ بالرسائل مقسمة حسب اللغة والمساحة الاسمية.
قائمة التحقق (متوسط/متقدم):
- احتفظ بملف JSON واحد لكل مساحة اسم لكل لغة
- لا تفرط في مركزية الرسائل؛ استخدم مساحات أسماء صغيرة مخصصة للصفحة أو الميزة
- تجنب استيراد كل اللغات دفعة واحدة؛ قم بتحميل ما تحتاجه فقط
2) تثبيت التبعيات
إذا كنت تخطط لاستخدام واجهات برمجة التطبيقات next-i18next أو تكامل الإعدادات، فقم أيضًا بتثبيت:
3) إعداد i18n الأساسي
حدد اللغات، اللغة الافتراضية، اللغات التي تُكتب من اليمين إلى اليسار، والمساعدين للمسارات/عناوين URL المحلية.
ملاحظة هامة: إذا كنت تستخدم next-i18next.config.js، فاحرص على توافقه مع i18n.config.ts لتجنب الاختلافات.
4) تهيئة i18n على جانب الخادم
قم بتهيئة i18next على الخادم باستخدام backend ديناميكي يستورد فقط ملفات JSON الخاصة باللغة/المجال المطلوبة.
ملاحظة وسطى: حافظ على قائمة المجالات قصيرة لكل صفحة لتقليل حجم التحميل. تجنب حزم "شاملة للجميع" العامة.
5) مزود العميل لمكونات React
قم بتغليف مكونات العميل بمزود يعكس إعدادات الخادم ويحمّل فقط المجالات المطلوبة.
نصيحة للمبتدئين: لا تحتاج إلى تمرير جميع الرسائل إلى العميل. ابدأ فقط بمساحات الأسماء الخاصة بالصفحة.
6) التخطيط والمسارات المحلية
قم بتعيين اللغة والاتجاه، وقم بإنشاء المسارات مسبقًا لكل لغة لتفضيل العرض الثابت.
7) صفحة مثال مع استخدام الخادم والعميل
الترجمات (ملف JSON واحد لكل مساحة أسماء تحت src/locales/...):
مكون العميل (يحمّل فقط مساحة الأسماء المطلوبة):
تأكد من أن الصفحة/المزود يتضمن فقط مساحات الأسماء التي تحتاجها (مثل
about). إذا كنت تستخدم React أقل من الإصدار 19، قم بتخزين محولات التنسيق الثقيلة مثلIntl.NumberFormatفي الذاكرة المؤقتة.
مكون خادم متزامن مدمج تحت حد عميل:
8) تحسين محركات البحث: البيانات الوصفية، Hreflang، خريطة الموقع، الروبوتات
ترجمة المحتوى وسيلة لتحسين الوصول. قم بتوصيل تحسين محركات البحث متعدد اللغات بشكل شامل.
أفضل الممارسات:
- تعيين
langوdirفي الجذر - إضافة
alternates.languagesلكل لغة (+x-default) - سرد عناوين URL المترجمة في
sitemap.xmlواستخدامhreflang - استبعاد المناطق الخاصة المحلية (مثل
/fr/admin) فيrobots.txt
9) الوسيط (Middleware) لتوجيه اللغة
كشف اللغة وإعادة التوجيه إلى مسار محلي إذا كان مفقودًا.
10) أفضل ممارسات الأداء وتجربة المطور (DX)
- تعيين خصائص html
langوdir: تم ذلك فيsrc/app/[locale]/layout.tsx. - تقسيم الرسائل حسب النطاق: حافظ على حزم صغيرة (
common.json،about.json، إلخ). - تقليل حمولة العميل: في الصفحات، مرر فقط النطاقات المطلوبة إلى المزود.
- تفضيل الصفحات الثابتة: استخدم
export const dynamic = 'force-static'وgenerateStaticParamsلكل لغة. - مزامنة مكونات الخادم: مرر السلاسل/التنسيقات المحسوبة مسبقًا بدلاً من الاستدعاءات غير المتزامنة أثناء وقت العرض.
- تخزين العمليات الثقيلة في الذاكرة المؤقتة (Memoize): خاصة في كود العميل لإصدارات React الأقدم.
- التخزين المؤقت والرؤوس: فضل الصفحات الثابتة أو
revalidateبدلاً من العرض الديناميكي عندما يكون ذلك ممكنًا.
11) الاختبار والتكامل المستمر (CI)
- أضف اختبارات وحدة للمكونات التي تستخدم
tلضمان وجود المفاتيح. - تحقق من أن كل مساحة أسماء تحتوي على نفس المفاتيح عبر اللغات.
- عرض المفاتيح المفقودة أثناء التكامل المستمر (CI) قبل النشر.
سوف يقوم Intlayer بأتمتة الكثير من هذا (انظر القسم التالي).
12) إضافة Intlayer في الأعلى (الأتمتة)
يساعدك Intlayer في الحفاظ على تزامن ترجمات JSON، واختبار المفاتيح المفقودة، وملئها باستخدام الذكاء الاصطناعي عند الرغبة.
قم بتثبيت تبعيات intlayer:
أضف سكريبتات الحزمة:
التدفقات الشائعة:
pnpm i18n:testفي CI لفشل البناء عند وجود مفاتيح مفقودةpnpm i18n:fillمحليًا لاقتراح ترجمات الذكاء الاصطناعي للمفاتيح المضافة حديثًا
يمكنك تقديم وسائط CLI؛ راجع وثائق Intlayer CLI.
13) استكشاف الأخطاء وإصلاحها
- المفاتيح غير موجودة: تأكد من أن الصفحة/المزود يسرد المساحات الاسمية الصحيحة وأن ملف JSON موجود تحت
src/locales/<locale>/<namespace>.json. - اللغة خاطئة/وميض اللغة الإنجليزية: تحقق مرتين من اكتشاف اللغة في
middleware.tsومن مزودlng. - مشاكل تخطيط RTL: تحقق من أن
dirمشتق منisRtl(locale)وأن CSS الخاص بك يحترم[dir="rtl"]. - غياب بدائل SEO: تأكد من أن
alternates.languagesتشمل جميع اللغات وx-default. - حجم الحزم كبير جدًا: قسم المساحات الاسمية أكثر وتجنب استيراد شجرة
localesكاملة على العميل.
14) ما التالي
- أضف المزيد من اللغات والمساحات الاسمية مع نمو الميزات
- قم بتعريب صفحات الخطأ، ورسائل البريد الإلكتروني، والمحتوى المدفوع بواسطة API
- قم بتوسيع سير عمل Intlayer لفتح طلبات سحب تلقائيًا لتحديثات الترجمة
إذا كنت تفضل نموذجًا للبدء، جرب القالب: https://github.com/aymericzip/intlayer-next-i18next-template.