اللغات
كيف يعمل Kinora بالإنجليزية والعربية، وكيف تغيّر أي نص، وما الذي تغيّره لإضافة لغة.
لحزمة الحزمة الكاملة
اللغات المتوفرة
الإنجليزية والعربية، في التطبيقين. تعرض العربية لوحة التحكم كلها من اليمين إلى اليسار، بخطها الخاص.
| التطبيق | الإنجليزية | العربية |
|---|---|---|
| لوحة التحكم | /en/… | /ar/… |
| API | Accept-Language: en | Accept-Language: ar |
الإنجليزية هي اللغة الافتراضية. يُخزَّن محتوى الكتالوجات (التمارين، والجلسات، والبرامج، والأطباق، والمجموعات، والفعاليات، والتحديات، والشارات) باسمه ووصفه باللغتين، ويُدخَل جنبًا إلى جنب في شاشات المحتوى.
كيف تُختار اللغة
- اللغة هي الجزء الأول من العنوان. المسار الذي لا يتضمنها يذهب إلى
/en؛ ولا تُكتشف لغة المتصفح. - يبدّل محدد اللغة ذلك الجزء من العنوان ويُبقي الصفحة نفسها.
- يُضبط الاتجاه قبل أول عرض للصفحة، لذا لا تظهر الصفحة العربية أبدًا من اليسار إلى اليمين ولو للحظة.
- ترسل لوحة التحكم لغة الصفحة إلى واجهة API في
Accept-Language، فتعود رسائلها باللغة نفسها.
غيّر نصًا
كل كلمة ظاهرة موجودة في messages/<namespace>/en.json وar.json، في مجلد لوحة التحكم. غيّر القيمة، وأبقِ المفتاح، وغيّرها في الملفين.
| مساحة الأسماء | ما تحتويه |
|---|---|
ai-assistant | صفحة المساعد |
auth | صفحات تسجيل الدخول والتسجيل وكلمة المرور |
common | كلمات المكونات المشتركة: الجداول، والفلاتر، والرفع، والبحث |
dashboard | كل صفحات لوحة التحكم والإشعارات، بمجلد لكل قسم (activity وworkouts وnutrition وclients وcontent وsettings وغيرها) |
demo-credentials | لوحة العرض التجريبي العام التي يضيف فيها الزائر مفتاح الذكاء الاصطناعي الخاص به |
layouts | شريط التنقل، وإطار الشريط الجانبي، وتنبيه البيانات التجريبية |
- المفتاح المفقود من
ar.jsonيظهر كخطأ رسالة مفقودة في النسخة العربية، لذا أبقِ الملفين متطابقين. - تسميات الشريط الجانبي هي الاستثناء: فهي مكتوبة بالإنجليزية والعربية في
src/layouts/dashboard/sidebar/config/navigationData.ts، الذي يغذّي البحث أيضًا. - النص داخل الأقواس
{curly}يملؤه التطبيق، مثل{count}أو{name}. أبقِ تلك الكلمات كما هي في اللغتين. - تُخزَّن الإشعارات على أنها ما حدث، لا على شكل جملة أبدًا، وتكتب لوحة التحكم الكلمات من ملفات رسائلها. لذا فإن لغة جديدة لها مسألة ترجمة، لا تغيير في واجهة API.
التسميات العربية الخاصة بلوحة التحكم
عندما تكتب عن Kinora بالعربية، استخدم التسميات التي تعرضها شاشاته:
| الإنجليزية | العربية | من يراها |
|---|---|---|
Dashboard | لوحة التحكم | الجميع |
AI Assistant | المساعد الذكي | الجميع |
Activity | النشاط | الأعضاء |
Workouts | التمارين | الأعضاء |
Exercise Library | مكتبة التمارين | الأعضاء |
Nutrition | التغذية | الأعضاء |
Meal Planner | مخطط الوجبات | الأعضاء |
Sleep | النوم | الأعضاء |
Health | الصحة | الأعضاء |
Progress | التقدم | الأعضاء |
Progress Photos | صور التقدم | الأعضاء |
Community | المجتمع | الأعضاء |
My Clients | عملائي | المدرب الرئيسي والمدربون الشخصيون |
Gym | النادي | الموظفون |
Content | المحتوى | الموظفون |
Coaches | المدربون | الموظفون |
Coach Roles | أدوار المدربين | الموظفون |
Settings | الإعدادات | الجميع |
Sign In | تسجيل الدخول | صفحة تسجيل الدخول |
ما تترجمه واجهة API
- تعود رسائل الأخطاء و
messageالخاصة بعمليات الكتابة الناجحة بلغة الترويسةAccept-Language. تُعامَلar-SAكعربية؛ وأي لغة لا تملكها واجهة API تعود إلى الإنجليزية. - نصوصها ملفات JSON في
back-end/src/i18n/translations/en/وar/، ملف لكل مجال:authوcoachوcommonوrolesوsettingsوusers. - يعود المحتوى المخزّن باللغتين بالشكل
{ "en": "…", "ar": "…" }، وتختار لوحة التحكم إحداهما.
أضف لغة إلى لوحة التحكم
اللغتان مكتوبتان في عدة ملفات، لذا فإن إضافة لغة ثالثة تمسّ كلًا منها. المسارات داخل dashboard/.
أضف رمز اللغة
أضفه إلى قوائم اللغات في
src/config/i18n.tsوsrc/proxy.tsوsrc/app/[locale]/layout.tsxوsrc/components/LanguageSwitcher.tsx.ترجم الرسائل
أضف ملف
<code>.jsonبجوار كلen.jsonداخلmessages/، بما في ذلك المجلدات داخلmessages/dashboard/.ترجم الشريط الجانبي والهوية
أضف لغتك إلى كل تسمية في
src/layouts/dashboard/sidebar/config/navigationData.ts، وإلى النصوص فيsrc/config/brand.config.ts.اضبط الاتجاه
للغة تُكتب من اليمين إلى اليسار، أضفها إلى
RTL_LOCALESفيsrc/app/layout.tsxوإلىsrc/hooks/locale/useDirection.ts.
يُخزَّن محتوى الكتالوجات بالإنجليزية والعربية فقط. تحتاج اللغة الثالثة أيضًا إلى أن تحملها حقول المحتوى في واجهة API ونماذج المحتوى.
أضف لغة إلى واجهة API
أضف رمز اللغة
أضفها إلى
supportedLocalesفيback-end/src/i18n/i18n.service.ts.ترجم الرسائل
انسخ
back-end/src/i18n/translations/en/إلى مجلد يحمل اسم رمز اللغة وترجم القيم. أي مفتاح تتركه يعود إلى الإنجليزية.