اللغات
كيف يعمل الموقع واللوحة بالإنجليزية والعربية، وكيف تغيّر أي نص، وما الذي يجب تغييره لإضافة لغة.
لحزمة الحزمة الكاملة
اللغات المتوفرة
الإنجليزية والعربية في التطبيقات الثلاثة. الاسم العربي للمنتج هو تيكيتوري. تُرتَّب الواجهة كلها في العربية من اليمين إلى اليسار، بخطوط عربية للنص والعناوين، وتبقى الأرقام والأسعار والتواريخ وأرقام المقاعد بالأرقام اللاتينية في اللغتين.
| التطبيق | الإنجليزية | العربية |
|---|---|---|
| الموقع | /en/… | /ar/… |
| لوحة المنظّم | /en/… | /ar/… |
| API | Accept-Language: en | Accept-Language: ar |
الإنجليزية هي الافتراضية. عنوان الفعالية وملخصها ووصفها وبرنامجها، وعنوان نوع التذكرة ووصفها، واسم المكان وملاحظات إمكانية الوصول والمواصلات، كلها تُخزَّن باللغتين وتُدخَل جنبًا إلى جنب في اللوحة. يحتاج العنوان إلى نسخته الإنجليزية؛ ويمكن أن تأتي العربية لاحقًا. وتملأ البيانات التجريبية العربية للمنظّمين التجريبيين الأربعة.
كيف تُختار اللغة
- اللغة هي الجزء الأول من العنوان. المسار بدونها يذهب إلى
/en(وجذر لوحة التحكم يذهب إلى/en/dashboard). - تبدّل قائمة اللغة ذلك الجزء من العنوان وتبقي الصفحة نفسها.
- يرسل التطبيقان الأماميان لغة الصفحة إلى واجهة API، فتعود رسائلها باللغة نفسها. تُخزَّن قيمة
Accept-Languageفي صفحة الدفع مع الطلب باسمlocale(enأوar)، وتُكتب بها رسائل التذكرة والاسترداد والإلغاء والتذكير الخاصة بذلك الطلب، مع عنوان الفعالية باللغة نفسها. - تسرد خريطة موقع الموقع كل صفحة عامة باللغتين، كلًّا مع بديلها، حتى تعرض محركات البحث الصحيحة.
غيّر نصًا
كل كلمة ظاهرة موجودة في messages/<namespace>/en.json وar.json، في مجلد كل واجهة أمامية. غيّر القيمة، وأبقِ المفتاح، وغيّرها في الملفين.
| التطبيق | مساحات الأسماء |
|---|---|
| الموقع | account, auth, checkout, common, contact, event, events, faq, home, layouts, legal, orders, organisers, pricing, saved, seats, venues |
| لوحة المنظّم | ai-assistant وauth وcommon وdashboard (مع مجلد لكل صفحة: attendees وcheck-in وdomain وevent-editor وevents وleads وnotifications وorders وoverview وreports وroles وseating وsettings وstudio وteam وvenues) وdemo-credentials وlayouts |
- المفتاح الناقص في
ar.jsonيظهر كرسالة ناقصة في الجهة العربية، لذلك أبقِ الملفين متطابقين. - النص داخل الأقواس
{curly}يملؤه التطبيق، مثل{count}أو{name}. أبقِ هذه الكلمات كما هي في اللغتين. - تسميات الحالات والأنواع والأدوار في اللوحة رسائل أيضًا، في
messages/dashboard/domainوmessages/dashboard/roles.
ما تترجمه واجهة API
- تعود رسائل الأخطاء و
messageالخاصة بعمليات الكتابة الناجحة بلغة الترويسةAccept-Language. تُعامَلar-SAكعربية؛ وأي لغة لا تملكها واجهة API تعود إلى الإنجليزية. - نصوصها الخاصة ملفات JSON في
back-end/src/i18n/translations/en/وar/، واحد لكل قسم:adminوauthوcommonوleadوmailوrolesوsettingsوticketing. وصياغة الرسائل البريدية فيmail.json. - تعود الفعاليات وأنواع التذاكر والأماكن باللغتين، بالشكل
{ "en": "…", "ar": "…" }، ويختار التطبيق الأمامي إحداهما.
أضف لغة إلى الموقع
اللغتان مكتوبتان في عدد قليل من الملفات، لذلك تتطلب إضافة لغة ثالثة تعديل كل منها. المسارات داخل storefront/.
- أضف الرمز إلى
localesفيsrc/config/i18n.tsوفيsrc/proxy.ts. - انسخ كل
messages/<namespace>/en.jsonإلى ملف يحمل رمز اللغة الجديدة، وترجم القيم، ومنهاmeta.siteNameفيmessages/layouts. - إذا كانت اللغة تُكتب من اليمين إلى اليسار، فوسّع
directionOfفيsrc/config/i18n.tsالذي لا يعرف سوىar. - أضف لها صيغة شعار في
lockupsداخلsrc/config/brand.config.ts. - الكود الذي يختار نصًّا مخزّنًا أو صيغة تاريخ بحسب اللغة، مثل
src/lib/utils/pickLocalized.tsوsrc/lib/format/intlLocale.tsوsrc/lib/format/formatEventDate.ts، يختار بينenوar. ابحث فيsrc/عن"ar"وتعامل مع الرمز الجديد هناك أيضًا.
أضف لغة إلى لوحة التحكم
- أضف الرمز إلى
localesفيsrc/config/locales.ts(وإلىRTL_LOCALESإذا كانت تُكتب من اليمين إلى اليسار) وفيsrc/proxy.ts. اللغة المضافة هناك تضيف أيضًا تبويبها إلى كل حقل يُحفظ بعدة لغات. - انسخ كل ملف
messages/**/en.jsonإلى ملف باسم الرمز الجديد، وترجم القيم. - أضف كتابة الاسم بها إلى
src/config/brand.config.tsوصيغة شعار إلىBRAND_LOCKUPS. - ابحث في
src/عن"ar"لتجد المواضع القليلة التي ما زالت تسمّي اللغتين مباشرة. - اللغة الثالثة في النصوص المخزنة تحتاج أيضًا إلى أن تقبلها واجهة API.
أضف لغة إلى واجهة API
تعرف واجهة API اللغتين en وar في back-end/src/i18n/i18n.service.ts. أضف الرمز الجديد هناك، وانسخ src/i18n/translations/en/ إلى مجلد يحمل اسمه، وترجم الملفات؛ وتختار خدمة البريد أيضًا بين en وar في src/modules/mail/mail.service.ts. والنصوص المخزّنة زوج { en, ar } يتحقق منه src/common/dto/localized.dto.ts، فإضافة لغة ثالثة في البيانات تعني تغيير تلك الفئات والكيانات والبيانات التجريبية.