استخدم مساعدك المفضل للملخص واستخدم هذه الصفحة والموفر AI الذي تريده
تاريخ الإصدارات
- النسخة الأوليةv7.0.0١/١١/٢٠٢٥
تمت ترجمة محتوى هذه الصفحة باستخدام الذكاء الاصطناعي.
اعرض آخر نسخة المحتوى الأصلي باللغة الإنكليزيةإذا كان لديك فكرة لتحسين هذه الوثيقة، فلا تتردد في المساهمة من خلال تقديم طلب سحب على GitHub.
رابط GitHub للتوثيقنسخ الـ Markdown من المستند إلى الحافظة
كيفية تعريب تطبيق Next.js الخاص بك باستخدام next-intl في عام 2026
جدول المحتويات
ما هو next-intl؟
next-intl هي مكتبة تعريب (i18n) شهيرة مصممة خصيصًا لـ Next.js App Router. توفر طريقة سلسة لبناء تطبيقات Next.js متعددة اللغات مع دعم ممتاز لـ TypeScript وتحسينات مدمجة.
إذا كنت تفضل، يمكنك أيضًا الرجوع إلى دليل next-i18next، أو استخدام Intlayer مباشرة.
راجع المقارنة في next-i18next مقابل next-intl مقابل Intlayer.
الممارسات التي يجب اتباعها
قبل أن نبدأ في التنفيذ، إليك بعض الممارسات التي يجب اتباعها:
- تعيين سمات HTML
langوdir
في التخطيط الخاص بك، احسبdirباستخدامgetLocaleDirection(locale)وقم بتعيين<html lang={locale} dir={dir}>لضمان الوصول الصحيح وتحسين SEO. - تقسيم الرسائل حسب النطاق
نظم ملفات JSON حسب اللغة والنطاق (مثلcommon.json،about.json) لتحميل ما تحتاجه فقط. - تقليل حمولة العميل
في الصفحات، أرسل فقط النطاقات المطلوبة إلىNextIntlClientProvider(مثلpick(messages, ['common', 'about'])). - تفضيل الصفحات الثابتة
استخدم الصفحات الثابتة قدر الإمكان لتحسين الأداء وSEO. - الدولية في مكونات الخادم
مكونات الخادم، مثل الصفحات أو جميع المكونات التي لم يتم تمييزها بـ client هي مكونات ثابتة ويمكن تقديمها مسبقًا أثناء وقت البناء. لذلك، سيتعين علينا تمرير دوال الترجمة إليها كخصائص (props).
- إعداد أنواع TypeScript
للغاتك لضمان سلامة الأنواع في جميع أنحاء تطبيقك. - وكيل لإعادة التوجيه
استخدم وكيلًا للتعامل مع اكتشاف اللغة والتوجيه وإعادة توجيه المستخدم إلى عنوان URL المناسب مع بادئة اللغة. - تعريب بيانات التعريف، خريطة الموقع، robots.txt
قم بتعريب بيانات التعريف، خريطة الموقع، وملف robots.txt باستخدام دالةgenerateMetadataالمقدمة من Next.js لضمان اكتشاف أفضل من محركات البحث في جميع اللغات. - تعريب الروابط
- تعريب الروابط
استخدم مكونLinkلإعادة توجيه المستخدم إلى عنوان URL المناسب مع بادئة اللغة. من المهم ضمان اكتشاف صفحاتك في جميع اللغات. - أتمتة الاختبارات والترجمات
تساعد أتمتة الاختبارات والترجمات في توفير الوقت لصيانة تطبيقك متعدد اللغات.
راجع وثيقتنا التي تسرد كل ما تحتاج لمعرفته حول التعريب وتحسين محركات البحث: التعريب (i18n) مع next-intl.
دليل خطوة بخطوة لإعداد next-intl في تطبيق Next.js
راجع نموذج التطبيق على GitHub.
إليك هيكل المشروع الذي سنقوم بإنشائه:
نسخ الكود إلى الحافظة
تثبيت التبعيات
قم بتثبيت الحزم اللازمة باستخدام npm:
bashنسخ الكودنسخ الكود إلى الحافظة
- next-intl: مكتبة التدويل الأساسية لـ Next.js App Router التي توفر الخطافات، وظائف الخادم، ومزودي العميل لإدارة الترجمات.
تكوين مشروعك
قم بإنشاء ملف تكوين يحدد اللغات المدعومة لديك ويضبط إعدادات طلب next-intl. يعمل هذا الملف كمصدر وحيد للحقيقة لإعداد i18n الخاص بك ويضمن سلامة الأنواع عبر تطبيقك.
تركيز إعدادات اللغة في مكان واحد يمنع التناقضات ويسهل إضافة أو إزالة اللغات في المستقبل. تعمل دالة
getRequestConfigعلى كل طلب وتقوم بتحميل الترجمات اللازمة فقط لكل صفحة، مما يتيح تقسيم الكود وتقليل حجم الحزمة.src/i18n.tsنسخ الكودنسخ الكود إلى الحافظة
تعريف مسارات اللغات الديناميكية
قم بإعداد التوجيه الديناميكي للغات من خلال إنشاء مجلد
[locale]داخل مجلد التطبيق الخاص بك. يتيح هذا لـ Next.js التعامل مع التوجيه بناءً على اللغة حيث يصبح كل لغة جزءًا من عنوان URL (مثل/en/about،/fr/about).يُمكّن استخدام التوجيهات الديناميكية Next.js من إنشاء صفحات ثابتة لجميع اللغات أثناء وقت البناء، مما يحسن الأداء وتحسين محركات البحث (SEO). يقوم مكون التخطيط بتعيين سمات HTML
langوdirبناءً على اللغة، وهو أمر حيوي من أجل سهولة الوصول وفهم محركات البحث.src/app/[locale]/layout.tsxنسخ الكودنسخ الكود إلى الحافظة
src/app/[locale]/about/page.tsxنسخ الكودنسخ الكود إلى الحافظة
إنشاء ملفات الترجمة الخاصة بك
قم بإنشاء ملفات JSON لكل لغة ومساحة أسماء. تتيح لك هذه البنية تنظيم الترجمات بشكل منطقي وتحميل ما تحتاجه فقط لكل صفحة.
تنظيم الترجمات حسب مساحة الأسماء (مثل
common.json،about.json) يمكّن من تقسيم الكود وتقليل حجم الحزمة. تقوم بتحميل الترجمات اللازمة فقط لكل صفحة، مما يحسن الأداء.locales/en/common.jsonنسخ الكودنسخ الكود إلى الحافظة
locales/fr/common.jsonنسخ الكودنسخ الكود إلى الحافظة
locales/en/about.jsonنسخ الكودنسخ الكود إلى الحافظة
locales/fr/about.jsonنسخ الكودنسخ الكود إلى الحافظة
استخدام الترجمات في صفحاتك
قم بإنشاء مكون صفحة يقوم بتحميل الترجمات على الخادم ويمررها إلى مكونات الخادم والعميل على حد سواء. هذا يضمن تحميل الترجمات قبل العرض ويمنع وميض المحتوى.
تحميل الترجمات على جانب الخادم يحسن تحسين محركات البحث (SEO) ويمنع وميض المحتوى غير المترجم (FOUC). باستخدام
pickلإرسال الأسماء الفرعية المطلوبة فقط إلى مزود العميل، نقلل من حجم حزمة جافا سكريبت المرسلة إلى المتصفح.src/app/[locale]/about/page.tsxنسخ الكودنسخ الكود إلى الحافظة
استخدام الترجمات في مكونات العميل
يمكن لمكونات العميل استخدام الخطافات
useTranslationsوuseFormatterللوصول إلى الترجمات ووظائف التنسيق. هذه الخطافات تقرأ من سياقNextIntlClientProvider.تحتاج مكونات العميل إلى خطافات React للوصول إلى الترجمات. تتكامل الخطافات
useTranslationsوuseFormatterبسلاسة مع next-intl وتوفر تحديثات تفاعلية عند تغيير اللغة.لا تنسَ إضافة المساحات الاسمية المطلوبة إلى رسائل العميل في الصفحة (قم بتضمين المساحات الاسمية التي تحتاجها مكونات العميل فقط).
src/components/ClientComponent.tsxنسخ الكودنسخ الكود إلى الحافظة
استخدام الترجمات في مكونات الخادم
لا يمكن لمكونات الخادم استخدام React hooks، لذا فإنها تستقبل الترجمات وأدوات التنسيق عبر props من مكونات الوالد الخاصة بها. هذه الطريقة تحافظ على تزامن مكونات الخادم وتسمح بتضمينها داخل مكونات العميل.
تحتاج مكونات الخادم التي قد تكون متداخلة تحت حدود العميل إلى أن تكون متزامنة. من خلال تمرير السلاسل المترجمة والقيم المنسقة كخصائص (props)، نتجنب العمليات غير المتزامنة ونضمن العرض الصحيح. قم بحساب الترجمات والتنسيقات مسبقًا في مكون الصفحة الأصل.
src/components/ServerComponent.tsxنسخ الكودنسخ الكود إلى الحافظة
في صفحتك/التخطيط، استخدم
getTranslationsوgetFormatterمنnext-intl/serverلحساب الترجمات والتنسيقات مسبقًا، ثم مررها كخصائص إلى مكونات الخادم.تغيير لغة المحتوى الخاص بك
اختياريلتغيير لغة المحتوى الخاص بك باستخدام next-intl، قم بعرض روابط تدرك اللغة تشير إلى نفس مسار الصفحة مع تبديل اللغة. يقوم المزود بإعادة كتابة عناوين URL تلقائيًا، لذلك عليك فقط استهداف المسار الحالي.
src/components/LocaleSwitcher.tsxنسخ الكودنسخ الكود إلى الحافظة
استخدام مكون الرابط المحلي
اختيارييوفر
next-intlحزمة فرعيةnext-intl/navigationتحتوي على مكون رابط محلي يقوم تلقائيًا بتطبيق اللغة النشطة. لقد قمنا باستخراجه لك بالفعل في ملف@/i18n، لذا يمكنك استخدامه كما يلي:src/components/MyComponent.tsxنسخ الكودنسخ الكود إلى الحافظة
الوصول إلى اللغة النشطة داخل Server Actions
اختيارييمكن لـ Server Actions قراءة اللغة الحالية باستخدام
next-intl/server. هذا مفيد لإرسال رسائل بريد إلكتروني محلية أو تخزين تفضيلات اللغة جنبًا إلى جنب مع البيانات المقدمة.src/app/actions/get-current-locale.tsنسخ الكودنسخ الكود إلى الحافظة
getLocaleيقرأ اللغة التي تم تعيينها بواسطة وكيلnext-intl، لذا فهو يعمل في أي مكان على الخادم: معالجات المسارات، إجراءات الخادم، ودوال الحافة.تعريب بيانات التعريف الخاصة بك
اختياريترجمة المحتوى أمر مهم، لكن الهدف الرئيسي من التدويل هو جعل موقعك الإلكتروني أكثر ظهورًا للعالم. التدويل (I18n) هو أداة قوية لتحسين ظهور موقعك الإلكتروني من خلال تحسين محركات البحث (SEO) بشكل صحيح.
تساعد البيانات الوصفية الدولية بشكل صحيح محركات البحث على فهم اللغات المتاحة في صفحاتك. يشمل ذلك تعيين علامات hreflang الوصفية، وترجمة العناوين والوصفات، وضمان تعيين عناوين URL الأساسية (canonical URLs) بشكل صحيح لكل لغة.
src/app/[locale]/about/layout.tsxنسخ الكودنسخ الكود إلى الحافظة
تعريب خريطة الموقع الخاصة بك
اختياريقم بإنشاء خريطة موقع تتضمن جميع إصدارات اللغات المختلفة لصفحاتك. يساعد هذا محركات البحث على اكتشاف وفهرسة جميع إصدارات اللغات لمحتواك.
تضمن خريطة الموقع الدولية بشكل صحيح أن محركات البحث يمكنها العثور على جميع إصدارات اللغات لصفحاتك وفهرستها. هذا يحسن من ظهور موقعك في نتائج البحث الدولية.
src/app/sitemap.tsنسخ الكودنسخ الكود إلى الحافظة
تعريب ملف robots.txt الخاص بك
اختياريقم بإنشاء ملف robots.txt يتعامل بشكل صحيح مع جميع إصدارات اللغات لمساراتك المحمية. هذا يضمن أن محركات البحث لا تقوم بفهرسة صفحات الإدارة أو لوحة التحكم بأي لغة.
تكوين ملف robots.txt بشكل صحيح لجميع اللغات يمنع محركات البحث من فهرسة الصفحات الحساسة عندما تكون مساراتك مختلفة لكل لغة.
src/app/robots.tsنسخ الكودنسخ الكود إلى الحافظة
إعداد Proxy لتوجيه اللغة
اختياريقم بإنشاء Proxy لاكتشاف اللغة المفضلة للمستخدم تلقائيًا وإعادة توجيهه إلى عنوان URL المناسب مع بادئة اللغة. توفر مكتبة next-intl دالة Proxy مريحة تتولى هذا الأمر تلقائيًا.
يضمن البروكسي إعادة توجيه المستخدمين تلقائيًا إلى لغتهم المفضلة عند زيارة موقعك. كما أنه يحفظ تفضيل المستخدم للزيارات المستقبلية، مما يحسن تجربة المستخدم.
src/proxy.tsنسخ الكودنسخ الكود إلى الحافظة
إعداد أنواع TypeScript للغة
اختياريسيساعدك إعداد TypeScript في الحصول على الإكمال التلقائي وضمان سلامة الأنواع لمفاتيحك.
لهذا الغرض، يمكنك إنشاء ملف global.ts في جذر مشروعك وإضافة الكود التالي:
global.tsنسخ الكودنسخ الكود إلى الحافظة
سيستخدم هذا الكود Module Augmentation لإضافة اللغات والرسائل إلى نوع AppConfig الخاص بـ next-intl.
أتمتة ترجماتك باستخدام Intlayer
اختياريIntlayer هي مكتبة مجانية ومفتوحة المصدر مصممة لمساعدتك في عملية التوطين في تطبيقك. بينما يتولى next-intl تحميل الترجمات وإدارتها، يساعد Intlayer في أتمتة سير عمل الترجمة.
إدارة الترجمات يدويًا يمكن أن تكون مستهلكة للوقت وعرضة للأخطاء. يقوم Intlayer بأتمتة اختبار الترجمة، وتوليدها، وإدارتها، مما يوفر عليك الوقت ويضمن الاتساق عبر تطبيقك.
سيسمح لك Intlayer بـ:
إعلان المحتوى الخاص بك في أي مكان تريده في قاعدة الكود الخاصة بك يسمح Intlayer بإعلان المحتوى الخاص بك في أي مكان تريده في قاعدة الكود باستخدام ملفات
.content.{ts|js|json}. سيسمح ذلك بتنظيم أفضل لمحتواك، مما يضمن قابلية قراءة وصيانة أفضل لقاعدة الكود الخاصة بك.اختبار الترجمات المفقودة توفر Intlayer وظائف اختبار يمكن دمجها في خط أنابيب CI/CD الخاص بك، أو في اختبارات الوحدة الخاصة بك. تعرّف على المزيد حول اختبار ترجماتك.
أتمتة ترجماتك
توفر Intlayer واجهة سطر أوامر وامتداد VSCode لأتمتة ترجماتك. يمكن دمجها في خط أنابيب CI/CD الخاص بك. تعرّف على المزيد حول أتمتة ترجماتك.
يمكنك استخدام مفتاح API الخاص بك، ومزود الذكاء الاصطناعي الذي تختاره. كما توفر ترجمات واعية للسياق، راجع ملء المحتوى.ربط المحتوى الخارجي
توفر Intlayer وظائف اختبار يمكن دمجها في خط أنابيب CI/CD الخاص بك، أو في اختبارات الوحدة الخاصة بك. تعرّف على المزيد حول اختبار ترجماتك.أتمتة ترجماتك،
توفر Intlayer أداة CLI وامتداد VSCode لأتمتة ترجماتك. يمكن دمجها في خط أنابيب CI/CD الخاص بك. تعرّف على المزيد حول أتمتة ترجماتك.
يمكنك استخدام مفتاح API الخاص بك، ومزود الذكاء الاصطناعي الذي تختاره. كما توفر ترجمات واعية للسياق، راجع ملء المحتوى.ربط المحتوى الخارجي
تسمح Intlayer لك بربط المحتوى الخاص بك بنظام إدارة محتوى خارجي (CMS). لجلبه بطريقة محسّنة وإدراجه في موارد JSON الخاصة بك. تعرّف على المزيد حول جلب المحتوى الخارجي.المحرر المرئي
تقدم Intlayer محررًا مرئيًا مجانيًا لتحرير المحتوى الخاص بك باستخدام محرر مرئي. تعرّف على المزيد حول التحرير المرئي لترجماتك.
والمزيد. لاكتشاف جميع الميزات التي تقدمها Intlayer، يرجى الرجوع إلى أهمية وثائق Intlayer.
التعليقات
لا توجد تعليقات بعد. كن أول من يشارك أفكاره.