اللغات
كيف تعمل لوحة التحكم بالإنجليزية والعربية، وأين يوجد كل نص، وما الذي تغيّره لإضافة لغة.
لحزمة واجهة + خلفية
اللغات المتوفرة
| اللغة | العنوان | الاتجاه | الخط |
|---|---|---|---|
| الإنجليزية، اللغة الافتراضية | /en | من اليسار إلى اليمين | خط النظام |
| العربية | /ar | من اليمين إلى اليسار | IBM Plex Sans Arabic |
كل تسمية وزر وعنوان جدول ومفتاح مخطط ورسالة نموذج وعنوان صفحة موجود باللغتين، وكذلك واجهة المساعد الذكي.
كيف تُختار اللغة
- اللغة هي الجزء الأول من كل عنوان:
/en/dashboard/users/allو/ar/dashboard/users/all. - العنوان من دون لغة، مثل
/، يُحوَّل إلى صفحته بآخر لغة استُخدمت، أو بالإنجليزية في المرة الأولى، ويُحوَّل/نفسه إلى لوحة التحكم. يقوم بذلكsrc/proxy.ts، ويحفظ اللغة في ملف تعريف ارتباط (cookie). - قائمة اللغة في الرأس، وهي علم مع رمزه، تبدّل اللغة وتُبقيك في الصفحة نفسها.
- ترسل لوحة التحكم اللغة مع كل طلب، فتعود رسائل واجهة API، مثل خطأ تسجيل الدخول، باللغة نفسها.
من اليمين إلى اليسار
على /ar، يضبط سكربت صغير في src/app/layout.tsx القيمتين lang="ar" وdir="rtl" على الصفحة قبل رسمها، فينعكس التصميم كله منذ الإطار الأول: ينتقل الشريط الجانبي إلى اليمين، وتُقرأ البطاقات والجداول والقوائم من اليمين إلى اليسار.
تستخدم المكوّنات أصناف Tailwind المنطقية التي تتبع الاتجاه، مثل ms-2 وpe-4 وstart-0 وtext-start. عندما تضيف عناصر، استخدم هذه بدلًا من ml-* أو pr-* أو left-* أو text-left، وإلا ظهرت الصفحة العربية بشكل خاطئ.
أين توجد النصوص
في مجلد لوحة التحكم، تُقسَّم النصوص حسب المنطقة تحت messages/، وفي كل مجلد ملفا en.json وar.json:
| المجلد | ما الذي يحتويه |
|---|---|
messages/layouts/ | الشريط الجانبي والرأس والتذييل وإشعار البيانات النموذجية، وتُحمَّل في كل صفحة |
messages/auth/ | صفحة تسجيل الدخول |
messages/common/ | الكلمات والرسائل المشتركة |
messages/metadata/ | عنوان علامة تبويب المتصفح لكل صفحة |
messages/dashboard/ | النصوص المشتركة للوحة التحكم، مع مجلد لكل شاشة: overview وusers وprojects وui-component، وsettings مع profile وsecurity وappsettings وadminmanagement وadminroles الخاصة به |
messages/ai-assistant/ | المساعد الذكي ونافذة المفتاح والبطاقات التي يرسمها |
رسائل واجهة API
تجيب واجهة API بلغة ترويسة Accept-Language في الطلب، الإنجليزية أو العربية، وبالإنجليزية لأي لغة أخرى. نصوصها في back-end/src/i18n/translations/en/ وar/، وملف لكل وحدة. وتحمل الدول والصلاحيات وإعدادات التطبيق اللغتين في قاعدة البيانات.
غيّر نصًا
- غيّر القيمة في الملف الإنجليزي وما يقابلها في الملف العربي. أبقِ المفاتيح نفسها في الملفين.
- المفتاح المفقود من أحد الملفين يظهر اسمه بدل النص في صفحة تلك اللغة.
- الكلمات بين الأقواس المعقوفة، مثل
{count}، يملؤها التطبيق. اتركها كما هي.
التسميات العربية في لوحة التحكم نفسها
عندما تكتب عن لوحة التحكم بالعربية، استخدم التسميات التي تعرضها:
| الإنجليزية | العربية |
|---|---|
Sign In | تسجيل الدخول |
Overview | نظرة عامة |
AI Assistant | المساعد الذكي |
Users | المستخدمين |
Projects | المشاريع |
Admin Management | إدارة المسؤولين |
Admin Roles | أدوار المسؤولين |
Settings | الإعدادات |
UI Component | مكونات واجهة المستخدم |
Logout | تسجيل الخروج |
أضف لغة
أضف رمزها في قوائم اللغات الثلاث
أضف رمز اللغة إلى
localesفيsrc/config/i18n.tsوفيsrc/proxy.tsوفيsrc/app/[locale]/layout.tsx. للفرنسية:src/config/i18n.tsexport const locales = ['en', 'ar', 'fr'] as constأضف ملفات رسائلها
في كل مجلد تحت
messages/يحتوي علىen.json، انسخه باسم الرمز الجديد وترجم القيم. أبقِ كل مفتاح وكل كلمة بين أقواس معقوفة.أضفها إلى قائمة اللغة
أضفها إلى
languagesفيsrc/components/LanguageSwitcher.tsx، مع رمزها وعلم منcountry-flag-icons، مثل{ code: "fr", country: "FR" as const, Flag: FR }مع إضافةFRإلى استيراد الأعلام.اضبط اتجاهها، إن احتاجت إلى ذلك
العربية وحدها تُعامل على أنها من اليمين إلى اليسار. للغة أخرى تُكتب من اليمين إلى اليسار، أضف رمزها إلى
RTL_LOCALESفيsrc/app/layout.tsxووسّع عمليات الفحصlocale === "ar"، بدءًا منsrc/hooks/locale/useDirection.ts.
أعد تشغيل yarn dev، أو ابنِ من جديد، فتستجيب اللغة الجديدة على عنوانها. وتبقى واجهة API تجيبها بالإنجليزية إلى أن تضيف ترجماتها في back-end/src/i18n/، حيث تسرد supportedLocales في i18n.service.ts اللغات التي تحمّلها.