اللغات
كيف يعمل نشاط الحجز بالإنجليزية والعربية، وكيف تغيّر أي نص، وماذا تغيّر لإضافة لغة.
لحزمة الحزمة الكاملة
اللغات المتوفرة
الإنجليزية والعربية، في التطبيقات الثلاثة. تعرض العربية الواجهة كلها من اليمين إلى اليسار بخط عربي للنص، وتبقى الأرقام والأسعار بالأرقام اللاتينية في اللغتين. ويُحفظ الجزء اللاتيني داخل النص العربي، مثل رقم هاتف أو مرجع حجز أو سعر، في اتجاهه الخاص كي لا يُعاد ترتيبه.
| التطبيق | الإنجليزية | العربية |
|---|---|---|
| موقع الإقامات | /en/… | /ar/… |
| لوحة تحكم الحجوزات | /en/… | /ar/… |
| API | Accept-Language: en | Accept-Language: ar |
الإنجليزية هي الافتراضية. عنوان الإقامة ووصفها القصير ووصفها وتلميح موقعها وقواعد المنزل ونصوص SEO، واسم الوجهة وشعارها ووصفها، وأسئلة الصفحة الرئيسية، وشعار الشركة ووصفها وسطر عنوانها وسياسة الإلغاء، كلها تُخزَّن باللغتين وتُدخل جنبًا إلى جنب في لوحة التحكم؛ والإنجليزية مطلوبة للعنوان، ويمكن أن تلحق بها العربية لاحقًا. ولا تُنشر الإقامة إلا بعد ملء اللغتين. وتملأ التعبئة الأولية العربية للشركة التجريبية.
كيف تُختار اللغة
- اللغة هي الجزء الأول من العنوان. المسار بدونها يذهب إلى
/en(وجذر لوحة التحكم يذهب إلى/en/dashboard). - تبدّل قائمة اللغة ذلك الجزء من العنوان وتبقي الصفحة نفسها.
- ترسل الواجهتان الأماميتان لغة الصفحة إلى واجهة API، فتعود رسائلها باللغة نفسها، ويتذكر الحجز اللغة التي أُجري بها.
غيّر نصًا
كل كلمة ظاهرة موجودة في messages/<namespace>/en.json وar.json، في مجلد كل واجهة أمامية. غيّر القيمة، وأبقِ المفتاح، وغيّرها في الملفين.
| التطبيق | مساحات الأسماء |
|---|---|
| موقع الإقامات | about, booking, checkout, common, contact, destinations, home, inquiry, layouts, privacy, saved, stay, stays |
| لوحة تحكم الحجوزات | ai-assistant وauth وcommon وdashboard (مع مجلد لكل صفحة: bookings وcalendar وdomain وinquiries وoverview وreviews وsettings وstay-editor وstays) وdemo-credentials وlayouts |
- المفتاح الناقص في
ar.jsonيظهر كرسالة ناقصة في الجهة العربية، لذلك أبقِ الملفين متطابقين. - النص داخل الأقواس
{curly}يملؤه التطبيق، مثل{count}أو{name}. أبقِ هذه الكلمات كما هي في اللغتين. - تسميات الحالة والدفع وسبب الحظر في لوحة التحكم رسائل أيضًا، في
messages/dashboard/domain.
ما تترجمه واجهة API
- ترجع رسائل الأخطاء و
messageالخاصة بالكتابة الناجحة بلغة الترويسةAccept-Language. تُعدar-AEعربية؛ وأي لغة لا تملكها واجهة API تعود إلى الإنجليزية. - نصوصها ملفات JSON في
back-end/src/i18n/translations/en/وar/، ملف لكل جزء:adminوauthوavailabilityوbookingوcommonوdestinationوfaqوinquiryوpaymentوreviewوrolesوsettingsوstay. - تعود الإقامات والوجهات وأسئلة الصفحة الرئيسية باللغتين، على شكل
{ "en": "…", "ar": "…" }، وتختار الواجهة الأمامية واحدة.
أضف لغة إلى الموقع
اللغتان مكتوبتان في عدد قليل من الملفات، لذلك تتطلب إضافة لغة ثالثة تعديل كل منها. المسارات داخل storefront/.
- أضف الرمز إلى
localesفيsrc/config/i18n.tsوفيsrc/proxy.ts. - انسخ كل ملف
messages/<namespace>/en.jsonإلى ملف باسم الرمز الجديد، وترجم القيم. - إذا كانت اللغة تُكتب من اليمين إلى اليسار، فوسّع
directionOfفيsrc/config/i18n.tsالذي لا يعرف سوىar. - أضف نصوصها إلى
nameوtaglineوdescriptionفيsrc/config/brand.config.ts. - الكود الذي يختار نصًا مخزنًا بحسب اللغة، مثل
src/lib/utils/pickLocalized.ts، يختار بينenوar. ابحث فيsrc/عن"ar"وعالج الرمز الجديد هناك أيضًا.
أضف لغة إلى لوحة التحكم
- أضف الرمز إلى
localesفيsrc/config/locales.ts(وإلىRTL_LOCALESإذا كانت تُكتب من اليمين إلى اليسار) وفيsrc/proxy.ts. اللغة المضافة هناك تضيف أيضًا تبويبها إلى كل حقل يُحفظ بعدة لغات. - انسخ كل ملف
messages/**/en.jsonإلى ملف باسم الرمز الجديد، وترجم القيم. - ابحث في
src/عن"ar"لتجد المواضع القليلة التي ما زالت تسمّي اللغتين مباشرة. - اللغة الثالثة في النصوص المخزنة تحتاج أيضًا إلى أن تقبلها واجهة API.
أضف لغة إلى واجهة API
تعرف واجهة API اللغتين en وar في back-end/src/i18n/i18n.service.ts. أضف الرمز الجديد هناك، وانسخ src/i18n/translations/en/ إلى مجلد باسمه، وترجم الملفات. النصوص المخزنة زوج { en, ar } يتحقق منه src/common/dto/localized.dto.ts، فلغة ثالثة في البيانات تغيير في تلك الفئات والكيانات وفحص النشر والتعبئة الأولية.