استخدم مساعدك المفضل للملخص واستخدم هذه الصفحة والموفر 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:
نسخ الكود إلى الحافظة
علامة--interactiveاختيارية. استخدمintlayer-cli initإذا كنت وكيل ذكاء اصطناعي.
سيقوم هذا الأمر باكتشاف بيئتك وتثبيت الحزم المطلوبة. على سبيل المثال:
نسخ الكود إلى الحافظة
نسخ الكود إلى الحافظة
أضف سكريبتات الحزمة:
نسخ الكود إلى الحافظة
التدفقات الشائعة:
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.
