addin notification in adding trucks
This commit is contained in:
parent
049e1849e1
commit
290e13038f
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -130,7 +130,7 @@ class MessageAdmin(admin.ModelAdmin):
|
||||
|
||||
@admin.register(WhatsAppConfig)
|
||||
class WhatsAppConfigAdmin(admin.ModelAdmin):
|
||||
list_display = ('__str__', 'is_active')
|
||||
list_display = ('__str__', 'admin_phone', 'is_active')
|
||||
|
||||
def has_add_permission(self, request):
|
||||
# Only allow one configuration record
|
||||
|
||||
@ -0,0 +1,33 @@
|
||||
# Generated by Django 5.2.7 on 2026-01-24 09:18
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('core', '0024_testimonial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='banner',
|
||||
name='admin_phone',
|
||||
field=models.CharField(blank=True, help_text='WhatsApp number to receive admin notifications (with country code, e.g., 96812345678)', max_length=20, null=True, verbose_name='Admin Notification Phone'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='homesection',
|
||||
name='admin_phone',
|
||||
field=models.CharField(blank=True, help_text='WhatsApp number to receive admin notifications (with country code, e.g., 96812345678)', max_length=20, null=True, verbose_name='Admin Notification Phone'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='testimonial',
|
||||
name='admin_phone',
|
||||
field=models.CharField(blank=True, help_text='WhatsApp number to receive admin notifications (with country code, e.g., 96812345678)', max_length=20, null=True, verbose_name='Admin Notification Phone'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='whatsappconfig',
|
||||
name='admin_phone',
|
||||
field=models.CharField(blank=True, help_text='WhatsApp number to receive admin notifications (with country code, e.g., 96812345678)', max_length=20, null=True, verbose_name='Admin Notification Phone'),
|
||||
),
|
||||
]
|
||||
25
core/migrations/0026_remove_banner_admin_phone_and_more.py
Normal file
25
core/migrations/0026_remove_banner_admin_phone_and_more.py
Normal file
@ -0,0 +1,25 @@
|
||||
# Generated by Django 5.2.7 on 2026-01-24 09:19
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('core', '0025_banner_admin_phone_homesection_admin_phone_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='banner',
|
||||
name='admin_phone',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='homesection',
|
||||
name='admin_phone',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='testimonial',
|
||||
name='admin_phone',
|
||||
),
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
@ -294,6 +294,7 @@ class WhatsAppConfig(models.Model):
|
||||
api_token = models.CharField(_('Wablas API Token'), max_length=255)
|
||||
secret_key = models.CharField(_('Wablas Secret Key'), max_length=255, blank=True, null=True)
|
||||
is_active = models.BooleanField(_('Is Active'), default=True)
|
||||
admin_phone = models.CharField(_("Admin Notification Phone"), max_length=20, blank=True, null=True, help_text=_("WhatsApp number to receive admin notifications (with country code, e.g., 96812345678)"))
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('WhatsApp Configuration')
|
||||
|
||||
@ -264,6 +264,15 @@ def truck_register(request):
|
||||
truck.owner = request.user
|
||||
truck.is_approved = False
|
||||
truck.save()
|
||||
|
||||
# Notify Admin via WhatsApp
|
||||
config = WhatsAppConfig.objects.filter(is_active=True).first()
|
||||
if config and config.admin_phone:
|
||||
admin_msg = _("New Truck Registration: %(owner)s registered a truck with plate %(plate)s. Please review it in the admin dashboard.") % {
|
||||
"owner": truck.owner.username,
|
||||
"plate": truck.plate_no
|
||||
}
|
||||
send_whatsapp_message(config.admin_phone, admin_msg)
|
||||
messages.success(request, _("Truck registered successfully! It will be visible after admin approval."))
|
||||
return redirect('dashboard')
|
||||
else:
|
||||
@ -283,6 +292,15 @@ def edit_truck(request, truck_id):
|
||||
truck = form.save(commit=False)
|
||||
truck.is_approved = False
|
||||
truck.save()
|
||||
|
||||
# Notify Admin via WhatsApp
|
||||
config = WhatsAppConfig.objects.filter(is_active=True).first()
|
||||
if config and config.admin_phone:
|
||||
admin_msg = _("Truck Update: %(owner)s updated truck with plate %(plate)s. Please review it again in the admin dashboard.") % {
|
||||
"owner": truck.owner.username,
|
||||
"plate": truck.plate_no
|
||||
}
|
||||
send_whatsapp_message(config.admin_phone, admin_msg)
|
||||
messages.success(request, _("Truck data updated successfully! It will be reviewed by admin again."))
|
||||
return redirect('dashboard')
|
||||
else:
|
||||
|
||||
Binary file not shown.
@ -2,7 +2,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-24 09:10+0000\n"
|
||||
"POT-Creation-Date: 2026-01-24 09:20+0000\n"
|
||||
"PO-Revision-Date: 2026-01-23 10:45+0000\n"
|
||||
"Last-Translator: Gemini\n"
|
||||
"Language-Team: Arabic\n"
|
||||
@ -10,8 +10,7 @@ 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"
|
||||
@ -116,9 +115,7 @@ 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"
|
||||
@ -241,9 +238,9 @@ msgstr "اسم الدولة"
|
||||
msgid "Your Email"
|
||||
msgstr "تأكيد البريد الإلكتروني"
|
||||
|
||||
#: core/forms.py:199 core/models.py:482 core/templates/core/contact.html:76
|
||||
#: core/forms.py:199 core/models.py:483 core/templates/core/contact.html:76
|
||||
msgid "Subject"
|
||||
msgstr "رفض"
|
||||
msgstr "الموضوع"
|
||||
|
||||
#: core/forms.py:200
|
||||
#, fuzzy
|
||||
@ -253,16 +250,12 @@ 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
|
||||
@ -414,11 +407,11 @@ msgstr "مفتوح للعروض"
|
||||
msgid "In Progress"
|
||||
msgstr "قيد التنفيذ"
|
||||
|
||||
#: core/models.py:226 core/models.py:445
|
||||
#: core/models.py:226 core/models.py:446
|
||||
msgid "Completed"
|
||||
msgstr "مكتمل"
|
||||
|
||||
#: core/models.py:227 core/models.py:447
|
||||
#: core/models.py:227 core/models.py:448
|
||||
msgid "Cancelled"
|
||||
msgstr "ملغي"
|
||||
|
||||
@ -430,7 +423,7 @@ msgstr "المصدر (قديم)"
|
||||
msgid "Destination (Legacy)"
|
||||
msgstr "الوجهة"
|
||||
|
||||
#: core/models.py:268 core/models.py:444
|
||||
#: core/models.py:268 core/models.py:445
|
||||
#: core/templates/core/shipper_dashboard.html:98
|
||||
#: core/templates/core/truck_owner_dashboard.html:90
|
||||
#: core/templates/core/truck_owner_dashboard.html:156
|
||||
@ -455,295 +448,303 @@ msgstr "رمز Wablas API"
|
||||
msgid "Wablas Secret Key"
|
||||
msgstr "مفتاح Wablas السري"
|
||||
|
||||
#: core/models.py:296 core/models.py:341 core/models.py:379 core/models.py:504
|
||||
#: core/models.py:296 core/models.py:342 core/models.py:380 core/models.py:505
|
||||
msgid "Is Active"
|
||||
msgstr "نشط"
|
||||
|
||||
#: core/models.py:299 core/models.py:300 core/models.py:303
|
||||
#: core/models.py:297
|
||||
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:300 core/models.py:301 core/models.py:304
|
||||
msgid "WhatsApp Configuration"
|
||||
msgstr "تكامل واتساب"
|
||||
|
||||
#: core/models.py:306
|
||||
#: core/models.py:307
|
||||
msgid "App Name"
|
||||
msgstr "اسم التطبيق"
|
||||
|
||||
#: core/models.py:307
|
||||
#: core/models.py:308
|
||||
msgid "Logo"
|
||||
msgstr "الشعار"
|
||||
|
||||
#: core/models.py:308
|
||||
#: core/models.py:309
|
||||
msgid "Slogan"
|
||||
msgstr "الشعار اللفظي"
|
||||
|
||||
#: core/models.py:309
|
||||
#: core/models.py:310
|
||||
msgid "Registration Number"
|
||||
msgstr "رقم السجل التجاري"
|
||||
|
||||
#: core/models.py:310
|
||||
#: core/models.py:311
|
||||
msgid "Tax Number"
|
||||
msgstr "الرقم الضريبي"
|
||||
|
||||
#: core/models.py:311
|
||||
#: core/models.py:312
|
||||
msgid "Contact Phone"
|
||||
msgstr "هاتف التواصل"
|
||||
|
||||
#: core/models.py:312
|
||||
#: core/models.py:313
|
||||
msgid "Contact Email"
|
||||
msgstr "بريد التواصل"
|
||||
|
||||
#: core/models.py:313
|
||||
#: core/models.py:314
|
||||
msgid "Contact Address"
|
||||
msgstr "عنوان التواصل"
|
||||
|
||||
#: core/models.py:314 core/templates/base.html:161
|
||||
#: core/templates/registration/register.html:67 core/views.py:466
|
||||
#: core/models.py:315 core/templates/base.html:161
|
||||
#: core/templates/registration/register.html:67 core/views.py:484
|
||||
msgid "Terms of Service"
|
||||
msgstr "شروط الخدمة"
|
||||
|
||||
#: core/models.py:315 core/templates/base.html:160
|
||||
#: core/templates/registration/register.html:69 core/views.py:456
|
||||
#: core/models.py:316 core/templates/base.html:160
|
||||
#: core/templates/registration/register.html:69 core/views.py:474
|
||||
msgid "Privacy Policy"
|
||||
msgstr "سياسة الخصوصية"
|
||||
|
||||
#: core/models.py:316
|
||||
#: core/models.py:317
|
||||
msgid "Enable Subscription Fee"
|
||||
msgstr "تفعيل رسوم الاشتراك"
|
||||
|
||||
#: core/models.py:317
|
||||
#: core/models.py:318
|
||||
msgid "Enable Thawani Payment"
|
||||
msgstr "تفعيل دفع ثواني"
|
||||
|
||||
#: core/models.py:320
|
||||
#: core/models.py:321
|
||||
msgid "Shipper Monthly Fee"
|
||||
msgstr "رسوم الشاحن الشهرية"
|
||||
|
||||
#: core/models.py:321
|
||||
#: core/models.py:322
|
||||
msgid "Shipper Annual Fee"
|
||||
msgstr "رسوم الشاحن السنوية"
|
||||
|
||||
#: core/models.py:324
|
||||
#: core/models.py:325
|
||||
msgid "Truck Owner Monthly Fee"
|
||||
msgstr "رسوم صاحب الشاحنة الشهرية"
|
||||
|
||||
#: core/models.py:325
|
||||
#: core/models.py:326
|
||||
msgid "Truck Owner Annual Fee"
|
||||
msgstr "رسوم صاحب الشاحنة السنوية"
|
||||
|
||||
#: core/models.py:328
|
||||
#: core/models.py:329
|
||||
msgid "App Setting"
|
||||
msgstr "إعداد التطبيق"
|
||||
|
||||
#: core/models.py:329
|
||||
#: core/models.py:330
|
||||
msgid "App Settings"
|
||||
msgstr "إعدادات التطبيق"
|
||||
|
||||
#: core/models.py:335 core/models.py:371
|
||||
#: core/models.py:336 core/models.py:372
|
||||
msgid "Title (EN)"
|
||||
msgstr "العنوان (بالإنجليزية)"
|
||||
|
||||
#: core/models.py:336 core/models.py:372
|
||||
#: core/models.py:337 core/models.py:373
|
||||
msgid "Title (AR)"
|
||||
msgstr "العنوان (بالعربية)"
|
||||
|
||||
#: core/models.py:337 core/models.py:373
|
||||
#: core/models.py:338 core/models.py:374
|
||||
msgid "Subtitle (EN)"
|
||||
msgstr "العنوان الفرعي (بالإنجليزية)"
|
||||
|
||||
#: core/models.py:338 core/models.py:374
|
||||
#: core/models.py:339 core/models.py:375
|
||||
msgid "Subtitle (AR)"
|
||||
msgstr "العنوان الفرعي (بالعربية)"
|
||||
|
||||
#: core/models.py:339
|
||||
#: core/models.py:340
|
||||
msgid "Banner Image"
|
||||
msgstr "صورة البانر"
|
||||
|
||||
#: core/models.py:340
|
||||
#: core/models.py:341
|
||||
msgid "Link URL"
|
||||
msgstr "رابط"
|
||||
|
||||
#: core/models.py:340
|
||||
#: core/models.py:341
|
||||
msgid "Internal or external URL"
|
||||
msgstr "رابط داخلي أو خارجي"
|
||||
|
||||
#: core/models.py:342 core/models.py:378 core/models.py:505
|
||||
#: core/models.py:343 core/models.py:379 core/models.py:506
|
||||
msgid "Order"
|
||||
msgstr "الترتيب"
|
||||
|
||||
#: core/models.py:346
|
||||
#: core/models.py:347
|
||||
msgid "Banner"
|
||||
msgstr "بانر"
|
||||
|
||||
#: core/models.py:347
|
||||
#: core/models.py:348
|
||||
msgid "Banners"
|
||||
msgstr "البانرات"
|
||||
|
||||
#: core/models.py:367
|
||||
#: core/models.py:368
|
||||
msgid "Simple Text & Image"
|
||||
msgstr "نص بسيط وصورة"
|
||||
|
||||
#: core/models.py:368
|
||||
#: core/models.py:369
|
||||
msgid "Features List"
|
||||
msgstr "قائمة المميزات"
|
||||
|
||||
#: core/models.py:369
|
||||
#: core/models.py:370
|
||||
msgid "Call to Action"
|
||||
msgstr "دعوة لاتخاذ إجراء"
|
||||
|
||||
#: core/models.py:375
|
||||
#: core/models.py:376
|
||||
msgid "Content (EN)"
|
||||
msgstr "المحتوى (بالإنجليزية)"
|
||||
|
||||
#: core/models.py:376
|
||||
#: core/models.py:377
|
||||
msgid "Content (AR)"
|
||||
msgstr "المحتوى (بالعربية)"
|
||||
|
||||
#: core/models.py:377
|
||||
#: core/models.py:378
|
||||
msgid "Image"
|
||||
msgstr "صورة"
|
||||
|
||||
#: core/models.py:384
|
||||
#: core/models.py:385
|
||||
msgid "Home Section"
|
||||
msgstr "قسم في الصفحة الرئيسية"
|
||||
|
||||
#: core/models.py:385
|
||||
#: core/models.py:386
|
||||
msgid "Home Sections"
|
||||
msgstr "أقسام الصفحة الرئيسية"
|
||||
|
||||
#: core/models.py:440 core/templates/core/financial_history.html:37
|
||||
#: core/models.py:441 core/templates/core/financial_history.html:37
|
||||
msgid "Payment"
|
||||
msgstr "دفع"
|
||||
|
||||
#: core/models.py:441 core/templates/core/financial_history.html:39
|
||||
#: core/models.py:442 core/templates/core/financial_history.html:39
|
||||
msgid "Refund"
|
||||
msgstr "استرداد"
|
||||
|
||||
#: core/models.py:446
|
||||
#: core/models.py:447
|
||||
msgid "Failed"
|
||||
msgstr "فشل"
|
||||
|
||||
#: core/models.py:450 core/templates/core/admin_financials.html:30
|
||||
#: core/models.py:451 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:453 core/templates/core/financial_history.html:22
|
||||
#: core/models.py:454 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:454 core/templates/core/receipt.html:39
|
||||
#: core/models.py:455 core/templates/core/receipt.html:39
|
||||
msgid "Payment Method"
|
||||
msgstr "طريقة الدفع"
|
||||
|
||||
#: core/models.py:455
|
||||
#: core/models.py:456
|
||||
#, fuzzy
|
||||
#| msgid "Phone Number"
|
||||
msgid "Reference Number"
|
||||
msgstr "رقم الهاتف"
|
||||
|
||||
#: core/models.py:456
|
||||
#: core/models.py:457
|
||||
#, fuzzy
|
||||
#| msgid "Registration Number"
|
||||
msgid "Receipt Number"
|
||||
msgstr "رقم السجل التجاري"
|
||||
|
||||
#: core/models.py:457
|
||||
#: core/models.py:458
|
||||
msgid "Session ID"
|
||||
msgstr "معرف الجلسة"
|
||||
|
||||
#: core/models.py:458
|
||||
#: core/models.py:459
|
||||
#, fuzzy
|
||||
#| msgid "Status"
|
||||
msgid "Payment Status"
|
||||
msgstr "الحالة"
|
||||
|
||||
#: core/models.py:464
|
||||
#: core/models.py:465
|
||||
msgid "Transaction"
|
||||
msgstr "معاملة"
|
||||
|
||||
#: core/models.py:465
|
||||
#: core/models.py:466
|
||||
#, fuzzy
|
||||
#| msgid "Actions"
|
||||
msgid "Transactions"
|
||||
msgstr "الإجراءات"
|
||||
|
||||
#: core/models.py:480
|
||||
#: core/models.py:481
|
||||
#, fuzzy
|
||||
#| msgid "App Name"
|
||||
msgid "Name"
|
||||
msgstr "اسم التطبيق"
|
||||
|
||||
#: core/models.py:481 core/templates/core/contact.html:36
|
||||
#: core/models.py:482 core/templates/core/contact.html:36
|
||||
msgid "Email"
|
||||
msgstr "البريد الإلكتروني"
|
||||
|
||||
#: core/models.py:483 core/templates/admin/core/whatsapp_test.html:28
|
||||
#: core/models.py:484 core/templates/admin/core/whatsapp_test.html:28
|
||||
#: core/templates/core/contact.html:83
|
||||
msgid "Message"
|
||||
msgstr "الرسالة"
|
||||
|
||||
#: core/models.py:488
|
||||
#: core/models.py:489
|
||||
#, fuzzy
|
||||
#| msgid "Contact Address"
|
||||
msgid "Contact Message"
|
||||
msgstr "عنوان التواصل"
|
||||
|
||||
#: core/models.py:489
|
||||
#: core/models.py:490
|
||||
#, fuzzy
|
||||
#| msgid "Contact Address"
|
||||
msgid "Contact Messages"
|
||||
msgstr "عنوان التواصل"
|
||||
|
||||
#: core/models.py:496
|
||||
#: core/models.py:497
|
||||
#, fuzzy
|
||||
#| msgid "Name (EN)"
|
||||
msgid "Customer Name (EN)"
|
||||
msgstr "الموديل (بالإنجليزية)"
|
||||
|
||||
#: core/models.py:497
|
||||
#: core/models.py:498
|
||||
#, fuzzy
|
||||
#| msgid "Name (AR)"
|
||||
msgid "Customer Name (AR)"
|
||||
msgstr "الموديل"
|
||||
|
||||
#: core/models.py:498
|
||||
#: core/models.py:499
|
||||
msgid "Customer Role (EN)"
|
||||
msgstr "وظيفة العميل (EN)"
|
||||
|
||||
#: core/models.py:499
|
||||
#: core/models.py:500
|
||||
msgid "Customer Role (AR)"
|
||||
msgstr "وظيفة العميل (AR)"
|
||||
|
||||
#: core/models.py:500
|
||||
#: core/models.py:501
|
||||
#, fuzzy
|
||||
#| msgid "Details"
|
||||
msgid "Testimony (EN)"
|
||||
msgstr "التفاصيل"
|
||||
|
||||
#: core/models.py:501
|
||||
#: core/models.py:502
|
||||
#, fuzzy
|
||||
#| msgid "Details"
|
||||
msgid "Testimony (AR)"
|
||||
msgstr "التفاصيل"
|
||||
|
||||
#: core/models.py:502
|
||||
#: core/models.py:503
|
||||
msgid "Rating (1-5)"
|
||||
msgstr "التقييم (1-5)"
|
||||
|
||||
#: core/models.py:503
|
||||
#: core/models.py:504
|
||||
#, fuzzy
|
||||
#| msgid "Banner Image"
|
||||
msgid "Customer Image"
|
||||
msgstr "صورة البانر"
|
||||
|
||||
#: core/models.py:509
|
||||
#: core/models.py:510
|
||||
msgid "Testimonial"
|
||||
msgstr "شهادة عميل"
|
||||
|
||||
#: core/models.py:510
|
||||
#: core/models.py:511
|
||||
msgid "Testimonials"
|
||||
msgstr "شهادات العملاء"
|
||||
|
||||
@ -1174,12 +1175,8 @@ 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"
|
||||
@ -1224,12 +1221,8 @@ 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 ""
|
||||
"المنصة الأكثر موثوقية لربط الشاحنين مع أسطول الشاحنات في جميع أنحاء المنطقة. "
|
||||
"شفافة، سريعة، وآمنة."
|
||||
msgid "The most reliable platform connecting shippers with truck owners across the region. Transparent, fast, and secure."
|
||||
msgstr "المنصة الأكثر موثوقية لربط الشاحنين مع أسطول الشاحنات في جميع أنحاء المنطقة. شفافة، سريعة، وآمنة."
|
||||
|
||||
#: core/templates/core/index.html:67
|
||||
msgid "Start Shipping"
|
||||
@ -1248,12 +1241,8 @@ 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 ""
|
||||
"أريد نقل بضائع محلياً أو دولياً. انشر شحنتك، واستقبل عروضاً من سائقين موثقين، "
|
||||
"وتتبع شحنتك في الوقت الفعلي."
|
||||
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
|
||||
msgid "Post shipments easily"
|
||||
@ -1277,12 +1266,8 @@ 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 ""
|
||||
"لدي شاحنات وأريد العثور على بضائع لنقلها. سجل أسطولك، وقدم عروضك على الوظائف "
|
||||
"المتاحة، ونمِ عملك."
|
||||
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
|
||||
msgid "Access daily cargo leads"
|
||||
@ -1355,11 +1340,8 @@ 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"
|
||||
@ -1496,9 +1478,7 @@ 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
|
||||
@ -1689,8 +1669,7 @@ 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، لقد انتهى اشتراكك في مسار كارغو."
|
||||
|
||||
@ -1721,8 +1700,7 @@ 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
|
||||
@ -1821,9 +1799,7 @@ 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
|
||||
@ -1893,19 +1869,12 @@ 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 ""
|
||||
"لقد أرسلنا رمز تحقق إلى رقم واتساب الخاص بك. يرجى إدخاله أدناه لإكمال عملية "
|
||||
"التسجيل."
|
||||
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:20
|
||||
msgid ""
|
||||
"We have sent a verification code to your WhatsApp number. Please enter it "
|
||||
"below to log in."
|
||||
msgstr ""
|
||||
"لقد أرسلنا رمز تحقق إلى رقم واتساب الخاص بك. يرجى إدخاله أدناه لتسجيل الدخول."
|
||||
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:37
|
||||
msgid "Verify"
|
||||
@ -1961,155 +1930,146 @@ msgstr "اسم المستخدم أو كلمة المرور غير صالحة."
|
||||
msgid "Logged in successfully!"
|
||||
msgstr "تم تسجيل الدخول بنجاح!"
|
||||
|
||||
#: core/views.py:267
|
||||
#: 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:276
|
||||
msgid "Truck registered successfully! It will be visible after admin approval."
|
||||
msgstr "تم تسجيل الشاحنة بنجاح! ستكون مرئية بعد اعتماد المسؤول."
|
||||
|
||||
#: core/views.py:270
|
||||
#: core/views.py:279
|
||||
msgid "There was an error in your registration. Please check the form."
|
||||
msgstr "حدث خطأ في التسجيل. يرجى التحقق من النموذج."
|
||||
|
||||
#: core/views.py:286
|
||||
#: core/views.py:299
|
||||
#, 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. يرجى مراجعتها مرة أخرى في لوحة تحكم المسؤول."
|
||||
|
||||
#: core/views.py:304
|
||||
msgid "Truck data updated successfully! It will be reviewed by admin again."
|
||||
msgstr "تم تحديث بيانات الشاحنة بنجاح! سيتم مراجعتها من قبل المسؤول مرة أخرى."
|
||||
|
||||
#: core/views.py:289
|
||||
#: core/views.py:307
|
||||
msgid "There was an error updating your truck. Please check the form."
|
||||
msgstr "حدث خطأ أثناء تحديث شاحنتك. يرجى التحقق من النموذج."
|
||||
|
||||
#: core/views.py:306
|
||||
#: core/views.py:324
|
||||
#, 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:309
|
||||
#: core/views.py:327
|
||||
msgid "Truck approved successfully!"
|
||||
msgstr "تم اعتماد الشاحنة بنجاح!"
|
||||
|
||||
#: core/views.py:320
|
||||
#: core/views.py:338
|
||||
msgid "Truck has been suspended."
|
||||
msgstr "تم تعليق الشاحنة."
|
||||
|
||||
#: core/views.py:335
|
||||
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: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:339
|
||||
#: core/views.py:357
|
||||
msgid "Please correct the errors in the form."
|
||||
msgstr "يرجى تصحيح الأخطاء في النموذج."
|
||||
|
||||
#: core/views.py:390
|
||||
#: core/views.py:408
|
||||
#, 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:393
|
||||
#: core/views.py:411
|
||||
msgid "Offer sent successfully!"
|
||||
msgstr "تم إرسال العرض بنجاح!"
|
||||
|
||||
#: core/views.py:397
|
||||
#: core/views.py:415
|
||||
msgid "Error sending offer. Please check the form."
|
||||
msgstr "خطأ في إرسال العرض. يرجى التحقق من النموذج."
|
||||
|
||||
#: core/views.py:419
|
||||
#: core/views.py:437
|
||||
msgid "You are not authorized to accept this offer."
|
||||
msgstr "أنت غير مخول لقبول هذا العرض."
|
||||
|
||||
#: core/views.py:434
|
||||
#: core/views.py:452
|
||||
#, 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:437
|
||||
#: core/views.py:455
|
||||
msgid "Offer accepted! Shipment is now in progress."
|
||||
msgstr "تم قبول العرض! الشحنة قيد التنفيذ الآن."
|
||||
|
||||
#: core/views.py:449
|
||||
#: core/views.py:467
|
||||
msgid "Offer rejected."
|
||||
msgstr "تم رفض العرض."
|
||||
|
||||
#: core/views.py:457
|
||||
#: core/views.py:475
|
||||
msgid "Privacy policy is coming soon."
|
||||
msgstr "سياسة الخصوصية ستتوفر قريباً."
|
||||
|
||||
#: core/views.py:467
|
||||
#: core/views.py:485
|
||||
msgid "Terms of service are soon."
|
||||
msgstr "شروط الخدمة ستتوفر قريباً."
|
||||
|
||||
#: core/views.py:514
|
||||
#: core/views.py:532
|
||||
msgid "Online payment is currently disabled. Please contact support."
|
||||
msgstr "الدفع عبر الإنترنت معطل حالياً. يرجى الاتصال بالدعم."
|
||||
|
||||
#: core/views.py:563
|
||||
#: core/views.py:581
|
||||
msgid "Failed to initiate payment. Please try again later."
|
||||
msgstr "فشل بدء الدفع. يرجى المحاولة مرة أخرى لاحقاً."
|
||||
|
||||
#: core/views.py:592
|
||||
#: core/views.py:610
|
||||
#, 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:602
|
||||
#: core/views.py:620
|
||||
#, fuzzy
|
||||
#| msgid "Subscription Renewed - MASAR CARGO"
|
||||
msgid "Subscription Activated - MASAR CARGO"
|
||||
msgstr "تم تجديد الاشتراك - مسار للشحن"
|
||||
|
||||
#: core/views.py:632
|
||||
#: core/views.py:650
|
||||
msgid "Payment successful! Your subscription is now active."
|
||||
msgstr "تم الدفع بنجاح! اشتراكك نشط الآن."
|
||||
|
||||
#: core/views.py:638
|
||||
#: core/views.py:656
|
||||
#, python-format
|
||||
msgid "Payment was not successful. Status: %(status)s"
|
||||
msgstr "لم يكن الدفع ناجحاً. الحالة: %(status)s"
|
||||
|
||||
#: core/views.py:640
|
||||
#: core/views.py:658
|
||||
msgid "Failed to verify payment status."
|
||||
msgstr "فشل التحقق من حالة الدفع."
|
||||
|
||||
#: core/views.py:646
|
||||
#: core/views.py:664
|
||||
msgid "Payment was cancelled."
|
||||
msgstr "تم إلغاء الدفع."
|
||||
|
||||
#: core/views.py:710
|
||||
#: core/views.py:728
|
||||
msgid "This is already a refund transaction."
|
||||
msgstr "هذا البريد الإلكتروني مستخدم بالفعل."
|
||||
|
||||
#: core/views.py:723
|
||||
#: core/views.py:741
|
||||
#, python-format
|
||||
msgid "Refund issued successfully! Receipt: %(receipt)s"
|
||||
msgstr "تم إصدار الاسترداد بنجاح! الإيصال: %(receipt)s"
|
||||
|
||||
#: core/views.py:736
|
||||
#: core/views.py:754
|
||||
msgid "Application settings updated successfully."
|
||||
msgstr "تم تحديث إعدادات التطبيق بنجاح."
|
||||
|
||||
#: core/views.py:749
|
||||
#: core/views.py:767
|
||||
msgid "Your message has been sent successfully! We will get back to you soon."
|
||||
msgstr "تم إرسال رسالتك بنجاح! سنقوم بالرد عليك قريباً."
|
||||
|
||||
#: core/views.py:752
|
||||
#: core/views.py:770
|
||||
msgid "There was an error in your form. Please check the fields below."
|
||||
msgstr "حدث خطأ أثناء تحديث شاحنتك. يرجى التحقق من النموذج."
|
||||
|
||||
@ -2128,12 +2088,8 @@ 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 "الاتصال للتجديد"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user