استخدم مساعدك المفضل للملخص واستخدم هذه الصفحة والموفر AI الذي تريده
هذه الوثيقة غير محدثة، تم تحديث النسخة الأساسية في 29 أغسطس 2026.
الانتقال إلى الوثيقة الإنجليزيةتاريخ الإصدارات
- "تحديث استخدام واجهة برمجة تطبيقات useIntlayer في Solid للوصول المباشر إلى الخصائص"v8.9.04/5/2026
- "إضافة أمر init"v7.5.930/12/2025
- "الوثيقة الأولية"v5.8.09/9/2025
تمت ترجمة محتوى هذه الصفحة باستخدام الذكاء الاصطناعي.
اعرض آخر نسخة المحتوى الأصلي باللغة الإنكليزيةإذا كان لديك فكرة لتحسين هذه الوثيقة، فلا تتردد في المساهمة من خلال تقديم طلب سحب على GitHub.
رابط GitHub للتوثيقنسخ الـ Markdown من المستند إلى الحافظة
ترجم Nest backend باستخدام Intlayer | التدويل (i18n)
express-intlayer هو وسيط قوي للتدويل (i18n) لتطبيقات Express، مصمم لجعل خدمات الخلفية الخاصة بك متاحة عالميًا من خلال تقديم استجابات محلية بناءً على تفضيلات العميل. نظرًا لأن NestJS مبني على Express، يمكنك دمج express-intlayer بسلاسة في تطبيقات NestJS الخاصة بك للتعامل مع المحتوى متعدد اللغات بفعالية.
حالات الاستخدام العملية
عرض أخطاء الخادم بلغة المستخدم: عند حدوث خطأ، يؤدي عرض الرسائل باللغة الأصلية للمستخدم إلى تحسين الفهم وتقليل الإحباط. وهذا مفيد بشكل خاص للرسائل الخطأ الديناميكية التي قد يتم عرضها في مكونات الواجهة الأمامية مثل التنبيهات أو النوافذ المنبثقة.
استرجاع المحتوى المتعدد اللغات: بالنسبة للتطبيقات التي تستخرج المحتوى من قاعدة بيانات، يضمن التدويل أنه يمكنك تقديم هذا المحتوى بلغات متعددة. هذا أمر حاسم للمنصات مثل مواقع التجارة الإلكترونية أو أنظمة إدارة المحتوى التي تحتاج إلى عرض وصفات المنتجات والمقالات والمحتوى الآخر باللغة المفضلة للمستخدم.
إرسال رسائل بريد إلكترونية متعددة اللغات: سواء كانت رسائل بريد إلكترونية معاملات أو حملات تسويقية أو إشعارات، يمكن لإرسال رسائل البريد الإلكترونية بلغة المستقبل أن يزيد بشكل كبير من التفاعل والفعالية.
إشعارات Push متعددة اللغات: بالنسبة للتطبيقات المحمولة، يمكن لإرسال إشعارات push بلغة المستخدم المفضلة أن يحسّن التفاعل والاحتفاظ بالمستخدمين. يمكن لهذا اللمس الشخصي أن يجعل الإشعارات تبدو أكثر صلة واقعية وقابلية للتطبيق.
اتصالات أخرى: أي شكل من أشكال الاتصال من الخادم الخلفي، مثل رسائل SMS والتنبيهات النظامية أو تحديثات واجهة المستخدم، تستفيد من كونها بلغة المستخدم، مما يضمن الوضوح ويحسن تجربة المستخدم الشاملة.
من خلال دولية Backend، لا تحترم تطبيقك الفروقات الثقافية فحسب، بل تتوافق بشكل أفضل مع احتياجات السوق العالمية، مما يجعلها خطوة أساسية في توسع نطاق خدماتك على مستوى العالم.
البدء
إنشاء مشروع NestJS جديد
نسخ الكود إلى الحافظة
التثبيت
لبدء استخدام express-intlayer، قم بتثبيت الحزمة باستخدام npm:
نسخ الكود إلى الحافظة
علامة--interactiveاختيارية. استخدمintlayer-cli initإذا كنت وكيل ذكاء اصطناعي.
سيقوم هذا الأمر باكتشاف بيئتك وتثبيت الحزم المطلوبة. على سبيل المثال:
نسخ الكود إلى الحافظة
تكوين tsconfig.json
لاستخدام Intlayer مع TypeScript، تأكد من إعداد ملف tsconfig.json لدعم وحدات ES. يمكنك القيام بذلك عن طريق تعيين خيارات module و moduleResolution إلى nodenext.
نسخ الكود إلى الحافظة
الإعداد
قم بتكوين إعدادات التدويل بإنشاء ملف intlayer.config.ts في جذر مشروعك:
نسخ الكود إلى الحافظة
import { Locales, type IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
internationalization: {
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
defaultLocale: Locales.ENGLISH,
},
};
export default config;
أعلن عن المحتوى الخاص بك
قم بإنشاء وإدارة إعلانات المحتوى الخاصة بك لتخزين الترجمات:
يمكن تعريف إعلانات المحتوى الخاصة بك في أي مكان في تطبيقك طالما تم تضمينها في دليلcontentDir(افتراضياً،./src). ويجب أن تطابق امتداد ملف إعلان المحتوى (افتراضياً،.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}).
لمزيد من التفاصيل، راجع توثيق إعلان المحتوى.
إعداد وسيط Express
قم بدمج وسيط express-intlayer في تطبيق NestJS الخاص بك للتعامل مع التدويل:
نسخ الكود إلى الحافظة
استخدام الترجمات في خدماتك أو وحدات التحكم الخاصة بك
يمكنك الآن استخدام دالة getIntlayer للوصول إلى الترجمات في خدماتك أو وحدات التحكم الخاصة بك:
نسخ الكود إلى الحافظة
التوافق
express-intlayer متوافق تمامًا مع:
react-intlayerلتطبيقات Reactnext-intlayerلتطبيقات Next.jsvite-intlayerلتطبيقات Vite
كما يعمل بسلاسة مع أي حل للتدويل عبر بيئات مختلفة، بما في ذلك المتصفحات وطلبات API. يمكنك تخصيص الوسيط لاكتشاف اللغة من خلال الرؤوس أو ملفات تعريف الارتباط:
نسخ الكود إلى الحافظة
بشكل افتراضي، سيقوم express-intlayer بتفسير رأس Accept-Language لتحديد اللغة المفضلة للعميل.
لمزيد من المعلومات حول التكوين والمواضيع المتقدمة، قم بزيارة التوثيق.
تكوين TypeScript
يستفيد express-intlayer من القدرات القوية لـ TypeScript لتعزيز عملية التدويل. يضمن النوع الثابت في TypeScript أن يتم تضمين كل مفتاح ترجمة، مما يقلل من خطر فقدان الترجمات ويحسن من سهولة الصيانة.


