From b4a62485fbdeca11d9166809ef5ba0b29a0df96e Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Sun, 25 Jan 2026 03:46:27 +0000 Subject: [PATCH] changing profile --- core/__pycache__/forms.cpython-311.pyc | Bin 23476 -> 24199 bytes core/__pycache__/models.cpython-311.pyc | Bin 40501 -> 40643 bytes core/__pycache__/urls.cpython-311.pyc | Bin 3892 -> 4124 bytes core/__pycache__/views.cpython-311.pyc | Bin 49354 -> 52963 bytes core/forms.py | 13 +- ...e_email_verified_profile_phone_verified.py | 23 + ...ied_profile_phone_verified.cpython-311.pyc | Bin 0 -> 974 bytes core/models.py | 2 + core/templates/core/profile.html | 256 ++++- core/urls.py | 2 + core/views.py | 63 +- locale/ar/LC_MESSAGES/django.mo | Bin 35270 -> 36081 bytes locale/ar/LC_MESSAGES/django.po | 890 +++++++++++------- 13 files changed, 885 insertions(+), 364 deletions(-) create mode 100644 core/migrations/0029_profile_email_verified_profile_phone_verified.py create mode 100644 core/migrations/__pycache__/0029_profile_email_verified_profile_phone_verified.cpython-311.pyc diff --git a/core/__pycache__/forms.cpython-311.pyc b/core/__pycache__/forms.cpython-311.pyc index 024c109800d7d9de17a0df3a6677a4e44d6e7f8e..4888ecb1ea10504606c985d72f3632d074a6fe66 100644 GIT binary patch delta 932 zcmdn8ow0o{Bj0jfUM>b8Fr8SMxzchYUyBcu3ghJWOmdTd`It|B>9bj(gCUJEg}a3# ziZ_K1%;s(3i~_PM7^C=u88rDPZ}N3wI>InHUEX)Hr@h4F5ArIL&)RcNj@0Lye8Qd& zM6;zZ&S8z>p4{Lk$;di+mY=lwExy#;#LS%dvecr?w9M3$TYLo>`FW{uevv59O+{iL zLL5Y>0tr7&p2=tYjQDSHdt|1hq~>|%6_l0~&6%9&B0PCNC#&iYpql$YT-*&L8sPAT zfOrS%4Z(~HU^Lm*-(BT~oc@f|D{}f5ePCdl{9aFE^A`USCdSW` zHG^jI{0ACZWC0==7$=_#3SxXUSuyyXcrqhU2nJYz3}zty{A}_9vAJ@^$~DZziY4qY zX$FQY78tvPdvdn8^kh|0k$M)tqF+GaqTfKG%FeMwAtyDlxI_UM916+#c_oR-B?`Hz zB^miC3L37UKvT#sQV0NrmZm~(DNtcjssbz+^)%Uv0zhUJfQSqb0dh}KCWwdt5}K?< zaUga&h=ABSd0wbQJxG0(U_eoRT4qkFTYgclUNX=Xc_1eh=K_fz4Gee1WhRzSDW6_D zsdi%hl==>y8PhK(I!CGzPXAlw@a>`M`jM5SlzcTzm3?aMsPI!W9@9c{jg~n80Ld Z%qaeW0h5@ZIz|5@Nc;;H$s!e?ivd;24JiNs delta 405 zcmZqQ%eZAbBj0jfUM>b8P;D>GTx7nHuf>N+igEILCb`MKe9R}m^w}(y!rQ@+#+bs> z!Wji*RWL^J1v6;!P2S_{#Mm?Wzi;d0eY)(DY(O#gUjhL|`DvLssc!j2xq7~-C5f8M zlkfOR3l@n2Z73205#k_1b+V$K*kn6@C8nY|lM`KpC-3KE<@y1Xxevs}`I9I5i?F*~ z5CoygYy90OKi4zZY#&g<#Q1UYmY|tDe?VqffQY{glOuzJ7+*|Y6Z~%TkuVoVcCZ{! zm_I^Z0?G!eGXW~rWG#vV>G{tv*)2j_t!^he4 zxQ}!1Id_j8m(HA!A`V7Gglfd+T3@^K#?gomBXup3Mzb9ah0FPz@rwboqAXw}jx#x8 zdNj4sxH~EpVsJ1jb$YBE=ZNpoydvTc(ID!lcA_Ie_)Y55G=U?rC%87=ktDt+^l8>X zZ6XhUq)dXvyw;d6K{dzd2>|u{V9XqVM*ewhLJ&0bpoA8HBy=VAoBamaWplRHcgW1y z9Q&BZ>GHWO?jQ=V=DO`^K}V! zawXXSa0I(kieg?Bi}#Q7H2y-i`xL+4&SaZUW`9P1%FkgBMx}NZ92XvJGPy-85Vk6( zOD=KBtqyjK3|WLh!t3M`uJ~*|r`;v{T09PR28&83gwhm@(1Ty3p2y+6QTS112)~%d z^l%iRBo1q){vHM~$a)7Z;dj;qxQx-$ir@{ta+(38(;B>mlklnRyYN?Bmvcvdk;c2i z+j12NhWTeRy0!2hY{{>IPx)K<+rWB>>{AGr34bSiM7TzHkMIG(Pq>Qhv&`@=K07Pj z{4b&Khm<&5M>cq!96lv{M)(}B&Wf%$OQO2Bb_j{L1%h~8>GKlY#*2}0+_dCzN$j#cGzq)Px}XrX<;59c6t5-!f(JqDF_Kcq z5JXZkN$0Sw+>#U_M1Qc|q^^wUf z6i*DN3Lz}v6Q2;5JQwg%WGtVz@=Gn;L+h$Caqyc~^+m@E zmu9gl^^>7xi4>QF6IXwsn=eE+hSa?b3}3CA3B~x|x`psI=G0Gs2rRC*LmK|Ber;$W zg%DQq%!ZdFDC8F!4@zPdpWGP#C>duEjA9DEZYgufjEPpLVWKp5#^G0c7a79l+1zfK zS<7Ufja6e~(`;Rx2-tahd@DIoC%P1iuu=(S2F-Drh5$?7JU$zUO*h6H zZT=IaUP*`|*BT*JvAHDHlJXu&PYP*6`24`3n$wHRGnfTaJy}Vs$VJToB_)uaWh7M) zhS2Mo9z==5`&H4nrK=QmUMn=9ZC|2pgHXSMhVEGOcB<32x^9Xq$51TXZV&#!6aq?v*PxS z%@L=`?Ja?fAfbs`Tc~?lnBU|p)@mVVJ9+B;<63Nr&F5omm-rs&i;F32G*-*hD(k}? z>oRn^h1XgB`np3Be1P_ibKo={*tj$%;6WpFieSI4nR(j1YzGE!D%L$O)E9W=rnsO? z6L~}vzNR_8Azyt-(W1wT7l{AjO_d$&Te5tI{hcX#sxOv+r#jEKQ%q= z1O=TWR1!`J_#V+_1eQ%n0@_T#D`jOsvxHlhiMpQ9Az@7x^{nKfp)L!L?dyPa%)&D;1#jXleU31( z%W7S2Rg13++xyM>JW_Y#K>y6G@6o&u6&96~U(du->u&y0l?7^x{C~Qky-O~`gt2Ol z_QMF#v~0fo*+>b_qy4$Fdi5@yLhJs#h3fAr^>>8&ZW$>?eTvk_g*v|47}eTkRF;fN zi&3$t$E&8AoyWub6W|m6&i+<-v|RiEy{Q?SeNDSsZ>hGsKlW&lux%ikcMS|m{|9Oj BCW`<7 delta 2952 zcmaKu3s6+o8OQg#EGweO!$c69n2FP*o#<#Yt(|Dk|E?_#GUc*&8ITalPv9$c3P^)Gome`a;PUo{vNi|(nyuVjk36f z3e7QoY@eb~x$(#N!9=T!FB4`Gtue+VC0j`~<|Nk;CG+tSFK|`LD&-m(=TjVHB&Xd} z=oy332NAu_F&TvkugM96{d{ZJsqTOtw7G@q3aH{&T$Aw>b@Iy@&2*AeM<*5-(oT#6 zP5^JhZJ-`-1vGc98mRGk#5)*I1=4_#0HT{{<;KyM=rwN6Pcpvu9buzm{G*N}zBT>` zo!~CV-IVuXxgO{*5sV6mdiQ!~pvkW~T|#`w2eS+5E#vd-L8P3q@V4iNaqNV9w)4_f zAIr^JB9EGQ&GsJruW_Lm!p#*{BQdv9p(}y#bg~?e(whSN?Nc{jC zU!F45%l;6OcuM-LyEW1sw_En`LE0gwu$0p0CP>D z)o^TdVq_c)0Egi!oj^()@keQie6;K)PV3_RRLqVga~5ZX zEC2LtKF~UjFRl)dpYxnkX%;s)ONP8FU4l_qvdbNCsAw@|uRoJVXL2 zjJMYuP$z=F>bE%Q90kPnjXGVT5RQ<>Yvj0 z`D*ox*0u6CpUoM{&(sXF?SMNfwt;K)2+qZ(cQ~~ROb^Mu@F@GAwFEGJs zNWCX%6vlchs2W;qyYF!-#~7d+=7CGxKRCEVrDrq%pa z*NE^&>3ER$wI=d6{?+8-l~0eiy@FtF{^8S&@hZej8N)30)KE=SbFvs=I|>yt*BGxo z$;!(gi8R{@sA^>_V?dYjZeYF=0WpijI3CilCF%^!&Prri<;cqo`QbaI`m}Mg zA&e$$hovppug0aj0s$eOmA^y1a30)xeZz!Vf;%{&DJ#4~TAeeBnqF1tD&N^Olg@C? z=F)_a1tK&{=U{lX@YVZ8JMZ3H6uwsu|JJy%ImtR^Ff8oAUCeP0wzlHJxeJPB%m1=M zWZV8HG+*AW`e+{Q@UsV1ej5h!o#GO2p9XsM=S1;VLc3z)eX*Nf*pP4@C@Xi2m zK?Y+2y=yeD<4`L%&&WXj$BxnRJHp%&J3sEEmV5Z?Uk;_K{>(%2z*_LZQUGBlQD$e#b?MWqaqMQD|M_BybL)L(R8V z)peJ=o*%7dd*|5bZfF6ktWW(GU+FiLuXkRfZsUzzt}yw|;<^fACc>z{Qp<+qf2BG0yJ~h?y1`@BS4?ZL_G#=LVknQRXp?%v}TD;0jYH{OWe H_Y38}DU2&* diff --git a/core/__pycache__/urls.cpython-311.pyc b/core/__pycache__/urls.cpython-311.pyc index 93c31e05fea74adf88a2730765fc21498c0aba1f..6d08370bf1dd4136eef5ad06a81b6874344d8aec 100644 GIT binary patch delta 618 zcmdlYH%EbQIWI340}y=fD9tS9n#d=?7`IWKpLMbTBP+jaDsz@PND>56+$KL@6xVbI zifKSZfMOnN*p@LfFsue*2$;wirJ3Rx%%JJD*^V`pC9q1cpeR2rGbdHQI5jUtH@~Dn z|CRuV84qN}L*=T3VT#I9i!#$HAE0Fzxje(W3!Q}#{@`BJSs!kU?lP<6%Ut~$X z!jk-f9VE{ImhX_5V0uMZb%px{7L$uCCRbQYK5!~e-pDNvH1#64CXoEiEdwMacx1t* z3QaEHm0}WBo*c#_R}V5q3~G(W3e_uGwg>z#u!LM>3Aw@&@NQ0zhAa0bKA$mnpYlG|s7W<1V_E%W!Kgfb)Cx7MvIZc39 z7D(#x$^l7VFqy*(a()k(T*C`ea}vyc2_`xDlh?1V~MO`ZVs vr!`O~AIRJnU`Y;sIZ!ZvaAE|>ayT=BI4+En-||WcxPmwh+#pzF42&B9vBj*5 delta 393 zcmbQEutkn7i%gDv!ABMWCyPQ zlRde8xr~9T8G*RiVDbWP2S&xo54oj)IIJuNZ z6DT~NM+Qjlfl3NZzQ`xVB&<037mplJSdv!`tVd$9EUzS!q~hdoUb%XZAu#kgOb7_5!Ec3f3zcwijGNFR+ANWC^>%681qJB(H#w zU&Fs6`vQyCMHa6sEM6ZJL9$9vS>*+xS5!@R_*`J|yvX8tg~juOGDv#z7hY+g(**cH zo-zQF0em1oLyFg;!04EX zZVlN4xor}i8zz%sL{kDW#%vkeglzkC$1b5^A#+*yuy5Tr;)iALdw>F)bMf-tbML)> zp5JqM?|FVYkNtif(|)PZq#)o*L^}gtUA?SLMc3v=OXVMkl`|gA=Tm`}Q5P0~=4- zv|Jw6ukHkoUaVK%n#@gTw-mAZF!pqUR?+GJx^ZhQvSEcRY~nt%r*S7HNNp_wDr;9O z_d`Keg4T@!CATFtkT`<(;@3dMYsht3L;=;A6yy4hB_eV_`pA)%N*kcCH9Y~eM*#?u z!e(yFk-7Utlon=4O3BS1L7TYCca8RJB%Hcd4MFS(n-@`T`r35vw+Q4YY~51L)`G<@ zwhNpB+YO-}LLG!NU}gb7>uc*|*khp2z6pT?aJ0wh@&(!$+7=GlLQFetV@`wj1-zpr z*v_yXuw((-Q&Pgxpx2Y_33jsF5z^2X2$k6!xlKWu$qTUzoU?A?sc-RxLzNvJw$n@~ zssa!5IB7IaynE-Q*ZQt1cl=TsTIDr1qPL~`pG z!;?hq?f)*)eA|VD^hvB=_G48!$afA4!0+XiJHX>%F?^XZ>LKQ&xF~F9hs9;Y zX0<5j&l+)ntBKR{pNS)jU{d&Oa}XI3If#Ii)d(mKt3m12t2K%H=3|Q%W(_SHSB-*S z;x@+p+M2J6;OzmhOTD`52qY`e(ArJGq3BgS367+HV@{HoiKom)z)WuRFRcScHznb$ zvlkyp;e5)MjBGxw@5N85)`WryHJspX#)xc^);})*IcH7=j6d$jm;nQU!R?;#oHjl$ z99YRllEtKaxCqL#A3|$MuDS$!@58YH&^sz6M~`{U&q3D4baez+5F#)TxEqsMcFDYz zaL0ZKmmshZ-h(gzp_}__l3MR#sr*N9>WP)1i*w1d3>)xwZ}9OD&@l*o{4?mhfRE#Z zVW6wOYgi!=R*|qq+-Q-yO>VT_r!^RFM{sX~FO6REm+s&S5L6sQv-bt3AH zx}RaxzGpf0Df4~r4>W(=Co!KAsZ;Y*^BmPIPyvw&K;|Wbb*zdnKg8P(gC-cNMME{O zu70F4B@jHh5gmScKCNIbtw2aC6w?Y<#^PCys9RK9;`Qn+12z3Mf;v-FXY%UIMT2#O z8he$u?Gy~VM8hs#y-VW%x{|M`7s?yN@&?}K0ZlM?MT3`DdzY7<<>Y-&oV*Pj)r|vt zt16I(nUyGb%vdcDD^grLv00_Xm5N_j62l4)>js7X E26$+UlmGw# delta 139 zcmaDnm-$p9Gv9JvUM>b82x>3Qyg6Yap9G`OMs+)8M(fFG%$L|wB!d|=Z8mqYgso+) zn*4C1Fr((?uN!YOF?MXexFwB=Rg=+Avv~8mBazIi9gGYND;bKsfMykW0Eu55Ho5sJ hr8%i~MT>w^K*UfSvf1o}51RmkE~6vk2QUd%4*>3`C|Cdh 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 0000000000000000000000000000000000000000..fff0bc2f0a5b889c968eda1fe81ed7ad5d82b79d GIT binary patch literal 974 zcmbVKzi-n(6uz?^$2LtxEu?_j0VIm>Qnx4rNEH$cMMBU8iNVXs^}VJJw$IoxKeh}Y z!Pcz{a{-?BQ7P6pR$~1X1M!qAK8?S_d5q>Bmg-RI0r|PUE*UI|{eru$%e) zkR>_SV@4s$gE~@vjj1yJB7`FZ$iozQ3dLRQsR{zER~IExQ+cBIn$s9WwUfp%7U{)1 zStt5@ISV&5|MiBh;u+KsluT|uuek_fTEH^kYnz+*?vpfQ`(Xr^-!SMG!rGh~_%g(P z7?C%Sh5I4U9S8F!g?+z>`i?4kB>O@VKL)N<*brV3<;&>-OJEkZD{3%E1WNwwJa!nsRD=lQMeX@qe>ZpBlv~p`?uOHqS+Uwuo)b9MWJ43ruHZ{{aLjukv z{6|FVimeZx%AH-W>)LfRZqlBgblC>ot9n^=a8h|&x>de6gmhtSPX_WZTNSGOC-avA jN)=-)*kI=r-CcZ2eFf_!T7*Muc=h&~G@Sp%TIKx%(+~Nj literal 0 HcmV?d00001 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" %}

-
+ {% csrf_token %} + {{ form.email_verified }} + {{ form.phone_verified }}
{% if profile.profile_picture %} @@ -58,7 +60,18 @@
- {{ form.email }} +
+ {{ form.email }} + +
{% if form.email.errors %}
{{ form.email.errors }}
{% endif %} @@ -74,7 +87,18 @@
- {{ form.phone_number }} +
+ {{ form.phone_number }} + +
{% if form.phone_number.errors %}
{{ form.phone_number.errors }}
{% endif %} @@ -95,7 +119,7 @@ {% trans "Back to Dashboard" %} -
@@ -134,4 +158,228 @@
+ + + + {% 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 75f7c1755024b4587fe92261da013821d2cf6e1b..53b09cdff9463125e1bde7fffaeccbf32b7ee9da 100644 GIT binary patch delta 9608 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 delta 9093 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 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 "يجب التحقق من وسيلة اتصال واحدة على الأقل (البريد الإلكتروني أو الهاتف)."