استخدم مساعدك المفضل للملخص واستخدم هذه الصفحة والموفر AI الذي تريده
تاريخ الإصدارات
- "تم دمج configOptions في كائن خيارات واحد؛ البروكسي مدمج في intlayer()"v9.0.0٢٥/٦/٢٠٢٦
تمت ترجمة محتوى هذه الصفحة باستخدام الذكاء الاصطناعي.
اعرض آخر نسخة المحتوى الأصلي باللغة الإنكليزيةIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
intlayerProxy
intlayerProxy هو عبارة عن إضافة لـ Vite يقوم بتسجيل برنامج وسيط لتوجيه اللغات لـ كل بيئة: خادم التطوير، وخادم المعاينة، والـ SSR للإنتاج (Nitro / TanStack Start).
بدءاً من إطلاق Intlayer v9 يتم تضمينintlayerProxyتلقائيًا داخل الإضافة الأساسيةintlayer()وتمكينه افتراضيًا عبر الخيارrouting.enableProxy: true. تحتاج فقط لتسجيله بشكل منفصل إذا كنت بحاجة لسرعة تحكم ذات مستوى أدنى أو كنت تستخدمه خارج إطار عملintlayer()القياسي.
الاستخدام
كجزء من intlayer() (موصى به، الإصدار 9+)
قم بتمرير خيارات الـ proxy إلى الإضافة الرئيسية بدلاً من تسجيل intlayerProxy بشكل منفصل:
نسخ الكود إلى الحافظة
// vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({ plugins: [ intlayer({ proxy: { ignore: (req) => req.url?.startsWith("/api"), }, }), ],});منفصل (عند الحاجة)
نسخ الكود إلى الحافظة
// vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({ plugins: [intlayer()],});الخيارات
نسخ الكود إلى الحافظة
import type { IntlayerProxyPluginOptions } from "vite-intlayer";جميع الخيارات اختيارية وتُمرر ككائن واحد:
افتح الجدول في نافذة منبثقة لعرض جميع محتويات البيانات بوضوح
| الخيار | النوع | الوصف |
|---|---|---|
ignore | (req: IncomingMessage) => boolean | دالة شرطية تستبعد طلبات معينة من توجيه اللغات. أرجع true لتخطي طلب ما (مثل مسارات API أو فحوصات الصحة). |
configOptions | GetConfigurationOptions | تجاوزات إعدادات Intlayer التي يتم تمريرها إلى getConfiguration(). استخدم هذا عندما تحتاج إلى قراءة ملف إعدادات محدد أو تجاوز قيم معينة. |
مثال
نسخ الكود إلى الحافظة
intlayerProxy({ ignore: (req) => req.url?.startsWith("/api"), configOptions: { configFile: "./config/intlayer.config.ts" },});createIntlayerProxyHandler
تنشئ الدالة createIntlayerProxyHandler برنامج وسيط Node.js مستقل وغير مرتبط بإطار عمل معين (req, res, next) يحتوي على كل منطق توجيه اللغات. يفيد هذا في البيئات التي لا تتوفر فيها واجهة برمجة تطبيقات إضافات Vite (مثل خادم Node.js عادي أو وحدة Nitro مخصصة).
نسخ الكود إلى الحافظة
import { createIntlayerProxyHandler } from "vite-intlayer";const handler = createIntlayerProxyHandler({ ignore: (req) => req.url?.startsWith("/api"), configOptions: { configFile: "./config/intlayer.config.ts" },});// Express / Connectapp.use(handler);الـ SSR للإنتاج (TanStack Start / Nitro عبر h3)
نسخ الكود إلى الحافظة
// server/middleware/intlayerProxy.tsimport { fromNodeMiddleware } from "h3";import { createIntlayerProxyHandler } from "vite-intlayer";export default fromNodeMiddleware( createIntlayerProxyHandler({ ignore: (req) => req.url?.startsWith("/api"), }));سلوك التوجيه
يحاكي البرنامج الوسيط منطق التوجيه الخاص بـ برنامج وسيط next-intlayer ويدعم جميع أوضاع توجيه Intlayer.
أوضاع التوجيه
افتح الجدول في نافذة منبثقة لعرض جميع محتويات البيانات بوضوح
| الوضع | عنوان URL المرئي في المتصفح | السلوك |
|---|---|---|
prefix | /ar/about | الافتراضي. بادئة اللغة في عنوان URL. اللغة الافتراضية تعيد التوجيه لعنوان بدون بادئة إلا إذا تم تفعيل prefix-all. |
prefix-all | /en/about و /ar/about | جميع اللغات — بما في ذلك اللغة الافتراضية — تحتوي دائمًا على بادئة. |
no-prefix | /about | لا توجد لغة في عنوان URL. يتم تخزين اللغة في ملفات تعريف الارتباط فقط؛ وتحدث عمليات إعادة كتابة العناوين داخليًا. |
search-params | /about?locale=ar | يتم تمرير اللغة كمعامل استعلام (query parameter). يقوم بإعادة التوجيه لإضافة/تحديث المعامل locale عندما يكون مفقودًا أو قديمًا. |
أولوية الاكتشاف
- بادئة مسار URL (على سبيل المثال
/ar/about←ar). - قيمة الكوكيز / localStorage (باستخدام
intlayer-locale). - ترويسة
Accept-Language. - اللغة الافتراضية
defaultLocaleمن ملف الإعدادات.
التجاوز التلقائي (Automatic bypass)
يقوم البرنامج الوسيط دائمًا بتمرير هذه الطلبات مباشرة دون معالجة اللغة:
- الطلبات المطابقة لدالة التصفية
ignore. /node_modules/**/@**– الملفات الداخلية لـ Vite (@vite/و@fs/و@id/إلخ)./_**– الملفات الداخلية للخادم (__vite_pingو__manifestإلخ).- الطلبات التي تنتهي مساراتها بامتداد ملف (أصول ثابتة). إذا تواجدت بادئة لغة في مسار أصل ثابت (مثل
/ar/logo.png)، يتم تجريدها حتى يتمكن الخادم من تقديم الملف بشكل صحيح.
توجيه النطاقات (Domain routing)
عندما يتم تكوين routing.domains في ملف إعدادات Intlayer الخاص بك، يتعامل البرنامج الوسيط مع توجيه اللغات عبر النطاقات المختلفة:
- يتم إعادة توجيه طلب لـ
/zh/aboutعلى النطاقintlayer.orgإلىhttps://intlayer.zh/aboutعندما يكونdomains.zh = "intlayer.zh". - يتم إعادة كتابة طلب لـ
intlayer.zh/aboutداخليًا إلى/zh/aboutبحيث يتم تعبئة معلم المسار[locale].
الحماية من حلقة إعادة التوجيه
يتتبع البرنامج الوسيط عدد مرات إعادة التوجيه لكل زوج originalUrl → newUrl داخل نافذة منزلقة مدتها ثانيتان. إعادة توجيه أكثر من 10 مرات في تلك النافذة ترجع استجابة بـ 500 مع رسالة خطأ تصف المشكلة بدلاً من الدخول في حلقة لا نهائية.
Nitro / الـ SSR للإنتاج (الحقن التلقائي، الإصدار v9+)
عند استخدام intlayerProxy كإضافة لـ Vite، فإنه يحمل خاصية .nitro. يقرأ مكون بناء nitro/vite هذه الخاصية ويدفعها إلى nitroConfig.modules ، لذلك يتم تسجيل intlayerNitroHandler كبرنامج وسيط لخادم Nitro تلقائيًا — لا يلزم تكوين يدوي لـ SSR الإنتاج.
يستخدم معالج Nitro نموذج أحداث Web Fetch API الخاص بـ h3 v2 (وليس fromNodeMiddleware) لذا فهو متوافق مع جميع ملفات تعريف ومسبقات Nitro: Node، Bun، Deno، بيئات عمل الحافة (edge).
الأسماء المستعارة المهملة
افتح الجدول في نافذة منبثقة لعرض جميع محتويات البيانات بوضوح
| التصدير المهمل | البديل |
|---|---|
intlayerMiddleware | intlayerProxy |
intLayerMiddlewarePlugin | intlayerProxy |