diff --git a/core/__pycache__/forms.cpython-311.pyc b/core/__pycache__/forms.cpython-311.pyc
index b0b499d..3a3aab8 100644
Binary files a/core/__pycache__/forms.cpython-311.pyc and b/core/__pycache__/forms.cpython-311.pyc differ
diff --git a/core/__pycache__/mail.cpython-311.pyc b/core/__pycache__/mail.cpython-311.pyc
new file mode 100644
index 0000000..cd23f61
Binary files /dev/null and b/core/__pycache__/mail.cpython-311.pyc differ
diff --git a/core/__pycache__/urls.cpython-311.pyc b/core/__pycache__/urls.cpython-311.pyc
index e99b8fd..2b649dd 100644
Binary files a/core/__pycache__/urls.cpython-311.pyc and b/core/__pycache__/urls.cpython-311.pyc differ
diff --git a/core/__pycache__/views.cpython-311.pyc b/core/__pycache__/views.cpython-311.pyc
index 91c1022..cd8e56a 100644
Binary files a/core/__pycache__/views.cpython-311.pyc and b/core/__pycache__/views.cpython-311.pyc differ
diff --git a/core/forms.py b/core/forms.py
index f9b7273..f81aa07 100644
--- a/core/forms.py
+++ b/core/forms.py
@@ -4,6 +4,12 @@ from django.utils.translation import gettext_lazy as _
from django.utils.translation import get_language
from .models import Profile, Parcel, Country, Governate, City
+class ContactForm(forms.Form):
+ name = forms.CharField(max_length=100, label=_("Name"), widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': _('Your Name')}))
+ email = forms.EmailField(label=_("Email"), widget=forms.EmailInput(attrs={'class': 'form-control', 'placeholder': _('Your Email')}))
+ subject = forms.CharField(max_length=200, label=_("Subject"), widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': _('Subject')}))
+ message = forms.CharField(label=_("Message"), widget=forms.Textarea(attrs={'class': 'form-control', 'rows': 5, 'placeholder': _('Your Message')}))
+
class UserRegistrationForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput, label=_("Password"))
password_confirm = forms.CharField(widget=forms.PasswordInput, label=_("Confirm Password"))
diff --git a/core/mail.py b/core/mail.py
new file mode 100644
index 0000000..b855004
--- /dev/null
+++ b/core/mail.py
@@ -0,0 +1,38 @@
+from django.core.mail import send_mail
+from django.conf import settings
+import logging
+
+logger = logging.getLogger(__name__)
+
+def send_contact_message(name, email, message):
+ """
+ Sends a contact form message to the platform admins.
+
+ Args:
+ name (str): Sender's name
+ email (str): Sender's email
+ message (str): The message content
+
+ Returns:
+ bool: True if sent successfully, False otherwise
+ """
+ try:
+ subject = f"New Contact Message from {name}"
+ full_message = f"You have received a new message from your website contact form.\n\n" \
+ f"Name: {name}\n" \
+ f"Email: {email}\n\n" \
+ f"Message:\n{message}"
+
+ recipient_list = settings.CONTACT_EMAIL_TO or [settings.DEFAULT_FROM_EMAIL]
+
+ send_mail(
+ subject=subject,
+ message=full_message,
+ from_email=settings.DEFAULT_FROM_EMAIL,
+ recipient_list=recipient_list,
+ fail_silently=False,
+ )
+ return True
+ except Exception as e:
+ logger.error(f"Failed to send contact message: {e}")
+ return False
diff --git a/core/templates/base.html b/core/templates/base.html
index 36cb331..63534f6 100644
--- a/core/templates/base.html
+++ b/core/templates/base.html
@@ -36,6 +36,15 @@
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; /* Example font suitable for Arabic */
}
+ /* Fix alignment for form inputs in RTL */
+ .form-control, .form-select {
+ text-align: right;
+ }
+ /* Ensure labels are also right-aligned */
+ .form-label {
+ text-align: right;
+ width: 100%;
+ }
{% endif %}
@@ -54,6 +63,9 @@
{% trans "How it Works" %}
+
+ {% trans "Contact" %}
+
{% if user.is_authenticated %}
{% trans "Dashboard" %}
@@ -162,9 +174,9 @@
{% if platform_profile.vat_number %}
{% trans "VAT No:" %} {{ platform_profile.vat_number }}
{% endif %}
- {% if not platform_profile.address and not platform_profile.phone_number %}
- {% trans "Contact information pending." %}
- {% endif %}
+
+ {% trans "Send us a message" %}
+
diff --git a/core/templates/core/contact.html b/core/templates/core/contact.html
new file mode 100644
index 0000000..0a8044c
--- /dev/null
+++ b/core/templates/core/contact.html
@@ -0,0 +1,91 @@
+{% extends 'base.html' %}
+{% load i18n static %}
+
+{% block title %}{% trans "Contact Us" %} | masarX{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
+
+
{% trans "Contact Us" %}
+
{% trans "We'd love to hear from you. Please fill out the form below." %}
+
+
+
+
+
+
+
+ {% if platform_profile %}
+
+
{% trans "Or reach us at" %}
+
+ {% if platform_profile.phone_number %}
+
{{ platform_profile.phone_number }}
+ {% endif %}
+ {% if platform_profile.email %}
+
{{ platform_profile.email }}
+ {% endif %}
+ {% if platform_profile.address %}
+
{{ platform_profile.address }}
+ {% endif %}
+
+
+ {% endif %}
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/core/urls.py b/core/urls.py
index 3d76963..7803136 100644
--- a/core/urls.py
+++ b/core/urls.py
@@ -1,28 +1,24 @@
from django.urls import path
-from . import views
from django.contrib.auth import views as auth_views
+from . import views
urlpatterns = [
path('', views.index, name='index'),
- path('register/', views.register, name='register'),
path('login/', auth_views.LoginView.as_view(template_name='core/login.html'), name='login'),
- path('logout/', auth_views.LogoutView.as_view(next_page='index'), name='logout'),
+ path('logout/', auth_views.LogoutView.as_view(next_page='/'), name='logout'),
+ path('register/', views.register, name='register'),
path('dashboard/', views.dashboard, name='dashboard'),
path('shipment-request/', views.shipment_request, name='shipment_request'),
path('accept-parcel//', views.accept_parcel, name='accept_parcel'),
path('update-status//', views.update_status, name='update_status'),
- path('article/', views.article_detail, name='article_detail'),
+ path('initiate-payment//', views.initiate_payment, name='initiate_payment'),
+ path('payment-success/', views.payment_success, name='payment_success'),
+ path('payment-cancel/', views.payment_cancel, name='payment_cancel'),
- # AJAX for locations
+ path('article/1/', views.article_detail, name='article_detail'),
path('ajax/get-governates/', views.get_governates, name='get_governates'),
path('ajax/get-cities/', views.get_cities, name='get_cities'),
-
- # Thawani Payment
- path('payment/initiate//', views.initiate_payment, name='initiate_payment'),
- path('payment/success/', views.payment_success, name='payment_success'),
- path('payment/cancel/', views.payment_cancel, name='payment_cancel'),
-
- # Static pages
path('privacy-policy/', views.privacy_policy, name='privacy_policy'),
path('terms-conditions/', views.terms_conditions, name='terms_conditions'),
+ path('contact/', views.contact_view, name='contact'),
]
\ No newline at end of file
diff --git a/core/views.py b/core/views.py
index 1670a0a..54fde5b 100644
--- a/core/views.py
+++ b/core/views.py
@@ -3,7 +3,7 @@ from django.contrib.auth import login, authenticate, logout
from django.contrib.auth.forms import AuthenticationForm
from django.contrib.auth.decorators import login_required
from .models import Parcel, Profile, Country, Governate, City
-from .forms import UserRegistrationForm, ParcelForm
+from .forms import UserRegistrationForm, ParcelForm, ContactForm
from django.utils.translation import gettext_lazy as _
from django.utils.translation import get_language
from django.contrib import messages
@@ -17,6 +17,7 @@ from .whatsapp_utils import (
notify_driver_assigned,
notify_status_change
)
+from .mail import send_contact_message
def index(request):
tracking_id = request.GET.get('tracking_id')
@@ -187,4 +188,23 @@ def privacy_policy(request):
return render(request, 'core/privacy_policy.html')
def terms_conditions(request):
- return render(request, 'core/terms_conditions.html')
\ No newline at end of file
+ return render(request, 'core/terms_conditions.html')
+
+def contact_view(request):
+ if request.method == 'POST':
+ form = ContactForm(request.POST)
+ if form.is_valid():
+ # Send email
+ sent = send_contact_message(
+ name=form.cleaned_data['name'],
+ email=form.cleaned_data['email'],
+ message=form.cleaned_data['message']
+ )
+ if sent:
+ messages.success(request, _("Your message has been sent successfully!"))
+ else:
+ messages.error(request, _("There was an error sending your message. Please try again later."))
+ return redirect('contact')
+ else:
+ form = ContactForm()
+ return render(request, 'core/contact.html', {'form': form})
\ No newline at end of file
diff --git a/locale/ar/LC_MESSAGES/django.mo b/locale/ar/LC_MESSAGES/django.mo
index 6c50662..39ac3df 100644
Binary files a/locale/ar/LC_MESSAGES/django.mo and b/locale/ar/LC_MESSAGES/django.mo differ
diff --git a/locale/ar/LC_MESSAGES/django.po b/locale/ar/LC_MESSAGES/django.po
index df0393c..efa9231 100644
--- a/locale/ar/LC_MESSAGES/django.po
+++ b/locale/ar/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-01-25 07:25+0000\n"
+"POT-Creation-Date: 2026-01-25 11:14+0000\n"
"PO-Revision-Date: 2026-01-25 07:13+0000\n"
"Last-Translator: Gemini\n"
"Language-Team: Arabic\n"
@@ -18,199 +18,393 @@ msgstr ""
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
-#: core/forms.py:7
-msgid "Password"
-msgstr "كلمة المرور"
+#: core/forms.py:8
+msgid "Name"
+msgstr "الاسم"
#: core/forms.py:8
-msgid "Confirm Password"
-msgstr "تأكيد كلمة المرور"
+msgid "Your Name"
+msgstr "اسمك"
-#: core/forms.py:9
-msgid "Register as"
-msgstr "التسجيل كـ"
-
-#: core/forms.py:10 core/models.py:13
-msgid "Phone Number"
-msgstr "رقم الهاتف"
-
-#: core/forms.py:16
-msgid "Username"
-msgstr "اسم المستخدم"
-
-#: core/forms.py:17
+#: core/forms.py:9 core/forms.py:28
msgid "Email"
msgstr "البريد الإلكتروني"
-#: core/forms.py:18
+#: core/forms.py:9
+msgid "Your Email"
+msgstr "بريدك الإلكتروني"
+
+#: core/forms.py:10
+msgid "Subject"
+msgstr "الموضوع"
+
+#: core/forms.py:11
+msgid "Message"
+msgstr "الرسالة"
+
+#: core/forms.py:11
+msgid "Your Message"
+msgstr "رسالتك"
+
+#: core/forms.py:14
+msgid "Password"
+msgstr "كلمة المرور"
+
+#: core/forms.py:15
+msgid "Confirm Password"
+msgstr "تأكيد كلمة المرور"
+
+#: core/forms.py:16
+msgid "Register as"
+msgstr "التسجيل كـ"
+
+#: core/forms.py:17 core/models.py:69 core/models.py:154
+msgid "Phone Number"
+msgstr "رقم الهاتف"
+
+#: core/forms.py:19 core/models.py:23 core/models.py:27 core/models.py:71
+msgid "Country"
+msgstr "الدولة"
+
+#: core/forms.py:20 core/models.py:41 core/models.py:45 core/models.py:72
+msgid "Governate"
+msgstr "المحافظة"
+
+#: core/forms.py:21 core/models.py:59 core/models.py:73
+msgid "City"
+msgstr "المدينة"
+
+#: core/forms.py:27
+msgid "Username"
+msgstr "اسم المستخدم"
+
+#: core/forms.py:29
msgid "First Name"
msgstr "الاسم الأول"
-#: core/forms.py:19
+#: core/forms.py:30
msgid "Last Name"
msgstr "اسم العائلة"
-#: core/forms.py:26
+#: core/forms.py:69
msgid "Passwords don't match"
msgstr "كلمات المرور غير متطابقة"
-#: core/forms.py:46
+#: core/forms.py:97
msgid "What are you sending?"
msgstr "ماذا سترسل؟"
-#: core/forms.py:48
-msgid "123 Street, City"
-msgstr "123 شارع، مدينة"
+#: core/forms.py:104 core/forms.py:109
+msgid "Street/Building"
+msgstr "الشارع/المبنى"
-#: core/forms.py:49
-msgid "456 Avenue, City"
-msgstr "456 جادة، مدينة"
-
-#: core/forms.py:54
+#: core/forms.py:115
msgid "Package Description"
msgstr "وصف الطرد"
-#: core/forms.py:55 core/models.py:36
+#: core/forms.py:116 core/models.py:112
msgid "Weight (kg)"
msgstr "الوزن (كجم)"
-#: core/forms.py:56 core/models.py:38
-msgid "Pickup Address"
-msgstr "عنوان الاستلام"
+#: core/forms.py:117
+msgid "Shipping Price (OMR)"
+msgstr "سعر الشحن (ر.ع)"
-#: core/forms.py:57 core/models.py:39
-msgid "Delivery Address"
-msgstr "عنوان التوصيل"
+#: core/forms.py:118 core/models.py:116
+msgid "Pickup Country"
+msgstr "دولة الاستلام"
-#: core/forms.py:58 core/models.py:41
+#: core/forms.py:119 core/models.py:117
+msgid "Pickup Governate"
+msgstr "محافظة الاستلام"
+
+#: core/forms.py:120 core/models.py:118
+msgid "Pickup City"
+msgstr "مدينة الاستلام"
+
+#: core/forms.py:121
+msgid "Pickup Address (Street/Building)"
+msgstr "عنوان الاستلام (الشارع/المبنى)"
+
+#: core/forms.py:122 core/models.py:122
+msgid "Delivery Country"
+msgstr "دولة التوصيل"
+
+#: core/forms.py:123 core/models.py:123
+msgid "Delivery Governate"
+msgstr "محافظة التوصيل"
+
+#: core/forms.py:124 core/models.py:124
+msgid "Delivery City"
+msgstr "مدينة التوصيل"
+
+#: core/forms.py:125
+msgid "Delivery Address (Street/Building)"
+msgstr "عنوان التوصيل (الشارع/المبنى)"
+
+#: core/forms.py:126 core/models.py:127
msgid "Receiver Name"
msgstr "اسم المستلم"
-#: core/forms.py:59 core/models.py:42
+#: core/forms.py:127 core/models.py:128
msgid "Receiver Phone"
msgstr "هاتف المستلم"
-#: core/models.py:8 core/models.py:32
+#: core/models.py:10 core/models.py:28 core/models.py:46
+msgid "Name (English)"
+msgstr "الاسم (إنجليزي)"
+
+#: core/models.py:11 core/models.py:29 core/models.py:47
+msgid "Name (Arabic)"
+msgstr "الاسم (عربي)"
+
+#: core/models.py:24
+msgid "Countries"
+msgstr "الدول"
+
+#: core/models.py:42
+msgid "Governates"
+msgstr "المحافظات"
+
+#: core/models.py:60
+msgid "Cities"
+msgstr "المدن"
+
+#: core/models.py:64 core/models.py:108
msgid "Shipper"
msgstr "شاحن"
-#: core/models.py:9
+#: core/models.py:65
msgid "Car Owner"
msgstr "صاحب سيارة"
-#: core/models.py:11
+#: core/models.py:67
msgid "User"
msgstr "مستخدم"
-#: core/models.py:12
+#: core/models.py:68
msgid "Role"
msgstr "الدور"
-#: core/models.py:19
+#: core/models.py:79
msgid "Profile"
msgstr "الملف الشخصي"
-#: core/models.py:20
+#: core/models.py:80
msgid "Profiles"
msgstr "الملفات الشخصية"
-#: core/models.py:24
+#: core/models.py:94
msgid "Pending Pickup"
msgstr "في انتظار الاستلام"
-#: core/models.py:25
+#: core/models.py:95
msgid "Picked Up"
msgstr "تم الاستلام"
-#: core/models.py:26
+#: core/models.py:96
msgid "In Transit"
msgstr "في الطريق"
-#: core/models.py:27
+#: core/models.py:97
msgid "Delivered"
msgstr "تم التوصيل"
-#: core/models.py:28
+#: core/models.py:98
msgid "Cancelled"
msgstr "ملغي"
-#: core/models.py:31
+#: core/models.py:102
+msgid "Pending"
+msgstr "قيد الانتظار"
+
+#: core/models.py:103
+msgid "Paid"
+msgstr "مدفوع"
+
+#: core/models.py:104
+msgid "Failed"
+msgstr "فشل"
+
+#: core/models.py:107
msgid "Tracking Number"
msgstr "رقم التتبع"
-#: core/models.py:33 core/templates/core/shipper_dashboard.html:28
+#: core/models.py:109 core/templates/core/shipper_dashboard.html:42
msgid "Carrier"
msgstr "الناقل"
-#: core/models.py:35
+#: core/models.py:111
msgid "Description"
msgstr "الوصف"
-#: core/models.py:36
+#: core/models.py:112
msgid "Weight in kg"
msgstr "الوزن بالكيلوجرام"
-#: core/models.py:44 core/templates/core/index.html:30
+#: core/models.py:113
+msgid "Price (OMR)"
+msgstr "السعر (ر.ع)"
+
+#: core/models.py:119
+msgid "Pickup Address"
+msgstr "عنوان الاستلام"
+
+#: core/models.py:125
+msgid "Delivery Address"
+msgstr "عنوان التوصيل"
+
+#: core/models.py:130 core/templates/core/index.html:30
msgid "Status"
msgstr "الحالة"
-#: core/models.py:45
+#: core/models.py:131
+msgid "Payment Status"
+msgstr "حالة الدفع"
+
+#: core/models.py:132
+msgid "Thawani Session ID"
+msgstr "معرف جلسة ثواني"
+
+#: core/models.py:134
msgid "Created At"
msgstr "أنشئ في"
-#: core/models.py:46
+#: core/models.py:135
msgid "Updated At"
msgstr "حدث في"
-#: core/models.py:57
+#: core/models.py:146
msgid "Parcel"
msgstr "طرد"
-#: core/models.py:58
+#: core/models.py:147
msgid "Parcels"
msgstr "طرود"
-#: core/templates/base.html:9
+#: core/models.py:150
+msgid "Platform Name"
+msgstr "اسم المنصة"
+
+#: core/models.py:151
+msgid "Logo"
+msgstr "الشعار"
+
+#: core/models.py:152
+msgid "Slogan"
+msgstr "الشعار اللفظي"
+
+#: core/models.py:153
+msgid "Address"
+msgstr "العنوان"
+
+#: core/models.py:155
+msgid "Registration Number"
+msgstr "رقم السجل التجاري"
+
+#: core/models.py:156
+msgid "VAT Number"
+msgstr "الرقم الضريبي"
+
+#: core/models.py:157 core/templates/base.html:177
+#: core/templates/core/privacy_policy.html:6
+msgid "Privacy Policy"
+msgstr "سياسة الخصوصية"
+
+#: core/models.py:158 core/templates/core/terms_conditions.html:6
+msgid "Terms and Conditions"
+msgstr "الشروط والأحكام"
+
+#: core/models.py:164 core/models.py:165
+msgid "Platform Profile"
+msgstr "ملف تعريف المنصة"
+
+#: core/templates/base.html:9 core/templates/base.html:149
msgid "Small Shipments, Smart Delivery"
msgstr "شحنات صغيرة، توصيل ذكي"
-#: core/templates/base.html:62
+#: core/templates/base.html:55
msgid "How it Works"
msgstr "كيف يعمل"
-#: core/templates/base.html:66
+#: core/templates/base.html:58
+msgid "Contact"
+msgstr "اتصل بنا"
+
+#: core/templates/base.html:62
msgid "Dashboard"
msgstr "لوحة التحكم"
-#: core/templates/base.html:69
+#: core/templates/base.html:66
+msgid "Admin"
+msgstr "المسؤول"
+
+#: core/templates/base.html:70
msgid "Hello"
msgstr "مرحباً"
-#: core/templates/base.html:74
+#: core/templates/base.html:75
msgid "Logout"
msgstr "تسجيل الخروج"
-#: core/templates/base.html:79 core/templates/core/login.html:4
+#: core/templates/base.html:80 core/templates/core/login.html:4
#: core/templates/core/login.html:25
msgid "Login"
msgstr "تسجيل الدخول"
-#: core/templates/base.html:82 core/templates/core/register.html:4
+#: core/templates/base.html:83 core/templates/core/register.html:4
msgid "Register"
msgstr "تسجيل"
-#: core/templates/base.html:110
+#: core/templates/base.html:111
msgid "Find Loads"
msgstr "البحث عن شحنات"
-#: core/templates/base.html:112 core/templates/core/index.html:13
+#: core/templates/base.html:113 core/templates/core/index.html:13
msgid "Start Shipping"
msgstr "ابدأ الشحن"
-#: core/templates/base.html:137
+#: core/templates/base.html:154 core/templates/core/contact.html:4
+#: core/templates/core/contact.html:14
+msgid "Contact Us"
+msgstr "اتصل بنا"
+
+#: core/templates/base.html:163
+msgid "Reg No:"
+msgstr "رقم السجل:"
+
+#: core/templates/base.html:166
+msgid "VAT No:"
+msgstr "الرقم الضريبي:"
+
+#: core/templates/base.html:169
+msgid "Send us a message"
+msgstr "أرسل لنا رسالة"
+
+#: core/templates/base.html:175
+msgid "Legal"
+msgstr "قانوني"
+
+#: core/templates/base.html:178
+msgid "Terms & Conditions"
+msgstr "الشروط والأحكام"
+
+#: core/templates/base.html:186
msgid "All rights reserved."
msgstr "جميع الحقوق محفوظة."
+#: core/templates/core/contact.html:15
+msgid "We'd love to hear from you. Please fill out the form below."
+msgstr "نود أن نسمع منك. يرجى ملء النموذج أدناه."
+
+#: core/templates/core/contact.html:63
+msgid "Send Message"
+msgstr "إرسال الرسالة"
+
+#: core/templates/core/contact.html:72
+msgid "Or reach us at"
+msgstr "أو تواصل معنا عبر"
+
#: core/templates/core/driver_dashboard.html:6
msgid "Driver Dashboard"
msgstr "لوحة تحكم السائق"
@@ -231,34 +425,34 @@ msgstr "الاستلام"
msgid "Delivery"
msgstr "التوصيل"
-#: core/templates/core/driver_dashboard.html:29
+#: core/templates/core/driver_dashboard.html:30
msgid "Weight"
msgstr "الوزن"
-#: core/templates/core/driver_dashboard.html:32
+#: core/templates/core/driver_dashboard.html:35
msgid "Accept Shipment"
msgstr "قبول الشحنة"
-#: core/templates/core/driver_dashboard.html:40
+#: core/templates/core/driver_dashboard.html:43
msgid "No shipments available at the moment."
msgstr "لا توجد شحنات متوفرة حالياً."
-#: core/templates/core/driver_dashboard.html:57
+#: core/templates/core/driver_dashboard.html:60
#: core/templates/core/index.html:35
#: core/templates/core/shipper_dashboard.html:25
msgid "To"
msgstr "إلى"
-#: core/templates/core/driver_dashboard.html:58
-#: core/templates/core/shipper_dashboard.html:27
+#: core/templates/core/driver_dashboard.html:61
+#: core/templates/core/shipper_dashboard.html:41
msgid "Receiver"
msgstr "المستلم"
-#: core/templates/core/driver_dashboard.html:69
+#: core/templates/core/driver_dashboard.html:72
msgid "Update"
msgstr "تحديث"
-#: core/templates/core/driver_dashboard.html:77
+#: core/templates/core/driver_dashboard.html:80
msgid "You haven't accepted any shipments yet."
msgstr "لم تقبل أي شحنات بعد."
@@ -369,6 +563,10 @@ msgstr "ليس لديك حساب؟"
msgid "Register here"
msgstr "سجل هنا"
+#: core/templates/core/privacy_policy.html:11
+msgid "Privacy Policy not available yet."
+msgstr "سياسة الخصوصية غير متوفرة بعد."
+
#: core/templates/core/register.html:13
msgid "Join masarX"
msgstr "انضم إلى مسارX"
@@ -385,11 +583,34 @@ msgstr "لديك حساب بالفعل؟"
msgid "Login here"
msgstr "سجل دخولك هنا"
+#: core/templates/core/register.html:48
+#: core/templates/core/shipment_request.html:143
+msgid "Select Governate"
+msgstr "اختر المحافظة"
+
+#: core/templates/core/register.html:49 core/templates/core/register.html:67
+#: core/templates/core/shipment_request.html:144
+#: core/templates/core/shipment_request.html:162
+msgid "Select City"
+msgstr "اختر المدينة"
+
#: core/templates/core/shipment_request.html:10
msgid "Request a Shipment"
msgstr "طلب شحنة"
-#: core/templates/core/shipment_request.html:24
+#: core/templates/core/shipment_request.html:39
+msgid "Pickup Details"
+msgstr "تفاصيل الاستلام"
+
+#: core/templates/core/shipment_request.html:72
+msgid "Delivery Details"
+msgstr "تفاصيل التوصيل"
+
+#: core/templates/core/shipment_request.html:105
+msgid "Receiver Details"
+msgstr "تفاصيل المستلم"
+
+#: core/templates/core/shipment_request.html:123
msgid "Submit Request"
msgstr "إرسال الطلب"
@@ -401,88 +622,70 @@ msgstr "شحناتي"
msgid "New Shipment"
msgstr "شحنة جديدة"
-#: core/templates/core/shipper_dashboard.html:28
+#: core/templates/core/shipper_dashboard.html:36
+msgid "Pay Now"
+msgstr "ادفع الآن"
+
+#: core/templates/core/shipper_dashboard.html:42
msgid "Waiting for pickup"
msgstr "في انتظار الاستلام"
-#: core/templates/core/shipper_dashboard.html:36
+#: core/templates/core/shipper_dashboard.html:50
msgid "You haven't sent any shipments yet."
msgstr "لم ترسل أي شحنات بعد."
-#: core/templates/core/shipper_dashboard.html:37
+#: core/templates/core/shipper_dashboard.html:51
msgid "Send your first shipment"
msgstr "أرسل أول شحنة لك"
-#: core/views.py:18
+#: core/templates/core/terms_conditions.html:11
+msgid "Terms and Conditions not available yet."
+msgstr "الشروط والأحكام غير متوفرة بعد."
+
+#: core/views.py:30
msgid "Parcel not found."
msgstr "الطرد غير موجود."
-#: core/views.py:55
+#: core/views.py:70
msgid "Only shippers can request shipments."
msgstr "فقط الشاحنين يمكنهم طلب شحنات."
-#: core/views.py:64
+#: core/views.py:83
msgid "Shipment requested successfully! Tracking ID: "
msgstr "تم طلب الشحنة بنجاح! رقم التتبع: "
-#: core/views.py:73
+#: core/views.py:93
msgid "Only car owners can accept shipments."
msgstr "فقط أصحاب السيارات يمكنهم قبول الشحنات."
-#: core/views.py:80
+#: core/views.py:104
msgid "You have accepted the shipment!"
msgstr "لقد قبلت الشحنة!"
-#: core/views.py:91
+#: core/views.py:119
msgid "Status updated successfully!"
msgstr "تم تحديث الحالة بنجاح!"
-#: core/templates/core/shipment_request.html:38
-msgid "Pickup Details"
-msgstr "تفاصيل الاستلام"
+#: core/views.py:138
+msgid "Could not initiate payment. Please try again later."
+msgstr "تعذر بدء الدفع. يرجى المحاولة مرة أخرى لاحقاً."
-#: core/templates/core/shipment_request.html:64
-msgid "Delivery Details"
-msgstr "تفاصيل التوصيل"
+#: core/views.py:157
+msgid "Payment successful! Your shipment is now active."
+msgstr "تم الدفع بنجاح! شحنتك نشطة الآن."
-#: core/templates/core/shipment_request.html:90
-msgid "Receiver Details"
-msgstr "تفاصيل المستلم"
+#: core/views.py:159
+msgid "Payment status is pending or failed. Please check your dashboard."
+msgstr "حالة الدفع معلقة أو فشلت. يرجى التحقق من لوحة التحكم."
-#: core/templates/core/shipment_request.html:113
-msgid "Select Governate"
-msgstr "اختر المحافظة"
+#: core/views.py:165
+msgid "Payment was cancelled."
+msgstr "تم إلغاء الدفع."
-#: core/templates/core/shipment_request.html:114
-msgid "Select City"
-msgstr "اختر المدينة"
+#: core/views.py:204
+msgid "Your message has been sent successfully!"
+msgstr "تم إرسال رسالتك بنجاح!"
-msgid "Shipping Price (OMR)"
-msgstr "سعر الشحن (ر.ع)"
-
-msgid "Pickup Country"
-msgstr "دولة الاستلام"
-
-msgid "Pickup Governate"
-msgstr "محافظة الاستلام"
-
-msgid "Pickup City"
-msgstr "مدينة الاستلام"
-
-msgid "Pickup Address (Street/Building)"
-msgstr "عنوان الاستلام (الشارع/المبنى)"
-
-msgid "Delivery Country"
-msgstr "دولة التوصيل"
-
-msgid "Delivery Governate"
-msgstr "محافظة التوصيل"
-
-msgid "Delivery City"
-msgstr "مدينة التوصيل"
-
-msgid "Delivery Address (Street/Building)"
-msgstr "عنوان التوصيل (الشارع/المبنى)"
-
-msgid "Street/Building"
-msgstr "الشارع/المبنى"
\ No newline at end of file
+#: core/views.py:206
+msgid "There was an error sending your message. Please try again later."
+msgstr "حدث خطأ أثناء إرسال رسالتك. يرجى المحاولة مرة أخرى لاحقاً."
\ No newline at end of file
diff --git a/media/platform_logos/masarxlogo2.jpg b/media/platform_logos/masarxlogo2.jpg
new file mode 100644
index 0000000..b64665f
Binary files /dev/null and b/media/platform_logos/masarxlogo2.jpg differ