diff --git a/core/__pycache__/forms.cpython-311.pyc b/core/__pycache__/forms.cpython-311.pyc
index 024c109..4888ecb 100644
Binary files a/core/__pycache__/forms.cpython-311.pyc and b/core/__pycache__/forms.cpython-311.pyc differ
diff --git a/core/__pycache__/models.cpython-311.pyc b/core/__pycache__/models.cpython-311.pyc
index 20c32de..8c34d0d 100644
Binary files a/core/__pycache__/models.cpython-311.pyc and b/core/__pycache__/models.cpython-311.pyc differ
diff --git a/core/__pycache__/urls.cpython-311.pyc b/core/__pycache__/urls.cpython-311.pyc
index 93c31e0..6d08370 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 d8f0834..98b01de 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 60f9f9e..e7183fe 100644
--- a/core/forms.py
+++ b/core/forms.py
@@ -222,11 +222,13 @@ class ProfileForm(forms.ModelForm):
class Meta:
model = Profile
- fields = ['profile_picture', 'phone_number', 'country_code']
+ fields = ['profile_picture', 'phone_number', 'country_code', 'email_verified', 'phone_verified']
widgets = {
'profile_picture': forms.FileInput(attrs={'class': 'form-control'}),
'phone_number': forms.TextInput(attrs={'class': 'form-control'}),
'country_code': forms.Select(attrs={'class': 'form-select'}),
+ 'email_verified': forms.HiddenInput(),
+ 'phone_verified': forms.HiddenInput(),
}
def __init__(self, *args, **kwargs):
@@ -246,6 +248,15 @@ class ProfileForm(forms.ModelForm):
self.fields['last_name'].initial = user.last_name
self.fields['email'].initial = user.email
+ def clean(self):
+ cleaned_data = super().clean()
+ email_verified = cleaned_data.get('email_verified')
+ phone_verified = cleaned_data.get('phone_verified')
+
+ if not email_verified and not phone_verified:
+ raise forms.ValidationError(_("At least one contact method (Email or Phone) must be verified."))
+ return cleaned_data
+
def save(self, commit=True):
profile = super().save(commit=False)
user = profile.user
diff --git a/core/migrations/0029_profile_email_verified_profile_phone_verified.py b/core/migrations/0029_profile_email_verified_profile_phone_verified.py
new file mode 100644
index 0000000..09bf8f1
--- /dev/null
+++ b/core/migrations/0029_profile_email_verified_profile_phone_verified.py
@@ -0,0 +1,23 @@
+# Generated by Django 5.2.7 on 2026-01-25 03:08
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('core', '0028_profile_profile_picture'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='profile',
+ name='email_verified',
+ field=models.BooleanField(default=False),
+ ),
+ migrations.AddField(
+ model_name='profile',
+ name='phone_verified',
+ field=models.BooleanField(default=False),
+ ),
+ ]
diff --git a/core/migrations/__pycache__/0029_profile_email_verified_profile_phone_verified.cpython-311.pyc b/core/migrations/__pycache__/0029_profile_email_verified_profile_phone_verified.cpython-311.pyc
new file mode 100644
index 0000000..fff0bc2
Binary files /dev/null and b/core/migrations/__pycache__/0029_profile_email_verified_profile_phone_verified.cpython-311.pyc differ
diff --git a/core/models.py b/core/models.py
index 340a79c..b0a1ca4 100644
--- a/core/models.py
+++ b/core/models.py
@@ -68,6 +68,8 @@ class Profile(models.Model):
# New Profile Picture field
profile_picture = models.ImageField(_('Profile Picture'), upload_to='profiles/', blank=True, null=True)
+ email_verified = models.BooleanField(default=False)
+ phone_verified = models.BooleanField(default=False)
def is_expired(self):
if self.subscription_plan == "NONE":
diff --git a/core/templates/core/profile.html b/core/templates/core/profile.html
index f0546a3..d71260f 100644
--- a/core/templates/core/profile.html
+++ b/core/templates/core/profile.html
@@ -25,8 +25,10 @@
{% trans "Edit Profile" %}
+
+
+
+
{% endblock %}
+
+{% block extra_js %}
+
+{% endblock %}
\ No newline at end of file
diff --git a/core/urls.py b/core/urls.py
index 8beccbe..839422a 100644
--- a/core/urls.py
+++ b/core/urls.py
@@ -35,4 +35,6 @@ urlpatterns = [
path("admin/refund//", views.issue_refund, name="issue_refund"),
path("admin/settings/", views.admin_app_settings, name="admin_app_settings"),
path("api/chat/", views.chat_api, name="chat_api"),
+ path("profile/send-otp/", views.send_otp_profile, name="send_otp_profile"),
+ path("profile/verify-otp/", views.verify_otp_profile, name="verify_otp_profile"),
]
\ No newline at end of file
diff --git a/core/views.py b/core/views.py
index 5b4f166..6c957c0 100644
--- a/core/views.py
+++ b/core/views.py
@@ -877,4 +877,65 @@ def chat_api(request):
except Exception as e:
logger.error(f"Chat API Error: {str(e)}")
- return JsonResponse({'success': False, 'error': str(e)})
\ No newline at end of file
+ return JsonResponse({'success': False, 'error': str(e)})
+@login_required
+@csrf_exempt
+def send_otp_profile(request):
+ if request.method != 'POST':
+ return JsonResponse({'success': False, 'error': 'Method not allowed'}, status=405)
+
+ try:
+ data = json.loads(request.body)
+ method = data.get('method') # 'email' or 'phone'
+ value = data.get('value')
+
+ if method == 'email':
+ otp = OTPCode.generate_code(email=value)
+ if send_otp_email(value, otp.code):
+ return JsonResponse({'success': True})
+ else:
+ return JsonResponse({'success': False, 'error': _('Failed to send email')})
+ elif method == 'phone':
+ country_code = data.get('country_code', '966')
+ full_phone = f"{country_code}{value}"
+ otp = OTPCode.generate_code(phone_number=full_phone)
+ msg = _("Your verification code is: %(code)s") % {"code": otp.code}
+ if send_whatsapp_message(full_phone, msg):
+ return JsonResponse({'success': True})
+ else:
+ return JsonResponse({'success': False, 'error': _('Failed to send WhatsApp message')})
+
+ return JsonResponse({'success': False, 'error': 'Invalid method'})
+ except Exception as e:
+ return JsonResponse({'success': False, 'error': str(e)})
+
+@login_required
+@csrf_exempt
+def verify_otp_profile(request):
+ if request.method != 'POST':
+ return JsonResponse({'success': False, 'error': 'Method not allowed'}, status=405)
+
+ try:
+ data = json.loads(request.body)
+ method = data.get('method')
+ value = data.get('value')
+ code = data.get('code')
+
+ if method == 'email':
+ otp_record = OTPCode.objects.filter(email=value, code=code, is_used=False).last()
+ elif method == 'phone':
+ country_code = data.get('country_code', '966')
+ full_phone = f"{country_code}{value}"
+ otp_record = OTPCode.objects.filter(phone_number=full_phone, code=code, is_used=False).last()
+ else:
+ return JsonResponse({'success': False, 'error': 'Invalid method'})
+
+ if otp_record and otp_record.is_valid():
+ otp_record.is_used = True
+ otp_record.save()
+ return JsonResponse({'success': True})
+ else:
+ return JsonResponse({'success': False, 'error': _('Invalid or expired code')})
+
+ except Exception as e:
+ return JsonResponse({'success': False, 'error': str(e)})
diff --git a/locale/ar/LC_MESSAGES/django.mo b/locale/ar/LC_MESSAGES/django.mo
index 75f7c17..53b09cd 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 cd68268..43d9e7e 100644
--- a/locale/ar/LC_MESSAGES/django.po
+++ b/locale/ar/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-01-24 09:20+0000\n"
+"POT-Creation-Date: 2026-01-25 03:08+0000\n"
"PO-Revision-Date: 2026-01-23 10:45+0000\n"
"Last-Translator: Gemini\n"
"Language-Team: Arabic\n"
@@ -10,7 +10,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"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"
+"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"
#: config/settings.py:198
msgid "English"
@@ -115,7 +116,9 @@ msgstr "تم نشر الشحنة بنجاح!"
#: core/admin.py:157
msgid "Failed to send test message. Check your API credentials and logs."
-msgstr "فشل إرسال رسالة الاختبار. تحقق من بيانات اعتماد واجهة برمجة التطبيقات والسجلات."
+msgstr ""
+"فشل إرسال رسالة الاختبار. تحقق من بيانات اعتماد واجهة برمجة التطبيقات "
+"والسجلات."
#: core/admin.py:162
msgid "Send Test WhatsApp Message"
@@ -155,114 +158,147 @@ msgstr "شهري"
msgid "Annual"
msgstr "سنوي"
-#: core/forms.py:13 core/forms.py:167
+#: core/forms.py:13 core/forms.py:168
msgid "Subscription Plan"
msgstr "خطة الاشتراك"
-#: core/forms.py:14
+#: core/forms.py:14 core/forms.py:206
+msgid "WhatsApp"
+msgstr "واتساب"
+
+#: core/forms.py:14 core/forms.py:206 core/models.py:520
+#: core/templates/core/contact.html:36 core/templates/core/profile.html:62
+msgid "Email"
+msgstr "البريد الإلكتروني"
+
+#: core/forms.py:14 core/forms.py:209
+msgid "Receive verification code via"
+msgstr "استلام رمز التحقق عبر"
+
+#: core/forms.py:15
msgid "I have read and agree to the Terms and Conditions and Privacy Policy"
msgstr "لقد قرأت وأوافق على الشروط والأحكام وسياسة الخصوصية"
-#: core/forms.py:38 core/forms.py:165
-#: core/templates/registration/register.html:109
+#: core/forms.py:39 core/forms.py:166
+#: core/templates/registration/register.html:131
msgid "Monthly Plan"
msgstr "الخطة الشهرية"
-#: core/forms.py:39 core/forms.py:165
-#: core/templates/registration/register.html:110
+#: core/forms.py:40 core/forms.py:166
+#: core/templates/registration/register.html:132
msgid "Annual Plan"
msgstr "الخطة السنوية"
-#: core/forms.py:52
+#: core/forms.py:53
msgid "This email is already in use."
msgstr "هذا البريد الإلكتروني مستخدم بالفعل."
-#: core/forms.py:60
+#: core/forms.py:61
msgid "This phone number is already in use."
msgstr "رقم الهاتف هذا مستخدم بالفعل."
-#: core/forms.py:69
+#: core/forms.py:70
msgid "The two email fields didn't match."
msgstr "حقلا البريد الإلكتروني غير متطابقين."
-#: core/forms.py:74
+#: core/forms.py:75
msgid "OTP Code"
msgstr "رمز التحقق"
-#: core/forms.py:104 core/forms.py:128 core/models.py:44
+#: core/forms.py:105 core/forms.py:129 core/models.py:44
#: core/templates/core/post_shipment.html:65
#: core/templates/core/truck_register.html:58
msgid "Truck Type"
msgstr "نوع الشاحنة"
-#: core/forms.py:147
+#: core/forms.py:148
msgid "You must have an approved truck to place a bid."
msgstr "يجب أن يكون لديك شاحنة معتمدة لتقديم عرض."
-#: core/forms.py:150 core/models.py:230
+#: core/forms.py:151 core/models.py:268
#: core/templates/core/post_shipment.html:53
msgid "Goods Description"
msgstr "وصف البضائع"
-#: core/forms.py:151 core/models.py:231
+#: core/forms.py:152 core/models.py:269
#: core/templates/core/post_shipment.html:60
msgid "Weight/Volume"
msgstr "الوزن/الحجم"
-#: core/forms.py:152 core/models.py:234
+#: core/forms.py:153 core/models.py:272
#: core/templates/core/shipment_detail.html:45
msgid "Required Truck Type"
msgstr "نوع الشاحنة"
-#: core/forms.py:159 core/models.py:244
+#: core/forms.py:160 core/models.py:282
#: core/templates/core/shipment_detail.html:55
msgid "Requested Delivery Date"
msgstr "تاريخ التسليم المطلوب"
-#: core/forms.py:160 core/models.py:275
+#: core/forms.py:161 core/models.py:313
#: core/templates/core/truck_owner_dashboard.html:73
msgid "Offer Amount"
msgstr "قيمة العرض"
-#: core/forms.py:161 core/models.py:276
+#: core/forms.py:162 core/models.py:314
msgid "Comments"
msgstr "تعليقات"
-#: core/forms.py:197 core/templates/core/contact.html:62
+#: core/forms.py:198 core/templates/core/contact.html:62
msgid "Your Name"
msgstr "الإسم بالكامل"
-#: core/forms.py:198
+#: core/forms.py:199
#, fuzzy
#| msgid "Confirm Email"
msgid "Your Email"
msgstr "تأكيد البريد الإلكتروني"
-#: core/forms.py:199 core/models.py:483 core/templates/core/contact.html:76
+#: core/forms.py:200 core/models.py:521 core/templates/core/contact.html:76
msgid "Subject"
msgstr "الموضوع"
-#: core/forms.py:200
+#: core/forms.py:201
#, fuzzy
#| msgid "Message"
msgid "Your Message"
msgstr "الرسالة"
+#: core/mail.py:12
+#, fuzzy
+#| msgid "Your verification code for MASAR CARGO is: %(code)s"
+msgid "Your verification code for MASAR CARGO"
+msgstr "رمز التحقق الخاص بك لـ MASAR CARGO هو: %(code)s"
+
+#: core/mail.py:13 core/views.py:98
+#, python-format
+msgid "Your verification code for MASAR CARGO is: %(code)s"
+msgstr "رمز التحقق الخاص بك لـ MASAR CARGO هو: %(code)s"
+
+#: core/mail.py:29
+#, python-format
+msgid "New contact message from %(name)s"
+msgstr ""
+
#: core/management/commands/check_subscriptions.py:28
#, python-format
-msgid "Hello %(user)s, your MASAR CARGO subscription (%(plan)s) will expire in %(days)s days on %(date)s. Please renew to avoid account suspension."
+msgid ""
+"Hello %(user)s, your MASAR CARGO subscription (%(plan)s) will expire in "
+"%(days)s days on %(date)s. Please renew to avoid account suspension."
msgstr ""
#: core/management/commands/check_subscriptions.py:49
#, python-format
-msgid "Hello %(user)s, your MASAR CARGO subscription has EXPIRED today. Your account is now suspended. Please contact support to renew."
+msgid ""
+"Hello %(user)s, your MASAR CARGO subscription has EXPIRED today. Your "
+"account is now suspended. Please contact support to renew."
msgstr ""
#: core/models.py:16
msgid "Country Name"
msgstr "اسم الدولة"
-#: core/models.py:17
+#: core/models.py:17 core/templates/core/profile.html:82
msgid "Country Code"
msgstr "رمز الدولة"
@@ -318,441 +354,444 @@ msgstr "مدير النظام"
msgid "None"
msgstr "لا يوجد"
-#: core/models.py:114
+#: core/models.py:70 core/templates/core/profile.html:109
+msgid "Profile Picture"
+msgstr "صورة الملف الشخصي"
+
+#: core/models.py:152
msgid "Truck Type (New)"
msgstr "نوع الشاحنة (بالإنجليزية)"
-#: core/models.py:117
+#: core/models.py:155
msgid "Truck Type (EN)"
msgstr "نوع الشاحنة (بالإنجليزية)"
-#: core/models.py:118
+#: core/models.py:156
msgid "Model (EN)"
msgstr "الموديل (بالإنجليزية)"
-#: core/models.py:119
+#: core/models.py:157
msgid "Load Capacity (EN)"
msgstr "الحمولة (بالإنجليزية)"
-#: core/models.py:120
+#: core/models.py:158
msgid "Color (EN)"
msgstr "اللون (بالإنجليزية)"
-#: core/models.py:123
+#: core/models.py:161
msgid "Truck Type (AR)"
msgstr "نوع الشاحنة"
-#: core/models.py:124 core/templates/core/truck_register.html:89
+#: core/models.py:162 core/templates/core/truck_register.html:89
msgid "Model (AR)"
msgstr "الموديل"
-#: core/models.py:125 core/templates/core/truck_register.html:94
+#: core/models.py:163 core/templates/core/truck_register.html:94
msgid "Load Capacity (AR)"
msgstr "الحمولة"
-#: core/models.py:126 core/templates/core/truck_register.html:99
+#: core/models.py:164 core/templates/core/truck_register.html:99
msgid "Color (AR)"
msgstr "اللون"
-#: core/models.py:128 core/templates/core/admin_dashboard.html:222
+#: core/models.py:166 core/templates/core/admin_dashboard.html:222
#: core/templates/core/marketplace.html:48
#: core/templates/core/truck_register.html:110
msgid "Year"
msgstr "السنة"
-#: core/models.py:129 core/templates/core/admin_dashboard.html:94
+#: core/models.py:167 core/templates/core/admin_dashboard.html:94
#: core/templates/core/admin_dashboard.html:153
#: core/templates/core/admin_dashboard.html:226
#: core/templates/core/truck_register.html:115
msgid "Plate No"
msgstr "رقم اللوحة"
-#: core/models.py:130 core/templates/core/truck_register.html:120
+#: core/models.py:168 core/templates/core/truck_register.html:120
msgid "Registration Expiry Date"
msgstr "تاريخ انتهاء الاستمارة"
-#: core/models.py:133 core/templates/core/truck_register.html:132
+#: core/models.py:171 core/templates/core/truck_register.html:132
msgid "Truck Picture"
msgstr "صورة الشاحنة"
-#: core/models.py:134 core/templates/core/admin_dashboard.html:259
+#: core/models.py:172 core/templates/core/admin_dashboard.html:259
#: core/templates/core/truck_register.html:184
msgid "Registration (Front Face)"
msgstr "واجهة استمارة السيارة"
-#: core/models.py:135 core/templates/core/admin_dashboard.html:268
+#: core/models.py:173 core/templates/core/admin_dashboard.html:268
#: core/templates/core/truck_register.html:202
msgid "Registration (Back Face)"
msgstr "خلفية استمارة السيارة"
-#: core/models.py:136 core/templates/core/admin_dashboard.html:277
+#: core/models.py:174 core/templates/core/admin_dashboard.html:277
#: core/templates/core/truck_register.html:145
msgid "Driver License (Front Face)"
msgstr "واجهة رخصة القيادة"
-#: core/models.py:137 core/templates/core/admin_dashboard.html:286
+#: core/models.py:175 core/templates/core/admin_dashboard.html:286
#: core/templates/core/truck_register.html:163
msgid "Driver License (Back Face)"
msgstr "خلفية رخصة القيادة"
-#: core/models.py:139
+#: core/models.py:177
msgid "Is Approved"
msgstr "معتمد"
-#: core/models.py:224
+#: core/models.py:262
msgid "Open for Bids"
msgstr "مفتوح للعروض"
-#: core/models.py:225
+#: core/models.py:263
msgid "In Progress"
msgstr "قيد التنفيذ"
-#: core/models.py:226 core/models.py:446
+#: core/models.py:264 core/models.py:484
msgid "Completed"
msgstr "مكتمل"
-#: core/models.py:227 core/models.py:448
+#: core/models.py:265 core/models.py:486
msgid "Cancelled"
msgstr "ملغي"
-#: core/models.py:241
+#: core/models.py:279
msgid "Origin (Legacy)"
msgstr "المصدر (قديم)"
-#: core/models.py:242
+#: core/models.py:280
msgid "Destination (Legacy)"
msgstr "الوجهة"
-#: core/models.py:268 core/models.py:445
+#: core/models.py:306 core/models.py:483
#: core/templates/core/shipper_dashboard.html:98
#: core/templates/core/truck_owner_dashboard.html:90
#: core/templates/core/truck_owner_dashboard.html:156
msgid "Pending"
msgstr "قيد الانتظار"
-#: core/models.py:269 core/templates/core/shipper_dashboard.html:100
+#: core/models.py:307 core/templates/core/shipper_dashboard.html:100
#: core/templates/core/truck_owner_dashboard.html:92
msgid "Accepted"
msgstr "مقبول"
-#: core/models.py:270 core/templates/core/shipper_dashboard.html:102
+#: core/models.py:308 core/templates/core/shipper_dashboard.html:102
#: core/templates/core/truck_owner_dashboard.html:94
msgid "Rejected"
msgstr "مرفوض"
-#: core/models.py:294
+#: core/models.py:332
msgid "Wablas API Token"
msgstr "رمز Wablas API"
-#: core/models.py:295
+#: core/models.py:333
msgid "Wablas Secret Key"
msgstr "مفتاح Wablas السري"
-#: core/models.py:296 core/models.py:342 core/models.py:380 core/models.py:505
+#: core/models.py:334 core/models.py:380 core/models.py:418 core/models.py:543
msgid "Is Active"
msgstr "نشط"
-#: core/models.py:297
+#: core/models.py:335
msgid "Admin Notification Phone"
msgstr "رقم هاتف إشعارات المسؤول"
-#: core/models.py:297
-msgid "WhatsApp number to receive admin notifications (with country code, e.g., 96812345678)"
-msgstr "رقم الواتساب لاستلام إشعارات المسؤول (مع رمز الدولة، مثال: 96812345678)"
+#: core/models.py:335
+msgid ""
+"WhatsApp number to receive admin notifications (with country code, e.g., "
+"96812345678)"
+msgstr ""
+"رقم الواتساب لاستلام إشعارات المسؤول (مع رمز الدولة، مثال: 96812345678)"
-#: core/models.py:300 core/models.py:301 core/models.py:304
+#: core/models.py:338 core/models.py:339 core/models.py:342
msgid "WhatsApp Configuration"
msgstr "تكامل واتساب"
-#: core/models.py:307
+#: core/models.py:345
msgid "App Name"
msgstr "اسم التطبيق"
-#: core/models.py:308
+#: core/models.py:346
msgid "Logo"
msgstr "الشعار"
-#: core/models.py:309
+#: core/models.py:347
msgid "Slogan"
msgstr "الشعار اللفظي"
-#: core/models.py:310
+#: core/models.py:348
msgid "Registration Number"
msgstr "رقم السجل التجاري"
-#: core/models.py:311
+#: core/models.py:349
msgid "Tax Number"
msgstr "الرقم الضريبي"
-#: core/models.py:312
+#: core/models.py:350
msgid "Contact Phone"
msgstr "هاتف التواصل"
-#: core/models.py:313
+#: core/models.py:351
msgid "Contact Email"
msgstr "بريد التواصل"
-#: core/models.py:314
+#: core/models.py:352
msgid "Contact Address"
msgstr "عنوان التواصل"
-#: core/models.py:315 core/templates/base.html:161
-#: core/templates/registration/register.html:67 core/views.py:484
+#: core/models.py:353 core/templates/base.html:180
+#: core/templates/registration/register.html:89 core/views.py:535
msgid "Terms of Service"
msgstr "شروط الخدمة"
-#: core/models.py:316 core/templates/base.html:160
-#: core/templates/registration/register.html:69 core/views.py:474
+#: core/models.py:354 core/templates/base.html:179
+#: core/templates/registration/register.html:91 core/views.py:525
msgid "Privacy Policy"
msgstr "سياسة الخصوصية"
-#: core/models.py:317
+#: core/models.py:355
msgid "Enable Subscription Fee"
msgstr "تفعيل رسوم الاشتراك"
-#: core/models.py:318
+#: core/models.py:356
msgid "Enable Thawani Payment"
msgstr "تفعيل دفع ثواني"
-#: core/models.py:321
+#: core/models.py:359
msgid "Shipper Monthly Fee"
msgstr "رسوم الشاحن الشهرية"
-#: core/models.py:322
+#: core/models.py:360
msgid "Shipper Annual Fee"
msgstr "رسوم الشاحن السنوية"
-#: core/models.py:325
+#: core/models.py:363
msgid "Truck Owner Monthly Fee"
msgstr "رسوم صاحب الشاحنة الشهرية"
-#: core/models.py:326
+#: core/models.py:364
msgid "Truck Owner Annual Fee"
msgstr "رسوم صاحب الشاحنة السنوية"
-#: core/models.py:329
+#: core/models.py:367
msgid "App Setting"
msgstr "إعداد التطبيق"
-#: core/models.py:330
+#: core/models.py:368
msgid "App Settings"
msgstr "إعدادات التطبيق"
-#: core/models.py:336 core/models.py:372
+#: core/models.py:374 core/models.py:410
msgid "Title (EN)"
msgstr "العنوان (بالإنجليزية)"
-#: core/models.py:337 core/models.py:373
+#: core/models.py:375 core/models.py:411
msgid "Title (AR)"
msgstr "العنوان (بالعربية)"
-#: core/models.py:338 core/models.py:374
+#: core/models.py:376 core/models.py:412
msgid "Subtitle (EN)"
msgstr "العنوان الفرعي (بالإنجليزية)"
-#: core/models.py:339 core/models.py:375
+#: core/models.py:377 core/models.py:413
msgid "Subtitle (AR)"
msgstr "العنوان الفرعي (بالعربية)"
-#: core/models.py:340
+#: core/models.py:378
msgid "Banner Image"
msgstr "صورة البانر"
-#: core/models.py:341
+#: core/models.py:379
msgid "Link URL"
msgstr "رابط"
-#: core/models.py:341
+#: core/models.py:379
msgid "Internal or external URL"
msgstr "رابط داخلي أو خارجي"
-#: core/models.py:343 core/models.py:379 core/models.py:506
+#: core/models.py:381 core/models.py:417 core/models.py:544
msgid "Order"
msgstr "الترتيب"
-#: core/models.py:347
+#: core/models.py:385
msgid "Banner"
msgstr "بانر"
-#: core/models.py:348
+#: core/models.py:386
msgid "Banners"
msgstr "البانرات"
-#: core/models.py:368
+#: core/models.py:406
msgid "Simple Text & Image"
msgstr "نص بسيط وصورة"
-#: core/models.py:369
+#: core/models.py:407
msgid "Features List"
msgstr "قائمة المميزات"
-#: core/models.py:370
+#: core/models.py:408
msgid "Call to Action"
msgstr "دعوة لاتخاذ إجراء"
-#: core/models.py:376
+#: core/models.py:414
msgid "Content (EN)"
msgstr "المحتوى (بالإنجليزية)"
-#: core/models.py:377
+#: core/models.py:415
msgid "Content (AR)"
msgstr "المحتوى (بالعربية)"
-#: core/models.py:378
+#: core/models.py:416
msgid "Image"
msgstr "صورة"
-#: core/models.py:385
+#: core/models.py:423
msgid "Home Section"
msgstr "قسم في الصفحة الرئيسية"
-#: core/models.py:386
+#: core/models.py:424
msgid "Home Sections"
msgstr "أقسام الصفحة الرئيسية"
-#: core/models.py:441 core/templates/core/financial_history.html:37
+#: core/models.py:479 core/templates/core/financial_history.html:37
msgid "Payment"
msgstr "دفع"
-#: core/models.py:442 core/templates/core/financial_history.html:39
+#: core/models.py:480 core/templates/core/financial_history.html:39
msgid "Refund"
msgstr "استرداد"
-#: core/models.py:447
+#: core/models.py:485
msgid "Failed"
msgstr "فشل"
-#: core/models.py:451 core/templates/core/admin_financials.html:30
+#: core/models.py:489 core/templates/core/admin_financials.html:30
#: core/templates/core/financial_history.html:24
#: core/templates/core/shipment_detail.html:73
#: core/templates/core/shipper_dashboard.html:76
msgid "Amount"
msgstr "المبلغ"
-#: core/models.py:454 core/templates/core/financial_history.html:22
+#: core/models.py:492 core/templates/core/financial_history.html:22
#: core/templates/core/receipt.html:48
#: core/templates/core/shipper_dashboard.html:134
msgid "Description"
msgstr "الوصف"
-#: core/models.py:455 core/templates/core/receipt.html:39
+#: core/models.py:493 core/templates/core/receipt.html:39
msgid "Payment Method"
msgstr "طريقة الدفع"
-#: core/models.py:456
+#: core/models.py:494
#, fuzzy
#| msgid "Phone Number"
msgid "Reference Number"
msgstr "رقم الهاتف"
-#: core/models.py:457
+#: core/models.py:495
#, fuzzy
#| msgid "Registration Number"
msgid "Receipt Number"
msgstr "رقم السجل التجاري"
-#: core/models.py:458
+#: core/models.py:496
msgid "Session ID"
msgstr "معرف الجلسة"
-#: core/models.py:459
+#: core/models.py:497
#, fuzzy
#| msgid "Status"
msgid "Payment Status"
msgstr "الحالة"
-#: core/models.py:465
+#: core/models.py:503
msgid "Transaction"
msgstr "معاملة"
-#: core/models.py:466
+#: core/models.py:504
#, fuzzy
#| msgid "Actions"
msgid "Transactions"
msgstr "الإجراءات"
-#: core/models.py:481
+#: core/models.py:519
#, fuzzy
#| msgid "App Name"
msgid "Name"
msgstr "اسم التطبيق"
-#: core/models.py:482 core/templates/core/contact.html:36
-msgid "Email"
-msgstr "البريد الإلكتروني"
-
-#: core/models.py:484 core/templates/admin/core/whatsapp_test.html:28
+#: core/models.py:522 core/templates/admin/core/whatsapp_test.html:28
#: core/templates/core/contact.html:83
msgid "Message"
msgstr "الرسالة"
-#: core/models.py:489
+#: core/models.py:527
#, fuzzy
#| msgid "Contact Address"
msgid "Contact Message"
msgstr "عنوان التواصل"
-#: core/models.py:490
+#: core/models.py:528
#, fuzzy
#| msgid "Contact Address"
msgid "Contact Messages"
msgstr "عنوان التواصل"
-#: core/models.py:497
+#: core/models.py:535
#, fuzzy
#| msgid "Name (EN)"
msgid "Customer Name (EN)"
msgstr "الموديل (بالإنجليزية)"
-#: core/models.py:498
+#: core/models.py:536
#, fuzzy
#| msgid "Name (AR)"
msgid "Customer Name (AR)"
msgstr "الموديل"
-#: core/models.py:499
+#: core/models.py:537
msgid "Customer Role (EN)"
msgstr "وظيفة العميل (EN)"
-#: core/models.py:500
+#: core/models.py:538
msgid "Customer Role (AR)"
msgstr "وظيفة العميل (AR)"
-#: core/models.py:501
+#: core/models.py:539
#, fuzzy
#| msgid "Details"
msgid "Testimony (EN)"
msgstr "التفاصيل"
-#: core/models.py:502
+#: core/models.py:540
#, fuzzy
#| msgid "Details"
msgid "Testimony (AR)"
msgstr "التفاصيل"
-#: core/models.py:503
+#: core/models.py:541
msgid "Rating (1-5)"
msgstr "التقييم (1-5)"
-#: core/models.py:504
+#: core/models.py:542
#, fuzzy
#| msgid "Banner Image"
msgid "Customer Image"
msgstr "صورة البانر"
-#: core/models.py:510
+#: core/models.py:548
msgid "Testimonial"
msgstr "شهادة عميل"
-#: core/models.py:511
+#: core/models.py:549
msgid "Testimonials"
msgstr "شهادات العملاء"
-#: core/templates/admin/core/whatsapp_test.html:6 core/templates/base.html:57
+#: core/templates/admin/core/whatsapp_test.html:6 core/templates/base.html:61
#: core/templates/core/admin_dashboard.html:11
#: core/templates/core/article_detail.html:11
#: core/templates/core/marketplace.html:10 core/templates/core/place_bid.html:9
-#: core/templates/core/post_shipment.html:9
+#: core/templates/core/post_shipment.html:9 core/templates/core/profile.html:11
#: core/templates/core/shipment_detail.html:9
#: core/templates/core/shipper_dashboard.html:9
#: core/templates/core/truck_owner_dashboard.html:10
@@ -783,11 +822,11 @@ msgid "Send Message"
msgstr "إرسال الرسالة"
#: core/templates/admin/core/whatsapp_test.html:35
-#: core/templates/core/place_bid.html:147
+#: core/templates/core/place_bid.html:147 core/templates/core/profile.html:176
msgid "Cancel"
msgstr "إلغاء"
-#: core/templates/base.html:61 core/templates/core/marketplace.html:11
+#: core/templates/base.html:65 core/templates/core/marketplace.html:11
#: core/templates/core/place_bid.html:10
#: core/templates/core/post_shipment.html:10
#: core/templates/core/shipment_detail.html:10
@@ -797,54 +836,75 @@ msgstr "إلغاء"
msgid "Dashboard"
msgstr "لوحة التحكم"
-#: core/templates/base.html:65 core/templates/core/marketplace.html:12
+#: core/templates/base.html:69 core/templates/core/marketplace.html:12
#: core/templates/core/place_bid.html:11
msgid "Marketplace"
msgstr "السوق"
-#: core/templates/base.html:70 core/templates/base.html:166
+#: core/templates/base.html:74 core/templates/base.html:185
msgid "Contact"
msgstr "اتصال"
-#: core/templates/base.html:105
+#: core/templates/base.html:114 core/templates/core/profile.html:4
+#: core/templates/core/profile.html:12
+msgid "My Profile"
+msgstr "ملفي الشخصي"
+
+#: core/templates/base.html:120
msgid "Admin Panel"
msgstr "لوحة التحكم"
-#: core/templates/base.html:111
+#: core/templates/base.html:129
#: core/templates/core/subscription_expired.html:73
msgid "Logout"
msgstr "تسجيل الخروج"
-#: core/templates/base.html:118 core/templates/registration/login.html:16
-#: core/templates/registration/login.html:27
-#: core/templates/registration/register.html:96
+#: core/templates/base.html:137 core/templates/registration/login.html:16
+#: core/templates/registration/login.html:55
+#: core/templates/registration/register.html:118
msgid "Login"
msgstr "تسجيل الدخول"
-#: core/templates/base.html:121 core/templates/core/index.html:109
+#: core/templates/base.html:140 core/templates/core/index.html:267
msgid "Get Started"
msgstr "ابدأ الآن"
-#: core/templates/base.html:154
+#: core/templates/base.html:173
msgid "Empowering logistics with smart technology. Locally and abroad."
msgstr "تمكين الخدمات اللوجستية بتقنيات ذكية. محلياً ودولياً."
-#: core/templates/base.html:158
+#: core/templates/base.html:177
msgid "Quick Links"
msgstr "روابط سريعة"
-#: core/templates/base.html:162
+#: core/templates/base.html:181
msgid "Contact Us"
msgstr "اتصل بنا"
-#: core/templates/base.html:176
+#: core/templates/base.html:195
msgid "CR No:"
msgstr "رقم السجل التجاري:"
-#: core/templates/base.html:179
+#: core/templates/base.html:198
msgid "VAT No:"
msgstr "الرقم الضريبي:"
+#: core/templates/base.html:209
+msgid "Chat with MASAR AI"
+msgstr "تحدث مع مسار الذكي"
+
+#: core/templates/base.html:220
+msgid "Hello! I am MASAR, your AI assistant. How can I help you today?"
+msgstr "أهلاً بك! أنا مسار، مساعدك الذكي. كيف يمكنني مساعدتك اليوم؟"
+
+#: core/templates/base.html:224
+msgid "Type a message..."
+msgstr "اكتب رسالة..."
+
+#: core/templates/base.html:231
+msgid "Talk to a Human"
+msgstr "تحدث مع شخص حقيقي"
+
#: core/templates/core/admin_dashboard.html:4
#: core/templates/core/admin_dashboard.html:12
msgid "Admin Dashboard"
@@ -1072,6 +1132,7 @@ msgid "User"
msgstr "اسم المستخدم"
#: core/templates/core/admin_financials.html:27
+#: core/templates/core/profile.html:137
msgid "Role"
msgstr "الدور"
@@ -1123,6 +1184,7 @@ msgstr "إصدار استرداد"
#: core/templates/core/financial_history.html:9
#: core/templates/core/marketplace.html:23
#: core/templates/core/post_shipment.html:22
+#: core/templates/core/profile.html:120
#: core/templates/core/shipment_detail.html:22
#: core/templates/core/truck_register.html:29
msgid "Back to Dashboard"
@@ -1175,8 +1237,12 @@ msgid "Get in Touch"
msgstr "اتصل بنا"
#: core/templates/core/contact.html:13
-msgid "Have questions about our services or need assistance? Fill out the form and our team will get back to you shortly."
-msgstr "لديك أسئلة حول خدماتنا أو تحتاج إلى مساعدة؟ املأ النموذج وسيقوم فريقنا بالرد عليك قريباً."
+msgid ""
+"Have questions about our services or need assistance? Fill out the form and "
+"our team will get back to you shortly."
+msgstr ""
+"لديك أسئلة حول خدماتنا أو تحتاج إلى مساعدة؟ املأ النموذج وسيقوم فريقنا بالرد "
+"عليك قريباً."
#: core/templates/core/contact.html:24
msgid "Phone"
@@ -1207,131 +1273,143 @@ msgstr "إيصال"
msgid "No transactions found."
msgstr "لم يتم العثور على معاملات."
-#: core/templates/core/index.html:24 core/templates/core/index.html:33
-#: core/templates/core/index.html:68
+#: core/templates/core/index.html:120 core/templates/core/index.html:128
+#: core/templates/core/index.html:226
msgid "Learn More"
msgstr "تعلم المزيد"
-#: core/templates/core/index.html:60
+#: core/templates/core/index.html:218
msgid "Smart Cargo Solutions"
msgstr "حلول شحن ذكية"
-#: core/templates/core/index.html:61
+#: core/templates/core/index.html:219
msgid "Locally & Abroad"
msgstr "محلياً ودولياً"
-#: core/templates/core/index.html:64
-msgid "The most reliable platform connecting shippers with truck owners across the region. Transparent, fast, and secure."
-msgstr "المنصة الأكثر موثوقية لربط الشاحنين مع أسطول الشاحنات في جميع أنحاء المنطقة. شفافة، سريعة، وآمنة."
+#: core/templates/core/index.html:222
+msgid ""
+"The most reliable platform connecting shippers with truck owners across the "
+"region. Transparent, fast, and secure."
+msgstr ""
+"المنصة الأكثر موثوقية لربط الشاحنين مع أسطول الشاحنات في جميع أنحاء المنطقة. "
+"شفافة، سريعة، وآمنة."
-#: core/templates/core/index.html:67
+#: core/templates/core/index.html:225
msgid "Start Shipping"
msgstr "ابدأ الشحن"
-#: core/templates/core/index.html:128
+#: core/templates/core/index.html:286
msgid "How would you like to use MASAR?"
msgstr "كيف تود استخدام مسار؟"
-#: core/templates/core/index.html:129
+#: core/templates/core/index.html:287
msgid "Choose your path to get started with our platform."
msgstr "اختر مسارك للبدء مع منصتنا."
-#: core/templates/core/index.html:138
+#: core/templates/core/index.html:296
msgid "I am a Shipper"
msgstr "أنا شاحن"
-#: core/templates/core/index.html:140
-msgid "I need to move goods locally or abroad. Post your shipment, receive offers from verified drivers, and track your cargo in real-time."
-msgstr "أريد نقل بضائع محلياً أو دولياً. انشر شحنتك، واستقبل عروضاً من سائقين موثقين، وتتبع شحنتك في الوقت الفعلي."
+#: core/templates/core/index.html:298
+msgid ""
+"I need to move goods locally or abroad. Post your shipment, receive offers "
+"from verified drivers, and track your cargo in real-time."
+msgstr ""
+"أريد نقل بضائع محلياً أو دولياً. انشر شحنتك، واستقبل عروضاً من سائقين موثقين، "
+"وتتبع شحنتك في الوقت الفعلي."
-#: core/templates/core/index.html:143
+#: core/templates/core/index.html:301
msgid "Post shipments easily"
msgstr "انشر الشحنات بسهولة"
-#: core/templates/core/index.html:144
+#: core/templates/core/index.html:302
msgid "Compare competitive bids"
msgstr "قارن العروض التنافسية"
-#: core/templates/core/index.html:145
+#: core/templates/core/index.html:303
msgid "Real-time tracking"
msgstr "تتبع في الوقت الفعلي"
-#: core/templates/core/index.html:147
+#: core/templates/core/index.html:305
#: core/templates/core/shipper_dashboard.html:114
msgid "Find a Truck"
msgstr "ابحث عن شاحنة"
-#: core/templates/core/index.html:156
+#: core/templates/core/index.html:314
msgid "I am a Truck Owner"
msgstr "أنا صاحب شاحنة"
-#: core/templates/core/index.html:158
-msgid "I have trucks and want to find cargo to transport. Register your fleet, bid on available jobs, and grow your business."
-msgstr "لدي شاحنات وأريد العثور على بضائع لنقلها. سجل أسطولك، وقدم عروضك على الوظائف المتاحة، ونمِ عملك."
+#: core/templates/core/index.html:316
+msgid ""
+"I have trucks and want to find cargo to transport. Register your fleet, bid "
+"on available jobs, and grow your business."
+msgstr ""
+"لدي شاحنات وأريد العثور على بضائع لنقلها. سجل أسطولك، وقدم عروضك على الوظائف "
+"المتاحة، ونمِ عملك."
-#: core/templates/core/index.html:161
+#: core/templates/core/index.html:319
msgid "Access daily cargo leads"
msgstr "الوصول إلى فرص شحن يومية"
-#: core/templates/core/index.html:162
+#: core/templates/core/index.html:320
msgid "Flexible bidding system"
msgstr "نظام عروض مرن"
-#: core/templates/core/index.html:163
+#: core/templates/core/index.html:321
msgid "Direct chat with shippers"
msgstr "دردشة مباشرة مع الشاحنين"
-#: core/templates/core/index.html:165
+#: core/templates/core/index.html:323
msgid "Register Your Truck"
msgstr "سجل شاحنتك"
-#: core/templates/core/index.html:177
+#: core/templates/core/index.html:335
msgid "Everything you need for seamless logistics"
msgstr "كل ما تحتاجه للوجستيات سلسة"
-#: core/templates/core/index.html:185
+#: core/templates/core/index.html:343
msgid "WhatsApp Integration"
msgstr "تكامل واتساب"
-#: core/templates/core/index.html:186
+#: core/templates/core/index.html:344
msgid "Receive instant updates and communicate easily via WhatsApp API."
msgstr "استقبل تحديثات فورية وتواصل بسهولة عبر واجهة برمجة تطبيقات واتساب."
-#: core/templates/core/index.html:196
+#: core/templates/core/index.html:354
msgid "Multilingual Support"
msgstr "دعم متعدد اللغات"
-#: core/templates/core/index.html:197
+#: core/templates/core/index.html:355
msgid "Fully accessible in both Arabic and English for all users."
msgstr "متاح بالكامل باللغتين العربية والإنجليزية لجميع المستخدمين."
-#: core/templates/core/index.html:207
+#: core/templates/core/index.html:365
msgid "Secure Documentation"
msgstr "توثيق آمن"
-#: core/templates/core/index.html:208
+#: core/templates/core/index.html:366
msgid "Digital verification of truck registration and driver licenses."
msgstr "التحقق الرقمي من تسجيل الشاحنات ورخص القيادة."
-#: core/templates/core/index.html:231
+#: core/templates/core/index.html:389
msgid "What Our Customers Say"
msgstr "ماذا يقول عملاؤنا"
-#: core/templates/core/index.html:232
+#: core/templates/core/index.html:390
#, fuzzy
#| msgid "Join thousands of shippers and drivers on MASAR today."
msgid "Real stories from shippers and truck owners using MASAR."
msgstr "انضم إلى آلاف الشاحنين والسائقين على مسار اليوم."
-#: core/templates/core/index.html:269
+#: core/templates/core/index.html:427
msgid "Ready to move your cargo?"
msgstr "هل أنت مستعد لنقل شحنتك؟"
-#: core/templates/core/index.html:270
+#: core/templates/core/index.html:428
msgid "Join thousands of shippers and drivers on MASAR today."
msgstr "انضم إلى آلاف الشاحنين والسائقين على مسار اليوم."
-#: core/templates/core/index.html:271
+#: core/templates/core/index.html:429
msgid "Join Now"
msgstr "انضم الآن"
@@ -1340,8 +1418,11 @@ msgid "Truck Marketplace"
msgstr "سوق الشاحنات"
#: core/templates/core/marketplace.html:28
-msgid "Browse available trucks and send your shipping offers directly to truck owners."
-msgstr "تصفح الشاحنات المتاحة وأرسل عروض الشحن الخاصة بك مباشرة إلى أصحاب الشاحنات."
+msgid ""
+"Browse available trucks and send your shipping offers directly to truck "
+"owners."
+msgstr ""
+"تصفح الشاحنات المتاحة وأرسل عروض الشحن الخاصة بك مباشرة إلى أصحاب الشاحنات."
#: core/templates/core/marketplace.html:43
msgid "Available"
@@ -1451,6 +1532,91 @@ msgstr "مدينة الوجهة"
msgid "Post Shipment"
msgstr "نشر الشحنة"
+#: core/templates/core/profile.html:25
+msgid "Edit Profile"
+msgstr "تعديل الملف الشخصي"
+
+#: core/templates/core/profile.html:41
+msgid "Update your profile picture"
+msgstr "تحديث صورة الملف الشخصي"
+
+#: core/templates/core/profile.html:46
+msgid "First Name"
+msgstr "الاسم الأول"
+
+#: core/templates/core/profile.html:53
+msgid "Last Name"
+msgstr "اسم العائلة"
+
+#: core/templates/core/profile.html:68 core/templates/core/profile.html:95
+#: core/templates/core/profile.html:239 core/templates/core/profile.html:254
+#: core/templates/core/profile.html:267 core/templates/core/profile.html:373
+#: core/templates/core/profile.html:376
+msgid "Verified"
+msgstr "تم التحقق"
+
+#: core/templates/core/profile.html:70 core/templates/core/profile.html:97
+#: core/templates/core/profile.html:177 core/templates/core/profile.html:233
+#: core/templates/core/profile.html:248 core/templates/core/profile.html:263
+#: core/templates/core/profile.html:295 core/templates/core/profile.html:333
+#: core/templates/core/profile.html:369
+#: core/templates/registration/verify_otp.html:45
+msgid "Verify"
+msgstr "تحقق"
+
+#: core/templates/core/profile.html:89
+#: core/templates/registration/register.html:32
+msgid "Phone Number"
+msgstr "رقم الهاتف"
+
+#: core/templates/core/profile.html:123
+msgid "Save Changes"
+msgstr "حفظ التغييرات"
+
+#: core/templates/core/profile.html:132
+msgid "Account Information"
+msgstr "معلومات الحساب"
+
+#: core/templates/core/profile.html:134
+#: core/templates/registration/login.html:20
+msgid "Username"
+msgstr "اسم المستخدم"
+
+#: core/templates/core/profile.html:140
+#: core/templates/core/shipment_detail.html:136
+#: core/templates/core/truck_owner_dashboard.html:72
+msgid "Shipper"
+msgstr "الشاحن"
+
+#: core/templates/core/profile.html:142
+#: core/templates/core/shipment_detail.html:146
+msgid "Truck Owner"
+msgstr "صاحب الشاحنة"
+
+#: core/templates/core/profile.html:148
+#: core/templates/core/shipper_dashboard.html:50
+#: core/templates/core/truck_owner_dashboard.html:46
+#, fuzzy
+#| msgid "Subscription Plan"
+msgid "Subscription"
+msgstr "خطة الاشتراك"
+
+#: core/templates/core/profile.html:152
+msgid "Expires on:"
+msgstr "تنتهي في:"
+
+#: core/templates/core/profile.html:167
+msgid "Enter OTP"
+msgstr "أدخل رمز التحقق"
+
+#: core/templates/core/profile.html:299
+msgid "A code was sent to"
+msgstr "تم إرسال رمز إلى"
+
+#: core/templates/core/profile.html:337
+msgid "A code was sent to WhatsApp number"
+msgstr "تم إرسال رمز إلى رقم الواتساب"
+
#: core/templates/core/receipt.html:18
msgid "Phone:"
msgstr "الهاتف:"
@@ -1478,7 +1644,9 @@ msgid "Note:"
msgstr "ملاحظة:"
#: core/templates/core/receipt.html:68
-msgid "This is an electronically generated receipt and does not require a physical signature."
+msgid ""
+"This is an electronically generated receipt and does not require a physical "
+"signature."
msgstr ""
#: core/templates/core/receipt.html:72
@@ -1549,15 +1717,6 @@ msgstr "الشحنة قيد التنفيذ"
msgid "Assigned Truck:"
msgstr "الشاحنة المعينة:"
-#: core/templates/core/shipment_detail.html:136
-#: core/templates/core/truck_owner_dashboard.html:72
-msgid "Shipper"
-msgstr "الشاحن"
-
-#: core/templates/core/shipment_detail.html:146
-msgid "Truck Owner"
-msgstr "صاحب الشاحنة"
-
#: core/templates/core/shipment_detail.html:162
msgid "WhatsApp Driver"
msgstr "واتساب السائق"
@@ -1595,13 +1754,6 @@ msgstr "تعليقات"
msgid "View History"
msgstr "عرض السجل"
-#: core/templates/core/shipper_dashboard.html:50
-#: core/templates/core/truck_owner_dashboard.html:46
-#, fuzzy
-#| msgid "Subscription Plan"
-msgid "Subscription"
-msgstr "خطة الاشتراك"
-
#: core/templates/core/shipper_dashboard.html:53
#: core/templates/core/truck_owner_dashboard.html:49
#, fuzzy
@@ -1669,7 +1821,8 @@ msgstr "انتهى الاشتراك"
#| msgid "Hello %(name)s, your subscription to MASAR CARGO has expired."
msgid ""
"\n"
-" Hello %(name)s, your subscription to MASAR CARGO has expired.\n"
+" Hello %(name)s, your subscription to MASAR CARGO has "
+"expired.\n"
" "
msgstr "مرحباً %(name)s، لقد انتهى اشتراكك في مسار كارغو."
@@ -1700,7 +1853,8 @@ msgid "Renew Now"
msgstr "تجديد الآن"
#: core/templates/core/subscription_expired.html:52
-msgid "Online payment is currently disabled. Please contact support for renewal."
+msgid ""
+"Online payment is currently disabled. Please contact support for renewal."
msgstr "الدفع عبر الإنترنت معطل حالياً. يرجى الاتصال بالدعم للتجديد."
#: core/templates/core/subscription_expired.html:61
@@ -1772,7 +1926,7 @@ msgstr "تحديث بيانات الشاحنة"
msgid "Register a Truck"
msgstr "تسجيل شاحنة"
-#: core/templates/core/truck_register.html:47 core/views.py:89
+#: core/templates/core/truck_register.html:47 core/views.py:105
msgid "Please correct the errors below."
msgstr "يرجى تصحيح الأخطاء أدناه."
@@ -1799,7 +1953,9 @@ msgid "Documents & Photos"
msgstr "المستندات والصور"
#: core/templates/core/truck_register.html:128
-msgid "Photos will be automatically resized for better performance. PDF files are accepted for documents."
+msgid ""
+"Photos will be automatically resized for better performance. PDF files are "
+"accepted for documents."
msgstr ""
#: core/templates/core/truck_register.html:151
@@ -1819,20 +1975,16 @@ msgstr "تحديث وإرسال للاعتماد"
msgid "Submit Registration"
msgstr "إرسال طلب التسجيل"
-#: core/templates/registration/login.html:20
-msgid "Username"
-msgstr "اسم المستخدم"
-
-#: core/templates/registration/login.html:24
+#: core/templates/registration/login.html:29
msgid "Password"
msgstr "كلمة المرور"
-#: core/templates/registration/login.html:30
+#: core/templates/registration/login.html:58
msgid "Don't have an account?"
msgstr "ليس لديك حساب؟"
-#: core/templates/registration/login.html:30
-#: core/templates/registration/register.html:93
+#: core/templates/registration/login.html:58
+#: core/templates/registration/register.html:115
msgid "Register"
msgstr "تسجيل"
@@ -1840,23 +1992,19 @@ msgstr "تسجيل"
msgid "Create your account"
msgstr "أنشئ حسابك"
-#: core/templates/registration/register.html:32
-msgid "Phone Number"
-msgstr "رقم الهاتف"
-
#: core/templates/registration/register.html:46
msgid "Select country and enter phone number."
msgstr "اختر الدولة وأدخل رقم الهاتف."
-#: core/templates/registration/register.html:66
+#: core/templates/registration/register.html:88
msgid "I have read and agree to the"
msgstr "لقد قرأت وأوافق على"
-#: core/templates/registration/register.html:68
+#: core/templates/registration/register.html:90
msgid "and"
msgstr "و"
-#: core/templates/registration/register.html:96
+#: core/templates/registration/register.html:118
msgid "Already have an account?"
msgstr "لديك حساب بالفعل؟"
@@ -1868,211 +2016,290 @@ msgstr "رجوع"
msgid "Verify Your Account"
msgstr "التحقق من حسابك"
-#: core/templates/registration/verify_otp.html:18
-msgid "We have sent a verification code to your WhatsApp number. Please enter it below to complete your registration."
-msgstr "لقد أرسلنا رمز تحقق إلى رقم واتساب الخاص بك. يرجى إدخاله أدناه لإكمال عملية التسجيل."
+#: core/templates/registration/verify_otp.html:19
+msgid ""
+"We have sent a verification code to your email address. Please enter it "
+"below to complete your registration."
+msgstr ""
+"لقد أرسلنا رمز تحقق إلى بريدك الإلكتروني. يرجى إدخاله أدناه لإكمال عملية "
+"التسجيل."
-#: core/templates/registration/verify_otp.html:20
-msgid "We have sent a verification code to your WhatsApp number. Please enter it below to log in."
-msgstr "لقد أرسلنا رمز تحقق إلى رقم واتساب الخاص بك. يرجى إدخاله أدناه لتسجيل الدخول."
+#: core/templates/registration/verify_otp.html:21
+msgid ""
+"We have sent a verification code to your email address. Please enter it "
+"below to log in."
+msgstr ""
+"لقد أرسلنا رمز تحقق إلى بريدك الإلكتروني. يرجى إدخاله أدناه لتسجيل الدخول."
-#: core/templates/registration/verify_otp.html:37
-msgid "Verify"
-msgstr "تحقق"
+#: core/templates/registration/verify_otp.html:25
+msgid ""
+"We have sent a verification code to your WhatsApp number. Please enter it "
+"below to complete your registration."
+msgstr ""
+"لقد أرسلنا رمز تحقق إلى رقم واتساب الخاص بك. يرجى إدخاله أدناه لإكمال عملية "
+"التسجيل."
-#: core/templates/registration/verify_otp.html:41
+#: core/templates/registration/verify_otp.html:27
+msgid ""
+"We have sent a verification code to your WhatsApp number. Please enter it "
+"below to log in."
+msgstr ""
+"لقد أرسلنا رمز تحقق إلى رقم واتساب الخاص بك. يرجى إدخاله أدناه لتسجيل الدخول."
+
+#: core/templates/registration/verify_otp.html:49
msgid "Didn't receive the code?"
msgstr "لم تستلم الرمز؟"
-#: core/templates/registration/verify_otp.html:41
+#: core/templates/registration/verify_otp.html:49
msgid "Try again"
msgstr "حاول مرة أخرى"
-#: core/views.py:82
-#, python-format
-msgid "Your verification code for MASAR CARGO is: %(code)s"
-msgstr "رمز التحقق الخاص بك لـ MASAR CARGO هو: %(code)s"
+#: core/views.py:92 core/views.py:184
+msgid "A verification code has been sent to your email."
+msgstr "تم إرسال رمز التحقق إلى بريدك الإلكتروني."
-#: core/views.py:84 core/views.py:162
+#: core/views.py:95 core/views.py:187
+msgid "Failed to send verification code to your email."
+msgstr "فشل إرسال رمز التحقق إلى بريدك الإلكتروني."
+
+#: core/views.py:100 core/views.py:197
msgid "A verification code has been sent to your WhatsApp."
msgstr "تم إرسال رمز التحقق إلى واتساب الخاص بك."
-#: core/views.py:87
+#: core/views.py:103
msgid "Failed to send verification code. Please check your phone number."
msgstr "فشل إرسال رمز التحقق. يرجى التحقق من رقم هاتفك."
-#: core/views.py:135
+#: core/views.py:157
msgid "Registration successful. Welcome!"
msgstr "تم التسجيل بنجاح. مرحباً بك!"
-#: core/views.py:138 core/views.py:199
+#: core/views.py:160 core/views.py:236
msgid "Invalid or expired verification code."
msgstr "رمز تحقق غير صالح أو منتهي الصلاحية."
-#: core/views.py:151
+#: core/views.py:180
+msgid ""
+"Your account does not have an email address. Please use WhatsApp or contact "
+"admin."
+msgstr ""
+"حسابك لا يحتوي على بريد إلكتروني. يرجى استخدام واتساب أو التواصل مع المسؤول."
+
+#: core/views.py:190
msgid "Your account does not have a phone number. Please contact admin."
msgstr "حسابك لا يحتوي على رقم هاتف. يرجى الاتصال بالمسؤول."
-#: core/views.py:160
+#: core/views.py:195
#, python-format
msgid "Your login verification code for MASAR CARGO is: %(code)s"
msgstr "رمز التحقق الخاص بك لتسجيل الدخول لـ MASAR CARGO هو: %(code)s"
-#: core/views.py:167
+#: core/views.py:200
msgid "Failed to send verification code. Please check your connection."
msgstr "فشل إرسال رمز التحقق. يرجى التحقق من اتصالك."
-#: core/views.py:169
+#: core/views.py:202
msgid "Invalid username or password."
msgstr "اسم المستخدم أو كلمة المرور غير صالحة."
-#: core/views.py:196
+#: core/views.py:233
msgid "Logged in successfully!"
msgstr "تم تسجيل الدخول بنجاح!"
-#: core/views.py:271
-#, python-format
-msgid "New Truck Registration: %(owner)s registered a truck with plate %(plate)s. Please review it in the admin dashboard."
-msgstr "تسجيل شاحنة جديدة: قام %(owner)s بتسجيل شاحنة برقم لوحة %(plate)s. يرجى مراجعتها في لوحة تحكم المسؤول."
+#: core/views.py:249
+#, fuzzy
+#| msgid "Offer sent successfully!"
+msgid "Profile updated successfully!"
+msgstr "تم إرسال العرض بنجاح!"
-#: core/views.py:276
+#: core/views.py:322
+#, python-format
+msgid ""
+"New Truck Registration: %(owner)s registered a truck with plate %(plate)s. "
+"Please review it in the admin dashboard."
+msgstr ""
+"تسجيل شاحنة جديدة: قام %(owner)s بتسجيل شاحنة برقم لوحة %(plate)s. يرجى "
+"مراجعتها في لوحة تحكم المسؤول."
+
+#: core/views.py:327
msgid "Truck registered successfully! It will be visible after admin approval."
msgstr "تم تسجيل الشاحنة بنجاح! ستكون مرئية بعد اعتماد المسؤول."
-#: core/views.py:279
+#: core/views.py:330
msgid "There was an error in your registration. Please check the form."
msgstr "حدث خطأ في التسجيل. يرجى التحقق من النموذج."
-#: core/views.py:299
+#: core/views.py:350
#, python-format
-msgid "Truck Update: %(owner)s updated truck with plate %(plate)s. Please review it again in the admin dashboard."
-msgstr "تحديث شاحنة: قام %(owner)s بتحديث بيانات الشاحنة ذات رقم لوحة %(plate)s. يرجى مراجعتها مرة أخرى في لوحة تحكم المسؤول."
+msgid ""
+"Truck Update: %(owner)s updated truck with plate %(plate)s. Please review it "
+"again in the admin dashboard."
+msgstr ""
+"تحديث شاحنة: قام %(owner)s بتحديث بيانات الشاحنة ذات رقم لوحة %(plate)s. "
+"يرجى مراجعتها مرة أخرى في لوحة تحكم المسؤول."
-#: core/views.py:304
+#: core/views.py:355
msgid "Truck data updated successfully! It will be reviewed by admin again."
msgstr "تم تحديث بيانات الشاحنة بنجاح! سيتم مراجعتها من قبل المسؤول مرة أخرى."
-#: core/views.py:307
+#: core/views.py:358
msgid "There was an error updating your truck. Please check the form."
msgstr "حدث خطأ أثناء تحديث شاحنتك. يرجى التحقق من النموذج."
-#: core/views.py:324
+#: core/views.py:375
#, python-format
-msgid "Your truck (%(plate)s) has been approved! You can now receive offers for shipments."
+msgid ""
+"Your truck (%(plate)s) has been approved! You can now receive offers for "
+"shipments."
msgstr "تمت الموافقة على شاحنتك (%(plate)s)! يمكنك الآن تلقي عروض للشحنات."
-#: core/views.py:327
+#: core/views.py:378
msgid "Truck approved successfully!"
msgstr "تم اعتماد الشاحنة بنجاح!"
-#: core/views.py:338
+#: core/views.py:389
msgid "Truck has been suspended."
msgstr "تم تعليق الشاحنة."
-#: core/views.py:353
-msgid "Shipment posted successfully! It is now open for bids or you can browse trucks to send it as an offer."
-msgstr "تم نشر الشحنة بنجاح! هي الآن مفتوحة للمزايدة أو يمكنك تصفح الشاحنات لإرسالها كعرض.تم نشر الشحنة بنجاح! هي الآن مفتوحة للعروض أو يمكنك تصفح الشاحنات لإرسالها كعرض."
+#: core/views.py:404
+msgid ""
+"Shipment posted successfully! It is now open for bids or you can browse "
+"trucks to send it as an offer."
+msgstr ""
+"تم نشر الشحنة بنجاح! هي الآن مفتوحة للمزايدة أو يمكنك تصفح الشاحنات لإرسالها "
+"كعرض.تم نشر الشحنة بنجاح! هي الآن مفتوحة للعروض أو يمكنك تصفح الشاحنات "
+"لإرسالها كعرض."
-#: core/views.py:357
+#: core/views.py:408
msgid "Please correct the errors in the form."
msgstr "يرجى تصحيح الأخطاء في النموذج."
-#: core/views.py:408
+#: core/views.py:459
#, python-format
-msgid "New offer received for your truck (%(plate)s)! Route: %(origin)s to %(dest)s. Amount: %(amount)s"
-msgstr "تم استلام عرض جديد لشاحنتك (%(plate)s)! المسار: %(origin)s إلى %(dest)s. المبلغ: %(amount)sتم استلام عرض جديد لشاحنتك (%(plate)s)! المسار: %(origin)s إلى %(dest)s. المبلغ: %(amount)s"
+msgid ""
+"New offer received for your truck (%(plate)s)! Route: %(origin)s to "
+"%(dest)s. Amount: %(amount)s"
+msgstr ""
+"تم استلام عرض جديد لشاحنتك (%(plate)s)! المسار: %(origin)s إلى %(dest)s. "
+"المبلغ: %(amount)sتم استلام عرض جديد لشاحنتك (%(plate)s)! المسار: %(origin)s "
+"إلى %(dest)s. المبلغ: %(amount)s"
-#: core/views.py:411
+#: core/views.py:462
msgid "Offer sent successfully!"
msgstr "تم إرسال العرض بنجاح!"
-#: core/views.py:415
+#: core/views.py:466
msgid "Error sending offer. Please check the form."
msgstr "خطأ في إرسال العرض. يرجى التحقق من النموذج."
-#: core/views.py:437
+#: core/views.py:488
msgid "You are not authorized to accept this offer."
msgstr "أنت غير مخول لقبول هذا العرض."
-#: core/views.py:452
+#: core/views.py:503
#, python-format
-msgid "Your offer for truck %(plate)s (%(origin)s to %(dest)s) has been accepted!"
+msgid ""
+"Your offer for truck %(plate)s (%(origin)s to %(dest)s) has been accepted!"
msgstr "تم قبول عرضك للشاحنة %(plate)s (%(origin)s إلى %(dest)s)!"
-#: core/views.py:455
+#: core/views.py:506
msgid "Offer accepted! Shipment is now in progress."
msgstr "تم قبول العرض! الشحنة قيد التنفيذ الآن."
-#: core/views.py:467
+#: core/views.py:518
msgid "Offer rejected."
msgstr "تم رفض العرض."
-#: core/views.py:475
+#: core/views.py:526
msgid "Privacy policy is coming soon."
msgstr "سياسة الخصوصية ستتوفر قريباً."
-#: core/views.py:485
+#: core/views.py:536
msgid "Terms of service are soon."
msgstr "شروط الخدمة ستتوفر قريباً."
-#: core/views.py:532
+#: core/views.py:583
msgid "Online payment is currently disabled. Please contact support."
msgstr "الدفع عبر الإنترنت معطل حالياً. يرجى الاتصال بالدعم."
-#: core/views.py:581
+#: core/views.py:632
msgid "Failed to initiate payment. Please try again later."
msgstr "فشل بدء الدفع. يرجى المحاولة مرة أخرى لاحقاً."
-#: core/views.py:610
+#: core/views.py:661
#, fuzzy, python-format
-#| msgid "Your subscription for MASAR CARGO has been successfully renewed! Your new expiry date is %(date)s. Thank you for using our service."
-msgid "Your subscription for MASAR CARGO has been successfully renewed! Your new expiry date is %(date)s. You can view your receipt here: %(url)s"
-msgstr "تم تجديد اشتراكك في مسار للشحن بنجاح! تاريخ انتهاء اشتراكك الجديد هو %(date)s. شكراً لاستخدامك خدمتنا."
+#| msgid ""
+#| "Your subscription for MASAR CARGO has been successfully renewed! Your new "
+#| "expiry date is %(date)s. Thank you for using our service."
+msgid ""
+"Your subscription for MASAR CARGO has been successfully renewed! Your new "
+"expiry date is %(date)s. You can view your receipt here: %(url)s"
+msgstr ""
+"تم تجديد اشتراكك في مسار للشحن بنجاح! تاريخ انتهاء اشتراكك الجديد هو "
+"%(date)s. شكراً لاستخدامك خدمتنا."
-#: core/views.py:620
+#: core/views.py:671
#, fuzzy
#| msgid "Subscription Renewed - MASAR CARGO"
msgid "Subscription Activated - MASAR CARGO"
msgstr "تم تجديد الاشتراك - مسار للشحن"
-#: core/views.py:650
+#: core/views.py:701
msgid "Payment successful! Your subscription is now active."
msgstr "تم الدفع بنجاح! اشتراكك نشط الآن."
-#: core/views.py:656
+#: core/views.py:707
#, python-format
msgid "Payment was not successful. Status: %(status)s"
msgstr "لم يكن الدفع ناجحاً. الحالة: %(status)s"
-#: core/views.py:658
+#: core/views.py:709
msgid "Failed to verify payment status."
msgstr "فشل التحقق من حالة الدفع."
-#: core/views.py:664
+#: core/views.py:715
msgid "Payment was cancelled."
msgstr "تم إلغاء الدفع."
-#: core/views.py:728
+#: core/views.py:779
msgid "This is already a refund transaction."
msgstr "هذا البريد الإلكتروني مستخدم بالفعل."
-#: core/views.py:741
+#: core/views.py:792
#, python-format
msgid "Refund issued successfully! Receipt: %(receipt)s"
msgstr "تم إصدار الاسترداد بنجاح! الإيصال: %(receipt)s"
-#: core/views.py:754
+#: core/views.py:805
msgid "Application settings updated successfully."
msgstr "تم تحديث إعدادات التطبيق بنجاح."
-#: core/views.py:767
+#: core/views.py:818
msgid "Your message has been sent successfully! We will get back to you soon."
msgstr "تم إرسال رسالتك بنجاح! سنقوم بالرد عليك قريباً."
-#: core/views.py:770
+#: core/views.py:821
msgid "There was an error in your form. Please check the fields below."
msgstr "حدث خطأ أثناء تحديث شاحنتك. يرجى التحقق من النموذج."
+#: core/views.py:897
+msgid "Failed to send email"
+msgstr "فشل في إرسال البريد الإلكتروني"
+
+#: core/views.py:902
+#, fuzzy, python-format
+#| msgid "Your verification code for MASAR CARGO is: %(code)s"
+msgid "Your verification code is: %(code)s"
+msgstr "رمز التحقق الخاص بك لـ MASAR CARGO هو: %(code)s"
+
+#: core/views.py:906
+msgid "Failed to send WhatsApp message"
+msgstr "فشل في إرسال رسالة واتساب"
+
+#: core/views.py:938
+msgid "Invalid or expired code"
+msgstr "رمز غير صحيح أو منتهي الصلاحية"
+
#~ msgid "التفاصيل باللغة العربية"
#~ msgstr "التفاصيل باللغة العربية"
@@ -2088,69 +2315,16 @@ msgstr "حدث خطأ أثناء تحديث شاحنتك. يرجى التحقق
#~ msgid "Registered Trucks"
#~ msgstr "الشاحنات المسجلة"
-#~ msgid "To continue using our services, please renew your subscription. You can contact our support team for renewal details."
-#~ msgstr "لمواصلة استخدام خدماتنا، يرجى تجديد اشتراكك. يمكنك الاتصال بفريق الدعم لدينا للحصول على تفاصيل التجديد."
+#~ msgid ""
+#~ "To continue using our services, please renew your subscription. You can "
+#~ "contact our support team for renewal details."
+#~ msgstr ""
+#~ "لمواصلة استخدام خدماتنا، يرجى تجديد اشتراكك. يمكنك الاتصال بفريق الدعم "
+#~ "لدينا للحصول على تفاصيل التجديد."
#~ msgid "Contact for Renewal"
#~ msgstr "الاتصال للتجديد"
-msgid "Chat with MASAR AI"
-msgstr "تحدث مع مسار الذكي"
-
-msgid "Hello! I am MASAR, your AI assistant. How can I help you today?"
-msgstr "أهلاً بك! أنا مسار، مساعدك الذكي. كيف يمكنني مساعدتك اليوم؟"
-
-msgid "Type a message..."
-msgstr "اكتب رسالة..."
-
-msgid "Talk to a Human"
-msgstr "تحدث مع شخص حقيقي"
-
-msgid "Receive verification code via"
-msgstr "استلام رمز التحقق عبر"
-
-msgid "WhatsApp"
-msgstr "واتساب"
-
-msgid "A verification code has been sent to your email."
-msgstr "تم إرسال رمز التحقق إلى بريدك الإلكتروني."
-
-msgid "Failed to send verification code to your email."
-msgstr "فشل إرسال رمز التحقق إلى بريدك الإلكتروني."
-
-msgid "Your account does not have an email address. Please use WhatsApp or contact admin."
-msgstr "حسابك لا يحتوي على بريد إلكتروني. يرجى استخدام واتساب أو التواصل مع المسؤول."
-
-msgid "We have sent a verification code to your email address. Please enter it below to complete your registration."
-msgstr "لقد أرسلنا رمز تحقق إلى بريدك الإلكتروني. يرجى إدخاله أدناه لإكمال عملية التسجيل."
-
-msgid "We have sent a verification code to your email address. Please enter it below to log in."
-msgstr "لقد أرسلنا رمز تحقق إلى بريدك الإلكتروني. يرجى إدخاله أدناه لتسجيل الدخول."
-
-msgid "My Profile"
-msgstr "ملفي الشخصي"
-
-msgid "Edit Profile"
-msgstr "تعديل الملف الشخصي"
-
-msgid "Update your profile picture"
-msgstr "تحديث صورة الملف الشخصي"
-
-msgid "Profile Picture"
-msgstr "صورة الملف الشخصي"
-
-msgid "Save Changes"
-msgstr "حفظ التغييرات"
-
-msgid "Account Information"
-msgstr "معلومات الحساب"
-
-msgid "Expires on:"
-msgstr "تنتهي في:"
-
-msgid "First Name"
-msgstr "الاسم الأول"
-
-msgid "Last Name"
-msgstr "اسم العائلة"
+msgid "At least one contact method (Email or Phone) must be verified."
+msgstr "يجب التحقق من وسيلة اتصال واحدة على الأقل (البريد الإلكتروني أو الهاتف)."