add ed tetimonials

This commit is contained in:
Flatlogic Bot 2026-01-24 09:11:49 +00:00
parent da443cf388
commit 049e1849e1
12 changed files with 312 additions and 110 deletions

View File

@ -7,7 +7,11 @@ from django.utils.translation import gettext_lazy as _
from django.utils import timezone
from django.utils.html import format_html
import os
from .models import Profile, Truck, Shipment, Bid, Message, WhatsAppConfig, Country, City, TruckType, AppSetting, Banner, HomeSection, ContactMessage
from .models import (
Profile, Truck, Shipment, Bid, Message, WhatsAppConfig,
Country, City, TruckType, AppSetting, Banner, HomeSection,
ContactMessage, Testimonial
)
from .whatsapp import send_whatsapp_message
@admin.register(Country)
@ -198,3 +202,17 @@ class ContactMessageAdmin(admin.ModelAdmin):
search_fields = ('subject', 'name', 'email', 'message')
readonly_fields = ('created_at',)
list_editable = ('is_read',)
@admin.register(Testimonial)
class TestimonialAdmin(admin.ModelAdmin):
list_display = ('name', 'rating', 'order', 'is_active', 'created_at')
list_editable = ('order', 'is_active')
search_fields = ('name', 'name_ar', 'content', 'content_ar', 'role', 'role_ar')
list_filter = ('rating', 'is_active')
readonly_fields = ('image_preview',)
def image_preview(self, obj):
if obj.image:
return format_html('<img src="{}" style="max-height: 100px; border-radius: 50%;"/>', obj.image.url)
return "-"
image_preview.short_description = _("Image Preview")

View File

@ -0,0 +1,35 @@
# Generated by Django 5.2.7 on 2026-01-24 09:09
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('core', '0023_contactmessage'),
]
operations = [
migrations.CreateModel(
name='Testimonial',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100, verbose_name='Customer Name (EN)')),
('name_ar', models.CharField(blank=True, max_length=100, verbose_name='Customer Name (AR)')),
('role', models.CharField(blank=True, max_length=100, verbose_name='Customer Role (EN)')),
('role_ar', models.CharField(blank=True, max_length=100, verbose_name='Customer Role (AR)')),
('content', models.TextField(verbose_name='Testimony (EN)')),
('content_ar', models.TextField(blank=True, verbose_name='Testimony (AR)')),
('rating', models.PositiveIntegerField(default=5, verbose_name='Rating (1-5)')),
('image', models.ImageField(blank=True, null=True, upload_to='testimonials/', verbose_name='Customer Image')),
('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
('order', models.PositiveIntegerField(default=0, verbose_name='Order')),
('created_at', models.DateTimeField(auto_now_add=True)),
],
options={
'verbose_name': 'Testimonial',
'verbose_name_plural': 'Testimonials',
'ordering': ['order', '-created_at'],
},
),
]

View File

@ -491,3 +491,42 @@ class ContactMessage(models.Model):
def __str__(self):
return f"{self.subject} - {self.name}"
class Testimonial(models.Model):
name = models.CharField(_('Customer Name (EN)'), max_length=100)
name_ar = models.CharField(_('Customer Name (AR)'), max_length=100, blank=True)
role = models.CharField(_('Customer Role (EN)'), max_length=100, blank=True)
role_ar = models.CharField(_('Customer Role (AR)'), max_length=100, blank=True)
content = models.TextField(_('Testimony (EN)'))
content_ar = models.TextField(_('Testimony (AR)'), blank=True)
rating = models.PositiveIntegerField(_('Rating (1-5)'), default=5)
image = models.ImageField(_('Customer Image'), upload_to='testimonials/', blank=True, null=True)
is_active = models.BooleanField(_('Is Active'), default=True)
order = models.PositiveIntegerField(_('Order'), default=0)
created_at = models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name = _('Testimonial')
verbose_name_plural = _('Testimonials')
ordering = ['order', '-created_at']
def __str__(self):
return self.name
@property
def display_name(self):
if get_language() == 'ar' and self.name_ar:
return self.name_ar
return self.name
@property
def display_role(self):
if get_language() == 'ar' and self.role_ar:
return self.role_ar
return self.role
@property
def display_content(self):
if get_language() == 'ar' and self.content_ar:
return self.content_ar
return self.content