تأكد من تضمين الأنواع التي تم إنشاؤها تلقائيًا (افتراضيًا في ./types/intlayer.d.ts) في ملف tsconfig.json الخاص بك.
نسخ الكود إلى الحافظة
امتداد VS Code
لتحسين تجربة التطوير الخاصة بك مع Intlayer، يمكنك تثبيت امتداد Intlayer الرسمي لـ VS Code.
يوفر هذا الامتداد:
- الإكمال التلقائي لمفاتيح الترجمة.
- الكشف الفوري عن الأخطاء للترجمات المفقودة.
- معاينات داخلية للمحتوى المترجم.
- إجراءات سريعة لإنشاء وتحديث الترجمات بسهولة.
لمزيد من التفاصيل حول كيفية استخدام الامتداد، راجع توثيق امتداد Intlayer لـ VS Code.
إعداد Git
يوصى بتجاهل الملفات التي يتم إنشاؤها بواسطة Intlayer. هذا يسمح لك بتجنب إضافتها إلى مستودع Git الخاص بك.
لعمل ذلك، يمكنك إضافة التعليمات التالية إلى ملف .gitignore الخاص بك:
نسخ الكود إلى الحافظة
الأسئلة الشائعة
nestjs-i18n: وحدة NestJS شائعة تستخدم JSON و YAML.Intlayer: توافق كامل مع حقن التبعيات (DI) والاعتراضات (interceptors)، فحص الأنواع وقت البناء، ترجمة بالذكاء الاصطناعي، وقواميس مشتركة مع الواجهة الأمامية.
السبب وراء تدويل النهاية الخلفية (backend) في المقام الأول هو أن جزءًا كبيرًا من النصوص التي يقرأها المستخدم لا يمر أبدًا عبر الواجهة الأمامية (frontend): رسائل خطأ API، ورسائل البريد الإلكتروني الخاصة بالمعاملات، والإشعارات اللحظية، والرسائل القصيرة، وصادرات PDF. تحتاج هذه النصوص إلى لغة المستلم، والتي يتم تحديدها لكل طلب بدلاً من كل جلسة.
انظر لماذا Intlayer.
أقل بكثير من كتالوجات JSON التقليدية. يحسن مترجم Intlayer القواميس في وقت البناء ولا يعيد تحليلها عند كل طلب، مما يحافظ على استخدام الذاكرة ووقت بدء التشغيل البارد (cold start) في حده الأدنى. انظر تحسين الحزم.
إلى حد كبير نعم. تحافظ مكونة مزامنة JSON على الملفات الحالية وتنشئ قواميس Intlayer منها.
نعم. تحافظ مكونة مزامنة JSON على ملفات /messages/{locale}/{namespace}.json كمصدر الحقيقة وتُنشئ قواميس Intlayer منها، في كلا الاتجاهين. وتقوم مكونة مزامنة PO بنفس الشيء لكتالوجات gettext، وتسمح لك الملفات المقسمة حسب اللغة بتقسيم المحتوى حسب اللغة بدلاً من تجميع كل اللغات في ملف واحد.
لا. قم بتشغيل npx intlayer extract وسيقرأ Intlayer ملفات المصدر الخاصة بك، ويسحب السلاسل النصية الموجهة للمستخدم ويكتب ملف .content بجانب كل منها، بحيث تراجع diff بدلاً من نسخ السلاسل إلى كتالوج يدويًا. راجع أمر extract.
لأتمتة كاملة، يقوم Intlayer Compiler بالشيء نفسه في وقت البناء وينشئ القواميس عند كل تغيير.
خمس أدوات، كلها اختيارية:
- امتداد VS Code: الانتقال من مفتاح إلى ملف المحتوى، استخراج السلاسل، وتشغيل build و fill و test و push و pull من لوحة الأوامر.
- خادم LSP: الانتقال إلى التعريف وعروض القيمة المترجمة عند التمرير والإكمال التلقائي في أي محرر يدعم LSP. يتعامل أيضًا مع استدعاءات
i18next. - خادم MCP: يكشف وثائق Intlayer و CLI إلى Cursor و VS Code و Claude Desktop و Claude Code و ChatGPT.
- Agent skills: مهارات مخصصة مثل
intlayer-configوintlayer-cliوintlayer-content. - ESLint plugin: قاعدة
no-raw-textترصد النصوص المكتوبة يدويًا بدون تدويل.