اللغات
كيف تعمل الوكالة بالإنجليزية والعربية، وكيف تغيّر أي نص، وما الذي تغيّره لإضافة لغة.
لحزمة الحزمة الكاملة
اللغات المتوفرة
الإنجليزية والعربية، في التطبيقات الثلاثة. تضع العربية الواجهة كلها من اليمين إلى اليسار، بخطوط عربية للنص والعناوين، وتبقى الأرقام والأسعار بأرقام لاتينية في اللغتين.
| التطبيق | الإنجليزية | العربية |
|---|---|---|
| الموقع العام | /en/… | /ar/… |
| لوحة تحكم الوكالة | /en/… | /ar/… |
| API | Accept-Language: en | Accept-Language: ar |
الإنجليزية هي الافتراضية. يُخزَّن عنوان العقار ووصفه المختصر ووصفه ومدينته ونصوص تحسين الظهور، واسم الحي ووصفه، باللغتين، ويُدخَل ذلك جنبًا إلى جنب في لوحة التحكم؛ الإنجليزية مطلوبة، ويمكن أن تتبعها العربية لاحقًا. وتملأ البيانات الأولية العربية للوكالة التجريبية.
كيف تُختار اللغة
- اللغة هي الجزء الأول من العنوان. المسار بدونها يذهب إلى
/en(وجذر لوحة التحكم يذهب إلى/en/dashboard). - تبدّل قائمة اللغة ذلك الجزء من العنوان وتبقي الصفحة نفسها.
- ترسل الواجهتان الأماميتان لغة الصفحة إلى واجهة API، فتعود رسائلها باللغة نفسها.
غيّر نصًا
كل كلمة ظاهرة موجودة في messages/<namespace>/en.json وar.json، في مجلد كل واجهة أمامية. غيّر القيمة، وأبقِ المفتاح، وغيّرها في الملفين.
| التطبيق | مساحات الأسماء |
|---|---|
| الموقع العام | agency, amenities, common, compare, contact, home, layouts, privacy, properties, property, saved, viewing |
| لوحة تحكم الوكالة | ai-assistant وauth وcommon وdashboard (مع مجلد لكل صفحة: domain وleads وoverview وproperties وproperty-editor وsettings وstudio وviewings) وdemo-credentials وlayouts |
- المفتاح الناقص في
ar.jsonيظهر كرسالة ناقصة في الجهة العربية، لذلك أبقِ الملفين متطابقين. - النص داخل الأقواس
{curly}يملؤه التطبيق، مثل{count}أو{name}. أبقِ هذه الكلمات كما هي في اللغتين. - تسميات المرافق وأنواع العقارات والحالات هي أيضًا رسائل:
messages/amenitiesفي الموقع وmessages/dashboard/domainفي لوحة التحكم.
ما تترجمه واجهة API
- ترجع رسائل الأخطاء و
messageالخاصة بالكتابة الناجحة بلغة الترويسةAccept-Language. تُعدar-AEعربية؛ وأي لغة لا تملكها واجهة API تعود إلى الإنجليزية. - نصوصها الخاصة ملفات JSON في
back-end/src/i18n/translations/en/وar/، ملف لكل منطقة:adminوauthوcommonوleadوneighborhoodوpropertyوrolesوsettingsوviewing. - تعود العقارات والأحياء باللغتين، بالشكل
{ "en": "…", "ar": "…" }، وتختار الواجهة الأمامية إحداهما.
أضف لغة إلى الموقع
اللغتان مكتوبتان في عدد قليل من الملفات، لذلك تتطلب إضافة لغة ثالثة تعديل كل منها. المسارات داخل storefront/.
- أضف الرمز إلى
localesفيsrc/config/i18n.tsوفيsrc/proxy.ts. - انسخ كل ملف
messages/<namespace>/en.jsonإلى ملف باسم الرمز الجديد، وترجم القيم. - إذا كانت اللغة تُكتب من اليمين إلى اليسار، فوسّع
directionOfفيsrc/config/i18n.tsالذي لا يعرف سوىar. - أضف نصوصها إلى
nameو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، لذلك فإضافة لغة ثالثة في البيانات تغيير في تلك الأصناف والكيانات والبيانات الأولية.