View File

@ -223,6 +223,45 @@
</div>
</section>
{% if testimonials %}
<!-- Testimonials Section -->
<section class="py-5 bg-light">
<div class="container py-5">
<div class="text-center mb-5">
<h2 class="fw-bold">{% trans "What Our Customers Say" %}</h2>
<p class="text-muted">{% trans "Real stories from shippers and truck owners using MASAR." %}</p>
</div>
<div class="row g-4">
{% for testimonial in testimonials %}
<div class="col-md-4">
<div class="card h-100 border-0 shadow-sm p-4">
<div class="mb-3 text-warning">
{% for i in "12345" %}
<i class="fa-solid fa-star {% if forloop.counter > testimonial.rating %}text-muted{% endif %}"></i>
{% endfor %}
</div>
<p class="mb-4 font-italic">"{{ testimonial.display_content }}"</p>
<div class="d-flex align-items-center mt-auto">
{% if testimonial.image %}
<img src="{{ testimonial.image.url }}" alt="{{ testimonial.display_name }}" class="rounded-circle me-3" style="width: 50px; height: 50px; object-fit: cover;">
{% else %}
<div class="bg-primary text-white rounded-circle d-flex align-items-center justify-content-center me-3" style="width: 50px; height: 50px;">
<span class="fw-bold">{{ testimonial.display_name|slice:":1" }}</span>
</div>
{% endif %}
<div class="ms-2">
<h6 class="fw-bold mb-0">{{ testimonial.display_name }}</h6>
<small class="text-muted">{{ testimonial.display_role }}</small>
</div>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
</section>
{% endif %}
<!-- Call to Action -->
<section class="py-5">
<div class="container">
@ -234,4 +273,4 @@
</div>
</section>
{% endblock %}
{% endblock %}

View File

@ -5,7 +5,10 @@ from django.contrib.auth.decorators import login_required
from django.contrib.auth import login, authenticate, logout
from django.utils import timezone
from django.urls import reverse
from .models import Profile, Truck, Shipment, Bid, Message, OTPCode, Country, City, AppSetting, Banner, HomeSection, Transaction, ContactMessage
from .models import (
Profile, Truck, Shipment, Bid, Message, OTPCode, Country, City,
AppSetting, Banner, HomeSection, Transaction, ContactMessage, Testimonial
)
from .forms import (
TruckForm, ShipmentForm, BidForm, UserRegistrationForm,
OTPVerifyForm, ShipperOfferForm, RenewSubscriptionForm, AppSettingForm,
@ -32,10 +35,12 @@ def home(request):
"""Render the landing screen for MASAR CARGO."""
banners = Banner.objects.filter(is_active=True)
home_sections = HomeSection.objects.filter(is_active=True).order_by('order')
testimonials = Testimonial.objects.filter(is_active=True).order_by('order')
context = {
"deployment_timestamp": timezone.now().timestamp(),
"banners": banners,
"home_sections": home_sections,
"testimonials": testimonials,
}
return render(request, "core/index.html", context)
@ -755,4 +760,4 @@ def contact(request):
return render(request, 'core/contact.html', {
'form': form,
'app_settings': app_settings
})
})

Binary file not shown.

