Autosave: 20260125-113016

This commit is contained in:
Flatlogic Bot 2026-01-25 11:30:16 +00:00
parent f2a747c61a
commit 192b5d7408
13 changed files with 515 additions and 149 deletions

Binary file not shown.

View File

@ -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"))

38
core/mail.py Normal file
View File

@ -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

View File

@ -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%;
}
</style>
{% endif %}
@ -54,6 +63,9 @@
<li class="nav-item">
<a class="nav-link px-3" href="{% url 'index' %}#how-it-works">{% trans "How it Works" %}</a>
</li>
<li class="nav-item">
<a class="nav-link px-3" href="{% url 'contact' %}">{% trans "Contact" %}</a>
</li>
{% if user.is_authenticated %}
<li class="nav-item">
<a class="nav-link px-3" href="{% url 'dashboard' %}">{% trans "Dashboard" %}</a>
@ -162,9 +174,9 @@
{% if platform_profile.vat_number %}
<li class="mb-2">{% trans "VAT No:" %} {{ platform_profile.vat_number }}</li>
{% endif %}
{% if not platform_profile.address and not platform_profile.phone_number %}
<li class="mb-2">{% trans "Contact information pending." %}</li>
{% endif %}
<li class="mt-3">
<a href="{% url 'contact' %}" class="text-white text-decoration-underline">{% trans "Send us a message" %} <i class="bi bi-arrow-right-short"></i></a>
</li>
</ul>
</div>

View File

@ -0,0 +1,91 @@
{% extends 'base.html' %}
{% load i18n static %}
{% block title %}{% trans "Contact Us" %} | masarX{% endblock %}
{% block content %}
<section class="py-5 bg-light">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-8">
<div class="card shadow-sm border-0 rounded-3">
<div class="card-body p-4 p-md-5">
<div class="text-center mb-5">
<h2 class="fw-bold mb-2">{% trans "Contact Us" %}</h2>
<p class="text-muted">{% trans "We'd love to hear from you. Please fill out the form below." %}</p>
</div>
<form method="post">
{% csrf_token %}
{% if form.non_field_errors %}
<div class="alert alert-danger">
{% for error in form.non_field_errors %}
{{ error }}
{% endfor %}
</div>
{% endif %}
<div class="row mb-3">
<div class="col-md-6">
<label for="{{ form.name.id_for_label }}" class="form-label">{{ form.name.label }}</label>
{{ form.name }}
{% if form.name.errors %}
<div class="text-danger small">{{ form.name.errors.0 }}</div>
{% endif %}
</div>
<div class="col-md-6">
<label for="{{ form.email.id_for_label }}" class="form-label">{{ form.email.label }}</label>
{{ form.email }}
{% if form.email.errors %}
<div class="text-danger small">{{ form.email.errors.0 }}</div>
{% endif %}
</div>
</div>
<div class="mb-3">
<label for="{{ form.subject.id_for_label }}" class="form-label">{{ form.subject.label }}</label>
{{ form.subject }}
{% if form.subject.errors %}
<div class="text-danger small">{{ form.subject.errors.0 }}</div>
{% endif %}
</div>
<div class="mb-4">
<label for="{{ form.message.id_for_label }}" class="form-label">{{ form.message.label }}</label>
{{ form.message }}
{% if form.message.errors %}
<div class="text-danger small">{{ form.message.errors.0 }}</div>
{% endif %}
</div>
<div class="d-grid">
<button type="submit" class="btn btn-masarx-primary btn-lg">{% trans "Send Message" %}</button>
</div>
</form>
</div>
</div>
<!-- Additional Contact Info (Optional, if you want it visible on this page too) -->
{% if platform_profile %}
<div class="mt-5 text-center">
<h5 class="fw-bold mb-3">{% trans "Or reach us at" %}</h5>
<div class="d-flex justify-content-center gap-4 flex-wrap">
{% if platform_profile.phone_number %}
<div><i class="bi bi-telephone me-2 text-primary"></i>{{ platform_profile.phone_number }}</div>
{% endif %}
{% if platform_profile.email %}
<div><i class="bi bi-envelope me-2 text-primary"></i>{{ platform_profile.email }}</div>
{% endif %}
{% if platform_profile.address %}
<div><i class="bi bi-geo-alt me-2 text-primary"></i>{{ platform_profile.address }}</div>
{% endif %}
</div>
</div>
{% endif %}
</div>
</div>
</div>
</section>
{% endblock %}

View File

@ -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/<int:parcel_id>/', views.accept_parcel, name='accept_parcel'),
path('update-status/<int:parcel_id>/', views.update_status, name='update_status'),
path('article/', views.article_detail, name='article_detail'),
path('initiate-payment/<int:parcel_id>/', 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/<int:parcel_id>/', 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'),
]

View File

@ -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')
@ -188,3 +189,22 @@ def privacy_policy(request):
def terms_conditions(request):
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})

Binary file not shown.

View File

@ -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 "الشارع/المبنى"
#: core/views.py:206
msgid "There was an error sending your message. Please try again later."
msgstr "حدث خطأ أثناء إرسال رسالتك. يرجى المحاولة مرة أخرى لاحقاً."

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB