استخدم مساعدك المفضل للملخص واستخدم هذه الصفحة والموفر AI الذي تريده
هذه الوثيقة غير محدثة، تم تحديث النسخة الأساسية في ٣ أبريل ٢٠٢٦.
الانتقال إلى الوثيقة الإنجليزيةتاريخ الإصدارات
- "إضافة توجيه اللغات القائم على النطاق عبر تكوين routing.domains."v8.5.0٢/٤/٢٠٢٦
تمت ترجمة محتوى هذه الصفحة باستخدام الذكاء الاصطناعي.
اعرض آخر نسخة المحتوى الأصلي باللغة الإنكليزيةإذا كان لديك فكرة لتحسين هذه الوثيقة، فلا تتردد في المساهمة من خلال تقديم طلب سحب على GitHub.
رابط GitHub للتوثيقنسخ الـ Markdown من المستند إلى الحافظة
نطاقات مخصصة
يدعم Intlayer توجيه اللغات القائم على النطاق، مما يسمح لك بتقديم لغات محددة من أسماء مضيفين مخصصة. على سبيل المثال، يمكن توجيه الزوار الصينيين إلى intlayer.zh بدلاً من intlayer.org/zh.
كيف يعمل
تربط خريطة domains في routing كل لغة باسم مضيف. يستخدم Intlayer هذه الخريطة في مكانين:
- توليد الرابط (
getLocalizedUrl): عندما تكون اللغة المستهدفة موجودة على نطاق مختلف عن الصفحة الحالية، يتم إرجاع رابط مطلق (مثلhttps://intlayer.zh/about). عندما يتطابق كلا النطاقين، يتم إرجاع رابط نسبي (مثل/fr/about). - بروكسي الخادم (Next.js و Vite): تتم إعادة توجيه الطلبات الواردة أو إعادة كتابتها بناءً على النطاق الذي تصل إليه.
النطاقات الحصرية مقابل المشتركة
الفرق الرئيسي هو الحصرية:
- نطاق حصري - لغة واحدة فقط ترتبط باسم المضيف هذا (مثل
zh → intlayer.zh). النطاق نفسه يحدد اللغة، لذا لا يتم إضافة بادئة لغة إلى المسار. يخدمhttps://intlayer.zh/aboutالمحتوى الصيني. - نطاق مشترك - ترتبط لغات متعددة بنفس اسم المضيف (مثل
enوfrكلاهما يرتبطان بـintlayer.org). يتم تطبيق التوجيه التقليدي القائم على البادئة. يخدمintlayer.org/fr/aboutالمحتوى الفرنسي.
التكوين
تستمر اللغات غير المدرجة في domains في استخدام توجيه البادئة القياسي دون أي تجاوز للنطاق.
توليد الرابط (URL Generation)
يقوم getLocalizedUrl تلقائيًا بإنتاج نوع الرابط الصحيح بناءً على سياق الاستدعاء.
لغة في نفس النطاق (رابط نسبي)
لغة في نطاق مختلف (رابط مطلق)
الخدمة من النطاق الخاص باللغة
الكشف التلقائي عن النطاق الحالي
خيار currentDomain اختياري. عند حذفه، يقوم getLocalizedUrl بحله بهذا الترتيب:
- اسم المضيف لرابط إدخال مطلق (مثلاً
https://intlayer.org/about←intlayer.org). window.location.hostnameفي بيئات المتصفح.- إذا لم يتوفر أي منهما (SSR بدون خيار صريح)، يتم إرجاع رابط نسبي للغات الموجودة على نفس النطاق ولا يتم إنتاج رابط مطلق - وهذا هو التراجع الآمن.
getMultilingualUrls مع النطاقات
يستدعي getMultilingualUrls الدالة getLocalizedUrl لكل لغة، لذا فهو ينتج مزيجًا من الروابط النسبية والمطلقة اعتمادًا على نطاق المستدعي:
هذه الروابط المطلقة جاهزة للاستخدام في وسوم <link rel="alternate" hreflang="..."> لـ SEO.
سلوك البروكسي (Proxy Behaviour)
Next.js
يتعامل وسيط intlayerProxy مع توجيه النطاق تلقائيًا. أضفه إلى ملف middleware.ts:
إعادة التوجيه (Redirect) - يصل الطلب إلى النطاق الخطأ لبادئة لغة معينة:
إعادة الكتابة (Rewrite) - يصل الطلب إلى النطاق الحصري للغة بدون بادئة:
Vite
يطبق ملحق intlayerProxy الخاص بـ Vite نفس المنطق أثناء التطوير:
ملاحظة: في التطوير المحلي، تكون عادةً علىlocalhostن لذا ستشير عمليات إعادة التوجيه عبر النطاقات إلى النطاقات المباشرة بدلاً من منفذ محلي آخر. استخدم تجاوز ملف hosts (مثلاً127.0.0.1 intlayer.zh) أو بروكسي عكسي إذا كنت بحاجة إلى اختبار توجيه النطاقات المتعددة محليًا.
مبدل اللغة (Locale Switcher)
يتعامل خطاف useLocale من next-intlayer مع التنقل المدرك للنطاق تلقائيًا. عندما ينتقل المستخدم إلى لغة على نطاق مختلف، يقوم الخطاف بتنقل كامل للصفحة (window.location.href) بدلاً من دفع موجه جانب العميل، لأن موجه Next.js لا يمكنه تجاوز الأصول (origins).
لا يلزم تكوين إضافي - يكتشف useLocale داخليًا window.location.hostname ويقرر بين router.replace (نفس النطاق) و window.location.href (عبر النطاقات).
SEO: روابط hreflang البديلة
يشيع استخدام التوجيه القائم على النطاق مع hreflang لإخبار محركات البحث بالرابط الذي يجب أرشفته لكل لغة. استخدم getMultilingualUrls لإنشاء المجموعة الكاملة من الروابط البديلة:
ينتج عن هذا:
الأدوات الأساسية (Core Utilities)
افتح الجدول في نافذة منبثقة لعرض جميع محتويات البيانات بوضوح
| الأداة | الوصف |
|---|---|
getLocalizedUrl(url, locale, { currentDomain }) | يرجع رابطًا نسبيًا أو مطلقًا اعتمادًا على ما إذا كانت اللغة المستهدفة في النطاق الحالي. |
getMultilingualUrls(url, { currentDomain }) | يرجع خريطة روابط محلية مفهرسة باللغة، تجمع بين الروابط النسبية والمطلقة حسب الحاجة. |
getPrefix(locale, { domains }) | يرجع بادئة فارغة للغات ذات النطاق الحصري، وبادئة عادية في حالات أخرى. |