February 2, 2025
دليل كامل لتطبيق التدويل (i18n) في Next.js 15 App Router باستخدام next-intl
تعلم كيفية تنفيذ التدويل (i18n) في Next.js 15 App Router باستخدام next-intl لإنشاء تطبيق متعدد اللغات بتحسينات في تجربة المستخدم وSEO، مع حلول للتحديات الشائعة مثل التوجيه وحفظ اللغة في الروابط.
Next.js 15
Next-intl
I18n
Internationalization
React.js
App router

المقدمة
يمكن أن يكون بناء تطبيق متعدد اللغات في Next.js 15 App Router تحديًا، ولكن مع الأدوات المناسبة يصبح الأمر سلسًا. يضمن تدويل التطبيقات (i18n) دعم تطبيقك لعدة لغات، مما يحسن تجربة المستخدم وتحسين محركات البحث (SEO) للجماهير العالمية.
في هذا الدليل، سنستعرض كيفية تنفيذ i18n في Next.js 15 باستخدام next-intl. ستتعلم كيفية:
- إعداد الترجمات
- تكوين التوجيه المستند إلى اللغة
- التعامل مع Middleware لاكتشاف اللغة تلقائيًا
- التغلب على التحديات الشائعة في i18n
بنهاية هذا الدليل، سيكون تطبيقك في Next.js متعدد اللغات بالكامل ومُحسَّنًا للمستخدمين الدوليين!
لماذا next-intl؟
مع تقديم App Router في Next.js 15، تغيرت طريقة إدارة التدويل (i18n) بشكل كبير. على عكس الإصدارات السابقة التي اعتمدت على مكتبات مثل next-i18next باستخدام getStaticProps وgetServerSideProps، فإن بنية Server Components الجديدة تتطلب نهجًا مختلفًا.
إليك لماذا next-intl هو الخيار الأفضل لـ i18n في Next.js 15:
✅ متوافق تمامًا مع App Router – يعمل بسلاسة مع Server & Client Components.
✅ اكتشاف اللغة تلقائيًا – يستخدم Middleware لمعالجة عمليات إعادة التوجيه وإعادة الكتابة.
✅ تحسين محركات البحث (SEO) المحسن – يدعم عناوين URL المحلية لتعزيز رؤية محركات البحث.
✅ إدارة ترجمات مرنة – تحميل الترجمات ديناميكيًا لأداء محسّن.
✅ خفيف وسهل الاستخدام – إعداد بسيط دون تعقيدات غير ضرورية.
باستخدام next-intl، يمكننا بناء تطبيق متعدد اللغات في Next.js 15 App Router بطريقة نظيفة وقابلة للتطوير وفعالة، مع الاستفادة من أحدث ميزات Next.js.
الإعداد
لبدء استخدام i18n في Next.js 15 App Router، نحتاج إلى تثبيت الحزمة المطلوبة وتنظيم مشروعنا بشكل صحيح. إذا لم تقم بإعداد تطبيق Next.js بعد، قم بذلك أولًا، ثم ثبّت next-intl:
الآن، لنقم بتنظيم المشروع لدعم i18n في Next.js 15 App Router:
إذا كنت تقوم بترحيل تطبيق Next.js موجود إلى next-intl، انقل الصفحات إلى مجلد [locale]
لدمجها في i18n في Next.js 15 App Router.
1. إضافة ملفات الترجمة
كل لغة تحتاج إلى ترجمتها الخاصة. الطريقة الأبسط هي تخزين النصوص داخل ملفات JSON في دليل messages.
messages/en.json:
هذه الملفات تحتوي على المحتوى المترجم لتطبيقك، وهي تشكل النواة لـ i18n في Next.js 15 App Router.
2. تكوين Next.js لدعم i18n
بعد ذلك، نقوم بتعديل next.config.mjs لدمج next-intl، مما يضمن استرجاع إعدادات اللغة الصحيحة لكل طلب.
next.config.ts:
هذا الإعداد ضروري لمعالجة الترجمات ديناميكيًا في i18n في Next.js 15 App Router.
3. إعداد التوجيه (Routing)
يلعب التوجيه دورًا أساسيًا في i18n في Next.js 15 App Router. يتيح هذا الإعداد عناوين URL المستندة إلى اللغة مثل /en/about
دون الحاجة إلى معالجة يدوية إضافية.
src/i18n/routing.ts:
بفضل هذا الإعداد، سيتمكن تطبيقك من إدارة التوجيه استنادًا إلى اللغة تلقائيًا، وهي ميزة أساسية لـ i18n في Next.js 15 App Router.
4. إضافة Middleware لاكتشاف اللغة تلقائيًا
يضمن Middleware إعادة توجيه المستخدمين إلى لغتهم المفضلة تلقائيًا.
src/middleware.ts:
هذه الخطوة أساسية لتحسين تجربة المستخدم وتحسين SEO في i18n في Next.js 15 App Router.
5. تحميل الترجمات داخل Server Components
لجعل الترجمات متاحة في Server Components، نقوم بإنشاء ملف تكوين مركزي.
src/i18n/request.ts:
6. إعداد Layout لدعم اللغات
layout.tsx يضمن تحديد لغة الوثيقة وتمرير الترجمات إلى Client Components.
src/app/[locale]/layout.tsx:
7. استخدام الترجمات في الصفحات
أخيرًا، لنستخدم الترجمات داخل Component الصفحة.
src/app/[locale]/page.tsx:
import {useTranslations} from 'next-intl';
import {Link} from '@/i18n/routing';
export default function HomePage() {
const t = useTranslations('HomePage');
return (
<div>
<h1>{t('title')}</h1>
<Link href="/about">{t('about')}</Link>
</div>
);
}