View File

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-24 08:46+0000\n"
"POT-Creation-Date: 2026-01-24 09:10+0000\n"
"PO-Revision-Date: 2026-01-23 10:45+0000\n"
"Last-Translator: Gemini\n"
"Language-Team: Arabic\n"
@ -21,123 +21,131 @@ msgstr "الإنجليزية"
msgid "Arabic"
msgstr "العربية"
#: core/admin.py:37
#: core/admin.py:41
msgid "No Plan"
msgstr "بدون خطة"
#: core/admin.py:40
#: core/admin.py:44
msgid "Expired"
msgstr "منتهي"
#: core/admin.py:47
#: core/admin.py:51
#, fuzzy
#| msgid "Expired"
msgid "No Expiry"
msgstr "منتهي"
#: core/admin.py:51
#: core/admin.py:55
msgid "Expiring soon"
msgstr "تنتهي قريبا"
#: core/admin.py:51
#: core/admin.py:55
msgid "days"
msgstr "أيام"
#: core/admin.py:53 core/templates/core/shipper_dashboard.html:52
#: core/admin.py:57 core/templates/core/shipper_dashboard.html:52
#: core/templates/core/truck_owner_dashboard.html:48
msgid "Active"
msgstr "نشط"
#: core/admin.py:55 core/admin.py:170
#: core/admin.py:59 core/admin.py:174
msgid "Subscription Status"
msgstr "حالة الاشتراك"
#: core/admin.py:68
#: core/admin.py:72
#, fuzzy
#| msgid "Truck Picture"
msgid "Truck Picture Preview"
msgstr "صورة الشاحنة"
#: core/admin.py:78
#: core/admin.py:82
msgid "View PDF Document"
msgstr "عرض مستند PDF"
#: core/admin.py:79
#: core/admin.py:83
#, fuzzy
#| msgid "View Details"
msgid "View File"
msgstr "عرض التفاصيل"
#: core/admin.py:83
#: core/admin.py:87
#, fuzzy
#| msgid "Registration (Front Face)"
msgid "Registration Front Preview"
msgstr "واجهة استمارة السيارة"
#: core/admin.py:87
#: core/admin.py:91
#, fuzzy
#| msgid "Registration (Back Face)"
msgid "Registration Back Preview"
msgstr "خلفية استمارة السيارة"
#: core/admin.py:91
#: core/admin.py:95
#, fuzzy
#| msgid "Driver License (Front Face)"
msgid "Driver License Front Preview"
msgstr "واجهة رخصة القيادة"
#: core/admin.py:95
#: core/admin.py:99
#, fuzzy
#| msgid "Driver License (Back Face)"
msgid "Driver License Back Preview"
msgstr "خلفية رخصة القيادة"
#: core/admin.py:99
#: core/admin.py:103
#, fuzzy
#| msgid "Details"
msgid "Details (EN)"
msgstr "التفاصيل"
#: core/admin.py:100
#: core/admin.py:104
#, fuzzy
#| msgid "Details"
msgid "Details (AR)"
msgstr "التفاصيل"
#: core/admin.py:101
#: core/admin.py:105
#, fuzzy
#| msgid "Secure Documentation"
msgid "Pictures & Documents"
msgstr "توثيق آمن"
#: core/admin.py:151
#: core/admin.py:155
msgid "Test message sent successfully!"
msgstr "تم نشر الشحنة بنجاح!"
#: core/admin.py:153
#: core/admin.py:157
msgid "Failed to send test message. Check your API credentials and logs."
msgstr "فشل إرسال رسالة الاختبار. تحقق من بيانات اعتماد واجهة برمجة التطبيقات والسجلات."
msgstr ""
"فشل إرسال رسالة الاختبار. تحقق من بيانات اعتماد واجهة برمجة التطبيقات "
"والسجلات."
#: core/admin.py:158
#: core/admin.py:162
msgid "Send Test WhatsApp Message"
msgstr "إرسال رسالة واتساب تجريبية"
#: core/admin.py:168 core/templates/core/shipment_detail.html:134
#: core/admin.py:172 core/templates/core/shipment_detail.html:134
msgid "Contact Information"
msgstr "معلومات الاتصال"
#: core/admin.py:169
#: core/admin.py:173
msgid "Legal"
msgstr "قانوني"
#: core/admin.py:171
#: core/admin.py:175
msgid "Shipper Subscription Fees"
msgstr "رسوم اشتراك الشاحن"
#: core/admin.py:172
#: core/admin.py:176
msgid "Truck Owner Subscription Fees"
msgstr "رسوم اشتراك صاحب الشاحنة"
#: core/admin.py:218
#, fuzzy
#| msgid "No image provided"
msgid "Image Preview"
msgstr "لم يتم توفير صورة"
#: core/forms.py:9
msgid "Confirm Email"
msgstr "تأكيد البريد الإلكتروني"
@ -224,7 +232,6 @@ msgid "Comments"
msgstr "تعليقات"
#: core/forms.py:197 core/templates/core/contact.html:62
#| msgid "Country Name"
msgid "Your Name"
msgstr "اسم الدولة"
@ -235,7 +242,6 @@ msgid "Your Email"
msgstr "تأكيد البريد الإلكتروني"
#: core/forms.py:199 core/models.py:482 core/templates/core/contact.html:76
#| msgid "Reject"
msgid "Subject"
msgstr "رفض"
@ -343,15 +349,15 @@ msgstr "اللون (بالإنجليزية)"
msgid "Truck Type (AR)"
msgstr "نوع الشاحنة"
#: core/models.py:124
#: core/models.py:124 core/templates/core/truck_register.html:89
msgid "Model (AR)"
msgstr "الموديل"
#: core/models.py:125
#: core/models.py:125 core/templates/core/truck_register.html:94
msgid "Load Capacity (AR)"
msgstr "الحمولة"
#: core/models.py:126
#: core/models.py:126 core/templates/core/truck_register.html:99
msgid "Color (AR)"
msgstr "اللون"
@ -449,7 +455,7 @@ msgstr "رمز Wablas API"
msgid "Wablas Secret Key"
msgstr "مفتاح Wablas السري"
#: core/models.py:296 core/models.py:341 core/models.py:379
#: core/models.py:296 core/models.py:341 core/models.py:379 core/models.py:504
msgid "Is Active"
msgstr "نشط"
@ -490,12 +496,12 @@ msgid "Contact Address"
msgstr "عنوان التواصل"
#: core/models.py:314 core/templates/base.html:161
#: core/templates/registration/register.html:67 core/views.py:461
#: core/templates/registration/register.html:67 core/views.py:466
msgid "Terms of Service"
msgstr "شروط الخدمة"
#: core/models.py:315 core/templates/base.html:160
#: core/templates/registration/register.html:69 core/views.py:451
#: core/templates/registration/register.html:69 core/views.py:456
msgid "Privacy Policy"
msgstr "سياسة الخصوصية"
@ -559,7 +565,7 @@ msgstr "رابط"
msgid "Internal or external URL"
msgstr "رابط داخلي أو خارجي"
#: core/models.py:342 core/models.py:378
#: core/models.py:342 core/models.py:378 core/models.py:505
msgid "Order"
msgstr "الترتيب"
@ -691,6 +697,56 @@ msgstr "عنوان التواصل"
msgid "Contact Messages"
msgstr "عنوان التواصل"
#: core/models.py:496
#, fuzzy
#| msgid "Name (EN)"
msgid "Customer Name (EN)"
msgstr "الموديل (بالإنجليزية)"
#: core/models.py:497
#, fuzzy
#| msgid "Name (AR)"
msgid "Customer Name (AR)"
msgstr "الموديل"
#: core/models.py:498
msgid "Customer Role (EN)"
msgstr "وظيفة العميل (EN)"
#: core/models.py:499
msgid "Customer Role (AR)"
msgstr "وظيفة العميل (AR)"
#: core/models.py:500
#, fuzzy
#| msgid "Details"
msgid "Testimony (EN)"
msgstr "التفاصيل"
#: core/models.py:501
#, fuzzy
#| msgid "Details"
msgid "Testimony (AR)"
msgstr "التفاصيل"
#: core/models.py:502
msgid "Rating (1-5)"
msgstr "التقييم (1-5)"
#: core/models.py:503
#, fuzzy
#| msgid "Banner Image"
msgid "Customer Image"
msgstr "صورة البانر"
#: core/models.py:509
msgid "Testimonial"
msgstr "شهادة عميل"
#: core/models.py:510
msgid "Testimonials"
msgstr "شهادات العملاء"
#: core/templates/admin/core/whatsapp_test.html:6 core/templates/base.html:57
#: core/templates/core/admin_dashboard.html:11
#: core/templates/core/article_detail.html:11
@ -1121,24 +1177,23 @@ msgstr "اتصل بنا"
msgid ""
"Have questions about our services or need assistance? Fill out the form and "
"our team will get back to you shortly."
msgstr "لديك أسئلة حول خدماتنا أو تحتاج إلى مساعدة؟ املأ النموذج وسيقوم فريقنا بالرد عليك قريباً."
msgstr ""
"لديك أسئلة حول خدماتنا أو تحتاج إلى مساعدة؟ املأ النموذج وسيقوم فريقنا بالرد "
"عليك قريباً."
#: core/templates/core/contact.html:24
msgid "Phone"
msgstr "الهاتف"
#: core/templates/core/contact.html:48
#| msgid "Contact Address"
msgid "Address"
msgstr "عنوان التواصل"
#: core/templates/core/contact.html:57
#| msgid "Send Message"
msgid "Send us a Message"
msgstr "إرسال الرسالة"
#: core/templates/core/contact.html:69
#| msgid "Contact Address"
msgid "Email Address"
msgstr "عنوان التواصل"
@ -1273,15 +1328,25 @@ msgstr "توثيق آمن"
msgid "Digital verification of truck registration and driver licenses."
msgstr "التحقق الرقمي من تسجيل الشاحنات ورخص القيادة."
#: core/templates/core/index.html:230
#: core/templates/core/index.html:231
msgid "What Our Customers Say"
msgstr "ماذا يقول عملاؤنا"
#: core/templates/core/index.html:232
#, 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
msgid "Ready to move your cargo?"
msgstr "هل أنت مستعد لنقل شحنتك؟"
#: core/templates/core/index.html:231
#: core/templates/core/index.html:270
msgid "Join thousands of shippers and drivers on MASAR today."
msgstr "انضم إلى آلاف الشاحنين والسائقين على مسار اليوم."
#: core/templates/core/index.html:232
#: core/templates/core/index.html:271
msgid "Join Now"
msgstr "انضم الآن"
@ -1729,7 +1794,7 @@ msgstr "تحديث بيانات الشاحنة"
msgid "Register a Truck"
msgstr "تسجيل شاحنة"
#: core/templates/core/truck_register.html:47 core/views.py:84
#: core/templates/core/truck_register.html:47 core/views.py:89
msgid "Please correct the errors below."
msgstr "يرجى تصحيح الأخطاء أدناه."
@ -1746,20 +1811,10 @@ msgid "Load Capacity"
msgstr "الحمولة"
#: core/templates/core/truck_register.html:87
msgid "التفاصيل باللغة العربية"
msgstr "التفاصيل باللغة العربية"
#: core/templates/core/truck_register.html:89
msgid "الموديل"
msgstr "الموديل"
#: core/templates/core/truck_register.html:94
msgid "الحمولة"
msgstr "الحمولة"
#: core/templates/core/truck_register.html:99
msgid "اللون"
msgstr "اللون"
#, fuzzy
#| msgid "Truck Details"
msgid "Arabic Details"
msgstr "تفاصيل الشاحنة"
#: core/templates/core/truck_register.html:127
msgid "Documents & Photos"
@ -1864,144 +1919,145 @@ msgstr "لم تستلم الرمز؟"
msgid "Try again"
msgstr "حاول مرة أخرى"
#: core/views.py:77
#: core/views.py:82
#, python-format
msgid "Your verification code for MASAR CARGO is: %(code)s"
msgstr "رمز التحقق الخاص بك لـ MASAR CARGO هو: %(code)s"
#: core/views.py:79 core/views.py:157
#: core/views.py:84 core/views.py:162
msgid "A verification code has been sent to your WhatsApp."
msgstr "تم إرسال رمز التحقق إلى واتساب الخاص بك."
#: core/views.py:82
#: core/views.py:87
msgid "Failed to send verification code. Please check your phone number."
msgstr "فشل إرسال رمز التحقق. يرجى التحقق من رقم هاتفك."
#: core/views.py:130
#: core/views.py:135
msgid "Registration successful. Welcome!"
msgstr "تم التسجيل بنجاح. مرحباً بك!"
#: core/views.py:133 core/views.py:194
#: core/views.py:138 core/views.py:199
msgid "Invalid or expired verification code."
msgstr "رمز تحقق غير صالح أو منتهي الصلاحية."
#: core/views.py:146
#: core/views.py:151
msgid "Your account does not have a phone number. Please contact admin."
msgstr "حسابك لا يحتوي على رقم هاتف. يرجى الاتصال بالمسؤول."
#: core/views.py:155
#: core/views.py:160
#, python-format
msgid "Your login verification code for MASAR CARGO is: %(code)s"
msgstr "رمز التحقق الخاص بك لتسجيل الدخول لـ MASAR CARGO هو: %(code)s"
#: core/views.py:162
#: core/views.py:167
msgid "Failed to send verification code. Please check your connection."
msgstr "فشل إرسال رمز التحقق. يرجى التحقق من اتصالك."
#: core/views.py:164
#: core/views.py:169
msgid "Invalid username or password."
msgstr "اسم المستخدم أو كلمة المرور غير صالحة."
#: core/views.py:191
#: core/views.py:196
msgid "Logged in successfully!"
msgstr "تم تسجيل الدخول بنجاح!"
#: core/views.py:262
#: core/views.py:267
msgid "Truck registered successfully! It will be visible after admin approval."
msgstr "تم تسجيل الشاحنة بنجاح! ستكون مرئية بعد اعتماد المسؤول."
#: core/views.py:265
#: core/views.py:270
msgid "There was an error in your registration. Please check the form."
msgstr "حدث خطأ في التسجيل. يرجى التحقق من النموذج."
#: core/views.py:281
#: core/views.py:286
msgid "Truck data updated successfully! It will be reviewed by admin again."
msgstr "تم تحديث بيانات الشاحنة بنجاح! سيتم مراجعتها من قبل المسؤول مرة أخرى."
#: core/views.py:284
#: core/views.py:289
msgid "There was an error updating your truck. Please check the form."
msgstr "حدث خطأ أثناء تحديث شاحنتك. يرجى التحقق من النموذج."
#: core/views.py:301
#: core/views.py:306
#, python-format
msgid ""
"Your truck (%(plate)s) has been approved! You can now receive offers for "
"shipments."
msgstr "تمت الموافقة على شاحنتك (%(plate)s)! يمكنك الآن تلقي عروض للشحنات."
#: core/views.py:304
#: core/views.py:309
msgid "Truck approved successfully!"
msgstr "تم اعتماد الشاحنة بنجاح!"
#: core/views.py:315
#: core/views.py:320
msgid "Truck has been suspended."
msgstr "تم تعليق الشاحنة."
#: core/views.py:330
#: 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 "تم نشر الشحنة بنجاح! هي الآن مفتوحة للمزايدة أو يمكنك تصفح الشاحنات لإرسالها كعرض."
"تم نشر الشحنة بنجاح! هي الآن مفتوحة للعروض أو يمكنك تصفح الشاحنات لإرسالها "
"كعرض."
msgstr ""
"تم نشر الشحنة بنجاح! هي الآن مفتوحة للمزايدة أو يمكنك تصفح الشاحنات لإرسالها "
"كعرض.تم نشر الشحنة بنجاح! هي الآن مفتوحة للعروض أو يمكنك تصفح الشاحنات "
"لإرسالها كعرض."
#: core/views.py:334
#: core/views.py:339
msgid "Please correct the errors in the form."
msgstr "يرجى تصحيح الأخطاء في النموذج."
#: core/views.py:385
#: core/views.py:390
#, 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"
msgstr ""
"تم استلام عرض جديد لشاحنتك (%(plate)s)! المسار: %(origin)s إلى %(dest)s. "
"المبلغ: %(amount)s"
"المبلغ: %(amount)sتم استلام عرض جديد لشاحنتك (%(plate)s)! المسار: %(origin)s "
"إلى %(dest)s. المبلغ: %(amount)s"
#: core/views.py:388
#: core/views.py:393
msgid "Offer sent successfully!"
msgstr "تم إرسال العرض بنجاح!"
#: core/views.py:392
#: core/views.py:397
msgid "Error sending offer. Please check the form."
msgstr "خطأ في إرسال العرض. يرجى التحقق من النموذج."
#: core/views.py:414
#: core/views.py:419
msgid "You are not authorized to accept this offer."
msgstr "أنت غير مخول لقبول هذا العرض."
#: core/views.py:429
#: core/views.py:434
#, python-format
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:432
#: core/views.py:437
msgid "Offer accepted! Shipment is now in progress."
msgstr "تم قبول العرض! الشحنة قيد التنفيذ الآن."
#: core/views.py:444
#: core/views.py:449
msgid "Offer rejected."
msgstr "تم رفض العرض."
#: core/views.py:452
#: core/views.py:457
msgid "Privacy policy is coming soon."
msgstr "سياسة الخصوصية ستتوفر قريباً."
#: core/views.py:462
#| msgid "Terms of service are coming soon."
#: core/views.py:467
msgid "Terms of service are soon."
msgstr "شروط الخدمة ستتوفر قريباً."
#: core/views.py:509
#: core/views.py:514
msgid "Online payment is currently disabled. Please contact support."
msgstr "الدفع عبر الإنترنت معطل حالياً. يرجى الاتصال بالدعم."
#: core/views.py:558
#: core/views.py:563
msgid "Failed to initiate payment. Please try again later."
msgstr "فشل بدء الدفع. يرجى المحاولة مرة أخرى لاحقاً."
#: core/views.py:587
#: core/views.py:592
#, fuzzy, python-format
#| msgid ""
#| "Your subscription for MASAR CARGO has been successfully renewed! Your new "
@ -2013,52 +2069,62 @@ msgstr ""
"تم تجديد اشتراكك في مسار للشحن بنجاح! تاريخ انتهاء اشتراكك الجديد هو "
"%(date)s. شكراً لاستخدامك خدمتنا."
#: core/views.py:597
#: core/views.py:602
#, fuzzy
#| msgid "Subscription Renewed - MASAR CARGO"
msgid "Subscription Activated - MASAR CARGO"
msgstr "تم تجديد الاشتراك - مسار للشحن"
#: core/views.py:627
#: core/views.py:632
msgid "Payment successful! Your subscription is now active."
msgstr "تم الدفع بنجاح! اشتراكك نشط الآن."
#: core/views.py:633
#: core/views.py:638
#, python-format
msgid "Payment was not successful. Status: %(status)s"
msgstr "لم يكن الدفع ناجحاً. الحالة: %(status)s"
#: core/views.py:635
#: core/views.py:640
msgid "Failed to verify payment status."
msgstr "فشل التحقق من حالة الدفع."
#: core/views.py:641
#: core/views.py:646
msgid "Payment was cancelled."
msgstr "تم إلغاء الدفع."
#: core/views.py:705
#| msgid "This email is already in use."
#: core/views.py:710
msgid "This is already a refund transaction."
msgstr "هذا البريد الإلكتروني مستخدم بالفعل."
#: core/views.py:718
#: core/views.py:723
#, python-format
msgid "Refund issued successfully! Receipt: %(receipt)s"
msgstr "تم إصدار الاسترداد بنجاح! الإيصال: %(receipt)s"
#: core/views.py:731
#: core/views.py:736
msgid "Application settings updated successfully."
msgstr "تم تحديث إعدادات التطبيق بنجاح."
#: core/views.py:744
#: core/views.py:749
msgid "Your message has been sent successfully! We will get back to you soon."
msgstr "تم إرسال رسالتك بنجاح! سنقوم بالرد عليك قريباً."
#: core/views.py:747
#| msgid "There was an error updating your truck. Please check the form."
#: core/views.py:752
msgid "There was an error in your form. Please check the fields below."
msgstr "حدث خطأ أثناء تحديث شاحنتك. يرجى التحقق من النموذج."
#~ msgid "التفاصيل باللغة العربية"
#~ msgstr "التفاصيل باللغة العربية"
#~ msgid "الموديل"
#~ msgstr "الموديل"
#~ msgid "الحمولة"
#~ msgstr "الحمولة"
#~ msgid "اللون"
#~ msgstr "اللون"
#~ msgid "Registered Trucks"
#~ msgstr "الشاحنات المسجلة"