From 3e89e1f1f0bfbff4feb2ea95e1e0efff77edb5b6 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Wed, 21 Jan 2026 17:01:45 +0300 Subject: [PATCH] 26-1-21/1 --- android/app/build.gradle | 4 +- assets/images/shamcashsend.png | Bin 0 -> 31784 bytes collect_code.py | 24 + full_project_code.txt | 85287 ++++++++++++++++ ios/Runner/Info.plist | 4 +- lib/README.md | 194 + lib/constant/links.dart | 7 +- lib/controller/firebase/firbase_messge.dart | 134 +- .../firebase/notification_service.dart | 106 +- lib/controller/functions/audio_record1.dart | 2 +- lib/controller/functions/crud.dart | 9 +- lib/controller/functions/launch.dart | 25 +- lib/controller/home/device_performance.dart | 127 + .../home/map_passenger_controller.dart | 4152 +- lib/controller/local/translations.dart | 21001 ++-- lib/controller/rate/rate_conroller.dart | 2 +- lib/views/Rate/rating_driver_bottom.dart | 10 +- lib/views/auth/otp_page.dart | 152 +- lib/views/home/map_page_passenger.dart | 31 +- .../map_widget.dart/apply_order_widget.dart | 604 +- .../map_widget.dart/cancel_raide_page.dart | 209 +- .../car_details_widget_to_go.dart | 778 +- .../map_widget.dart/form_search_start.dart | 108 +- .../google_map_passenger_widget.dart | 2 +- .../map_widget.dart/left_main_menu_icons.dart | 36 +- .../map_widget.dart/main_bottom_Menu_map.dart | 12 +- .../map_widget.dart/ride_begin_passenger.dart | 791 +- .../my_wallet/passenger_wallet_dialoge.dart | 46 +- .../home/my_wallet/payment_screen_sham.dart | 270 +- lib/views/widgets/mydialoug.dart | 2 +- pubspec.lock | 20 +- pubspec.yaml | 1 + 32 files changed, 101957 insertions(+), 12193 deletions(-) create mode 100644 assets/images/shamcashsend.png create mode 100644 collect_code.py create mode 100644 full_project_code.txt create mode 100644 lib/README.md create mode 100644 lib/controller/home/device_performance.dart diff --git a/android/app/build.gradle b/android/app/build.gradle index 1d656d3..9968faa 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -47,8 +47,8 @@ android { // For more information, see: https://flutter.dev/to/review-gradle-config. minSdk = 23 targetSdk = 36 - versionCode = 45 - versionName = '1.0.45' + versionCode = 57 + versionName = '1.0.57' multiDexEnabled = true ndk { abiFilters "armeabi-v7a", "arm64-v8a" diff --git a/assets/images/shamcashsend.png b/assets/images/shamcashsend.png new file mode 100644 index 0000000000000000000000000000000000000000..0814517fe4cee765a9aeda94b595de9ae9456326 GIT binary patch literal 31784 zcmZsDcOcdK|9?&tO(SU;8Od%cGESv%gp6Y!lu%ibBcp?J>sA`bN@Qflu`)wOrI1SY z3PqH295N2szvufL>wdn!Kklv0d7amIj>mJpUVi7bR5x$fwPDSgHJjDdRCL#@Su3z+ z4Jw;;9eg5{QWUag4f`5(m6Q7JOoN?l&m?ii{NJzY9AKyEacncjtvU0a_sk_vGb{9& zNB8gSAA0e9`=g5ehvQXlIq$vS!?~S%v)}#Q!ko7nxVSkuRQCFAAo}iSy|*#;)wfS& zWu~V)ixdx+JR8c$@EjVBPMK@;iq`AYb27x%n&L(R)-a)%S=j~9zVMgbobIHL$|&Z1 zVatNW4~ak6)X;ZYewmy@2GBpWv_o+Qrq^{GT>7^=%H$jx)w6>!31f^EjCrI}aN|zCg~LCr5;8GS*|eXN8=Sm&ct(vcM_+eX~_bqV{J0 z;Rk1K_I(T`C;Ln%lRCO4^0AyzSPAbBhohah+g{WfBsE|0LNVWGeQ_IY3rCC^*g%B& zEOStWLD>ZbhJ!?!`3W2B**zfQ!2-f+Kr zV}HHBsN#TnQ|4TICU=U42!ojBK&98Z%|d8PYbI_<(Q7ju-KCy&56oQ+lxTX&_`>`4 zXXxCK2igswMOle(2p+cC>X=z|npn)Jm~G$Rzkls%7V~`;N|6hR7SoB?=mGaZD}K|? zVed&&*F3emw1}4OgdUlf zO3`B=4PSRMv8mY>oe}_2giHNt@tJFBl9{WQi3;uao31gR$j+J4zS+Y?k^zQCN55Ej zD>Hj4)G7934zKd$b!9`sPgUt%bm@mg*{B3bd;X_(w9?=C z`-ZPC7JYV_{othEJxS;`?1aNc4*AIEjP#0WdtgG32N})1;h%luTAexjF;jo5N7d=n z^@_hwV%v3RX4_)s+FT3y5$X2#Rci-T$-j36lxy$>n)BAP1ku?7ui}E5?-8S4?<$Q) z4Aks%`6q@ssjzFNba+Nqlq9@W+x;z9#?u>J6#?_V0}Pb^-cok&>bdeyu*A+nvTkO` z&;IL5zpf|MkUe%bQ|&C?S0DNpQJo?w5D&M7adG)ad(oDMQR*8;LyLT7D}Bs5$p!`T z9al2=gw;JF3p^slyM045s})V%(w=u;UA^!-bpbxB=jEh?rq!P@j{9AD^<<0THf@U{3vht2ye2o z)9k`MRfV32pS=xA)P^KOv-;AQsi!f8&LYadZnR}GsL+Wf+&>~{-}3h;59yxh$=AQe z<@`Fn^~*MtRqJ4z+RkPYsCLP{9$`J5UDVE`URuDUN6ci(kY`J=!LhQb&&hr@h^!l^ zUmX2ZJ$bWsQr~H=*+~(1l}X_9Skn{9^sw`=bu?y|J|2nqX~zSP$L^TOoTxvyK(m42R9N|X&vmjU} zD3-}}YN5T!$=<0SsaSlqgVkqR&hW9@Dy<%zBl z`?-fdDc5~Qczj-_YRqjmp2Bo~n(^KG*Eda;u+LiFWm>4f;i#2D6t<7zepnx|aF#ci zr5Dm)o^aq0LoAo1z}HfIs(1J-|NIaBjF}|T?2k7^WQ85(3!4Kz)lBa+*B^2Y@G{H! zi~Jw!G}(Ww%p;=l=T@%%?b*V|ea4RY9LALu;!59B?)v<_n>;qwJD~03Nh|4|DcMQA z#<2@oBNxn+14jcKddEHV*hJD1InjBKs#$eyPhFb%FwOia-eC0T>uwsZ8%vma;^RSk z$v^YbcI@z>TK8{ooO*a!u{rxMTRuZ?s3fq<)HANf@9YyhNX`v4&4(Dhm8qy z0Ew5(Ump1qRj~whFyFvGe_^ zV{*a5;vQdwYxIV$-94fIdEisceDr8Y@+JMfVA6@a+X8(DEt92oWH+&~w>lH+F1u=O zjHop`QkkRcCGTS^G)Ad6i@x+7u+`jE_O(mj$MGM-3Kk=E{Bw11=pfR*?zzrxoFes# zcFj*?b=^R}y5F-#PChdohErYw9`i!9OLI2W{AbT8epZeS@ADWE_F0H8`Mj3@Z@GBw z!%Mt$kaJT-qq0vBM07!rwPMee7xId$pTzO~@m>E6J1b%_DuPv1em7y*)U_}_S!Uxg zzvf5Vhh(9xUajv^Zx-wG{qaUXtk)0MMoJb0)^;(#Wwkl>sYFu@JWz~)x+u$Fv zqJhDGx6Wj3CArM#&Ab_}yR6?Au(N9{dh(ePPyOqEvajBr61rQsIc=UodD8TRAWHn$ zEpo-D^N)3hi4vMgb00c32kgriw@2kmULM$)=yGcg4YV{@_A^A`8D9`D!nlhe;(}kd zAJFtIFJf`@s4+D_;P4A3sij1l2AJbpeia5a&Dv`s{)Xu`cf?eatF^sHjjNA&X})6s zh`a>Y8T%I2hl`VEd7%XNU3==w{PWP>8U*7PUCI6X1enCmwq;ZuS>6N_3c&``3iza0 zCYFVYU{a26xOM`z=&9??A;|6}L5 zeZhjNy>)dukF75I_>`$BTxq%7SUZ2N10#S>uf^o1WLO;`8+2C|`8$MOnD&OhcNkpJ zzTWYALN&grV|%{LVO*Wy6aKn!ClnoH~9g|Gi3&`K5SKa)WZx%j?NMEU9g0_ zFI9ol#=kj}Khhu}-w7GYu+IWWnrqT*W~2g{s!pQgRYKcHrLJ?cGY zV4_gg-c_sI;t2HJlten3TZxJ|yEwKL+_1Q(k-fdMN$T%VKpCq zmHXhXfJ%u;!_H{k=ESbMACes;IP|7V9ec&!#mC2U{&3Cqzjf=@#Y!vD-9`d0bSv{b z{bdxIM?Iy!;!=%nm8W7cXanxS-xG4rt7Yu1%^qoMn>8EDd$Mk0lTcUl)BRYc7Oy2C zMw{M$Ay_`BD&zpBSl7bO<)i*jA3wK5f5A6q=?S;B$*)Xs!|O(*bv)NMTt3gnkAEmL zH}`BZcU^HEAB1I|jZY)8uQ1IBEh&_dK49OAa2i56gp_o3iQ)!Swr^ouQuQnkCNJTv zRG<^~WXFs0LXKzX`87`Te`4b5N*kNSr4tK2Q-luEUWUlu0f%e4 z>ac^JSiE%eVTV|L<}aXa&(>N^&`|v=L@~mGB&5bt5yp5kc`9lA-Nk25l}>@-zFH%p~?FRcNee*ti_ z-F6l{v6W>Q{J`=fKTDI2U55<+oenD(;7AuvbGLSMkhW~yYAC&a{rdN;TQ^n&%VStv zU0if|d3n>#_64h_1m17bi^HY#W}S~o%-|G3i(LFj5yInBLM|JUf9pn8WOtzAM6(K%E78O^$?t|)R!TaolZ*U3UKy76&v9;XQWN_ek$T}Go$WTyN%oXE#i z=f;j-?t{89BGK~s*t@u^PmF+I*B*oQG~?aKpdJ0Z`yrYWlS)-WF&prlUrYZ;;HxQE zPp4vocl2@PJ*a#HqlMdAZ~l9+QkKg} zo7Hr-bY?Q8OBfLkGP8=#<$b7Tfdf0>xRymGr&rL!-XhkEt!hG3WeJ~<%|rl0?Eb+@ z5pmnt4=?V>vJ<$8-$-KE0W)dK&A^gPXVIub;Tg^6m$-?ja$7EdR720ivT&g-%i*_7 zH@u4nR^e8fDTu%01;l0f?!sip*!3IG^mPqQyD*l{#Oh1Bn)3P|dYz9Boi{dfo!FlE zP+Lpu{?sRb*O9`+X}b}{+OD_|d<^BORLifz_Org_NkGKN?FGuH6M}(UX>)UPsTz<~ zc}3Q(uEzTfo$EROR*qosFp-ngTNVVdE%((NqKatjK?G}vZvea3b;ymQ^u(sD28ncQs2UM6G7`*5J3t(ToesIyz+3}CB zET_OVz-Sllw@WaIkd3y{UWv)rCvp(U;4QL(=nw14w;y~fn6-rozvS5FBSd%G+DcdI zO()U25y|=vR{f{=ZE$%QzeV%2w~_Z8?EH-h-0_lv`^&#SyZ2N1IS&b1TT zzUA!9xsMs^zXFR{xZ%Pg|HpxgfRvDCO|VlGK?1`4{rxew^>Y0g(y;c0)qC0g9pdfI;uP?A6At6{vacL! zjwjGJtt^1LniV9VC5e3^kZZocC1;bhv8)q*uNt7o6vb6`S}1ju|$C>#VfuIZ{3r$Hc;ST8f6{WyfRE?XY9EeQpJ zp2Q5`Sy9*No@ED6;HwakPgFpWETXyO^gz0W3ygxcyzXIER}A{V(gfE5X?~T5(*rqX zHy!jR_~LgFY=@#K3^s+a86u9Iz4sX$TJCw;k|z(F1RD%d;N~WJq_`xh-}itr$Q`gj zRFj9Lf>AFhl19R(t-SpFh93`X2E48G|8VF>0xr>i0D({yG46)yYW2tNU{!YxZfVwy zE7MgKiw8Gdkl+S-tm1X(={7&nvu9B9>B0^g1X5ToHMi)?tPHKF?EBoO;o&VY?_B%Q z+p56vJ!Jj+OTg=s;=NZD__k)a{@O3eU;XO5Pyg*Cm9~x!374Cp_YyPWUwaCOY%iUU50Cs2J{fkU~P!ixl< z%PSN+>R)c**h0iI+b;ste@WNM!gLT()bjr&-Pbcr2dPMzqQ&#v>y;_pKq0f=MYU|{ zT&0jJ%(diUuAqBXtGqBef6zc@2+I%&bW5+SSlSD?M;lQZAHdn={9?1R3acbA!}!~$ z?ab|~(7PX!HlNt6k0LDp9p@X4Obia5ut0IMRS#l@=tn+@-ozXRBPH2v4=)J^e6byL zMAEUj>+Q+>P5J8!T>4qfUyoeJ|%4pL2 z_#04JUh;g8o?w#ngfS8Uaehe=YQ~8pj+5EPALK18<`3>(Z`6sJuQ}LO>C&F7HCO9p z!XMR;q;+y*QjqU)R_Se358R?H*o$9%`FFF0<%N`dnXH;9lcQx{F*|wp?9ms&r1Tcq z@z$N8Wb71S5_8^^69380nXhus>BO$nfb#9li7w#d;Xl97SHQVQbJS$C>}6`B@oih> zHt}*oD0SYJEpIj6uc8$i7{#F2|In&jmU%F^9O0;2$@=#z@w4S!X1C)^ZF{YsFX1|n z{{Ud*xt+7XhP_M@OZNRg6J~8@nnBWg|7XH1Hl~^V!r&J&r|eqACTU=knd7BL`M#^- zXANLe*zKI1z{dQ&mN9fWv1|b^r?~4@&!Wkf-D?R|ifwT0ZU5+RMkHYoqn>P(jP^A% zPd>Wz0rJfOJ!TP!DR=z4f*x4kHxlow`2%#-D%-yb^Zr7oEmU7>zgBCVAa9uHR`bF*8 z_GT$0lRO=7bVOBEwFwOVM-kDS%F4>7)IN|XqmCkjx>Q-(L~lcI52u5MB0h?=sbNyY z|9KFB?ttf~UugiuMOwI?lOf9EH!Vy*yHwY3E<2*r{czFv~)a)Rr)De2z@m zaTP;}r$EC_1*RguCE{6M1S5(&4H>op(}1g67r7C8+gF}7O&!o?pHb5)k-Js`j)Q0L z#GVx^w3_V{_Vc2Q8NMC^f_HoBd(ruhW@Ex5aG?oHAAOS=wqy!?%MYOl-DgqtlYGs~ zwgl>`AV;n*4&Sav5{!#u7bhIQ>V-Jt(&sY_3PvrRoH8M=*6IZKLC0)Q@ zJs^E;6aJ-taBy&{O81S_9L##X7p2b6t<++;$$@gIVokQVG+Y0EC)ZHU;nOMcA^7SK zPwuDaD~fag#(-RtcDrTYfus#&fZY3nc)b1AB}H?NB;XLoVrFIr`vl|dC!CQHqDwG{ z>(*%Dpl}jmJd5fraF62kyWbb7#PIU*flwTF?jz*um*G>Qb4iD*4A;sHhnu^4EB%zX zfFslD-gomGR&SOU1iGuKveN4*bW(v+CI8HK6VZb1s4-5zNdxpHZNAwAHO6N2V38nM z`@oDwSYiRpPw&*dy_5?8@`rJN-UCk&lj^nAZqa=Q7*Iepw*`VxIsMfQe1=6v$i`fqlFDy_^~6f#8*!(ie0w62m9VTQ6yWiDji`DP>{X% zaxqVF54$^QUwm~{ zr^OD$g}JPlQ3BK4^Q9+$pl1Z2kMnisBC5RG_Vp_2G~m>xIo7YGud1!XE&w`r} zfBQN){M^1XlHlAM3{6%9TkWS(bj47vChB7GN@Yq~PvvO~U=6Cgbf)b)Hrov;XU@Ft zD$>8$nAk!{F#-{Y7?0X9tXn1;Hk%>+Bg$$&L>HsxoqqnDD$am*&h<^=pC06^RLelR z#_24A7NqKsZux_u`$eAVsa9`KD&`$o(euW8{#%GiN{B@^IKF_VB zSWUeA_H1`Dr$}X8>YU@ul=qV-zcYjINcm^@ifVG%SY%~?c5h-&^~fvxP5Gt)zzf9; zjg|-=Q$M8Xr;leM)q3F0r`9Z$VodWvp^8MC^s8o0WsP4PazoH5EvnTZ5jfgNE;-9? zM6#)FZO7#%rOX1Erb#jwyaul62Os~Azk8b(CPFUT-*qM|)N@KIyY@k|6nB8=&L$wqo#i~ye>gXO8ZCjaL(ykGn|?(;HNWH6y!3rN#w=_PO7-EYVx%W>-FkWRB-=B zCKqu7kt9%IT?(S?A{cL`Q1>@ssX|(?gJ4P{HZJ6c%=ZjD3M6_3tMR~d-Fw{L@0L-2k^x~lE@KU{tcVQ7SQgH*E}f40b6 zDtQ-G@cgTY!0vzYmn=1qXKtHO8kRHg{p+-4e+*2|1|S#rAA8K|Jn;96V0+#xg&~jt z-7fcn5aPN4c4Z6kikt%mq={cEu3h*-4)fY-l(!41E5(Xf29+Zv7iFpRx{2c>E--nQThWXC^*v}BDs4PY* ztdfxTGLHCi2N@LLtCFBhD4YswMJff`A#EbrZ|wk6jhn=3sqh{3aL(*VaYjb|TkbD= z3Y8ttD~e=f()7OTRQl+5(!QsJs$7ctNQSIc`2pa@yTQrQJQMJ3je=n>npvqx50Wo@ zv3BUDCWJ)guTknMO2f`&ioN%%ULQ3Ipo`cyfYQRcH*{0`O6B`g83Ha;MYzB^(JZ^@ zJ*;Mmo?~`HDszj=+iQGhE2E8)Tg*qN$!xVZ3nc_Q$jmdyT3a@bL(qA_`#I1L+EpB1 zO?^%+?*0*$+!saK?daXmK-w##B;|8N^OPA!Ta@=UM3)vbfw>c_0<60jKiNdYQx0pL z5Y>=#Didi@WgmM`lMrF%@;a&Z!@vITDMDtBS{I8XhdjcbTy0U9iLi~zrNo7YHKb|< zKeFQra8qpP$oB6Jx_88?WPkLTu)N8(e+SO=lwIyjY7y_{p;|q*mh(68i|@+U=a=G~ zv8FV?OqZ8z%Gaf(wMTo-=#IR&TW$^9t+_4x`X(KjCnhFRA$j*DWMqKtvY#7x(~hrH zrMq!rzjokC3qGemwont9mZXIo5^tK`qbkyFK*ooa%5cT9()&KI;3dn>1E(mNbkcd^8ITF;*{2J zYlleYLv-nTa-1cPrh@sxhq96vMdIpJ;-V7bYqGC@?oCOj!BYPRAB0Uv4cN;$Vl7_rWyZ4^9m%U&lQ7 z59Fz2JU(lX_~#x~Vzs^Mobequ{x*<>hW~scyB&Ld^-Fq7ar@@w1+!3IBsjbw-l`svVp+CI>rnvOOEGorZEvL7c1 ziS+WYyc$sXnOzajOHxUYx)@RZon_59;tK`)H*P{P-;ugDGg)kfj|?b&H||EN;S9)c zEaG~62ITT4=i|k0$$X$0&x|&bxqKxaSkZf(e}1azm(uK5YDZZ&Z^jp#<9T@w8h|-E1?(K2YUn#(M40d(ZsFy;at-vH$i1 z@Dk-s*$F^oY8mXOYU&cL^3#8K)UBy=_|F&9sS`q+kKF>E0z1)Hh}krC^heLsM?jo2 zEcs8}b9Wz-;85>*IjK~TGIXt`z%H}&>o}$RZ~wo|F?rc4m%{FQAczJX5eZ%d!MH6O zSs#_}V<{zjmE~8x>r1rK5*+o<^ty-@9NEunO7?o|RPx%hHP|9thwd)O16B=KCWo+I z0hQeK=xmhOm4;9W!&K?e3jMf;XRV(>ON8IG`%MS=0v?RFym@o-Wp7sFNN_&)EfcFV z{H_68GlpD9lNpX44{n(Enr|mf|6A*El6G&sj~DG;=IjJnRq5B-)b6P^RT+afqjnZW z)?+(Ex(WSGUlfMGJ(o_mjpiQpIr5fkN=(pBP^K68Q?ZPNhmYL zD&Jg~%rsC}5$1Df($uC`;y!|FyC?^yTt@pij17D0&cdIM-E+Ai9CqGRX}^>UIB=X8 zEo+3TZ}4xD1XYnZpe>l4QW4*|aZFec6eR+IuyM#O)Mw5Q+S%nkSVI(HwhDvFVa&z&YF9k(sLR|n$ zOggVUXmF7?8|G`GSM^rcwCuLKQ+Jyimi%t=F)A4u?$Rfac?c%7SIG-1_%fO4@uS0F z?_y?O8ya@ckz`Wlzc)F(04P0XC^MH+mTEo`vAd?v)bv*Q8s;O9(b@nPid3V|5DcKB z++X)^&Mett73rtO86e};Gi+Ek{@M`7V;B?|63p}3CE}r3!9SpBz~M1eF)&9VdmT8J zmcgjZ63_R&M-Kzd_e7pkk%q%NTbl@SvLJde2jD)QshxKZTv{wOsN9Z6O`)A?Vk;PA zn&v`kN|WHD9=FldP_an~hj5hGiL}r-cKabMGbZlWeYnj2U}d-;*e zmCff=MvsTUU;XmZPjx{=9#{> z&qyuS$#YDj-^eS6^o_jTNl)?nJEwxSsCLs#<|B8Ywu%I(6p|ZoM^frq?c^&}+RGa| z4f$`h%v~`qiu-4GX+8~GRzSF`oUSywr8eF1#ygsie%5!#U#aAG!+*7!0({=w)ztX# ztGxgw964&GP!(~q-_zwGX=fGTFts%~O;-zX26Nm2& z6c!fot9tnUjEz);d+v>*Ar)c2%8da^FFpVKRqQA>_b{QiNoFCJL_7(IZW8m@gxRM2 zwG|^~rUE0&J}Va<3Bz&)Ol-l33eu%YP$leN?-7xXi2Aw+NImF>VsZ z6}Q+5?n7HXLJ?kgMyp%`U#0_ZAc!D{TfRxqBVk^#oyw+`^d2NPbMT7Ca4(pUgGwEc z;1COS|2CWSL|OaLiB!8^Uoa}8zJ(RNCdtHeSHM=U1u@u^5Pvjy4e`f@M!%{kr@5{s zoL0^5?%5=*3&LWM>@#kfBuuQ=FKtWJ!wKy`F|QNKYP*9$%TgSiV2##@a>edmK5WqA zn*^ti&8WhnUSU2&GgGIX9=>WKi$6q4=blJ{)nmO~*F{wGz5~oe;k{z&r*vgI``vn8 z4$LvyChQGi=QtlPBq(TR4!WHH3^l$X@I;u8(p55zWY1!S5RSXvK7c@z)Z!$V%Dp4| zk)EAImPS>$AjBE?*|TFetSK*nuo)yMm55PTYZ#g&iU}3N{z1btiPM*6iUco%K1J-}-BG*S?FmNfez5@tuV>N09g~rl-gq!7 zpOzOw&cXi$x~Ovo)py;kh?mN49iOn^Z~4%X=gx^s38xp`@^r~1_wX&A`KBXK%WmS2 z1CJ5h~(*b8sRDAkaKx8S9KeuWKKPK#Z_8e0{SC~s{BdnPn|%dfHI-Yf=5qE2_5Kq#;zNtSz$ zAogl4n7U1A?=l@Sko2Fu1p-qOLLBrS5qn6rWV2b%AbGx}mf#&o2W>2GW*f3=wB-v_ zJ2Zp4!SWrnf*Xh^!eE&8G)H*89@O0btduyA@)k5IJ%3%U1ioG>r}d$yl36WdhP(ll zO+S7-*KM~vOL&&0m%QufoLK`!5KALdN78woigUYB2? z_qOm7uSh#K+h2ND=(vI50+NTMH0X-zB}U+{T{|xpd2oM|Eg>V>uJWRm0OqxgMwCJV z)N@>4`h#N$Sv_nV;iWW(9$5@x!Trd8cr(!?P7y-bt0H|&F6k04E}LT`R49Z6#`YWE zg(EQzjAiQJ3J1|n+T^`>ROE9gtg=<@3+b3ysazr9BWEDd?X?Zpj#OVagzGR#2N-Sp zmhLVD0({HQGv^|8I6e4r$eXPz)FW{JHYgSr=p=8gTUq3H9{6J|oh0Yg%^<7hJFtz3 z3bE$@nGbEjlKTK%00;Ts`O0HC1I;HBJ}jo;;2^C?onnh?5IfsA8qKxD%+>q*YRE)I zJg@&V-}o8y2^%1cO?LQ7Zp{}em(W~zo{EkV6%}o|bZ7v>QMqm=ZtdOf_EX{ZU!9`~ zk1BhwetVfMJ1Zg~-KR%Zbb#vKb!e5l9Bt(mjmNyt`MLLcr_ES}!mxY`w)E%2jGg!q z+Cirnv;3|g+@&0U2vp^}PS)JH;qGn(H(Vsv9#QL-@%rXUD9+$*kbA0#AfPT}@oijx zxY>qgKZR02SFKB&0ll+;Ow%F1`l9aX7oVx$&Ckml%4%z(no=5LVDP>2!t?H_M00+* zJD5EIA~R`ga>O^l@itscT}o?T+XrTf_!PMORMKX#u0a=uEksQ?^gYuky2vmRjf1hE zH|tMmRx$VUKn;(<>sW@5b@wtt=~x+5`$=T*VbG?-#-A9xM3{nQa=ro0arM-B4oDv? zPD(U~aKy7Iiuz&YimSj^M#1~^5%BPV9}EWm&lZct1ss;X_V=RZqM>9G_3W8GXt{W_bh94P z4{+6#ERHSO-tg)xCBD%aCmtO{3n9vwqH1gW}M<)pX32nuvv^-&wOTV&`FOX9DN+0VxLMK8xkFUByw|$cK2?L*OnT* z53cC>xi{))0p-5vYSQ@y*LvYXFLL`&Sm63WV?SUsgO6xK7B>lLwkk*3lgo5apno%n z^sy!vYyVlT>z$AwcP;i&K|&532RozW9*z`=d4fZibQQ{}2F$~@$VW>{!;g)i zDL4CJgv06%BGylk*?Rh*8u5yMr~1BP2%96)lte01SuB3Ko_J}`r|s-C!FC>Gyn7??#1 za*3)n%y(`GNkJ9NXpgTP$PFQyUT4#m=2eBT74i~6YZguBf5}U9U~83u$_vuhNuB3f zy7d6O(PZ1!7Qmdq8jo3Igy+s4x20SFB4y#w8+a%n2>+iZ_tm7%l43&A%fM!kutB#4 zzvx9uXNfV*>^%=@H{IJhA}eQrN;_~=HKoKKNhK^vW)S0xg*lk zRJ@?V=xLG_u~ddH_CtP6?ClHAl^;_$e;bx?271$yo0p~oVF4vbXz0wD`;Pbv^x`g5 zTj+slDPDEjkAebe3(2j0HA`#raavqT7uREVZH3URW=Pv@NYw^rR(&kXQvd0H*kp-Ak%6P=GJu;ovUd8i z^6VFhjm`tLZ+@G)To(havVnymnbESUZiGL@dn{kqI9=(+W!}fyiYBhs| z7;hwDmJua#1|*!vXw;LAc(E6GtHXI+S(gn=+uj0lhr0 z)CP2YM8Yy?J1I35r&JZ8{_YtSnkrgpWiE;n8M?O)6;qpgX$oG&z}7|GrSi?bpaa=Q^UtyPO8J|M{25Uv!M zHD^Yen%J$u@`!+3-R| zGDXPAKk=eCR=bC+E7p`DLMe3288>E&(KjRW_>gsFg%~RY2Xa>Gv}k2;X+y_gn$=;| z)>$txnz{a{yCk+{b^}kQv3RtR#p~qH(o$2?t@b}B+*V(NEjMA&N8E-Bpr3b|x=of_ zh0br>;fQdE+wH^(i4U9uA|041>Abp%ldISRwJqey3d5McZHe8;{ z0u6pQT%Z*+bHW{%9gEvpXxg@ePF8y>7>=Wms|?|+?5VD^vXC3^l2^t%$Vc}KNfSASJM`wL>ms$I5*4tmv8D;ycbLtEVmpAN|;|wTkb%;JBPkgS75RdkHubxpMJsn`9kRl zOEYE(4xz-`j$afIxIbcKo(d7D&T*8gw?oTS(ydYC(OgN)@1Iz2N_Q-nqf~N^m$^D0;d0aFaxP73P=zz0zIE8w)C<> zXi74)3GTOsYk9h=J?dtpFz7_kH%v&|r7=LY(vQ1v_wL;&Pwm~0KE9Sc8?VC_eT6sC z+b}tsv+`thulzx=<$_VU0n6YLEYdG!3i5)WBak)3dXN5K%3eTOKSxgCC7Ppeu&CrC zCYeKuvT`7SETsKXL}~ZxPEht&& zr1$1t7=E>GsmESMW$OyduIB6{kh1H>%XM2+(1(}Co>;v_S3~qAL^!hkcZ;s7XyFq` zKYO(!*XmFPdE~>UEH9o>N~g<}r6~9pC+al+5k|)XXBYjq?SQ6|an`s+B>>JsN){2* z6KxLvtn4vMk%*m;WHLTen-8rP3FV8|u!|9Q9PSPAh~X%$NJ^Rt7xHm-CNJGFybXvG zcn&=J#)G)*XhAfK1oUx9j!vs}KRND?DdFj(nIN4}fu>j%*cb~t_TVKZhwd}P*&wQ2 zwag$S8RtymH1WJRJJS?oy2PH8l9}U@*7~W@B_$=PA=guSU#KWtF@!IdJcD=>gv)Ss zl5zF)e+gshg_<~L$qm{e?wP-0u#qbqY*nYssG+MmnpctfD=--m9+3Y3&e$65s|fn` ze`m~+BbpDYFE+?6D|Io#(MR5#)=ODjL?E>Q1>Lecn30q@m93R=+13bgD(*)+EXhJ7 zSC%N$f2GdxYfCO%UL0yg%UEEur z`6>bc#qxmEnY+fHT|65!L208uiva6Ijy9c%wMBupHT}5X2VHeY7_N&M@rNW~lN;W7 z#>h}{?%30F_xGGmN#3T@;!n|~%ERjn7YX{m@!jt|;nv>?8edSU%n$uh+T(Cc$h%X` zA{TX31H#$!T4>D@(6;ex)1yl%NwCw$fQ+4kPu%qBCAVEnk29BY0gNB6^iMAC6cOCm z1h7j9Nkz!tVW%#rtAgm*CkU6^NN1N!2AtX4GRhQ#ZcZUV29Yrq_L2dLZ1(QLKg%@& zm;D;adJk{l0LvS1(^f)j*1A}`fc-QMR~q%26`Qv zKDljm!f!QqYc{qr06qRkxNlU^sdQSR5Rm@w*W#m#YG-nG*ZVc$|3u+cpYlpBp$F_b03%W z+I71Jo1;3L63#0>1Zgmf9hCgJZmrCZXYxhOlh8};WuG#%pIh&>MhKF|#ifc;#ecx- z3p7HCC#PNuCZ$xyIw9JT%`Dj0RpLlpn&7p?n!xS@Mu{z|_Po)fAd%*u|wC7)t>3>gRRV~$-B9|29Kh%3BV@Z$P{}1)tANamJ2_mzujk;@9 z@N)vRj{2%#^6K&<3%=z7fG`Ys`F@j0V^K*p;kU9W4i*eWEH`C-$RTh*4HzO&jEi3u zw>y$qpYt`)`6*7_D;m2F?tSevx@+gS+8*qKlSDS=%OLUsdpn5yxdU+FQebCB-QpsF zEV)tTvM{itvA}6Xu-0S{Jy`OFl#(_Xk1-jcFpp;sFJce(>$bdmb_|4v8T z%XXQP0vFDG6!8loZdl$K zLwIr{-mcj%#V%351)5PzIxrP*3+E8h>yX#& zy-ccgpsG7B71)6{b9(z%q!9$%o>g6p$N_?U^WkPbjb3ES1$bJ z$M&2sz3`#RVu5C1sO>Y|K!S%>`NNU6gSjS)xu%Cl4I__g&yuLmQ|Cwc7o5pc>D|-m z*pC|Kqe0h653$qYgb9lUiVrjn#qmTH52dkWdVID^nyKG{SoXm6_Ss8Y3q&U-7t90xm^3tm97bqSbZZWMO8Nb#nx05_)X?xJFLA>#n7bL_THRptes`_0r^DP*a^}NLd%WxA$SSV z0A8K6z|K*8<}#D3-%#OkJaYGZhmYye;9K&sWwSM9X-Z>tXU*xWQ9M^=$FUhn_9|FzVV#2zK7asT{ z)8FTGR`|JhYs&nT^1`o%zuAsjz8NXwu04L*H!srMoF?6xR0)l$*sb1wZY5hoOQ~n( zq-Q4CXTEm9qv-6@g(vSVY-F%BWHG&3u+rjv$b+RBBzaNH!hH9_ObT7x;Qzz$j9kWz z5}QJQ*>XaM#d%?c;g#y+q|TPO{IK)4V2_tV4&t|5BPPY_h%i!SB7itD|6nD=JHFXZT6_73FNIpk9Ehc7=w>Ys~r)?Z_ zD?Yi4_z#kl+*}6xcHI0a#BV%@915RTI+2%|t~AuEl;K$mFPjd`=t^>$+K+nveNguI z0VV(GQLE^du0z9woQb>)50I&p$$WgCaS5}$&;g;qf{25)lBioef037I$-B!&cGu$n zZe94HtPdVhiSMX&wSw$6gFa0ot!jvJ6les7anQkk9u?DaWz}H z>%|WN&-4{$e{3zYQCE^$cvd_0%&xzQYf5F9OL>HgbaT|a*3{ZvXI4GdAf>oVw)$+w zmZpYZn;S$C&MI6VvEmyGCtrsLdTpiczMSisKt$N?OOd03XtO$B2D}w3WO&TwP(<*r zhU%P!!ni=LGD+pgwjJt0BM7)Wk|PC3lOG4S3V(UP=cN82cw6oLziXBMtj&y!x;>O# zYV<+E?}FAV{)NAl76rARs%E|5N!r6)bxGwS)O zmN0bquygfj(WjYq)BcjouF8FP7&@$(+o{Cr3RhX{-UP&2ascpM z`L(=TuYl;Lg-K8wGCWB7Z9FXVrnpyc&~Bf8uDO7z@PI<+9&+uo%l#^QgXP$2(ogTq z)X)+Sc5Q6f*`JEJLkfG)W05yxA2U&Lu$L$F=G&*HU1WT{A@UZbQJ-F~r@7<%Y6o4K zt5}j zH4L>{O;Ll&j7Y`I3z@ek@CE{|ZP|P>FQB4`u$5+cElmjpTxlu-THZ(@Y{?}hb%Lm< z=sb9sN>pZ5pV{n)`!;E9aYJ~H|cJA4Kk`!XTuzGE@<$jgA4 zQguc3!GQYkfUU2^us+&=Fb*Pyr~}~%Q6kvN`ppNh!<@yo-*WtxT*Gv(ND2Q&UiB3l zclg^yXP9r@skcX)WPQ7LitTYjcF175PAl*Kcw4r4c;(7?Zz^9mR|Ow9FoQ(ZqYyZv zTq19nA&E(~IO53SuusDQQd|mNiU6dt0WM5knb|Y%$D41e6brigJJ-TQ{2L7B` zTb)7NHq5>S#7Qj}g&;E+!1ccF>C7r`uFq3AW$>Ud|AYw6`d^hcm~0Z z_p$r*tYa_+*9zJWId{Fc)O9ri5F(a9$0!(Ytxe+cFD)b|q@>Wi2eenrucx`*=A7(j z^k${Z>ojevnxQQje{Ese{~Mp}{9Rv~Lg6)T!=dY1+m>4gq*}_?QRq;u?35?J=U*1N zQ9106;tu=v7R6++SsMtoreLj53G+$C7z%$~eAt65&yC_?rN~gsys@9gPg+_T#xZq_ z^;4vCSgdE+QDc6Ga{WcH=u7LILsfI5JI7~7R#k>hl-;(`|sSRwi zlcQDrOV#ozmHqjvuLFv)6*la%s*?LYUfO)gg`l=Ak*f9R5PjGlA12t&2^kSLMhui7 zGs?Z|a?tL@3r*~g>0`;qLI$#<#)B8qrF1$VitxW!mcsh8QE&j~HfZ}ghojh;;^L#8^}L< zbh|7N0{i_I!xgJ@&fr}zBDVCbR~9@}?|~;*SoS^6@gBFqZ&+9tgRPc5pe*{_Kc}Au z5|V+)gJ7{ZtXtQ?@(9F+k-bddJYcw?1&{`J=XraBCs1UxAS-zEhFq&!0W{ddJW55C z+$O}59h*M*CH0S?ad9~1*OZ3-5Ol73zmx!F<*82{8(0@ruV$oSxDLtK*>&UUYbFjO z%YV54I*FTu^SH6}-3`V<7M@bhaDT#H{9h~}GUEl9coI-kdSKK#t|{AU0K2If3HYhC zDCiDPxpwP`oceV&@3v?)Y}DBs=|TTedpLDj{|fkV$MM2n4wzn(BrA5*FEugLAbKxs zYpLLS-6=1&m&ziqg}GGjiNrO$4dxBqZF9q|NHmef3fJ}m?nNy*@0WLgYJ7neN3(5xPSY>z)w;A&ELOJgwM$8&a%B(AoVF*(|VPH%VY%; zvAM|)bhR*xVJk3Cp9a^Kveh6#cf-n0eU4))@U%rAw?HN@Ox)b#I6?ekbXCE_Hxw>S zV`;6Che;cbvF((9&V_u|z1p~s^`mNFB)byy0J_4MEm(Qqo3-?_<=k(Fkh`^lcop~o zBTY$*8x5XGWiB?7ro(c5>h@L0MMB<3j(%JRWFJ*4_i_?d?*8x>*n8+cVf&nZu_oLZ zvXp0P$cw!wpluv^ z(E>25iL0u_;l>B;veDvV=loNU`rotJLMQZ;$4A4C<6QR}^Gr>#r3yfa`u0T_ncjC&`9?UE zJE5BkCD~p^CjubR(!O+fw2l#wQbg5&Eb-60vwV#nYwNkoq_?qhtstn^&#ahmzyxX5 z-a(aIQmI{;<)HCo0YRVU8IY~x&yP;yYbAOG4?N?nPcq7Z3TD8a6j*3(+--|TJXB+# zf@MHQduD=dGOTkJ1xeqicJL~_^p6IrnGxSqlH)qVE&dr z_Bu}5A)w;OLptm(KlqPMXd39MnA*VrDNj8_lSdANp^)d@DeBtNu)!yBj(wFMk{hT9 zf)pG)r7vaC-D?}rt={xmg}I3F2E!{LItTLi9~^J=v(p$HV@XXK|FETg!t10a@cX+)e3)8?W1I# z9kOlG_G>+t@GKh{FgfL1W1gK|>0+K4AQ5W9RTY3^&{8(-2hxHTzZmahgHL<6Y(jyv zVwd)}gDg2ww#jb({9o@GN8=s((h{iGy}Jqx$%0B_Orq|K6JGne(=YJg>BUQcz40_Tm3015|h_D1)?AQZ}-~Gm{}x8|#>~j{76i1hQwqNt&&{;hnXv=&qv_ zeUaijytj(MPLMlNMNGDgxbb_SsNUM7ZdyKh6KeaKzn9NB;h=YKd-9O<;thBE0jVou zE7q(eEQe!%0DRgo=b!M#9_qEwA(GiM7?PVPy-K4ADT$=`YMi@9j#hl zOmT62$wa~HM#`ybW_RTP=TJTZtILYemH)=K4`(jwQjgNX%VS#mF(+f`PS^|WVG^&6 z@wF>rlP>j}^FW4y{9XR%9{KM~Zo(z-Mg32)#_B51GPfa(s{C2A2u3n{LKvwD*IoC6 zdtnb0>ammp#6xE^&0{})z1AlTClym)EtyZJsfvpoo-N(C7#l)iekM9Gs8x(PRpiIG z=M%nV-L>y;To${oIeN$`AC#BQIK7q~G!`20@cla7-2jM<2ngfNco_!WXg6LMe4k!l zvIfL?Tu{bR*%qzN-G{#1eWZAzIhpykXC+zyi|1eEtlqmFvj3W;1W&4PVZ-(+VjD}5 z4g-k>j~N0FG|XwT?c`Y5b%pWlx}qi@R%*gmn-N}9^_9+|<#X^%XEORxqOpdiK6El+ zNMw)JbGPm!P1)<@G$TmR^VoqinHRhvFf3tDt-9+sa^g`4q+~UoMnK6c2f#;Stev0K zjP;!lC`7JiBvD>cv16^TJLoI`~X_l;h8^&flrfL4MW0O#>{ZXMZ(*=XpPTz4RS z52W9%O^+E{s|Vn-%5G z;KwC!f!j{cL8%u<>}J?e7V-&<1RVN)kfR5IhYU)3u(y*pI8hvFl?7AvnPNnKPC&}ka<0mN#_d#y>+F{*jJMkZ{8MITj%RR6R z&x}0)dM{I0C+i2o<;zZ3K>km;gHN>h-YgT8R>H!IF>jsf6OeM6Qz(tgQY11Io-R}M zxoo?7>X;DyrI7C~VV{T&v%!0d?Fkc&GAEj?JARuD`-RHDuDSn@eSfVJsDkaX|5^Nn zq65T=9%_4r-F2Qkq6n;&X*@$G=6uK;MY%EQX^;IbAha*sm5f^qvr;fnB{vw+@R3WQ zK3_Q>%iJ3MmM9!*%?cO?|d8<|w9EVF<* znVQZ{t){b{MN0|BJDK{*7I8B6Y9Y0wfaoU=xj43$N&WZIfP!%pT@W%P1wVS!rW!vm20y;B%{5-ts$ zLH^i9j>9!o8CQI-b{7^$LF*nZCS4sFpGq2tT~$**KyRPz6Ae+Ij^_|8_mECoQwR6@ znu_U=o5jf@)w5phJPukyv%LxfX-9i-UjRw5`MZ!KG0V{?ibU2@&{1I|2sAdDr-@C% zy%nOB7KJOVni`XiW=|nBjc7C##?T1>?Bq2F4-=s<7X>&7hmvPYgcUWwy`J~&{8rJF zHxY$SujVdPkYE?6o2+hjJ4dh0u~r8Ts=xQ%NKM_%y_Nxv;Sb2N`IHpdZ``q^SG1036}xZG$*yAdHYQU(Iu6!+@$-*b@=C4 zr=gIduy-X1WNp#JQXoIOQbB#WHIVWu@|o`=#Ab7UT&v8w$oy9ocRmgN7~9VXn>G~G zaiD0UQ$&2JLQwrZ%f?63>iV<&NV_(omKl|~nux~N#zOs!w7 zQLE>FWkg!dUT1zDjfX#T@`hb8Yl#jqeC?_kte9ZoIX(GX=5&JC2Z0pO1Ac*wPsJw- zf{I0b0*uNE?|**uqwu3Q7;X_=RzS3cXWGD~wLqi`Ul8@hfB(pPJQ?EniJ%a;2*M?n zuVlb*D#Id|u)GxskvEVUU8FloL5WWSU}hKVOM}au9J@kQ_L@Q}fA=o2B(f7%dVaFj zzpg)$J4IXV-ri#8&jD~J+H(}lEWg7s9#V?;=!XhK+dBtPm^BS`XnyF<)7iKRh>zAJ z-EyuMyvEr$4BZ?d@fy}#r#>sMHT?Y0l=$vbpfIi$-?sd`y@}@*szTSARDVOI`GyYN}RnH)EM$;QMez;)oR>k zYPGx8jMHBjl?=m{ES<;hx(w_PA^yZNh=UU;1u76ohi#y$cT%RTjGUjjX8K|!jO@pqmcBe7unDJS@S$cB(@Y8*Do=AF$SgeuUuAiTpF_;;%k%S=`fWfKE#dx zap7J+k<`R;7Np?sVjcorLSS~qN%~Uu$(K(N8?;|?RoxA$q=fz54NK*Y0Q&IOroCWA z+n1Hp8Hg30$kY`v3MvLQ>Yd4!#00W3nrGJzSdkpA-Wds}VBb>=HWrE2d-Nt)_*GrV z$zhnFz0ok}W{ObJ@bF2ejC=}pQe}d)JkSRto6!r1-=Fnr64^VI^iHAf4344QkqMJ{ z1E>kV9b`(72(hiFh?5hiZ$qB@I~5=jaT=e|lJwz-K`0*1GYmr73!q3KSJK6wGJKjk zVr>oiJ^S=93`XSq1kAn)_O`|L3Y$3_FZ2oR(Req|fRLcL3b~40MCR0Jbjs2$*NG|t4^r_?dF_G1dN%e6YbphH23EGc4^34;gk>OauMb` zGYr%9(L#Q>&S*1$ukZd>Ndu7Z8nb_xFImU}{TokGOa`>}zW&f@yYErAE`P&@FSFKn z3O13NVX(bw-hBuB8CCmF0qTEW9*&U=#VsG25gYF146-N@pjiN4;Pe-GbuTCJAD0_% z`tX?hfdUxdUykZVNp;7Ue}5+v2D3ye=C~^BG%o@EEgfm14LAKhD{<%PLKGhO+^l(Bl^ zF|hT@kMc{l<7K*Ou9}vln>-J1*7`%iFisf=8HUv+0rP(1L!6dZvJB=(H$l&~ab>By zvrdzC1zC!EVNtwz(w7(D+6H4yKfj^iwr?XEUeKTU@fb^PeY2`9dmp&gG-I({^ESZy z6T|_U1?+3>6%zbVAi^>l&Wc1aZ^c+YoC+2LO?T|_d1rt=da-ea-gnS`GM{9J<3_dK z@w3c>mtqQ4DIC3xMzM$IxMd4pn{V>n7>f5)RaF_5VGg;d=p!g9(FacvuvTp z!$i~oMNk1f`mi(C*2>Dbm_d!=dZHOuhNU+v%Dsg}S&q`si<1kh1Rn95bKbE<;|>|3 z!zB8`9Z=hp?F)U1W_MNTaoRc>I=$yf{ONsQrQWf9Q{E;}+bf_+(HgYSwq|tJ)VQ== zc45~t?2qmdWZi(*;Lay|K#VLrFrwk%)t9@ZXyzoqJ#>2N6b18b13E!)t&@fDHqY=< zioortN(a5sAVvrq?T|pF!l*Wb91%J8ix7e|q||ntsy!CiJ*GE_I%2Ui#5lBdJ*3QT^0b+II+c7&t>D*@EE_ z>2$|~-P{%hzGU|<$nWB;1W#|WetQFu^Sb61K6NKiKnJA~DQI;iK9fKgKHRrcf&Ur0 zObxzB*F>`PbN4Jq5=zGHrJ)xn+?NR#VJDG^yCgN#XFm6pTrK^fMtB(5<27#sep6EC z58t7g-KvX8&P;}7sNcZ$DlfJX$T`nJqLNT|kmoOd78Y_z? z`%$_;E|7U$4E}+$x0N8aPOg|)a4{D$URl@K-3c15^|wU#rPXyRrEDiAMG`k()&ZIY z-4v`8bWm+iS99lgkYTBgmfxE(LK8T1AZfR^yHd}-N8I_ z{gRf%iy_~1M{INQX8j0kU|Z<@@KiA%p0AvPykC4=}_w_+vA4i&4wg4C&9}z z0enKN)Mcw9y#-fsZ&ii2M2M4xRCcywa0AKfRzdO+}2JU55QqcbjG-n#fGsve!x|YxkbQOPsjU?j5Ko| zqJ^IWoTH6S1|QZ`~201G)(a~+IIoNsM+hY0!?w!dJEBtd)3z<%;FXaK=9%tF ztl{e;W4;B6p*^+Udh%pAe+ta{P{D(p)%tsdohii|ditYx8@}eqr@4z7rG={K_it3I zi-V=+HJ4P1TBBw6_!!o#I7Pi97p3W=)9SxVn654h z0IFm5xB|ss{MfN?N{|G%^SK|3cr!^-n5&_u7;Rm72p;bIE~+RNd}hQtKCUx=%Y%Wv z6STP)=7_IUJCQof3R3AWDbs{r^c!x8w@bDMdOD)@DUFo&)4cPE%$wbU=$z%)e7RUSeOx7MupYZW{o#R}rQ&)+gXz~q7zB5> z_Xqd=E9*G?8rF$Lt&ydAetXwp0QNyTC+b&YhICnGknSH}p4Qo}vTTz#Z znl=93D$;={Ikk5k0!o|%brK`qLQPH#3u;p!&C;;_vYbau_%6yjm8V@hilvfhioS8s z%4w3bqtu08LR>FJuEqGEKb;kN;f65Gsm6q6LF`qgUX21T_s&wrtzj^cdZgEb_w}oX z5P;W)+lTu945tk@oq#IODd&33f5{00;yHl7`}8FsX7%~Uh9BSjhp_d3smR}?J3ubs z;>JxXfMzJV8TsEbr#+w7fIqP@FZ~Ze`)}^-2Vlmk9J8ki@;|h;bq3ad3v6skfgP_| z|LE{-fLpZ LoginController(), fenix: true); + + // NotificationController is initialized on the splash screen, but might be needed later. + Get.lazyPut(() => NotificationController(), fenix: true); + + // FirebaseMessagesController is also initialized on splash, but must persist its token and listeners. + Get.lazyPut(() => FirebaseMessagesController(), fenix: true); + } +} + + +================================================== +FILE PATH: ./lib/homw_widget.dart +================================================== + +import 'package:flutter/services.dart'; + +class WidgetManager { + static const platform = MethodChannel('com.mobileapp.store.ride/widget'); + + static Future updateWidget() async { + try { + await platform.invokeMethod('updateWidget'); + } on PlatformException catch (e) { + print("Failed to update widget: '${e.message}'."); + } + } +} + +// Example usage: +void updateHomeScreenWidget() { + WidgetManager.updateWidget(); +} + + +================================================== +FILE PATH: ./lib/print.dart +================================================== + +import 'dart:developer' as developer; + +class Log { + Log._(); + + static void print(String value, {StackTrace? stackTrace}) { + developer.log(value, name: 'LOG', stackTrace: stackTrace); + } + + static Object? inspect(Object? object) { + return developer.inspect(object); + } +} + + +================================================== +FILE PATH: ./lib/splash_screen_page.dart +================================================== + +import 'package:animated_text_kit/animated_text_kit.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/colors.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/main.dart'; + +import 'controller/home/splash_screen_controlle.dart'; + +// شاشة بداية بتصميم جديد وحركات وألوان محسّنة +class SplashScreen extends StatelessWidget { + const SplashScreen({super.key}); + + @override + Widget build(BuildContext context) { + // تهيئة الكنترولر + final SplashScreenController controller = Get.put(SplashScreenController()); + + // تعريف الألوان المستخدمة في حركة اسم التطبيق + const colorizeColors = [ + Colors.white, + Color(0xFF89D4CF), // لون تركواز فاتح + Color(0xFF734AE8), // لون بنفسجي مشرق + Colors.white, + ]; + + return SafeArea( + child: Scaffold( + body: Container( + // --- تحسين الألوان --- + // تم استخدام تدرج لوني جديد أكثر حيوية وعصرية + decoration: const BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + Color(0xFF2E3192), // أزرق داكن + Color(0xFF1BFFFF), // سماوي ساطع + ], + ), + ), + child: Stack( + children: [ + // دوائر زخرفية لإضافة عمق للتصميم + _buildDecorativeCircles(), + + // المحتوى الرئيسي مع الحركات المتتالية + Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + // --- حركة اسم التطبيق --- + // تم إلغاء الشعار واستبداله بحركة نصية ملونة لكلمة "Intaleq" + FadeTransition( + opacity: controller.titleFadeAnimation, + child: ScaleTransition( + scale: controller.titleScaleAnimation, + child: AnimatedTextKit( + animatedTexts: [ + ColorizeAnimatedText( + 'Intaleq', + textStyle: AppStyle.headTitle.copyWith( + fontSize: 65.0, // تكبير حجم الخط + fontWeight: FontWeight.bold, + shadows: [ + const Shadow( + blurRadius: 15.0, + color: Colors.black38, + offset: Offset(0, 3.0), + ), + ], + ), + colors: colorizeColors, + speed: const Duration(milliseconds: 300), + ), + ], + isRepeatingAnimation: false, + ), + ), + ), + const SizedBox(height: 18), + + // --- حركة الشعار النصي --- + FadeTransition( + opacity: controller.taglineFadeAnimation, + child: SlideTransition( + position: controller.taglineSlideAnimation, + child: Text( + 'Your Journey Begins Here'.tr, + style: AppStyle.title.copyWith( + color: AppColor.writeColor.withOpacity(0.9), + fontSize: 18, + ), + ), + ), + ), + ], + ), + ), + + // قسم سفلي لشريط التقدم ومعلومات الإصدار + Align( + alignment: Alignment.bottomCenter, + child: FadeTransition( + opacity: controller.footerFadeAnimation, + child: Padding( + padding: const EdgeInsets.only( + bottom: 40.0, left: 40, right: 40), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(10), + child: Obx(() => LinearProgressIndicator( + value: controller.progress.value, + backgroundColor: + AppColor.writeColor.withOpacity(0.2), + valueColor: const AlwaysStoppedAnimation( + AppColor.writeColor), + minHeight: 5, + )), + ), + const SizedBox(height: 20), + Text( + 'Version: ${box.read(BoxName.packagInfo) ?? '1.0.0'}', + style: AppStyle.subtitle.copyWith( + color: AppColor.writeColor.withOpacity(0.7), + fontWeight: FontWeight.w600, + ), + ), + ], + ), + ), + ), + ), + ], + ), + ), + ), + ); + } + + /// بناء دوائر زخرفية لتحسين الخلفية + Widget _buildDecorativeCircles() { + return Stack( + children: [ + Positioned( + top: -80, + left: -100, + child: CircleAvatar( + radius: 120, + backgroundColor: Colors.white.withOpacity(0.05), + ), + ), + Positioned( + bottom: -120, + right: -150, + child: CircleAvatar( + radius: 180, + backgroundColor: Colors.white.withOpacity(0.07), + ), + ), + ], + ); + } +} + + +================================================== +FILE PATH: ./lib/onbording_page.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/views/widgets/elevated_btn.dart'; + +import 'constant/colors.dart'; +import 'controller/auth/onboarding_controller.dart'; +import 'models/model/onboarding_model.dart'; + +class OnBoardingPage extends StatelessWidget { + OnBoardingControllerImp onBoardingControllerImp = + Get.put(OnBoardingControllerImp()); + + OnBoardingPage({super.key}); + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColor.secondaryColor, + body: SafeArea( + child: Column(mainAxisAlignment: MainAxisAlignment.center, children: [ + SizedBox( + height: Get.height * .7, + child: const CustomSliderOnBoarding(), + ), + const CustomDotControllerOnBoarding(), + // const Spacer(flex: 2), + const SizedBox(height: 20), + MyElevatedButton( + onPressed: () => onBoardingControllerImp.next(), + title: 'Next'.tr, + ) + ]), + )); + } +} + +class CustomSliderOnBoarding extends GetView { + const CustomSliderOnBoarding({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return PageView.builder( + controller: controller.pageController, + onPageChanged: (val) { + controller.onPageChanged(val); + }, + itemCount: onBoardingList.length, + itemBuilder: (context, i) => Column( + children: [ + Image.asset( + onBoardingList[i].image!, + // width: , + height: Get.width / 2, + fit: BoxFit.fill, + ), + const SizedBox(height: 20), + Text(onBoardingList[i].title!, + textAlign: TextAlign.center, + style: const TextStyle( + fontWeight: FontWeight.bold, + fontSize: 22, + color: AppColor.primaryColor)), + const SizedBox(height: 20), + Container( + width: Get.width * .8, + alignment: Alignment.center, + child: Text( + onBoardingList[i].body!, + textAlign: TextAlign.center, + style: const TextStyle( + height: 2, + color: AppColor.accentColor, + fontWeight: FontWeight.bold, + fontSize: 14), + )), + // const SizedBox(height: 20), + ], + )); + } +} + +class CustomDotControllerOnBoarding extends StatelessWidget { + const CustomDotControllerOnBoarding({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return GetBuilder( + builder: (controller) => Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ...List.generate( + onBoardingList.length, + (index) => AnimatedContainer( + margin: const EdgeInsets.only(right: 5), + duration: const Duration(milliseconds: 900), + width: controller.currentPage == index ? 20 : 5, + height: 6, + decoration: BoxDecoration( + color: AppColor.primaryColor, + borderRadius: BorderRadius.circular(10)), + )) + ], + )); + } +} + + +================================================== +FILE PATH: ./lib/firebase_options.dart +================================================== + +// File generated by FlutterFire CLI. +// ignore_for_file: type=lint +import 'package:firebase_core/firebase_core.dart' show FirebaseOptions; +import 'package:flutter/foundation.dart' + show defaultTargetPlatform, kIsWeb, TargetPlatform; + +/// Default [FirebaseOptions] for use with your Firebase apps. +/// +/// Example: +/// ```dart +/// import 'firebase_options.dart'; +/// // ... +/// await Firebase.initializeApp( +/// options: DefaultFirebaseOptions.currentPlatform, +/// ); +/// ``` +class DefaultFirebaseOptions { + static FirebaseOptions get currentPlatform { + if (kIsWeb) { + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for web - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + } + switch (defaultTargetPlatform) { + case TargetPlatform.android: + return android; + case TargetPlatform.iOS: + return ios; + case TargetPlatform.macOS: + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for macos - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + case TargetPlatform.windows: + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for windows - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + case TargetPlatform.linux: + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for linux - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + default: + throw UnsupportedError( + 'DefaultFirebaseOptions are not supported for this platform.', + ); + } + } + + static const FirebaseOptions android = FirebaseOptions( + apiKey: 'AIzaSyCFsWBqvkXzk1Gb-bCGxwqTwJQKIeHjH64', + appId: '1:1086900987150:android:b7231956aa6d3b3377a35f', + messagingSenderId: '1086900987150', + projectId: 'intaleq-d48a7', + storageBucket: 'intaleq-d48a7.firebasestorage.app', + ); + + static const FirebaseOptions ios = FirebaseOptions( + apiKey: 'AIzaSyDzGO9a-1IDMLD2FxhmOO9ONL1gMssFa9g', + appId: '1:1086900987150:ios:a60973accd7f3dc777a35f', + messagingSenderId: '1086900987150', + projectId: 'intaleq-d48a7', + storageBucket: 'intaleq-d48a7.firebasestorage.app', + androidClientId: '1086900987150-060srlmdjocdcav377rbur4ka14m90b7.apps.googleusercontent.com', + iosClientId: '1086900987150-9jv4oa8l3t23d54lrf27c1d22tbt9i6d.apps.googleusercontent.com', + iosBundleId: 'com.Intaleq.intaleq', + ); + +} + +================================================== +FILE PATH: ./lib/main.dart +================================================== + +import 'dart:async'; +import 'dart:io'; +import 'package:Intaleq/app_bindings.dart'; +import 'package:Intaleq/controller/functions/crud.dart'; +import 'package:Intaleq/views/home/HomePage/contact_us.dart'; +import 'package:Intaleq/views/home/HomePage/share_app_page.dart'; +import 'package:Intaleq/views/home/my_wallet/passenger_wallet.dart'; +import 'package:Intaleq/views/home/profile/passenger_profile_page.dart'; +import 'package:firebase_core/firebase_core.dart'; +import 'package:firebase_messaging/firebase_messaging.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import 'package:flutter_stripe/flutter_stripe.dart'; +import 'package:get/get.dart'; +import 'package:get_storage/get_storage.dart'; +import 'package:flutter/services.dart'; +import 'package:wakelock_plus/wakelock_plus.dart'; +import 'constant/api_key.dart'; +import 'constant/info.dart'; +import 'controller/local/local_controller.dart'; +import 'controller/local/translations.dart'; +import 'firebase_options.dart'; +import 'models/db_sql.dart'; +import 'splash_screen_page.dart'; + +// -- Global instances for easy access -- +final box = GetStorage(); +final storage = FlutterSecureStorage(); +DbSql sql = DbSql.instance; + +// Firebase background message handler must be a top-level function. +@pragma('vm:entry-point') +Future backgroundMessageHandler(RemoteMessage message) async { + await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); + print("Handling a background message: ${message.messageId}"); +} + +void main() { + // Use runZonedGuarded to catch all unhandled exceptions in the app. + runZonedGuarded>(() async { + // --- Step 1: Critical initializations before runApp() --- + // These must complete before the UI can be built. + WidgetsFlutterBinding.ensureInitialized(); + await GetStorage.init(); + WakelockPlus.enable(); + if (Platform.isAndroid || Platform.isIOS) { + await Firebase.initializeApp( + options: DefaultFirebaseOptions.currentPlatform); + FirebaseMessaging.onBackgroundMessage(backgroundMessageHandler); + } + + // Stripe key initialization is very fast. + Stripe.publishableKey = AK.publishableKey; + + // Lock screen orientation. + await SystemChrome.setPreferredOrientations([ + DeviceOrientation.portraitUp, + DeviceOrientation.portraitDown, + ]); + Get.put(LocaleController()); + // --- Step 2: Run the app immediately --- + // All heavy initializations are deferred to the SplashScreen. + runApp(const MyApp()); + }, (error, stack) { + // Global error handler. + final s = error.toString(); + final ignored = s.contains('PERMISSION_DENIED') || + s.contains('FormatException') || + s.contains('Null check operator used on a null value'); + + if (!ignored) { + CRUD.addError(s, stack.toString(), 'main_zone_guard'); + } + }); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); + + @override + Widget build(BuildContext context) { + // Get.find() is used here because LocaleController is already put in AppBindings. + final LocaleController localController = Get.find(); + + return GetMaterialApp( + title: AppInformation.appName, + translations: MyTranslation(), + debugShowCheckedModeBanner: false, + locale: localController.language, + theme: localController.appTheme, + + // --- [CRITICAL] --- + // initialBinding tells GetX to run AppBindings once at the start. + // This sets up all our controllers (put, lazyPut) for the entire app lifecycle. + initialBinding: AppBindings(), + + initialRoute: '/', + getPages: [ + GetPage(name: '/', page: () => const SplashScreen()), + // These routes are used by QuickActions and other navigation events. + GetPage(name: '/shareApp', page: () => ShareAppPage()), + GetPage(name: '/wallet', page: () => const PassengerWallet()), + GetPage(name: '/profile', page: () => PassengerProfilePage()), + GetPage(name: '/contactSupport', page: () => ContactUsPage()), + ], + ); + } +} + + +================================================== +FILE PATH: ./lib/models/db_sql.dart +================================================== + +import 'package:Intaleq/constant/table_names.dart'; +import 'package:sqflite/sqflite.dart'; +import 'package:path/path.dart'; + +class DbSql { + static final DbSql instance = DbSql._(); + + static Database? _database; + + DbSql._(); + + Future get database async { + if (_database != null) return _database!; + _database = await _initDatabase(); + return _database!; + } + + Future _initDatabase() async { + String path = join(await getDatabasesPath(), 'my_database.db'); + return await openDatabase( + path, + version: 1, + onCreate: (db, version) async { + await db.execute(''' + CREATE TABLE IF NOT EXISTS ${TableName.carLocations}( + id INTEGER PRIMARY KEY AUTOINCREMENT, + driver_id TEXT, + latitude REAL, + longitude REAL, + created_at TEXT, + updated_at TEXT + ) + '''); + await db.execute(''' + CREATE TABLE IF NOT EXISTS ${TableName.placesFavorite}( + id INTEGER PRIMARY KEY AUTOINCREMENT, + latitude REAL, + longitude REAL, + name TEXT UNIQUE, + rate TEXT, + createdAt TEXT + ) + '''); + // await db.execute('DROP TABLE IF EXISTS ${TableName.recentLocations}'); + await db.execute(''' + CREATE TABLE ${TableName.recentLocations}( + id INTEGER PRIMARY KEY AUTOINCREMENT, + latitude REAL, + longitude REAL, + name TEXT, + rate TEXT, + createdAt TEXT + ) +'''); + await db.execute(''' + CREATE TABLE IF NOT EXISTS ${TableName.driverOrdersRefuse}( + id INTEGER PRIMARY KEY AUTOINCREMENT, + order_id TEXT UNIQUE, + created_at TEXT, + driver_id TEXT + ) + '''); + await db.execute(''' + CREATE TABLE IF NOT EXISTS ${TableName.rideLocation}( + id INTEGER PRIMARY KEY AUTOINCREMENT, + order_id TEXT , + created_at TEXT, + lat TEXT, + lng TEXT + ) + '''); + await db.execute(''' + CREATE TABLE IF NOT EXISTS ${TableName.faceDetectTimes}( + id INTEGER PRIMARY KEY AUTOINCREMENT, + faceDetectTimes INTEGER + ) + '''); + await db.execute(''' + CREATE TABLE IF NOT EXISTS ${TableName.captainNotification}( + id INTEGER PRIMARY KEY AUTOINCREMENT, + faceDetectTimes INTEGER + ) + '''); + }, + ); + } + + Future>> getAllData(String table) async { + Database db = await instance.database; + return await db.query(table); + } + + Future>> getCustomQuery(String query) async { + Database db = await instance.database; + return await db.rawQuery(query); + } + + Future insertData(Map map, String table) async { + Database db = await instance.database; + return await db.insert(table, map); + } + + Future insertMapLocation(Map map, String table) async { + Database db = await instance.database; + + // Check if the record already exists (based on latitude, longitude, and name) + var existing = await db.query( + table, + where: 'latitude = ? AND longitude = ? AND name = ?', + whereArgs: [map['latitude'], map['longitude'], map['name']], + ); + + if (existing.isNotEmpty) { + // If record exists, update the createdAt field with the current timestamp + var updatedMap = Map.from(map); + updatedMap['createdAt'] = + DateTime.now().toIso8601String(); // Update timestamp + return await db.update( + table, + updatedMap, + where: 'id = ?', + whereArgs: [existing.first['id']], // Update the existing row + ); + } else { + // If record doesn't exist, insert new record with the current timestamp + map['createdAt'] = DateTime.now().toIso8601String(); + return await db.insert(table, map); + } + } + + Future updateData(Map map, String table, int id) async { + Database db = await instance.database; + + return await db.update(table, map, where: 'id = ?', whereArgs: [id]); + } + + Future deleteData(String table, int id) async { + Database db = await instance.database; + return await db.delete(table, where: 'id = ?', whereArgs: [id]); + } + + Future deleteAllData(String table) async { + Database db = await instance.database; + return await db.delete(table); + } +} + + +================================================== +FILE PATH: ./lib/models/model/painter_copoun.dart +================================================== + +import 'dart:math' as math; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/main.dart'; +import 'package:Intaleq/splash_screen_page.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:get/get.dart'; + +class CouponPainter extends CustomPainter { + final Color primaryColor; + final Color secondaryColor; + + CouponPainter({ + required this.primaryColor, + required this.secondaryColor, + }); + + @override + void paint(Canvas canvas, Size size) { + final Paint primaryPaint = Paint() + ..color = primaryColor + ..style = PaintingStyle.fill; // + + final Paint secondaryPaint = Paint() + ..color = secondaryColor + ..style = PaintingStyle.fill; + + final Path path = Path(); + + // Draw the main ticket shape + path.moveTo(0, size.height * 0.1); + path.lineTo(size.width * 0.93, size.height * 0.1); + path.arcToPoint( + Offset(size.width, size.height * 0.2), + radius: const Radius.circular(20), + clockwise: false, + ); + path.lineTo(size.width, size.height * 0.8); + path.arcToPoint( + Offset(size.width * 0.93, size.height * 0.9), + radius: const Radius.circular(20), + clockwise: false, + ); + path.lineTo(0, size.height * 0.9); + path.close(); + + canvas.drawPath(path, primaryPaint); + + // Draw decorative circles on the left side + for (int i = 0; i < 5; i++) { + canvas.drawCircle( + Offset(0, size.height * (0.2 + i * 0.15)), + 10, + secondaryPaint, + ); + } + + // Draw a wavy pattern on the right side + final wavePaint = Paint() + ..color = secondaryColor.withOpacity(0.3) + ..style = PaintingStyle.stroke + ..strokeWidth = 2; + + for (int i = 0; i < 20; i++) { + canvas.drawLine( + Offset(size.width * 0.8, i * 10.0), + Offset( + size.width, + i * 10.0 + math.sin(i * 0.5) * 10, + ), + wavePaint, + ); + } + } + + @override + bool shouldRepaint(CustomPainter oldDelegate) => false; +} + +class PromoBanner extends StatelessWidget { + final String promoCode; + final String discountPercentage; + final String validity; + + const PromoBanner({ + Key? key, + required this.promoCode, + required this.discountPercentage, + required this.validity, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return CustomPaint( + painter: CouponPainter( + primaryColor: Colors.blue[800]!, + secondaryColor: Colors.white, + ), + child: Container( + width: 320, + height: 240, + padding: const EdgeInsets.all(16), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + const SizedBox( + height: 10, + ), + Text( + 'Enter the promo code and get'.tr, + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: Colors.white, + ), + textAlign: TextAlign.center, + ), + Text( + '${'DISCOUNT'.tr} $discountPercentage ${'for'.tr} $validity' + .toUpperCase(), + style: const TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + color: Colors.white, + ), + textAlign: TextAlign.center, + ), + const SizedBox(height: 10), + Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(10), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.1), + blurRadius: 4, + offset: const Offset(0, 2), + ), + ], + ), + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10), + child: Text( + promoCode, + style: TextStyle( + fontSize: 24, + fontWeight: FontWeight.bold, + color: Colors.blue[800], + ), + ), + ), + const SizedBox(height: 10), + ElevatedButton( + onPressed: () { + // Copy promo code to clipboard + Clipboard.setData(ClipboardData(text: promoCode)); + // Show a Snackbar or other feedback to the user + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text('Promo code copied to clipboard!'.tr)), + ); + box.write(BoxName.isGiftToken, '1'); + box.write(BoxName.isFirstTime, '1'); + Get.back(); + }, + style: ElevatedButton.styleFrom( + foregroundColor: Colors.blue[800], // Customize the color + backgroundColor: Colors.white, // Customize the background color + ), + child: Text('Copy Code'.tr), + ) + ], + ), + ), + ); + } +} + +// import 'package:Intaleq/constant/colors.dart'; +// import 'package:flutter/cupertino.dart'; +// import 'package:flutter/material.dart'; + +// class CouponPainter extends CustomPainter { +// @override +// void paint(Canvas canvas, Size size) { +// final Paint paint = Paint() +// ..color = AppColor.blueColor +// ..style = PaintingStyle.fill; + +// final Path path = Path(); + +// // Draw the ticket shape (like the image) +// path.moveTo(0, 0); +// path.lineTo(size.width * 0.7, 0); // top left to top right edge + +// // Draw curve for the cut on the right side (ticket look) +// path.arcToPoint(Offset(size.width, size.height * 0.15), +// radius: const Radius.circular(15), clockwise: false); +// path.lineTo(size.width, size.height * 0.85); +// path.arcToPoint(Offset(size.width * 0.7, size.height), +// radius: const Radius.circular(15), clockwise: false); +// path.lineTo(0, size.height); + +// canvas.drawPath(path, paint); +// } + +// @override +// bool shouldRepaint(CustomPainter oldDelegate) { +// return false; +// } +// } + +// class PromoBanner extends StatelessWidget { +// final String promoCode; +// final String discountPercentage; +// final String validity; + +// const PromoBanner({ +// required this.promoCode, +// required this.discountPercentage, +// required this.validity, +// }); + +// @override +// Widget build(BuildContext context) { +// return CustomPaint( +// painter: CouponPainter(), +// child: Container( +// width: 300, // Fixed width for the promo banner +// height: 180, // Set the desired height for your banner +// padding: const EdgeInsets.all(16), +// child: Column( +// mainAxisAlignment: MainAxisAlignment.spaceAround, +// children: [ +// Text( +// 'Enter the promo code and get'.toUpperCase(), +// style: const TextStyle( +// fontSize: 16, +// fontWeight: FontWeight.bold, +// color: Colors.white, +// ), +// textAlign: TextAlign.center, +// ), +// Text( +// '$discountPercentage OFF for $validity'.toUpperCase(), +// style: const TextStyle( +// fontSize: 18, +// fontWeight: FontWeight.bold, +// color: Colors.white, +// ), +// textAlign: TextAlign.center, +// ), +// const SizedBox(height: 10), +// Container( +// decoration: BoxDecoration( +// color: Colors.white, +// borderRadius: BorderRadius.circular(10), +// ), +// padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10), +// child: Text( +// promoCode, +// style: TextStyle( +// fontSize: 20, +// fontWeight: FontWeight.bold, +// color: Colors.blue[800], +// ), +// ), +// ), +// ], +// ), +// ), +// ); +// } +// } + + +================================================== +FILE PATH: ./lib/models/model/onboarding_model.dart +================================================== + +import 'package:get/get.dart'; + +List onBoardingList = [ + OnBoardingModel( + title: 'Welcome to Intaleq!'.tr, + image: 'assets/images/on1.png', + body: + 'Intaleq is the ride-hailing app that is safe, reliable, and accessible.' + .tr, + ), + OnBoardingModel( + title: 'Get to your destination quickly and easily.'.tr, + image: 'assets/images/on2.png', + body: 'With Intaleq, you can get a ride to your destination in minutes.'.tr, + ), + OnBoardingModel( + title: 'Enjoy a safe and comfortable ride.'.tr, + image: 'assets/images/on3.png', + body: + 'Intaleq is committed to safety, and all of our captains are carefully screened and background checked.' + .tr, + ), +]; + +class OnBoardingModel { + final String? title; + final String? image; + final String? body; + OnBoardingModel({this.body, this.title, this.image}); +} + + +================================================== +FILE PATH: ./lib/models/model/locations.dart +================================================== + +class CarLocationModel { + String id; + String driverId; + double latitude; + double heading; + double speed; + double longitude; + DateTime createdAt; + DateTime updatedAt; + + CarLocationModel({ + required this.id, + required this.driverId, + required this.latitude, + required this.longitude, + required this.heading, + required this.speed, + required this.createdAt, + required this.updatedAt, + }); + + factory CarLocationModel.fromJson(Map json) { + return CarLocationModel( + id: json['id'], + driverId: json['driver_id'], + latitude: double.parse(json['latitude'].toString()), + longitude: double.parse(json['longitude'].toString()), + heading: double.parse(json['heading'].toString()), + speed: double.parse(json['speed'].toString()), + createdAt: DateTime.parse(json['created_at']), + updatedAt: DateTime.parse(json['updated_at']), + ); + } +} + + +================================================== +FILE PATH: ./lib/models/model/driver/rides_summary_model.dart +================================================== + +class MonthlyDataModel { + int day; + int totalDuration; + + MonthlyDataModel({required this.day, required this.totalDuration}); + + factory MonthlyDataModel.fromJson(Map json) => + MonthlyDataModel( + day: int.parse(json['day'].toString().split('-')[2]), + totalDuration: + int.parse(json['total_duration'].toString().split(':')[0])); +} + + +================================================== +FILE PATH: ./lib/models/model/admin/passenger_model.dart +================================================== + +class Passenger { + String id; + String phone; + String email; + String gender; + String status; + String birthdate; + String site; + String firstName; + String lastName; + String sosPhone; + String education; + String employmentType; + String maritalStatus; + String createdAt; + String updatedAt; + int countPassenger; + int countFeedback; + double ratingPassenger; + int countDriverRate; + int countPassengerCancel; + double passengerAverageRating; + int countPassengerRate; + int countPassengerRide; + + Passenger({ + required this.id, + required this.phone, + required this.email, + required this.gender, + required this.status, + required this.birthdate, + required this.site, + required this.firstName, + required this.lastName, + required this.sosPhone, + required this.education, + required this.employmentType, + required this.maritalStatus, + required this.createdAt, + required this.updatedAt, + required this.countPassenger, + required this.countFeedback, + required this.ratingPassenger, + required this.countDriverRate, + required this.countPassengerCancel, + required this.passengerAverageRating, + required this.countPassengerRate, + required this.countPassengerRide, + }); + + factory Passenger.fromJson(Map json) { + return Passenger( + id: json['id'], + phone: json['phone'], + email: json['email'], + gender: json['gender'], + status: json['status'], + birthdate: json['birthdate'], + site: json['site'], + firstName: json['first_name'], + lastName: json['last_name'], + sosPhone: json['sosPhone'], + education: json['education'], + employmentType: json['employmentType'], + maritalStatus: json['maritalStatus'], + createdAt: json['created_at'], + updatedAt: json['updated_at'], + countPassenger: json['countPassenger'], + countFeedback: json['countFeedback'], + ratingPassenger: json['ratingPassenger'].toDouble(), + countDriverRate: json['countDriverRate'], + countPassengerCancel: json['countPassengerCancel'], + passengerAverageRating: json['passengerAverageRating'].toDouble(), + countPassengerRate: json['countPassengerRate'], + countPassengerRide: json['countPassengerRide'], + ); + } +} + + +================================================== +FILE PATH: ./lib/models/model/admin/monthly_ride.dart +================================================== + +class MonthlyDataModel { + final int year; + final int month; + final int day; + final int ridesCount; + + MonthlyDataModel({ + required this.year, + required this.month, + required this.day, + required this.ridesCount, + }); + + factory MonthlyDataModel.fromJson(Map json) => + MonthlyDataModel( + year: json['year'] as int, + month: json['month'] as int, + day: json['day'] as int, + ridesCount: json['rides_count'] as int, + ); +} + + +================================================== +FILE PATH: ./lib/controller/home/decode_polyline_isolate.dart +================================================== + +import 'package:google_maps_flutter/google_maps_flutter.dart'; + +List decodePolylineIsolate(String encoded) { + List points = []; + int index = 0, len = encoded.length; + int lat = 0, lng = 0; + + while (index < len) { + int b, shift = 0, result = 0; + do { + b = encoded.codeUnitAt(index++) - 63; + result |= (b & 0x1f) << shift; + shift += 5; + } while (b >= 0x20); + int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1)); + lat += dlat; + + shift = 0; + result = 0; + do { + b = encoded.codeUnitAt(index++) - 63; + result |= (b & 0x1f) << shift; + shift += 5; + } while (b >= 0x20); + int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1)); + lng += dlng; + + points.add(LatLng(lat / 1E5, lng / 1E5)); + } + return points; +} +// Helper method for decoding polyline (if not already defined) +// List decodePolyline(String encoded) { +// List points = []; +// int index = 0, len = encoded.length; +// int lat = 0, lng = 0; + +// while (index < len) { +// int b, shift = 0, result = 0; +// do { +// b = encoded.codeUnitAt(index++) - 63; +// result |= (b & 0x1f) << shift; +// shift += 5; +// } while (b >= 0x20); +// int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1)); +// lat += dlat; + +// shift = 0; +// result = 0; +// do { +// b = encoded.codeUnitAt(index++) - 63; +// result |= (b & 0x1f) << shift; +// shift += 5; +// } while (b >= 0x20); +// int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1)); +// lng += dlng; + +// points.add(LatLng(lat / 1E5, lng / 1E5)); +// } + +// return points; +// } + + +================================================== +FILE PATH: ./lib/controller/home/vip_waitting_page.dart +================================================== + +import 'dart:async'; +import 'dart:convert'; + +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/colors.dart'; +import 'package:Intaleq/constant/links.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/controller/home/map_passenger_controller.dart'; +import 'package:Intaleq/main.dart'; +import 'package:Intaleq/views/widgets/elevated_btn.dart'; +import 'package:Intaleq/views/widgets/my_scafold.dart'; +import 'package:Intaleq/views/widgets/mycircular.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_font_icons/flutter_font_icons.dart'; +import 'package:get/get.dart'; +import 'package:intl/intl.dart'; + +import '../functions/crud.dart'; +import '../functions/encrypt_decrypt.dart'; + +class VipOrderController extends GetxController { + RxBool isLoading = false.obs; + final arguments = Get.arguments; + RxList tripData = [].obs; + RxBool isButtonVisible = false.obs; + RxInt countdown = 60.obs; + Timer? _countdownTimer; + + @override + void onInit() { + super.onInit(); + fetchOrder(); + startCountdown(); + } + + @override + void onClose() { + _countdownTimer?.cancel(); + super.onClose(); + } + + Future fetchOrder() async { + try { + isLoading.value = true; + var mapPassengerController = Get.find(); + + var res = await CRUD().get( + link: AppLink.getMishwari, + payload: { + // 'driverId': mapPassengerController.driverIdVip.toString(), + 'driverId': box.read(BoxName.passengerID).toString(), + }, + ); + + if (res != 'failure') { + var decodedResponse = jsonDecode(res); + if (decodedResponse['message'] is List) { + tripData.value = decodedResponse['message']; + } else { + tripData.clear(); // Ensure empty list if no data + // mySnackeBarError('No trip data found'); + } + } else { + tripData.clear(); + // mySnackeBarError('Failed to fetch trip data'); + } + } catch (e) { + tripData.clear(); + // mySnackeBarError('An error occurred: $e'); + } finally { + isLoading.value = false; + } + } + + void startCountdown() { + _countdownTimer?.cancel(); // Cancel any existing timer + countdown.value = 60; + + _countdownTimer = Timer.periodic(const Duration(seconds: 1), (timer) { + if (countdown.value > 0) { + countdown.value--; + } else { + timer.cancel(); + isButtonVisible.value = true; + } + }); + } + + void sendToDriverAgain() { + // Reset states + isButtonVisible.value = false; + fetchOrder(); // Refresh order + startCountdown(); // Restart countdown + } +} + +class VipWaittingPage extends StatelessWidget { + VipWaittingPage({super.key}); + final VipOrderController vipOrderController = Get.put(VipOrderController()); + + @override + Widget build(BuildContext context) { + return MyScafolld( + title: "Waiting VIP".tr, + body: [ + Obx(() { + // Loading state + if (vipOrderController.isLoading.value) { + return const Center(child: MyCircularProgressIndicator()); + } + + // No data state + if (vipOrderController.tripData.isEmpty) { + return Center( + child: Text( + 'No trip data available'.tr, + style: AppStyle.title, + ), + ); + } + + // Data available + var data = vipOrderController.tripData[0]; + + // Function to get the localized status string + String getLocalizedStatus(String status) { + switch (status) { + case 'pending': + return 'pending'.tr; + case 'accepted': + return 'accepted'.tr; + case 'begin': + return 'begin'.tr; + case 'rejected': + return 'rejected'.tr; + case 'cancelled': + return 'cancelled'.tr; + default: + return 'unknown'.tr; + } + } + + // Function to get the appropriate status color + Color getStatusColor(String status) { + switch (status) { + case 'pending': + return Colors.yellow; + case 'accepted': + return Colors.green; + case 'begin': + return Colors.green; + case 'rejected': + return Colors.red; + case 'cancelled': + return Colors.red; + default: + return Colors.grey; + } + } + + return Card( + elevation: 4, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + margin: const EdgeInsets.all(16), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "${'Driver Name:'.tr} ${data['name']}", + style: AppStyle.title, + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "${'Car Plate:'.tr} ${data['car_plate']}", + style: AppStyle.title, + ), + Text( + "${'Car Make:'.tr} ${data['make']}", + style: AppStyle.title, + ), + Text( + "${'Car Model:'.tr} ${data['model']}", + style: AppStyle.title, + ), + Text( + "${"Car Color:".tr} ${data['color']}", + style: AppStyle.title, + ), + ], + ), + SizedBox( + width: 100, + height: 100, + child: Icon( + Fontisto.car, + size: 80, + color: Color( + int.parse( + data['color_hex'].replaceFirst('#', '0xff'), + ), + ), + ), + ), + ], + ), + const SizedBox(height: 12), + const Divider(), + const SizedBox(height: 12), + Container( + color: getStatusColor(data['status']), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + "${'Trip Status:'.tr} ${getLocalizedStatus(data['status'])}", + style: const TextStyle(fontSize: 16), + ), + ), + ), + Text( + "${'Scheduled Time:'.tr} ${DateFormat('yyyy-MM-dd hh:mm a').format(DateTime.parse(data['timeSelected']))}", + style: const TextStyle(fontSize: 16), + ), + const SizedBox(height: 12), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + data['status'].toString() != 'begin' + ? MyElevatedButton( + title: "Cancel Trip".tr, + kolor: AppColor.redColor, + onPressed: () { + Get.find().cancelVip( + data['token'].toString(), + data['id'].toString(), + ); + }, + ) + : const SizedBox(), + Obx(() { + // If countdown is still running, show countdown + if (!vipOrderController.isButtonVisible.value) { + return Column( + children: [ + CircularProgressIndicator( + value: 1 - + (vipOrderController.countdown.value / 60), + strokeWidth: 6.0, + color: AppColor.greenColor, + backgroundColor: AppColor.accentColor, + ), + const SizedBox(height: 10), + Text( + "${vipOrderController.countdown.value}s ${'remaining'.tr}", + style: const TextStyle(fontSize: 16), + ), + ], + ); + } + + // Once countdown is complete, show "Send to Driver Again" button + return MyElevatedButton( + title: "Send to Driver Again".tr, + kolor: AppColor.greenColor, + onPressed: () { + Get.find() + .sendToDriverAgain(data['token']); + vipOrderController.fetchOrder(); + }, + ); + }), + ], + ), + const SizedBox( + height: 30, + ), + data['status'].toString() == 'begin' + ? MyElevatedButton( + title: "Click here to begin your trip\n\nGood luck, " + .tr + + (box.read(BoxName.name).toString().split(' ')[0]) + .toString(), + kolor: AppColor.greenColor, + onPressed: () { + final mapPassengerController = + Get.find(); + mapPassengerController.make = data['make']; + mapPassengerController.licensePlate = + data['car_plate']; + mapPassengerController.model = data['model']; + mapPassengerController.driverId = data['driverId']; + mapPassengerController.carColor = data['color']; + mapPassengerController.driverRate = data['rating']; + mapPassengerController.colorHex = data['color_hex']; + mapPassengerController.driverPhone = data['phone']; + mapPassengerController.driverToken = data['token']; + mapPassengerController.driverName = + data['name'].toString().split(' ')[0]; + + Get.back(); + + mapPassengerController.begiVIPTripFromPassenger(); + }, + ) + : const SizedBox() + ], + ), + ), + ); + }), + ], + isleading: true, + ); + } +} + + +================================================== +FILE PATH: ./lib/controller/home/points_for_rider_controller.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/controller/home/map_passenger_controller.dart'; + +import '../../constant/api_key.dart'; +import '../../constant/links.dart'; +import '../functions/crud.dart'; +import '../functions/location_controller.dart'; + +class PointsForRiderController extends GetxController { + List locations = []; + String hintTextDestinationPoint = 'Search for your destination'.tr; + TextEditingController placeStartController = TextEditingController(); + + void addLocation(String location) { + locations.add(location); + update(); + } + + void getTextFromList(String location) { + locations.add(location); + update(); + Get.back(); + } + + void removeLocation(int index) { + locations.removeAt(index); + update(); + } + + void onReorder(int oldIndex, int newIndex) { + if (newIndex > oldIndex) { + newIndex -= 1; + update(); + } + + final item = locations.removeAt(oldIndex); + locations.insert(newIndex, item); + update(); + } +} + +class LocationModel { + String name; + double lat, lon; + + LocationModel({required this.name, required this.lat, required this.lon}); +} + +class WayPointController extends GetxController { + // A list of text editing controllers for each text field + // final textFields = [TextEditingController()].obs; + List wayPoints = []; + List> placeListResponse = []; + double wayPointHeight = 400; + String hintTextDestinationPoint = 'Search for your destination'.tr; + TextEditingController textSearchCotroller = TextEditingController(); + // A list of places corresponding to each text field + final places = []; + + final hintTextPointList = []; + late LatLng myLocation; + + void addWayPoints() { + String wayPoint = 'Add a Stop'.tr; + + if (wayPoints.length < 5) { + wayPoints.add(wayPoint); + update(); + } else { + Get.defaultDialog( + title: 'This is most WayPoints', + titleStyle: AppStyle.title, + middleText: ''); + } + update(); + } + + void removeTextField(int index) { + wayPoints.removeAt(index); + + update(); + } + + // A method to reorder the text fields and the places + void reorderTextFields(int oldIndex, int newIndex) { + if (newIndex > oldIndex) { + newIndex -= 1; + } + final wayPoint = wayPoints.removeAt(oldIndex); + wayPoints.insert(newIndex, wayPoint); + update(); + } + + void updatePlace(int index, String input) async { + var url = + '${AppLink.googleMapsLink}place/nearbysearch/json?keyword=$input&location=${myLocation.latitude},${myLocation.longitude}&radius=50000&language=en&key=${AK.mapAPIKEY.toString()}'; + var response = await CRUD().getGoogleApi(link: url, payload: {}); + // final place = input; + // if (index == 0) { + List newList = []; + placeListResponse.add(newList); + newList = response['results']; + placeListResponse[index].add(newList); + update(); + // } + + update(); + } + + @override + void onInit() { + // Get.put(LocationController()); + addWayPoints(); + myLocation = Get.find().passengerLocation; + super.onInit(); + } +} + +class PlaceList extends StatelessWidget { + // Get the controller instance + final controller = Get.put(WayPointController()); + + @override + Widget build(BuildContext context) { + // Use the Obx widget to rebuild the widget when the controller changes + return Obx(() { + // Use the ListView widget to display the list of places + return ListView( + // The children of the list are the places + children: [ + // Loop through the places in the controller + for (final place in controller.places) + // Create a text widget for each place + Text( + // Use the place as the text + place, + + // Add some style and padding + style: const TextStyle(fontSize: 18.0), + ), + ], + ); + }); + } +} + + +================================================== +FILE PATH: ./lib/controller/home/device_tier.dart +================================================== + +import 'dart:io'; +import 'package:device_info_plus/device_info_plus.dart'; + +import '../../main.dart'; + +// مفاتيح التخزين (بسيطة) +const _kDeviceTierKey = 'deviceTier'; // 'low' | 'mid' | 'high' +const _kDeviceTierCheckedAtKey = 'deviceTierTime'; // millisSinceEpoch + +Future detectAndCacheDeviceTier({bool force = false}) async { + // لا تعيد الفحص إذا عملناه خلال آخر 24 ساعة + if (!force) { + final last = box.read(_kDeviceTierCheckedAtKey); + if (last is int) { + final dt = DateTime.fromMillisecondsSinceEpoch(last); + if (DateTime.now().difference(dt) < const Duration(hours: 24)) { + final cached = box.read(_kDeviceTierKey); + if (cached is String && cached.isNotEmpty) + return cached; // low/mid/high + } + } + } + + final info = DeviceInfoPlugin(); + int score = 0; + + if (Platform.isAndroid) { + final a = await info.androidInfo; + final int sdk = a.version.sdkInt ?? 0; + final int cores = Platform.numberOfProcessors; + final int abisCount = a.supportedAbis.length; + final bool isEmu = !(a.isPhysicalDevice ?? true); + + // SDK (أقدم = أضعف) + if (sdk <= 26) + score += 3; // 8.0 وأقدم + else if (sdk <= 29) + score += 2; // 9-10 + else if (sdk <= 30) score += 1; // 11 + + // الأنوية + if (cores <= 4) + score += 3; + else if (cores <= 6) + score += 2; + else if (cores <= 8) score += 1; + + // ABI count (القليل غالباً أضعف) + if (abisCount <= 1) + score += 2; + else if (abisCount == 2) score += 1; + + // محاكي + if (isEmu) score += 2; + } else { + // iOS/منصات أخرى: تقدير سريع بالأنوية فقط + final int cores = Platform.numberOfProcessors; + if (cores <= 4) + score += 3; + else if (cores <= 6) + score += 2; + else if (cores <= 8) score += 1; + } + + // تحويل السكور إلى تصنيف + final String tier = (score >= 6) + ? 'low' + : (score >= 3) + ? 'mid' + : 'high'; + + box.write(_kDeviceTierKey, tier); + box.write(_kDeviceTierCheckedAtKey, DateTime.now().millisecondsSinceEpoch); + return tier; +} + +// للقراءة السريعة وقت ما تحتاج: +String getCachedDeviceTier() { + final t = box.read(_kDeviceTierKey); + if (t is String && t.isNotEmpty) return t; + return 'mid'; +} + +bool isLowEnd() => getCachedDeviceTier() == 'low'; +bool isMidEnd() => getCachedDeviceTier() == 'mid'; +bool isHighEnd() => getCachedDeviceTier() == 'high'; + + +================================================== +FILE PATH: ./lib/controller/home/device_performance.dart +================================================== + +import 'dart:io'; +import 'package:device_info_plus/device_info_plus.dart'; + +class DevicePerformanceManager { + /// القائمة البيضاء لموديلات الهواتف القوية (Flagships Only) + /// أي هاتف يبدأ موديله بأحد هذه الرموز سيعتبر قوياً + static const List _highEndSamsungModels = [ + 'SM-S', // سلسلة Galaxy S21, S22, S23, S24 (S901, S908, S911...) + 'SM-F', // سلسلة Fold و Flip (Z Fold, Z Flip) + 'SM-N9', // سلسلة Note 9, Note 10, Note 20 + 'SM-G9', // سلسلة S10, S20 (G970, G980...) + ]; + + static const List _highEndGoogleModels = [ + 'Pixel 6', + 'Pixel 7', + 'Pixel 8', + 'Pixel 9', + 'Pixel Fold' + ]; + + static const List _highEndHuaweiModels = [ + 'ELS-', // P40 Pro + 'ANA-', // P40 + 'HMA-', // Mate 20 + 'LYA-', // Mate 20 Pro + 'VOG-', // P30 Pro + 'ELE-', // P30 + 'NOH-', // Mate 40 Pro + 'AL00', // Mate X series (some) + ]; + + static const List _highEndXiaomiModels = [ + '2201122', // Xiaomi 12 series patterns often look like this + '2210132', // Xiaomi 13 + '2304FPN', // Xiaomi 13 Ultra + 'M2007J1', // Mi 10 series + 'M2102K1', // Mi 11 Ultra + ]; + + static const List _highEndOnePlusModels = [ + 'GM19', // OnePlus 7 + 'HD19', // OnePlus 7T + 'IN20', // OnePlus 8 + 'KB20', // OnePlus 8T + 'LE21', // OnePlus 9 + 'NE22', // OnePlus 10 + 'PHB110', // OnePlus 11 + 'CPH', // Newer OnePlus models + ]; + + /// دالة الفحص الرئيسية + static Future isHighEndDevice() async { + // 1. الآيفون دائماً قوي (نظام الرسوميات فيه متفوق حتى في الموديلات القديمة) + if (Platform.isIOS) return true; + + if (Platform.isAndroid) { + try { + final androidInfo = await DeviceInfoPlugin().androidInfo; + + String manufacturer = androidInfo.manufacturer.toLowerCase(); + String model = + androidInfo.model.toUpperCase(); // نحوله لحروف كبيرة للمقارنة + String hardware = androidInfo.hardware.toLowerCase(); // المعالج + + // --- الفحص العكسي (الحظر المباشر) --- + // إذا كان المعالج من الفئات الضعيفة جداً المشهورة في الهواتف المقلدة + // mt65xx, mt6735, sc77xx هي معالجات رخيصة جداً + if (hardware.contains('mt65') || + hardware.contains('mt6735') || + hardware.contains('sc77')) { + return false; + } + + // --- فحص القائمة البيضاء (Whitelist) --- + + // 1. Samsung Flagships + if (manufacturer.contains('samsung')) { + for (var prefix in _highEndSamsungModels) { + if (model.startsWith(prefix)) return true; + } + } + + // 2. Google Pixel (6 and above) + if (manufacturer.contains('google')) { + for (var prefix in _highEndGoogleModels) { + if (model.contains(prefix.toUpperCase())) return true; + } + } + + // 3. Huawei Flagships + if (manufacturer.contains('huawei')) { + for (var prefix in _highEndHuaweiModels) { + if (model.startsWith(prefix)) return true; + } + } + + // 4. OnePlus Flagships + if (manufacturer.contains('oneplus')) { + for (var prefix in _highEndOnePlusModels) { + if (model.startsWith(prefix)) return true; + } + } + + // 5. Xiaomi Flagships + if (manufacturer.contains('xiaomi') || + manufacturer.contains('redmi') || + manufacturer.contains('poco')) { + // شاومي تسميتها معقدة، لذا سنعتمد على فحص الرام كعامل مساعد هنا فقط + // لأن هواتف شاومي القوية عادة لا تزور الرام + // الرام يجب أن يكون أكبر من 6 جيجا (بايت) + double ramGB = (androidInfo.availableRamSize) / (1024 * 1024 * 1024); + if (ramGB > 7.5) + return true; // 8GB RAM or more is usually safe for Xiaomi high-end + } + + // إذا لم يكن من ضمن القوائم أعلاه، نعتبره جهازاً متوسطاً/ضعيفاً ونعرض الرسم البسيط + return false; + } catch (e) { + // في حال حدوث خطأ في الفحص، نعود للوضع الآمن (الرسم البسيط) + return false; + } + } + + return false; + } +} + + +================================================== +FILE PATH: ./lib/controller/home/contact_us_controller.dart +================================================== + +import 'dart:math'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_font_icons/flutter_font_icons.dart'; +import 'package:get/get.dart'; + +import '../../../constant/colors.dart'; +import '../functions/launch.dart'; + +class ContactUsController extends GetxController { + /// WORKING HOURS (10:00 → 16:00) + final TimeOfDay workStartTime = const TimeOfDay(hour: 10, minute: 0); + final TimeOfDay workEndTime = const TimeOfDay(hour: 16, minute: 0); + + bool _isWithinWorkTime(TimeOfDay now) { + return (now.hour > workStartTime.hour || + (now.hour == workStartTime.hour && + now.minute >= workStartTime.minute)) && + (now.hour < workEndTime.hour || + (now.hour == workEndTime.hour && now.minute <= workEndTime.minute)); + } + + /// PHONE LIST (USED FOR CALLS + WHATSAPP) + final List phoneNumbers = [ + '+963952475734', + '+963952475740', + '+963952475742' + ]; + + /// RANDOM PHONE SELECTOR + String getRandomPhone() { + final random = Random(); + return phoneNumbers[random.nextInt(phoneNumbers.length)]; + } + + /// SHOW DIALOG + void showContactDialog(BuildContext context) { + TimeOfDay now = TimeOfDay.now(); + bool withinHours = _isWithinWorkTime(now); + + showCupertinoModalPopup( + context: context, + builder: (context) => CupertinoActionSheet( + title: Text('Contact Us'.tr), + message: Text('Choose a contact option'.tr), + actions: [ + /// 📞 CALL (RANDOM) — ONLY DURING WORK HOURS + if (withinHours) + CupertinoActionSheetAction( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Icon(CupertinoIcons.phone), + Text('Call Support'.tr), + ], + ), + onPressed: () { + final phone = getRandomPhone(); + makePhoneCall(phone); + }, + ), + + /// ⛔ OUTSIDE WORK HOURS — SHOW INFO + if (!withinHours) + CupertinoActionSheetAction( + child: Text( + 'Work time is from 10:00 AM to 16:00 PM.\nYou can send a WhatsApp message or email.' + .tr, + textAlign: TextAlign.center, + ), + onPressed: () => Navigator.pop(context), + ), + + /// 💬 WHATSAPP (RANDOM) + CupertinoActionSheetAction( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + const Icon( + FontAwesome.whatsapp, + color: AppColor.greenColor, + ), + Text('Send WhatsApp Message'.tr), + ], + ), + onPressed: () { + final phone = getRandomPhone(); + launchCommunication('whatsapp', phone, 'Hello'.tr); + }, + ), + + /// 📧 EMAIL + CupertinoActionSheetAction( + child: Text('Send Email'.tr), + onPressed: () => launchCommunication( + 'email', 'support@intaleqapp.com', 'Hello'.tr), + ), + ], + + /// ❌ CANCEL BUTTON + cancelButton: CupertinoActionSheetAction( + child: Text('Cancel'.tr), + onPressed: () => Navigator.pop(context), + ), + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/controller/home/trip_monitor_controller.dart +================================================== + +import 'dart:async'; +import 'dart:convert'; + +import 'package:Intaleq/constant/links.dart'; +import 'package:Intaleq/controller/functions/crud.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; + +class TripMonitorController extends GetxController { + bool isLoading = false; + Map tripData = {}; + late String rideId; + late String driverId; + GoogleMapController? mapController; + List myListString = []; + late Timer timer; + late LatLng parentLocation; + BitmapDescriptor carIcon = BitmapDescriptor.defaultMarker; + BitmapDescriptor motoIcon = BitmapDescriptor.defaultMarker; + BitmapDescriptor ladyIcon = BitmapDescriptor.defaultMarker; + double rotation = 0; + double speed = 0; + + getLocationParent() async { + var res = await CRUD().get( + link: AppLink.getLocationParents, payload: {"driver_id": driverId}); + if (res != 'failure') { + tripData = jsonDecode(res); + parentLocation = LatLng( + double.parse(tripData['message'][0]['latitude'].toString()), + double.parse(tripData['message'][0]['longitude'].toString())); + rotation = double.parse(tripData['message'][0]['heading'].toString()); + speed = double.parse(tripData['message'][0]['speed'].toString()); + update(); + } + } + + void onMapCreated(GoogleMapController controller) async { + mapController = controller; + controller.getVisibleRegion(); + controller.animateCamera( + CameraUpdate.newLatLng(parentLocation), + ); + update(); + // Set up a timer or interval to trigger the marker update every 3 seconds. + timer = Timer.periodic(const Duration(seconds: 10), (_) async { + await getLocationParent(); + mapController?.animateCamera(CameraUpdate.newLatLng(parentLocation)); + update(); + }); + } + + // init() async { + // final arguments = Get.arguments; + // driverId = arguments['driverId']; + // rideId = arguments['rideId']; + // await getLocationParent(); + // } + + Future init({String? rideId, String? driverId}) async { + this.driverId = driverId!; + this.rideId = rideId!; + await getLocationParent(); + update(); + } + + void addCustomCarIcon() { + ImageConfiguration config = ImageConfiguration( + size: const Size(30, 30), devicePixelRatio: Get.pixelRatio); + BitmapDescriptor.fromAssetImage(config, 'assets/images/car.png', + mipmaps: false) + .then((value) { + carIcon = value; + update(); + }); + void addCustomMotoIcon() { + ImageConfiguration config = ImageConfiguration( + size: const Size(30, 30), devicePixelRatio: Get.pixelRatio); + BitmapDescriptor.fromAssetImage(config, 'assets/images/moto1.png', + mipmaps: false) + .then((value) { + motoIcon = value; + update(); + }); + } + + void addCustomLadyIcon() { + ImageConfiguration config = ImageConfiguration( + size: const Size(30, 30), devicePixelRatio: Get.pixelRatio); + BitmapDescriptor.fromAssetImage(config, 'assets/images/lady1.png', + mipmaps: false) + .then((value) { + ladyIcon = value; + update(); + }); + } + } + + @override + void onInit() { + addCustomCarIcon(); + super.onInit(); + } + + @override + void onClose() { + timer.cancel(); + mapController?.dispose(); + + super.onClose(); + } +} + + +================================================== +FILE PATH: ./lib/controller/home/deep_link_controller.dart +================================================== + +import 'dart:async'; +import 'package:app_links/app_links.dart'; +import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; + +class DeepLinkController extends GetxController { + // استخدم AppLinks للتعامل مع الروابط + final _appLinks = AppLinks(); + StreamSubscription? _linkSubscription; + + // متغير لتخزين الإحداثيات القادمة من الرابط + final Rx deepLinkLatLng = Rx(null); + + @override + void onInit() { + super.onInit(); + // ابدأ بالاستماع للروابط عند تشغيل التطبيق + initDeepLinks(); + } + + Future initDeepLinks() async { + // الاستماع إلى الروابط القادمة + _linkSubscription = _appLinks.uriLinkStream.listen((uri) { + print('Received deep link: $uri'); + _handleLink(uri); + }); + + // جلب الرابط الأولي الذي قد يكون فتح التطبيق + final initialUri = await _appLinks.getInitialLink(); + if (initialUri != null) { + print('Received initial deep link: $initialUri'); + _handleLink(initialUri); + } + } + + void _handleLink(Uri uri) { + // تحقق من أن الرابط يتبع النمط المتوقع (مثال: intaleq://route?lat=xx&lng=yy) + if (uri.scheme == 'intaleq' && uri.host == 'route') { + // استخراج خطوط الطول والعرض من الرابط + final latString = uri.queryParameters['lat']; + final lngString = uri.queryParameters['lng']; + + if (latString != null && lngString != null) { + final double? lat = double.tryParse(latString); + final double? lng = double.tryParse(lngString); + + if (lat != null && lng != null) { + // إذا كانت الإحداثيات صالحة، قم بتحديث المتغير + // ستستمع وحدة التحكم في الخريطة لهذا التغيير + deepLinkLatLng.value = LatLng(lat, lng); + print('Parsed LatLng from deep link: ${deepLinkLatLng.value}'); + } + } + } + } + + @override + void onClose() { + // تأكد من إلغاء الاشتراك عند إغلاق وحدة التحكم + _linkSubscription?.cancel(); + super.onClose(); + } +} + + +================================================== +FILE PATH: ./lib/controller/home/menu_controller.dart +================================================== + +import 'package:get/get.dart'; + +class MyMenuController extends GetxController { + bool isDrawerOpen = true; + + void getDrawerMenu() { + if (isDrawerOpen == true) { + isDrawerOpen = false; + } else { + isDrawerOpen = true; + } + update(); + } +} + + +================================================== +FILE PATH: ./lib/controller/home/map_passenger_controller.dart +================================================== + +import 'dart:async'; +import 'dart:convert'; +import 'dart:io'; +import 'dart:math' show Random, atan2, cos, max, min, pi, pow, sin, sqrt; +import 'dart:math' as math; +import 'dart:ui'; +import 'dart:convert'; +import 'package:crypto/crypto.dart'; +import 'package:Intaleq/views/Rate/rate_captain.dart'; +import 'package:Intaleq/views/Rate/rating_driver_bottom.dart'; +import 'package:device_info_plus/device_info_plus.dart'; +import 'package:flutter/foundation.dart'; +import 'package:http/http.dart' as http; + +import 'package:Intaleq/constant/univeries_polygon.dart'; +import 'package:Intaleq/controller/firebase/local_notification.dart'; +import 'package:Intaleq/controller/functions/encrypt_decrypt.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter_confetti/flutter_confetti.dart'; +import 'package:vector_math/vector_math.dart' show radians, degrees; + +import 'package:Intaleq/controller/functions/tts.dart'; +import 'package:Intaleq/views/home/map_page_passenger.dart'; +import 'package:Intaleq/views/widgets/my_textField.dart'; +import 'package:flutter/material.dart'; +import 'package:geolocator/geolocator.dart'; +import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +// import 'package:google_polyline_algorithm/google_polyline_algorithm.dart'; +import 'package:intl/intl.dart'; +import 'package:location/location.dart'; +import 'package:Intaleq/constant/colors.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/controller/home/points_for_rider_controller.dart'; +import 'package:Intaleq/views/home/map_widget.dart/form_serch_multiy_point.dart'; +import '../../constant/api_key.dart'; +import '../../constant/box_name.dart'; +import '../../constant/country_polygons.dart'; +import '../../constant/info.dart'; +import '../../constant/links.dart'; +import '../../constant/table_names.dart'; +import '../../env/env.dart'; +import '../../main.dart'; +import '../../models/model/locations.dart'; +import '../../models/model/painter_copoun.dart'; +import '../../print.dart'; +import '../../views/home/map_widget.dart/cancel_raide_page.dart'; +import '../../views/home/map_widget.dart/car_details_widget_to_go.dart'; +import '../../views/home/map_widget.dart/searching_captain_window.dart'; +import '../../views/home/map_widget.dart/select_driver_mishwari.dart'; +import '../../views/widgets/elevated_btn.dart'; +import '../../views/widgets/error_snakbar.dart'; +import '../../views/widgets/mydialoug.dart'; +import '../firebase/firbase_messge.dart'; +import '../firebase/notification_service.dart'; +import '../functions/audio_record1.dart'; +import '../functions/crud.dart'; +import '../functions/launch.dart'; +import '../functions/package_info.dart'; +import '../functions/secure_storage.dart'; +import '../payment/payment_controller.dart'; +import '../rate/rate_conroller.dart'; +import 'decode_polyline_isolate.dart'; +import 'deep_link_controller.dart'; +import 'device_performance.dart'; +import 'device_tier.dart'; +import 'vip_waitting_page.dart'; + +enum RideState { + noRide, // لا يوجد رحلة جارية، عرض واجهة البحث + cancelled, // تم إلغاء الرحلة + preCheckReview, // يوجد رحلة منتهية، تحقق من التقييم + searching, // جاري البحث عن كابتن + driverApplied, // تم قبول الطلب + driverArrived, // وصل السائق + inProgress, // الرحلة بدأت بالفعل + finished, // انتهت الرحلة (سيتم تحويلها إلى preCheckReview) +} + +class MapPassengerController extends GetxController { + bool isLoading = true; + TextEditingController placeDestinationController = TextEditingController(); + TextEditingController increasFeeFromPassenger = TextEditingController(); + TextEditingController placeStartController = TextEditingController(); + TextEditingController wayPoint0Controller = TextEditingController(); + TextEditingController wayPoint1Controller = TextEditingController(); + TextEditingController wayPoint2Controller = TextEditingController(); + TextEditingController wayPoint3Controller = TextEditingController(); + TextEditingController wayPoint4Controller = TextEditingController(); + TextEditingController sosPhonePassengerProfile = TextEditingController(); + TextEditingController whatsAppLocationText = TextEditingController(); + TextEditingController messageToDriver = TextEditingController(); + final sosFormKey = GlobalKey(); + final promoFormKey = GlobalKey(); + final messagesFormKey = GlobalKey(); + final increaseFeeFormKey = GlobalKey(); + List data = []; + List bounds = []; + List placesStart = []; + List driversToken = []; + LatLng previousLocationOfDrivers = const LatLng(0, 0); + double angleDegrees = 0; + LatLng currentLocationOfDrivers = const LatLng(0, 0); + List allTextEditingPlaces = []; + List placesDestination = []; + List wayPoint0 = []; + List wayPoint1 = []; + List wayPoint2 = []; + List wayPoint3 = []; + List wayPoint4 = []; + final firebaseMessagesController = + Get.isRegistered() + ? Get.find() + : Get.put(FirebaseMessagesController()); + List> placeListResponseAll = []; + + List placeListResponse = [ + formSearchPlaces(0), + formSearchPlaces(1), + formSearchPlaces(2), + formSearchPlaces(3), + ]; + LatLngBounds? boundsdata; + List markers = []; + List polyLines = []; + late LatLng passengerLocation = const LatLng(32, 34); + late LatLng newMyLocation = const LatLng(32.115295, 36.064773); + late LatLng newStartPointLocation = const LatLng(32.115295, 36.064773); + late LatLng newPointLocation0 = const LatLng(32.115295, 36.064773); + late LatLng newPointLocation1 = const LatLng(32.115295, 36.064773); + late LatLng newPointLocation2 = const LatLng(32.115295, 36.064773); + late LatLng newPointLocation3 = const LatLng(32.115295, 36.064773); + late LatLng newPointLocation4 = const LatLng(32.115295, 36.064773); + late LatLng myDestination; + List polylineCoordinates = []; + List polylineCoordinates0 = []; + List polylineCoordinates1 = []; + List polylineCoordinates2 = []; + List polylineCoordinates3 = []; + List polylineCoordinates4 = []; + List> polylineCoordinatesPointsAll = []; + List carsLocationByPassenger = []; + List driverCarsLocationToPassengerAfterApplied = []; + BitmapDescriptor markerIcon = BitmapDescriptor.defaultMarker; + BitmapDescriptor tripIcon = BitmapDescriptor.defaultMarker; + BitmapDescriptor startIcon = BitmapDescriptor.defaultMarker; + BitmapDescriptor endIcon = BitmapDescriptor.defaultMarker; + BitmapDescriptor carIcon = BitmapDescriptor.defaultMarker; + BitmapDescriptor motoIcon = BitmapDescriptor.defaultMarker; + BitmapDescriptor ladyIcon = BitmapDescriptor.defaultMarker; + double height = 150; + DateTime currentTime = DateTime.now(); + final location = Location(); + late LocationData currentLocation; + double heightMenu = 0; + double widthMenu = 0; + double heightPickerContainer = 90; + double heightPointsPageForRider = 0; + double mainBottomMenuMapHeight = Get.height * .2; + double wayPointSheetHeight = 0; + String stringRemainingTimeToPassenger = ''; + String stringRemainingTimeDriverWaitPassenger5Minute = ''; + bool isDriverInPassengerWay = false; + bool isDriverArrivePassenger = false; + bool startLocationFromMap = false; + bool isAnotherOreder = false; + bool isWhatsAppOrder = false; + bool passengerStartLocationFromMap = false; + bool workLocationFromMap = false; + bool homeLocationFromMap = false; + bool isPassengerRideLocationWidget = false; + bool startLocationFromMap0 = false; + bool startLocationFromMap1 = false; + bool startLocationFromMap2 = false; + bool startLocationFromMap3 = false; + bool startLocationFromMap4 = false; + List startLocationFromMapAll = []; + double latePrice = 0; + double fuelPrice = 0; + double heavyPrice = 0; + double naturePrice = 0; + bool heightMenuBool = false; + String statusRide = 'wait'; + String statusRideVip = 'wait'; + bool statusRideFromStart = false; + bool isPickerShown = false; + bool isPointsPageForRider = false; + bool isBottomSheetShown = false; + bool mapType = false; + bool mapTrafficON = false; + bool isCancelRidePageShown = false; + bool isCashConfirmPageShown = false; + bool isPaymentMethodPageShown = false; + bool isRideFinished = false; + bool rideConfirm = false; + bool isMarkersShown = false; + bool isMainBottomMenuMap = true; + Timer? markerReloadingTimer2 = Timer(Duration.zero, () {}); + Timer? markerReloadingTimer1 = Timer(Duration.zero, () {}); + int durationToPassenger = 0; + bool isWayPointSheet = false; + bool isWayPointStopsSheet = false; + bool isWayPointStopsSheetUtilGetMap = false; + double heightBottomSheetShown = 0; + double cashConfirmPageShown = 250; + late String driverId = ''; + late String gender = ''; + double widthMapTypeAndTraffic = 50; + double paymentPageShown = Get.height * .6; + late LatLng southwest; + late LatLng northeast; + List carLocationsModels = []; + var dataCarsLocationByPassenger; + var datadriverCarsLocationToPassengerAfterApplied; + CarLocation? nearestCar; + late Timer? markerReloadingTimer = Timer(Duration.zero, () {}); + bool shouldFetch = true; // Flag to determine if fetch should be executed + int selectedPassengerCount = 1; + double progress = 0; + double progressTimerToPassengerFromDriverAfterApplied = 0; + double progressTimerDriverWaitPassenger5Minute = 0; + int durationTimer = 9; + int durationToRide = 0; + int remainingTime = 25; + int remainingTimeToPassengerFromDriverAfterApplied = 60; + int remainingTimeDriverWaitPassenger5Minute = 60; + int timeToPassengerFromDriverAfterApplied = 0; + Timer? timerToPassengerFromDriverAfterApplied; + bool rideTimerBegin = false; + double progressTimerRideBegin = 0; + int remainingTimeTimerRideBegin = 60; + String stringRemainingTimeRideBegin = ''; + String hintTextStartPoint = 'Search for your Start point'.tr; + String hintTextwayPoint0 = 'Search for waypoint'.tr; + String hintTextwayPoint1 = 'Search for waypoint'.tr; + String hintTextwayPoint2 = 'Search for waypoint'.tr; + String hintTextwayPoint3 = 'Search for waypoint'.tr; + String hintTextwayPoint4 = 'Search for waypoint'.tr; + String currentLocationString = 'Current Location'.tr; + String currentLocationString0 = 'Current Location'.tr; + String currentLocationString1 = 'Add Location 1'.tr; + String currentLocationString2 = 'Add Location 2'.tr; + String currentLocationString3 = 'Add Location 3'.tr; + String currentLocationString4 = 'Add Location 4'.tr; + String placesCoordinate0 = ''.tr; + String placesCoordinate1 = ''.tr; + String placesCoordinate2 = ''.tr; + String placesCoordinate3 = ''.tr; + String placesCoordinate4 = ''.tr; + List currentLocationStringAll = []; + List hintTextwayPointStringAll = []; + var placesCoordinate = []; + String hintTextDestinationPoint = 'Select your destination'.tr; + late String rideId = 'yet'; + bool noCarString = false; + bool isCashSelectedBeforeConfirmRide = false; + bool isPassengerChosen = false; + bool isSearchingWindow = false; + bool currentLocationToFormPlaces = false; + bool currentLocationToFormPlaces0 = false; + bool currentLocationToFormPlaces1 = false; + bool currentLocationToFormPlaces2 = false; + bool currentLocationToFormPlaces3 = false; + bool currentLocationToFormPlaces4 = false; + List currentLocationToFormPlacesAll = []; + late String driverToken = ''; + int carsOrder = 0; + int wayPointIndex = 0; + late double kazan = 8; + String? mapAPIKEY; + late double totalME = 0; + late double tax = 0; + late double totalPassenger = 0; + late double totalCostPassenger = 0; + late double totalPassengerComfort = 0; + late double totalPassengerComfortDiscount = 0; + late double totalPassengerElectricDiscount = 0; + late double totalPassengerLadyDiscount = 0; + late double totalPassengerSpeedDiscount = 0; + late double totalPassengerBalashDiscount = 0; + late double totalPassengerRaihGaiDiscount = 0; + late double totalPassengerScooter = 0; + late double totalPassengerVan = 0; + late double totalDriver = 0; + late double averageDuration = 0; + late double costDuration = 0; + late double costDistance = 0; + late double distance = 0; + late double duration = 0; + bool _isDriverAppliedLogicExecuted = false; // فلاج لمنع التنفيذ المتكرر + bool _isDriverArrivedLogicExecuted = false; + bool _isRideBeginLogicExecuted = false; + DateTime? _searchStartTime; // لتتبع مدة البحث + DateTime? _lastDriversNotifyTime; // لتتبع آخر مرة تم إرسال إشعار للسائقين + final int _masterTimerIntervalSeconds = 5; // فاصل زمني ثابت للمؤقت الرئيسي + final int _searchTimeoutSeconds = 60; // مهلة البحث قبل عرض خيار زيادة السعر + final int _notifyDriversIntervalSeconds = + 25; // إرسال إشعار للسائقين كل 25 ثانية + // متغير لمنع أي عمليات تحديث أثناء التقييم + bool _isRatingScreenOpen = false; + // --- إضافة جديدة: متغيرات لإدارة البحث المتوسع --- + int _currentSearchPhase = 0; // لتتبع المرحلة الحالية للبحث + bool _isFetchingDriverLocation = false; // متغير لمنع تكرار الطلب + // قائمة بأنصاف الأقطار (بالأمتار) لكل مرحلة + final List _searchRadii = [ + 2400, + 3000, + 3100 + ]; // 0 ثانية، 30 ثانية، 60 ثانية + // المدة الزمنية لكل مرحلة بحث (بالثواني) + final int _searchPhaseDurationSeconds = 30; + // المهلة الإجمالية للبحث قبل عرض خيار زيادة السعر + final int _totalSearchTimeoutSeconds = 90; // 90 ثانية +// --- noRide throttling --- + int _noRideSearchCount = 0; + final int _noRideMaxTries = 3; // نفذ البحث 6 مرات فقط + final int _noRideIntervalSec = 5; // بين كل محاولة وأخرى 5 ثواني + DateTime? _noRideNextAllowed; // متى نسمح بالمحاولة التالية + bool _noRideSearchCapped = false; // وصلنا للحد وتوقفنا + // ============== new design to manage ride state ============== + // === 1. حالة الرحلة والمؤقت الرئيسي (Single Source of Truth) === + Rx currentRideState = RideState.noRide.obs; + Timer? _masterTimer; + final int _pollingIntervalSeconds = 4; // فاصل زمني موحد للاستعلام + + void _startMasterTimer() { + // نضمن أن مؤقت واحد فقط يعمل في أي وقت + _masterTimer?.cancel(); + _masterTimer = + Timer.periodic(Duration(seconds: _pollingIntervalSeconds), (_) { + _handleRideState(currentRideState.value); + }); + } + + void stopAllTimers() { + Log.print('🛑 FORCE STOP: Stopping ALL Timers and Streams 🛑'); + + // 1. إيقاف الماكينة الرئيسية + _masterTimer?.cancel(); + _masterTimer = null; + + // 2. إيقاف مؤقتات تتبع السائق + timerToPassengerFromDriverAfterApplied?.cancel(); + _timer?.cancel(); + _uiCountdownTimer?.cancel(); + + // 3. إيقاف مؤقتات الخريطة + markerReloadingTimer?.cancel(); + markerReloadingTimer1?.cancel(); + markerReloadingTimer2?.cancel(); + _animationTimers.forEach((key, timer) => timer.cancel()); + _animationTimers.clear(); + + // 4. إغلاق الستريمز + if (!_rideStatusStreamController.isClosed) + _rideStatusStreamController.close(); + if (!_beginRideStreamController.isClosed) + _beginRideStreamController.close(); + if (!timerController.isClosed) timerController.close(); + + // 5. تصفير العدادات لمنع إعادة الدخول + isTimerRunning = false; + isBeginRideFromDriverRunning = false; + _isFetchingDriverLocation = false; + + update(); + } + + final int _maxNoRideSearch = 3; // عدد المرات القصوى + final int _noRideDelaySeconds = 6; // الفاصل الزمني بين كل بحث +// + // + // !!! يرجى استبدال الدالة القديمة بالكامل بهذه الدالة الجديدة !!! + // + // + bool _isStateProcessing = false; + + Future _handleRideState(RideState state) async { + if (_isRatingScreenOpen) { + Log.print('⛔ Rating Screen is Open. Skipping Logic.'); + stopAllTimers(); // تأكيد إضافي للإيقاف + return; + } + Log.print('Handling state: $state'); + + int effectivePollingInterval = _pollingIntervalSeconds; + + switch (state) { + case RideState.noRide: + final now = DateTime.now(); + if (_noRideSearchCount >= _noRideMaxTries) { + if (!_noRideSearchCapped) { + _noRideSearchCapped = true; + Log.print('[noRide] search capped at $_noRideMaxTries attempts'); + } + break; + } + if (_noRideNextAllowed != null && now.isBefore(_noRideNextAllowed!)) { + break; + } + _noRideSearchCount++; + Log.print('_noRideSearchCount: ${_noRideSearchCount}'); + _noRideNextAllowed = now.add(Duration(seconds: _noRideIntervalSec)); + String currentCarType = box.read(BoxName.carType) ?? 'yet'; + getCarsLocationByPassengerAndReloadMarker(currentCarType, 2000); + getNearestDriverByPassengerLocation(); + break; + + case RideState.cancelled: + Log.print('[handleRideState] Ride cancelled. Stopping polling.'); + stopAllTimers(); + effectivePollingInterval = 3600; + break; + + case RideState.preCheckReview: + stopAllTimers(); + _checkLastRideForReview(); + break; + + case RideState.searching: + effectivePollingInterval = 5; + + // 1. التحقق من حالة الطلب (هل قبله أحد؟) + try { + String statusFromServer = await getRideStatus(rideId); + if (statusFromServer == 'Apply' || statusFromServer == 'Applied') { + await processRideAcceptance(); + break; + } + } catch (e) { + Log.print('Error polling getRideStatus: $e'); + } + + final now = DateTime.now(); + final int elapsedSeconds = now.difference(_searchStartTime!).inSeconds; + + // انتهاء وقت البحث الكلي + if (elapsedSeconds > _totalSearchTimeoutSeconds) { + stopAllTimers(); + currentRideState.value = RideState.noRide; + isSearchingWindow = false; + update(); + _showIncreaseFeeDialog(); + break; + } + + // 2. إدارة مراحل البحث (توسيع النطاق) + // السيناريو الجديد: لا نقوم بالقصف العشوائي، نرسل بناء على المرحلة أو مرور وقت كافٍ لدخول سائقين جدد + + int targetPhase = + (elapsedSeconds / _searchPhaseDurationSeconds).floor(); + if (targetPhase >= _searchRadii.length) { + targetPhase = _searchRadii.length - 1; + } + + // هل تغيرت المرحلة (توسع النطاق)؟ أو هل مر 10 ثواني منذ آخر محاولة إرسال؟ + // هذا يمنع إرسال الإشعار في كل دورة (كل 5 ثواني) ويقلل الازعاج + bool isNewPhase = targetPhase > _currentSearchPhase; + bool timeToScanForNewDrivers = + (elapsedSeconds % 15 == 0); // كل 15 ثانية نفحص الدخول الجديد + + if (isNewPhase || timeToScanForNewDrivers || elapsedSeconds < 5) { + _currentSearchPhase = targetPhase; + int currentRadius = _searchRadii[_currentSearchPhase]; + + Log.print( + '[Search Logic] Scanning for drivers. Phase: $_currentSearchPhase, Radius: $currentRadius'); + // استدعاء دالة الإشعار الذكية + _findAndNotifyNearestDrivers(currentRadius); + } + + // تحديث نصوص الواجهة + if (elapsedSeconds < 5) { + driversStatusForSearchWindow = 'Your order is being prepared'.tr; + } else if (elapsedSeconds < 15) { + driversStatusForSearchWindow = 'Your order sent to drivers'.tr; + } else { + driversStatusForSearchWindow = + 'The drivers are reviewing your request'.tr; + } + update(); + break; + + case RideState.driverApplied: + effectivePollingInterval = 10; + if (!_isDriverAppliedLogicExecuted) { + Log.print('[handleRideState] Execution driverApplied logic.'); + rideAppliedFromDriver(true); + _isDriverAppliedLogicExecuted = true; + } + try { + String statusFromServer = await getRideStatus(rideId); + if (statusFromServer == 'Arrived') { + currentRideState.value = RideState.driverArrived; + break; + } else if (statusFromServer == 'Begin' || + statusFromServer == 'inProgress') { + processRideBegin(); + break; + } + } catch (e) { + Log.print('Error polling for Arrived/Begin status: $e'); + } + getDriverCarsLocationToPassengerAfterApplied(); + break; + + case RideState.driverArrived: + if (!_isDriverArrivedLogicExecuted) { + _isDriverArrivedLogicExecuted = true; + startTimerDriverWaitPassenger5Minute(); + driverArrivePassengerDialoge(); + } + effectivePollingInterval = 8; + break; + + case RideState.inProgress: + effectivePollingInterval = 6; + + try { + String statusFromServer = await getRideStatus(rideId); + + // !!! هنا التغيير الجذري !!! + if (statusFromServer == 'Finished' || + statusFromServer == 'finished') { + Log.print( + '🏁 DETECTED FINISHED: Killing processes and forcing Review.'); + + // 1. قتل العمليات فوراً + stopAllTimers(); + + // 2. تغيير الحالة الداخلية لمنع أي كود آخر من العمل + currentRideState.value = RideState.preCheckReview; + + // 3. تنظيف الواجهة + tripFinishedFromDriver(); + + // 4. استدعاء شاشة التقييم فوراً + _checkLastRideForReview(); + + return; // خروج نهائي من الدالة لمنع أي كود بالأسفل من التنفيذ + } + } catch (e) { + Log.print('Error polling status: $e'); + } + + // بقية كود التتبع العادي (لن يتم الوصول إليه إذا انتهت الرحلة) + if (!_isRideBeginLogicExecuted) { + _isRideBeginLogicExecuted = true; + _executeBeginRideLogic(); + } + getDriverCarsLocationToPassengerAfterApplied(); + break; + case RideState.finished: + tripFinishedFromDriver(); + stopAllTimers(); + effectivePollingInterval = 3600; + break; + } + + if (_masterTimer?.tick != effectivePollingInterval) { + _masterTimer?.cancel(); + _masterTimer = + Timer.periodic(Duration(seconds: effectivePollingInterval), (_) { + _handleRideState(currentRideState.value); + }); + } + } +// Future _handleRideState(RideState state) async { +// Log.print('Handling state: $state'); + +// int effectivePollingInterval = _pollingIntervalSeconds; + +// switch (state) { +// // 1. تم فصل "noRide" عن "cancelled" +// case RideState.noRide: +// final now = DateTime.now(); +// if (_noRideSearchCount >= _noRideMaxTries) { +// if (!_noRideSearchCapped) { +// _noRideSearchCapped = true; +// Log.print('[noRide] search capped at $_noRideMaxTries attempts'); +// } +// break; +// } +// if (_noRideNextAllowed != null && now.isBefore(_noRideNextAllowed!)) { +// break; +// } +// _noRideSearchCount++; +// Log.print('_noRideSearchCount: ${_noRideSearchCount}'); +// _noRideNextAllowed = now.add(Duration(seconds: _noRideIntervalSec)); +// String currentCarType = box.read(BoxName.carType) ?? 'yet'; +// getCarsLocationByPassengerAndReloadMarker(currentCarType, 3000); +// getNearestDriverByPassengerLocation(); +// break; + +// // 2. "cancelled" أصبحت حالة منفصلة توقف كل شيء +// case RideState.cancelled: +// Log.print('[handleRideState] Ride cancelled. Stopping polling.'); +// stopAllTimers(); // أوقف المؤقت الرئيسي +// effectivePollingInterval = 3600; // إيقاف فعلي للمؤقت +// break; + +// case RideState.preCheckReview: +// stopAllTimers(); +// _checkLastRideForReview(); +// break; + +// case RideState.searching: +// // ... (منطق هذا الكيس سيبقى كما هو تماماً - لا تغيير هنا) +// effectivePollingInterval = 3; +// try { +// String statusFromServer = await getRideStatus(rideId); +// if (statusFromServer == 'Apply' || statusFromServer == 'Applied') { +// await processRideAcceptance(); +// break; +// } +// } catch (e) { +// Log.print('Error polling getRideStatus: $e'); +// } +// final now = DateTime.now(); +// final int elapsedSeconds = now.difference(_searchStartTime!).inSeconds; +// if (elapsedSeconds > _totalSearchTimeoutSeconds) { +// stopAllTimers(); +// currentRideState.value = RideState.noRide; +// isSearchingWindow = false; +// update(); +// _showIncreaseFeeDialog(); +// break; +// } +// int targetPhase = +// (elapsedSeconds / _searchPhaseDurationSeconds).floor(); +// if (targetPhase >= _searchRadii.length) { +// targetPhase = _searchRadii.length - 1; +// } +// bool needsNewSearch = false; +// if (targetPhase > _currentSearchPhase) { +// _currentSearchPhase = targetPhase; +// needsNewSearch = true; +// Log.print( +// '[Search] Expanding to Phase $_currentSearchPhase (Radius: ${_searchRadii[_currentSearchPhase]}m)'); +// } else if (elapsedSeconds < effectivePollingInterval) { +// needsNewSearch = true; +// Log.print('[Search] Starting Phase 0 (Radius: ${_searchRadii[0]}m)'); +// } +// // if (needsNewSearch) { +// int currentRadius = _searchRadii[_currentSearchPhase]; +// // _findAndNotifyNearestDrivers(currentRadius); +// // } +// // (3) [!! التعديل الجوهري !!] +// // احذف 'if (needsNewSearch)' وقم بالاستدعاء مباشرة +// // هذا سيضمن أنه في كل دورة (كل 4 ثوانٍ)، يتم إعادة جلب السائقين +// Log.print( +// '[Search Polling] Finding new drivers in Phase $_currentSearchPhase (Radius: ${currentRadius}m)'); +// _findAndNotifyNearestDrivers(currentRadius); +// if (elapsedSeconds < 5) { +// driversStatusForSearchWindow = 'Your order is being prepared'.tr; +// } else if (elapsedSeconds < 15) { +// driversStatusForSearchWindow = 'Your order sent to drivers'.tr; +// } else { +// driversStatusForSearchWindow = +// 'The drivers are reviewing your request'.tr; +// } +// update(); +// break; + +// // ... +// case RideState.driverApplied: +// effectivePollingInterval = 10; // فاصل زمني مناسب +// if (!_isDriverAppliedLogicExecuted) { +// Log.print('[handleRideState] تنفيذ منطق "driverApplied" لأول مرة.'); +// rideAppliedFromDriver(true); // هذا يشغل عداد وصول السائق +// _isDriverAppliedLogicExecuted = true; +// } + +// // [!! إضافة مهمة !!] +// // استمر في التحقق من حالة الرحلة (Status) +// try { +// String statusFromServer = await getRideStatus(rideId); +// if (statusFromServer == 'Arrived') { +// Log.print('[Polling] اكتشف "Arrived". تغيير الحالة.'); +// currentRideState.value = RideState.driverArrived; +// break; // اخرج (سيتم تفعيل case driverArrived في الدورة القادمة) +// } else if (statusFromServer == 'Begin' || +// statusFromServer == 'inProgress') { +// Log.print('[Polling] اكتشف "Begin" (تجاوز حالة الوصول).'); +// // استدعاء حارس البوابة الآمن +// processRideBegin(); // هذه الدالة ستغير الحالة إلى inProgress +// break; +// } +// } catch (e) { +// Log.print('Error polling for Arrived/Begin status: $e'); +// } +// // [!! نهاية الإضافة !!] + +// getDriverCarsLocationToPassengerAfterApplied(); // استمر بجلب الموقع أيضاً +// break; +// // ... + +// case RideState.driverArrived: +// if (!_isDriverArrivedLogicExecuted) { +// _isDriverArrivedLogicExecuted = true; +// Log.print( +// '[handleRideState] اكتشف "driverArrived". بدء عداد 5 دقائق.'); +// startTimerDriverWaitPassenger5Minute(); +// driverArrivePassengerDialoge(); +// } +// effectivePollingInterval = 8; // يبقى يعمل لاكتشاف "inProgress" +// break; + +// case RideState.inProgress: +// effectivePollingInterval = 11; + +// // 3. إضافة "بحث دوري" (Polling) لاكتشاف إنهاء الرحلة +// try { +// String statusFromServer = await getRideStatus(rideId); +// if (statusFromServer == 'Finished' || +// statusFromServer == 'finished') { +// if (currentRideState.value == RideState.inProgress) { +// Log.print('[Polling] اكتشف "Finished". تغيير الحالة.'); +// currentRideState.value = RideState.finished; // غيّر الحالة +// break; // اخرج (سيتم تفعيل case finished في الدورة القادمة) +// } +// } +// } catch (e) { +// Log.print('Error polling for Finished status: $e'); +// } +// // --- نهاية الإضافة --- + +// if (!_isRideBeginLogicExecuted) { +// _isRideBeginLogicExecuted = true; +// _executeBeginRideLogic(); +// } +// getDriverCarsLocationToPassengerAfterApplied(); // استمر في تتبع الموقع +// break; + +// // 4. "finished" أصبحت حالة نهائية آمنة +// case RideState.finished: +// // إشعار FCM (الذي يملك بيانات السعر) هو المسؤول عن الانتقال للتقييم +// // هذه الحالة هي مجرد "نقطة توقف" للمؤقت. +// Log.print('[handleRideState] Ride is Finished. Stopping all activity.'); + +// // نستدعي هذه لضمان تصفير الواجهة، حتى لو فاز البحث الدوري +// tripFinishedFromDriver(); // (سنقوم بتعديل هذه الدالة في الخطوة 3) + +// stopAllTimers(); +// effectivePollingInterval = 3600; // إيقاف فعلي +// break; +// } + +// if (_masterTimer?.tick != effectivePollingInterval) { +// _masterTimer?.cancel(); +// _masterTimer = +// Timer.periodic(Duration(seconds: effectivePollingInterval), (_) { +// _handleRideState(currentRideState.value); +// }); +// } +// } +// // === 4. المنطق الجديد: فحص الرحلة الأخيرة للتقييم === + + Future _checkInitialRideStatus() async { + // 1. جلب الحالة من السيرفر (باستخدام getRideStatusFromStartApp) + await getRideStatusFromStartApp(); + String _status = rideStatusFromStartApp['data']['status']; + // Log.print('rideStatusFromStartApp: ${rideStatusFromStartApp}'); + // Log.print('_status: ${_status}'); + + if (_status == 'waiting' || _status == 'Apply' || _status == 'Begin') { + // رحلة جارية + rideId = rideStatusFromStartApp['data']['rideId'].toString(); + currentRideState.value = _status == 'waiting' + ? RideState.searching + : _status == 'Apply' + ? RideState.driverApplied + : _status == 'Begin' + ? RideState.inProgress + : _status == 'Cancel' + ? RideState.cancelled + : RideState.noRide; + } else if (_status == 'Finished') { + // رحلة منتهية/ملغاة + if (rideStatusFromStartApp['data']['needsReview'] == 1) { + currentRideState.value = RideState.preCheckReview; + } else { + currentRideState.value = RideState.noRide; + } + } else { + currentRideState.value = RideState.noRide; + } + + // بدء المعالجة الفورية + _handleRideState(currentRideState.value); + } + + Future _checkLastRideForReview() async { + Log.print('⭐ FORCE OPEN RATING PAGE (Get.to mode)'); + + // جلب البيانات + await getRideStatusFromStartApp(); + + if (rideStatusFromStartApp['data'] == null) { + currentRideState.value = RideState.noRide; + _startMasterTimer(); + return; + } + + String needsReview = + rideStatusFromStartApp['data']['needsReview'].toString(); + + if (needsReview == '1') { + _isRatingScreenOpen = true; + // 1. تجهيز البيانات (Arguments) + var args = { + 'driverId': rideStatusFromStartApp['data']['driver_id'].toString(), + 'rideId': rideStatusFromStartApp['data']['rideId'].toString(), + 'driverName': rideStatusFromStartApp['data']['driverName'], + 'price': rideStatusFromStartApp['data']['price'], + }; + + // 2. استخدام Get.to مع await (هذا هو الحل الجذري) + // الكود سيتوقف هنا ولن يكمل التنفيذ حتى يتم إغلاق صفحة التقييم + await Get.to( + () => RatingDriverBottomSheet(), + arguments: args, // تمرير البيانات بالطريقة التي تريدها + preventDuplicates: true, // لمنع فتح الصفحة مرتين + popGesture: false, // لمنع السحب للرجوع (في iOS) + ); + + // 3. هذا الكود لن يتنفذ إلا بعد أن يضغط المستخدم "تم" في التقييم ويغلق الصفحة + Log.print('✅ Rating Page Closed. Resetting App.'); + _isRatingScreenOpen = false; + restCounter(); + currentRideState.value = RideState.noRide; + _startMasterTimer(); // إعادة تشغيل البحث الآن فقط + } else { + currentRideState.value = RideState.noRide; + _startMasterTimer(); + } + } + // [داخل MapPassengerController] + +// (افترض وجود هذه الدالة لديك بالفعل) + // === 5. دوال التغيير في الحالة التي تستدعى من واجهة المستخدم === + + // void startSearchingForDriver() { + // confirmRideForAllDriverAvailable(); + // currentRideState.value = RideState.searching; + // _startMasterTimer(); + // } + + /// هذه هي الدالة التي يتم استدعاؤها من الواجهة عند ضغط المستخدم على زر تأكيد الطلب + /// هذه هي الدالة التي يتم استدعاؤها من الواجهة عند ضغط المستخدم على زر تأكيد الطلب + void startSearchingForDriver() async { + isSearchingWindow = true; + currentRideState.value = RideState.searching; + update(); + + // ============================================================ + // 1. الحل الجذري: إجبار التطبيق على جلب سائقي الفئة المختارة فقط الآن + // ============================================================ + String selectedCarType = box.read(BoxName.carType) ?? 'Speed'; + + // تفريغ القائمة القديمة لمنع الخلط + dataCarsLocationByPassenger = null; + + // بحث جديد وحصري بناءً على النوع المختار (Lady, VIP, etc) + // نستخدم نصف قطر صغير (2000 متر) للبحث عن الأقرب في البداية + bool driversFound = + await getCarsLocationByPassengerAndReloadMarker(selectedCarType, 2400); + Log.print('driversFound: ${driversFound}'); + // التحقق: هل وجدنا سائقين من الفئة المطلوبة؟ + if (!driversFound || + dataCarsLocationByPassenger == null || + dataCarsLocationByPassenger == 'failure' || + dataCarsLocationByPassenger['message'] == null || + (dataCarsLocationByPassenger['message'] as List).isEmpty) { + // إذا لم نجد، نغلق النافذة ونظهر رسالة خطأ، ولا نرسل الطلب للسيرفر + isSearchingWindow = false; + currentRideState.value = RideState.noRide; + update(); + + Get.snackbar("نعتذر".tr, + "لا يوجد سائقين من فئة $selectedCarType متاحين حالياً في منطقتك".tr, + backgroundColor: AppColor.redColor, colorText: Colors.white); + return; // توقف هنا + } + + // ============================================================ + // 2. الآن القائمة dataCarsLocationByPassenger نظيفة وتحتوي فقط على الفئة الصحيحة + // يمكننا متابعة إنشاء الرحلة بأمان + // ============================================================ + + bool rideCreated = await postRideDetailsToServer(); + if (!rideCreated) { + isSearchingWindow = false; + update(); + return; + } + + await _addRideToWaitingTable(); + + Log.print( + '[startSearchingForDriver] Starting fresh search sequence for $selectedCarType.'); + + // تصفير القائمة هنا ضروري لأنها رحلة جديدة + notifiedDrivers.clear(); + + _searchStartTime = DateTime.now(); + _lastDriversNotifyTime = null; + _currentSearchPhase = 0; + _isDriverAppliedLogicExecuted = false; + _isDriverArrivedLogicExecuted = false; + _isRideBeginLogicExecuted = false; + + // تنفيذ إشعار السائقين (الذين جلبناهم للتو في الخطوة 1) + + currentRideState.value = RideState.searching; + isSearchingWindow = true; + await notifyAvailableDrivers(); // أو دالة الإشعار الخاصة بك + + update(); + _startMasterTimer(); + } + // void startSearchingForDriver() async { + // isSearchingWindow = true; + // update(); + + // bool rideCreated = await postRideDetailsToServer(); + // if (!rideCreated) { + // isSearchingWindow = false; + // update(); + // return; + // } + + // await _addRideToWaitingTable(); + + // Log.print('[startSearchingForDriver] Starting fresh search sequence.'); + + // // تصفير القائمة هنا ضروري لأنها رحلة جديدة + // notifiedDrivers.clear(); + + // _searchStartTime = DateTime.now(); + // _lastDriversNotifyTime = null; + // _currentSearchPhase = 0; + // _isDriverAppliedLogicExecuted = false; + // _isDriverArrivedLogicExecuted = false; + // _isRideBeginLogicExecuted = false; + + // // تنفيذ البحث الأولي فوراً + // await _findAndNotifyNearestDrivers(_searchRadii[0]); + + // currentRideState.value = RideState.searching; + // isSearchingWindow = true; + // update(); + // _startMasterTimer(); + // } + + /// دالة جديدة للبحث عن السائقين وإرسال الإشعارات لهم + // تم التعديل: الآن تقبل نصف القطر (radius) + /// [!! إصلاح خطأ البيلود !!] + /// تم التعديل: العودة إلى إرسال إشعارات فردية (لكل سائق) + /// لإرسال "البيلود" الصحيح الذي يتوقعه تطبيق السائق + Future _findAndNotifyNearestDrivers(int radius) async { + Log.print('[Notify Logic] Finding drivers within $radius meters...'); + + // 1. جلب السائقين وتحديث الماركر + // ملاحظة: تأكد أن هذه الدالة تعيد true/false لتدل على النجاح + await getCarsLocationByPassengerAndReloadMarker( + box.read(BoxName.carType), radius); + + // التأكد من صحة البيانات + if (dataCarsLocationByPassenger == null || + dataCarsLocationByPassenger == 'failure' || + dataCarsLocationByPassenger['message'] == null) { + Log.print('[Notify Logic] No drivers found or API failure.'); + return; + } + + int newDriversNotified = 0; + var driversList = dataCarsLocationByPassenger['message']; + + if (driversList is! List) { + Log.print('[Notify Logic] Drivers data is not a list.'); + return; + } + + // 2. المرور على كل سائق + for (var driverData in driversList) { + // حماية من البيانات الناقصة + if (driverData['driver_id'] == null || driverData['token'] == null) { + continue; + } + + String driverId = driverData['driver_id'].toString(); + String driverToken = driverData['token'].toString(); + + // تجاهل التوكن الفارغ أو غير الصالح + if (driverToken.isEmpty || driverToken == 'null') continue; + + // 3. التحقق من القائمة المرجعية (المنع الصارم للتكرار) + if (!notifiedDrivers.contains(driverId)) { + // إضافة السائق للقائمة فوراً لمنع تكرار الإرسال في الدورات القادمة + notifiedDrivers.add(driverId); + newDriversNotified++; + + // 4. بناء البيلود وإرسال الإشعار + try { + final body = constructNotificationBody(driverData); + + Log.print('[Notify Logic] Sending New Order to Driver ID: $driverId'); + + NotificationService.sendNotification( + target: driverToken, + title: 'Order', + body: endNameAddress, // عنوان الوجهة كنص مختصر + isTopic: false, + tone: 'tone1', + category: 'Order', + driverList: body); + } catch (e) { + Log.print('[Notify Logic] Error sending to driver $driverId: $e'); + // في حال فشل الإرسال، هل تريد حذفه من القائمة ليحاول مرة أخرى؟ + // يفضل عدم الحذف لتجنب الإزعاج، إلا إذا كان خطأ شبكة مؤقت. + } + } else { + // Log.print('[Notify Logic] Driver $driverId already notified. Skipping.'); + } + } + Log.print( + '[Notify Logic] Cycle finished. Sent to $newDriversNotified NEW drivers.'); + } + + /// دالة لإظهار النافذة المنبثقة لزيادة السعر + void _showIncreaseFeeDialog() { + Get.dialog( + CupertinoAlertDialog( + title: Text("No drivers accepted your request yet".tr), + content: Text( + "Increasing the fare might attract more drivers. Would you like to increase the price?" + .tr), + actions: [ + CupertinoDialogAction( + child: Text("Cancel Ride".tr, + style: const TextStyle(color: AppColor.redColor)), + onPressed: () { + Get.back(); + changeCancelRidePageShow(); + // cancelRide(); // دالة إلغاء الرحلة + }, + ), + CupertinoDialogAction( + child: Text("Increase Fare".tr, + style: const TextStyle(color: AppColor.greenColor)), + onPressed: () { + Get.back(); + // هنا يمكنك عرض نافذة أخرى لإدخال السعر الجديد + // وبعدها استدعاء الدالة التالية + // كمثال، سنزيد السعر بنسبة 10% + double newPrice = totalPassenger * 1.10; + increasePriceAndRestartSearch(newPrice); + }, + ), + ], + ), + barrierDismissible: false, + ); + } + + /// دالة لتحديث السعر وإعادة بدء البحث + Future increasePriceAndRestartSearch(double newPrice) async { + totalPassenger = newPrice; + update(); + + // await CRUD().post(link: AppLink.updateRides, payload: { + // "id": rideId, + // "price": newPrice.toStringAsFixed(2), + // }); + CRUD().post(link: "${AppLink.server}/ride/rides/update.php", payload: { + "id": rideId, + "price": newPrice.toStringAsFixed(2), + }); + + // تصفير القائمة لأن السعر تغير، ويجب إبلاغ الجميع (حتى من وصله الإشعار سابقاً) + Log.print( + '[increasePrice] Price changed. Clearing notified list to resend.'); + notifiedDrivers.clear(); + + _searchStartTime = DateTime.now(); + _currentSearchPhase = 0; + + isSearchingWindow = true; + update(); + + _startMasterTimer(); + } + + /// (دالة جديدة موحدة) + /// هذه هي الدالة الوحيدة المسؤولة عن بدء عملية قبول الرحلة. + /// يتم استدعاؤها إما من إشعار Firebase أو من البحث الدوري (Polling). + /// هي تحتوي على "حارس البوابة" لمنع تضارب السباق. + /// (دالة موحدة وصارمة) + /// تستدعى من FCM أو من Polling عند اكتشاف قبول السائق + /// تمنع تضارب السباق وتضمن تنفيذ المنطق مرة واحدة فقط + Future processRideAcceptance( + {String? driverIdFromFCM, String? rideIdFromFCM}) async { + // 1. القفل الصارم: إذا لم نكن في حالة بحث، فهذا يعني أن الأمر قضي + if (currentRideState.value != RideState.searching) { + Log.print( + '[processRideAcceptance] ⛔ Blocked: State is already ${currentRideState.value}. Ignoring request.'); + return; + } + + Log.print( + '[processRideAcceptance] ✅ Winner! Driver Accepted. Locking State.'); + + // 2. تغيير الحالة فوراً لمنع أي تداخل آخر (Stop the World) + currentRideState.value = RideState.driverApplied; + + // 3. إيقاف مؤقتات البحث فوراً + _masterTimer?.cancel(); + + // 4. تحديث البيانات القادمة من الإشعار (إن وجدت) + if (driverIdFromFCM != null) driverId = driverIdFromFCM; + if (rideIdFromFCM != null) rideId = rideIdFromFCM; + + // 5. تحديث الواجهة فوراً لإخفاء نافذة البحث + statusRide = 'Apply'; + isSearchingWindow = false; + update(); + + // 6. تشغيل المنطق الرئيسي (جلب بيانات، موقع، رسم مسار، وحساب وقت) + await rideAppliedFromDriver(true); + + // 7. إظهار إشعار محلي + if (Get.isRegistered()) { + Get.find().showNotification( + 'Accepted Ride'.tr, 'Driver Accepted the Ride for You'.tr, 'ding'); + } + + // 8. إعادة تشغيل الماكينة الرئيسية لمراقبة حالة "الوصول" و "البدء" + _startMasterTimer(); + } + + Future driverArrivePassengerDialoge() { + return Get.defaultDialog( + barrierDismissible: false, + title: 'Hi ,I Arrive your site'.tr, + titleStyle: AppStyle.title, + middleText: 'Please go to Car Driver'.tr, + middleTextStyle: AppStyle.title, + confirm: MyElevatedButton( + title: 'Ok I will go now.'.tr, + onPressed: () { + NotificationService.sendNotification( + target: driverToken.toString(), + title: 'Hi ,I will go now'.tr, + body: 'I will go now'.tr, + isTopic: false, // Important: this is a token + tone: 'ding', + driverList: [], + category: 'Hi ,I will go now', + ); + + Get.back(); + remainingTime = 0; + update(); + })); + } + + /// (دالة خاصة جديدة) + /// تحتوي على كل المنطق الفعلي لبدء الرحلة. + void _executeBeginRideLogic() { + Log.print('[executeBeginRideLogic] تنفيذ منطق بدء الرحلة...'); + + // 1. تصفير كل عدادات ما قبل الرحلة + timeToPassengerFromDriverAfterApplied = 0; + remainingTime = 0; + remainingTimeToPassengerFromDriverAfterApplied = 0; + remainingTimeDriverWaitPassenger5Minute = 0; + + // 2. تحديث الحالة والواجهة + rideTimerBegin = true; + statusRide = 'Begin'; + isDriverInPassengerWay = false; + isDriverArrivePassenger = false; // لإخفاء واجهة "السائق وصل" + + // 3. (من كود الإشعار الخاص بك) + box.write(BoxName.passengerWalletTotal, '0'); + update(); // تحديث الواجهة قبل بدء المؤقتات + + // 4. بدء مؤقتات الرحلة الفعلية + rideIsBeginPassengerTimer(); // مؤقت عداد مدة الرحلة + // runWhenRideIsBegin(); // مؤقت تتبع موقع السائق أثناء الرحلة + + // 5. إشعار الراكب (من كود الإشعار الخاص بك) + NotificationController().showNotification( + 'Trip is Begin'.tr, + 'The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey' + .tr, + 'start'); + } + + /// (دالة جديدة موحدة) + /// حارس البوابة الآمن لبدء الرحلة. تمنع تضارب السباق. + // + // + // !!! يرجى استبدال الدالة القديمة بالكامل بهذه الدالة الجديدة !!! + // + // + + /// (دالة جديدة موحدة) + /// حارس البوابة الآمن لبدء الرحلة. تمنع تضارب السباق. + void processRideBegin() { + // [!! تعديل رقم 3: حل مشكلة "تم الحظر" !!] + // اقبل بدء الرحلة إذا كانت الحالة (وصل) أو (قَبِل) + // هذا يضمن أنه إذا فاتنا إشعار "الوصول" واستلمنا "البدء" مباشرة، فإنه سيعمل + if (currentRideState.value != RideState.driverArrived && + currentRideState.value != RideState.driverApplied) { + Log.print( + '[processRideBegin] تم الحظر: الحالة ليست driverArrived أو driverApplied.'); + return; + } + + // تأكد من تغيير الحالة فقط إذا لم تكن كذلك بالفعل + if (currentRideState.value != RideState.inProgress) { + currentRideState.value = RideState.inProgress; + Log.print('[processRideBegin] نجح: تغيير الحالة إلى inProgress.'); + } + + // لا تقم بتشغيل أي منطق هنا + // المنطق الفعلي (_executeBeginRideLogic) سيتم استدعاؤه بواسطة + // المؤقت الرئيسي (_handleRideState) عند اكتشاف حالة inProgress + // هذا يضمن أنه يعمل مرة واحدة فقط وبشكل آمن + } + + late Duration durationToAdd; + late DateTime newTime = DateTime.now(); + int hours = 0; + int minutes = 0; + + // --- إضافة جديدة: للوصول إلى وحدة التحكم بالروابط --- + final DeepLinkController _deepLinkController = + Get.isRegistered() + ? Get.find() + : Get.put(DeepLinkController()); + // ------------------------------------------------ + + void onChangedPassengerCount(int newValue) { + selectedPassengerCount = newValue; + update(); + } + + void onChangedPassengersChoose() { + isPassengerChosen = true; + update(); + } + + void getCurrentLocationFormString() async { + currentLocationToFormPlaces = true; + currentLocationString = 'Waiting for your location'.tr; + await getLocation(); + currentLocationString = passengerLocation.toString(); + newStartPointLocation = passengerLocation; + update(); + } + + List coordinatesWithoutEmpty = []; + void getMapPointsForAllMethods() async { + clearPolyline(); + isMarkersShown = false; + isWayPointStopsSheetUtilGetMap = false; + isWayPointSheet = false; + durationToRide = 0; + distanceOfDestination = 0; + wayPointSheetHeight = 0; + remainingTime = 25; + haveSteps = true; + + // Filter out empty value + coordinatesWithoutEmpty = + placesCoordinate.where((coord) => coord.isNotEmpty).toList(); + latestPosition = LatLng( + double.parse(coordinatesWithoutEmpty.last.split(',')[0]), + double.parse(coordinatesWithoutEmpty.last.split(',')[1])); + for (var i = 0; i < coordinatesWithoutEmpty.length; i++) { + if ((i + 1) < coordinatesWithoutEmpty.length) { + await getMapPoints( + coordinatesWithoutEmpty[i].toString(), + coordinatesWithoutEmpty[i + 1].toString(), + i, + ); + if (i == 0) { + startNameAddress = data[0]['start_address']; + } + if (i == coordinatesWithoutEmpty.length) { + endNameAddress = data[0]['end_address']; + } + } + } + + // isWayPointStopsSheet = false; + if (haveSteps) { + String latestWaypoint = + placesCoordinate.lastWhere((coord) => coord.isNotEmpty); + latestPosition = LatLng( + double.parse(latestWaypoint.split(',')[0]), + double.parse(latestWaypoint.split(',')[1]), + ); + } + updateCameraForDistanceAfterGetMap(); + changeWayPointStopsSheet(); + bottomSheet(); + showBottomSheet1(); + + update(); + } + + void convertHintTextStartNewPlaces(int index) { + if (placesStart.isEmpty) { + hintTextStartPoint = 'Search for your Start point'.tr; + update(); + } else { + var res = placesStart[index]; + + hintTextStartPoint = res['displayName']?['text'] ?? + res['formattedAddress'] ?? + 'Unknown Place'; + + double? lat = res['location']?['latitude']; + double? lng = res['location']?['longitude']; + + if (lat != null && lng != null) { + newStartPointLocation = LatLng(lat, lng); + } + + update(); + } + } + + void convertHintTextPlaces(int index, var res) { + if (placeListResponseAll[index].isEmpty) { + placeListResponseAll[index] = res; + hintTextwayPointStringAll[index] = 'Search for your Start point'.tr; + update(); + } else { + hintTextwayPointStringAll[index] = res['name']; + currentLocationStringAll[index] = res['name']; + placesCoordinate[index] = + '${res['geometry']['location']['lat']},${res['geometry']['location']['lng']}'; + placeListResponseAll[index] = []; + allTextEditingPlaces[index].clear(); + // double lat = wayPoint0[index]['geometry']['location']['lat']; + // double lng = wayPoint0[index]['geometry']['location']['lng']; + // newPointLocation0 = LatLng(lat, lng); + update(); + Get.back(); + } + } + + increaseFeeByPassengerAndReOrder() async { + if (increaseFeeFormKey.currentState!.validate()) { + if (double.parse(increasFeeFromPassenger.text) > totalPassenger) { + totalPassenger = double.parse(increasFeeFromPassenger.text); + Get.back(); + if (rideId != 'yet') { + Log.print('rideId from increase: $rideId'); + notifyAvailableDriversAgain(); + await CRUD().post(link: AppLink.updateDriverOrder, payload: { + "order_id": rideId.toString(), // Convert to String + "status": 'waiting' + }); + + await CRUD().post(link: AppLink.updateRides, payload: { + "id": rideId.toString(), // Convert to String + "status": 'waiting' + }); + + CRUD().post(link: AppLink.updateWaitingTrip, payload: { + "id": rideId.toString(), // Convert to String + "status": 'wait' + }); + CRUD().post( + link: "${AppLink.endPoint}/ride/rides/update.php", + payload: { + "id": rideId.toString(), // Convert to String + "status": 'waiting' + }); + // if (AppLink.endPoint != AppLink.IntaleqSyriaServer) { + CRUD().post( + link: + "${AppLink.endPoint}/ride/notificationCaptain/updateWaitingTrip.php", + payload: { + "id": rideId.toString(), // Convert to String + "status": 'wait' + }); + } + tick = 0; + // } + await getCarsLocationByPassengerAndReloadMarker( + box.read(BoxName.carType), 3000); + // confirmRideForAllDriverAvailable(); + + increaseForSameRideAndDelay(); + } + } + } + + void convertHintTextPlaces1(int index) { + if (wayPoint1.isEmpty) { + hintTextwayPoint1 = 'Search for your Start point'.tr; + update(); + } else { + hintTextwayPoint1 = wayPoint1[index]['name']; + currentLocationString1 = wayPoint1[index]['name']; + double lat = wayPoint1[index]['geometry']['location']['lat']; + double lng = wayPoint1[index]['geometry']['location']['lng']; + newPointLocation1 = LatLng(lat, lng); + update(); + } + } + + void convertHintTextPlaces2(int index) { + if (wayPoint1.isEmpty) { + hintTextwayPoint2 = 'Search for your Start point'.tr; + update(); + } else { + hintTextwayPoint2 = wayPoint2[index]['name']; + currentLocationString2 = wayPoint1[index]['name']; + double lat = wayPoint2[index]['geometry']['location']['lat']; + double lng = wayPoint2[index]['geometry']['location']['lng']; + newPointLocation2 = LatLng(lat, lng); + update(); + } + } + + void convertHintTextPlaces3(int index) { + if (wayPoint1.isEmpty) { + hintTextwayPoint3 = 'Search for your Start point'.tr; + update(); + } else { + hintTextwayPoint3 = wayPoint3[index]['name']; + currentLocationString3 = wayPoint1[index]['name']; + double lat = wayPoint3[index]['geometry']['location']['lat']; + double lng = wayPoint3[index]['geometry']['location']['lng']; + newPointLocation3 = LatLng(lat, lng); + update(); + } + } + + void convertHintTextPlaces4(int index) { + if (wayPoint1.isEmpty) { + hintTextwayPoint4 = 'Search for your Start point'.tr; + update(); + } else { + hintTextwayPoint4 = wayPoint4[index]['name']; + currentLocationString4 = wayPoint1[index]['name']; + double lat = wayPoint4[index]['geometry']['location']['lat']; + double lng = wayPoint4[index]['geometry']['location']['lng']; + newPointLocation4 = LatLng(lat, lng); + update(); + } + } + + void convertHintTextDestinationNewPlaces(int index) { + if (placesDestination.isEmpty) { + hintTextDestinationPoint = 'Search for your destination'.tr; + update(); + } else { + var res = placesDestination[index]; + + // استخراج الاسم من displayName.text أو بديله + hintTextDestinationPoint = res['displayName']?['text'] ?? + res['formattedAddress'] ?? + 'Unknown Place'; + + // استخراج الإحداثيات + double? lat = res['location']?['latitude']; + double? lng = res['location']?['longitude']; + + if (lat != null && lng != null) { + newMyLocation = LatLng(lat, lng); + } + + update(); + } + } + + void convertHintTextDestinationNewPlacesFromRecent( + List recentLocations, int index) { + hintTextDestinationPoint = recentLocations[index]['name']; + double lat = recentLocations[index]['latitude']; + double lng = recentLocations[index]['longitude']; + newMyLocation = LatLng(lat, lng); + + update(); + } + +// final mainBottomMenuMap = GlobalKey(); + void changeBottomSheetShown() { + isBottomSheetShown = !isBottomSheetShown; + heightBottomSheetShown = isBottomSheetShown == true ? 250 : 0; + update(); + } + + void changeCashConfirmPageShown() { + isCashConfirmPageShown = !isCashConfirmPageShown; + isCashSelectedBeforeConfirmRide = true; + cashConfirmPageShown = isCashConfirmPageShown == true ? 250 : 0; + // to get or sure picker point for origin //todo + // isPickerShown = true; + // clickPointPosition(); + update(); + } + + void changePaymentMethodPageShown() { + isPaymentMethodPageShown = !isPaymentMethodPageShown; + paymentPageShown = isPaymentMethodPageShown == true ? Get.height * .6 : 0; + update(); + } + + void changeMapType() { + mapType = !mapType; + // heightButtomSheetShown = isButtomSheetShown == true ? 240 : 0; + update(); + } + + void changeMapTraffic() { + mapTrafficON = !mapTrafficON; + update(); + } + + void changeisAnotherOreder(bool val) { + isAnotherOreder = val; + update(); + } + + void changeIsWhatsAppOrder(bool val) { + isWhatsAppOrder = val; + update(); + } + + void sendSMS(String to) async { + // Get the driver's phone number. + String driverPhone = + (dataCarsLocationByPassenger['message'][carsOrder]['phone'].toString()); + + // Format the message. + String message = + 'Hi! This is ${(box.read(BoxName.name).toString().split(' ')[0]).toString()}.\n I am using ${box.read(AppInformation.appName)} to ride with $passengerName as the driver. $passengerName \nis driving a $model\n with license plate $licensePlate.\n I am currently located at $passengerLocation.\n If you need to reach me, please contact the driver directly at\n\n $driverPhone.'; + + // Launch the URL to send the SMS. + launchCommunication('sms', to, message); + } + + String formatSyrianPhone(String phone) { + // Remove spaces and + + phone = phone.replaceAll(' ', '').replaceAll('+', ''); + + // If starts with 00963 → remove 00 → 963 + if (phone.startsWith('00963')) { + phone = phone.replaceFirst('00963', '963'); + } + + // If starts with 0963 (common mistake) → fix it + if (phone.startsWith('0963')) { + phone = phone.replaceFirst('0963', '963'); + } + + // If starts with 963 (already correct) + if (phone.startsWith('963')) { + return phone; // nothing to do + } + + // If starts with 09 → remove leading 0 → add 963 + if (phone.startsWith('09')) { + return '963' + phone.substring(1); // 9xxxxxxxxx + } + + // If starts with 9xxxxxxxxx (no country code) + if (phone.startsWith('9') && phone.length == 9) { + return '963' + phone; + } + + // Otherwise return raw phone + return phone; + } + + void sendWhatsapp(String to) async { + // Normalize phone number before sending + String formattedPhone = formatSyrianPhone(to); + + // Message body + String message = + '${'${'Hi! This is'.tr} ${(box.read(BoxName.name).toString().split(' ')[0]).toString()}.\n${' I am using'.tr}'} ${AppInformation.appName}${' to ride with'.tr} $passengerName${' as the driver.'.tr} $passengerName \n${'is driving a '.tr}$model\n${' with license plate '.tr}$licensePlate.\n${' I am currently located at '.tr} https://www.google.com/maps/place/${passengerLocation.latitude},${passengerLocation.longitude}.\n${' If you need to reach me, please contact the driver directly at'.tr}\n\n $driverPhone.'; + + // Send WhatsApp message + launchCommunication('whatsapp', formattedPhone, message); + } + + void changeCancelRidePageShow() { + showCancelRideBottomSheet(); + isCancelRidePageShown = !isCancelRidePageShown; + // : cancelRide(); + update(); + } + + void getDrawerMenu() { + heightMenuBool = !heightMenuBool; + widthMapTypeAndTraffic = heightMenuBool == true ? 0 : 50; + heightMenu = heightMenuBool == true ? 80 : 0; + widthMenu = heightMenuBool == true ? 110 : 0; + update(); + } + + calcualateDistsanceInMetet(LatLng prev, current) async { + double distance2 = Geolocator.distanceBetween( + prev.latitude, + prev.longitude, + current.latitude, + current.longitude, + ); + return distance2; + } + + StreamController _timerStreamController = StreamController(); + Stream get timerStream => _timerStreamController.stream; + bool isTimerFromDriverToPassengerAfterAppliedRunning = true; + bool isTimerRunning = false; // Flag to track if the timer is running + int beginRideInterval = 5; // Interval in seconds for getBeginRideFromDriver + + void startTimerFromDriverToPassengerAfterApplied() { + stopTimerFromDriverToPassengerAfterApplied(); + if (isTimerRunning) return; + isTimerRunning = true; + isTimerFromDriverToPassengerAfterAppliedRunning = true; + + int secondsElapsed = 0; + + // استدعاء فوري لأول مرة + getDriverCarsLocationToPassengerAfterApplied(); + + Timer.periodic(const Duration(seconds: 1), (timer) { + // --- التغيير الجوهري هنا --- + // شرط الإيقاف: نتوقف فقط إذا انتهت الرحلة أو ألغيت، أو تم إيقاف التايمر يدوياً + // لم نعد نعتمد على تجاوز الوقت المقدر (timeToPassenger) كشرط للإيقاف + bool isRideActive = (statusRide == 'Apply' || + statusRide == 'Arrived' || + statusRide == 'Begin' || + currentRideState.value == RideState.driverApplied || + currentRideState.value == RideState.cancelled || + currentRideState.value == RideState.preCheckReview || + currentRideState.value == RideState.searching || + currentRideState.value == RideState.noRide || + currentRideState.value == RideState.driverArrived || + currentRideState.value == RideState.inProgress); + + if (!isRideActive || !isTimerFromDriverToPassengerAfterAppliedRunning) { + timer.cancel(); + isTimerRunning = false; + if (!_timerStreamController.isClosed) { + _timerStreamController.close(); + } + return; + } + + secondsElapsed++; + if (!_timerStreamController.isClosed) { + _timerStreamController.add(secondsElapsed); + } + + // تحديث الواجهة للوقت المتبقي (شكلياً فقط للراكب) + // حتى لو أصبح الوقت سالباً (تأخر السائق)، سنظهره كـ 00:00 أو نتركه سالباً + remainingTimeToPassengerFromDriverAfterApplied = + timeToPassengerFromDriverAfterApplied - secondsElapsed; + + if (remainingTimeToPassengerFromDriverAfterApplied < 0) { + remainingTimeToPassengerFromDriverAfterApplied = 0; + } + + int minutes = + (remainingTimeToPassengerFromDriverAfterApplied / 60).floor(); + int seconds = remainingTimeToPassengerFromDriverAfterApplied % 60; + stringRemainingTimeToPassenger = + '$minutes:${seconds.toString().padLeft(2, '0')}'; + + // جلب موقع السائق كل 4 ثواني (Polling) ما دامت الرحلة نشطة + if (secondsElapsed % beginRideInterval == 0) { + // 1. تحقق من تغير الحالة من السيرفر (مثل تحولها لـ Begin) + getBeginRideFromDriver(); + + // 2. تحديث موقع الراكب للسائق + uploadPassengerLocation(); + + // 3. جلب موقع السائق وتحديث الخريطة + getDriverCarsLocationToPassengerAfterApplied(); + } else { + update(); + } + }); + } // if (isTimerRunning) return; // Exit if timer is already running + // isTimerRunning = true; // Set the flag to true + + // int secondsElapsed = 0; + // while (secondsElapsed <= timeToPassengerFromDriverAfterApplied && + // isTimerFromDriverToPassengerAfterAppliedRunning) { + // await Future.delayed(const Duration(seconds: 1)); + // secondsElapsed++; + + // progressTimerToPassengerFromDriverAfterApplied = + // secondsElapsed / timeToPassengerFromDriverAfterApplied; + // remainingTimeToPassengerFromDriverAfterApplied = + // timeToPassengerFromDriverAfterApplied - secondsElapsed; + + // if (remainingTimeToPassengerFromDriverAfterApplied < 59) { + // if (rideTimerBegin == false) { + // rideTimerBegin = true; + // } + // } + + // // Call getBeginRideFromDriver every 4 seconds + // if (secondsElapsed % beginRideInterval == 0) { + // getBeginRideFromDriver(); + // uploadPassengerLocation(); + // } + + // int minutes = + // (remainingTimeToPassengerFromDriverAfterApplied / 60).floor(); + // int seconds = remainingTimeToPassengerFromDriverAfterApplied % 60; + // stringRemainingTimeToPassenger = + // '$minutes:${seconds.toString().padLeft(2, '0')}'; + + // update(); + // } + // isTimerRunning = false; // Reset the flag when timer completes + // } +// Remove the getBeginRideFromDriverForDuration function as it's no longer needed + + // Function to stop the timer + void stopTimerFromDriverToPassengerAfterApplied() { + isTimerFromDriverToPassengerAfterAppliedRunning = false; + update(); + } + + void startTimerDriverWaitPassenger5Minute() async { + // 1. [مهم] إيقاف المؤقت السابق (مؤقت تتبع وصول السائق) + stopTimerFromDriverToPassengerAfterApplied(); + isTimerRunning = false; // (إذا كنت تستخدم فلاج للتحكم بالمؤقت السابق) + + // 2. تحديث حالة الواجهة فوراً + isDriverArrivePassenger = true; + isDriverInPassengerWay = false; + timeToPassengerFromDriverAfterApplied = 0; + update(); + + Log.print('[startTimerDriverWaitPassenger5Minute] بدأ عداد الـ 5 دقائق.'); + + // 3. بدء عداد الخمس دقائق (300 ثانية) + for (int i = 0; i <= 300; i++) { + // 4. [حارس السباق 1] التحقق من الحالة + // إذا فاز إشعار FCM (FCM Winner) وتغيرت الحالة، أوقف هذا العداد فوراً. + if (currentRideState.value != RideState.driverArrived) { + Log.print( + '[startTimerDriverWaitPassenger5Minute] إيقاف العد: الحالة تغيرت (FCM فاز).'); + break; // اخرج من loop الخمس دقائق + } + + // 5. [البحث الدوري 2] التحقق من السيرفر (كل 6 ثوانٍ) + if (i % 6 == 0 && i > 0) { + // (نتخطى الثانية صفر) + try { + var res = await CRUD().get( + link: AppLink.getRideStatusBegin, payload: {'ride_id': rideId}); + + if (res != 'failure') { + var decode = jsonDecode(res); + if (decode['data']['status'] == 'Begin') { + Log.print( + '[startTimerDriverWaitPassenger5Minute] اكتشف "Begin" (Polling فاز).'); + + // 6. استدعاء حارس البوابة الآمن + processRideBegin(); + + break; // اخرج من loop الخمس دقائق + } + } + } catch (e) { + Log.print('خطأ أثناء البحث الدوري عن بدء الرحلة: $e'); + } + } + + // 7. تحديث واجهة المستخدم (العداد) + progressTimerDriverWaitPassenger5Minute = i / 300; + remainingTimeDriverWaitPassenger5Minute = 300 - i; + + int minutes = (remainingTimeDriverWaitPassenger5Minute / 60).floor(); + int seconds = remainingTimeDriverWaitPassenger5Minute % 60; + stringRemainingTimeDriverWaitPassenger5Minute = + '$minutes:${seconds.toString().padLeft(2, '0')}'; + + update(); + + // 8. الانتظار ثانية واحدة + await Future.delayed(const Duration(seconds: 1)); + } + + Log.print( + '[startTimerDriverWaitPassenger5Minute] انتهى (إما بالوقت أو ببدء الرحلة).'); + } + + // Create a StreamController to manage the timer values + final timerController = StreamController(); + +// Start the timer when the ride begins + void beginRideTimer() { + // Set up the timer to run every second + Timer.periodic(const Duration(seconds: 1), (timer) { + // Update the timer value and notify listeners + timerController.add(timer.tick); + update(); + }); + } + +// Stop the timer when the ride ends + void stopRideTimer() { + timerController.close(); + update(); + } + + late String arrivalTime = ''; + void rideIsBeginPassengerTimer() async { + // Calculate arrival time considering current time and duration + DateTime now = DateTime.now(); + DateTime arrivalTime1 = now.add(Duration(seconds: durationToRide)); + arrivalTime = DateFormat('hh:mm').format(arrivalTime1); + box.write(BoxName.arrivalTime, arrivalTime); + for (int i = 0; i <= durationToRide; i++) { + await Future.delayed(const Duration(seconds: 1)); + progressTimerRideBegin = i / durationToRide; + remainingTimeTimerRideBegin = durationToRide - i; + if (i == (durationToRide / 4).round() && (statusRide == 'Begin')) { + NotificationController().showNotification("Record Your Trip".tr, + "You can call or record audio during this trip.".tr, 'tone1'); + } + bool sendSOS = false; + if (speed > 100 && sendSOS == false) { + NotificationController().showNotification( + "Warning: Speeding detected!".tr, + 'You can call or record audio of this trip'.tr, + 'tone1'); + Get.defaultDialog( + barrierDismissible: false, + title: "Warning: Speeding detected!".tr, + titleStyle: AppStyle.title, + content: Text( + "We noticed the speed is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button." + .tr, + style: AppStyle.title, + ), + confirm: MyElevatedButton( + title: "Share Trip Details".tr, + onPressed: () { + Get.back(); + // Implement sharing trip details logic here + String message = "**Emergency SOS from Passenger:**\n"; + +// Get trip details from GetX or relevant provider + String origin = passengerLocation.toString(); + String destination = myDestination.toString(); + String driverName = passengerName; + String driverCarPlate = licensePlate; + +// Add trip details to the message + message += "* ${'Origin'.tr}: $origin\n"; + message += "* ${'Destination'.tr}: $destination\n"; + message += "* ${'Driver Name'.tr}: $driverName\n"; + message += "* ${'Driver Car Plate'.tr}: $driverCarPlate\n\n"; + message += "* ${'Driver phone'.tr}:$driverPhone\n\n"; + +// Add any additional information you want to include (optional) +// - Example: current location (using GetX LocationController) + message += + "${'Current Location'.tr}:https://www.google.com/maps/place/${passengerLocation.latitude},${passengerLocation.longitude} \n"; + +// Append a call to action + message += "Please help! Contact me as soon as possible.".tr; + +// Launch WhatsApp communication with the constructed message + launchCommunication( + 'whatsapp', box.read(BoxName.sosPhonePassenger), message); + sendSOS = true; + }, + kolor: AppColor.redColor, + ), + cancel: MyElevatedButton( + title: "Cancel".tr, + onPressed: () { + Get.back(); + }, + kolor: AppColor.greenColor, + ), + ); + } + int minutes = (remainingTimeTimerRideBegin / 60).floor(); + int seconds = remainingTimeTimerRideBegin % 60; + stringRemainingTimeRideBegin = + '$minutes:${seconds.toString().padLeft(2, '0')}'; + + update(); + } + // rideTimerBegin = false; + // isRideFinished = true; + // update(); + } + + int progressTimerRideBeginVip = 0; + int elapsedTimeInSeconds = 0; // Timer starts from 0 + String stringElapsedTimeRideBegin = '0:00'; + String stringElapsedTimeRideBeginVip = '0:00'; + bool rideInProgress = true; // To control when to stop the timer + + void rideIsBeginPassengerTimerVIP() async { + rideInProgress = true; // Start the ride timer + bool sendSOS = false; + while (rideInProgress) { + await Future.delayed(const Duration(seconds: 1)); + + // Increment elapsed time + elapsedTimeInSeconds++; + + // Update the time display + int minutes = (elapsedTimeInSeconds / 60).floor(); + int seconds = elapsedTimeInSeconds % 60; + stringElapsedTimeRideBeginVip = + '$minutes:${seconds.toString().padLeft(2, '0')}'; + + // Check for speed and SOS conditions + if (speed > 100 && !sendSOS) { + Get.defaultDialog( + barrierDismissible: false, + title: "Warning: Speeding detected!".tr, + titleStyle: AppStyle.title, + content: Text( + "We noticed the speed is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button." + .tr, + style: AppStyle.title, + ), + confirm: MyElevatedButton( + title: "Share Trip Details".tr, + onPressed: () { + Get.back(); + // Implement sharing trip details logic here + String message = "**Emergency SOS from Passenger:**\n"; + + // Get trip details from GetX or relevant provider + String origin = passengerLocation.toString(); + String destination = myDestination.toString(); + String driverName = passengerName; + String driverCarPlate = licensePlate; + + // Add trip details to the message + message += "* ${'Origin'.tr}: $origin\n"; + message += "* ${'Destination'.tr}: $destination\n"; + message += "* ${'Driver Name'.tr}: $driverName\n"; + message += "* ${'Driver Car Plate'.tr}: $driverCarPlate\n\n"; + message += "* ${'Driver Phone'.tr}: $driverPhone\n\n"; + + // Add current location + message += + "${'Current Location'.tr}:https://www.google.com/maps/place/${passengerLocation.latitude},${passengerLocation.longitude} \n"; + + // Append a call to action + message += "Please help! Contact me as soon as possible.".tr; + + // Launch WhatsApp communication + launchCommunication( + 'whatsapp', box.read(BoxName.sosPhonePassenger), message); + sendSOS = true; + }, + kolor: AppColor.redColor, + ), + cancel: MyElevatedButton( + title: "Cancel".tr, + onPressed: () { + Get.back(); + }, + kolor: AppColor.greenColor, + ), + ); + } + + // Update the UI + update(); + } + } + + Future tripFinishedFromDriver() async { + Log.print('🧹 Cleaning UI for Finish'); + + // إغلاق أي ديالوج مفتوح + if (Get.isDialogOpen == true) Get.back(); + if (Get.isBottomSheetOpen == true) Get.back(); + + statusRide = 'Finished'; + currentRideState.value = RideState.finished; // تثبيت الحالة + + // إيقاف البحث والعدادات + isSearchingWindow = false; + rideTimerBegin = false; + shouldFetch = false; + + // إيقاف التايمرات + stopAllTimers(); + + clearPolyline(); + clearMarkersExceptStartEnd(); + markers.clear(); + + update(); + } + + StreamController _beginRideStreamController = + StreamController.broadcast(); + Stream get beginRideStream => _beginRideStreamController.stream; + + bool isBeginRideFromDriverRunning = false; + + void getBeginRideFromDriver() { + if (isBeginRideFromDriverRunning) return; // Prevent duplicate streams + isBeginRideFromDriverRunning = true; + + Timer.periodic(const Duration(seconds: 2), (timer) async { + try { + var res = await CRUD().get( + link: AppLink.getRideStatusBegin, payload: {'ride_id': rideId}); + print(res); + print('1002'); + if (res != 'failure') { + var decode = jsonDecode(res); + _beginRideStreamController + .add(decode['data']['status']); // Emit the status + + if (decode['data']['status'] == 'Begin') { + // Stop the periodic check + timer.cancel(); + isBeginRideFromDriverRunning = false; + + timeToPassengerFromDriverAfterApplied = 0; + remainingTime = 0; + remainingTimeToPassengerFromDriverAfterApplied = 0; + remainingTimeDriverWaitPassenger5Minute = 0; + rideTimerBegin = true; + statusRide = 'Begin'; + isDriverInPassengerWay = false; + isDriverArrivePassenger = false; + update(); + + // Trigger additional actions + rideIsBeginPassengerTimer(); + runWhenRideIsBegin(); + NotificationController().showNotification( + 'Trip is begin'.tr, + 'The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey' + .tr, + 'ding'); + } + } + } catch (e) { + // Handle errors + _beginRideStreamController.addError(e); + } + }); + } + +// Call this method to listen to the stream + void listenToBeginRideStream() { + beginRideStream.listen((status) { + print("Ride status: $status"); + // Perform additional actions based on the status + }, onError: (error) { + print("Error in Begin Ride Stream: $error"); + }); + } + + begiVIPTripFromPassenger() async { + timeToPassengerFromDriverAfterApplied = 0; + remainingTime = 0; + isBottomSheetShown = false; + remainingTimeToPassengerFromDriverAfterApplied = 0; + remainingTimeDriverWaitPassenger5Minute = 0; + rideTimerBegin = true; + statusRideVip = 'Begin'; + isDriverInPassengerWay = false; + isDriverArrivePassenger = false; + update(); + // isCancelRidePageShown = true; + rideIsBeginPassengerTimerVIP(); + runWhenRideIsBegin(); + } + + Map rideStatusFromStartApp = {}; + bool isStartAppHasRide = false; + getRideStatusFromStartApp() async { + try { + var res = await CRUD().get( + link: AppLink.getRideStatusFromStartApp, + payload: {'passenger_id': box.read(BoxName.passengerID)}); + // print(res); + Log.print('rideStatusFromStartApp: ${res}'); + // print('1070'); + if (res == 'failure') { + rideStatusFromStartApp = { + 'data': {'status': 'NoRide', 'needsReview': false} + }; + isStartAppHasRide = false; + print( + "No rides found for the given passenger ID within the last hour."); + } + rideStatusFromStartApp = jsonDecode(res); + if (rideStatusFromStartApp['data']['status'] == 'Begin' || + rideStatusFromStartApp['data']['status'] == 'Apply' || + rideStatusFromStartApp['data']['status'] == 'Applied') { + statusRide = rideStatusFromStartApp['data']['status']; + isStartAppHasRide = true; + RideState.inProgress; + driverId = rideStatusFromStartApp['data']['driver_id']; + passengerName = rideStatusFromStartApp['data']['driverName']; + driverRate = rideStatusFromStartApp['data']['rateDriver'].toString(); + statusRideFromStart = true; + + update(); + + Map tripData = + box.read(BoxName.tripData) as Map; + final String pointsString = tripData['polyline']; + List decodedPoints = + await compute(decodePolylineIsolate, pointsString); + + // decodePolyline(response["routes"][0]["overview_polyline"]["points"]); + for (int i = 0; i < decodedPoints.length; i++) { + polylineCoordinates.add(decodedPoints[i]); + } + var polyline = Polyline( + polylineId: const PolylineId('begin trip'), + points: polylineCoordinates, + width: 10, + color: Colors.blue, + ); + + polyLines.add(polyline); + timeToPassengerFromDriverAfterApplied = 0; + remainingTime = 0; + remainingTimeToPassengerFromDriverAfterApplied = 0; + remainingTimeDriverWaitPassenger5Minute = 0; + rideTimerBegin = true; + isDriverInPassengerWay = false; + isDriverArrivePassenger = false; + // update(); + // isCancelRidePageShown = true; + durationToAdd = tripData['distance_m']; + rideIsBeginPassengerTimer(); + runWhenRideIsBegin(); + update(); + } + } catch (e) { + // Handle the error or perform any necessary actions + } + } + + void driverArrivePassenger() { + timeToPassengerFromDriverAfterApplied = 0; + remainingTime = 0; + // isCancelRidePageShown = true; + update(); + rideIsBeginPassengerTimer(); + // runWhenRideIsBegin(); + } + + void cancelTimerToPassengerFromDriverAfterApplied() { + timerToPassengerFromDriverAfterApplied?.cancel(); + } + + void clearPlacesDestination() { + placesDestination = []; + hintTextDestinationPoint = 'Search for your destination'.tr; + update(); + } + + void clearPlacesStart() { + placesStart = []; + hintTextStartPoint = 'Search for your Start point'.tr; + update(); + } + + void clearPlaces(int index) { + placeListResponseAll[index] = []; + hintTextwayPointStringAll[index] = 'Search for waypoint'.tr; + update(); + } + + void clearPlaces1() { + wayPoint1 = []; + hintTextwayPoint1 = 'Search for waypoint'.tr; + update(); + } + + void clearPlaces2() { + wayPoint2 = []; + hintTextwayPoint2 = 'Search for waypoint'.tr; + update(); + } + + void clearPlaces3() { + wayPoint3 = []; + hintTextwayPoint3 = 'Search for waypoint'.tr; + update(); + } + + void clearPlaces4() { + wayPoint4 = []; + hintTextwayPoint4 = 'Search for waypoint'.tr; + update(); + } + + int selectedReason = -1; + String? cancelNote; + void selectReason(int index, String note) { + selectedReason = index; + cancelNote = note; + update(); + } + + void getDialog(String title, String? midTitle, VoidCallback onPressed) { + final textToSpeechController = Get.find(); + Get.defaultDialog( + title: title, + titleStyle: AppStyle.title, + middleTextStyle: AppStyle.title, + content: Column( + children: [ + IconButton( + onPressed: () async { + await textToSpeechController.speakText(title ?? midTitle!); + }, + icon: const Icon(Icons.headphones)), + Text( + midTitle!, + style: AppStyle.title, + ) + ], + ), + confirm: MyElevatedButton( + title: 'Ok'.tr, + onPressed: onPressed, + kolor: AppColor.greenColor, + ), + cancel: MyElevatedButton( + title: 'Cancel', + kolor: AppColor.redColor, + onPressed: () { + Get.back(); + })); + } + + Map? extractCoordinatesFromLink(String link) { + try { + // Extract the URL part from the link by finding the first occurrence of "http" + int urlStartIndex = link.indexOf(RegExp(r'https?://')); + if (urlStartIndex == -1) { + throw const FormatException('No URL found in the provided link.'); + } + + // Extract the URL and clean it + link = link.substring(urlStartIndex).trim(); + + Uri uri = Uri.parse(link); + + // Common coordinate query parameters + List coordinateParams = ['q', 'cp', 'll']; + + // Try to extract coordinates from query parameters + for (var param in coordinateParams) { + String? value = uri.queryParameters[param]; + if (value != null && (value.contains(',') || value.contains('~'))) { + List coordinates = + value.contains(',') ? value.split(',') : value.split('~'); + if (coordinates.length == 2) { + double? latitude = double.tryParse(coordinates[0].trim()); + double? longitude = double.tryParse(coordinates[1].trim()); + if (latitude != null && longitude != null) { + return { + 'latitude': latitude, + 'longitude': longitude, + }; + } + } + } + } + + // Try to extract coordinates from the path + List pathSegments = uri.pathSegments; + for (var segment in pathSegments) { + if (segment.contains(',')) { + List coordinates = segment.split(','); + if (coordinates.length == 2) { + double? latitude = double.tryParse(coordinates[0].trim()); + double? longitude = double.tryParse(coordinates[1].trim()); + if (latitude != null && longitude != null) { + return { + 'latitude': latitude, + 'longitude': longitude, + }; + } + } + } + } + } catch (e) { + print('Error parsing location link: $e'); + } + + return null; + } + + double latitudeWhatsApp = 0; + double longitudeWhatsApp = 0; + void handleWhatsAppLink(String link) { + Map? coordinates = extractCoordinatesFromLink(link); + + if (coordinates != null) { + latitudeWhatsApp = coordinates['latitude']!; + longitudeWhatsApp = coordinates['longitude']!; + + print( + 'Extracted coordinates: Lat: $latitudeWhatsApp, Long: $longitudeWhatsApp'); + // Use these coordinates in your app as needed + } else { + print('Failed to extract coordinates from the link'); + } + } + + void goToWhatappLocation() async { + if (sosFormKey.currentState!.validate()) { + changeIsWhatsAppOrder(true); + Get.back(); + handleWhatsAppLink(whatsAppLocationText.text); + myDestination = LatLng(latitudeWhatsApp, longitudeWhatsApp); + await mapController?.animateCamera(CameraUpdate.newLatLng( + LatLng(passengerLocation.latitude, passengerLocation.longitude))); + changeMainBottomMenuMap(); + passengerStartLocationFromMap = true; + isPickerShown = true; + update(); + } + } + + int currentTimeSearchingCaptainWindow = 0; + late String driverPhone = ''; + late String driverRate = ''; + late String passengerName = ''; + late String carColor = ''; + late String colorHex = ''; + late String carYear = ''; + late String model = ''; + late String make = ''; + late String licensePlate = ''; + + String driverOrderStatus = 'yet'; + bool isDriversTokensSend = false; + + Set notifiedDrivers = {}; + + /// [إضافة جديدة] + /// دالة مخصصة لإضافة الرحلة إلى جدول الانتظار (waiting_ride) + Future _addRideToWaitingTable() async { + try { + await CRUD().post(link: AppLink.addWaitingRide, payload: { + 'id': rideId.toString(), + "start_location": + '${startLocation.latitude},${startLocation.longitude}', + "end_location": '${endLocation.latitude},${endLocation.longitude}', + // 'start_location': + // '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + // 'end_location': + // '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + "date": DateTime.now().toString(), + "time": DateTime.now().toString(), + "price": totalPassenger.toStringAsFixed(2), + 'passenger_id': box.read(BoxName.passengerID).toString(), + 'status': 'waiting', // الحالة الرئيسية لجدول الانتظار + 'carType': box.read(BoxName.carType), + 'passengerRate': passengerRate.toStringAsFixed(2), + 'price_for_passenger': totalME.toStringAsFixed(2), + 'distance': distance.toStringAsFixed(1), + 'duration': duration.toStringAsFixed(1), + }); + Log.print('[WaitingTable] Ride $rideId added to waiting_ride table.'); + } catch (e) { + Log.print('Error adding ride to waiting_ride table: $e'); + } + } + + // Future confirmRideForAllDriverAvailable1() async { + // // Try to fetch car locations up to 4 times with a 2-second delay + // bool driversFound = false; + // for (int attempt = 0; attempt < 8; attempt++) { + // await getCarsLocationByPassengerAndReloadMarker( + // box.read(BoxName.carType), attempt > 5 ? 4500 : 3000); + + // // Check if dataCarsLocationByPassenger is valid and contains drivers + // if (dataCarsLocationByPassenger != 'failure' && + // dataCarsLocationByPassenger != null && + // dataCarsLocationByPassenger.containsKey('data') && + // dataCarsLocationByPassenger['message'] != null) { + // driversFound = true; + // break; // Exit loop if drivers are found + // } + + // // Wait 2 seconds before next attempt + // await Future.delayed(const Duration(seconds: 2)); + // } + + // // If no drivers were found after 4 attempts, show a dialog + // if (!driversFound) { + // Get.dialog( + // BackdropFilter( + // filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5), + // child: CupertinoAlertDialog( + // title: Text( + // "No Car or Driver Found in your area.".tr, + // style: AppStyle.title.copyWith( + // fontSize: 20, + // fontWeight: FontWeight.bold, + // ), + // ), + // content: Text( + // "No Car or Driver Found in your area.".tr, + // style: AppStyle.title.copyWith(fontSize: 16), + // ), + // actions: [ + // CupertinoDialogAction( + // onPressed: () { + // Get.back(); + // Get.offAll(() => const MapPagePassenger()); + // }, + // child: Text('OK'.tr, + // style: const TextStyle(color: AppColor.greenColor)), + // ), + // ], + // ), + // ), + // barrierDismissible: false, + // ); + + // return; + // } + + // // Proceed with the rest of the function if drivers are found + // PaymentController paymentController = Get.find(); + // rideConfirm = true; + // shouldFetch = true; + // isBottomSheetShown = false; + // timeToPassengerFromDriverAfterApplied = 60; + + // // Add ride to database + // await CRUD() + // .post(link: "${AppLink.IntaleqCairoServer}/ride/rides/add.php", payload: { + // "start_location": + // '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + // "end_location": + // '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + // "date": DateTime.now().toString(), + // "time": DateTime.now().toString(), + // "endtime": durationToAdd.toString(), + // "price": totalPassenger.toStringAsFixed(2), + // "passenger_id": box.read(BoxName.passengerID).toString(), + // "driver_id": dataCarsLocationByPassenger['message'][carsOrder]['driver_id'] + // .toString(), + // "status": "waiting", + // 'carType': box.read(BoxName.carType), + // "price_for_driver": totalPassenger.toString(), + // "price_for_passenger": totalME.toString(), + // "distance": distance.toString(), + // "paymentMethod": paymentController.isWalletChecked.toString(), + // }).then((value) { + // if (value is String) { + // final parsedValue = jsonDecode(value); + // rideId = parsedValue['message']; + // } else if (value is Map) { + // rideId = value['message']; + // } else { + // Log.print('Unexpected response type: ${value.runtimeType}'); + // } + + // // Timer to notify drivers every 2 seconds for 5 iterations + // int iteration = 0; + // Timer.periodic(const Duration(seconds: 2), (timer) async { + // if (iteration >= 5) { + // timer.cancel(); + // return; + // } + // iteration++; + + // // Reload driver locations and notify available drivers + // await getCarsLocationByPassengerAndReloadMarker( + // box.read(BoxName.carType), 3000); + // if (dataCarsLocationByPassenger != null && + // dataCarsLocationByPassenger.containsKey('data') && + // dataCarsLocationByPassenger['message'] != null) { + // for (var driverData in dataCarsLocationByPassenger['message']) { + // String driverId = driverData['driver_id'].toString(); + // if (!notifiedDrivers.contains(driverId)) { + // notifiedDrivers.add(driverId); + // List body = [ + // '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + // '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + // totalPassenger.toStringAsFixed(2), + // totalDriver.toStringAsFixed(2), + // durationToRide.toString(), + // distance.toStringAsFixed(2), + // driverId.toString(), + // box.read(BoxName.passengerID).toString(), + // box.read(BoxName.name).toString(), + // box.read(BoxName.tokenFCM).toString(), + // box.read(BoxName.phone).toString(), + // durationByPassenger.toString(), + // distanceByPassenger.toString(), + // paymentController.isWalletChecked.toString(), + // driverData['token'].toString(), + // durationToPassenger.toString(), + // rideId.toString(), + // rideTimerBegin.toString(), + // driverId.toString(), + // durationToRide.toString(), + // Get.find().wayPoints.length > 1 + // ? 'haveSteps' + // : 'startEnd', + // placesCoordinate[0], + // placesCoordinate[1], + // placesCoordinate[2], + // placesCoordinate[3], + // placesCoordinate[4], + // costForDriver.toStringAsFixed(2), + // (double.parse(box.read(BoxName.passengerWalletTotal)) < 0 + // ? double.parse(box.read(BoxName.passengerWalletTotal)) + // .toStringAsFixed(2) + // : '0'), + // box.read(BoxName.email).toString(), + // data[0]['start_address'], + // data[0]['end_address'], + // box.read(BoxName.carType), + // kazan.toStringAsFixed(0), + // passengerRate.toStringAsFixed(2), + // ]; + // Log.print('body: ${body}'); + // firebaseMessagesController.sendNotificationToDriverMAP( + // 'OrderSpeed', + // rideId, + // driverData['token'].toString(), + // body, + // 'order', + // ); + // } + // } + // } + // }); + // }); + + // // If an additional endpoint is available, post data there as well + // if (AppLink.endPoint != AppLink.IntaleqCairoServer) { + // CRUD().post(link: '${AppLink.endPoint}/ride/rides/add.php', payload: { + // "start_location": + // '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + // "end_location": + // '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + // "date": DateTime.now().toString(), + // "time": DateTime.now().toString(), + // "endtime": durationToAdd.toString(), + // "price": totalPassenger.toStringAsFixed(2), + // "passenger_id": box.read(BoxName.passengerID).toString(), + // "driver_id": dataCarsLocationByPassenger['message'][carsOrder]['driver_id'] + // .toString(), + // "status": "waiting", + // 'carType': box.read(BoxName.carType), + // "price_for_driver": totalPassenger.toString(), + // "price_for_passenger": totalME.toString(), + // "distance": distance.toString(), + // "paymentMethod": paymentController.isWalletChecked.toString(), + // }); + // } + // delayAndFetchRideStatusForAllDriverAvailable(rideId); + // update(); + // } + + increaseForSameRideAndDelay() async { + reSearchAfterCanceledFromDriver(); + // bool driversFound = false; + // for (int attempt = 0; attempt < 8; attempt++) { + // await getCarsLocationByPassengerAndReloadMarker( + // box.read(BoxName.carType), 4500); + + // // Check if dataCarsLocationByPassenger is valid and contains drivers + // if (dataCarsLocationByPassenger != 'failure' && + // dataCarsLocationByPassenger != null && + // dataCarsLocationByPassenger.containsKey('message') && + // dataCarsLocationByPassenger['message'] != null) { + // driversFound = true; + // break; // Exit loop if drivers are found + // } + + // // Wait 2 seconds before next attempt + // await Future.delayed(const Duration(seconds: 2)); + // } + + // // If no drivers were found after 4 attempts, show a dialog + // if (!driversFound) { + // Get.dialog( + // BackdropFilter( + // filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5), + // child: CupertinoAlertDialog( + // title: Text( + // "No Car or Driver Found in your area.".tr, + // style: AppStyle.title.copyWith( + // fontSize: 20, + // fontWeight: FontWeight.bold, + // ), + // ), + // content: Text( + // "No Car or Driver Found in your area.".tr, + // style: AppStyle.title.copyWith(fontSize: 16), + // ), + // actions: [ + // CupertinoDialogAction( + // onPressed: () { + // Get.back(); + // Get.offAll(() => const MapPagePassenger()); + // }, + // child: Text('OK'.tr, + // style: const TextStyle(color: AppColor.greenColor)), + // ), + // ], + // ), + // ), + // barrierDismissible: false, + // ); + + // return; + // } + // PaymentController paymentController = Get.find(); + // rideConfirm = true; + // shouldFetch = true; + // isBottomSheetShown = false; + // timeToPassengerFromDriverAfterApplied = 60; + // // confirmRideForAllDriverAvailable(); + // for (var i = 0; i < dataCarsLocationByPassenger['message'].length; i++) { + // List body = [ + // '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + // '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + // totalPassenger.toStringAsFixed(2), + // totalDriver.toStringAsFixed(2), + // durationToRide.toString(), + // distance.toStringAsFixed(2), + // dataCarsLocationByPassenger['message'][i]['driver_id'].toString(), + // box.read(BoxName.passengerID).toString(), + // box.read(BoxName.name).toString(), + // box.read(BoxName.tokenFCM).toString(), + // box.read(BoxName.phone).toString(), + // durationByPassenger.toString(), + // distanceByPassenger.toString(), + // paymentController.isWalletChecked.toString(), + // dataCarsLocationByPassenger['message'][i]['token'].toString(), + // durationToPassenger.toString(), + // rideId.toString(), + // rideTimerBegin.toString(), + // dataCarsLocationByPassenger['message'][i]['driver_id'].toString(), + // durationToRide.toString(), + // Get.find().wayPoints.length > 1 + // ? 'haveSteps' + // : 'startEnd', + // placesCoordinate[0], + // placesCoordinate[1], + // placesCoordinate[2], + // placesCoordinate[3], + // placesCoordinate[4], + // costForDriver.toStringAsFixed(2), + // double.parse(box.read(BoxName.passengerWalletTotal)) < 0 + // ? double.parse(box.read(BoxName.passengerWalletTotal)) + // .toStringAsFixed(2) + // : '0', + // box.read(BoxName.email).toString(), + // data[0]['start_address'], + // data[0]['end_address'], + // box.read(BoxName.carType), + // kazan.toStringAsFixed(0), + // passengerRate.toStringAsFixed(2), + // ]; + // // Log.print('body: ${body}'); + + // firebaseMessagesController.sendNotificationToDriverMAP( + // 'OrderSpeed', + // rideId.toString(), + // dataCarsLocationByPassenger['message'][i]['token'].toString(), + // body, + // 'order'); + // } + } + + int tick = 0; // Move tick outside the function to maintain its state + + // void delayAndFetchRideStatus(String rideId, carType) { + // Timer.periodic(const Duration(seconds: 1), (timer) async { + // if (shouldFetch) { + // if (remainingTimeToPassengerFromDriverAfterApplied > 0) { + // String res = await getRideStatus(rideId); + + // Log.print('tick: $tick'); + // String rideStatusDelayed = res.toString(); + // if ((rideStatusDelayed == 'waiting' || + // rideStatusDelayed == 'Refused') && + // tick >= 15) { + // timer.cancel(); // Stop the current timer + // showAndResearchForCaptain(); + // //TODO add to wait + // await getCarsLocationByPassengerAndReloadMarker(carType, 3000); + // // await getNearestDriverByPassengerLocationAPIGOOGLE(); + // // getCarForFirstConfirm(carType); + // confirmRideForAllDriverAvailable(); + // // delayAndFetchRideStatusForAllDriverAvailable(rideId); + // } else if (rideStatusDelayed == 'Apply' || statusRide == 'Apply') { + // Log.print('rideStatusDelayed == Apply: $rideStatusDelayed'); + // // todo play sound + // Get.find() + // .playSoundFromAssets('assets/start'); + // timer.cancel(); // Stop the current timer + // await getUpdatedRideForDriverApply(rideId); + // shouldFetch = false; // Stop further fetches + // statusRide = 'Apply'; + // rideConfirm = false; + // isSearchingWindow = false; + // update(); + // startTimerFromDriverToPassengerAfterApplied(); + // if (box.read(BoxName.carType) == 'Speed' || + // box.read(BoxName.carType) == 'Awfar Car') { + // NotificationController().showNotification( + // 'The captain is responsible for the route.'.tr, + // 'This price is fixed even if the route changes for the driver.' + // .tr, + // 'ding'); + // } else if (box.read(BoxName.carType) == 'Comfort' || + // box.read(BoxName.carType) == 'Lady') { + // NotificationController().showNotification('Attention'.tr, + // 'The price may increase if the route changes.'.tr, 'ding'); + // } + // } else if (rideStatusDelayed == 'Refused') { + // statusRide = 'Refused'; + // if (isDriversTokensSend == false) { + // confirmRideForAllDriverAvailable(); + // isDriversTokensSend = true; + // } // Start 15-second timer + // } + // //else if (isDriversTokensSend == false) { + // // No need to recall delayAndFetchRideStatus as Timer.periodic is already running + // update(); + // // } + // if (tick < 19) { + // tick++; + // } else { + // timer.cancel(); + // // Stop the timer if remainingTimeToPassengerFromDriverAfterApplied <= 0 + // } + // } else { + // timer.cancel(); + // // Stop the timer if remainingTimeToPassengerFromDriverAfterApplied <= 0 + // } + // } else { + // timer.cancel(); // Stop the timer if shouldFetch is false + // } + // }); + // } + + // showAndResearchForCaptain() { + // Get.snackbar( + // "No Captain Accepted Your Order".tr, + // "We are looking for a captain but the price may increase to let a captain accept" + // .tr, + // duration: const Duration(seconds: 5), + // backgroundColor: AppColor.yellowColor, + // ); + // isSearchingWindow == true; + // update(); + // } + + String driversStatusForSearchWindow = ''; + + // Future confirmRideForAllDriverAvailable() async { + // bool driversFound = false; + // const maxAttempts = 8; + // const attemptDelay = Duration(seconds: 3); + + // for (int attempt = 0; attempt < maxAttempts; attempt++) { + // final reloadDuration = attempt > 5 ? 4500 : 3000; + // await getCarsLocationByPassengerAndReloadMarker( + // box.read(BoxName.carType), reloadDuration); + // // await getNearestDriverByPassengerLocation(); + // currentTimeSearchingCaptainWindow = 0; + // driversStatusForSearchWindow = 'We are search for nearst driver'.tr; + // if (isDriversDataValid()) { + // driversFound = true; + // break; + // } + + // await Future.delayed(attemptDelay); + // } + + // if (!driversFound) { + // showNoDriversDialog(); + // return; + // } + // driversStatusForSearchWindow = 'Your order is being prepared'.tr; + // Log.print('driversStatusForSearchWindow: $driversStatusForSearchWindow'); + // update(); + // await postRideDetailsToServer(); + // driversStatusForSearchWindow = 'Your order sent to drivers'.tr; + + // await notifyAvailableDrivers(); + + // driversStatusForSearchWindow = 'The drivers are reviewing your request'.tr; + // Log.print('driversStatusForSearchWindow: $driversStatusForSearchWindow'); + // update(); + // delayAndFetchRideStatusForAllDriverAvailable(rideId); + // // update(); + // } + + Future updateConfirmRideForAllDriverAvailable() async { + bool driversFound = false; + const maxAttempts = 8; + const attemptDelay = Duration(seconds: 3); + + for (int attempt = 0; attempt < maxAttempts; attempt++) { + final reloadDuration = attempt > 5 ? 4500 : 3000; + await getCarsLocationByPassengerAndReloadMarker( + box.read(BoxName.carType), reloadDuration); + // await getNearestDriverByPassengerLocation(); + + if (isDriversDataValid()) { + driversFound = true; + break; + } + + await Future.delayed(attemptDelay); + } + + if (!driversFound) { + showNoDriversDialog(); + return; + } + + // await postRideDetailsToServer(); + // delayAndFetchRideStatusForAllDriverAvailable(rideId); + // update(); + await notifyAvailableDrivers(); + } + + bool isDriversDataValid() { + return dataCarsLocationByPassenger != 'failure' && + dataCarsLocationByPassenger != null && + dataCarsLocationByPassenger.containsKey('message') && + dataCarsLocationByPassenger['message'] != null; + } + + void showNoDriversDialog() { + Get.dialog( + BackdropFilter( + filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5), + child: CupertinoAlertDialog( + title: Text("No Car or Driver Found in your area.".tr, + style: AppStyle.title + .copyWith(fontSize: 20, fontWeight: FontWeight.bold)), + content: Text("No Car or Driver Found in your area.".tr, + style: AppStyle.title.copyWith(fontSize: 16)), + actions: [ + CupertinoDialogAction( + onPressed: () { + Get.back(); + Get.offAll(() => const MapPagePassenger()); + }, + child: Text('OK'.tr, + style: const TextStyle(color: AppColor.greenColor)), + ), + ], + ), + ), + barrierDismissible: false, + ); + } + + Future postRideDetailsToServer() async { + final paymentController = Get.find(); + + // تأكد من وجود إحداثيات قبل البدء + if (polylineCoordinates.isEmpty) { + Log.print("Polyline coordinates are empty!"); + return false; + } + + startLocation = polylineCoordinates.first; + endLocation = polylineCoordinates.last; + + // بناء البيانات + final payload = constructRidePayload(paymentController); + + // هام جداً: إذا كانت البيانات null (بسبب عدم وجود سائقين)، نوقف العملية هنا + if (payload == null) { + Log.print('Payload is null (No drivers or error). Operation aborted.'); + return false; + } + + Log.print('constructRidePayload: ${payload}'); + + try { + // 🚀 إرسال طلب واحد فقط + // ملف PHP الجديد سيقوم بالحفظ في السيرفرين (Local & Remote) تلقائياً + final response = await CRUD() + .post(link: "${AppLink.server}/ride/rides/add.php", payload: payload); + + // معالجة الاستجابة + var responseBody; + if (response is String) { + responseBody = jsonDecode(response); + } else { + responseBody = response; + } + + // التحقق من النجاح حسب دالة printSuccess في PHP + // عادةً تكون { "status": "success", "data": 155 } + if (responseBody['status'] == 'success') { + // PHP يرجع الـ ID داخل الـ data + rideId = responseBody['message']; + Log.print("Ride Created Successfully with ID: $rideId"); + return true; + } else { + Log.print('Server returned failure: $responseBody'); + return false; + } + } catch (e) { + Log.print('Error posting ride details: $e'); + return false; + } + } + + late LatLng endLocation; + late LatLng startLocation; + + Map? constructRidePayload( + PaymentController paymentController) { + try { + final msg = dataCarsLocationByPassenger?['message']; + + // التحقق من وجود قائمة السائقين وصحة الـ index + final hasDrivers = msg is List && + msg.isNotEmpty && + carsOrder >= 0 && + carsOrder < msg.length; + + if (!hasDrivers) { + _showNoDriversDialog(); + return null; // نعيد null ليتم التعامل معه في الدالة الرئيسية + } + + final driverId = msg[carsOrder]['driver_id'] ?? 'new_driver'; + + // تجهيز الوقت الحالي + DateTime now = DateTime.now(); + + // حساب وقت الوصول المتوقع (EndTime) + // durationToAdd يجب أن يكون Duration object. إذا كان نصاً يجب تحويله + // سأفترض هنا أنه كائن Duration، إذا لم يكن كذلك أخبرني للتعديل + DateTime endTimeDt = now.add(durationToAdd); + + return { + "start_location": + '${startLocation.latitude},${startLocation.longitude}', + "end_location": '${endLocation.latitude},${endLocation.longitude}', + + // تنسيق التاريخ والوقت ليتوافق مع MySQL + "date": + "${now.year}-${now.month.toString().padLeft(2, '0')}-${now.day.toString().padLeft(2, '0')}", // YYYY-MM-DD + "time": + "${now.hour.toString().padLeft(2, '0')}:${now.minute.toString().padLeft(2, '0')}:${now.second.toString().padLeft(2, '0')}", // HH:MM:SS + + // إرسال وقت الانتهاء بتنسيق كامل أو وقت فقط حسب العمود في قاعدة البيانات + // هنا سأرسله كوقت HH:MM:SS + "endtime": + "${endTimeDt.hour.toString().padLeft(2, '0')}:${endTimeDt.minute.toString().padLeft(2, '0')}:${endTimeDt.second.toString().padLeft(2, '0')}", + + "price": totalPassenger.toStringAsFixed(2), + "passenger_id": box.read(BoxName.passengerID).toString(), + "driver_id": driverId, + "status": "waiting", + 'carType': box.read(BoxName.carType), + "price_for_driver": totalPassenger.toString(), + "price_for_passenger": totalME.toString(), + "distance": distance.toString(), + "paymentMethod": paymentController.isWalletChecked + .toString(), // تأكد أن PHP يستقبل هذا الحقل إذا كنت قد أضفته + }; + } catch (e, st) { + Log.print('Error in constructRidePayload: $e'); + Log.print(st.toString()); + _showNoDriversDialog(); + return null; + } + } + + void _showNoDriversDialog() { + // اذا تستخدم GetX: + MyDialog().getDialog( + 'Sorry'.tr, + 'No cars are available at the moment. Please try again later.'.tr, + () { + Get.back(); // closes the dialog + cancelRide(); // cancels or resets the ride + }, + ); + } + + Future notifyAvailableDrivers() async { + int iteration = 0; + const maxIterations = 5; + const iterationDelay = Duration(seconds: 2); + + while (iteration < maxIterations) { + await Future.delayed(iterationDelay); + await getCarsLocationByPassengerAndReloadMarker( + box.read(BoxName.carType), 2400); + + if (dataCarsLocationByPassenger != null && + dataCarsLocationByPassenger.containsKey('message') && + dataCarsLocationByPassenger['message'] != null) { + for (var driverData in dataCarsLocationByPassenger['message']) { + String driverId = driverData['driver_id'].toString(); + if (!notifiedDrivers.contains(driverId)) { + notifiedDrivers.add(driverId); + double driverLat = double.parse(driverData['latitude']); + double driverLng = double.parse(driverData['longitude']); + double distanceToDriverInMeters = Geolocator.distanceBetween( + passengerLocation.latitude, + passengerLocation.longitude, + driverLat, + driverLng, + ); + + double distanceToDriverInKm = distanceToDriverInMeters * + 1.3 / //to approximate to stright distance + 1000; + double durationToDriverInHours = + distanceToDriverInKm / 20; // 25 km/h as default speed + double durationToDriverInSeconds = durationToDriverInHours * 3600; + durationToPassenger = durationToDriverInSeconds.toInt(); + distanceByPassenger = + (distanceToDriverInMeters * 1.25).toStringAsFixed(0); + Future.delayed(const Duration(microseconds: 10)); + final body = constructNotificationBody(driverData); + Log.print('body:ww $body'); + // firebaseMessagesController.sendNotificationToDriverMAP( + // 'Order', // without tr since background not valid + // endNameAddress, + // (driverData['token'].toString()), + // body, + // 'order'); + NotificationService.sendNotification( + category: 'Order', + target: (driverData['token'].toString()), + title: 'Order'.tr, + body: endNameAddress, + isTopic: false, // Important: this is a token + tone: 'tone1', + driverList: body); + } + } + } + iteration++; + } + } + + Future notifyAvailableDriversAgain() async { + Log.print('[DEBUG] Starting notifyAvailableDriversAgain()'); + await getCarsLocationByPassengerAndReloadMarker( + box.read(BoxName.carType), 2400); + Log.print( + '[DEBUG] Found drivers to notify: ${dataCarsLocationByPassenger['message']?.length}'); + if (dataCarsLocationByPassenger != null && + dataCarsLocationByPassenger.containsKey('message') && + dataCarsLocationByPassenger['message'] != null) { + for (var driverData in dataCarsLocationByPassenger['message']) { + String driverId = driverData['driver_id'].toString(); + if (!notifiedDrivers.contains(driverId)) { + notifiedDrivers.add(driverId); + double driverLat = double.parse(driverData['latitude']); + double driverLng = double.parse(driverData['longitude']); + double distanceToDriverInMeters = Geolocator.distanceBetween( + passengerLocation.latitude, + passengerLocation.longitude, + driverLat, + driverLng, + ); + + double distanceToDriverInKm = distanceToDriverInMeters * + 1.25 / //to approximate to stright distance + 1000; + double durationToDriverInHours = + distanceToDriverInKm / 25; // 25 km/h as default speed + double durationToDriverInSeconds = durationToDriverInHours * 3600; + durationToPassenger = durationToDriverInSeconds.toInt(); + distanceByPassenger = + (distanceToDriverInMeters * 1.25).toStringAsFixed(0); + Future.delayed(const Duration(microseconds: 10)); + final body = constructNotificationBody(driverData); + Log.print('body:ww ${body}'); + Log.print( + '[DEBUG] Sending to driver: ${driverData['driver_id']}, token: ${driverData['token']}'); + + NotificationService.sendNotification( + category: 'Order', + target: (driverData['token'].toString()), + title: 'Order'.tr, + body: endNameAddress, + isTopic: false, // Important: this is a token + tone: 'tone1', + driverList: body); + } + } + } + } + + List constructNotificationBody(var driverData) { + final paymentController = Get.find(); + return [ + // '${data[0]['start_location']['lat']},${data[0]['start_location']['lng']}', + // '${data[0]['end_location']['lat']},${data[0]['end_location']['lng']}', + '${startLocation.latitude},${startLocation.longitude}', + '${endLocation.latitude},${endLocation.longitude}', + totalPassenger.toStringAsFixed(2), + totalDriver.toStringAsFixed(2), + durationToRide.toString(), + distance.toStringAsFixed(2), + driverData?['driver_id']?.toString() ?? 'N/A', + box.read(BoxName.passengerID).toString(), + (box.read(BoxName.name).toString().split(' ')[0]).toString(), + (box.read(BoxName.tokenFCM).toString()), + (box.read(BoxName.phone).toString()), + durationToPassenger.toStringAsFixed(0) ?? '120', + distanceByPassenger.toString() ?? '2000', + paymentController.isWalletChecked.toString(), + driverData?['token']?.toString() ?? 'N/A', + durationToPassenger.toString(), + rideId.toString(), + rideTimerBegin.toString(), + driverData?['driver_id']?.toString() ?? 'N/A', + durationToRide.toString(), + Get.find().wayPoints.length > 1 + ? 'haveSteps' + : 'startEnd', + placesCoordinate[0], + placesCoordinate[1], + placesCoordinate[2], + placesCoordinate[3], + placesCoordinate[4], + costForDriver.toStringAsFixed(2), + (double.parse(box.read(BoxName.passengerWalletTotal)) < 0 + ? double.parse(box.read(BoxName.passengerWalletTotal)) + .toStringAsFixed(2) + : '0'), + box.read(BoxName.email).toString() ?? 'none', + startNameAddress, + endNameAddress, + box.read(BoxName.carType), + kazan.toStringAsFixed(0), + passengerRate.toStringAsFixed(2), + ]; + } + + StreamController _rideStatusStreamController = + StreamController.broadcast(); + Stream get rideStatusStream => _rideStatusStreamController.stream; + + int maxAttempts = 28; + + // Future delayAndFetchRideStatusForAllDriverAvailable( + // String rideId) async { + // int attemptCounter = 0; + // bool isApplied = false; + // tick = 0; + // await addRideToNotificationDriverAvailable(); + // Timer.periodic(const Duration(seconds: 1), (timer) async { + // if (attemptCounter >= maxAttempts || isApplied == true) { + // timer.cancel(); + // _rideStatusStreamController.close(); // Close the stream when done + // return; + // } + + // attemptCounter++; + // tick++; + + // try { + // var res = await getRideStatus(rideId); + // String rideStatusDelayed = res.toString(); + // Log.print('rideStatusDelayed: $rideStatusDelayed'); + + // _rideStatusStreamController + // .add(rideStatusDelayed); // Emit the ride status + // // addRideToNotificationDriverString(); + // if (rideStatusDelayed == 'Cancel') { + // timer.cancel(); + // NotificationController().showNotification( + // "Order Cancelled".tr, "you canceled order".tr, 'ding'); + // _rideStatusStreamController + // .close(); // Close stream after cancellation + // // + // // + // } else if (rideStatusDelayed == 'Apply' || + // rideStatusDelayed == 'Applied') { + // isApplied = true; + // // timer.cancel(); + // rideAppliedFromDriver(isApplied); + + // timer.cancel(); + // // Close stream after applying + // } else if (attemptCounter >= maxAttempts || + // rideStatusDelayed == 'waiting') { + // // timer.cancel(); //todo + // // addRideToNotificationDriverString(); + // // Show dialog to increase fee... + + // // buildTimerForIncrease(); + // Get.defaultDialog( + // title: 'Are you want to wait drivers to accept your order'.tr, + // middleText: '', + // onConfirm: () { + // Log.print('[DEBUG] User chose to wait again'); + // Get.back(); + // notifyAvailableDriversAgain(); + // delayAndFetchRideStatusForAllDriverAvailable(rideId); + // // addRideToNotificationDriverAvailable(); + // }, + // onCancel: () { + // timer.cancel(); + // Get.back(); + // showCancelRideBottomSheet(); + // }, + // ); + // // MyDialog().getDialog( + // // 'Are you want to wait drivers to accept your order'.tr, '', () { + // // Get.back(); + // // addRideToNotificationDriverAvailable(); + // // }); + // update(); + // _rideStatusStreamController + // .close(); // Close stream after max attempts + // } + // } catch (e) { + // _rideStatusStreamController.addError(e); // Handle errors in the stream + // } + // }); + // } + + Future rideAppliedFromDriver(bool isApplied) async { + Log.print('[rideAppliedFromDriver] 🚀 Starting logic...'); + + // 1. جلب بيانات السائق والسيارة المحدثة من السيرفر + await getUpdatedRideForDriverApply(rideId); + + // تنبيهات الأسعار حسب نوع السيارة + if (['Speed', 'Awfar Car'].contains(box.read(BoxName.carType))) { + NotificationController().showNotification('Fixed Price'.tr, + 'The captain is responsible for the route.'.tr, 'ding'); + } else if (['Comfort', 'Lady'].contains(box.read(BoxName.carType))) { + NotificationController().showNotification('Attention'.tr, + 'The price may increase if the route changes.'.tr, 'ding'); + } + + isApplied = true; + statusRide = 'Apply'; + rideConfirm = false; + isSearchingWindow = false; + _isDriverAppliedLogicExecuted = true; // ضمان عدم التكرار + + update(); // تحديث أولي + + // 2. جلب موقع السائق الأولي فوراً (Blocking await) + await getDriverCarsLocationToPassengerAfterApplied(); + + // 3. إذا توفر الموقع: حساب المسافة/الزمن ورسم المسار + if (driverCarsLocationToPassengerAfterApplied.isNotEmpty) { + LatLng driverPos = driverCarsLocationToPassengerAfterApplied.last; + + Log.print( + '[rideAppliedFromDriver] 📍 Driver at: $driverPos, Passenger at: $passengerLocation'); + + // أ) استدعاء API لحساب المسافة والزمن الدقيق (بدون رسم) + await getInitialDriverDistanceAndDuration(driverPos, passengerLocation); + + // ب) رسم خط المسار (Visual only) + await drawDriverPathOnly(driverPos, passengerLocation); + + // ج) ضبط الكاميرا لتشمل السائق والراكب + _fitCameraToPoints(driverPos, passengerLocation); + } else { + Log.print( + '[rideAppliedFromDriver] ⚠️ Warning: Driver location not found yet.'); + } + + // 4. تشغيل تايمر التتبع المستمر (الذي سيقوم بتناقص الوقت الذي جلبناه من API) + startTimerFromDriverToPassengerAfterApplied(); + + // إغلاق الستريم القديم + if (!_rideStatusStreamController.isClosed) + _rideStatusStreamController.close(); + } + + /// دالة لجلب المسافة والزمن بين السائق والراكب عند قبول الطلب + /// تستخدم API سريع (overview=false) + Future getInitialDriverDistanceAndDuration( + LatLng driverPos, LatLng passengerPos) async { + final String apiUrl = 'https://routec.intaleq.xyz/route'; + final String apiKey = Env.mapKeyOsm; + + final String origin = '${driverPos.latitude},${driverPos.longitude}'; + final String dest = '${passengerPos.latitude},${passengerPos.longitude}'; + + // الرابط المطلوب: steps=false&overview=false (سريع جداً للبيانات فقط) + final Uri uri = Uri.parse( + '$apiUrl?origin=$origin&destination=$dest&steps=false&overview=false'); + + try { + Log.print('[InitialCalc] Fetching distance/duration from: $uri'); + final response = await http.get(uri, headers: {'X-API-KEY': apiKey}); + + if (response.statusCode == 200) { + final data = jsonDecode(response.body); + + if (data['status'] == 'ok') { + // 1. استخراج الزمن (بالثواني) + // نستخدم المعامل 1.5348 أو 1.4 حسب منطقك السابق لتقدير الوقت الواقعي + double durationSecondsRaw = (data['duration_s'] as num).toDouble(); + int finalDurationSeconds = (durationSecondsRaw * kDurationScalar) + .toInt(); // kDurationScalar = 1.5348 + + // 2. استخراج المسافة (بالأمتار) + double distanceMeters = (data['distance_m'] as num).toDouble(); + + // 3. تحديث المتغيرات في الكنترولر + timeToPassengerFromDriverAfterApplied = finalDurationSeconds; + remainingTimeToPassengerFromDriverAfterApplied = finalDurationSeconds; + + distanceByPassenger = + (distanceMeters).toStringAsFixed(0); // المسافة نصاً + + // يمكنك أيضاً تحديث durationToPassenger إذا كنت تستخدمها + durationToPassenger = finalDurationSeconds; + + Log.print( + '[InitialCalc] ✅ Success: Duration=${finalDurationSeconds}s, Distance=${distanceMeters}m'); + update(); // تحديث الواجهة لعرض الوقت الجديد فوراً + } + } else { + Log.print('[InitialCalc] ❌ API Error: ${response.statusCode}'); + } + } catch (e) { + Log.print('[InitialCalc] 💥 Exception: $e'); + } + } + +// دالة خفيفة وسريعة لرسم خط المسار فقط (بدون أسعار أو خطوات) + Future drawDriverPathOnly(LatLng driverPos, LatLng passengerPos) async { + final String apiUrl = 'https://routec.intaleq.xyz/route'; + final String apiKey = Env.mapKeyOsm; + + final String origin = '${driverPos.latitude},${driverPos.longitude}'; + final String dest = '${passengerPos.latitude},${passengerPos.longitude}'; + + // استخدام overview=full للدقة، و steps=false للسرعة + final Uri uri = Uri.parse( + '$apiUrl?origin=$origin&destination=$dest&steps=false&overview=full'); + + try { + final response = await http.get(uri, headers: {'X-API-KEY': apiKey}); + + if (response.statusCode == 200) { + final data = jsonDecode(response.body); + + if (data['status'] == 'ok' && data['polyline'] != null) { + final String pointsString = data['polyline']; + + // فك التشفير + List decodedPoints = + await compute(decodePolylineIsolate, pointsString); + + // إزالة خط مسار السائق القديم فقط + polyLines + .removeWhere((p) => p.polylineId.value == 'driver_track_line'); + + // إضافة الخط الجديد + polyLines.add(Polyline( + polylineId: const PolylineId('driver_track_line'), + points: decodedPoints, + color: Colors.black87, // لون مميز لمسار السائق + width: 5, + jointType: JointType.round, + startCap: Cap.roundCap, + endCap: Cap.roundCap, + patterns: [ + PatternItem.dash(10), + PatternItem.gap(10) + ], // جعله منقطاً + )); + + // لا تستدعي update هنا، سيتم استدعاؤها في الدالة الأب (getDriverCars...) لتقليل عدد التحديثات + } + } + } catch (e) { + print('Error drawing driver path: $e'); + } + } + + // دالة مساعدة لضبط الكاميرا + // void _fitCameraToPoints(LatLng p1, LatLng p2) { + // double minLat = min(p1.latitude, p2.latitude); + // double maxLat = max(p1.latitude, p2.latitude); + // double minLng = min(p1.longitude, p2.longitude); + // double maxLng = max(p1.longitude, p2.longitude); + + // mapController?.animateCamera( + // CameraUpdate.newLatLngBounds( + // LatLngBounds( + // southwest: LatLng(minLat, minLng), + // northeast: LatLng(maxLat, maxLng), + // ), + // 100 // Padding + // ), + // ); + // } + void _fitCameraToPoints(LatLng p1, LatLng p2) async { + if (mapController == null) return; + + // 1. معالجة حالة النقاط المتطابقة (تمنع الكراش في Android) + if (p1.latitude == p2.latitude && p1.longitude == p2.longitude) { + try { + mapController?.animateCamera(CameraUpdate.newLatLngZoom(p1, 17)); + } catch (e) { + Log.print("Error animating to single point: $e"); + } + return; + } + + // 2. حساب الحدود + double minLat = min(p1.latitude, p2.latitude); + double maxLat = max(p1.latitude, p2.latitude); + double minLng = min(p1.longitude, p2.longitude); + double maxLng = max(p1.longitude, p2.longitude); + + // 3. تقليل الهوامش لتجنب خطأ "View size too small" + // نستخدم 50 بدلاً من 100 ليكون آمناً مع الخرائط الصغيرة + double padding = 50.0; + + try { + await mapController?.animateCamera( + CameraUpdate.newLatLngBounds( + LatLngBounds( + southwest: LatLng(minLat, minLng), + northeast: LatLng(maxLat, maxLng), + ), + padding, + ), + ); + } catch (e) { + Log.print("Error animating bounds (Map might be resizing): $e"); + // محاولة بديلة آمنة: تحريك الكاميرا للمنتصف فقط دون Bounds + try { + LatLng center = LatLng((minLat + maxLat) / 2, (minLng + maxLng) / 2); + mapController?.animateCamera(CameraUpdate.newLatLngZoom(center, 14)); + } catch (_) {} + } + } + +// Listening to the Stream + void listenToRideStatusStream() { + rideStatusStream.listen((rideStatus) { + print("Ride Status: $rideStatus"); + // Handle updates based on the ride status + }, onError: (error) { + print("Error in Ride Status Stream: $error"); + // Handle stream errors + }, onDone: () { + print("Ride status stream closed."); + }); + } + + reSearchAfterCanceledFromDriver() async { + shouldFetch = true; // Stop further fetches + statusRide = 'wait'; + rideConfirm = true; + isSearchingWindow = true; + update(); + updateConfirmRideForAllDriverAvailable(); + } + + void start15SecondTimer(String rideId) { + Timer(const Duration(seconds: 15), () { + // delayAndFetchRideStatusForAllDriverAvailable(rideId); + }); + } + + // Replaces void startTimer() + Timer? + _uiCountdownTimer; // Add this variable to your class to manage lifecycle + + void startUiCountdown() { + // Cancel any existing timer to avoid duplicates + _uiCountdownTimer?.cancel(); + + // Reset variables + progress = 0; + remainingTime = durationTimer; + + _uiCountdownTimer = Timer.periodic(const Duration(seconds: 1), (timer) { + // Logic from your loop, but non-blocking + int i = timer.tick; // current tick + + progress = i / durationTimer; + remainingTime = durationTimer - i; + + if (remainingTime <= 0) { + timer.cancel(); // Stop this specific timer + rideConfirm = false; + + // Add the duration to the tracking time logic + timeToPassengerFromDriverAfterApplied += durationToPassenger; + + // Note: We do NOT call startTimerFromDriverToPassengerAfterApplied() here + // because we already started it in rideAppliedFromDriver! + + timerEnded(); // Call your existing completion logic + } + update(); // Update the UI progress bar + }); + } + + void timerEnded() async { + runEvery30SecondsUntilConditionMet(); + isCancelRidePageShown = false; + print('isCancelRidePageShown: $isCancelRidePageShown'); + update(); + } + + Future getRideStatus(String rideId) async { + final response = await CRUD().get( + link: "${AppLink.ride}/ride/rides/getRideStatus.php", + payload: {'id': rideId}); + print(response); + print('2176'); + return jsonDecode(response)['data']; + } + + late String driverCarModel, + driverCarMake, + driverLicensePlate, + driverName = ''; + Future getUpdatedRideForDriverApply(String rideId) async { + // حماية مبدئية: إذا كان المعرف غير صالح لا تكمل + if (rideId == 'yet' || rideId.isEmpty) return; + + try { + final res = await CRUD().get( + link: "${AppLink.server}/ride/rides/getRideOrderID.php", + payload: {'passengerID': box.read(BoxName.passengerID).toString()}); + + if (res != 'failure') { + var response = jsonDecode(res); + Log.print('getUpdatedRideForDriverApply Response: $response'); + + // [هام] التحقق من أن data عبارة عن Map وليست false أو null + // هذا يمنع الخطأ: Class 'bool' has no instance method '[]' + if (response['status'] == 'success' && + response['data'] != null && + response['data'] is Map) { + var data = response['data']; + + // استخدام ?.toString() ?? '' للحماية من القيم الفارغة (Null Safety) + driverId = data['driver_id']?.toString() ?? ''; + driverPhone = data['phone']?.toString() ?? ''; + driverCarMake = data['make']?.toString() ?? ''; + model = data['model']?.toString() ?? ''; + colorHex = data['color_hex']?.toString() ?? ''; + carColor = data['color']?.toString() ?? ''; + make = data['make']?.toString() ?? ''; + licensePlate = data['car_plate']?.toString() ?? ''; + + // دمج الاسم الأول والأخير للراكب + String firstName = data['passengerName']?.toString() ?? ''; + String lastName = data['last_name']?.toString() ?? ''; + passengerName = + lastName.isNotEmpty ? "$firstName $lastName" : firstName; + + driverName = data['driverName']?.toString() ?? ''; + + // [هام] التوكن ضروري للإشعارات + driverToken = data['token']?.toString() ?? ''; + + carYear = data['year']?.toString() ?? ''; + driverRate = data['ratingDriver']?.toString() ?? '5.0'; + + update(); // تحديث الواجهة بالبيانات الجديدة + } else { + Log.print( + "Warning: Ride data not found or invalid (data is false/null)"); + // اختياري: يمكنك هنا التعامل مع حالة عدم العثور على السائق بعد + } + } + } catch (e) { + Log.print("Error in getUpdatedRideForDriverApply: $e"); + } + } + + late LatLng currentDriverLocation; + late double headingList; + + // Future getCarsLocationByPassengerAndReloadMarker() async { + // if (statusRide == 'wait') { + // carsLocationByPassenger = []; + // LatLngBounds bounds = calculateBounds( + // passengerLocation.latitude, passengerLocation.longitude, 7000); + // var res; + // if (box.read(BoxName.carType) == 'Lady') { + // res = await CRUD() + // .get(link: AppLink.getFemalDriverLocationByPassenger, payload: { + // 'southwestLat': bounds.southwest.latitude.toString(), + // 'southwestLon': bounds.southwest.longitude.toString(), + // 'northeastLat': bounds.northeast.latitude.toString(), + // 'northeastLon': bounds.northeast.longitude.toString(), + // }); + // } else if (box.read(BoxName.carType) == 'Speed') { + // res = await CRUD().get( + // link: AppLink.getCarsLocationByPassengerSpeed, + // payload: { + // 'southwestLat': bounds.southwest.latitude.toString(), + // 'southwestLon': bounds.southwest.longitude.toString(), + // 'northeastLat': bounds.northeast.latitude.toString(), + // 'northeastLon': bounds.northeast.longitude.toString(), + // }, + // ); + // } else if (box.read(BoxName.carType) == 'Delivery') { + // res = await CRUD().get( + // link: AppLink.getCarsLocationByPassengerDelivery, + // payload: { + // 'southwestLat': bounds.southwest.latitude.toString(), + // 'southwestLon': bounds.southwest.longitude.toString(), + // 'northeastLat': bounds.northeast.latitude.toString(), + // 'northeastLon': bounds.northeast.longitude.toString(), + // }, + // ); + // } else { + // res = await CRUD() + // .get(link: AppLink.getCarsLocationByPassenger, payload: { + // 'southwestLat': bounds.southwest.latitude.toString(), + // 'southwestLon': bounds.southwest.longitude.toString(), + // 'northeastLat': bounds.northeast.latitude.toString(), + // 'northeastLon': bounds.northeast.longitude.toString(), + // }); + // } + // if (res == 'failure') { + // noCarString = true; + // dataCarsLocationByPassenger = res; + // update(); + // } else { + // // Get.snackbar('no car', 'message'); + // noCarString = false; + // dataCarsLocationByPassenger = jsonDecode(res); + // // if (dataCarsLocationByPassenger.length > carsOrder) { + // driverId = dataCarsLocationByPassenger['message'][carsOrder] + // ['driver_id'] + // .toString(); + // gender = dataCarsLocationByPassenger['message'][carsOrder]['gender'] + // .toString(); + // // } + + // carsLocationByPassenger.clear(); // Clear existing markers + + // // late LatLng lastDriverLocation; // Initialize a variable for last location + + // for (var i = 0; + // i < dataCarsLocationByPassenger['message'].length; + // i++) { + // var json = dataCarsLocationByPassenger['message'][i]; + // // CarLocationModel model = CarLocationModel.fromJson(json); + // if (carLocationsModels.length < i + 1) { + // // carLocationsModels.add(model); + // markers.add( + // Marker( + // markerId: MarkerId(json['latitude']), + // position: LatLng( + // double.parse(json['latitude']), + // double.parse(json['longitude']), + // ), + // rotation: double.parse(json['heading']), + // icon: json['model'].toString().contains('دراجة') + // ? motoIcon + // : json['gender'] == 'Male'.tr + // ? carIcon + // : ladyIcon, + // ), + // ); + // driversToken.add(json['token']); + // // driversToken = json['token']; + // } else { + // // carLocationsModels[i] = model; + // markers[i] = Marker( + // markerId: MarkerId(json['latitude']), + // position: LatLng( + // double.parse(json['latitude']), + // double.parse(json['longitude']), + // ), + // rotation: double.parse(json['heading']), + // icon: json['model'].contains('دراجة') + // ? motoIcon + // : json['gender'] == 'Male'.tr + // ? carIcon + // : ladyIcon, + // ); + // // driversToken = json['token']; + // driversToken.add(json['token']); + // } + // } + // } + + // update(); + // } + // } + + Map _animationTimers = {}; + final int updateIntervalMs = 100; // Update every 100ms + final double minMovementThreshold = + 10; // Minimum movement in meters to trigger update + Future getCarForFirstConfirm(String carType) async { + bool foundCars = false; + int attempt = 0; + + // Set up the periodic timer + Timer? timer = Timer.periodic(const Duration(seconds: 4), (Timer t) async { + // Attempt to get car location + foundCars = await getCarsLocationByPassengerAndReloadMarker( + carType, attempt * 2000); + Log.print('foundCars: $foundCars'); + + if (foundCars) { + // If cars are found, cancel the timer and exit the search + t.cancel(); + } else if (attempt >= 4) { + // After 4 attempts, stop the search + t.cancel(); + + // No cars found after 4 attempts + // MyDialog().getDialog( + // "No Car or Driver Found in your area.".tr, + // "No Car or Driver Found in your area.".tr, + // () { + // Get.back(); + // }, + // ); + if (!foundCars) { + noCarString = true; + dataCarsLocationByPassenger = 'failure'; + } + + update(); + } + + attempt++; // Increment attempt + }); + } + + void startCarLocationSearch(String carType) { + int searchInterval = 5; // Interval in seconds + Log.print('searchInterval: $searchInterval'); + int boundIncreaseStep = 2500; // Initial bounds in meters + Log.print('boundIncreaseStep: $boundIncreaseStep'); + int maxAttempts = 3; // Maximum attempts to increase bounds + int maxBoundIncreaseStep = 6000; // Maximum bounds increase step + int attempt = 0; // Current attempt + Log.print('initial attempt: $attempt'); + + Timer.periodic(Duration(seconds: searchInterval), (Timer timer) async { + Log.print('Current attempt: $attempt'); // Log current attempt + bool foundCars = false; + if (attempt >= maxAttempts) { + timer.cancel(); + if (foundCars == false) { + noCarString = true; + // dataCarsLocationByPassenger = 'failure'; + update(); + } + + // return; + } else if (reloadStartApp == true) { + Log.print('reloadStartApp: $reloadStartApp'); + foundCars = await getCarsLocationByPassengerAndReloadMarker( + carType, boundIncreaseStep); + Log.print('foundCars: $foundCars'); + + if (foundCars) { + timer.cancel(); + } else { + attempt++; + if (reloadCount >= 3 || tick > 18 || reloadCount > 15) { + timer.cancel(); + } + Log.print( + 'Incrementing attempt to: $attempt'); // Log incremented attempt + + if (boundIncreaseStep < maxBoundIncreaseStep) { + boundIncreaseStep += 1500; // Increase bounds + if (boundIncreaseStep > maxBoundIncreaseStep) { + boundIncreaseStep = + maxBoundIncreaseStep; // Ensure it does not exceed the maximum + } + Log.print( + 'New boundIncreaseStep: $boundIncreaseStep'); // Log new bounds + } + } + } + }); + } + + // String getLocationArea(double latitude, double longitude) { + // final locations = box.read(BoxName.locationName) ?? []; + // for (final location in locations) { + // final locationData = location as Map; + + // // Debugging: Print location data + // // print('Location Data: $locationData'); + + // // Convert string values to double + // final minLatitude = + // double.tryParse(locationData['min_latitude'].toString()) ?? 0.0; + // final maxLatitude = + // double.tryParse(locationData['max_latitude'].toString()) ?? 0.0; + // final minLongitude = + // double.tryParse(locationData['min_longitude'].toString()) ?? 0.0; + // final maxLongitude = + // double.tryParse(locationData['max_longitude'].toString()) ?? 0.0; + + // // Debugging: Print converted values + // print( + // 'Converted Values: minLatitude=$minLatitude, maxLatitude=$maxLatitude, minLongitude=$minLongitude, maxLongitude=$maxLongitude'); + + // if (latitude >= minLatitude && + // latitude <= maxLatitude && + // longitude >= minLongitude && + // longitude <= maxLongitude) { + // box.write(BoxName.serverChosen, (locationData['server_link'])); + // // Log.print( + // // 'locationData----server_link: ${(locationData['server_link'])}'); + // return locationData['name']; + // } + // } + + // // Default case + // box.write(BoxName.serverChosen, AppLink.IntaleqSyriaServer); + // return 'Cairo'; + // } + String getLocationArea(double latitude, double longitude) { + LatLng passengerPoint = LatLng(latitude, longitude); + + // 1. فحص الأردن + if (isPointInPolygon(passengerPoint, CountryPolygons.jordanBoundary)) { + box.write(BoxName.countryCode, 'Jordan'); + // يمكنك تعيين AppLink.endPoint هنا إذا كان منطقك الداخلي لا يزال يعتمد عليه + box.write(BoxName.serverChosen, + AppLink.IntaleqSyriaServer); // مثال: اختر سيرفر سوريا للبيانات + return 'Jordan'; + } + + // 2. فحص سوريا + if (isPointInPolygon(passengerPoint, CountryPolygons.syriaBoundary)) { + box.write(BoxName.countryCode, 'Syria'); + box.write(BoxName.serverChosen, AppLink.IntaleqSyriaServer); + return 'Syria'; + } + + // 3. فحص مصر + if (isPointInPolygon(passengerPoint, CountryPolygons.egyptBoundary)) { + box.write(BoxName.countryCode, 'Egypt'); + box.write(BoxName.serverChosen, AppLink.IntaleqAlexandriaServer); + return 'Egypt'; + } + + // 4. الافتراضي (إذا كان خارج المناطق المخدومة) + box.write(BoxName.countryCode, 'Jordan'); + box.write(BoxName.serverChosen, AppLink.IntaleqSyriaServer); + return 'Unknown Location (Defaulting to Jordan)'; + } + + // if (latitude >= 29.918901 && + // latitude <= 30.198857 && + // longitude >= 31.215009 && + // longitude <= 31.532186) { + // box.write(BoxName.serverChosen, AppLink.IntaleqCairoServer); + + // return 'Cairo'; + // } else if (latitude >= 29.904975 && + // latitude <= 30.143372 && + // longitude >= 30.787030 && + // longitude <= 31.215009) { + // box.write(BoxName.serverChosen, AppLink.IntaleqGizaServer); + // return 'Giza'; + // } else if (latitude >= 30.396286 && + // latitude <= 31.654458 && + // longitude >= 29.041139 && + // longitude <= 32.626259) { + // box.write(BoxName.serverChosen, AppLink.IntaleqAlexandriaServer); + // return 'Alexandria'; + // } else { + // box.write(BoxName.serverChosen, AppLink.IntaleqCairoServer); + // return 'Cairo'; + // } + // } + + Future getCarsLocationByPassengerAndReloadMarker( + String carType, int boundIncreaseStep) async { + // if (statusRide == 'wait') { + carsLocationByPassenger = []; + LatLngBounds bounds = calculateBounds(passengerLocation.latitude, + passengerLocation.longitude, boundIncreaseStep.toDouble()); + var res; + // await getLocation(); + + switch (carType) { + case 'Lady': + res = await CRUD() + .get(link: AppLink.getFemalDriverLocationByPassenger, payload: { + 'southwestLat': bounds.southwest.latitude.toString(), + 'southwestLon': bounds.southwest.longitude.toString(), + 'northeastLat': bounds.northeast.latitude.toString(), + 'northeastLon': bounds.northeast.longitude.toString(), + }); + break; + case 'Comfort': + res = await CRUD() + .get(link: AppLink.getCarsLocationByPassengerComfort, payload: { + 'southwestLat': bounds.southwest.latitude.toString(), + 'southwestLon': bounds.southwest.longitude.toString(), + 'northeastLat': bounds.northeast.latitude.toString(), + 'northeastLon': bounds.northeast.longitude.toString(), + }); + break; + case 'Speed': + res = await CRUD() + .get(link: AppLink.getCarsLocationByPassengerSpeed, payload: { + 'southwestLat': bounds.southwest.latitude.toString(), + 'southwestLon': bounds.southwest.longitude.toString(), + 'northeastLat': bounds.northeast.latitude.toString(), + 'northeastLon': bounds.northeast.longitude.toString(), + }); + break; + case 'Scooter': + res = await CRUD() + .get(link: AppLink.getCarsLocationByPassengerDelivery, payload: { + 'southwestLat': bounds.southwest.latitude.toString(), + 'southwestLon': bounds.southwest.longitude.toString(), + 'northeastLat': bounds.northeast.latitude.toString(), + 'northeastLon': bounds.northeast.longitude.toString(), + }); + break; + case 'Awfar Car': + res = await CRUD() + .get(link: AppLink.getCarsLocationByPassengerBalash, payload: { + 'southwestLat': bounds.southwest.latitude.toString(), + 'southwestLon': bounds.southwest.longitude.toString(), + 'northeastLat': bounds.northeast.latitude.toString(), + 'northeastLon': bounds.northeast.longitude.toString(), + }); + break; + case 'Electric': + res = await CRUD() + .get(link: AppLink.getCarsLocationByPassengerElectric, payload: { + 'southwestLat': bounds.southwest.latitude.toString(), + 'southwestLon': bounds.southwest.longitude.toString(), + 'northeastLat': bounds.northeast.latitude.toString(), + 'northeastLon': bounds.northeast.longitude.toString(), + }); + break; + case 'Pink Bike': + res = await CRUD() + .get(link: AppLink.getCarsLocationByPassengerPinkBike, payload: { + 'southwestLat': bounds.southwest.latitude.toString(), + 'southwestLon': bounds.southwest.longitude.toString(), + 'northeastLat': bounds.northeast.latitude.toString(), + 'northeastLon': bounds.northeast.longitude.toString(), + }); + break; + case 'Van': + res = await CRUD() + .get(link: AppLink.getCarsLocationByPassengerVan, payload: { + 'southwestLat': bounds.southwest.latitude.toString(), + 'southwestLon': bounds.southwest.longitude.toString(), + 'northeastLat': bounds.northeast.latitude.toString(), + 'northeastLon': bounds.northeast.longitude.toString(), + }); + break; + default: + res = await CRUD() + .get(link: AppLink.getCarsLocationByPassenger, payload: { + 'southwestLat': bounds.southwest.latitude.toString(), + 'southwestLon': bounds.southwest.longitude.toString(), + 'northeastLat': bounds.northeast.latitude.toString(), + 'northeastLon': bounds.northeast.longitude.toString(), + }); + } + + if (res == 'failure') { + noCarString = true; + // dataCarsLocationByPassenger = 'failure'; + update(); + return false; + } else { + noCarString = false; + dataCarsLocationByPassenger = jsonDecode(res); + // Log.print( + // 'dataCarsLocationByPassenger:getCarsLocationByPassengerAndReloadMarker $dataCarsLocationByPassenger'); + + // Check if 'message' is present and not null + if (dataCarsLocationByPassenger != null && + dataCarsLocationByPassenger.isNotEmpty) { + print('carsOrder is in of bounds for message array'); + // return false; + // } + } else { + // Get.defaultDialog(title: 'No cars available '); + print('No cars available or message is null'); + return false; + } + + carsLocationByPassenger.clear(); // Clear existing markers + + for (var i = 0; i < dataCarsLocationByPassenger['message'].length; i++) { + var json = dataCarsLocationByPassenger['message'][i]; + _updateOrCreateMarker( + MarkerId(json['latitude']).toString(), + LatLng( + double.parse(json['latitude']), double.parse(json['longitude'])), + double.parse(json['heading']), + _getIconForCar(json), + ); + + driversToken.add((json['token'])); + } + + // Add fake car markers + _addFakeCarMarkers(passengerLocation, 1); + + update(); + return true; + } + // } + // return false; + } + + final List> fakeCarData = []; + + void _addFakeCarMarkers(LatLng center, int count) { + if (fakeCarData.isEmpty) { + Random random = Random(); + double radiusInKm = 2.5; // 3 km diameter, so 1.5 km radius + + for (int i = 0; i < count; i++) { + // Generate a random angle and distance within the circle + double angle = random.nextDouble() * 2 * pi; + double distance = sqrt(random.nextDouble()) * radiusInKm; + + // Convert distance to latitude and longitude offsets + double latOffset = (distance / 111.32); // 1 degree lat ≈ 111.32 km + double lonOffset = + (distance / (111.32 * cos(radians(center.latitude)))); + + // Calculate new position + double lat = center.latitude + (latOffset * cos(angle)); + double lon = center.longitude + (lonOffset * sin(angle)); + + double heading = random.nextDouble() * 360; + + fakeCarData.add({ + 'id': 'fake_$i', + 'latitude': lat, + 'longitude': lon, + 'heading': heading, + 'gender': 'Male', // Randomize gender + }); + } + } + + for (var carData in fakeCarData) { + _updateOrCreateMarker( + MarkerId(carData['id']).toString(), + LatLng(carData['latitude'], carData['longitude']), + carData['heading'], + _getIconForCar(carData), + ); + } + } + + BitmapDescriptor _getIconForCar(Map carData) { + if (carData['model'].toString().contains('دراجة')) { + return motoIcon; + } else if (carData['gender'] == 'Female') { + return ladyIcon; + } else { + return carIcon; + } + } + + void _updateOrCreateMarker(String markerId, LatLng newPosition, + double newHeading, BitmapDescriptor icon) { + Marker? existingMarker = markers.cast().firstWhere( + (m) => m?.markerId == MarkerId(markerId), + orElse: () => null, + ); + + if (existingMarker == null) { + markers.add(Marker( + markerId: MarkerId(markerId), + position: newPosition, + rotation: newHeading, + icon: icon, + )); + } else { + double distance = + _calculateDistance(existingMarker.position, newPosition); + if (distance >= minMovementThreshold) { + _smoothlyUpdateMarker(existingMarker, newPosition, newHeading, icon); + } + } + } + + double _calculateDistance(LatLng start, LatLng end) { + // Implement distance calculation (e.g., Haversine formula) + // For simplicity, this is a placeholder. Replace with actual implementation. + return 1000 * + sqrt(pow(start.latitude - end.latitude, 2) + + pow(start.longitude - end.longitude, 2)); + } + + String formatSyrianPhoneNumber(String phoneNumber) { + // Trim any whitespace from the input. + String trimmedPhone = phoneNumber.trim(); + + // If the number starts with '09', remove the leading '0' and prepend '963'. + if (trimmedPhone.startsWith('09')) { + return '963${trimmedPhone.substring(1)}'; + } + // If the number already starts with '963', return it as is to avoid duplication. + if (trimmedPhone.startsWith('963')) { + return trimmedPhone; + } + // For any other case (e.g., number starts with '9' without a '0'), + // prepend '963' to ensure the correct format. + return '963$trimmedPhone'; + } + + String generateTrackingLink(String rideId, String driverId) { + String cleanRideId = rideId.toString().trim(); + String cleanDriverId = driverId.toString().trim(); + + // الكلمة السرية للمطابقة مع السيرفر + const String secretSalt = "Intaleq_Secure_Track_2025"; + + // الدمج والتشفير + String rawString = "$cleanRideId$cleanDriverId$secretSalt"; + var bytes = utf8.encode(rawString); + var digest = md5.convert(bytes); + String token = digest.toString(); + + // الرابط المباشر لصفحة التتبع + return "https://intaleqapp.com/track/index.html?id=$cleanRideId&token=$token"; + } + + // 2. الدالة الرئيسية (تم تعديلها لإرسال واتساب بدلاً من الإشعارات) + Future shareTripWithFamily() async { + // التحقق أولاً: هل الرقم موجود؟ + String? storedPhone = box.read(BoxName.sosPhonePassenger); + + if (storedPhone == null) { + // --- (نفس المنطق القديم: فتح ديالوج لإضافة الرقم) --- + Get.defaultDialog( + title: 'Add SOS Phone'.tr, + titleStyle: AppStyle.title, + content: Form( + key: sosFormKey, + child: MyTextForm( + controller: sosPhonePassengerProfile, + label: 'insert sos phone'.tr, + hint: 'e.g. 0912345678'.tr, + type: TextInputType.phone, + ), + ), + confirm: MyElevatedButton( + title: 'Add SOS Phone'.tr, + onPressed: () async { + if (sosFormKey.currentState!.validate()) { + Get.back(); + // تنسيق الرقم + var numberPhone = + formatSyrianPhoneNumber(sosPhonePassengerProfile.text); + + // حفظ في السيرفر + await CRUD().post( + link: AppLink.updateprofile, + payload: { + 'id': box.read(BoxName.passengerID), + 'sosPhone': numberPhone, + }, + ); + + // حفظ محلياً + box.write(BoxName.sosPhonePassenger, numberPhone); + + // استدعاء الدالة مرة أخرى للمتابعة + shareTripWithFamily(); + } + })); + return; + } + + // --- (المنطق الجديد: إرسال واتساب مباشرة) --- + + // 1. التأكد من وجود بيانات للرحلة + if (rideId == 'yet' || driverId.isEmpty) { + Get.snackbar("Alert".tr, "Wait for the trip to start first".tr); + return; + } + + // 2. تنسيق الرقم + var numberPhone = formatSyrianPhoneNumber(storedPhone); + + // 3. توليد الرابط + String trackingLink = generateTrackingLink(rideId, driverId); + + // 4. تجهيز الرسالة (بالإنجليزية وجاهزة للترجمة) + // لاحظ: استخدمت المتغيرات الموجودة في الكنترولر (passengerName هنا عادة يحمل اسم السائق في الكنترولر الخاص بك حسب الكود السابق) + String message = """ +مرحباً، تابع رحلتي مباشرة على تطبيق انطلق 🚗 + +يمكنك تتبع مسار الرحلة من هنا: +$trackingLink + +السائق: $passengerName +السيارة: $model - $licensePlate +شكراً لاستخدامك انطلق! +""" + .tr; + + String messageEn = """Hello, follow my trip live on Intaleq 🚗 + +Track my ride here: +$trackingLink + +Driver: $passengerName +Car: $model - $licensePlate +Thank you for using Intaleq! +"""; + + // اختر الرسالة بناءً على اللغة المفضلة (مثال بسيط) + String userLanguage = box.read(BoxName.lang) ?? 'ar'; + message = (userLanguage == 'ar') ? message : messageEn; +// وضعنا .tr لكي تتمكن من ترجمتها للعربية في ملفات اللغة إذا أردت، أو تركها إنجليزية + + print("Sending WhatsApp to: $numberPhone"); + + // 5. فتح واتساب + launchCommunication('whatsapp', numberPhone, message); + + // (اختياري) حفظ أن التتبع مفعل لتغيير حالة الأيقونة في الواجهة + box.write(BoxName.parentTripSelected, true); + update(); + } + + Future getTokenForParent() async { + // 1. التحقق أولاً: هل الرقم موجود؟ + String? storedPhone = box.read(BoxName.sosPhonePassenger); + + if (storedPhone == null) { + // --- حالة الرقم غير موجود: نفتح الديالوج فقط --- + Get.defaultDialog( + title: 'Add SOS Phone'.tr, + titleStyle: AppStyle.title, + content: Form( + key: sosFormKey, + child: MyTextForm( + controller: sosPhonePassengerProfile, + label: 'insert sos phone'.tr, + hint: 'e.g. 0912345678'.tr, + type: TextInputType.phone, + ), + ), + confirm: MyElevatedButton( + title: 'Add SOS Phone'.tr, + onPressed: () async { + if (sosFormKey.currentState!.validate()) { + // إغلاق الديالوج الحالي + Get.back(); + + // تنسيق الرقم (تأكد أن هذا التنسيق يطابق ما تم تخزينه عند تسجيل الراكب) + var numberPhone = + formatSyrianPhoneNumber(sosPhonePassengerProfile.text); + + // حفظ الرقم في السيرفر (تحديث البروفايل) + await CRUD().post( + link: AppLink.updateprofile, + payload: { + 'id': box.read(BoxName.passengerID), + 'sosPhone': numberPhone, + }, + ); + + // حفظ الرقم محلياً + box.write(BoxName.sosPhonePassenger, numberPhone); + + // استدعاء الدالة مرة أخرى + getTokenForParent(); + } + })); + return; + } + generateTrackingLink(rideId, driverId); + // --- حالة الرقم موجود: نكمل التنفيذ --- + var numberPhone = formatSyrianPhoneNumber(storedPhone); + print("Searching for Parent Token with Phone: $numberPhone"); + + // استدعاء السكريبت (استخدم POST بدلاً من GET) + var res = await CRUD() + .post(link: AppLink.getTokenParent, payload: {'phone': numberPhone}); + + // التعامل مع الاستجابة + if (res is Map) { + handleResponse(res); + } else { + try { + // var jsonRes = jsonDecode(res); + handleResponse(res); + } catch (e) { + print("Error parsing response: $res"); + } + } + } + + void handleResponse(Map res) { + print("Handle Response: $res"); // للتأكد من دخول الدالة + + // الحالة 1: الرقم غير مسجل (Failure) + if (res['status'] == 'failure') { + // إذا كان هناك أي ديالوج تحميل مفتوح، نغلقه أولاً، لكن بحذر + if (Get.isDialogOpen ?? false) Get.back(); + + Get.defaultDialog( + title: "No user found".tr, // اختصرت العنوان ليظهر بشكل أفضل + titleStyle: AppStyle.title, + content: Column( + children: [ + Text( + "No passenger found for the given phone number".tr, + style: AppStyle.title, // غيرت الستايل ليكون أصغر قليلاً + textAlign: TextAlign.center, + ), + const SizedBox(height: 10), + Text( + "Send Intaleq app to him".tr, + style: AppStyle.title + .copyWith(color: AppColor.greenColor, fontSize: 14), + textAlign: TextAlign.center, + ) + ], + ), + confirm: MyElevatedButton( + title: 'Send Invite'.tr, + onPressed: () { + Get.back(); // إغلاق الديالوج + + var rawPhone = box.read(BoxName.sosPhonePassenger); + // تأكد أن rawPhone ليس null + if (rawPhone == null) return; + + var phone = formatSyrianPhoneNumber(rawPhone); + + // تصحيح نص الرسالة + var message = '''Dear Friend, + +🚀 I have just started an exciting trip on Intaleq! +Download the app to track my ride: + +👉 Android: https://play.google.com/store/apps/details?id=com.Intaleq.intaleq&hl=en-US +👉 iOS: https://apps.apple.com/st/app/intaleq-rider/id6748075179 + +See you there! +Intaleq Team'''; + + launchCommunication('whatsapp', phone, message); + }), + cancel: MyElevatedButton( + title: 'Cancel'.tr, + onPressed: () { + Get.back(); + })); + } + // الحالة 2: نجاح (Success) + else if (res['status'] == 'success') { + // إغلاق أي ديالوج سابق (مثل Loading) + if (Get.isDialogOpen ?? false) Get.back(); + + Get.snackbar("Success".tr, "The invitation was sent successfully".tr, + backgroundColor: AppColor.greenColor, colorText: Colors.white); + + List tokensData = res['data']; + + for (var device in tokensData) { + String tokenParent = device['token']; + + NotificationService.sendNotification( + category: "Trip Monitoring", + target: tokenParent, + title: "Trip Monitoring".tr, + body: "Click to track the trip".tr, + isTopic: false, + tone: 'tone1', + driverList: [rideId, driverId], + ); + // حفظ آخر توكن + box.write(BoxName.tokenParent, tokenParent); + } + box.write(BoxName.parentTripSelected, true); + } + } + + // Function to check if the point is inside the polygon + bool isPointInPolygon(LatLng point, List polygon) { + int intersections = 0; + for (int i = 0; i < polygon.length; i++) { + LatLng vertex1 = polygon[i]; + LatLng vertex2 = + polygon[(i + 1) % polygon.length]; // Loop back to the start + + if (_rayIntersectsSegment(point, vertex1, vertex2)) { + intersections++; + } + } + + // If the number of intersections is odd, the point is inside + return intersections % 2 != 0; + } + +// Helper function to check if a ray from the point intersects with a polygon segment + bool _rayIntersectsSegment(LatLng point, LatLng vertex1, LatLng vertex2) { + double px = point.longitude; + double py = point.latitude; + + double v1x = vertex1.longitude; + double v1y = vertex1.latitude; + double v2x = vertex2.longitude; + double v2y = vertex2.latitude; + + // Check if the point is outside the vertical bounds of the segment + if ((py < v1y && py < v2y) || (py > v1y && py > v2y)) { + return false; + } + + // Calculate the intersection of the ray and the segment + double intersectX = v1x + (py - v1y) * (v2x - v1x) / (v2y - v1y); + + // Check if the intersection is to the right of the point + return intersectX > px; + } + + bool isInUniversity = false; +// Function to check if the passenger is in any university polygon + // Function to check if the passenger is in any university polygon and return the university name + String checkPassengerLocation(LatLng passengerLocation, + List> universityPolygons, List universityNames) { + for (int i = 0; i < universityPolygons.length; i++) { + if (isPointInPolygon(passengerLocation, universityPolygons[i])) { + isInUniversity = true; + return "Passenger is in ${universityNames[i]}"; + } + } + return "Passenger is not in any university"; + } + + String passengerLocationStringUnvirsity = 'unKnown'; + void getPassengerLocationUniversity() { + // Check if the passenger is inside any of the university polygons and get the university name + passengerLocationStringUnvirsity = checkPassengerLocation( + passengerLocation, + UniversitiesPolygons.universityPolygons, + UniversitiesPolygons.universityNames, + ); + if (passengerLocationStringUnvirsity != 'unKnown') { + // Get.snackbar('you are in $passengerLocationStringUnvirsity', ""); + } + print(passengerLocationStringUnvirsity); + } + + var polygons = {}.obs; + + // Initialize polygons from UniversitiesPolygons + void _initializePolygons() { + List> universityPolygons = + UniversitiesPolygons.universityPolygons; + List universityNames = UniversitiesPolygons.universityNames; + + for (int i = 0; i < universityPolygons.length; i++) { + Polygon polygon = Polygon( + polygonId: PolygonId(universityNames[i]), + points: universityPolygons[i], + strokeColor: Colors.blueAccent, + fillColor: Colors.blueAccent.withOpacity(0.2), + strokeWidth: 2, + ); + polygons.add(polygon); // Add polygon to observable set + } + } + + LatLng driverLocationToPassenger = const LatLng(32, 35); + Future getDriverCarsLocationToPassengerAfterApplied() async { + // 1. الشرط الأمني: تتبع فقط إذا كانت الرحلة نشطة + bool isRideActive = (statusRide == 'Apply' || + statusRide == 'Arrived' || + statusRide == 'Begin' || + currentRideState.value == RideState.driverApplied || + currentRideState.value == RideState.driverArrived || + currentRideState.value == RideState.inProgress); + + if (!isRideActive || + statusRide == 'Finished' || + statusRide == 'Cancel' || + currentRideState.value == RideState.finished || + currentRideState.value == RideState.preCheckReview) { + return; + } + + // 2. منع التداخل (Blocking) + if (_isFetchingDriverLocation) return; + _isFetchingDriverLocation = true; + + try { + var res = await CRUD().get( + link: AppLink.getDriverCarsLocationToPassengerAfterApplied, + payload: {'driver_id': driverId}); + + if (res != 'failure') { + datadriverCarsLocationToPassengerAfterApplied = jsonDecode(res); + + if (datadriverCarsLocationToPassengerAfterApplied['message'] != null && + datadriverCarsLocationToPassengerAfterApplied['message'] + .isNotEmpty) { + var _data = + datadriverCarsLocationToPassengerAfterApplied['message'][0]; + + LatLng newDriverPos = LatLng( + double.parse(_data['latitude'].toString()), + double.parse(_data['longitude'].toString())); + + driverLocationToPassenger = newDriverPos; + driverCarsLocationToPassengerAfterApplied.add(newDriverPos); + + // [تعديل هام] تنظيف آمن: لا نحذف ماركر السائق الحالي + clearMarkersExceptStartEndAndDriver(); + + // تحريك الماركر + reloadMarkerDriverCarsLocationToPassengerAfterApplied(); + } + } + update(); + } catch (e) { + Log.print('Error fetching driver location: $e'); + } finally { + _isFetchingDriverLocation = false; + } + } + + Future runEvery30SecondsUntilConditionMet() async { + // Calculate the duration of the trip in minutes. + double tripDurationInMinutes = durationToPassenger / 5; + int loopCount = tripDurationInMinutes.ceil(); + // If the trip duration is less than or equal to 50 minutes, then break the loop. + for (var i = 0; i < loopCount; i++) { + // Wait for 50 seconds. + await Future.delayed(const Duration(seconds: 5)); + if (rideTimerBegin == true || statusRide == 'Apply') { + await getDriverCarsLocationToPassengerAfterApplied(); + reloadMarkerDriverCarsLocationToPassengerAfterApplied(); + } + } + } + + Future runWhenRideIsBegin() async { + // Calculate the duration of the trip in minutes. + double tripDurationInMinutes = durationToRide / 6; + int loopCount = tripDurationInMinutes.ceil(); + // If the trip duration is less than or equal to 50 minutes, then break the loop. + clearMarkersExceptStartEnd(); + for (var i = 0; i < loopCount; i++) { + // Wait for 50 seconds. + await Future.delayed(const Duration(seconds: 4)); + // if (rideTimerBegin == true && statusRide == 'Apply') { + await getDriverCarsLocationToPassengerAfterApplied(); + // } + reloadMarkerDriverCarsLocationToPassengerAfterApplied(); + } + } + + Timer? _timer; + // final int updateIntervalMs = 100; // Update every 100ms + // final double minMovementThreshold = + // 1.0; // Minimum movement in meters to trigger update + void clearMarkersExceptStartEndAndDriver() { + markers.removeWhere((marker) { + String id = marker.markerId.value; + // لا تحذف نقطة البداية + if (id == 'start') return false; + // لا تحذف نقطة النهاية + if (id == 'end') return false; + // لا تحذف السائق الحالي + if (id == currentDriverMarkerId) return false; + + // احذف أي شيء آخر (مثل السيارات التي ظهرت وقت البحث) + return true; + }); + + // ملاحظة: لا نستدعي update() هنا لأننا سنستدعيها في نهاية الدالة الرئيسية + } + + void clearMarkersExceptStartEnd() { + Set markersToRemove = markers + .where((marker) => + marker.markerId != const MarkerId("start") && + marker.markerId != const MarkerId("end")) + .toSet(); + + for (Marker marker in markersToRemove) { + markers.remove(marker); + } + update(); + } + + // 1. تعريف ID ثابت للسائق طوال الرحلة + String get currentDriverMarkerId => 'driver_marker_$driverId'; + + void reloadMarkerDriverCarsLocationToPassengerAfterApplied() { + if (datadriverCarsLocationToPassengerAfterApplied == null || + datadriverCarsLocationToPassengerAfterApplied['message'] == null || + datadriverCarsLocationToPassengerAfterApplied['message'].isEmpty) { + return; + } + + var driverData = + datadriverCarsLocationToPassengerAfterApplied['message'][0]; + + // جلب الإحداثيات الجديدة + LatLng newPosition = LatLng(double.parse(driverData['latitude'].toString()), + double.parse(driverData['longitude'].toString())); + + double newHeading = + double.tryParse(driverData['heading'].toString()) ?? 0.0; + + // تحديد الأيقونة + BitmapDescriptor icon; + if (driverData['model'].toString().contains('دراجة') || + driverData['make'].toString().contains('دراجة')) { + icon = motoIcon; + } else if (driverData['gender'] == 'Female') { + icon = ladyIcon; + } else { + icon = carIcon; + } + + // 2. البحث عن الماركر القديم وتحديثه أو إنشاء جديد + final MarkerId markerId = MarkerId(currentDriverMarkerId); + + // التحقق هل الماركر موجود مسبقاً؟ + final int existingIndex = markers.indexWhere((m) => m.markerId == markerId); + + if (existingIndex != -1) { + // الماركر موجود، نقوم بتحريكه (Animation) + Marker oldMarker = markers[existingIndex]; + _smoothlyUpdateMarker(oldMarker, newPosition, newHeading, icon); + } else { + // الماركر غير موجود، نقوم بإنشائه + markers.add(Marker( + markerId: markerId, + position: newPosition, + rotation: newHeading, + icon: icon, + anchor: const Offset(0.5, 0.5), // مهم لكي تدور السيارة حول مركزها + infoWindow: InfoWindow(title: driverName), + )); + update(); // تحديث الخريطة + } + } + + // التأكد من دالة التحريك السلس + void _smoothlyUpdateMarker(Marker oldMarker, LatLng newPosition, + double newHeading, BitmapDescriptor icon) { + // إذا كانت المسافة صغيرة جداً لا داعي للتحريك (لتقليل الوميض) + double distance = Geolocator.distanceBetween( + oldMarker.position.latitude, + oldMarker.position.longitude, + newPosition.latitude, + newPosition.longitude); + + if (distance < 2.0) return; + + final String markerIdKey = oldMarker.markerId.value; + + // إلغاء أي أنيميشن سابق لنفس الماركر + _animationTimers[markerIdKey]?.cancel(); + + int ticks = 0; + const int totalSteps = 20; // عدد الخطوات (نعومة الحركة) + const int stepDuration = 50; // سرعة التحديث بالميلي ثانية (المجموع 1 ثانية) + + double latStep = + (newPosition.latitude - oldMarker.position.latitude) / totalSteps; + double lngStep = + (newPosition.longitude - oldMarker.position.longitude) / totalSteps; + double headingStep = (newHeading - oldMarker.rotation) / totalSteps; + + // معالجة مشكلة الدوران (مثلاً الانتقال من 350 درجة إلى 10 درجات) + if (headingStep.abs() > 180) { + // منطق لضبط الدوران في الاتجاه الأقرب (اختياري) + } + + LatLng currentPos = oldMarker.position; + double currentHeading = oldMarker.rotation; + + _animationTimers[markerIdKey] = + Timer.periodic(const Duration(milliseconds: stepDuration), (timer) { + ticks++; + + currentPos = + LatLng(currentPos.latitude + latStep, currentPos.longitude + lngStep); + currentHeading += headingStep; + + // تحديث القائمة + int index = markers.indexWhere((m) => m.markerId.value == markerIdKey); + if (index != -1) { + markers[index] = oldMarker.copyWith( + positionParam: currentPos, + rotationParam: currentHeading, + iconParam: icon, // تحديث الأيقونة في حال تغيرت + ); + update(); // تحديث الواجهة في كل خطوة + } + + if (ticks >= totalSteps) { + timer.cancel(); + _animationTimers.remove(markerIdKey); + } + }); + } + + void _updateMarkerPosition( + LatLng newPosition, double newHeading, BitmapDescriptor icon) { + const String markerId = 'driverToPassengers'; + Marker? existingMarker = markers.cast().firstWhere( + (m) => m?.markerId == const MarkerId(markerId), + orElse: () => null, + ); + + if (existingMarker == null) { + // If the marker doesn't exist, create it at the new position + markers.add(Marker( + markerId: const MarkerId(markerId), + position: newPosition, + rotation: newHeading, + icon: icon, + )); + update(); + } else { + // If the marker exists, check if the movement is significant enough to update + double distance = + _calculateDistance(existingMarker.position, newPosition); + if (distance >= minMovementThreshold) { + _smoothlyUpdateMarker(existingMarker, newPosition, newHeading, icon); + } + } + + mapController?.animateCamera(CameraUpdate.newLatLng(newPosition)); + } + + @override + void onClose() { + print( + "--- MapPassengerController: Closing and cleaning up all resources. ---"); + + // 1. إلغاء المؤقتات الفردية (باستخدام ?. الآمن) + markerReloadingTimer?.cancel(); + markerReloadingTimer1?.cancel(); + markerReloadingTimer2?.cancel(); + timerToPassengerFromDriverAfterApplied?.cancel(); + _timer?.cancel(); + _masterTimer?.cancel(); // (أضف المؤقت الرئيسي) + _camThrottle?.cancel(); // (أضف مؤقت الكاميرا) + + // 2. إلغاء جميع المؤقتات في الخريطة (للتحريكات السلسة) + _animationTimers.forEach((key, timer) { + timer.cancel(); + }); + _animationTimers.clear(); + + // 3. إغلاق متحكمات البث (StreamControllers) لمنع تسريب الذاكرة + if (!_timerStreamController.isClosed) { + _timerStreamController.close(); + } + if (!_beginRideStreamController.isClosed) { + _beginRideStreamController.close(); + } + if (!_rideStatusStreamController.isClosed) { + _rideStatusStreamController.close(); + } + if (!timerController.isClosed) { + timerController.close(); + } + + // 4. التخلص من متحكم الخريطة (ممارسة جيدة) + mapController?.dispose(); + + print("--- Cleanup complete. ---"); + super.onClose(); + } + + restCounter() { + clearPlacesDestination(); + clearPolyline(); + data = []; + rideConfirm = false; + shouldFetch = false; + timeToPassengerFromDriverAfterApplied = 0; + update(); + } + +//driver behaviour + double calculateBearing(double lat1, double lon1, double lat2, double lon2) { + double deltaLon = lon2 - lon1; + double y = sin(deltaLon) * cos(lat2); + double x = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(deltaLon); + double bearing = atan2(y, x); + return (bearing * 180 / pi + 360) % 360; // تحويل إلى درجات + } + + void analyzeBehavior(Position currentPosition, List routePoints) { + double actualBearing = currentPosition.heading; // الاتجاه الفعلي من GPS + double expectedBearing = calculateBearing( + routePoints[0].latitude, + routePoints[0].longitude, + routePoints[1].latitude, + routePoints[1].longitude, + ); + + double bearingDifference = (expectedBearing - actualBearing).abs(); + if (bearingDifference > 30) { + print("⚠️ السائق انحرف عن المسار!"); + } + } + + void detectStops(Position currentPosition) { + if (currentPosition.speed < 0.5) { + print("🚦 السائق توقف في موقع غير متوقع!"); + } + } + + Future cancelRideAfterRejectFromAll() async { + clearPlacesDestination(); + clearPolyline(); + data = []; + await CRUD().post(link: AppLink.updateRides, payload: { + "id": rideId.toString(), // Convert to String + "status": 'notApplyFromAnyDriver' + }); + + CRUD().post(link: "${AppLink.endPoint}/ride/rides/update.php", payload: { + "id": rideId.toString(), // Convert to String + "status": 'notApplyFromAnyDriver' + }); + + rideConfirm = false; + statusRide == 'Cancel'; + isSearchingWindow = false; + shouldFetch = false; + isPassengerChosen = false; + isCashConfirmPageShown = false; + // totalStepDurations = 0; + isCashSelectedBeforeConfirmRide = false; + timeToPassengerFromDriverAfterApplied = 0; + changeCancelRidePageShow(); + remainingTime = 0; + + update(); + } + + Future cancelRide() async { + clearPlacesDestination(); + clearPolyline(); + data = []; + changeCancelRidePageShow(); + + if (rideId != 'yet') { + Log.print('cancelRide: 1'); + await NotificationService.sendNotification( + category: 'Cancel Trip', + target: driverToken.toString(), + title: 'Cancel Trip'.tr, + body: 'Cancel Trip'.tr, + isTopic: false, + tone: 'tone1', + driverList: [], + ); + await Future.wait([ + // CRUD().post( + // link: AppLink.updateRides, + // payload: {"id": rideId.toString(), "status": 'Cancel'}), + CRUD().post( + link: "${AppLink.server}/ride/rides/update.php", + payload: {"id": rideId.toString(), "status": 'Cancel'}), + CRUD().post( + link: AppLink.updateDriverOrder, + payload: {"order_id": rideId.toString(), "status": 'Cancel'}), + CRUD().post( + link: AppLink.updateWaitingTrip, + payload: {"id": rideId.toString(), "status": 'Cancel'}), + ]); + } + + // ---!! الإضافة الحاسمة لحل مشكلة "cancelled" !! --- + Log.print( + '[cancelRide] User cancelled. Setting state and stopping timers.'); + currentRideState.value = RideState.cancelled; // 1. تعيين الحالة + stopAllTimers(); // 2. إيقاف المؤقت الرئيسي + // --- نهاية الإضافة --- + + Get.offAll(() => const MapPagePassenger()); + } + + void changePickerShown() { + isPickerShown = !isPickerShown; + heightPickerContainer = isPickerShown == true ? 150 : 90; + update(); + } + + void changeHeightPointsPageForRider() { + isPointsPageForRider = !isPointsPageForRider; + heightPointsPageForRider = isPointsPageForRider == true ? Get.height : 0; + update(); + } + + getCoordinateFromMapWayPoints(int index) { + placesCoordinate[index] = newStartPointLocation.toString(); + update(); + } + // --- ابدأ الإضافة هنا --- + +// 1. قائمة لتخزين نقاط التوقف + List> waypoints = []; + +// 2. دالة لإضافة نقطة توقف جديدة + void addWaypoint(Map placeDetails) { + // يمكنك إضافة منطق للتحقق من عدد نقاط التوقف المسموح بها هنا + waypoints.add(placeDetails); + update(); // لتحديث الواجهة + // TODO: أضف هنا استدعاء دالة إعادة رسم المسار مع نقاط التوقف الجديدة + // getDirectionMapWithWaypoints(); + } + +// 3. دالة لحذف نقطة توقف + void removeWaypoint(int index) { + if (index >= 0 && index < waypoints.length) { + waypoints.removeAt(index); + update(); // لتحديث الواجهة + // TODO: أضف هنا استدعاء دالة إعادة رسم المسار بعد حذف النقطة + // getDirectionMapWithWaypoints(); + } + } + +// --- انتهى --- + + void changeMainBottomMenuMap() { + if (isWayPointStopsSheetUtilGetMap == true) { + changeWayPointSheet(); + } else { + isMainBottomMenuMap = !isMainBottomMenuMap; + mainBottomMenuMapHeight = + isMainBottomMenuMap == true ? Get.height * .22 : Get.height * .6; + isWayPointSheet = false; + if (heightMenuBool == true) { + getDrawerMenu(); + } + initilizeGetStorage(); + update(); + } + } + + void downPoints() { + if (Get.find().wayPoints.length < 2) { + isWayPointStopsSheetUtilGetMap = false; + isWayPointSheet = false; + wayPointSheetHeight = isWayPointStopsSheet ? Get.height * .45 : 0; + // changeWayPointStopsSheet(); + update(); + } + // changeWayPointStopsSheet(); + // isWayPointSheet = false; + update(); + } + + void changeWayPointSheet() { + isWayPointSheet = !isWayPointSheet; + wayPointSheetHeight = isWayPointSheet == false ? 0 : Get.height * .45; + // if (heightMenuBool == true) { + // getDrawerMenu(); + // } + update(); + } + + void changeWayPointStopsSheet() { + // int waypointsLength = Get.find().wayPoints.length; + + if (wayPointIndex > -1) { + isWayPointStopsSheet = true; + isWayPointStopsSheetUtilGetMap = true; + } + isWayPointStopsSheet = !isWayPointStopsSheet; + wayPointSheetHeight = isWayPointStopsSheet ? Get.height * .45 : 0; + // if (heightMenuBool == true) { + // getDrawerMenu(); + // } + update(); + } + + changeHeightPlaces() { + if (placesDestination.isEmpty) { + height = 0; + update(); + } + height = 150; + update(); + } + + changeHeightStartPlaces() { + if (placesStart.isEmpty) { + height = 0; + update(); + } + height = 150; + update(); + } + + changeHeightPlacesAll(int index) { + if (placeListResponseAll[index].isEmpty) { + height = 0; + update(); + } + height = 150; + update(); + } + + changeHeightPlaces1() { + if (wayPoint1.isEmpty) { + height = 0; + update(); + } + height = 150; + update(); + } + + changeHeightPlaces2() { + if (wayPoint2.isEmpty) { + height = 0; + update(); + } + height = 150; + update(); + } + + changeHeightPlaces3() { + if (wayPoint3.isEmpty) { + height = 0; + update(); + } + height = 150; + update(); + } + + changeHeightPlaces4() { + if (wayPoint4.isEmpty) { + height = 0; + update(); + } + height = 150; + update(); + } + + hidePlaces() { + height = 0; + + update(); + } + + /// تحويل نصف قطر بالكيلومتر إلى دلتا درجات عرض + + // double _haversineKm(double lat1, double lon1, double lat2, double lon2) { + // const R = 6371.0; // km + // final dLat = (lat2 - lat1) * math.pi / 180.0; + // final dLon = (lon2 - lon1) * math.pi / 180.0; + // final a = math.sin(dLat / 2) * math.sin(dLat / 2) + + // math.cos(lat1 * math.pi / 180.0) * + // math.cos(lat2 * math.pi / 180.0) * + // math.sin(dLon / 2) * + // math.sin(dLon / 2); + // final c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a)); + // return R * c; + // } + + /// تحويل نصف قطر بالكيلومتر إلى دلتا درجات عرض + // double _kmToLatDelta(double km) => km / 111.0; + + // /// تحويل نصف قطر بالكيلومتر إلى دلتا درجات طول (تعتمد على خط العرض) + // double _kmToLngDelta(double km, double atLat) => + // km / (111.320 * math.cos(atLat * math.pi / 180.0)).abs().clamp(1e-6, 1e9); + + /// حساب درجة التطابق النصي (كل كلمة تبدأ بها الاسم = 2 نقاط، يحتويها = 1 نقطة) + // double _relevanceScore(String name, String query) { + // final n = name.toLowerCase(); + // final parts = + // query.toLowerCase().split(RegExp(r'\s+')).where((p) => p.length >= 2); + // double s = 0.0; + // for (final p in parts) { + // if (n.startsWith(p)) { + // s += 2.0; + // } else if (n.contains(p)) { + // s += 1.0; + // } + // } + // return s; + // } +// الدالة الرئيسية لجلب الأماكن من السيرفر وترتيبها +// انسخ هذه الدوال والصقها داخل كلاس الكنترولر الخاص بك + +// ----------------------------------------------------------------- +// --== الدالة الرئيسية للبحث ==-- +// ----------------------------------------------------------------- + /// الدالة الرئيسية لجلب الأماكن من السيرفر وترتيبها +// انسخ هذه الدوال والصقها داخل كلاس الكنترولر الخاص بك + +// ----------------------------------------------------------------- +// --== الدالة الرئيسية للبحث ==-- +// ----------------------------------------------------------------- + /// الدالة الرئيسية لجلب الأماكن من السيرفر وترتيبها + Future getPlaces() async { + // افترض وجود `placeDestinationController` و `passengerLocation` و `CRUD()` معرفة في الكنترولر + final q = placeDestinationController.text.trim(); + if (q.isEmpty || q.length < 3) { + // يفضل عدم البحث قبل 3 أحرف + placesDestination = []; + update(); // افترض أنك تستخدم GetX أو أي State Management آخر + return; + } + + final lat = passengerLocation.latitude; + final lng = passengerLocation.longitude; + + // نصف قطر البحث بالكيلومتر + const radiusKm = 45.0; + + // حساب النطاق الجغرافي (Bounding Box) لإرساله للسيرفر + final latDelta = _kmToLatDelta(radiusKm); + final lngDelta = _kmToLngDelta(radiusKm, lat); + + final latMin = lat - latDelta; + final latMax = lat + latDelta; + final lngMin = lng - lngDelta; + final lngMax = lng + lngDelta; + + try { + // استدعاء الـ API (تأكد من أن AppLink.getPlacesSyria يشير للسكريبت الجديد) + final response = await CRUD().post( + link: AppLink.getPlacesSyria, + payload: { + 'query': q, + 'lat_min': latMin.toString(), + 'lat_max': latMax.toString(), + 'lng_min': lngMin.toString(), + 'lng_max': lngMax.toString(), + }, + ); + + // --- [تم الإصلاح هنا] --- + // معالجة الاستجابة من السيرفر بشكل يوافق {"status":"success", "message":[...]} + List list; + if (response is Map) { + if (response['status'] == 'success' && response['message'] is List) { + list = List.from(response['message'] as List); + } else if (response['status'] == 'failure') { + print('Server Error: ${response['message']}'); + return; + } else { + print('Unexpected Map shape from server'); + return; + } + } else if (response is List) { + // للتعامل مع الحالات التي قد يرجع فيها السيرفر قائمة مباشرة + list = List.from(response); + } else { + print('Unexpected response shape from server'); + return; + } + + // --- هنا يبدأ عمل فلاتر: الترتيب النهائي الدقيق --- + + // دالة مساعدة لاختيار أفضل اسم متاح + String _bestName(Map p) { + return (p['name_ar'] ?? p['name'] ?? p['name_en'] ?? '').toString(); + } + + // حساب المسافة والصلة والنقاط النهائية لكل نتيجة + for (final p in list) { + final plat = double.tryParse(p['latitude']?.toString() ?? '0.0') ?? 0.0; + final plng = + double.tryParse(p['longitude']?.toString() ?? '0.0') ?? 0.0; + + final distance = _haversineKm(lat, lng, plat, plng); + final relevance = _relevanceScore(_bestName(p), q); + + // معادلة الترتيب: (الأولوية للمسافة الأقرب) * (ثم الصلة الأعلى) + final score = (1.0 / (1.0 + distance)) * (1.0 + relevance); + + p['distanceKm'] = distance; + p['relevance'] = relevance; + p['score'] = score; + } + + // ترتيب القائمة النهائية حسب النقاط (الأعلى أولاً) + list.sort((a, b) { + final sa = (a['score'] ?? 0.0) as double; + final sb = (b['score'] ?? 0.0) as double; + return sb.compareTo(sa); + }); + + placesDestination = list; + print('Updated places: $placesDestination'); + update(); + } catch (e) { + print('Exception in getPlaces: $e'); + } + } + +// ----------------------------------------------------------------- +// --== دوال مساعدة ==-- +// ----------------------------------------------------------------- + + /// تحسب المسافة بين نقطتين بالكيلومتر (معادلة هافرساين) + double _haversineKm(double lat1, double lon1, double lat2, double lon2) { + const R = 6371.0; // نصف قطر الأرض بالكيلومتر + final dLat = (lat2 - lat1) * (pi / 180.0); + final dLon = (lon2 - lon1) * (pi / 180.0); + final rLat1 = lat1 * (pi / 180.0); + final rLat2 = lat2 * (pi / 180.0); + + final a = sin(dLat / 2) * sin(dLat / 2) + + cos(rLat1) * cos(rLat2) * sin(dLon / 2) * sin(dLon / 2); + final c = 2 * atan2(sqrt(a), sqrt(1 - a)); + return R * c; + } + + /// تحسب درجة تطابق بسيطة بين اسم المكان وكلمة البحث + double _relevanceScore(String placeName, String query) { + if (placeName.isEmpty || query.isEmpty) return 0.0; + final pLower = placeName.toLowerCase(); + final qLower = query.toLowerCase(); + if (pLower.startsWith(qLower)) return 1.0; // تطابق كامل في البداية + if (pLower.contains(qLower)) return 0.5; // تحتوي على الكلمة + return 0.0; + } + + /// تحويل كيلومتر إلى فرق درجات لخط العرض + double _kmToLatDelta(double km) { + const kmInDegree = 111.32; + return km / kmInDegree; + } + + /// تحويل كيلومتر إلى فرق درجات لخط الطول (يعتمد على خط العرض الحالي) + double _kmToLngDelta(double km, double latitude) { + const kmInDegree = 111.32; + return km / (kmInDegree * cos(latitude * (pi / 180.0))); + } + + // var languageCode; + + // // تحديد اللغة حسب الإدخال + // if (RegExp(r'[a-zA-Z]').hasMatch(placeDestinationController.text)) { + // languageCode = 'en'; + // } else { + // languageCode = 'ar'; + // } + + // final bool isTextEmpty = placeDestinationController.text.trim().isEmpty; + // var key = Platform.isAndroid ? AK.mapAPIKEY : AK.mapAPIKEYIOS; + // final Uri url = Uri.parse( + // isTextEmpty + // ? 'https://places.googleapis.com/v1/places:searchNearby?key=$key' + // : 'https://places.googleapis.com/v1/places:searchText?key=$key', + // ); + // Log.print('url: $url'); + // // بناء الجسم حسب نوع الطلب + // final body = isTextEmpty + // ? jsonEncode({ + // "languageCode": languageCode, + // "locationRestriction": { + // "circle": { + // "center": { + // "latitude": passengerLocation.latitude, + // "longitude": passengerLocation.longitude + // }, + // "radius": 40000 // 40 كم + // } + // }, + // "maxResultCount": 10 + // }) + // : jsonEncode({ + // "textQuery": placeDestinationController.text, + // "languageCode": languageCode, + // "maxResultCount": 10, + // "locationBias": { + // "circle": { + // "center": { + // "latitude": passengerLocation.latitude, + // "longitude": passengerLocation.longitude + // }, + // "radius": 40000 + // } + // } + // }); + + // final headers = { + // 'Content-Type': 'application/json', + // 'X-Goog-Api-Key': AK.mapAPIKEY, + // 'X-Goog-FieldMask': + // 'places.displayName,places.formattedAddress,places.location' + // }; + + // try { + // final response = await http.post(url, headers: headers, body: body); + // print('response: ${response.statusCode} - ${response.body}'); + + // if (response.statusCode == 200) { + // final data = jsonDecode(response.body); + // placesDestination = data['places'] ?? []; + // update(); + // } else { + // print('Error: ${response.statusCode} - ${response.reasonPhrase}'); + // } + // } catch (e) { + // print('Exception: $e'); + // } + // } + + getAIKey(String key) async { + var res = + await CRUD().get(link: AppLink.getapiKey, payload: {"keyName": key}); + if (res != 'failure') { + var d = jsonDecode(res)['message']; + return d[key].toString(); + } else {} + } + + // Future getPlaces() async { + // var languageCode; + + // // Check if `placeDestinationController.text` contains English characters + // if (RegExp(r'[a-zA-Z]').hasMatch(placeDestinationController.text)) { + // languageCode = 'en'; + // } else { + // languageCode = 'ar'; + // } + + // // Construct the URL + // var url = Uri.parse( + // '${AppLink.searcMaps}?q=${Uri.encodeQueryComponent(placeDestinationController.text)}&limit=10&in=circle:${passengerLocation.latitude},${passengerLocation.longitude};r=50000&lang=$languageCode&apiKey=$k', + // ); + + // // Log the URL for debugging + // print(url); + // // box.remove(BoxName.placesDestination); + // try { + // // Make the API request + // var response = await CRUD().getHereMap( + // link: url.toString(), + // ); + + // // Log the response for debugging + // // Log.print('response: ${response}'); + + // // Check if the response is valid + // if (response != null && response['items'] != null) { + // placesDestination = response['items']; + // // Log.print('placesDestination: ${placesDestination}'); + + // placesDestination = response['items']; + // // box.write(BoxName.placesDestination, placesDestination); + // for (var i = 0; i < placesDestination.length; i++) { + // var res = placesDestination[i]; + + // // Extract fields with null safety + // var title = res['title']?.toString() ?? 'Unknown Place'; + // var position = res['position']; + // var address = res['address']?['label'] ?? 'Unknown Address'; + // if (position == null) { + // Log.print('Position is null for place: $title'); + // continue; // Skip this place and continue with the next one + // } + + // String latitude = position['lat']?.toString() ?? '0.0'; + // String longitude = position['lng']?.toString() ?? '0.0'; + + // try { + // await savePlaceToServer(latitude, longitude, title, address); + // // Log.print('Place saved successfully: $title'); + // } catch (e) { + // // Log.print('Failed to save place: $e'); + // } + // } // todo save key in env then get key and use it + // } else { + // placesDestination = []; + // } + // } catch (e) { + // // Handle any errors that occur during the API request + // Log.print('Error fetching places: $e'); + // placesDestination = []; + // } + + // // Notify listeners that the state has changed + // update(); + // } + + Future getPlacesStart() async { + // افترض وجود `placeDestinationController` و `passengerLocation` و `CRUD()` معرفة في الكنترولر + final q = placeStartController.text.trim(); + if (q.isEmpty || q.length < 3) { + // يفضل عدم البحث قبل 3 أحرف + placesStart = []; + update(); // افترض أنك تستخدم GetX أو أي State Management آخر + return; + } + + final lat = passengerLocation.latitude; + final lng = passengerLocation.longitude; + + // نصف قطر البحث بالكيلومتر + const radiusKm = 200.0; + + // حساب النطاق الجغرافي (Bounding Box) لإرساله للسيرفر + final latDelta = _kmToLatDelta(radiusKm); + final lngDelta = _kmToLngDelta(radiusKm, lat); + + final latMin = lat - latDelta; + final latMax = lat + latDelta; + final lngMin = lng - lngDelta; + final lngMax = lng + lngDelta; + + try { + // استدعاء الـ API (تأكد من أن AppLink.getPlacesSyria يشير للسكريبت الجديد) + final response = await CRUD().post( + link: AppLink.getPlacesSyria, + payload: { + 'query': q, + 'lat_min': latMin.toString(), + 'lat_max': latMax.toString(), + 'lng_min': lngMin.toString(), + 'lng_max': lngMax.toString(), + }, + ); + + // --- [تم الإصلاح هنا] --- + // معالجة الاستجابة من السيرفر بشكل يوافق {"status":"success", "message":[...]} + List list; + if (response is Map) { + if (response['status'] == 'success' && response['message'] is List) { + list = List.from(response['message'] as List); + } else if (response['status'] == 'failure') { + print('Server Error: ${response['message']}'); + return; + } else { + print('Unexpected Map shape from server'); + return; + } + } else if (response is List) { + // للتعامل مع الحالات التي قد يرجع فيها السيرفر قائمة مباشرة + list = List.from(response); + } else { + print('Unexpected response shape from server'); + return; + } + + // --- هنا يبدأ عمل فلاتر: الترتيب النهائي الدقيق --- + + // دالة مساعدة لاختيار أفضل اسم متاح + String _bestName(Map p) { + return (p['name_ar'] ?? p['name'] ?? p['name_en'] ?? '').toString(); + } + + // حساب المسافة والصلة والنقاط النهائية لكل نتيجة + for (final p in list) { + final plat = double.tryParse(p['latitude']?.toString() ?? '0.0') ?? 0.0; + final plng = + double.tryParse(p['longitude']?.toString() ?? '0.0') ?? 0.0; + + final distance = _haversineKm(lat, lng, plat, plng); + final relevance = _relevanceScore(_bestName(p), q); + + // معادلة الترتيب: (الأولوية للمسافة الأقرب) * (ثم الصلة الأعلى) + final score = (1.0 / (1.0 + distance)) * (1.0 + relevance); + + p['distanceKm'] = distance; + p['relevance'] = relevance; + p['score'] = score; + } + + // ترتيب القائمة النهائية حسب النقاط (الأعلى أولاً) + list.sort((a, b) { + final sa = (a['score'] ?? 0.0) as double; + final sb = (b['score'] ?? 0.0) as double; + return sb.compareTo(sa); + }); + + placesStart = list; + print('Updated places: $placesDestination'); + update(); + } catch (e) { + print('Exception in getPlaces: $e'); + } + } + + Future getPlacesListsWayPoint(int index) async { + var languageCode = wayPoint0Controller.text; + + // Regular expression to check for English alphabet characters + final englishRegex = RegExp(r'[a-zA-Z]'); + + // Check if text contains English characters + if (englishRegex.hasMatch(languageCode)) { + languageCode = 'en'; + } else { + languageCode = 'ar'; + } + + var url = + '${AppLink.googleMapsLink}place/nearbysearch/json?keyword=${wayPoint0Controller.text}&location=${passengerLocation.latitude},${passengerLocation.longitude}&radius=250000&language=$languageCode&key=${AK.mapAPIKEY.toString()}'; + + try { + var response = await CRUD().getGoogleApi(link: url, payload: {}); + + if (response != null && response['results'] != null) { + wayPoint0 = response['results']; + placeListResponseAll[index] = response['results']; + update(); + } else { + print('Error: Invalid response from Google Places API'); + } + } catch (e) { + print('Error fetching places: $e'); + } + } + +// داخل MapPassengerController + bool lowPerf = false; + Timer? _camThrottle; + DateTime _lastUiUpdate = DateTime.fromMillisecondsSinceEpoch(0); + + Future detectPerfMode() async { + try { + if (GetPlatform.isAndroid) { + final info = await DeviceInfoPlugin().androidInfo; + final sdk = info.version.sdkInt ?? 0; + final ram = info.availableRamSize ?? 0; + lowPerf = (sdk < 28) || (ram > 0 && ram < 3 * 1024 * 1024 * 1024); + } else { + lowPerf = false; + } + } catch (_) { + lowPerf = false; + } + update(); + } + +// تحديث الكاميرا بثروتل + void onCameraMoveThrottled(CameraPosition pos) { + if (_camThrottle?.isActive ?? false) return; + _camThrottle = Timer(const Duration(milliseconds: 160), () { + // ضع فقط المنطق الضروري هنا لتقليل الحمل + int waypointsLength = Get.find().wayPoints.length; + int index = wayPointIndex; + if (waypointsLength > 0) { + placesCoordinate[index] = + '${pos.target.latitude},${pos.target.longitude}'; + } + newMyLocation = pos.target; + }); + } + +// تهيئة polylines خفيفة (استدعها بعد جلب المسار) + Set polyLinesLight = {}; + List simplifyPolyline(List pts, double epsilonMeters) { + if (pts.length <= 2) return pts; + double _perpDist(LatLng p, LatLng a, LatLng b) { + // مسافة عمودية تقريبية بالأمتار + double _toRad(double d) => d * math.pi / 180.0; + // تحويل بسيط للمتر (تقريبي) + final x1 = a.longitude, y1 = a.latitude; + final x2 = b.longitude, y2 = b.latitude; + final x0 = p.longitude, y0 = p.latitude; + final num = ((y2 - y1) * x0 - (x2 - x1) * y0 + x2 * y1 - y2 * x1).abs(); + final den = math.sqrt(math.pow(y2 - y1, 2) + math.pow(x2 - x1, 2)); + // تحويل درجات -> أمتار تقريبي (1 درجة ~ 111km) + final degDist = den == 0 ? 0 : num / den; + return degDist * 111000; // متر + } + + List dp(int start, int end) { + double maxDist = 0; + int index = start; + for (int i = start + 1; i < end; i++) { + final d = _perpDist(pts[i], pts[start], pts[end]); + if (d > maxDist) { + maxDist = d; + index = i; + } + } + if (maxDist > epsilonMeters) { + final r1 = dp(start, index); + final r2 = dp(index, end); + return [...r1.sublist(0, r1.length - 1), ...r2]; + } else { + return [pts[start], pts[end]]; + } + } + + return dp(0, pts.length - 1); + } + + void buildLightPolylines(List originalPoints) { + final simplified = simplifyPolyline(originalPoints, lowPerf ? 12 : 3); + polyLinesLight = { + Polyline( + polylineId: const PolylineId('route_light'), + points: simplified, + width: lowPerf ? 4 : 6, + geodesic: true, + color: AppColor.primaryColor, + endCap: Cap.roundCap, + startCap: Cap.roundCap, + jointType: JointType.round, + ), + }; + update(); + } + + Future savePlaceToServer( + String latitude, String longitude, String name, String rate) async { + var data = { + 'latitude': latitude, + 'longitude': longitude, + 'name': name, + 'rate': rate, + }; + + try { + CRUD().post( + link: AppLink.savePlacesServer, + payload: data, + ); + } catch (e) { + print('Error: $e'); + } + } + // Future getPlacesListsWayPoint(int index) async { + // var url = + // '${AppLink.googleMapsLink}place/nearbysearch/json?keyword=${wayPoint0Controller.text}&location=${passengerLocation.latitude},${passengerLocation.longitude}&radius=80000&language=${}&key=${AK.mapAPIKEY.toString()}'; + + // var response = await CRUD().getGoogleApi(link: url, payload: {}); + + // wayPoint0 = response['results']; + // placeListResponseAll[index] = response['results']; + // update(); + // } + + LatLng fromString(String location) { + List parts = location.split(','); + double lat = double.parse(parts[0]); + double lng = double.parse(parts[1]); + return LatLng(lat, lng); + } + + void clearPolyline() { + polyLines = []; + polylineCoordinates.clear(); + // polylineCoordinates = []; + polylineCoordinatesPointsAll[0].clear(); + polylineCoordinatesPointsAll[1].clear(); + polylineCoordinatesPointsAll[2].clear(); + polylineCoordinatesPointsAll[3].clear(); + polylineCoordinatesPointsAll[4].clear(); + isMarkersShown = false; + update(); + } + + void addCustomPicker() { + ImageConfiguration config = ImageConfiguration( + size: const Size(30, 30), devicePixelRatio: Get.pixelRatio + // scale: 1.0, + ); + BitmapDescriptor.asset( + config, + 'assets/images/picker.png', + // mipmaps: false, + ).then((value) { + markerIcon = value; + update(); + }); + } + + void addCustomStartIcon() async { +// Create the marker with the resized image + + ImageConfiguration config = ImageConfiguration( + size: const Size(30, 30), devicePixelRatio: Get.pixelRatio); + BitmapDescriptor.asset( + config, + 'assets/images/A.png', + // mipmaps: false, + ).then((value) { + startIcon = value; + update(); + }); + } + + void addCustomEndIcon() { + ImageConfiguration config = ImageConfiguration( + size: const Size(30, 30), devicePixelRatio: Get.pixelRatio); + BitmapDescriptor.asset( + config, + 'assets/images/b.png', + // mipmaps: false, + ).then((value) { + endIcon = value; + update(); + }); + } + + void addCustomCarIcon() { + ImageConfiguration config = ImageConfiguration( + size: const Size(30, 35), devicePixelRatio: Get.pixelRatio); + BitmapDescriptor.asset( + config, + 'assets/images/car.png', + // mipmaps: false, + ).then((value) { + carIcon = value; + update(); + }); + } + + void addCustomMotoIcon() { + ImageConfiguration config = ImageConfiguration( + size: const Size(30, 30), devicePixelRatio: Get.pixelRatio); + BitmapDescriptor.asset( + config, + 'assets/images/moto1.png', + // mipmaps: false, + ).then((value) { + motoIcon = value; + update(); + }); + } + + void addCustomLadyIcon() { + ImageConfiguration config = ImageConfiguration( + size: const Size(30, 30), devicePixelRatio: Get.pixelRatio); + BitmapDescriptor.asset( + config, + 'assets/images/lady1.png', + // mipmaps: false, + ).then((value) { + ladyIcon = value; + update(); + }); + } + + void addCustomStepIcon() { + ImageConfiguration config = ImageConfiguration( + size: const Size(30, 30), devicePixelRatio: Get.pixelRatio); + BitmapDescriptor.asset( + config, + 'assets/images/brand.png', + // mipmaps: false, + ).then((value) { + tripIcon = value; + update(); + }); + } + + dialoge() { + Get.defaultDialog( + title: 'Location '.tr, + content: Container( + child: Column( + children: [ + Text( + 'We use location to get accurate and nearest driver for you'.tr, + style: AppStyle.title, + ), + TextButton( + onPressed: () async { + // await Permission.location.request(); + Get.back(); + }, + child: Text( + 'Grant'.tr, + style: AppStyle.title, + ), + ) + ], + ), + ), + ); + } + + double speed = 0; + Future getLocation() async { + isLoading = true; + update(); + bool serviceEnabled; + PermissionStatus permissionGranted; + // dialoge(); + // Check if location services are enabled + serviceEnabled = await location.serviceEnabled(); + if (!serviceEnabled) { + serviceEnabled = await location.requestService(); + if (!serviceEnabled) { + // Location services are still not enabled, handle the error + return; + } + } + + // Check if the app has permission to access location + permissionGranted = await location.hasPermission(); + if (permissionGranted == PermissionStatus.denied) { + permissionGranted = await location.requestPermission(); + if (permissionGranted != PermissionStatus.granted) { + // Location permission is still not granted, handle the error + return; + } + } + + // Configure location accuracy + // LocationAccuracy desiredAccuracy = LocationAccuracy.high; + + // Get the current location + LocationData _locationData = await location.getLocation(); + passengerLocation = + (_locationData.latitude != null && _locationData.longitude != null + ? LatLng(_locationData.latitude!, _locationData.longitude!) + : null)!; + // getLocationArea(passengerLocation.latitude, passengerLocation.longitude); + // Log.print('AppLink.endPoint: ${AppLink.endPoint}'); + // Log.print('BoxName.serverChosen: ${box.read(BoxName.serverChosen)}'); + + newStartPointLocation = passengerLocation; + // Log.print('passengerLocation: $passengerLocation'); + speed = _locationData.speed!; + // //print location details + isLoading = false; + update(); + } + + LatLngBounds calculateBounds(double lat, double lng, double radiusInMeters) { + const double earthRadius = 6378137.0; // Earth's radius in meters + + double latDelta = (radiusInMeters / earthRadius) * (180 / pi); + double lngDelta = + (radiusInMeters / (earthRadius * cos(pi * lat / 180))) * (180 / pi); + + double minLat = lat - latDelta; + double maxLat = lat + latDelta; + + double minLng = lng - lngDelta; + double maxLng = lng + lngDelta; + + // Ensure the latitude is between -90 and 90 + minLat = max(-90.0, minLat); + maxLat = min(90.0, maxLat); + + // Ensure the longitude is between -180 and 180 + minLng = (minLng + 180) % 360 - 180; + maxLng = (maxLng + 180) % 360 - 180; + + // Ensure the bounds are in the correct order + if (minLng > maxLng) { + double temp = minLng; + minLng = maxLng; + maxLng = temp; + } + + return LatLngBounds( + southwest: LatLng(minLat, minLng), + northeast: LatLng(maxLat, maxLng), + ); + } + + GoogleMapController? mapController; + void onMapCreated(GoogleMapController controller) { + // myLocation = Get.find().location as LatLng; + // myLocation = myLocation; + mapController = controller; + controller.getVisibleRegion(); + controller.animateCamera( + CameraUpdate.newLatLng(passengerLocation), + ); + // Future.delayed(const Duration(milliseconds: 500), () { + // markers.forEach((marker) { + // controller.showMarkerInfoWindow(marker.markerId); + // }); + // }); + update(); + } + + // void startMarkerReloading() { + // int count = 0; + // markerReloadingTimer = Timer.periodic(const Duration(seconds: 30), (timer) { + // reloadMarkers(); + // + // count++; + // if (count == 10) { + // timer.cancel(); + // } + // }); + // } + bool reloadStartApp = false; + int reloadCount = 0; + startMarkerReloading() async { + if (reloadStartApp == false) { + Timer.periodic(const Duration(seconds: 3), (timer) async { + reloadCount++; + Log.print('reloadCount: $reloadCount'); + + if (rideConfirm == false) { + clearMarkersExceptStartEnd(); + // _smoothlyUpdateMarker(); + // startCarLocationSearch(box.read(BoxName.carType)); + await getCarsLocationByPassengerAndReloadMarker( + box.read(BoxName.carType), 5000); + await getNearestDriverByPassengerLocation(); + // Log.print('reloadMarkers: from startMarkerReloading'); + } else { + // runWhenRideIsBegin(); + } + + if (reloadCount >= 6) { + reloadStartApp = true; + timer.cancel(); // Stop the timer after 5 reloads + } + }); + } + } + + String durationByPassenger = ''; + late DateTime newTime1 = DateTime.now(); + late DateTime timeFromDriverToPassenger = DateTime.now(); + String distanceByPassenger = ''; + late Duration durationFromDriverToPassenger; + double nearestDistance = double.infinity; + + // Future getNearestDriverByPassengerLocation() async { + // if (polyLines.isEmpty || data.isEmpty) { + // return null; // Early return if data is empty + // } + + // if (!rideConfirm) { + // if (dataCarsLocationByPassenger != 'failure') { + // if (dataCarsLocationByPassenger != null) { + // if (dataCarsLocationByPassenger['message'].length > 0) { + // double nearestDistance = double + // .infinity; // Initialize nearest distance to a large number + // CarLocation? nearestCar; + + // for (var i = 0; + // i < dataCarsLocationByPassenger['message'].length; + // i++) { + // var carLocation = dataCarsLocationByPassenger['message'][i]; + + // // Calculate the distance between passenger's location and current driver's location + // final distance = Geolocator.distanceBetween( + // passengerLocation.latitude, + // passengerLocation.longitude, + // double.parse(carLocation['latitude']), + // double.parse(carLocation['longitude']), + // ); + + // // Calculate duration assuming an average speed of 25 km/h (adjust as needed) + // int durationToPassenger = + // (distance * 25 * (1000 / 3600)).round(); // 25 km/h in m/s + + // // Update the UI with the distance and duration for each car + // update(); + + // // If this distance is smaller than the nearest distance found so far, update nearestCar + // if (distance < nearestDistance) { + // nearestDistance = distance; + + // nearestCar = CarLocation( + // distance: distance, + // duration: durationToPassenger.toDouble(), + // id: carLocation['driver_id'], + // latitude: double.parse(carLocation['latitude']), + // longitude: double.parse(carLocation['longitude']), + // ); + + // // Update the UI with the nearest driver + // update(); + // } + // } + + // // Return the nearest car found + // return nearestCar; + // } + // } + // } + // } + + // // Return null if no drivers are found or if ride is confirmed + // return null; + // } + Future getNearestDriverByPassengerLocation() async { + if (!rideConfirm) { + if (dataCarsLocationByPassenger != 'failure' && + dataCarsLocationByPassenger != null && + dataCarsLocationByPassenger['message'] != null && + dataCarsLocationByPassenger['message'].length > 0) { + double nearestDistance = double.infinity; // Initialize nearest distance + CarLocation? nearestCar; + + for (var i = 0; + i < dataCarsLocationByPassenger['message'].length; + i++) { + var carLocation = dataCarsLocationByPassenger['message'][i]; + // Log.print('carLocation: $carLocation'); + + try { + // Calculate distance between passenger's location and current driver's location + final distance = Geolocator.distanceBetween( + passengerLocation.latitude, + passengerLocation.longitude, + double.parse(carLocation['latitude']), + double.parse(carLocation['longitude']), + ); + + // Calculate duration assuming an average speed of 25 km/h (adjust as needed) + int durationToPassenger = (distance / 1000 / 25 * 3600).round(); + // Log.print('distance: $distance'); + // Log.print('durationToPassenger: $durationToPassenger'); + // Log.print('passengerLocation: $passengerLocation'); + // Log.print('carLocation: $carLocation'); + // Log.print('distance: $distance meters'); + // Log.print('durationToPassenger: $durationToPassenger seconds'); + // Update the UI with the distance and duration for each car + update(); + + // If this distance is smaller than the nearest distance found so far, update nearestCar + if (distance < nearestDistance) { + nearestDistance = distance; + + nearestCar = CarLocation( + distance: distance, + duration: durationToPassenger.toDouble(), + id: carLocation['driver_id'], + latitude: double.parse(carLocation['latitude']), + longitude: double.parse(carLocation['longitude']), + ); + // Log.print('nearestCar: $nearestCar'); + // Update the UI with the nearest driver + update(); + } + } catch (e) { + Log.print('Error calculating distance/duration: $e'); + } + } + + // Return the nearest car found + return nearestCar; + } + } + + // Return null if no drivers are found or if ride is confirmed + return null; + } + + getNearestDriverByPassengerLocationAPIGOOGLE() async { + if (polyLines.isEmpty || data.isEmpty) { + return null; // Early return if data is empty + } + if (!rideConfirm) { + double nearestDistance = double.infinity; + if (dataCarsLocationByPassenger != 'failure') { + if (dataCarsLocationByPassenger['message'].length > 0) { + for (var i = 0; + i < dataCarsLocationByPassenger['message'].length; + i++) { + var carLocation = dataCarsLocationByPassenger['message'][i]; + + // } + // isloading = true; + update(); + // Make API request to get exact distance and duration + String apiUrl = + '${AppLink.googleMapsLink}distancematrix/json?destinations=${carLocation['latitude']},${carLocation['longitude']}&origins=${passengerLocation.latitude},${passengerLocation.longitude}&units=metric&key=${AK.mapAPIKEY}'; + var response = await CRUD().getGoogleApi(link: apiUrl, payload: {}); + if (response != null && response['status'] == "OK") { + var data = response; + // Extract distance and duration from the response and handle accordingly + int distance1 = + data['rows'][0]['elements'][0]['distance']['value']; + distanceByPassenger = + data['rows'][0]['elements'][0]['distance']['text']; + durationToPassenger = + data['rows'][0]['elements'][0]['duration']['value']; + + durationFromDriverToPassenger = + Duration(seconds: durationToPassenger.toInt()); + newTime1 = currentTime.add(durationFromDriverToPassenger); + timeFromDriverToPassenger = + newTime1.add(Duration(minutes: 2.toInt())); + durationByPassenger = + data['rows'][0]['elements'][0]['duration']['text']; + update(); + if (distance1 < nearestDistance) { + nearestDistance = distance1.toDouble(); + + nearestCar = CarLocation( + distance: distance1.toDouble(), + duration: durationToPassenger.toDouble(), + id: carLocation['driver_id'], + latitude: double.parse(carLocation['latitude']), + longitude: double.parse(carLocation['longitude']), + ); + // isloading = false; + update(); + } + } + + // Handle the distance and duration as needed + else { + // 'Failed to retrieve distance and duration: ${response['status']}'); + Log.print('${response['status']}: ${response['status']}}'); + // Handle the failure case + } + } + } + } + } + } + + calculateDistanceBetweenPassengerAndDriverBeforeCancelRide() async { + await getDriverCarsLocationToPassengerAfterApplied(); + double distance = Geolocator.distanceBetween( + passengerLocation.latitude, + passengerLocation.longitude, + driverCarsLocationToPassengerAfterApplied.last.latitude, + driverCarsLocationToPassengerAfterApplied.last.longitude, + ); + if (distance > 500) { + isCancelRidePageShown = true; + update(); + } else { + Get.defaultDialog( + barrierDismissible: false, + title: 'The Driver Will be in your location soon .'.tr, + middleText: 'The distance less than 500 meter.'.tr, + confirm: Column( + children: [ + MyElevatedButton( + kolor: AppColor.greenColor, + title: 'Ok'.tr, + onPressed: () { + Get.back(); + }, + ), + MyElevatedButton( + kolor: AppColor.redColor, + title: 'No, I want to cancel this trip'.tr, + onPressed: () { + Get.back(); + MyDialog().getDialog( + 'Attention'.tr, + 'You will be charged for the cost of the driver coming to your location.' + .tr, + () async { + Get.back(); + Get.find() + .payToDriverForCancelAfterAppliedAndHeNearYou(rideId); + // isCancelRidePageShown = true; + // update(); + }, + ); + }, + ), + ], + ), + ); + // cancel: MyElevatedButton( + // title: 'No.Iwant Cancel Trip.'.tr, onPressed: () {})); + } + } + + List headingAngles = []; + double calculateAngleBetweenLocations(LatLng start, LatLng end) { + double startLat = start.latitude * math.pi / 180; + double startLon = start.longitude * math.pi / 180; + double endLat = end.latitude * math.pi / 180; + double endLon = end.longitude * math.pi / 180; + + double dLon = endLon - startLon; + + double y = math.sin(dLon) * cos(endLat); + double x = cos(startLat) * math.sin(endLat) - + math.sin(startLat) * cos(endLat) * cos(dLon); + + double angle = math.atan2(y, x); + double angleDegrees = angle * 180 / math.pi; + + return angleDegrees; + } + + late LatLngBounds boundsData; + late String startNameAddress = ''; + late String endNameAddress = ''; + List> stopPoints = []; + void removeStop(Map stop) { + stopPoints.remove(stop); + update(); // Trigger a rebuild of the UI + } +// [تعديل] نحتاج هذه المكتبات لإرسال طلب HTTP مع هيدر + +// ... (باقي imports الخاصة بك) +// داخل MapPassengerController + // Future getReverseGeocoding(LatLng location) async { + // final lat = location.latitude; + // final lon = location.longitude; + + // // بناء رابط الـ Reverse Geocoding + // final url = + // 'https://geocode.intaleq.xyz/reverse_geocode.php?lat=$lat&lon=$lon'; + + // try { + // // استخدام دالة CRUD للطلب (نفترض أن CRUD تستخدم http.get أو ما شابه) + // final response = await CRUD().get(link: url, payload: {}); + + // if (response != 'failure') { + // final data = jsonDecode(response); + // // if (data['status'] == 'ok') { + // // نفضل استخدام display_name أو neighbourhood إذا كان متاحًا + // String name = data['display_name'] ?? + // data['neighbourhood'] ?? + // 'Unknown Location'.tr; + // return name; + // // } + // } + // } catch (e) { + // Log.print('Error in Reverse Geocoding: $e'); + // } + + // // العودة لقيمة افتراضية في حالة الفشل + // return 'Unknown Location'.tr; + // } + + Future getReverseGeocoding(LatLng location) async { + final lat = location.latitude; + final lon = location.longitude; + final url = + 'https://geocode.intaleq.xyz/reverse_geocode.php?lat=$lat&lon=$lon'; + + try { + final response = await http.get(Uri.parse(url)); + + // Log raw response for debugging + + // Check if the request was successful + if (response.statusCode == 200) { + String body = response.body.trim(); + + // Validate it's actual JSON + if (body.startsWith('{') && body.endsWith('}')) { + final data = jsonDecode(body); + + // Handle case where API returns {"status":"ok", ...} + if (data is Map && data['status'] == 'ok') { + String? name = data['display_name'] ?? data['neighbourhood']; + return name ?? 'Unknown Location'.tr; + } else { + // API returned JSON but not with "status: ok" + return 'Unknown Location'.tr; + } + } else { + // Not valid JSON (e.g., just "ok" or error message) + print('[WARNING] Invalid JSON: $body'); + return 'Unknown Location'.tr; + } + } else { + print('[ERROR] HTTP ${response.statusCode}: ${response.body}'); + return 'Unknown Location'.tr; + } + } catch (e) { + print('Error in Reverse Geocoding: $e'); + return 'Unknown Location'.tr; + } + } + + bool isDrawingRoute = false; + showDrawingBottomSheet() { + Get.bottomSheet( + Container( + width: double.infinity, + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(20), + topRight: Radius.circular(20), + ), + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + CircularProgressIndicator( + color: AppColor.primaryColor, + ), + const SizedBox(height: 15), + Text( + 'Drawing route on map...'.tr, + style: AppStyle.title.copyWith(fontSize: 16), + ), + const SizedBox(height: 5), + Text( + 'Please wait while we prepare your trip.'.tr, + style: TextStyle(color: Colors.grey[600]), + ), + ], + ), + ), + isDismissible: false, + enableDrag: false, + ); + } + + String dynamicApiUrl = 'https://routec.intaleq.xyz/route'; + Future getDistanceFromDriverAfterAcceptedRide( + String origin, String destination) async { + String apiKey = Env.mapKeyOsm; // مفتاح API الخاص بك + if (origin.isEmpty) { + origin = + '${passengerLocation.latitude.toString().split(',')[0]},${passengerLocation.longitude.toString().split(',')[1]}'; + } + // 2. بناء الرابط (URI) + // Waypoints غير مدعومة حالياً في OSRM، لذلك تم تجاهلها + var uri = Uri.parse( + '$dynamicApiUrl?origin=$origin&destination=$destination&steps=false&overview=false'); + Log.print('uri: ${uri}'); + + // 3. إرسال الطلب مع الهيدر + http.Response response; + Map responseData; + + try { + response = await http.get( + uri, + headers: { + 'X-API-KEY': apiKey, + }, + ).timeout(const Duration(seconds: 20)); // تايم آوت 20 ثانية + + if (response.statusCode != 200) { + print('Error from API: ${response.statusCode}'); + isLoading = false; + update(); + return; // خروج في حالة الخطأ + } + if (Get.isBottomSheetOpen ?? false) { + Get.back(); // لإغلاق شاشة "جاري الرسم" + } + isDrawingRoute = false; // Reset state + + responseData = json.decode(response.body); + Log.print('responseData: ${responseData}'); + + if (responseData['status'] != 'ok') { + print('API returned an error: ${responseData['message']}'); + isLoading = false; + update(); + return; // خروج في حالة خطأ منطقي (مثل "no path") + } + } catch (e) { + print('Failed to get directions: $e'); + isLoading = false; + update(); + return; // خروج عند فشل الاتصال + } + } + + // (b = 1.5348) هو المعامل الذي تم حسابه من مقارنة 60 رحلة بين Google و OSRM + double kDurationScalar = + 1.5348; //this from colab 60 random locations from google and routec + +// ----------------------------------------------------------------------------------------- + // GET DIRECTION MAP (FULL) + // ----------------------------------------------------------------------------------------- + // ----------------------------------------------------------------------------------------- + // GET DIRECTION MAP (With Auto-Retry Logic) + // ----------------------------------------------------------------------------------------- + // أضفنا attemptCount لتتبع عدد المحاولات + // ----------------------------------------------------------------------------------------- + // GET DIRECTION MAP (Retry or Fail Strict Logic) + // ----------------------------------------------------------------------------------------- + Future getDirectionMap(String origin, String destination, + [List waypoints = const [], int attemptCount = 0]) async { + // 1. إظهار التحميل فقط في المحاولة الأولى + if (attemptCount == 0) { + isLoading = true; + isDrawingRoute = true; + update(); + if (isDrawingRoute) showDrawingBottomSheet(); + + // تحميل السيارات مرة واحدة فقط في البداية + await getCarsLocationByPassengerAndReloadMarker( + box.read(BoxName.carType), 2400); + } + + // تجهيز الإحداثيات + if (origin.isEmpty) { + origin = + '${passengerLocation.latitude.toString().split(',')[0]},${passengerLocation.longitude.toString().split(',')[1]}'; + } + + var coordDestination = destination.split(','); + double latDest = double.parse(coordDestination[0]); + double lngDest = double.parse(coordDestination[1]); + myDestination = LatLng(latDest, lngDest); + + // 2. الاتصال بالسيرفر + String dynamicApiUrl = 'https://routec.intaleq.xyz/route'; + String apiKey = Env.mapKeyOsm; + + var uri = Uri.parse( + '$dynamicApiUrl?origin=$origin&destination=$destination&steps=false&overview=full'); + Log.print('Requesting Route URI (Attempt: ${attemptCount + 1}): ${uri}'); + + http.Response response; + Map responseData; + + try { + response = await http.get( + uri, + headers: {'X-API-KEY': apiKey}, + ).timeout(const Duration(seconds: 20)); + + if (response.statusCode != 200) { + if (attemptCount < 2) { + await _retryProcess(origin, destination, waypoints, attemptCount); + return; + } + _handleFatalError( + "Server Error".tr, "Connection failed. Please try again.".tr); + return; + } + + responseData = json.decode(response.body); + + // ============================================================ + // 🛑 الفحص الأمني (Sanity Check) + // ============================================================ + + double apiDistanceMeters = (responseData['distance_m'] as num).toDouble(); + double startLat = double.parse(origin.split(',')[0]); + double startLng = double.parse(origin.split(',')[1]); + + // المسافة الجوية + double aerialDistance = + Geolocator.distanceBetween(startLat, startLng, latDest, lngDest); + + // الشرط: مسافة السيرفر صفرية أو صغيرة جداً بينما الحقيقية كبيرة + if (apiDistanceMeters < 50.0 && aerialDistance > 200.0) { + Log.print( + "⚠️ Suspicious Route detected! Server: $apiDistanceMeters m | Aerial: $aerialDistance m"); + + // --- محاولة إعادة الطلب (Retry) --- + if (attemptCount < 2) { + Log.print("🔄 Retrying request (Attempt ${attemptCount + 2})..."); + await Future.delayed(const Duration(seconds: 1)); + getDirectionMap(origin, destination, waypoints, attemptCount + 1); + return; + } + + // --- فشلت كل المحاولات (السيناريو المطلوب) --- + else { + Log.print("❌ All retries failed. Calculating Route is impossible."); + + // استدعاء دالة الإلغاء والخروج النهائي + _handleFatalError( + "Route Not Found".tr, + "We couldn't find a valid route to this destination. Please try selecting a different point." + .tr); + return; // ⛔ توقف هنا فوراً + } + } + // ============================================================ + + // 3. معالجة البيانات (فقط في حال النجاح) + box.remove(BoxName.tripData); + box.write(BoxName.tripData, responseData); + + durationToRide = + ((responseData['duration_s'] as num) * kDurationScalar).toInt(); + double distanceOfTrip = (responseData['distance_m'] as num) / 1000.0; + distance = distanceOfTrip; + + data = responseData['steps'] ?? []; + + // معالجة الرسم (Polyline) + String pointsString = responseData['polyline'] ?? ""; + List decodedPoints = []; + + if (pointsString.isNotEmpty) { + decodedPoints = await compute(decodePolylineIsolate, pointsString); + } + + // حماية إضافية: لو البولي لاين فارغ رغم أن المسافة سليمة + if (decodedPoints.isEmpty) { + _handleFatalError("Map Error".tr, "Received empty route data.".tr); + return; + } + + polylineCoordinates.clear(); + polylineCoordinates.addAll(decodedPoints); + + // 4. جلب العناوين (Reverse Geocoding) + final LatLng startLoc = polylineCoordinates.first; + final LatLng endLoc = polylineCoordinates.last; + + try { + final results = await Future.wait([ + getReverseGeocoding(startLoc), + getReverseGeocoding(endLoc), + ]); + startNameAddress = results[0]; + endNameAddress = results[1]; + } catch (e) { + startNameAddress = 'Start Point'.tr; + endNameAddress = 'Destination'.tr; + } + + // 5. تحديث الكاميرا + double? minLat, maxLat, minLng, maxLng; + for (LatLng point in polylineCoordinates) { + minLat = minLat == null ? point.latitude : min(minLat, point.latitude); + maxLat = maxLat == null ? point.latitude : max(maxLat, point.latitude); + minLng = + minLng == null ? point.longitude : min(minLng, point.longitude); + maxLng = + maxLng == null ? point.longitude : max(maxLng, point.longitude); + } + + // إغلاق شاشة التحميل بنجاح + if (Get.isBottomSheetOpen ?? false) Get.back(); + isDrawingRoute = false; + isLoading = false; + + if (minLat != null) { + LatLngBounds boundsData = LatLngBounds( + northeast: LatLng(maxLat!, maxLng!), + southwest: LatLng(minLat!, minLng!)); + mapController + ?.animateCamera(CameraUpdate.newLatLngBounds(boundsData, 100)); + } + + // 6. إضافة الماركرز + durationToAdd = Duration(seconds: durationToRide); + hours = durationToAdd.inHours; + minutes = (durationToAdd.inMinutes % 60).round(); + + markers.clear(); + markers.add(Marker( + markerId: const MarkerId('start'), + position: startLoc, + icon: startIcon, + infoWindow: InfoWindow(title: startNameAddress), + )); + + markers.add(Marker( + markerId: const MarkerId('end'), + position: endLoc, + icon: endIcon, + infoWindow: InfoWindow( + title: endNameAddress, + snippet: + '$distance ${'KM'.tr} ⌛ ${hours > 0 ? '$hours H $minutes m' : '$minutes m'}'), + )); + + // 7. رسم الخط (فقط في حال النجاح) + if (polyLines.isNotEmpty) clearPolyline(); + bool isLowEndDevice = box.read(BoxName.lowEndMode) ?? true; + + if (isLowEndDevice) { + polyLines.add(Polyline( + polylineId: const PolylineId('route_solid'), + points: polylineCoordinates, + width: 6, + color: AppColor.primaryColor, + endCap: Cap.roundCap, + startCap: Cap.roundCap, + jointType: JointType.round, + )); + } else { + polyLines.addAll(_createGradientPolylines(polylineCoordinates, + const Color(0xFF00E5FF), const Color(0xFFFF4081))); + } + + rideConfirm = false; + isMarkersShown = true; + update(); + + // إظهار الباتم شيت للسعر + bottomSheet(); + } catch (e) { + // محاولة أخيرة عند حدوث Exception + if (attemptCount < 2) { + await _retryProcess(origin, destination, waypoints, attemptCount); + } else { + _handleFatalError("Connection Error".tr, + "Please check your internet and try again.".tr); + } + } + } + + // --- دالة المساعدة لإعادة المحاولة --- + Future _retryProcess(String origin, String dest, List waypoints, + int currentAttempt) async { + Log.print( + "🔄 Exception or Error caught. Retrying in 1s... (Attempt ${currentAttempt + 1})"); + await Future.delayed(const Duration(seconds: 1)); + getDirectionMap(origin, dest, waypoints, currentAttempt + 1); + } + + // ----------------------------------------------------------------------------------------- + // 🛑 دالة الخطأ القاتل (تغلق كل شيء وتعيد المستخدم للخريطة) + // ----------------------------------------------------------------------------------------- + void _handleFatalError(String title, String message) { + // 1. إغلاق شاشة التحميل (Drawing route...) + if (Get.isBottomSheetOpen ?? false) Get.back(); + + // 2. تصفير المتغيرات + isDrawingRoute = false; + isLoading = false; + update(); + + // 3. إظهار الديالوج الإجباري + Get.defaultDialog( + title: title, + titleStyle: AppStyle.title.copyWith(color: AppColor.redColor), + middleText: message, + middleTextStyle: AppStyle.subtitle, + barrierDismissible: false, // لا يمكن إغلاقه بالضغط خارجاً + confirm: MyElevatedButton( + title: "Close".tr, + kolor: AppColor.redColor, + onPressed: () { + Get.back(); // إغلاق الديالوج + + // 4. إعادة تحميل الصفحة بالكامل (تنظيف الحالة) + // تأكد من استيراد MapPagePassenger + Get.offAll(() => const MapPagePassenger()); + }, + ), + ); + } + + /// دالة لتقسيم المسار الطويل إلى قطع صغيرة ملونة بتدرج + Set _createGradientPolylines( + List points, Color startColor, Color endColor) { + Set lines = {}; + + // إذا كانت النقاط قليلة جداً، نرسم خطاً عادياً + if (points.length < 2) return lines; + + for (int i = 0; i < points.length - 1; i++) { + // حساب نسبة التقدم في المسار (من 0.0 إلى 1.0) + double t = i / points.length; + + // دمج اللونين بناءً على النسبة للحصول على اللون الحالي + // هذا يخلق التدرج من البداية للنهاية + Color segmentColor = Color.lerp(startColor, endColor, t) ?? startColor; + + lines.add(Polyline( + polylineId: PolylineId('route_segment_$i'), + points: [points[i], points[i + 1]], // وصل النقطة الحالية بالتالية فقط + width: 6, // سماكة الخط (اجعله سميكاً قليلاً ليظهر التدرج) + color: segmentColor, + startCap: Cap.roundCap, + endCap: Cap.roundCap, + jointType: JointType.round, + zIndex: 2, // لضمان ظهوره فوق أي طبقات أخرى + )); + } + + // (اختياري) إضافة "وهج" أو Glow أسفل الخط الرئيسي + // يتم ذلك برسم خط واحد شفاف وعريض أسفل الخطوط الملونة + lines.add(Polyline( + polylineId: const PolylineId('route_glow'), + points: points, + width: 10, // أعرض من الخط الرئيسي + color: startColor.withOpacity(0.3), // لون شفاف + zIndex: 1, // أسفل الخط الملون + )); + + return lines; + } +// getDirectionMap(String origin, destination, +// [List waypoints = const []]) async { +// isLoading = true; +// update(); +// remainingTime = 25; //to make cancel every call +// // startCarLocationSearch(box.read(BoxName.carType)); +// await getCarsLocationByPassengerAndReloadMarker( +// box.read(BoxName.carType), 5000); +// // await getCarsLocationByPassengerAndReloadMarker(); +// var coordDestination = destination.split(','); +// double latPassengerDestination = double.parse(coordDestination[0]); +// double lngPassengerDestination = double.parse(coordDestination[1]); +// myDestination = LatLng(latPassengerDestination, lngPassengerDestination); +// if (origin.isEmpty) { +// origin = +// '${passengerLocation.latitude.toString().split(',')[0]},${passengerLocation.longitude.toString().split(',')[1]}'; //todo +// } +// isLoading = false; +// update(); +// var url = +// ('${AppLink.googleMapsLink}directions/json?&language=${box.read(BoxName.lang) ?? 'ar'}&avoid=tolls|ferries&destination=$destination&origin=$origin&key=${AK.mapAPIKEY}'); +// if (waypoints.isNotEmpty) { +// String formattedWaypoints = waypoints.join('|'); +// url += '&waypoints=$formattedWaypoints'; +// } +// var response = await CRUD().getGoogleApi(link: url, payload: {}); + +// data = response['routes'][0]['legs']; +// box.remove(BoxName.tripData); +// box.write(BoxName.tripData, response); + +// startNameAddress = shortenAddress(data[0]['start_address']); +// // print('data[0][start_address]: ${data[0]['start_address']}'); +// endNameAddress = shortenAddress(data[0]['end_address']); +// isLoading = false; +// newStartPointLocation = LatLng( +// data[0]["start_location"]['lat'], data[0]["start_location"]['lng']); + +// durationToRide = data[0]['duration']['value']; +// final String pointsString = +// response['routes'][0]["overview_polyline"]["points"]; +// List decodedPoints = +// await compute(decodePolylineIsolate, pointsString); +// // decodePolyline(response["routes"][0]["overview_polyline"]["points"]); +// for (int i = 0; i < decodedPoints.length; i++) { +// // double lat = decodedPoints[i][0].toDouble(); +// // double lng = decodedPoints[i][1].toDouble(); +// polylineCoordinates.add(decodedPoints[i]); +// } +// // Define the northeast and southwest coordinates + +// // Define the northeast and southwest coordinates +// final bounds = response["routes"][0]["bounds"]; +// LatLng northeast = +// LatLng(bounds['northeast']['lat'], bounds['northeast']['lng']); +// LatLng southwest = +// LatLng(bounds['southwest']['lat'], bounds['southwest']['lng']); + +// // Create the LatLngBounds object +// LatLngBounds boundsData = +// LatLngBounds(northeast: northeast, southwest: southwest); + +// // Fit the camera to the bounds +// var cameraUpdate = CameraUpdate.newLatLngBounds(boundsData, 130); +// mapController!.animateCamera(cameraUpdate); + +// // getDistanceFromText(data[0]['distance']['text']); +// double distanceOfTrip = (data[0]['distance']['value']) / 1000; +// distance = distanceOfTrip; +// durationToAdd = Duration(seconds: durationToRide); +// hours = durationToAdd.inHours; +// minutes = (durationToAdd.inMinutes % 60).round(); +// // updateCameraForDistanceAfterGetMap(); +// markers.clear(); +// update(); +// markers.add( +// Marker( +// markerId: const MarkerId('start'), +// position: newStartPointLocation, +// icon: startIcon, +// infoWindow: InfoWindow( +// title: startNameAddress, +// snippet: '', +// ), +// ), +// ); + +// // Add end marker +// markers.add( +// Marker( +// markerId: const MarkerId('end'), +// position: LatLng( +// data[0]["end_location"]['lat'], data[0]["end_location"]['lng']), +// icon: endIcon, +// infoWindow: InfoWindow( +// title: endNameAddress, +// snippet: +// '$distance ${'KM'.tr} ⌛ ${hours > 0 ? '${'Your Ride Duration is '.tr}$hours ${'H and'.tr} $minutes ${'m'.tr}' : '${'Your Ride Duration is '.tr} $minutes ${'m'.tr}'}'), +// ), +// ); +// // // Show info windows automatically +// // Future.delayed(const Duration(milliseconds: 500), () { +// // mapController?.showMarkerInfoWindow(const MarkerId('start')); +// // }); +// // Future.delayed(const Duration(milliseconds: 500), () { +// // mapController?.showMarkerInfoWindow(const MarkerId('end')); +// // }); +// // update(); + +// if (polyLines.isNotEmpty) { +// clearPolyline(); +// } else { +// // الآن نقرأ القيمة ونحدد عدد النقاط بناءً عليها +// bool lowEndMode = box.read(BoxName.lowEndMode) ?? +// false; // الأفضل أن يكون الافتراضي هو الجودة العالية + +// // نمرر عدد النقاط المناسب هنا +// if (Platform.isIOS) { +// animatePolylineLayered( +// polylineCoordinates, +// maxPoints: +// lowEndMode ? 30 : 150, // 30 نقطة لوضع الأداء، 150 للوضع العادي +// ); +// } else { +// polyLines.add(Polyline( +// polylineId: const PolylineId('route'), +// points: polylineCoordinates, +// width: 6, +// color: AppColor.primaryColor, +// endCap: Cap.roundCap, +// startCap: Cap.roundCap, +// jointType: JointType.round, +// )); +// } + +// rideConfirm = false; +// isMarkersShown = true; + +// update(); +// } +// } + +// 1) تقليل النقاط إلى حد أقصى 30 نقطة (مع بداية ونهاية محفوظة وتوزيع متساوٍ) + List _downsampleEven(List coords, {int maxPoints = 30}) { + if (coords.isEmpty) return const []; + if (coords.length <= maxPoints) return List.from(coords); + + final int n = coords.length; + final int keep = maxPoints.clamp(2, n); + final List idx = []; + for (int i = 0; i < keep; i++) { + final double pos = i * (n - 1) / (keep - 1); + idx.add(pos.round()); + } + final seen = {}; + final List out = []; + for (final i in idx) { + if (seen.add(i)) out.add(coords[i]); + } + if (out.first != coords.first) out.insert(0, coords.first); + if (out.last != coords.last) out.add(coords.last); + while (out.length > maxPoints) { + out.removeAt(out.length ~/ 2); + } + return out; + } + +// 2) رسم متدرّج بطبقات متراكبة (بدون حذف)، برونزي ↔ أخضر، مع zIndex وعرض مختلف + Future animatePolylineLayered(List coordinates, + {int layersCount = 8, int stepDelayMs = 10, int maxPoints = 160}) async { + // امسح أي طبقات قديمة فقط الخاصة بالطريق + polyLines.removeWhere((p) => p.polylineId.value.startsWith('route_layer_')); + update(); + + final List coords = + _downsampleEven(coordinates, maxPoints: maxPoints); + if (coords.length < 2) return; + + // ألوان مع شفافية خفيفة للتمييز + Color bronze([int alpha = 220]) => AppColor.gold; + Color green([int alpha = 220]) => AppColor.primaryColor; + + Color _layerColor(int layer) => (layer % 2 == 0) ? bronze() : green(); + + // عرض الخط: البرونزي أعرض، الأخضر أنحف + int _layerWidth(int layer) => (layer % 2 == 0) ? 6 : 4; + + // لكل طبقة: أنشئ Polyline بهوية فريدة وزي إندكس أعلى من السابقة + for (int layer = 0; layer < layersCount; layer++) { + final id = PolylineId('route_layer_$layer'); + polyLines.add(Polyline( + polylineId: id, + points: const [], + width: _layerWidth(layer), + color: _layerColor(layer), + zIndex: layer, // مهم لإظهار جميع الطبقات + endCap: Cap.roundCap, + startCap: Cap.roundCap, + geodesic: true, + visible: true, + )); + } + update(); + + // نبني كل طبقة تدريجيًا فوق التي قبلها — بدون مسح الطبقات السابقة + for (int layer = 0; layer < layersCount; layer++) { + final id = PolylineId('route_layer_$layer'); + final List growing = []; + + for (int i = 0; i < coords.length; i++) { + growing.add(coords[i]); + + // حدّث فقط هذه الطبقة + polyLines.removeWhere((p) => p.polylineId == id); + polyLines.add(Polyline( + polylineId: id, + points: List.from(growing), + width: _layerWidth(layer), + color: _layerColor(layer), + zIndex: layer, + endCap: Cap.roundCap, + startCap: Cap.roundCap, + geodesic: true, + visible: true, + )); + + update(); + await Future.delayed(Duration(milliseconds: stepDelayMs)); + } + + // مهلة خفيفة بين الطبقات عشان يبان التبديل + await Future.delayed(const Duration(milliseconds: 120)); + } + } + + String shortenAddress(String fullAddress) { + // Split the address into parts + List parts = fullAddress.split('،'); + + // Remove any leading or trailing whitespace from each part + parts = parts.map((part) => part.trim()).toList(); + + // Remove any empty parts + parts = parts.where((part) => part.isNotEmpty).toList(); + + // Initialize the short address + String shortAddress = ''; + + if (parts.isNotEmpty) { + // Add the first part (usually the most specific location) + shortAddress += parts[0]; + } + + if (parts.length > 2) { + // Add the district or area name (usually the third part in Arabic format) + shortAddress += '، ${parts[2]}'; + } else if (parts.length > 1) { + // Add the second part for English or shorter addresses + shortAddress += '، ${parts[1]}'; + } + + // Add the country (usually the last part) + if (parts.length > 1) { + shortAddress += '، ${parts.last}'; + } + + // Remove any part that's just numbers (like postal codes) + shortAddress = shortAddress + .split('،') + .where((part) => !RegExp(r'^[0-9 ]+$').hasMatch(part.trim())) + .join('،'); + + // Check if the address is in English + bool isEnglish = + RegExp(r'^[a-zA-Z0-9 ]+$').hasMatch(shortAddress.replaceAll('،', '')); + + if (isEnglish) { + // Further processing for English addresses + List englishParts = shortAddress.split('،'); + if (englishParts.length > 2) { + shortAddress = + '${englishParts[0]}، ${englishParts[1]}، ${englishParts.last}'; + } else if (englishParts.length > 1) { + shortAddress = '${englishParts[0]}، ${englishParts.last}'; + } + } + + return shortAddress; + } + + double distanceOfDestination = 0; + bool haveSteps = false; + late LatLng latestPosition; + + getMapPoints(String originSteps, String destinationSteps, int index) async { + isWayPointStopsSheetUtilGetMap = false; + // haveSteps = true; + // startCarLocationSearch(box.read(BoxName.carType)); + await getCarsLocationByPassengerAndReloadMarker( + box.read(BoxName.carType), 7000); + // await getCarsLocationByPassengerAndReloadMarker(); + // isLoading = true; + update(); + var url = + ('${AppLink.googleMapsLink}directions/json?&language=${box.read(BoxName.lang)}&avoid=tolls|ferries&destination=$destinationSteps&origin=$originSteps&key=${AK.mapAPIKEY}'); + var response = await CRUD().getGoogleApi(link: url, payload: {}); + + data = response['routes'][0]['legs']; + // isLoading = false; + + int durationToRide0 = data[0]['duration']['value']; + durationToRide = durationToRide + durationToRide0; + distance = distanceOfDestination + (data[0]['distance']['value']) / 1000; + + update(); + // final points = + // decodePolyline(response["routes"][0]["overview_polyline"]["points"]); + final String pointsString = + response['routes'][0]["overview_polyline"]["points"]; + + List decodedPoints = + await compute(decodePolylineIsolate, pointsString); + // decodePolyline(response["routes"][0]["overview_polyline"]["points"]); + for (int i = 0; i < decodedPoints.length; i++) { + polylineCoordinates.add(decodedPoints[i]); + } +// Define the northeast and southwest coordinates + + if (polyLines.isNotEmpty) { + // clearPolyline(); + } else { + var polyline = Polyline( + polylineId: PolylineId(response["routes"][0]["summary"]), + points: polylineCoordinatesPointsAll[index], + width: 10, + color: Colors.blue, + ); + + polyLines.add(polyline); + rideConfirm = false; + // isMarkersShown = true; + update(); + } + } + + void updateCameraForDistanceAfterGetMap() { + LatLng coord1 = LatLng( + double.parse(coordinatesWithoutEmpty.first.split(',')[0]), + double.parse(coordinatesWithoutEmpty.first.split(',')[1])); + + LatLng coord2 = LatLng( + double.parse(coordinatesWithoutEmpty.last.split(',')[0]), + double.parse(coordinatesWithoutEmpty.last.split(',')[1])); + + LatLng northeast; + LatLng southwest; + + if (coord1.latitude > coord2.latitude) { + northeast = coord1; + southwest = coord2; + } else { + northeast = coord2; + southwest = coord1; + } + + // Create the LatLngBounds object + LatLngBounds bounds = + LatLngBounds(northeast: northeast, southwest: southwest); + + // Fit the camera to the bounds + var cameraUpdate = CameraUpdate.newLatLngBounds(bounds, 180); + mapController!.animateCamera(cameraUpdate); + update(); + } + + int selectedIndex = -1; // Initialize with no selection + void selectCarFromList(int index) { + selectedIndex = index; // Update selected index + carTypes.forEach( + (element) => element.isSelected = false); // Reset selection flags + carTypes[index].isSelected = true; + update(); + } + + showBottomSheet1() async { + await bottomSheet(); + isBottomSheetShown = true; + heightBottomSheetShown = 250; + + update(); + } + + final promo = TextEditingController(); + bool promoTaken = false; + void applyPromoCodeToPassenger(BuildContext context) async { + if (promoTaken == true) { + MyDialog().getDialog( + 'Promo Already Used'.tr, + 'You have already used this promo code.'.tr, + () => Get.back(), + ); + return; + } + + if (!promoFormKey.currentState!.validate()) return; + + // العتبات بالليرة السورية + const double minPromoLowSYP = 172; // Speed / Balash + const double minPromoHighSYP = 200; // Comfort / Electric / Lady + + try { + final value = await CRUD().get( + link: AppLink.getPassengersPromo, + payload: {'promo_code': promo.text}, + ); + + if (value == 'failure') { + MyDialog().getDialog( + 'Promo Ended'.tr, + 'The promotion period has ended.'.tr, + () => Get.back(), + ); + return; + } + + // هل يوجد فئة مؤهلة أصلاً قبل الخصم؟ + final bool eligibleNow = (totalPassengerSpeed >= minPromoLowSYP) || + (totalPassengerBalash >= minPromoLowSYP) || + (totalPassengerComfort >= minPromoHighSYP) || + (totalPassengerElectric >= minPromoHighSYP) || + (totalPassengerLady >= minPromoHighSYP); + + if (!eligibleNow) { + Get.snackbar( + 'Lowest Price Achieved'.tr, + 'Cannot apply further discounts.'.tr, + backgroundColor: AppColor.yellowColor, + ); + return; + } + + final decode = jsonDecode(value); + if (decode["status"] != "success") { + MyDialog().getDialog( + 'Promo Ended'.tr, + 'The promotion period has ended.'.tr, + () => Get.back(), + ); + return; + } + + Get.snackbar('Promo Code Accepted'.tr, '', + backgroundColor: AppColor.greenColor); + + final firstElement = decode["message"][0]; + final int discountPercentage = + int.tryParse(firstElement['amount'].toString()) ?? 0; + + // قيمة المحفظة - قد تكون سالبة + final double walletVal = double.tryParse( + box.read(BoxName.passengerWalletTotal)?.toString() ?? '0') ?? + 0.0; + + final bool isWalletNegative = walletVal < 0; + + // -------------------------- + // دالة تُطبّق الخصم دون النزول تحت الحد الأدنى + // -------------------------- + double _applyDiscountPerTier({ + required double fare, + required double minThreshold, + required bool isWalletNegative, + }) { + if (fare < minThreshold) return fare; // غير مؤهل أصلاً + + final double discount = fare * (discountPercentage / 100.0); + double result; + + if (isWalletNegative) { + double neg = (-1) * walletVal; // walletVal < 0 => neg positive + result = fare + neg - discount; + } else { + result = fare - discount; + } + + // لا نسمح بالنزول دون الحد الأدنى + if (result < minThreshold) { + result = minThreshold; + } + + // ولا نسمح بمبلغ سالب + return result.clamp(0.0, double.infinity); + } + + // Comfort + totalPassengerComfort = _applyDiscountPerTier( + fare: totalPassengerComfort, + minThreshold: minPromoHighSYP, + isWalletNegative: isWalletNegative, + ); + + // Electric + totalPassengerElectric = _applyDiscountPerTier( + fare: totalPassengerElectric, + minThreshold: minPromoHighSYP, + isWalletNegative: isWalletNegative, + ); + + // Lady + totalPassengerLady = _applyDiscountPerTier( + fare: totalPassengerLady, + minThreshold: minPromoHighSYP, + isWalletNegative: isWalletNegative, + ); + + // Speed + totalPassengerSpeed = _applyDiscountPerTier( + fare: totalPassengerSpeed, + minThreshold: minPromoLowSYP, + isWalletNegative: isWalletNegative, + ); + + // Balash + totalPassengerBalash = _applyDiscountPerTier( + fare: totalPassengerBalash, + minThreshold: minPromoLowSYP, + isWalletNegative: isWalletNegative, + ); + + // تعديل دخل السائق وفق نسبة الخصم + totalDriver = totalDriver - (totalDriver * discountPercentage / 100.0); + + promoTaken = true; + update(); + + // مؤثرات + Confetti.launch( + context, + options: const ConfettiOptions(particleCount: 100, spread: 70, y: 0.6), + ); + + Get.back(); + await Future.delayed(const Duration(milliseconds: 120)); + } catch (e) { + Get.snackbar('Error'.tr, e.toString(), + backgroundColor: AppColor.redColor); + } + } + + double getDistanceFromText(String distanceText) { + // Remove any non-digit characters from the distance text + String distanceValue = distanceText.replaceAll(RegExp(r'[^0-9.]+'), ''); + + // Parse the extracted numerical value as a double + double distance = double.parse(distanceValue); + + return distance; + } + + double costForDriver = 0; + double totalPassengerSpeed = 0; + double totalPassengerBalash = 0; + double totalPassengerElectric = 0; + double totalPassengerLady = 0; + double totalPassengerRayehGai = 0; + double totalPassengerRayehGaiComfort = 0; + double totalPassengerRayehGaiBalash = 0; + Future bottomSheet() async { + // if (data.isEmpty) return; + + // === إعدادات عامة === + const double minFareSYP = 160; // حد أدنى + const double minBillableKm = 0.3; // حد أدنى للمسافة المفوترة + const double ladyFlatAddon = 20; // إضافة ثابتة لـ Lady + const double airportAddonSYP = 200; // إضافة المطار + + // --- ⬇️ الإضافة الجديدة: إضافة حدود مطار دمشق ⬇️ --- + const double damascusAirportBoundAddon = 1400; // إضافة المطار (حدود) + // --- ⬆️ نهاية الإضافة ⬆️ --- + + // كهرباء + const double electricPerKmUplift = 4; // زيادة/كم + const double electricFlatAddon = 10; // زيادة ثابتة + + // Long Speed + const double longSpeedThresholdKm = 40.0; + const double longSpeedPerKm = 26.0; // Speed عند >40كم + + // قواعد الرحلات البعيدة للدقائق (تعمل لكل الأوقات) + const double mediumDistThresholdKm = 25.0; // >25كم + const double longDistThresholdKm = 35.0; // >35كم + const double longTripPerMin = 6.0; + const int minuteCapMedium = 60; // سقف دقائق عند >25كم + const int minuteCapLong = 80; // سقف دقائق عند >35كم + const int freeMinutesLong = 10; // عفو 10 دقائق عند >35كم + + // تخفيضات المسافات الكبيرة للفئات غير Speed + const double extraReduction100 = 0.07; // +7% فوق تخفيض >40كم للرحلات >100كم + const double maxReductionCap = 0.35; // سقف 35% كحد أقصى + + // ====== زمن الرحلة ====== + durationToAdd = Duration(seconds: durationToRide); + hours = durationToAdd.inHours; + minutes = (durationToAdd.inMinutes % 60).round(); + final DateTime currentTime = DateTime.now(); + newTime = currentTime.add(durationToAdd); + averageDuration = (durationToRide / 60) / distance; + final int totalMinutes = (durationToRide / 60).floor(); + + // ====== أدوات مساعدة ====== + bool _isAirport(String s) { + final t = s.toLowerCase(); + return t.contains('airport') || + s.contains('مطار') || + s.contains('المطار'); + } + + bool _isClub(String s) { + final t = s.toLowerCase(); + return t.contains('club') || + t.contains('nightclub') || + t.contains('night club') || + s.contains('ديسكو') || + s.contains('ملهى ليلي'); + } + + // --- ⬇️ الإضافة الجديدة: دالة التحقق من حدود المطار ⬇️ --- + // (P1: 33.415313, 36.499687) (P2: 33.400265, 36.531505) + bool _isInsideDamascusAirportBounds(double lat, double lng) { + final double northLat = 33.415313; + final double southLat = 33.400265; + final double eastLng = 36.531505; + final double westLng = 36.499687; + + // التحقق من خط العرض (بين الشمال والجنوب) + bool isLatInside = (lat <= northLat) && (lat >= southLat); + // التحقق من خط الطول (بين الشرق والغرب) + bool isLngInside = (lng <= eastLng) && (lng >= westLng); + + return isLatInside && isLngInside; + } + // --- ⬆️ نهاية الإضافة ⬆️ --- + + // أسعار الدقيقة من السيرفر + final double naturePerMin = naturePrice; // طبيعي + final double latePerMin = latePrice; // ليل + final double heavyPerMin = heavyPrice; // ذروة + + // سعر الدقيقة حسب الوقت (أساس قبل قواعد المسافة) + double _perMinuteByTime(DateTime now, bool clubCtx) { + final h = now.hour; + if (h >= 21 || h < 1) return latePerMin; // ليل + if (h >= 1 && h < 5) return clubCtx ? (latePerMin * 2) : latePerMin; + if (h >= 14 && h <= 17) return heavyPerMin; // ذروة + return naturePerMin; // طبيعي + } + + // حد أدنى + double _applyMinFare(double fare) => + (fare < minFareSYP) ? minFareSYP : fare; + + // عمولة الراكب (kazan من السيرفر) + double _withCommission(double base) => + (base * (1 + kazan / 100)).ceilToDouble(); + + // ====== سياق ====== + final bool airportCtx = + _isAirport(startNameAddress) || _isAirport(endNameAddress); + final bool clubCtx = _isClub(startNameAddress) || _isClub(endNameAddress); + + // --- ⬇️ الإضافة الجديدة: التحقق من سياق حدود المطار ⬇️ --- + // !! ⚠️ تأكد من أن هذه هي المتغيرات الصحيحة لإحداثيات نقطة النهاية !! + final bool damascusAirportBoundCtx = _isInsideDamascusAirportBounds( + myDestination.latitude, // <-- ⚠️ غيّر هذا للمتغير الصحيح + myDestination.longitude, // <-- ⚠️ غيّر هذا للمتغير الصحيح + ); + final bool isInDamascusAirportBoundCtx = _isInsideDamascusAirportBounds( + newMyLocation.latitude, // <-- ⚠️ غيّر هذا للمتغير الصحيح + newMyLocation.longitude, // <-- ⚠️ غيّر هذا للمتغير الصحيح + ); + // --- ⬆️ نهاية الإضافة ⬆️ --- + + // ====== مسافة مفوترة ====== + final double billableDistance = + (distance < minBillableKm) ? minBillableKm : distance; + + // ====== Speed (قصير/طويل) ====== + final bool isLongSpeed = billableDistance > longSpeedThresholdKm; + final double perKmSpeedBaseFromServer = + speedPrice; // مثال: 2900 يأتي من السيرفر + final double perKmSpeed = + isLongSpeed ? longSpeedPerKm : perKmSpeedBaseFromServer; + + // ====== تخفيضات الفئات الأخرى حسب بُعد الرحلة ====== + // ... (الكود كما هو) ... + double reductionPct40 = 0.0; + if (perKmSpeedBaseFromServer > 0) { + reductionPct40 = (1.0 - (longSpeedPerKm / perKmSpeedBaseFromServer)) + .clamp(0.0, maxReductionCap); + } + final double reductionPct100 = + (reductionPct40 + extraReduction100).clamp(0.0, maxReductionCap); + double distanceReduction = 0.0; + if (billableDistance > 100.0) { + distanceReduction = reductionPct100; + } else if (billableDistance > 40.0) { + distanceReduction = reductionPct40; + } + + // ====== منطق الدقيقة يعمل لكل الأوقات ويتكيّف مع المسافة ====== + // ... (الكود كما هو) ... + double effectivePerMin = _perMinuteByTime(currentTime, clubCtx); + int billableMinutes = totalMinutes; + if (billableDistance > longDistThresholdKm) { + effectivePerMin = longTripPerMin; + final int capped = + (billableMinutes > minuteCapLong) ? minuteCapLong : billableMinutes; + billableMinutes = capped - freeMinutesLong; + if (billableMinutes < 0) billableMinutes = 0; + } else if (billableDistance > mediumDistThresholdKm) { + effectivePerMin = longTripPerMin; + billableMinutes = (billableMinutes > minuteCapMedium) + ? minuteCapMedium + : billableMinutes; + } + + // ====== أسعار/كم قبل التخفيض ====== + // ... (الكود كما هو) ... + final double perKmComfortRaw = comfortPrice; + final double perKmDelivery = deliveryPrice; + final double perKmVanRaw = + (familyPrice > 0 ? familyPrice : (speedPrice + 13)); + final double perKmElectricRaw = perKmComfortRaw + electricPerKmUplift; + + // ====== تطبيق التخفيضات على الفئات (نفس نسبة Speed للبعيد) ====== + // ... (الكود كما هو) ... + double perKmComfort = perKmComfortRaw * (1.0 - distanceReduction); + double perKmElectric = perKmElectricRaw * (1.0 - distanceReduction); + double perKmVan = perKmVanRaw * (1.0 - distanceReduction); + perKmComfort = perKmComfort.clamp(0, double.infinity); + perKmElectric = perKmElectric.clamp(0, double.infinity); + perKmVan = perKmVan.clamp(0, double.infinity); + final double perKmBalash = (perKmSpeed - 5).clamp(0, double.infinity); + + // ====== دوال الاحتساب ====== + double _oneWayFare({ + required double perKm, + required bool isLady, + double flatAddon = 0, + }) { + double fare = billableDistance * perKm; + fare += + billableMinutes * effectivePerMin; // دقائق بعد السقف/العفو إن وُجد + fare += flatAddon; + if (isLady) fare += ladyFlatAddon; + if (airportCtx) fare += airportAddonSYP; + + // --- ⬇️ الإضافة الجديدة: تطبيق إضافة حدود المطار ⬇️ --- + if (damascusAirportBoundCtx || isInDamascusAirportBoundCtx) { + fare += damascusAirportBoundAddon; + } + // --- ⬆️ نهاية الإضافة ⬆️ --- + + return _applyMinFare(fare); + } + + double _roundTripFare({required double perKm}) { + // خصم 40% لمسافة إياب واحدة + زمن مضاعف (بنفس قواعد الدقيقة المعدّلة) + double distPart = + (billableDistance * 2 * perKm) - ((billableDistance * perKm) * 0.4); + double timePart = (billableMinutes * 2) * effectivePerMin; + double fare = distPart + timePart; + if (airportCtx) fare += airportAddonSYP; + + // --- ⬇️ الإضافة الجديدة: تطبيق إضافة حدود المطار ⬇️ --- + // تنطبق أيضاً على رحلات الذهاب والعودة لأنها "تصل" إلى الوجهة + if (damascusAirportBoundCtx || isInDamascusAirportBoundCtx) { + fare += damascusAirportBoundAddon; + } + // --- ⬆️ نهاية الإضافة ⬆️ --- + + return _applyMinFare(fare); + } + + // ====== حساب كل الفئات (Base قبل العمولة) ====== + final double costSpeed = _oneWayFare(perKm: perKmSpeed, isLady: false); + final double costBalash = _oneWayFare(perKm: perKmBalash, isLady: false); + final double costComfort = _oneWayFare(perKm: perKmComfort, isLady: false); + final double costElectric = _oneWayFare( + perKm: perKmElectric, isLady: false, flatAddon: electricFlatAddon); + final double costDelivery = + _oneWayFare(perKm: perKmDelivery, isLady: false); + final double costLady = _oneWayFare( + perKm: perKmComfort, + isLady: true); // Lady تعتمد Comfort بعد التخفيض + إضافة ثابتة + final double costVan = _oneWayFare(perKm: perKmVan, isLady: false); + final double costRayehGai = _roundTripFare(perKm: perKmSpeed); + final double costRayehGaiComfort = _roundTripFare(perKm: perKmComfort); + final double costRayehGaiBalash = _roundTripFare(perKm: perKmBalash); + + // ====== أسعار الراكب بعد العمولة (kazan من السيرفر) ====== + totalPassengerSpeed = _withCommission(costSpeed); + totalPassengerBalash = _withCommission(costBalash); + totalPassengerComfort = _withCommission(costComfort); + totalPassengerElectric = _withCommission(costElectric); + totalPassengerLady = _withCommission(costLady); + totalPassengerScooter = _withCommission(costDelivery); + totalPassengerVan = _withCommission(costVan); + totalPassengerRayehGai = _withCommission(costRayehGai); + totalPassengerRayehGaiComfort = _withCommission(costRayehGaiComfort); + totalPassengerRayehGaiBalash = _withCommission(costRayehGaiBalash); + + // افتراضي للعرض + totalPassenger = totalPassengerSpeed; + totalCostPassenger = totalPassenger; + + // ====== دعم رصيد محفظة سلبي ====== + try { + final walletStr = box.read(BoxName.passengerWalletTotal).toString(); + final walletVal = double.tryParse(walletStr) ?? 0.0; + if (walletVal < 0) { + final neg = (-1) * walletVal; + totalPassenger += neg; + totalPassengerComfort += neg; + totalPassengerElectric += neg; + totalPassengerLady += neg; + totalPassengerBalash += neg; + totalPassengerScooter += neg; + totalPassengerRayehGai += neg; + totalPassengerRayehGaiComfort += neg; + totalPassengerRayehGaiBalash += neg; + totalPassengerVan += neg; + } + } catch (_) {} + + update(); + changeBottomSheetShown(); + } + // addToken() async { + // String fingerPrint = await DeviceHelper.getDeviceFingerprint(); + + // await CRUD() + // .post(link: "${AppLink.server}/ride/firebase/add.php", payload: { + // 'token': (box.read(BoxName.tokenFCM.toString())), + // 'passengerID': box.read(BoxName.passengerID).toString(), + // "fingerPrint": fingerPrint + // }); + // CRUD().postWallet( + // link: "${AppLink.seferPaymentServer}/ride/firebase/add.php", + // payload: { + // 'token': (box.read(BoxName.tokenFCM.toString())), + // 'passengerID': box.read(BoxName.passengerID).toString(), + // "fingerPrint": fingerPrint + // }); + // } + + List polylineCoordinate = []; + String? cardNumber; + void readyWayPoints() { + hintTextwayPointStringAll = [ + hintTextwayPoint0, + hintTextwayPoint1, + hintTextwayPoint2, + hintTextwayPoint3, + hintTextwayPoint4, + ]; + polylineCoordinatesPointsAll = [ + polylineCoordinates0, + polylineCoordinates1, + polylineCoordinates2, + polylineCoordinates3, + polylineCoordinates4, + ]; + allTextEditingPlaces = [ + wayPoint0Controller, + wayPoint1Controller, + wayPoint2Controller, + wayPoint3Controller, + wayPoint4Controller, + ]; + currentLocationToFormPlacesAll = [ + currentLocationToFormPlaces0, + currentLocationToFormPlaces1, + currentLocationToFormPlaces2, + currentLocationToFormPlaces3, + currentLocationToFormPlaces4, + ]; + placeListResponseAll = [ + wayPoint0, + wayPoint1, + wayPoint2, + wayPoint3, + wayPoint4 + ]; + startLocationFromMapAll = [ + startLocationFromMap0, + startLocationFromMap1, + startLocationFromMap2, + startLocationFromMap3, + startLocationFromMap4, + ]; + currentLocationStringAll = [ + currentLocationString0, + currentLocationString1, + currentLocationString2, + currentLocationString3, + currentLocationString4, + ]; + placesCoordinate = [ + placesCoordinate0, + placesCoordinate1, + placesCoordinate2, + placesCoordinate3, + placesCoordinate4, + ]; + update(); + } + + List driversForMishwari = []; + + Future selectDriverAndCarForMishwariTrip() async { + // Calculate the bounds for 20km + double latitudeOffset = 0.1795; // 20km range in latitude + double longitudeOffset = 0.2074; // 20km range in longitude + + // Calculate bounding box based on passenger's location + double southwestLat = passengerLocation.latitude - latitudeOffset; + double northeastLat = passengerLocation.latitude + latitudeOffset; + double southwestLon = passengerLocation.longitude - longitudeOffset; + double northeastLon = passengerLocation.longitude + longitudeOffset; + + // Create the payload with calculated bounds + var payload = { + 'southwestLat': southwestLat.toString(), + 'northeastLat': northeastLat.toString(), + 'southwestLon': southwestLon.toString(), + 'northeastLon': northeastLon.toString(), + }; + + try { + // Fetch data from the API + var res = await CRUD().get( + link: AppLink.selectDriverAndCarForMishwariTrip, payload: payload); + + if (res != 'failure') { + // Check if response is valid JSON + try { + var d = jsonDecode(res); + driversForMishwari = d['message']; + Log.print('driversForMishwari: $driversForMishwari'); + update(); + } catch (e) { + // Handle invalid JSON format + print("Error decoding JSON: $e"); + return 'Server returned invalid data. Please try again later.'; + } + } else { + return 'No driver available now, try again later. Thanks for using our app.' + .tr; + } + } catch (e) { + // Handle network or other exceptions + print("Error fetching data: $e"); + return 'There was an issue connecting to the server. Please try again later.' + .tr; + } + } + + final Rx selectedDateTime = DateTime.now().obs; + + void updateDateTime(DateTime newDateTime) { + selectedDateTime.value = newDateTime; + } + + Future mishwariOption() async { + isLoading = true; + update(); + // add dialoug for select driver and car + await selectDriverAndCarForMishwariTrip(); + Future.delayed(Duration.zero); + isLoading = false; + update(); + Get.to(() => CupertinoDriverListWidget()); + + // changeCashConfirmPageShown(); + } + + var driverIdVip = ''; + Future saveTripData( + Map driver, DateTime tripDateTime) async { + try { + // Prepare trip data + Map tripData = { + 'id': driver['driver_id'].toString(), // Ensure the id is a string + 'phone': driver['phone'], + 'gender': driver['gender'], + 'name': driver['NAME'], + 'name_english': driver['name_english'], + 'address': driver['address'], + 'religion': driver['religion'] ?? 'UnKnown', + 'age': driver['age'].toString(), // Convert age to String + 'education': driver['education'] ?? 'UnKnown', //startlocationname + 'license_type': driver['license_type'] ?? 'UnKnown', + 'national_number': driver['national_number'] ?? 'UnKnown', + 'car_plate': driver['car_plate'], + 'make': driver['make'], + 'model': driver['model'], + 'year': driver['year'].toString(), // Convert year to String + 'color': driver['color'], + 'color_hex': driver['color_hex'], + 'displacement': driver['displacement'], + 'fuel': driver['fuel'], + 'token': driver['token'], + 'rating': driver['rating'].toString(), // Convert rating to String + 'countRide': + driver['ride_count'].toString(), // Convert countRide to String + 'passengerId': box.read(BoxName.passengerID), + 'timeSelected': tripDateTime.toIso8601String(), + 'status': 'pending', + 'startNameAddress': startNameAddress.toString(), + 'locationCoordinate': + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + }; + Log.print('tripData: $tripData'); + + // Send data to server + var response = + await CRUD().post(link: AppLink.addMishwari, payload: tripData); + // Log.print('response: $response'); + + if (response != 'failure') { + // Trip saved successfully + // Get.snackbar('Success'.tr, 'Trip booked successfully'.tr); + var id = response['message']['id'].toString(); + await CRUD().post( + link: '${AppLink.IntaleqSyriaServer}/ride/rides/add.php', + payload: { + "start_location": + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + "end_location": + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + "date": DateTime.now().toString(), + "time": DateTime.now().toString(), + "endtime": + DateTime.now().add(const Duration(hours: 2)).toString(), + "price": '50', + "passenger_id": box.read(BoxName.passengerID).toString(), + "driver_id": driver['driver_id'].toString(), + "status": "waiting", + 'carType': 'vip', + "price_for_driver": '50', + "price_for_passenger": '50', + "distance": '20', + "paymentMethod": 'cash', + }).then((value) { + if (value is String) { + final parsedValue = jsonDecode(value); + rideId = parsedValue['message']; + } else if (value is Map) { + rideId = value['message']; + } else { + Log.print('Unexpected response type: ${value.runtimeType}'); + } + }); + if (AppLink.endPoint != AppLink.IntaleqSyriaServer) { + await CRUD().post( + link: "${AppLink.endPoint}/ride/mishwari/add.php", + payload: tripData); + CRUD().post(link: '${AppLink.endPoint}/ride/rides/add.php', payload: { + "start_location": + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + "end_location": + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + "date": DateTime.now().toString(), + "time": DateTime.now().toString(), + "endtime": DateTime.now().add(const Duration(hours: 2)).toString(), + "price": '50', + "passenger_id": box.read(BoxName.passengerID).toString(), + "driver_id": driver['driver_id'].toString(), + "status": "waiting", + 'carType': 'vip', + "price_for_driver": '50', + "price_for_passenger": '50', + "distance": '20', + "paymentMethod": 'cash', + }); + } + driverIdVip = driver['driver_id'].toString(); + driverId = driver['driver_id'].toString(); + + DateTime timeSelected = DateTime.parse(tripDateTime.toIso8601String()); + Get.find().scheduleNotificationsForTimeSelected( + "Your trip is scheduled".tr, + "Don't forget your ride!".tr, + "tone1", + timeSelected); + // Optionally, set up local notification or send a push notification + + // await firebaseMessagesController.sendNotificationToDriverMAP( + // 'OrderVIP', + // rideId.toString(), + // (driver['token'].toString()), + // [ + // id, + // rideId, + // driver['id'], + // passengerLocation.latitude.toString(), + // startNameAddress.toString(), + // passengerLocation.longitude.toString(), + // (box.read(BoxName.name).toString().split(' ')[0]).toString(), + // box.read(BoxName.passengerID).toString(), + // box.read(BoxName.phone).toString(), + // box.read(BoxName.email).toString(), + // box.read(BoxName.passengerPhotoUrl).toString(), + // box.read(BoxName.tokenFCM).toString(), + // (driver['token'].toString()), + // ], + // 'order'); + await NotificationService.sendNotification( + category: 'OrderVIP', + target: driver['token'].toString(), + title: 'OrderVIP'.tr, + body: '$rideId - VIP Trip', + isTopic: false, // Important: this is a token + tone: 'tone1', + driverList: [ + id, + rideId, + driver['id'], + passengerLocation.latitude.toString(), + startNameAddress.toString(), + passengerLocation.longitude.toString(), + (box.read(BoxName.name).toString().split(' ')[0]).toString(), + box.read(BoxName.passengerID).toString(), + box.read(BoxName.phone).toString(), + box.read(BoxName.email).toString(), + box.read(BoxName.passengerPhotoUrl).toString(), + box.read(BoxName.tokenFCM).toString(), + (driver['token'].toString()), + ], + ); + if (response['message'] == "Trip updated successfully") { + mySnackbarSuccess("Trip updated successfully".tr); + Log.print( + 'previous_driver_token: ${response['previous_driver_token']}'); + + // firebaseMessagesController.sendNotificationToDriverMAP( + // 'Order VIP Canceld'.tr, + // 'Passenger cancel order'.tr, + // response['previous_driver_token'].toString(), + // [], + // 'cancel', + // ); + await NotificationService.sendNotification( + category: 'Order VIP Canceld', + target: response['previous_driver_token'].toString(), + title: 'Order VIP Canceld'.tr, + body: 'Passenger cancel order'.tr, + isTopic: false, // Important: this is a token + tone: 'cancel', + driverList: [], + ); + } + // data = []; + isBottomSheetShown = false; + update(); + Get.to(() => VipWaittingPage()); + } else { + throw Exception('Failed to save trip'); + } + } catch (e) { + // Show error message with more details for debugging + Get.snackbar('Error'.tr, 'Failed to book trip: $e'.tr, + backgroundColor: AppColor.redColor); + Log.print('Error: $e'); + } + } + + cancelVip(String token, tripId) async { + // firebaseMessagesController.sendNotificationToDriverMAP( + // 'Order VIP Canceld'.tr, + // 'Passenger cancel order'.tr, + // token, + // [], + // 'cancel', + // ); + var res = await CRUD() + .post(link: AppLink.cancelMishwari, payload: {'id': tripId}); + if (res != 'failur') { + Get.back(); + mySnackbarSuccess('You canceled VIP trip'.tr); + } + } + + sendToDriverAgain(String token) { + NotificationService.sendNotification( + category: 'Order VIP Canceld', + target: token.toString(), + title: 'Order VIP Canceld'.tr, + body: 'Passenger cancel order'.tr, + isTopic: false, // Important: this is a token + tone: 'cancel', + driverList: [], + ); + } + +// دالة الفحص عند بدء التطبيق + Future detectAndCacheDeviceTier() async { + // 1. استخدام الكلاس الذي أنشأناه سابقاً للفحص + bool isHighEnd = await DevicePerformanceManager.isHighEndDevice(); + + // 2. طباعة النتيجة للتأكد + Log.print("Device Analysis - Is Flagship/HighEnd? $isHighEnd"); + + // 3. تخزين النتيجة بشكل منطقي صحيح + // إذا كان الجهاز قوياً (true)، فإن وضع الـ LowEnd يكون (false) + // والعكس صحيح + box.write(BoxName.lowEndMode, !isHighEnd); + } + + initilizeGetStorage() async { + if (box.read(BoxName.addWork) == null) { + box.write(BoxName.addWork, 'addWork'); + } + if (box.read(BoxName.addHome) == null) { + box.write(BoxName.addHome, 'addHome'); + } + if (box.read(BoxName.lowEndMode) == null) { + detectAndCacheDeviceTier(); + } + } + + late List recentPlaces = []; + getFavioratePlaces0() async { + recentPlaces = await sql.getCustomQuery( + 'SELECT DISTINCT latitude, longitude, name, rate FROM ${TableName.recentLocations}'); + } + + getFavioratePlaces() async { + recentPlaces = await sql.getCustomQuery( + 'SELECT * FROM ${TableName.recentLocations} ORDER BY createdAt DESC'); + // Log.print('recentPlaces: ${recentPlaces}'); + } + + double passengerRate = 5; + double comfortPrice = 45; + double speedPrice = 40; + double mashwariPrice = 40; + double familyPrice = 55; + double deliveryPrice = 1.2; + double minFareSYP = 16000; // حد أدنى للأجرة (سوريا) + double minBillableKm = 1.0; // حد أدنى للمسافة المفوترة + double commissionPct = 15; // عمولة التطبيق % (راكب) + + getKazanPercent() async { + var res = await CRUD().get( + link: AppLink.getKazanPercent, + payload: {'country': box.read(BoxName.countryCode).toString()}, + ); + if (res != 'failure') { + var json = jsonDecode(res); + kazan = double.parse(json['message'][0]['kazan']); + naturePrice = double.parse(json['message'][0]['naturePrice']); + heavyPrice = double.parse(json['message'][0]['heavyPrice']); + latePrice = double.parse(json['message'][0]['latePrice']); + comfortPrice = double.parse(json['message'][0]['comfortPrice']); + speedPrice = double.parse(json['message'][0]['speedPrice']); + deliveryPrice = double.parse(json['message'][0]['deliveryPrice']); + mashwariPrice = double.parse(json['message'][0]['freePrice']); + familyPrice = double.parse(json['message'][0]['familyPrice']); + fuelPrice = double.parse(json['message'][0]['fuelPrice']); + } + } + + getPassengerRate() async { + var res = await CRUD().get( + link: AppLink.getPassengerRate, + payload: {'passenger_id': box.read(BoxName.passengerID)}); + if (res != 'failure') { + var message = jsonDecode(res)['message']; + if (message['rating'] == null) { + passengerRate = 5.0; // Default rating + } else { + // Safely parse the rating to double + var rating = message['rating']; + if (rating is String) { + passengerRate = + double.tryParse(rating) ?? 5.0; // Default if parsing fails + } else if (rating is num) { + passengerRate = + rating.toDouble(); // Already a number, convert to double + } else { + passengerRate = 5.0; // Default for unexpected data types + } + } + } else { + passengerRate = 5.0; // Default rating for failure + } + } + + addFingerPrint() async { + String fingerPrint = await DeviceHelper.getDeviceFingerprint(); + await CRUD().postWallet(link: AppLink.addFingerPrint, payload: { + 'token': (box.read(BoxName.tokenFCM.toString())), + 'passengerID': box.read(BoxName.passengerID).toString(), + "fingerPrint": fingerPrint + }); + } + + firstTimeRunToGetCoupon() async { + // Check if it's the first time and the app is installed and gift token is available + if (box.read(BoxName.isFirstTime).toString() == '0' && + box.read(BoxName.isInstall).toString() == '1' && + box.read(BoxName.isGiftToken).toString() == '0') { + var promo, discount, validity; + var resPromo = await CRUD().get(link: AppLink.getPromoFirst, payload: { + "passengerID": box.read(BoxName.passengerID).toString(), + }); + if (resPromo != 'failure') { + var d1 = jsonDecode(resPromo); + promo = d1['message']['promo_code']; + discount = d1['message']['amount']; + validity = d1['message']['validity_end_date']; + } + box.write(BoxName.isFirstTime, '1'); + + // Show a full-screen modal styled as an ad + Get.dialog( + AlertDialog( + contentPadding: + EdgeInsets.zero, // Removes the padding around the content + content: SizedBox( + width: 300, // Match the width of PromoBanner + // height: 250, // Match the height of PromoBanner + child: PromoBanner( + promoCode: promo, + discountPercentage: discount, + validity: validity, + ), + ), + ), + ); + } + } + + // --- دالة جديدة للاستماع ومعالجة الرابط --- + void _listenForDeepLink() { + // استمع إلى أي تغيير في الإحداثيات القادمة من الرابط + ever(_deepLinkController.deepLinkLatLng, (LatLng? latLng) { + if (latLng != null) { + print('MapPassengerController detected deep link LatLng: $latLng'); + // عندما يتم استلام إحداثيات جديدة، عينها كوجهة + myDestination = latLng; + + // قم بتشغيل المنطق الخاص بك لعرض المسار + // (تأكد من أن `passengerLocation` لديها قيمة أولاً) + if (passengerLocation != null) { + getDirectionMap( + '${passengerLocation.latitude},${passengerLocation.longitude}', + '${myDestination.latitude},${myDestination.longitude}'); + } else { + // يمكنك إظهار رسالة للمستخدم لتمكين الموقع أولاً + print( + 'Cannot process deep link route yet, passenger location is null.'); + } + + // إعادة تعيين القيمة إلى null لمنع التشغيل مرة أخرى عند إعادة بناء الواجهة + _deepLinkController.deepLinkLatLng.value = null; + } + }); + } + + @override + void onInit() async { + super.onInit(); +// // --- إضافة جديدة: تهيئة وحدة التحكم في الروابط العميقة --- + Get.put(DeepLinkController(), permanent: true); +// // ---------------------------------------------------- + // مرحلة 0: الضروري جداً لعرض الخريطة سريعاً + // mapAPIKEY = await storage.read(key: BoxName.mapAPIKEY); + await initilizeGetStorage(); // إعداد سريع + await _initMinimalIcons(); // start/end فقط + // await addToken(); // لو لازم للمصادقة + _listenForDeepLink(); + await getLocation(); // لتحديد الكاميرا + box.write(BoxName.carType, 'yet'); + box.write(BoxName.tipPercentage, '0'); + // await detectAndCacheDeviceTier(); + + // لا تُنشئ Controllers الثقيلة الآن: + Get.lazyPut(() => TextToSpeechController(), + fenix: true); + Get.lazyPut(() => FirebaseMessagesController(), + fenix: true); + Get.lazyPut(() => AudioRecorderController(), + fenix: true); + + // ابدأ الخريطة الآن (الشاشة ظهرت للمستخدم) + // لاحقاً: استخدم SchedulerBinding.instance.addPostFrameCallback إذا احتجت. + + // مرحلة 1: مهام ضرورية للتسعير لكن غير حرجة لظهور UI + unawaited(_stagePricingAndState()); + + // مرحلة 2: تحسينات/كماليات بالخلفية + unawaited(_stageNiceToHave()); + + // ابدأ إعادة تحميل الماركر لكن بثروتل داخلي + // startMarkerReloading(); // تأكد أنه مَخنوق التحديث (throttled) + _startMasterTimer(); + } + +// === Helpers === + + Future _initMinimalIcons() async { + addCustomStartIcon(); + addCustomEndIcon(); + // أجّل باقي الأيقونات: + // addCustomCarIcon(), addCustomLadyIcon(), addCustomMotoIcon(), addCustomStepIcon() + } + + Future _stagePricingAndState() async { + try { + await getKazanPercent(); // أسعار السيرفر + } catch (_) {} + try { + _checkInitialRideStatus(); // تحقق من حالة الرحلة الحالية + } catch (_) {} + // لو عندك ضبط “وضع خفيف” حسب الجهاز: + _applyLowEndModeIfNeeded(); + } + + Future _stageNiceToHave() async { + // نفّذ بالتوازي + await Future.wait([ + Future(() async { + try { + getFavioratePlaces(); + } catch (_) {} + }), + Future(() async { + try { + readyWayPoints(); + } catch (_) {} + }), + Future(() async { + try { + addCustomPicker(); + } catch (_) {} + }), + Future(() async { + try { + addCustomCarIcon(); + } catch (_) {} + }), + Future(() async { + try { + addCustomLadyIcon(); + } catch (_) {} + }), + Future(() async { + try { + addCustomMotoIcon(); + } catch (_) {} + }), + Future(() async { + try { + addCustomStepIcon(); + } catch (_) {} + }), + Future(() async { + try { + getPassengerRate(); + } catch (_) {} + }), + Future(() async { + try { + firstTimeRunToGetCoupon(); + } catch (_) {} + }), + ]); + try { + cardNumber = await SecureStorage().readData(BoxName.cardNumber); + } catch (_) {} + } + + void _applyLowEndModeIfNeeded() { + // مثال بسيط: يمكنك حفظ فلاج بنظامك (من السيرفر/الإعدادات/الكاش) لتفعيل وضع خفيف + // لاحقاً فعّل: map.trafficEnabled=false, buildingsEnabled=false, تبسيط polylines... + // controller.lowEndMode = true; + } + + uploadPassengerLocation() async { + await CRUD().post(link: AppLink.addpassengerLocation, payload: { + "passengerId": box.read(BoxName.passengerID), + "lat": passengerLocation.latitude.toString(), + "lng": passengerLocation.longitude.toString(), + "rideId": rideId.toString() + }); + } +} + +class CarLocation { + final String id; + final double latitude; + final double longitude; + final double distance; + final double duration; + + CarLocation({ + required this.id, + required this.latitude, + required this.longitude, + this.distance = 10000, + this.duration = 10000, + }); +} + + +================================================== +FILE PATH: ./lib/controller/home/splash_screen_controlle.dart +================================================== + +import 'dart:async'; +import 'dart:math'; +import 'package:Intaleq/controller/functions/crud.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:package_info_plus/package_info_plus.dart'; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/onbording_page.dart'; +import 'package:Intaleq/views/auth/login_page.dart'; +import 'package:Intaleq/controller/auth/login_controller.dart'; +import 'package:Intaleq/controller/functions/secure_storage.dart'; +import 'package:quick_actions/quick_actions.dart'; +import '../../../constant/notification.dart'; +import '../../../main.dart'; +import '../firebase/firbase_messge.dart'; +import '../firebase/local_notification.dart'; +import '../functions/encrypt_decrypt.dart'; + +class SplashScreenController extends GetxController + with GetTickerProviderStateMixin { + late AnimationController _animationController; + late Animation titleFadeAnimation, + titleScaleAnimation, + taglineFadeAnimation, + footerFadeAnimation; + late Animation taglineSlideAnimation; + + final progress = 0.0.obs; + Timer? _progressTimer; + + @override + void onInit() { + super.onInit(); + _animationController = AnimationController( + vsync: this, duration: const Duration(milliseconds: 2000)); + + // Animation definitions + titleFadeAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation( + parent: _animationController, + curve: const Interval(0.0, 0.5, curve: Curves.easeOut))); + titleScaleAnimation = Tween(begin: 0.8, end: 1.0).animate( + CurvedAnimation( + parent: _animationController, + curve: const Interval(0.0, 0.5, curve: Curves.easeOut))); + taglineFadeAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation( + parent: _animationController, + curve: const Interval(0.3, 0.8, curve: Curves.easeOut))); + taglineSlideAnimation = + Tween(begin: const Offset(0, 0.5), end: Offset.zero).animate( + CurvedAnimation( + parent: _animationController, + curve: const Interval(0.3, 0.8, curve: Curves.easeOut))); + footerFadeAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation( + parent: _animationController, + curve: const Interval(0.5, 1.0, curve: Curves.easeOut))); + + _animationController.forward(); + _initializeApp(); + } + + Future _initializeApp() async { + _startProgressAnimation(); + + // Run navigation logic and background services in parallel. + final logicFuture = _performNavigationLogic(); + final backgroundServicesFuture = _initializeBackgroundServices(); + + // Ensure the splash screen is visible for a minimum duration. + final minTimeFuture = Future.delayed(const Duration(seconds: 3)); + + // Wait for all tasks to complete. + await Future.wait([logicFuture, backgroundServicesFuture, minTimeFuture]); + } + + void _startProgressAnimation() { + // Visual timer for the progress bar. + const totalTime = 2800; // ms + const interval = 50; // ms + int elapsed = 0; + + _progressTimer = + Timer.periodic(const Duration(milliseconds: interval), (timer) { + elapsed += interval; + progress.value = (elapsed / totalTime).clamp(0.0, 1.0); + if (elapsed >= totalTime) timer.cancel(); + }); + } + + /// Initializes all heavy background services while the splash animation is running. + Future _initializeBackgroundServices() async { + try { + await EncryptionHelper.initialize(); + + // --- [LAZY LOADING IN ACTION] --- + // This `Get.find()` call will create the NotificationController instance + // for the first time because it was defined with `lazyPut`. + final notificationController = Get.find(); + await notificationController.initNotifications(); + + // The same happens for FirebaseMessagesController. + final fcm = Get.find(); + await fcm.requestFirebaseMessagingPermission(); + + _scheduleDailyNotifications(notificationController); + _initializeQuickActions(); + } catch (e, st) { + CRUD.addError('background_init_error: $e', st.toString(), 'SplashScreen'); + } + } + + /// Determines the next screen based on user's login state. + Future _performNavigationLogic() async { + await _getPackageInfo(); + SecureStorage().saveData('iss', 'mobile-app:'); + + if (box.read(BoxName.onBoarding) == null) { + Get.off(() => OnBoardingPage()); + } else if (box.read(BoxName.email) != null && + box.read(BoxName.phone) != null && + box.read(BoxName.isVerified) == '1') { + // `Get.find()` creates the LoginController instance here. + final loginController = Get.find(); + // The loginController itself will handle navigation via Get.offAll() upon success. + await loginController.loginUsingCredentials( + box.read(BoxName.passengerID).toString(), + box.read(BoxName.email).toString(), + ); + } else { + Get.off(() => LoginPage()); + } + } + + Future _getPackageInfo() async { + try { + final info = await PackageInfo.fromPlatform(); + box.write(BoxName.packagInfo, info.version); + update(); + } catch (e) { + print("Could not get package info: $e"); + } + } + + void _scheduleDailyNotifications(NotificationController controller) { + try { + final List msgs = passengerMessages ?? const []; + if (msgs.isEmpty) { + controller.scheduleNotificationsForSevenDays( + 'Intaleq', 'مرحباً بك! تابع رحلاتك بأمان مع انطلق.', "tone1"); + } else { + final rnd = Random(); + final raw = msgs[rnd.nextInt(msgs.length)]; + final parts = raw.split(':'); + final title = parts.isNotEmpty ? parts.first.trim() : 'Intaleq'; + final body = parts.length > 1 + ? parts.sublist(1).join(':').trim() + : 'مرحباً بك! تابع رحلاتك بأمان مع انطلق.'; + controller.scheduleNotificationsForSevenDays( + title.isEmpty ? 'Intaleq' : title, + body.isEmpty ? 'مرحباً بك! تابع رحلاتك بأمان مع انطلق.' : body, + "tone1"); + } + } catch (e, st) { + CRUD.addError('notif_init: $e', st.toString(), 'SplashScreen'); + } + } + + void _initializeQuickActions() { + final QuickActions quickActions = QuickActions(); + quickActions.initialize((String shortcutType) { + Get.toNamed('/$shortcutType'); + }); + + quickActions.setShortcutItems([ + ShortcutItem( + type: 'shareApp', localizedTitle: 'Share App'.tr, icon: 'icon_share'), + ShortcutItem( + type: 'wallet', localizedTitle: 'Wallet'.tr, icon: 'icon_wallet'), + ShortcutItem( + type: 'profile', localizedTitle: 'Profile'.tr, icon: 'icon_user'), + ShortcutItem( + type: 'contactSupport', + localizedTitle: 'Contact Support'.tr, + icon: 'icon_support'), + ]); + } + + @override + void onClose() { + _progressTimer?.cancel(); + _animationController.dispose(); + super.onClose(); + } +} + + +================================================== +FILE PATH: ./lib/controller/home/blinking_promo_controller.dart.dart +================================================== + +import 'dart:async'; +import 'dart:convert'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../constant/links.dart'; +import '../../views/widgets/elevated_btn.dart'; +import '../functions/crud.dart'; + +class BlinkingController extends GetxController { + final promoFormKey = GlobalKey(); + + final promo = TextEditingController(); + bool promoTaken = false; + void applyPromoCodeToPassenger() async { + //TAWJIHI + if (promoFormKey.currentState!.validate()) { + CRUD().get(link: AppLink.getPassengersPromo, payload: { + 'promo_code': promo.text, + }).then((value) { + if (value == 'failure') { + Get.defaultDialog( + title: 'Promo End !'.tr, + confirm: MyElevatedButton( + title: 'Back', + onPressed: () { + Get.back(); + Get.back(); + }, + )); + } + var decode = jsonDecode(value); + + // if (decode["status"] == "success") { + // var firstElement = decode["message"][0]; + // if (double.parse(box.read(BoxName.passengerWalletTotal)) < 0) { + // totalPassenger = totalCostPassenger - + // (totalCostPassenger * int.parse(firstElement['amount']) / 100); + // update(); + // } else { + // totalPassenger = totalCostPassenger - + // (totalCostPassenger * int.parse(firstElement['amount']) / 100); + // update(); + // } + + // totalDriver = totalDriver - + // (totalDriver * int.parse(firstElement['amount']) / 100); + // promoTaken = true; + // update(); + // Get.back(); + // } + }); + } + } + + // Reactive variable for blinking (on/off) + var isLightOn = false.obs; + + // To animate the border color + var borderColor = Colors.black.obs; + + Timer? _blinkingTimer; + + // Method to start blinking for 5 seconds + void startBlinking() { + int count = 0; + + _blinkingTimer = Timer.periodic(const Duration(seconds: 1), (timer) { + // Toggle light on/off + isLightOn.value = !isLightOn.value; + borderColor.value = isLightOn.value + ? Colors.yellow + : Colors.black; // Animate border color + + count++; + + // Stop blinking after 5 seconds + if (count >= 35) { + timer.cancel(); + isLightOn.value = false; // Ensure light turns off + borderColor.value = Colors.black; // Reset the border color + } + }); + } + + @override + void onClose() { + _blinkingTimer?.cancel(); + super.onClose(); + } +} + + +================================================== +FILE PATH: ./lib/controller/home/home_page_controller.dart +================================================== + +import 'package:get/get.dart'; + +import '../../constant/box_name.dart'; +import '../../main.dart'; + +class HomePageController extends GetxController { + late bool isVibrate = box.read(BoxName.isvibrate) ?? true; + + void changeVibrateOption(bool value) { + isVibrate = box.read(BoxName.isvibrate) ?? true; + isVibrate = value; + box.write(BoxName.isvibrate, value); + update(); + } +} + + +================================================== +FILE PATH: ./lib/controller/home/payment/captain_wallet_controller.dart +================================================== + +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/links.dart'; +import 'package:Intaleq/controller/functions/crud.dart'; +import 'package:Intaleq/main.dart'; + +class CaptainWalletController extends GetxController { + bool isLoading = false; + Map walletDate = {}; + Map walletDateVisa = {}; + Map walletDriverPointsDate = {}; + final formKey = GlobalKey(); + String totalAmount = '0'; + String totalAmountVisa = '0'; + String totalPoints = '0'; + final amountFromBudgetController = TextEditingController(); + + payFromBudget() async { + if (formKey.currentState!.validate()) { + var pointFromBudget = box.read(BoxName.countryCode) == 'Jordan' + ? int.parse((amountFromBudgetController.text)) * 100 + : int.parse((amountFromBudgetController.text)); + + await addDriverPayment('fromBudgetToPoints', + int.parse((amountFromBudgetController.text)) * -1); + Future.delayed(const Duration(seconds: 2)); + await addDriverWallet('fromBudget', pointFromBudget.toString()); + update(); + Get.back(); + // getCaptainWalletFromRide(); + // getCaptainWalletFromBuyPoints(); + // checkAccountCaptainBank(); + } + } + + // Future getCaptainWalletFromRide() async { + // isLoading = true; + // update(); + // var res = await CRUD().get( + // link: AppLink.getAllPaymentFromRide, + // payload: {'driverID': box.read(BoxName.driverID)}, + // ); + // walletDate = jsonDecode(res); + // totalAmount = walletDate['message'][0]['total_amount'].toString() == null + // ? '0' + // : walletDate['message'][0]['total_amount']; + + // var res1 = await CRUD().get( + // link: AppLink.getAllPaymentVisa, + // payload: {'driverID': box.read(BoxName.driverID)}); + // walletDateVisa = jsonDecode(res1); + // totalAmountVisa = walletDateVisa['message'][0]['diff'].toString() == null + // ? '0' + // : walletDateVisa['message'][0]['diff']; + // isLoading = false; + // update(); + // } + + // Future getCaptainWalletFromBuyPoints() async { + // isLoading = true; + // update(); + // var res = await CRUD().get( + // link: AppLink.getDriverPaymentPoints, + // payload: {'driverID': box.read(BoxName.driverID)}, + // ); + // walletDriverPointsDate = jsonDecode(res); + // if (walletDriverPointsDate['message'][0]['driverID'].toString() == + // box.read(BoxName.driverID)) { + // double totalPointsDouble = double.parse( + // walletDriverPointsDate['message'][0]['total_amount'].toString()); + // totalPoints = totalPointsDouble.toStringAsFixed(0); + // } else { + // totalPoints = '0'; + // } + + // isLoading = false; + // update(); + // } + + late String paymentID; + Future addDriverPayment(String paymentMethod, amount) async { + var res = + await CRUD().postWallet(link: AppLink.addDriverPaymentPoints, payload: { + 'driverID': box.read(BoxName.driverID).toString(), + 'amount': amount.toString(), + 'payment_method': paymentMethod.toString(), + }); + var d = jsonDecode(res); + paymentID = d['message'].toString(); + } + + Future addDriverWallet(String paymentMethod, point) async { + await CRUD().postWallet(link: AppLink.addDriversWalletPoints, payload: { + 'driverID': box.read(BoxName.driverID).toString(), + 'paymentID': paymentID.toString(), + 'amount': point, + 'paymentMethod': paymentMethod.toString(), + }); + } + + //check if account bank is created or not + Future checkAccountCaptainBank() async { + isLoading = false; + update(); + if (box.read(BoxName.accountIdStripeConnect).toString().isEmpty) { + var res = await CRUD().getWallet(link: AppLink.getAccount, payload: { + 'id': box.read(BoxName.driverID).toString(), + }); + var d = jsonDecode(res); + if (d['status'] != 'failure') { + box.write(BoxName.accountIdStripeConnect, + d['message'][0]['accountBank'].toString()); + } + } + isLoading = true; + update(); + } + + @override + void onInit() { + // getCaptainWalletFromRide(); + // getCaptainWalletFromBuyPoints(); + // checkAccountCaptainBank(); + super.onInit(); + } +} + + +================================================== +FILE PATH: ./lib/controller/home/payment/credit_card_Controller.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../../constant/box_name.dart'; +import '../../functions/digit_obsecur_formate.dart'; +import '../../functions/secure_storage.dart'; + +class CreditCardController extends GetxController { + final GlobalKey formKey = GlobalKey(); + final TextEditingController cardNumberController = TextEditingController(); + final TextEditingController cardHolderNameController = + TextEditingController(); + final TextEditingController expiryDateController = TextEditingController(); + final TextEditingController cvvCodeController = TextEditingController(); + openPayment() async { + String? cardNumber = await SecureStorage().readData(BoxName.cardNumber); + String? cardHolderName = + await SecureStorage().readData(BoxName.cardHolderName); + String? expiryDate = await SecureStorage().readData(BoxName.expiryDate); + String? cvvCode = await SecureStorage().readData(BoxName.cvvCode); + + // if (cvvCode != null && cvvCode.isNotEmpty) { + // final maskedCardNumber = DigitObscuringFormatter() + // .formatEditUpdate( + // TextEditingValue.empty, + // TextEditingValue(text: cardNumber ?? ''), + // ) + // .text; + + // cardNumberController.text = maskedCardNumber; + // cardHolderNameController.text = cardHolderName ?? ''; + // expiryDateController.text = expiryDate ?? ''; + // cvvCodeController.text = cvvCode; + // } + } + + @override + void onInit() async { + super.onInit(); + openPayment(); + // String? cardNumber = await SecureStorage().readData(BoxName.cardNumber); + // String? cardHolderName = + // await SecureStorage().readData(BoxName.cardHolderName); + // String? expiryDate = await SecureStorage().readData(BoxName.expiryDate); + // String? cvvCode = await SecureStorage().readData(BoxName.cvvCode); + + // if (cvvCode != null && cvvCode.isNotEmpty) { + // final maskedCardNumber = DigitObscuringFormatter() + // .formatEditUpdate( + // TextEditingValue.empty, + // TextEditingValue(text: cardNumber ?? ''), + // ) + // .text; + + // cardNumberController.text = maskedCardNumber; + // cardHolderNameController.text = cardHolderName ?? ''; + // expiryDateController.text = expiryDate ?? ''; + // cvvCodeController.text = cvvCode; + // } + } +} + +class CreditCardModel { + String cardNumber; + String cardHolderName; + String expiryDate; + String cvvCode; + + CreditCardModel({ + required this.cardNumber, + required this.cardHolderName, + required this.expiryDate, + required this.cvvCode, + }); +} + + +================================================== +FILE PATH: ./lib/controller/home/profile/promos_controller.dart +================================================== + +import 'dart:convert'; + +import 'package:Intaleq/constant/box_name.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/links.dart'; +import 'package:Intaleq/controller/functions/crud.dart'; + +import '../../../main.dart'; + +class PromosController extends GetxController { + List promoList = []; + bool isLoading = true; + late String promos; + @override + void onInit() { + getPromoByToday(); + super.onInit(); + } + + Future getPromoByToday() async { + var res = await CRUD().get(link: AppLink.getPromoBytody, payload: { + 'passengerID': box.read(BoxName.passengerID).toString(), + }); + if (res.toString() == 'failure') { + // Get.defaultDialog( + // title: 'No Promo for today .'.tr, + // middleText: '', + // titleStyle: AppStyle.title, + // confirm: MyElevatedButton( + // title: 'Back'.tr, + // onPressed: () { + // Get.back(); + // Get.back(); + // })); + isLoading = false; + update(); + } else { + var jsonDecoded = jsonDecode(res); + + promoList = jsonDecoded['message']; + isLoading = false; + update(); + } + } +} + + +================================================== +FILE PATH: ./lib/controller/home/profile/invit_controller.dart +================================================== + +import 'dart:convert'; + +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/colors.dart'; +import 'package:Intaleq/constant/links.dart'; +import 'package:Intaleq/controller/functions/crud.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_contacts/flutter_contacts.dart'; +import 'package:get/get.dart'; +import 'package:share_plus/share_plus.dart'; + +import '../../../main.dart'; +import '../../../print.dart'; +import '../../../views/widgets/error_snakbar.dart'; +import '../../../views/widgets/mydialoug.dart'; +import '../../functions/launch.dart'; +import '../../notification/notification_captain_controller.dart'; +import '../../payment/payment_controller.dart'; + +class InviteController extends GetxController { + final TextEditingController invitePhoneController = TextEditingController(); + List driverInvitationData = []; + List driverInvitationDataToPassengers = []; + String? couponCode; + String? driverCouponCode; + + int selectedTab = 0; + PassengerStats passengerStats = PassengerStats(); + + List contacts = []; + RxList> contactMaps = >[].obs; + + @override + void onInit() { + super.onInit(); + // It's good practice to fetch initial data in onInit or onReady + // fetchDriverStats(); + // fetchDriverStatsPassengers(); + } + + void updateSelectedTab(int index) { + selectedTab = index; + update(); + } + + // --- Sharing Methods --- + + Future shareDriverCode() async { + if (driverCouponCode != null) { + final String shareText = ''' +${'Join Intaleq as a driver using my referral code!'.tr} +${'Use code:'.tr} $driverCouponCode +${'Download the Intaleq Driver app now and earn rewards!'.tr} +'''; + await Share.share(shareText); + } + } + + Future sharePassengerCode() async { + if (couponCode != null) { + final String shareText = ''' +${'Get a discount on your first Intaleq ride!'.tr} +${'Use my referral code:'.tr} $couponCode +${'Download the Intaleq app now and enjoy your ride!'.tr} +'''; + await Share.share(shareText); + } + } + + // --- Data Fetching --- + + void fetchDriverStats() async { + try { + var response = await CRUD().get(link: AppLink.getInviteDriver, payload: { + "driverId": box.read(BoxName.driverID), + }); + if (response != 'failure') { + var data = jsonDecode(response); + driverInvitationData = data['message']; + update(); + } + } catch (e) { + Log.print("Error fetching driver stats: $e"); + } + } + + void fetchDriverStatsPassengers() async { + try { + var response = await CRUD() + .get(link: AppLink.getDriverInvitationToPassengers, payload: { + "driverId": box.read(BoxName.passengerID), + }); + if (response != 'failure') { + var data = jsonDecode(response); + driverInvitationDataToPassengers = data['message']; + update(); + } + } catch (e) { + Log.print("Error fetching passenger stats: $e"); + } + } + + // --- Contact Handling --- + + /// **IMPROVEMENT**: This function now filters out contacts without any phone numbers. + /// This is the fix for the `RangeError` you were seeing, which happened when the UI + /// tried to access the first phone number of a contact that had none. + Future pickContacts() async { + try { + if (await FlutterContacts.requestPermission(readonly: true)) { + final List allContacts = + await FlutterContacts.getContacts(withProperties: true); + final int totalContactsOnDevice = allContacts.length; + + // **FIX**: Filter contacts to only include those with at least one phone number. + contacts = allContacts.where((c) => c.phones.isNotEmpty).toList(); + final int contactsWithPhones = contacts.length; + + if (contactsWithPhones > 0) { + Log.print('Found $contactsWithPhones contacts with phone numbers.'); + contactMaps.value = contacts.map((contact) { + return { + 'name': contact.displayName, + 'phones': contact.phones.map((p) => p.number).toList(), + 'emails': contact.emails.map((e) => e.address).toList(), + }; + }).toList(); + update(); + + // **IMPROVEMENT**: Provide feedback if some contacts were filtered out. + if (contactsWithPhones < totalContactsOnDevice) { + Get.snackbar('Contacts Loaded'.tr, + '${'Showing'.tr} $contactsWithPhones ${'of'.tr} $totalContactsOnDevice ${'contacts. Others were hidden because they don\'t have a phone number.'.tr}', + snackPosition: SnackPosition.BOTTOM); + } + } else { + Get.snackbar('No contacts found'.tr, + 'No contacts with phone numbers were found on your device.'.tr); + } + } else { + Get.snackbar('Permission denied'.tr, + 'Contact permission is required to pick contacts'.tr); + } + } catch (e) { + Log.print('Error picking contacts: $e'); + Get.snackbar( + 'Error'.tr, 'An error occurred while picking contacts: $e'.tr); + } + } + + void selectPhone(String phone) { + invitePhoneController.text = phone; + update(); + Get.back(); + } + + /// **IMPROVEMENT**: A new robust function to format phone numbers specifically for Syria (+963). + /// It handles various user inputs gracefully to produce a standardized international format. + String _formatSyrianPhoneNumber(String phone) { + // 1. Remove all non-digit characters to clean the input. + String digitsOnly = phone.replaceAll(RegExp(r'\D'), ''); + + // 2. If it already starts with the country code, we assume it's correct. + if (digitsOnly.startsWith('963')) { + return '$digitsOnly'; + } + + // 3. If it starts with '09' (common local format), remove the leading '0'. + if (digitsOnly.startsWith('09')) { + digitsOnly = digitsOnly.substring(1); + } + + // 4. Prepend the Syrian country code. + return '963$digitsOnly'; + } + + /// **IMPROVEMENT**: This method now uses the new phone formatting logic and + /// sends a much-improved, user-friendly WhatsApp message. + void sendInviteToPassenger() async { + if (invitePhoneController.text.isEmpty || + invitePhoneController.text.length < 9) { + mySnackeBarError('Please enter a correct phone'.tr); + return; + } + + try { + // Use the new formatting function to ensure the number is correct. + String formattedPhoneNumber = + _formatSyrianPhoneNumber(invitePhoneController.text); + + var response = + await CRUD().post(link: AppLink.addInvitationPassenger, payload: { + "driverId": box.read(BoxName.passengerID), + "inviterPassengerPhone": formattedPhoneNumber, + }); + + if (response != 'failure') { + var d = response; + Get.snackbar('Success'.tr, 'Invite sent successfully'.tr, + backgroundColor: Colors.green, colorText: Colors.white); + + String expirationTime = d['message']['expirationTime'].toString(); + String inviteCode = d['message']['inviteCode'].toString(); + + // New and improved WhatsApp message for better user engagement. + String message = + "👋 ${'Hello! I\'m inviting you to try Intaleq.'.tr}\n\n" + "🎁 ${'Use my invitation code to get a special gift on your first ride!'.tr}\n\n" + "${'Your personal invitation code is:'.tr}\n" + "*$inviteCode*\n\n" + "⏳ ${'Be sure to use it quickly! This code expires at'.tr} *$expirationTime*.\n\n" + "📲 ${'Download the app now:'.tr}\n" + "• *Android:* https://play.google.com/store/apps/details?id=com.Intaleq.intaleq\n" + "• *iOS:* https://apps.apple.com/st/app/intaleq-rider/id6748075179\n\n" + "${'See you on the road!'.tr} 🚗"; + + launchCommunication('whatsapp', formattedPhoneNumber, message); + invitePhoneController.clear(); + update(); + } else { + Get.snackbar( + 'Error'.tr, "This phone number has already been invited.".tr, + backgroundColor: AppColor.redColor, + duration: const Duration(seconds: 4)); + } + } catch (e) { + Log.print("Error sending invite: $e"); + Get.snackbar( + 'Error'.tr, 'An unexpected error occurred. Please try again.'.tr, + backgroundColor: AppColor.redColor); + } + } + + // This function is dependent on the `pickContacts` method filtering out contacts without phones. + savePhoneToServer() async { + for (var contactMap in contactMaps) { + // The `pickContacts` function ensures the 'phones' list is not empty here. + var phones = contactMap['phones'] as List; + var res = await CRUD().post(link: AppLink.savePhones, payload: { + "name": contactMap['name'] ?? 'No Name', + "phones": phones.first, // Safely access the first phone number + "phones2": phones.join(', '), + }); + if (res == 'failure') { + Log.print('Failed to save contact: ${contactMap['name']}'); + } + } + } + + void onSelectPassengerInvitation(int index) async { + try { + final invitation = driverInvitationDataToPassengers[index]; + final tripCount = + int.tryParse(invitation['countOfInvitDriver'].toString()) ?? 0; + final passengerName = invitation['passengerName'].toString(); + final isGiftTaken = invitation['isGiftToken'].toString() == '1'; + + if (tripCount >= 2) { + // Gift can be claimed + if (!isGiftTaken) { + MyDialog().getDialog( + 'You deserve the gift'.tr, + '${'Claim your 20 LE gift for inviting'.tr} $passengerName!', + () async { + Get.back(); // Close dialog first + await Get.find().addPassengersWallet('20'); + await CRUD().post( + link: AppLink.updatePassengerGift, + payload: {'id': invitation['id']}, + ); + NotificationCaptainController().addNotificationCaptain( + invitation['passengerInviterId'].toString(), + "You have got a gift for invitation".tr, + '${"You have earned 20".tr} ${'LE'}', + false, + ); + fetchDriverStatsPassengers(); // Refresh list + }, + ); + } else { + MyDialog().getDialog( + "Gift Already Claimed".tr, + "You have already received your gift for inviting $passengerName." + .tr, + () => Get.back(), + ); + } + } else { + // Gift not yet earned + MyDialog().getDialog( + '${'Keep it up!'.tr}', + '$passengerName ${'has completed'.tr} $tripCount / 2 ${'trips'.tr}. ${"You can claim your gift once they complete 2 trips.".tr}', + () => Get.back(), + ); + } + } catch (e) { + Log.print("Error in onSelectPassengerInvitation: $e"); + } + } +} + +class PassengerStats { + final int totalInvites; + final int activeUsers; + final double totalEarnings; + + PassengerStats({ + this.totalInvites = 0, + this.activeUsers = 0, + this.totalEarnings = 0.0, + }); +} + + +================================================== +FILE PATH: ./lib/controller/home/profile/complaint_controller.dart +================================================== + +import 'dart:convert'; +import 'dart:io'; + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:http/http.dart' as http; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/colors.dart'; +import 'package:Intaleq/constant/links.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/controller/functions/crud.dart'; +import 'package:Intaleq/main.dart'; +import 'package:Intaleq/views/widgets/elevated_btn.dart'; +import 'package:http_parser/http_parser.dart'; +import 'package:mime/mime.dart'; + +import '../../../constant/api_key.dart'; +import '../../../env/env.dart'; +import '../../../print.dart'; +import '../../../views/widgets/mydialoug.dart'; +import '../../functions/encrypt_decrypt.dart'; + +class ComplaintController extends GetxController { + bool isLoading = false; + final formKey = GlobalKey(); + final complaintController = TextEditingController(); + + List feedBack = []; + Map? passengerReport; + Map? driverReport; + + var isUploading = false.obs; + var uploadSuccess = false.obs; + String audioLink = ''; // سيتم تخزين رابط الصوت هنا بعد الرفع + + @override + void onInit() { + super.onInit(); + getLatestRidesForPassengers(); + } + + // --- دالة مخصصة لعرض إشعارات Snackbar بشكل جميل --- + void _showCustomSnackbar(String title, String message, + {bool isError = false}) { + Get.snackbar( + '', // العنوان سيتم التعامل معه عبر titleText + '', // الرسالة سيتم التعامل معها عبر messageText + titleText: Text(title.tr, + style: const TextStyle( + color: Colors.white, fontWeight: FontWeight.bold, fontSize: 16)), + messageText: Text(message.tr, + style: const TextStyle(color: Colors.white, fontSize: 14)), + backgroundColor: isError + ? AppColor.redColor.withOpacity(0.95) + : const Color.fromARGB(255, 6, 148, 79).withOpacity(0.95), + icon: Icon(isError ? Icons.error_outline : Icons.check_circle_outline, + color: Colors.white, size: 28), + borderRadius: 12, + margin: const EdgeInsets.all(15), + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 18), + snackPosition: SnackPosition.BOTTOM, + duration: const Duration(seconds: 4), + colorText: Colors.white, + ); + } + + // --- هذه الدالة تبقى كما هي لجلب بيانات الرحلة --- + getLatestRidesForPassengers() async { + isLoading = true; + update(); + var res = await CRUD().get(link: AppLink.getFeedBack, payload: { + 'passengerId': box.read(BoxName.passengerID).toString(), + }); + if (res != 'failure') { + var d = jsonDecode(res)['message']; + feedBack = d; + } + isLoading = false; + update(); + } + + // --- تم تحديث الهيدر في هذه الدالة --- + Future uploadAudioFile(File audioFile) async { + try { + isUploading.value = true; + update(); + + var uri = Uri.parse('${AppLink.IntaleqSyriaServer}/upload_audio.php'); + var request = http.MultipartRequest('POST', uri); + String token = r(box.read(BoxName.jwt)).toString().split(Env.addd)[0]; + + var mimeType = lookupMimeType(audioFile.path); + // ** التعديل: تم استخدام نفس هيدر التوثيق ** + request.headers.addAll({ + 'Authorization': 'Bearer $token', + }); + request.files.add( + await http.MultipartFile.fromPath( + 'audio', + audioFile.path, + contentType: mimeType != null ? MediaType.parse(mimeType) : null, + ), + ); + + var response = await request.send(); + var responseBody = await http.Response.fromStream(response); + + if (response.statusCode == 200) { + var jsonResponse = jsonDecode(responseBody.body); + if (jsonResponse['status'] == 'Audio file uploaded successfully.') { + uploadSuccess.value = true; + audioLink = jsonResponse['link']; // تخزين الرابط في المتغير + Get.back(); + // استخدام الـ Snackbar الجديد + _showCustomSnackbar('Success', 'Audio uploaded successfully.'); + } else { + uploadSuccess.value = false; + _showCustomSnackbar('Error', 'Failed to upload audio file.', + isError: true); + } + } else { + uploadSuccess.value = false; + _showCustomSnackbar('Error', 'Server error: ${response.statusCode}', + isError: true); + } + } catch (e) { + uploadSuccess.value = false; + _showCustomSnackbar( + 'Error', 'An application error occurred during upload.', + isError: true); + } finally { + isUploading.value = false; + update(); + } + } + + // --- الدالة الجديدة التي تتصل بالسكريبت الجديد --- + Future submitComplaintToServer() async { + // 1. التحقق من صحة الفورم + if (!formKey.currentState!.validate() || complaintController.text.isEmpty) { + // استخدام الـ Snackbar الجديد + _showCustomSnackbar( + 'Error', 'Please describe your issue before submitting.', + isError: true); + return; + } + + // 2. التحقق من وجود بيانات الرحلة + if (feedBack.isEmpty) { + // استخدام الـ Snackbar الجديد + _showCustomSnackbar( + 'Error', 'Ride information not found. Please refresh the page.', + isError: true); + return; + } + + isLoading = true; + update(); + + try { + // 3. استخراج البيانات المطلوبة + final rideId = feedBack[0]['id'].toString(); // ! تأكد أن اسم حقل ID صحيح + final complaint = complaintController.text; + String token = r(box.read(BoxName.jwt)).toString().split(Env.addd)[0]; + + // 4. استدعاء سكربت PHP الجديد باستخدام http.post + final response = await http.post( + Uri.parse(AppLink.add_solve_all), + headers: {'Authorization': 'Bearer $token'}, + body: { + 'ride_id': rideId, + 'complaint_text': complaint, + 'audio_link': audioLink, + }, + ); + + Log.print('Server Response: ${response.body}'); + + if (response.statusCode != 200) { + _showCustomSnackbar( + 'Error', 'Failed to connect to the server. Please try again.', + isError: true); + return; + } + + // 5. التعامل مع محتوى الرد من الخادم + final responseData = jsonDecode(response.body); + + if (responseData['status'] == 'success') { + passengerReport = responseData['data']['passenger_response']; + driverReport = responseData['data']['driver_response']; + update(); + + MyDialogContent().getDialog( + 'Success'.tr, Text('Your complaint has been submitted.'.tr), () { + Get.back(); + complaintController.clear(); + audioLink = ''; + formKey.currentState?.reset(); + }); + } else { + String errorMessage = + responseData['message'] ?? 'An unknown server error occurred'.tr; + _showCustomSnackbar('Submission Failed', errorMessage, isError: true); + } + } catch (e) { + Log.print("Submit Complaint Error: $e"); + _showCustomSnackbar('Error', 'An application error occurred.'.tr, + isError: true); + } finally { + isLoading = false; + update(); + } + } +} + + +================================================== +FILE PATH: ./lib/controller/home/profile/order_history_controller.dart +================================================== + +import 'dart:convert'; + +import 'package:get/get.dart'; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/links.dart'; +import 'package:Intaleq/controller/functions/crud.dart'; +import 'package:Intaleq/main.dart'; + +class OrderHistoryController extends GetxController { + List orderHistoryListPassenger = []; + bool isloading = true; + + @override + void onInit() { + getOrderHistoryByPassenger(); + super.onInit(); + } + + Future getOrderHistoryByPassenger() async { + var res = await CRUD().get(link: AppLink.getRides, payload: { + 'passenger_id': box.read(BoxName.passengerID).toString(), + }); + if (res.toString() == 'failure') { + // Get.snackbar('failure', 'message'); + isloading = false; + update(); + } else { + var jsonDecoded = jsonDecode(res); + + orderHistoryListPassenger = jsonDecoded['data']; + isloading = false; + update(); + } + } +} + + +================================================== +FILE PATH: ./lib/controller/rate/rate_conroller.dart +================================================== + +import 'package:flutter/cupertino.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/links.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/controller/functions/crud.dart'; +import 'package:Intaleq/controller/home/map_passenger_controller.dart'; +import 'package:Intaleq/main.dart'; +import 'package:Intaleq/views/home/map_page_passenger.dart'; +import 'package:Intaleq/views/widgets/elevated_btn.dart'; + +import '../firebase/notification_service.dart'; +import '../payment/payment_controller.dart'; + +// import '../home/captin/home_captain_controller.dart'; + +class RateController extends GetxController { + double selectedRateItemId = -1; + TextEditingController comment = TextEditingController(); + String? rideId, passengerId, driverId, driverName, price; + late GlobalKey formKey; + @override + void onInit() { + formKey = GlobalKey(); + passengerId = Get.arguments['passengerId']; + rideId = Get.arguments['rideId']; + driverId = Get.arguments['driverId']; + driverName = Get.arguments['driverName']; + price = Get.arguments['price']; + box.write(BoxName.tipPercentage, '0'); + super.onInit(); + } + + void selectRateItem(double id) { + selectedRateItemId = id; + update(); + } + + addRateToDriver() async { + if (selectedRateItemId < 1) { + Get.defaultDialog( + title: 'You Should choose rate figure'.tr, + titleStyle: AppStyle.title, + middleText: '', + confirm: MyElevatedButton(title: 'Ok', onPressed: () => Get.back())); + } else if (Get.find().isWalletChecked == true) { + double tip = 0; + tip = (Get.find().totalPassenger) * + (double.parse(box.read(BoxName.tipPercentage).toString())); + + if (tip > 0) { + var res = await CRUD().post(link: AppLink.addTips, payload: { + 'passengerID': box.read(BoxName.passengerID), + 'driverID': Get.find().driverId.toString(), + 'rideID': Get.find().rideId.toString(), + 'tipAmount': tip.toString(), + }); + await Get.find() + .addPassengersWallet(((-1) * tip).toString()); + var token1 = await Get.find().generateTokenDriver( + box.read(BoxName.countryCode) == 'Egypt' + ? tip.toStringAsFixed(0) + : (tip * 100).toString()); + await CRUD().postWallet(link: AppLink.addDriversWalletPoints, payload: { + 'driverID': Get.find().driverId.toString(), + 'paymentID': '${Get.find().rideId}tip', + 'amount': box.read(BoxName.countryCode) == 'Egypt' + ? tip.toStringAsFixed(0) + : (tip * 100).toString(), + 'paymentMethod': 'visa-tip', + 'token': token1, + }); + if (res != 'failure') { + await NotificationService.sendNotification( + category: 'You Have Tips', + target: Get.find().driverToken.toString(), + title: 'You Have Tips'.tr, + body: + '${'${tip.toString()}\$${' tips\nTotal is'.tr}'} ${tip + (Get.find().totalPassenger)}', + isTopic: false, // Important: this is a token + tone: 'ding', + driverList: [], + ); + } + } + } + await CRUD().post( + link: "${AppLink.server}/ride/rate/addRateToDriver.php", + payload: { + 'passenger_id': box.read(BoxName.passengerID).toString(), + 'driver_id': driverId.toString(), + 'ride_id': rideId.toString(), + 'rating': selectedRateItemId.toString(), + 'comment': comment.text, + }, + ); + + Get.find().restCounter(); + Get.offAll(const MapPagePassenger()); + } +} + + +================================================== +FILE PATH: ./lib/controller/Widget/home_widget_provider.dart +================================================== + +// import 'package:home_widget/home_widget.dart'; + +// class TripzHomeWidgetProvider { +// static const String widgetName = 'TripzHomeWidget'; + +// // Initialize Home Widget +// static Future initHomeWidget() async { +// await HomeWidget.registerInteractivityCallback(backgroundCallback); +// } + +// // Background Callback for Widget Updates +// static Future backgroundCallback(Uri? uri) async { +// if (uri?.host == 'updateWidget') { +// // Logic to update widget data +// await updateWidgetData(); +// } +// } + +// // Update Widget Data Method +// static Future updateWidgetData() async { +// // Fetch current ride details +// final rideData = await _fetchCurrentRideDetails(); + +// // Update Widget with Ride Information +// await HomeWidget.saveWidgetData( +// 'ride_destination', rideData.destination); +// await HomeWidget.saveWidgetData( +// 'ride_estimated_time', rideData.estimatedTime); +// await HomeWidget.saveWidgetData('ride_fare', rideData.fare); + +// // Trigger Widget Update +// await HomeWidget.updateWidget( +// name: widgetName, +// iOSName: 'TripzWidgetProvider', +// androidName: 'com.mobileapp.store.ride.HomeWidgetProvider', +// ); +// } + +// // Mock method to fetch ride details (replace with actual implementation) +// static Future _fetchCurrentRideDetails() async { +// // Implement actual data fetching logic +// return RideData( +// destination: 'Downtown Office', estimatedTime: '25 mins', fare: 15.50); +// } +// } + +// // Ride Data Model +// class RideData { +// final String destination; +// final String estimatedTime; +// final double fare; + +// RideData( +// {required this.destination, +// required this.estimatedTime, +// required this.fare}); +// } + + +================================================== +FILE PATH: ./lib/controller/auth/apple_signin_controller.dart +================================================== + +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:get/get.dart'; +import 'package:sign_in_with_apple/sign_in_with_apple.dart'; + +class AuthController extends GetxController { + final FirebaseAuth _auth = FirebaseAuth.instance; + + Future signInWithApple() async { + try { + final appleCredential = await SignInWithApple.getAppleIDCredential( + scopes: [ + AppleIDAuthorizationScopes.email, + AppleIDAuthorizationScopes.fullName, + ], + ); + + final oAuthProvider = OAuthProvider('apple.com'); + final credential = oAuthProvider.credential( + idToken: appleCredential.identityToken, + accessToken: appleCredential.authorizationCode, + ); + + UserCredential userCredential = + await _auth.signInWithCredential(credential); + + return userCredential.user; + } catch (error) { + return null; + } + } + + Future signOut() async { + try { + await _auth.signOut(); + } catch (error) {} + } +} + + +================================================== +FILE PATH: ./lib/controller/auth/register_controller.dart +================================================== + +import 'dart:async'; +import 'dart:convert'; +import 'dart:math'; + +import 'package:Intaleq/constant/colors.dart'; +import 'package:Intaleq/controller/auth/login_controller.dart'; +import 'package:Intaleq/controller/functions/add_error.dart'; +import 'package:Intaleq/controller/functions/encrypt_decrypt.dart'; +import 'package:Intaleq/views/home/map_page_passenger.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/links.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/controller/functions/crud.dart'; +import 'package:Intaleq/views/auth/login_page.dart'; +import 'package:Intaleq/views/widgets/elevated_btn.dart'; + +import '../../constant/box_name.dart'; +import '../../main.dart'; +import '../../print.dart'; +import '../../views/auth/verify_email_page.dart'; +import '../../views/widgets/mydialoug.dart'; +import '../functions/sms_controller.dart'; + +class RegisterController extends GetxController { + final formKey = GlobalKey(); + final formKey3 = GlobalKey(); + + TextEditingController firstNameController = TextEditingController(); + TextEditingController lastNameController = TextEditingController(); + TextEditingController emailController = TextEditingController(); + TextEditingController phoneController = TextEditingController(); + TextEditingController passwordController = TextEditingController(); + TextEditingController siteController = TextEditingController(); + // TextEditingController verfyCode = TextEditingController(); + TextEditingController verifyCode = TextEditingController(); + int remainingTime = 300; // 5 minutes in seconds + bool isSent = false; + bool isLoading = false; + Timer? _timer; + String birthDate = 'Birth Date'.tr; + String gender = 'Male'.tr; + @override + void onInit() { + super.onInit(); + } + + void startTimer() { + _timer?.cancel(); // Cancel any existing timer + _timer = Timer.periodic(const Duration(seconds: 1), (timer) { + if (remainingTime > 0) { + remainingTime--; + } else { + timer.cancel(); + } + }); + } + + getBirthDate() { + Get.defaultDialog( + title: 'Select Date'.tr, + titleStyle: AppStyle.title, + content: SizedBox( + width: 300, + child: CalendarDatePicker( + initialDate: + DateTime.now().subtract(const Duration(days: 14 * 365)), + firstDate: DateTime.parse('1940-06-01'), + lastDate: DateTime.now().subtract(const Duration(days: 14 * 365)), + onDateChanged: (date) { + // Get the selected date and convert it to a DateTime object + DateTime dateTime = date; + // Call the getOrders() function from the controller + birthDate = dateTime.toString().split(' ')[0]; + update(); + }, + + // onDateChanged: (DateTime value) {}, + ), + ), + confirm: MyElevatedButton(title: 'Ok'.tr, onPressed: () => Get.back())); + } + + void changeGender(String value) { + gender = value; + update(); + } + + bool isValidEgyptianPhoneNumber(String phoneNumber) { + // Remove any whitespace from the phone number + phoneNumber = phoneNumber.replaceAll(RegExp(r'\s+'), ''); + + // Check if the phone number has exactly 11 digits + if (phoneNumber.length != 11) { + return false; + } + + // Check if the phone number starts with 010, 011, 012, or 015 + RegExp validPrefixes = RegExp(r'^01[0125]\d{8}$'); + + return validPrefixes.hasMatch(phoneNumber); + } + + bool isValidPhoneNumber(String phoneNumber) { + // Remove any whitespace from the phone number + phoneNumber = phoneNumber.replaceAll(RegExp(r'\s+'), ''); + + // Check if the phone number has at least 10 digits + if (phoneNumber.length < 10) { + return false; + } + + // Check for valid prefixes (modify this to match your use case) + RegExp validPrefixes = RegExp(r'^[0-9]+$'); + + // Check if the phone number contains only digits + return validPrefixes.hasMatch(phoneNumber); + } + + sendOtpMessage() async { + SmsEgyptController smsEgyptController; + isLoading = true; + update(); + try { + // Initialize SmsEgyptController + smsEgyptController = Get.put(SmsEgyptController()); + + isLoading = true; + update(); + + // Get phone number from controller + String phoneNumber = phoneController.text; + + // Check if the phone number is from Egypt (Assuming Egyptian numbers start with +20) + + if (phoneController.text.isNotEmpty) { + bool isEgyptianNumber = phoneNumber.startsWith('+20'); + if (isEgyptianNumber && phoneNumber.length == 13) { + // Check if the phone number is already verified + var responseChecker = await CRUD().post( + link: AppLink.checkPhoneNumberISVerfiedPassenger, + payload: { + 'phone_number': (phoneNumber), + 'email': box.read(BoxName.email), + }, + ); + + if (responseChecker != 'failure') { + var data = jsonDecode(responseChecker); + + // If the phone number is already verified + if (data['message'][0]['verified'].toString() == '1') { + Get.snackbar('Phone number is verified before'.tr, '', + backgroundColor: AppColor.greenColor); + box.write(BoxName.isVerified, '1'); + box.write(BoxName.phone, (phoneNumber)); + Get.offAll(const MapPagePassenger()); + } else { + await sendOtp(phoneNumber, isEgyptianNumber, smsEgyptController); + } + } else { + await sendOtp(phoneNumber, isEgyptianNumber, smsEgyptController); + } + } else if (phoneNumber.length > 9) { + sendOtp(phoneNumber, isEgyptianNumber, smsEgyptController); + } + } else { + MyDialog().getDialog( + 'Error'.tr, 'Phone number must be exactly 11 digits long'.tr, () { + Get.back(); + }); + // sendOtp( + // phoneNumber, randomNumber, isEgyptianNumber, smsEgyptController); + } + } catch (e) { + // Handle error + } finally { + isLoading = false; + update(); + } + } + +// Helper function to send OTP or WhatsApp message based on phone number location + Future sendOtp(String phoneNumber, bool isEgyptian, + SmsEgyptController controller) async { + // Trim any leading or trailing whitespace from the phone number + phoneNumber = phoneNumber.trim(); + var dd = await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: { + 'phone_number': (phoneNumber), + }); + Log.print('dd: ${dd}'); + + // Common Registration Logic (extracted for reuse) + Future registerUser() async { + await CRUD().post(link: AppLink.updatePhoneInvalidSMSPassenger, payload: { + "phone_number": (Get.find().phoneController.text) + }); + + box.write(BoxName.phone, (phoneController.text)); + + var nameParts = (box.read(BoxName.name)).toString().split(' '); + var firstName = nameParts.isNotEmpty ? nameParts[0] : 'unknown'; + var lastName = nameParts.length > 1 ? nameParts[1] : 'unknown'; + + var payload = { + 'id': box.read(BoxName.passengerID), + 'phone': (phoneController.text), + 'email': box.read(BoxName.email), + 'password': + ('unknown'), //Consider if you *really* want to store 'unknown' passwords + 'gender': ('unknown'), + 'birthdate': ('2002-01-01'), + 'site': box.read(BoxName.passengerPhotoUrl) ?? 'unknown', + 'first_name': (firstName), + 'last_name': (lastName), + }; + + var res1 = await CRUD().post( + link: AppLink.signUp, + payload: payload, + ); + + if (res1 != 'failure') { + //Multi-server signup (moved inside the successful registration check) + // if (AppLink.IntaleqAlexandriaServer != AppLink.IntaleqSyriaServer) { + // List signUp = [ + // CRUD().post( + // link: '${AppLink.IntaleqAlexandriaServer}/auth/signup.php', + // payload: payload, + // ), + // CRUD().post( + // link: '${AppLink.IntaleqGizaServer}/auth/signup.php', + // payload: payload, + // ) + // ]; + // await Future.wait(signUp); // Wait for both sign-ups to complete. + // } + + box.write(BoxName.isVerified, '1'); + box.write( + BoxName.isFirstTime, '0'); //Double-check the logic for isFirstTime + box.write(BoxName.phone, (phoneController.text)); + + Get.put(LoginController()).loginUsingCredentials( + box.read(BoxName.passengerID).toString(), + box.read(BoxName.email).toString(), + ); + } + } + + if (isEgyptian) { + // verifySMSCode(); + // await registerUser(); // Use the common registration logic + // await controller.sendSmsEgypt(phoneNumber, otp.toString()); // Optional: Send SMS if Egyptian + } else if (phoneController.text.toString().length >= 10) { + await registerUser(); // Use the common registration logic for non-Egyptian users as well. + // this for whatsapp messsage // Optional: Send WhatsApp message + // await CRUD().sendWhatsAppAuth(phoneNumber, otp.toString()); + } + + isLoading = false; + isSent = true; + remainingTime = 300; + update(); // Reset to 5 minutes + // startTimer(); // Consider whether you need a timer here, or if it's handled elsewhere. + } + + verifySMSCode() async { + try { + if (formKey3.currentState!.validate()) { + var res = await CRUD().post(link: AppLink.verifyOtpPassenger, payload: { + 'phone_number': phoneController.text, + 'token': verifyCode.text, + }); + + if (res != 'failure') { + box.write(BoxName.phone, (phoneController.text)); + var nameParts = (box.read(BoxName.name)).toString().split(' '); + var firstName = nameParts.isNotEmpty ? nameParts[0] : 'unknown'; + var lastName = nameParts.length > 1 ? nameParts[1] : 'unknown'; + + var payload = { + 'id': box.read(BoxName.passengerID), + 'phone': (phoneController.text), + 'email': box.read(BoxName.email), + 'password': 'unknown', + 'gender': 'unknown', + 'birthdate': '2002-01-01', + 'site': box.read(BoxName.passengerPhotoUrl) ?? 'unknown', + 'first_name': firstName, + 'last_name': lastName, + }; + + var res1 = await CRUD().post( + link: AppLink.signUp, + payload: payload, + ); + + if (res1 != 'failure') { + // if (AppLink.IntaleqAlexandriaServer != AppLink.IntaleqSyriaServer) { + // List signUp = [ + // CRUD().post( + // link: '${AppLink.IntaleqAlexandriaServer}/auth/signup.php', + // payload: payload, + // ), + // CRUD().post( + // link: '${AppLink.IntaleqGizaServer}/auth/signup.php', + // payload: payload, + // ) + // ]; + // await Future.wait(signUp); + // } + + box.write(BoxName.isVerified, '1'); + box.write(BoxName.isFirstTime, '0'); + box.write(BoxName.phone, (phoneController.text)); + + Get.put(LoginController()).loginUsingCredentials( + box.read(BoxName.passengerID).toString(), + box.read(BoxName.email).toString(), + ); + } else { + Get.snackbar('Error'.tr, + "The email or phone number is already registered.".tr, + backgroundColor: Colors.redAccent); + } + } else { + Get.snackbar('Error'.tr, "phone not verified".tr, + backgroundColor: Colors.redAccent); + } + } else { + Get.snackbar('Error'.tr, "you must insert token code".tr, + backgroundColor: AppColor.redColor); + } + } catch (e) { + addError(e.toString(), 'passenger sign up '); + Get.snackbar('Error'.tr, "Something went wrong. Please try again.".tr, + backgroundColor: Colors.redAccent); + } + } + + sendVerifications() async { + var res = await CRUD().post(link: AppLink.verifyEmail, payload: { + 'email': emailController.text, + 'token': verifyCode.text, + }); + var dec = jsonDecode(res); + if (dec['status'] == 'success') { + Get.offAll(() => LoginPage()); + } + } + + void register() async { + if (formKey.currentState!.validate()) { + var res = await CRUD().post(link: AppLink.signUp, payload: { + 'first_name': firstNameController.text.toString(), + 'last_name': lastNameController.text.toString(), + 'email': emailController.text.toString(), + 'phone': phoneController.text.toString(), + 'password': passwordController.text.toString(), + 'gender': 'yet', + 'site': siteController.text, + 'birthdate': birthDate, + }); + if (jsonDecode(res)['status'] == 'success') { + int randomNumber = Random().nextInt(100000) + 1; + await CRUD().post(link: AppLink.sendVerifyEmail, payload: { + 'email': emailController.text, + 'token': randomNumber.toString(), + }); + Get.to(() => const VerifyEmailPage()); + } + } + } + + @override + void onClose() { + _timer?.cancel(); + super.onClose(); + } +} + + +================================================== +FILE PATH: ./lib/controller/auth/login_controller.dart +================================================== + +import 'dart:convert'; +import 'dart:io'; +import 'dart:math'; +import 'package:Intaleq/constant/api_key.dart'; +import 'package:Intaleq/controller/firebase/firbase_messge.dart'; +import 'package:Intaleq/views/auth/otp_page.dart'; +import 'package:http/http.dart' as http; + +import 'package:Intaleq/constant/info.dart'; +import 'package:Intaleq/controller/functions/add_error.dart'; +import 'package:Intaleq/views/auth/login_page.dart'; +import 'package:Intaleq/views/auth/sms_verfy_page.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/links.dart'; +import 'package:Intaleq/controller/functions/crud.dart'; +import 'package:Intaleq/main.dart'; +import 'package:Intaleq/views/home/map_page_passenger.dart'; +import 'package:jwt_decoder/jwt_decoder.dart'; +import 'package:location/location.dart'; +import 'package:secure_string_operations/secure_string_operations.dart'; + +import '../../constant/char_map.dart'; +import '../../print.dart'; +import '../../views/auth/otp_token_page.dart'; +import '../functions/encrypt_decrypt.dart'; +import '../functions/package_info.dart'; +import '../functions/secure_storage.dart'; +import '../functions/securty_check.dart'; + +class LoginController extends GetxController { + final formKey = GlobalKey(); + final formKeyAdmin = GlobalKey(); + TextEditingController emailController = TextEditingController(); + TextEditingController phoneController = TextEditingController(); + TextEditingController passwordController = TextEditingController(); + TextEditingController adminPasswordController = TextEditingController(); + TextEditingController adminNameController = TextEditingController(); + bool isAgreeTerms = false; + bool isloading = false; + late int isTest = 1; + void changeAgreeTerm() { + isAgreeTerms = !isAgreeTerms; + update(); + } + + var dev = ''; + @override + void onInit() async { + await getJWT(); + // Log.print('box.read(BoxName.isTest): ${box.read(BoxName.isTest)}'); + box.write(BoxName.countryCode, 'Syria'); + FirebaseMessagesController().getToken(); + super.onInit(); + } + + // getAppTester() async { + // var res = await CRUD().get( + // link: AppLink.getTesterApp, + // payload: {'appPlatform': AppInformation.appName}); + // if (res != 'failure') { + // var d = jsonDecode(res); + + // isTest = int.parse(d['message'][0]['isTest'].toString()); + // box.write(BoxName.isTest, isTest); + // update(); + // } else { + // box.write(BoxName.isTest, '1'); + // update(); + // return false; + // } + // } + + // updateAppTester(String appPlatform) async { + // await CRUD().post( + // link: AppLink.updateTesterApp, payload: {'appPlatform': appPlatform}); + // } + + void saveAgreementTerms() { + box.write(BoxName.agreeTerms, 'agreed'); + update(); + } + + void saveCountryCode(String countryCode) { + box.write(BoxName.countryCode, countryCode); + update(); + } + + Future getJwtWallet() async { + try { + final random = Random(); + + // Perform security check randomly + if (random.nextBool()) { + await SecurityHelper.performSecurityChecks(); + } else { + await SecurityChecks.isDeviceRootedFromNative(Get.context!); + } + + String fingerPrint = await DeviceHelper.getDeviceFingerprint(); + final dev = GetPlatform.isAndroid ? 'android' : 'ios'; + + var payload = { + 'id': box.read(BoxName.passengerID), + 'password': AK.passnpassenger, + 'aud': '${AK.allowed}$dev', + 'fingerPrint': fingerPrint, + }; + + var response = await http.post( + Uri.parse(AppLink.loginJwtWalletRider), + body: payload, + ); + + // Handle bad responses + if (response.statusCode != 200) { + _showJwtErrorDialog( + "حدث خطأ أثناء الاتصال بالخادم. يرجى المحاولة مرة أخرى."); + throw Exception("JWT request failed"); + } + + var data = jsonDecode(response.body); + + // Validate JWT response structure + if (!data.containsKey('jwt') || !data.containsKey('hmac')) { + _showJwtErrorDialog("تعذّر التحقق من الأمان. يرجى إعادة المحاولة."); + throw Exception("Invalid JWT response format"); + } + + // Save HMAC locally + await box.write(BoxName.hmac, data['hmac']); + + return data['jwt'].toString(); + } catch (e) { + _showJwtErrorDialog("حدث خلل غير متوقع. يرجى المحاولة مرة أخرى."); + rethrow; + } + } + + void _showJwtErrorDialog(String message) { + if (Get.context == null) return; + + Get.defaultDialog( + title: "خطأ في الاتصال", + middleText: message, + textConfirm: "إعادة المحاولة", + confirmTextColor: Colors.white, + onConfirm: () { + Get.back(); + getJwtWallet(); + }, + ); + } + + getJWT() async { + // print(Pasenger.pasengerpas); + // await SecurityHelper.performSecurityChecks(); + Log.print('firstTimeLoadKey: ${box.read(BoxName.firstTimeLoadKey)}'); + dev = Platform.isAndroid ? 'android' : 'ios'; + if (box.read(BoxName.firstTimeLoadKey).toString() != 'false') { + var payload = { + 'id': box.read(BoxName.passengerID) ?? AK.newId, + 'password': AK.passnpassenger, + 'aud': '${AK.allowed}$dev', + }; + // Log.print('payload: ${payload}'); + var response0 = await http.post( + Uri.parse(AppLink.loginFirstTime), + body: payload, + ); + if (response0.statusCode == 200) { + final decodedResponse1 = jsonDecode(response0.body); + + final jwt = decodedResponse1['jwt']; + final refreshToken = decodedResponse1['refresh_token']; + box.write(BoxName.jwt, c(jwt)); + // Sss.write(BoxName.jwt, jwt); + await storage.write(key: BoxName.refreshToken, value: refreshToken); + + // await AppInitializer().getAIKey(Pasenger.keyOfApp); + // await AppInitializer().getAIKey(Pasenger.initializationVector); + // await Future.delayed(Duration.zero); + await EncryptionHelper.initialize(); + + await AppInitializer().getKey(); + } else {} + } else { + await EncryptionHelper.initialize(); + + var payload = { + 'id': box.read(BoxName.passengerID), + 'password': box.read(BoxName.email), + 'aud': '${AK.allowed}$dev', + }; + // Log.print('payload: ${payload}'); + var response1 = await http.post( + Uri.parse(AppLink.loginJwtRider), + body: payload, + ); + Log.print('req: ${response1.request}'); + Log.print('response: ${response1.body}'); + Log.print('payload: ${payload}'); + // Log.print('decodedResponse1: ${jsonDecode(response1.body)}'); + + if (response1.statusCode == 200) { + final decodedResponse1 = jsonDecode(response1.body); + // Log.print('decodedResponse1: ${decodedResponse1}'); + + final jwt = decodedResponse1['jwt']; + await box.write(BoxName.jwt, c(jwt)); + + await AppInitializer().getKey(); + + // final refreshToken = decodedResponse1['refresh_token']; + // await storage.write(key: BoxName.refreshToken, value: refreshToken); + } + } + } + + Future loginUsingCredentials(String passengerID, String email) async { + isloading = true; + update(); + await getJWT(); + + try { + // 1) استعلام تسجيل الدخول + final res = await CRUD().get( + link: AppLink.loginFromGooglePassenger, + payload: { + 'email': email, + 'id': passengerID, // استخدم المعامل مباشرة + 'platform': Platform.isAndroid ? 'android' : 'ios', + 'appName': AppInformation.appName, + }, + ); + + if (res == 'Failure') { + Get.snackbar("User does not exist.".tr, '', + backgroundColor: Colors.red); + return; + } + + // 2) فك JSON مرة واحدة + final decoded = jsonDecode(res); + if (decoded is! Map || decoded.isEmpty) return; + + final status = (decoded['status'] ?? '').toString(); + final data = (decoded['data'] as List?)?.firstOrNull as Map? ?? {}; + if (status != 'success' || data['verified'].toString() != '1') { + // غير مُفعل -> أذهب للتسجيل بالـ SMS + Get.offAll(() => PhoneNumberScreen()); + return; + } + + // 3) كتابة القيم (خفيفة) + box.write(BoxName.isVerified, '1'); + box.write(BoxName.email, data['email']); + box.write(BoxName.phone, data['phone']); + box.write(BoxName.name, data['first_name']); + box.write(BoxName.isTest, '1'); + box.write(BoxName.package, data['package']); + box.write(BoxName.promo, data['promo']); + box.write(BoxName.discount, data['discount']); + box.write(BoxName.validity, data['validity']); + box.write(BoxName.isInstall, data['isInstall'] ?? 'none'); + box.write(BoxName.isGiftToken, data['isGiftToken'] ?? 'none'); + if (data['inviteCode'] != null) { + box.write(BoxName.inviteCode, data['inviteCode'].toString()); + } + // مهم: تأكد من passengerID في الـ box + box.write(BoxName.passengerID, passengerID); + + // 4) نفّذ عمليات مكلفة بالتوازي: getTokens + fingerprint + final results = await Future.wait([ + CRUD().get(link: AppLink.getTokens, payload: { + 'passengerID': passengerID, // FIX: لا تستخدم box هنا + }), + DeviceHelper.getDeviceFingerprint(), + ]); + await box.write(BoxName.firstTimeLoadKey, 'false'); + final tokenResp = results[0]; + final fingerPrint = (results[1] ?? '').toString(); + await storage.write(key: BoxName.fingerPrint, value: fingerPrint); + + if (email != '962798583052@intaleqapp.com' && tokenResp != 'failure') { + final tokenJson = jsonDecode(tokenResp); + final serverToken = tokenJson['message']?['token']?.toString() ?? ''; + // Log.print('serverToken: ${serverToken}'); + final localFcm = (box.read(BoxName.tokenFCM) ?? '').toString(); + // Log.print('localFcm: ${localFcm}'); + + // 5) اختلاف الجهاز -> تحقّق OTP + if (serverToken.isNotEmpty && serverToken != localFcm) { + final goVerify = await _confirmDeviceChangeDialog(); + if (goVerify == true) { + await Get.to(() => OtpVerificationPage( + phone: data['phone'].toString(), + deviceToken: fingerPrint, + token: tokenResp.toString(), + ptoken: serverToken, + )); + // بعد العودة من OTP (نجح/فشل)، أخرج من الميثود كي لا يحصل offAll مرتين + return; + } + } + } + + // 6) منطق الدعوة (إن وُجد) ثم الانتقال + final invite = box.read(BoxName.inviteCode)?.toString() ?? 'none'; + final isInstall = box.read(BoxName.isInstall)?.toString() ?? '0'; + + if (invite != 'none' && isInstall != '1') { + try { + await CRUD().post(link: AppLink.updatePassengersInvitation, payload: { + "inviteCode": invite, + "passengerID": passengerID, + }); + await Get.defaultDialog( + title: 'Invitation Used'.tr, + middleText: "Your invite code was successfully applied!".tr, + textConfirm: "OK".tr, + confirmTextColor: Colors.white, + onConfirm: () async { + try { + await CRUD().post(link: AppLink.addPassengersPromo, payload: { + "promoCode": + 'I-${(box.read(BoxName.name)).toString().split(' ').first}', + "amount": '25', + "passengerID": passengerID, + "description": 'promo first' + }); + } catch (e) { + addError( + e.toString(), 'promo on invitation in login_controller'); + } finally { + Get.offAll(() => const MapPagePassenger()); + } + }, + ); + return; + } catch (_) { + // حتى لو فشل، كمل للصفحة الرئيسية + } + } + + Get.offAll(() => const MapPagePassenger()); + } catch (e, st) { + addError('$e', 'loginUsingCredentials'); + Get.snackbar('Error', e.toString(), backgroundColor: Colors.redAccent); + } finally { + isloading = false; + update(); + } + } + + Future _confirmDeviceChangeDialog() { + return Get.defaultDialog( + barrierDismissible: false, + title: 'Device Change Detected'.tr, + middleText: 'Please verify your identity'.tr, + textConfirm: 'Verify'.tr, + confirmTextColor: Colors.white, + onConfirm: () => Get.back(result: true), + textCancel: 'Cancel'.tr, + onCancel: () => Get.back(result: false), + ); + } + + void login() async { + isloading = true; + update(); + var res = + await CRUD().get(link: AppLink.loginFromGooglePassenger, payload: { + 'email': (emailController.text), + 'id': passwordController.text, + "platform": Platform.isAndroid ? 'android' : 'ios', + "appName": AppInformation.appName, + }); + + isloading = false; + update(); + if (res == 'Failure') { + //Failure + Get.offAll(() => LoginPage()); + isloading = false; + update(); + // Get.snackbar("User does not exist.".tr, '', backgroundColor: Colors.red); + } else { + var jsonDecoeded = jsonDecode(res); + if (jsonDecoeded.isNotEmpty) { + if (jsonDecoeded['status'] == 'success' && + jsonDecoeded['data'][0]['verified'].toString() == '1') { + // + box.write(BoxName.isVerified, '1'); + box.write(BoxName.email, jsonDecoeded['data'][0]['email']); + box.write(BoxName.name, jsonDecoeded['data'][0]['first_name']); + box.write(BoxName.phone, jsonDecoeded['data'][0]['phone']); + box.write(BoxName.passengerID, passwordController.text); + // var token = await CRUD().get(link: AppLink.getTokens, payload: { + // 'passengerID': box.read(BoxName.passengerID).toString() + // }); + // await updateAppTester(AppInformation.appName); + + Get.offAll(() => const MapPagePassenger()); + } else { + // Get.offAll(() => SmsSignupEgypt()); + // Get.snackbar(jsonDecoeded['status'], jsonDecoeded['data'], + // backgroundColor: Colors.redAccent); + isloading = false; + update(); + } + } else { + isloading = false; + update(); + } + } + } + + goToMapPage() { + if (box.read(BoxName.email) != null) { + Get.offAll(() => const MapPagePassenger()); + } + } + + final location = Location(); + + // late PermissionStatus permissionGranted = PermissionStatus.denied; + Future getLocationPermission() async { + bool serviceEnabled; + PermissionStatus permissionGranted; + + // Check if location services are enabled + serviceEnabled = await location.serviceEnabled(); + if (!serviceEnabled) { + serviceEnabled = await location.requestService(); + if (!serviceEnabled) { + // Location services are still not enabled, handle the error + return; + } + } + + // Check if the app has permission to access location + permissionGranted = await location.hasPermission(); + if (permissionGranted == PermissionStatus.denied) { + permissionGranted = await location.requestPermission(); + if (permissionGranted != PermissionStatus.granted) { + // Location permission is still not granted, handle the error + permissionGranted = await location.requestPermission(); + return; + } + } + if (permissionGranted.toString() == 'PermissionStatus.granted') { + box.write(BoxName.locationPermission, 'true'); + } + update(); + } +} + + +================================================== +FILE PATH: ./lib/controller/auth/otp_controller.dart +================================================== + +import 'package:Intaleq/constant/links.dart'; +import 'package:Intaleq/views/home/map_page_passenger.dart'; +import 'package:get/get.dart'; +import '../../../constant/box_name.dart'; +import '../../../main.dart'; +import '../../../print.dart'; +import '../../views/auth/otp_page.dart'; +import '../../views/widgets/error_snakbar.dart'; +import '../functions/crud.dart'; +import '../functions/package_info.dart'; +import 'login_controller.dart'; + +// --- Helper Class for Phone Authentication --- + +class PhoneAuthHelper { + // Define your server URLs + static final String _baseUrl = '${AppLink.server}/auth/syria/'; + static final String _sendOtpUrl = '${_baseUrl}sendWhatsOpt.php'; + static final String _verifyOtpUrl = '${_baseUrl}verifyOtp.php'; + static final String _registerUrl = '${_baseUrl}register_passenger.php'; + + static String formatSyrianPhone(String phone) { + // Remove spaces, symbols, +, -, () + phone = phone.replaceAll(RegExp(r'[ \-\(\)\+]'), '').trim(); + + // Normalize 00963 → 963 + if (phone.startsWith('00963')) { + phone = phone.replaceFirst('00963', '963'); + } + + // Normalize 0963 → 963 + if (phone.startsWith('0963')) { + phone = phone.replaceFirst('0963', '963'); + } + + // NEW: Fix 96309xxxx → 9639xxxx + if (phone.startsWith('96309')) { + phone = '9639' + phone.substring(5); // remove the "0" after 963 + } + + // If starts with 9630 → correct to 9639 + if (phone.startsWith('9630')) { + phone = '9639' + phone.substring(4); + } + + // If already in correct format: 9639xxxxxxxx + if (phone.startsWith('9639') && phone.length == 12) { + return phone; + } + + // If starts with 963 but missing the 9 + if (phone.startsWith('963') && phone.length > 3) { + // Ensure it begins with 9639 + if (!phone.startsWith('9639')) { + phone = '9639' + phone.substring(3); + } + return phone; + } + + // If starts with 09xxxxxxxx → 9639xxxxxxxx + if (phone.startsWith('09')) { + return '963' + phone.substring(1); + } + + // If 9xxxxxxxx (9 digits) + if (phone.startsWith('9') && phone.length == 9) { + return '963' + phone; + } + + // If starts with incorrect 0xxxxxxx → assume Syrian and fix + if (phone.startsWith('0') && phone.length == 10) { + return '963' + phone.substring(1); + } + + return phone; + } + + /// Sends an OTP to the provided phone number. + static Future sendOtp(String phoneNumber) async { + try { + // إصلاح الرقم قبل الإرسال + final fixedPhone = formatSyrianPhone(phoneNumber); + + final response = await CRUD().post( + link: _sendOtpUrl, + payload: {'receiver': fixedPhone}, // ← ← استخدام الرقم المُعدّل + ); + + if (response != 'failure') { + final data = response; + + if (data['status'] == 'success') { + mySnackbarSuccess('An OTP has been sent to your number.'.tr); + return true; + } else { + mySnackeBarError(data['message'] ?? 'Failed to send OTP.'); + return false; + } + } else { + mySnackeBarError('Server error. Please try again.'.tr); + return false; + } + } catch (e) { + return false; + } + } + + /// Verifies the OTP and logs the user in. + + static Future verifyOtp(String phoneNumber) async { + try { + final fixedPhone = formatSyrianPhone(phoneNumber); + final response = await CRUD().post( + link: _verifyOtpUrl, + payload: { + 'phone_number': fixedPhone, + }, + ); + + if (response != 'failure') { + final data = (response); + // Log.print('data: ${data}'); + + if (data['status'] == 'success') { + final isRegistered = data['message']['isRegistered'] ?? false; + // Log.print('isRegistered: ${isRegistered}'); + + if (isRegistered) { + // ✅ المستخدم موجود مسبقاً -> تسجيل دخول مباشر + await _handleSuccessfulLogin(data['message']['passenger']); + } else { + // ✅ مستخدم جديد -> الذهاب لصفحة التسجيل + mySnackbarSuccess( + 'Phone verified. Please complete registration.'.tr); + Get.to(() => RegistrationScreen(phoneNumber: phoneNumber)); + } + } else { + mySnackeBarError(data['message']); + } + } else { + mySnackeBarError('Server error. Please try again.'.tr); + } + } catch (e) { + mySnackeBarError('An error occurred: $e'); + } + } + + static Future _addTokens() async { + String fingerPrint = await DeviceHelper.getDeviceFingerprint(); + + await CRUD() + .post(link: "${AppLink.server}/ride/firebase/add.php", payload: { + 'token': (box.read(BoxName.tokenFCM.toString())), + 'passengerID': box.read(BoxName.passengerID).toString(), + "fingerPrint": fingerPrint + }); + await CRUD() + .post(link: "${AppLink.paymentServer}/ride/firebase/add.php", payload: { + 'token': (box.read(BoxName.tokenFCM.toString())), + 'passengerID': box.read(BoxName.passengerID).toString(), + "fingerPrint": fingerPrint + }); + } + + static Future registerUser({ + required String phoneNumber, + required String firstName, + required String lastName, + String? email, + }) async { + try { + final response = await CRUD().post( + link: _registerUrl, + payload: { + 'phone_number': phoneNumber, + 'first_name': firstName, + 'last_name': lastName, + 'email': email ?? '', // Send empty string if null + }, + ); + final data = (response); + if (data != 'failure') { + // Registration successful, log user in + + await _handleSuccessfulLogin(data['message']['data']); + } else { + mySnackeBarError( + "User with this phone number or email already exists.".tr); + } + } catch (e) { + Log.print('e: ${e}'); + mySnackeBarError('An error occurred: $e'); + } + } + + static Future _handleSuccessfulLogin( + Map userData) async { + mySnackbarSuccess('Welcome, ${userData['first_name']}!'); + + // Save user data to local storage (Hive box) using new keys + box.write(BoxName.passengerID, userData['id']); + box.write(BoxName.name, userData['first_name']); + box.write(BoxName.lastName, userData['last_name']); + box.write(BoxName.email, userData['email']); + box.write(BoxName.phone, userData['phone']); + box.write(BoxName.isVerified, '1'); + await _addTokens(); + await Get.put(LoginController()).loginUsingCredentials( + box.read(BoxName.passengerID).toString(), + box.read(BoxName.email).toString(), + ); // Navigate to home + } +} + + +================================================== +FILE PATH: ./lib/controller/auth/token_otp_change_controller.dart +================================================== + +import 'dart:async'; + +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/links.dart'; +import 'package:Intaleq/controller/functions/crud.dart'; +import 'package:Intaleq/main.dart'; +import 'package:get/get.dart'; + +import '../../print.dart'; +import '../../views/home/map_page_passenger.dart'; +import '../firebase/firbase_messge.dart'; +import '../firebase/notification_service.dart'; +import '../functions/package_info.dart'; + +class OtpVerificationController extends GetxController { + final String phone; + final String deviceToken; + final String token; + final otpCode = ''.obs; + final isLoading = false.obs; + final isVerifying = false.obs; + var canResend = false.obs; + var countdown = 120.obs; + Timer? _timer; + + OtpVerificationController({ + required this.phone, + required this.deviceToken, + required this.token, + }); + + @override + void onInit() { + super.onInit(); + sendOtp(); // ترسل تلقائيًا عند فتح الصفحة + startCountdown(); + } + + void startCountdown() { + canResend.value = false; + countdown.value = 120; + _timer?.cancel(); + _timer = Timer.periodic(const Duration(seconds: 1), (timer) { + if (countdown.value > 0) { + countdown.value--; + } else { + canResend.value = true; + timer.cancel(); + } + }); + } + + Future sendOtp() async { + if (isLoading.value) return; + isLoading.value = true; + try { + final response = await CRUD().post( + link: '${AppLink.server}/auth/token_passenger/send_otp.php', + payload: { + 'receiver': phone, + // 'device_token': deviceToken, + }, + ); + + if (response != 'failure') { + isLoading.value = true; + // بإمكانك عرض رسالة نجاح هنا + } else { + Get.snackbar('Error'.tr, 'Failed to send OTP'.tr); + } + } catch (e) { + Get.snackbar('Error', e.toString()); + } finally { + // isLoading.value = false; + } + } + + Future verifyOtp(String ptoken) async { + isVerifying.value = true; + + try { + String fingerPrint = await DeviceHelper.getDeviceFingerprint(); + final response = await CRUD().post( + link: '${AppLink.server}/auth/token_passenger/verify_otp.php', + payload: { + 'phone_number': phone, + 'otp': otpCode.value, + 'token': box.read(BoxName.tokenFCM).toString(), + 'fingerPrint': fingerPrint.toString(), + }, + ); + + if (response != 'failure' && response['status'] == 'success') { + await NotificationService.sendNotification( + category: 'token change', + target: ptoken.toString(), + title: 'token change'.tr, + body: 'change device'.tr, + isTopic: false, // Important: this is a token + tone: 'cancel', + driverList: [], + ); + + Get.offAll(() => const MapPagePassenger()); + } else { + Get.snackbar('Verification Failed', 'OTP is incorrect or expired'); + } + } catch (e) { + Get.snackbar('Error', e.toString()); + } finally { + isVerifying.value = false; + } + } +} + + +================================================== +FILE PATH: ./lib/controller/auth/certificate.dart +================================================== + +import 'dart:convert'; +import 'dart:io'; +import 'dart:typed_data'; +import 'package:crypto/crypto.dart'; + +Future verifyCertificateManually( + String host, int port, String expectedPin) async { + try { + final socket = await SecureSocket.connect(host, port, + timeout: const Duration(seconds: 5)); + + final certificate = socket.peerCertificate; + if (certificate == null) { + print("❌ لا يوجد شهادة."); + return false; + } + + final der = certificate.der; + final actualPin = base64.encode(sha256.convert(der).bytes); + + print("📛 HOST: $host"); + print("📜 Subject: ${certificate.subject}"); + print("📜 Issuer: ${certificate.issuer}"); + print("📅 Valid From: ${certificate.startValidity}"); + print("📅 Valid To: ${certificate.endValidity}"); + print( + "🔐 Server Pin: $actualPin → ${actualPin == expectedPin ? '✅ MATCH' : '❌ MISMATCH'}"); + + socket.destroy(); + return actualPin == expectedPin; + } catch (e) { + print("❌ خطأ أثناء الاتصال أو الفحص: $e"); + return false; + } +} + +/// تحويل المفتاح العام إلى بصمة SHA-256 +List sha256Convert(Uint8List der) { + return sha256.convert(der).bytes; +} + + +================================================== +FILE PATH: ./lib/controller/auth/tokens_controller.dart +================================================== + +import 'dart:convert'; + +import 'package:get/get.dart'; +import 'package:http/http.dart' as http; + +import '../../constant/box_name.dart'; +import '../../constant/links.dart'; +import '../../main.dart'; +import '../functions/encrypt_decrypt.dart'; + +class TokenController extends GetxController { + bool isloading = false; + + Future addToken() async { + String? basicAuthCredentials = + await storage.read(key: BoxName.basicAuthCredentials); + isloading = true; + update(); + var res = await http.post( + Uri.parse(AppLink.addTokens), + headers: { + 'Authorization': + 'Basic ${base64Encode(utf8.encode(basicAuthCredentials.toString()))}', + }, + body: { + 'token': (box.read(BoxName.tokenFCM.toString())), + 'passengerID': box.read(BoxName.passengerID).toString() + }, + ); + + isloading = false; + update(); + var jsonToken = jsonDecode(res.body); + if (jsonToken['status'] == 'The token has been updated successfully.') { + Get.snackbar('token updated'.tr, ''); + } + } +} + + +================================================== +FILE PATH: ./lib/controller/auth/verify_email_controller.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/links.dart'; +import 'package:Intaleq/controller/functions/crud.dart'; + +class VerifyEmailController extends GetxController { + TextEditingController verfyCode = TextEditingController(); + @override + void onInit() async { + super.onInit(); + } + + sendverfications() async { + await CRUD().post(link: AppLink.sendVerifyEmail); + } +} + + +================================================== +FILE PATH: ./lib/controller/auth/onboarding_controller.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/main.dart'; +import 'package:Intaleq/views/auth/login_page.dart'; + +import '../../models/model/onboarding_model.dart'; + +abstract class OnBoardingController extends GetxController { + next(); + onPageChanged(int index); +} + +class OnBoardingControllerImp extends OnBoardingController { + late PageController pageController; + + int currentPage = 0; + + @override + next() { + currentPage++; + + if (currentPage > onBoardingList.length - 1) { + box.write(BoxName.onBoarding, 'yes'); + Get.offAll(() => LoginPage()); + } else { + pageController.animateToPage(currentPage, + duration: const Duration(milliseconds: 900), curve: Curves.easeInOut); + } + } + + @override + onPageChanged(int index) { + currentPage = index; + update(); + } + + @override + void onInit() { + pageController = PageController(); + super.onInit(); + } +} + + +================================================== +FILE PATH: ./lib/controller/auth/google_sign.dart +================================================== + +import 'dart:io'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:get/get.dart'; +import 'package:google_sign_in/google_sign_in.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import '../../constant/box_name.dart'; +import '../../constant/links.dart'; +import '../../main.dart'; +import '../functions/crud.dart'; +import '../../onbording_page.dart'; +import 'login_controller.dart'; + +class GoogleSignInHelper { + // ✅ GoogleSignIn singleton + static final GoogleSignIn _signIn = GoogleSignIn.instance; + + static GoogleSignInAccount? _lastUser; + + /// 👇 استدعها في main() مرة واحدة + static Future init() async { + await _signIn.initialize( + serverClientId: + '594687661098-2u640akrb3k7sak5t0nqki6f4v6hq1bq.apps.googleusercontent.com', + ); + + // Events listener + _signIn.authenticationEvents.listen((event) async { + if (event is GoogleSignInAuthenticationEventSignIn) { + _lastUser = event.user; + await _handleSignUp(event.user); + } else if (event is GoogleSignInAuthenticationEventSignOut) { + _lastUser = null; + } + }); + + // silent login if possible + try { + await _signIn.attemptLightweightAuthentication(); + } catch (_) {} + } + + /// ✅ تسجيل دخول عادي + static Future signIn() async { + try { + final user = + await _signIn.authenticate(scopeHint: const ['email', 'profile']); + if (user != null) { + _lastUser = user; + await _handleSignUp(user); + + // اطبع القيم (للتأكد) + print("Google ID: ${user.id}"); + print("Email: ${user.email}"); + print("Name: ${user.displayName}"); + print("Photo: ${user.photoUrl}"); + } + return user; + } on PlatformException catch (e) { + if (e.code == 'sign_in_required') { + await showGooglePlayServicesError(); + } + return null; + } catch (e) { + await addError("Google Sign-In error: $e", "signIn()"); + return null; + } + } + + /// ✅ تسجيل دخول مخصص لشاشة Login (مع استدعاء الكنترولر) + static Future signInFromLogin() async { + await init(); + final user = await signIn(); + if (user != null) { + await Get.put(LoginController()).loginUsingCredentials( + box.read(BoxName.passengerID).toString(), + box.read(BoxName.email).toString(), + ); + } + return user; + } + + /// ✅ طلب سكوبات إضافية (بديل withScopes القديم) + static Future requestExtraScopes(List scopes) async { + final user = _lastUser; + if (user == null) return; + await user.authorizationClient.authorizeScopes(scopes); + } + + /// ✅ تسجيل خروج + static Future signOut() async { + await _signIn.signOut(); + await _handleSignOut(); + } + + static GoogleSignInAccount? getCurrentUser() => _lastUser; + + // ================= Helpers ================== + + static Future _handleSignUp(GoogleSignInAccount user) async { + box.write(BoxName.passengerID, user.id); + box.write(BoxName.email, user.email); + box.write(BoxName.name, user.displayName ?? ''); + box.write(BoxName.passengerPhotoUrl, user.photoUrl ?? ''); + } + + static Future _handleSignOut() async { + box.erase(); + + Get.offAll(OnBoardingPage()); + } + + static Future addError(String error, String where) async { + await CRUD().post(link: AppLink.addError, payload: { + 'error': error, + 'userId': box.read(BoxName.driverID) ?? box.read(BoxName.passengerID), + 'userType': box.read(BoxName.driverID) != null ? 'Driver' : 'Passenger', + 'phone': box.read(BoxName.phone) ?? box.read(BoxName.phoneDriver), + 'device': where, + }); + } + + static Future showGooglePlayServicesError() async { + const playStoreUrl = + 'https://play.google.com/store/apps/details?id=com.google.android.gms&hl=en_US'; + final uri = Uri.parse(playStoreUrl); + if (await canLaunchUrl(uri)) { + await launchUrl(uri); + } else { + showDialog( + context: Get.context!, + builder: (context) => AlertDialog( + title: Text('Error'.tr), + content: Text( + 'Could not open the Google Play Store. Please update Google Play Services manually.' + .tr, + ), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: Text('Close'.tr), + ), + ], + ), + ); + } + } +} + + +================================================== +FILE PATH: ./lib/controller/notification/notification_captain_controller.dart +================================================== + +import 'dart:convert'; + +import 'package:get/get.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/views/widgets/elevated_btn.dart'; + +import '../../constant/box_name.dart'; +import '../../constant/links.dart'; +import '../../main.dart'; +import '../functions/crud.dart'; + +class NotificationCaptainController extends GetxController { + bool isLoading = false; + Map notificationData = {}; + + getNotifications() async { + isLoading = true; + update(); + var res = await CRUD().get( + link: AppLink.getNotificationCaptain, + payload: {'driverID': box.read(BoxName.driverID)}); + if (res == "failure") { + Get.defaultDialog( + title: 'There is no notification yet'.tr, + titleStyle: AppStyle.title, + middleText: '', + confirm: MyElevatedButton( + title: 'Back', + onPressed: () { + Get.back(); + Get.back(); + })); + } + notificationData = jsonDecode(res); + // sql.insertData(notificationData['message'], TableName.captainNotification); + + isLoading = false; + update(); + } + + updateNotification(String id) async { + await CRUD().post( + link: AppLink.updateNotificationCaptain, + payload: {'isShown': true, 'id': id}, + ); + } + + addNotificationCaptain(String driverId, title, body, isPin) async { + await CRUD().post(link: AppLink.addNotificationCaptain, payload: { + 'driverID': driverId, + 'title': title, + 'body': body, + 'isPin': isPin + }); + } + + @override + void onInit() { + getNotifications(); + super.onInit(); + } +} + + +================================================== +FILE PATH: ./lib/controller/notification/passenger_notification_controller.dart +================================================== + +import 'dart:convert'; + +import 'package:get/get.dart'; +import 'package:Intaleq/controller/firebase/firbase_messge.dart'; + +import '../../constant/box_name.dart'; +import '../../constant/links.dart'; +import '../../main.dart'; +import '../../views/widgets/mydialoug.dart'; +import '../firebase/notification_service.dart'; +import '../functions/crud.dart'; + +class PassengerNotificationController extends GetxController { + bool isloading = false; + Map notificationData = {}; + + getNotifications() async { + isloading = true; + update(); + var res = await CRUD().get( + link: AppLink.getNotificationPassenger, + payload: {'passenger_id': box.read(BoxName.passengerID)}); + if (res == "failure") { + MyDialog().getDialog('There is no notification yet'.tr, '', () { + Get.back(); + Get.back(); + }); + } else { + notificationData = jsonDecode(res); + isloading = false; + update(); + } + + // sql.insertData(notificationData['message'], TableName.captainNotification); + } + + updateNotification(String id) async { + await CRUD().post( + link: AppLink.updateNotificationPassenger, + payload: {'isShown': 'true', 'id': id}, + ); + Get.back(); + getNotifications(); + } + + addNotificationToPassenger(String title, body) async { + var res = CRUD().post(link: AppLink.addNotificationPassenger, payload: { + 'title': title, + 'body': body, + }); + // Get.find().sendNotificationToPassengerToken( + // title, + // body, + // 'token', + // [], + // 'iphone_ringtone', + // ); + await NotificationService.sendNotification( + category: title, + target: 'token'.toString(), + title: title, + body: body.tr, + isTopic: false, // Important: this is a token + tone: 'cancel', + driverList: [], + ); + } + + @override + void onInit() { + getNotifications(); + super.onInit(); + } +} + + +================================================== +FILE PATH: ./lib/controller/notification/ride_available_controller.dart +================================================== + +import 'dart:convert'; + +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/views/widgets/elevated_btn.dart'; +import 'package:get/get.dart'; + +import '../../constant/links.dart'; +import '../functions/crud.dart'; + +class RideAvailableController extends GetxController { + bool isLoading = false; + Map rideAvailableMap = {}; + getRideAvailable() async { + isLoading = true; + var res = await CRUD().get(link: AppLink.getRideWaiting, payload: {}); + if (res != 'failure') { + rideAvailableMap = jsonDecode(res); + isLoading = false; + update(); + } else { + Get.defaultDialog( + title: 'No Rides now!'.tr, + middleText: '', + titleStyle: AppStyle.title, + confirm: MyElevatedButton( + title: 'Ok'.tr, + onPressed: () { + Get.back(); + Get.back(); + })); + } + } + + @override + void onInit() { + getRideAvailable(); + super.onInit(); + } +} + + +================================================== +FILE PATH: ./lib/controller/payment/paymob.dart +================================================== + +import 'package:Intaleq/constant/box_name.dart'; +import 'package:dio/dio.dart' as dio; +import 'package:dio/dio.dart'; +import 'package:get/get.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import '../../constant/api_key.dart'; +import '../../main.dart'; +import '../../print.dart'; +import '../functions/encrypt_decrypt.dart'; + +class PaymobManager extends GetxController { + String authanticationToken1 = ""; + String orderId1 = ""; + + Future getPaymentKey(int amount, String currency) async { + try { + String authanticationToken = await _getAuthanticationToken(); + + int orderId = await _getOrderId( + authanticationToken: authanticationToken, + amount: (100 * amount).toString(), + currency: currency, + ); + + String paymentKey = await _getPaymentKey( + authanticationToken: authanticationToken, + amount: (100 * amount).toString(), + currency: currency, + orderId: orderId.toString(), + ); + authanticationToken1 = authanticationToken.toString(); + orderId1 = orderId.toString(); + update(); + return paymentKey; + } catch (e) { + throw Exception(); + } + } + + Future payWithPayMob(int amount, String currency) async { + // 1. Fetch Payment Key (Assuming PaymobManager is a custom class) + String paymentToken; + try { + paymentToken = await PaymobManager().getPaymentKey(amount, currency); + } on Exception catch (e) { + // Handle errors gracefully, e.g., display error message to user + return; + } + + // 2. Prepare Payment Data Payload + final Map data = { + "source": { + "identifier": box.read(BoxName.phone), //"01010101010" + "subtype": "WALLET", + }, + "payment_token": paymentToken, + }; + + // 3. Make Payment Request using Dio + final dio = Dio(); + try { + final response = await dio.post( + 'https://accept.paymobsolutions.com/api/acceptance/payments/pay', + data: data, + ); + + // 4. Handle Payment Response + if (response.statusCode == 200) { + final paymentData = response.data; // Assuming JSON response + + // Navigate to success screen or display success message + launchUrl(Uri.parse(paymentData['iframe_redirection_url'])); + } else { + // Payment failed: Handle errors (e.g., display error message) + } + } on DioError catch (e) { + // Handle network or Dio-related errors + } + } + + Future _getStatusAfterPaid() async { + final dio.Response response = await Dio().post( + "https://accept.paymob.com/api/ecommerce/orders/transaction_inquiry", + data: { + "auth_token": authanticationToken1, + "merchant_order_id": "970960", + "order_id": orderId1 + }); + return response.data["success"]; + } + + Future _getAuthanticationToken() async { + final dio.Response response = + await Dio().post("https://accept.paymob.com/api/auth/tokens", data: { + "api_key": AK.payMobApikey, + 'username': AK.usernamePayMob, + "password": AK.passwordPayMob, + }); + Log.print('token: ${response}'); + return response.data["token"]; + } + + Future _getOrderId({ + required String authanticationToken, + required String amount, + required String currency, + }) async { + final dio.Response response = await Dio() + .post("https://accept.paymob.com/api/ecommerce/orders", data: { + "auth_token": authanticationToken, + "amount_cents": amount, + "currency": currency, + "delivery_needed": "false", + "items": [], + }); + Log.print('id: ${response}'); + return response.data["id"]; + } + + Future _getPaymentKey({ + required String authanticationToken, + required String orderId, + required String amount, + required String currency, + }) async { + final dio.Response response = await Dio() + .post("https://accept.paymob.com/api/acceptance/payment_keys", data: { + "expiration": 200, + "auth_token": authanticationToken.toString(), + "order_id": orderId.toString(), + "integration_id": + 4601103, ////todo wallet or online card int.parse(AK.integrationIdPayMob), + "lock_order_when_paid": "false", + "amount_cents": amount, + "currency": currency, + "billing_data": { + "first_name": + (box.read(BoxName.name).toString().split(' ')[0]).toString(), + "last_name": + (box.read(BoxName.name).toString().split(' ')[1]).toString(), + "email": (box.read(BoxName.email)), + "phone_number": (box.read(BoxName.phone)), + "apartment": "NA", + "floor": "NA", + "street": "NA", + "building": "NA", + "shipping_method": "NA", + "postal_code": "NA", + "city": "NA", + "country": box.read(BoxName.countryCode), + "state": "NA" + }, + }); + Log.print('token: ${response}'); + return response.data["token"]; + } +} + + +================================================== +FILE PATH: ./lib/controller/payment/payment_controller.dart +================================================== + +import 'dart:convert'; +import 'package:Intaleq/constant/api_key.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/controller/firebase/firbase_messge.dart'; +import 'package:Intaleq/controller/payment/paymob/paymob_response.dart'; +import 'package:Intaleq/views/home/map_page_passenger.dart'; +import 'package:http/http.dart' as http; +import 'package:flutter/material.dart'; +import 'package:flutter_paypal/flutter_paypal.dart'; +import 'package:flutter_stripe/flutter_stripe.dart'; +import 'package:get/get.dart'; +import 'package:local_auth/local_auth.dart'; +import 'package:Intaleq/controller/home/map_passenger_controller.dart'; +import 'package:webview_flutter/webview_flutter.dart'; + +import '../../constant/box_name.dart'; +import '../../constant/colors.dart'; +import '../../constant/info.dart'; +import '../../constant/links.dart'; +import '../../main.dart'; +import '../../print.dart'; +import '../firebase/notification_service.dart'; +import '../functions/crud.dart'; +import '../functions/encrypt_decrypt.dart'; +import '../functions/toast.dart'; +import 'paymob/e_cash_screen.dart'; + +class PaymentController extends GetxController { + bool isLoading = false; + bool isWalletChecked = true; + bool isCashChecked = false; + bool isWalletFound = false; + bool isPromoSheetDialogue = false; + final formKey = GlobalKey(); + final promo = TextEditingController(); + final walletphoneController = TextEditingController(); + double totalPassenger = Get.find().totalPassenger; + int? selectedAmount = 0; + List totalPassengerWalletDetails = []; + String passengerTotalWalletAmount = ''; + String ip = '1'; + DateTime now = DateTime.now(); + late int timestamp; + + void updateSelectedAmount(int value) { + selectedAmount = value; + update(); + } + + void changePromoSheetDialogue() { + isPromoSheetDialogue = !isPromoSheetDialogue; + update(); + } + + getPassengerWallet() async { + isLoading = true; + update(); + + await CRUD().getWallet( + link: AppLink.getWalletByPassenger, + payload: {'passenger_id': box.read(BoxName.passengerID)}).then((value) { + box.write(BoxName.passengerWalletTotal, + jsonDecode(value)['message'][0]['total'].toString()); + }); + isLoading = false; + update(); + } + + String paymentToken = ''; + Future generateTokenPassenger(String amount) async { + var res = + await CRUD().post(link: AppLink.addPaymentTokenPassenger, payload: { + 'passengerId': box.read(BoxName.passengerID).toString(), + 'amount': amount.toString(), + }); + var d = jsonDecode(res); + return d['message']; + } + + Future generateTokenDriver(String amount) async { + var res = await CRUD().post(link: AppLink.addPaymentTokenDriver, payload: { + 'driverID': Get.find().driverId, + 'amount': amount.toString(), + }); + var d = jsonDecode(res); + return d['message']; + } + + Future addSeferWallet(String paymentMethod, point) async { + var seferToken = await generateTokenPassenger(point); + await CRUD().postWallet(link: AppLink.addSeferWallet, payload: { + 'amount': point.toString(), + 'paymentMethod': paymentMethod, + 'passengerId': box.read(BoxName.passengerID).toString(), + 'token': seferToken, + 'driverId': 'passenger', + }); + } + + Future addPassengersWallet(String point) async { + var token = await generateTokenPassenger(point); + await CRUD().postWallet(link: AppLink.addPassengersWallet, payload: { + 'passenger_id': box.read(BoxName.passengerID).toString(), + 'balance': point, + 'token': token, + }); + } + + payToDriverForCancelAfterAppliedAndHeNearYou(String rideId) async { + { + double costOfWaiting5Minute = box.read(BoxName.countryCode) == 'Egypt' + ? (4 * .08) + (5 * 1) + // 4 indicate foe 4 km ditance from driver start move to passenger + : (4 * .06) + (5 * .06); //for Eygpt other like jordan .06 per minute + var paymentTokenWait = + await generateTokenDriver(costOfWaiting5Minute.toString()); + var res = + await CRUD().postWallet(link: AppLink.addDrivePayment, payload: { + 'rideId': rideId, + 'amount': costOfWaiting5Minute.toString(), + 'payment_method': 'cancel-from-near', + 'passengerID': box.read(BoxName.passengerID).toString(), + 'token': paymentTokenWait, + 'driverID': Get.find().driverId.toString(), + }); + var paymentTokenWait1 = + await generateTokenDriver(costOfWaiting5Minute.toString()); + var res1 = await CRUD() + .postWallet(link: AppLink.addDriversWalletPoints, payload: { + 'paymentID': 'rideId$rideId', + 'amount': (costOfWaiting5Minute).toStringAsFixed(0), + 'paymentMethod': 'cancel-from-near', + 'token': paymentTokenWait1, + 'driverID': Get.find().driverId.toString(), + }); + + if (res != 'failure') { + // Get.find().sendNotificationToDriverMAP( + // 'Cancel', + // 'Trip Cancelled. The cost of the trip will be added to your wallet.' + // .tr, + // Get.find().driverToken, + // [], + // 'cancel', + // ); + await NotificationService.sendNotification( + category: 'Cancel', + target: Get.find().driverToken.toString(), + title: 'Cancel'.tr, + body: + 'Trip Cancelled. The cost of the trip will be added to your wallet.' + .tr, + isTopic: false, // Important: this is a token + tone: 'cancel', + driverList: [], + ); + } + var paymentTokenWaitPassenger1 = + await generateTokenPassenger((costOfWaiting5Minute * -1).toString()); + await CRUD().post(link: AppLink.addPassengersWallet, payload: { + 'passenger_id': box.read(BoxName.passengerID).toString(), + 'balance': (costOfWaiting5Minute * -1).toString(), + 'token': paymentTokenWaitPassenger1, + }); + Get.offAll(const MapPagePassenger()); + } + } + + addPassengerWallet() async { + isLoading = true; + update(); + + await addSeferWallet('visa-in', selectedAmount.toString()); + await addPassengersWallet(selectedAmount == 100 + ? '100' + : selectedAmount == 200 + ? '215' + : selectedAmount == 400 + ? '450' + : selectedAmount == 1000 + ? '1140' + : '0'); + + // getPassengerWallet(); + + isLoading = false; + update(); + } + + void onChangedPaymentMethodWallet(bool? value) { + if (box.read(BoxName.passengerWalletTotal) == null || + double.parse(box.read(BoxName.passengerWalletTotal).toString()) < + totalPassenger) { + isWalletChecked = false; + isWalletChecked ? isCashChecked = true : isCashChecked = true; + update(); + } else { + isWalletChecked = !isWalletChecked; + isWalletChecked ? isCashChecked = false : isCashChecked = true; + update(); + } + } + + void onChangedPaymentMethodCash(bool? value) { + if (box.read(BoxName.passengerWalletTotal) == null || + double.parse(box.read(BoxName.passengerWalletTotal)) < totalPassenger) { + isWalletChecked = false; + isCashChecked = !isCashChecked; + isCashChecked ? isWalletChecked = false : isWalletChecked = false; + update(); + } else { + isCashChecked = !isCashChecked; + isCashChecked ? isWalletChecked = false : isWalletChecked = true; + update(); + } + } + + void applyPromoCodeToPassenger() async { + //TAWJIHI + CRUD().get(link: AppLink.getPassengersPromo, payload: { + 'promo_code': promo.text, + }).then((value) { + var decod = jsonDecode(value); + + if (decod["status"] == "success") { + var firstElement = decod["message"][0]; + totalPassenger = totalPassenger - + (totalPassenger * int.parse(firstElement['amount'])); + MapPassengerController().promoTaken = true; + update(); + } + }); + } + + late String clientSecret; + + Future makePaymentStripe( + double amount, String currency, Function method) async { + var newAmount = (amount * 100).toInt(); + + try { + // Check if local authentication is available + bool isAvailable = await LocalAuthentication().isDeviceSupported(); + if (isAvailable) { + // Authenticate the user + bool didAuthenticate = await LocalAuthentication().authenticate( + localizedReason: 'Use Touch ID or Face ID to confirm payment', + ); + if (didAuthenticate) { + // User authenticated successfully, proceed with payment + clientSecret = await getClientSecret(newAmount.toString(), currency); + await initializePaymentSheet(clientSecret); + await Stripe.instance.presentPaymentSheet(); + method(); + } else { + // Authentication failed, handle accordingly + } + } else { + // Local authentication not available, proceed with payment without authentication + clientSecret = await getClientSecret(newAmount.toString(), currency); + await initializePaymentSheet(clientSecret); + await Stripe.instance.presentPaymentSheet(); + method(); + } + } catch (e) { + rethrow; + } + } + + Future initializePaymentSheet(String clientSecret) async { + await Stripe.instance.initPaymentSheet( + paymentSheetParameters: SetupPaymentSheetParameters( + // intentConfiguration: IntentConfiguration.fromJson({}), + // applePay: const PaymentSheetApplePay(merchantCountryCode: 'US'), + // googlePay: const PaymentSheetGooglePay(merchantCountryCode: 'US'), + paymentIntentClientSecret: clientSecret, + merchantDisplayName: AppInformation.appName, + billingDetails: BillingDetails( + name: box.read(BoxName.nameDriver) == null + ? (box.read(BoxName.name).toString().split(' ')[0]).toString() + : box.read(BoxName.nameDriver).toString(), + email: box.read(BoxName.emailDriver) == null + ? box.read(BoxName.email).toString() + : box.read(BoxName.emailDriver).toString(), + phone: box.read(BoxName.phoneDriver) == null + ? box.read(BoxName.phone).toString() + : box.read(BoxName.phoneDriver).toString(), + address: Address( + city: 'city', + country: box.read(BoxName.countryCode), //'United States' + line1: '', + line2: '', + postalCode: '12345', + state: box.read(BoxName.countryCode) // 'Boston' + )), + allowsDelayedPaymentMethods: true, + customerEphemeralKeySecret: Stripe.merchantIdentifier, + appearance: const PaymentSheetAppearance( + shapes: PaymentSheetShape(borderRadius: 12), + colors: PaymentSheetAppearanceColors( + background: AppColor.secondaryColor, + ), + ), + billingDetailsCollectionConfiguration: + const BillingDetailsCollectionConfiguration( + name: CollectionMode.automatic, + phone: CollectionMode.automatic, + email: CollectionMode.automatic, + // address: CollectionMode.automatic, + ), + ), + ); + } + + Future getClientSecret(String amount, currency) async { + var res = await CRUD().postStripe( + link: 'https://api.stripe.com/v1/payment_intents', + payload: { + 'amount': amount, + 'currency': currency, + 'payment_method_types[0]': 'card' + }, + ); + + // Convert the res object to a JSON object + final jsonResponse = jsonDecode(res); + // Check if the client_secret property exists and is not null + if (jsonResponse.containsKey('client_secret') && + jsonResponse['client_secret'] != null) { + // Return the client_secret property + return jsonResponse['client_secret'] as String; + } else { + throw Exception('Failed to fetch client secret'); + } + } + + Future configure3dSecureFuture() async { + await Stripe.instance.openApplePaySetup(); + } + + Future makePaymentPayPal(BuildContext context) async { + try { + // Check if local authentication is available + bool isAvailable = await LocalAuthentication().isDeviceSupported(); + if (isAvailable) { + // Authenticate the user + bool didAuthenticate = await LocalAuthentication().authenticate( + localizedReason: 'Use Touch ID or Face ID to confirm payment', + ); + if (didAuthenticate) { + // User authenticated successfully, proceed with payment + + if (selectedAmount != 0) { + changePromoSheetDialogue(); + Navigator.of(context).push( + MaterialPageRoute( + builder: (BuildContext context) => UsePaypal( + sandboxMode: true, + clientId: AK.payPalClientId, + secretKey: AK.payPalSecret, + returnURL: AppInformation.website, + cancelURL: "${AppInformation.website}/cancel", + transactions: [ + { + "amount": { + //sb-opsju26682403@personal.example.com + "total": '$selectedAmount', + "currency": box.read(BoxName.countryCode) == 'Egypt' + ? 'EGP' + : "JOD", + "details": { + "subtotal": '$selectedAmount', + "shipping": '0', + "shipping_discount": 0 + } + }, + "description": "The payment transaction description.", + "payment_options": const { + "allowed_payment_method": "INSTANT_FUNDING_SOURCE" + }, + "item_list": { + "items": [ + { + "name": "${AppInformation.appName} Wallet ", + "quantity": 1, + "price": '$selectedAmount', + "currency": "USD" + } + ], + + // shipping address is not required though + "shipping_address": const { + "recipient_name": + "${AppInformation.appName} Wallet", + "line1": "Shafa Badran", + "line2": "", + "city": "Amman", + "country_code": "JO", + "postal_code": "13112", + "phone": "+962798583052", + "state": "Amman" + }, + } + } + ], + note: "Contact us for any questions on your order.".tr, + onSuccess: (Map params) async { + addPassengerWallet(); + changePromoSheetDialogue(); + await getPassengerWallet(); + }, + onError: (error) { + Toast.show(context, ' $error'.tr, AppColor.redColor); + }, + onCancel: (params) { + Toast.show(context, 'Pyament Cancelled .'.tr, + AppColor.yellowColor); + }), + ), + ); + } else { + Toast.show(context, 'You will choose one of above !'.tr, + AppColor.redColor); + } + } else { + // Authentication failed, handle accordingly + } + } + } catch (e) { + rethrow; + } + } + + Map licenseDetailsMap = {}; + Future getLicenseInfo() async { + var res = await CRUD().get( + link: AppLink.getLicense, + payload: {'driverID': box.read(BoxName.driverID)}); + licenseDetailsMap = jsonDecode(res); + } + + Future createConnectAccount() async { + String url = 'https://api.stripe.com/v1/accounts'; + await getLicenseInfo(); + DateTime dob = + DateTime.parse(licenseDetailsMap['message'][0]['dateOfBirth']); + int currentTimestamp = + (DateTime.now().millisecondsSinceEpoch / 1000).round(); + int day = dob.day; + int month = dob.month; + int year = dob.year; + await getIpAddress(); + final body = { + "type": "custom", + "business_profile[name]": box.read(BoxName.nameDriver), + "business_profile[product_description]": "Captain", + "business_profile[support_address][city]": "San Francisco", + "business_profile[support_address][country]": 'US', + "business_profile[support_address][line1]": + licenseDetailsMap['message'][0]['address'].toString().trim()[0], + "business_profile[support_address][postal_code]": + licenseDetailsMap['message'][0]['postalCode'], + "business_profile[support_address][state]": "MA", + "business_profile[support_email]": "support@sefer.live", + "business_profile[support_phone]": "555-123-4567", + "business_profile[url]": "https://sefer.live", + "business_type": "individual", + "capabilities[card_payments][requested]": "true", + "capabilities[transfers][requested]": "true", + "company[address][city]": "ATTLEBORO", + "company[address][country]": "US", + "company[address][line1]": "1249 NEWPORT AVE", + "company[address][postal_code]": "02703 ", + "company[address][state]": "MA", + "company[name]": AppInformation.companyName, + "country": "us", + "default_currency": "usd", + "email": "support@sefer.live", + // "individual[ssn]": "123-45-6789", // + "individual[id_number]": licenseDetailsMap['message'][0]['documentNo'], + // "individual[id_type]": "drivers_license", // + "individual[address][city]": "ATTLEBORO", + "individual[address][country]": "US", + "individual[address][line1]": licenseDetailsMap['message'][0]['address'], + // "individual[address][postal_code]": licenseDetailsMap['message'][0] + // ['postalCode'], + "individual[address][state]": "MA", + // "individual[ssn_last_4]": '1111', //////// + "individual[dob][day]": day.toString(), + "individual[dob][month]": month.toString(), + "individual[dob][year]": year.toString(), + "individual[email]": box.read(BoxName.emailDriver), + "individual[first_name]": + licenseDetailsMap['message'][0]['name'].toString().split(' ')[0], + "individual[gender]": + licenseDetailsMap['message'][0]['sex'] == 'M' ? 'male' : 'female', + "individual[last_name]": + licenseDetailsMap['message'][0]['name'].toString().split(' ')[1], + // "individual[phone]": box.read(BoxName.phoneDriver),//////////// + "tos_acceptance[date]": currentTimestamp.toString(), + "tos_acceptance[ip]": ip.toString() + }; + + final response = await CRUD().postStripe( + link: url, + payload: body, + ); + final responseData = jsonDecode(response); + final accountId = responseData['id']; + box.write(BoxName.accountIdStripeConnect, accountId); + await updateCaptainAccountBank(); + return accountId; + } + + Future updateCaptainAccountBank() async { + var res = await CRUD().post(link: AppLink.updateAccountBank, payload: { + 'id': box.read(BoxName.driverID), + 'accountBank': box.read(BoxName.accountIdStripeConnect), + }); + if (jsonDecode(res)['status'] == 'success') { + Get.snackbar('Account Updated', ''); + } + } + + Future createTransactionToCaptain( + String amount, String account) async { + String url = 'https://api.stripe.com/v1/transfers'; + + final body = { + 'amount': amount, //amount + 'currency': 'usd', + 'destination': account //'acct_1OKIjQRgcWrsdyDT' //account id + }; + + final response = await CRUD().postStripe( + link: url, + payload: body, + ); + final responseData = jsonDecode(response); + final transactionId = responseData['id']; + + return transactionId; + } + + Future getIpAddress() async { + var url = Uri.parse('https://api.ipify.org?format=json'); + + var response = await http.get(url); + + if (response.statusCode == 200) { + ip = jsonDecode(response.body)['ip']; + } else {} + } + +// 'https://accept.paymob.com/unifiedcheckout/?publicKey=egy_pk_live_mbjDC9Ni6FSHKmsz8sOHiVk2xd7oWRve&clientSecret=egy_sk_live_c0904e9cf04506ae64f818d4e075b4a957e3713fdf7a22cb7da30a29e72442b5' +// أضف هذا الرابط إلى ملف AppLink الخاص بك + +// هذه هي الدالة الجديدة التي ستستخدمها لبدء الدفع + Future payWithEcash(BuildContext context, String amount) async { + try { + // 1. يمكنك استخدام نفس طريقة التحقق بالبصمة إذا أردت + bool isAvailable = await LocalAuthentication().isDeviceSupported(); + if (isAvailable) { + bool didAuthenticate = await LocalAuthentication().authenticate( + localizedReason: 'Use Touch ID or Face ID to confirm payment', + ); + + if (didAuthenticate) { + // 2. استدعاء الـ Endpoint الجديد على السيرفر الخاص بك + var res = await CRUD().postWallet( + link: AppLink.payWithEcashPassenger, + payload: { + // ✅ أرسل البيانات التي يحتاجها السيرفر الخاص بـ ecash + "amount": amount, + "passengerId": box.read(BoxName.passengerID), + }, + ); + + // 3. التأكد من أن السيرفر أعاد رابط الدفع بنجاح + if (res != null && + res['status'] == 'success' && + res['message'] != null) { + final String paymentUrl = res['message']; + // 4. الانتقال إلى شاشة الدفع الجديدة الخاصة بـ ecash + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + EcashPaymentScreen(paymentUrl: paymentUrl), + ), + ); + } else { + // عرض رسالة خطأ في حال فشل السيرفر في إنشاء الرابط + Get.defaultDialog( + title: 'Error'.tr, + content: Text( + 'Failed to initiate payment. Please try again.'.tr, + style: AppStyle.title, + ), + ); + } + } + } + } catch (e) { + Get.defaultDialog( + title: 'Error'.tr, + content: Text( + 'An error occurred during the payment process.'.tr, + style: AppStyle.title, + ), + ); + } + } + + // Future payWithEcashDriver(BuildContext context, String amount) async { + // try { + // // يمكنك استخدام نفس طريقة التحقق بالبصمة إذا أردت + // bool isAvailable = await LocalAuthentication().isDeviceSupported(); + // if (isAvailable) { + // bool didAuthenticate = await LocalAuthentication().authenticate( + // localizedReason: 'Use Touch ID or Face ID to confirm payment'.tr, + // ); + + // if (didAuthenticate) { + // // استدعاء الـ Endpoint الجديد على السيرفر الخاص بك + // var res = await CRUD().postWallet( + // link: AppLink.payWithEcashPassenger, + // // link: + // // 'https://wl.tripz-egypt.com/v1/main/ride/ecash/driver/payWithEcash.php', + // payload: { + // // أرسل البيانات التي يحتاجها السيرفر + // "amount": amount, + // // "driverId": box.read(BoxName.driverID), // تأكد من وجود هذا المتغير + // "passengerId": + // box.read(BoxName.passengerID), // تأكد من وجود هذا المتغير + // }, + // ); + + // // التأكد من أن السيرفر أعاد رابط الدفع بنجاح + // if (res != null && + // res['status'] == 'success' && + // res['message'] != null) { + // final String paymentUrl = res['message']; + // // الانتقال إلى شاشة الدفع الجديدة الخاصة بـ ecash للسائق + // Navigator.push( + // context, + // MaterialPageRoute( + // builder: (context) => + // EcashDriverPaymentScreen(paymentUrl: paymentUrl), + // ), + // ); + // } else { + // // عرض رسالة خطأ في حال فشل السيرفر في إنشاء الرابط + // Get.defaultDialog( + // title: 'Error'.tr, + // content: Text( + // 'Failed to initiate payment. Please try again.'.tr, + // style: AppStyle.title, + // ), + // ); + // } + // } + // } + // } catch (e) { + // Get.defaultDialog( + // title: 'Error'.tr, + // content: Text( + // 'An error occurred during the payment process.'.tr, + // style: AppStyle.title, + // ), + // ); + // } + // } + + /// شاشة جديدة ومبسطة خاصة بدفع السائقين عبر ecash + + // Future payWithMTNWallet( + // BuildContext context, String amount, String currency) async { + // // خزن سياق علوي آمن من البداية + // final BuildContext safeContext = + // Get.overlayContext ?? Get.context ?? context; + + // // سبينر تحميل + // if (!(Get.isDialogOpen ?? false)) { + // Get.dialog(const Center(child: CircularProgressIndicator()), + // barrierDismissible: false); + // } + + // try { + // final phone = box.read(BoxName.phoneWallet) as String; + // final passengerID = box.read(BoxName.passengerID).toString(); + // final formattedAmount = double.parse(amount).toStringAsFixed(0); + + // print("🚀 بدء عملية دفع MTN"); + // print( + // "📦 Payload: passengerID: $passengerID, amount: $formattedAmount, phone: $phone"); + + // // التحقق بالبصمة (اختياري) + حماية من الـ await + // final localAuth = LocalAuthentication(); + // final isAuthSupported = await localAuth.isDeviceSupported(); + // if (isAuthSupported) { + // final didAuth = await localAuth.authenticate( + // localizedReason: 'استخدم بصمة الإصبع أو الوجه لتأكيد الدفع', + // ); + // if (!didAuth) { + // if (Get.isDialogOpen == true) Get.back(); + // print("❌ المستخدم لم يؤكد بالبصمة/الوجه"); + // return; + // } + // } + + // // 1) بدء الدفع + // final responseData = await CRUD().postWalletMtn( + // link: AppLink.payWithMTNStart, + // payload: { + // "amount": formattedAmount, + // "passengerId": passengerID, + // "phone": phone, + // "lang": box.read(BoxName.lang) ?? 'ar', + // }, + // ); + + // // print("✅ استجابة الخادم (mtn_start_payment.php):"); + // // print(responseData); + // Log.print('responseData: ${responseData}'); + + // // فحص الاستجابة بقوة + // late final Map startRes; + // if (responseData is Map) { + // startRes = responseData; + // } else if (responseData is String) { + // startRes = json.decode(responseData) as Map; + // } else { + // throw Exception("تم استلام نوع بيانات غير متوقع من الخادم."); + // } + + // if (startRes['status'] != 'success') { + // final errorMsg = startRes['message']['Error']?.toString().tr ?? + // "فشل بدء عملية الدفع. حاول مرة أخرى."; + // throw Exception(errorMsg); + // } + + // final messageData = startRes["message"] as Map; + // final invoiceNumber = messageData["invoiceNumber"].toString(); + // final operationNumber = messageData["operationNumber"].toString(); + // final guid = messageData["guid"].toString(); + + // // print( + // // "📄 invoiceNumber: $invoiceNumber, 🔢 operationNumber: $operationNumber, 🧭 guid: $guid"); + + // // أغلق السبينر قبل إظهار حوار OTP + // if (Get.isDialogOpen == true) Get.back(); + + // // 2) إدخال OTP بـ Get.defaultDialog (لا يستخدم context قابل للتلف) + // String otpInput = ""; + // await Get.defaultDialog( + // title: "أدخل كود التحقق", + // barrierDismissible: false, + // content: TextField( + // keyboardType: TextInputType.number, + // decoration: const InputDecoration(hintText: "كود OTP"), + // onChanged: (v) => otpInput = v, + // ), + // confirm: TextButton( + // onPressed: () { + // if (otpInput.isEmpty || + // otpInput.length < 4 || + // otpInput.length > 8) { + // Get.snackbar("تنبيه", "أدخل كود OTP صحيح (4–8 أرقام)"); + // return; + // } + // Get.back(result: otpInput); + // }, + // child: const Text("تأكيد"), + // ), + // cancel: TextButton( + // onPressed: () => Get.back(result: null), + // child: const Text("إلغاء"), + // ), + // ).then((res) => otpInput = (res ?? "") as String); + + // if (otpInput.isEmpty) { + // print("❌ لم يتم إدخال OTP"); + // return; + // } + // print("🔐 تم إدخال OTP: $otpInput"); + + // // سبينر أثناء التأكيد + // Get.dialog(const Center(child: CircularProgressIndicator()), + // barrierDismissible: false); + + // // 3) تأكيد الدفع + // final confirmRes = await CRUD().postWalletMtn( + // link: AppLink.payWithMTNConfirm, + // payload: { + // "invoiceNumber": invoiceNumber, + // "operationNumber": operationNumber, + // "guid": guid, + // "otp": otpInput, + // "phone": phone, + // "lang": box.read(BoxName.lang) ?? 'ar', + // }, + // ); + + // if (Get.isDialogOpen == true) Get.back(); + + // // print("✅ استجابة mtn_confirm.php:"); + // // Log.print('confirmRes: ${confirmRes}'); + + // final ok = (confirmRes is Map && confirmRes['status'] == 'success'); + // if (ok) { + // Get.defaultDialog( + // title: "✅ نجاح", + // content: const Text("تمت عملية الدفع وإضافة الرصيد إلى محفظتك."), + // ); + // await getPassengerWallet(); + // } else { + // final errorMsg = (confirmRes['message']['message']?.toString()) ?? + // "فشل في تأكيد الدفع"; + // Get.defaultDialog(title: "❌ فشل", content: Text(errorMsg.tr)); + // } + // } catch (e, s) { + // print("🔥 خطأ أثناء الدفع عبر MTN:"); + // print(e); + // print(s); + // if (Get.isDialogOpen == true) Get.back(); + // Get.defaultDialog( + // title: 'حدث خطأ', + // content: Text(e.toString().replaceFirst("Exception: ", "")), + // ); + // } + // } + + Future payWithSyriaTelWallet(String amount, String currency) async { + // helper لفتح لودينغ بأمان + Future _showLoading() async { + if (!(Get.isDialogOpen ?? false)) { + Get.dialog(const Center(child: CircularProgressIndicator()), + barrierDismissible: false); + } + } + + // helper لإغلاق أي حوار مفتوح + void _closeAnyDialog() { + if (Get.isDialogOpen ?? false) { + Get.back(); + } + } + + await _showLoading(); + try { + final phone = box.read(BoxName.phoneWallet) as String; + final passengerId = box.read(BoxName.passengerID).toString(); + final formattedAmount = double.parse(amount).toStringAsFixed(0); + + print("🚀 Syriatel payment start"); + print( + "📦 Payload => passengerId:$passengerId amount:$formattedAmount phone:$phone"); + + // مصادقة حيوية (اختياري) + final auth = LocalAuthentication(); + if (await auth.isDeviceSupported()) { + final ok = await auth.authenticate( + localizedReason: 'استخدم بصمة الإصبع أو الوجه لتأكيد الدفع', + ); + if (!ok) { + _closeAnyDialog(); + print("❌ User did not authenticate"); + return; + } + } + + // 1) بدء عملية الدفع + final startRaw = await CRUD().postWalletMtn( + link: AppLink.payWithSyriatelStart, + payload: { + "amount": formattedAmount, + "passengerId": passengerId, + "phone": phone, + "lang": box.read(BoxName.lang) ?? 'ar', + }, + ); + + print("✅ Server response (start): $startRaw"); + + // تحويل الاستجابة إلى Map + late final Map startRes; + if (startRaw is Map) { + startRes = startRaw; + } else if (startRaw is String) { + startRes = json.decode(startRaw) as Map; + } else { + throw Exception("Unexpected start response type"); + } + + if (startRes['status'] != 'success') { + final msg = + (startRes['message'] ?? 'Failed to start payment').toString(); + throw Exception(msg); + } + + final messageData = startRes['message'] as Map; + final transactionID = messageData['transactionID'].toString(); + print("📄 transactionID: $transactionID"); +// + // 2) اطلب من المستخدم إدخال OTP عبر Get.dialog (بدون context) + _closeAnyDialog(); // أغلق اللودينغ أولاً + final otpController = TextEditingController(); + final otp = await Get.dialog( + AlertDialog( + title: const Text("أدخل كود التحقق"), + content: TextField( + controller: otpController, + keyboardType: TextInputType.number, + decoration: const InputDecoration(hintText: "كود OTP"), + ), + actions: [ + TextButton( + child: const Text("تأكيد"), + onPressed: () => Get.back(result: otpController.text.trim()), + ), + TextButton( + child: const Text("إلغاء"), + onPressed: () => Get.back(result: null), + ), + ], + ), + barrierDismissible: false, + ); + + if (otp == null || otp.isEmpty) { + print("❌ OTP not provided"); + return; + } + print("🔐 OTP: $otp"); + + await _showLoading(); + + // 3) تأكيد الدفع + final confirmRaw = await CRUD().postWallet( + link: AppLink.payWithSyriatelConfirm, + payload: { + "transactionID": transactionID, + "otp": otp, + }, + ); + + _closeAnyDialog(); // أغلق اللودينغ + + print("✅ Response (confirm): $confirmRaw"); + + late final Map confirmRes; + if (confirmRaw is Map) { + confirmRes = confirmRaw; + } else if (confirmRaw is String) { + confirmRes = json.decode(confirmRaw) as Map; + } else { + throw Exception("Unexpected confirm response type"); + } + + if (confirmRes['status'] == 'success') { + Get.defaultDialog( + title: "✅ نجاح", + content: const Text("تمت عملية الدفع وإضافة الرصيد إلى محفظتك."), + ); + } else { + final msg = (confirmRes['message'] ?? 'فشل في تأكيد الدفع').toString(); + Get.defaultDialog( + title: "❌ فشل", + content: Text(msg), + ); + } + } catch (e, s) { + print("🔥 Error during Syriatel Wallet payment:\n$e\n$s"); + _closeAnyDialog(); + Get.defaultDialog( + title: 'حدث خطأ', + content: Text(e.toString().replaceFirst("Exception: ", "")), + ); + } + } + + @override + void onInit() { + timestamp = now.millisecondsSinceEpoch; + if (box.read(BoxName.passengerWalletTotal) == null) { + box.write(BoxName.passengerWalletTotal, '0'); + } + getPassengerWallet(); + final localAuth = LocalAuthentication(); + super.onInit(); + } +} + +class EcashDriverPaymentScreen extends StatefulWidget { + final String paymentUrl; + + const EcashDriverPaymentScreen({required this.paymentUrl, Key? key}) + : super(key: key); + + @override + State createState() => + _EcashDriverPaymentScreenState(); +} + +class _EcashDriverPaymentScreenState extends State { + late final WebViewController _controller; + + @override + void initState() { + super.initState(); + _controller = WebViewController() + ..setJavaScriptMode(JavaScriptMode.unrestricted) + ..setNavigationDelegate(NavigationDelegate( + onPageFinished: (url) async { + print('Ecash Driver WebView URL Finished: $url'); + await Get.find().getPassengerWallet(); + // هنا نتحقق فقط من أن المستخدم عاد إلى صفحة النجاح + // لا حاجة لاستدعاء أي API هنا، فالـ Webhook يقوم بكل العمل + if (url.contains("success.php")) { + showProcessingDialog(); + } + }, + )) + ..loadRequest(Uri.parse(widget.paymentUrl)); + } + + // دالة لعرض رسالة "العملية قيد المعالجة" + void showProcessingDialog() { + showDialog( + barrierDismissible: false, + context: Get.context!, + builder: (BuildContext context) { + return AlertDialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12.0), + ), + title: Row( + children: [ + Icon(Icons.check_circle, color: Colors.green), + const SizedBox(width: 8), + Text( + "Payment Successful".tr, + style: TextStyle( + color: Colors.green, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + content: Text( + "Your payment is being processed and your wallet will be updated shortly." + .tr, + style: const TextStyle(fontSize: 16), + ), + actions: [ + TextButton( + onPressed: () { + // أغلق مربع الحوار، ثم أغلق شاشة الدفع + Navigator.pop(context); // Close the dialog + Navigator.pop(context); // Close the payment screen + }, + style: TextButton.styleFrom( + backgroundColor: Colors.green, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8.0), + ), + ), + child: Text( + "OK".tr, + style: const TextStyle(color: Colors.white), + ), + ), + ], + ); + }, + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: Text('Complete Payment'.tr)), + body: WebViewWidget(controller: _controller), + ); + } +} + + +================================================== +FILE PATH: ./lib/controller/payment/passenger_wallet_history_controller.dart +================================================== + +import 'dart:convert'; + +import 'package:get/get.dart'; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/links.dart'; +import 'package:Intaleq/controller/functions/crud.dart'; +import 'package:Intaleq/main.dart'; + +import '../../views/widgets/mydialoug.dart'; + +class PassengerWalletHistoryController extends GetxController { + bool isLoading = false; + List archive = []; + + Future getArchivePayment() async { + try { + isLoading = true; + update(); + + var res = await CRUD().getWallet( + link: AppLink.getPassengerWalletArchive, + payload: {'passenger_id': box.read(BoxName.passengerID)}, + ); + + if (res != 'failure') { + archive = jsonDecode(res)['message']; + } else { + MyDialog().getDialog('No wallet record found'.tr, '', () { + Get.back(); + Get.back(); + }); + } + } catch (e) { + // MyDialog().getDialog('An error occurred'.tr, '', () { + // Get.back(); + // }); + } finally { + isLoading = false; + update(); + } + } + + @override + void onInit() { + getArchivePayment(); + super.onInit(); + } +} + + +================================================== +FILE PATH: ./lib/controller/payment/driver_payment_controller.dart +================================================== + +import 'dart:convert'; + +import 'package:Intaleq/views/widgets/elevated_btn.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/links.dart'; +import 'package:Intaleq/controller/functions/crud.dart'; +import 'package:Intaleq/main.dart'; + +class DriverWalletHistoryController extends GetxController { + bool isLoading = false; + List archive = []; + + getArchivePayment() async { + isLoading = true; + update(); + var res = await CRUD().getWallet( + link: AppLink.getWalletByDriver, + payload: {'driverID': box.read(BoxName.driverID)}); + if (res == 'failure') { + Get.defaultDialog( + barrierDismissible: false, + title: 'There is no data yet.'.tr, + middleText: '', + confirm: MyElevatedButton( + title: 'Back'.tr, + onPressed: () { + Get.back(); + Get.back(); + }, + )); + } + archive = jsonDecode(res)['message']; + isLoading = false; + update(); + } + + @override + void onInit() { + getArchivePayment(); + super.onInit(); + } +} + + +================================================== +FILE PATH: ./lib/controller/payment/stripe.dart +================================================== + + + +================================================== +FILE PATH: ./lib/controller/payment/paymob/paymob_wallet.dart +================================================== + +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/main.dart'; +import 'package:dio/dio.dart'; +import 'package:flutter/material.dart'; +import 'package:webview_flutter/webview_flutter.dart'; + +import '../../../print.dart'; +import '../../functions/encrypt_decrypt.dart'; + +class PaymobResponseWallet { + final bool success; + final String? transactionID; + final String? responseCode; + final String? message; + + PaymobResponseWallet({ + required this.success, + this.transactionID, + this.responseCode, + this.message, + }); + + factory PaymobResponseWallet.fromJson(Map json) { + return PaymobResponseWallet( + success: json['success'] == 'true', + transactionID: json['id'], + responseCode: json['txn_response_code'], + message: json['data']['message'], + ); + } +} + +class PaymobPaymentWallet { + static PaymobPaymentWallet instance = PaymobPaymentWallet(); + + bool _isInitializedWallet = false; + + final Dio _dio = Dio(); + final _baseURL = 'https://accept.paymob.com/api/'; + late String _apiKey; + late int _integrationID; + late int _iFrameID; + late String _iFrameURL; + late int _userTokenExpiration; + + /// Initializing PaymobPayment instance. + Future initialize({ + /// It is a unique identifier for the merchant which used to authenticate your requests calling any of Accept's API. + /// from dashboard Select Settings -> Account Info -> API Key + required String apiKey, + + /// from dashboard Select Developers -> Payment Integrations -> Online Card ID + required int integrationID, + + /// from paymob Select Developers -> iframes + required int iFrameID, + + /// The expiration time of this payment token in seconds. (The maximum is 3600 seconds which is an hour) + int userTokenExpiration = 300, + }) async { + if (_isInitializedWallet) { + return true; + } + _dio.options.baseUrl = _baseURL; + _dio.options.validateStatus = (status) => true; + _apiKey = apiKey; + _integrationID = integrationID; + _iFrameID = iFrameID; + _iFrameURL = + 'https://accept.paymobsolutions.com/api/acceptance/iframes/$_iFrameID?payment_token='; + _isInitializedWallet = true; + _userTokenExpiration = userTokenExpiration; + return _isInitializedWallet; + } + + /// Get authentication token, which is valid for one hour from the creation time. + Future _getAuthToken() async { + try { + final response = await _dio.post( + 'auth/tokens', + data: { + 'api_key': _apiKey, + }, + ); + return response.data['token']; + } catch (e) { + rethrow; + } + } + + /// At this step, you will register an order to Accept's database, so that you can pay for it later using a transaction + Future _addOrder({ + required String authToken, + required String currency, + required String amount, + required List items, + }) async { + try { + final response = await _dio.post( + 'ecommerce/orders', + data: { + "auth_token": authToken, + "delivery_needed": "false", + "amount_cents": amount, + "currency": currency, + "items": items, + }, + ); + return response.data['id']; + } catch (e) { + rethrow; + } + } + + /// At this step, you will obtain a payment_key token. This key will be used to authenticate your payment request. It will be also used for verifying your transaction request metadata. + Future _getPurchaseToken({ + required String authToken, + required String currency, + required int orderID, + required String amount, + required PaymobBillingDataWallet billingData, + }) async { + final response = await _dio.post( + 'acceptance/payment_keys', + data: { + "auth_token": authToken, + "amount_cents": amount, + "expiration": _userTokenExpiration, + "order_id": orderID, + "billing_data": billingData, + "currency": currency, + "integration_id": _integrationID, + "lock_order_when_paid": "false" + }, + ); + // final message = response.data['message']; + // if (message != null) { + // throw Exception(message); + // } + return response.data['token']; + } + + Future _getWalletUrl({ + required String paymentToken, + }) async { + final Map data = { + "source": { + "identifier": (box.read(BoxName.phoneWallet).toString()), + "subtype": "WALLET", + }, + "payment_token": paymentToken, + }; + final dio = Dio(); + try { + final response = await dio.post( + 'https://accept.paymobsolutions.com/api/acceptance/payments/pay', + data: data, + ); + + // 4. Handle Payment Response + if (response.statusCode == 200) { + final paymentData = response.data; // Assuming JSON response + + return paymentData['iframe_redirection_url']; + // Navigate to success screen or display success message + } else { + // Payment failed: Handle errors (e.g., display error message) + } + } on DioError catch (e) { + // Handle network or Dio-related errors + } + return ''; + } + + /// Proceed to pay with only calling this function. + /// Opens a WebView at Paymob redirectedURL to accept user payment info. + Future pay( + { + /// BuildContext for navigation to WebView + required BuildContext context, + + /// Which Currency you would pay in. + required String currency, + + /// Payment amount in cents EX: 20000 is an 200 EGP + required String amountInCents, + + /// Optional Callback if you can use return result of pay function or use this callback + void Function(PaymobResponseWallet response)? onPayment, + + /// list of json objects contains the contents of the purchase. + List? items, + + /// The billing data related to the customer related to this payment. + PaymobBillingDataWallet? billingData}) async { + if (!_isInitializedWallet) { + throw Exception( + 'PaymobPayment is not initialized call:`PaymobPayment.instance.initialize`'); + } + final authToken = await _getAuthToken(); + final orderID = await _addOrder( + authToken: authToken, + currency: currency, + amount: amountInCents, + items: items ?? [], + ); + final purchaseToken = await _getPurchaseToken( + authToken: authToken, + currency: currency, + orderID: orderID, + amount: amountInCents, + billingData: billingData ?? + PaymobBillingDataWallet( + // email: box.read(BoxName.email) ?? box.read(BoxName.emailDriver), + // firstName: box.read(BoxName.name) ?? box.read(BoxName.nameDriver), + // lastName: + // box.read(BoxName.lastNameDriver) ?? box.read(BoxName.name), + // phoneNumber: + // box.read(BoxName.phone) ?? box.read(BoxName.phoneDriver), + ), + ); + final urlWallet = await _getWalletUrl(paymentToken: purchaseToken); + Log.print('urlWallet: ${urlWallet}'); + + if (context.mounted) { + final response = await PaymobIFrameWallet.show( + context: context, + redirectURL: urlWallet, + onPayment: onPayment, + ); + return response; + } + return null; + } +} + +class PaymobBillingDataWallet { + String? email; + String? firstName; + String? lastName; + String? phoneNumber; + String? apartment; + String? floor; + String? street; + String? building; + String? postalCode; + String? city; + String? state; + String? country; + String? shippingMethod; + + PaymobBillingDataWallet({ + this.email, + this.firstName, + this.lastName, + this.phoneNumber, + this.apartment, + this.floor, + this.street, + this.building, + this.postalCode, + this.city, + this.state, + this.country, + this.shippingMethod, + }); + + Map toJson() { + return { + "email": (box.read(BoxName.email)), + "first_name": + (box.read(BoxName.name).toString().split(' ')[0]).toString(), + "last_name": + (box.read(BoxName.name).toString().split(' ')[1]).toString() ?? + 'Intaleq', + "phone_number": (box.read(BoxName.phoneWallet)), + "apartment": apartment ?? "NA", + "floor": floor ?? "NA", + "building": building ?? "NA", + "street": street ?? "NA", + "postal_code": postalCode ?? "NA", + "city": city ?? "NA", + "state": state ?? "NA", + "country": country ?? "NA", + "shipping_method": shippingMethod ?? "NA", + }; + } +} + +class PaymobIFrameWallet extends StatefulWidget { + const PaymobIFrameWallet({ + Key? key, + required this.redirectURL, + this.onPayment, + }) : super(key: key); + + final String redirectURL; + final void Function(PaymobResponseWallet)? onPayment; + + static Future show({ + required BuildContext context, + required String redirectURL, + void Function(PaymobResponseWallet)? onPayment, + }) => + Navigator.of(context).push( + MaterialPageRoute( + builder: (context) { + return PaymobIFrameWallet( + onPayment: onPayment, + redirectURL: redirectURL, + ); + }, + ), + ); + + @override + State createState() => _PaymobIFrameState(); +} + +class _PaymobIFrameState extends State { + WebViewController? controller; + + @override + void initState() { + controller = WebViewController() + ..setJavaScriptMode(JavaScriptMode.unrestricted) + ..setNavigationDelegate( + NavigationDelegate( + onNavigationRequest: (NavigationRequest request) { + if (request.url.contains('txn_response_code') && + // request.url.contains('successfully') && + request.url.contains('success') && + request.url.contains('id')) { + final params = _getParamFromURL(request.url); + final response = PaymobResponseWallet.fromJson(params); + if (widget.onPayment != null) { + widget.onPayment!(response); + } + Navigator.pop(context, response); + return NavigationDecision.prevent; + } + return NavigationDecision.navigate; + }, + ), + ) + ..loadRequest(Uri.parse(widget.redirectURL)); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: controller == null + ? const Center( + child: CircularProgressIndicator.adaptive(), + ) + : SafeArea( + child: WebViewWidget( + controller: controller!, + ), + ), + ); + } + + Map _getParamFromURL(String url) { + final uri = Uri.parse(url); + final queryParams = uri.queryParameters; + final data = {}; + + queryParams.forEach((key, value) { + if (key.contains('.')) { + final parts = key.split('.'); + data.putIfAbsent(parts.first, () => {}); + (data[parts.first] as Map)[parts.last] = value; + } else { + data[key] = value; + } + }); + + return data; + } +} + + +================================================== +FILE PATH: ./lib/controller/payment/paymob/e_cash_screen.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:webview_flutter/webview_flutter.dart'; + +// ✅ شاشة جديدة ومبسطة خاصة بـ ecash +class EcashPaymentScreen extends StatefulWidget { + final String paymentUrl; + + const EcashPaymentScreen({required this.paymentUrl, Key? key}) + : super(key: key); + + @override + State createState() => _EcashPaymentScreenState(); +} + +class _EcashPaymentScreenState extends State { + late final WebViewController _controller; + + @override + void initState() { + super.initState(); + _controller = WebViewController() + ..setJavaScriptMode(JavaScriptMode.unrestricted) + ..setNavigationDelegate(NavigationDelegate( + onPageFinished: (url) { + print('Ecash WebView URL Finished: $url'); + + // ✅ هنا نتحقق فقط من أن المستخدم عاد إلى صفحة النجاح + // هذه الصفحة هي التي حددناها في `APP_REDIRECT_URL_SUCCESS` في ملف PHP + if (url.contains("success.php")) { + // لا نستدعي أي API هنا. الـ Webhook على السيرفر يقوم بكل العمل. + // فقط نعرض للمستخدم رسالة بأن العملية قيد المراجعة ونغلق الشاشة. + showProcessingDialog(); + } + }, + )) + ..loadRequest(Uri.parse(widget.paymentUrl)); + } + + // دالة لعرض رسالة "العملية قيد المعالجة" + void showProcessingDialog() { + showDialog( + barrierDismissible: false, + context: Get.context!, + builder: (BuildContext context) { + return AlertDialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12.0), + ), + title: Row( + children: [ + Icon(Icons.check_circle, color: Colors.green), + const SizedBox(width: 8), + Text( + "Payment Successful".tr, + style: TextStyle( + color: Colors.green, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + content: Text( + "Your payment is being processed and your wallet will be updated shortly." + .tr, + style: const TextStyle(fontSize: 16), + ), + actions: [ + TextButton( + onPressed: () { + // أغلق مربع الحوار، ثم أغلق شاشة الدفع + Navigator.pop(context); // Close the dialog + Navigator.pop(context); // Close the payment screen + }, + style: TextButton.styleFrom( + backgroundColor: Colors.green, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8.0), + ), + ), + child: Text( + "OK".tr, + style: const TextStyle(color: Colors.white), + ), + ), + ], + ); + }, + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: Text('Complete Payment'.tr)), + body: WebViewWidget(controller: _controller), + ); + } +} + + +================================================== +FILE PATH: ./lib/controller/payment/paymob/paymob_response.dart +================================================== + +import 'dart:convert'; + +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/links.dart'; +import 'package:Intaleq/controller/functions/crud.dart'; +import 'package:Intaleq/main.dart'; +import 'package:dio/dio.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:webview_flutter/webview_flutter.dart'; +import 'package:http/http.dart' as http; +import '../../../print.dart'; +import '../../functions/encrypt_decrypt.dart'; + +class PaymobResponse { + bool success; + String? transactionID; + String? responseCode; + String? message; + + PaymobResponse({ + this.transactionID, + required this.success, + this.responseCode, + this.message, + }); + + factory PaymobResponse.fromJson(Map json) { + return PaymobResponse( + success: json['success'] == 'true', + transactionID: json['id'], + message: json['message'], + responseCode: json['txn_response_code'], + ); + } +} + +class PaymobPayment { + static PaymobPayment instance = PaymobPayment(); + + bool _isInitialized = false; + + final Dio _dio = Dio(); + final _baseURL = 'https://accept.paymob.com/api/'; + late String _apiKey; + late int _integrationID; + late int _iFrameID; + late String _iFrameURL; + late int _userTokenExpiration; + + /// Initializing PaymobPayment instance. + Future initialize({ + /// It is a unique identifier for the merchant which used to authenticate your requests calling any of Accept's API. + /// from dashboard Select Settings -> Account Info -> API Key + required String apiKey, + + /// from dashboard Select Developers -> Payment Integrations -> Online Card ID + required int integrationID, + + /// from paymob Select Developers -> iframes + required int iFrameID, + + /// The expiration time of this payment token in seconds. (The maximum is 3600 seconds which is an hour) + int userTokenExpiration = 300, + }) async { + if (_isInitialized) { + return true; + } + _dio.options.baseUrl = _baseURL; + _dio.options.validateStatus = (status) => true; + _apiKey = apiKey; + _integrationID = integrationID; + _iFrameID = iFrameID; + _iFrameURL = + 'https://accept.paymobsolutions.com/api/acceptance/iframes/$_iFrameID?payment_token='; + _isInitialized = true; + _userTokenExpiration = userTokenExpiration; + return _isInitialized; + } + + /// Get authentication token, which is valid for one hour from the creation time. + Future _getAuthToken() async { + try { + final response = await _dio.post( + 'auth/tokens', + data: { + 'api_key': _apiKey, + }, + ); + + return response.data['token']; + } catch (e) { + rethrow; + } + } + + /// At this step, you will register an order to Accept's database, so that you can pay for it later using a transaction + Future _addOrder({ + required String authToken, + required String currency, + required String amount, + required List items, + }) async { + try { + final response = await _dio.post( + 'ecommerce/orders', + data: { + "auth_token": authToken, + "delivery_needed": "false", + "amount_cents": amount, + "currency": currency, + "items": items, + }, + ); + + return response.data['id']; + } catch (e) { + rethrow; + } + } + + /// At this step, you will obtain a payment_key token. This key will be used to authenticate your payment request. It will be also used for verifying your transaction request metadata. + Future _getPurchaseToken({ + required String authToken, + required String currency, + required int orderID, + required String amount, + required PaymobBillingData billingData, + }) async { + final response = await _dio.post( + 'acceptance/payment_keys', + data: { + "auth_token": authToken, + "amount_cents": amount, + "expiration": _userTokenExpiration, + "order_id": orderID, + "billing_data": billingData, + "currency": currency, + "integration_id": _integrationID, + "lock_order_when_paid": "false" + }, + ); + final message = response.data['message']; + if (message != null) { + throw Exception(message); + } + return response.data['token']; + } + + /// Proceed to pay with only calling this function. + /// Opens a WebView at Paymob redirectedURL to accept user payment info. + Future pay( + { + /// BuildContext for navigation to WebView + required BuildContext context, + + /// Which Currency you would pay in. + required String currency, + + /// Payment amount in cents EX: 20000 is an 200 EGP + required String amountInCents, + + /// Optional Callback if you can use return result of pay function or use this callback + void Function(PaymobResponse response)? onPayment, + + /// list of json objects contains the contents of the purchase. + List? items, + + /// The billing data related to the customer related to this payment. + PaymobBillingData? billingData}) async { + if (!_isInitialized) { + throw Exception( + 'PaymobPayment is not initialized call:`PaymobPayment.instance.initialize`'); + } + final authToken = await _getAuthToken(); + final orderID = await _addOrder( + authToken: authToken, + currency: currency, + amount: amountInCents, + items: items ?? [], + ); + final purchaseToken = await _getPurchaseToken( + authToken: authToken, + currency: currency, + orderID: orderID, + amount: amountInCents, + billingData: billingData ?? PaymobBillingData(), + ); + if (context.mounted) { + final response = await PaymobIFrame.show( + context: context, + redirectURL: _iFrameURL + purchaseToken, + onPayment: onPayment, + ); + return response; + } + return null; + } //51624 +} + +class PaymobBillingData { + String? email; + String? firstName; + String? lastName; + String? phoneNumber; + String? apartment; + String? floor; + String? street; + String? building; + String? postalCode; + String? city; + String? state; + String? country; + String? shippingMethod; + + PaymobBillingData({ + this.email, + this.firstName, + this.lastName, + this.phoneNumber, + this.apartment, + this.floor, + this.street, + this.building, + this.postalCode, + this.city, + this.state, + this.country, + this.shippingMethod, + }); + + Map toJson() { + return { + "email": box.read(BoxName.email) ?? box.read(BoxName.emailDriver), + "first_name": + (box.read(BoxName.name).toString().split(' ')[0]).toString(), + "last_name": (box.read(BoxName.name).toString().split(' ')[1]).toString(), + "phone_number": (box.read(BoxName.phone)), + "apartment": apartment ?? "NA", + "floor": floor ?? "NA", + "building": building ?? "NA", + "street": street ?? "NA", + "postal_code": postalCode ?? "NA", + "city": city ?? "NA", + "state": state ?? "NA", + "country": country ?? "NA", + "shipping_method": box.read(BoxName.passengerID) ?? "NA", + }; + } +} + +class PaymobIFrame extends StatefulWidget { + const PaymobIFrame({ + Key? key, + required this.redirectURL, + this.onPayment, + }) : super(key: key); + + final String redirectURL; + final void Function(PaymobResponse)? onPayment; + + static Future show({ + required BuildContext context, + required String redirectURL, + void Function(PaymobResponse)? onPayment, + }) => + Navigator.of(context).push( + MaterialPageRoute( + builder: (context) { + return PaymobIFrame( + onPayment: onPayment, + redirectURL: redirectURL, + ); + }, + ), + ); + + @override + State createState() => _PaymobIFrameState(); +} + +class _PaymobIFrameState extends State { + WebViewController? controller; + + @override + void initState() { + controller = WebViewController() + ..setJavaScriptMode(JavaScriptMode.unrestricted) + ..setNavigationDelegate( + NavigationDelegate( + onNavigationRequest: (NavigationRequest request) { + if (request.url.contains('txn_response_code') && + request.url.contains('success') && + request.url.contains('id')) { + final params = _getParamFromURL(request.url); + final response = PaymobResponse.fromJson(params); + if (widget.onPayment != null) { + widget.onPayment!(response); + } + Navigator.pop(context, response); + return NavigationDecision.prevent; + } + return NavigationDecision.navigate; + }, + ), + ) + ..loadRequest(Uri.parse(widget.redirectURL)); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: controller == null + ? const Center( + child: CircularProgressIndicator.adaptive(), + ) + : SafeArea( + child: WebViewWidget( + controller: controller!, + ), + ), + ); + } + + Map _getParamFromURL(String url) { + final uri = Uri.parse(url); + Map data = {}; + uri.queryParameters.forEach((key, value) { + data[key] = value; + }); + return data; + } +} + +class PaymentScreen extends StatefulWidget { + final String iframeUrl; + + const PaymentScreen({required this.iframeUrl, Key? key}) : super(key: key); + + @override + State createState() => _PaymentScreenState(); +} + +class _PaymentScreenState extends State { + late final WebViewController _controller; + + @override + void initState() { + super.initState(); + _controller = WebViewController() + ..setJavaScriptMode(JavaScriptMode.unrestricted) + ..setNavigationDelegate(NavigationDelegate( + onPageFinished: (url) { + Log.print('url onPageFinished : ${url}'); + if (url.contains("success")) { + _fetchPaymentStatus(); // ✅ استدعاء الويب هوك بعد نجاح الدفع + } else if (url.contains("failed")) { + showCustomDialog( + title: "Error".tr, + message: 'Payment Failed'.tr, // يتم جلب رسالة الخطأ من الخادم + isSuccess: false, + ); + } + }, + )) + ..loadRequest(Uri.parse(widget.iframeUrl)); + } + + // ✅ استدعاء الويب هوك بعد انتهاء الدفع + Future _fetchPaymentStatus() async { + final String userId = (box.read(BoxName.phoneWallet)); // ضع user_id الحقيقي + final String apiUrl = AppLink.paymetVerifyPassenger; + + try { + final response = await CRUD().getWallet(link: apiUrl, payload: { + 'user_id': userId, + 'passengerId': box.read(BoxName.passengerID), + 'paymentMethod': 'visa-in', + }); + + if (response != 'failure' && response != 'token_expired') { + try { + final jsonData = jsonDecode(response); + + if (jsonData['status'] == 'success') { + // تأكد أن 'message' هو String وليس Map + // final message = jsonData['message']; + showCustomDialog( + title: "Payment Status", + message: jsonData['message'], // يتم جلب الرسالة من الخادم + isSuccess: true, + ); + } else { + showCustomDialog( + title: "Error", + message: jsonData['message'], // يتم جلب رسالة الخطأ من الخادم + isSuccess: false, + ); + } + } catch (e) { + showCustomDialog( + title: "Error", + message: response, // يتم جلب رسالة الخطأ من الخادم + isSuccess: false, + ); + } + } else { + showCustomDialog( + title: "Error".tr, + message: response, // يتم جلب رسالة الخطأ من الخادم + isSuccess: false, + ); + } + } catch (e) { + showCustomDialog( + title: "Error".tr, + message: 'Server error'.tr, // يتم جلب رسالة الخطأ من الخادم + isSuccess: false, + ); + } + } + + void showCustomDialog({ + required String title, + required String message, + required bool isSuccess, + }) { + showDialog( + barrierDismissible: false, + context: Get.context!, + builder: (BuildContext context) { + return AlertDialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12.0), + ), + title: Row( + children: [ + Icon( + isSuccess ? Icons.check_circle : Icons.error, + color: isSuccess ? Colors.green : Colors.red, + ), + const SizedBox(width: 8), + Text( + title, + style: TextStyle( + color: isSuccess ? Colors.green : Colors.red, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + content: Text( + message, + style: const TextStyle(fontSize: 16), + ), + actions: [ + TextButton( + onPressed: () { + Navigator.pop(context); + Navigator.pop(context); + }, + style: TextButton.styleFrom( + backgroundColor: isSuccess ? Colors.green : Colors.red, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8.0), + ), + ), + child: Text( + "OK", + style: const TextStyle(color: Colors.white), + ), + ), + ], + ); + }, + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: const Text('إتمام الدفع')), + body: WebViewWidget(controller: _controller), + ); + } +} + + +================================================== +FILE PATH: ./lib/controller/local/local_controller.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../constant/box_name.dart'; +import '../../main.dart'; +import '../themes/themes.dart'; + +class LocaleController extends GetxController { + Locale? language; + String countryCode = ''; + + ThemeData appTheme = lightThemeEnglish; + + void changeLang(String langcode) { + Locale locale; + switch (langcode) { + case "ar": + locale = const Locale("ar"); + appTheme = lightThemeArabic; + box.write(BoxName.lang, 'ar'); + break; + case "ar-main": + locale = const Locale("ar-main"); + appTheme = lightThemeArabic; + box.write(BoxName.lang, 'ar-main'); + break; + case "en": + locale = const Locale("en"); + appTheme = lightThemeEnglish; + box.write(BoxName.lang, 'en'); + break; + case "tr": + locale = const Locale("tr"); + appTheme = lightThemeEnglish; + box.write(BoxName.lang, 'tr'); + break; + case "fr": + locale = const Locale("fr"); + appTheme = lightThemeEnglish; + box.write(BoxName.lang, 'fr'); + break; + case "it": + locale = const Locale("it"); + appTheme = lightThemeEnglish; + box.write(BoxName.lang, 'it'); + break; + case "de": + locale = const Locale("de"); + appTheme = lightThemeEnglish; + box.write(BoxName.lang, 'de'); + break; + case "el": + locale = const Locale("el"); + appTheme = lightThemeEnglish; + box.write(BoxName.lang, 'el'); + break; + case "es": + locale = const Locale("es"); + appTheme = lightThemeEnglish; + box.write(BoxName.lang, 'es'); + break; + case "fa": + locale = const Locale("fa"); + appTheme = lightThemeEnglish; + box.write(BoxName.lang, 'fa'); + break; + case "zh": + locale = const Locale("zh"); + appTheme = lightThemeEnglish; + box.write(BoxName.lang, 'zh'); + break; + case "ru": + locale = const Locale("ru"); + appTheme = lightThemeEnglish; + box.write(BoxName.lang, 'ru'); + break; + case "hi": + locale = const Locale("hi"); + appTheme = lightThemeEnglish; + box.write(BoxName.lang, 'hi'); + break; + case "ar-ma": + locale = const Locale("ar-ma"); + appTheme = lightThemeArabic; + box.write(BoxName.lang, 'ar-ma'); + break; + case "ar-gulf": + locale = const Locale("ar-gulf"); + appTheme = lightThemeArabic; + box.write(BoxName.lang, 'ar-gulf'); + break; + default: + locale = Locale(Get.deviceLocale!.languageCode); + box.write(BoxName.lang, Get.deviceLocale!.languageCode); + appTheme = lightThemeEnglish; + break; + } + + box.write(BoxName.lang, langcode); + Get.changeTheme(appTheme); + Get.updateLocale(locale); + update(); + } + + @override + void onInit() { + String? storedLang = box.read(BoxName.lang); + if (storedLang == null) { + // Use device language if no language is stored + storedLang = Get.deviceLocale!.languageCode; + box.write(BoxName.lang, storedLang); + } + + changeLang(storedLang); + super.onInit(); + } +} + +// class LocaleController extends GetxController { +// Locale? language; +// String countryCode = ''; +// void restartApp() { +// runApp(const MyApp()); +// } + +// ThemeData appTheme = themeEnglish; + +// changeLang(String langcode) { +// Locale locale; +// switch (langcode) { +// case "ar": +// locale = const Locale("ar"); +// appTheme = themeArabic; +// break; +// case "en": +// locale = const Locale("en"); +// appTheme = themeEnglish; +// break; +// case "tr": +// locale = const Locale("tr"); +// appTheme = themeEnglish; +// break; +// case "fr": +// locale = const Locale("fr"); +// appTheme = themeEnglish; +// break; +// case "it": +// locale = const Locale("it"); +// appTheme = themeEnglish; +// break; +// case "de": +// locale = const Locale("de"); +// appTheme = themeEnglish; +// break; +// case "el": +// locale = const Locale("el"); +// appTheme = themeEnglish; +// break; +// case "es": +// locale = const Locale("es"); +// appTheme = themeEnglish; +// break; +// case "fa": +// locale = const Locale("fa"); +// appTheme = themeArabic; +// break; +// case "zh": +// locale = const Locale("zh"); +// appTheme = themeEnglish; +// break; +// case "ru": +// locale = const Locale("ru"); +// appTheme = themeEnglish; +// break; +// case "hi": +// locale = const Locale("hi"); +// appTheme = themeEnglish; +// break; +// default: +// locale = Locale(Get.deviceLocale!.languageCode); +// appTheme = themeEnglish; +// break; +// } + +// box.write(BoxName.lang, langcode); +// Get.changeTheme(appTheme); +// Get.updateLocale(locale); +// restartApp(); +// update(); +// } + +// @override +// void onInit() { +// String? storedLang = box.read(BoxName.lang); +// if (storedLang == null) { +// // Use device language if no language is stored +// storedLang = Get.deviceLocale!.languageCode; +// box.write(BoxName.lang, storedLang); +// } + +// changeLang(storedLang); + +// super.onInit(); +// } +// } + + +================================================== +FILE PATH: ./lib/controller/local/translations.dart +================================================== + +import 'package:get/get.dart'; + +class MyTranslation extends Translations { + @override + Map> get keys => { + "ar": { + "Syria": "سوريا", + "SYP": "ل.س", + "Order": "طلب", + "OrderVIP": "طلب VIP", + "Cancel Trip": "إلغاء الرحلة", + "Passenger Cancel Trip": "الراكب ألغى الرحلة", + "VIP Order": "طلب VIP", + 'Hi ,I Arrive your site': "مرحبًا، لقد وصلت إلى موقعك", + "The driver accepted your trip": "السائق قبل رحلتك", + "message From passenger": "رسالة من الراكب", + "Cancel": "إلغاء", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "تم إلغاء الرحلة. سيتم إضافة تكلفة الرحلة إلى محفظتك.", + "token change": "تغيير الرمز", + "face detect": "كشف الوجه", + "Face Detection Result": "نتيجة كشف الوجه", + "similar": "مشابه", + "not similar": "غير مشابه", + "Hi ,I will go now": "مرحبًا، سأذهب الآن", + "Passenger come to you": "الراكب قادم إليك", + "Call Income": "مكالمة واردة", + "Call Income from Passenger": "مكالمة واردة من الراكب", + "Criminal Document Required": "مطلوب وثيقة جنائية", + "You should have upload it .": "يجب عليك تحميلها.", + "Call End": "انتهاء المكالمة", + "The order has been accepted by another driver.": + "تم قبول الطلب من قبل سائق آخر.", + "The order Accepted by another Driver": + "تم قبول الطلب من قبل سائق آخر", + "We regret to inform you that another driver has accepted this order.": + "نأسف لإعلامك بأن سائقًا آخر قد قبل هذا الطلب.", + "Driver Applied the Ride for You": "السائق قدم الطلب لك", + "Applied": "تم التقديم", + 'Pay by Sham Cash': 'الدفع عبر شام كاش', + 'Pay with Debit Card': 'الدفع ببطاقة الخصم', + "Please go to Car Driver": "يرجى الذهاب إلى سائق السيارة", + "Ok I will go now.": "حسنًا، سأذهب الآن.", + "Accepted Ride": "تم قبول الرحلة", + "Driver Accepted the Ride for You": "السائق قبل الرحلة لك", + "Promo": "عرض ترويجي", + "Show latest promo": "عرض أحدث عرض ترويجي", + "Trip Monitoring": "مراقبة الرحلة", + "Driver Is Going To Passenger": "السائق في طريقه إليك", + "Please stay on the picked point.": + "يرجى البقاء في نقطة الالتقاط المحددة.", + "message From Driver": "رسالة من السائق", + "Trip is Begin": "بدأت الرحلة", + "Cancel Trip from driver": "إلغاء الرحلة من السائق", + "We will look for a new driver.\nPlease wait.": + "هنبحث عن سائق جديد.\nمن فضلك انتظر.", + "The driver canceled your ride.": "السائق ألغى رحلتك.", + "Driver Finish Trip": "السائق أنهى الرحلة", + "you will pay to Driver": "هتدفع للسائق", + "Don’t forget your personal belongings.": "متنساش حاجاتك الشخصية.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "من فضلك تأكد إن معاك كل حاجاتك الشخصية وإن أي مبلغ متبقي، لو موجود، تم إضافته لمحفظتك قبل ما تمشي. شكرًا لاستخدامك تطبيق انطلق", + "Finish Monitor": "إنهاء المراقبة", + "Trip finished": "الرحلة انتهت", + "Call Income from Driver": "مكالمة واردة من السائق", + "Driver Cancelled Your Trip": "السائق ألغى رحلتك", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "هتدفع للسائق هتدفع تكلفة وقت السائق شوف محفظة Intaleq بتاعتك", + "Order Applied": "تم تطبيق الطلب", + "welcome to intaleq": "أهلاً بك في انطلق", + "login or register subtitle": + "أدخل رقم موبايلك لتسجيل الدخول أو لإنشاء حساب جديد", + 'An application error occurred.': 'حدث خطأ في التطبيق.', + 'Submission Failed': 'فشل الإرسال', + 'Your complaint has been submitted.': 'تم تقديم شكواك.', + 'Failed to connect to the server. Please try again.': + 'فشل الاتصال بالخادم. الرجاء المحاولة مرة أخرى.', + 'Ride information not found. Please refresh the page.': + 'لم يتم العثور على معلومات الرحلة. الرجاء تحديث الصفحة.', + 'Please describe your issue before submitting.': + 'يرجى وصف مشكلتك قبل الإرسال.', + 'An application error occurred during upload.': + 'حدث خطأ في التطبيق أثناء الرفع.', + 'Failed to upload audio file.': 'فشل رفع الملف الصوتي.', + 'Audio uploaded successfully.': 'تم رفع الصوت بنجاح.', + "Complaint cannot be filed for this ride. It may not have been completed or started.": + "لا يمكن تقديم شكوى لهذه الرحلة. قد لا تكون قد اكتملت أو بدأت.", + '2. Attach Recorded Audio (Optional)': + '٢. إرفاق تسجيل صوتي (اختياري)', + 'Please enter a description of the issue.': 'يرجى إدخال وصف للمشكلة.', + "phone number label": "رقم الموبايل", + "phone number required": "الرجاء إدخال رقم الموبايل", + "send otp button": "إرسال رمز التحقق", + "verify your number title": "التحقق من رقمك", + "otp sent subtitle": + "تم إرسال رمز تحقق مؤلف من 5 أرقام إلى\n@phoneNumber", + "verify and continue button": "تحقق ومتابعة", + "enter otp validation": "الرجاء إدخال رمز التحقق المكون من 5 أرقام", + "one last step title": "خطوة أخيرة", + "complete profile subtitle": "أكمل معلوماتك الشخصية للبدء", + "first name label": "الاسم الأول", + "first name required": "الرجاء إدخال الاسم الأول", + "last name label": "الاسم الأخير", + "Verify OTP": "التحقق من الرمز", + "Verification Code": "رمز التحقق", + "We have sent a verification code to your mobile number:": + "لقد أرسلنا رمز التحقق إلى رقم موبايلك:", + "Verify": "تحقق", + "Resend Code": "إعادة إرسال الرمز", + "You can resend in": "يمكنك إعادة الإرسال بعد", + "seconds": "ثانية", + "Error": "خطأ", + "Please enter the complete 6-digit code.": + "الرجاء إدخال الرمز كاملاً المكون من 6 أرقام.", + "last name required": "الرجاء إدخال الاسم الأخير", + "email optional label": "البريد الإلكتروني (اختياري)", + "complete registration button": "إتمام التسجيل", + "User with this phone number or email already exists.": + "يوجد حساب مسجل بنفس رقم الموبايل أو البريد الإلكتروني.", + "otp sent success": "تم إرسال رمز التحقق إلى واتساب.", + "failed to send otp": "فشل إرسال الرمز.", + "server error try again": + "حدث خطأ في الخادم، الرجاء المحاولة مرة أخرى.", + "an error occurred": "حدث خطأ غير متوقع: @error", + "otp verification failed": "رمز التحقق غير صحيح.", + "registration failed": "فشلت عملية التسجيل.", + "welcome user": "أهلاً بك، @firstName!", + "Cancel Trip from driver": "إلغاء الرحلة من قبل الكابتن", + "We will look for a new driver.\nPlease wait.": + "جاري البحث عن كابتن جديد.\nالرجاء الانتظار.", + "The driver canceled your ride.": "الكابتن ألغى رحلتك.", + "Driver Finish Trip": "الكابتن أنهى الرحلة", + "you will pay to Driver": "ستدفع للكابتن", + "Don't forget your personal belongings.": "لا تنسَ أغراضك الشخصية.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "يرجى التأكد من أخذ جميع أغراضك الشخصية، وأن أي مبلغ متبقٍ قد أُضيف إلى محفظتك قبل المغادرة. شكراً لاختيارك تطبيق انطلق.", + "Finish Monitor": "إنهاء المراقبة", + "Trip finished": "انتهت الرحلة", + "Call Income from Driver": "مكالمة واردة من الكابتن", + "Driver Cancelled Your Trip": "الكابتن ألغى رحلتك", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "ستقوم بدفع تكلفة وقت الكابتن، راجع محفظتك في انطلق", + "Order Applied": "تم تقديم الطلب", + "Share App": "مشاركة التطبيق", + "Wallet": "المحفظة", + "Balance": "الرصيد", + "Don’t forget your personal belongings.": "لا تنسَ أغراضك الشخصية.", + "Profile": "الملف الشخصي", + "Contact Support": "التواصل مع الدعم", + "Session expired. Please log in again.": + "انتهت صلاحية الجلسة. الرجاء تسجيل الدخول مرة أخرى.", + "Security Warning": "⚠️ تحذير أمني", + "Potential security risks detected. The application may not function correctly.": + "تم كشف مخاطر أمنية محتملة. قد لا يعمل التطبيق بشكل صحيح.", + "please order now": "اطلب الآن", + "Where to": "إلى أين؟", + "Where are you going?": "لوين رايح؟", + "Quick Actions": "إجراءات سريعة", + "My Balance": "رصيدي", + "Order History": "سجل الطلبات", + "Contact Us": "تواصل معنا", + "Driver": "كابتن", + "Complaint": "شكوى", + "Promos": "العروض", + "Recent Places": "الأماكن الأخيرة", + "From": "من", + "WhatsApp Location Extractor": "استخراج الموقع من واتساب", + "Location Link": "رابط الموقع", + "Paste location link here": "الصق رابط الموقع هنا", + "Go to this location": "اذهب إلى هذا الموقع", + "Paste WhatsApp location link": "الصق رابط موقع واتساب", + "Select Order Type": "اختر نوع الطلب", + "Choose who this order is for": "اختر لمن هذا الطلب", + "I want to order for myself": "أريد أن أطلب لنفسي", + "I want to order for someone else": "أريد أن أطلب لشخص آخر", + "Order for someone else": "اطلب لشخص آخر", + "Order for myself": "اطلب لنفسي", + "Are you want to go this site": "هل تريد الذهاب إلى هذا الموقع؟", + "No": "لا", + 'Pay by Sham Cash': 'الدفع عبر شام كاش', + "Intaleq Wallet": "محفظة انطلق", + "Have a promo code?": "هل لديك رمز خصم؟", + "Your Wallet balance is ": "رصيد محفظتك هو ", + "Cash": "كاش", + 'Phone Number': 'رقم الموبايل', + 'Search country': 'ابحث عن دولة', + 'Payment Successful!': 'تم الدفع بنجاح!', + 'Your payment was successful.': 'تم الدفع بنجاح.', + "Pay directly to the captain": "ادفع للكابتن مباشرة", + "Top up Wallet to continue": "اشحن المحفظة للمتابعة", + "Or pay with Cash instead": "أو ادفع كاش بدلاً من ذلك", + "Confirm & Find a Ride": "تأكيد وإيجاد رحلة", + "Balance:": "الرصيد:", + "Alerts": "الإشعارات", + "Welcome Back!": "أهلاً بعودتك!", + "Current Balance": "الرصيد الحالي", + "Set Wallet Phone Number": "تعيين رقم هاتف للمحفظة", + "Link a phone number for transfers": "اربط رقم هاتف لإجراء التحويلات", + "Payment History": "سجل الدفعات", + "View your past transactions": "عرض معاملاتك السابقة", + "Top up Wallet": "تعبئة المحفظة", + "Add funds using our secure methods": + "أضف رصيداً باستخدام طرقنا الآمنة", + 'Driver is waiting': 'الكابتن في انتظارك', + 'Type your message...': 'اكتب رسالتك...', + 'Driver Accepted Request': 'الكابتن قبل الطلب', + 'Message': 'رسالة', + 'Call': 'اتصال', + 'Set Phone Number': 'تعيين رقم الهاتف', + 'Select This Ride': 'اختر هذه الرحلة', + 'Call Driver': 'اتصل بالكابتن', + "Increase Fare": "زيادة الأجرة", + 'Stop': 'إيقاف', + 'Record': 'تسجيل', + 'Share': 'مشاركة', + 'WhatsApp': 'واتساب', + 'SOS': 'الطوارئ', + "No drivers accepted your request yet": "لم يقبل أي كابتن طلبك بعد", + "Increasing the fare might attract more drivers. Would you like to increase the price?": + "زيادة الأجرة قد تجذب المزيد من الكباتن. هل ترغب في زيادة السعر؟", + "Please make sure not to leave any personal belongings in the car.": + "يرجى التأكد من عدم ترك أي أغراض شخصية في السيارة.", + "Cancel Ride": "إلغاء الرحلة", + "Route Not Found": "المسار غير موجود", + "We couldn't find a valid route to this destination. Please try selecting a different point.": + "لم نتمكن من العثور على مسار صالح إلى هذا الوجهة. يرجى محاولة اختيار نقطة مختلفة.", + // "Increase Fare": "زيادة الأجرة", + 'alert': 'تنبيه', + "You can call or record audio during this trip.": + "يمكنك الاتصال أو تسجيل صوت أثناء هذه الرحلة.", + "Warning: Speeding detected!": "تحذير: تم الكشف عن تجاوز السرعة!", + 'Fixed Price': 'سعر ثابت', + 'Report': 'إبلاغ', + "Comfort": "‏مريحة", + "Intaleq Balance": "رصيد انطلق", + 'Search for a starting point': 'ابحث عن نقطة انطلاق', + 'Top up Balance to continue': 'اشحن الرصيد للمتابعة', + "Electric": "كهربائية", + "Lady": "سيدة", + "Van": "عائلية", + "Rayeh Gai": "رايح جاي", + "Join Intaleq as a driver using my referral code!": + "انضم إلى 'انطلق' ككابتن باستخدام رمز دعوتي!", + "Use code:": "استخدم الرمز:", + "Download the Intaleq Driver app now and earn rewards!": + "حمّل تطبيق 'انطلق' للكباتن الآن واحصل على مكافآت!", + "Get a discount on your first Intaleq ride!": + "احصل على خصم على رحلتك الأولى مع 'انطلق'!", + "Use my referral code:": "استخدم رمز دعوتي:", + "Download the Intaleq app now and enjoy your ride!": + "حمّل تطبيق 'انطلق' الآن واستمتع برحلتك!", + "Contacts Loaded": "تم تحميل جهات الاتصال", + "Showing": "يتم عرض", + "of": "من", + 'Pay by MTN Wallet': 'الدفع عبر محفظة MTN', + 'Pay by Syriatel Wallet': 'الدفع عبر محفظة سيريتل', + "Customer not found": "العميل غير موجود", + "Wallet is blocked": "المحفظة محظورة", + "Customer phone is not active": "هاتف العميل غير نشط", + "Balance not enough": "الرصيد غير كافٍ", + "Balance limit exceeded": "تم تجاوز حد الرصيد", + "Incorrect sms code": + "⚠️ رمز التحقق الذي أدخلته غير صحيح. يرجى المحاولة مرة أخرى.", + "contacts. Others were hidden because they don't have a phone number.": + "جهة اتصال. تم إخفاء البقية لعدم وجود أرقام هواتف لديهم.", + "No contacts found": "لم يتم العثور على جهات اتصال", + "No contacts with phone numbers were found on your device.": + "لم يتم العثور على جهات اتصال لديها أرقام هواتف في جهازك.", + "Permission denied": "تم رفض الإذن", + "Contact permission is required to pick contacts": + "مطلوب إذن الوصول لجهات الاتصال لاختيار الأسماء.", + "An error occurred while picking contacts:": + "حدث خطأ أثناء اختيار جهات الاتصال:", + "Please enter a correct phone": "الرجاء إدخال رقم هاتف صحيح", + "Success": "نجاح", + "Invite sent successfully": "تم إرسال الدعوة بنجاح", + "Hello! I'm inviting you to try Intaleq.": + "مرحباً! أدعوك لتجربة تطبيق 'انطلق'.", + "Use my invitation code to get a special gift on your first ride!": + "استخدم رمز دعوتي لتحصل على هدية خاصة في رحلتك الأولى!", + "Your personal invitation code is:": "رمز دعوتك الشخصي هو:", + "Be sure to use it quickly! This code expires at": + "لا تتأخر! صلاحية هذا الرمز تنتهي في", + "Download the app now:": "حمّل التطبيق الآن:", + "See you on the road!": "نلتقي على الطريق!", + "This phone number has already been invited.": + "لقد تم إرسال دعوة لهذا الرقم مسبقاً.", + "An unexpected error occurred. Please try again.": + "حدث خطأ غير متوقع. الرجاء المحاولة مرة أخرى.", + "You deserve the gift": "أنت تستحق الهدية", + "Claim your 20 LE gift for inviting": + "اطلب هديتك بقيمة 20 جنيه لدعوة", + "You have got a gift for invitation": "لقد حصلت على هدية لدعوتك", + "You have earned 20": "لقد ربحت 20", + "LE": "ل.س", + "Vibration feedback for all buttons": "تفعيل الاهتزاز لجميع الأزرار", + "Share with friends and earn rewards": + "شارك التطبيق مع أصدقائك واحصل على مكافآت", + "Gift Already Claimed": "تم استلام الهدية مسبقاً", + "You have already received your gift for inviting": + "لقد استلمت هديتك بالفعل مقابل هذه الدعوة", + "Keep it up!": "استمر!", + "has completed": "أكمل", + "trips": "رحلات", + "Personal Information": "المعلومات الشخصية", + "Name": "الاسم", + "Not set": "غير محدد", + "Gender": "الجنس", + "Education": "التحصيل العلمي", + "Work & Contact": "العمل والاتصال", + "Employment Type": "نوع العمل", + "Marital Status": "الحالة الاجتماعية", + "SOS Phone": "رقم الطوارئ", + "Sign Out": "تسجيل الخروج", + "Delete My Account": "حذف حسابي", + "Update Gender": "تحديث الجنس", + "Update": "تحديث", + "Update Education": "تحديث التحصيل العلمي", + "Are you sure? This action cannot be undone.": + "هل أنت متأكد؟ لا يمكن التراجع عن هذا الإجراء.", + "Confirm your Email": "تأكيد بريدك الإلكتروني", + "Type your Email": "اكتب بريدك الإلكتروني", + "Delete Permanently": "حذف نهائي", + "Male": "ذكر", + "Female": "أنثى", + "Other": "آخر", + "High School Diploma": "شهادة ثانوية", + "Associate Degree": "دبلوم", + "Bachelor's Degree": "إجازة جامعية", + "Master's Degree": "ماجستير", + "Doctoral Degree": "دكتوراه", + "Select your preferred language for the app interface.": + "اختر لغتك المفضلة لواجهة التطبيق.", + "Language Options": "خيارات اللغة", + "You can claim your gift once they complete 2 trips.": + "يمكنك طلب هديتك بعد إتمامه لرحلتين.", + "Closest & Cheapest": "الأقرب والأرخص", + "Comfort choice": "خيار الراحة", + "Travel in a modern, silent electric car. A premium, eco-friendly choice for a smooth ride.": + "تنقّل في سيارة كهربائية حديثة وصامتة. خيار مميز وصديق للبيئة لرحلة هادئة.", + "Spacious van service ideal for families and groups. Comfortable, safe, and cost-effective travel together.": + "خدمة فان واسعة ومثالية للعائلات والمجموعات. سفر مريح، آمن، واقتصادي.", + "Quiet & Eco-Friendly": "هادئة وصديقة للبيئة", + "Lady Captain for girls": "كابتن سيدة للبنات", + "Van for familly": "سيارة فان للعائلة", + "Are you sure to delete this location?": + "هل أنت متأكد من حذف هذا الموقع؟", + 'Change Work location?': 'تغيير موقع العمل؟', + 'Change Home location?': 'تغيير موقع البيت؟', + "Submit a Complaint": "تقديم شكوى", + "Submit Complaint": "إرسال الشكوى", + "No trip history found": "لا يوجد سجل للرحلات", + "Your past trips will appear here.": "ستظهر رحلاتك السابقة هنا.", + "1. Describe Your Issue": "١. اشرح مشكلتك", + "Enter your complaint here...": "اكتب شكواك هنا...", + "2. Attach Recorded Audio": "٢. إرفاق تسجيل صوتي", + "No audio files found.": "لم يتم العثور على ملفات صوتية.", + "Confirm Attachment": "تأكيد الإرفاق", + "Attach this audio file?": "هل تريد إرفاق هذا الملف الصوتي؟", + "Uploaded": "تم الرفع بنجاح", + "3. Review Details & Response": "٣. مراجعة التفاصيل والرد", + "Date": "التاريخ", + "Today's Promos": "عروض اليوم", + "No promos available right now.": "لا توجد عروض متاحة حالياً.", + "Check back later for new offers!": "تحقق لاحقاً من وجود عروض جديدة!", + "Valid Until:": "صالح حتى:", + "CODE": "الرمز", + "Login": "تسجيل الدخول", + "Sign in for a seamless experience": "سجل دخولك لتجربة سلسلة", + "Sign In with Google": "الدخول عبر جوجل", + "Sign in with Apple": "الدخول عبر آبل", + "User not found": "المستخدم غير موجود", + "Need assistance? Contact us": "هل تحتاج مساعدة؟ تواصل معنا", + "Email": "البريد الإلكتروني", + "Your email address": "بريدك الإلكتروني", + "Enter a valid email": "أدخل بريداً إلكترونياً صالحاً", + "Password": "كلمة المرور", + "Your password": "كلمة مرورك", + "Enter your password": "أدخل كلمة المرور", + "Submit": "إرسال", + "Terms of Use & Privacy Notice": "شروط الاستخدام وبيان الخصوصية", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the ": + "باختيار \"أوافق\" أدناه، أؤكد أنني قرأت ووافقت على ", + "Terms of Use": "شروط الاستخدام", + " and acknowledge the ": " وأقر بـ ", + "Privacy Notice": "بيان الخصوصية", + ". I am at least 18 years old.": ". عمري 18 عاماً على الأقل.", + "I Agree": "أوافق على الشروط والأحكام", + "Continue": "متابعة", + "Enable Location": "تفعيل الموقع", + "To give you the best experience, we need to know where you are. Your location is used to find nearby captains and for pickups.": + "لنمنحك أفضل تجربة، نحتاج لمعرفة موقعك. يتم استخدام موقعك للعثور على الكباتن القريبين ولتحديد نقاط الانطلاق.", + "Allow Location Access": "السماح بالوصول للموقع", + "Welcome to Intaleq!": "أهلاً بك في انطلق!", + "Before we start, please review our terms.": + "قبل أن نبدأ، يرجى مراجعة شروطنا.", + "Your journey starts here": "رحلتك تبدأ هنا", + "Cancel Search": "إلغاء البحث", + "Set pickup location": "تحديد موقع الانطلاق", + "Move the map to adjust the pin": "حرّك الخريطة لتحديد الموقع", + "Searching for the nearest captain...": "جاري البحث عن أقرب كابتن...", + "No one accepted? Try increasing the fare.": + "لم يقبل أحد؟ حاول زيادة الأجرة.", + "Increase Your Trip Fee (Optional)": "زيادة أجرة رحلتك (اختياري)", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "لم نعثر على أي كابتن حتى الآن. يمكنك زيادة أجرة الرحلة لجعل عرضك أكثر جاذبية.", + "No, thanks": "لا، شكراً", + "Increase Fee": "زيادة الأجرة", + "Copy": "نسخ", + "Promo Copied!": "تم نسخ العرض!", + "Code": "الرمز", + "copied to clipboard": "تم نسخه إلى الحافظة", + "Price": "السعر", + "Intaleq's Response": "رد فريق انطلق", + "Awaiting response...": "بانتظار الرد...", + "Audio file not attached": "الملف الصوتي غير مرفق", + "The audio file is not uploaded yet.\\nDo you want to submit without it?": + "لم يتم رفع الملف الصوتي بعد.\\nهل تريد الإرسال بدونه؟", + "deleted": "تم الحذف", + "To Work": "إلى العمل", + "Work Saved": "تم حفظ موقع العمل", + "To Home": "إلى البيت", + "Home Saved": "تم حفظ موقع البيت", + "Destination selected": "تم اختيار الوجهة", + "Now select start pick": "الآن حدد نقطة الانطلاق", + "OK": "موافق", + "Confirm Pick-up Location": "تأكيد موقع الانطلاق", + "Set Location on Map": "حدد الموقع على الخريطة", + 'Leave a detailed comment (Optional)': + 'اترك تعليقاً مفصلاً (اختياري)', + 'Share your experience to help us improve...': + 'شارك تجربتك لمساعدتنا على التحسن...', + 'Your valuable feedback helps us improve our service quality.': + 'ملاحظاتك القيمة تساعدنا في تحسين جودة خدماتنا.', + 'witout zero': 'بدون صفر', + 'Top up Balance': 'اشحن الرصيد', + 'An error occurred': 'حدث خطأ', + 'Send WhatsApp Message': 'إرسال رسالة واتساب', + 'How was your trip with': 'كيف كانت رحلتك مع', + 'Drawing route on map...': 'جارٍ رسم المسار على الخريطة...', + 'Please wait while we prepare your trip.': + 'يرجى الانتظار بينما نحضر رحلتك.', + 'Submit Rating': 'إرسال التقييم', + 'Call Support': 'الاتصال بالدعم', + "You can contact us during working hours from 10:00 - 16:00.": + "يمكنك التواصل معنا خلال ساعات العمل من 10:00 إلى 16:00.", + "Intaleq is the safest and most reliable ride-sharing app designed especially for passengers in Syria. We provide a comfortable, respectful, and affordable riding experience with features that prioritize your safety and convenience. Our trusted captains are verified, insured, and supported by regular car maintenance carried out by top engineers. We also offer on-road support services to make sure every trip is smooth and worry-free. With Intaleq, you enjoy quality, safety, and peace of mind—every time you ride.": + """إنطلِق هو التطبيق الأكثر أماناً وموثوقية لمشاركة الركوب والمصمم خصيصاً للركّاب في سوريا. نوفر لك تجربة تنقّل مريحة، محترمة، وبأسعار مناسبة، مع ميزات تضع سلامتك وراحتك في المقام الأول. + +جميع الكباتن لدينا موثوقون، مُؤمَّنون، وتخضع سياراتهم لصيانة دورية يقوم بها مهندسون مختصون لضمان أفضل جودة. كما نقدّم خدمات دعم على الطريق لضمان أن تكون كل رحلة سلسة وخالية من القلق. + +مع إنطلِق، ستستمتع دائماً بالأمان، والجودة، وراحة البال في كل رحلة تقوم بها.""", + 'Work time is from 10:00 AM to 16:00 PM.\nYou can send a WhatsApp message or email.': + 'وقت العمل من 10:00 صباحاً إلى 16:00 مساءً.\nيمكنك إرسال رسالة واتساب أو بريد إلكتروني.', + 'Sorry': 'عذراً', + "Customer MSISDN doesn’t have customer wallet": + "رقم هاتف العميل لا يحتوي على محفظة عميل", + 'Please enter the number without the leading 0': + 'يرجى إدخال الرقم بدون الصفر الأولي', + 'Please enter your phone number': 'يرجى إدخال رقم هاتفك', + 'Phone number seems too short': 'يبدو أن رقم الهاتف قصير جدًا', + 'No cars are available at the moment. Please try again later.': + 'لا توجد سيارات متاحة حالياً. الرجاء المحاولة مرة أخرى لاحقاً.', + "Nearest Car: ~": "أقرب سيارة: ~", + "Nearest Car": "أقرب سيارة", + "No cars nearby": "لا توجد سيارات قريبة", + "Favorite Places": "الأماكن المفضلة", + "No favorite places yet!": "لا توجد أماكن مفضلة بعد!", + "from your favorites": "من مفضلتك", + "Back": "رجوع", + "Enter your code below to apply the discount.": + "أدخل الرمز أدناه لتطبيق الخصم", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the": + "باختياري \"أوافق\" أدناه، أؤكد أنني قرأت ووافقت على", + "and acknowledge the": "وأقر بـ", + "Enable Location Access": "تفعيل الوصول إلى الموقع", + "We need your location to find nearby drivers for pickups and drop-offs.": + "نحتاج موقعك للعثور على كباتن قريبين لنقاط الانطلاق والوصول.", + "You should restart app to change language": + "يجب إعادة تشغيل التطبيق لتغيير اللغة", + "Home Page": "الصفحة الرئيسية", + "To change Language the App": "لتغيير لغة التطبيق", + "Learn more about our app and mission": + "تعرف أكثر على تطبيقنا ورؤيتنا", + "Promos For Today": "عروض اليوم", + "Choose your ride": "اختر رحلتك", + "Your Journey Begins Here": "رحلتك تبدأ من هنا", + "Bonus gift": "هدية إضافية", + "Pay": "ادفع", + "Get": "احصل على", + "Send to Driver Again": "أرسل للكابتن مرة أخرى", + "Driver Name:": "اسم الكابتن:", + "No trip data available": "لا تتوفر بيانات للرحلة", + "Car Plate:": "رقم لوحة السيارة:", + "remaining": "متبقٍ", + "Order Cancelled": "تم إلغاء الطلب", + "You canceled VIP trip": "لقد ألغيت رحلة الـ VIP", + "Passenger cancelled order": "الراكب ألغى الطلب", + "Your trip is scheduled": "رحلتك مجدولة", + "Don't forget your ride!": "لا تنسَ رحلتك!", + "Trip updated successfully": "تم تحديث الرحلة بنجاح", + "Car Make:": "نوع السيارة:", + "Car Model:": "موديل السيارة:", + "Car Color:": "لون السيارة:", + "Driver Phone:": "رقم الكابتن:", + "Pre-booking": "حجز مسبق", + "Waiting VIP": "بانتظار VIP", + "Driver List": "قائمة الكباتن", + "Confirm Trip": "تأكيد الرحلة", + "Select date and time of trip": "اختر تاريخ ووقت الرحلة", + "Date and Time Picker": "اختيار التاريخ والوقت", + "Trip Status:": "حالة الرحلة:", + "pending": "قيد الانتظار", + "accepted": "مقبولة", + "rejected": "مرفوضة", + "Apply": "تطبيق", + "Enter your promo code": "أدخل رمز العرض", + "Apply Promo Code": "تطبيق رمز العرض", + "Scheduled Time:": "الوقت المجدول:", + "No drivers available": "لا يوجد كباتن متاحون", + "No drivers available at the moment. Please try again later.": + "لا يوجد كباتن متاحون حالياً. الرجاء المحاولة مرة أخرى.", + "you have a negative balance of": "لديك رصيد سالب بقيمة", + "Please try again in a few moments": + "الرجاء المحاولة بعد لحظات قليلة", + "Unknown Driver": "كابتن غير معروف", + "in your": "في محفظتك", + "The driver accepted your order for": "الكابتن قبل طلبك مقابل", + "wallet due to a previous trip.": "بسبب رحلة سابقة.", + "rides": "رحلات", + "Add Work": "إضافة العمل", + "The reason is": "السبب هو", + "User does not have a wallet #1652": "المستخدم ليس لديه محفظة #1652", + "Price of trip": "سعر الرحلة", + "From:": "من:", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "لرحلات انطلق والتوصيل، يتم حساب السعر بشكل متغير. أما لرحلات الراحة، فيعتمد السعر على الوقت والمسافة.", + "Phone Wallet Saved Successfully": "تم حفظ رقم هاتف المحفظة بنجاح", + "Add wallet phone you use": "أضف رقم هاتف المحفظة الذي تستخدمه", + "Update Available": "يتوفر تحديث", + "Phone number must be exactly 11 digits long": + "يجب أن يتكون رقم الهاتف من 11 رقماً بالضبط", + "Insert Wallet phone number": "أدخل رقم هاتف المحفظة", + "Phone number isn't an Egyptian phone number": + "رقم الهاتف ليس رقماً مصرياً", + "A new version of the app is available. Please update to the latest version.": + "يتوفر إصدار جديد من التطبيق. الرجاء التحديث إلى آخر إصدار.", + "We use location to get accurate and nearest passengers for you": + "نستخدم الموقع لنجد لك الركاب الأقرب وبدقة", + "This ride is already applied by another driver.": + "هذه الرحلة تم قبولها من قبل كابتن آخر.", + "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": + "نستخدم موقعك الدقيق للعثور على أقرب كابتن متاح وتوفير معلومات دقيقة عن نقاط الانطلاق والوصول. يمكنك إدارة ذلك في الإعدادات.", + "Where are you, sir?": "أين أنت يا سيدي؟", + "I've been trying to reach you but your phone is off.": + "كنت أحاول الاتصال بك لكن هاتفك مغلق.", + "Please don't be late": "من فضلك لا تتأخر", + "Please don't be late, I'm waiting for you at the specified location.": + "من فضلك لا تتأخر، أنا بانتظارك في الموقع المحدد.", + "My location is correct. You can search for me using the navigation app": + "موقعي صحيح. يمكنك إيجادي باستخدام تطبيق الخرائط", + "Hello, I'm at the agreed-upon location": + "مرحباً، أنا في الموقع المتفق عليه", + "How much longer will you be?": "كم من الوقت تحتاج بعد؟", + "Phone number is verified before": "تم التحقق من رقم الهاتف مسبقاً", + "Change Ride": "تغيير الرحلة", + "You can change the destination by long-pressing any point on the map": + "يمكنك تغيير الوجهة بالضغط المطول على أي نقطة على الخريطة", + "Pick from map destination": "اختر الوجهة من الخريطة", + "Pick or Tap to confirm": "اختر أو اضغط للتأكيد", + "Accepted your order": "تم قبول طلبك", + "Order Accepted": "تم قبول الطلب", + "with type": "من نوع", + "accepted your order at price": "وافق على طلبك بسعر", + "you canceled order": "لقد ألغيت الطلب", + "If you want order to another person": "إذا كنت تريد الطلب لشخص آخر", + "upgrade price": "رفع السعر", + "airport": "مطار", + "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": + "الخيار الأفضل لسيارة مريحة مع مسار مرن ونقاط توقف. هذا المطار يوفر تأشيرة دخول بهذا السعر.", + "You can upgrade price to may driver accept your order": + "يمكنك رفع السعر ليقبل الكابتن طلبك", + "Change Route": "تغيير المسار", + "No Captain Accepted Your Order": "لم يقبل أي كابتن طلبك", + "We are looking for a captain but the price may increase to let a captain accept": + "نبحث عن كابتن ولكن قد يرتفع السعر ليوافق أحدهم", + "No, I want to cancel this trip": "لا، أريد إلغاء هذه الرحلة", + "Attention": "انتباه", + "Trip Cancelled. The cost of the trip will be deducted from your wallet.": + "تم إلغاء الرحلة. سيتم خصم تكلفتها من محفظتك.", + "You will be charged for the cost of the driver coming to your location.": + "سيتم تحميلك تكلفة قدوم الكابتن إلى موقعك.", + "reject your order.": "رفض طلبك.", + "Order Under Review": "الطلب قيد المراجعة", + "is reviewing your order. They may need more information or a higher price.": + "يقوم بمراجعة طلبك. قد يحتاج لمعلومات إضافية أو سعر أعلى.", + "Vibration": "اهتزاز", + "Resend code": "إعادة إرسال الرمز", + "change device": "تغيير الجهاز", + "Device Change Detected": "تم اكتشاف تغيير في الجهاز", + "You can only use one device at a time. This device will now be set as your active device.": + "يمكنك استخدام جهاز واحد فقط في كل مرة. سيتم الآن تعيين هذا الجهاز كجهازك النشط.", + "Click here point": "اضغط هنا", + "Are you want to change": "هل تريد التغيير؟", + "by": "بواسطة", + "Enter your complaint here": "أدخل شكواك هنا", + "Please enter your complaint.": "الرجاء إدخال شكواك.", + "Complaint data saved successfully": "تم حفظ بيانات الشكوى بنجاح", + "Trip Monitor": "مراقبة الرحلة", + "Insert SOS Phone": "إدخال رقم الطوارئ", + "Add SOS Phone": "إضافة رقم الطوارئ", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "عزيزي،\n\n🚀 لقد بدأت رحلة شيقة وأود أن أشاركك تفاصيلها وموقعي الحالي بشكل مباشر! حمّل تطبيق انطلق لتتمكن من متابعة تفاصيل رحلتي وآخر موقع لي.\n\n👈 رابط التحميل:\nأندرويد [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\nآيفون [https://getapp.cc/app/6458734951]\n\nيسعدني أن تبقى على اطلاع بمغامرتي!\n\nانطلق،", + "Send Intaleq app to him": "أرسل له تطبيق انطلق", + "No passenger found for the given phone number": + "لم يتم العثور على راكب بهذا الرقم", + "No user found for the given phone number": + "لم يتم العثور على مستخدم بهذا الرقم", + "This price is": "هذا السعر هو", + "Work": "العمل", + "Add Home": "إضافة المنزل", + "Notifications": "الإشعارات", + "💳 Pay with Credit Card": "💳 الدفع بالبطاقة الائتمانية", + "⚠️ You need to choose an amount!": "⚠️ يجب اختيار مبلغ!", + "💰 Pay with Wallet": "💰 الدفع بالمحفظة", + "You must restart the app to change the language.": + "يجب إعادة تشغيل التطبيق لتغيير اللغة.", + "joined": "انضم", + "Driver joined the channel": "الكابتن انضم إلى القناة", + "Driver left the channel": "الكابتن غادر القناة", + "Call Page": "صفحة الاتصال", + "Call Left": "مكالمات متبقية", + " Next as Cash !": " التالي كاش!", + "To use Wallet charge it": "لاستخدام المحفظة، قم بشحنها", + "We are searching for the nearest driver to you": + "نبحث لك عن أقرب كابتن", + "Best choice for cities": "الخيار الأفضل للمدن", + "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": + "رايح جاي: خدمة ذهاب وإياب مريحة بين المدن، سهلة وموثوقة.", + "This trip is for women only": "هذه الرحلة للنساء فقط", + "Total budgets on month": "إجمالي الميزانية الشهرية", + "You have call from driver": "لديك مكالمة من الكابتن", + "Intaleq": "انطلق", + "passenger agreement": "اتفاقية الراكب", + "To become a passenger, you must review and agree to the ": + "لتصبح راكباً، يجب عليك مراجعة والموافقة على", + "agreement subtitle": + "للمتابعة، يجب مراجعة شروط الاستخدام وسياسة الخصوصية والموافقة عليها.", + "terms of use": "شروط الاستخدام", + " and acknowledge our Privacy Policy.": + "والإقرار بسياسة الخصوصية الخاصة بنا.", + "and acknowledge our": "والإقرار بـ", + "privacy policy": "سياسة الخصوصية.", + "i agree": "أوافق على الشروط والأحكام", + "Driver already has 2 trips within the specified period.": + "لدى الكابتن رحلتان بالفعل خلال الفترة المحددة.", + "The invitation was sent successfully": "تم إرسال الدعوة بنجاح", + "You should select your country": "يجب عليك اختيار بلدك", + "Scooter": "سكوتر", + "A trip with a prior reservation, allowing you to choose the best captains and cars.": + "رحلة بحجز مسبق، تتيح لك اختيار أفضل الكباتن والسيارات.", + "Mishwar Vip": "مشوار VIP", + "The driver waiting you in picked location .": + "الكابتن بانتظارك في موقع الانطلاق.", + "About Us": "من نحن", + "You can change the vibration feedback for all buttons": + "يمكنك تغيير استجابة الاهتزاز لجميع الأزرار", + "Most Secure Methods": "أكثر الطرق أماناً", + "In-App VOIP Calls": "مكالمات صوتية داخل التطبيق", + "Recorded Trips for Safety": "رحلات مسجلة للأمان", + "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": + "\nنهتم أيضاً بأن تكون الأسعار مناسبة للجميع، حيث نقدم أسعاراً تنافسية لجعل رحلاتك في متناول اليد.", + "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": + "انطلق هو تطبيق لمشاركة الرحلات مصمم مع الأخذ بعين الاعتبار سلامتك وميزانيتك. نصلك بكباتن موثوقين في منطقتك، لنضمن لك تجربة تنقل مريحة وخالية من التوتر.\n\nإليك بعض الميزات الرئيسية التي تميزنا:", + "Sign In by Apple": "الدخول عبر Apple", + "Sign In by Google": "الدخول عبر Google", + "How do I request a ride?": "كيف أطلب رحلة؟", + "Step-by-step instructions on how to request a ride through the Intaleq app.": + "تعليمات مفصلة خطوة بخطوة حول كيفية طلب رحلة عبر تطبيق انطلق.", + "What types of vehicles are available?": + "ما هي أنواع السيارات المتاحة؟", + "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": + "يوفر انطلق مجموعة متنوعة من خيارات السيارات لتناسب احتياجاتك، بما في ذلك الاقتصادية، والمريحة، والفاخرة. اختر الخيار الذي يناسب ميزانيتك وعدد الركاب.", + "How can I pay for my ride?": "كيف يمكنني الدفع لرحلتي؟", + "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": + "يوفر انطلق طرق دفع متعددة لراحتك. اختر بين الدفع نقداً أو ببطاقة الائتمان/الخصم عند تأكيد الرحلة.", + "Can I cancel my ride?": "هل يمكنني إلغاء رحلتي؟", + "Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.": + "نعم، يمكنك إلغاء رحلتك بشروط معينة (مثلاً، قبل تعيين الكابتن). راجع سياسة الإلغاء في انطلق لمعرفة التفاصيل.", + "Driver Registration & Requirements": "تسجيل الكباتن والمتطلبات", + "How can I register as a driver?": "كيف يمكنني التسجيل ككابتن؟", + "What are the requirements to become a driver?": + "ما هي متطلبات الانضمام ككابتن؟", + "Visit our website or contact Intaleq support for information on driver registration and requirements.": + "لمعلومات حول التسجيل والمتطلبات، تفضل بزيارة موقعنا الإلكتروني أو تواصل مع دعم انطلق.", + "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": + "يوفر انطلق ميزة الدردشة داخل التطبيق للتواصل مع الكابتن أو الراكب أثناء الرحلة.", + "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": + "سلامتك أولويتنا في انطلق. نوفر ميزات مثل التحقق من الكابتن، تتبع الرحلة داخل التطبيق، وخيارات الاتصال بالطوارئ.", + "Frequently Questions": "الأسئلة الشائعة", + "User does not exist.": "المستخدم غير موجود.", + "We need your phone number to contact you and to help you.": + "نحتاج رقم هاتفك لنتواصل معك ونساعدك.", + "You will recieve code in sms message": "ستتلقى رمزاً في رسالة نصية", + "Please enter": "الرجاء إدخال", + "We need your phone number to contact you and to help you receive orders.": + "نحتاج رقم هاتفك لنتواصل معك ولمساعدتك في استقبال الطلبات.", + "The full name on your criminal record does not match the one on your driver's license. Please verify and provide the correct documents.": + "الاسم الكامل في وثيقة لا حكم عليه لا يطابق الاسم في رخصة القيادة. الرجاء التحقق وتقديم المستندات الصحيحة.", + "The national number on your driver's license does not match the one on your ID document. Please verify and provide the correct documents.": + "الرقم الوطني في رخصة القيادة لا يطابق الرقم في هويتك. الرجاء التحقق وتقديم المستندات الصحيحة.", + "Capture an Image of Your Criminal Record": + "التقط صورة لوثيقة لا حكم عليه", + "IssueDate": "تاريخ الإصدار", + "Capture an Image of Your car license front": + "التقط صورة للوجه الأمامي لرخصة سيارتك", + "Capture an Image of Your ID Document front": + "التقط صورة للوجه الأمامي لهويتك", + "NationalID": "الرقم الوطني", + "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": + "يمكنك مشاركة تطبيق انطلق مع أصدقائك وكسب مكافآت على الرحلات التي يقومون بها باستخدام رمزك.", + "FullName": "الاسم الكامل", + "No invitation found yet!": "لم يتم العثور على دعوات بعد!", + "InspectionResult": "نتيجة الفحص", + "Criminal Record": "لا حكم عليه", + "The email or phone number is already registered.": + "البريد الإلكتروني أو رقم الهاتف مسجل مسبقاً.", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "لتصبح كابتن في تطبيق انطلق، يجب عليك رفع رخصة القيادة، الهوية الشخصية، ورخصة السيارة. سيقوم نظام الذكاء الاصطناعي لدينا بمراجعة وثائقك والتحقق من صحتها خلال 2-3 دقائق. في حال الموافقة، يمكنك البدء بالعمل مباشرة. يرجى العلم أن تقديم وثائق مزورة يعتبر مخالفة خطيرة وقد يؤدي إلى إنهاء حسابك وملاحقات قانونية.", + "Documents check": "فحص الوثائق", + "Driver's License": "رخصة القيادة", + "for your first registration!": "لتسجيلك الأول!", + "Get it Now!": "احصل عليه الآن!", + "before": "قبل", + "Code not approved": "الرمز غير مقبول", + "3000 LE": "3000 ل.س", + "Do you have an invitation code from another driver?": + "هل لديك رمز دعوة من كابتن آخر؟", + "Paste the code here": "الصق الرمز هنا", + "No, I don't have a code": "لا، ليس لدي رمز", + "Code approved": "تم قبول الرمز", + "Install our app:": "حمّل تطبيقنا:", + "Invite another driver and both get a gift after he completes 100 trips!": + "ادعُ كابتن آخر واحصلوا على هدية بعد إكماله 100 رحلة!", + "Invite": "دعوة", + "Are you sure?": "هل أنت متأكد؟", + "This will delete all recorded files from your device.": + "سيؤدي هذا إلى حذف جميع الملفات المسجلة من جهازك.", + "Select a file": "اختر ملفاً", + "Select a File": "اختر ملفاً", + "Delete": "حذف", + "attach audio of complain": "إرفاق تسجيل صوتي للشكوى", + "Phone Number Check": "التحقق من رقم الهاتف", + "Drivers received orders": "الكباتن استلموا الطلبات", + "No audio files recorded.": "لا توجد ملفات صوتية مسجلة.", + "This is for delivery or a motorcycle.": + "هذا لطلبات التوصيل أو الدراجات النارية.", + "Intaleq Reminder": "تذكير من انطلق", + "It's time to check the Intaleq app!": "حان وقت تفقد تطبيق انطلق!", + "you must insert token code": "يجب إدخال الرمز", + "Something went wrong. Please try again.": + "حدث خطأ ما. الرجاء المحاولة مرة أخرى.", + "Trip Details": "تفاصيل الرحلة", + "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": + "لا توجد تفاصيل كافية عن الشكوى لتقديم حل. يرجى تزويدنا بالمعلومات اللازمة، وسنسعد بمساعدتك.", + "Submit Your Complaint": "قدّم شكواك", + "Status": "الحالة", + "Choose from contact": "اختر من جهات الاتصال", + "attach correct audio": "إرفاق الصوت الصحيح", + "be sure": "تأكد", + "Audio uploaded successfully.": "تم رفع الملف الصوتي بنجاح.", + "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": + "مثالي للركاب الذين يبحثون عن أحدث موديلات السيارات مع حرية اختيار أي مسار يرغبون به", + "Share this code with your friends and earn rewards when they use it!": + "شارك هذا الرمز مع أصدقائك واحصل على مكافآت عند استخدامه!", + "Enter phone": "أدخل الرقم", + "complete, you can claim your gift": "اكتمل، يمكنك طلب هديتك", + "When": "عندما", + "Enter driver's phone": "أدخل رقم الكابتن", + "Send Invite": "إرسال دعوة", + "Show Invitations": "عرض الدعوات", + "License Type": "نوع الرخصة", + "National Number": "الرقم الوطني", + "Name (Arabic)": "الاسم (بالعربية)", + "Name (English)": "الاسم (بالإنكليزية)", + "Address": "العنوان", + "Issue Date": "تاريخ الإصدار", + "Expiry Date": "تاريخ الانتهاء", + "License Categories": "فئات الرخصة", + "driver_license": "رخصة القيادة", + "Capture an Image of Your Driver License": "التقط صورة لرخصة قيادتك", + "ID Documents Back": "الوجه الخلفي للهوية", + "National ID": "الرقم الوطني", + "Occupation": "المهنة", + "Religion": "الدين", + "Full Name (Marital)": "الاسم الكامل (حسب الحالة الاجتماعية)", + "Expiration Date": "تاريخ الانتهاء", + "Capture an Image of Your ID Document Back": + "التقط صورة للوجه الخلفي لهويتك", + "ID Documents Front": "الوجه الأمامي للهوية", + "First Name": "الاسم الأول", + "CardID": "رقم البطاقة", + "Vehicle Details Front": "تفاصيل المركبة (الأمام)", + "Plate Number": "رقم اللوحة", + "Owner Name": "اسم المالك", + "Vehicle Details Back": "تفاصيل المركبة (الخلف)", + "Make": "الشركة المصنعة", + "Model": "الموديل", + "Year": "سنة الصنع", + "Chassis": "رقم الشاسيه", + "Color": "اللون", + "Displacement": "سعة المحرك", + "Fuel": "نوع الوقود", + "Tax Expiry Date": "تاريخ انتهاء الضريبة", + "Inspection Date": "تاريخ الفحص", + "Capture an Image of Your car license back": + "التقط صورة للوجه الخلفي لرخصة سيارتك", + "Capture an Image of Your Driver's License": + "التقط صورة لرخصة قيادتك", + "Sign in with Google for easier email and name entry": + "سجل الدخول عبر جوجل لتسهيل إدخال الاسم والبريد الإلكتروني", + "You will choose allow all the time to be ready receive orders": + "اختر 'السماح طوال الوقت' لتكون جاهزاً لاستقبال الطلبات", + "Get to your destination quickly and easily.": + "صل إلى وجهتك بسرعة وسهولة.", + "Enjoy a safe and comfortable ride.": "استمتع برحلة آمنة ومريحة.", + "Choose Language": "اختر اللغة", + "Pay with Wallet": "الدفع بالمحفظة", + "Invalid MPIN": "رمز MPIN غير صالح", + "Invalid OTP": "رمز التحقق غير صالح", + "Enter your email address": "أدخل بريدك الإلكتروني", + "Please enter Your Email.": "الرجاء إدخال بريدك الإلكتروني.", + "Enter your phone number": "أدخل رقم هاتفك", + "Please enter your phone number.": "الرجاء إدخال رقم هاتفك.", + "Please enter Your Password.": "الرجاء إدخال كلمة المرور.", + "if you dont have account": "إذا لم يكن لديك حساب", + "Register": "تسجيل", + "Accept Ride's Terms & Review Privacy Notice": + "قبول شروط الرحلة ومراجعة بيان الخصوصية", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "باختياري 'أوافق' أدناه، أكون قد راجعت ووافقت على شروط الاستخدام وأقررت ببيان الخصوصية. وعمري لا يقل عن 18 عاماً.", + "First name": "الاسم الأول", + "Enter your first name": "أدخل اسمك الأول", + "Please enter your first name.": "الرجاء إدخال اسمك الأول.", + "Last name": "الاسم الأخير", + "Enter your last name": "أدخل اسمك الأخير", + "Please enter your last name.": "الرجاء إدخال اسمك الأخير.", + "City": "المدينة", + "Please enter your City.": "الرجاء إدخال مدينتك.", + "Verify Email": "التحقق من البريد الإلكتروني", + "We sent 5 digit to your Email provided": + "أرسلنا رمزاً من 5 أرقام إلى بريدك الإلكتروني", + "5 digit": "5 أرقام", + "Send Verification Code": "إرسال رمز التحقق", + "Your Ride Duration is ": "مدة رحلتك هي ", + "You will be thier in": "ستصل خلال", + "You trip distance is": "مسافة رحلتك هي", + "Fee is": "الأجرة هي", + "From : ": "من: ", + "To : ": "إلى: ", + "Add Promo": "إضافة عرض", + "Confirm Selection": "تأكيد الاختيار", + "distance is": "المسافة هي", + "Privacy Policy": "سياسة الخصوصية", + "Intaleq LLC": "شركة انطلق", + "Syria's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "خدمة مشاركة الرحلات الرائدة في سوريا، تم تطويرها بفخر من قبل ملاك عرب ومحليين. أولويتنا هي أن نكون بالقرب منك - ركابنا الكرام وكباتننا المتفانين.", + "Intaleq is the first ride-sharing app in Syria, designed to connect you with the nearest drivers for a quick and convenient travel experience.": + "انطلق هو أول تطبيق لمشاركة الرحلات في سوريا، مصمم ليوصلك بأقرب الكباتن لتجربة تنقل سريعة ومريحة.", + "Why Choose Intaleq?": "لماذا تختار انطلق؟", + "Closest to You": "الأقرب إليك", + "We connect you with the nearest drivers for faster pickups and quicker journeys.": + "نوصلك بأقرب الكباتن لوصول أسرع ورحلات أسرع.", + "Uncompromising Security": "أمان لا هوادة فيه", + "Lady Captains Available": "كباتن سيدات متاحات", + "Recorded Trips (Voice & AI Analysis)": + "رحلات مسجلة (تحليل صوتي وذكاء اصطناعي)", + "Fastest Complaint Response": "أسرع استجابة للشكاوى", + "Our dedicated customer service team ensures swift resolution of any issues.": + "فريق خدمة العملاء لدينا يضمن حلاً سريعاً لأي مشكلة.", + "Affordable for Everyone": "أسعار مناسبة للجميع", + "Frequently Asked Questions": "الأسئلة المتكررة", + "Getting Started": "البداية", + "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": + "ببساطة افتح تطبيق انطلق، أدخل وجهتك، واضغط \"اطلب رحلة\". سيقوم التطبيق بتوصيلك بكابتن قريب.", + "Vehicle Options": "خيارات المركبات", + "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": + "يقدم انطلق خيارات متنوعة تشمل الاقتصادية، والمريحة، والفاخرة لتناسب احتياجاتك وميزانيتك.", + "Payments": "الدفع", + "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": + "يمكنك الدفع لرحلتك نقداً أو ببطاقة الائتمان/الخصم. اختر طريقة الدفع المفضلة لديك قبل تأكيد الرحلة.", + "Ride Management": "إدارة الرحلات", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "نعم، يمكنك إلغاء رحلتك، ولكن قد يتم تطبيق رسوم إلغاء حسب توقيت الإلغاء.", + "For Drivers": "للكباتن", + "Driver Registration": "تسجيل الكابتن", + "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": + "للتسجيل ككابتن أو لمعرفة المتطلبات، يرجى زيارة موقعنا أو التواصل مع دعم انطلق مباشرة.", + "Visit Website/Contact Support": "زيارة الموقع / التواصل مع الدعم", + "Close": "إغلاق", + "We are searching for the nearest driver": "نبحث عن أقرب كابتن", + "Communication": "التواصل", + "How do I communicate with the other party (passenger/driver)?": + "كيف أتواصل مع الطرف الآخر (الراكب/الكابتن)؟", + "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": + "يمكنك التواصل مع الكابتن أو الراكب عبر ميزة الدردشة داخل التطبيق بعد تأكيد الرحلة.", + "Safety & Security": "السلامة والأمان", + "What safety measures does Intaleq offer?": + "ما هي إجراءات السلامة التي يوفرها انطلق؟", + "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": + "يوفر انطلق ميزات أمان متنوعة تشمل التحقق من الكابتن، تتبع الرحلة داخل التطبيق، خيارات الاتصال بالطوارئ، وإمكانية مشاركة حالة رحلتك مع جهات اتصال موثوقة.", + "Enjoy competitive prices across all trip options, making travel accessible.": + "استمتع بأسعار تنافسية لجميع خيارات الرحلات، مما يجعل التنقل في متناول الجميع.", + "Variety of Trip Choices": "تنوع خيارات الرحلات", + "Choose the trip option that perfectly suits your needs and preferences.": + "اختر خيار الرحلة الذي يناسب احتياجاتك ورغباتك تماماً.", + "Your Choice, Our Priority": "اختيارك أولويتنا", + "Because we are near, you have the flexibility to choose the ride that works best for you.": + "لأننا قريبون، لديك المرونة لاختيار الرحلة الأنسب لك.", + "duration is": "المدة هي", + "Setting": "الإعدادات", + "Find answers to common questions": "ابحث عن إجابات للأسئلة الشائعة", + "I don't need a ride anymore": "لم أعد بحاجة لرحلة", + "I was just trying the application": "كنت أجرب التطبيق فقط", + "No driver accepted my request": "لم يوافق أي كابتن على طلبي", + "I added the wrong pick-up/drop-off location": + "أضفت موقع انطلاق/وصول خاطئ", + "I don't have a reason": "ليس لدي سبب", + "Can we know why you want to cancel Ride ?": + "هل يمكننا معرفة سبب رغبتك في إلغاء الرحلة؟", + "Cancel Ride": "إلغاء الرحلة", + "Add Payment Method": "إضافة طريقة دفع", + "Ride Wallet": "محفظة الرحلة", + "Payment Method": "طريقة الدفع", + "Type here Place": "اكتب المكان هنا", + "Are You sure to ride to": "هل أنت متأكد من الذهاب إلى", + "Confirm": "تأكيد", + "You are Delete": "أنت تحذف", + "Deleted": "تم الحذف", + "You Dont Have Any places yet !": "ليس لديك أي أماكن بعد!", + "From : Current Location": "من: الموقع الحالي", + "My Cared": "بطاقاتي", + "Add Card": "إضافة بطاقة", + "Add Credit Card": "إضافة بطاقة ائتمانية", + "Please enter the cardholder name": "الرجاء إدخال اسم صاحب البطاقة", + "Please enter the expiry date": "الرجاء إدخال تاريخ انتهاء الصلاحية", + "Please enter the CVV code": "الرجاء إدخال رمز CVV", + "Go To Favorite Places": "الذهاب إلى الأماكن المفضلة", + "Go to this Target": "اذهب إلى هذه الوجهة", + "My Profile": "ملفي الشخصي", + "Are you want to go to this site": "هل تريد الذهاب إلى هذا الموقع؟", + "MyLocation": "موقعي", + "my location": "موقعي", + "Target": "الوجهة", + "You Should choose rate figure": "يجب عليك اختيار تقييم", + "Login Captin": "تسجيل دخول الكابتن", + "Register Captin": "تسجيل كابتن", + "Send Verfication Code": "إرسال رمز التحقق", + "KM": "كم", + "End Ride": "إنهاء الرحلة", + "Minute": "دقيقة", + "Go to passenger Location now": "اذهب إلى موقع الراكب الآن", + "Duration of the Ride is ": "مدة الرحلة ", + "Distance of the Ride is ": "مسافة الرحلة ", + "Name of the Passenger is ": "اسم الراكب ", + "Hello this is Captain": "مرحباً، معك الكابتن", + "Start the Ride": "ابدأ الرحلة", + "Please Wait If passenger want To Cancel!": + "الرجاء الانتظار في حال أراد الراكب الإلغاء!", + "Total Duration:": "المدة الإجمالية:", + "Active Duration:": "المدة النشطة:", + "Waiting for Captin ...": "بانتظار الكابتن...", + "Age is ": "العمر: ", + "Rating is ": "التقييم: ", + " to arrive you.": "للوصول إليك.", + "Tariff": "التعرفة", + "Settings": "الإعدادات", + "Feed Back": "التقييمات", + "Please enter a valid 16-digit card number": + "الرجاء إدخال رقم بطاقة صالح مكون من 16 رقماً", + "Add Phone": "إضافة رقم", + "Please enter a phone number": "الرجاء إدخال رقم هاتف", + "You dont Add Emergency Phone Yet!": "لم تقم بإضافة رقم طوارئ بعد!", + "You will arrive to your destination after ": "ستصل إلى وجهتك بعد ", + "You can cancel Ride now": "يمكنك إلغاء الرحلة الآن", + "You Can cancel Ride After Captain did not come in the time": + "يمكنك إلغاء الرحلة إذا لم يأتِ الكابتن في الوقت المحدد", + "If you in Car Now. Press Start The Ride": + "إذا كنت في السيارة الآن، اضغط على 'ابدأ الرحلة'", + "You Dont Have Any amount in": "ليس لديك أي رصيد في", + "Wallet!": "المحفظة!", + "You Have": "لديك", + "Save Credit Card": "حفظ البطاقة الائتمانية", + "Show Promos": "عرض العروض", + "10 and get 4% discount": "10 واحصل على خصم 4%", + "20 and get 6% discount": "20 واحصل على خصم 6%", + "40 and get 8% discount": "40 واحصل على خصم 8%", + "100 and get 11% discount": "100 واحصل على خصم 11%", + "Pay with Your PayPal": "ادفع عبر PayPal", + "You will choose one of above !": "اختر أحد الخيارات أعلاه!", + "Edit Profile": "تعديل الملف الشخصي", + "Copy this Promo to use it in your Ride!": + "انسخ هذا العرض واستخدمه في رحلتك!", + "To change some Settings": "لتغيير بعض الإعدادات", + "Order Request Page": "صفحة طلب الرحلة", + "Rouats of Trip": "مسارات الرحلة", + "Passenger Name is ": "اسم الراكب: ", + "Total From Passenger is ": "الإجمالي من الراكب: ", + "Duration To Passenger is ": "المدة للوصول للراكب: ", + "Distance To Passenger is ": "المسافة للوصول للراكب: ", + "Total For You is ": "الإجمالي لك: ", + "Distance is ": "المسافة: ", + " KM": " كم", + "Duration of Trip is ": "مدة الرحلة: ", + " Minutes": " دقائق", + "Apply Order": "قبول الطلب", + "Refuse Order": "رفض الطلب", + "Rate Captain": "تقييم الكابتن", + "Enter your Note": "أدخل ملاحظتك", + "Type something...": "اكتب شيئاً...", + "Submit rating": "إرسال التقييم", + "Rate Passenger": "تقييم الراكب", + "Ride Summary": "ملخص الرحلة", + "welcome_message": "أهلاً بك في انطلق!", + "app_description": + "انطلق هو تطبيق لمشاركة الرحلات، موثوق، آمن، وفي متناول اليد.", + "get_to_destination": "صل إلى وجهتك بسرعة وسهولة.", + "get_a_ride": "مع انطلق، يمكنك الحصول على توصيلة لوجهتك في دقائق.", + "safe_and_comfortable": "استمتع برحلة آمنة ومريحة.", + "committed_to_safety": + "تلتزم انطلق بالسلامة، وجميع كباتننا يتم فحصهم بعناية والتحقق من سجلاتهم.", + "your ride is Accepted": "تم قبول رحلتك", + "Driver is waiting at pickup.": "الكابتن بانتظارك في نقطة الانطلاق.", + "Driver is on the way": "الكابتن في الطريق", + "Contact Options": "خيارات التواصل", + "Send a custom message": "إرسال رسالة مخصصة", + "Type your message": "اكتب رسالتك", + "I will go now": "أنا ذاهب الآن", + "You Have Tips": "لديك إكرامية", + " tips\nTotal is": " إكرامية\nالإجمالي هو", + "Your fee is ": "أجرتك هي ", + "Do you want to pay Tips for this Driver": + "هل تريد دفع إكرامية لهذا الكابتن؟", + "Tip is ": "الإكرامية: ", + "Are you want to wait drivers to accept your order": + "هل تريد انتظار الكباتن ليقبلوا طلبك؟", + "This price is fixed even if the route changes for the driver.": + "هذا السعر ثابت حتى لو تغير مسار الكابتن.", + "The price may increase if the route changes.": + "قد يرتفع السعر إذا تغير المسار.", + "The captain is responsible for the route.": + "الكابتن هو المسؤول عن المسار.", + "We are search for nearst driver": "نبحث عن أقرب كابتن", + "Your order is being prepared": "طلبك قيد التحضير", + "The drivers are reviewing your request": "يقوم الكباتن بمراجعة طلبك", + "Your order sent to drivers": "تم إرسال طلبك للكباتن", + "You can call or record audio of this trip": + "يمكنك الاتصال أو تسجيل صوت لهذه الرحلة", + "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": + "بدأت الرحلة! يمكنك الآن الاتصال بأرقام الطوارئ، مشاركة رحلتك، أو تفعيل التسجيل الصوتي.", + "Camera Access Denied.": "تم رفض الوصول إلى الكاميرا.", + "Open Settings": "فتح الإعدادات", + "GPS Required Allow !.": "مطلوب تفعيل GPS!", + "Your Account is Deleted": "تم حذف حسابك", + "Are you sure to delete your account?": "هل أنت متأكد من حذف حسابك؟", + "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": + "سيتم حذف بياناتك بعد أسبوعين\nولن تتمكن من استخدام التطبيق مرة أخرى بعد شهر واحد.", + "Enter Your First Name": "أدخل اسمك الأول", + "Are you Sure to LogOut?": "هل أنت متأكد من تسجيل الخروج؟", + "Email Wrong": "البريد الإلكتروني خاطئ", + "Email you inserted is Wrong.": "البريد الإلكتروني الذي أدخلته خاطئ.", + "You have finished all times ": "لقد استنفدت كل المحاولات", + "if you want help you can email us here": + "إذا كنت بحاجة للمساعدة، يمكنك مراسلتنا هنا", + "Thanks": "شكراً", + "Email Us": "راسلنا عبر البريد الإلكتروني", + "I cant register in your app in face detection ": + "لا أستطيع التسجيل في تطبيقكم بسبب مشكلة في التحقق من الوجه", + "Hi": "مرحباً", + "No face detected": "لم يتم التعرف على أي وجه", + "Image detecting result is ": "نتيجة التعرف على الصورة هي ", + "from 3 times Take Attention": "من 3 محاولات، انتبه", + "Be sure for take accurate images please\nYou have": + "الرجاء التأكد من التقاط صور دقيقة\nلديك", + "image verified": "تم التحقق من الصورة", + "Next": "التالي", + "There is no help Question here": "لا يوجد سؤال مساعدة هنا", + "You dont have Points": "ليس لديك نقاط", + "You Are Stopped For this Day !": "لقد تم إيقافك لهذا اليوم!", + "You must be charge your Account": "يجب عليك شحن حسابك", + "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": + "لقد رفضت 3 رحلات اليوم، ولهذا السبب تم إيقافك.\nنراك غداً!", + "Recharge my Account": "إعادة شحن حسابي", + "Ok , See you Tomorrow": "حسناً، أراك غداً", + "You are Stopped": "أنت موقوف", + "Connected": "متصل", + "Not Connected": "غير متصل", + "Your are far from passenger location": "أنت بعيد عن موقع الراكب", + "go to your passenger location before\nPassenger cancel trip": + "اذهب إلى موقع الراكب قبل أن يلغي الرحلة", + "You will get cost of your work for this trip": + "ستحصل على تكلفة عملك لهذه الرحلة", + " in your wallet": "في محفظتك", + "you gain": "لقد ربحت", + "Order Cancelled by Passenger": "تم إلغاء الطلب من قبل الراكب", + "Feedback data saved successfully": "تم حفظ التقييم بنجاح", + "No Promo for today .": "لا يوجد عرض لليوم.", + "Select your destination": "اختر وجهتك", + "Search for your Start point": "ابحث عن نقطة انطلاقك", + "Search for waypoint": "ابحث عن نقطة توقف", + "Current Location": "الموقع الحالي", + "Add Location 1": "إضافة موقع 1", + "You must Verify email !.": "يجب عليك التحقق من البريد الإلكتروني!", + "Cropper": "قص الصورة", + "Saved Sucssefully": "تم الحفظ بنجاح", + "Select Date": "اختر التاريخ", + "Birth Date": "تاريخ الميلاد", + "Ok": "حسناً", + "the 500 points equal 30 JOD": "500 نقطة تساوي 30 ديناراً أردنياً", + "the 500 points equal 30 JOD for you \nSo go and gain your money": + "500 نقطة تساوي 30 ديناراً أردنياً لك\nاذهب الآن واكسب أموالك", + "token updated": "تم تحديث الرمز", + "Add Location 2": "إضافة موقع 2", + "Add Location 3": "إضافة موقع 3", + "Add Location 4": "إضافة موقع 4", + "Waiting for your location": "بانتظار موقعك", + "Search for your destination": "ابحث عن وجهتك", + "Hi! This is": "مرحباً! هذا", + " I am using": " أنا أستخدم", + " to ride with": " للتنقل مع", + " as the driver.": " ككابتن.", + "is driving a ": "يقود سيارة ", + " with license plate ": " رقم لوحتها ", + " I am currently located at ": " أنا حالياً في ", + "Please go to Car now ": "الرجاء التوجه إلى السيارة الآن", + "You will receive a code in WhatsApp Messenger": + "سوف تستلم الرمز عبر واتساب", + "If you need assistance, contact us": + "إذا احتجت للمساعدة، تواصل معنا", + "Promo Ended": "انتهى العرض", + "Enter the promo code and get": "أدخل رمز العرض واحصل على", + "DISCOUNT": "خصم", + "No wallet record found": "لم يتم العثور على سجل للمحفظة", + "for": "لـ", + "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": + "انطلق هو تطبيق مشاركة الرحلات الأكثر أماناً، ويقدم ميزات عديدة للكباتن والركاب. نقدم أقل نسبة عمولة، 8% فقط، لنضمن لك أفضل قيمة لرحلاتك. يشمل تطبيقنا تأميناً لأفضل الكباتن، صيانة دورية للسيارات مع أفضل المهندسين، وخدمات على الطريق لتجربة محترمة وعالية الجودة لجميع المستخدمين.", + "You can contact us during working hours from 12:00 - 19:00.": + "يمكنك التواصل معنا خلال ساعات العمل من 12:00 ظهراً حتى 7:00 مساءً.", + "Choose a contact option": "اختر طريقة التواصل", + "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": + "أوقات العمل من 12:00 ظهراً حتى 7:00 مساءً.\nيمكنك إرسال رسالة واتساب أو بريد إلكتروني.", + "Promo code copied to clipboard!": "تم نسخ رمز العرض إلى الحافظة!", + "Copy Code": "نسخ الرمز", + "Your invite code was successfully applied!": + "تم تطبيق رمز دعوتك بنجاح!", + "Payment Options": "خيارات الدفع", + "wait 1 minute to receive message": + "انتظر دقيقة واحدة لاستلام الرسالة", + "You have copied the promo code.": "لقد نسخت رمز العرض.", + "Select Payment Amount": "اختر مبلغ الدفع", + "The promotion period has ended.": "لقد انتهت فترة العرض.", + "Promo Code Accepted": "تم قبول رمز العرض", + "Tap on the promo code to copy it!": "اضغط على رمز العرض لنسخه!", + "Lowest Price Achieved": "تم الوصول لأقل سعر", + "Cannot apply further discounts.": + "لا يمكن تطبيق المزيد من الخصومات.", + "Promo Already Used": "تم استخدام العرض مسبقاً", + "Invitation Used": "تم استخدام الدعوة", + "You have already used this promo code.": + "لقد استخدمت هذا العرض مسبقاً.", + "Insert Your Promo Code": "أدخل رمز العرض الخاص بك", + "Enter promo code here": "أدخل رمز العرض هنا", + "Please enter a valid promo code": "الرجاء إدخال رمز عرض صالح", + "Awfar Car": "سيارة أوفر", + "Old and affordable, perfect for budget rides.": + "قديمة واقتصادية، مثالية للرحلات الموفّرة.", + " If you need to reach me, please contact the driver directly at": + "إذا احتجت للتواصل معي، يرجى الاتصال بالكابتن مباشرة على", + "No Car or Driver Found in your area.": + "لم يتم العثور على سيارة أو كابتن في منطقتك.", + "Please Try anther time ": "الرجاء المحاولة في وقت آخر", + "There no Driver Aplly your order sorry for that ": + "لم يتقدم أي كابتن لطلبك، نعتذر عن ذلك", + "Trip Cancelled": "تم إلغاء الرحلة", + "The Driver Will be in your location soon .": + "سيصل الكابتن إلى موقعك قريباً.", + "The distance less than 500 meter.": "المسافة أقل من 500 متر.", + "Promo End !": "انتهى العرض!", + "There is no notification yet": "لا توجد إشعارات بعد", + "Use Touch ID or Face ID to confirm payment": + "استخدم بصمة الإصبع أو الوجه لتأكيد الدفع", + "Contact us for any questions on your order.": + "تواصل معنا لأي استفسار حول طلبك.", + "Pyament Cancelled .": "تم إلغاء الدفع.", + "type here": "اكتب هنا", + "Scan Driver License": "مسح رخصة القيادة", + "Please put your licence in these border": + "الرجاء وضع رخصتك ضمن هذه الحدود", + "Camera not initialized yet": "لم يتم تفعيل الكاميرا بعد", + "Take Image": "التقط صورة", + "AI Page": "صفحة الذكاء الاصطناعي", + "Take Picture Of ID Card": "التقط صورة للهوية", + "Take Picture Of Driver License Card": "التقط صورة لرخصة القيادة", + "We are process picture please wait ": + "جاري معالجة الصورة، يرجى الانتظار", + "There is no data yet.": "لا توجد بيانات بعد.", + "Name :": "الاسم:", + "Drivers License Class: ": "فئة الرخصة:", + "Document Number: ": "رقم الوثيقة:", + "Address: ": "العنوان:", + "Height: ": "الطول:", + "Expiry Date: ": "تاريخ الانتهاء:", + "Date of Birth: ": "تاريخ الميلاد:", + "You can't continue with us .\nYou should renew Driver license": + "لا يمكنك المتابعة معنا.\nيجب عليك تجديد رخصة القيادة", + "Detect Your Face ": "التحقق من وجهك", + "Go to next step\nscan Car License.": + "انتقل للخطوة التالية\nمسح رخصة السيارة.", + "Name in arabic": "الاسم بالعربية", + "Drivers License Class": "فئة رخصة القيادة", + "Selected Date": "التاريخ المحدد", + "Select Time": "اختر الوقت", + "Selected Time": "الوقت المحدد", + "Selected Date and Time": "التاريخ والوقت المحددان", + "Lets check Car license ": "لنتحقق من رخصة السيارة", + "Car": "سيارة", + "Plate": "لوحة", + "Rides": "رحلات", + "Selected driver": "الكابتن المختار", + "Lets check License Back Face": "لنتحقق من الوجه الخلفي للرخصة", + "Car License Card": "رخصة السيارة", + "No image selected yet": "لم يتم اختيار صورة بعد", + "Made :": "الصنع:", + "model :": "الموديل:", + "VIN :": "رقم الهيكل:", + "year :": "السنة:", + "ُExpire Date": "تاريخ الانتهاء", + "Login Driver": "دخول الكابتن", + "Password must br at least 6 character.": + "يجب أن تتكون كلمة المرور من 6 أحرف على الأقل.", + "if you don't have account": "إذا لم يكن لديك حساب", + "Here recorded trips audio": "هنا التسجيلات الصوتية للرحلات", + "Register as Driver": "التسجيل ككابتن", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": + "باختياري \"أوافق\" أدناه، أكون قد راجعت ووافقت على شروط الاستخدام وأقر بـ", + "Log Out Page": "صفحة تسجيل الخروج", + "Log Off": "تسجيل الخروج", + "Register Driver": "تسجيل كابتن", + "Verify Email For Driver": "التحقق من بريد الكابتن الإلكتروني", + "Admin DashBoard": "لوحة تحكم المشرف", + "Your name": "اسمك", + "your ride is applied": "تم قبول رحلتك", + "H and": "س و", + "JOD": "دينار", + "m": "د", + "We search nearst Driver to you": "نبحث لك عن أقرب كابتن", + "please wait till driver accept your order": + "الرجاء الانتظار حتى يقبل الكابتن طلبك", + "No accepted orders? Try raising your trip fee to attract riders.": + "لا يوجد قبول للطلبات؟ حاول رفع أجرة رحلتك لجذب الكباتن.", + "You should select one": "يجب عليك اختيار واحد", + "The driver accept your order for": "الكابتن قبل طلبك مقابل", + "The driver on your way": "الكابتن في طريقه إليك", + "Total price from ": "السعر الإجمالي من ", + "Order Details Intaleq": "تفاصيل طلب انطلق", + "Selected file:": "الملف المختار:", + "Your trip cost is": "تكلفة رحلتك هي", + "this will delete all files from your device": + "سيؤدي هذا إلى حذف جميع الملفات من جهازك", + "Exclusive offers and discounts always with the Intaleq app": + "عروض وخصومات حصرية دائماً مع تطبيق انطلق", + "Submit Question": "إرسال سؤال", + "Please enter your Question.": "الرجاء إدخال سؤالك.", + "Help Details": "تفاصيل المساعدة", + "No trip yet found": "لم يتم العثور على رحلة بعد", + "No Response yet.": "لا يوجد رد بعد.", + " You Earn today is ": "أرباحك اليوم هي ", + " You Have in": " لديك في", + "Total points is ": "إجمالي النقاط: ", + "Total Connection Duration:": "إجمالي مدة الاتصال:", + "Passenger name : ": "اسم الراكب: ", + "Cost Of Trip IS ": "تكلفة الرحلة: ", + "Arrival time": "وقت الوصول", + "arrival time to reach your point": "وقت الوصول إلى وجهتك", + "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "لرحلات انطلق والسكوتر، يتم حساب السعر بشكل متغير. أما لرحلات الراحة، فيعتمد السعر على الوقت والمسافة.", + "Hello this is Driver": "مرحباً، معك الكابتن", + "Is the Passenger in your Car ?": "هل الراكب في سيارتك؟", + "Please wait for the passenger to enter the car before starting the trip.": + "الرجاء انتظار دخول الراكب إلى السيارة قبل بدء الرحلة.", + "No ,still Waiting.": "لا، ما زلت أنتظر.", + "I arrive you": "أنا وصلتك", + "I Arrive your site": "أنا وصلت لموقعك", + "You are not in near to passenger location": + "أنت لست قريباً من موقع الراكب", + "please go to picker location exactly": + "الرجاء الذهاب إلى موقع الانطلاق بدقة", + "You Can Cancel Trip And get Cost of Trip From": + "يمكنك إلغاء الرحلة والحصول على تكلفتها من", + "Are you sure to cancel?": "هل أنت متأكد من الإلغاء؟", + "Insert Emergincy Number": "إدخال رقم الطوارئ", + "Best choice for comfort car and flexible route and stops point": + "الخيار الأفضل لسيارة مريحة ومسار مرن ونقاط توقف", + "Insert": "إدخال", + "This is for scooter or a motorcycle.": + "هذا للسكوتر أو الدراجة النارية.", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "هذه الرحلة مباشرة من نقطة انطلاقك إلى وجهتك بسعر ثابت. يجب على الكابتن اتباع المسار المحدد.", + "You can decline a request without any cost": + "يمكنك رفض الطلب دون أي تكلفة", + "Perfect for adventure seekers who want to experience something new and exciting": + "مثالي لمحبي المغامرات الذين يرغبون في تجربة شيء جديد ومثير", + "My current location is:": "موقعي الحالي هو:", + "and I have a trip on": "ولدي رحلة على", + "App with Passenger": "التطبيق مع الراكب", + "You will be pay the cost to driver or we will get it from you on next trip": + "ستدفع التكلفة للكابتن أو سنحصل عليها منك في الرحلة القادمة", + "Trip has Steps": "الرحلة لها عدة وجهات", + "Distance from Passenger to destination is ": + "المسافة من الراكب للوجهة: ", + "price is": "السعر هو", + "This ride type does not allow changes to the destination or additional stops": + "هذا النوع من الرحلات لا يسمح بتغيير الوجهة أو إضافة نقاط توقف", + "This price may be changed": "قد يتغير هذا السعر", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "لا حاجة لبطاقة SIM! اتصل بالكابتن مباشرة عبر تطبيقنا. نستخدم تقنية متقدمة لضمان خصوصيتك.", + "This ride type allows changes, but the price may increase": + "هذا النوع من الرحلات يسمح بالتغييرات، ولكن قد يرتفع السعر", + "Select one message": "اختر رسالة واحدة", + "I'm waiting for you": "أنا بانتظارك", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "لاحظنا أن السرعة تجاوزت 100 كم/ساعة. الرجاء تخفيف السرعة من أجل سلامتك. إذا شعرت بعدم الأمان، يمكنك مشاركة تفاصيل رحلتك مع جهة اتصال أو الاتصال بالشرطة باستخدام زر الطوارئ الأحمر.", + "Warning: Intaleqing detected!": "تحذير: تم كشف سرعة زائدة!", + "Please help! Contact me as soon as possible.": + "الرجاء المساعدة! تواصل معي بأسرع وقت ممكن.", + "Share Trip Details": "مشاركة تفاصيل الرحلة", + "Car Plate is ": "رقم لوحة السيارة: ", + "the 300 points equal 300 L.E for you \nSo go and gain your money": + "300 نقطة تساوي 300 ليرة لك\nاذهب الآن واكسب أموالك", + "the 300 points equal 300 L.E": "300 نقطة تساوي 300 ليرة", + "The payment was not approved. Please try again.": + "لم تتم الموافقة على الدفع. الرجاء المحاولة مرة أخرى.", + "Payment Failed": "فشل الدفع", + "This is a scheduled notification.": "هذا إشعار مجدول.", + "An error occurred during the payment process.": + "حدث خطأ أثناء عملية الدفع.", + "The payment was approved.": "تمت الموافقة على الدفع.", + "Payment Successful": "تم الدفع بنجاح", + "No ride found yet": "لم يتم العثور على رحلة بعد", + "Accept Order": "قبول الطلب", + "Bottom Bar Example": "مثال للشريط السفلي", + "Driver phone": "رقم الكابتن", + "Statistics": "الإحصائيات", + "Origin": "نقطة الانطلاق", + "Destination": "الوجهة", + "Driver Name": "اسم الكابتن", + "Driver Car Plate": "رقم لوحة سيارة الكابتن", + "Available for rides": "متاح للرحلات", + "Scan Id": "مسح الهوية", + "Camera not initilaized yet": "لم يتم تفعيل الكاميرا بعد", + "Scan ID MklGoogle": "مسح هوية MklGoogle", + "Language": "اللغة", + "Jordan": "الأردن", + "USA": "الولايات المتحدة الأمريكية", + "Egypt": "مصر", + "Turkey": "تركيا", + "Saudi Arabia": "المملكة العربية السعودية", + "Qatar": "قطر", + "Bahrain": "البحرين", + "Kuwait": "الكويت", + "But you have a negative salary of": "لكن لديك رصيد سالب بقيمة", + "Promo Code": "رمز العرض", + "Your trip distance is": "مسافة رحلتك هي", + "Enter promo code": "أدخل رمز العرض", + "You have promo!": "لديك عرض!", + "Cost Duration": "تكلفة المدة", + "Duration is": "المدة هي", + "Leave": "مغادرة", + "Join": "انضمام", + "Heading your way now. Please be ready.": + "أنا في طريقي إليك الآن. يرجى الاستعداد.", + "Approaching your area. Should be there in 3 minutes.": + "أقترب من منطقتك. سأكون هناك خلال 3 دقائق.", + "There's heavy traffic here. Can you suggest an alternate pickup point?": + "هناك ازدحام مروري شديد. هل يمكنك اقتراح نقطة انطلاق بديلة؟", + "This ride is already taken by another driver.": + "هذه الرحلة قد أخذها كابتن آخر.", + "You Should be select reason.": "يجب عليك اختيار السبب.", + "Waiting for Driver ...": "بانتظار الكابتن...", + "Latest Recent Trip": "آخر رحلة حديثة", + "from your list": "من قائمتك", + "Do you want to change Work location": "هل تريد تغيير موقع العمل؟", + "Do you want to change Home location": "هل تريد تغيير موقع المنزل؟", + "We Are Sorry That we dont have cars in your Location!": + "نأسف لعدم توفر سيارات في موقعك!", + "Choose from Map": "اختر من الخريطة", + "Pick your ride location on the map - Tap to confirm": + "اختر موقع رحلتك على الخريطة - اضغط للتأكيد", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "انطلق هو تطبيق طلب السيارات الآمن، الموثوق، وفي متناول اليد.", + "With Intaleq, you can get a ride to your destination in minutes.": + "مع انطلق، يمكنك الوصول إلى وجهتك في دقائق.", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "تلتزم انطلق بالسلامة، وجميع كباتننا يتم فحصهم بعناية والتحقق من سجلاتهم.", + "Pick from map": "اختر من الخريطة", + "No Car in your site. Sorry!": "لا توجد سيارة في موقعك. نعتذر!", + "Nearest Car for you about ": "أقرب سيارة لك على بعد ", + "From :": "من:", + "Get Details of Trip": "الحصول على تفاصيل الرحلة", + "If you want add stop click here": + "إذا أردت إضافة نقطة توقف، اضغط هنا", + "Where you want go ": "إلى أين تريد الذهاب؟", + "My Card": "بطاقتي", + "Start Record": "بدء التسجيل", + "History of Trip": "سجل الرحلات", + "Helping Center": "مركز المساعدة", + "Record saved": "تم حفظ التسجيل", + "Trips recorded": "الرحلات المسجلة", + "Select Your Country": "اختر بلدك", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "لضمان حصولك على أدق المعلومات لموقعك، يرجى اختيار بلدك أدناه. سيساعد هذا في تخصيص تجربة التطبيق ومحتواه لبلدك.", + "Are you sure to delete recorded files": + "هل أنت متأكد من حذف الملفات المسجلة؟", + "Select recorded trip": "اختر رحلة مسجلة", + "Card Number": "رقم البطاقة", + "Hi, Where to ": "مرحباً، إلى أين؟", + "Pick your destination from Map": "اختر وجهتك من الخريطة", + "Add Stops": "إضافة نقاط توقف", + "Get Direction": "الحصول على الاتجاهات", + "Add Location": "إضافة موقع", + "Switch Rider": "تبديل الراكب", + "You will arrive to your destination after timer end.": + "ستصل إلى وجهتك بعد انتهاء المؤقت.", + "You can cancel trip": "يمكنك إلغاء الرحلة", + "The driver waitting you in picked location .": + "الكابتن بانتظارك في موقع الانطلاق.", + "Pay with Your": "ادفع باستخدام", + "Pay with Credit Card": "الدفع بالبطاقة الائتمانية", + "Show Promos to Charge": "عرض العروض للشحن", + "Point": "نقطة", + "How many hours would you like to wait?": "كم ساعة تود الانتظار؟", + "Driver Wallet": "محفظة الكابتن", + "Choose between those Type Cars": "اختر بين أنواع السيارات هذه", + "hour": "ساعة", + "Select Waiting Hours": "اختر ساعات الانتظار", + "Total Points is": "إجمالي النقاط", + "You will receive a code in SMS message": + "ستستلم رمزاً في رسالة نصية", + "Done": "تم", + "Total Budget from trips is ": "إجمالي الميزانية من الرحلات: ", + "Total Amount:": "المبلغ الإجمالي:", + "Total Budget from trips by\nCredit card is ": + "إجمالي الميزانية من الرحلات بالبطاقة الائتمانية: ", + "This amount for all trip I get from Passengers": + "هذا المبلغ هو لكل الرحلات التي أحصل عليها من الركاب", + "Pay from my budget": "ادفع من ميزانيتي", + "This amount for all trip I get from Passengers and Collected For me in": + "هذا المبلغ هو لكل الرحلات التي أحصل عليها من الركاب والمجمعة لي في", + "You can buy points from your budget": "يمكنك شراء نقاط من ميزانيتك", + "insert amount": "أدخل المبلغ", + "You can buy Points to let you online\nby this list below": + "يمكنك شراء نقاط لتكون متصلاً\nمن القائمة أدناه", + "Create Wallet to receive your money": "أنشئ محفظة لاستلام أموالك", + "Enter your feedback here": "أدخل تقييمك هنا", + "Please enter your feedback.": "الرجاء إدخال تقييمك.", + "Feedback": "تقييم", + "Submit ": "إرسال ", + "Click here to Show it in Map": "اضغط هنا لعرضه على الخريطة", + "Canceled": "تم الإلغاء", + "No I want": "لا أريد", + "Email is": "البريد الإلكتروني:", + "Phone Number is": "رقم الهاتف:", + "Date of Birth is": "تاريخ الميلاد:", + "Sex is ": "الجنس: ", + "Car Details": "تفاصيل السيارة", + "VIN is": "رقم الهيكل:", + "Color is ": "اللون: ", + "Make is ": "الشركة المصنعة: ", + "Model is": "الموديل:", + "Year is": "السنة:", + "Expiration Date ": "تاريخ الانتهاء: ", + "Edit Your data": "تعديل بياناتك", + "write vin for your car": "اكتب رقم هيكل سيارتك", + "VIN": "رقم الهيكل", + "Device Change Detected": "تم اكتشاف تغيير في الجهاز", + "Please verify your identity": "يرجى التحقق من هويتك", + "write Color for your car": "اكتب لون سيارتك", + "write Make for your car": "اكتب الشركة المصنعة لسيارتك", + "write Model for your car": "اكتب موديل سيارتك", + "write Year for your car": "اكتب سنة صنع سيارتك", + "write Expiration Date for your car": + "اكتب تاريخ انتهاء صلاحية سيارتك", + "Tariffs": "التعرفات", + "Minimum fare": "الحد الأدنى للأجرة", + "Maximum fare": "الحد الأقصى للأجرة", + "Flag-down fee": "رسوم بدء الرحلة", + "Including Tax": "شامل الضريبة", + "BookingFee": "رسوم الحجز", + "Morning": "صباحاً", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "من 7:30 صباحاً حتى 10:30 صباحاً (الخميس، الجمعة، السبت، الاثنين)", + "Evening": "مساءً", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "من 12:00 ظهراً حتى 3:00 عصراً (الخميس، الجمعة، السبت، الاثنين)", + "Night": "ليلاً", + "You have in account": "لديك في الحساب", + "Select Country": "اختر البلد", + "Ride Today : ": "رحلة اليوم: ", + "After this period\nYou can't cancel!": + "بعد هذه الفترة\nلا يمكنك الإلغاء!", + "from 23:59 till 05:30": "من 11:59 مساءً حتى 5:30 صباحاً", + "Rate Driver": "تقييم الكابتن", + "Total Cost is ": "التكلفة الإجمالية: ", + "Write note": "اكتب ملاحظة", + "Time to arrive": "وقت الوصول", + "Ride Summaries": "ملخصات الرحلات", + "Total Cost": "التكلفة الإجمالية", + "Average of Hours of": "متوسط ساعات", + " is ON for this month": " متصل لهذا الشهر", + "Days": "أيام", + "Total Hours on month": "إجمالي الساعات في الشهر", + "Counts of Hours on days": "عدد الساعات في الأيام", + "OrderId": "رقم الطلب", + "created time": "وقت الإنشاء", + "Intaleq Over": "انتهت رحلة انطلق", + "I will slow down": "سأخفف السرعة", + "Map Passenger": "خريطة الراكب", + "Be Slowly": "تمهل", + "If you want to make Google Map App run directly when you apply order": + "إذا أردت تشغيل خرائط جوجل مباشرة عند قبول الطلب", + "You can change the language of the app": "يمكنك تغيير لغة التطبيق", + "Your Budget less than needed": "رصيدك أقل من المطلوب", + "You can change the Country to get all features": + "يمكنك تغيير البلد للحصول على كل الميزات", + "Change Country": "تغيير البلد" + }, + "ar-eg": { + "EGP": "ج.م", + "Order": "طلب", + "OrderVIP": "طلب VIP", + "Cancel Trip": "إلغاء الرحلة", + "Passenger Cancel Trip": "الراكب لغى الرحلة", + "VIP Order": "طلب VIP", + "Hi ,I Arrive your site": "أهلاً، أنا وصلت مكانك", + "The driver accepted your trip": "الكابتن قبل رحلتك", + "message From passenger": "رسالة من الراكب", + "Cancel": "إلغاء", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "الرحلة اتلغت. تكلفة الرحلة هتضاف لمحفظتك.", + "token change": "تغيير التوكن", + "face detect": "كشف الوجه", + "Face Detection Result": "نتيجة كشف الوجه", + "similar": "مطابق", + "not similar": "غير مطابق", + "Hi ,I will go now": "أهلاً، أنا هتحرك دلوقتي", + "Passenger come to you": "الراكب جايلك", + "Call Income": "مكالمة واردة", + "Call Income from Passenger": "مكالمة واردة من الراكب", + "Criminal Document Required": "مطلوب الفيش والتشبيه", + "You should have upload it .": "لازم ترفع الملف ده.", + "Call End": "إنهاء المكالمة", + "The order has been accepted by another driver.": + "كابتن تاني قبل الطلب.", + "The order Accepted by another Driver": "الطلب اتقبل من كابتن تاني", + "We regret to inform you that another driver has accepted this order.": + "للأسف، كابتن تاني قبل الطلب ده.", + "Driver Applied the Ride for You": "الكابتن قدم الطلب ليك", + "Applied": "تم التقديم", + "Pay by Sham Cash": "دفع بـ كاش", + "Pay with Debit Card": "دفع ببطاقة الخصم", + "Please go to Car Driver": "يا ريت تروح للكابتن", + "Ok I will go now.": "تمام، أنا رايح دلوقتي.", + "Accepted Ride": "الرحلة اتقبلت", + "Driver Accepted the Ride for You": "الكابتن قبل الرحلة عشانك", + "Promo": "برومو كود", + "Show latest promo": "اظهر آخر العروض", + "Trip Monitoring": "متابعة الرحلة", + "Driver Is Going To Passenger": "الكابتن في الطريق ليك", + "Please stay on the picked point.": + "خليك واقف في النقطة اللي حددتها.", + "message From Driver": "رسالة من الكابتن", + "Trip is Begin": "الرحلة بدأت", + "Cancel Trip from driver": "إلغاء الرحلة من الكابتن", + "We will look for a new driver.\nPlease wait.": + "هنشوفلك كابتن تاني.\nثواني من فضلك.", + "The driver canceled your ride.": "الكابتن لغى رحلتك.", + "Driver Finish Trip": "الكابتن أنهى الرحلة", + "you will pay to Driver": "هتدفع للكابتن", + "Don’t forget your personal belongings.": + "اوعى تنسى متعلقاتك الشخصية.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "يا ريت تتأكد إن كل حاجتك معاك وإن أي باقي ليك اتضاف للمحفظة قبل ما تنزل. شكراً لاستخدامك انطلق.", + "Finish Monitor": "إنهاء المتابعة", + "Trip finished": "الرحلة خلصت", + "Call Income from Driver": "مكالمة من الكابتن", + "Driver Cancelled Your Trip": "الكابتن لغى رحلتك", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "هتدفع للكابتن تكلفة وقته، راجع محفظة انطلق بتاعتك", + "Order Applied": "تم تقديم الطلب", + "welcome to intaleq": "أهلاً بيك في انطلق", + "login or register subtitle": + "دخل رقم موبايلك للدخول أو لإنشاء حساب جديد", + "An application error occurred.": "حصل خطأ في التطبيق.", + "Submission Failed": "فشل الإرسال", + "Your complaint has been submitted.": "شكوتك وصلتنا.", + "Failed to connect to the server. Please try again.": + "في مشكلة في الاتصال بالسيرفر. جرب تاني.", + "Ride information not found. Please refresh the page.": + "معلومات الرحلة مش موجودة. اعمل تحديث للصفحة.", + "Please describe your issue before submitting.": + "يا ريت توصف المشكلة قبل ما تبعت.", + "An application error occurred during upload.": + "حصل خطأ أثناء الرفع.", + "Failed to upload audio file.": "فشل رفع الملف الصوتي.", + "Audio uploaded successfully.": "تم رفع الصوت بنجاح.", + "Complaint cannot be filed for this ride. It may not have been completed or started.": + "مينفعش تقدم شكوى للرحلة دي. ممكن تكون لسه مخلصتش أو مابدأتش.", + "2. Attach Recorded Audio (Optional)": "٢. ضيف تسجيل صوتي (اختياري)", + "Please enter a description of the issue.": "اكتب وصف للمشكلة.", + "phone number label": "رقم الموبايل", + "phone number required": "دخل رقم الموبايل", + "send otp button": "ابعت كود التحقق", + "verify your number title": "تأكيد رقمك", + "otp sent subtitle": "بعتنا كود من 5 أرقام لـ\n@phoneNumber", + "verify and continue button": "تأكيد ومتابعة", + "enter otp validation": "دخل كود التحقق المكون من 5 أرقام", + "one last step title": "آخر خطوة", + "complete profile subtitle": "كمل بياناتك عشان تبدأ", + "first name label": "الاسم الأول", + "first name required": "دخل الاسم الأول", + "last name label": "الاسم الأخير", + "Verify OTP": "تأكيد الكود", + "Verification Code": "كود التحقق", + "We have sent a verification code to your mobile number:": + "بعتنا كود التحقق على رقم موبايلك:", + "Verify": "تأكيد", + "Resend Code": "إعادة إرسال الكود", + "You can resend in": "ممكن تبعته تاني بعد", + "seconds": "ثانية", + "Error": "خطأ", + "Please enter the complete 6-digit code.": + "دخل الكود كامل (6 أرقام).", + "last name required": "دخل الاسم الأخير", + "email optional label": "الإيميل (اختياري)", + "complete registration button": "تمام التسجيل", + "User with this phone number or email already exists.": + "في حساب مسجل بنفس الرقم أو الإيميل ده.", + "otp sent success": "تم إرسال الكود على الواتساب.", + "failed to send otp": "فشل إرسال الكود.", + "server error try again": "خطأ في السيرفر، جرب تاني.", + "an error occurred": "حصل خطأ غير متوقع: @error", + "otp verification failed": "كود التحقق غلط.", + "registration failed": "التسجيل فشل.", + "welcome user": "أهلاً، @firstName!", + "Cancel Trip from driver": "إلغاء الرحلة من الكابتن", + "We will look for a new driver.\nPlease wait.": + "بنشوفلك كابتن تاني.\nثواني.", + "The driver canceled your ride.": "الكابتن لغى الرحلة.", + "Driver Finish Trip": "الكابتن خلص الرحلة", + "you will pay to Driver": "هتدفع للكابتن", + "Don't forget your personal belongings.": "متنساش متعلقاتك الشخصية.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "اتأكد إن كل حاجتك معاك وإن أي باقي اتضاف للمحفظة. شكراً لاختيارك انطلق.", + "Finish Monitor": "إنهاء المتابعة", + "Trip finished": "الرحلة انتهت", + "Call Income from Driver": "مكالمة من الكابتن", + "Driver Cancelled Your Trip": "الكابتن لغى رحلتك", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "هتدفع للكابتن تمن وقته، راجع محفظتك في انطلق", + "Order Applied": "تم تقديم الطلب", + "Share App": "شارك التطبيق", + "Wallet": "المحفظة", + "Balance": "الرصيد", + "Don’t forget your personal belongings.": "اوعى تنسى متعلقاتك.", + "Profile": "الملف الشخصي", + "Contact Support": "كلم الدعم", + "Session expired. Please log in again.": + "الجلسة انتهت. سجل دخول تاني.", + "Security Warning": "⚠️ تحذير أمني", + "Potential security risks detected. The application may not function correctly.": + "اكتشفنا مخاطر أمنية. التطبيق ممكن ميعملش صح.", + "please order now": "اطلب دلوقتي", + "Where to": "رايح فين؟", + "Where are you going?": "رايح فين؟", + "Quick Actions": "إجراءات سريعة", + "My Balance": "رصيدي", + "Order History": "سجل الطلبات", + "Contact Us": "تواصل معنا", + "Driver": "كابتن", + "Complaint": "شكوى", + "Promos": "العروض", + "Recent Places": "الأماكن الأخيرة", + "From": "من", + "WhatsApp Location Extractor": "استخراج الموقع من واتساب", + "Location Link": "رابط الموقع", + "Paste location link here": "حط رابط الموقع هنا", + "Go to this location": "روح للمكان ده", + "Paste WhatsApp location link": "الصق لوكيشن الواتساب", + "Select Order Type": "اختار نوع الطلب", + "Choose who this order is for": "الطلب ده لمين؟", + "I want to order for myself": "هطلب لنفسي", + "I want to order for someone else": "هطلب لحد تاني", + "Order for someone else": "اطلب لحد تاني", + "Order for myself": "اطلب لنفسي", + "Are you want to go this site": "عايز تروح المكان ده؟", + "No": "لأ", + "Pay by Sham Cash": "دفع كاش", + "Intaleq Wallet": "محفظة انطلق", + "Have a promo code?": "معاك برومو كود؟", + "Your Wallet balance is ": "رصيد محفظتك: ", + "Cash": "كاش", + "Phone Number": "رقم الموبايل", + "Search country": "دور على الدولة", + "Payment Successful!": "تم الدفع!", + "Your payment was successful.": "تم الدفع بنجاح.", + "Pay directly to the captain": "ادفع للكابتن علطول", + "Top up Wallet to continue": "اشحن المحفظة عشان تكمل", + "Or pay with Cash instead": "أو ادفع كاش بدل كده", + "Confirm & Find a Ride": "تأكيد وشوف رحلة", + "Balance:": "الرصيد:", + "Alerts": "تنبيهات", + "Welcome Back!": "نورتنا تاني!", + "Current Balance": "الرصيد الحالي", + "Set Wallet Phone Number": "حط رقم للمحفظة", + "Link a phone number for transfers": "اربط رقم موبايل للتحويلات", + "Payment History": "سجل المدفوعات", + "View your past transactions": "شوف معاملاتك اللي فاتت", + "Top up Wallet": "شحن المحفظة", + "Add funds using our secure methods": "ضيف رصيد بطرق آمنة", + "Driver is waiting": "الكابتن مستنيك", + "Type your message...": "اكتب رسالتك...", + "Driver Accepted Request": "الكابتن قبل الطلب", + "Message": "رسالة", + "Call": "اتصال", + "Set Phone Number": "حط رقم الموبايل", + "Select This Ride": "اختار الرحلة دي", + "Call Driver": "كلم الكابتن", + "Increase Fare": "زود الأجرة", + "Stop": "قف", + "Record": "سجل", + "Share": "شارك", + "WhatsApp": "واتساب", + "SOS": "طوارئ", + "No drivers accepted your request yet": "مفيش كباتن قبلوا طلبك لسه", + "Increasing the fare might attract more drivers. Would you like to increase the price?": + "لو زودت الأجرة ممكن تشجع الكباتن. تحب تزود السعر؟", + "Please make sure not to leave any personal belongings in the car.": + "اتأكد إنك منستش أي حاجة في العربية.", + "Cancel Ride": "إلغاء الرحلة", + "Route Not Found": "المسار مش موجود", + "We couldn't find a valid route to this destination. Please try selecting a different point.": + "مش لاقيين طريق للوجهة دي. جرب تختار نقطة تانية.", + "alert": "تنبيه", + "You can call or record audio during this trip.": + "تقدر تتصل أو تسجل صوت خلال الرحلة.", + "Warning: Speeding detected!": "تحذير: سرعة عالية!", + "Fixed Price": "سعر ثابت", + "Report": "إبلاغ", + "Comfort": "مريحة", + "Intaleq Balance": "رصيد انطلق", + "Search for a starting point": "دور على نقطة الانطلاق", + "Top up Balance to continue": "اشحن الرصيد عشان تكمل", + "Electric": "كهرباء", + "Lady": "للسيدات", + "Van": "عائلية (فان)", + "Rayeh Gai": "رايح جاي", + "Join Intaleq as a driver using my referral code!": + "انضم لـ 'انطلق' ككابتن واستخدم كود الدعوة بتاعي!", + "Use code:": "استخدم الكود:", + "Download the Intaleq Driver app now and earn rewards!": + "نزل تطبيق 'انطلق' للكباتن واكسب مكافآت!", + "Get a discount on your first Intaleq ride!": + "خد خصم على أول رحلة ليك مع انطلق!", + "Use my referral code:": "استخدم كود الدعوة بتاعي:", + "Download the Intaleq app now and enjoy your ride!": + "نزل أبلكيشن انطلق واستمتع بمشوارك!", + "Contacts Loaded": "تم تحميل الأسماء", + "Showing": "بيظهر", + "of": "من", + "Pay by MTN Wallet": "دفع بمحفظة كاش", + "Pay by Syriatel Wallet": "دفع بمحفظة كاش", + "Customer not found": "العميل مش موجود", + "Wallet is blocked": "المحفظة موقوفة", + "Customer phone is not active": "موبايل العميل مش شغال", + "Balance not enough": "الرصيد مش كفاية", + "Balance limit exceeded": "عديت حد الرصيد", + "Incorrect sms code": "⚠️ كود التحقق غلط. جرب تاني.", + "contacts. Others were hidden because they don't have a phone number.": + "اسم. الباقي مخفي عشان ملهوش أرقام.", + "No contacts found": "مفيش أسماء", + "No contacts with phone numbers were found on your device.": + "ملقيناش أسماء ليها أرقام على جهازك.", + "Permission denied": "مفيش إذن", + "Contact permission is required to pick contacts": + "محتاجين إذن الوصول للأسماء.", + "An error occurred while picking contacts:": + "حصل خطأ وإحنا بنختار الأسماء:", + "Please enter a correct phone": "دخل رقم موبايل صح", + "Success": "تمام", + "Invite sent successfully": "الدعوة اتبعتت بنجاح", + "Hello! I'm inviting you to try Intaleq.": + "أهلاً! بدعوك تجرب تطبيق انطلق.", + "Use my invitation code to get a special gift on your first ride!": + "استخدم كود الدعوة بتاعي عشان تاخد هدية في أول رحلة!", + "Your personal invitation code is:": "كود دعوتك هو:", + "Be sure to use it quickly! This code expires at": + "استخدمه بسرعة! الكود هينتهي في", + "Download the app now:": "نزل التطبيق دلوقتي:", + "See you on the road!": "نشوفك في المشوار!", + "This phone number has already been invited.": + "الرقم ده اتبعتتله دعوة قبل كده.", + "An unexpected error occurred. Please try again.": + "حصل خطأ غير متوقع. جرب تاني.", + "You deserve the gift": "تستاهل الهدية", + "Claim your 20 LE gift for inviting": + "اطلب هديتك (20 جنيه) عشان دعيت", + "You have got a gift for invitation": "جيلك هدية عشان الدعوة", + "You have earned 20": "كسبت 20", + "LE": "جنيه", + "Vibration feedback for all buttons": "هزة مع كل الأزرار", + "Share with friends and earn rewards": "شارك مع صحابك واكسب مكافآت", + "Gift Already Claimed": "خدت الهدية دي قبل كده", + "You have already received your gift for inviting": + "انت استلمت هدية الدعوة دي خلاص", + "Keep it up!": "كمل!", + "has completed": "كمّل", + "trips": "رحلات", + "Personal Information": "البيانات الشخصية", + "Name": "الاسم", + "Not set": "مش متحدد", + "Gender": "النوع", + "Education": "التعليم", + "Work & Contact": "العمل والتواصل", + "Employment Type": "نوع الشغل", + "Marital Status": "الحالة الاجتماعية", + "SOS Phone": "رقم الطوارئ", + "Sign Out": "خروج", + "Delete My Account": "امسح حسابي", + "Update Gender": "تحديث النوع", + "Update": "تحديث", + "Update Education": "تحديث التعليم", + "Are you sure? This action cannot be undone.": + "متأكد؟ مينفعش ترجع في الخطوة دي.", + "Confirm your Email": "أكد إيميلك", + "Type your Email": "اكتب إيميلك", + "Delete Permanently": "حذف نهائي", + "Male": "ذكر", + "Female": "أنثى", + "Other": "آخر", + "High School Diploma": "ثانوية عامة", + "Associate Degree": "دبلوم", + "Bachelor's Degree": "بكالوريوس / ليسانس", + "Master's Degree": "ماجستير", + "Doctoral Degree": "دكتوراه", + "Select your preferred language for the app interface.": + "اختار لغة التطبيق.", + "Language Options": "خيارات اللغة", + "You can claim your gift once they complete 2 trips.": + "تقدر تاخد هديتك لما يخلصوا رحلتين.", + "Closest & Cheapest": "الأقرب والأوفر", + "Comfort choice": "خيار الراحة", + "Travel in a modern, silent electric car. A premium, eco-friendly choice for a smooth ride.": + "سافر بعربية كهرباء حديثة وهادية. خيار مميز وصديق للبيئة لمشوار رايق.", + "Spacious van service ideal for families and groups. Comfortable, safe, and cost-effective travel together.": + "عربية فان واسعة للعيلات والمجموعات. سفر مريح وآمن وموفر.", + "Quiet & Eco-Friendly": "هادية وصديقة للبيئة", + "Lady Captain for girls": "كابتن سيدة للبنات", + "Van for familly": "فان للعيلة", + "Are you sure to delete this location?": + "متأكد إنك عايز تمسح المكان ده؟", + "Change Work location?": "تغيير مكان الشغل؟", + "Change Home location?": "تغيير مكان البيت؟", + "Submit a Complaint": "قدم شكوى", + "Submit Complaint": "إرسال الشكوى", + "No trip history found": "مفيش رحلات سابقة", + "Your past trips will appear here.": "رحلاتك اللي فاتت هتظهر هنا.", + "1. Describe Your Issue": "١. اوصف المشكلة", + "Enter your complaint here...": "اكتب شكوتك هنا...", + "2. Attach Recorded Audio": "٢. ضيف تسجيل صوتي", + "No audio files found.": "مفيش ملفات صوتية.", + "Confirm Attachment": "تأكيد الإرفاق", + "Attach this audio file?": "تبعت الملف الصوتي ده؟", + "Uploaded": "تم الرفع", + "3. Review Details & Response": "٣. مراجعة التفاصيل والرد", + "Date": "التاريخ", + "Today's Promos": "عروض النهاردة", + "No promos available right now.": "مفيش عروض دلوقتي.", + "Check back later for new offers!": + "شوف تاني بعدين عشان العروض الجديدة!", + "Valid Until:": "صالح لحد:", + "CODE": "الكود", + "Login": "دخول", + "Sign in for a seamless experience": "سجل دخولك لتجربة أسهل", + "Sign In with Google": "دخول بـ جوجل", + "Sign in with Apple": "دخول بـ أبل", + "User not found": "المستخدم مش موجود", + "Need assistance? Contact us": "محتاج مساعدة؟ كلمنا", + "Email": "الإيميل", + "Your email address": "عنوان بريدك الإلكتروني", + "Enter a valid email": "دخل إيميل صح", + "Password": "الباسورد", + "Your password": "كلمة السر بتاعتك", + "Enter your password": "دخل الباسورد", + "Submit": "إرسال", + "Terms of Use & Privacy Notice": "شروط الاستخدام والخصوصية", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the ": + "لما تختار \"أوافق\"، بتأكد إنك قريت ووافقت على ", + "Terms of Use": "شروط الاستخدام", + " and acknowledge the ": " وبتقر بـ ", + "Privacy Notice": "سياسة الخصوصية", + " . I am at least 18 years old.": " . وعمري 18 سنة على الأقل.", + "I Agree": "أوافق", + "Continue": "متابعة", + "Enable Location": "شغل اللوكيشن", + "To give you the best experience, we need to know where you are. Your location is used to find nearby captains and for pickups.": + "عشان نخدمك أحسن، محتاجين نعرف مكانك. اللوكيشن بيستخدم عشان نلاقي كباتن قريبين ليك.", + "Allow Location Access": "السماح بالوصول للموقع", + "Welcome to Intaleq!": "أهلاً بيك في انطلق!", + "Before we start, please review our terms.": + "قبل ما نبدأ، يا ريت تراجع شروطنا.", + "Your journey starts here": "مشوارك بيبدأ من هنا", + "Cancel Search": "إلغاء البحث", + "Set pickup location": "حدد مكان الركوب", + "Move the map to adjust the pin": "حرك الخريطة عشان تظبط الدبوس", + "Searching for the nearest captain...": "بندور على أقرب كابتن...", + "No one accepted? Try increasing the fare.": + "محدش قبل؟ جرب تزود الأجرة.", + "Increase Your Trip Fee (Optional)": "زود أجرة المشوار (اختياري)", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "مش لاقيين كباتن لسه. جرب تزود الأجرة عشان تشجع الكباتن يقبلوا.", + "No, thanks": "لأ، شكراً", + "Increase Fee": "زود الأجرة", + "Copy": "نسخ", + "Promo Copied!": "نسخت البرومو!", + "Code": "الكود", + "copied to clipboard": "تم النسخ", + "Price": "السعر", + "Intaleq's Response": "رد انطلق", + "Awaiting response...": "مستنيين الرد...", + "Audio file not attached": "الملف الصوتي ماترفقش", + "The audio file is not uploaded yet.\\nDo you want to submit without it?": + "الملف الصوتي لسه ماترفعش.\\nعايز تبعت من غيره؟", + "deleted": "اتمسح", + "To Work": "للشغل", + "Work Saved": "حفظنا مكان الشغل", + "To Home": "للبيت", + "Home Saved": "حفظنا مكان البيت", + "Destination selected": "اخترت الوجهة", + "Now select start pick": "دلوقتي حدد مكان الركوب", + "OK": "تمام", + "Confirm Pick-up Location": "أكد مكان الركوب", + "Set Location on Map": "حدد المكان على الخريطة", + "Leave a detailed comment (Optional)": "سيب تعليق بالتفصيل (اختياري)", + "Share your experience to help us improve...": + "شارك تجربتك عشان نتحسن...", + "Your valuable feedback helps us improve our service quality.": + "رأيك مهم عشان نحسن خدماتنا.", + "witout zero": "من غير صفر", + "Top up Balance": "شحن الرصيد", + "An error occurred": "حصل خطأ", + "Send WhatsApp Message": "ابعت رسالة واتساب", + "How was your trip with": "إيه أخبار رحلتك مع", + "Drawing route on map...": "بنرسم الطريق على الخريطة...", + "Please wait while we prepare your trip.": "لحظة بنجهزلك الرحلة.", + "Submit Rating": "ابعت التقييم", + "Call Support": "كلم الدعم", + "You can contact us during working hours from 10:00 - 16:00.": + "تقدر تكلمنا في مواعيد العمل من ١٠ ص لـ ٤ م.", + "Intaleq is the safest and most reliable ride-sharing app designed especially for passengers in Syria. We provide a comfortable, respectful, and affordable riding experience with features that prioritize your safety and convenience. Our trusted captains are verified, insured, and supported by regular car maintenance carried out by top engineers. We also offer on-road support services to make sure every trip is smooth and worry-free. With Intaleq, you enjoy quality, safety, and peace of mind—every time you ride.": + "انطلق هو أأمن تطبيق مشاوير مصمم مخصوص عشانك في مصر. بنوفرلك تجربة مريحة، محترمة، وبسعر على قد الإيد، مع مميزات بتهتم بسلامتك وراحتك. كل الكباتن عندنا متراجع ورقهم، وعربياتهم بتتصين بانتظام عشان نضمن الجودة. وكمان عندنا دعم على الطريق عشان نضمن إن كل مشوار يكون سلس ومن غير قلق. مع انطلق، هتستمتع بالجودة والأمان وراحة البال في كل مشوار.", + "Work time is from 10:00 AM to 16:00 PM.\nYou can send a WhatsApp message or email.": + "مواعيد العمل من ١٠ ص لـ ٤ م.\nممكن تبعت واتساب أو إيميل.", + "Sorry": "معلش", + "Customer MSISDN doesn’t have customer wallet": + "رقم العميل ملهوش محفظة", + "Please enter the number without the leading 0": + "دخل الرقم من غير الصفر اللي في الأول", + "Please enter your phone number": "دخل رقم موبايلك", + "Phone number seems too short": "رقم الموبايل شكله قصير", + "No cars are available at the moment. Please try again later.": + "مفيش عربيات متاحة دلوقتي. جرب تاني بعد شوية.", + "Nearest Car: ~": "أقرب عربية: ~", + "Nearest Car": "أقرب عربية", + "No cars nearby": "مفيش عربيات قريبة", + "Favorite Places": "الأماكن المفضلة", + "No favorite places yet!": "مفيش أماكن مفضلة لسه!", + "from your favorites": "من المفضلة", + "Back": "رجوع", + "Enter your code below to apply the discount.": + "دخل الكود تحت عشان تاخد الخصم.", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the": + "لما تختار \"أوافق\"، بتأكد إنك قريت ووافقت على", + "and acknowledge the": "وبتقر بـ", + "Enable Location Access": "شغل الوصول للموقع", + "We need your location to find nearby drivers for pickups and drop-offs.": + "محتاجين نعرف مكانك عشان نلاقي كباتن قريبين.", + "You should restart app to change language": + "لازم تعيد تشغيل التطبيق عشان اللغة تتغير", + "Home Page": "الرئيسية", + "To change Language the App": "عشان تغير لغة التطبيق", + "Learn more about our app and mission": "اعرف أكتر عننا", + "Promos For Today": "عروض النهاردة", + "Choose your ride": "اختار مشوارك", + "Your Journey Begins Here": "مشوارك بيبدأ هنا", + "Bonus gift": "هدية إضافية", + "Pay": "ادفع", + "Get": "احصل على", + "Send to Driver Again": "ابعت للكابتن تاني", + "Driver Name:": "اسم الكابتن:", + "No trip data available": "مفيش بيانات للرحلة", + "Car Plate:": "نمرة العربية:", + "remaining": "متبقي", + "Order Cancelled": "الطلب اتلغى", + "You canceled VIP trip": "أنت لغيت رحلة الـ VIP", + "Passenger cancelled order": "الراكب لغى الطلب", + "Your trip is scheduled": "رحلتك اتجدولت", + "Don't forget your ride!": "متنساش مشوارك!", + "Trip updated successfully": "الرحلة اتحدثت بنجاح", + "Car Make:": "نوع العربية:", + "Car Model:": "موديل العربية:", + "Car Color:": "لون العربية:", + "Driver Phone:": "رقم الكابتن:", + "Pre-booking": "حجز مسبق", + "Waiting VIP": "انتظار VIP", + "Driver List": "قائمة الكباتن", + "Confirm Trip": "تأكيد الرحلة", + "Select date and time of trip": "حدد تاريخ ووقت الرحلة", + "Date and Time Picker": "اختار الوقت والتاريخ", + "Trip Status:": "حالة الرحلة:", + "pending": "انتظار", + "accepted": "مقبولة", + "rejected": "مرفوضة", + "Apply": "تطبيق", + "Enter your promo code": "دخل البرومو كود", + "Apply Promo Code": "طبق الكود", + "Scheduled Time:": "الوقت المتحدد:", + "No drivers available": "مفيش كباتن متاحين", + "No drivers available at the moment. Please try again later.": + "مفيش كباتن دلوقتي. جرب تاني بعد شوية.", + "you have a negative balance of": "عندك رصيد بالسالب بقيمة", + "Please try again in a few moments": "جرب تاني بعد لحظات", + "Unknown Driver": "كابتن غير معروف", + "in your": "في محفظتك", + "The driver accepted your order for": "الكابتن قبل طلبك بـ", + "wallet due to a previous trip.": "من المحفظة عشان رحلة قديمة.", + "rides": "مشاوير", + "Add Work": "ضيف الشغل", + "The reason is": "السبب هو", + "User does not have a wallet #1652": "المستخدم ملهوش محفظة #1652", + "Price of trip": "سعر الرحلة", + "From:": "من:", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "لرحلات انطلق والتوصيل، السعر بيتحسب أوتوماتيك. لرحلات الراحة، السعر حسب الوقت والمسافة.", + "Phone Wallet Saved Successfully": "تم حفظ رقم المحفظة", + "Add wallet phone you use": "ضيف رقم المحفظة اللي بتستخدمه", + "Update Available": "في تحديث جديد", + "Phone number must be exactly 11 digits long": + "رقم الموبايل لازم يكون ١١ رقم", + "Insert Wallet phone number": "دخل رقم المحفظة", + "Phone number isn't an Egyptian phone number": "الرقم ده مش مصري", + "A new version of the app is available. Please update to the latest version.": + "في نسخة جديدة من التطبيق. يا ريت تحدث لآخر إصدار.", + "We use location to get accurate and nearest passengers for you": + "بنستخدم اللوكيشن عشان نجيبلك أقرب ركاب بدقة", + "This ride is already applied by another driver.": + "الرحلة دي أخدها كابتن تاني.", + "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": + "بنستخدم مكانك الدقيق عشان نلاقي أقرب كابتن ونحدد نقط الركوب والنزول بدقة. تقدر تظبط ده من الإعدادات.", + "Where are you, sir?": "أنت فين يا فندم؟", + "I've been trying to reach you but your phone is off.": + "بحاول أكلمك بس تليفونك مقفول.", + "Please don't be late": "من فضلك متتأخرش", + "Please don't be late, I'm waiting for you at the specified location.": + "يا ريت متتأخرش، أنا مستنيك في المكان المحدد.", + "My location is correct. You can search for me using the navigation app": + "موقعي صح. ممكن تدور عليا بالـ GPS", + "Hello, I'm at the agreed-upon location": + "أهلاً، أنا في المكان المتفق عليه", + "How much longer will you be?": "قدامك وقت قد إيه؟", + "Phone number is verified before": "الرقم ده متأكد قبل كده", + "Change Ride": "غير الرحلة", + "You can change the destination by long-pressing any point on the map": + "ممكن تغير الوجهة بالضغط الطويل على أي نقطة في الخريطة", + "Pick from map destination": "اختار الوجهة من الخريطة", + "Pick or Tap to confirm": "اختار أو اضغط للتأكيد", + "Accepted your order": "قبل طلبك", + "Order Accepted": "الطلب اتقبل", + "with type": "من نوع", + "accepted your order at price": "وافق على طلبك بسعر", + "you canceled order": "لغيت الطلب", + "If you want order to another person": "لو عايز تطلب لحد تاني", + "upgrade price": "علي السعر", + "airport": "المطار", + "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": + "أحسن اختيار لعربية مريحة مع خط سير مرن ووقوف متكرر.", + "You can upgrade price to may driver accept your order": + "ممكن تعلي السعر عشان الكابتن يقبل", + "Change Route": "غير الطريق", + "No Captain Accepted Your Order": "محدش قبل طلبك", + "We are looking for a captain but the price may increase to let a captain accept": + "بندور على كابتن بس ممكن السعر يزيد عشان حد يقبل", + "No, I want to cancel this trip": "لأ، عايز ألغي الرحلة", + "Attention": "انتباه", + "Trip Cancelled. The cost of the trip will be deducted from your wallet.": + "الرحلة اتلغت. وتكلفتها هتتخصم من محفظتك.", + "You will be charged for the cost of the driver coming to your location.": + "هتتحاسب على تكلفة مشوار الكابتن ليك.", + "reject your order.": "رفض طلبك.", + "Order Under Review": "الطلب بيتراجع", + "is reviewing your order. They may need more information or a higher price.": + "بيراجع طلبك. ممكن يحتاج معلومات أكتر أو سعر أعلى.", + "Vibration": "اهتزاز", + "Resend code": "ابعت الكود تاني", + "change device": "تغيير الجهاز", + "Device Change Detected": "تم تغيير الجهاز", + "You can only use one device at a time. This device will now be set as your active device.": + "ممكن تستخدم جهاز واحد بس. الجهاز ده بقى هو الأساسي دلوقتي.", + "Click here point": "دوس هنا", + "Are you want to change": "عايز تغير؟", + "by": "بواسطة", + "Enter your complaint here": "اكتب شكوتك هنا", + "Please enter your complaint.": "اكتب الشكوى من فضلك.", + "Complaint data saved successfully": "الشكوى اتحفظت", + "Trip Monitor": "مراقبة الرحلة", + "Insert SOS Phone": "دخل رقم الطوارئ", + "Add SOS Phone": "ضيف رقم الطوارئ", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "عزيزي،\n\n🚀 أنا بدأت رحلة وحابب أشاركك تفاصيلها ومكاني الحالي لحظة بلحظة! نزل تطبيق انطلق عشان تتابعني.\n\n👈 رابط التحميل:\nأندرويد [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\nآيفون [https://getapp.cc/app/6458734951]\n\nخليك متابعني!\n\nانطلق،", + "Send Intaleq app to him": "ابعتله تطبيق انطلق", + "No passenger found for the given phone number": + "مفيش راكب بالرقم ده", + "No user found for the given phone number": "مفيش مستخدم بالرقم ده", + "This price is": "السعر ده", + "Work": "الشغل", + "Add Home": "ضيف البيت", + "Notifications": "الإشعارات", + "💳 Pay with Credit Card": "💳 دفع بالفيزا", + "⚠️ You need to choose an amount!": "⚠️ لازم تختار مبلغ!", + "💰 Pay with Wallet": "💰 دفع بالمحفظة", + "You must restart the app to change the language.": + "لازم تعيد تشغيل التطبيق لتغيير اللغة.", + "joined": "انضم", + "Driver joined the channel": "الكابتن دخل الشات", + "Driver left the channel": "الكابتن خرج من الشات", + "Call Page": "صفحة الاتصال", + "Call Left": "مكالمات باقية", + " Next as Cash !": " اللي جاي كاش!", + "To use Wallet charge it": "عشان تستخدم المحفظة اشحنها", + "We are searching for the nearest driver to you": + "بندورلك على أقرب كابتن", + "Best choice for cities": "أحسن اختيار للمدن", + "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": + "رايح جاي: خدمة سفر مريحة بين المحافظات.", + "This trip is for women only": "الرحلة دي للسيدات فقط", + "Total budgets on month": "إجمالي ميزانية الشهر", + "You have call from driver": "مكالمة من الكابتن", + "Intaleq": "انطلق", + "passenger agreement": "اتفاقية الراكب", + "To become a passenger, you must review and agree to the ": + "عشان تبقى راكب، لازم تراجع وتوافق على ", + "agreement subtitle": "للمتابعة، لازم توافق على الشروط والخصوصية.", + "terms of use": "شروط الاستخدام", + " and acknowledge our Privacy Policy.": " وتقر بسياسة الخصوصية.", + "and acknowledge our": "وتقر بـ", + "privacy policy": "سياسة الخصوصية.", + "i agree": "موافق", + "Driver already has 2 trips within the specified period.": + "الكابتن عنده رحلتين في الوقت ده.", + "The invitation was sent successfully": "الدعوة اتبعتت", + "You should select your country": "اختار بلدك", + "Scooter": "سكوتر", + "A trip with a prior reservation, allowing you to choose the best captains and cars.": + "رحلة بحجز مسبق، اختار أحسن الكباتن والعربيات.", + "Mishwar Vip": "مشوار VIP", + "The driver waiting you in picked location .": + "الكابتن مستنيك في مكان الركوب.", + "About Us": "عننا", + "You can change the vibration feedback for all buttons": + "ممكن تغير الهزاز للأزرار", + "Most Secure Methods": "أأمن الطرق", + "In-App VOIP Calls": "مكالمات صوتية جوا التطبيق", + "Recorded Trips for Safety": "رحلات مسجلة للأمان", + "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": + "\nوكمان بنهتم بالأسعار، بنقدم أسعار تنافسية عشان تناسب الكل.", + "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": + "انطلق تطبيق مشاوير مصمم عشان أمانك وميزانيتك. بنوصلك بكباتن موثوقين في منطقتك، لتجربة مريحة.\n\nدي شوية مميزات بتميزنا:", + "Sign In by Apple": "دخول بـ أبل", + "Sign In by Google": "دخول بـ جوجل", + "How do I request a ride?": "ازاي أطلب رحلة؟", + "Step-by-step instructions on how to request a ride through the Intaleq app.": + "خطوات طلب رحلة عن طريق أبلكيشن انطلق.", + "What types of vehicles are available?": + "إيه أنواع العربيات المتاحة؟", + "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": + "انطلق بيوفر عربيات كتير تناسبك، زي الاقتصادية والمريحة والفاخرة. اختار اللي يناسب ميزانيتك.", + "How can I pay for my ride?": "ادفع ازاي؟", + "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": + "انطلق بيوفر طرق دفع كتير. اختار بين الكاش أو الفيزا وأنت بتأكد الرحلة.", + "Can I cancel my ride?": "ممكن ألغي الرحلة؟", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "أيوه، ممكن تلغي، بس خد بالك ممكن يكون في رسوم إلغاء حسب التوقيت.", + "Driver Registration & Requirements": "تسجيل الكباتن والشروط", + "How can I register as a driver?": "ازاي أسجل كابتن؟", + "What are the requirements to become a driver?": + "إيه شروط الانضمام ككابتن؟", + "Visit our website or contact Intaleq support for information on driver registration and requirements.": + "زور موقعنا أو كلم دعم انطلق عشان تعرف تفاصيل التسجيل.", + "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": + "انطلق بيوفر شات جوا التطبيق عشان تتكلم مع الكابتن أو الراكب.", + "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": + "أمانك أهم حاجة عندنا. بنقدم مميزات زي التحقق من الكابتن، وتتبع الرحلة، وأرقام الطوارئ.", + "Frequently Questions": "أسئلة شائعة", + "User does not exist.": "المستخدم مش موجود.", + "We need your phone number to contact you and to help you.": + "محتاجين رقمك عشان نتواصل معاك ونساعدك.", + "You will recieve code in sms message": "هيجيلك كود في رسالة", + "Please enter": "من فضلك دخل", + "We need your phone number to contact you and to help you receive orders.": + "محتاجين رقمك عشان نساعدك تستقبل طلبات.", + "The full name on your criminal record does not match the one on your driver's license. Please verify and provide the correct documents.": + "الاسم في الفيش مش مطابق للاسم في الرخصة. راجع الورق تاني.", + "The national number on your driver's license does not match the one on your ID document. Please verify and provide the correct documents.": + "الرقم القومي في الرخصة مش زي اللي في البطاقة. راجع الورق تاني.", + "Capture an Image of Your Criminal Record": "صور الفيش والتشبيه", + "IssueDate": "تاريخ الإصدار", + "Capture an Image of Your car license front": "صور وش رخصة العربية", + "Capture an Image of Your ID Document front": "صور وش البطاقة", + "NationalID": "الرقم القومي", + "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": + "شارك انطلق مع صحابك واكسب مكافآت لما يستخدموا الكود بتاعك.", + "FullName": "الاسم بالكامل", + "No invitation found yet!": "مفيش دعوات لسه!", + "InspectionResult": "نتيجة الفحص", + "Criminal Record": "الفيش والتشبيه", + "The email or phone number is already registered.": + "الإيميل أو الرقم ده متسجل قبل كده.", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "عشان تشتغل كابتن في انطلق، لازم ترفع رخصتك، وبطاقتك، ورخصة العربية. السيستم هيراجعهم في دقيقتين تلاتة. لو اتقبلوا، تقدر تبدأ شغل علطول. تزوير الورق هيعرضك للمساءلة القانونية وقفل الحساب.", + "Documents check": "فحص الورق", + "Driver's License": "رخصة القيادة", + "for your first registration!": "عشان أول تسجيل ليك!", + "Get it Now!": "خدها دلوقتي!", + "before": "قبل", + "Code not approved": "الكود مش مقبول", + "3000 LE": "3000 جنيه", + "Do you have an invitation code from another driver?": + "معاك كود دعوة من كابتن تاني؟", + "Paste the code here": "حط الكود هنا", + "No, I don't have a code": "لأ، معيش كود", + "Code approved": "الكود اتقبل", + "Install our app:": "نزل تطبيقنا:", + "Invite another driver and both get a gift after he completes 100 trips!": + "ادعي كابتن تاني وانتوا الاتنين تكسبوا هدية لما يخلص 100 رحلة!", + "Invite": "دعوة", + "Are you sure?": "أنت متأكد؟", + "This will delete all recorded files from your device.": + "ده هيمسح كل الملفات المتسجلة من جهازك.", + "Select a file": "اختار ملف", + "Select a File": "اختار ملف", + "Delete": "حذف", + "attach audio of complain": "ارفق صوت للشكوى", + "Phone Number Check": "فحص رقم الموبايل", + "Drivers received orders": "الكباتن استلموا الطلبات", + "No audio files recorded.": "مفيش تسجيلات.", + "This is for delivery or a motorcycle.": "ده للتوصيل أو الموتوسيكل.", + "Intaleq Reminder": "تذكير انطلق", + "It's time to check the Intaleq app!": "وقت تفقد تطبيق انطلق!", + "you must insert token code": "لازم تدخل الكود", + "Something went wrong. Please try again.": "حصلت مشكلة. جرب تاني.", + "Trip Details": "تفاصيل الرحلة", + "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": + "مفيش تفاصيل كفاية عن الشكوى. يا ريت توضح أكتر عشان نقدر نساعدك.", + "Submit Your Complaint": "قدم شكوتك", + "Status": "الحالة", + "Choose from contact": "اختار من الأسماء", + "attach correct audio": "ارفق صوت صح", + "be sure": "اتأكد", + "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": + "مثالي للي بيدور على أحدث عربيات مع حرية اختيار الطريق", + "Share this code with your friends and earn rewards when they use it!": + "شارك الكود مع صحابك واكسب لما يستخدموه!", + "Enter phone": "دخل الرقم", + "complete, you can claim your gift": "اكتمل، تقدر تاخد هديتك", + "When": "لما", + "Enter driver's phone": "دخل رقم الكابتن", + "Send Invite": "ابعت دعوة", + "Show Invitations": "اظهر الدعوات", + "License Type": "نوع الرخصة", + "National Number": "الرقم القومي", + "Name (Arabic)": "الاسم (عربي)", + "Name (English)": "الاسم (إنجليزي)", + "Address": "العنوان", + "Issue Date": "تاريخ الإصدار", + "Expiry Date": "تاريخ الانتهاء", + "License Categories": "فئات الرخصة", + "driver_license": "رخصة القيادة", + "Capture an Image of Your Driver License": "صور رخصتك", + "ID Documents Back": "ظهر البطاقة", + "National ID": "الرقم القومي", + "Occupation": "الوظيفة", + "Religion": "الديانة", + "Full Name (Marital)": "الاسم بالكامل", + "Expiration Date": "تاريخ الانتهاء", + "Capture an Image of Your ID Document Back": "صور ظهر البطاقة", + "ID Documents Front": "وش البطاقة", + "First Name": "الاسم الأول", + "CardID": "رقم البطاقة", + "Vehicle Details Front": "تفاصيل العربية (أمام)", + "Plate Number": "رقم اللوحة", + "Owner Name": "اسم المالك", + "Vehicle Details Back": "تفاصيل العربية (خلف)", + "Make": "الماركة", + "Model": "الموديل", + "Year": "السنة", + "Chassis": "رقم الشاسيه", + "Color": "اللون", + "Displacement": "السعة اللترية", + "Fuel": "بنزين/غاز", + "Tax Expiry Date": "انتهاء الضريبة", + "Inspection Date": "تاريخ الفحص", + "Capture an Image of Your car license back": "صور ظهر رخصة العربية", + "Capture an Image of Your Driver's License": "صور رخصة القيادة", + "Sign in with Google for easier email and name entry": + "ادخل بجوجل عشان أسهل", + "You will choose allow all the time to be ready receive orders": + "اختار 'السماح طوال الوقت' عشان تستقبل طلبات", + "Get to your destination quickly and easily.": + "وصل لوجهتك بسرعة وسهولة.", + "Enjoy a safe and comfortable ride.": "استمتع بمشوار آمن ومريح.", + "Choose Language": "اختار اللغة", + "Pay with Wallet": "دفع بالمحفظة", + "Invalid MPIN": "رمز MPIN غلط", + "Invalid OTP": "كود التحقق غلط", + "Enter your email address": "دخل إيميلك", + "Please enter Your Email.": "من فضلك دخل الإيميل.", + "Enter your phone number": "دخل رقمك", + "Please enter your phone number.": "دخل رقم موبايلك.", + "Please enter Your Password.": "دخل الباسورد.", + "if you dont have account": "لو معندكش حساب", + "Register": "تسجيل", + "Accept Ride's Terms & Review Privacy Notice": + "قبول الشروط والخصوصية", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "لما تختار 'أوافق'، بتأكد إنك وافقت على الشروط والخصوصية، وإن سنك ١٨ سنة أو أكتر.", + "First name": "الاسم الأول", + "Enter your first name": "دخل اسمك الأول", + "Please enter your first name.": "الاسم الأول مطلوب.", + "Last name": "الاسم الأخير", + "Enter your last name": "دخل اسمك الأخير", + "Please enter your last name.": "الاسم الأخير مطلوب.", + "City": "المدينة", + "Please enter your City.": "دخل مدينتك.", + "Verify Email": "تأكيد الإيميل", + "We sent 5 digit to your Email provided": "بعتنا ٥ أرقام لإيميلك", + "5 digit": "٥ أرقام", + "Send Verification Code": "ابعت كود التحقق", + "Your Ride Duration is ": "مدة المشوار: ", + "You will be thier in": "هتوصل خلال", + "You trip distance is": "مسافة المشوار:", + "Fee is": "الأجرة:", + "From : ": "من: ", + "To : ": "إلى: ", + "Add Promo": "ضيف برومو", + "Confirm Selection": "تأكيد الاختيار", + "distance is": "المسافة:", + "Privacy Policy": "سياسة الخصوصية", + "Intaleq LLC": "شركة انطلق", + "Syria's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "خدمة مشاركة الرحلات الرائدة في مصر، اتطورت بأيادي عربية ومحلية. أولويتنا نكون جنبك، ركابنا وكباتننا.", + "Intaleq is the first ride-sharing app in Syria, designed to connect you with the nearest drivers for a quick and convenient travel experience.": + "انطلق هو تطبيق المشاوير اللي بيوصلك بأقرب كباتن لتجربة سريعة ومريحة.", + "Why Choose Intaleq?": "ليه تختار انطلق؟", + "Closest to You": "الأقرب ليك", + "We connect you with the nearest drivers for faster pickups and quicker journeys.": + "بنوصلك بأقرب كباتن عشان منضيعش وقتك.", + "Uncompromising Security": "أمان تام", + "Lady Captains Available": "كباتن سيدات", + "Recorded Trips (Voice & AI Analysis)": + "رحلات مسجلة (تحليل صوتي وذكاء اصطناعي)", + "Fastest Complaint Response": "أسرع استجابة للشكاوى", + "Our dedicated customer service team ensures swift resolution of any issues.": + "فريق خدمة العملاء جاهز يحل أي مشكلة بسرعة.", + "Affordable for Everyone": "أسعار تناسب الكل", + "Frequently Asked Questions": "الأسئلة المتكررة", + "Getting Started": "ابدأ", + "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": + "افتح انطلق، حط واجهتك، ودوس \"اطلب رحلة\". التطبيق هيوصلك بأقرب كابتن.", + "Vehicle Options": "خيارات العربيات", + "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": + "انطلق بيقدملك خيارات كتير (اقتصادي، مريح، فاخر) عشان تناسبك.", + "Payments": "الدفع", + "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": + "تقدر تدفع كاش أو فيزا. اختار الطريقة اللي تريحك قبل ما تأكد الطلب.", + "Ride Management": "إدارة الرحلات", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "ممكن تلغي الرحلة، بس ممكن يتخصم رسوم لو لغيت متأخر.", + "For Drivers": "للكباتن", + "Driver Registration": "تسجيل الكابتن", + "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": + "للتسجيل ككابتن أو معرفة الشروط، زور موقعنا أو كلم الدعم.", + "Visit Website/Contact Support": "زور الموقع / كلم الدعم", + "Close": "قفل", + "We are searching for the nearest driver": "بندور على أقرب كابتن", + "Communication": "التواصل", + "How do I communicate with the other party (passenger/driver)?": + "ازاي أتواصل مع الطرف التاني؟", + "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": + "تقدر تتكلم شات مع الكابتن أو الراكب بعد تأكيد الرحلة.", + "Safety & Security": "الأمان", + "What safety measures does Intaleq offer?": + "إيه إجراءات الأمان في انطلق؟", + "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": + "انطلق بيقدم مميزات أمان زي التحقق من الكابتن، تتبع الرحلة، أرقام الطوارئ، ومشاركة تفاصيل الرحلة.", + "Enjoy competitive prices across all trip options, making travel accessible.": + "استمتع بأسعار تنافسية لكل الرحلات.", + "Variety of Trip Choices": "خيارات كتير للرحلة", + "Choose the trip option that perfectly suits your needs and preferences.": + "اختار الرحلة اللي تريحك.", + "Your Choice, Our Priority": "اختيارك يهمنا", + "Because we are near, you have the flexibility to choose the ride that works best for you.": + "عشان إحنا قريبين، عندك مرونة تختار اللي يناسبك.", + "duration is": "المدة:", + "Setting": "الإعدادات", + "Find answers to common questions": "لاقي إجابات لأسئلتك", + "I don't need a ride anymore": "مش محتاج رحلة خلاص", + "I was just trying the application": "بجرب التطبيق بس", + "No driver accepted my request": "مفيش كابتن قبل طلبي", + "I added the wrong pick-up/drop-off location": "حطيت مكان غلط", + "I don't have a reason": "مفيش سبب", + "Can we know why you want to cancel Ride ?": + "ممكن نعرف ليه عايز تلغي؟", + "Add Payment Method": "ضيف طريقة دفع", + "Ride Wallet": "محفظة الرحلة", + "Payment Method": "طريقة الدفع", + "Type here Place": "اكتب المكان هنا", + "Are You sure to ride to": "متأكد إنك رايح لـ", + "Confirm": "تأكيد", + "You are Delete": "أنت بتمسح", + "Deleted": "اتمسح", + "You Dont Have Any places yet !": "معندكش أماكن لسه!", + "From : Current Location": "من: مكاني الحالي", + "My Cared": "كروتي", + "Add Card": "ضيف كارت", + "Add Credit Card": "ضيف فيزا", + "Please enter the cardholder name": "دخل اسم صاحب الكارت", + "Please enter the expiry date": "دخل تاريخ الانتهاء", + "Please enter the CVV code": "دخل كود الـ CVV", + "Go To Favorite Places": "روح للأماكن المفضلة", + "Go to this Target": "روح للوجهة دي", + "My Profile": "بروفايلي", + "Are you want to go to this site": "عايز تروح المكان ده؟", + "MyLocation": "موقعي", + "my location": "موقعي", + "Target": "الهدف", + "You Should choose rate figure": "لازم تختار تقييم", + "Login Captin": "دخول الكابتن", + "Register Captin": "تسجيل كابتن", + "Send Verfication Code": "ابعت كود التحقق", + "KM": "كم", + "End Ride": "إنهاء الرحلة", + "Minute": "دقيقة", + "Go to passenger Location now": "روح لمكان الراكب دلوقتي", + "Duration of the Ride is ": "مدة الرحلة ", + "Distance of the Ride is ": "مسافة الرحلة ", + "Name of the Passenger is ": "اسم الراكب ", + "Hello this is Captain": "أهلاً، أنا الكابتن", + "Start the Ride": "ابدأ الرحلة", + "Please Wait If passenger want To Cancel!": + "استنى لو الراكب عايز يلغي!", + "Total Duration:": "المدة الكلية:", + "Active Duration:": "المدة الفعلية:", + "Waiting for Captin ...": "مستني الكابتن...", + "Age is ": "السن: ", + "Rating is ": "التقييم: ", + " to arrive you.": "عشان يوصلك.", + "Tariff": "التعريفة", + "Settings": "الإعدادات", + "Feed Back": "رأيك", + "Please enter a valid 16-digit card number": + "دخل رقم الكارت (١٦ رقم)", + "Add Phone": "ضيف رقم", + "You dont Add Emergency Phone Yet!": "مضفتش رقم طوارئ لسه!", + "You will arrive to your destination after ": "هتوصل بعد ", + "You can cancel Ride now": "تقدر تلغي الرحلة دلوقتي", + "You Can cancel Ride After Captain did not come in the time": + "تقدر تلغي لو الكابتن مجاش في ميعاده", + "If you in Car Now. Press Start The Ride": + "لو أنت في العربية، دوس ابدأ الرحلة", + "You Dont Have Any amount in": "معندكش رصيد في", + "Wallet!": "المحفظة!", + "You Have": "معاك", + "Save Credit Card": "حفظ الفيزا", + "Show Promos": "اظهر العروض", + "10 and get 4% discount": "١٠ وخد خصم ٤٪", + "20 and get 6% discount": "٢٠ وخد خصم ٦٪", + "40 and get 8% discount": "٤٠ وخد خصم ٨٪", + "100 and get 11% discount": "١٠٠ وخد خصم ١١٪", + "Pay with Your PayPal": "ادفع بـ PayPal", + "You will choose one of above !": "اختار واحد من اللي فوق!", + "Edit Profile": "تعديل الملف", + "Copy this Promo to use it in your Ride!": "انسخ البرومو واستخدمه!", + "To change some Settings": "لتغيير الإعدادات", + "Order Request Page": "صفحة الطلب", + "Rouats of Trip": "مسارات الرحلة", + "Passenger Name is ": "اسم الراكب: ", + "Total From Passenger is ": "المطلوب من الراكب: ", + "Duration To Passenger is ": "الوقت للوصول للراكب: ", + "Distance To Passenger is ": "المسافة للوصول للراكب: ", + "Total For You is ": "الإجمالي ليك: ", + "Distance is ": "المسافة: ", + " KM": " كم", + "Duration of Trip is ": "مدة الرحلة: ", + " Minutes": " دقائق", + "Apply Order": "اقبل الطلب", + "Refuse Order": "ارفض الطلب", + "Rate Captain": "قيم الكابتن", + "Enter your Note": "اكتب ملاحظة", + "Type something...": "اكتب حاجة...", + "Submit rating": "ابعت التقييم", + "Rate Passenger": "قيم الراكب", + "Ride Summary": "ملخص الرحلة", + "welcome_message": "أهلاً بيك في انطلق!", + "app_description": "انطلق تطبيق مشاوير أمين وموثوق.", + "get_to_destination": "وصل لوجهتك بسرعة.", + "get_a_ride": "مع انطلق، هتوصل في دقايق.", + "safe_and_comfortable": "استمتع برحلة آمنة ومريحة.", + "committed_to_safety": "بنهتم بسلامتك، وكل الكباتن متراجعين كويس.", + "your ride is Accepted": "رحلتك اتقبلت", + "Driver is waiting at pickup.": "الكابتن مستنيك.", + "Driver is on the way": "الكابتن في الطريق", + "Contact Options": "خيارات التواصل", + "Send a custom message": "ابعت رسالة", + "Type your message": "اكتب رسالتك", + "I will go now": "أنا هتحرك دلوقتي", + "You Have Tips": "عندك بقشيش", + " tips\nTotal is": " بقشيش\nالإجمالي", + "Your fee is ": "أجرتك: ", + "Do you want to pay Tips for this Driver": + "تحب تدفع بقشيش للكابتن ده؟", + "Tip is ": "البقشيش: ", + "Are you want to wait drivers to accept your order": + "عايز تستنى كباتن يقبلوا طلبك؟", + "This price is fixed even if the route changes for the driver.": + "السعر ده ثابت حتى لو الطريق اتغير.", + "The price may increase if the route changes.": + "السعر ممكن يزيد لو الطريق اتغير.", + "The captain is responsible for the route.": + "الكابتن مسؤول عن الطريق.", + "We are search for nearst driver": "بندور على أقرب كابتن", + "Your order is being prepared": "طلبك بيتجهز", + "The drivers are reviewing your request": "الكباتن بيشوفوا طلبك", + "Your order sent to drivers": "طلبك اتبعت للكباتن", + "You can call or record audio of this trip": "تقدر تتصل أو تسجل صوت", + "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": + "الرحلة بدأت! تقدر تكلم الطوارئ، تشارك رحلتك، أو تشغل التسجيل الصوتي.", + "Camera Access Denied.": "مفيش وصول للكاميرا.", + "Open Settings": "افتح الإعدادات", + "GPS Required Allow !.": "لازم تشغل الـ GPS!", + "Your Account is Deleted": "حسابك اتمسح", + "Are you sure to delete your account?": "متأكد إنك عايز تمسح حسابك؟", + "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": + "بياناتك هتتمسح بعد أسبوعين\nومش هتقدر تستخدم التطبيق تاني بعد شهر", + "Enter Your First Name": "دخل اسمك الأول", + "Are you Sure to LogOut?": "متأكد إنك عايز تخرج؟", + "Email Wrong": "الإيميل غلط", + "Email you inserted is Wrong.": "الإيميل اللي دخلته غلط.", + "You have finished all times ": "خلصت كل المحاولات", + "if you want help you can email us here": + "لو محتاج مساعدة ابعتلنا إيميل هنا", + "Thanks": "شكراً", + "Email Us": "راسلنا", + "I cant register in your app in face detection ": + "مش عارف أسجل بسبب مشكلة كشف الوجه", + "Hi": "أهلاً", + "No face detected": "مش لاقيين وجه", + "Image detecting result is ": "نتيجة فحص الصورة: ", + "from 3 times Take Attention": "من ٣ محاولات، خد بالك", + "Be sure for take accurate images please\nYou have": + "اتأكد إنك بتاخد صور واضحة\nفاضلك", + "image verified": "الصورة تمام", + "Next": "التالي", + "There is no help Question here": "مفيش أسئلة مساعدة هنا", + "You dont have Points": "معندكش نقاط", + "You Are Stopped For this Day !": "اتوقفت النهاردة!", + "You must be charge your Account": "لازم تشحن حسابك", + "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": + "رفضت ٣ رحلات النهاردة، وده السبب.\nنشوفك بكرة!", + "Recharge my Account": "شحن حسابي", + "Ok , See you Tomorrow": "تمام، أشوفك بكرة", + "You are Stopped": "أنت موقوف", + "Connected": "متصل", + "Not Connected": "غير متصل", + "Your are far from passenger location": "أنت بعيد عن الراكب", + "go to your passenger location before\nPassenger cancel trip": + "روح لمكان الراكب قبل ما يلغي", + "You will get cost of your work for this trip": "هتاخد حق مشوارك ده", + " in your wallet": "في محفظتك", + "you gain": "كسبت", + "Order Cancelled by Passenger": "الطلب اتلغى من الراكب", + "Feedback data saved successfully": "التقييم اتحفظ", + "No Promo for today .": "مفيش برومو النهاردة.", + "Select your destination": "اختار وجهتك", + "Search for your Start point": "ابحث عن نقطة البداية", + "Search for waypoint": "ابحث عن نقطة وقوف", + "Current Location": "الموقع الحالي", + "Add Location 1": "ضيف موقع ١", + "You must Verify email !.": "لازم تأكد الإيميل!", + "Cropper": "قص الصورة", + "Saved Sucssefully": "اتحفظ بنجاح", + "Select Date": "اختار التاريخ", + "Birth Date": "تاريخ الميلاد", + "Ok": "تمام", + "the 500 points equal 30 JOD": "الـ 500 نقطة بـ 30 جنيه", + "the 500 points equal 30 JOD for you \nSo go and gain your money": + "الـ 500 نقطة بـ 30 جنيه ليك\nيلا اكسب فلوسك", + "token updated": "التوكن اتحدث", + "Add Location 2": "ضيف موقع ٢", + "Add Location 3": "ضيف موقع ٣", + "Add Location 4": "ضيف موقع ٤", + "Waiting for your location": "مستنيين موقعك", + "Search for your destination": "ابحث عن وجهتك", + "Hi! This is": "أهلاً! ده", + " I am using": " أنا بستخدم", + " to ride with": " عشان أركب مع", + " as the driver.": " ككابتن.", + "is driving a ": "سايق ", + " with license plate ": " نمرتها ", + " I am currently located at ": " مكاني دلوقتي في ", + "Please go to Car now ": "روح للعربية دلوقتي", + "You will receive a code in WhatsApp Messenger": + "هيجيلك كود على الواتساب", + "If you need assistance, contact us": "لو محتاج مساعدة، كلمنا", + "Promo Ended": "العرض انتهى", + "Enter the promo code and get": "دخل الكود واحصل على", + "DISCOUNT": "خصم", + "No wallet record found": "مفيش سجل للمحفظة", + "for": "لـ", + "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": + "انطلق أأمن تطبيق مشاوير بمميزات كتير للكباتن والركاب. بنقدم أقل عمولة، ٨٪ بس. عندنا تأمين لأحسن الكباتن، وصيانة دورية، وخدمات على الطريق.", + "You can contact us during working hours from 12:00 - 19:00.": + "كلمنا من ١٢ لـ ٧.", + "Choose a contact option": "اختار طريقة تواصل", + "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": + "مواعيد العمل من ١٢ لـ ٧.\nابعت واتساب أو إيميل.", + "Promo code copied to clipboard!": "الكود اتنسخ!", + "Copy Code": "نسخ الكود", + "Your invite code was successfully applied!": "كود الدعوة اشتغل!", + "Payment Options": "خيارات الدفع", + "wait 1 minute to receive message": "استنى دقيقة عشان الرسالة توصل", + "You have copied the promo code.": "نسخت الكود.", + "Select Payment Amount": "اختار المبلغ", + "The promotion period has ended.": "فترة العرض خلصت.", + "Promo Code Accepted": "الكود اتقبل", + "Tap on the promo code to copy it!": "دوس على الكود عشان تنسخه!", + "Lowest Price Achieved": "أقل سعر", + "Cannot apply further discounts.": "مينفعش خصم أكتر من كده.", + "Promo Already Used": "الكود استخدمته قبل كده", + "Invitation Used": "الدعوة مستخدمة", + "You have already used this promo code.": "استخدمت الكود ده قبل كده.", + "Insert Your Promo Code": "دخل الكود بتاعك", + "Enter promo code here": "حط الكود هنا", + "Please enter a valid promo code": "دخل كود صالح", + "Awfar Car": "عربية أوفر", + "Old and affordable, perfect for budget rides.": + "قديمة وموفرة، مناسبة للمشاوير الاقتصادية.", + " If you need to reach me, please contact the driver directly at": + " لو محتاج تكلمني، اتصل بالكابتن على", + "No Car or Driver Found in your area.": + "مفيش عربيات أو كباتن في منطقتك.", + "Please Try anther time ": "جرب وقت تاني", + "There no Driver Aplly your order sorry for that ": + "مفيش كابتن قبل طلبك، بنعتذرلك", + "Trip Cancelled": "الرحلة اتلغت", + "The Driver Will be in your location soon .": "الكابتن هيوصلك قريب.", + "The distance less than 500 meter.": "المسافة أقل من ٥٠٠ متر.", + "Promo End !": "العرض انتهى!", + "There is no notification yet": "مفيش إشعارات", + "Use Touch ID or Face ID to confirm payment": + "استخدم البصمة لتأكيد الدفع", + "Contact us for any questions on your order.": + "كلمنا لو عندك سؤال عن طلبك.", + "Pyament Cancelled .": "الدفع اتلغى.", + "type here": "اكتب هنا", + "Scan Driver License": "امسح الرخصة", + "Please put your licence in these border": "حط الرخصة جوا الإطار", + "Camera not initialized yet": "الكاميرا لسه مجهزتش", + "Take Image": "خد صورة", + "AI Page": "صفحة الذكاء الاصطناعي", + "Take Picture Of ID Card": "صور البطاقة", + "Take Picture Of Driver License Card": "صور رخصة القيادة", + "We are process picture please wait ": "بنحمل الصورة، استنى...", + "There is no data yet.": "مفيش بيانات لسه.", + "Name :": "الاسم:", + "Drivers License Class: ": "درجة الرخصة:", + "Document Number: ": "رقم الوثيقة:", + "Address: ": "العنوان:", + "Height: ": "الطول:", + "Expiry Date: ": "تاريخ الانتهاء:", + "Date of Birth: ": "تاريخ الميلاد:", + "You can't continue with us .\nYou should renew Driver license": + "مش هينفع تكمل معانا.\nلازم تجدد الرخصة", + "Detect Your Face ": "افحص وجهك", + "Go to next step\nscan Car License.": + "الخطوة الجاية\nصور رخصة العربية.", + "Name in arabic": "الاسم بالعربي", + "Drivers License Class": "درجة الرخصة", + "Selected Date": "التاريخ المختار", + "Select Time": "اختار الوقت", + "Selected Time": "الوقت المختار", + "Selected Date and Time": "التاريخ والوقت المختارين", + "Lets check Car license ": "يلا نفحص رخصة العربية", + "Car": "عربية", + "Plate": "نمرة", + "Rides": "مشاوير", + "Selected driver": "الكابتن المختار", + "Lets check License Back Face": "يلا نفحص ظهر الرخصة", + "Car License Card": "رخصة العربية", + "No image selected yet": "مخترتش صورة لسه", + "Made :": "الصنع:", + "model :": "الموديل:", + "VIN :": "الشاسيه:", + "year :": "السنة:", + "ُExpire Date": "تاريخ الانتهاء", + "Login Driver": "دخول الكابتن", + "Password must br at least 6 character.": + "الباسورد لازم يكون ٦ حروف على الأقل.", + "if you don't have account": "لو معندكش حساب", + "Here recorded trips audio": "هنا تسجيلات الرحلات", + "Register as Driver": "سجل كابتن", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": + "لما تختار \"أوافق\"، بتأكد موافقتك على الشروط وإقرارك بـ ", + "Log Out Page": "صفحة الخروج", + "Log Off": "خروج", + "Register Driver": "تسجيل كابتن", + "Verify Email For Driver": "تأكيد إيميل الكابتن", + "Admin DashBoard": "لوحة الأدمن", + "Your name": "اسمك", + "your ride is applied": "رحلتك اتقدمت", + "H and": "س و", + "JOD": "جنيه", + "m": "د", + "We search nearst Driver to you": "بندورلك على أقرب كابتن", + "please wait till driver accept your order": + "استنى لحد ما الكابتن يقبل", + "No accepted orders? Try raising your trip fee to attract riders.": + "محدش قبل؟ جرب تعلي السعر.", + "You should select one": "لازم تختار واحد", + "The driver accept your order for": "الكابتن قبل طلبك بـ", + "The driver on your way": "الكابتن جاي", + "Total price from ": "السعر الكلي من ", + "Order Details Intaleq": "تفاصيل الطلب", + "Selected file:": "الملف المختار:", + "Your trip cost is": "تكلفة رحلتك:", + "this will delete all files from your device": + "ده هيمسح كل الملفات من جهازك", + "Exclusive offers and discounts always with the Intaleq app": + "عروض وخصومات حصرية دايماً مع انطلق", + "Submit Question": "ابعت سؤال", + "Please enter your Question.": "اكتب سؤالك.", + "Help Details": "تفاصيل المساعدة", + "No trip yet found": "ملقيناش رحلة", + "No Response yet.": "مفيش رد لسه.", + " You Earn today is ": " كسبت النهاردة ", + " You Have in": " معاك في", + "Total points is ": "مجموع النقاط ", + "Total Connection Duration:": "مدة الاتصال الكلية:", + "Passenger name : ": "اسم الراكب: ", + "Cost Of Trip IS ": "تكلفة الرحلة: ", + "Arrival time": "وقت الوصول", + "arrival time to reach your point": "وقت الوصول لنقطتك", + "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "لرحلات انطلق والسكوتر السعر متغير. للراحة السعر بالوقت والمسافة.", + "Hello this is Driver": "أهلاً، أنا الكابتن", + "Is the Passenger in your Car ?": "الراكب ركب معاك؟", + "Please wait for the passenger to enter the car before starting the trip.": + "استنى لما الراكب يركب قبل ما تبدأ.", + "No ,still Waiting.": "لأ، لسه مستني.", + "I arrive you": "وصلتلك", + "I Arrive your site": "أنا في موقعك", + "You are not in near to passenger location": "أنت مش قريب من الراكب", + "please go to picker location exactly": "روح لمكان الركوب بالضبط", + "You Can Cancel Trip And get Cost of Trip From": + "تقدر تلغي وتاخد تمن الرحلة من", + "Are you sure to cancel?": "متأكد إنك عايز تلغي؟", + "Insert Emergincy Number": "دخل رقم الطوارئ", + "Best choice for comfort car and flexible route and stops point": + "أحسن خيار لرحلة مريحة ومسار مرن", + "Insert": "إدخال", + "This is for scooter or a motorcycle.": "ده للسكوتر أو الموتوسيكل.", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "رحلة مباشرة بسعر ثابت. الكابتن لازم يمشي على الطريق المحدد.", + "You can decline a request without any cost": "تقدر ترفض الطلب ببلاش", + "Perfect for adventure seekers who want to experience something new and exciting": + "مثالي للي بيحب يجرب حاجة جديدة", + "My current location is:": "مكاني دلوقتي:", + "and I have a trip on": "وعندي رحلة على", + "App with Passenger": "التطبيق مع الراكب", + "You will be pay the cost to driver or we will get it from you on next trip": + "هتدفع للكابتن أو هناخدها منك المرة الجاية", + "Trip has Steps": "الرحلة فيها وقفات", + "Distance from Passenger to destination is ": + "المسافة من الراكب للوجهة: ", + "price is": "السعر:", + "This ride type does not allow changes to the destination or additional stops": + "النوع ده مبيسمحش بتغيير الوجهة أو الوقفات", + "This price may be changed": "السعر ده ممكن يتغير", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "مفيش شريحة؟ مفيش مشكلة! كلم الكابتن من التطبيق.", + "This ride type allows changes, but the price may increase": + "النوع ده بيسمح بالتغيير بس السعر ممكن يزيد", + "Select one message": "اختار رسالة", + "I'm waiting for you": "أنا مستنيك", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "لاحظنا السرعة عدت ١٠٠ كم/س. هدي السرعة عشان سلامتك. لو قلقان شارك رحلتك أو كلم الشرطة من زرار الطوارئ.", + "Warning: Intaleqing detected!": "تحذير: سرعة زايدة!", + "Please help! Contact me as soon as possible.": + "إلحقوني! كلموني بسرعة.", + "Share Trip Details": "شارك تفاصيل الرحلة", + "Car Plate is ": "نمرة العربية: ", + "the 300 points equal 300 L.E for you \nSo go and gain your money": + "الـ 300 نقطة بـ 300 جنيه ليك\nيلا اكسب فلوسك", + "the 300 points equal 300 L.E": "الـ 300 نقطة بـ 300 جنيه", + "The payment was not approved. Please try again.": + "الدفع ماتقبلش. جرب تاني.", + "Payment Failed": "فشل الدفع", + "This is a scheduled notification.": "ده إشعار مجدول.", + "An error occurred during the payment process.": "حصل خطأ وقت الدفع.", + "The payment was approved.": "تم الدفع.", + "Payment Successful": "تم الدفع بنجاح", + "No ride found yet": "ملقيناش رحلة لسه", + "Accept Order": "اقبل الطلب", + "Bottom Bar Example": "مثال الشريط السفلي", + "Driver phone": "رقم الكابتن", + "Statistics": "الإحصائيات", + "Origin": "الانطلاق", + "Destination": "الوصول", + "Driver Name": "اسم الكابتن", + "Driver Car Plate": "نمرة الكابتن", + "Available for rides": "متاح للرحلات", + "Scan Id": "امسح البطاقة", + "Camera not initilaized yet": "الكاميرا لسه", + "Scan ID MklGoogle": "مسح هوية MklGoogle", + "Language": "اللغة", + "Jordan": "الأردن", + "USA": "أمريكا", + "Egypt": "مصر", + "Turkey": "تركيا", + "Saudi Arabia": "السعودية", + "Qatar": "قطر", + "Bahrain": "البحرين", + "Kuwait": "الكويت", + "But you have a negative salary of": "بس عندك عجز بقيمة", + "Promo Code": "برومو كود", + "Your trip distance is": "مسافة رحلتك:", + "Enter promo code": "دخل الكود", + "You have promo!": "عندك برومو!", + "Cost Duration": "تكلفة الوقت", + "Duration is": "الوقت:", + "Leave": "مغادرة", + "Join": "انضمام", + "Heading your way now. Please be ready.": + "جايلك في السكة. خليك جاهز.", + "Approaching your area. Should be there in 3 minutes.": + "قربت من منطقتك. ٣ دقايق وأكون عندك.", + "There's heavy traffic here. Can you suggest an alternate pickup point?": + "الدنيا زحمة هنا. ممكن نقف في حتة تانية؟", + "This ride is already taken by another driver.": + "الرحلة دي راحت لكابتن تاني.", + "You Should be select reason.": "لازم تختار سبب.", + "Waiting for Driver ...": "مستني الكابتن...", + "Latest Recent Trip": "آخر رحلة", + "from your list": "من قائمتك", + "Do you want to change Work location": "تغير مكان الشغل؟", + "Do you want to change Home location": "تغير مكان البيت؟", + "We Are Sorry That we dont have cars in your Location!": + "آسفين، مفيش عربيات في مكانك!", + "Choose from Map": "اختار من الخريطة", + "Pick your ride location on the map - Tap to confirm": + "حدد مكانك على الخريطة - دوس للتأكيد", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "انطلق هو تطبيق المشاوير الآمن والموثوق.", + "With Intaleq, you can get a ride to your destination in minutes.": + "مع انطلق، هتوصل في دقايق.", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "بنهتم بسلامتك، وكل كباتننا متراجعين.", + "Pick from map": "اختار من الخريطة", + "No Car in your site. Sorry!": "مفيش عربية عندك. آسفين!", + "Nearest Car for you about ": "أقرب عربية ليك على بعد ", + "From :": "من:", + "Get Details of Trip": "تفاصيل الرحلة", + "If you want add stop click here": "لو عايز تضيف وقفة دوس هنا", + "Where you want go ": "رايح فين؟", + "My Card": "كارتي", + "Start Record": "ابدأ التسجيل", + "History of Trip": "سجل الرحلات", + "Helping Center": "مركز المساعدة", + "Record saved": "التسجيل اتحفظ", + "Trips recorded": "رحلات مسجلة", + "Select Your Country": "اختار بلدك", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "عشان نجبلك معلومات دقيقة، اختار بلدك تحت.", + "Are you sure to delete recorded files": "متأكد تمسح الملفات؟", + "Select recorded trip": "اختار رحلة مسجلة", + "Card Number": "رقم الكارت", + "Hi, Where to ": "أهلاً، رايح فين؟", + "Pick your destination from Map": "حدد وجهتك من الخريطة", + "Add Stops": "ضيف وقفات", + "Get Direction": "اعرف الطريق", + "Add Location": "ضيف مكان", + "Switch Rider": "بدل الراكب", + "You will arrive to your destination after timer end.": + "هتوصل لما الوقت يخلص.", + "You can cancel trip": "تقدر تلغي الرحلة", + "The driver waitting you in picked location .": "الكابتن مستنيك.", + "Pay with Your": "ادفع بـ", + "Pay with Credit Card": "ادفع بالفيزا", + "Show Promos to Charge": "اظهر عروض الشحن", + "Point": "نقطة", + "How many hours would you like to wait?": "عايز تستنى كام ساعة؟", + "Driver Wallet": "محفظة الكابتن", + "Choose between those Type Cars": "اختار نوع العربية", + "hour": "ساعة", + "Select Waiting Hours": "اختار ساعات الانتظار", + "Total Points is": "مجموع النقاط", + "You will receive a code in SMS message": "هيجيلك كود في رسالة", + "Done": "تمام", + "Total Budget from trips is ": "إجمالي الدخل من الرحلات: ", + "Total Amount:": "المبلغ الكلي:", + "Total Budget from trips by\nCredit card is ": + "إجمالي الدخل بالفيزا: ", + "This amount for all trip I get from Passengers": + "ده المبلغ من كل الركاب", + "Pay from my budget": "ادفع من رصيدي", + "This amount for all trip I get from Passengers and Collected For me in": + "ده المبلغ اللي جمعته وبيتحوشلي في", + "You can buy points from your budget": "ممكن تشتري نقاط من رصيدك", + "insert amount": "دخل المبلغ", + "You can buy Points to let you online\nby this list below": + "اشتري نقاط عشان تفضل أونلاين\nمن القائمة دي", + "Create Wallet to receive your money": "اعمل محفظة عشان تستلم فلوسك", + "Enter your feedback here": "اكتب رأيك هنا", + "Please enter your feedback.": "اكتب رأيك.", + "Feedback": "رأيك", + "Submit ": "إرسال ", + "Click here to Show it in Map": "دوس هنا عشان تشوفه في الخريطة", + "Canceled": "ملغي", + "No I want": "لأ أنا عايز", + "Email is": "الإيميل:", + "Phone Number is": "الموبايل:", + "Date of Birth is": "تاريخ الميلاد:", + "Sex is ": "النوع: ", + "Car Details": "تفاصيل العربية", + "VIN is": "الشاسيه:", + "Color is ": "اللون: ", + "Make is ": "الماركة: ", + "Model is": "الموديل:", + "Year is": "السنة:", + "Expiration Date ": "الانتهاء: ", + "Edit Your data": "تعديل بياناتك", + "write vin for your car": "اكتب الشاسيه", + "VIN": "الشاسيه", + "Device Change Detected": "الجهاز اتغير", + "Please verify your identity": "أكد هويتك", + "write Color for your car": "اكتب لون العربية", + "write Make for your car": "اكتب ماركة العربية", + "write Model for your car": "اكتب موديل العربية", + "write Year for your car": "اكتب سنة الصنع", + "write Expiration Date for your car": "اكتب تاريخ الانتهاء", + "Tariffs": "التعريفة", + "Minimum fare": "أقل أجرة", + "Maximum fare": "أقصى أجرة", + "Flag-down fee": "فتحة العداد", + "Including Tax": "شامل الضريبة", + "BookingFee": "رسوم الحجز", + "Morning": "صبح", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "من ٧:٣٠ لـ ١٠:٣٠ (خميس، جمعة، سبت، اثنين)", + "Evening": "ليل", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "من ١٢ لـ ٣ (خميس، جمعة، سبت، اثنين)", + "Night": "سهرة", + "You have in account": "معاك في الحساب", + "Select Country": "اختار الدولة", + "Ride Today : ": "رحلة اليوم: ", + "After this period\nYou can't cancel!": + "بعد الوقت ده\nمش هتعرف تلغي!", + "from 23:59 till 05:30": "من ١١:٥٩ م لـ ٥:٣٠ ص", + "Rate Driver": "قيم الكابتن", + "Total Cost is ": "التكلفة: ", + "Write note": "اكتب ملاحظة", + "Time to arrive": "وقت الوصول", + "Ride Summaries": "ملخص الرحلات", + "Total Cost": "التكلفة الكلية", + "Average of Hours of": "متوسط ساعات", + " is ON for this month": " متصل الشهر ده", + "Days": "أيام", + "Total Hours on month": "إجمالي ساعات الشهر", + "Counts of Hours on days": "عدد الساعات في الأيام", + "OrderId": "رقم الطلب", + "created time": "وقت الإنشاء", + "Intaleq Over": "انتهت رحلة انطلق", + "I will slow down": "هدي السرعة", + "Map Passenger": "خريطة الراكب", + "Be Slowly": "على مهلك", + "If you want to make Google Map App run directly when you apply order": + "لو عايز جوجل ماب يفتح علطول لما تقبل الطلب", + "You can change the language of the app": "تقدر تغير لغة التطبيق", + "Your Budget less than needed": "رصيدك أقل من المطلوب", + "You can change the Country to get all features": + "غير الدولة عشان كل المميزات تظهر", + "Change Country": "تغيير الدولة" + }, + "ar-main": { + "Syria": "‏سوريا", + "Order": "طلب", + "OrderVIP": "طلب VIP", + "Cancel Trip": "إلغاء الرحلة", + "Passenger Cancel Trip": "الراكب ألغى الرحلة", + "VIP Order": "طلب VIP", + "The driver accepted your trip": "السائق قبل رحلتك", + "message From passenger": "رسالة من الراكب", + "Cancel": "إلغاء", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "تم إلغاء الرحلة. سيتم إضافة تكلفة الرحلة إلى محفظتك.", + "token change": "تغيير الرمز", + "face detect": "كشف الوجه", + "Face Detection Result": "نتيجة كشف الوجه", + "similar": "مشابه", + "not similar": "غير مشابه", + "Hi ,I will go now": "مرحبًا، سأذهب الآن", + "Passenger come to you": "الراكب قادم إليك", + "Call Income": "مكالمة واردة", + "Call Income from Passenger": "مكالمة واردة من الراكب", + "Criminal Document Required": "مطلوب وثيقة جنائية", + "You should have upload it .": "يجب عليك تحميلها.", + "Call End": "انتهاء المكالمة", + "The order has been accepted by another driver.": + "تم قبول الطلب من قبل سائق آخر.", + "The order Accepted by another Driver": + "تم قبول الطلب من قبل سائق آخر", + "We regret to inform you that another driver has accepted this order.": + "نأسف لإعلامك بأن سائقًا آخر قد قبل هذا الطلب.", + "Driver Applied the Ride for You": "السائق قدم الطلب لك", + "Applied": "تم التقديم", + "Hi ,I Arrive your site": "مرحبًا، لقد وصلت إلى موقعك", + "Please go to Car Driver": "يرجى الذهاب إلى سائق السيارة", + "Ok I will go now.": "حسنًا، سأذهب الآن.", + "Accepted Ride": "تم قبول الرحلة", + "Driver Accepted the Ride for You": "السائق قبل الرحلة لك", + "Promo": "عرض ترويجي", + "Show latest promo": "عرض أحدث عرض ترويجي", + "Trip Monitoring": "مراقبة الرحلة", + "Driver Is Going To Passenger": "السائق في طريقه إليك", + "Please stay on the picked point.": + "يرجى البقاء في نقطة الالتقاط المحددة.", + "message From Driver": "رسالة من السائق", + "Trip is Begin": "بدأت الرحلة", + "Verify OTP": "التحقق من الرمز", + "Customer not found": "العميل غير موجود", + "Wallet is blocked": "المحفظة محظورة", + "Customer phone is not active": "هاتف العميل غير نشط", + "Balance not enough": "الرصيد غير كافٍ", + "Balance limit exceeded": "تم تجاوز حد الرصيد", + "Verification Code": "رمز التحقق", + "We have sent a verification code to your mobile number:": + "لقد أرسلنا رمز التحقق إلى رقم هاتفك المحمول:", + "Verify": "تحقق", + "Resend Code": "إعادة إرسال الرمز", + "You can resend in": "يمكنك إعادة الإرسال خلال", + "seconds": "ثوانٍ", + "Cancel Trip from driver": "إلغاء الرحلة من السائق", + "We will look for a new driver.\nPlease wait.": + "هنبحث عن سائق جديد.\nمن فضلك انتظر.", + "The driver canceled your ride.": "السائق ألغى رحلتك.", + "Driver Finish Trip": "السائق أنهى الرحلة", + "you will pay to Driver": "هتدفع للسائق", + "Don’t forget your personal belongings.": "متنساش حاجاتك الشخصية.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "من فضلك تأكد إن معاك كل حاجاتك الشخصية وإن أي مبلغ متبقي، لو موجود، تم إضافته لمحفظتك قبل ما تمشي. شكرًا لاستخدامك تطبيق تربز", + "Finish Monitor": "إنهاء المراقبة", + "Trip finished": "الرحلة انتهت", + "Call Income from Driver": "مكالمة واردة من السائق", + "Driver Cancelled Your Trip": "السائق ألغى رحلتك", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "هتدفع للسائق هتدفع تكلفة وقت السائق شوف محفظة Intaleq بتاعتك", + "Order Applied": "تم تطبيق الطلب", + + //firebase above + +// + 'Share App': "مشاركة التطبيق", + "Wallet": "المحفظة", + "Profile": "الملف الشخصي", + "Contact Support": "اتصل بالدعم", + 'Session expired. Please log in again.': + 'انتهت الجلسة. يرجى تسجيل الدخول مرة أخرى.', + "Security Warning": "⚠️ تحذير أمني", + "Potential security risks detected. The application may not function correctly.": + "تم اكتشاف ثغرات أمنية على هذا الجهاز. للحفاظ على أمان بياناتك، سيتم حذف جميع البيانات وإغلاق التطبيق.", + 'please order now': " ‏الرجاء الطلب مرة أخرى", + "Where to": "على فين؟", + "Where are you going?": "رايح فين؟", + "Quick Actions": "إجراءات سريعة", + "My Wallet": "محفظتي", + "Order History": "سجل الطلبات", + "Contact Us": "اتصل بنا", + "Driver": "السائق", + "Complaint": "شكوى", + "Promos": "العروض", + "Recent Places": "الأماكن الأخيرة", + "From": "من", + "WhatsApp Location Extractor": "مستخرج موقع واتساب", + "Location Link": "رابط الموقع", + "Paste location link here": "الصق رابط الموقع هنا", + "Go to this location": "انتقل إلى هذا الموقع", + "Paste WhatsApp location link": "الصق رابط موقع واتساب", + "Select Order Type": "اختر نوع الطلب", + "Choose who this order is for": "اختر الطلب ده لمين؟", + "I want to order for myself": "أطلب لنفسي", + "I want to order for someone else": "أطلب لحد تاني", + // "Cancel": "إلغاء", + "Order for someone else": "اطلب لشخص آخر", + "Order for myself": "اطلب لنفسي", + "Are you want to go this site": "عايز تروح المكان ده؟", + // "Yes": "أيوة", + "No": "لأ", + "Are you sure to delete this location?": + "متأكد إنك عايز تحذف الموقع ده؟", + "deleted": "تم الحذف", + "To Work": "الشغل", + "Work Saved": "تم حفظ مكان العمل", + "To Home": "البيت", + "Home Saved": "تم حفظ مكان البيت", + "Destination selected": "تم اختيار الوجهة", + "Now select start pick": "دلوقتي اختار نقطة البداية", + "OK": "تمام", + "Confirm Pick-up Location": "تأكيد موقع الالتقاء", + "Set Location on Map": "حدد الموقع على الخريطة", + "Nearest Car: ~": "أقرب عربية: ~", + "Nearest Car": "أقرب عربية", + "No cars nearby": "مفيش عربيات قريبة", + "Favorite Places": "الأماكن المفضلة", + "No favorite places yet!": "مفيش أماكن مفضلة لسه!", + "from your favorites": "من مفضلتك", + "Back": "رجوع", + "Sign in for a seamless experience": "سجل الدخول لتجربة أفضل", + "Sign In with Google": "تسجيل الدخول باستخدام جوجل", + "Sign in with Apple": "تسجيل الدخول باستخدام آبل", + "Need assistance? Contact us": "محتاج مساعدة؟ كلمنا", + "User not found": "المستخدم مش موجود", + "Email": "البريد الإلكتروني", + "Your email address": "عنوان بريدك الإلكتروني", + "Enter a valid email": "أدخل بريد إلكتروني صحيح", + "Password": "كلمة المرور", + // "Your password": "كلمة مرورك", + "Enter your password": "أدخل كلمة المرور", + "Submit": "إرسال", + "Terms of Use & Privacy Notice": "شروط الاستخدام وإشعار الخصوصية", + "Terms of Use": "شروط الاستخدام", + "Privacy Notice": "سياسة الخصوصية", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the": + "بالنقر على \"أوافق\" أدناه، أؤكد أنني قرأت ووافقت على", + "and acknowledge the": "وأقر بـ", + ". I am at least 18 years old.": ". أنا عندي 18 سنة على الأقل.", + + "Continue": "متابعة", + "Enable Location Access": "تفعيل الوصول للموقع", + "We need your location to find nearby drivers for pickups and drop-offs.": + "محتاجين موقعك عشان نلاقي سواقين قريبين للاستلام والتوصيل.", + "Allow Location Access": "السماح بالوصول للموقع", + "You should restart app to change language": + "لازم تقفل التطبيق وتفتحه تاني عشان اللغة تتغير", + "Home Page": "الرئيسية", + "To change Language the App": "لتغيير لغة التطبيق", + "Learn more about our app and mission": + "اعرف أكتر عن تطبيقنا ورسالتنا", + "Promos For Today": "عروض اليوم", + "Choose your ride": "اختار مشوارك", + "Your Journey Begins Here": "رحلتك تبدأ هنا", + "Bonus gift": "هدية إضافية", + "Pay": "ادفع", + "Get": "احصل على", + "Send to Driver Again": "إرسال للسواق مرة تانية", + "Driver Name:": "اسم السائق:", + "No trip data available": "مفيش بيانات للرحلة متاحة", + "Car Plate:": "رقم اللوحة:", + "remaining": "متبقي", + "Order Cancelled": "تم إلغاء الطلب", + "You canceled VIP trip": "ألغيت مشوار VIP", + "Passenger cancelled order": "الراكب ألغى الطلب", + "Your trip is scheduled": "رحلتك مجدولة", + "Don't forget your ride!": "متنساش مشوارك!", + "Trip updated successfully": "تم تحديث الرحلة بنجاح", + "Car Make:": "ماركة العربية:", + "Car Model:": "موديل العربية:", + "Car Color:": "لون العربية:", + "Driver Phone:": "رقم تليفون السواق:", + "Pre-booking": "حجز مسبق", + "Waiting VIP": "انتظار VIP", + "Driver List": "قائمة السائقين", + "Confirm Trip": "تأكيد المشوار", + "Select date and time of trip": "حدد تاريخ ووقت المشوار", + "Date and Time Picker": "اختيار التاريخ والوقت", + "Trip Status:": "حالة المشوار:", + "pending": "قيد الانتظار", + "accepted": "تم القبول", + "rejected": "تم الرفض", + "Apply": "تطبيق", + "Enter your promo code": "أدخل رمز الترويج الخاص بك", + "Apply Promo Code": "تطبيق رمز الترويج", + "Scheduled Time:": "الوقت المحدد:", + "No drivers available": "مفيش سواقين متاحين", + "No drivers available at the moment. Please try again later.": + "مفيش سواقين متاحين دلوقتي. حاول تاني بعدين.", + "you have a negative balance of": "لديك رصيد سلبي قدره", + "Please try again in a few moments": "حاول تاني بعد شوية", + "Unknown Driver": "سائق غير معروف", + "in your": "في محفظتك", + "The driver accepted your order for": "السائق قبل طلبك مقابل", + "wallet due to a previous trip.": "بسبب رحلة سابقة.", + "rides": "مشاوير", + "Add Work": "أضف مكان العمل", + "The reason is": "السبب هو", + "User does not have a wallet #1652": "المستخدم معندوش محفظة", + "Price of trip": "سعر المشوار", + "From:": "من:", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "بالنسبة لمشاوير السرعة والتوصيل، السعر بيتحدد بشكل تلقائي. أما مشاوير الكمفورت، السعر بيكون على حسب الوقت والمسافة", + "Phone Wallet Saved Successfully": "تم حفظ محفظة الهاتف بنجاح", + "Add wallet phone you use": "ضيف رقم محفظة هاتفك اللي بتستخدمها", + "Update Available": "تحديث متاح", + 'Intaleq Balance': "رصيد Intaleq", + 'Van for familly': "فان للعائلات", + "Electric": "سيارة كهربائية", + "Van": "فان للعائلات", + "Closest & Cheapest": "الأقرب والأرخص", + "Comfort choice": "خيار الراحة", + "Lady Captain for girls": "سائقة خاصة للسيدات", + "Best choice for cities": "أفضل خيار بين المدن", + "Quiet & Eco-Friendly": "هادئة وصديقة للبيئة", + "Travel in a modern, silent electric car. A premium, eco-friendly choice for a smooth ride.": + "سافر في سيارة كهربائية حديثة وهادئة. خيار مميز وصديق للبيئة لرحلة مريحة وسلسة.", + "Spacious van service ideal for families and groups. Comfortable, safe, and cost-effective travel together.": + "خدمة فان واسعة مثالية للعائلات والمجموعات. رحلة مريحة وآمنة واقتصادية للتنقل معًا.", + "Phone number must be exactly 11 digits long": + "رقم التليفون لازم يكون 11 رقم بالظبط", + 'Set Phone Number': "تعيين رقم الهاتف", + 'Top up Balance to continue': "اشحن الرصيد للمتابعة", + "Insert Wallet phone number": "أدخل رقم محفظة الهاتف", + 'Set Wallet Phone Number': 'تعيين رقم الهاتف', + "Phone number isn't an Egyptian phone number": + "رقم التليفون ده مش رقم مصري", + "A new version of the app is available. Please update to the latest version.": + "فيه نسخة جديدة من التطبيق متاحة. يرجى التحديث لآخر نسخة.", + "We use location to get accurate and nearest passengers for you": + "بنستخدم الموقع عشان نوصلك بأقرب ركاب وأدقهم ليك", + "This ride is already applied by another driver.": + "المشوار ده اتقبل من سواق تاني خلاص.", + "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": + "بنستخدم موقعك بالتحديد عشان نلاقي أقرب سواق متاح ونديك معلومات دقيقة عن مكان الاستلام والوصول. ممكن تتحكم في ده من الإعدادات.", + + "Where are you, sir?": "أنا وصلت حضرتك فين.", + "I've been trying to reach you but your phone is off.": + "بحاول أكلمك والتليفون مقفول.", + "Please don't be late": "ياريت متتأخرش", + "Please don't be late, I'm waiting for you at the specified location.": + "ياريت متتأخرش، أنا مستنيك في المكان اللي متحدد.", + "My location is correct. You can search for me using the navigation app": + "موقعي مظبوط. ممكن تدور عليا باستخدام تطبيق الملاحة", + "Hello, I'm at the agreed-upon location": + "أهلاً، أنا في المكان المتفق عليه", + "How much longer will you be?": "قدامك قد إيه؟", + "Phone number is verified before": "تم التحقق من رقم الهاتف قبل كده", + "Change Ride": "تغيير المشوار", + "You can change the destination by long-pressing any point on the map": + "ممكن تغير الوجهة بالضغط مطولاً على أي نقطة في الخريطة", + "Pick from map destination": "اختار وجهتك من الخريطة", + "Pick or Tap to confirm": "اختار أو اضغط للتأكيد", + "Accepted your order": "تم قبول طلبك", + "Order Accepted": "تم قبول الطلب", + "with type": "مع نوع", + "accepted your order at price": "تم قبول طلبك بسعر", + + "you canceled order": "أنت ألغيت الطلب", + "If you want order to another person": "لو عايز تطلب لشخص تاني", + // "Ok I will go now.": "تمام، أنا ماشي دلوقتي.", + // "Hi, I will go now": "أهلاً، أنا ماشي دلوقتي", + "upgrade price": "رفع السعر", + "Please enter a correct phone": "يرجى إدخال رقم هاتف صحيح", + "airport": "مطار", + "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": + "أفضل اختيار لعربية مريحة بمسار مرن ونقاط توقف. المطار ده بيقدم دخول فيزا بالسعر ده.", + "You can upgrade price to may driver accept your order": + "ممكن تزود السعر عشان السواق يقبل طلبك", + "Change Route": "تغيير المسار", + "No Captain Accepted Your Order": "مفيش كابتن قبل طلبك", + "We are looking for a captain but the price may increase to let a captain accept": + "بندور على كابتن بس ممكن السعر يزيد عشان كابتن يقبل", + "No, I want to cancel this trip": "لأ، أنا عايز ألغي المشوار ده", + // "Trip Cancelled. The cost of the trip will be added to your wallet.": + // "تم إلغاء الرحلة. هيتم إضافة تكلفة الرحلة لمحفظتك.", + "Attention": "تنبيه", + "Trip Cancelled. The cost of the trip will be deducted from your wallet.": + "تم إلغاء الرحلة. هيتخصم تكلفة الرحلة من محفظتك.", + "You will be charged for the cost of the driver coming to your location.": + "هتتحاسب على تكلفة مجيء السواق لموقعك.", + "reject your order.": "رفض طلبك.", + "Order Under Review": "الطلب قيد المراجعة", + "is reviewing your order. They may need more information or a higher price.": + "بيراجع طلبك. ممكن يحتاجوا معلومات أكتر أو سعر أعلى.", + // "The driver canceled your ride.": "السواق ألغى مشوارك.", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "ملقيناش أي سواقين لسه. فكر تزود سعر المشوار عشان عرضك يكون جذاب أكتر للسواقين.", + "Increase Your Trip Fee (Optional)": "زود سعر مشوارك (اختياري)", + "Vibration": "اهتزاز", + "Resend code": "إعادة إرسال الرمز", + // "token change": "تغيير الرمز", + "change device": "تغيير الجهاز", + "Device Change Detected": "تم اكتشاف تغيير الجهاز", + "You can only use one device at a time. This device will now be set as your active device.": + "ممكن تستخدم جهاز واحد بس في المرة الواحدة. الجهاز ده هيتعين دلوقتي كجهازك النشط.", + "Click here point": "اضغط هنا", + "Are you want to change": "عايز تغير؟", + "by": "بواسطة", + "Enter your complaint here": "اكتب شكوتك هنا", + "Please enter your complaint.": "الرجاء إدخال شكواك.", + "Complaint data saved successfully": "تم حفظ بيانات الشكوى بنجاح", + "Trip Monitor": "مراقبة الرحلة", + "Insert SOS Phone": "أدخل رقم طوارئ", + "Add SOS Phone": "أضف رقم طوارئ", + // "Trip Monitoring": "مراقبة الرحلة", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "عزيزي،\n\n🚀 بدأت للتو رحلة مثيرة وأود مشاركة تفاصيل رحلتي وموقعي الحالي معك في الوقت الفعلي! يرجى تنزيل تطبيق Intaleq. سيسمح لك بعرض تفاصيل رحلتي وموقعي الأخير.\n\n👈 رابط التحميل:\nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nأتطلع إلى إبقائك على اطلاع دائم بمغامرتي!\n\nIntaleq،", + "Send Intaleq app to him": "ابعتله تطبيق Intaleq", + "No passenger found for the given phone number": + "مفيش راكب بالرقم ده", + "No user found for the given phone number": "مفيش مستخدم بالرقم ده", + "This price is": "السعر ده", + "Work": "عمل", + "Add Home": "أضف منزل", + "Notifications": "الإشعارات", + "💳 Pay with Credit Card": "ادفع بالبطاقة الائتمانية 💳", + "⚠️ You need to choose an amount!": "⚠️ لازم تختار مبلغ!", + "💰 Pay with Wallet": "ادفع من المحفظة", + "You must restart the app to change the language.": + "لازم تقفل التطبيق وتفتحه تاني عشان اللغة تتغير.", + "joined": "انضم", + "Driver joined the channel": "السائق انضم للقناة", + "Driver left the channel": "السائق غادر القناة", + "Call Page": "صفحة الاتصال", + // "Call End": "إنهاء المكالمة", + "Call Left": "مكالمات متبقية", + r"$ Next as Cash $!": " نقداً !", + "To use Wallet charge it": "عشان تستخدم المحفظة اشحنها", + "We are searching for the nearest driver to you": + "بندورلك على أقرب سواق ليك", + "Best choice for cities": "أفضل اختيار للمدن", + "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": + "رايح جاي: خدمة للذهاب والعودة لIntaleq مريح بين المدن، سهلة وموثوقة.", + "Rayeh Gai": "رايح جاي", + "This trip is for women only": "المشوار ده للسيدات فقط", + "Total budgets on month": "إجمالي الميزانية الشهرية", + "You have call from driver": "عندك مكالمة من السواق", + "Comfort": "كمفورت", + "Intaleq": "Intaleq", + "Driver already has 2 trips within the specified period.": + "السائق عنده بالفعل مشوارين خلال الفترة المحددة.", + "The invitation was sent successfully": "تم إرسال الدعوة بنجاح", + "Lady": "ليدي", + "You should select your country": "يجب عليك اختيار بلدك", + "Scooter": "سكوتر", + "A trip with a prior reservation, allowing you to choose the best captains and cars.": + "مشوار بحجز مسبق، تقدر تختار فيه أفضل الكباتن والعربيات.", + "Mishwar Vip": "مشوار VIP", + "The driver waiting you in picked location .": + "السائق منتظرك في مكان الالتقاء.", + "About Us": "عن التطبيق", + "You can change the vibration feedback for all buttons": + "ممكن تغير اهتزاز الأزرار", + "Most Secure Methods": "أكثر طرق الأمان", + "In-App VOIP Calls": "مكالمات صوتية داخل التطبيق", + "Recorded Trips for Safety": "تسجيل الرحلات للأمان", + "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": + "\nكما نولي أهمية كبيرة للأسعار المناسبة، ونقدم أسعارًا تنافسية لجعل مشاويرك في متناول الجميع.", + "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": + "Intaleq هو تطبيق لمشاركة المشاوير مصمم مع وضع سلامتك وتكلفة المشوار في الاعتبار. نوصلك بسائقين موثوقين في منطقتك، ونضمن لك تجربة Intaleq مريحة وبدون قلق.\n\nإليك بعض المميزات الأساسية اللي بتميزنا:", + "Sign In by Apple": "تسجيل الدخول باستخدام Apple", + "Sign In by Google": "تسجيل الدخول باستخدام Google", + "How do I request a ride?": "إزاي أطلب مشوار؟", + "Step-by-step instructions on how to request a ride through the Intaleq app.": + "تعليمات خطوة بخطوة عن كيفية طلب مشوار من خلال تطبيق Intaleq.", + "What types of vehicles are available?": + "إيه أنواع العربيات المتاحة؟", + "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": + "Intaleq بتقدملك اختيارات متنوعة للعربيات تناسب احتياجاتك، منها اقتصادي ومريح وفاخر. اختار اللي يناسب ميزانيتك وعدد الركاب.", + "How can I pay for my ride?": "إزاي أدفع تمن المشوار؟", + "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": + "Intaleq بتقدملك طرق دفع متعددة لراحتك. اختار بين الدفع كاش أو ببطاقة الائتمان/الخصم وأنت بتأكد المشوار.", + "Can I cancel my ride?": "ممكن ألغي المشوار؟", + "Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.": + "نعم، يمكنك إلغاء رحلتك في ظل ظروف معينة (مثل قبل تعيين السائق). اطلع على سياسة الإلغاء في Intaleq للحصول على التفاصيل.", + "Driver Registration & Requirements": "تسجيل السائقين والمتطلبات", + "How can I register as a driver?": "كيف يمكنني التسجيل كسائق؟", + "What are the requirements to become a driver?": + "ما هي المتطلبات للعمل كسائق؟", + "Visit our website or contact Intaleq support for information on driver registration and requirements.": + "تفضل بزيارة موقعنا الإلكتروني أو اتصل بدعم Intaleq للحصول على معلومات حول تسجيل السائقين والمتطلبات.", + + "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": + "توفر Intaleq ميزة الدردشة داخل التطبيق لتتيح لك التواصل مع سائقك أو راكبك أثناء الرحلة.", + + "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": + "تُولي Intaleq أهمية كبيرة لسلامتك. نحن نقدم ميزات مثل التحقق من هوية السائق ، وتتبع الرحلات داخل التطبيق ، وخيارات الاتصال في حالات الطوارئ.", + "Frequently Questions": "الأسئلة الشائعة", + "User does not exist.": "المستخدم غير موجود", + "We need your phone number to contact you and to help you.": + "نحتاج إلى رقم هاتفك للتواصل معك ولمساعدتك", + "You will recieve code in sms message": "ستتلقى رمزًا في رسالة SMS", + "Please enter": "يرجى إدخال", + "We need your phone number to contact you and to help you receive orders.": + "نحتاج إلى رقم هاتفك للتواصل معك ولمساعدتك في تلقي الطلبات.", + "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": + "الاسم الكامل في سجلك الجنائي لا يتطابق مع الاسم الموجود في رخصة القيادة الخاصة بك. يرجى التحقق وتقديم الوثائق الصحيحة.", + "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": + "الرقم الوطني على رخصة القيادة الخاصة بك لا يتطابق مع الرقم الموجود على وثيقة الهوية الخاصة بك. يرجى التحقق وتقديم الوثائق الصحيحة.", + "Capture an Image of Your Criminal Record": + "التقط صورة لسجلك الجنائي", + "IssueDate": "تاريخ الإصدار", + "Capture an Image of Your car license front ": + "التقط صورة للواجهة الأمامية لرخصة سيارتك", + "Capture an Image of Your ID Document front": + "التقط صورة للواجهة الأمامية لوثيقة هويتك", + "NationalID": "الرقم القومي", + "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": + "يمكنك مشاركة تطبيق Intaleq مع أصدقائك وكسب مكافآت من الرحلات التي يقومون بها باستخدام كودك.", + "FullName": "الاسم الكامل", + "No invitation found yet!": "لم يتم العثور على دعوات حتى الآن!", + "InspectionResult": "نتيجة الفحص", + "Criminal Record": "السجل الجنائي", + "Share App": "شارك التطبيق", + "The email or phone number is already registered.": + "البريد الإلكتروني أو رقم الهاتف مسجل بالفعل.", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "لِتُصْبِحَ سَائِقَاً لِلرُّكوبِ المُشْتَرَكِ عَلَى تَطْبِيق سَفَر، يَجِبُ عَلَيْكَ تَحْمِيل رُخْصَةِ القِيَادَةِ، وَثِيقَةِ الهُوِيَّةِ، وَوَثِيقَةَ تَسْجِيل السَّيَّارَةِ. سَيَقُومُ نِظَامُ الذَّكَاءِ الاِصْطِنَاعِيِّ لَدَيْنَا بِمُرَاجَعَةِ وَتَحْقِيقِ صِحَّةِ الوَثَائِقِ فِي غُضُونِ ٢-٣ دَقَائِقَ فَقَطْ. إِذَا تَمَّتْ المُوَافَقَةُ عَلَى وَثَائِقِكَ، يُمْكِنُكَ البَدْءُ فِي العَمَلِ كَسَائِقٍ عَلَى تَطْبِيق سَفَر. يُرْجَى مُلَاحَظَةُ، تَقْدِيمُ وَثَائِقَ مُزَورَةٍ يُعَدُّ جَرِيمَةً خَطِيرَةً وَقَدْ يَتَرَتَّبُ عَلَيْهِ اِنهَاءُ الحِسَابِ فَوْرِيَّاً وَعَوَاقِبُ قَانُونِيَّة.", + "Documents check": "فحص الوثائق", + "Driver's License": "رخصة القيادة", + "for your first registration!": "للتسجيل الأول!", + "Get it Now!": "احصل عليه الآن!", + "before": "قبل", + "Code not approved": "الرمز غير موافق عليه", + "3000 LE": "3000 جنيه مصري", + "Do you have an invitation code from another driver?": + "هل لديك كود دعوة من سائق آخر؟", + "Paste the code here": "الصق الكود هنا", + "No, I don't have a code": "لا، لا أملك كودا", + "Code approved": "تمت الموافقة على الكود", + "Install our app:": "قم بتثبيت تطبيقنا:", + "Invite another driver and both get a gift after he completes 100 trips!": + "ادع صديقًا ليكون سائقًا واحصلا على هدية بعد إكماله 100 مشوار!", + "Invite": "دعوة", + "Are you sure?": "هل أنت متأكد؟", + "This will delete all recorded files from your device.": + "سيؤدي هذا إلى حذف جميع الملفات المسجلة من جهازك.", + "Select a file": "اختر ملفاً", + "Select a File": "اختر ملفاً", + "Delete": "حذف", + "attach audio of complain": "إرفاق صوت للشكوى", + "Phone Number Check": "فحص رقم الهاتف", + "Drivers received orders": "السائقون استقبلوا الطلبات", + "No audio files recorded.": "لا توجد ملفات صوتية مسجلة.", + "This is for delivery or a motorcycle.": + "هذا للتوصيل أو للدراجة النارية.", + // "We will look for a new driver.\nPlease wait.": + // "سوف نبحث عن سائق جديد.\nيرجى الانتظار", + "Intaleq Reminder": "تطبيق Intaleq", + "It's time to check the Intaleq app!": + "حان وقت استخدام تطبيق Intaleq", + "you must insert token code": "يجب إدخال رمز التحقق.", + "Something went wrong. Please try again.": + "حدث خطأ ما. يرجى المحاولة مرة أخرى.", + "Trip Details": "تفاصيل الرحلة", + "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": + "لا تتوفر تفاصيل الشكوى في السياق، لذا لا أستطيع تقديم حل لهذه المشكلة. يرجى تقديم المعلومات اللازمة، وسأكون سعيدًا بمساعدتك", + "Submit Your Complaint": "أرسل شكواك", + "Date": "التاريخ", + "Price": "السعر", + "Status": "الحالة", + "Choose from contact": "اختر من جهات الاتصال", + "attach correct audio": "إرفاق صوت للشكوى", + "be sure": "كن متأكدًا", + "Audio uploaded successfully.": "تم رفع الصوت بنجاح", + "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": + "مثالي للركاب الذين يبحثون عن أحدث موديلات السيارات مع حرية اختيار أي طريق يرغبون به", + "Share this code with your friends and earn rewards when they use it!": + "شارك هذا الرمز مع أصدقائك واحصل على مكافآت عند استخدامهم له!", + "Enter phone": "أدخل رقم الهاتف", + "You deserve the gift": "أنت تستحق الهدية", + "complete, you can claim your gift": " يمكنك المطالبة بهديتك", + "When": "‏عندما يكمل", + "Enter driver's phone": "أدخل رقم هاتف السائق", + "Send Invite": "أرسل الدعوة", + "Show Invitations": "عرض الدعوات", + "License Type": "نوع الرخصة", + "National Number": "الرقم الوطني", + "Name (Arabic)": "الاسم بالعربي", + "Name (English)": "الاسم بالإنجليزية", + "Address": "العنوان", + "Issue Date": "تاريخ الإصدار", + "Expiry Date": "تاريخ الانتهاء", + "License Categories": "فئات الرخصة", + "driver_license": "رخصة القيادة", + "Capture an Image of Your Driver License": "التقط صورة لرخصة قيادتك", + "ID Documents Back": "الوجه الخلفي لوثائق الهوية", + "National ID": "البطاقة الوطنية", + "Occupation": "المهنة", + "Gender": "الجنس", + "Religion": "الديانة", + "Marital Status": "الحالة الاجتماعية", + "Full Name (Marital)": "الاسم الكامل (حسب الحالة الاجتماعية)", + "Expiration Date": "تاريخ الانتهاء", + "Capture an Image of Your ID Document Back": + "التقط صورة للوجه الخلفي لوثيقة الهوية الخاصة بك", + "ID Documents Front": "الوجه الأمامي لوثائق الهوية", + "First Name": "الاسم الأول", + "CardID": "رقم البطاقة", + "Vehicle Details Front": "تفاصيل المركبة ‏الوجه الأمامية", + "Plate Number": "رقم اللوحة", + "Owner Name": "اسم المالك", + "Vehicle Details Back": "تفاصيل المركبة ‏الوجه الخلفي", + "Make": "المصنع", + "Model": "الطراز", + "Year": "السنة", + "Chassis": "الشاسيه", + "Color": "اللون", + "Displacement": "السعة", + "Fuel": "الوقود", + "Tax Expiry Date": "تاريخ انتهاء الضريبة", + "Inspection Date": "تاريخ الفحص", + "Capture an Image of Your car license back": + "التقط صورة للوجه الخلفي لرخصة سيارتك", + "Capture an Image of Your Driver’s License": + "التقط صورة لرخصة قيادتك", + "Sign in with Google for easier email and name entry": + "سجل دخولك باستخدام جوجل لتسجيل بريدك الإلكتروني واسمك بسهولة", + "You will choose allow all the time to be ready receive orders": + "ستختار السماح طوال الوقت لتكون جاهزًا لاستقبال الطلبات", + "Welcome to Intaleq!": "مرحبا بكم في Intaleq!", + "Get to your destination quickly and easily.": + "وصول إلى وجهتك بسرعة وسهولة.", + "Enjoy a safe and comfortable ride.": "استمتع برحلة آمنة ومريحة.", + "Choose Language": "اختر اللغة", + "Login": "تسجيل الدخول", + "Pay with Wallet": "ادفع باستخدام المحفظة", + "Invalid MPIN": "رمز PIN غير صحيح", + "Invalid OTP": "كود التحقق خاطئ", + // "Driver Accepted the Ride for You": "السائق قبل الرحلة لك", + "Enter your email address": "أدخل عنوان بريدك الإلكتروني", + "Please enter Your Email.": "يرجى إدخال بريدك الإلكتروني.", + "Enter your phone number": "أدخل رقم هاتفك", + "Please enter your phone number.": "يرجى إدخال رقم هاتفك.", + "Please enter Your Password.": "يرجى إدخال كلمة المرور.", + "if you dont have account": "إذا لم يكن لديك حساب", + "Register": "تسجيل", + "Accept Ride's Terms & Review Privacy Notice": + "قبول شروط الاستخدام ومراجعة إشعار الخصوصية", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "من خلال اختيار 'أوافق' أدناه، قمت بمراجعة وقبول شروط الاستخدام وأقر بإشعار الخصوصية. أنا على الأقل 18 عامًا.", + "I Agree": "أوافق", + // "Finish Monitor": " إنهاء مراقبة الرحلة ", + "First name": "الاسم الأول", + "Enter your first name": "أدخل اسمك الأول", + "Please enter your first name.": "يرجى إدخال اسمك الأول.", + "Last name": "اسم العائلة", + "Enter your last name": "أدخل اسمك الأخير", + "Please enter your last name.": "يرجى إدخال اسمك الأخير.", + "City": "المدينة", + "Please enter your City.": "يرجى إدخال اسم مدينتك.", + "Male": "ذكر", + "Female": "أنثى", + "Verify Email": "تحقق من البريد الإلكتروني", + "We sent 5 digit to your Email provided": + "لقد أرسلنا رمزًا مؤلفًا من 5 أرقام إلى بريدك الإلكتروني المدخل", + "5 digit": "5 أرقام", + "Send Verification Code": "إرسال رمز التحقق", + "Your Ride Duration is ": "مُدَّة رِحْلَتِكَ ", + "You will be thier in": "سَتَكُون هُنَاكَ فِي", + "You trip distance is": "مَسَافَة الرِّحْلَة", + "Fee is": "الرُّسُوم", + "From : ": "مِنْ: ", + "To : ": "إِلَى: ", + "Add Promo": "إضَافَة بَرُومُو", + "Confirm Selection": "تَأْكِيد الاخْتِيَار", + "distance is": "المَسَافَة", + + "Intaleq LLC": "شركة Intaleq", + "Egypt's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "أول خدمة مشاركة ركوب في مصر، تم تطويرها بفخر من قبل مالكين عرب ومحليين. نحن نركز على أن نكون قريبين منك - سواء كنت راكبًا قيمًا أو قائدًا مخلصًا.", + "Why Choose Intaleq?": "لماذا تختار Intaleq؟", + "Closest to You": "الأقرب إليك", + "We connect you with the nearest drivers for faster pickups and quicker journeys.": + "نربطك بأقرب السائقين لضمان وصول سريع ورحلات أسرع.", + "Uncompromising Security": "أعلى مستويات الأمان", + "Lady Captains Available": "قائدات سيارات متاحات", + "Recorded Trips (Voice & AI Analysis)": + "الرحلات المسجلة (تحليل صوتي بالذكاء الاصطناعي)", + "Fastest Complaint Response": "أسرع استجابة للشكاوى", + "Our dedicated customer service team ensures swift resolution of any issues.": + "فريق خدمة العملاء لدينا يضمن حل أي مشكلة بسرعة.", + "Affordable for Everyone": "في متناول الجميع", + "Frequently Asked Questions": "الأسئلة الشائعة", + "Getting Started": "البدء", + + "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": + "افتح تطبيق Intaleq، وأدخل وجهتك، واضغط على \"طلب رحلة\". سيقوم التطبيق بتوصيلك بأقرب سائق.", + "Vehicle Options": "خيارات المركبات", + + "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": + "يوفر Intaleq مجموعة متنوعة من الخيارات بما في ذلك الاقتصادية، المريحة، والفاخرة لتلبية احتياجاتك وميزانيتك.", + "Payments": "المدفوعات", + + "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": + "ممكن تدفع تمن مشوارك كاش أو ببطاقة الائتمان/الخصم. تقدر تختار طريقة الدفع اللي تفضلها قبل ما تأكد المشوار.", + "Ride Management": "إدارة الرحلات", + + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "أيوة، ممكن تلغي مشوارك، بس يرجى ملاحظة إن فيه رسوم إلغاء ممكن تتطبق حسب الوقت اللي بتلغي فيه قبلها قد إيه.", + "For Drivers": "للسواقين", + // "Driver Registration & Requirements": "تسجيل ومتطلبات السواقين", + "Driver Registration": "تسجيل السواق", + "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": + "علشان تسجل كسواق أو تعرف المتطلبات، يرجى زيارة موقعنا الإلكتروني أو الاتصال بدعم Intaleq مباشرةً.", + "Visit Website/Contact Support": "زيارة الموقع/الاتصال بالدعم", + "Close": "إغلاق", + "We are searching for the nearest driver": "بندور على أقرب سواق", + "Communication": "التواصل", + "How do I communicate with the other party (passenger/driver)?": + "إزاي أتواصل مع الطرف التاني (الراكب/السواق)؟", + "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": + "ممكن تتواصل مع السواق أو الراكب من خلال خاصية الشات جوة التطبيق أول ما المشوار يتأكد.", + "Safety & Security": "الأمان والحماية", + "What safety measures does Intaleq offer?": + "إيه إجراءات الأمان اللي بيقدمها Intaleq؟", + "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": + "Intaleq بيقدم مميزات أمان متنوعة زي التحقق من السواق، تتبع الرحلة جوة التطبيق، خيارات الاتصال في حالات الطوارئ، وإمكانية مشاركة حالة رحلتك مع جهات اتصال موثوقة.", + "Enjoy competitive prices across all trip options, making travel accessible.": + "استمتع بأسعار تنافسية على كل خيارات الرحلات، وده بيخلي الIntaleq سهل الوصول ليه.", + "Variety of Trip Choices": "خيارات رحلات متنوعة", + "Choose the trip option that perfectly suits your needs and preferences.": + "اختار خيار الرحلة اللي يناسب احتياجاتك وتفضيلاتك بالظبط.", + "Your Choice, Our Priority": "اختيارك هو أولويتنا", + "Because we are near, you have the flexibility to choose the ride that works best for you.": + "علشان إحنا قريبين، عندك المرونة تختار المشوار اللي يناسبك.", + "duration is": "المدة", + "Setting": "الإعدادات", + "Find answers to common questions": "اعثر على إجابات للأسئلة الشائعة", + "I don't need a ride anymore": "أنا مش محتاج مشوار تاني", + "I was just trying the application": "كنت بجرب التطبيق بس", + "No driver accepted my request": "مفيش سواق قبل الطلب بتاعي", + "I added the wrong pick-up/drop-off location": + "أنا ضفت مكان استلام/توصيل غلط", + "I don't have a reason": "ماليش سبب", + "Other": "أخرى", + "Can we know why you want to cancel Ride ?": + "ممكن نعرف ليه عايز تلغي المشوار؟", + "Cancel Ride": "إلغاء المشوار", + "Add Payment Method": "إضافة طريقة الدفع", + "Your Wallet balance is ": "رصيد محفظتك هو ", + "Ride Wallet": "محفظة الرحلة", + "Payment Method": "طريقة الدفع", + "Type here Place": "اكتب هنا المكان", + "Are You sure to ride to": "أنت متأكد إنك عايز تروح", + "Confirm": "تأكيد", + // "Back": "رجوع", + "You are Delete": "أنت على وشك الحذف", + "Deleted": "تم الحذف", + "You Dont Have Any places yet !": "لسا معندكش أي أماكن!", + // "Favorite Places": "الأماكن المفضلة", + "From : Current Location": "من: الموقع الحالي", + // "Where to": "إلى أين", + "Profile": "الملف الشخصي", + "Home": "الصفحة الرئيسية", + "My Cared": "بطاقاتي", + "Add Card": "إضافة بطاقة", + "Add Credit Card": "إضافة بطاقة ائتمان", + "Please enter the cardholder name": "يرجى إدخال اسم حامل البطاقة", + "Please enter the expiry date": "يرجى إدخال تاريخ انتهاء الصلاحية", + "Please enter the CVV code": "يرجى إدخال رمز CVV", + "Go To Favorite Places": "الذهاب إلى الأماكن المفضلة", + "Go to this Target": "الذهاب إلى هذا الهدف", + "My Profile": "ملفي الشخصي", + "Sign Out": "تسجيل الخروج", + "Are you want to go to this site": "هل ترغب في الذهاب إلى هذا الموقع", + "MyLocation": "موقعي", + "my location": "موقعي", + "Target": "هدف", + "Update": "تحديث", + "You Should choose rate figure": "يجب عليك اختيار تقييم", + "Login Captin": "تسجيل دخول الكابتن", + "Register Captin": "تسجيل كابتن جديد", + "Send Verfication Code": "إرسال رمز التحقق", + "KM": "كم", + "End Ride": "إنهاء الرحلة", + "Minute": "دقيقة", + "Go to passenger Location now": "اذهب إلى موقع الراكب الآن", + "Duration of the Ride is ": "مدة الرحلة هي ", + "Distance of the Ride is ": "المسافة للرحلة هي", + "Name of the Passenger is ": "اسم الراكب هو", + "Hello this is Captain": "مرحباً، أنا الكابتن", + "Start the Ride": "بدء الرحلة", + "Please Wait If passenger want To Cancel!": + "الرجاء الانتظار إذا أراد الراكب الإلغاء!", + "Total Duration:": "المدة الإجمالية:", + "Active Duration:": "المدة الفعلية:", + "Waiting for Captin ...": "في انتظار الكابتن...", + "Age is ": "العمر هو", + "Rating is ": "التقييم هو", + " to arrive you.": "للوصول إليك.", + + "Tariff": "تعريفة", + "Settings": "الإعدادات", + "Feed Back": "اقتراحات", + + "Please enter a valid 16-digit card number": + "يرجى إدخال رقم بطاقة صالح مكون من 16 رقم", + "Add Phone": "إضافة هاتف", + "Please enter a phone number": "يرجى إدخال رقم هاتف", + "You dont Add Emergency Phone Yet!": "لسه مضفتش رقم هاتف طوارئ!", + "You will arrive to your destination after ": "هتوصل وجهتك بعد", + "You can cancel Ride now": "ممكن تلغي المشوار دلوقتي", + "You Can cancel Ride After Captain did not come in the time": + "ممكن تلغي المشوار بعد ما الكابتن ميوصلش في الوقت المحدد", + "If you in Car Now. Press Start The Ride": + "لو أنت في العربية دلوقتي. اضغط على بدء الرحلة", + "You Dont Have Any amount in": "معندكش أي مبلغ في", + "Wallet!": "المحفظة!", + "You Have": "لديك", + "Save Credit Card": "حفظ بطاقة الائتمان", + "Show Promos": "إظهار العروض الترويجية", + "10 and get 4% discount": "10 واحصل على خصم 4%", + "20 and get 6% discount": "20 واحصل على خصم 6%", + "40 and get 8% discount": "40 واحصل على خصم 8%", + "100 and get 11% discount": "100 واحصل على خصم 11%", + "Pay with Your PayPal": "ادفع باستخدام PayPal", + "You will choose one of above !": "هتختار واحدة من اللي فوق!", + "Delete My Account": "حذف حسابي", + "Edit Profile": "تعديل الملف الشخصي", + "Name": "الاسم", + "Update Gender": "تحديث الجنس", + "Education": "التعليم", + "Update Education": "تحديث التعليم", + "Employment Type": "نوع التوظيف", + "SOS Phone": "هاتف الطوارئ", + "High School Diploma": "شهادة الثانوية العامة", + "Associate Degree": "درجة الدبلوم", + "Bachelor's Degree": "بكالوريوس", + "Master's Degree": "ماجستير", + "Doctoral Degree": "دكتوراه", + "Copy this Promo to use it in your Ride!": + "انسخ العرض ده علشان تستخدمه في مشوارك!", + "To change some Settings": "لتغيير بعض الإعدادات", + "Order Request Page": "صفحة طلب الطلب", + "Rouats of Trip": "طرق الرحلة", + "Passenger Name is ": "اسم الراكب هو ", + "Total From Passenger is ": "المبلغ الإجمالي من الراكب هو ", + "Duration To Passenger is ": "المدة للوصول للراكب هي ", + "Distance To Passenger is ": "المسافة للوصول للراكب هي ", + "Total For You is ": "المبلغ الإجمالي ليك هو ", + "Distance is ": "المسافة هي ", + " KM": " كيلومتر", + "Intaleq Wallet": "محفظة انطلق", + "Cash": "كاش", + "Pay directly to the captain": "ادفع للكابتن مباشرةً", + "Top up Wallet to continue": "اشحن المحفظة للمتابعة", + "Or pay with Cash instead": "أو ادفع بالكاش بدلاً من ذلك", + "Confirm & Find a Ride": "تأكيد والبحث عن مشوار", + "Balance:": "الرصيد:", + 'Have a promo code?': "هل لديك كود ترويجي؟", + "Duration of Trip is ": "مدة الرحلة هي ", + " Minutes": " دقائق", + "Apply Order": "قبول الطلب", + "Refuse Order": "رفض الطلب", + "Rate Captain": "تقييم الكابتن", + "Enter your Note": "أدخل ملاحظتك", + "Type something...": "اكتب حاجة...", + "Submit rating": "إرسال التقييم", + "Rate Passenger": "تقييم الراكب", + "Ride Summary": "ملخص الرحلة", + "welcome_message": "مرحباً بك في Intaleq!", + "app_description": + "Intaleq هو تطبيق موثوق وآمن وسهل الوصول إليه لمشاركة الركوب.", + "get_to_destination": "اذهب إلى وجهتك بسرعة وسهولة.", + "get_a_ride": "مع Intaleq، تقدر تحصل على رحلة لوجهتك في دقايق.", + "safe_and_comfortable": "استمتع برحلة آمنة ومريحة.", + "committed_to_safety": + "Intaleq ملتزمة بالسلامة، وكل الكباتن عندنا بيتفحصوا كويس ويتعملهم فحص خلفية.", + // "Driver Applied the Ride for You": "السواق طلب المشوار ليك", + // "Show latest promo": "أظهر آخر عرض ترويجي", + // "Cancel Trip": "إلغاء الرحلة", + // "Passenger Cancel Trip": "الراكب ألغى الرحلة", + // "Accepted Ride": "تم قبول الرحلة", + "your ride is Accepted": "تم قبول رحلتك", + + // "Trip is Begin": "بدأت الرحلة", + "Driver is waiting at pickup.": + "السائق في انتظارك عند نقطة الاستلام.", + "Driver is on the way": "السائق في الطريق", + "Contact Options": "خيارات الاتصال", + "Send a custom message": "أرسل رسالة مخصصة", + "Type your message": "اكتب رسالتك", + // "Hi ,I will go now": "مرحباً، أنا هتحرك دلوقتي", + // "Passenger come to you": "الراكب جاي لك", + // "Hi ,I Arrive your site": "مرحباً، وصلت مكانك", + // "Driver Finish Trip": "السواق أنهى الرحلة", + // "you will pay to Driver": "هتدفع للسواق", + // "Driver Cancel Your Trip": "السواق ألغى رحلتك", + // "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + // "هتدفع للسواق تكلفة وقته، بص على محفظتك في Intaleq", + // "I will go now": "أنا هتحرك دلوقتي", + "You Have Tips": "عندك زيادة فلوس", + " tips\nTotal is": " زيادة مال\nالمجموع هو", + // "No,I want": "لأ، أنا عايز", + "Your fee is ": "الأجرة بتاعتك هي ", + // "Do you want to pay Tips for this Driver": + // "هل تريد دفع بقشيش للسواق ده؟", + "Tip is ": " مبلغ البقشيش هو", + + "Are you want to wait drivers to accept your order": + "هل عايز تستنى لحد ما السواقين يقبلوا طلبك؟", + + "This price is fixed even if the route changes for the driver.": + "السعر ده ثابت حتى لو المسار اتغير للسواق.", + "The price may increase if the route changes.": + "احتمالية زيادة السعر عند تغيير المسار", + "The captain is responsible for the route.": + "الكابتن مسؤول عن المسار", + "We are search for nearst driver": "بندور على أقرب سواق", + "Your order is being prepared": "جاري تجهيز الطلب", + "The drivers are reviewing your request": "السواقين بيدرسوا طلبك", + "Your order sent to drivers": "تم إرسال طلبك للسواقين", + "You can call or record audio of this trip": + "ممكن تتصل أو تسجل صوت للرحلة دي", + "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": + "بدأت الرحلة! براحتك تتصل بأرقام الطوارئ، تشارك رحلتك، أو تفعل التسجيل الصوتي للرحلة", + // "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + // "الرجاء التأكد من جميع أغراضك الشخصية وإضافة باقي الأجرة في محفظتك قبل النزول. شكراً لاختيارك تطبيق Intaleq", + // "Don’t forget your personal belongings.": "متنساش متعلقاتك الشخصية.", + "Camera Access Denied.": "تم رفض الوصول للكاميرا.", + "Open Settings": "افتح الإعدادات", + "GPS Required Allow !.": "تفعيل GPS مطلوب!", + "Your Account is Deleted": "تم حذف حسابك", + "Are you sure to delete your account?": + "أنت متأكد إنك عايز تحذف حسابك؟", + "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": + "بياناتك هتتمسح بعد أسبوعين\nومش هتقدر ترجع تستخدم التطبيق تاني بعد شهر", + "Enter Your First Name": "أدخل اسمك الأول", + "Are you Sure to LogOut?": "أنت متأكد إنك عايز تسجل الخروج؟", + "Email Wrong": "البريد الإلكتروني غلط", + "Email you inserted is Wrong.": "البريد الإلكتروني اللي أدخلته غلط.", + "You have finished all times ": "لقد استنفدت كل المحاولات", + "if you want help you can email us here": + "لو عايز مساعدة ممكن تبعتلنا إيميل هنا", + "Thanks": "شكراً", + "Email Us": "ابعت لنا إيميل", + "I cant register in your app in face detection ": + "مش عارف أسجل في تطبيقكم بسبب كشف الوجه", + "Hi": "مرحباً", + "No face detected": "لم يتم الكشف عن أي وجه", + "Image detecting result is ": "نتيجة الكشف عن الصورة هي", + "from 3 times Take Attention": "من 3 محاولات انتبه", + "Be sure for take accurate images please\nYou have": + "الرجاء التأكد من التقاط صور دقيقة\nلديك", + "image verified": "الصورة موثقة", + "Next": "التالي", + "There is no help Question here": "مفيش أسئلة مساعدة هنا", + + "You dont have Points": "معندكش نقاط", + "You Are Stopped For this Day !": "تم توقيفك لهذا اليوم!", + "You must be charge your Account": "يجب إعادة شحن رصيد النقاط", + "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": + "رفضت 3 رحلات النهاردة وده السبب\nنتقابل بكرة!", + "Recharge my Account": "ادفع رسوم من حسابي", + "Ok , See you Tomorrow": "تمام، نتقابل بكرة", + "You are Stopped": "تم توقيفك", + "Connected": "متصل", + "Not Connected": "غير متصل", + "Your are far from passenger location": "أنت بعيد عن مكان الراكب", + "go to your passenger location before\nPassenger cancel trip": + "اذهب إلى مكان الراكب قبل أن\nيلغي الراكب الرحلة", + "You will get cost of your work for this trip": + "هتحصل على تكاليف عملك لهذه الرحلة", + " in your wallet": "في محفظتك", + "you gain": "ربحت", + + "Order Cancelled by Passenger": "تم إلغاء الطلب من قبل الراكب", + "Success": "نجاح", + "Feedback data saved successfully": "تم حفظ بيانات التعليقات بنجاح", + "No Promo for today .": "مفيش عروض ترويجية النهاردة.", + "Select your destination": "اختار وجهتك", + "Search for your Start point": "ابحث عن نقطة الانطلاق", + "Search for waypoint": "ابحث عن النقطة الآلية", + "Current Location": "الموقع الحالي", + "Add Location 1": "إضافة الموقع 1", + "You must Verify email !.": "يجب التحقق من البريد الإلكتروني!", + "Cropper": "القاصة", + "Saved Sucssefully": "تم الحفظ بنجاح", + "Select Date": "اختر التاريخ", + "Birth Date": "تاريخ الميلاد", + "Ok": "موافق", + "the 500 points equal 30 JOD": "الـ 500 نقطة تساوي 30 دينار أردني", + "the 500 points equal 30 JOD for you \nSo go and gain your money": + "الـ 500 نقطة تساوي 30 دينار أردني\nفاستحق فلوسك واكسب النقاط", + "token updated": "تم تحديث الرمز", + "Add Location 2": "إضافة الموقع 2", + "Add Location 3": "إضافة الموقع 3", + "Add Location 4": "إضافة الموقع 4", + "Waiting for your location": "في انتظار موقعك", + "Search for your destination": "ابحث عن وجهتك", + "Hi! This is": "مرحباً! أنا", + " I am using": " أنا بستخدم", + " to ride with": " للركوب مع", + " as the driver.": " كسائق.", + "is driving a ": "يقود", + " with license plate ": "بلوحة ترخيص", + " I am currently located at ": "أنا حالياً في", + "Please go to Car now ": "الرجاء التحرك إلى السيارة الآن", + "You will receive a code in WhatsApp Messenger": + "سوف تتلقى رمزًا في واتساب ماسنجر", + "If you need assistance, contact us": + "إذا كنت بحاجة إلى المساعدة، تواصل معنا", + "Promo Ended": "انتهى العرض", + "Enter the promo code and get": "أدخل رمز الترويج واحصل على", + "DISCOUNT": "خصم", + "No wallet record found": "لم يتم العثور على سجل محفظة", + "for": "لمدة", + "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": + "Intaleq هو أكتر تطبيق آمن لمشاركة الركوب وبيقدّم مميزات كتير للكباتن والركاب. إحنا بنقدّم أقل نسبة عمولة وهي 8% بس، وده بيضمن إنك تاخد أحسن قيمة لمشاويرك. تطبيقنا فيه تأمين لأحسن الكباتن، صيانة دورية للعربيات مع أحسن المهندسين، وخدمات على الطريق لضمان تجربة محترمة وعالية الجودة لكل المستخدمين.", + "You can contact us during working hours from 12:00 - 19:00.": + "ممكن تتصل بينا في مواعيد العمل من الساعة 12:00 للساعة 7:00 مساءً.", + + "Choose a contact option": "اختر طريقة الاتصال", + "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": + "مواعيد العمل من الساعة 12:00 للساعة 7:00 مساءً.\nممكن تبعت رسالة واتساب أو إيميل.", + "Promo code copied to clipboard!": "تم نسخ رمز العرض إلى الحافظة!", + "Copy Code": "نسخ الرمز", + "Your invite code was successfully applied!": + "تم تطبيق رمز الدعوة بنجاح!", + "Payment Options": "خيارات الدفع", + "wait 1 minute to receive message": + "استنى دقيقة واحدة لاستلام الرسالة", + "Promo Copied!": "تم نسخ العرض!", + "You have copied the promo code.": "تم نسخ رمز العرض.", + "Valid Until:": "صالح حتى:", + "Select Payment Amount": "اختر مبلغ الدفع", + "The promotion period has ended.": "انتهت فترة العرض.", + "Promo Code Accepted": "تم قبول كود العرض", + "Tap on the promo code to copy it!": "اضغط على رمز العرض لنسخه!", + "Lowest Price Achieved": "تم الوصول إلى أقل سعر", + "Cannot apply further discounts.": + "لا يمكن تطبيق المزيد من الخصومات.", + "Promo Already Used": "تم استخدام كود العرض بالفعل", + "Invitation Used": "تم استخدام الدعوة", + "You have already used this promo code.": + "لقد استخدمت هذا الكود بالفعل.", + "Insert Your Promo Code": "أدخل كود العرض الخاص بك", + "Enter promo code here": "أدخل كود العرض هنا", + "Please enter a valid promo code": "يرجى إدخال كود عرض صالح", + "Awfar Car": "أوفر كار", + "Old and affordable, perfect for budget rides.": + "سيارة قديمة وبسعر معقول، مثالية للمشاوير الاقتصادية.", + " If you need to reach me, please contact the driver directly at": + "لو محتاج تتواصل معايا، يرجى التواصل مع السواق مباشرة على", + "No Car or Driver Found in your area.": + "لم يتم العثور على سيارة أو سواق في منطقتك.", + "Please Try anther time ": "الرجاء المحاولة في وقت آخر", + "There no Driver Aplly your order sorry for that ": + "مفيش سواق قبل طلبك، آسفين على كده", + "Trip Cancelled": "تم إلغاء الرحلة", + "The Driver Will be in your location soon .": + "السواق هيكون في موقعك قريبًا.", + "The distance less than 500 meter.": "المسافة أقل من 500 متر.", + "Promo End !": "انتهاء العرض!", + "There is no notification yet": "لا توجد إشعارات بعد", + "Use Touch ID or Face ID to confirm payment": + "استخدم Touch ID أو Face ID لتأكيد الدفع", + "Contact us for any questions on your order.": + "تواصل معانا لو عندك أي استفسارات بخصوص طلبك.", + "Pyament Cancelled .": "تم إلغاء الدفع.", + "type here": "اكتب هنا", + "Scan Driver License": "مسح رخصة القيادة", + "Please put your licence in these border": + "الرجاء وضع رخصتك داخل هذا الإطار", + "Camera not initialized yet": "الكاميرا لم يتم تشغيلها بعد", + "Take Image": "التقاط الصورة", + "AI Page": "صفحة الذكاء الاصطناعي", + "Take Picture Of ID Card": "التقاط صورة لبطاقة الهوية", + "Take Picture Of Driver License Card": + "التقاط صورة لبطاقة رخصة القيادة", + "We are process picture please wait ": + "نقوم بمعالجة الصورة، الرجاء الانتظار", + "There is no data yet.": "لا توجد بيانات بعد.", + "Name :": "الاسم:", + "Drivers License Class: ": "فئة رخصة القيادة:", + "Document Number: ": "رقم المستند:", + "Address: ": "العنوان:", + "Height: ": "الطول:", + "Expiry Date: ": "تاريخ الانتهاء:", + "Date of Birth: ": "تاريخ الميلاد:", + "You can\'t continue with us .\nYou should renew Driver license": + "لا يمكنك الاستمرار معانا. يجب تجديد رخصة القيادة", + "Detect Your Face ": "التعرف على وجهك", + "Go to next step\nscan Car License.": + "اذهب للخطوة اللي بعدها\nوامسح رخصة العربية.", + "Name in arabic": "الاسم باللغة العربية", + "Drivers License Class": "فئة رخصة القيادة", + "Date of Birth": "تاريخ الميلاد", + // "Select date and time of trip": "اختر تاريخ ووقت الرحلة", + "Selected Date": "التاريخ المحدد", + "Select Time": "اختر الوقت", + "Selected Time": "الوقت المحدد", + // "OK": "موافق", + // "Cancel": "إلغاء", + "Selected Date and Time": "التاريخ والوقت المحددين", + "Lets check Car license ": "يلا نفحص رخصة العربية", + "Car": "السيارة", + "Plate": "لوحة السيارة", + "N/A": "غير متوفر", + "Rides": "الرحلات", + "Age": "العمر", + // "Education": "التعليم", + // "Color": "اللون", + // "Displacement": "السعة", + // "Fuel": "الوقود", + "Selected driver": "السواق اللي اخترته", + "Lets check License Back Face": "يلا نفحص الوجه الخلفي للرخصة", + "Car License Card": "بطاقة رخصة السيارة", + "No image selected yet": "لم يتم اختيار أي صورة بعد", + "Made :": "الصنع:", + "model :": "الموديل:", + "VIN :": "رقم الشاسيه:", + "year :": "السنة:", + "ُExpire Date": "تاريخ الانتهاء", + "Login Driver": "تسجيل دخول السائق", + "Password must br at least 6 character.": + "كلمة المرور لازم تكون 6 حروف على الأقل.", + "if you don\'t have account": "لو معندكش حساب", + "Here recorded trips audio": "هنا تسجيلات صوتية للرحلات", + "Register as Driver": "التسجيل كسائق", + // "Privacy Notice": "إخطار الخصوصية", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": + "باختياري 'أوافق' أدناه، قمت بمراجعة والموافقة على شروط الاستخدام والإقرار بـ", + ". I am at least 18 years of age.": ". أنا عمري 18 سنة على الأقل.", + "Log Out Page": "صفحة تسجيل الخروج", + "Log Off": "تسجيل الخروج", + "Register Driver": "تسجيل سائق جديد", + "Verify Email For Driver": "التحقق من البريد الإلكتروني للسائق", + "Admin DashBoard": "لوحة تحكم المدير", + "Your name": "اسمك", + "your ride is applied": "تم قبول الطلب بتاعك", + "Your password": "كلمة المرور بتاعتك", + "H and": "ساعة و", + "LE": "جنيه", + "JOD": "دينار", + "m": "دقيقة", + "We search nearst Driver to you": "بندور على أقرب سواق ليك", + "please wait till driver accept your order": + "الرجاء الانتظار لحد ما السواق يقبل طلبك", + "No accepted orders? Try raising your trip fee to attract riders.": + "مفيش طلبات مقبولة؟ حاول تزود أجرة المشوار لجذب الركاب.", + "You should select one": "لازم تختار واحد", + "The driver accept your order for": "السواق قبل طلبك بمبلغ", + "Increase Fee": "زود الأجرة", + "No, thanks": "لا، شكرًا", + "The driver on your way": "الكابتن في طريقه إليك", + "Total price from ": "السعر الإجمالي من ", + "Order Details Intaleq": "طلب سريع", + // "Order Applied": "تم قبول الطلب", + "accepted your order": "قبل طلبك", + // "We regret to inform you that another driver has accepted this order.": + // "نأسف لإبلاغك بأن سائق آخر قد قبل هذا الطلب", + "Selected file:": "الملف المختار:", + "Your trip cost is": "تكلفة رحلتك هي", + "this will delete all files from your device": + "حذف هذا سيمسح كل الملفات من جهازك", + " in your": "في محفظتك", + "Exclusive offers and discounts always with the Intaleq app": + "عروض وخصومات حصرية دائمًا مع تطبيق Intaleq", + // "Please go to Car Driver": "الرجاء التوجه إلى سائق السيارة", + " wallet due to a previous trip.": "بسبب رحلة سابقة.", + "Submit Question": "اطرح سؤال", + "Please enter your Question.": "الرجاء إدخال سؤالك.", + "Help Details": "تفاصيل المساعدة", + "No trip yet found": "لم يتم حجز أي رحلة بعد", + "No Response yet.": "لا يوجد رد حتى الآن.", + " You Earn today is ": "اللي كسبته النهارده هو", + " You Have in": "عندك في", + "Total points is ": "إجمالي النقاط هو", + "Total Connection Duration:": "إجمالي مدة الاتصال:", + " H and": "ساعة و", + "Passenger name : ": "اسم الراكب", + "Cost Of Trip IS ": "تكلفة الرحلة هي", + "Arrival time": "وقت الوصول", + "arrival time to reach your point": "الوقت المتوقع للوصول إلى وجهتك", + "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "بالنسبة لمشاوير السرعة والسكوتر، السعر بيتحسب بشكل تلقائي. أما مشاوير الراحة، فالسعر بيكون حسب الوقت والمسافة.", + "Hello this is Driver": "مرحباً، أنا السواق", + "Is the Passenger in your Car ?": "هل الراكب معاك في العربية؟", + "Please wait for the passenger to enter the car before starting the trip.": + "الرجاء الانتظار لحد ما الراكب يركب العربية قبل ما تبدأ المشوار.", + "No ,still Waiting.": "لأ، لسه منتظر.", + "I arrive you": "أنا وصلت لك", + "I Arrive your site": "أنا وصلت مكانك", + "You are not in near to passenger location": + "أنت مش قريب من مكان الراكب", + "please go to picker location exactly": + "الرجاء الذهاب إلى موقع الراكب بالضبط", + "You Can Cancel Trip And get Cost of Trip From": + "ممكن تلغي المشوار وتاخد التكلفة من", + "Are you sure to cancel?": "أنت متأكد إنك عايز تلغي؟", + // "Yes": "نعم", + "Insert Emergincy Number": "أدخل رقم الطوارئ", + "Best choice for comfort car and flexible route and stops point": + "أفضل اختيار لعربية مريحة ومسار مرن ونقط وقوف", + "Insert": "إدخال", + "This is for scooter or a motorcycle.": "ده للتوصيل أو للموتوسيكل", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "المشوار ده من نقطة البداية لنقطة النهاية بسعر ثابت. والسواق لازم يلتزم بالمسار المحدد.", + "You can decline a request without any cost": + "تقدر ترفض الطلب من غير أي تكلفة", + "Perfect for adventure seekers who want to experience something new and exciting": + "مثالي لمحبي المغامرة اللي عايزين يجربوا حاجات جديدة ومثيرة", + "My current location is:": "موقعي الحالي هو:", + "and I have a trip on": "وعندي مشوار على", + "App with Passenger": "التطبيق\nمع الراكب", + "You will be pay the cost to driver or we will get it from you on next trip": + "هتدفع التكلفة للسواق أو هناخدها منك في المشوار اللي جاي", + "Trip has Steps": "الرحلة ليها خطوات", + "Distance from Passenger to destination is ": + "المسافة من الراكب للوجهة هي", + "price is": "التكلفة", + "This ride type does not allow changes to the destination or additional stops": + "نوع المشوار ده ميسمحش بتغيير الوجهة أو إضافة وقفات.", + "This price may be changed": "خلي بالك السعر ممكن يتغير", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "حتى لو مفيش خط، متقلقش! كلم السواق بتاعك من خلال التطبيق بتاعنا. بنستخدم تكنولوجيا حديثة عشان نحافظ على خصوصيتك.", + "This ride type allows changes, but the price may increase": + "نوع المشوار ده بيسمح بالتغييرات، بس السعر ممكن يزيد", + "Select one message": "اختار رسالة", + + "I'm waiting for you": "أنا في انتظارك", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "لاحظنا إن السرعة بتزيد عن 100 كم/ساعة. يرجى التباطؤ حفاظًا على سلامتك. لو حسيت بعدم الأمان، ممكن تشارك تفاصيل رحلتك مع حد تثق فيه أو تتصل بالشرطة عن طريق زر الطوارئ الأحمر.", + "Warning: Intaleqing detected!": "تحذير: تم رصد السرعة الزائدة!", + "Please help! Contact me as soon as possible.": + "الرجاء المساعدة! اتصل بي في أقرب وقت ممكن", + "Share Trip Details": "مشاركة تفاصيل الرحلة", + "Car Plate is ": "رقم اللوحة", + "VIP Order": "طلب VIP", + "the 300 points equal 300 L.E for you \nSo go and gain your money": + "اكسب 300 جنيه! كل 300 نقطة تساوي 300 جنيه. يلا استغل نقاطك!", + "the 300 points equal 300 L.E": "الـ 300 نقطة تساوي 300 جنيه ليك", + "The payment was not approved. Please try again.": + "لم يتم الموافقة على الدفع. يرجى المحاولة مرة أخرى.", + "Payment Failed": "فشل الدفع", + "Error": "خطأ", + "This is a scheduled notification.": "هذا إشعار مجدول.", + "An error occurred during the payment process.": + "حدث خطأ أثناء عملية الدفع.", + "The payment was approved.": "تمت الموافقة على الدفع.", + "Payment Successful": "نجح الدفع", + "No ride found yet": "مفيش طلبات متاحة حاليًا", + "Accept Order": "اقبل الطلب", + // "reject your order.": "رفض طلبك.", + "Bottom Bar Example": "مثال لشريط التنقل السفلي", + "Driver phone": "رقم السواق", + "Statistics": "الإحصائيات", + "Origin": "نقطة الانطلاق", + "Destination": "الوجهة", + "Driver Name": "اسم السائق", + "Driver Car Plate": "لوحة السيارة", + "Available for rides": "متاح للمشاوير", + "Scan Id": "مسح الهوية", + "Camera not initilaized yet": "الكاميرا لم يتم تشغيلها بعد", + "Scan ID MklGoogle": "مسح هوية MklGoogle", + "Language": "اللغة", + "Jordan": "الأردن", + "USA": "الولايات المتحدة الأمريكية", + "Egypt": "مصر", + "Turkey": "تركيا", + "Saudi Arabia": "المملكة العربية السعودية", + "Qatar": "قطر", + "Bahrain": "البحرين", + "Kuwait": "الكويت", + "But you have a negative salary of": "لكن عندك رصيد سالب بقيمة", + "Promo Code": "كود ترويجي", + "Your trip distance is": "مسافة رحلتك هي", + "Enter promo code": "أدخل كود ترويجي", + "You have promo!": "عندك عرض ترويجي!", + "Cost Duration": "تكلفة المدة", + "Duration is": "المدة هي", + "Leave": "مغادرة", + "Join": "انضمام", + "Heading your way now. Please be ready.": + "أنا في طريقي إليك الآن. يرجى الاستعداد.", + "Approaching your area. Should be there in 3 minutes.": + "أقترب من منطقتك. يفترض أوصل خلال 3 دقايق.", + "There's heavy traffic here. Can you suggest an alternate pickup point?": + "فيه زحمة مرور شديدة هنا. ممكن تقترح مكان تاني للاستلام؟", + "This ride is already taken by another driver.": + "المشوار ده أخده سواق تاني خلاص.", + "You Should be select reason.": "يجب أن تختار سبب.", + + "Waiting for Driver ...": "في انتظار السواق...", + "Latest Recent Trip": "آخر مشوار عملته", + "from your list": "من قائمتك", + "Do you want to change Work location": "عايز تغير مكان شغلك؟", + "Do you want to change Home location": "عايز تغير مكان بيتك؟", + "We Are Sorry That we dont have cars in your Location!": + "نعتذر لعدم وجود سيارات في موقعك!", + "Choose from Map": "اختر من الخريطة", + "Pick your ride location on the map - Tap to confirm": + "حدد مكان الالتقاء على الخريطة - اضغط للتأكيد", + // "To Work": "إلى العمل", + // "Are you want to go this site": "عايز تروح المكان ده؟", + "Closest & Cheapest": "الأقرب والأرخص", + // "Work Saved": "تم حفظ مكان العمل", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "Intaleq هو تطبيق توصيل آمن وموثوق وسهل الاستخدام.", + "With Intaleq, you can get a ride to your destination in minutes.": + "مع Intaleq، تقدر توصل لوجهتك في دقايق.", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "Intaleq ملتزمة بالأمان، وكل الكباتن بيتم فحصهم بدقة والتحقق من خلفيتهم.", + // "To Home": "إلى المنزل", + // "Home Saved": "تم حفظ مكان المنزل", + // "Destination selected": "تم اختيار الوجهة:", + // "Now select start pick": "اختار مكان الانطلاق دلوقتي:", + "Pick from map": "اختيار من الخريطة", + // "Click here point": "حدد هذه النقطة", + "No Car in your site. Sorry!": "مفيش عربية في موقعك. آسف!", + "Nearest Car for you about ": "أقرب عربية ليك على بعد حوالي ", + // "N/A": "غير متوفر", + "From :": "من:", + "Get Details of Trip": "عرض تفاصيل الرحلة", + "If you want add stop click here": "لو عايز تضيف وقفة اضغط هنا", + // "Driver": "السائق", + "Where you want go ": "رايح فين؟", + "My Card": "بطاقتي", + "Start Record": "بدء التسجيل", + "Wallet": "المحفظة", + "History of Trip": "سجل الرحلات", + "Helping Center": "مركز المساعدة", + "Record saved": "تم حفظ التسجيل", + "Trips recorded": "الرحلات المسجلة", + "Select Your Country": "اختر بلدك", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "لتلقي أدق المعلومات لموقعك، يرجى اختيار بلدك أدناه. هذا سيساعد على تخصيص تجربة التطبيق والمحتوى لبلدك.", + "Are you sure to delete recorded files": + "أكيد عايز تمسح الملفات الصوتية المسجلة؟", + "Select recorded trip": "اختر الملف الصوتي المسجل", + "Card Number": "رقم البطاقة", + "Hi, Where to ": "مرحباً، رايح فين؟", + "Pick your destination from Map": "اختار وجهتك من الخريطة", + "Add Stops": "إضافة محطات", + "Get Direction": "عرض الاتجاهات", + "Add Location": "إضافة موقع", + "Switch Rider": "تبديل الراكب", + "You will arrive to your destination after timer end.": + "هتوصل وجهتك بعد انتهاء العداد.", + "You can cancel trip": "تقدر تلغي الرحلة", + "The driver waitting you in picked location .": + "السواق منتظرك في المكان اللي اخترته.", + + "Pay with Your": "ادفع بـ", + "Pay with Credit Card": "ادفع ببطاقة الائتمان", + "Payment History": "سجل المدفوعات", + "Show Promos to Charge": "عرض العروض للشحن", + "Point": "نقطة", + "How many hours would you like to wait?": "كم ساعة تحب تنتظر؟", + "Driver Wallet": "محفظة السائق", + "Choose between those Type Cars": "اختار من بين أنواع العربيات دي", + "hour": "ساعة", + "Select Waiting Hours": "اختر ساعات الانتظار", + "Total Points is": "إجمالي النقاط هو", + "You will receive a code in SMS message": + "سوف تتلقى رمزًا في رسالة نصية", + "Done": "تم", + "Total Budget from trips is ": "إجمالي المبلغ المستحق من الرحلات هو", + "Total Amount:": "المبلغ الإجمالي:", + "Total Budget from trips by\nCredit card is ": + "إجمالي المبلغ المستحق من الرحلات عن طريق\nبطاقة الائتمان هو", + "This amount for all trip I get from Passengers": + "ده المبلغ اللي حصلت عليه من كل الرحلات من الركاب", + "Pay from my budget": "ادفع من رصيدي", + "This amount for all trip I get from Passengers and Collected For me in": + "ده المبلغ اللي حصلت عليه من كل الرحلات من الركاب وتم تجميعه لي في", + "You can buy points from your budget": "تقدر تشتري نقاط من رصيدك", + "insert amount": "أدخل المبلغ", + "You can buy Points to let you online\nby this list below": + "تقدر تشتري نقاط عشان تبقى متصل\nمن القائمة دي تحت", + "Create Wallet to receive your money": "إنشاء محفظة لاستقبال أموالك", + "Enter your feedback here": "اكتب ملاحظاتك هنا", + "Please enter your feedback.": "الرجاء إدخال ملاحظاتك.", + "Feedback": "ملاحظات", + "Submit ": "إرسال", + "Click here to Show it in Map": "اضغط هنا لعرضه على الخريطة", + "Canceled": "تم الإلغاء", + "Type your Email": "اكتب بريدك الإلكتروني", + "No I want": "لا أريد", + "Email is": "البريد الإلكتروني هو", + "Phone Number is": "رقم الهاتف هو", + "Date of Birth is": "تاريخ الميلاد هو", + "Sex is ": "النوع هو ", + "Car Details": "تفاصيل السيارة", + "VIN is": "رقم الشاسيه هو", + "Color is ": "اللون هو ", + "Make is ": "الشركة المصنعة", + "Model is": "الموديل هو", + "Year is": "السنة هي", + "Expiration Date ": "تاريخ الانتهاء ", + "Edit Your data": "تعديل بياناتك", + "write vin for your car": "اكتب رقم الشاسيه لعربيتك", + "VIN": "رقم الشاسيه", + "write Color for your car": "اكتب لون عربيتك", + "write Make for your car": "اكتب الشركة المصنعة لعربيتك", + // "Make": "الشركة المصنعة", + "write Model for your car": "اكتب موديل عربيتك", + // "Model": "الموديل", + "write Year for your car": "اكتب سنة صنع عربيتك", + // "Expiration Date": "تاريخ الانتهاء", + "write Expiration Date for your car": "اكتب تاريخ انتهاء رخصة عربيتك", + "Tariffs": "التعريفات", + "Minimum fare": "الحد الأدنى للأجرة", + "Maximum fare": "الحد الأقصى للأجرة", + "Flag-down fee": "رسوم فتح العداد", + "Including Tax": "شامل الضريبة", + "BookingFee": "رسوم الحجز", + "Morning": "الصباح", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "من 07:30 حتى 10:30 (الخميس، الجمعة، السبت، الاثنين)", + "Evening": "المساء", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "من 12:00 حتى 15:00 (الخميس، الجمعة، السبت، الاثنين)", + "Night": "الليل", + "You have in account": "عندك في الحساب", + "Select Country": "اختر الدولة", + "Ride Today : ": "عدد رحلات اليوم: ", + "After this period\nYou can\'t cancel!": + "بعد الفترة دي\nمش هتقدر تلغي!", + "from 23:59 till 05:30": "من 23:59 حتى 05:30", + "Rate Driver": "تقييم السائق", + "Total Cost is ": "صافي الربح", + "Write note": "اكتب ملاحظة", + "Time to arrive": "وقت الوصول", + "Ride Summaries": "ملخصات الرحلات", + "Total Cost": "المبلغ الإجمالي", + "Average of Hours of": "متوسط ساعات", + " is ON for this month": "في هذا الشهر", + "Days": "أيام", + "Total Hours on month": "إجمالي الساعات في الشهر", + "Counts of Hours on days": "عدد ساعات الأيام", + "OrderId": "رقم الرحلة", + "created time": "وقت الرحلة", + "Intaleq Over": "سرعة عالية", + "I will slow down": "حاضر ههدي السرعة", + "Map Passenger": "خريطة الراكب", + "Be Slowly": "بالراحة شوية في السرعة", + "If you want to make Google Map App run directly when you apply order": + "لو عايز تطبيق خرائط جوجل يشتغل تلقائي لما تطلب الخدمة", + "You can change the language of the app": "تقدر تغير لغة التطبيق", + "Your Budget less than needed": "القيمة المدخلة أقل من رصيدك", + "You can change the Country to get all features": + "تقدر تغير البلد عشان تحصل على كل المميزات", + "Change Country": "تغيير الدولة" + }, + + "tr": { + "Order": "Sipariş", + "OrderVIP": "VIP Sipariş", + "Cancel Trip": "Yolculuğu İptal Et", + "Passenger Cancel Trip": "Yolcu Yolculuğu İptal Etti", + "VIP Order": "VIP Sipariş", + "Hi ,I Arrive your site": "Selam, konumuna ulaştım", + "The driver accepted your trip": "Sürücü yolculuğunu kabul etti", + "message From passenger": "Yolcumuzdan mesaj", + "Cancel": "İptal", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "Yolculuk iptal edildi. Ücret cüzdanınıza eklenecektir.", + "token change": "Token değişikliği", + "face detect": "Yüz Algılama", + "Face Detection Result": "Yüz Algılama Sonucu", + "similar": "Benzer", + "not similar": "Benzer Değil", + "Hi ,I will go now": "Selam, şimdi yola çıkıyorum", + "Passenger come to you": "Yolcu size geliyor", + "Call Income": "Gelen Arama", + "Call Income from Passenger": "Yolcumuzdan Gelen Arama", + "Criminal Document Required": "Adli Sicil Kaydı Gerekli", + "You should have upload it .": "Bunu yüklemeniz gerekiyor.", + "Call End": "Arama Sonlandı", + "The order has been accepted by another driver.": + "Sipariş başka bir sürücü tarafından kabul edildi.", + "The order Accepted by another Driver": + "Sipariş Başka Sürücü Tarafından Kabul Edildi", + "We regret to inform you that another driver has accepted this order.": + "Üzgünüz, bu siparişi başka bir sürücü kabul etti.", + "Driver Applied the Ride for You": + "Sürücü Sizin İçin Yolculuk Başlattı", + "Applied": "Başvuruldu", + "Pay by Sham Cash": "Sham Cash ile Öde", + "Pay with Debit Card": "Banka Kartı ile Öde", + "Please go to Car Driver": "Lütfen Sürücüye Gidin", + "Ok I will go now.": "Tamam, şimdi gidiyorum.", + "Accepted Ride": "Kabul Edilen Yolculuk", + "Driver Accepted the Ride for You": + "Sürücü Sizin İçin Yolculuğu Kabul Etti", + "Promo": "Promosyon", + "Show latest promo": "Son promosyonları göster", + "Trip Monitoring": "Yolculuk Takibi", + "Driver Is Going To Passenger": "Sürücü Yolcuya Gidiyor", + "Please stay on the picked point.": + "Lütfen seçilen noktada bekleyin.", + "message From Driver": "Sürücüden Mesaj", + "Trip is Begin": "Yolculuk Başlıyor", + "Cancel Trip from driver": "Sürücü tarafından iptal", + "We will look for a new driver.\nPlease wait.": + "Yeni bir sürücü arıyoruz.\nLütfen bekleyin.", + "The driver canceled your ride.": "Sürücü yolculuğunuzu iptal etti.", + "Driver Finish Trip": "Sürücü Yolculuğu Bitirdi", + "you will pay to Driver": "Sürücüye ödeyeceksiniz", + "Don’t forget your personal belongings.": + "Kişisel eşyalarınızı unutmayın.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "Lütfen tüm kişisel eşyalarınızı aldığınızdan ve kalan ücretin cüzdanınıza eklendiğinden emin olun. Intaleq'i seçtiğiniz için teşekkürler.", + "Finish Monitor": "İzlemeyi Bitir", + "Trip finished": "Yolculuk tamamlandı", + "Call Income from Driver": "Sürücüden Gelen Arama", + "Driver Cancelled Your Trip": "Sürücü Yolculuğunuzu İptal Etti", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "Sürücüye zaman maliyetini ödeyeceksiniz, Intaleq Cüzdanınıza bakın", + "Order Applied": "Sipariş Uygulandı", + "welcome to intaleq": "Intaleq'e Hoş Geldiniz", + "login or register subtitle": + "Giriş yapmak veya kayıt olmak için numaranızı girin", + "An application error occurred.": "Bir uygulama hatası oluştu.", + "Submission Failed": "Gönderim Başarısız", + "Your complaint has been submitted.": "Şikayetiniz gönderildi.", + "Failed to connect to the server. Please try again.": + "Sunucuya bağlanılamadı. Lütfen tekrar deneyin.", + "Ride information not found. Please refresh the page.": + "Yolculuk bilgisi bulunamadı. Lütfen sayfayı yenileyin.", + "Please describe your issue before submitting.": + "Lütfen göndermeden önce sorununuzu açıklayın.", + "An application error occurred during upload.": + "Yükleme sırasında bir hata oluştu.", + "Failed to upload audio file.": "Ses dosyası yüklenemedi.", + "Audio uploaded successfully.": "Ses başarıyla yüklendi.", + "Complaint cannot be filed for this ride. It may not have been completed or started.": + "Bu yolculuk için şikayet oluşturulamaz. Tamamlanmamış veya başlamamış olabilir.", + "2. Attach Recorded Audio (Optional)": + "2. Ses Kaydı Ekle (İsteğe Bağlı)", + "Please enter a description of the issue.": + "Lütfen sorunun tanımını girin.", + "phone number label": "Telefon Numarası", + "phone number required": "Telefon numarası gerekli", + "send otp button": "Doğrulama Kodu Gönder", + "verify your number title": "Numaranızı Doğrulayın", + "otp sent subtitle": "5 haneli kod şuraya gönderildi:\n@phoneNumber", + "verify and continue button": "Doğrula ve Devam Et", + "enter otp validation": "Lütfen 5 haneli doğrulama kodunu girin", + "one last step title": "Son bir adım", + "complete profile subtitle": "Başlamak için profilinizi tamamlayın", + "first name label": "Ad", + "first name required": "Ad gerekli", + "last name label": "Soyad", + "Verify OTP": "Kodu Doğrula", + "Verification Code": "Doğrulama Kodu", + "We have sent a verification code to your mobile number:": + "Cep telefonu numaranıza bir doğrulama kodu gönderdik:", + "Verify": "Doğrula", + "Resend Code": "Kodu Tekrar Gönder", + "You can resend in": "Tekrar gönderim süresi:", + "seconds": "saniye", + "Error": "Hata", + "Please enter the complete 6-digit code.": + "Lütfen 6 haneli kodu eksiksiz girin.", + "last name required": "Soyad gerekli", + "email optional label": "E-posta (İsteğe Bağlı)", + "complete registration button": "Kaydı Tamamla", + "User with this phone number or email already exists.": + "Bu telefon veya e-posta ile kayıtlı bir kullanıcı zaten var.", + "otp sent success": "Kod WhatsApp'a başarıyla gönderildi.", + "failed to send otp": "Kod gönderilemedi.", + "server error try again": "Sunucu hatası, tekrar deneyin.", + "an error occurred": "Bir hata oluştu: @error", + "otp verification failed": "Kod doğrulaması başarısız.", + "registration failed": "Kayıt başarısız.", + "welcome user": "Hoş geldin, @firstName!", + "Cancel Trip from driver": "Sürücü tarafından iptal", + "We will look for a new driver.\nPlease wait.": + "Yeni bir sürücü arıyoruz.\nLütfen bekleyin.", + "The driver canceled your ride.": "Sürücü yolculuğunuzu iptal etti.", + "Driver Finish Trip": "Sürücü Yolculuğu Bitirdi", + "you will pay to Driver": "Sürücüye ödeyeceksiniz", + "Don't forget your personal belongings.": + "Kişisel eşyalarınızı unutmayın.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "Lütfen eşyalarınızı kontrol edin ve kalan ücretin cüzdanınıza eklendiğinden emin olun. Teşekkürler.", + "Finish Monitor": "İzlemeyi Bitir", + "Trip finished": "Yolculuk bitti", + "Call Income from Driver": "Sürücüden Gelen Arama", + "Driver Cancelled Your Trip": "Sürücü Yolculuğunuzu İptal Etti", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "Sürücünün zaman maliyetini ödeyeceksiniz, Intaleq Cüzdanınıza bakın", + "Order Applied": "Sipariş Alındı", + "Share App": "Uygulamayı Paylaş", + "Wallet": "Cüzdan", + "Balance": "Bakiye", + "Don’t forget your personal belongings.": "Eşyalarınızı unutmayın.", + "Profile": "Profil", + "Contact Support": "Destekle İletişime Geç", + "Session expired. Please log in again.": + "Oturum süresi doldu. Lütfen tekrar giriş yapın.", + "Security Warning": "⚠️ Güvenlik Uyarısı", + "Potential security risks detected. The application may not function correctly.": + "Potansiyel güvenlik riski algılandı. Uygulama düzgün çalışmayabilir.", + "please order now": "Şimdi sipariş ver", + "Where to": "Nereye?", + "Where are you going?": "Nereye gidiyorsunuz?", + "Quick Actions": "Hızlı İşlemler", + "My Balance": "Bakiyem", + "Order History": "Sipariş Geçmişi", + "Contact Us": "Bize Ulaşın", + "Driver": "Sürücü", + "Complaint": "Şikayet", + "Promos": "Promosyonlar", + "Recent Places": "Son Gidilen Yerler", + "From": "Nereden", + "WhatsApp Location Extractor": "WhatsApp Konum Çıkarıcı", + "Location Link": "Konum Linki", + "Paste location link here": "Konum linkini buraya yapıştırın", + "Go to this location": "Bu konuma git", + "Paste WhatsApp location link": "WhatsApp konum linkini yapıştır", + "Select Order Type": "Sipariş Türünü Seç", + "Choose who this order is for": "Bu sipariş kimin için?", + "I want to order for myself": "Kendim için", + "I want to order for someone else": "Başka biri için", + "Order for someone else": "Başkası için sipariş ver", + "Order for myself": "Kendim için sipariş ver", + "Are you want to go this site": "Bu konuma gitmek istiyor musunuz?", + "No": "Hayır", + "Pay by Sham Cash": "Sham Cash ile Öde", + "Intaleq Wallet": "Intaleq Cüzdan", + "Have a promo code?": "Promosyon kodunuz var mı?", + "Your Wallet balance is ": "Cüzdan bakiyeniz: ", + "Cash": "Nakit", + "Phone Number": "Telefon Numarası", + "Search country": "Ülke ara", + "Payment Successful!": "Ödeme Başarılı!", + "Your payment was successful.": "Ödemeniz başarıyla gerçekleşti.", + "Pay directly to the captain": "Doğrudan Kaptana öde", + "Top up Wallet to continue": "Devam etmek için Cüzdanı doldur", + "Or pay with Cash instead": "Veya Nakit öde", + "Confirm & Find a Ride": "Onayla & Araç Bul", + "Balance:": "Bakiye:", + "Alerts": "Uyarılar", + "Welcome Back!": "Tekrar Hoş Geldiniz!", + "Current Balance": "Güncel Bakiye", + "Set Wallet Phone Number": "Cüzdan Numarası Ayarla", + "Link a phone number for transfers": "Transferler için numara bağla", + "Payment History": "Ödeme Geçmişi", + "View your past transactions": "Geçmiş işlemleri görüntüle", + "Top up Wallet": "Cüzdanı Doldur", + "Add funds using our secure methods": + "Güvenli yöntemlerle bakiye ekle", + "Driver is waiting": "Sürücü bekliyor", + "Type your message...": "Mesajınızı yazın...", + "Driver Accepted Request": "Sürücü İsteği Kabul Etti", + "Message": "Mesaj", + "Call": "Ara", + "Set Phone Number": "Telefon Numarası Ayarla", + "Select This Ride": "Bu Yolculuğu Seç", + "Call Driver": "Sürücüyü Ara", + "Increase Fare": "Ücreti Artır", + "Stop": "Dur", + "Record": "Kaydet", + "Share": "Paylaş", + "WhatsApp": "WhatsApp", + "SOS": "SOS", + "No drivers accepted your request yet": + "Henüz hiçbir sürücü isteğinizi kabul etmedi", + "Increasing the fare might attract more drivers. Would you like to increase the price?": + "Ücreti artırmak daha fazla sürücü çekebilir. Fiyatı artırmak ister misiniz?", + "Please make sure not to leave any personal belongings in the car.": + "Lütfen araçta kişisel eşya bırakmadığınızdan emin olun.", + "Cancel Ride": "Yolculuğu İptal Et", + "Route Not Found": "Rota Bulunamadı", + "We couldn't find a valid route to this destination. Please try selecting a different point.": + "Bu hedefe geçerli bir rota bulamadık. Lütfen farklı bir nokta seçin.", + "alert": "Uyarı", + "You can call or record audio during this trip.": + "Bu yolculuk sırasında arama yapabilir veya ses kaydedebilirsiniz.", + "Warning: Speeding detected!": "Uyarı: Hız sınırı aşıldı!", + "Fixed Price": "Sabit Fiyat", + "Report": "Bildir", + "Comfort": "Konfor", + "Intaleq Balance": "Intaleq Bakiyesi", + "Search for a starting point": "Başlangıç noktası ara", + "Top up Balance to continue": "Devam etmek için Bakiye Yükle", + "Electric": "Elektrikli", + "Lady": "Kadın", + "Van": "Geniş Araç", + "Rayeh Gai": "Gidiş-Dönüş", + "Join Intaleq as a driver using my referral code!": + "Referans kodumla Intaleq sürücüsü ol!", + "Use code:": "Kodu kullan:", + "Download the Intaleq Driver app now and earn rewards!": + "Intaleq Sürücü uygulamasını indir ve kazan!", + "Get a discount on your first Intaleq ride!": + "İlk Intaleq yolculuğunda indirim kazan!", + "Use my referral code:": "Referans kodumu kullan:", + "Download the Intaleq app now and enjoy your ride!": + "Intaleq uygulamasını indir ve yolculuğun tadını çıkar!", + "Contacts Loaded": "Kişiler Yüklendi", + "Showing": "Gösteriliyor", + "of": "/", + "Pay by MTN Wallet": "MTN Cüzdan ile Öde", + "Pay by Syriatel Wallet": "Syriatel Cüzdan ile Öde", + "Customer not found": "Müşteri bulunamadı", + "Wallet is blocked": "Cüzdan bloke edildi", + "Customer phone is not active": "Müşteri telefonu aktif değil", + "Balance not enough": "Bakiye yetersiz", + "Balance limit exceeded": "Bakiye limiti aşıldı", + "Incorrect sms code": "⚠️ Hatalı SMS kodu. Lütfen tekrar deneyin.", + "contacts. Others were hidden because they don't have a phone number.": + "kişi. Diğerleri numarası olmadığı için gizlendi.", + "No contacts found": "Kişi bulunamadı", + "No contacts with phone numbers were found on your device.": + "Cihazınızda telefon numarası olan kişi bulunamadı.", + "Permission denied": "İzin reddedildi", + "Contact permission is required to pick contacts": + "Kişileri seçmek için rehber izni gerekli.", + "An error occurred while picking contacts:": + "Kişi seçilirken hata oluştu:", + "Please enter a correct phone": "Lütfen geçerli bir telefon girin", + "Success": "Başarılı", + "Invite sent successfully": "Davet başarıyla gönderildi", + "Hello! I'm inviting you to try Intaleq.": + "Merhaba! Seni Intaleq'i denemeye davet ediyorum.", + "Use my invitation code to get a special gift on your first ride!": + "İlk yolculuğunda özel hediye için davet kodumu kullan!", + "Your personal invitation code is:": "Kişisel davet kodun:", + "Be sure to use it quickly! This code expires at": + "Hızlı kullan! Kodun son kullanma tarihi:", + "Download the app now:": "Uygulamayı hemen indir:", + "See you on the road!": "Yollarda görüşmek üzere!", + "This phone number has already been invited.": + "Bu numara zaten davet edilmiş.", + "An unexpected error occurred. Please try again.": + "Beklenmedik bir hata oluştu. Lütfen tekrar deneyin.", + "You deserve the gift": "Hediyeyi hak ettiniz", + "Claim your 20 LE gift for inviting": "Davet için 20 TL hediyeni al", + "You have got a gift for invitation": "Davet için hediye kazandınız", + "You have earned 20": "20 kazandınız", + "LE": "TL", + "Vibration feedback for all buttons": + "Tüm butonlar için titreşim geri bildirimi", + "Share with friends and earn rewards": + "Arkadaşlarınla paylaş ve ödül kazan", + "Gift Already Claimed": "Hediye Zaten Alındı", + "You have already received your gift for inviting": + "Davet hediyenizi zaten aldınız", + "Keep it up!": "Böyle devam et!", + "has completed": "tamamladı", + "trips": "yolculuk", + "Personal Information": "Kişisel Bilgiler", + "Name": "Ad", + "Not set": "Ayarlanmadı", + "Gender": "Cinsiyet", + "Education": "Eğitim", + "Work & Contact": "İş & İletişim", + "Employment Type": "İstihdam Türü", + "Marital Status": "Medeni Durum", + "SOS Phone": "Acil Durum Telefonu", + "Sign Out": "Çıkış Yap", + "Delete My Account": "Hesabımı Sil", + "Update Gender": "Cinsiyeti Güncelle", + "Update": "Güncelle", + "Update Education": "Eğitimi Güncelle", + "Are you sure? This action cannot be undone.": + "Emin misiniz? Bu işlem geri alınamaz.", + "Confirm your Email": "E-postanızı Onaylayın", + "Type your Email": "E-postanızı Yazın", + "Delete Permanently": "Kalıcı Olarak Sil", + "Male": "Erkek", + "Female": "Kadın", + "Other": "Diğer", + "High School Diploma": "Lise Diploması", + "Associate Degree": "Önlisans", + "Bachelor's Degree": "Lisans", + "Master's Degree": "Yüksek Lisans", + "Doctoral Degree": "Doktora", + "Select your preferred language for the app interface.": + "Uygulama arayüzü için dil seçin.", + "Language Options": "Dil Seçenekleri", + "You can claim your gift once they complete 2 trips.": + "Onlar 2 yolculuk tamamlayınca hediyeni alabilirsin.", + "Closest & Cheapest": "En Yakın & En Ucuz", + "Comfort choice": "Konfor seçimi", + "Travel in a modern, silent electric car. A premium, eco-friendly choice for a smooth ride.": + "Modern, sessiz elektrikli araçla seyahat edin. Pürüzsüz bir yolculuk için premium, çevre dostu seçim.", + "Spacious van service ideal for families and groups. Comfortable, safe, and cost-effective travel together.": + "Aileler ve gruplar için ideal geniş araç hizmeti. Rahat, güvenli ve ekonomik.", + "Quiet & Eco-Friendly": "Sessiz & Çevre Dostu", + "Lady Captain for girls": "Kadınlar için Kadın Sürücü", + "Van for familly": "Aile için Geniş Araç", + "Are you sure to delete this location?": + "Bu konumu silmek istediğinize emin misiniz?", + "Change Work location?": "İş konumunu değiştir?", + "Change Home location?": "Ev konumunu değiştir?", + "Submit a Complaint": "Şikayet Gönder", + "Submit Complaint": "Şikayeti Gönder", + "No trip history found": "Yolculuk geçmişi bulunamadı", + "Your past trips will appear here.": + "Geçmiş yolculuklarınız burada görünecek.", + "1. Describe Your Issue": "1. Sorununuzu Açıklayın", + "Enter your complaint here...": "Şikayetinizi buraya girin...", + "2. Attach Recorded Audio": "2. Kayıtlı Ses Dosyası Ekle", + "No audio files found.": "Ses dosyası bulunamadı.", + "Confirm Attachment": "Eki Onayla", + "Attach this audio file?": "Bu ses dosyasını ekle?", + "Uploaded": "Yüklendi", + "3. Review Details & Response": "3. Detayları ve Yanıtı İncele", + "Date": "Tarih", + "Today's Promos": "Günün Fırsatları", + "No promos available right now.": "Şu an uygun promosyon yok.", + "Check back later for new offers!": + "Yeni teklifler için sonra tekrar kontrol et!", + "Valid Until:": "Son Geçerlilik:", + "CODE": "KOD", + "Login": "Giriş Yap", + "Sign in for a seamless experience": + "Kusursuz bir deneyim için giriş yapın", + "Sign In with Google": "Google ile Giriş Yap", + "Sign in with Apple": "Apple ile Giriş Yap", + "User not found": "Kullanıcı bulunamadı", + "Need assistance? Contact us": "Yardım mı lazım? Bize ulaşın", + "Email": "E-posta", + "Your email address": "E-posta adresiniz", + "Enter a valid email": "Geçerli bir e-posta girin", + "Password": "Şifre", + "Your password": "Şifreniz", + "Enter your password": "Şifrenizi girin", + "Submit": "Gönder", + "Terms of Use & Privacy Notice": + "Kullanım Şartları & Gizlilik Bildirimi", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the ": + "Aşağıdaki \"Kabul Ediyorum\" seçeneğini seçerek, şunları okuduğumu ve kabul ettiğimi onaylıyorum: ", + "Terms of Use": "Kullanım Şartları", + " and acknowledge the ": " ve şunu kabul ediyorum: ", + "Privacy Notice": "Gizlilik Bildirimi", + " . I am at least 18 years old.": " . En az 18 yaşındayım.", + "I Agree": "Kabul Ediyorum", + "Continue": "Devam Et", + "Enable Location": "Konumu Etkinleştir", + "To give you the best experience, we need to know where you are. Your location is used to find nearby captains and for pickups.": + "Size en iyi deneyimi sunmak için nerede olduğunuzu bilmemiz gerek. Konumunuz yakın sürücüleri bulmak için kullanılır.", + "Allow Location Access": "Konum Erişimine İzin Ver", + "Welcome to Intaleq!": "Intaleq'e Hoş Geldiniz!", + "Before we start, please review our terms.": + "Başlamadan önce lütfen şartlarımızı inceleyin.", + "Your journey starts here": "Yolculuğunuz burada başlıyor", + "Cancel Search": "Aramayı İptal Et", + "Set pickup location": "Alım noktasını ayarla", + "Move the map to adjust the pin": + "İğneyi ayarlamak için haritayı kaydırın", + "Searching for the nearest captain...": "En yakın kaptan aranıyor...", + "No one accepted? Try increasing the fare.": + "Kimse kabul etmedi mi? Ücreti artırmayı deneyin.", + "Increase Your Trip Fee (Optional)": + "Yolculuk Ücretini Artır (İsteğe Bağlı)", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "Henüz sürücü bulunamadı. Teklifinizi daha cazip hale getirmek için ücreti artırmayı düşünün.", + "No, thanks": "Hayır, teşekkürler", + "Increase Fee": "Ücreti Artır", + "Copy": "Kopyala", + "Promo Copied!": "Promosyon Kopyalandı!", + "Code": "Kod", + "copied to clipboard": "panoya kopyalandı", + "Price": "Fiyat", + "Intaleq's Response": "Intaleq'in Yanıtı", + "Awaiting response...": "Yanıt bekleniyor...", + "Audio file not attached": "Ses dosyası eklenmedi", + "The audio file is not uploaded yet.\\nDo you want to submit without it?": + "Ses dosyası henüz yüklenmedi.\\nOnsuz göndermek istiyor musunuz?", + "deleted": "silindi", + "To Work": "İşe", + "Work Saved": "İş Kaydedildi", + "To Home": "Eve", + "Home Saved": "Ev Kaydedildi", + "Destination selected": "Varış noktası seçildi", + "Now select start pick": "Şimdi başlangıç noktasını seç", + "OK": "TAMAM", + "Confirm Pick-up Location": "Alım Konumunu Onayla", + "Set Location on Map": "Konumu Haritada Belirle", + "Leave a detailed comment (Optional)": + "Detaylı yorum bırak (İsteğe Bağlı)", + "Share your experience to help us improve...": + "Gelişmemize yardımcı olmak için deneyimini paylaş...", + "Your valuable feedback helps us improve our service quality.": + "Değerli geri bildiriminiz hizmet kalitemizi artırmaya yardımcı olur.", + "witout zero": "sıfır olmadan", + "Top up Balance": "Bakiye Yükle", + "An error occurred": "Bir hata oluştu", + "Send WhatsApp Message": "WhatsApp Mesajı Gönder", + "How was your trip with": "Yolculuğun nasıldı:", + "Drawing route on map...": "Rota haritaya çiziliyor...", + "Please wait while we prepare your trip.": + "Lütfen yolculuğunuz hazırlanırken bekleyin.", + "Submit Rating": "Puanı Gönder", + "Call Support": "Desteği Ara", + "You can contact us during working hours from 10:00 - 16:00.": + "Çalışma saatleri (10:00 - 16:00) içinde bize ulaşabilirsiniz.", + "Intaleq is the safest and most reliable ride-sharing app designed especially for passengers in Syria. We provide a comfortable, respectful, and affordable riding experience with features that prioritize your safety and convenience. Our trusted captains are verified, insured, and supported by regular car maintenance carried out by top engineers. We also offer on-road support services to make sure every trip is smooth and worry-free. With Intaleq, you enjoy quality, safety, and peace of mind—every time you ride.": + "Intaleq, Türkiye'deki yolcular için tasarlanmış en güvenli ve güvenilir araç paylaşım uygulamasıdır. Güvenliğinizi ve rahatlığınızı ön planda tutarak konforlu, saygılı ve uygun fiyatlı bir yolculuk deneyimi sunuyoruz. Güvenilir kaptanlarımız doğrulanmış, sigortalıdır. Intaleq ile her yolculukta kalitenin ve güvenin tadını çıkarın.", + "Work time is from 10:00 AM to 16:00 PM.\nYou can send a WhatsApp message or email.": + "Çalışma saatleri 10:00 - 16:00 arasıdır.\nWhatsApp mesajı veya e-posta gönderebilirsiniz.", + "Sorry": "Üzgünüz", + "Customer MSISDN doesn’t have customer wallet": + "Müşteri numarasının cüzdanı yok", + "Please enter the number without the leading 0": + "Lütfen numarayı başında 0 olmadan girin", + "Please enter your phone number": "Lütfen telefon numaranızı girin", + "Phone number seems too short": "Telefon numarası çok kısa görünüyor", + "No cars are available at the moment. Please try again later.": + "Şu anda müsait araç yok. Lütfen daha sonra tekrar deneyin.", + "Nearest Car: ~": "En Yakın Araç: ~", + "Nearest Car": "En Yakın Araç", + "No cars nearby": "Yakında araç yok", + "Favorite Places": "Favori Yerler", + "No favorite places yet!": "Henüz favori yer yok!", + "from your favorites": "favorilerinizden", + "Back": "Geri", + "Enter your code below to apply the discount.": + "İndirimi uygulamak için kodu aşağıya girin.", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the": + "Aşağıda \"Kabul Ediyorum\"u seçerek, şunları okuduğumu ve kabul ettiğimi onaylıyorum:", + "and acknowledge the": "ve şunu kabul ediyorum:", + "Enable Location Access": "Konum Erişimini Etkinleştir", + "We need your location to find nearby drivers for pickups and drop-offs.": + "Alım ve bırakma işlemleri için yakındaki sürücüleri bulmak adına konumunuza ihtiyacımız var.", + "You should restart app to change language": + "Dili değiştirmek için uygulamayı yeniden başlatmalısınız", + "Home Page": "Ana Sayfa", + "To change Language the App": "Uygulama Dilini Değiştirmek İçin", + "Learn more about our app and mission": + "Uygulamamız ve misyonumuz hakkında daha fazla bilgi edinin", + "Promos For Today": "Bugünün Fırsatları", + "Choose your ride": "Yolculuğunu seç", + "Your Journey Begins Here": "Yolculuğun Burada Başlıyor", + "Bonus gift": "Bonus hediye", + "Pay": "Öde", + "Get": "Al", + "Send to Driver Again": "Sürücüye Tekrar Gönder", + "Driver Name:": "Sürücü Adı:", + "No trip data available": "Yolculuk verisi yok", + "Car Plate:": "Plaka:", + "remaining": "kalan", + "Order Cancelled": "Sipariş İptal Edildi", + "You canceled VIP trip": "VIP yolculuğu iptal ettiniz", + "Passenger cancelled order": "Yolcu siparişi iptal etti", + "Your trip is scheduled": "Yolculuğunuz planlandı", + "Don't forget your ride!": "Yolculuğunu unutma!", + "Trip updated successfully": "Yolculuk başarıyla güncellendi", + "Car Make:": "Marka:", + "Car Model:": "Model:", + "Car Color:": "Renk:", + "Driver Phone:": "Sürücü Tel:", + "Pre-booking": "Ön Rezervasyon", + "Waiting VIP": "VIP Bekleniyor", + "Driver List": "Sürücü Listesi", + "Confirm Trip": "Yolculuğu Onayla", + "Select date and time of trip": "Yolculuk tarihini ve saatini seç", + "Date and Time Picker": "Tarih ve Saat Seçici", + "Trip Status:": "Yolculuk Durumu:", + "pending": "bekliyor", + "accepted": "kabul edildi", + "rejected": "reddedildi", + "Apply": "Uygula", + "Enter your promo code": "Promosyon kodunu gir", + "Apply Promo Code": "Promosyon Kodunu Uygula", + "Scheduled Time:": "Planlanan Zaman:", + "No drivers available": "Sürücü yok", + "No drivers available at the moment. Please try again later.": + "Şu anda müsait sürücü yok. Lütfen daha sonra tekrar deneyin.", + "you have a negative balance of": "negatif bakiyeniz var:", + "Please try again in a few moments": + "Lütfen birkaç dakika içinde tekrar deneyin", + "Unknown Driver": "Bilinmeyen Sürücü", + "in your": "cüzdanınızda", + "The driver accepted your order for": + "Sürücü siparişinizi şu tutara kabul etti:", + "wallet due to a previous trip.": + "önceki yolculuk nedeniyle cüzdandan.", + "rides": "yolculuklar", + "Add Work": "İş Ekle", + "The reason is": "Sebep:", + "User does not have a wallet #1652": "Kullanıcının cüzdanı yok #1652", + "Price of trip": "Yolculuk ücreti", + "From:": "Nereden:", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Intaleq ve Teslimat yolculukları için fiyat dinamik hesaplanır. Konfor yolculukları için fiyat zaman ve mesafeye dayalıdır.", + "Phone Wallet Saved Successfully": + "Telefon Cüzdanı Başarıyla Kaydedildi", + "Add wallet phone you use": "Kullandığınız cüzdan telefonunu ekleyin", + "Update Available": "Güncelleme Mevcut", + "Phone number must be exactly 11 digits long": + "Telefon numarası tam 11 haneli olmalıdır", + "Insert Wallet phone number": "Cüzdan telefon numarasını girin", + "Phone number isn't an Egyptian phone number": + "Telefon numarası Türkiye numarası değil", + "A new version of the app is available. Please update to the latest version.": + "Uygulamanın yeni bir sürümü mevcut. Lütfen güncelleyin.", + "We use location to get accurate and nearest passengers for you": + "Size en yakın ve doğru yolcuları bulmak için konumu kullanıyoruz", + "This ride is already applied by another driver.": + "Bu yolculuk başka bir sürücü tarafından alınmış.", + "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": + "En yakın sürücüyü bulmak ve doğru konum bilgisi sağlamak için hassas konumunuzu kullanıyoruz. Ayarlardan yönetebilirsiniz.", + "Where are you, sir?": "Neredesiniz efendim?", + "I've been trying to reach you but your phone is off.": + "Size ulaşmaya çalışıyorum ama telefonunuz kapalı.", + "Please don't be late": "Lütfen gecikmeyin", + "Please don't be late, I'm waiting for you at the specified location.": + "Lütfen gecikmeyin, belirtilen konumda sizi bekliyorum.", + "My location is correct. You can search for me using the navigation app": + "Konumum doğru. Navigasyon uygulamasıyla beni arayabilirsiniz.", + "Hello, I'm at the agreed-upon location": + "Merhaba, anlaşılan konumdayım", + "How much longer will you be?": "Ne kadar sürer?", + "Phone number is verified before": + "Telefon numarası daha önce doğrulanmış", + "Change Ride": "Yolculuğu Değiştir", + "You can change the destination by long-pressing any point on the map": + "Haritada herhangi bir noktaya uzun basarak varış yerini değiştirebilirsiniz", + "Pick from map destination": "Haritadan varış yeri seç", + "Pick or Tap to confirm": "Seç veya Onaylamak için Dokun", + "Accepted your order": "Siparişinizi kabul etti", + "Order Accepted": "Sipariş Kabul Edildi", + "with type": "türü ile", + "accepted your order at price": + "siparişinizi şu fiyattan kabul etti:", + "you canceled order": "siparişi iptal ettiniz", + "If you want order to another person": + "Başka birine sipariş vermek isterseniz", + "upgrade price": "fiyatı yükselt", + "airport": "havalimanı", + "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": + "Esnek rota ve durak noktaları ile konforlu bir araç için en iyi seçim.", + "You can upgrade price to may driver accept your order": + "Sürücünün kabul etmesi için fiyatı yükseltebilirsiniz", + "Change Route": "Rotayı Değiştir", + "No Captain Accepted Your Order": + "Hiçbir Kaptan Siparişinizi Kabul Etmedi", + "We are looking for a captain but the price may increase to let a captain accept": + "Kaptan arıyoruz ancak kabul edilmesi için fiyat artabilir", + "No, I want to cancel this trip": + "Hayır, bu yolculuğu iptal etmek istiyorum", + "Attention": "Dikkat", + "Trip Cancelled. The cost of the trip will be deducted from your wallet.": + "Yolculuk İptal Edildi. Yolculuk ücreti cüzdanınızdan düşülecektir.", + "You will be charged for the cost of the driver coming to your location.": + "Sürücünün konumunuza gelme maliyeti tahsil edilecektir.", + "reject your order.": "siparişinizi reddetti.", + "Order Under Review": "Sipariş İnceleniyor", + "is reviewing your order. They may need more information or a higher price.": + "siparişinizi inceliyor. Daha fazla bilgi veya yüksek fiyat gerekebilir.", + "Vibration": "Titreşim", + "Resend code": "Kodu tekrar gönder", + "change device": "cihaz değiştir", + "Device Change Detected": "Cihaz Değişikliği Algılandı", + "You can only use one device at a time. This device will now be set as your active device.": + "Aynı anda sadece bir cihaz kullanabilirsiniz. Bu cihaz şimdi aktif cihazınız olarak ayarlanacak.", + "Click here point": "Buraya tıkla", + "Are you want to change": "Değiştirmek istiyor musunuz?", + "by": "tarafından", + "Enter your complaint here": "Şikayetinizi buraya girin", + "Please enter your complaint.": "Lütfen şikayetinizi girin.", + "Complaint data saved successfully": + "Şikayet verisi başarıyla kaydedildi", + "Trip Monitor": "Yolculuk İzleme", + "Insert SOS Phone": "Acil Durum Telefonu Gir", + "Add SOS Phone": "Acil Durum Telefonu Ekle", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "Sevgili ,\n\n🚀 Heyecanlı bir yolculuğa başladım ve detayları ile anlık konumumu seninle paylaşmak istiyorum! Lütfen Intaleq uygulamasını indir. Böylece yolculuk detaylarımı ve son konumumu görebilirsin.\n\n👉 İndirme linki: \nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nMaceram boyunca seni yakınımda hissetmek istiyorum!\n\nIntaleq ,", + "Send Intaleq app to him": "Ona Intaleq uygulamasını gönder", + "No passenger found for the given phone number": + "Verilen numara için yolcu bulunamadı", + "No user found for the given phone number": + "Verilen numara için kullanıcı bulunamadı", + "This price is": "Bu fiyat:", + "Work": "İş", + "Add Home": "Ev Ekle", + "Notifications": "Bildirimler", + "💳 Pay with Credit Card": "💳 Kredi Kartı ile Öde", + "⚠️ You need to choose an amount!": "⚠️ Bir tutar seçmelisiniz!", + "💰 Pay with Wallet": "💰 Cüzdan ile Öde", + "You must restart the app to change the language.": + "Dili değiştirmek için uygulamayı yeniden başlatmalısınız.", + "joined": "katıldı", + "Driver joined the channel": "Sürücü kanala katıldı", + "Driver left the channel": "Sürücü kanaldan ayrıldı", + "Call Page": "Arama Sayfası", + "Call Left": "Kalan Arama", + " Next as Cash !": " Sonraki Nakit!", + "To use Wallet charge it": "Cüzdanı kullanmak için yükleme yapın", + "We are searching for the nearest driver to you": + "Size en yakın sürücüyü arıyoruz", + "Best choice for cities": "Şehirler için en iyi seçim", + "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": + "Gidiş-Dönüş: Şehirler arası rahat seyahat için kolay ve güvenilir hizmet.", + "This trip is for women only": "Bu yolculuk sadece kadınlar içindir", + "Total budgets on month": "Aylık toplam bütçe", + "You have call from driver": "Sürücüden aramanız var", + "Intaleq": "Intaleq", + "passenger agreement": "yolcu sözleşmesi", + "To become a passenger, you must review and agree to the ": + "Yolcu olmak için şunları inceleyip kabul etmelisiniz: ", + "agreement subtitle": + "Devam etmek için Kullanım Şartları ve Gizlilik Politikasını kabul etmelisiniz.", + "terms of use": "kullanım şartları", + " and acknowledge our Privacy Policy.": + " ve Gizlilik Politikamızı kabul edin.", + "and acknowledge our": "ve şunu kabul edin:", + "privacy policy": "gizlilik politikası.", + "i agree": "kabul ediyorum", + "Driver already has 2 trips within the specified period.": + "Sürücünün belirtilen sürede zaten 2 yolculuğu var.", + "The invitation was sent successfully": "Davet başarıyla gönderildi", + "You should select your country": "Ülkenizi seçmelisiniz", + "Scooter": "Scooter", + "A trip with a prior reservation, allowing you to choose the best captains and cars.": + "Ön rezervasyonlu yolculuk, en iyi kaptanları ve araçları seçmenize olanak tanır.", + "Mishwar Vip": "Mishwar VIP", + "The driver waiting you in picked location .": + "Sürücü sizi seçilen konumda bekliyor.", + "About Us": "Hakkımızda", + "You can change the vibration feedback for all buttons": + "Tüm butonlar için titreşimi değiştirebilirsiniz", + "Most Secure Methods": "En Güvenli Yöntemler", + "In-App VOIP Calls": "Uygulama İçi VOIP Aramalar", + "Recorded Trips for Safety": "Güvenlik İçin Kaydedilen Yolculuklar", + "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": + "\nAyrıca uygun fiyat önceliğimizdir, rekabetçi fiyatlarla yolculuğu erişilebilir kılıyoruz.", + "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": + "Intaleq, güvenliğiniz ve bütçeniz düşünülerek tasarlanmış bir araç paylaşım uygulamasıdır. Sizi bölgenizdeki güvenilir sürücülerle buluşturuyoruz.", + "Sign In by Apple": "Apple ile Giriş Yap", + "Sign In by Google": "Google ile Giriş Yap", + "How do I request a ride?": "Nasıl yolculuk isterim?", + "Step-by-step instructions on how to request a ride through the Intaleq app.": + "Intaleq uygulaması üzerinden yolculuk isteme adımları.", + "What types of vehicles are available?": "Hangi araç türleri mevcut?", + "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": + "Intaleq ihtiyaçlarınıza uygun ekonomi, konfor ve lüks dahil çeşitli araç seçenekleri sunar.", + "How can I pay for my ride?": "Yolculuğumu nasıl öderim?", + "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": + "Intaleq nakit veya kredi/banka kartı ile ödeme seçenekleri sunar.", + "Can I cancel my ride?": "Yolculuğumu iptal edebilir miyim?", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "Evet, iptal edebilirsiniz ancak iptal zamanlamasına göre ücret uygulanabilir.", + "Driver Registration & Requirements": "Sürücü Kaydı & Gereksinimler", + "How can I register as a driver?": + "Sürücü olarak nasıl kayıt olurum?", + "What are the requirements to become a driver?": + "Sürücü olma şartları nelerdir?", + "Visit our website or contact Intaleq support for information on driver registration and requirements.": + "Bilgi için web sitemizi ziyaret edin veya destek ile iletişime geçin.", + "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": + "Intaleq, yolculuk sırasında iletişim kurmanız için uygulama içi sohbet sunar.", + "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": + "Intaleq güvenliğinizi önceler. Sürücü doğrulama, takip ve acil durum seçenekleri sunar.", + "Frequently Questions": "Sıkça Sorulan Sorular", + "User does not exist.": "Kullanıcı mevcut değil.", + "We need your phone number to contact you and to help you.": + "Size ulaşmak ve yardım etmek için numaranıza ihtiyacımız var.", + "You will recieve code in sms message": "Kodu SMS ile alacaksınız", + "Please enter": "Lütfen girin", + "We need your phone number to contact you and to help you receive orders.": + "Sipariş alabilmeniz ve iletişim için numaranıza ihtiyacımız var.", + "The full name on your criminal record does not match the one on your driver's license. Please verify and provide the correct documents.": + "Adli sicil kaydındaki isim ehliyetinizle eşleşmiyor. Lütfen doğrulayın.", + "The national number on your driver's license does not match the one on your ID document. Please verify and provide the correct documents.": + "Ehliyetinizdeki T.C. kimlik no kimliğinizle eşleşmiyor.", + "Capture an Image of Your Criminal Record": + "Adli Sicil Kaydınızın Fotoğrafını Çekin", + "IssueDate": "Veriliş Tarihi", + "Capture an Image of Your car license front": + "Ruhsatınızın Ön Yüzünün Fotoğrafını Çekin", + "Capture an Image of Your ID Document front": + "Kimliğinizin Ön Yüzünün Fotoğrafını Çekin", + "NationalID": "T.C. Kimlik No", + "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": + "Uygulamayı paylaşın ve kodunuzla yapılan yolculuklardan ödül kazanın.", + "FullName": "Tam Ad", + "No invitation found yet!": "Henüz davet bulunamadı!", + "InspectionResult": "Muayene Sonucu", + "Criminal Record": "Adli Sicil Kaydı", + "The email or phone number is already registered.": + "E-posta veya telefon numarası zaten kayıtlı.", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "Sürücü olmak için ehliyet, kimlik ve ruhsatınızı yüklemelisiniz. Yapay zekamız 2-3 dakikada doğrular. Sahte belge yüklemek yasal sonuçlar doğurur.", + "Documents check": "Belge Kontrolü", + "Driver's License": "Sürücü Belgesi (Ehliyet)", + "for your first registration!": "ilk kaydınız için!", + "Get it Now!": "Hemen Al!", + "before": "önce", + "Code not approved": "Kod onaylanmadı", + "3000 LE": "3000 TL", + "Do you have an invitation code from another driver?": + "Başka bir sürücüden davet kodunuz var mı?", + "Paste the code here": "Kodu buraya yapıştır", + "No, I don't have a code": "Hayır, kodum yok", + "Code approved": "Kod onaylandı", + "Install our app:": "Uygulamamızı yükle:", + "Invite another driver and both get a gift after he completes 100 trips!": + "Başka bir sürücüyü davet et, 100 yolculuk tamamlayınca ikiniz de kazanın!", + "Invite": "Davet Et", + "Are you sure?": "Emin misiniz?", + "This will delete all recorded files from your device.": + "Bu işlem cihazınızdaki tüm kayıtlı dosyaları silecek.", + "Select a file": "Dosya seç", + "Select a File": "Dosya Seç", + "Delete": "Sil", + "attach audio of complain": "şikayet ses kaydını ekle", + "Phone Number Check": "Telefon Numarası Kontrolü", + "Drivers received orders": "Sürücüler siparişleri aldı", + "No audio files recorded.": "Ses dosyası kaydedilmedi.", + "This is for delivery or a motorcycle.": + "Bu teslimat veya motosiklet içindir.", + "Intaleq Reminder": "Intaleq Hatırlatıcı", + "It's time to check the Intaleq app!": + "Intaleq uygulamasını kontrol etme zamanı!", + "you must insert token code": "token kodunu girmelisiniz", + "Something went wrong. Please try again.": + "Bir şeyler ters gitti. Lütfen tekrar deneyin.", + "Trip Details": "Yolculuk Detayları", + "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": + "Şikayet detayı yok, çözüm sunamıyorum. Lütfen bilgi sağlayın.", + "Submit Your Complaint": "Şikayetinizi Gönderin", + "Status": "Durum", + "Choose from contact": "Rehberden seç", + "attach correct audio": "doğru sesi ekle", + "be sure": "emin olun", + "Audio uploaded successfully.": "Ses başarıyla yüklendi.", + "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": + "En yeni model araçlar ve rota özgürlüğü isteyen yolcular için mükemmel", + "Share this code with your friends and earn rewards when they use it!": + "Bu kodu arkadaşlarınla paylaş ve kullandıklarında ödül kazan!", + "Enter phone": "Telefon gir", + "complete, you can claim your gift": + "tamamlandı, hediyeni alabilirsin", + "When": "Ne zaman", + "Enter driver's phone": "Sürücü telefonunu gir", + "Send Invite": "Davet Gönder", + "Show Invitations": "Davetleri Göster", + "License Type": "Ehliyet Sınıfı", + "National Number": "T.C. Kimlik No", + "Name (Arabic)": "Ad (Arapça)", + "Name (English)": "Ad (İngilizce)", + "Address": "Adres", + "Issue Date": "Veriliş Tarihi", + "Expiry Date": "Geçerlilik Tarihi", + "License Categories": "Ehliyet Kategorileri", + "driver_license": "ehliyet", + "Capture an Image of Your Driver License": + "Ehliyetinizin Fotoğrafını Çekin", + "ID Documents Back": "Kimlik Arka Yüzü", + "National ID": "T.C. Kimlik", + "Occupation": "Meslek", + "Religion": "Din", + "Full Name (Marital)": "Tam Ad", + "Expiration Date": "Son Kullanma Tarihi", + "Capture an Image of Your ID Document Back": + "Kimliğinizin Arka Yüzünün Fotoğrafını Çekin", + "ID Documents Front": "Kimlik Ön Yüzü", + "First Name": "Ad", + "CardID": "Kart No", + "Vehicle Details Front": "Araç Detayları Ön", + "Plate Number": "Plaka No", + "Owner Name": "Ruhsat Sahibi", + "Vehicle Details Back": "Araç Detayları Arka", + "Make": "Marka", + "Model": "Model", + "Year": "Yıl", + "Chassis": "Şasi No", + "Color": "Renk", + "Displacement": "Motor Hacmi", + "Fuel": "Yakıt", + "Tax Expiry Date": "Vergi Bitiş Tarihi", + "Inspection Date": "Muayene Tarihi", + "Capture an Image of Your car license back": + "Ruhsatınızın Arka Yüzünün Fotoğrafını Çekin", + "Capture an Image of Your Driver's License": + "Ehliyetinizin Fotoğrafını Çekin", + "Sign in with Google for easier email and name entry": + "Daha kolay giriş için Google ile bağlanın", + "You will choose allow all the time to be ready receive orders": + "Sipariş almak için 'Her zaman izin ver'i seçmelisiniz", + "Get to your destination quickly and easily.": + "Hedefinize hızlı ve kolayca ulaşın.", + "Enjoy a safe and comfortable ride.": + "Güvenli ve konforlu bir yolculuğun tadını çıkarın.", + "Choose Language": "Dil Seçin", + "Pay with Wallet": "Cüzdan ile Öde", + "Invalid MPIN": "Geçersiz MPIN", + "Invalid OTP": "Geçersiz Kod", + "Enter your email address": "E-posta adresinizi girin", + "Please enter Your Email.": "Lütfen e-postanızı girin.", + "Enter your phone number": "Telefon numaranızı girin", + "Please enter your phone number.": "Lütfen telefon numaranızı girin.", + "Please enter Your Password.": "Lütfen şifrenizi girin.", + "if you dont have account": "hesabınız yoksa", + "Register": "Kayıt Ol", + "Accept Ride's Terms & Review Privacy Notice": + "Şartları Kabul Et & Gizliliği İncele", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "Aşağıdaki 'Kabul Ediyorum' seçeneği ile şartları kabul etmiş ve 18 yaşından büyük olduğumu onaylamış olurum.", + "First name": "Ad", + "Enter your first name": "Adınızı girin", + "Please enter your first name.": "Lütfen adınızı girin.", + "Last name": "Soyad", + "Enter your last name": "Soyadınızı girin", + "Please enter your last name.": "Lütfen soyadınızı girin.", + "City": "Şehir", + "Please enter your City.": "Lütfen Şehrinizi girin.", + "Verify Email": "E-postayı Doğrula", + "We sent 5 digit to your Email provided": + "E-postanıza 5 haneli kod gönderdik", + "5 digit": "5 haneli", + "Send Verification Code": "Doğrulama Kodu Gönder", + "Your Ride Duration is ": "Yolculuk Süreniz: ", + "You will be thier in": "Şu sürede orada olacaksınız:", + "You trip distance is": "Yolculuk mesafesi:", + "Fee is": "Ücret:", + "From : ": "Nereden: ", + "To : ": "Nereye: ", + "Add Promo": "Promosyon Ekle", + "Confirm Selection": "Seçimi Onayla", + "distance is": "mesafe:", + "Privacy Policy": "Gizlilik Politikası", + "Intaleq LLC": "Intaleq Ltd. Şti.", + "Syria's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "Türkiye'nin öncü araç paylaşım hizmeti.", + "Intaleq is the first ride-sharing app in Syria, designed to connect you with the nearest drivers for a quick and convenient travel experience.": + "Intaleq, sizi en yakın sürücülerle buluşturan ilk uygulamadır.", + "Why Choose Intaleq?": "Neden Intaleq?", + "Closest to You": "Size En Yakın", + "We connect you with the nearest drivers for faster pickups and quicker journeys.": + "Daha hızlı alım ve yolculuk için sizi en yakın sürücülere bağlıyoruz.", + "Uncompromising Security": "Tavizsiz Güvenlik", + "Lady Captains Available": "Kadın Kaptanlar Mevcut", + "Recorded Trips (Voice & AI Analysis)": + "Kaydedilen Yolculuklar (Ses & YZ Analizi)", + "Fastest Complaint Response": "En Hızlı Şikayet Yanıtı", + "Our dedicated customer service team ensures swift resolution of any issues.": + "Müşteri hizmetleri ekibimiz sorunları hızla çözer.", + "Affordable for Everyone": "Herkes İçin Uygun Fiyatlı", + "Frequently Asked Questions": "Sıkça Sorulan Sorular", + "Getting Started": "Başlarken", + "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": + "Uygulamayı açın, hedefi girin ve \"Yolculuk İste\"ye dokunun.", + "Vehicle Options": "Araç Seçenekleri", + "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": + "Intaleq; Ekonomi, Konfor ve Lüks gibi çeşitli seçenekler sunar.", + "Payments": "Ödemeler", + "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": + "Nakit veya kartla ödeyebilirsiniz. Onaylamadan önce yöntemi seçin.", + "Ride Management": "Yolculuk Yönetimi", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "Evet, iptal edebilirsiniz ancak iptal ücreti uygulanabilir.", + "For Drivers": "Sürücüler İçin", + "Driver Registration": "Sürücü Kaydı", + "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": + "Sürücü olmak için web sitemizi ziyaret edin veya destekle görüşün.", + "Visit Website/Contact Support": + "Web Sitesini Ziyaret Et/Desteğe Ulaş", + "Close": "Kapat", + "We are searching for the nearest driver": + "En yakın sürücüyü arıyoruz", + "Communication": "İletişim", + "How do I communicate with the other party (passenger/driver)?": + "Diğer taraf (yolcu/sürücü) ile nasıl iletişim kurarım?", + "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": + "Yolculuk onaylandığında uygulama içi sohbeti kullanabilirsiniz.", + "Safety & Security": "Güvenlik & Emniyet", + "What safety measures does Intaleq offer?": + "Intaleq hangi güvenlik önlemlerini sunuyor?", + "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": + "Sürücü doğrulama, yolculuk takibi ve acil durum kişileri gibi özellikler sunuyoruz.", + "Enjoy competitive prices across all trip options, making travel accessible.": + "Tüm seçeneklerde rekabetçi fiyatların tadını çıkarın.", + "Variety of Trip Choices": "Yolculuk Seçeneği Çeşitliliği", + "Choose the trip option that perfectly suits your needs and preferences.": + "İhtiyaçlarınıza mükemmel uyan seçeneği tercih edin.", + "Your Choice, Our Priority": "Sizin Seçiminiz, Bizim Önceliğimiz", + "Because we are near, you have the flexibility to choose the ride that works best for you.": + "Size yakın olduğumuz için en uygun yolculuğu seçme esnekliğine sahipsiniz.", + "duration is": "süre:", + "Setting": "Ayar", + "Find answers to common questions": + "Sık sorulan soruların cevaplarını bul", + "I don't need a ride anymore": "Artık yolculuğa ihtiyacım yok", + "I was just trying the application": "Sadece uygulamayı deniyordum", + "No driver accepted my request": + "Hiçbir sürücü isteğimi kabul etmedi", + "I added the wrong pick-up/drop-off location": "Yanlış konum ekledim", + "I don't have a reason": "Bir sebebim yok", + "Can we know why you want to cancel Ride ?": + "Neden iptal etmek istediğinizi öğrenebilir miyiz?", + "Add Payment Method": "Ödeme Yöntemi Ekle", + "Ride Wallet": "Yolculuk Cüzdanı", + "Payment Method": "Ödeme Yöntemi", + "Type here Place": "Yeri buraya yaz", + "Are You sure to ride to": "Şuraya gitmek istediğinize emin misiniz:", + "Confirm": "Onayla", + "You are Delete": "Siliyorsunuz", + "Deleted": "Silindi", + "You Dont Have Any places yet !": "Henüz kayıtlı yeriniz yok!", + "From : Current Location": "Nereden: Mevcut Konum", + "My Cared": "Kartlarım", + "Add Card": "Kart Ekle", + "Add Credit Card": "Kredi Kartı Ekle", + "Please enter the cardholder name": "Kart sahibinin adını girin", + "Please enter the expiry date": "Son kullanma tarihini girin", + "Please enter the CVV code": "CVV kodunu girin", + "Go To Favorite Places": "Favori Yerlere Git", + "Go to this Target": "Bu Hedefe Git", + "My Profile": "Profilim", + "Are you want to go to this site": + "Bu konuma gitmek istiyor musunuz?", + "MyLocation": "Konumum", + "my location": "konumum", + "Target": "Hedef", + "You Should choose rate figure": "Puan seçmelisiniz", + "Login Captin": "Kaptan Girişi", + "Register Captin": "Kaptan Kaydı", + "Send Verfication Code": "Doğrulama Kodu Gönder", + "KM": "KM", + "End Ride": "Yolculuğu Bitir", + "Minute": "Dakika", + "Go to passenger Location now": "Yolcu Konumuna Git", + "Duration of the Ride is ": "Yolculuk Süresi: ", + "Distance of the Ride is ": "Yolculuk Mesafesi: ", + "Name of the Passenger is ": "Yolcunun Adı: ", + "Hello this is Captain": "Merhaba, ben Kaptan", + "Start the Ride": "Yolculuğu Başlat", + "Please Wait If passenger want To Cancel!": + "Lütfen Bekleyin, yolcu iptal etmek isteyebilir!", + "Total Duration:": "Toplam Süre:", + "Active Duration:": "Aktif Süre:", + "Waiting for Captin ...": "Kaptan Bekleniyor...", + "Age is ": "Yaş: ", + "Rating is ": "Puan: ", + " to arrive you.": " size ulaşmak için.", + "Tariff": "Tarife", + "Settings": "Ayarlar", + "Feed Back": "Geri Bildirim", + "Please enter a valid 16-digit card number": + "Lütfen geçerli 16 haneli kart numarasını girin", + "Add Phone": "Telefon Ekle", + "You dont Add Emergency Phone Yet!": + "Henüz Acil Durum Telefonu Eklemediniz!", + "You will arrive to your destination after ": + "Hedefe varış süreniz: ", + "You can cancel Ride now": "Yolculuğu şimdi iptal edebilirsiniz", + "You Can cancel Ride After Captain did not come in the time": + "Kaptan zamanında gelmezse iptal edebilirsiniz", + "If you in Car Now. Press Start The Ride": + "Şu an araçtaysanız, Yolculuğu Başlat'a basın", + "You Dont Have Any amount in": "Hiç bakiyeniz yok:", + "Wallet!": "Cüzdan!", + "You Have": "Bakiyeniz:", + "Save Credit Card": "Kredi Kartını Kaydet", + "Show Promos": "Promosyonları Göster", + "10 and get 4% discount": "10 ve %4 indirim al", + "20 and get 6% discount": "20 ve %6 indirim al", + "40 and get 8% discount": "40 ve %8 indirim al", + "100 and get 11% discount": "100 ve %11 indirim al", + "Pay with Your PayPal": "PayPal ile Öde", + "You will choose one of above !": + "Yukarıdakilerden birini seçmelisiniz!", + "Edit Profile": "Profili Düzenle", + "Copy this Promo to use it in your Ride!": + "Bu Promosyonu kopyalayıp kullanın!", + "To change some Settings": "Bazı Ayarları değiştirmek için", + "Order Request Page": "Sipariş İstek Sayfası", + "Rouats of Trip": "Yolculuk Rotaları", + "Passenger Name is ": "Yolcu Adı: ", + "Total From Passenger is ": "Yolcu Tutarı: ", + "Duration To Passenger is ": "Yolcuya Varış Süresi: ", + "Distance To Passenger is ": "Yolcuya Mesafe: ", + "Total For You is ": "Size Ödenecek: ", + "Distance is ": "Mesafe: ", + " KM": " KM", + "Duration of Trip is ": "Yolculuk Süresi: ", + " Minutes": " Dakika", + "Apply Order": "Siparişi Kabul Et", + "Refuse Order": "Siparişi Reddet", + "Rate Captain": "Kaptanı Puanla", + "Enter your Note": "Notunu gir", + "Type something...": "Bir şeyler yaz...", + "Submit rating": "Puanı gönder", + "Rate Passenger": "Yolcuyu Puanla", + "Ride Summary": "Yolculuk Özeti", + "welcome_message": "Intaleq'e Hoş Geldiniz!", + "app_description": + "Intaleq güvenli, güvenilir ve erişilebilir bir araç çağırma uygulamasıdır.", + "get_to_destination": "Hedefinize hızlı ve kolay ulaşın.", + "get_a_ride": "Intaleq ile dakikalar içinde araç bulun.", + "safe_and_comfortable": + "Güvenli ve konforlu yolculuğun tadını çıkarın.", + "committed_to_safety": + "Güvenliğe önem veriyoruz, tüm kaptanlarımız kontrolden geçer.", + "your ride is Accepted": "yolculuğunuz Kabul Edildi", + "Driver is waiting at pickup.": "Sürücü alım noktasında bekliyor.", + "Driver is on the way": "Sürücü yolda", + "Contact Options": "İletişim Seçenekleri", + "Send a custom message": "Özel mesaj gönder", + "Type your message": "Mesajını yaz", + "I will go now": "Şimdi gidiyorum", + "You Have Tips": "Bahşişiniz var", + " tips\nTotal is": " bahşiş\nToplam:", + "Your fee is ": "Ücretiniz: ", + "Do you want to pay Tips for this Driver": + "Bu Sürücüye Bahşiş vermek ister misiniz?", + "Tip is ": "Bahşiş: ", + "Are you want to wait drivers to accept your order": + "Sürücülerin siparişinizi kabul etmesini beklemek ister misiniz?", + "This price is fixed even if the route changes for the driver.": + "Bu fiyat rota değişse bile sabittir.", + "The price may increase if the route changes.": + "Rota değişirse fiyat artabilir.", + "The captain is responsible for the route.": + "Rota sorumluluğu kaptandadır.", + "We are search for nearst driver": "En yakın sürücüyü arıyoruz", + "Your order is being prepared": "Siparişiniz hazırlanıyor", + "The drivers are reviewing your request": + "Sürücüler isteğinizi inceliyor", + "Your order sent to drivers": "Siparişiniz sürücülere gönderildi", + "You can call or record audio of this trip": + "Arama yapabilir veya ses kaydedebilirsiniz", + "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": + "Yolculuk başladı! Acil numaraları aramaktan, yolculuğu paylaşmaktan veya ses kaydı almaktan çekinmeyin.", + "Camera Access Denied.": "Kamera Erişimi Reddedildi.", + "Open Settings": "Ayarları Aç", + "GPS Required Allow !.": "GPS Gerekli, İzin Ver!", + "Your Account is Deleted": "Hesabınız Silindi", + "Are you sure to delete your account?": + "Hesabınızı silmek istediğinize emin misiniz?", + "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": + "Verileriniz 2 hafta sonra silinecek\nVe 1 ay sonra uygulamayı kullanamayacaksınız", + "Enter Your First Name": "Adınızı Girin", + "Are you Sure to LogOut?": "Çıkış Yapmak İstediğinize Emin misiniz?", + "Email Wrong": "E-posta Yanlış", + "Email you inserted is Wrong.": "Girdiğiniz e-posta yanlış.", + "You have finished all times ": "Tüm haklarınızı doldurdunuz ", + "if you want help you can email us here": + "yardım isterseniz bize e-posta atabilirsiniz", + "Thanks": "Teşekkürler", + "Email Us": "Bize E-posta Gönder", + "I cant register in your app in face detection ": + "Yüz algılamada sorun yaşıyorum, kayıt olamıyorum", + "Hi": "Selam", + "No face detected": "Yüz algılanmadı", + "Image detecting result is ": "Görüntü algılama sonucu: ", + "from 3 times Take Attention": "3 denemeden, Dikkat Edin", + "Be sure for take accurate images please\nYou have": + "Lütfen net fotoğraflar çekin\nKalan hakkınız:", + "image verified": "görüntü doğrulandı", + "Next": "İleri", + "There is no help Question here": "Burada yardım sorusu yok", + "You dont have Points": "Puanınız yok", + "You Are Stopped For this Day !": "Bugünlük durduruldunuz!", + "You must be charge your Account": "Hesabınıza yükleme yapmalısınız", + "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": + "Bugün 3 yolculuğu reddettiniz, sebep bu \nYarın görüşürüz!", + "Recharge my Account": "Hesabımı Doldur", + "Ok , See you Tomorrow": "Tamam, Yarın Görüşürüz", + "You are Stopped": "Durduruldunuz", + "Connected": "Bağlı", + "Not Connected": "Bağlı Değil", + "Your are far from passenger location": "Yolcu konumundan uzaksınız", + "go to your passenger location before\nPassenger cancel trip": + "yolcu iptal etmeden konumuna gidin", + "You will get cost of your work for this trip": + "Bu yolculuk için emeğinizin karşılığını alacaksınız", + " in your wallet": " cüzdanınızda", + "you gain": "kazandınız", + "Order Cancelled by Passenger": + "Sipariş Yolcu Tarafından İptal Edildi", + "Feedback data saved successfully": + "Geri bildirim başarıyla kaydedildi", + "No Promo for today .": "Bugün için Promosyon yok.", + "Select your destination": "Varış noktasını seç", + "Search for your Start point": "Başlangıç noktasını ara", + "Search for waypoint": "Ara nokta ara", + "Current Location": "Mevcut Konum", + "Add Location 1": "Konum 1 Ekle", + "You must Verify email !.": "E-postayı doğrulamalısınız!", + "Cropper": "Kırpıcı", + "Saved Sucssefully": "Başarıyla Kaydedildi", + "Select Date": "Tarih Seç", + "Birth Date": "Doğum Tarihi", + "Ok": "Tamam", + "the 500 points equal 30 JOD": "500 puan 30 TL eder", + "the 500 points equal 30 JOD for you \nSo go and gain your money": + "500 puan senin için 30 TL eder \nHadi paranı kazan", + "token updated": "token güncellendi", + "Add Location 2": "Konum 2 Ekle", + "Add Location 3": "Konum 3 Ekle", + "Add Location 4": "Konum 4 Ekle", + "Waiting for your location": "Konumunuz bekleniyor", + "Search for your destination": "Varış yerini ara", + "Hi! This is": "Merhaba! Bu", + " I am using": " kullanıyorum", + " to ride with": " şununla yolculuk yapmak için:", + " as the driver.": " sürücü olarak.", + "is driving a ": "bir araç kullanıyor: ", + " with license plate ": " plaka: ", + " I am currently located at ": " Şu anki konumum: ", + "Please go to Car now ": "Lütfen şimdi Araca gidin ", + "You will receive a code in WhatsApp Messenger": + "WhatsApp üzerinden bir kod alacaksınız", + "If you need assistance, contact us": + "Yardıma ihtiyacınız varsa bize ulaşın", + "Promo Ended": "Promosyon Sona Erdi", + "Enter the promo code and get": "Promosyon kodunu gir ve kazan:", + "DISCOUNT": "İNDİRİM", + "No wallet record found": "Cüzdan kaydı bulunamadı", + "for": "için", + "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": + "Intaleq, kaptanlar ve yolcular için birçok özellik sunan en güvenli araç paylaşım uygulamasıdır. Sadece %8 komisyon oranıyla en iyi değeri almanızı sağlıyoruz. En iyi kaptanlar için sigorta, düzenli araç bakımı ve yol yardımı hizmetleri sunuyoruz.", + "You can contact us during working hours from 12:00 - 19:00.": + "Bize 12:00 - 19:00 saatleri arasında ulaşabilirsiniz.", + "Choose a contact option": "İletişim seçeneği belirleyin", + "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": + "Çalışma saatleri 12:00 - 19:00.\nWhatsApp mesajı veya e-posta gönderebilirsiniz.", + "Promo code copied to clipboard!": + "Promosyon kodu panoya kopyalandı!", + "Copy Code": "Kodu Kopyala", + "Your invite code was successfully applied!": + "Davet kodunuz başarıyla uygulandı!", + "Payment Options": "Ödeme Seçenekleri", + "wait 1 minute to receive message": + "mesajı almak için 1 dakika bekleyin", + "You have copied the promo code.": "Promosyon kodunu kopyaladınız.", + "Select Payment Amount": "Ödeme Tutarını Seç", + "The promotion period has ended.": "Promosyon süresi doldu.", + "Promo Code Accepted": "Promosyon Kodu Kabul Edildi", + "Tap on the promo code to copy it!": "Kopyalamak için koda dokunun!", + "Lowest Price Achieved": "En Düşük Fiyata Ulaşıldı", + "Cannot apply further discounts.": "Daha fazla indirim uygulanamaz.", + "Promo Already Used": "Promosyon Zaten Kullanıldı", + "Invitation Used": "Davet Kullanıldı", + "You have already used this promo code.": + "Bu promosyon kodunu zaten kullandınız.", + "Insert Your Promo Code": "Promosyon Kodunu Gir", + "Enter promo code here": "Promosyon kodunu buraya girin", + "Please enter a valid promo code": + "Lütfen geçerli bir promosyon kodu girin", + "Awfar Car": "Ekonomik Araç", + "Old and affordable, perfect for budget rides.": + "Eski ve uygun fiyatlı, bütçe dostu yolculuklar için mükemmel.", + " If you need to reach me, please contact the driver directly at": + " Bana ulaşmanız gerekirse, lütfen sürücüyle şu numaradan iletişime geçin:", + "No Car or Driver Found in your area.": + "Bölgenizde Araç veya Sürücü Bulunamadı.", + "Please Try anther time ": "Lütfen başka zaman deneyin ", + "There no Driver Aplly your order sorry for that ": + "Siparişinize başvuran sürücü yok, üzgünüz ", + "Trip Cancelled": "Yolculuk İptal Edildi", + "The Driver Will be in your location soon .": + "Sürücü yakında konumunuzda olacak.", + "The distance less than 500 meter.": "Mesafe 500 metreden az.", + "Promo End !": "Promosyon Bitti!", + "There is no notification yet": "Henüz bildirim yok", + "Use Touch ID or Face ID to confirm payment": + "Ödemeyi onaylamak için Touch ID veya Face ID kullanın", + "Contact us for any questions on your order.": + "Siparişinizle ilgili sorular için bize ulaşın.", + "Pyament Cancelled .": "Ödeme İptal Edildi.", + "type here": "buraya yazın", + "Scan Driver License": "Ehliyeti Tara", + "Please put your licence in these border": + "Lütfen ehliyetinizi bu çerçeveye yerleştirin", + "Camera not initialized yet": "Kamera henüz başlatılmadı", + "Take Image": "Fotoğraf Çek", + "AI Page": "YZ Sayfası", + "Take Picture Of ID Card": "Kimlik Kartı Fotoğrafı Çek", + "Take Picture Of Driver License Card": "Ehliyet Fotoğrafı Çek", + "We are process picture please wait ": + "Fotoğrafı işliyoruz lütfen bekleyin ", + "There is no data yet.": "Henüz veri yok.", + "Name :": "Ad:", + "Drivers License Class: ": "Ehliyet Sınıfı: ", + "Document Number: ": "Belge No: ", + "Address: ": "Adres: ", + "Height: ": "Boy: ", + "Expiry Date: ": "Son Kullanma Tarihi: ", + "Date of Birth: ": "Doğum Tarihi: ", + "You can't continue with us .\nYou should renew Driver license": + "Bizimle devam edemezsiniz.\nEhliyetinizi yenilemelisiniz", + "Detect Your Face ": "Yüzünüzü Algılayın ", + "Go to next step\nscan Car License.": + "Sonraki adıma git\nRuhsatı tara.", + "Name in arabic": "Arapça Ad", + "Drivers License Class": "Ehliyet Sınıfı", + "Selected Date": "Seçilen Tarih", + "Select Time": "Zaman Seç", + "Selected Time": "Seçilen Zaman", + "Selected Date and Time": "Seçilen Tarih ve Saat", + "Lets check Car license ": "Hadi Ruhsatı kontrol edelim ", + "Car": "Araç", + "Plate": "Plaka", + "Rides": "Yolculuklar", + "Selected driver": "Seçilen sürücü", + "Lets check License Back Face": + "Hadi Ehliyet Arka Yüzünü kontrol edelim", + "Car License Card": "Ruhsat Kartı", + "No image selected yet": "Henüz resim seçilmedi", + "Made :": "Marka:", + "model :": "Model:", + "VIN :": "Şasi No:", + "year :": "Yıl:", + "ُExpire Date": "Son Kullanma Tarihi", + "Login Driver": "Sürücü Girişi", + "Password must br at least 6 character.": + "Şifre en az 6 karakter olmalıdır.", + "if you don't have account": "hesabınız yoksa", + "Here recorded trips audio": "Burada kaydedilen yolculuk sesleri", + "Register as Driver": "Sürücü olarak Kayıt Ol", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": + "Aşağıdaki \"Kabul Ediyorum\" seçeneği ile Kullanım Şartlarını inceleyip kabul ettiğimi ve şunu onayladığımı beyan ederim: ", + "Log Out Page": "Çıkış Sayfası", + "Log Off": "Oturumu Kapat", + "Register Driver": "Sürücü Kaydı", + "Verify Email For Driver": "Sürücü İçin E-postayı Doğrula", + "Admin DashBoard": "Yönetici Paneli", + "Your name": "Adınız", + "your ride is applied": "yolculuğunuz başvuruldu", + "H and": "S ve", + "JOD": "TL", + "m": "dk", + "We search nearst Driver to you": "Size en yakın sürücüyü arıyoruz", + "please wait till driver accept your order": + "sürücü siparişinizi kabul edene kadar bekleyin", + "No accepted orders? Try raising your trip fee to attract riders.": + "Kabul eden yok mu? Ücreti artırmayı deneyin.", + "You should select one": "Birini seçmelisiniz", + "The driver accept your order for": + "Sürücü siparişinizi şu fiyata kabul etti:", + "The driver on your way": "Sürücü yolda", + "Total price from ": "Toplam fiyat: ", + "Order Details Intaleq": "Sipariş Detayları Intaleq", + "Selected file:": "Seçilen dosya:", + "Your trip cost is": "Yolculuk maliyetiniz:", + "this will delete all files from your device": + "bu işlem cihazınızdaki tüm dosyaları silecek", + "Exclusive offers and discounts always with the Intaleq app": + "Özel teklifler ve indirimler her zaman Intaleq uygulamasında", + "Submit Question": "Soru Gönder", + "Please enter your Question.": "Lütfen Sorunuzu girin.", + "Help Details": "Yardım Detayları", + "No trip yet found": "Henüz yolculuk bulunamadı", + "No Response yet.": "Henüz Yanıt yok.", + " You Earn today is ": " Bugün Kazandığınız: ", + " You Have in": " Hesabınızdaki:", + "Total points is ": "Toplam puan: ", + "Total Connection Duration:": "Toplam Bağlantı Süresi:", + "Passenger name : ": "Yolcu adı: ", + "Cost Of Trip IS ": "Yolculuk Maliyeti: ", + "Arrival time": "Varış zamanı", + "arrival time to reach your point": "noktanıza varış zamanı", + "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Intaleq ve scooter yolculukları için fiyat dinamiktir. Konfor için zaman ve mesafeye dayalıdır.", + "Hello this is Driver": "Merhaba ben Sürücü", + "Is the Passenger in your Car ?": "Yolcu Aracınızda mı?", + "Please wait for the passenger to enter the car before starting the trip.": + "Lütfen yolculuğu başlatmadan önce yolcunun araca binmesini bekleyin.", + "No ,still Waiting.": "Hayır, hâlâ bekliyorum.", + "I arrive you": "Sana ulaştım", + "I Arrive your site": "Konumunuza ulaştım", + "You are not in near to passenger location": + "Yolcu konumuna yakın değilsiniz", + "please go to picker location exactly": + "lütfen tam olarak alım noktasına gidin", + "You Can Cancel Trip And get Cost of Trip From": + "Yolculuğu İptal Edip Ücretini Şuradan Alabilirsiniz:", + "Are you sure to cancel?": "İptal etmek istediğinize emin misiniz?", + "Insert Emergincy Number": "Acil Durum Numarası Gir", + "Best choice for comfort car and flexible route and stops point": + "Konforlu araç ve esnek rota için en iyi seçim", + "Insert": "Ekle", + "This is for scooter or a motorcycle.": + "Bu scooter veya motosiklet içindir.", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "Sabit fiyatlı doğrudan yolculuk. Sürücü planlanan rotayı izlemelidir.", + "You can decline a request without any cost": + "Bir isteği ücretsiz reddedebilirsiniz", + "Perfect for adventure seekers who want to experience something new and exciting": + "Yeni ve heyecanlı bir şey denemek isteyen maceraperestler için mükemmel", + "My current location is:": "Mevcut konumum:", + "and I have a trip on": "ve şurada bir yolculuğum var:", + "App with Passenger": "Yolcu ile Uygulama", + "You will be pay the cost to driver or we will get it from you on next trip": + "Sürücüye ödeme yapacaksınız veya bir sonraki yolculukta sizden alacağız", + "Trip has Steps": "Yolculuğun Adımları Var", + "Distance from Passenger to destination is ": + "Yolcudan hedefe mesafe: ", + "price is": "fiyat:", + "This ride type does not allow changes to the destination or additional stops": + "Bu yolculuk türü hedef değişikliğine veya ek duraklara izin vermez", + "This price may be changed": "Bu fiyat değişebilir", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "SIM kart yok mu, sorun değil! Uygulamamız üzerinden sürücünüzü doğrudan arayın.", + "This ride type allows changes, but the price may increase": + "Bu tür değişikliklere izin verir ancak fiyat artabilir", + "Select one message": "Bir mesaj seç", + "I'm waiting for you": "Sizi bekliyorum", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "Intaleq aracının 100 km/s hızını aştığını fark ettik. Lütfen yavaşlayın.", + "Warning: Intaleqing detected!": "Uyarı: Hız tespit edildi!", + "Please help! Contact me as soon as possible.": + "Lütfen yardım edin! Bana hemen ulaşın.", + "Share Trip Details": "Yolculuk Detaylarını Paylaş", + "Car Plate is ": "Araç Plakası: ", + "the 300 points equal 300 L.E for you \nSo go and gain your money": + "300 puan senin için 300 TL eder \nHadi paranı kazan", + "the 300 points equal 300 L.E": "300 puan 300 TL eder", + "The payment was not approved. Please try again.": + "Ödeme onaylanmadı. Lütfen tekrar deneyin.", + "Payment Failed": "Ödeme Başarısız", + "This is a scheduled notification.": "Bu planlanmış bir bildirimdir.", + "An error occurred during the payment process.": + "Ödeme işlemi sırasında bir hata oluştu.", + "The payment was approved.": "Ödeme onaylandı.", + "Payment Successful": "Ödeme Başarılı", + "No ride found yet": "Henüz araç bulunamadı", + "Accept Order": "Siparişi Kabul Et", + "Bottom Bar Example": "Alt Çubuk Örneği", + "Driver phone": "Sürücü telefonu", + "Statistics": "İstatistikler", + "Origin": "Başlangıç", + "Destination": "Varış", + "Driver Name": "Sürücü Adı", + "Driver Car Plate": "Sürücü Plakası", + "Available for rides": "Yolculuklar için müsait", + "Scan Id": "Kimlik Tara", + "Camera not initilaized yet": "Kamera henüz başlatılmadı", + "Scan ID MklGoogle": "Kimlik Tara MklGoogle", + "Language": "Dil", + "Jordan": "Ürdün", + "USA": "ABD", + "Egypt": "Mısır", + "Turkey": "Türkiye", + "Saudi Arabia": "Suudi Arabistan", + "Qatar": "Katar", + "Bahrain": "Bahreyn", + "Kuwait": "Kuveyt", + "But you have a negative salary of": "Ancak negatif maaşınız var:", + "Promo Code": "Promosyon Kodu", + "Your trip distance is": "Yolculuk mesafeniz:", + "Enter promo code": "Promosyon kodu gir", + "You have promo!": "Promosyonun var!", + "Cost Duration": "Maliyet Süresi", + "Duration is": "Süre:", + "Leave": "Ayrıl", + "Join": "Katıl", + "Heading your way now. Please be ready.": + "Sana doğru geliyorum. Lütfen hazır ol.", + "Approaching your area. Should be there in 3 minutes.": + "Bölgene yaklaşıyorum. 3 dakika içinde orada olmalıyım.", + "There's heavy traffic here. Can you suggest an alternate pickup point?": + "Burada trafik yoğun. Alternatif bir alım noktası önerebilir misin?", + "This ride is already taken by another driver.": + "Bu yolculuk başka bir sürücü tarafından alınmış.", + "You Should be select reason.": "Bir sebep seçmelisiniz.", + "Waiting for Driver ...": "Sürücü Bekleniyor...", + "Latest Recent Trip": "En Son Yolculuk", + "from your list": "listenden", + "Do you want to change Work location": + "İş konumunu değiştirmek istiyor musunuz?", + "Do you want to change Home location": + "Ev konumunu değiştirmek istiyor musunuz?", + "We Are Sorry That we dont have cars in your Location!": + "Üzgünüz, konumunuzda aracımız yok!", + "Choose from Map": "Haritadan Seç", + "Pick your ride location on the map - Tap to confirm": + "Haritada konumunu seç - Onaylamak için dokun", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "Intaleq güvenli, güvenilir ve erişilebilir araç çağırma uygulamasıdır.", + "With Intaleq, you can get a ride to your destination in minutes.": + "Intaleq ile dakikalar içinde hedefinize araç bulabilirsiniz.", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "Intaleq güvenliğe önem verir, tüm kaptanlarımız dikkatle incelenir.", + "Pick from map": "Haritadan seç", + "No Car in your site. Sorry!": "Konumunuzda araç yok. Üzgünüz!", + "Nearest Car for you about ": "Size en yakın araç yaklaşık: ", + "From :": "Nereden:", + "Get Details of Trip": "Yolculuk Detaylarını Al", + "If you want add stop click here": + "Durak eklemek istiyorsanız buraya tıklayın", + "Where you want go ": "Nereye gitmek istiyorsunuz ", + "My Card": "Kartım", + "Start Record": "Kaydı Başlat", + "History of Trip": "Yolculuk Geçmişi", + "Helping Center": "Yardım Merkezi", + "Record saved": "Kayıt kaydedildi", + "Trips recorded": "Kaydedilen Yolculuklar", + "Select Your Country": "Ülkenizi Seçin", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "En doğru bilgiyi almak için lütfen ülkenizi seçin.", + "Are you sure to delete recorded files": + "Kayıtlı dosyaları silmek istediğinize emin misiniz?", + "Select recorded trip": "Kaydedilen yolculuğu seç", + "Card Number": "Kart Numarası", + "Hi, Where to ": "Selam, Nereye ", + "Pick your destination from Map": "Haritadan varış yerini seç", + "Add Stops": "Durak Ekle", + "Get Direction": "Yol Tarifi Al", + "Add Location": "Konum Ekle", + "Switch Rider": "Yolcuyu Değiştir", + "You will arrive to your destination after timer end.": + "Süre bittikten sonra hedefe varacaksınız.", + "You can cancel trip": "Yolculuğu iptal edebilirsiniz", + "The driver waitting you in picked location .": + "Sürücü sizi seçilen konumda bekliyor.", + "Pay with Your": "Şununla Öde:", + "Pay with Credit Card": "Kredi Kartı ile Öde", + "Show Promos to Charge": "Yükleme için Promosyonları Göster", + "Point": "Puan", + "How many hours would you like to wait?": + "Kaç saat beklemek istersiniz?", + "Driver Wallet": "Sürücü Cüzdanı", + "Choose between those Type Cars": "Bu Araç Tipleri Arasından Seçin", + "hour": "saat", + "Select Waiting Hours": "Bekleme Süresini Seç", + "Total Points is": "Toplam Puan:", + "You will receive a code in SMS message": + "SMS ile bir kod alacaksınız", + "Done": "Bitti", + "Total Budget from trips is ": "Yolculuklardan Toplam Bütçe: ", + "Total Amount:": "Toplam Tutar:", + "Total Budget from trips by\nCredit card is ": + "Kredi kartı ile yolculuklardan\nToplam Bütçe: ", + "This amount for all trip I get from Passengers": + "Yolculardan aldığım tüm yolculuk tutarı", + "Pay from my budget": "Bütçemden öde", + "This amount for all trip I get from Passengers and Collected For me in": + "Bu tutar yolculardan aldığım ve benim için toplanan", + "You can buy points from your budget": + "Bütçenizden puan satın alabilirsiniz", + "insert amount": "tutar girin", + "You can buy Points to let you online\nby this list below": + "Çevrimiçi kalmak için Puan satın alabilirsiniz\naşağıdaki listeden", + "Create Wallet to receive your money": + "Paranızı almak için Cüzdan oluşturun", + "Enter your feedback here": "Geri bildiriminizi buraya girin", + "Please enter your feedback.": "Lütfen geri bildiriminizi girin.", + "Feedback": "Geri Bildirim", + "Submit ": "Gönder ", + "Click here to Show it in Map": "Haritada Göstermek için Tıkla", + "Canceled": "İptal Edildi", + "No I want": "Hayır istiyorum", + "Email is": "E-posta:", + "Phone Number is": "Telefon:", + "Date of Birth is": "Doğum Tarihi:", + "Sex is ": "Cinsiyet: ", + "Car Details": "Araç Detayları", + "VIN is": "Şasi No:", + "Color is ": "Renk: ", + "Make is ": "Marka: ", + "Model is": "Model:", + "Year is": "Yıl:", + "Expiration Date ": "Son Kullanma Tarihi: ", + "Edit Your data": "Verilerini Düzenle", + "write vin for your car": "aracın şasi numarasını yaz", + "VIN": "Şasi No", + "Device Change Detected": "Cihaz Değişikliği Algılandı", + "Please verify your identity": "Lütfen kimliğinizi doğrulayın", + "write Color for your car": "aracın rengini yaz", + "write Make for your car": "aracın markasını yaz", + "write Model for your car": "aracın modelini yaz", + "write Year for your car": "aracın yılını yaz", + "write Expiration Date for your car": + "aracın son kullanma tarihini yaz", + "Tariffs": "Tarifeler", + "Minimum fare": "Minimum ücret", + "Maximum fare": "Maksimum ücret", + "Flag-down fee": "Açılış ücreti", + "Including Tax": "Vergi Dahil", + "BookingFee": "Rezervasyon Ücreti", + "Morning": "Sabah", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "07:30'dan 10:30'a kadar", + "Evening": "Akşam", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "12:00'den 15:00'e kadar", + "Night": "Gece", + "You have in account": "Hesabınızda var", + "Select Country": "Ülke Seç", + "Ride Today : ": "Bugünkü Yolculuk: ", + "After this period\nYou can't cancel!": + "Bu süreden sonra\nİptal edemezsiniz!", + "from 23:59 till 05:30": "23:59'dan 05:30'a kadar", + "Rate Driver": "Sürücüyü Puanla", + "Total Cost is ": "Toplam Maliyet: ", + "Write note": "Not yaz", + "Time to arrive": "Varış zamanı", + "Ride Summaries": "Yolculuk Özetleri", + "Total Cost": "Toplam Maliyet", + "Average of Hours of": "Şu saatlerin ortalaması:", + " is ON for this month": " bu ay için AÇIK", + "Days": "Günler", + "Total Hours on month": "Aydaki Toplam Saat", + "Counts of Hours on days": "Günlerdeki Saat Sayısı", + "OrderId": "Sipariş No", + "created time": "oluşturulma zamanı", + "Intaleq Over": "Intaleq Bitti", + "I will slow down": "Yavaşlayacağım", + "Map Passenger": "Yolcu Haritası", + "Be Slowly": "Yavaş Ol", + "If you want to make Google Map App run directly when you apply order": + "Siparişi uyguladığınızda Google Haritalar'ın direkt açılmasını istiyorsanız", + "You can change the language of the app": + "Uygulamanın dilini değiştirebilirsiniz", + "Your Budget less than needed": "Bütçeniz gerekenden az", + "You can change the Country to get all features": + "Tüm özellikleri almak için Ülkeyi değiştirebilirsiniz", + "Change Country": "Ülke Değiştir" + }, + "fr": { + "Order": "Commande", + "OrderVIP": "Commande VIP", + "Cancel Trip": "Annuler le trajet", + "Passenger Cancel Trip": "Le passager a annulé le trajet", + "VIP Order": "Commande VIP", + "Hi ,I Arrive your site": "Bonjour, je suis arrivé à votre position", + "The driver accepted your trip": + "Le chauffeur a accepté votre trajet", + "message From passenger": "Message du passager", + "Cancel": "Annuler", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "Trajet annulé. Les frais seront crédités sur votre portefeuille.", + "token change": "Changement de jeton", + "face detect": "Détection de visage", + "Face Detection Result": "Résultat de la détection de visage", + "similar": "Similaire", + "not similar": "Non similaire", + "Hi ,I will go now": "Bonjour, je pars maintenant", + "Passenger come to you": "Le passager vient vers vous", + "Call Income": "Appel entrant", + "Call Income from Passenger": "Appel entrant du passager", + "Criminal Document Required": "Extrait de casier judiciaire requis", + "You should have upload it .": "Vous devez le télécharger.", + "Call End": "Fin de l'appel", + "The order has been accepted by another driver.": + "La commande a été acceptée par un autre chauffeur.", + "The order Accepted by another Driver": + "Commande acceptée par un autre chauffeur", + "We regret to inform you that another driver has accepted this order.": + "Nous regrettons de vous informer qu'un autre chauffeur a accepté cette commande.", + "Driver Applied the Ride for You": + "Le chauffeur a demandé le trajet pour vous", + "Applied": "Demandé", + "Pay by Sham Cash": "Payer via Sham Cash", + "Pay with Debit Card": "Payer par carte de débit", + "Please go to Car Driver": "Veuillez rejoindre le chauffeur", + "Ok I will go now.": "D'accord, j'y vais maintenant.", + "Accepted Ride": "Trajet accepté", + "Driver Accepted the Ride for You": + "Le chauffeur a accepté le trajet pour vous", + "Promo": "Promo", + "Show latest promo": "Voir les dernières promos", + "Trip Monitoring": "Suivi du trajet", + "Driver Is Going To Passenger": + "Le chauffeur se rend vers le passager", + "Please stay on the picked point.": + "Veuillez rester au point de prise en charge.", + "message From Driver": "Message du chauffeur", + "Trip is Begin": "Le trajet commence", + "Cancel Trip from driver": "Annulation du trajet par le chauffeur", + "We will look for a new driver.\nPlease wait.": + "Nous cherchons un nouveau chauffeur.\nVeuillez patienter.", + "The driver canceled your ride.": + "Le chauffeur a annulé votre course.", + "Driver Finish Trip": "Le chauffeur a terminé le trajet", + "you will pay to Driver": "Vous paierez au chauffeur", + "Don’t forget your personal belongings.": + "N'oubliez pas vos effets personnels.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "Veuillez vous assurer d'avoir tous vos effets personnels et que tout solde restant a été ajouté à votre portefeuille avant de partir. Merci d'avoir choisi Intaleq.", + "Finish Monitor": "Terminer le suivi", + "Trip finished": "Trajet terminé", + "Call Income from Driver": "Appel entrant du chauffeur", + "Driver Cancelled Your Trip": "Le chauffeur a annulé votre trajet", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "Vous paierez le chauffeur pour son temps, vérifiez votre portefeuille Intaleq", + "Order Applied": "Commande appliquée", + "welcome to intaleq": "Bienvenue chez Intaleq", + "login or register subtitle": + "Entrez votre numéro de mobile pour vous connecter ou vous inscrire", + "An application error occurred.": + "Une erreur d'application s'est produite.", + "Submission Failed": "Échec de l'envoi", + "Your complaint has been submitted.": + "Votre réclamation a été envoyée.", + "Failed to connect to the server. Please try again.": + "Échec de la connexion au serveur. Veuillez réessayer.", + "Ride information not found. Please refresh the page.": + "Informations sur le trajet introuvables. Veuillez actualiser la page.", + "Please describe your issue before submitting.": + "Veuillez décrire votre problème avant d'envoyer.", + "An application error occurred during upload.": + "Une erreur s'est produite lors du téléchargement.", + "Failed to upload audio file.": + "Échec du téléchargement du fichier audio.", + "Audio uploaded successfully.": "Audio téléchargé avec succès.", + "Complaint cannot be filed for this ride. It may not have been completed or started.": + "Impossible de déposer une plainte pour ce trajet. Il n'a peut-être pas été terminé ou commencé.", + "2. Attach Recorded Audio (Optional)": + "2. Joindre un enregistrement audio (Optionnel)", + "Please enter a description of the issue.": + "Veuillez entrer une description du problème.", + "phone number label": "Numéro de téléphone", + "phone number required": "Numéro de téléphone requis", + "send otp button": "Envoyer le code OTP", + "verify your number title": "Vérifiez votre numéro", + "otp sent subtitle": + "Un code à 5 chiffres a été envoyé au\n@phoneNumber", + "verify and continue button": "Vérifier et continuer", + "enter otp validation": "Veuillez entrer le code OTP à 5 chiffres", + "one last step title": "Une dernière étape", + "complete profile subtitle": "Complétez votre profil pour commencer", + "first name label": "Prénom", + "first name required": "Prénom requis", + "last name label": "Nom", + "Verify OTP": "Vérifier l'OTP", + "Verification Code": "Code de vérification", + "We have sent a verification code to your mobile number:": + "Nous avons envoyé un code de vérification à votre numéro de mobile :", + "Verify": "Vérifier", + "Resend Code": "Renvoyer le code", + "You can resend in": "Vous pouvez renvoyer dans", + "seconds": "secondes", + "Error": "Erreur", + "Please enter the complete 6-digit code.": + "Veuillez entrer le code complet à 6 chiffres.", + "last name required": "Nom requis", + "email optional label": "Email (Optionnel)", + "complete registration button": "Terminer l'inscription", + "User with this phone number or email already exists.": + "Un utilisateur avec ce numéro ou cet email existe déjà.", + "otp sent success": "Code OTP envoyé avec succès.", + "failed to send otp": "Échec de l'envoi du code OTP.", + "server error try again": "Erreur serveur, veuillez réessayer.", + "an error occurred": "Une erreur s'est produite : @error", + "otp verification failed": "Échec de la vérification OTP.", + "registration failed": "Échec de l'inscription.", + "welcome user": "Bienvenue, @firstName !", + "Cancel Trip from driver": "Annuler le trajet (Chauffeur)", + "We will look for a new driver.\nPlease wait.": + "Nous cherchons un nouveau chauffeur.\nVeuillez patienter.", + "The driver canceled your ride.": + "Le chauffeur a annulé votre course.", + "Driver Finish Trip": "Le chauffeur a terminé la course", + "you will pay to Driver": "Vous paierez au chauffeur", + "Don't forget your personal belongings.": + "N'oubliez pas vos effets personnels.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "Veuillez vérifier que vous avez tous vos effets personnels et que tout solde restant a été ajouté à votre portefeuille. Merci d'avoir choisi Intaleq.", + "Finish Monitor": "Terminer la surveillance", + "Trip finished": "Trajet terminé", + "Call Income from Driver": "Appel entrant du chauffeur", + "Driver Cancelled Your Trip": "Le chauffeur a annulé votre trajet", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "Vous paierez le temps du chauffeur, consultez votre portefeuille Intaleq", + "Order Applied": "Commande passée", + "Share App": "Partager l'application", + "Wallet": "Portefeuille", + "Balance": "Solde", + "Don’t forget your personal belongings.": + "N'oubliez pas vos effets personnels.", + "Profile": "Profil", + "Contact Support": "Contacter le support", + "Session expired. Please log in again.": + "Session expirée. Veuillez vous reconnecter.", + "Security Warning": "⚠️ Avertissement de sécurité", + "Potential security risks detected. The application may not function correctly.": + "Risques de sécurité potentiels détectés. L'application peut ne pas fonctionner correctement.", + "please order now": "Commandez maintenant", + "Where to": "Où allez-vous ?", + "Where are you going?": "Où allez-vous ?", + "Quick Actions": "Actions rapides", + "My Balance": "Mon solde", + "Order History": "Historique des commandes", + "Contact Us": "Nous contacter", + "Driver": "Chauffeur", + "Complaint": "Réclamation", + "Promos": "Promos", + "Recent Places": "Lieux récents", + "From": "De", + "WhatsApp Location Extractor": "Extracteur de localisation WhatsApp", + "Location Link": "Lien de localisation", + "Paste location link here": "Collez le lien de localisation ici", + "Go to this location": "Aller à cet endroit", + "Paste WhatsApp location link": + "Coller le lien de localisation WhatsApp", + "Select Order Type": "Sélectionner le type de commande", + "Choose who this order is for": "Pour qui est cette commande ?", + "I want to order for myself": "Je commande pour moi-même", + "I want to order for someone else": + "Je commande pour quelqu'un d'autre", + "Order for someone else": "Commander pour autrui", + "Order for myself": "Commander pour moi", + "Are you want to go this site": "Voulez-vous aller à cet endroit ?", + "No": "Non", + "Pay by Sham Cash": "Payer via Sham Cash", + "Intaleq Wallet": "Portefeuille Intaleq", + "Have a promo code?": "Avez-vous un code promo ?", + "Your Wallet balance is ": "Le solde de votre portefeuille est ", + "Cash": "Espèces", + "Phone Number": "Numéro de téléphone", + "Search country": "Rechercher un pays", + "Payment Successful!": "Paiement réussi !", + "Your payment was successful.": + "Votre paiement a été effectué avec succès.", + "Pay directly to the captain": "Payer directement au chauffeur", + "Top up Wallet to continue": + "Rechargez votre portefeuille pour continuer", + "Or pay with Cash instead": "Ou payez en espèces", + "Confirm & Find a Ride": "Confirmer et trouver un trajet", + "Balance:": "Solde :", + "Alerts": "Alertes", + "Welcome Back!": "Bon retour !", + "Current Balance": "Solde actuel", + "Set Wallet Phone Number": "Définir le numéro du portefeuille", + "Link a phone number for transfers": + "Lier un numéro pour les transferts", + "Payment History": "Historique des paiements", + "View your past transactions": "Voir vos transactions passées", + "Top up Wallet": "Recharger le portefeuille", + "Add funds using our secure methods": + "Ajouter des fonds via nos méthodes sécurisées", + "Driver is waiting": "Le chauffeur attend", + "Type your message...": "Tapez votre message...", + "Driver Accepted Request": "Le chauffeur a accepté la demande", + "Message": "Message", + "Call": "Appeler", + "Set Phone Number": "Définir le numéro de téléphone", + "Select This Ride": "Sélectionner ce trajet", + "Call Driver": "Appeler le chauffeur", + "Increase Fare": "Augmenter le tarif", + "Stop": "Arrêter", + "Record": "Enregistrer", + "Share": "Partager", + "WhatsApp": "WhatsApp", + "SOS": "SOS", + "No drivers accepted your request yet": + "Aucun chauffeur n'a encore accepté votre demande", + "Increasing the fare might attract more drivers. Would you like to increase the price?": + "Augmenter le tarif pourrait attirer plus de chauffeurs. Voulez-vous augmenter le prix ?", + "Please make sure not to leave any personal belongings in the car.": + "Veuillez vous assurer de ne rien laisser dans la voiture.", + "Cancel Ride": "Annuler la course", + "Route Not Found": "Itinéraire introuvable", + "We couldn't find a valid route to this destination. Please try selecting a different point.": + "Impossible de trouver un itinéraire valide vers cette destination. Veuillez sélectionner un autre point.", + "alert": "Alerte", + "You can call or record audio during this trip.": + "Vous pouvez appeler ou enregistrer l'audio pendant ce trajet.", + "Warning: Speeding detected!": + "Attention : Excès de vitesse détecté !", + "Fixed Price": "Prix fixe", + "Report": "Signaler", + "Comfort": "Confort", + "Intaleq Balance": "Solde Intaleq", + "Search for a starting point": "Rechercher un point de départ", + "Top up Balance to continue": "Rechargez le solde pour continuer", + "Electric": "Électrique", + "Lady": "Dame", + "Van": "Van", + "Rayeh Gai": "Aller-Retour", + "Join Intaleq as a driver using my referral code!": + "Rejoignez Intaleq comme chauffeur avec mon code de parrainage !", + "Use code:": "Utilisez le code :", + "Download the Intaleq Driver app now and earn rewards!": + "Téléchargez l'appli Chauffeur Intaleq et gagnez des récompenses !", + "Get a discount on your first Intaleq ride!": + "Obtenez une réduction sur votre premier trajet Intaleq !", + "Use my referral code:": "Utilisez mon code de parrainage :", + "Download the Intaleq app now and enjoy your ride!": + "Téléchargez Intaleq maintenant et profitez du trajet !", + "Contacts Loaded": "Contacts chargés", + "Showing": "Affichage de", + "of": "sur", + "Pay by MTN Wallet": "Payer via MTN Wallet", + "Pay by Syriatel Wallet": "Payer via Syriatel Wallet", + "Customer not found": "Client introuvable", + "Wallet is blocked": "Portefeuille bloqué", + "Customer phone is not active": + "Le téléphone du client n'est pas actif", + "Balance not enough": "Solde insuffisant", + "Balance limit exceeded": "Limite de solde dépassée", + "Incorrect sms code": "⚠️ Code SMS incorrect. Veuillez réessayer.", + "contacts. Others were hidden because they don't have a phone number.": + "contacts. Les autres sont masqués car ils n'ont pas de numéro.", + "No contacts found": "Aucun contact trouvé", + "No contacts with phone numbers were found on your device.": + "Aucun contact avec numéro de téléphone trouvé sur votre appareil.", + "Permission denied": "Permission refusée", + "Contact permission is required to pick contacts": + "La permission d'accès aux contacts est requise.", + "An error occurred while picking contacts:": + "Une erreur est survenue lors de la sélection des contacts :", + "Please enter a correct phone": "Veuillez entrer un numéro valide", + "Success": "Succès", + "Invite sent successfully": "Invitation envoyée avec succès", + "Hello! I'm inviting you to try Intaleq.": + "Bonjour ! Je vous invite à essayer Intaleq.", + "Use my invitation code to get a special gift on your first ride!": + "Utilisez mon code pour un cadeau spécial lors de votre premier trajet !", + "Your personal invitation code is:": + "Votre code d'invitation personnel est :", + "Be sure to use it quickly! This code expires at": + "Utilisez-le vite ! Ce code expire le", + "Download the app now:": "Téléchargez l'application :", + "See you on the road!": "À bientôt sur la route !", + "This phone number has already been invited.": + "Ce numéro a déjà été invité.", + "An unexpected error occurred. Please try again.": + "Une erreur inattendue s'est produite. Réessayez.", + "You deserve the gift": "Vous méritez le cadeau", + "Claim your 20 LE gift for inviting": + "Réclamez votre cadeau de 20 € pour l'invitation", + "You have got a gift for invitation": + "Vous avez reçu un cadeau pour l'invitation", + "You have earned 20": "Vous avez gagné 20", + "LE": "€", + "Vibration feedback for all buttons": + "Vibration pour tous les boutons", + "Share with friends and earn rewards": + "Partagez avec des amis et gagnez des récompenses", + "Gift Already Claimed": "Cadeau déjà réclamé", + "You have already received your gift for inviting": + "Vous avez déjà reçu votre cadeau pour cette invitation", + "Keep it up!": "Continuez comme ça !", + "has completed": "a terminé", + "trips": "trajets", + "Personal Information": "Informations personnelles", + "Name": "Nom", + "Not set": "Non défini", + "Gender": "Sexe", + "Education": "Éducation", + "Work & Contact": "Travail et Contact", + "Employment Type": "Type d'emploi", + "Marital Status": "État civil", + "SOS Phone": "Téléphone SOS", + "Sign Out": "Se déconnecter", + "Delete My Account": "Supprimer mon compte", + "Update Gender": "Mettre à jour le sexe", + "Update": "Mettre à jour", + "Update Education": "Mettre à jour l'éducation", + "Are you sure? This action cannot be undone.": + "Êtes-vous sûr ? Cette action est irréversible.", + "Confirm your Email": "Confirmez votre email", + "Type your Email": "Tapez votre email", + "Delete Permanently": "Supprimer définitivement", + "Male": "Homme", + "Female": "Femme", + "Other": "Autre", + "High School Diploma": "Baccalauréat", + "Associate Degree": "BTS / DUT", + "Bachelor's Degree": "Licence", + "Master's Degree": "Master", + "Doctoral Degree": "Doctorat", + "Select your preferred language for the app interface.": + "Sélectionnez votre langue préférée pour l'interface.", + "Language Options": "Options de langue", + "You can claim your gift once they complete 2 trips.": + "Vous pourrez réclamer votre cadeau après qu'ils aient terminé 2 trajets.", + "Closest & Cheapest": "Le plus proche et le moins cher", + "Comfort choice": "Choix confort", + "Travel in a modern, silent electric car. A premium, eco-friendly choice for a smooth ride.": + "Voyagez dans une voiture électrique moderne et silencieuse. Un choix premium et écologique.", + "Spacious van service ideal for families and groups. Comfortable, safe, and cost-effective travel together.": + "Service de van spacieux idéal pour les familles et groupes. Confortable, sûr et économique.", + "Quiet & Eco-Friendly": "Calme et Écologique", + "Lady Captain for girls": "Chauffeur femme pour dames", + "Van for familly": "Van pour la famille", + "Are you sure to delete this location?": + "Voulez-vous vraiment supprimer ce lieu ?", + "Change Work location?": "Changer le lieu de travail ?", + "Change Home location?": "Changer le lieu de domicile ?", + "Submit a Complaint": "Déposer une réclamation", + "Submit Complaint": "Envoyer la réclamation", + "No trip history found": "Aucun historique de trajet", + "Your past trips will appear here.": + "Vos trajets passés apparaîtront ici.", + "1. Describe Your Issue": "1. Décrivez votre problème", + "Enter your complaint here...": "Entrez votre réclamation ici...", + "2. Attach Recorded Audio": "2. Joindre l'audio enregistré", + "No audio files found.": "Aucun fichier audio trouvé.", + "Confirm Attachment": "Confirmer la pièce jointe", + "Attach this audio file?": "Joindre ce fichier audio ?", + "Uploaded": "Téléchargé", + "3. Review Details & Response": "3. Revoir les détails et la réponse", + "Date": "Date", + "Today's Promos": "Promos du jour", + "No promos available right now.": + "Aucune promo disponible pour le moment.", + "Check back later for new offers!": + "Revenez plus tard pour de nouvelles offres !", + "Valid Until:": "Valable jusqu'au :", + "CODE": "CODE", + "Login": "Connexion", + "Sign in for a seamless experience": + "Connectez-vous pour une expérience fluide", + "Sign In with Google": "Se connecter avec Google", + "Sign in with Apple": "Se connecter avec Apple", + "User not found": "Utilisateur introuvable", + "Need assistance? Contact us": "Besoin d'aide ? Contactez-nous", + "Email": "Email", + "Your email address": "Votre adresse email", + "Enter a valid email": "Entrez un email valide", + "Password": "Mot de passe", + "Your password": "Votre mot de passe", + "Enter your password": "Entrez votre mot de passe", + "Submit": "Envoyer", + "Terms of Use & Privacy Notice": + "Conditions d'utilisation et Avis de confidentialité", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the ": + "En sélectionnant \"J'accepte\" ci-dessous, je confirme avoir lu et accepté les ", + "Terms of Use": "Conditions d'utilisation", + " and acknowledge the ": " et reconnais l' ", + "Privacy Notice": "Avis de confidentialité", + " . I am at least 18 years old.": " . J'ai au moins 18 ans.", + "I Agree": "J'accepte", + "Continue": "Continuer", + "Enable Location": "Activer la localisation", + "To give you the best experience, we need to know where you are. Your location is used to find nearby captains and for pickups.": + "Pour vous offrir la meilleure expérience, nous devons savoir où vous êtes. Votre position est utilisée pour trouver des chauffeurs à proximité.", + "Allow Location Access": "Autoriser l'accès à la localisation", + "Welcome to Intaleq!": "Bienvenue sur Intaleq !", + "Before we start, please review our terms.": + "Avant de commencer, veuillez consulter nos conditions.", + "Your journey starts here": "Votre voyage commence ici", + "Cancel Search": "Annuler la recherche", + "Set pickup location": "Définir le lieu de prise en charge", + "Move the map to adjust the pin": + "Déplacez la carte pour ajuster l'épingle", + "Searching for the nearest captain...": + "Recherche du chauffeur le plus proche...", + "No one accepted? Try increasing the fare.": + "Personne n'a accepté ? Essayez d'augmenter le tarif.", + "Increase Your Trip Fee (Optional)": + "Augmentez le prix de votre trajet (Optionnel)", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "Nous n'avons pas encore trouvé de chauffeurs. Pensez à augmenter votre tarif pour rendre votre offre plus attractive.", + "No, thanks": "Non, merci", + "Increase Fee": "Augmenter le tarif", + "Copy": "Copier", + "Promo Copied!": "Promo copiée !", + "Code": "Code", + "copied to clipboard": "copié dans le presse-papiers", + "Price": "Prix", + "Intaleq's Response": "Réponse d'Intaleq", + "Awaiting response...": "En attente de réponse...", + "Audio file not attached": "Fichier audio non joint", + "The audio file is not uploaded yet.\\nDo you want to submit without it?": + "Le fichier audio n'est pas encore téléchargé.\\nVoulez-vous envoyer sans ?", + "deleted": "supprimé", + "To Work": "Au Travail", + "Work Saved": "Lieu de travail enregistré", + "To Home": "À la Maison", + "Home Saved": "Domicile enregistré", + "Destination selected": "Destination sélectionnée", + "Now select start pick": "Sélectionnez maintenant le départ", + "OK": "OK", + "Confirm Pick-up Location": "Confirmer le lieu de prise en charge", + "Set Location on Map": "Définir le lieu sur la carte", + "Leave a detailed comment (Optional)": + "Laisser un commentaire détaillé (Optionnel)", + "Share your experience to help us improve...": + "Partagez votre expérience pour nous aider à nous améliorer...", + "Your valuable feedback helps us improve our service quality.": + "Vos commentaires nous aident à améliorer la qualité de notre service.", + "witout zero": "sans zéro", + "Top up Balance": "Recharger le solde", + "An error occurred": "Une erreur s'est produite", + "Send WhatsApp Message": "Envoyer un message WhatsApp", + "How was your trip with": "Comment s'est passé votre trajet avec", + "Drawing route on map...": "Traçage de l'itinéraire sur la carte...", + "Please wait while we prepare your trip.": + "Veuillez patienter pendant la préparation de votre trajet.", + "Submit Rating": "Envoyer la note", + "Call Support": "Appeler le support", + "You can contact us during working hours from 10:00 - 16:00.": + "Vous pouvez nous contacter pendant les heures de travail de 10h00 à 16h00.", + "Intaleq is the safest and most reliable ride-sharing app designed especially for passengers in Syria. We provide a comfortable, respectful, and affordable riding experience with features that prioritize your safety and convenience. Our trusted captains are verified, insured, and supported by regular car maintenance carried out by top engineers. We also offer on-road support services to make sure every trip is smooth and worry-free. With Intaleq, you enjoy quality, safety, and peace of mind—every time you ride.": + "Intaleq est l'application de covoiturage la plus sûre et la plus fiable conçue pour la France. Nous offrons une expérience confortable, respectueuse et abordable, avec la sécurité comme priorité. Nos chauffeurs de confiance sont vérifiés et assurés. Avec Intaleq, profitez de la qualité et de la tranquillité d'esprit à chaque trajet.", + "Work time is from 10:00 AM to 16:00 PM.\nYou can send a WhatsApp message or email.": + "Les heures de travail sont de 10h00 à 16h00.\nVous pouvez envoyer un message WhatsApp ou un email.", + "Sorry": "Désolé", + "Customer MSISDN doesn’t have customer wallet": + "Le numéro du client n'a pas de portefeuille client", + "Please enter the number without the leading 0": + "Veuillez entrer le numéro sans le 0 initial", + "Please enter your phone number": + "Veuillez entrer votre numéro de téléphone", + "Phone number seems too short": + "Le numéro de téléphone semble trop court", + "No cars are available at the moment. Please try again later.": + "Aucune voiture disponible pour le moment. Veuillez réessayer plus tard.", + "Nearest Car: ~": "Voiture la plus proche : ~", + "Nearest Car": "Voiture la plus proche", + "No cars nearby": "Aucune voiture à proximité", + "Favorite Places": "Lieux favoris", + "No favorite places yet!": "Pas encore de lieux favoris !", + "from your favorites": "de vos favoris", + "Back": "Retour", + "Enter your code below to apply the discount.": + "Entrez votre code ci-dessous pour appliquer la réduction.", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the": + "En sélectionnant \"J'accepte\" ci-dessous, je confirme avoir lu et accepté les", + "and acknowledge the": "et reconnais le", + "Enable Location Access": "Activer l'accès à la localisation", + "We need your location to find nearby drivers for pickups and drop-offs.": + "Nous avons besoin de votre position pour trouver des chauffeurs à proximité.", + "You should restart app to change language": + "Vous devez redémarrer l'application pour changer la langue", + "Home Page": "Page d'accueil", + "To change Language the App": "Pour changer la langue de l'appli", + "Learn more about our app and mission": + "En savoir plus sur notre appli et notre mission", + "Promos For Today": "Promos du jour", + "Choose your ride": "Choisissez votre trajet", + "Your Journey Begins Here": "Votre voyage commence ici", + "Bonus gift": "Cadeau bonus", + "Pay": "Payer", + "Get": "Obtenir", + "Send to Driver Again": "Renvoyer au chauffeur", + "Driver Name:": "Nom du chauffeur :", + "No trip data available": "Aucune donnée de trajet disponible", + "Car Plate:": "Immatriculation :", + "remaining": "restant", + "Order Cancelled": "Commande annulée", + "You canceled VIP trip": "Vous avez annulé le trajet VIP", + "Passenger cancelled order": "Le passager a annulé la commande", + "Your trip is scheduled": "Votre trajet est programmé", + "Don't forget your ride!": "N'oubliez pas votre trajet !", + "Trip updated successfully": "Trajet mis à jour avec succès", + "Car Make:": "Marque :", + "Car Model:": "Modèle :", + "Car Color:": "Couleur :", + "Driver Phone:": "Tél. Chauffeur :", + "Pre-booking": "Pré-réservation", + "Waiting VIP": "Attente VIP", + "Driver List": "Liste des chauffeurs", + "Confirm Trip": "Confirmer le trajet", + "Select date and time of trip": "Sélectionnez la date et l'heure", + "Date and Time Picker": "Sélecteur de date et heure", + "Trip Status:": "Statut du trajet :", + "pending": "en attente", + "accepted": "accepté", + "rejected": "rejeté", + "Apply": "Appliquer", + "Enter your promo code": "Entrez votre code promo", + "Apply Promo Code": "Appliquer le code promo", + "Scheduled Time:": "Heure prévue :", + "No drivers available": "Aucun chauffeur disponible", + "No drivers available at the moment. Please try again later.": + "Aucun chauffeur disponible pour le moment. Réessayez plus tard.", + "you have a negative balance of": "vous avez un solde négatif de", + "Please try again in a few moments": + "Veuillez réessayer dans quelques instants", + "Unknown Driver": "Chauffeur inconnu", + "in your": "dans votre", + "The driver accepted your order for": + "Le chauffeur a accepté votre commande pour", + "wallet due to a previous trip.": + "portefeuille dû à un trajet précédent.", + "rides": "trajets", + "Add Work": "Ajouter Travail", + "The reason is": "La raison est", + "User does not have a wallet #1652": + "L'utilisateur n'a pas de portefeuille #1652", + "Price of trip": "Prix du trajet", + "From:": "De :", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Pour les trajets Intaleq et Livraison, le prix est dynamique. Pour Confort, le prix est basé sur le temps et la distance.", + "Phone Wallet Saved Successfully": + "Numéro de portefeuille enregistré avec succès", + "Add wallet phone you use": + "Ajoutez le numéro de portefeuille que vous utilisez", + "Update Available": "Mise à jour disponible", + "Phone number must be exactly 11 digits long": + "Le numéro de téléphone doit comporter exactement 10 chiffres", + "Insert Wallet phone number": "Insérer le numéro de portefeuille", + "Phone number isn't an Egyptian phone number": + "Ce n'est pas un numéro de téléphone français", + "A new version of the app is available. Please update to the latest version.": + "Une nouvelle version de l'application est disponible. Veuillez mettre à jour.", + "We use location to get accurate and nearest passengers for you": + "Nous utilisons la localisation pour trouver les passagers les plus proches avec précision", + "This ride is already applied by another driver.": + "Ce trajet a déjà été pris par un autre chauffeur.", + "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": + "Nous utilisons votre position précise pour trouver le chauffeur le plus proche et fournir des infos exactes. Vous pouvez gérer cela dans les Paramètres.", + "Where are you, sir?": "Où êtes-vous, monsieur ?", + "I've been trying to reach you but your phone is off.": + "J'essaie de vous joindre mais votre téléphone est éteint.", + "Please don't be late": "S'il vous plaît, ne soyez pas en retard", + "Please don't be late, I'm waiting for you at the specified location.": + "Ne soyez pas en retard, je vous attends à l'endroit indiqué.", + "My location is correct. You can search for me using the navigation app": + "Ma position est correcte. Vous pouvez me chercher via le GPS", + "Hello, I'm at the agreed-upon location": + "Bonjour, je suis au lieu convenu", + "How much longer will you be?": "Combien de temps encore ?", + "Phone number is verified before": + "Le numéro de téléphone a déjà été vérifié", + "Change Ride": "Changer de trajet", + "You can change the destination by long-pressing any point on the map": + "Vous pouvez changer la destination par un appui long sur la carte", + "Pick from map destination": "Choisir la destination sur la carte", + "Pick or Tap to confirm": "Choisir ou appuyer pour confirmer", + "Accepted your order": "A accepté votre commande", + "Order Accepted": "Commande acceptée", + "with type": "avec le type", + "accepted your order at price": "a accepté votre commande au prix de", + "you canceled order": "vous avez annulé la commande", + "If you want order to another person": + "Si vous voulez commander pour une autre personne", + "upgrade price": "augmenter le prix", + "airport": "aéroport", + "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": + "Le meilleur choix pour une voiture confortable avec itinéraire flexible.", + "You can upgrade price to may driver accept your order": + "Vous pouvez augmenter le prix pour qu'un chauffeur accepte", + "Change Route": "Changer l'itinéraire", + "No Captain Accepted Your Order": + "Aucun chauffeur n'a accepté votre commande", + "We are looking for a captain but the price may increase to let a captain accept": + "Nous cherchons un chauffeur mais le prix peut augmenter pour faciliter l'acceptation", + "No, I want to cancel this trip": "Non, je veux annuler ce trajet", + "Attention": "Attention", + "Trip Cancelled. The cost of the trip will be deducted from your wallet.": + "Trajet annulé. Le coût sera déduit de votre portefeuille.", + "You will be charged for the cost of the driver coming to your location.": + "Les frais d'approche du chauffeur vous seront facturés.", + "reject your order.": "rejeter votre commande.", + "Order Under Review": "Commande en cours d'examen", + "is reviewing your order. They may need more information or a higher price.": + "examine votre commande. Il peut avoir besoin de plus d'infos ou d'un meilleur prix.", + "Vibration": "Vibration", + "Resend code": "Renvoyer le code", + "change device": "changer d'appareil", + "Device Change Detected": "Changement d'appareil détecté", + "You can only use one device at a time. This device will now be set as your active device.": + "Vous ne pouvez utiliser qu'un seul appareil à la fois. Cet appareil est maintenant actif.", + "Click here point": "Cliquez ici point", + "Are you want to change": "Voulez-vous changer", + "by": "par", + "Enter your complaint here": "Entrez votre réclamation ici", + "Please enter your complaint.": "Veuillez entrer votre réclamation.", + "Complaint data saved successfully": + "Données de réclamation enregistrées avec succès", + "Trip Monitor": "Moniteur de trajet", + "Insert SOS Phone": "Insérer téléphone SOS", + "Add SOS Phone": "Ajouter téléphone SOS", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "Cher(e),\n\n🚀 Je viens de commencer un trajet et je voudrais partager ma position en temps réel avec toi ! Télécharge l'application Intaleq pour voir les détails de mon trajet.\n\n👉 Lien de téléchargement :\nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nÀ bientôt !\n\nIntaleq ,", + "Send Intaleq app to him": "Lui envoyer l'appli Intaleq", + "No passenger found for the given phone number": + "Aucun passager trouvé pour ce numéro", + "No user found for the given phone number": + "Aucun utilisateur trouvé pour ce numéro", + "This price is": "Ce prix est", + "Work": "Travail", + "Add Home": "Ajouter Maison", + "Notifications": "Notifications", + "💳 Pay with Credit Card": "💳 Payer par carte de crédit", + "⚠️ You need to choose an amount!": + "⚠️ Vous devez choisir un montant !", + "💰 Pay with Wallet": "💰 Payer avec le portefeuille", + "You must restart the app to change the language.": + "Vous devez redémarrer l'application pour changer la langue.", + "joined": "a rejoint", + "Driver joined the channel": "Le chauffeur a rejoint le canal", + "Driver left the channel": "Le chauffeur a quitté le canal", + "Call Page": "Page d'appel", + "Call Left": "Appels restants", + " Next as Cash !": " Suivant en espèces !", + "To use Wallet charge it": + "Pour utiliser le portefeuille, rechargez-le", + "We are searching for the nearest driver to you": + "Nous cherchons le chauffeur le plus proche", + "Best choice for cities": "Meilleur choix pour la ville", + "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": + "Rayeh Gai : Service aller-retour pratique pour voyager entre les villes.", + "This trip is for women only": "Ce trajet est réservé aux femmes", + "Total budgets on month": "Budgets totaux du mois", + "You have call from driver": "Vous avez un appel du chauffeur", + "Intaleq": "Intaleq", + "passenger agreement": "accord passager", + "To become a passenger, you must review and agree to the ": + "Pour devenir passager, vous devez accepter les ", + "agreement subtitle": + "Pour continuer, vous devez accepter les conditions d'utilisation et la politique de confidentialité.", + "terms of use": "conditions d'utilisation", + " and acknowledge our Privacy Policy.": + " et reconnaître notre Politique de Confidentialité.", + "and acknowledge our": "et reconnaître notre", + "privacy policy": "politique de confidentialité.", + "i agree": "j'accepte", + "Driver already has 2 trips within the specified period.": + "Le chauffeur a déjà 2 trajets dans la période spécifiée.", + "The invitation was sent successfully": + "L'invitation a été envoyée avec succès", + "You should select your country": + "Vous devez sélectionner votre pays", + "Scooter": "Scooter", + "A trip with a prior reservation, allowing you to choose the best captains and cars.": + "Un trajet avec réservation préalable, vous permettant de choisir les meilleurs chauffeurs et voitures.", + "Mishwar Vip": "Trajet VIP", + "The driver waiting you in picked location .": + "Le chauffeur vous attend au lieu de prise en charge.", + "About Us": "À propos de nous", + "You can change the vibration feedback for all buttons": + "Vous pouvez changer le retour de vibration pour tous les boutons", + "Most Secure Methods": "Méthodes les plus sécurisées", + "In-App VOIP Calls": "Appels VOIP intégrés", + "Recorded Trips for Safety": "Trajets enregistrés pour la sécurité", + "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": + "\nNous privilégions aussi l'accessibilité, offrant des prix compétitifs.", + "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": + "Intaleq est une application de covoiturage conçue pour votre sécurité et votre budget. Nous vous connectons avec des chauffeurs fiables dans votre région.", + "Sign In by Apple": "Connexion via Apple", + "Sign In by Google": "Connexion via Google", + "How do I request a ride?": "Comment demander un trajet ?", + "Step-by-step instructions on how to request a ride through the Intaleq app.": + "Instructions étape par étape pour demander un trajet.", + "What types of vehicles are available?": + "Quels types de véhicules sont disponibles ?", + "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": + "Intaleq offre diverses options de véhicules incluant éco, confort et luxe.", + "How can I pay for my ride?": "Comment payer mon trajet ?", + "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": + "Intaleq offre plusieurs méthodes de paiement. Choisissez entre espèces ou carte lors de la confirmation.", + "Can I cancel my ride?": "Puis-je annuler mon trajet ?", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "Oui, vous pouvez annuler, mais des frais d'annulation peuvent s'appliquer.", + "Driver Registration & Requirements": + "Inscription Chauffeur & Requis", + "How can I register as a driver?": + "Comment s'inscrire comme chauffeur ?", + "What are the requirements to become a driver?": + "Quelles sont les conditions pour devenir chauffeur ?", + "Visit our website or contact Intaleq support for information on driver registration and requirements.": + "Visitez notre site web ou contactez le support pour plus d'infos.", + "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": + "Intaleq fournit une fonction de chat pour communiquer avec votre chauffeur ou passager.", + "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": + "Intaleq priorise votre sécurité avec la vérification des chauffeurs et le suivi des trajets.", + "Frequently Questions": "Questions Fréquentes", + "User does not exist.": "L'utilisateur n'existe pas.", + "We need your phone number to contact you and to help you.": + "Nous avons besoin de votre numéro pour vous contacter et vous aider.", + "You will recieve code in sms message": + "Vous recevrez un code par SMS", + "Please enter": "Veuillez entrer", + "We need your phone number to contact you and to help you receive orders.": + "Nous avons besoin de votre numéro pour vous aider à recevoir des commandes.", + "The full name on your criminal record does not match the one on your driver's license. Please verify and provide the correct documents.": + "Le nom sur le casier judiciaire ne correspond pas à celui du permis. Veuillez vérifier.", + "The national number on your driver's license does not match the one on your ID document. Please verify and provide the correct documents.": + "Le numéro national sur votre permis ne correspond pas à votre pièce d'identité.", + "Capture an Image of Your Criminal Record": + "Prendre une photo de votre casier judiciaire", + "IssueDate": "Date d'émission", + "Capture an Image of Your car license front": + "Photo recto de la carte grise", + "Capture an Image of Your ID Document front": + "Photo recto de la pièce d'identité", + "NationalID": "Numéro National / CNI", + "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": + "Partagez Intaleq avec vos amis et gagnez des récompenses.", + "FullName": "Nom complet", + "No invitation found yet!": "Aucune invitation trouvée !", + "InspectionResult": "Résultat de l'inspection", + "Criminal Record": "Casier judiciaire", + "The email or phone number is already registered.": + "L'email ou le numéro de téléphone est déjà enregistré.", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "Pour devenir chauffeur sur Intaleq, téléchargez votre permis, pièce d'identité et carte grise. Notre IA vérifiera leur authenticité en quelques minutes. La soumission de faux documents entraînera une résiliation immédiate.", + "Documents check": "Vérification des documents", + "Driver's License": "Permis de conduire", + "for your first registration!": "pour votre première inscription !", + "Get it Now!": "Obtenez-le maintenant !", + "before": "avant", + "Code not approved": "Code non approuvé", + "3000 LE": "30 €", + "Do you have an invitation code from another driver?": + "Avez-vous un code d'invitation d'un autre chauffeur ?", + "Paste the code here": "Collez le code ici", + "No, I don't have a code": "Non, je n'ai pas de code", + "Code approved": "Code approuvé", + "Install our app:": "Installez notre appli :", + "Invite another driver and both get a gift after he completes 100 trips!": + "Invitez un autre chauffeur et recevez un cadeau après ses 100 trajets !", + "Invite": "Inviter", + "Are you sure?": "Êtes-vous sûr ?", + "This will delete all recorded files from your device.": + "Cela supprimera tous les fichiers enregistrés de votre appareil.", + "Select a file": "Sélectionner un fichier", + "Select a File": "Sélectionner un Fichier", + "Delete": "Supprimer", + "attach audio of complain": "joindre audio de plainte", + "Phone Number Check": "Vérification du numéro de téléphone", + "Drivers received orders": "Les chauffeurs ont reçu les commandes", + "No audio files recorded.": "Aucun fichier audio enregistré.", + "This is for delivery or a motorcycle.": + "Ceci est pour la livraison ou une moto.", + "Intaleq Reminder": "Rappel Intaleq", + "It's time to check the Intaleq app!": + "Il est temps de vérifier l'appli Intaleq !", + "you must insert token code": "vous devez insérer le code jeton", + "Something went wrong. Please try again.": + "Un problème est survenu. Veuillez réessayer.", + "Trip Details": "Détails du trajet", + "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": + "Le contexte ne fournit pas de détails sur la plainte. Veuillez fournir les informations nécessaires.", + "Submit Your Complaint": "Soumettre votre réclamation", + "Status": "Statut", + "Choose from contact": "Choisir dans les contacts", + "attach correct audio": "joindre l'audio correct", + "be sure": "assurez-vous", + "Audio uploaded successfully.": "Audio téléchargé avec succès.", + "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": + "Parfait pour les passagers cherchant des voitures récentes avec liberté d'itinéraire", + "Share this code with your friends and earn rewards when they use it!": + "Partagez ce code et gagnez des récompenses !", + "Enter phone": "Entrer téléphone", + "complete, you can claim your gift": + "terminé, vous pouvez réclamer votre cadeau", + "When": "Quand", + "Enter driver's phone": "Entrer tél. du chauffeur", + "Send Invite": "Envoyer l'invitation", + "Show Invitations": "Afficher les invitations", + "License Type": "Type de permis", + "National Number": "Numéro National", + "Name (Arabic)": "Nom (Arabe)", + "Name (English)": "Nom (Français/Anglais)", + "Address": "Adresse", + "Issue Date": "Date de délivrance", + "Expiry Date": "Date d'expiration", + "License Categories": "Catégories de permis", + "driver_license": "permis_de_conduire", + "Capture an Image of Your Driver License": + "Prendre une photo de votre permis", + "ID Documents Back": "Verso de la pièce d'identité", + "National ID": "CNI / Numéro National", + "Occupation": "Profession", + "Religion": "Religion", + "Full Name (Marital)": "Nom complet", + "Expiration Date": "Date d'expiration", + "Capture an Image of Your ID Document Back": + "Photo verso de la pièce d'identité", + "ID Documents Front": "Recto de la pièce d'identité", + "First Name": "Prénom", + "CardID": "Numéro de Carte", + "Vehicle Details Front": "Détails du véhicule (Avant)", + "Plate Number": "Numéro d'immatriculation", + "Owner Name": "Nom du propriétaire", + "Vehicle Details Back": "Détails du véhicule (Arrière)", + "Make": "Marque", + "Model": "Modèle", + "Year": "Année", + "Chassis": "Châssis", + "Color": "Couleur", + "Displacement": "Cylindrée", + "Fuel": "Carburant", + "Tax Expiry Date": "Date d'expiration de la taxe", + "Inspection Date": "Date d'inspection", + "Capture an Image of Your car license back": + "Photo verso de la carte grise", + "Capture an Image of Your Driver's License": + "Photo de votre permis de conduire", + "Sign in with Google for easier email and name entry": + "Connectez-vous avec Google pour faciliter la saisie", + "You will choose allow all the time to be ready receive orders": + "Choisissez 'Toujours autoriser' pour recevoir des commandes", + "Get to your destination quickly and easily.": + "Arrivez à destination rapidement et facilement.", + "Enjoy a safe and comfortable ride.": + "Profitez d'un trajet sûr et confortable.", + "Choose Language": "Choisir la langue", + "Pay with Wallet": "Payer avec le portefeuille", + "Invalid MPIN": "MPIN invalide", + "Invalid OTP": "OTP invalide", + "Enter your email address": "Entrez votre adresse email", + "Please enter Your Email.": "Veuillez entrer votre email.", + "Enter your phone number": "Entrez votre numéro de téléphone", + "Please enter your phone number.": + "Veuillez entrer votre numéro de téléphone.", + "Please enter Your Password.": "Veuillez entrer votre mot de passe.", + "if you dont have account": "si vous n'avez pas de compte", + "Register": "S'inscrire", + "Accept Ride's Terms & Review Privacy Notice": + "Accepter les conditions et la confidentialité", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "En sélectionnant 'J'accepte', je reconnais avoir lu et accepté les conditions d'utilisation et la politique de confidentialité. J'ai au moins 18 ans.", + "First name": "Prénom", + "Enter your first name": "Entrez votre prénom", + "Please enter your first name.": "Veuillez entrer votre prénom.", + "Last name": "Nom", + "Enter your last name": "Entrez votre nom", + "Please enter your last name.": "Veuillez entrer votre nom.", + "City": "Ville", + "Please enter your City.": "Veuillez entrer votre ville.", + "Verify Email": "Vérifier l'email", + "We sent 5 digit to your Email provided": + "Nous avons envoyé 5 chiffres à votre email", + "5 digit": "5 chiffres", + "Send Verification Code": "Envoyer le code de vérification", + "Your Ride Duration is ": "La durée de votre trajet est ", + "You will be thier in": "Vous y serez dans", + "You trip distance is": "La distance de votre trajet est", + "Fee is": "Les frais sont", + "From : ": "De : ", + "To : ": "À : ", + "Add Promo": "Ajouter Promo", + "Confirm Selection": "Confirmer la sélection", + "distance is": "la distance est", + "Privacy Policy": "Politique de confidentialité", + "Intaleq LLC": "Intaleq LLC", + "Syria's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "Service de covoiturage pionnier en France. Nous priorisons la proximité avec vous.", + "Intaleq is the first ride-sharing app in Syria, designed to connect you with the nearest drivers for a quick and convenient travel experience.": + "Intaleq est la première appli de covoiturage en France, conçue pour vous connecter aux chauffeurs les plus proches.", + "Why Choose Intaleq?": "Pourquoi choisir Intaleq ?", + "Closest to You": "Le plus proche de vous", + "We connect you with the nearest drivers for faster pickups and quicker journeys.": + "Nous vous connectons aux chauffeurs les plus proches pour des trajets plus rapides.", + "Uncompromising Security": "Sécurité sans compromis", + "Lady Captains Available": "Chauffeurs femmes disponibles", + "Recorded Trips (Voice & AI Analysis)": + "Trajets enregistrés (Analyse vocale & IA)", + "Fastest Complaint Response": "Réponse rapide aux plaintes", + "Our dedicated customer service team ensures swift resolution of any issues.": + "Notre service client assure une résolution rapide des problèmes.", + "Affordable for Everyone": "Abordable pour tous", + "Frequently Asked Questions": "Questions Fréquemment Posées", + "Getting Started": "Commencer", + "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": + "Ouvrez simplement l'appli Intaleq, entrez votre destination et appuyez sur \"Commander\".", + "Vehicle Options": "Options de véhicule", + "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": + "Intaleq offre diverses options incluant Éco, Confort et Luxe pour s'adapter à vos besoins.", + "Payments": "Paiements", + "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": + "Vous pouvez payer en espèces ou par carte. Sélectionnez votre méthode préférée avant de confirmer.", + "Ride Management": "Gestion des trajets", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "Oui, vous pouvez annuler, mais des frais peuvent s'appliquer.", + "For Drivers": "Pour les chauffeurs", + "Driver Registration": "Inscription Chauffeur", + "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": + "Pour s'inscrire comme chauffeur, visitez notre site ou contactez le support.", + "Visit Website/Contact Support": + "Visiter le site / Contacter le support", + "Close": "Fermer", + "We are searching for the nearest driver": + "Nous cherchons le chauffeur le plus proche", + "Communication": "Communication", + "How do I communicate with the other party (passenger/driver)?": + "Comment communiquer avec l'autre partie ?", + "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": + "Vous pouvez communiquer via le chat intégré une fois le trajet confirmé.", + "Safety & Security": "Sûreté et Sécurité", + "What safety measures does Intaleq offer?": + "Quelles mesures de sécurité offre Intaleq ?", + "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": + "Intaleq offre la vérification des chauffeurs, le suivi des trajets et les contacts d'urgence.", + "Enjoy competitive prices across all trip options, making travel accessible.": + "Profitez de prix compétitifs sur tous les trajets.", + "Variety of Trip Choices": "Variété de choix de trajets", + "Choose the trip option that perfectly suits your needs and preferences.": + "Choisissez l'option de trajet qui vous convient parfaitement.", + "Your Choice, Our Priority": "Votre Choix, Notre Priorité", + "Because we are near, you have the flexibility to choose the ride that works best for you.": + "Parce que nous sommes proches, vous avez la flexibilité de choisir le meilleur trajet.", + "duration is": "la durée est", + "Setting": "Paramètre", + "Find answers to common questions": + "Trouver des réponses aux questions courantes", + "I don't need a ride anymore": "Je n'ai plus besoin de trajet", + "I was just trying the application": "J'essayais juste l'application", + "No driver accepted my request": + "Aucun chauffeur n'a accepté ma demande", + "I added the wrong pick-up/drop-off location": + "J'ai mis le mauvais lieu de prise en charge/dépose", + "I don't have a reason": "Je n'ai pas de raison", + "Can we know why you want to cancel Ride ?": + "Pouvons-nous savoir pourquoi vous voulez annuler ?", + "Cancel Ride": "Annuler la course", + "Add Payment Method": "Ajouter une méthode de paiement", + "Ride Wallet": "Portefeuille Trajet", + "Payment Method": "Méthode de paiement", + "Type here Place": "Tapez le lieu ici", + "Are You sure to ride to": "Êtes-vous sûr d'aller à", + "Confirm": "Confirmer", + "You are Delete": "Vous supprimez", + "Deleted": "Supprimé", + "You Dont Have Any places yet !": "Vous n'avez pas encore de lieux !", + "From : Current Location": "De : Position actuelle", + "My Cared": "Mes Cartes", + "Add Card": "Ajouter une carte", + "Add Credit Card": "Ajouter une carte de crédit", + "Please enter the cardholder name": + "Veuillez entrer le nom du titulaire", + "Please enter the expiry date": + "Veuillez entrer la date d'expiration", + "Please enter the CVV code": "Veuillez entrer le code CVV", + "Go To Favorite Places": "Aller aux lieux favoris", + "Go to this Target": "Aller à cette destination", + "My Profile": "Mon Profil", + "Are you want to go to this site": "Voulez-vous aller à ce site", + "MyLocation": "MaPosition", + "my location": "ma position", + "Target": "Destination", + "You Should choose rate figure": "Vous devez choisir une note", + "Login Captin": "Connexion Chauffeur", + "Register Captin": "Inscription Chauffeur", + "Send Verfication Code": "Envoyer le code de vérification", + "KM": "KM", + "End Ride": "Fin du trajet", + "Minute": "Minute", + "Go to passenger Location now": + "Allez à la position du passager maintenant", + "Duration of the Ride is ": "La durée du trajet est ", + "Distance of the Ride is ": "La distance du trajet est ", + "Name of the Passenger is ": "Le nom du passager est ", + "Hello this is Captain": "Bonjour c'est le Chauffeur", + "Start the Ride": "Démarrer la course", + "Please Wait If passenger want To Cancel!": + "Veuillez patienter si le passager veut annuler !", + "Total Duration:": "Durée totale :", + "Active Duration:": "Durée active :", + "Waiting for Captin ...": "En attente du chauffeur...", + "Age is ": "L'âge est ", + "Rating is ": "La note est ", + " to arrive you.": " pour arriver à vous.", + "Tariff": "Tarif", + "Settings": "Paramètres", + "Feed Back": "Avis", + "Please enter a valid 16-digit card number": + "Veuillez entrer un numéro de carte valide à 16 chiffres", + "Add Phone": "Ajouter téléphone", + "Please enter a phone number": + "Veuillez entrer un numéro de téléphone", + "You dont Add Emergency Phone Yet!": + "Vous n'avez pas encore ajouté de téléphone d'urgence !", + "You will arrive to your destination after ": + "Vous arriverez à destination après ", + "You can cancel Ride now": "Vous pouvez annuler le trajet maintenant", + "You Can cancel Ride After Captain did not come in the time": + "Vous pouvez annuler si le chauffeur ne vient pas à temps", + "If you in Car Now. Press Start The Ride": + "Si vous êtes en voiture, appuyez sur Démarrer", + "You Dont Have Any amount in": "Vous n'avez aucun montant dans", + "Wallet!": "Portefeuille !", + "You Have": "Vous avez", + "Save Credit Card": "Enregistrer la carte", + "Show Promos": "Voir les Promos", + "10 and get 4% discount": "10 et obtenez 4% de réduction", + "20 and get 6% discount": "20 et obtenez 6% de réduction", + "40 and get 8% discount": "40 et obtenez 8% de réduction", + "100 and get 11% discount": "100 et obtenez 11% de réduction", + "Pay with Your PayPal": "Payer avec PayPal", + "You will choose one of above !": + "Vous devez choisir l'un des choix ci-dessus !", + "Edit Profile": "Modifier le profil", + "Copy this Promo to use it in your Ride!": + "Copiez cette promo pour l'utiliser !", + "To change some Settings": "Pour changer certains paramètres", + "Order Request Page": "Page de demande de commande", + "Rouats of Trip": "Itinéraires du trajet", + "Passenger Name is ": "Le nom du passager est ", + "Total From Passenger is ": "Total du passager est ", + "Duration To Passenger is ": "Durée vers le passager est ", + "Distance To Passenger is ": "Distance vers le passager est ", + "Total For You is ": "Total pour vous est ", + "Distance is ": "Distance est ", + " KM": " KM", + "Duration of Trip is ": "Durée du trajet est ", + " Minutes": " Minutes", + "Apply Order": "Accepter la commande", + "Refuse Order": "Refuser la commande", + "Rate Captain": "Noter le chauffeur", + "Enter your Note": "Entrez votre note", + "Type something...": "Tapez quelque chose...", + "Submit rating": "Envoyer la note", + "Rate Passenger": "Noter le passager", + "Ride Summary": "Résumé du trajet", + "welcome_message": "Bienvenue sur Intaleq !", + "app_description": + "Intaleq est une appli de covoiturage fiable et sûre.", + "get_to_destination": "Arrivez à destination rapidement.", + "get_a_ride": "Avec Intaleq, obtenez un trajet en quelques minutes.", + "safe_and_comfortable": "Profitez d'un trajet sûr et confortable.", + "committed_to_safety": "Intaleq s'engage pour la sécurité.", + "your ride is Accepted": "votre trajet est Accepté", + "Driver is waiting at pickup.": + "Le chauffeur attend au point de rendez-vous.", + "Driver is on the way": "Le chauffeur est en route", + "Contact Options": "Options de contact", + "Send a custom message": "Envoyer un message personnalisé", + "Type your message": "Tapez votre message", + "I will go now": "J'y vais maintenant", + "You Have Tips": "Vous avez des pourboires", + " tips\nTotal is": " pourboires\nLe total est", + "Your fee is ": "Vos frais sont ", + "Do you want to pay Tips for this Driver": + "Voulez-vous donner un pourboire ?", + "Tip is ": "Le pourboire est ", + "Are you want to wait drivers to accept your order": + "Voulez-vous attendre que les chauffeurs acceptent ?", + "This price is fixed even if the route changes for the driver.": + "Ce prix est fixe même si l'itinéraire change.", + "The price may increase if the route changes.": + "Le prix peut augmenter si l'itinéraire change.", + "The captain is responsible for the route.": + "Le chauffeur est responsable de l'itinéraire.", + "We are search for nearst driver": + "Nous cherchons le chauffeur le plus proche", + "Your order is being prepared": "Votre commande est en préparation", + "The drivers are reviewing your request": + "Les chauffeurs examinent votre demande", + "Your order sent to drivers": + "Votre commande a été envoyée aux chauffeurs", + "You can call or record audio of this trip": + "Vous pouvez appeler ou enregistrer l'audio", + "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": + "Le trajet a commencé ! N'hésitez pas à contacter les urgences ou partager votre trajet.", + "Camera Access Denied.": "Accès caméra refusé.", + "Open Settings": "Ouvrir les paramètres", + "GPS Required Allow !.": "GPS requis, autorisez-le !", + "Your Account is Deleted": "Votre compte est supprimé", + "Are you sure to delete your account?": + "Êtes-vous sûr de supprimer votre compte ?", + "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": + "Vos données seront effacées après 2 semaines\nVous ne pourrez plus utiliser l'appli après 1 mois ", + "Enter Your First Name": "Entrez votre prénom", + "Are you Sure to LogOut?": "Êtes-vous sûr de vous déconnecter ?", + "Email Wrong": "Email incorrect", + "Email you inserted is Wrong.": "L'email inséré est incorrect.", + "You have finished all times ": + "Vous avez épuisé toutes les tentatives ", + "if you want help you can email us here": + "si vous voulez de l'aide, écrivez-nous ici", + "Thanks": "Merci", + "Email Us": "Envoyez-nous un email", + "I cant register in your app in face detection ": + "Je ne peux pas m'inscrire à cause de la détection faciale ", + "Hi": "Bonjour", + "No face detected": "Aucun visage détecté", + "Image detecting result is ": "Le résultat de détection d'image est ", + "from 3 times Take Attention": "sur 3 fois, faites attention", + "Be sure for take accurate images please\nYou have": + "Assurez-vous de prendre des images précises svp\nVous avez", + "image verified": "image vérifiée", + "Next": "Suivant", + "There is no help Question here": + "Il n'y a pas de question d'aide ici", + "You dont have Points": "Vous n'avez pas de points", + "You Are Stopped For this Day !": + "Vous êtes arrêté pour aujourd'hui !", + "You must be charge your Account": + "Vous devez recharger votre compte", + "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": + "Vous avez refusé 3 trajets aujourd'hui \nÀ demain !", + "Recharge my Account": "Recharger mon compte", + "Ok , See you Tomorrow": "Ok, à demain", + "You are Stopped": "Vous êtes arrêté", + "Connected": "Connecté", + "Not Connected": "Non connecté", + "Your are far from passenger location": "Vous êtes loin du passager", + "go to your passenger location before\nPassenger cancel trip": + "allez vers le passager avant qu'il n'annule", + "You will get cost of your work for this trip": + "Vous serez payé pour ce trajet", + " in your wallet": " dans votre portefeuille", + "you gain": "vous gagnez", + "Order Cancelled by Passenger": "Commande annulée par le passager", + "Feedback data saved successfully": + "Données d'avis enregistrées avec succès", + "No Promo for today .": "Pas de promo pour aujourd'hui.", + "Select your destination": "Sélectionnez votre destination", + "Search for your Start point": "Recherchez votre point de départ", + "Search for waypoint": "Recherchez un point de passage", + "Current Location": "Position actuelle", + "Add Location 1": "Ajouter Lieu 1", + "You must Verify email !.": "Vous devez vérifier l'email !", + "Cropper": "Recadrer", + "Saved Sucssefully": "Enregistré avec succès", + "Select Date": "Sélectionner la date", + "Birth Date": "Date de naissance", + "Ok": "Ok", + "the 500 points equal 30 JOD": "les 500 points égalent 30 €", + "the 500 points equal 30 JOD for you \nSo go and gain your money": + "les 500 points égalent 30 € pour vous \nAlors allez gagner votre argent", + "token updated": "jeton mis à jour", + "Add Location 2": "Ajouter Lieu 2", + "Add Location 3": "Ajouter Lieu 3", + "Add Location 4": "Ajouter Lieu 4", + "Waiting for your location": "En attente de votre position", + "Search for your destination": "Recherchez votre destination", + "Hi! This is": "Salut ! C'est", + " I am using": " J'utilise", + " to ride with": " pour rouler avec", + " as the driver.": " comme chauffeur.", + "is driving a ": "conduit une ", + " with license plate ": " immatriculée ", + " I am currently located at ": " Je suis actuellement à ", + "Please go to Car now ": "Veuillez aller à la voiture maintenant ", + "You will receive a code in WhatsApp Messenger": + "Vous recevrez un code sur WhatsApp", + "If you need assistance, contact us": + "Si vous avez besoin d'aide, contactez-nous", + "Promo Ended": "Promo terminée", + "Enter the promo code and get": "Entrez le code promo et obtenez", + "DISCOUNT": "REMISE", + "No wallet record found": + "Aucun enregistrement de portefeuille trouvé", + "for": "pour", + "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": + "Intaleq est l'appli de covoiturage la plus sûre avec de nombreuses fonctionnalités. Nous offrons le taux de commission le plus bas de seulement 8%.", + "You can contact us during working hours from 12:00 - 19:00.": + "Vous pouvez nous contacter de 12h00 à 19h00.", + "Choose a contact option": "Choisissez une option de contact", + "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": + "Heures de travail de 12h00 à 19h00.\nVous pouvez envoyer un WhatsApp ou email.", + "Promo code copied to clipboard!": "Code promo copié !", + "Copy Code": "Copier le code", + "Your invite code was successfully applied!": + "Votre code d'invitation a été appliqué !", + "Payment Options": "Options de paiement", + "wait 1 minute to receive message": + "attendez 1 minute pour recevoir le message", + "You have copied the promo code.": "Vous avez copié le code promo.", + "Select Payment Amount": "Sélectionner le montant du paiement", + "The promotion period has ended.": + "La période de promotion est terminée.", + "Promo Code Accepted": "Code promo accepté", + "Tap on the promo code to copy it!": + "Appuyez sur le code promo pour le copier !", + "Lowest Price Achieved": "Prix le plus bas atteint", + "Cannot apply further discounts.": + "Impossible d'appliquer plus de remises.", + "Promo Already Used": "Promo déjà utilisée", + "Invitation Used": "Invitation utilisée", + "You have already used this promo code.": + "Vous avez déjà utilisé ce code promo.", + "Insert Your Promo Code": "Insérez votre code promo", + "Enter promo code here": "Entrez le code promo ici", + "Please enter a valid promo code": + "Veuillez entrer un code promo valide", + "Awfar Car": "Voiture Éco", + "Old and affordable, perfect for budget rides.": + "Abordable, parfait pour les petits budgets.", + " If you need to reach me, please contact the driver directly at": + " Si vous devez me joindre, contactez le chauffeur au", + "No Car or Driver Found in your area.": + "Aucune voiture ou chauffeur trouvé dans votre zone.", + "Please Try anther time ": "Veuillez réessayer une autre fois ", + "There no Driver Aplly your order sorry for that ": + "Aucun chauffeur n'a pris votre commande, désolé ", + "Trip Cancelled": "Trajet annulé", + "The Driver Will be in your location soon .": + "Le chauffeur sera bientôt là.", + "The distance less than 500 meter.": + "La distance est inférieure à 500 mètres.", + "Promo End !": "Fin de la promo !", + "There is no notification yet": "Il n'y a pas encore de notification", + "Use Touch ID or Face ID to confirm payment": + "Utilisez Touch ID ou Face ID pour confirmer", + "Contact us for any questions on your order.": + "Contactez-nous pour toute question.", + "Pyament Cancelled .": "Paiement annulé.", + "type here": "tapez ici", + "Scan Driver License": "Scanner le permis", + "Please put your licence in these border": + "Veuillez mettre votre permis dans ce cadre", + "Camera not initialized yet": "Caméra non initialisée", + "Take Image": "Prendre une photo", + "AI Page": "Page IA", + "Take Picture Of ID Card": "Photo de la pièce d'identité", + "Take Picture Of Driver License Card": "Photo du permis de conduire", + "We are process picture please wait ": + "Traitement de l'image en cours, veuillez patienter ", + "There is no data yet.": "Il n'y a pas encore de données.", + "Name :": "Nom :", + "Drivers License Class: ": "Classe de permis :", + "Document Number: ": "Numéro de document :", + "Address: ": "Adresse :", + "Height: ": "Taille :", + "Expiry Date: ": "Date d'expiration :", + "Date of Birth: ": "Date de naissance :", + "You can't continue with us .\nYou should renew Driver license": + "Vous ne pouvez pas continuer.\nVous devez renouveler votre permis", + "Detect Your Face ": "Détecter votre visage ", + "Go to next step\nscan Car License.": + "Étape suivante\nscanner la carte grise.", + "Name in arabic": "Nom en arabe", + "Drivers License Class": "Classe de permis", + "Selected Date": "Date sélectionnée", + "Select Time": "Sélectionner l'heure", + "Selected Time": "Heure sélectionnée", + "Selected Date and Time": "Date et heure sélectionnées", + "Lets check Car license ": "Vérifions la carte grise ", + "Car": "Voiture", + "Plate": "Plaque", + "Rides": "Trajets", + "Selected driver": "Chauffeur sélectionné", + "Lets check License Back Face": "Vérifions le verso du permis", + "Car License Card": "Carte Grise", + "No image selected yet": "Aucune image sélectionnée", + "Made :": "Marque :", + "model :": "Modèle :", + "VIN :": "VIN :", + "year :": "Année :", + "ُExpire Date": "Date d'expiration", + "Login Driver": "Connexion Chauffeur", + "Password must br at least 6 character.": + "Le mot de passe doit avoir au moins 6 caractères.", + "if you don't have account": "si vous n'avez pas de compte", + "Here recorded trips audio": "Ici l'audio des trajets enregistrés", + "Register as Driver": "S'inscrire comme chauffeur", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": + "En sélectionnant \"J'accepte\", j'accepte les conditions d'utilisation et reconnais ", + "Log Out Page": "Page de déconnexion", + "Log Off": "Déconnexion", + "Register Driver": "Inscrire Chauffeur", + "Verify Email For Driver": "Vérifier l'email pour le chauffeur", + "Admin DashBoard": "Tableau de bord Admin", + "Your name": "Votre nom", + "your ride is applied": "votre trajet est demandé", + "H and": "H et", + "JOD": "€", + "m": "m", + "We search nearst Driver to you": + "Nous cherchons le chauffeur le plus proche", + "please wait till driver accept your order": + "veuillez attendre que le chauffeur accepte", + "No accepted orders? Try raising your trip fee to attract riders.": + "Pas de commande acceptée ? Essayez d'augmenter votre tarif.", + "You should select one": "Vous devez en sélectionner un", + "The driver accept your order for": + "Le chauffeur accepte votre commande pour", + "The driver on your way": "Le chauffeur est en route", + "Total price from ": "Prix total de ", + "Order Details Intaleq": "Détails Commande Intaleq", + "Selected file:": "Fichier sélectionné :", + "Your trip cost is": "Le coût de votre trajet est", + "this will delete all files from your device": + "cela supprimera tous les fichiers de votre appareil", + "Exclusive offers and discounts always with the Intaleq app": + "Offres exclusives et remises toujours avec l'appli Intaleq", + "Submit Question": "Soumettre une question", + "Please enter your Question.": "Veuillez entrer votre question.", + "Help Details": "Détails de l'aide", + "No trip yet found": "Aucun trajet trouvé", + "No Response yet.": "Pas encore de réponse.", + " You Earn today is ": " Vous avez gagné aujourd'hui ", + " You Have in": " Vous avez dans", + "Total points is ": "Total des points est ", + "Total Connection Duration:": "Durée totale de connexion :", + "Passenger name : ": "Nom du passager : ", + "Cost Of Trip IS ": "Le coût du trajet est ", + "Arrival time": "Heure d'arrivée", + "arrival time to reach your point": + "heure d'arrivée pour atteindre votre point", + "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Pour Intaleq et scooter, le prix est dynamique. Pour Confort, basé sur le temps et la distance.", + "Hello this is Driver": "Bonjour c'est le chauffeur", + "Is the Passenger in your Car ?": + "Le passager est-il dans votre voiture ?", + "Please wait for the passenger to enter the car before starting the trip.": + "Veuillez attendre que le passager monte avant de démarrer.", + "No ,still Waiting.": "Non, j'attends toujours.", + "I arrive you": "Je suis arrivé", + "I Arrive your site": "Je suis arrivé à votre emplacement", + "You are not in near to passenger location": + "Vous n'êtes pas proche du passager", + "please go to picker location exactly": + "veuillez aller exactement au lieu de prise en charge", + "You Can Cancel Trip And get Cost of Trip From": + "Vous pouvez annuler et obtenir le coût de", + "Are you sure to cancel?": "Êtes-vous sûr d'annuler ?", + "Insert Emergincy Number": "Insérer numéro d'urgence", + "Best choice for comfort car and flexible route and stops point": + "Meilleur choix pour voiture confort et itinéraire flexible", + "Insert": "Insérer", + "This is for scooter or a motorcycle.": + "Ceci est pour un scooter ou une moto.", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "Trajet direct à prix fixe. Le chauffeur doit suivre l'itinéraire.", + "You can decline a request without any cost": + "Vous pouvez refuser une demande sans frais", + "Perfect for adventure seekers who want to experience something new and exciting": + "Parfait pour les amateurs d'aventure", + "My current location is:": "Ma position actuelle est :", + "and I have a trip on": "et j'ai un trajet sur", + "App with Passenger": "Appli avec Passager", + "You will be pay the cost to driver or we will get it from you on next trip": + "Vous paierez le chauffeur ou nous le récupérerons au prochain trajet", + "Trip has Steps": "Le trajet a des étapes", + "Distance from Passenger to destination is ": + "La distance du passager à la destination est ", + "price is": "le prix est", + "This ride type does not allow changes to the destination or additional stops": + "Ce type de trajet ne permet pas de changements", + "This price may be changed": "Ce prix peut changer", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "Pas de SIM ? Appelez votre chauffeur via l'appli.", + "This ride type allows changes, but the price may increase": + "Ce type permet des changements, mais le prix peut augmenter", + "Select one message": "Sélectionnez un message", + "I'm waiting for you": "Je vous attends", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "Nous avons remarqué une vitesse excessive (>100 km/h). Ralentissez svp.", + "Warning: Intaleqing detected!": "Attention : Intaleqing détecté !", + "Please help! Contact me as soon as possible.": + "Aidez-moi ! Contactez-moi dès que possible.", + "Share Trip Details": "Partager les détails du trajet", + "Car Plate is ": "La plaque est ", + "the 300 points equal 300 L.E for you \nSo go and gain your money": + "les 300 points égalent 300 € pour vous \nAlors allez gagner votre argent", + "the 300 points equal 300 L.E": "les 300 points égalent 300 €", + "The payment was not approved. Please try again.": + "Le paiement n'a pas été approuvé. Réessayez.", + "Payment Failed": "Paiement échoué", + "This is a scheduled notification.": + "Ceci est une notification programmée.", + "An error occurred during the payment process.": + "Une erreur est survenue durant le paiement.", + "The payment was approved.": "Le paiement a été approuvé.", + "Payment Successful": "Paiement réussi", + "No ride found yet": "Aucun trajet trouvé", + "Accept Order": "Accepter la commande", + "Bottom Bar Example": "Exemple de barre inférieure", + "Driver phone": "Tél. du chauffeur", + "Statistics": "Statistiques", + "Origin": "Origine", + "Destination": "Destination", + "Driver Name": "Nom du chauffeur", + "Driver Car Plate": "Plaque du chauffeur", + "Available for rides": "Disponible pour des trajets", + "Scan Id": "Scanner ID", + "Camera not initilaized yet": "Caméra non initialisée", + "Scan ID MklGoogle": "Scan ID MklGoogle", + "Language": "Langue", + "Jordan": "Jordanie", + "USA": "USA", + "Egypt": "Égypte", + "Turkey": "Turquie", + "Saudi Arabia": "Arabie Saoudite", + "Qatar": "Qatar", + "Bahrain": "Bahreïn", + "Kuwait": "Koweït", + "But you have a negative salary of": + "Mais vous avez un salaire négatif de", + "Promo Code": "Code Promo", + "Your trip distance is": "Votre distance de trajet est", + "Enter promo code": "Entrer code promo", + "You have promo!": "Vous avez une promo !", + "Cost Duration": "Coût Durée", + "Duration is": "La durée est", + "Leave": "Quitter", + "Join": "Rejoindre", + "Heading your way now. Please be ready.": "J'arrive. Soyez prêt svp.", + "Approaching your area. Should be there in 3 minutes.": + "J'approche. Là dans 3 minutes.", + "There's heavy traffic here. Can you suggest an alternate pickup point?": + "Trafic dense ici. Pouvez-vous suggérer un autre point ?", + "This ride is already taken by another driver.": + "Ce trajet est déjà pris.", + "You Should be select reason.": "Vous devez sélectionner une raison.", + "Waiting for Driver ...": "En attente du chauffeur...", + "Latest Recent Trip": "Dernier trajet récent", + "from your list": "de votre liste", + "Do you want to change Work location": + "Voulez-vous changer le lieu de travail", + "Do you want to change Home location": + "Voulez-vous changer le domicile", + "We Are Sorry That we dont have cars in your Location!": + "Désolé, pas de voitures dans votre zone !", + "Choose from Map": "Choisir sur la carte", + "Pick your ride location on the map - Tap to confirm": + "Choisissez votre lieu sur la carte - Appuyez pour confirmer", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "Intaleq est l'appli de transport sûre et fiable.", + "With Intaleq, you can get a ride to your destination in minutes.": + "Avec Intaleq, obtenez un trajet en quelques minutes.", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "Intaleq s'engage pour la sécurité, tous nos chauffeurs sont vérifiés.", + "Pick from map": "Choisir sur la carte", + "No Car in your site. Sorry!": + "Pas de voiture à votre emplacement. Désolé !", + "Nearest Car for you about ": "Voiture la plus proche à environ ", + "From :": "De :", + "Get Details of Trip": "Obtenir les détails du trajet", + "If you want add stop click here": + "Si vous voulez ajouter un arrêt cliquez ici", + "Where you want go ": "Où voulez-vous aller ", + "My Card": "Ma Carte", + "Start Record": "Démarrer l'enregistrement", + "History of Trip": "Historique du trajet", + "Helping Center": "Centre d'aide", + "Record saved": "Enregistrement sauvegardé", + "Trips recorded": "Trajets enregistrés", + "Select Your Country": "Sélectionnez votre pays", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "Pour assurer des infos précises, sélectionnez votre pays.", + "Are you sure to delete recorded files": + "Êtes-vous sûr de supprimer les fichiers ?", + "Select recorded trip": "Sélectionner le trajet enregistré", + "Card Number": "Numéro de carte", + "Hi, Where to ": "Salut, on va où ", + "Pick your destination from Map": + "Choisissez votre destination sur la carte", + "Add Stops": "Ajouter des arrêts", + "Get Direction": "Obtenir l'itinéraire", + "Add Location": "Ajouter un lieu", + "Switch Rider": "Changer de passager", + "You will arrive to your destination after timer end.": + "Vous arriverez après la fin du minuteur.", + "You can cancel trip": "Vous pouvez annuler le trajet", + "The driver waitting you in picked location .": + "Le chauffeur vous attend au lieu choisi.", + "Pay with Your": "Payer avec votre", + "Pay with Credit Card": "Payer par carte de crédit", + "Show Promos to Charge": "Afficher les promos pour recharger", + "Point": "Point", + "How many hours would you like to wait?": + "Combien d'heures voulez-vous attendre ?", + "Driver Wallet": "Portefeuille Chauffeur", + "Choose between those Type Cars": + "Choisissez parmi ces types de voitures", + "hour": "heure", + "Select Waiting Hours": "Sélectionner les heures d'attente", + "Total Points is": "Total des points est", + "You will receive a code in SMS message": + "Vous recevrez un code par SMS", + "Done": "Fait", + "Total Budget from trips is ": "Budget total des trajets est ", + "Total Amount:": "Montant total :", + "Total Budget from trips by\nCredit card is ": + "Budget total par\nCarte de crédit est ", + "This amount for all trip I get from Passengers": + "Ce montant pour tous les trajets des passagers", + "Pay from my budget": "Payer de mon budget", + "This amount for all trip I get from Passengers and Collected For me in": + "Ce montant collecté pour moi dans", + "You can buy points from your budget": + "Vous pouvez acheter des points de votre budget", + "insert amount": "insérer le montant", + "You can buy Points to let you online\nby this list below": + "Vous pouvez acheter des points pour rester en ligne\nvia cette liste", + "Create Wallet to receive your money": + "Créer un portefeuille pour recevoir votre argent", + "Enter your feedback here": "Entrez votre avis ici", + "Please enter your feedback.": "Veuillez entrer votre avis.", + "Feedback": "Avis", + "Submit ": "Envoyer ", + "Click here to Show it in Map": "Cliquez ici pour voir sur la carte", + "Canceled": "Annulé", + "No I want": "Non je veux", + "Email is": "L'email est :", + "Phone Number is": "Le numéro est :", + "Date of Birth is": "Date de naissance :", + "Sex is ": "Le sexe est : ", + "Car Details": "Détails de la voiture", + "VIN is": "VIN est :", + "Color is ": "La couleur est : ", + "Make is ": "La marque est : ", + "Model is": "Le modèle est :", + "Year is": "L'année est :", + "Expiration Date ": "Date d'expiration : ", + "Edit Your data": "Modifier vos données", + "write vin for your car": "écrire le VIN de votre voiture", + "VIN": "VIN", + "Device Change Detected": "Changement d'appareil détecté", + "Please verify your identity": "Veuillez vérifier votre identité", + "write Color for your car": "écrire la couleur de votre voiture", + "write Make for your car": "écrire la marque de votre voiture", + "write Model for your car": "écrire le modèle de votre voiture", + "write Year for your car": "écrire l'année de votre voiture", + "write Expiration Date for your car": "écrire la date d'expiration", + "Tariffs": "Tarifs", + "Minimum fare": "Tarif minimum", + "Maximum fare": "Tarif maximum", + "Flag-down fee": "Prise en charge", + "Including Tax": "Taxes incluses", + "BookingFee": "Frais de réservation", + "Morning": "Matin", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "de 07:30 à 10:30", + "Evening": "Soir", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "de 12:00 à 15:00", + "Night": "Nuit", + "You have in account": "Vous avez sur le compte", + "Select Country": "Sélectionner le pays", + "Ride Today : ": "Trajet Aujourd'hui : ", + "After this period\nYou can't cancel!": + "Après cette période\nVous ne pouvez plus annuler !", + "from 23:59 till 05:30": "de 23:59 à 05:30", + "Rate Driver": "Noter le chauffeur", + "Total Cost is ": "Coût total est ", + "Write note": "Écrire une note", + "Time to arrive": "Heure d'arrivée", + "Ride Summaries": "Résumés des trajets", + "Total Cost": "Coût Total", + "Average of Hours of": "Moyenne des heures de", + " is ON for this month": " est ON pour ce mois", + "Days": "Jours", + "Total Hours on month": "Heures totales sur le mois", + "Counts of Hours on days": "Comptes des heures sur les jours", + "OrderId": "ID Commande", + "created time": "heure de création", + "Intaleq Over": "Intaleq Terminé", + "I will slow down": "Je vais ralentir", + "Map Passenger": "Carte Passager", + "Be Slowly": "Doucement", + "If you want to make Google Map App run directly when you apply order": + "Si vous voulez lancer Google Maps directement", + "You can change the language of the app": + "Vous pouvez changer la langue de l'appli", + "Your Budget less than needed": "Votre budget est insuffisant", + "You can change the Country to get all features": + "Changez de pays pour toutes les fonctionnalités", + "Change Country": "Changer de pays" + }, + "de": { + "Order": "Bestellung", + "Where to": "Wohin", + "Where are you going?": "Wohin gehen Sie?", + "Quick Actions": "Schnelle Aktionen", + "My Wallet": "Mein Portemonnaie", + "Order History": "Bestellverlauf", + "Contact Us": "Kontaktieren Sie uns", + "Driver": "Fahrer", + "Complaint": "Beschwerde", + "Promos": "Promotionen", + "Recent Places": "Letzte Orte", + "From": "Von", + "WhatsApp Location Extractor": "WhatsApp-Standort-Extraktor", + "Location Link": "Standortlink", + "Paste location link here": "Fügen Sie den Standortlink hier ein", + "Go to this location": "Gehen Sie zu diesem Ort", + "Paste WhatsApp location link": + "Fügen Sie den WhatsApp-Standortlink ein", + "Select Order Type": "Bestelltyp auswählen", + "Choose who this order is for": + "Wählen Sie, für wen diese Bestellung ist", + "I want to order for myself": "Ich möchte für mich selbst bestellen", + "I want to order for someone else": + "Ich möchte für jemand anderen bestellen", + "Cancel": "Abbrechen", + "Order for someone else": "Für jemand anderen bestellen", + "Order for myself": "Für mich selbst bestellen", + "Are you want to go this site": "Möchten Sie zu dieser Seite gehen?", + "Yes": "Ja", + "No": "Nein", + "Are you sure to delete this location?": + "Sind Sie sicher, dass Sie diesen Ort löschen möchten?", + "deleted": "gelöscht", + "To Work": "Zur Arbeit", + "Work Saved": "Arbeitsort gespeichert", + "To Home": "Nach Hause", + "Home Saved": "Zuhause gespeichert", + "Destination selected": "Ziel ausgewählt", + "Now select start pick": "Wählen Sie nun den Startpunkt aus", + "OK": "OK", + "Confirm Pick-up Location": "Abholort bestätigen", + "Set Location on Map": "Ort auf der Karte festlegen", + "Nearest Car: ~": "Nächstes Auto: ~", + "Nearest Car": "Nächstes Auto", + "No cars nearby": "Keine Autos in der Nähe", + "Favorite Places": "Lieblingsorte", + "No favorite places yet!": "Noch keine Lieblingsorte!", + "from your favorites": "aus Ihren Favoriten", + "Back": "Zurück", + "Sign in for a seamless experience": + "Melden Sie sich für ein nahtloses Erlebnis an", + "Sign In with Google": "Mit Google anmelden", + "Sign in with Apple": "Mit Apple anmelden", + "Need assistance? Contact us": + "Brauchen Sie Hilfe? Kontaktieren Sie uns", + "User not found": "Benutzer nicht gefunden", + "Email": "E-Mail", + "Your email address": "Ihre E-Mail-Adresse", + "Enter a valid email": "Geben Sie eine gültige E-Mail-Adresse ein", + "Password": "Passwort", + "Enter your password": "Geben Sie Ihr Passwort ein", + "Submit": "Einreichen", + "Terms of Use & Privacy Notice": + "Nutzungsbedingungen & Datenschutzhinweis", + "Terms of Use": "Nutzungsbedingungen", + "Privacy Notice": "Datenschutzhinweis", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the": + "Durch die Auswahl von \"Ich stimme zu\" bestätige ich, dass ich die", + "and acknowledge the": "gelesen und akzeptiert habe und den", + ". I am at least 18 years old.": ". Ich bin mindestens 18 Jahre alt.", + "Continue": "Weiter", + "Enable Location Access": "Standortzugriff aktivieren", + "We need your location to find nearby drivers for pickups and drop-offs.": + "Wir benötigen Ihren Standort, um nahegelegene Fahrer für Abholungen und Absetzungen zu finden.", + "Allow Location Access": "Standortzugriff erlauben", + "You should restart app to change language": + "Sie sollten die App neu starten, um die Sprache zu ändern", + "Home Page": "Startseite", + "To change Language the App": "Um die Sprache der App zu ändern", + "Learn more about our app and mission": + "Erfahren Sie mehr über unsere App und Mission", + "Promos For Today": "Promotionen für heute", + "Choose your ride": "Wählen Sie Ihre Fahrt", + "Your Journey Begins Here": "Ihre Reise beginnt hier", + "Bonus gift": "Bonusgeschenk", + "Pay": "Bezahlen", + "Get": "Erhalten", + "Send to Driver Again": "Nochmals an den Fahrer senden", + "Driver Name:": "Fahrername:", + "No trip data available": "Keine Fahrtdaten verfügbar", + "Car Plate:": "Nummernschild:", + "remaining": "verbleibend", + "Order Cancelled": "Bestellung storniert", + "You canceled VIP trip": "Sie haben die VIP-Fahrt storniert", + "Passenger cancelled order": + "Der Fahrgast hat die Bestellung storniert", + "Your trip is scheduled": "Ihre Fahrt ist geplant", + "Don't forget your ride!": "Vergessen Sie Ihre Fahrt nicht!", + "Trip updated successfully": "Fahrt erfolgreich aktualisiert", + "Car Make:": "Automarke:", + "Car Model:": "Automodell:", + "Car Color:": "Autofarbe:", + "Driver Phone:": "Fahrertelefon:", + "Pre-booking": "Vorabbuchung", + "Waiting VIP": "Warten auf VIP", + "Driver List": "Fahrerliste", + "Confirm Trip": "Fahrt bestätigen", + "Select date and time of trip": + "Datum und Uhrzeit der Fahrt auswählen", + "Date and Time Picker": "Datum- und Uhrzeitauswahl", + "Trip Status:": "Fahrtstatus:", + "pending": "ausstehend", + "accepted": "akzeptiert", + "rejected": "abgelehnt", + "Apply": "Anwenden", + "Enter your promo code": "Geben Sie Ihren Promo-Code ein", + "Apply Promo Code": "Promo-Code anwenden", + "Scheduled Time:": "Geplante Zeit:", + "No drivers available": "Keine Fahrer verfügbar", + "No drivers available at the moment. Please try again later.": + "Derzeit sind keine Fahrer verfügbar. Bitte versuchen Sie es später erneut.", + "you have a negative balance of": + "Sie haben ein negatives Guthaben von", + "Please try again in a few moments": + "Bitte versuchen Sie es in einigen Augenblicken erneut", + "Unknown Driver": "Unbekannter Fahrer", + "in your": "in Ihrem", + "The driver accepted your order for": + "Der Fahrer hat Ihre Bestellung für", + "wallet due to a previous trip.": + "Portemonnaie aufgrund einer vorherigen Fahrt.", + "rides": "Fahrten", + "Add Work": "Arbeit hinzufügen", + "The reason is": "Der Grund ist", + "User does not have a wallet #1652": + "Der Benutzer hat kein Portemonnaie #1652", + "Price of trip": "Preis der Fahrt", + "From:": "Von:", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Für Schnell- und Lieferfahrten wird der Preis dynamisch berechnet. Für Komfortfahrten basiert der Preis auf Zeit und Entfernung.", + "Phone Wallet Saved Successfully": + "Telefon-Portemonnaie erfolgreich gespeichert", + "Add wallet phone you use": + "Fügen Sie das Telefon-Portemonnaie hinzu, das Sie verwenden", + "Update Available": "Update verfügbar", + "Phone number must be exactly 11 digits long": + "Die Telefonnummer muss genau 11 Ziffern lang sein", + "Insert Wallet phone number": + "Geben Sie die Telefonnummer des Portemonnaies ein", + "Phone number isn't an Egyptian phone number": + "Die Telefonnummer ist keine ägyptische Telefonnummer", + "A new version of the app is available. Please update to the latest version.": + "Eine neue Version der App ist verfügbar. Bitte aktualisieren Sie auf die neueste Version.", + "We use location to get accurate and nearest passengers for you": + "Wir verwenden den Standort, um genaue und nahegelegene Fahrgäste für Sie zu finden", + "This ride is already applied by another driver.": + "Diese Fahrt wurde bereits von einem anderen Fahrer übernommen.", + "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": + "Wir verwenden Ihren genauen Standort, um den nächsten verfügbaren Fahrer zu finden und genaue Abhol- und Absetzinformationen bereitzustellen. Sie können dies in den Einstellungen verwalten.", + "message From Driver": "Nachricht vom Fahrer", + "message From passenger": "Nachricht vom Fahrgast", + "Where are you, sir?": "Wo sind Sie, Sir?", + "I've been trying to reach you but your phone is off.": + "Ich habe versucht, Sie zu erreichen, aber Ihr Telefon ist ausgeschaltet.", + "Please don't be late": "Bitte seien Sie nicht zu spät", + "Please don't be late, I'm waiting for you at the specified location.": + "Bitte seien Sie nicht zu spät, ich warte an dem angegebenen Ort auf Sie.", + "My location is correct. You can search for me using the navigation app": + "Mein Standort ist korrekt. Sie können mich über die Navigations-App suchen.", + "Hello, I'm at the agreed-upon location": + "Hallo, ich bin am vereinbarten Ort", + "How much longer will you be?": + "Wie viel länger werden Sie brauchen?", + "Phone number is verified before": + "Die Telefonnummer wurde bereits verifiziert", + "Change Ride": "Fahrt ändern", + "You can change the destination by long-pressing any point on the map": + "Sie können das Ziel ändern, indem Sie einen beliebigen Punkt auf der Karte lange drücken", + "Pick from map destination": "Ziel auf der Karte auswählen", + "Pick or Tap to confirm": "Auswählen oder Tippen, um zu bestätigen", + "Accepted your order": "Ihre Bestellung wurde angenommen", + "Order Accepted": "Bestellung angenommen", + "with type": "mit Typ", + "accepted your order at price": "hat Ihre Bestellung zum Preis von", + "Cancel Trip from driver": "Fahrt vom Fahrer stornieren", + "you canceled order": "Sie haben die Bestellung storniert", + "If you want order to another person": + "Wenn Sie für eine andere Person bestellen möchten", + "Ok I will go now.": "Ok, ich werde jetzt gehen.", + "Hi, I will go now": "Hallo, ich werde jetzt gehen", + "upgrade price": "Preis erhöhen", + "Please enter a correct phone": + "Bitte geben Sie eine korrekte Telefonnummer ein", + "airport": "Flughafen", + "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": + "Beste Wahl für ein komfortables Auto mit einer flexiblen Route und Haltepunkten. Dieser Flughafen bietet Visa-Einreise zu diesem Preis.", + "You can upgrade price to may driver accept your order": + "Sie können den Preis erhöhen, damit der Fahrer Ihre Bestellung annimmt", + "Change Route": "Route ändern", + "No Captain Accepted Your Order": + "Kein Kapitän hat Ihre Bestellung angenommen", + "We are looking for a captain but the price may increase to let a captain accept": + "Wir suchen einen Kapitän, aber der Preis könnte steigen, damit ein Kapitän annimmt", + "No, I want to cancel this trip": + "Nein, ich möchte diese Fahrt stornieren", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "Fahrt storniert. Die Kosten der Fahrt werden Ihrem Portemonnaie hinzugefügt.", + "Attention": "Achtung", + "Trip Cancelled. The cost of the trip will be deducted from your wallet.": + "Fahrt storniert. Die Kosten der Fahrt werden von Ihrem Portemonnaie abgezogen.", + "You will be charged for the cost of the driver coming to your location.": + "Ihnen werden die Kosten für den Fahrer berechnet, der zu Ihrem Standort kommt.", + "reject your order.": "hat Ihre Bestellung abgelehnt.", + "Order Under Review": "Bestellung in Überprüfung", + "is reviewing your order. They may need more information or a higher price.": + "überprüft Ihre Bestellung. Möglicherweise benötigen sie mehr Informationen oder einen höheren Preis.", + "The driver canceled your ride.": + "Der Fahrer hat Ihre Fahrt storniert.", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "Wir haben noch keine Fahrer gefunden. Erwägen Sie, Ihre Fahrpreise zu erhöhen, um Ihr Angebot für Fahrer attraktiver zu machen.", + "Increase Your Trip Fee (Optional)": + "Erhöhen Sie Ihre Fahrpreise (optional)", + "Vibration": "Vibration", + "Resend code": "Code erneut senden", + "token change": "Token-Änderung", + "change device": "Gerät ändern", + "Device Change Detected": "Gerätewechsel erkannt", + "You can only use one device at a time. This device will now be set as your active device.": + "Sie können nur ein Gerät gleichzeitig verwenden. Dieses Gerät wird nun als Ihr aktives Gerät festgelegt.", + "Click here point": "Klicken Sie hier", + "Are you want to change": "Möchten Sie ändern", + "by": "von", + "Enter your complaint here": "Geben Sie Ihre Beschwerde hier ein", + "Please enter your complaint.": + "Bitte geben Sie Ihre Beschwerde ein.", + "Complaint data saved successfully": + "Beschwerdedaten erfolgreich gespeichert", + "Trip Monitor": "Fahrtmonitor", + "Insert SOS Phone": "SOS-Telefon einfügen", + "Add SOS Phone": "SOS-Telefon hinzufügen", + "Trip Monitoring": "Fahrtüberwachung", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "Sehr geehrte/r ,\n\n 🚀 Ich habe gerade eine aufregende Reise begonnen und möchte die Details meiner Reise und meinen aktuellen Standort in Echtzeit mit Ihnen teilen! Bitte laden Sie die Intaleq-App herunter. Sie ermöglicht Ihnen, meine Reisedetails und meinen letzten Standort einzusehen.\n\n 👉 Download-Link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n Ich freue mich darauf, Sie während meines Abenteuers nah bei mir zu haben!\n\n Intaleq ,", + "Send Intaleq app to him": "Senden Sie ihm die Intaleq-App", + "No passenger found for the given phone number": + "Kein Fahrgast für die angegebene Telefonnummer gefunden", + "No user found for the given phone number": + "Kein Benutzer für die angegebene Telefonnummer gefunden", + "This price is": "Dieser Preis ist", + "Work": "Arbeit", + "Add Home": "Zuhause hinzufügen", + "Notifications": "Benachrichtigungen", + "💳 Pay with Credit Card": "💳 Mit Kreditkarte bezahlen", + "⚠️ You need to choose an amount!": + "⚠️ Sie müssen einen Betrag auswählen!", + "💰 Pay with Wallet": "Mit Portemonnaie bezahlen", + "You must restart the app to change the language.": + "Sie müssen die App neu starten, um die Sprache zu ändern.", + "joined": "beigetreten", + "Driver joined the channel": "Der Fahrer ist dem Kanal beigetreten", + "Driver left the channel": "Der Fahrer hat den Kanal verlassen", + "Call Page": "Anrufseite", + "Call End": "Anrufende", + "Call Left": "Verbleibender Anruf", + r"$ Next as Cash $!": " Nächstes als Bargeld!", + "To use Wallet charge it": + "Um das Portemonnaie zu verwenden, laden Sie es auf", + "We are searching for the nearest driver to you": + "Wir suchen den nächstgelegenen Fahrer für Sie", + "Best choice for cities": "Beste Wahl für Städte", + "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": + "Rayeh Gai: Rundreiseservice für bequemes Reisen zwischen Städten, einfach und zuverlässig.", + "Rayeh Gai": "Rayeh Gai", + "This trip is for women only": "Diese Fahrt ist nur für Frauen", + "Total budgets on month": "Gesamtbudgets des Monats", + "You have call from driver": "Sie haben einen Anruf vom Fahrer", + "Comfort": "Komfort", + "Intaleq": "Geschwindigkeit", + "Driver already has 2 trips within the specified period.": + "Der Fahrer hat bereits 2 Fahrten innerhalb des angegebenen Zeitraums.", + "The invitation was sent successfully": + "Die Einladung wurde erfolgreich versendet", + "Lady": "Dame", + "You should select your country": "Sie sollten Ihr Land auswählen", + "Scooter": "Roller", + "A trip with a prior reservation, allowing you to choose the best captains and cars.": + "Eine Fahrt mit Vorabreservierung, die es Ihnen ermöglicht, die besten Kapitäne und Autos auszuwählen.", + "Mishwar Vip": "Mishwar Vip", + "The driver waiting you in picked location .": + "Der Fahrer wartet an dem ausgewählten Ort auf Sie.", + "About Us": "Über uns", + "You can change the vibration feedback for all buttons": + "Sie können das Vibrationsfeedback für alle Schaltflächen ändern", + "Most Secure Methods": "Sicherste Methoden", + "In-App VOIP Calls": "VOIP-Anrufe in der App", + "Recorded Trips for Safety": + "Aufgezeichnete Fahrten für die Sicherheit", + "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": + "\nWir legen auch Wert auf Erschwinglichkeit und bieten wettbewerbsfähige Preise, um Ihre Fahrten zugänglich zu machen.", + "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": + "Intaleq ist eine Mitfahr-App, die mit Blick auf Ihre Sicherheit und Erschwinglichkeit entwickelt wurde. Wir verbinden Sie mit zuverlässigen Fahrern in Ihrer Nähe und sorgen für eine bequeme und stressfreie Reiseerfahrung.\n\nHier sind einige der wichtigsten Funktionen, die uns auszeichnen:", + "Sign In by Apple": "Mit Apple anmelden", + "Sign In by Google": "Mit Google anmelden", + "How do I request a ride?": "Wie buche ich eine Fahrt?", + "Step-by-step instructions on how to request a ride through the Intaleq app.": + "Schritt-für-Schritt-Anleitung, wie Sie eine Fahrt über die Intaleq-App buchen können.", + "What types of vehicles are available?": + "Welche Fahrzeugtypen sind verfügbar?", + "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": + "Intaleq bietet eine Vielzahl von Fahrzeugoptionen, die Ihren Bedürfnissen entsprechen, darunter Economy, Komfort und Luxus. Wählen Sie die Option, die am besten zu Ihrem Budget und Ihrer Passagierzahl passt.", + "How can I pay for my ride?": "Wie kann ich meine Fahrt bezahlen?", + "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": + "Intaleq bietet mehrere Zahlungsmethoden für Ihre Bequemlichkeit. Wählen Sie zwischen Barzahlung oder Kredit-/Debitkartenzahlung während der Fahrtbestätigung.", + "Can I cancel my ride?": "Kann ich meine Fahrt stornieren?", + "Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.": + "Ja, Sie können Ihre Fahrt unter bestimmten Bedingungen stornieren (z.B. bevor der Fahrer zugewiesen wird). Weitere Details finden Sie in der Stornierungsrichtlinie von Intaleq.", + "Driver Registration & Requirements": + "Fahrerregistrierung & Anforderungen", + "How can I register as a driver?": + "Wie kann ich mich als Fahrer registrieren?", + "What are the requirements to become a driver?": + "Welche Anforderungen gibt es, um Fahrer zu werden?", + "Visit our website or contact Intaleq support for information on driver registration and requirements.": + "Besuchen Sie unsere Website oder kontaktieren Sie den Intaleq-Support für Informationen zur Fahrerregistrierung und den Anforderungen.", + "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": + "Intaleq bietet eine In-App-Chat-Funktion, die es Ihnen ermöglicht, während Ihrer Fahrt mit Ihrem Fahrer oder Fahrgast zu kommunizieren.", + "What safety measures does Intaleq offer?": + "Welche Sicherheitsmaßnahmen bietet Intaleq?", + "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": + "Intaleq priorisiert Ihre Sicherheit. Wir bieten Funktionen wie Fahrerverifizierung, In-App-Fahrtverfolgung und Notfallkontaktoptionen.", + "Frequently Questions": "Häufige Fragen", + "User does not exist.": "Benutzer existiert nicht.", + "We need your phone number to contact you and to help you.": + "Wir benötigen Ihre Telefonnummer, um Sie zu kontaktieren und Ihnen zu helfen.", + "You will recieve code in sms message": + "Sie erhalten den Code per SMS", + "Please enter": "Bitte eingeben", + "We need your phone number to contact you and to help you receive orders.": + "Wir benötigen Ihre Telefonnummer, um Sie zu kontaktieren und Ihnen zu helfen, Bestellungen zu erhalten.", + "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": + "Der vollständige Name in Ihrem Strafregister stimmt nicht mit dem auf Ihrem Führerschein überein. Bitte überprüfen und die korrekten Dokumente vorlegen.", + "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": + "Die nationale Nummer auf Ihrem Führerschein stimmt nicht mit der auf Ihrem Ausweisdokument überein. Bitte überprüfen und die korrekten Dokumente vorlegen.", + "Capture an Image of Your Criminal Record": + "Machen Sie ein Bild Ihres Strafregisters", + "IssueDate": "Ausstellungsdatum", + "Capture an Image of Your car license front ": + "Machen Sie ein Bild der Vorderseite Ihrer Fahrzeuglizenz", + "Capture an Image of Your ID Document front": + "Machen Sie ein Bild der Vorderseite Ihres Ausweisdokuments", + "NationalID": "Nationale ID", + "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": + "Sie können die Intaleq-App mit Ihren Freunden teilen und Belohnungen für Fahrten verdienen, die sie mit Ihrem Code unternehmen", + "FullName": "Vollständiger Name", + "No invitation found yet!": "Noch keine Einladung gefunden!", + "InspectionResult": "Inspektionsergebnis", + "Criminal Record": "Strafregister", + "Share App": "App teilen", + "The email or phone number is already registered.": + "Die E-Mail oder Telefonnummer ist bereits registriert.", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "Um ein Mitfahrfahrer in der Intaleq-App zu werden, müssen Sie Ihren Führerschein, Ihr Ausweisdokument und Ihr Fahrzeugregistrierungsdokument hochladen. Unser KI-System überprüft und verifiziert deren Authentizität in nur 2-3 Minuten. Wenn Ihre Dokumente genehmigt werden, können Sie als Fahrer in der Intaleq-App arbeiten. Bitte beachten Sie, dass die Einreichung betrügerischer Dokumente eine schwerwiegende Straftat darstellt und zu sofortiger Kündigung und rechtlichen Konsequenzen führen kann.", + "Documents check": "Dokumentenprüfung", + "Driver's License": "Führerschein", + "for your first registration!": "für Ihre erste Registrierung!", + "Get it Now!": "Holen Sie es sich jetzt!", + "before": "vor", + "Code not approved": "Code nicht genehmigt", + "3000 LE": "3000 LE", + "Do you have an invitation code from another driver?": + "Haben Sie einen Einladungscode von einem anderen Fahrer?", + "Paste the code here": "Fügen Sie den Code hier ein", + "No, I don't have a code": "Nein, ich habe keinen Code", + "Code approved": "Code genehmigt", + "Install our app:": "Installieren Sie unsere App:", + "Invite another driver and both get a gift after he completes 100 trips!": + "Laden Sie einen anderen Fahrer ein und beide erhalten ein Geschenk, nachdem er 100 Fahrten abgeschlossen hat!", + "Invite": "Einladen", + "Are you sure?": "Sind Sie sicher?", + "This will delete all recorded files from your device.": + "Dadurch werden alle aufgezeichneten Dateien von Ihrem Gerät gelöscht.", + "Select a file": "Datei auswählen", + "Select a File": "Datei auswählen", + "Delete": "Löschen", + "attach audio of complain": "Audio der Beschwerde anhängen", + "Phone Number Check": "Telefonnummernprüfung", + "Drivers received orders": "Fahrer haben Bestellungen erhalten", + "No audio files recorded.": "Keine Audiodateien aufgezeichnet.", + "This is for delivery or a motorcycle.": + "Dies ist für Lieferungen oder ein Motorrad.", + "We will look for a new driver.\nPlease wait.": + "Wir werden nach einem neuen Fahrer suchen.\nBitte warten Sie.", + "Intaleq Reminder": "Intaleq-Erinnerung", + "It's time to check the Intaleq app!": + "Es ist Zeit, die Intaleq-App zu überprüfen!", + "you must insert token code": "Sie müssen den Token-Code eingeben", + "Something went wrong. Please try again.": + "Etwas ist schiefgelaufen. Bitte versuchen Sie es erneut.", + "Trip Details": "Fahrtdetails", + "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": + "Der Kontext liefert keine Beschwerdedetails, daher kann ich keine Lösung für dieses Problem anbieten. Bitte geben Sie die notwendigen Informationen an, und ich werde Ihnen gerne helfen.", + "Submit Your Complaint": "Reichen Sie Ihre Beschwerde ein", + "Date": "Datum", + "Price": "Preis", + "Status": "Status", + "Choose from contact": "Aus Kontakten auswählen", + "attach correct audio": "Korrektes Audio anhängen", + "be sure": "Seien Sie sicher", + "Audio uploaded successfully.": "Audio erfolgreich hochgeladen.", + "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": + "Perfekt für Fahrgäste, die die neuesten Automodelle suchen und die Freiheit haben möchten, jede gewünschte Route zu wählen", + "Share this code with your friends and earn rewards when they use it!": + "Teilen Sie diesen Code mit Ihren Freunden und verdienen Sie Belohnungen, wenn sie ihn verwenden!", + "Enter phone": "Telefon eingeben", + "You deserve the gift": "Sie verdienen das Geschenk", + "complete, you can claim your gift": + "abgeschlossen, Sie können Ihr Geschenk einfordern", + "When": "Wann", + "Enter driver's phone": "Fahrertelefon eingeben", + "Send Invite": "Einladung senden", + "Show Invitations": "Einladungen anzeigen", + "License Type": "Lizenztyp", + "National Number": "Nationale Nummer", + "Name (Arabic)": "Name (Arabisch)", + "Name (English)": "Name (Englisch)", + "Address": "Adresse", + "Issue Date": "Ausstellungsdatum", + "Expiry Date": "Ablaufdatum", + "License Categories": "Lizenzkategorien", + "driver_license": "Führerschein", + "Capture an Image of Your Driver License": + "Machen Sie ein Bild Ihres Führerscheins", + "ID Documents Back": "Rückseite der Ausweisdokumente", + "National ID": "Nationale ID", + "Occupation": "Beruf", + "Gender": "Geschlecht", + "Religion": "Religion", + "Marital Status": "Familienstand", + "Full Name (Marital)": "Vollständiger Name (Familienstand)", + "Expiration Date": "Ablaufdatum", + "Capture an Image of Your ID Document Back": + "Machen Sie ein Bild der Rückseite Ihres Ausweisdokuments", + "ID Documents Front": "Vorderseite der Ausweisdokumente", + "First Name": "Vorname", + "CardID": "Karten-ID", + "Vehicle Details Front": "Fahrzeugdetails Vorderseite", + "Plate Number": "Nummernschild", + "Owner Name": "Name des Eigentümers", + "Vehicle Details Back": "Fahrzeugdetails Rückseite", + "Make": "Marke", + "Model": "Modell", + "Year": "Jahr", + "Chassis": "Chassis", + "Color": "Farbe", + "Displacement": "Hubraum", + "Fuel": "Kraftstoff", + "Tax Expiry Date": "Steuerablaufdatum", + "Inspection Date": "Inspektionsdatum", + "Capture an Image of Your car license back": + "Machen Sie ein Bild der Rückseite Ihrer Fahrzeuglizenz", + "Capture an Image of Your Driver’s License": + "Machen Sie ein Bild Ihres Führerscheins", + "Sign in with Google for easier email and name entry": + "Melden Sie sich mit Google an, um E-Mail und Namen einfacher einzugeben", + "You will choose allow all the time to be ready receive orders": + "Sie werden die Erlaubnis jederzeit erteilen, um bereit zu sein, Bestellungen zu empfangen", + "Welcome to Intaleq!": "Willkommen bei Intaleq!", + "Get to your destination quickly and easily.": + "Erreichen Sie Ihr Ziel schnell und einfach.", + "Enjoy a safe and comfortable ride.": + "Genießen Sie eine sichere und komfortable Fahrt.", + "Choose Language": "Sprache auswählen", + "Login": "Anmelden", + "Pay with Wallet": "Mit Portemonnaie bezahlen", + "Invalid MPIN": "Ungültiger MPIN", + "Invalid OTP": "Ungültiger OTP", + "Driver Accepted the Ride for You": + "Der Fahrer hat die Fahrt für Sie angenommen", + "Enter your email address": "Geben Sie Ihre E-Mail-Adresse ein", + "Please enter Your Email.": "Bitte geben Sie Ihre E-Mail ein.", + "Enter your phone number": "Geben Sie Ihre Telefonnummer ein", + "Please enter your phone number.": + "Bitte geben Sie Ihre Telefonnummer ein.", + "Please enter Your Password.": "Bitte geben Sie Ihr Passwort ein.", + "if you dont have account": "Wenn Sie kein Konto haben", + "Register": "Registrieren", + "Accept Ride's Terms & Review Privacy Notice": + "Akzeptieren Sie die Nutzungsbedingungen und überprüfen Sie die Datenschutzerklärung", + "By selecting 'I Agree' below, I confirm that I have read and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "Durch die Auswahl von 'Ich stimme zu' bestätige ich, dass ich die Nutzungsbedingungen gelesen und akzeptiert habe und die Datenschutzerklärung zur Kenntnis genommen habe. Ich bin mindestens 18 Jahre alt.", + "I Agree": "Ich stimme zu", + "Finish Monitor": "Monitor beenden", + "First name": "Vorname", + "Enter your first name": "Geben Sie Ihren Vornamen ein", + "Please enter your first name.": + "Bitte geben Sie Ihren Vornamen ein.", + "Last name": "Nachname", + "Enter your last name": "Geben Sie Ihren Nachnamen ein", + "Please enter your last name.": + "Bitte geben Sie Ihren Nachnamen ein.", + "City": "Stadt", + "Please enter your City.": "Bitte geben Sie Ihre Stadt ein.", + "Male": "Männlich", + "Female": "Weiblich", + "Verify Email": "E-Mail verifizieren", + "We sent 5 digit to your Email provided": + "Wir haben einen 5-stelligen Code an die angegebene E-Mail gesendet", + "5 digit": "5-stellig", + "Send Verification Code": "Verifizierungscode senden", + "Your Ride Duration is ": "Ihre Fahrtdauer beträgt ", + "You will be thier in": "Sie werden dort sein in", + "You trip distance is": "Ihre Fahrtstrecke beträgt", + "Fee is": "Gebühr ist", + "From : ": "Von : ", + "To : ": "Nach : ", + "Add Promo": "Promotion hinzufügen", + "Confirm Selection": "Auswahl bestätigen", + "distance is": "Entfernung ist", + "Intaleq LLC": "Intaleq LLC", + "Egypt's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "Ägyptens wegweisender Mitfahrservice, stolz entwickelt von arabischen und lokalen Eigentümern. Wir priorisieren, in Ihrer Nähe zu sein – sowohl für unsere geschätzten Fahrgäste als auch für unsere engagierten Kapitäne.", + "Why Choose Intaleq?": "Warum Intaleq wählen?", + "Closest to You": "Am nächsten bei Ihnen", + "We connect you with the nearest drivers for faster pickups and quicker journeys.": + "Wir verbinden Sie mit den nächstgelegenen Fahrern für schnellere Abholungen und kürzere Fahrten.", + "Uncompromising Security": "Kompromisslose Sicherheit", + "Lady Captains Available": "Kapitäninnen verfügbar", + "Recorded Trips (Voice & AI Analysis)": + "Aufgezeichnete Fahrten (Sprach- & KI-Analyse)", + "Fastest Complaint Response": "Schnellste Beschwerdeantwort", + "Our dedicated customer service team ensures swift resolution of any issues.": + "Unser engagiertes Kundenservice-Team sorgt für eine schnelle Lösung aller Probleme.", + "Affordable for Everyone": "Erschwinglich für alle", + "Frequently Asked Questions": "Häufig gestellte Fragen", + "Getting Started": "Erste Schritte", + "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": + "Öffnen Sie einfach die Intaleq-App, geben Sie Ihr Ziel ein und tippen Sie auf \"Fahrt anfordern\". Die App verbindet Sie mit einem nahegelegenen Fahrer.", + "Vehicle Options": "Fahrzeugoptionen", + "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": + "Intaleq bietet eine Vielzahl von Optionen, darunter Economy, Komfort und Luxus, die Ihren Bedürfnissen und Ihrem Budget entsprechen.", + "Payments": "Zahlungen", + "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": + "Sie können Ihre Fahrt mit Bargeld oder Kredit-/Debitkarte bezahlen. Sie können Ihre bevorzugte Zahlungsmethode vor der Bestätigung Ihrer Fahrt auswählen.", + "Ride Management": "Fahrtmanagement", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "Ja, Sie können Ihre Fahrt stornieren, aber bitte beachten Sie, dass Stornierungsgebühren anfallen können, je nachdem, wie weit im Voraus Sie stornieren.", + "For Drivers": "Für Fahrer", + "Driver Registration": "Fahrerregistrierung", + "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": + "Um sich als Fahrer zu registrieren oder mehr über die Anforderungen zu erfahren, besuchen Sie bitte unsere Website oder kontaktieren Sie den Intaleq-Support direkt.", + "Visit Website/Contact Support": + "Website besuchen/Support kontaktieren", + "Close": "Schließen", + "We are searching for the nearest driver": + "Wir suchen den nächstgelegenen Fahrer", + "Communication": "Kommunikation", + "How do I communicate with the other party (passenger/driver)?": + "Wie kommuniziere ich mit der anderen Partei (Fahrgast/Fahrer)?", + "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": + "Sie können mit Ihrem Fahrer oder Fahrgast über die In-App-Chat-Funktion kommunizieren, sobald eine Fahrt bestätigt ist.", + "Safety & Security": "Sicherheit & Schutz", + "What safety measures does Intaleq offer?": + "Welche Sicherheitsmaßnahmen bietet Intaleq?", + "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": + "Intaleq bietet verschiedene Sicherheitsfunktionen, darunter Fahrerverifizierung, In-App-Fahrtverfolgung, Notfallkontaktoptionen und die Möglichkeit, Ihren Fahrtstatus mit vertrauenswürdigen Kontakten zu teilen.", + "Enjoy competitive prices across all trip options, making travel accessible.": + "Genießen Sie wettbewerbsfähige Preise für alle Fahrtoptionen, die Reisen zugänglich machen.", + "Variety of Trip Choices": "Vielfalt der Fahrtoptionen", + "Choose the trip option that perfectly suits your needs and preferences.": + "Wählen Sie die Fahrtoption, die perfekt zu Ihren Bedürfnissen und Vorlieben passt.", + "Your Choice, Our Priority": "Ihre Wahl, unsere Priorität", + "Because we are near, you have the flexibility to choose the ride that works best for you.": + "Weil wir in der Nähe sind, haben Sie die Flexibilität, die Fahrt zu wählen, die am besten zu Ihnen passt.", + "duration is": "Dauer ist", + "Setting": "Einstellung", + "Find answers to common questions": + "Finden Sie Antworten auf häufig gestellte Fragen", + "I don't need a ride anymore": "Ich brauche keine Fahrt mehr", + "I was just trying the application": + "Ich habe die Anwendung nur ausprobiert", + "No driver accepted my request": + "Kein Fahrer hat meine Anfrage angenommen", + "I added the wrong pick-up/drop-off location": + "Ich habe den falschen Abhol-/Absetzort hinzugefügt", + "I don't have a reason": "Ich habe keinen Grund", + "Other": "Andere", + "Can we know why you want to cancel Ride ?": + "Können wir erfahren, warum Sie die Fahrt stornieren möchten?", + "Cancel Ride": "Fahrt stornieren", + "Add Payment Method": "Zahlungsmethode hinzufügen", + "Your Wallet balance is ": "Ihr Portemonnaie-Guthaben beträgt ", + "Ride Wallet": "Fahrt-Portemonnaie", + "Payment Method": "Zahlungsmethode", + "Type here Place": "Geben Sie hier den Ort ein", + "Are You sure to ride to": + "Sind Sie sicher, dass Sie fahren möchten nach", + "Confirm": "Bestätigen", + "You are Delete": "Sie löschen", + "Deleted": "Gelöscht", + "You Dont Have Any places yet !": "Sie haben noch keine Orte!", + "From : Current Location": "Von : Aktueller Standort", + "Profile": "Profil", + "Home": "Zuhause", + "My Cared": "Meine Karten", + "Add Card": "Karte hinzufügen", + "Add Credit Card": "Kreditkarte hinzufügen", + "Please enter the cardholder name": + "Bitte geben Sie den Namen des Karteninhabers ein", + "Please enter the expiry date": "Bitte geben Sie das Ablaufdatum ein", + "Please enter the CVV code": "Bitte geben Sie den CVV-Code ein", + "Go To Favorite Places": "Zu Lieblingsorten gehen", + "Go to this Target": "Gehen Sie zu diesem Ziel", + "My Profile": "Mein Profil", + "Sign Out": "Abmelden", + "Are you want to go to this site": + "Möchten Sie zu dieser Seite gehen?", + "MyLocation": "Mein Standort", + "my location": "mein Standort", + "Target": "Ziel", + "Update": "Aktualisieren", + "You Should choose rate figure": + "Sie sollten eine Bewertungszahl auswählen", + "Login Captin": "Kapitän anmelden", + "Register Captin": "Kapitän registrieren", + "Send Verfication Code": "Verifizierungscode senden", + "KM": "KM", + "End Ride": "Fahrt beenden", + "Minute": "Minute", + "Go to passenger Location now": + "Gehen Sie jetzt zum Standort des Fahrgasts", + "Duration of the Ride is ": "Die Dauer der Fahrt beträgt ", + "Distance of the Ride is ": "Die Entfernung der Fahrt beträgt ", + "Name of the Passenger is ": "Der Name des Fahrgasts ist ", + "Hello this is Captain": "Hallo, das ist Kapitän", + "Start the Ride": "Fahrt starten", + "Please Wait If passenger want To Cancel!": + "Bitte warten Sie, wenn der Fahrgast stornieren möchte!", + "Total Duration:": "Gesamtdauer:", + "Active Duration:": "Aktive Dauer:", + "Waiting for Captin ...": "Warten auf Kapitän ...", + "Age is ": "Alter ist ", + "Rating is ": "Bewertung ist ", + " to arrive you.": "um zu Ihnen zu gelangen.", + "Tariff": "Tarif", + "Settings": "Einstellungen", + "Feed Back": "Feedback", + "Please enter a valid 16-digit card number": + "Bitte geben Sie eine gültige 16-stellige Kartennummer ein", + "Add Phone": "Telefon hinzufügen", + "Please enter a phone number": + "Bitte geben Sie eine Telefonnummer ein", + "You dont Add Emergency Phone Yet!": + "Sie haben noch kein Notfalltelefon hinzugefügt!", + "You will arrive to your destination after ": "Sie werden nach ", + "You can cancel Ride now": "Sie können die Fahrt jetzt stornieren", + "You Can cancel Ride After Captain did not come in the time": + "Sie können die Fahrt stornieren, wenn der Kapitän nicht rechtzeitig gekommen ist", + "If you in Car Now. Press Start The Ride": + "Wenn Sie jetzt im Auto sind. Drücken Sie Fahrt starten", + "You Dont Have Any amount in": "Sie haben keinen Betrag in", + "Wallet!": "Portemonnaie!", + "You Have": "Sie haben", + "Save Credit Card": "Kreditkarte speichern", + "Show Promos": "Promotionen anzeigen", + "10 and get 4% discount": "10 und erhalten Sie 4% Rabatt", + "20 and get 6% discount": "20 und erhalten Sie 6% Rabatt", + "40 and get 8% discount": "40 und erhalten Sie 8% Rabatt", + "100 and get 11% discount": "100 und erhalten Sie 11% Rabatt", + "Pay with Your PayPal": "Mit Ihrem PayPal bezahlen", + "You will choose one of above !": + "Sie werden eines der oben genannten auswählen!", + "Delete My Account": "Mein Konto löschen", + "Edit Profile": "Profil bearbeiten", + "Name": "Name", + "Update Gender": "Geschlecht aktualisieren", + "Education": "Bildung", + "Update Education": "Bildung aktualisieren", + "Employment Type": "Beschäftigungsart", + "SOS Phone": "SOS-Telefon", + "High School Diploma": "Abitur", + "Associate Degree": "Associate Degree", + "Bachelor's Degree": "Bachelor-Abschluss", + "Master's Degree": "Master-Abschluss", + "Doctoral Degree": "Doktortitel", + "Copy this Promo to use it in your Ride!": + "Kopieren Sie diese Promotion, um sie in Ihrer Fahrt zu verwenden!", + "To change some Settings": "Um einige Einstellungen zu ändern", + "Order Request Page": "Bestellanfrageseite", + "Rouats of Trip": "Routen der Fahrt", + "Passenger name : ": "Fahrgastname : ", + "Total From Passenger is ": "Gesamtbetrag vom Fahrgast ist ", + "Duration To Passenger is ": "Dauer bis zum Fahrgast ist ", + "Distance To Passenger is ": "Entfernung bis zum Fahrgast ist ", + "Total For You is ": "Gesamtbetrag für Sie ist ", + "Distance is ": "Entfernung ist ", + " KM": " KM", + "Duration of Trip is ": "Dauer der Fahrt ist ", + " Minutes": " Minuten", + "Apply Order": "Bestellung anwenden", + "Refuse Order": "Bestellung ablehnen", + "Rate Captain": "Kapitän bewerten", + "Enter your Note": "Geben Sie Ihre Notiz ein", + "Type something...": "Geben Sie etwas ein...", + "Submit rating": "Bewertung abschicken", + "Rate Passenger": "Fahrgast bewerten", + "Ride Summary": "Fahrtzusammenfassung", + "welcome_message": "Willkommen bei Intaleq!", + "app_description": + "Intaleq ist eine zuverlässige, sichere und zugängliche Mitfahr-App.", + "get_to_destination": "Erreichen Sie Ihr Ziel schnell und einfach.", + "get_a_ride": + "Mit Intaleq können Sie in wenigen Minuten an Ihr Ziel gelangen.", + "safe_and_comfortable": + "Genießen Sie eine sichere und komfortable Fahrt.", + "committed_to_safety": + "Intaleq setzt sich für Sicherheit ein, und alle unsere Kapitäne werden sorgfältig überprüft.", + "Driver Applied the Ride for You": + "Der Fahrer hat die Fahrt für Sie übernommen", + "Show latest promo": "Neueste Promotion anzeigen", + "Cancel Trip": "Fahrt stornieren", + "Passenger Cancel Trip": "Fahrgast hat die Fahrt storniert", + "Accepted Ride": "Fahrt angenommen", + "your ride is Accepted": "Ihre Fahrt wurde angenommen", + "Please stay on the picked point.": + "Bitte bleiben Sie am ausgewählten Punkt.", + "Trip is Begin": "Fahrt beginnt", + "Driver is waiting at pickup.": "Der Fahrer wartet am Abholpunkt.", + "Driver is on the way": "Der Fahrer ist unterwegs", + "Contact Options": "Kontaktoptionen", + "Send a custom message": "Benutzerdefinierte Nachricht senden", + "Type your message": "Geben Sie Ihre Nachricht ein", + "Hi ,I will go now": "Hallo, ich werde jetzt gehen", + "Passenger come to you": "Fahrgast kommt zu Ihnen", + "Hi ,I Arrive your site": + "Hallo, ich bin an Ihrem Standort angekommen", + "Driver Finish Trip": "Fahrer beendet die Fahrt", + "you will pay to Driver": "Sie werden den Fahrer bezahlen", + "Driver Cancel Your Trip": "Der Fahrer hat Ihre Fahrt storniert", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "Sie werden den Fahrer bezahlen, Sie werden die Kosten für die Fahrerzeit bezahlen, sehen Sie in Ihrem Intaleq-Portemonnaie nach", + "I will go now": "Ich werde jetzt gehen", + "You Have Tips": "Sie haben Trinkgeld", + " tips\nTotal is": " Trinkgeld\nGesamtbetrag ist", + "No,I want": "Nein, ich möchte", + "Your fee is ": "Ihre Gebühr ist ", + "Do you want to pay Tips for this Driver": + "Möchten Sie Trinkgeld für diesen Fahrer bezahlen?", + "Tip is ": "Trinkgeld ist ", + "Are you want to wait drivers to accept your order": + "Möchten Sie warten, bis Fahrer Ihre Bestellung annehmen?", + "This price is fixed even if the route changes for the driver.": + "Dieser Preis ist fest, auch wenn sich die Route für den Fahrer ändert.", + "The price may increase if the route changes.": + "Der Preis kann steigen, wenn sich die Route ändert.", + "The captain is responsible for the route.": + "Der Kapitän ist für die Route verantwortlich.", + "We are search for nearst driver": + "Wir suchen den nächstgelegenen Fahrer", + "Your order is being prepared": "Ihre Bestellung wird vorbereitet", + "The drivers are reviewing your request": + "Die Fahrer überprüfen Ihre Anfrage", + "Your order sent to drivers": + "Ihre Bestellung wurde an die Fahrer gesendet", + "You can call or record audio of this trip": + "Sie können anrufen oder das Audio dieser Fahrt aufnehmen", + "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": + "Die Fahrt hat begonnen! Zögern Sie nicht, Notrufnummern zu kontaktieren, Ihre Fahrt zu teilen oder die Sprachaufzeichnung für die Reise zu aktivieren", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "Bitte stellen Sie sicher, dass Sie alle Ihre persönlichen Gegenstände haben und dass etwaige verbleibende Fahrpreise, falls zutreffend, vor dem Verlassen Ihrem Portemonnaie hinzugefügt wurden. Vielen Dank, dass Sie die Intaleq-App gewählt haben", + "Don’t forget your personal belongings.": + "Vergessen Sie nicht Ihre persönlichen Gegenstände.", + "Camera Access Denied.": "Kamerazugriff verweigert.", + "Open Settings": "Einstellungen öffnen", + "GPS Required Allow !.": "GPS erforderlich, erlauben!.", + "Your Account is Deleted": "Ihr Konto wurde gelöscht", + "Are you sure to delete your account?": + "Sind Sie sicher, dass Sie Ihr Konto löschen möchten?", + "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": + "Ihre Daten werden nach 2 Wochen gelöscht\nUnd Sie können die App nach 1 Monat nicht mehr verwenden ", + "Enter Your First Name": "Geben Sie Ihren Vornamen ein", + "Are you Sure to LogOut?": + "Sind Sie sicher, dass Sie sich abmelden möchten?", + "Email Wrong": "E-Mail falsch", + "Email you inserted is Wrong.": + "Die von Ihnen eingegebene E-Mail ist falsch.", + "You have finished all times ": "Sie haben alle Zeiten beendet ", + "if you want help you can email us here": + "Wenn Sie Hilfe benötigen, können Sie uns hier eine E-Mail senden", + "Thanks": "Danke", + "Email Us": "Senden Sie uns eine E-Mail", + "I cant register in your app in face detection ": + "Ich kann mich in Ihrer App nicht mit Gesichtserkennung registrieren ", + "Hi": "Hallo", + "No face detected": "Kein Gesicht erkannt", + "Image detecting result is ": "Das Ergebnis der Bilderkennung ist ", + "from 3 times Take Attention": "von 3 Malen, achten Sie darauf", + "Be sure for take accurate images please\nYou have": + "Bitte achten Sie darauf, genaue Bilder aufzunehmen\nSie haben", + "image verified": "Bild verifiziert", + "Next": "Weiter", + "There is no help Question here": "Hier gibt es keine Hilfefrage", + "You dont have Points": "Sie haben keine Punkte", + "You Are Stopped For this Day !": "Sie sind für diesen Tag gestoppt!", + "You must be charge your Account": "Sie müssen Ihr Konto aufladen", + "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": + "Sie haben 3 Fahrten an diesem Tag abgelehnt, das ist der Grund \nBis morgen!", + "Recharge my Account": "Mein Konto aufladen", + "Ok , See you Tomorrow": "Ok, bis morgen", + "You are Stopped": "Sie sind gestoppt", + "Connected": "Verbunden", + "Not Connected": "Nicht verbunden", + "Your are far from passenger location": + "Sie sind weit vom Standort des Fahrgasts entfernt", + "go to your passenger location before\nPassenger cancel trip": + "gehen Sie zum Standort des Fahrgasts, bevor\n der Fahrgast die Fahrt storniert", + "You will get cost of your work for this trip": + "Sie erhalten die Kosten für Ihre Arbeit für diese Fahrt", + " in your wallet": "in Ihrem Portemonnaie", + "you gain": "Sie erhalten", + "Order Cancelled by Passenger": "Bestellung vom Fahrgast storniert", + "Success": "Erfolg", + "Feedback data saved successfully": + "Feedback-Daten erfolgreich gespeichert", + "No Promo for today .": "Keine Promotion für heute.", + "Select your destination": "Wählen Sie Ihr Ziel aus", + "Search for your Start point": "Suchen Sie Ihren Startpunkt", + "Search for waypoint": "Wegpunkt suchen", + "Current Location": "Aktueller Standort", + "Add Location 1": "Standort 1 hinzufügen", + "You must Verify email !.": "Sie müssen die E-Mail verifizieren!.", + "Cropper": "Zuschneider", + "Saved Sucssefully": "Erfolgreich gespeichert", + "Select Date": "Datum auswählen", + "Birth Date": "Geburtsdatum", + "Ok": "Ok", + "the 500 points equal 30 JOD": "500 Punkte entsprechen 30 JOD", + "the 500 points equal 30 JOD for you \nSo go and gain your money": + "500 Punkte entsprechen 30 JOD für Sie \nAlso los, verdienen Sie Ihr Geld", + "token updated": "Token aktualisiert", + "Add Location 2": "Standort 2 hinzufügen", + "Add Location 3": "Standort 3 hinzufügen", + "Add Location 4": "Standort 4 hinzufügen", + "Waiting for your location": "Warten auf Ihren Standort", + "Search for your destination": "Suchen Sie Ihr Ziel", + "Hi! This is": "Hallo! Das ist", + " I am using": " ich benutze", + " to ride with": " um mitzufahren", + " as the driver.": " als Fahrer.", + "is driving a ": "fährt ein ", + " with license plate ": " mit dem Nummernschild ", + " I am currently located at ": "Ich befinde mich derzeit an ", + "Please go to Car now ": "Bitte gehen Sie jetzt zum Auto ", + "You will receive a code in WhatsApp Messenger": + "Sie erhalten einen Code in WhatsApp Messenger", + "If you need assistance, contact us": + "Wenn Sie Hilfe benötigen, kontaktieren Sie uns", + "Promo Ended": "Promotion beendet", + "Enter the promo code and get": + "Geben Sie den Promo-Code ein und erhalten Sie", + "DISCOUNT": "RABATT", + "No wallet record found": "Kein Portemonnaie-Eintrag gefunden", + "for": "für", + "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": + "Intaleq ist die sicherste Mitfahr-App, die viele Funktionen für sowohl Kapitäne als auch Fahrgäste einführt. Wir bieten die niedrigste Kommissionsrate von nur 8%, um sicherzustellen, dass Sie den besten Wert für Ihre Fahrten erhalten. Unsere App beinhaltet Versicherungen für die besten Kapitäne, regelmäßige Wartung der Autos durch Top-Ingenieure und Dienstleistungen vor Ort, um ein respektvolles und hochwertiges Erlebnis für alle Nutzer zu gewährleisten.", + "You can contact us during working hours from 12:00 - 19:00.": + "Sie können uns während der Arbeitszeiten von 12:00 - 19:00 Uhr kontaktieren.", + "Choose a contact option": "Wählen Sie eine Kontaktoption", + "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": + "Die Arbeitszeit ist von 12:00 - 19:00 Uhr.\nSie können eine WhatsApp-Nachricht oder E-Mail senden.", + "Promo code copied to clipboard!": + "Promo-Code in die Zwischenablage kopiert!", + "Copy Code": "Code kopieren", + "Your invite code was successfully applied!": + "Ihr Einladungscode wurde erfolgreich angewendet!", + "Payment Options": "Zahlungsoptionen", + "wait 1 minute to receive message": + "Warten Sie 1 Minute, um die Nachricht zu erhalten", + "Promo Copied!": "Promotion kopiert!", + "You have copied the promo code.": + "Sie haben den Promo-Code kopiert.", + "Valid Until:": "Gültig bis:", + "Select Payment Amount": "Zahlungsbetrag auswählen", + "The promotion period has ended.": + "Die Promotionsperiode ist beendet.", + "Promo Code Accepted": "Promo-Code akzeptiert", + "Tap on the promo code to copy it!": + "Tippen Sie auf den Promo-Code, um ihn zu kopieren!", + "Lowest Price Achieved": "Niedrigster Preis erreicht", + "Cannot apply further discounts.": + "Weitere Rabatte können nicht angewendet werden.", + "Promo Already Used": "Promotion bereits verwendet", + "Invitation Used": "Einladung verwendet", + "You have already used this promo code.": + "Sie haben diesen Promo-Code bereits verwendet.", + "Insert Your Promo Code": "Geben Sie Ihren Promo-Code ein", + "Enter promo code here": "Geben Sie den Promo-Code hier ein", + "Please enter a valid promo code": + "Bitte geben Sie einen gültigen Promo-Code ein", + "Awfar Car": "Awfar Auto", + "Old and affordable, perfect for budget rides.": + "Alt und erschwinglich, perfekt für preiswerte Fahrten.", + " If you need to reach me, please contact the driver directly at": + " Wenn Sie mich erreichen müssen, kontaktieren Sie bitte den Fahrer direkt unter", + "No Car or Driver Found in your area.": + "Kein Auto oder Fahrer in Ihrer Region gefunden.", + "Please Try anther time ": + "Bitte versuchen Sie es zu einem anderen Zeitpunkt ", + "There no Driver Aplly your order sorry for that ": + "Es hat kein Fahrer Ihre Bestellung angenommen, tut uns leid ", + "Trip Cancelled": "Fahrt storniert", + "The Driver Will be in your location soon .": + "Der Fahrer wird bald an Ihrem Standort sein .", + "The distance less than 500 meter.": + "Die Entfernung beträgt weniger als 500 Meter.", + "Promo End !": "Promotion beendet!", + "There is no notification yet": "Es gibt noch keine Benachrichtigung", + "Use Touch ID or Face ID to confirm payment": + "Verwenden Sie Touch ID oder Face ID, um die Zahlung zu bestätigen", + "Contact us for any questions on your order.": + "Kontaktieren Sie uns bei Fragen zu Ihrer Bestellung.", + "Pyament Cancelled .": "Zahlung storniert .", + "type here": "hier eingeben", + "Scan Driver License": "Führerschein scannen", + "Please put your licence in these border": + "Bitte legen Sie Ihren Führerschein in diesen Rahmen", + "Camera not initialized yet": "Kamera noch nicht initialisiert", + "Take Image": "Bild aufnehmen", + "AI Page": "KI-Seite", + "Take Picture Of ID Card": "Machen Sie ein Bild Ihres Ausweises", + "Take Picture Of Driver License Card": + "Machen Sie ein Bild Ihrer Führerscheinkarte", + "We are process picture please wait ": + "Wir verarbeiten das Bild, bitte warten Sie ", + "There is no data yet.": "Es gibt noch keine Daten.", + "Name :": "Name :", + "Drivers License Class: ": "Führerscheinklasse: ", + "Document Number: ": "Dokumentennummer: ", + "Address: ": "Adresse: ", + "Height: ": "Größe: ", + "Expiry Date: ": "Ablaufdatum: ", + "Date of Birth: ": "Geburtsdatum: ", + "You can\'t continue with us .\nYou should renew Driver license": + "Sie können nicht mit uns weitermachen .\nSie sollten Ihren Führerschein erneuern", + "Detect Your Face ": "Erkennen Sie Ihr Gesicht ", + "Go to next step\nscan Car License.": + "Gehen Sie zum nächsten Schritt\nscannen Sie die Fahrzeuglizenz.", + "Name in arabic": "Name auf Arabisch", + "Drivers License Class": "Führerscheinklasse", + "Date of Birth": "Geburtsdatum", + "Selected Date": "Ausgewähltes Datum", + "Select Time": "Zeit auswählen", + "Selected Time": "Ausgewählte Zeit", + "Selected Date and Time": "Ausgewähltes Datum und Uhrzeit", + "Lets check Car license ": + "Lassen Sie uns die Fahrzeuglizenz überprüfen ", + "Car": "Auto", + "Plate": "Nummernschild", + "N/A": "N/A", + "Rides": "Fahrten", + "Age": "Alter", + "Selected driver": "Ausgewählter Fahrer", + "Lets check License Back Face": + "Lassen Sie uns die Rückseite des Führerscheins überprüfen", + "Car License Card": "Fahrzeuglizenzkarte", + "No image selected yet": "Noch kein Bild ausgewählt", + "Made :": "Hergestellt :", + "model :": "Modell :", + "VIN :": "Fahrgestellnummer :", + "year :": "Jahr :", + "ُExpire Date": "Ablaufdatum", + "Login Driver": "Fahrer anmelden", + "Password must br at least 6 character.": + "Das Passwort muss mindestens 6 Zeichen lang sein.", + "if you don\'t have account": "Wenn Sie kein Konto haben", + "Here recorded trips audio": + "Hier sind die Audioaufnahmen der Fahrten", + "Register as Driver": "Als Fahrer registrieren", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": + "Durch die Auswahl von \"Ich stimme zu\" bestätige ich, dass ich die Nutzungsbedingungen gelesen und akzeptiert habe und die ", + ". I am at least 18 years of age.": + ". Ich bin mindestens 18 Jahre alt.", + "Log Out Page": "Abmeldeseite", + "Log Off": "Abmelden", + "Register Driver": "Fahrer registrieren", + "Verify Email For Driver": "E-Mail für Fahrer verifizieren", + "Admin DashBoard": "Admin-Dashboard", + "Your name": "Ihr Name", + "your ride is applied": "Ihre Fahrt wurde übernommen", + "Your password": "Ihr Passwort", + "H and": "Stunden und", + "LE": "LE", + "JOD": "JOD", + "m": "Minuten", + "We search nearst Driver to you": + "Wir suchen den nächstgelegenen Fahrer für Sie", + "please wait till driver accept your order": + "Bitte warten Sie, bis der Fahrer Ihre Bestellung annimmt", + "No accepted orders? Try raising your trip fee to attract riders.": + "Keine angenommenen Bestellungen? Versuchen Sie, Ihre Fahrpreise zu erhöhen, um Fahrer anzulocken.", + "You should select one": "Sie sollten eines auswählen", + "The driver accept your order for": + "Der Fahrer hat Ihre Bestellung für", + "Increase Fee": "Preis erhöhen", + "No, thanks": "Nein, danke", + "The driver on your way": "Der Fahrer ist auf dem Weg zu Ihnen", + "Total price from ": "Gesamtpreis ab ", + "Order Details Intaleq": "Bestelldetails Geschwindigkeit", + "Order Applied": "Bestellung übernommen", + "accepted your order": "hat Ihre Bestellung angenommen", + "We regret to inform you that another driver has accepted this order.": + "Wir bedauern, Ihnen mitteilen zu müssen, dass ein anderer Fahrer diese Bestellung angenommen hat.", + "Selected file:": "Ausgewählte Datei:", + "Your trip cost is": "Ihre Fahrtkosten betragen", + "this will delete all files from your device": + "Dadurch werden alle Dateien von Ihrem Gerät gelöscht", + " in your": "in Ihrem", + "Exclusive offers and discounts always with the Intaleq app": + "Exklusive Angebote und Rabatte immer mit der Intaleq-App", + "Please go to Car Driver": "Bitte gehen Sie zum Autofahrer", + " wallet due to a previous trip.": + "Portemonnaie aufgrund einer vorherigen Fahrt.", + "Submit Question": "Frage einreichen", + "Please enter your Question.": "Bitte geben Sie Ihre Frage ein.", + "Help Details": "Hilfedetails", + "No trip yet found": "Noch keine Fahrt gefunden", + "No Response yet.": "Noch keine Antwort.", + " You Earn today is ": " Sie haben heute verdient ", + " You Have in": " Sie haben in", + "Total points is ": "Die Gesamtpunktzahl beträgt ", + "Total Connection Duration:": "Gesamte Verbindungsdauer:", + " H and": " Stunden und", + "Passenger name : ": "Fahrgastname : ", + "Cost Of Trip IS ": "Die Fahrtkosten betragen ", + "Arrival time": "Ankunftszeit", + "arrival time to reach your point": + "Ankunftszeit, um Ihren Punkt zu erreichen", + "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Für Schnell- und Rollerfahrten wird der Preis dynamisch berechnet. Für Komfortfahrten basiert der Preis auf Zeit und Entfernung.", + "Hello this is Driver": "Hallo, das ist der Fahrer", + "Is the Passenger in your Car ?": "Ist der Fahrgast in Ihrem Auto?", + "Please wait for the passenger to enter the car before starting the trip.": + "Bitte warten Sie, bis der Fahrgast ins Auto steigt, bevor Sie die Fahrt starten.", + "No ,still Waiting.": "Nein, noch warten.", + "I arrive you": "Ich komme zu Ihnen", + "I Arrive your site": "Ich bin an Ihrem Standort angekommen", + "You are not in near to passenger location": + "Sie sind nicht in der Nähe des Standorts des Fahrgasts", + "please go to picker location exactly": + "Bitte gehen Sie genau zum Abholort", + "You Can Cancel Trip And get Cost of Trip From": + "Sie können die Fahrt stornieren und die Fahrtkosten von", + "Are you sure to cancel?": + "Sind Sie sicher, dass Sie stornieren möchten?", + "Insert Emergincy Number": "Notrufnummer einfügen", + "Best choice for comfort car and flexible route and stops point": + "Beste Wahl für ein komfortables Auto und eine flexible Route mit Haltepunkten", + "Insert": "Einfügen", + "This is for scooter or a motorcycle.": + "Dies ist für einen Roller oder ein Motorrad.", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "Diese Fahrt geht direkt von Ihrem Startpunkt zu Ihrem Ziel für einen festen Preis. Der Fahrer muss der geplanten Route folgen.", + "You can decline a request without any cost": + "Sie können eine Anfrage ohne Kosten ablehnen", + "Perfect for adventure seekers who want to experience something new and exciting": + "Perfekt für Abenteurer, die etwas Neues und Aufregendes erleben möchten", + "My current location is:": "Mein aktueller Standort ist:", + "and I have a trip on": "und ich habe eine Fahrt am", + "App with Passenger": "App mit Fahrgast", + "You will be pay the cost to driver or we will get it from you on next trip": + "Sie werden die Kosten an den Fahrer zahlen oder wir werden sie bei der nächsten Fahrt von Ihnen einziehen", + "Trip has Steps": "Die Fahrt hat Schritte", + "Distance from Passenger to destination is ": + "Die Entfernung vom Fahrgast zum Ziel beträgt ", + "price is": "Preis ist", + "This ride type does not allow changes to the destination or additional stops": + "Dieser Fahrttyp erlaubt keine Änderungen des Ziels oder zusätzliche Stopps", + "This price may be changed": "Dieser Preis kann geändert werden", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "Keine SIM-Karte, kein Problem! Rufen Sie Ihren Fahrer direkt über unsere App an. Wir verwenden fortschrittliche Technologie, um Ihre Privatsphäre zu gewährleisten.", + "This ride type allows changes, but the price may increase": + "Dieser Fahrttyp erlaubt Änderungen, aber der Preis kann steigen", + "Select one message": "Wählen Sie eine Nachricht", + "I'm waiting for you": "Ich warte auf Sie", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "Wir haben festgestellt, dass die Geschwindigkeit 100 km/h überschreitet. Bitte verlangsamen Sie für Ihre Sicherheit. Wenn Sie sich unsicher fühlen, können Sie Ihre Fahrtdetails mit einem Kontakt teilen oder die Polizei über die rote SOS-Taste anrufen.", + "Warning: Intaleqing detected!": + "Warnung: Geschwindigkeitsüberschreitung erkannt!", + "Please help! Contact me as soon as possible.": + "Bitte helfen Sie! Kontaktieren Sie mich so schnell wie möglich.", + "Share Trip Details": "Fahrtdetails teilen", + "Car Plate is ": "Das Nummernschild ist ", + "VIP Order": "VIP-Bestellung", + "the 300 points equal 300 L.E for you \nSo go and gain your money": + "300 Punkte entsprechen 300 L.E für Sie \nAlso los, verdienen Sie Ihr Geld", + "the 300 points equal 300 L.E": "300 Punkte entsprechen 300 L.E", + "The payment was not approved. Please try again.": + "Die Zahlung wurde nicht genehmigt. Bitte versuchen Sie es erneut.", + "Payment Failed": "Zahlung fehlgeschlagen", + "Error": "Fehler", + "This is a scheduled notification.": + "Dies ist eine geplante Benachrichtigung.", + "An error occurred during the payment process.": + "Während des Zahlungsvorgangs ist ein Fehler aufgetreten.", + "The payment was approved.": "Die Zahlung wurde genehmigt.", + "Payment Successful": "Zahlung erfolgreich", + "No ride found yet": "Noch keine Fahrt gefunden", + "Accept Order": "Bestellung annehmen", + "Bottom Bar Example": "Beispiel für die untere Leiste", + "Driver phone": "Fahrertelefon", + "Statistics": "Statistiken", + "Origin": "Ursprung", + "Destination": "Ziel", + "Driver Name": "Fahrername", + "Driver Car Plate": "Fahrer-Nummernschild", + "Available for rides": "Verfügbar für Fahrten", + "Scan Id": "ID scannen", + "Camera not initilaized yet": "Kamera noch nicht initialisiert", + "Scan ID MklGoogle": "ID MklGoogle scannen", + "Language": "Sprache", + "Jordan": "Jordanien", + "USA": "USA", + "Egypt": "Ägypten", + "Turkey": "Türkei", + "Saudi Arabia": "Saudi-Arabien", + "Qatar": "Katar", + "Bahrain": "Bahrain", + "Kuwait": "Kuwait", + "But you have a negative salary of": + "Aber Sie haben ein negatives Gehalt von", + "Promo Code": "Promo-Code", + "Your trip distance is": "Ihre Fahrtstrecke beträgt", + "Enter promo code": "Promo-Code eingeben", + "You have promo!": "Sie haben eine Promotion!", + "Cost Duration": "Kostendauer", + "Duration is": "Dauer ist", + "Leave": "Verlassen", + "Join": "Beitreten", + "Heading your way now. Please be ready.": + "Jetzt auf dem Weg zu Ihnen. Bitte seien Sie bereit.", + "Approaching your area. Should be there in 3 minutes.": + "Nähern Sie sich Ihrem Gebiet. Sollte in 3 Minuten da sein.", + "There's heavy traffic here. Can you suggest an alternate pickup point?": + "Hier herrscht starker Verkehr. Können Sie einen alternativen Abholpunkt vorschlagen?", + "This ride is already taken by another driver.": + "Diese Fahrt wurde bereits von einem anderen Fahrer übernommen.", + "You Should be select reason.": "Sie sollten einen Grund auswählen.", + " \$": " \$", + "Waiting for Driver ...": "Warten auf Fahrer ...", + "Latest Recent Trip": "Letzte kürzliche Fahrt", + "from your list": "aus Ihrer Liste", + "Do you want to change Work location": + "Möchten Sie den Arbeitsort ändern?", + "Do you want to change Home location": + "Möchten Sie den Wohnort ändern?", + "We Are Sorry That we dont have cars in your Location!": + "Es tut uns leid, dass wir keine Autos in Ihrer Region haben!", + "Choose from Map": "Aus der Karte auswählen", + "Pick your ride location on the map - Tap to confirm": + "Wählen Sie Ihren Fahrtort auf der Karte aus - Tippen Sie, um zu bestätigen", + "Closest & Cheapest": "Nächstgelegen & Günstigst", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "Intaleq ist die Mitfahr-App, die sicher, zuverlässig und zugänglich ist.", + "With Intaleq, you can get a ride to your destination in minutes.": + "Mit Intaleq können Sie in wenigen Minuten eine Fahrt zu Ihrem Ziel bekommen.", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "Intaleq setzt sich für Sicherheit ein, und alle unsere Kapitäne werden sorgfältig überprüft.", + "Pick from map": "Aus der Karte auswählen", + "No Car in your site. Sorry!": + "Kein Auto in Ihrer Region. Entschuldigung!", + "Nearest Car for you about ": "Nächstes Auto für Sie in etwa ", + "From :": "Von :", + "Get Details of Trip": "Fahrtdetails erhalten", + "If you want add stop click here": + "Wenn Sie einen Stopp hinzufügen möchten, klicken Sie hier", + "Where you want go ": "Wohin Sie gehen möchten ", + "My Card": "Meine Karte", + "Start Record": "Aufnahme starten", + "Wallet": "Portemonnaie", + "History of Trip": "Fahrtverlauf", + "Helping Center": "Hilfezentrum", + "Record saved": "Aufnahme gespeichert", + "Trips recorded": "Fahrten aufgezeichnet", + "Select Your Country": "Wählen Sie Ihr Land aus", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "Um sicherzustellen, dass Sie die genauesten Informationen für Ihren Standort erhalten, wählen Sie bitte unten Ihr Land aus. Dies hilft, das App-Erlebnis und den Inhalt auf Ihr Land zuzuschneiden.", + "Are you sure to delete recorded files": + "Sind Sie sicher, dass Sie die aufgezeichneten Dateien löschen möchten?", + "Select recorded trip": "Aufgezeichnete Fahrt auswählen", + "Card Number": "Kartennummer", + "Hi, Where to ": "Hallo, wohin ", + "Pick your destination from Map": + "Wählen Sie Ihr Ziel aus der Karte aus", + "Add Stops": "Stopps hinzufügen", + "Get Direction": "Route erhalten", + "Add Location": "Standort hinzufügen", + "Switch Rider": "Fahrgast wechseln", + "You will arrive to your destination after timer end.": + "Sie werden nach Ablauf des Timers an Ihrem Ziel ankommen.", + "You can cancel trip": "Sie können die Fahrt stornieren", + "The driver waitting you in picked location .": + "Der Fahrer wartet an dem ausgewählten Ort auf Sie .", + "10\$ and get 3% discount": "10\$ und erhalten Sie 3% Rabatt", + "20\$ and get 4% discount": "20\$ und erhalten Sie 4% Rabatt", + "40\$ and get 6% discount": "40\$ und erhalten Sie 6% Rabatt", + "100\$ and get 9% discount": "100\$ und erhalten Sie 9% Rabatt", + "Pay with Your": "Bezahlen Sie mit Ihrem", + "Pay with Credit Card": "Mit Kreditkarte bezahlen", + "Payment History": "Zahlungsverlauf", + "Show Promos to Charge": "Promotionen zum Aufladen anzeigen", + "Point": "Punkt", + "How many hours would you like to wait?": + "Wie viele Stunden möchten Sie warten?", + "Driver Wallet": "Fahrer-Portemonnaie", + "Choose between those Type Cars": + "Wählen Sie zwischen diesen Autotypen", + "hour": "Stunde", + "Select Waiting Hours": "Wartezeit auswählen", + "Total Points is": "Die Gesamtpunktzahl beträgt", + "You will receive a code in SMS message": + "Sie erhalten einen Code per SMS", + "Done": "Fertig", + "Total Budget from trips is ": + "Das Gesamtbudget aus Fahrten beträgt ", + "Total Amount:": "Gesamtbetrag:", + "Total Budget from trips by\nCredit card is ": + "Das Gesamtbudget aus Fahrten per\nKreditkarte beträgt ", + "This amount for all trip I get from Passengers": + "Dieser Betrag für alle Fahrten, die ich von Fahrgästen erhalte", + "Pay from my budget": "Aus meinem Budget bezahlen", + "This amount for all trip I get from Passengers and Collected For me in": + "Dieser Betrag für alle Fahrten, die ich von Fahrgästen erhalte und für mich gesammelt habe in", + "You can buy points from your budget": + "Sie können Punkte aus Ihrem Budget kaufen", + "insert amount": "Betrag einfügen", + "You can buy Points to let you online\nby this list below": + "Sie können Punkte kaufen, um online zu gehen\nmit dieser Liste unten", + "Create Wallet to receive your money": + "Erstellen Sie ein Portemonnaie, um Ihr Geld zu erhalten", + "Enter your feedback here": "Geben Sie Ihr Feedback hier ein", + "Please enter your feedback.": "Bitte geben Sie Ihr Feedback ein.", + "Feedback": "Feedback", + "Submit ": "Einreichen ", + "Click here to Show it in Map": + "Klicken Sie hier, um es auf der Karte anzuzeigen", + "Canceled": "Storniert", + "Type your Email": "Geben Sie Ihre E-Mail ein", + "No I want": "Nein, ich möchte", + "Email is": "E-Mail ist", + "Phone Number is": "Telefonnummer ist", + "Date of Birth is": "Geburtsdatum ist", + "Sex is ": "Geschlecht ist ", + "Car Details": "Autodetails", + "VIN is": "Fahrgestellnummer ist", + "Color is ": "Farbe ist ", + "Make is ": "Marke ist ", + "Model is": "Modell ist", + "Year is": "Jahr ist", + "Expiration Date ": "Ablaufdatum ", + "Edit Your data": "Bearbeiten Sie Ihre Daten", + "write vin for your car": + "Geben Sie die Fahrgestellnummer Ihres Autos ein", + "VIN": "Fahrgestellnummer", + "write Color for your car": "Geben Sie die Farbe Ihres Autos ein", + "write Make for your car": "Geben Sie die Marke Ihres Autos ein", + "write Model for your car": "Geben Sie das Modell Ihres Autos ein", + "write Year for your car": "Geben Sie das Jahr Ihres Autos ein", + "write Expiration Date for your car": + "Geben Sie das Ablaufdatum Ihres Autos ein", + "Tariffs": "Tarife", + "Minimum fare": "Mindesttarif", + "Maximum fare": "Höchsttarif", + "Flag-down fee": "Grundpreis", + "Including Tax": "Inklusive Steuer", + "BookingFee": "Buchungsgebühr", + "Morning": "Morgen", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "von 07:30 bis 10:30 (Donnerstag, Freitag, Samstag, Montag)", + "Evening": "Abend", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "von 12:00 bis 15:00 (Donnerstag, Freitag, Samstag, Montag)", + "Night": "Nacht", + "You have in account": "Sie haben auf dem Konto", + "Select Country": "Land auswählen", + "Ride Today : ": "Fahrt heute : ", + "After this period\nYou can\'t cancel!": + "Nach dieser Zeit\nkönnen Sie nicht stornieren!", + "from 23:59 till 05:30": "von 23:59 bis 05:30", + "Rate Driver": "Fahrer bewerten", + "Total Cost is ": "Die Gesamtkosten betragen ", + "Write note": "Notiz schreiben", + "Time to arrive": "Ankunftszeit", + "Ride Summaries": "Fahrtzusammenfassungen", + "Total Cost": "Gesamtkosten", + "Average of Hours of": "Durchschnitt der Stunden von", + " is ON for this month": " ist diesen Monat aktiviert", + "Days": "Tage", + "Total Hours on month": "Gesamtstunden im Monat", + "Counts of Hours on days": "Anzahl der Stunden pro Tag", + "OrderId": "Bestell-ID", + "created time": "Erstellungszeit", + "Intaleq Over": "Geschwindigkeitsüberschreitung", + "I will slow down": "Ich werde langsamer fahren", + "Map Passenger": "Karte Fahrgast", + "Be Slowly": "Langsam sein", + "If you want to make Google Map App run directly when you apply order": + "Wenn Sie möchten, dass die Google Map App direkt ausgeführt wird, wenn Sie eine Bestellung aufgeben", + "You can change the language of the app": + "Sie können die Sprache der App ändern", + "Your Budget less than needed": + "Ihr Budget ist geringer als benötigt", + "You can change the Country to get all features": + "Sie können das Land ändern, um alle Funktionen zu erhalten", + "Change Country": "Land ändern" + }, + "es": { + "Order": "Pedido", + "Where to": "A dónde", + "Where are you going?": "¿A dónde vas?", + "Quick Actions": "Acciones rápidas", + "My Wallet": "Mi billetera", + "Order History": "Historial de pedidos", + "Contact Us": "Contáctanos", + "Driver": "Conductor", + "Complaint": "Queja", + "Promos": "Promociones", + "Recent Places": "Lugares recientes", + "From": "Desde", + "WhatsApp Location Extractor": "Extractor de ubicación de WhatsApp", + "Location Link": "Enlace de ubicación", + "Paste location link here": "Pega el enlace de ubicación aquí", + "Go to this location": "Ir a esta ubicación", + "Paste WhatsApp location link": + "Pega el enlace de ubicación de WhatsApp", + "Select Order Type": "Seleccionar tipo de pedido", + "Choose who this order is for": "Elige para quién es este pedido", + "I want to order for myself": "Quiero pedir para mí", + "I want to order for someone else": "Quiero pedir para alguien más", + "Cancel": "Cancelar", + "Order for someone else": "Pedido para alguien más", + "Order for myself": "Pedido para mí", + "Are you want to go this site": "¿Quieres ir a este sitio?", + "Yes": "Sí", + "No": "No", + "Are you sure to delete this location?": + "¿Estás seguro de eliminar esta ubicación?", + "deleted": "eliminado", + "To Work": "Al trabajo", + "Work Saved": "Trabajo guardado", + "To Home": "A casa", + "Home Saved": "Casa guardada", + "Destination selected": "Destino seleccionado", + "Now select start pick": "Ahora selecciona el punto de inicio", + "OK": "OK", + "Confirm Pick-up Location": "Confirmar ubicación de recogida", + "Set Location on Map": "Establecer ubicación en el mapa", + "Nearest Car: ~": "Coche más cercano: ~", + "Nearest Car": "Coche más cercano", + "No cars nearby": "No hay coches cerca", + "Favorite Places": "Lugares favoritos", + "No favorite places yet!": "¡Aún no tienes lugares favoritos!", + "from your favorites": "de tus favoritos", + "Back": "Atrás", + "Sign in for a seamless experience": + "Inicia sesión para una experiencia sin interrupciones", + "Sign In with Google": "Iniciar sesión con Google", + "Sign in with Apple": "Iniciar sesión con Apple", + "Need assistance? Contact us": "¿Necesitas ayuda? Contáctanos", + "User not found": "Usuario no encontrado", + "Email": "Correo electrónico", + "Your email address": "Tu dirección de correo electrónico", + "Enter a valid email": "Ingresa un correo electrónico válido", + "Password": "Contraseña", + "Enter your password": "Ingresa tu contraseña", + "Submit": "Enviar", + "Terms of Use & Privacy Notice": + "Términos de uso y aviso de privacidad", + "Terms of Use": "Términos de uso", + "Privacy Notice": "Aviso de privacidad", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the": + "Al seleccionar \"Acepto\" a continuación, confirmo que he leído y acepto los", + "and acknowledge the": "y reconozco el", + ". I am at least 18 years old.": ". Tengo al menos 18 años.", + "Continue": "Continuar", + "Enable Location Access": "Habilitar acceso a la ubicación", + "We need your location to find nearby drivers for pickups and drop-offs.": + "Necesitamos tu ubicación para encontrar conductores cercanos para recogidas y dejadas.", + "Allow Location Access": "Permitir acceso a la ubicación", + "You should restart app to change language": + "Debes reiniciar la aplicación para cambiar el idioma", + "Home Page": "Página de inicio", + "To change Language the App": + "Para cambiar el idioma de la aplicación", + "Learn more about our app and mission": + "Aprende más sobre nuestra aplicación y misión", + "Promos For Today": "Promociones para hoy", + "Choose your ride": "Elige tu viaje", + "Your Journey Begins Here": "Tu viaje comienza aquí", + "Bonus gift": "Regalo de bonificación", + "Pay": "Pagar", + "Get": "Obtener", + "Send to Driver Again": "Enviar al conductor nuevamente", + "Driver Name:": "Nombre del conductor:", + "No trip data available": "No hay datos de viaje disponibles", + "Car Plate:": "Matrícula del coche:", + "remaining": "restante", + "Order Cancelled": "Pedido cancelado", + "You canceled VIP trip": "Cancelaste el viaje VIP", + "Passenger cancelled order": "El pasajero canceló el pedido", + "Your trip is scheduled": "Tu viaje está programado", + "Don't forget your ride!": "¡No olvides tu viaje!", + "Trip updated successfully": "Viaje actualizado con éxito", + "Car Make:": "Marca del coche:", + "Car Model:": "Modelo del coche:", + "Car Color:": "Color del coche:", + "Driver Phone:": "Teléfono del conductor:", + "Pre-booking": "Reserva anticipada", + "Waiting VIP": "Esperando VIP", + "Driver List": "Lista de conductores", + "Confirm Trip": "Confirmar viaje", + "Select date and time of trip": "Seleccionar fecha y hora del viaje", + "Date and Time Picker": "Selector de fecha y hora", + "Trip Status:": "Estado del viaje:", + "pending": "pendiente", + "accepted": "aceptado", + "rejected": "rechazado", + "Apply": "Aplicar", + "Enter your promo code": "Ingresa tu código de promoción", + "Apply Promo Code": "Aplicar código de promoción", + "Scheduled Time:": "Hora programada:", + "No drivers available": "No hay conductores disponibles", + "No drivers available at the moment. Please try again later.": + "No hay conductores disponibles en este momento. Por favor, inténtalo de nuevo más tarde.", + "you have a negative balance of": "tienes un saldo negativo de", + "Please try again in a few moments": + "Por favor, inténtalo de nuevo en unos momentos", + "Unknown Driver": "Conductor desconocido", + "in your": "en tu", + "The driver accepted your order for": + "El conductor aceptó tu pedido para", + "wallet due to a previous trip.": + "billetera debido a un viaje anterior.", + "rides": "viajes", + "Add Work": "Añadir trabajo", + "The reason is": "La razón es", + "User does not have a wallet #1652": + "El usuario no tiene una billetera #1652", + "Price of trip": "Precio del viaje", + "From:": "Desde:", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Para viajes de velocidad y entrega, el precio se calcula dinámicamente. Para viajes de confort, el precio se basa en el tiempo y la distancia.", + "Phone Wallet Saved Successfully": + "Billetera telefónica guardada con éxito", + "Add wallet phone you use": + "Añade el teléfono de la billetera que usas", + "Update Available": "Actualización disponible", + "Phone number must be exactly 11 digits long": + "El número de teléfono debe tener exactamente 11 dígitos", + "Insert Wallet phone number": + "Ingresa el número de teléfono de la billetera", + "Phone number isn't an Egyptian phone number": + "El número de teléfono no es un número egipcio", + "A new version of the app is available. Please update to the latest version.": + "Hay una nueva versión de la aplicación disponible. Por favor, actualiza a la última versión.", + "We use location to get accurate and nearest passengers for you": + "Usamos la ubicación para obtener pasajeros precisos y cercanos para ti", + "This ride is already applied by another driver.": + "Este viaje ya ha sido aplicado por otro conductor.", + "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": + "Usamos tu ubicación precisa para encontrar el conductor disponible más cercano y proporcionar información precisa de recogida y dejada. Puedes gestionar esto en Configuración.", + "message From Driver": "Mensaje del conductor", + "message From passenger": "Mensaje del pasajero", + "Where are you, sir?": "¿Dónde estás, señor?", + "I've been trying to reach you but your phone is off.": + "He estado intentando contactarte pero tu teléfono está apagado.", + "Please don't be late": "Por favor, no llegues tarde", + "Please don't be late, I'm waiting for you at the specified location.": + "Por favor, no llegues tarde, te estoy esperando en la ubicación especificada.", + "My location is correct. You can search for me using the navigation app": + "Mi ubicación es correcta. Puedes buscarme usando la aplicación de navegación.", + "Hello, I'm at the agreed-upon location": + "Hola, estoy en la ubicación acordada", + "How much longer will you be?": "¿Cuánto tiempo más tardarás?", + "Phone number is verified before": + "El número de teléfono ya ha sido verificado", + "Change Ride": "Cambiar viaje", + "You can change the destination by long-pressing any point on the map": + "Puedes cambiar el destino manteniendo presionado cualquier punto en el mapa", + "Pick from map destination": "Elige el destino en el mapa", + "Pick or Tap to confirm": "Elige o toca para confirmar", + "Accepted your order": "Tu pedido ha sido aceptado", + "Order Accepted": "Pedido aceptado", + "with type": "con tipo", + "accepted your order at price": "aceptó tu pedido al precio de", + "Cancel Trip from driver": "Cancelar viaje por el conductor", + "you canceled order": "cancelaste el pedido", + "If you want order to another person": + "Si quieres pedir para otra persona", + "Ok I will go now.": "Ok, iré ahora.", + "Hi, I will go now": "Hola, iré ahora", + "upgrade price": "aumentar el precio", + "Please enter a correct phone": + "Por favor, ingresa un teléfono correcto", + "airport": "aeropuerto", + "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": + "Mejor opción para un coche cómodo con una ruta flexible y puntos de parada. Este aeropuerto ofrece entrada con visa a este precio.", + "You can upgrade price to may driver accept your order": + "Puedes aumentar el precio para que el conductor acepte tu pedido", + "Change Route": "Cambiar ruta", + "No Captain Accepted Your Order": "Ningún capitán aceptó tu pedido", + "We are looking for a captain but the price may increase to let a captain accept": + "Estamos buscando un capitán, pero el precio puede aumentar para que un capitán acepte", + "No, I want to cancel this trip": "No, quiero cancelar este viaje", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "Viaje cancelado. El costo del viaje se añadirá a tu billetera.", + "Attention": "Atención", + "Trip Cancelled. The cost of the trip will be deducted from your wallet.": + "Viaje cancelado. El costo del viaje se deducirá de tu billetera.", + "You will be charged for the cost of the driver coming to your location.": + "Se te cobrará el costo del conductor que viene a tu ubicación.", + "reject your order.": "rechazó tu pedido.", + "Order Under Review": "Pedido en revisión", + "is reviewing your order. They may need more information or a higher price.": + "está revisando tu pedido. Pueden necesitar más información o un precio más alto.", + "The driver canceled your ride.": "El conductor canceló tu viaje.", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "Aún no hemos encontrado conductores. Considera aumentar la tarifa de tu viaje para hacer tu oferta más atractiva para los conductores.", + "Increase Your Trip Fee (Optional)": + "Aumenta la tarifa de tu viaje (Opcional)", + "Vibration": "Vibración", + "Resend code": "Reenviar código", + "token change": "cambio de token", + "change device": "cambiar dispositivo", + "Device Change Detected": "Cambio de dispositivo detectado", + "You can only use one device at a time. This device will now be set as your active device.": + "Solo puedes usar un dispositivo a la vez. Este dispositivo se establecerá ahora como tu dispositivo activo.", + "Click here point": "Haz clic aquí", + "Are you want to change": "¿Quieres cambiar?", + "by": "por", + "Enter your complaint here": "Ingresa tu queja aquí", + "Please enter your complaint.": "Por favor, ingresa tu queja.", + "Complaint data saved successfully": + "Datos de la queja guardados con éxito", + "Trip Monitor": "Monitor de viaje", + "Insert SOS Phone": "Insertar teléfono SOS", + "Add SOS Phone": "Añadir teléfono SOS", + "Trip Monitoring": "Monitoreo de viaje", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "Estimado ,\n\n 🚀 ¡Acabo de comenzar un viaje emocionante y me gustaría compartir los detalles de mi trayecto y mi ubicación actual contigo en tiempo real! Por favor, descarga la aplicación Intaleq. Te permitirá ver los detalles de mi viaje y mi última ubicación.\n\n 👉 Enlace de descarga: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n ¡Espero mantenerte cerca durante mi aventura!\n\n Intaleq ,", + "Send Intaleq app to him": "Enviarle la aplicación Intaleq", + "No passenger found for the given phone number": + "No se encontró ningún pasajero para el número de teléfono proporcionado", + "No user found for the given phone number": + "No se encontró ningún usuario para el número de teléfono proporcionado", + "This price is": "Este precio es", + "Work": "Trabajo", + "Add Home": "Añadir casa", + "Notifications": "Notificaciones", + "💳 Pay with Credit Card": "💳 Pagar con tarjeta de crédito", + "⚠️ You need to choose an amount!": "⚠️ ¡Necesitas elegir un monto!", + "💰 Pay with Wallet": "Pagar con billetera", + "You must restart the app to change the language.": + "Debes reiniciar la aplicación para cambiar el idioma.", + "joined": "se unió", + "Driver joined the channel": "El conductor se unió al canal", + "Driver left the channel": "El conductor dejó el canal", + "Call Page": "Página de llamada", + "Call End": "Fin de la llamada", + "Call Left": "Llamada restante", + r"$ Next as Cash $!": "¡Siguiente como efectivo!", + "To use Wallet charge it": "Para usar la billetera, cárgala", + "We are searching for the nearest driver to you": + "Estamos buscando al conductor más cercano para ti", + "Best choice for cities": "Mejor opción para ciudades", + "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": + "Rayeh Gai: Servicio de viaje redondo para un viaje conveniente entre ciudades, fácil y confiable.", + "Rayeh Gai": "Rayeh Gai", + "This trip is for women only": "Este viaje es solo para mujeres", + "Total budgets on month": "Presupuestos totales del mes", + "You have call from driver": "Tienes una llamada del conductor", + "Comfort": "Confort", + "Intaleq": "Velocidad", + "Driver already has 2 trips within the specified period.": + "El conductor ya tiene 2 viajes dentro del período especificado.", + "The invitation was sent successfully": + "La invitación fue enviada con éxito", + "Lady": "Dama", + "You should select your country": "Debes seleccionar tu país", + "Scooter": "Scooter", + "A trip with a prior reservation, allowing you to choose the best captains and cars.": + "Un viaje con reserva previa, que te permite elegir a los mejores capitanes y coches.", + "Mishwar Vip": "Mishwar Vip", + "The driver waiting you in picked location .": + "El conductor te espera en la ubicación seleccionada.", + "About Us": "Sobre nosotros", + "You can change the vibration feedback for all buttons": + "Puedes cambiar la retroalimentación de vibración para todos los botones", + "Most Secure Methods": "Métodos más seguros", + "In-App VOIP Calls": "Llamadas VOIP en la aplicación", + "Recorded Trips for Safety": "Viajes grabados para seguridad", + "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": + "\nTambién priorizamos la asequibilidad, ofreciendo precios competitivos para que tus viajes sean accesibles.", + "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": + "Intaleq es una aplicación de viajes compartidos diseñada pensando en tu seguridad y asequibilidad. Te conectamos con conductores confiables en tu área, asegurando una experiencia de viaje conveniente y sin estrés.\n\nAquí hay algunas de las características clave que nos diferencian:", + "Sign In by Apple": "Iniciar sesión con Apple", + "Sign In by Google": "Iniciar sesión con Google", + "How do I request a ride?": "¿Cómo solicito un viaje?", + "Step-by-step instructions on how to request a ride through the Intaleq app.": + "Instrucciones paso a paso sobre cómo solicitar un viaje a través de la aplicación Intaleq.", + "What types of vehicles are available?": + "¿Qué tipos de vehículos están disponibles?", + "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": + "Intaleq ofrece una variedad de opciones de vehículos para adaptarse a tus necesidades, incluyendo economía, confort y lujo. Elige la opción que mejor se ajuste a tu presupuesto y número de pasajeros.", + "How can I pay for my ride?": "¿Cómo puedo pagar mi viaje?", + "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": + "Intaleq ofrece múltiples métodos de pago para tu conveniencia. Elige entre pago en efectivo o con tarjeta de crédito/débito durante la confirmación del viaje.", + "Can I cancel my ride?": "¿Puedo cancelar mi viaje?", + "Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.": + "Sí, puedes cancelar tu viaje bajo ciertas condiciones (por ejemplo, antes de que se asigne un conductor). Consulta la política de cancelación de Intaleq para más detalles.", + "Driver Registration & Requirements": + "Registro y requisitos del conductor", + "How can I register as a driver?": + "¿Cómo puedo registrarme como conductor?", + "What are the requirements to become a driver?": + "¿Cuáles son los requisitos para convertirse en conductor?", + "Visit our website or contact Intaleq support for information on driver registration and requirements.": + "Visita nuestro sitio web o contacta al soporte de Intaleq para obtener información sobre el registro y los requisitos del conductor.", + "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": + "Intaleq ofrece funcionalidad de chat en la aplicación para que puedas comunicarte con tu conductor o pasajero durante tu viaje.", + "What safety measures does Intaleq offer?": + "¿Qué medidas de seguridad ofrece Intaleq?", + "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": + "Intaleq prioriza tu seguridad. Ofrecemos funciones como verificación del conductor, seguimiento del viaje en la aplicación y opciones de contacto de emergencia.", + "Frequently Questions": "Preguntas frecuentes", + "User does not exist.": "El usuario no existe.", + "We need your phone number to contact you and to help you.": + "Necesitamos tu número de teléfono para contactarte y ayudarte.", + "You will recieve code in sms message": + "Recibirás el código en un mensaje SMS", + "Please enter": "Por favor, ingresa", + "We need your phone number to contact you and to help you receive orders.": + "Necesitamos tu número de teléfono para contactarte y ayudarte a recibir pedidos.", + "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": + "El nombre completo en tu registro criminal no coincide con el de tu licencia de conducir. Por favor, verifica y proporciona los documentos correctos.", + "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": + "El número nacional en tu licencia de conducir no coincide con el de tu documento de identidad. Por favor, verifica y proporciona los documentos correctos.", + "Capture an Image of Your Criminal Record": + "Captura una imagen de tu registro criminal", + "IssueDate": "Fecha de emisión", + "Capture an Image of Your car license front ": + "Captura una imagen de la parte frontal de tu licencia de coche", + "Capture an Image of Your ID Document front": + "Captura una imagen de la parte frontal de tu documento de identidad", + "NationalID": "Identificación nacional", + "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": + "Puedes compartir la aplicación Intaleq con tus amigos y ganar recompensas por los viajes que hagan usando tu código", + "FullName": "Nombre completo", + "No invitation found yet!": + "¡Aún no se ha encontrado ninguna invitación!", + "InspectionResult": "Resultado de la inspección", + "Criminal Record": "Registro criminal", + "Share App": "Compartir aplicación", + "The email or phone number is already registered.": + "El correo electrónico o número de teléfono ya está registrado.", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "Para convertirte en un conductor de viajes compartidos en la aplicación Intaleq, debes subir tu licencia de conducir, documento de identidad y documento de registro del coche. Nuestro sistema de IA revisará y verificará su autenticidad en solo 2-3 minutos. Si tus documentos son aprobados, puedes comenzar a trabajar como conductor en la aplicación Intaleq. Ten en cuenta que enviar documentos fraudulentos es un delito grave y puede resultar en la terminación inmediata y consecuencias legales.", + "Documents check": "Verificación de documentos", + "Driver's License": "Licencia de conducir", + "for your first registration!": "¡para tu primer registro!", + "Get it Now!": "¡Consíguelo ahora!", + "before": "antes", + "Code not approved": "Código no aprobado", + "3000 LE": "3000 LE", + "Do you have an invitation code from another driver?": + "¿Tienes un código de invitación de otro conductor?", + "Paste the code here": "Pega el código aquí", + "No, I don't have a code": "No, no tengo un código", + "Code approved": "Código aprobado", + "Install our app:": "Instala nuestra aplicación:", + "Invite another driver and both get a gift after he completes 100 trips!": + "¡Invita a otro conductor y ambos recibirán un regalo después de que complete 100 viajes!", + "Invite": "Invitar", + "Are you sure?": "¿Estás seguro?", + "This will delete all recorded files from your device.": + "Esto eliminará todos los archivos grabados de tu dispositivo.", + "Select a file": "Seleccionar un archivo", + "Select a File": "Seleccionar un archivo", + "Delete": "Eliminar", + "attach audio of complain": "adjuntar audio de la queja", + "Phone Number Check": "Verificación del número de teléfono", + "Drivers received orders": "Los conductores recibieron pedidos", + "No audio files recorded.": "No se han grabado archivos de audio.", + "This is for delivery or a motorcycle.": + "Esto es para entrega o una motocicleta.", + "We will look for a new driver.\nPlease wait.": + "Buscaremos un nuevo conductor.\nPor favor, espera.", + "Intaleq Reminder": "Recordatorio de Intaleq", + "It's time to check the Intaleq app!": + "¡Es hora de revisar la aplicación Intaleq!", + "you must insert token code": "debes insertar el código de token", + "Something went wrong. Please try again.": + "Algo salió mal. Por favor, inténtalo de nuevo.", + "Trip Details": "Detalles del viaje", + "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": + "El contexto no proporciona detalles de la queja, por lo que no puedo ofrecer una solución a este problema. Por favor, proporciona la información necesaria y estaré encantado de ayudarte.", + "Submit Your Complaint": "Envía tu queja", + "Date": "Fecha", + "Price": "Precio", + "Status": "Estado", + "Choose from contact": "Elegir de los contactos", + "attach correct audio": "adjuntar audio correcto", + "be sure": "asegúrate", + "Audio uploaded successfully.": "Audio subido con éxito.", + "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": + "Perfecto para pasajeros que buscan los últimos modelos de coches con la libertad de elegir cualquier ruta que deseen", + "Share this code with your friends and earn rewards when they use it!": + "¡Comparte este código con tus amigos y gana recompensas cuando lo usen!", + "Enter phone": "Ingresar teléfono", + "You deserve the gift": "Te mereces el regalo", + "complete, you can claim your gift": + "completo, puedes reclamar tu regalo", + "When": "Cuándo", + "Enter driver's phone": "Ingresar teléfono del conductor", + "Send Invite": "Enviar invitación", + "Show Invitations": "Mostrar invitaciones", + "License Type": "Tipo de licencia", + "National Number": "Número nacional", + "Name (Arabic)": "Nombre (árabe)", + "Name (English)": "Nombre (inglés)", + "Address": "Dirección", + "Issue Date": "Fecha de emisión", + "Expiry Date": "Fecha de vencimiento", + "License Categories": "Categorías de licencia", + "driver_license": "licencia de conducir", + "Capture an Image of Your Driver License": + "Captura una imagen de tu licencia de conducir", + "ID Documents Back": "Parte trasera de los documentos de identidad", + "National ID": "Identificación nacional", + "Occupation": "Ocupación", + "Gender": "Género", + "Religion": "Religión", + "Marital Status": "Estado civil", + "Full Name (Marital)": "Nombre completo (estado civil)", + "Expiration Date": "Fecha de vencimiento", + "Capture an Image of Your ID Document Back": + "Captura una imagen de la parte trasera de tu documento de identidad", + "ID Documents Front": "Parte frontal de los documentos de identidad", + "First Name": "Nombre", + "CardID": "ID de la tarjeta", + "Vehicle Details Front": "Detalles del vehículo (frente)", + "Plate Number": "Número de placa", + "Owner Name": "Nombre del propietario", + "Vehicle Details Back": "Detalles del vehículo (parte trasera)", + "Make": "Marca", + "Model": "Modelo", + "Year": "Año", + "Chassis": "Chasis", + "Color": "Color", + "Displacement": "Cilindrada", + "Fuel": "Combustible", + "Tax Expiry Date": "Fecha de vencimiento del impuesto", + "Inspection Date": "Fecha de inspección", + "Capture an Image of Your car license back": + "Captura una imagen de la parte trasera de tu licencia de coche", + "Capture an Image of Your Driver’s License": + "Captura una imagen de tu licencia de conducir", + "Sign in with Google for easier email and name entry": + "Inicia sesión con Google para ingresar el correo electrónico y el nombre más fácilmente", + "You will choose allow all the time to be ready receive orders": + "Elegirás permitir todo el tiempo para estar listo para recibir pedidos", + "Welcome to Intaleq!": "¡Bienvenido a Intaleq!", + "Get to your destination quickly and easily.": + "Llega a tu destino de manera rápida y sencilla.", + "Enjoy a safe and comfortable ride.": + "Disfruta de un viaje seguro y cómodo.", + "Choose Language": "Elegir idioma", + "Login": "Iniciar sesión", + "Pay with Wallet": "Pagar con billetera", + "Invalid MPIN": "MPIN inválido", + "Invalid OTP": "OTP inválido", + "Driver Accepted the Ride for You": + "El conductor aceptó el viaje por ti", + "Enter your email address": + "Ingresa tu dirección de correo electrónico", + "Please enter Your Email.": + "Por favor, ingresa tu correo electrónico.", + "Enter your phone number": "Ingresa tu número de teléfono", + "Please enter your phone number.": + "Por favor, ingresa tu número de teléfono.", + "Please enter Your Password.": "Por favor, ingresa tu contraseña.", + "if you dont have account": "si no tienes una cuenta", + "Register": "Registrarse", + "Accept Ride's Terms & Review Privacy Notice": + "Acepta los términos del viaje y revisa el aviso de privacidad", + "By selecting 'I Agree' below, I confirm that I have read and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "Al seleccionar 'Acepto' a continuación, confirmo que he leído y acepto los Términos de uso y reconozco el Aviso de privacidad. Tengo al menos 18 años de edad.", + "I Agree": "Acepto", + "Finish Monitor": "Finalizar monitor", + "First name": "Nombre", + "Enter your first name": "Ingresa tu nombre", + "Please enter your first name.": "Por favor, ingresa tu nombre.", + "Last name": "Apellido", + "Enter your last name": "Ingresa tu apellido", + "Please enter your last name.": "Por favor, ingresa tu apellido.", + "City": "Ciudad", + "Please enter your City.": "Por favor, ingresa tu ciudad.", + "Male": "Hombre", + "Female": "Mujer", + "Verify Email": "Verificar correo electrónico", + "We sent 5 digit to your Email provided": + "Enviamos un código de 5 dígitos al correo electrónico proporcionado", + "5 digit": "5 dígitos", + "Send Verification Code": "Enviar código de verificación", + "Your Ride Duration is ": "La duración de tu viaje es ", + "You will be thier in": "Estarás allí en", + "You trip distance is": "La distancia de tu viaje es", + "Fee is": "La tarifa es", + "From : ": "Desde : ", + "To : ": "Hacia : ", + "Add Promo": "Añadir promoción", + "Confirm Selection": "Confirmar selección", + "distance is": "la distancia es", + "Intaleq LLC": "Intaleq LLC", + "Egypt's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "El servicio pionero de viajes compartidos de Egipto, desarrollado con orgullo por propietarios árabes y locales. Priorizamos estar cerca de ti, tanto nuestros valiosos pasajeros como nuestros dedicados capitanes.", + "Why Choose Intaleq?": "¿Por qué elegir Intaleq?", + "Closest to You": "Más cerca de ti", + "We connect you with the nearest drivers for faster pickups and quicker journeys.": + "Te conectamos con los conductores más cercanos para recogidas más rápidas y viajes más cortos.", + "Uncompromising Security": "Seguridad sin compromisos", + "Lady Captains Available": "Capitanas disponibles", + "Recorded Trips (Voice & AI Analysis)": + "Viajes grabados (análisis de voz e IA)", + "Fastest Complaint Response": "Respuesta más rápida a las quejas", + "Our dedicated customer service team ensures swift resolution of any issues.": + "Nuestro dedicado equipo de servicio al cliente garantiza una resolución rápida de cualquier problema.", + "Affordable for Everyone": "Asequible para todos", + "Frequently Asked Questions": "Preguntas frecuentes", + "Getting Started": "Cómo empezar", + "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": + "Simplemente abre la aplicación Intaleq, ingresa tu destino y toca \"Solicitar viaje\". La aplicación te conectará con un conductor cercano.", + "Vehicle Options": "Opciones de vehículos", + "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": + "Intaleq ofrece una variedad de opciones, incluyendo Economía, Confort y Lujo, para adaptarse a tus necesidades y presupuesto.", + "Payments": "Pagos", + "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": + "Puedes pagar tu viaje en efectivo o con tarjeta de crédito/débito. Puedes seleccionar tu método de pago preferido antes de confirmar tu viaje.", + "Ride Management": "Gestión de viajes", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "Sí, puedes cancelar tu viaje, pero ten en cuenta que pueden aplicarse tarifas de cancelación dependiendo de cuánto tiempo antes canceles.", + "For Drivers": "Para conductores", + "Driver Registration": "Registro de conductores", + "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": + "Para registrarte como conductor o conocer los requisitos, visita nuestro sitio web o contacta directamente al soporte de Intaleq.", + "Visit Website/Contact Support": + "Visita el sitio web/Contacta al soporte", + "Close": "Cerrar", + "We are searching for the nearest driver": + "Estamos buscando al conductor más cercano", + "Communication": "Comunicación", + "How do I communicate with the other party (passenger/driver)?": + "¿Cómo me comunico con la otra parte (pasajero/conductor)?", + "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": + "Puedes comunicarte con tu conductor o pasajero a través de la función de chat en la aplicación una vez que se confirme el viaje.", + "Safety & Security": "Seguridad y protección", + "What safety measures does Intaleq offer?": + "¿Qué medidas de seguridad ofrece Intaleq?", + "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": + "Intaleq ofrece varias características de seguridad, incluyendo verificación del conductor, seguimiento del viaje en la aplicación, opciones de contacto de emergencia y la capacidad de compartir el estado de tu viaje con contactos de confianza.", + "Enjoy competitive prices across all trip options, making travel accessible.": + "Disfruta de precios competitivos en todas las opciones de viaje, haciendo que los viajes sean accesibles.", + "Variety of Trip Choices": "Variedad de opciones de viaje", + "Choose the trip option that perfectly suits your needs and preferences.": + "Elige la opción de viaje que mejor se adapte a tus necesidades y preferencias.", + "Your Choice, Our Priority": "Tu elección, nuestra prioridad", + "Because we are near, you have the flexibility to choose the ride that works best for you.": + "Porque estamos cerca, tienes la flexibilidad de elegir el viaje que mejor funcione para ti.", + "duration is": "la duración es", + "Setting": "Configuración", + "Find answers to common questions": + "Encuentra respuestas a preguntas comunes", + "I don't need a ride anymore": "Ya no necesito un viaje", + "I was just trying the application": + "Solo estaba probando la aplicación", + "No driver accepted my request": + "Ningún conductor aceptó mi solicitud", + "I added the wrong pick-up/drop-off location": + "Agregué la ubicación de recogida/dejada incorrecta", + "I don't have a reason": "No tengo una razón", + "Other": "Otro", + "Can we know why you want to cancel Ride ?": + "¿Podemos saber por qué quieres cancelar el viaje?", + "Cancel Ride": "Cancelar viaje", + "Add Payment Method": "Añadir método de pago", + "Your Wallet balance is ": "El saldo de tu billetera es ", + "Ride Wallet": "Billetera de viajes", + "Payment Method": "Método de pago", + "Type here Place": "Escribe aquí el lugar", + "Are You sure to ride to": "¿Estás seguro de viajar a", + "Confirm": "Confirmar", + "You are Delete": "Estás eliminando", + "Deleted": "Eliminado", + "You Dont Have Any places yet !": "¡Aún no tienes ningún lugar!", + "From : Current Location": "Desde : Ubicación actual", + "Profile": "Perfil", + "Home": "Casa", + "My Cared": "Mis tarjetas", + "Add Card": "Añadir tarjeta", + "Add Credit Card": "Añadir tarjeta de crédito", + "Please enter the cardholder name": + "Por favor, ingresa el nombre del titular de la tarjeta", + "Please enter the expiry date": + "Por favor, ingresa la fecha de vencimiento", + "Please enter the CVV code": "Por favor, ingresa el código CVV", + "Go To Favorite Places": "Ir a lugares favoritos", + "Go to this Target": "Ir a este objetivo", + "My Profile": "Mi perfil", + "Sign Out": "Cerrar sesión", + "Are you want to go to this site": "¿Quieres ir a este sitio?", + "MyLocation": "Mi ubicación", + "my location": "mi ubicación", + "Target": "Objetivo", + "Update": "Actualizar", + "You Should choose rate figure": + "Debes elegir una figura de calificación", + "Login Captin": "Iniciar sesión como capitán", + "Register Captin": "Registrar capitán", + "Send Verfication Code": "Enviar código de verificación", + "KM": "KM", + "End Ride": "Finalizar viaje", + "Minute": "Minuto", + "Go to passenger Location now": + "Ir ahora a la ubicación del pasajero", + "Duration of the Ride is ": "La duración del viaje es ", + "Distance of the Ride is ": "La distancia del viaje es ", + "Name of the Passenger is ": "El nombre del pasajero es ", + "Hello this is Captain": "Hola, este es el capitán", + "Start the Ride": "Iniciar el viaje", + "Please Wait If passenger want To Cancel!": + "¡Por favor, espera si el pasajero quiere cancelar!", + "Total Duration:": "Duración total:", + "Active Duration:": "Duración activa:", + "Waiting for Captin ...": "Esperando al capitán ...", + "Age is ": "La edad es ", + "Rating is ": "La calificación es ", + " to arrive you.": "para llegar a ti.", + "Tariff": "Tarifa", + "Settings": "Configuración", + "Feed Back": "Retroalimentación", + "Please enter a valid 16-digit card number": + "Por favor, ingresa un número de tarjeta válido de 16 dígitos", + "Add Phone": "Añadir teléfono", + "Please enter a phone number": + "Por favor, ingresa un número de teléfono", + "You dont Add Emergency Phone Yet!": + "¡Aún no has añadido un teléfono de emergencia!", + "You will arrive to your destination after ": + "Llegarás a tu destino después de ", + "You can cancel Ride now": "Puedes cancelar el viaje ahora", + "You Can cancel Ride After Captain did not come in the time": + "Puedes cancelar el viaje si el capitán no llegó a tiempo", + "If you in Car Now. Press Start The Ride": + "Si estás en el coche ahora. Presiona Iniciar el viaje", + "You Dont Have Any amount in": "No tienes ningún monto en", + "Wallet!": "¡Billetera!", + "You Have": "Tienes", + "Save Credit Card": "Guardar tarjeta de crédito", + "Show Promos": "Mostrar promociones", + "10 and get 4% discount": "10 y obtén un 4% de descuento", + "20 and get 6% discount": "20 y obtén un 6% de descuento", + "40 and get 8% discount": "40 y obtén un 8% de descuento", + "100 and get 11% discount": "100 y obtén un 11% de descuento", + "Pay with Your PayPal": "Paga con tu PayPal", + "You will choose one of above !": "¡Elegirás uno de los anteriores!", + "Delete My Account": "Eliminar mi cuenta", + "Edit Profile": "Editar perfil", + "Name": "Nombre", + "Update Gender": "Actualizar género", + "Education": "Educación", + "Update Education": "Actualizar educación", + "Employment Type": "Tipo de empleo", + "SOS Phone": "Teléfono SOS", + "High School Diploma": "Diploma de bachillerato", + "Associate Degree": "Título de asociado", + "Bachelor's Degree": "Licenciatura", + "Master's Degree": "Maestría", + "Doctoral Degree": "Doctorado", + "Copy this Promo to use it in your Ride!": + "¡Copia esta promoción para usarla en tu viaje!", + "To change some Settings": "Para cambiar algunas configuraciones", + "Order Request Page": "Página de solicitud de pedido", + "Rouats of Trip": "Rutas del viaje", + "Passenger name : ": "Nombre del pasajero : ", + "Total From Passenger is ": "El total del pasajero es ", + "Duration To Passenger is ": "La duración hasta el pasajero es ", + "Distance To Passenger is ": "La distancia hasta el pasajero es ", + "Total For You is ": "El total para ti es ", + "Distance is ": "La distancia es ", + " KM": " KM", + "Duration of Trip is ": "La duración del viaje es ", + " Minutes": " Minutos", + "Apply Order": "Aplicar pedido", + "Refuse Order": "Rechazar pedido", + "Rate Captain": "Calificar al capitán", + "Enter your Note": "Ingresa tu nota", + "Type something...": "Escribe algo...", + "Submit rating": "Enviar calificación", + "Rate Passenger": "Calificar al pasajero", + "Ride Summary": "Resumen del viaje", + "welcome_message": "Bienvenido a Intaleq!", + "app_description": + "Intaleq es una aplicación de viajes compartidos segura, confiable y accesible.", + "get_to_destination": + "Llega a tu destino de manera rápida y sencilla.", + "get_a_ride": "Con Intaleq, puedes llegar a tu destino en minutos.", + "safe_and_comfortable": "Disfruta de un viaje seguro y cómodo.", + "committed_to_safety": + "Intaleq se compromete con la seguridad, y todos nuestros capitanes son cuidadosamente seleccionados y verificados.", + "Driver Applied the Ride for You": + "El conductor aplicó el viaje por ti", + "Show latest promo": "Mostrar la última promoción", + "Cancel Trip": "Cancelar viaje", + "Passenger Cancel Trip": "El pasajero canceló el viaje", + "Accepted Ride": "Viaje aceptado", + "your ride is Accepted": "tu viaje ha sido aceptado", + "Please stay on the picked point.": + "Por favor, permanece en el punto seleccionado.", + "Trip is Begin": "El viaje comienza", + "Driver is waiting at pickup.": + "El conductor está esperando en el punto de recogida.", + "Driver is on the way": "El conductor está en camino", + "Contact Options": "Opciones de contacto", + "Send a custom message": "Enviar un mensaje personalizado", + "Type your message": "Escribe tu mensaje", + "Hi ,I will go now": "Hola, iré ahora", + "Passenger come to you": "El pasajero viene a ti", + "Hi ,I Arrive your site": "Hola, llegué a tu sitio", + "Driver Finish Trip": "El conductor finalizó el viaje", + "you will pay to Driver": "pagarás al conductor", + "Driver Cancel Your Trip": "El conductor canceló tu viaje", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "pagarás al conductor, pagarás el costo del tiempo del conductor, revisa tu billetera Intaleq", + "I will go now": "Iré ahora", + "You Have Tips": "Tienes propinas", + " tips\nTotal is": " propinas\nEl total es", + "No,I want": "No, quiero", + "Your fee is ": "Tu tarifa es ", + "Do you want to pay Tips for this Driver": + "¿Quieres pagar propinas a este conductor?", + "Tip is ": "La propina es ", + "Are you want to wait drivers to accept your order": + "¿Quieres esperar a que los conductores acepten tu pedido?", + "This price is fixed even if the route changes for the driver.": + "Este precio es fijo incluso si la ruta cambia para el conductor.", + "The price may increase if the route changes.": + "El precio puede aumentar si la ruta cambia.", + "The captain is responsible for the route.": + "El capitán es responsable de la ruta.", + "We are search for nearst driver": + "Estamos buscando al conductor más cercano", + "Your order is being prepared": "Tu pedido está siendo preparado", + "The drivers are reviewing your request": + "Los conductores están revisando tu solicitud", + "Your order sent to drivers": + "Tu pedido fue enviado a los conductores", + "You can call or record audio of this trip": + "Puedes llamar o grabar audio de este viaje", + "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": + "¡El viaje ha comenzado! No dudes en contactar números de emergencia, compartir tu viaje o activar la grabación de voz para el trayecto", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "Por favor, asegúrate de tener todas tus pertenencias personales y que cualquier tarifa restante, si corresponde, se haya añadido a tu billetera antes de salir. Gracias por elegir la aplicación Intaleq", + "Don’t forget your personal belongings.": + "No olvides tus pertenencias personales.", + "Camera Access Denied.": "Acceso a la cámara denegado.", + "Open Settings": "Abrir configuración", + "GPS Required Allow !.": "¡GPS requerido, permitir!.", + "Your Account is Deleted": "Tu cuenta ha sido eliminada", + "Are you sure to delete your account?": + "¿Estás seguro de eliminar tu cuenta?", + "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": + "Tus datos serán borrados después de 2 semanas\nY no podrás volver a usar la aplicación después de 1 mes ", + "Enter Your First Name": "Ingresa tu nombre", + "Are you Sure to LogOut?": "¿Estás seguro de cerrar sesión?", + "Email Wrong": "Correo electrónico incorrecto", + "Email you inserted is Wrong.": + "El correo electrónico que ingresaste es incorrecto.", + "You have finished all times ": "Has terminado todas las veces ", + "if you want help you can email us here": + "si necesitas ayuda, puedes enviarnos un correo electrónico aquí", + "Thanks": "Gracias", + "Email Us": "Envíanos un correo electrónico", + "I cant register in your app in face detection ": + "No puedo registrarme en tu aplicación con detección facial ", + "Hi": "Hola", + "No face detected": "No se detectó ninguna cara", + "Image detecting result is ": + "El resultado de la detección de imagen es ", + "from 3 times Take Attention": "de 3 veces, presta atención", + "Be sure for take accurate images please\nYou have": + "Por favor, asegúrate de tomar imágenes precisas\nTienes", + "image verified": "imagen verificada", + "Next": "Siguiente", + "There is no help Question here": "No hay una pregunta de ayuda aquí", + "You dont have Points": "No tienes puntos", + "You Are Stopped For this Day !": "¡Estás detenido por este día!", + "You must be charge your Account": "Debes cargar tu cuenta", + "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": + "Rechazaste 3 viajes este día, esa es la razón \n¡Nos vemos mañana!", + "Recharge my Account": "Recargar mi cuenta", + "Ok , See you Tomorrow": "Ok, nos vemos mañana", + "You are Stopped": "Estás detenido", + "Connected": "Conectado", + "Not Connected": "No conectado", + "Your are far from passenger location": + "Estás lejos de la ubicación del pasajero", + "go to your passenger location before\nPassenger cancel trip": + "ve a la ubicación del pasajero antes de que\nel pasajero cancele el viaje", + "You will get cost of your work for this trip": + "Obtendrás el costo de tu trabajo por este viaje", + " in your wallet": "en tu billetera", + "you gain": "ganas", + "Order Cancelled by Passenger": "Pedido cancelado por el pasajero", + "Success": "Éxito", + "Feedback data saved successfully": + "Datos de retroalimentación guardados con éxito", + "No Promo for today .": "No hay promoción para hoy.", + "Select your destination": "Selecciona tu destino", + "Search for your Start point": "Busca tu punto de inicio", + "Search for waypoint": "Buscar punto de referencia", + "Current Location": "Ubicación actual", + "Add Location 1": "Añadir ubicación 1", + "You must Verify email !.": + "¡Debes verificar el correo electrónico!.", + "Cropper": "Recortador", + "Saved Sucssefully": "Guardado exitosamente", + "Select Date": "Seleccionar fecha", + "Birth Date": "Fecha de nacimiento", + "Ok": "Ok", + "the 500 points equal 30 JOD": "500 puntos equivalen a 30 JOD", + "the 500 points equal 30 JOD for you \nSo go and gain your money": + "500 puntos equivalen a 30 JOD para ti \nAsí que ve y gana tu dinero", + "token updated": "token actualizado", + "Add Location 2": "Añadir ubicación 2", + "Add Location 3": "Añadir ubicación 3", + "Add Location 4": "Añadir ubicación 4", + "Waiting for your location": "Esperando tu ubicación", + "Search for your destination": "Busca tu destino", + "Hi! This is": "¡Hola! Este es", + " I am using": " estoy usando", + " to ride with": " para viajar con", + " as the driver.": " como el conductor.", + "is driving a ": "está conduciendo un ", + " with license plate ": " con matrícula ", + " I am currently located at ": "Actualmente estoy ubicado en ", + "Please go to Car now ": "Por favor, ve al coche ahora ", + "You will receive a code in WhatsApp Messenger": + "Recibirás un código en WhatsApp Messenger", + "If you need assistance, contact us": + "Si necesitas ayuda, contáctanos", + "Promo Ended": "Promoción terminada", + "Enter the promo code and get": + "Ingresa el código de promoción y obtén", + "DISCOUNT": "DESCUENTO", + "No wallet record found": + "No se encontró ningún registro de billetera", + "for": "para", + "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": + "Intaleq es la aplicación de viajes compartidos más segura que introduce muchas características tanto para capitanes como para pasajeros. Ofrecemos la tasa de comisión más baja de solo el 8%, asegurando que obtengas el mejor valor por tus viajes. Nuestra aplicación incluye seguro para los mejores capitanes, mantenimiento regular de coches con los mejores ingenieros y servicios en carretera para garantizar una experiencia respetuosa y de alta calidad para todos los usuarios.", + "You can contact us during working hours from 12:00 - 19:00.": + "Puedes contactarnos durante el horario de trabajo de 12:00 - 19:00.", + "Choose a contact option": "Elige una opción de contacto", + "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": + "El horario de trabajo es de 12:00 - 19:00.\nPuedes enviar un mensaje de WhatsApp o un correo electrónico.", + "Promo code copied to clipboard!": + "¡Código de promoción copiado al portapapeles!", + "Copy Code": "Copiar código", + "Your invite code was successfully applied!": + "¡Tu código de invitación fue aplicado con éxito!", + "Payment Options": "Opciones de pago", + "wait 1 minute to receive message": + "espera 1 minuto para recibir el mensaje", + "Promo Copied!": "¡Promoción copiada!", + "You have copied the promo code.": + "Has copiado el código de promoción.", + "Valid Until:": "Válido hasta:", + "Select Payment Amount": "Seleccionar monto de pago", + "The promotion period has ended.": + "El período de promoción ha terminado.", + "Promo Code Accepted": "Código de promoción aceptado", + "Tap on the promo code to copy it!": + "¡Toca el código de promoción para copiarlo!", + "Lowest Price Achieved": "Precio más bajo alcanzado", + "Cannot apply further discounts.": + "No se pueden aplicar más descuentos.", + "Promo Already Used": "Promoción ya utilizada", + "Invitation Used": "Invitación utilizada", + "You have already used this promo code.": + "Ya has usado este código de promoción.", + "Insert Your Promo Code": "Inserta tu código de promoción", + "Enter promo code here": "Ingresa el código de promoción aquí", + "Please enter a valid promo code": + "Por favor, ingresa un código de promoción válido", + "Awfar Car": "Coche Awfar", + "Old and affordable, perfect for budget rides.": + "Viejo y asequible, perfecto para viajes económicos.", + " If you need to reach me, please contact the driver directly at": + " Si necesitas contactarme, por favor contacta al conductor directamente al", + "No Car or Driver Found in your area.": + "No se encontró ningún coche o conductor en tu área.", + "Please Try anther time ": "Por favor, intenta otro momento ", + "There no Driver Aplly your order sorry for that ": + "Ningún conductor aplicó tu pedido, lo sentimos ", + "Trip Cancelled": "Viaje cancelado", + "The Driver Will be in your location soon .": + "El conductor estará en tu ubicación pronto .", + "The distance less than 500 meter.": + "La distancia es menor a 500 metros.", + "Promo End !": "¡Promoción terminada!", + "There is no notification yet": "Aún no hay notificaciones", + "Use Touch ID or Face ID to confirm payment": + "Usa Touch ID o Face ID para confirmar el pago", + "Contact us for any questions on your order.": + "Contáctanos si tienes preguntas sobre tu pedido.", + "Pyament Cancelled .": "Pago cancelado .", + "type here": "escribe aquí", + "Scan Driver License": "Escanear licencia de conducir", + "Please put your licence in these border": + "Por favor, coloca tu licencia en este marco", + "Camera not initialized yet": "La cámara aún no se ha inicializado", + "Take Image": "Tomar imagen", + "AI Page": "Página de IA", + "Take Picture Of ID Card": + "Tomar foto de la tarjeta de identificación", + "Take Picture Of Driver License Card": + "Tomar foto de la tarjeta de licencia de conducir", + "We are process picture please wait ": + "Estamos procesando la imagen, por favor espera ", + "There is no data yet.": "Aún no hay datos.", + "Name :": "Nombre :", + "Drivers License Class: ": "Clase de licencia de conducir: ", + "Document Number: ": "Número de documento: ", + "Address: ": "Dirección: ", + "Height: ": "Altura: ", + "Expiry Date: ": "Fecha de vencimiento: ", + "Date of Birth: ": "Fecha de nacimiento: ", + "You can\'t continue with us .\nYou should renew Driver license": + "No puedes continuar con nosotros .\nDebes renovar tu licencia de conducir", + "Detect Your Face ": "Detecta tu cara ", + "Go to next step\nscan Car License.": + "Ve al siguiente paso\nescanea la licencia del coche.", + "Name in arabic": "Nombre en árabe", + "Drivers License Class": "Clase de licencia de conducir", + "Date of Birth": "Fecha de nacimiento", + "Selected Date": "Fecha seleccionada", + "Select Time": "Seleccionar hora", + "Selected Time": "Hora seleccionada", + "Selected Date and Time": "Fecha y hora seleccionadas", + "Lets check Car license ": "Vamos a verificar la licencia del coche ", + "Car": "Coche", + "Plate": "Placa", + "N/A": "N/A", + "Rides": "Viajes", + "Age": "Edad", + "Selected driver": "Conductor seleccionado", + "Lets check License Back Face": + "Vamos a verificar la parte trasera de la licencia", + "Car License Card": "Tarjeta de licencia de coche", + "No image selected yet": "Aún no se ha seleccionado ninguna imagen", + "Made :": "Hecho :", + "model :": "modelo :", + "VIN :": "Número de chasis :", + "year :": "año :", + "ُExpire Date": "Fecha de vencimiento", + "Login Driver": "Iniciar sesión como conductor", + "Password must br at least 6 character.": + "La contraseña debe tener al menos 6 caracteres.", + "if you don\'t have account": "si no tienes una cuenta", + "Here recorded trips audio": + "Aquí están los audios de los viajes grabados", + "Register as Driver": "Registrarse como conductor", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": + "Al seleccionar \"Acepto\" a continuación, he revisado y acepto los Términos de uso y reconozco el ", + ". I am at least 18 years of age.": + ". Tengo al menos 18 años de edad.", + "Log Out Page": "Página de cierre de sesión", + "Log Off": "Cerrar sesión", + "Register Driver": "Registrar conductor", + "Verify Email For Driver": + "Verificar correo electrónico para el conductor", + "Admin DashBoard": "Panel de administración", + "Your name": "Tu nombre", + "your ride is applied": "tu viaje ha sido aplicado", + "Your password": "Tu contraseña", + "H and": "Horas y", + "LE": "LE", + "JOD": "JOD", + "m": "minutos", + "We search nearst Driver to you": + "Buscamos al conductor más cercano para ti", + "please wait till driver accept your order": + "por favor espera hasta que el conductor acepte tu pedido", + "No accepted orders? Try raising your trip fee to attract riders.": + "¿No hay pedidos aceptados? Intenta aumentar la tarifa de tu viaje para atraer a los conductores.", + "You should select one": "Debes seleccionar uno", + "The driver accept your order for": + "El conductor aceptó tu pedido para", + "Increase Fee": "Aumentar tarifa", + "No, thanks": "No, gracias", + "The driver on your way": "El conductor está en camino", + "Total price from ": "Precio total desde ", + "Order Details Intaleq": "Detalles del pedido Velocidad", + "Order Applied": "Pedido aplicado", + "accepted your order": "aceptó tu pedido", + "We regret to inform you that another driver has accepted this order.": + "Lamentamos informarte que otro conductor ha aceptado este pedido.", + "Selected file:": "Archivo seleccionado:", + "Your trip cost is": "El costo de tu viaje es", + "this will delete all files from your device": + "esto eliminará todos los archivos de tu dispositivo", + " in your": "en tu", + "Exclusive offers and discounts always with the Intaleq app": + "Ofertas exclusivas y descuentos siempre con la aplicación Intaleq", + "Please go to Car Driver": "Por favor, ve al conductor del coche", + " wallet due to a previous trip.": + "billetera debido a un viaje anterior.", + "Submit Question": "Enviar pregunta", + "Please enter your Question.": "Por favor, ingresa tu pregunta.", + "Help Details": "Detalles de ayuda", + "No trip yet found": "Aún no se ha encontrado ningún viaje", + "No Response yet.": "Aún no hay respuesta.", + " You Earn today is ": " Lo que ganaste hoy es ", + " You Have in": " Tienes en", + "Total points is ": "El total de puntos es ", + "Total Connection Duration:": "Duración total de la conexión:", + " H and": " Horas y", + "Passenger name : ": "Nombre del pasajero : ", + "Cost Of Trip IS ": "El costo del viaje es ", + "Arrival time": "Hora de llegada", + "arrival time to reach your point": + "hora de llegada para llegar a tu punto", + "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Para viajes de velocidad y scooter, el precio se calcula dinámicamente. Para viajes de confort, el precio se basa en el tiempo y la distancia.", + "Hello this is Driver": "Hola, este es el conductor", + "Is the Passenger in your Car ?": "¿El pasajero está en tu coche?", + "Please wait for the passenger to enter the car before starting the trip.": + "Por favor, espera a que el pasajero entre al coche antes de iniciar el viaje.", + "No ,still Waiting.": "No, aún esperando.", + "I arrive you": "Llego a ti", + "I Arrive your site": "Llego a tu sitio", + "You are not in near to passenger location": + "No estás cerca de la ubicación del pasajero", + "please go to picker location exactly": + "por favor ve exactamente a la ubicación del recolector", + "You Can Cancel Trip And get Cost of Trip From": + "Puedes cancelar el viaje y obtener el costo del viaje de", + "Are you sure to cancel?": "¿Estás seguro de cancelar?", + "Insert Emergincy Number": "Insertar número de emergencia", + "Best choice for comfort car and flexible route and stops point": + "Mejor opción para un coche cómodo y una ruta flexible con puntos de parada", + "Insert": "Insertar", + "This is for scooter or a motorcycle.": + "Esto es para un scooter o una motocicleta.", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "Este viaje va directamente desde tu punto de inicio hasta tu destino por un precio fijo. El conductor debe seguir la ruta planificada.", + "You can decline a request without any cost": + "Puedes rechazar una solicitud sin ningún costo", + "Perfect for adventure seekers who want to experience something new and exciting": + "Perfecto para los buscadores de aventuras que quieren experimentar algo nuevo y emocionante", + "My current location is:": "Mi ubicación actual es:", + "and I have a trip on": "y tengo un viaje el", + "App with Passenger": "Aplicación con pasajero", + "You will be pay the cost to driver or we will get it from you on next trip": + "Pagarás el costo al conductor o lo obtendremos de ti en el próximo viaje", + "Trip has Steps": "El viaje tiene pasos", + "Distance from Passenger to destination is ": + "La distancia del pasajero al destino es ", + "price is": "el precio es", + "This ride type does not allow changes to the destination or additional stops": + "Este tipo de viaje no permite cambios en el destino o paradas adicionales", + "This price may be changed": "Este precio puede cambiar", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "¡Sin tarjeta SIM, no hay problema! Llama a tu conductor directamente a través de nuestra aplicación. Usamos tecnología avanzada para garantizar tu privacidad.", + "This ride type allows changes, but the price may increase": + "Este tipo de viaje permite cambios, pero el precio puede aumentar", + "Select one message": "Selecciona un mensaje", + "I'm waiting for you": "Te estoy esperando", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "Notamos que la velocidad supera los 100 km/h. Por favor, reduce la velocidad por tu seguridad. Si te sientes inseguro, puedes compartir los detalles de tu viaje con un contacto o llamar a la policía usando el botón rojo de SOS.", + "Warning: Intaleqing detected!": + "¡Advertencia: Se detectó exceso de velocidad!", + "Please help! Contact me as soon as possible.": + "¡Por favor, ayuda! Contáctame lo antes posible.", + "Share Trip Details": "Compartir detalles del viaje", + "Car Plate is ": "La placa del coche es ", + "VIP Order": "Pedido VIP", + "the 300 points equal 300 L.E for you \nSo go and gain your money": + "300 puntos equivalen a 300 L.E para ti \nAsí que ve y gana tu dinero", + "the 300 points equal 300 L.E": "300 puntos equivalen a 300 L.E", + "The payment was not approved. Please try again.": + "El pago no fue aprobado. Por favor, inténtalo de nuevo.", + "Payment Failed": "Pago fallido", + "Error": "Error", + "This is a scheduled notification.": + "Esta es una notificación programada.", + "An error occurred during the payment process.": + "Ocurrió un error durante el proceso de pago.", + "The payment was approved.": "El pago fue aprobado.", + "Payment Successful": "Pago exitoso", + "No ride found yet": "Aún no se ha encontrado ningún viaje", + "Accept Order": "Aceptar pedido", + "Bottom Bar Example": "Ejemplo de barra inferior", + "Driver phone": "Teléfono del conductor", + "Statistics": "Estadísticas", + "Origin": "Origen", + "Destination": "Destino", + "Driver Name": "Nombre del conductor", + "Driver Car Plate": "Placa del coche del conductor", + "Available for rides": "Disponible para viajes", + "Scan Id": "Escanear ID", + "Camera not initilaized yet": "La cámara aún no se ha inicializado", + "Scan ID MklGoogle": "Escanear ID MklGoogle", + "Language": "Idioma", + "Jordan": "Jordania", + "USA": "EE. UU.", + "Egypt": "Egipto", + "Turkey": "Turquía", + "Saudi Arabia": "Arabia Saudita", + "Qatar": "Catar", + "Bahrain": "Baréin", + "Kuwait": "Kuwait", + "But you have a negative salary of": + "Pero tienes un salario negativo de", + "Promo Code": "Código de promoción", + "Your trip distance is": "La distancia de tu viaje es", + "Enter promo code": "Ingresar código de promoción", + "You have promo!": "¡Tienes una promoción!", + "Cost Duration": "Duración del costo", + "Duration is": "La duración es", + "Leave": "Salir", + "Join": "Unirse", + "Heading your way now. Please be ready.": + "En camino hacia ti ahora. Por favor, estate listo.", + "Approaching your area. Should be there in 3 minutes.": + "Acercándome a tu área. Debería estar allí en 3 minutos.", + "There's heavy traffic here. Can you suggest an alternate pickup point?": + "Hay mucho tráfico aquí. ¿Puedes sugerir un punto de recogida alternativo?", + "This ride is already taken by another driver.": + "Este viaje ya ha sido tomado por otro conductor.", + "You Should be select reason.": "Debes seleccionar una razón.", + " \$": " \$", + "Waiting for Driver ...": "Esperando al conductor ...", + "Latest Recent Trip": "Último viaje reciente", + "from your list": "de tu lista", + "Do you want to change Work location": + "¿Quieres cambiar la ubicación del trabajo?", + "Do you want to change Home location": + "¿Quieres cambiar la ubicación del hogar?", + "We Are Sorry That we dont have cars in your Location!": + "¡Lamentamos no tener coches en tu ubicación!", + "Choose from Map": "Elegir del mapa", + "Pick your ride location on the map - Tap to confirm": + "Elige la ubicación de tu viaje en el mapa - Toca para confirmar", + "Closest & Cheapest": "Más cercano y más barato", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "Intaleq es la aplicación de viajes compartidos que es segura, confiable y accesible.", + "With Intaleq, you can get a ride to your destination in minutes.": + "Con Intaleq, puedes llegar a tu destino en minutos.", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "Intaleq se compromete con la seguridad, y todos nuestros capitanes son cuidadosamente seleccionados y verificados.", + "Pick from map": "Elegir del mapa", + "No Car in your site. Sorry!": + "No hay coche en tu sitio. ¡Lo siento!", + "Nearest Car for you about ": + "El coche más cercano para ti en aproximadamente ", + "From :": "Desde :", + "Get Details of Trip": "Obtener detalles del viaje", + "If you want add stop click here": + "Si quieres añadir una parada, haz clic aquí", + "Where you want go ": "A dónde quieres ir ", + "My Card": "Mi tarjeta", + "Start Record": "Iniciar grabación", + "Wallet": "Billetera", + "History of Trip": "Historial de viajes", + "Helping Center": "Centro de ayuda", + "Record saved": "Grabación guardada", + "Trips recorded": "Viajes grabados", + "Select Your Country": "Selecciona tu país", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "Para asegurarte de recibir la información más precisa para tu ubicación, por favor selecciona tu país a continuación. Esto ayudará a personalizar la experiencia de la aplicación y el contenido para tu país.", + "Are you sure to delete recorded files": + "¿Estás seguro de eliminar los archivos grabados?", + "Select recorded trip": "Seleccionar viaje grabado", + "Card Number": "Número de tarjeta", + "Hi, Where to ": "Hola, a dónde ", + "Pick your destination from Map": "Elige tu destino del mapa", + "Add Stops": "Añadir paradas", + "Get Direction": "Obtener dirección", + "Add Location": "Añadir ubicación", + "Switch Rider": "Cambiar pasajero", + "You will arrive to your destination after timer end.": + "Llegarás a tu destino después de que termine el temporizador.", + "You can cancel trip": "Puedes cancelar el viaje", + "The driver waitting you in picked location .": + "El conductor te está esperando en la ubicación seleccionada .", + "10\$ and get 3% discount": "10\$ y obtén un 3% de descuento", + "20\$ and get 4% discount": "20\$ y obtén un 4% de descuento", + "40\$ and get 6% discount": "40\$ y obtén un 6% de descuento", + "100\$ and get 9% discount": "100\$ y obtén un 9% de descuento", + "Pay with Your": "Paga con tu", + "Pay with Credit Card": "Pagar con tarjeta de crédito", + "Payment History": "Historial de pagos", + "Show Promos to Charge": "Mostrar promociones para cargar", + "Point": "Punto", + "How many hours would you like to wait?": + "¿Cuántas horas te gustaría esperar?", + "Driver Wallet": "Billetera del conductor", + "Choose between those Type Cars": "Elige entre esos tipos de coches", + "hour": "hora", + "Select Waiting Hours": "Seleccionar horas de espera", + "Total Points is": "El total de puntos es", + "You will receive a code in SMS message": + "Recibirás un código en un mensaje SMS", + "Done": "Hecho", + "Total Budget from trips is ": + "El presupuesto total de los viajes es ", + "Total Amount:": "Monto total:", + "Total Budget from trips by\nCredit card is ": + "El presupuesto total de los viajes por\nTarjeta de crédito es ", + "This amount for all trip I get from Passengers": + "Este monto por todos los viajes que obtengo de los pasajeros", + "Pay from my budget": "Pagar de mi presupuesto", + "This amount for all trip I get from Passengers and Collected For me in": + "Este monto por todos los viajes que obtengo de los pasajeros y recaudado para mí en", + "You can buy points from your budget": + "Puedes comprar puntos de tu presupuesto", + "insert amount": "insertar monto", + "You can buy Points to let you online\nby this list below": + "Puedes comprar puntos para estar en línea\ncon esta lista a continuación", + "Create Wallet to receive your money": + "Crea una billetera para recibir tu dinero", + "Enter your feedback here": "Ingresa tu retroalimentación aquí", + "Please enter your feedback.": + "Por favor, ingresa tu retroalimentación.", + "Feedback": "Retroalimentación", + "Submit ": "Enviar ", + "Click here to Show it in Map": + "Haz clic aquí para mostrarlo en el mapa", + "Canceled": "Cancelado", + "Type your Email": "Escribe tu correo electrónico", + "No I want": "No, quiero", + "Email is": "El correo electrónico es", + "Phone Number is": "El número de teléfono es", + "Date of Birth is": "La fecha de nacimiento es", + "Sex is ": "El sexo es ", + "Car Details": "Detalles del coche", + "VIN is": "El número de chasis es", + "Color is ": "El color es ", + "Make is ": "La marca es ", + "Model is": "El modelo es", + "Year is": "El año es", + "Expiration Date ": "Fecha de vencimiento ", + "Edit Your data": "Edita tus datos", + "write vin for your car": "escribe el número de chasis de tu coche", + "VIN": "Número de chasis", + "write Color for your car": "escribe el color de tu coche", + "write Make for your car": "escribe la marca de tu coche", + "write Model for your car": "escribe el modelo de tu coche", + "write Year for your car": "escribe el año de tu coche", + "write Expiration Date for your car": + "escribe la fecha de vencimiento de tu coche", + "Tariffs": "Tarifas", + "Minimum fare": "Tarifa mínima", + "Maximum fare": "Tarifa máxima", + "Flag-down fee": "Tarifa base", + "Including Tax": "Incluyendo impuesto", + "BookingFee": "Tarifa de reserva", + "Morning": "Mañana", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "de 07:30 a 10:30 (jueves, viernes, sábado, lunes)", + "Evening": "Tarde", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "de 12:00 a 15:00 (jueves, viernes, sábado, lunes)", + "Night": "Noche", + "You have in account": "Tienes en la cuenta", + "Select Country": "Seleccionar país", + "Ride Today : ": "Viaje hoy : ", + "After this period\nYou can\'t cancel!": + "Después de este período\n¡No puedes cancelar!", + "from 23:59 till 05:30": "de 23:59 a 05:30", + "Rate Driver": "Calificar al conductor", + "Total Cost is ": "El costo total es ", + "Write note": "Escribir nota", + "Time to arrive": "Hora de llegada", + "Ride Summaries": "Resúmenes de viajes", + "Total Cost": "Costo total", + "Average of Hours of": "Promedio de horas de", + " is ON for this month": " está activo este mes", + "Days": "Días", + "Total Hours on month": "Horas totales en el mes", + "Counts of Hours on days": "Cantidad de horas por día", + "OrderId": "ID del pedido", + "created time": "hora de creación", + "Intaleq Over": "Exceso de velocidad", + "I will slow down": "Reduciré la velocidad", + "Map Passenger": "Mapa del pasajero", + "Be Slowly": "Ser lento", + "If you want to make Google Map App run directly when you apply order": + "Si quieres que la aplicación Google Map se ejecute directamente cuando aplicas un pedido", + "You can change the language of the app": + "Puedes cambiar el idioma de la aplicación", + "Your Budget less than needed": + "Tu presupuesto es menor que lo necesario", + "You can change the Country to get all features": + "Puedes cambiar el país para obtener todas las características", + "Change Country": "Cambiar país" + }, + "fa": { + "Order": "درخواست", + "OrderVIP": "درخواست VIP", + "Cancel Trip": "لغو سفر", + "Passenger Cancel Trip": "مسافر سفر را لغو کرد", + "VIP Order": "سفارش VIP", + "Hi ,I Arrive your site": "سلام، من به موقعیت شما رسیدم", + "The driver accepted your trip": "راننده سفر شما را پذیرفت", + "message From passenger": "پیام از مسافر", + "Cancel": "لغو", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "سفر لغو شد. هزینه سفر به کیف پول شما اضافه خواهد شد.", + "token change": "تغییر توکن", + "face detect": "تشخیص چهره", + "Face Detection Result": "نتیجه تشخیص چهره", + "similar": "مشابه", + "not similar": "غیر مشابه", + "Hi ,I will go now": "سلام، من الان حرکت می‌کنم", + "Passenger come to you": "مسافر به سمت شما می‌آید", + "Call Income": "تماس ورودی", + "Call Income from Passenger": "تماس ورودی از مسافر", + "Criminal Document Required": "گواهی عدم سوءپیشینه الزامی است", + "You should have upload it .": "شما باید آن را آپلود کنید.", + "Call End": "پایان تماس", + "The order has been accepted by another driver.": + "درخواست توسط راننده دیگری پذیرفته شد.", + "The order Accepted by another Driver": + "درخواست توسط راننده دیگری پذیرفته شد", + "We regret to inform you that another driver has accepted this order.": + "متاسفیم، راننده دیگری این درخواست را پذیرفته است.", + "Driver Applied the Ride for You": + "راننده درخواست سفر را برای شما ثبت کرد", + "Applied": "ثبت شد", + "Pay by Sham Cash": "پرداخت با Sham Cash", + "Pay with Debit Card": "پرداخت با کارت بانکی", + "Please go to Car Driver": "لطفاً به سمت خودروی راننده بروید", + "Ok I will go now.": "باشه، الان می‌روم.", + "Accepted Ride": "سفر پذیرفته شد", + "Driver Accepted the Ride for You": "راننده سفر را برای شما پذیرفت", + "Promo": "کد تخفیف", + "Show latest promo": "نمایش آخرین تخفیف‌ها", + "Trip Monitoring": "نظارت بر سفر", + "Driver Is Going To Passenger": "راننده در حال حرکت به سمت مسافر است", + "Please stay on the picked point.": + "لطفاً در نقطه انتخاب شده بمانید.", + "message From Driver": "پیام از راننده", + "Trip is Begin": "سفر آغاز شد", + "Cancel Trip from driver": "لغو سفر توسط راننده", + "We will look for a new driver.\nPlease wait.": + "ما به دنبال راننده جدید می‌گردیم.\nلطفاً صبر کنید.", + "The driver canceled your ride.": "راننده سفر شما را لغو کرد.", + "Driver Finish Trip": "راننده سفر را پایان داد", + "you will pay to Driver": "شما به راننده پرداخت خواهید کرد", + "Don’t forget your personal belongings.": + "وسایل شخصی خود را فراموش نکنید.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "لطفاً قبل از خروج مطمئن شوید که تمام وسایل شخصی خود را برداشته‌اید و باقی‌مانده کرایه (در صورت وجود) به کیف پول شما اضافه شده است. از انتخاب Intaleq سپاسگزاریم.", + "Finish Monitor": "پایان نظارت", + "Trip finished": "سفر پایان یافت", + "Call Income from Driver": "تماس ورودی از راننده", + "Driver Cancelled Your Trip": "راننده سفر شما را لغو کرد", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "هزینه زمان راننده را پرداخت خواهید کرد، کیف پول Intaleq خود را چک کنید", + "Order Applied": "سفارش اعمال شد", + "welcome to intaleq": "به Intaleq خوش آمدید", + "login or register subtitle": + "برای ورود یا ثبت نام شماره موبایل خود را وارد کنید", + "An application error occurred.": "خطای برنامه رخ داد.", + "Submission Failed": "ارسال ناموفق", + "Your complaint has been submitted.": "شکایت شما ثبت شد.", + "Failed to connect to the server. Please try again.": + "اتصال به سرور برقرار نشد. لطفاً دوباره تلاش کنید.", + "Ride information not found. Please refresh the page.": + "اطلاعات سفر یافت نشد. لطفاً صفحه را رفرش کنید.", + "Please describe your issue before submitting.": + "لطفاً قبل از ارسال، مشکل خود را توضیح دهید.", + "An application error occurred during upload.": + "هنگام آپلود خطایی رخ داد.", + "Failed to upload audio file.": "آپلود فایل صوتی ناموفق بود.", + "Audio uploaded successfully.": "فایل صوتی با موفقیت آپلود شد.", + "Complaint cannot be filed for this ride. It may not have been completed or started.": + "برای این سفر نمی‌توان شکایت ثبت کرد. ممکن است تکمیل یا شروع نشده باشد.", + "2. Attach Recorded Audio (Optional)": + "۲. ضمیمه کردن صدای ضبط شده (اختیاری)", + "Please enter a description of the issue.": + "لطفاً توضیحی در مورد مشکل وارد کنید.", + "phone number label": "شماره تلفن", + "phone number required": "شماره تلفن الزامی است", + "send otp button": "ارسال کد تأیید", + "verify your number title": "تأیید شماره", + "otp sent subtitle": "یک کد ۵ رقمی به شماره\n@phoneNumber ارسال شد", + "verify and continue button": "تأیید و ادامه", + "enter otp validation": "لطفاً کد تأیید ۵ رقمی را وارد کنید", + "one last step title": "یک قدم دیگر", + "complete profile subtitle": "برای شروع پروفایل خود را تکمیل کنید", + "first name label": "نام", + "first name required": "نام الزامی است", + "last name label": "نام خانوادگی", + "Verify OTP": "تأیید کد", + "Verification Code": "کد تأیید", + "We have sent a verification code to your mobile number:": + "ما یک کد تأیید به شماره موبایل شما ارسال کردیم:", + "Verify": "تأیید", + "Resend Code": "ارسال مجدد کد", + "You can resend in": "ارسال مجدد در", + "seconds": "ثانیه", + "Error": "خطا", + "Please enter the complete 6-digit code.": + "لطفاً کد کامل ۶ رقمی را وارد کنید.", + "last name required": "نام خانوادگی الزامی است", + "email optional label": "ایمیل (اختیاری)", + "complete registration button": "تکمیل ثبت نام", + "User with this phone number or email already exists.": + "کاربری با این شماره تلفن یا ایمیل قبلاً ثبت نام کرده است.", + "otp sent success": "کد تأیید به واتس‌اپ ارسال شد.", + "failed to send otp": "ارسال کد تأیید ناموفق بود.", + "server error try again": "خطای سرور، لطفاً دوباره تلاش کنید.", + "an error occurred": "خطایی رخ داد: @error", + "otp verification failed": "تأیید کد ناموفق بود.", + "registration failed": "ثبت نام ناموفق بود.", + "welcome user": "خوش آمدید، @firstName!", + "Cancel Trip from driver": "لغو سفر توسط راننده", + "We will look for a new driver.\nPlease wait.": + "ما به دنبال راننده جدید می‌گردیم.\nلطفاً صبر کنید.", + "The driver canceled your ride.": "راننده سفر شما را لغو کرد.", + "Driver Finish Trip": "راننده سفر را تمام کرد", + "you will pay to Driver": "شما به راننده پرداخت می‌کنید", + "Don't forget your personal belongings.": + "وسایل شخصی خود را فراموش نکنید.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "لطفاً مطمئن شوید که تمام وسایل شخصی خود را برداشته‌اید و باقی‌مانده کرایه به کیف پول شما اضافه شده است. از انتخاب اپلیکیشن Intaleq متشکریم.", + "Finish Monitor": "پایان نظارت", + "Trip finished": "سفر پایان یافت", + "Call Income from Driver": "تماس از راننده", + "Driver Cancelled Your Trip": "راننده سفر شما را لغو کرد", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "هزینه زمان راننده را پرداخت خواهید کرد، کیف پول Intaleq را ببینید", + "Order Applied": "درخواست ثبت شد", + "Share App": "اشتراک‌گذاری برنامه", + "Wallet": "کیف پول", + "Balance": "موجودی", + "Don’t forget your personal belongings.": + "وسایل شخصی خود را جا نگذارید.", + "Profile": "پروفایل", + "Contact Support": "تماس با پشتیبانی", + "Session expired. Please log in again.": + "نشست منقضی شد. لطفاً دوباره وارد شوید.", + "Security Warning": "⚠️ هشدار امنیتی", + "Potential security risks detected. The application may not function correctly.": + "خطرات امنیتی احتمالی شناسایی شد. ممکن است برنامه به درستی کار نکند.", + "please order now": "اکنون سفارش دهید", + "Where to": "کجا می‌روید؟", + "Where are you going?": "به کجا می‌روید؟", + "Quick Actions": "دسترسی سریع", + "My Balance": "موجودی من", + "Order History": "تاریخچه سفارش‌ها", + "Contact Us": "تماس با ما", + "Driver": "راننده", + "Complaint": "شکایت", + "Promos": "تخفیف‌ها", + "Recent Places": "مکان‌های اخیر", + "From": "از", + "WhatsApp Location Extractor": "استخراج موقعیت واتس‌اپ", + "Location Link": "لینک موقعیت", + "Paste location link here": "لینک موقعیت را اینجا پیست کنید", + "Go to this location": "برو به این موقعیت", + "Paste WhatsApp location link": "لینک موقعیت واتس‌اپ را پیست کنید", + "Select Order Type": "انتخاب نوع درخواست", + "Choose who this order is for": "این درخواست برای چه کسی است", + "I want to order for myself": "برای خودم درخواست می‌دهم", + "I want to order for someone else": "برای شخص دیگری درخواست می‌دهم", + "Order for someone else": "درخواست برای دیگری", + "Order for myself": "درخواست برای خودم", + "Are you want to go this site": "آیا می‌خواهید به این مکان بروید", + "No": "خیر", + "Pay by Sham Cash": "پرداخت با Sham Cash", + "Intaleq Wallet": "کیف پول Intaleq", + "Have a promo code?": "کد تخفیف دارید؟", + "Your Wallet balance is ": "موجودی کیف پول شما: ", + "Cash": "نقدی", + "Phone Number": "شماره تلفن", + "Search country": "جستجوی کشور", + "Payment Successful!": "پرداخت موفق!", + "Your payment was successful.": "پرداخت شما با موفقیت انجام شد.", + "Pay directly to the captain": "پرداخت مستقیم به سفیر (راننده)", + "Top up Wallet to continue": "برای ادامه کیف پول را شارژ کنید", + "Or pay with Cash instead": "یا به صورت نقدی پرداخت کنید", + "Confirm & Find a Ride": "تأیید و یافتن خودرو", + "Balance:": "موجودی:", + "Alerts": "هشدارها", + "Welcome Back!": "خوش آمدید!", + "Current Balance": "موجودی فعلی", + "Set Wallet Phone Number": "تنظیم شماره تلفن کیف پول", + "Link a phone number for transfers": "اتصال شماره تلفن برای انتقال", + "Payment History": "تاریخچه پرداخت", + "View your past transactions": "مشاهده تراکنش‌های قبلی", + "Top up Wallet": "شارژ کیف پول", + "Add funds using our secure methods": "افزایش اعتبار با روش‌های امن", + "Driver is waiting": "راننده منتظر است", + "Type your message...": "پیام خود را بنویسید...", + "Driver Accepted Request": "راننده درخواست را پذیرفت", + "Message": "پیام", + "Call": "تماس", + "Set Phone Number": "تنظیم شماره تلفن", + "Select This Ride": "انتخاب این سفر", + "Call Driver": "تماس با راننده", + "Increase Fare": "افزایش کرایه", + "Stop": "توقف", + "Record": "ضبط", + "Share": "اشتراک‌گذاری", + "WhatsApp": "واتس‌اپ", + "SOS": "SOS", + "No drivers accepted your request yet": + "هنوز هیچ راننده‌ای درخواست شما را نپذیرفته است", + "Increasing the fare might attract more drivers. Would you like to increase the price?": + "افزایش کرایه ممکن است رانندگان بیشتری را جذب کند. آیا مایل به افزایش قیمت هستید؟", + "Please make sure not to leave any personal belongings in the car.": + "لطفاً مطمئن شوید هیچ وسیله شخصی در خودرو جا نماند.", + "Cancel Ride": "لغو سفر", + "Route Not Found": "مسیر یافت نشد", + "We couldn't find a valid route to this destination. Please try selecting a different point.": + "مسیر معتبری به این مقصد پیدا نکردیم. لطفاً نقطه دیگری را انتخاب کنید.", + "alert": "هشدار", + "You can call or record audio during this trip.": + "شما می‌توانید در طول این سفر تماس بگیرید یا صدا ضبط کنید.", + "Warning: Speeding detected!": "هشدار: سرعت غیرمجاز تشخیص داده شد!", + "Fixed Price": "قیمت مقطوع", + "Report": "گزارش", + "Comfort": "آسایش (Comfort)", + "Intaleq Balance": "اعتبار Intaleq", + "Search for a starting point": "جستجو برای نقطه مبدأ", + "Top up Balance to continue": "برای ادامه موجودی را افزایش دهید", + "Electric": "الکتریکی", + "Lady": "بانوان", + "Van": "ون", + "Rayeh Gai": "رفت و برگشت", + "Join Intaleq as a driver using my referral code!": + "با کد معرف من به عنوان راننده به Intaleq بپیوندید!", + "Use code:": "استفاده از کد:", + "Download the Intaleq Driver app now and earn rewards!": + "اپلیکیشن رانندگان Intaleq را دانلود کنید و پاداش بگیرید!", + "Get a discount on your first Intaleq ride!": + "برای اولین سفر خود در Intaleq تخفیف بگیرید!", + "Use my referral code:": "از کد معرف من استفاده کنید:", + "Download the Intaleq app now and enjoy your ride!": + "اپلیکیشن Intaleq را دانلود کنید و از سفر خود لذت ببرید!", + "Contacts Loaded": "مخاطبین بارگذاری شدند", + "Showing": "نمایش", + "of": "از", + "Pay by MTN Wallet": "پرداخت با کیف پول MTN", + "Pay by Syriatel Wallet": "پرداخت با کیف پول Syriatel", + "Customer not found": "مشتری یافت نشد", + "Wallet is blocked": "کیف پول مسدود شده است", + "Customer phone is not active": "تلفن مشتری فعال نیست", + "Balance not enough": "موجودی کافی نیست", + "Balance limit exceeded": "موجودی بیش از حد مجاز است", + "Incorrect sms code": + "⚠️ کد پیامک اشتباه است. لطفاً دوباره تلاش کنید.", + "contacts. Others were hidden because they don't have a phone number.": + "مخاطب. بقیه پنهان شدند چون شماره تلفن ندارند.", + "No contacts found": "مخاطبی یافت نشد", + "No contacts with phone numbers were found on your device.": + "هیچ مخاطبی با شماره تلفن در دستگاه شما یافت نشد.", + "Permission denied": "دسترسی رد شد", + "Contact permission is required to pick contacts": + "برای انتخاب مخاطبین دسترسی به دفترچه تلفن الزامی است.", + "An error occurred while picking contacts:": + "هنگام انتخاب مخاطبین خطایی رخ داد:", + "Please enter a correct phone": "لطفاً یک شماره تلفن صحیح وارد کنید", + "Success": "موفقیت", + "Invite sent successfully": "دعوت‌نامه با موفقیت ارسال شد", + "Hello! I'm inviting you to try Intaleq.": + "سلام! شما را به امتحان کردن Intaleq دعوت می‌کنم.", + "Use my invitation code to get a special gift on your first ride!": + "از کد دعوت من استفاده کنید تا در اولین سفر هدیه ویژه بگیرید!", + "Your personal invitation code is:": "کد دعوت شخصی شما:", + "Be sure to use it quickly! This code expires at": + "سریع استفاده کنید! این کد منقضی می‌شود در", + "Download the app now:": "اپلیکیشن را دانلود کنید:", + "See you on the road!": "به امید دیدار در جاده!", + "This phone number has already been invited.": + "این شماره قبلاً دعوت شده است.", + "An unexpected error occurred. Please try again.": + "خطای غیرمنتظره‌ای رخ داد. لطفاً دوباره تلاش کنید.", + "You deserve the gift": "شما شایسته این هدیه هستید", + "Claim your 20 LE gift for inviting": + "هدیه ۲۰ تومانی خود را برای دعوت دریافت کنید", + "You have got a gift for invitation": + "شما یک هدیه برای دعوت دریافت کردید", + "You have earned 20": "شما ۲۰ امتیاز کسب کردید", + "LE": "تومان", + "Vibration feedback for all buttons": + "بازخورد لرزشی برای همه دکمه‌ها", + "Share with friends and earn rewards": + "با دوستان به اشتراک بگذارید و پاداش بگیرید", + "Gift Already Claimed": "هدیه قبلاً دریافت شده است", + "You have already received your gift for inviting": + "شما قبلاً هدیه خود را برای این دعوت دریافت کرده‌اید", + "Keep it up!": "ادامه بده!", + "has completed": "تکمیل کرد", + "trips": "سفرها", + "Personal Information": "اطلاعات شخصی", + "Name": "نام", + "Not set": "تنظیم نشده", + "Gender": "جنسیت", + "Education": "تحصیلات", + "Work & Contact": "کار و تماس", + "Employment Type": "نوع شغل", + "Marital Status": "وضعیت تاهل", + "SOS Phone": "تلفن اضطراری", + "Sign Out": "خروج از حساب", + "Delete My Account": "حذف حساب من", + "Update Gender": "بروزرسانی جنسیت", + "Update": "بروزرسانی", + "Update Education": "بروزرسانی تحصیلات", + "Are you sure? This action cannot be undone.": + "آیا مطمئن هستید؟ این عملیات قابل بازگشت نیست.", + "Confirm your Email": "ایمیل خود را تأیید کنید", + "Type your Email": "ایمیل خود را وارد کنید", + "Delete Permanently": "حذف دائمی", + "Male": "مرد", + "Female": "زن", + "Other": "سایر", + "High School Diploma": "دیپلم", + "Associate Degree": "کاردانی", + "Bachelor's Degree": "کارشناسی", + "Master's Degree": "کارشناسی ارشد", + "Doctoral Degree": "دکترا", + "Select your preferred language for the app interface.": + "زبان مورد نظر خود را برای برنامه انتخاب کنید.", + "Language Options": "گزینه‌های زبان", + "You can claim your gift once they complete 2 trips.": + "پس از انجام ۲ سفر توسط آنها، می‌توانید هدیه خود را دریافت کنید.", + "Closest & Cheapest": "نزدیک‌ترین و ارزان‌ترین", + "Comfort choice": "انتخاب راحت", + "Travel in a modern, silent electric car. A premium, eco-friendly choice for a smooth ride.": + "با خودروی الکتریکی مدرن و بی‌صدا سفر کنید. انتخابی ممتاز و دوستدار محیط زیست.", + "Spacious van service ideal for families and groups. Comfortable, safe, and cost-effective travel together.": + "سرویس ون جادار، ایده‌آل برای خانواده‌ها و گروه‌ها. سفر راحت، امن و مقرون‌به‌صرفه.", + "Quiet & Eco-Friendly": "بی‌صدا و دوستدار محیط زیست", + "Lady Captain for girls": "راننده خانم برای بانوان", + "Van for familly": "ون برای خانواده", + "Are you sure to delete this location?": + "آیا از حذف این مکان مطمئن هستید؟", + "Change Work location?": "تغییر محل کار؟", + "Change Home location?": "تغییر محل خانه؟", + "Submit a Complaint": "ثبت شکایت", + "Submit Complaint": "ارسال شکایت", + "No trip history found": "تاریخچه سفری یافت نشد", + "Your past trips will appear here.": + "سفرهای قبلی شما در اینجا نمایش داده می‌شود.", + "1. Describe Your Issue": "۱. مشکل خود را شرح دهید", + "Enter your complaint here...": "شکایت خود را اینجا بنویسید...", + "2. Attach Recorded Audio": "۲. ضمیمه کردن فایل صوتی", + "No audio files found.": "فایل صوتی یافت نشد.", + "Confirm Attachment": "تأیید پیوست", + "Attach this audio file?": "آیا این فایل صوتی پیوست شود؟", + "Uploaded": "آپلود شد", + "3. Review Details & Response": "۳. بررسی جزئیات و پاسخ", + "Date": "تاریخ", + "Today's Promos": "تخفیف‌های امروز", + "No promos available right now.": "در حال حاضر تخفیفی موجود نیست.", + "Check back later for new offers!": + "بعداً برای پیشنهادات جدید سر بزنید!", + "Valid Until:": "معتبر تا:", + "CODE": "کد", + "Login": "ورود", + "Sign in for a seamless experience": "برای تجربه بهتر وارد شوید", + "Sign In with Google": "ورود با گوگل", + "Sign in with Apple": "ورود با اپل", + "User not found": "کاربر یافت نشد", + "Need assistance? Contact us": "نیاز به کمک دارید؟ تماس بگیرید", + "Email": "ایمیل", + "Your email address": "آدرس ایمیل شما", + "Enter a valid email": "یک ایمیل معتبر وارد کنید", + "Password": "رمز عبور", + "Your password": "رمز عبور شما", + "Enter your password": "رمز عبور را وارد کنید", + "Submit": "ارسال", + "Terms of Use & Privacy Notice": "شرایط استفاده و حریم خصوصی", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the ": + "با انتخاب \"موافقم\" در زیر، تأیید می‌کنم که خوانده‌ام و موافقم با ", + "Terms of Use": "شرایط استفاده", + " and acknowledge the ": " و تأیید می‌کنم ", + "Privacy Notice": "سیاست حریم خصوصی", + " . I am at least 18 years old.": " . من حداقل ۱۸ سال دارم.", + "I Agree": "موافقم", + "Continue": "ادامه", + "Enable Location": "فعال‌سازی موقعیت", + "To give you the best experience, we need to know where you are. Your location is used to find nearby captains and for pickups.": + "برای ارائه بهترین خدمات، باید بدانیم کجا هستید. موقعیت شما برای یافتن رانندگان نزدیک استفاده می‌شود.", + "Allow Location Access": "اجازه دسترسی به موقعیت", + "Welcome to Intaleq!": "به Intaleq خوش آمدید!", + "Before we start, please review our terms.": + "قبل از شروع، لطفاً شرایط ما را مرور کنید.", + "Your journey starts here": "سفر شما از اینجا شروع می‌شود", + "Cancel Search": "لغو جستجو", + "Set pickup location": "تنظیم محل سوار شدن", + "Move the map to adjust the pin": "نقشه را برای تنظیم پین جابجا کنید", + "Searching for the nearest captain...": + "در حال جستجوی نزدیک‌ترین سفیر...", + "No one accepted? Try increasing the fare.": + "کسی قبول نکرد؟ افزایش کرایه را امتحان کنید.", + "Increase Your Trip Fee (Optional)": "افزایش هزینه سفر (اختیاری)", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "هنوز راننده‌ای پیدا نکرده‌ایم. برای جذاب‌تر کردن پیشنهاد، کرایه را افزایش دهید.", + "No, thanks": "نه، ممنون", + "Increase Fee": "افزایش کرایه", + "Copy": "کپی", + "Promo Copied!": "کد تخفیف کپی شد!", + "Code": "کد", + "copied to clipboard": "در کلیپ‌بورد کپی شد", + "Price": "قیمت", + "Intaleq's Response": "پاسخ Intaleq", + "Awaiting response...": "در انتظار پاسخ...", + "Audio file not attached": "فایل صوتی پیوست نشد", + "The audio file is not uploaded yet.\\nDo you want to submit without it?": + "فایل صوتی هنوز آپلود نشده است.\\nآیا می‌خواهید بدون آن ارسال کنید؟", + "deleted": "حذف شد", + "To Work": "به محل کار", + "Work Saved": "محل کار ذخیره شد", + "To Home": "به خانه", + "Home Saved": "خانه ذخیره شد", + "Destination selected": "مقصد انتخاب شد", + "Now select start pick": "حالا نقطه مبدأ را انتخاب کنید", + "OK": "تأیید", + "Confirm Pick-up Location": "تأیید محل سوار شدن", + "Set Location on Map": "تنظیم موقعیت روی نقشه", + "Leave a detailed comment (Optional)": "نظر دقیق بنویسید (اختیاری)", + "Share your experience to help us improve...": + "تجربه خود را برای بهبود ما به اشتراک بگذارید...", + "Your valuable feedback helps us improve our service quality.": + "بازخورد ارزشمند شما به بهبود کیفیت خدمات ما کمک می‌کند.", + "witout zero": "بدون صفر", + "Top up Balance": "افزایش موجودی", + "An error occurred": "خطایی رخ داد", + "Send WhatsApp Message": "ارسال پیام واتس‌اپ", + "How was your trip with": "سفر شما با ... چطور بود", + "Drawing route on map...": "رسم مسیر روی نقشه...", + "Please wait while we prepare your trip.": + "لطفاً صبر کنید تا سفر شما را آماده کنیم.", + "Submit Rating": "ثبت امتیاز", + "Call Support": "تماس با پشتیبانی", + "You can contact us during working hours from 10:00 - 16:00.": + "می‌توانید در ساعات کاری ۱۰:۰۰ تا ۱۶:۰۰ با ما تماس بگیرید.", + "Intaleq is the safest and most reliable ride-sharing app designed especially for passengers in Syria. We provide a comfortable, respectful, and affordable riding experience with features that prioritize your safety and convenience. Our trusted captains are verified, insured, and supported by regular car maintenance carried out by top engineers. We also offer on-road support services to make sure every trip is smooth and worry-free. With Intaleq, you enjoy quality, safety, and peace of mind—every time you ride.": + "Intaleq امن‌ترین و مطمئن‌ترین اپلیکیشن درخواست خودرو است که برای ایران طراحی شده است. ما تجربه‌ای راحت، محترمانه و مقرون‌به‌صرفه را با ویژگی‌هایی که ایمنی شما را در اولویت قرار می‌دهند، فراهم می‌کنیم. رانندگان ما تأیید شده و بیمه هستند.", + "Work time is from 10:00 AM to 16:00 PM.\nYou can send a WhatsApp message or email.": + "ساعات کاری از ۱۰ صبح تا ۴ عصر است.\nمی‌توانید پیام واتس‌اپ یا ایمیل بفرستید.", + "Sorry": "متأسفیم", + "Customer MSISDN doesn’t have customer wallet": + "شماره مشتری کیف پول ندارد", + "Please enter the number without the leading 0": + "لطفاً شماره را بدون صفر اول وارد کنید", + "Please enter your phone number": "لطفاً شماره تلفن خود را وارد کنید", + "Phone number seems too short": "شماره تلفن خیلی کوتاه به نظر می‌رسد", + "No cars are available at the moment. Please try again later.": + "در حال حاضر خودرویی موجود نیست. لطفاً بعداً تلاش کنید.", + "Nearest Car: ~": "نزدیک‌ترین خودرو: ~", + "Nearest Car": "نزدیک‌ترین خودرو", + "No cars nearby": "خودرویی در نزدیکی نیست", + "Favorite Places": "مکان‌های مورد علاقه", + "No favorite places yet!": "هنوز مکان مورد علاقه‌ای ندارید!", + "from your favorites": "از علاقه‌مندی‌های شما", + "Back": "بازگشت", + "Enter your code below to apply the discount.": + "کد خود را برای اعمال تخفیف وارد کنید.", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the": + "با انتخاب \"موافقم\"، تأیید می‌کنم که خوانده‌ام و قبول دارم", + "and acknowledge the": "و تأیید می‌کنم", + "Enable Location Access": "فعال‌سازی دسترسی موقعیت", + "We need your location to find nearby drivers for pickups and drop-offs.": + "ما برای یافتن رانندگان نزدیک به موقعیت شما نیاز داریم.", + "You should restart app to change language": + "برای تغییر زبان باید برنامه را مجدداً راه اندازی کنید", + "Home Page": "صفحه اصلی", + "To change Language the App": "برای تغییر زبان برنامه", + "Learn more about our app and mission": + "درباره برنامه و مأموریت ما بیشتر بدانید", + "Promos For Today": "تخفیف‌های امروز", + "Choose your ride": "سفر خود را انتخاب کنید", + "Your Journey Begins Here": "سفر شما از اینجا آغاز می‌شود", + "Bonus gift": "هدیه تشویقی", + "Pay": "پرداخت", + "Get": "دریافت", + "Send to Driver Again": "ارسال مجدد به راننده", + "Driver Name:": "نام راننده:", + "No trip data available": "اطلاعات سفر موجود نیست", + "Car Plate:": "پلاک خودرو:", + "remaining": "باقی‌مانده", + "Order Cancelled": "سفارش لغو شد", + "You canceled VIP trip": "شما سفر VIP را لغو کردید", + "Passenger cancelled order": "مسافر سفارش را لغو کرد", + "Your trip is scheduled": "سفر شما زمان‌بندی شد", + "Don't forget your ride!": "سفر خود را فراموش نکنید!", + "Trip updated successfully": "سفر با موفقیت بروزرسانی شد", + "Car Make:": "سازنده خودرو:", + "Car Model:": "مدل خودرو:", + "Car Color:": "رنگ خودرو:", + "Driver Phone:": "تلفن راننده:", + "Pre-booking": "رزرو پیش‌ازوقت", + "Waiting VIP": "در انتظار VIP", + "Driver List": "لیست رانندگان", + "Confirm Trip": "تأیید سفر", + "Select date and time of trip": "تاریخ و زمان سفر را انتخاب کنید", + "Date and Time Picker": "انتخاب تاریخ و زمان", + "Trip Status:": "وضعیت سفر:", + "pending": "در انتظار", + "accepted": "پذیرفته شده", + "rejected": "رد شده", + "Apply": "اعمال", + "Enter your promo code": "کد تخفیف را وارد کنید", + "Apply Promo Code": "اعمال کد تخفیف", + "Scheduled Time:": "زمان برنامه‌ریزی شده:", + "No drivers available": "راننده‌ای موجود نیست", + "No drivers available at the moment. Please try again later.": + "در حال حاضر راننده‌ای موجود نیست. لطفاً بعداً تلاش کنید.", + "you have a negative balance of": "شما بدهی دارید به مبلغ", + "Please try again in a few moments": "لطفاً چند لحظه دیگر تلاش کنید", + "Unknown Driver": "راننده ناشناس", + "in your": "در شما", + "The driver accepted your order for": + "راننده سفارش شما را پذیرفت به مبلغ", + "wallet due to a previous trip.": "بدهی کیف پول بابت سفر قبلی.", + "rides": "سفرها", + "Add Work": "افزودن محل کار", + "The reason is": "دلیل این است", + "User does not have a wallet #1652": "کاربر کیف پول ندارد #1652", + "Price of trip": "قیمت سفر", + "From:": "از:", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "برای سفرهای عادی و پیک، قیمت پویا محاسبه می‌شود. برای سفرهای راحت، قیمت بر اساس زمان و مسافت است.", + "Phone Wallet Saved Successfully": "شماره کیف پول با موفقیت ذخیره شد", + "Add wallet phone you use": "شماره موبایل کیف پول خود را وارد کنید", + "Update Available": "بروزرسانی موجود است", + "Phone number must be exactly 11 digits long": + "شماره تلفن باید دقیقاً ۱۱ رقم باشد", + "Insert Wallet phone number": "شماره موبایل کیف پول را وارد کنید", + "Phone number isn't an Egyptian phone number": + "شماره تلفن معتبر نیست", + "A new version of the app is available. Please update to the latest version.": + "نسخه جدید برنامه موجود است. لطفاً بروزرسانی کنید.", + "We use location to get accurate and nearest passengers for you": + "ما از موقعیت مکانی برای یافتن دقیق‌ترین و نزدیک‌ترین مسافران استفاده می‌کنیم", + "This ride is already applied by another driver.": + "این سفر قبلاً توسط راننده دیگری گرفته شده است.", + "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": + "ما از موقعیت دقیق شما برای یافتن نزدیک‌ترین راننده و ارائه اطلاعات دقیق مبدأ و مقصد استفاده می‌کنیم. می‌توانید این را در تنظیمات مدیریت کنید.", + "Where are you, sir?": "کجایید قربان؟", + "I've been trying to reach you but your phone is off.": + "سعی کردم تماس بگیرم اما گوشی شما خاموش است.", + "Please don't be late": "لطفاً دیر نکنید", + "Please don't be late, I'm waiting for you at the specified location.": + "لطفاً دیر نکنید، من در موقعیت مشخص شده منتظر شما هستم.", + "My location is correct. You can search for me using the navigation app": + "موقعیت من صحیح است. می‌توانید با مسیریاب مرا پیدا کنید", + "Hello, I'm at the agreed-upon location": + "سلام، من در محل توافق شده هستم", + "How much longer will you be?": "چقدر دیگر طول می‌کشد؟", + "Phone number is verified before": "شماره تلفن قبلاً تأیید شده است", + "Change Ride": "تغییر سفر", + "You can change the destination by long-pressing any point on the map": + "می‌توانید با لمس طولانی روی نقشه مقصد را تغییر دهید", + "Pick from map destination": "انتخاب مقصد از روی نقشه", + "Pick or Tap to confirm": "انتخاب یا ضربه برای تأیید", + "Accepted your order": "سفارش شما را پذیرفت", + "Order Accepted": "سفارش پذیرفته شد", + "with type": "با نوع", + "accepted your order at price": "سفارش شما را با قیمت ... پذیرفت", + "you canceled order": "شما سفارش را لغو کردید", + "If you want order to another person": + "اگر می‌خواهید برای شخص دیگری سفارش دهید", + "upgrade price": "افزایش قیمت", + "airport": "فرودگاه", + "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": + "بهترین انتخاب برای خودروی راحت با مسیر منعطف و توقف.", + "You can upgrade price to may driver accept your order": + "می‌توانید قیمت را افزایش دهید تا راننده قبول کند", + "Change Route": "تغییر مسیر", + "No Captain Accepted Your Order": "هیچ سفیری سفارش شما را نپذیرفت", + "We are looking for a captain but the price may increase to let a captain accept": + "ما به دنبال سفیر هستیم اما ممکن است قیمت افزایش یابد", + "No, I want to cancel this trip": "نه، می‌خواهم سفر را لغو کنم", + "Attention": "توجه", + "Trip Cancelled. The cost of the trip will be deducted from your wallet.": + "سفر لغو شد. هزینه سفر از کیف پول شما کسر خواهد شد.", + "You will be charged for the cost of the driver coming to your location.": + "هزینه آمدن راننده به محل شما محاسبه خواهد شد.", + "reject your order.": "سفارش شما را رد کرد.", + "Order Under Review": "سفارش در حال بررسی", + "is reviewing your order. They may need more information or a higher price.": + "سفارش شما را بررسی می‌کند. ممکن است اطلاعات بیشتر یا قیمت بالاتری بخواهد.", + "Vibration": "لرزش", + "Resend code": "ارسال مجدد کد", + "change device": "تغییر دستگاه", + "Device Change Detected": "تغییر دستگاه شناسایی شد", + "You can only use one device at a time. This device will now be set as your active device.": + "شما فقط می‌توانید از یک دستگاه در آن واحد استفاده کنید. این دستگاه اکنون فعال شد.", + "Click here point": "اینجا کلیک کنید", + "Are you want to change": "آیا می‌خواهید تغییر دهید", + "by": "توسط", + "Enter your complaint here": "شکایت خود را اینجا وارد کنید", + "Please enter your complaint.": "لطفاً شکایت خود را وارد کنید.", + "Complaint data saved successfully": + "اطلاعات شکایت با موفقیت ذخیره شد", + "Trip Monitor": "نظارت سفر", + "Insert SOS Phone": "درج تلفن اضطراری", + "Add SOS Phone": "افزودن تلفن اضطراری", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "عزیز،\n\n🚀 من همین الان یک سفر هیجان‌انگیز را شروع کردم و می‌خواهم جزئیات سفر و موقعیتم را با تو به اشتراک بگذارم! لطفاً اپلیکیشن Intaleq را دانلود کن.\n\n👉 لینک دانلود:\nاندروید [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nمنتظرم که در طول مسیر همراهم باشی!\n\nIntaleq ,", + "Send Intaleq app to him": "ارسال برنامه Intaleq برای او", + "No passenger found for the given phone number": + "مسافری با این شماره تلفن یافت نشد", + "No user found for the given phone number": + "کاربری با این شماره تلفن یافت نشد", + "This price is": "این قیمت است", + "Work": "محل کار", + "Add Home": "افزودن خانه", + "Notifications": "اعلان‌ها", + "💳 Pay with Credit Card": "💳 پرداخت با کارت اعتباری", + "⚠️ You need to choose an amount!": "⚠️ باید مبلغی را انتخاب کنید!", + "💰 Pay with Wallet": "💰 پرداخت با کیف پول", + "You must restart the app to change the language.": + "برای تغییر زبان باید برنامه را دوباره راه‌اندازی کنید.", + "joined": "پیوست", + "Driver joined the channel": "راننده به کانال پیوست", + "Driver left the channel": "راننده کانال را ترک کرد", + "Call Page": "صفحه تماس", + "Call Left": "تماس‌های باقی‌مانده", + " Next as Cash !": " بعدی به صورت نقدی!", + "To use Wallet charge it": "برای استفاده از کیف پول آن را شارژ کنید", + "We are searching for the nearest driver to you": + "در حال جستجو برای نزدیک‌ترین راننده به شما", + "Best choice for cities": "بهترین انتخاب برای شهرها", + "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": + "رفت و برگشت: سرویس سفر دوطرفه برای راحتی سفر بین شهری.", + "This trip is for women only": "این سفر فقط برای بانوان است", + "Total budgets on month": "مجموع بودجه در ماه", + "You have call from driver": "شما تماس از راننده دارید", + "Intaleq": "Intaleq", + "passenger agreement": "توافق‌نامه مسافر", + "To become a passenger, you must review and agree to the ": + "برای مسافر شدن، باید بررسی کنید و موافقت کنید با ", + "agreement subtitle": + "برای ادامه، باید شرایط استفاده و سیاست حریم خصوصی را بپذیرید.", + "terms of use": "شرایط استفاده", + " and acknowledge our Privacy Policy.": + " و سیاست حریم خصوصی ما را تأیید کنید.", + "and acknowledge our": "و تأیید کنید", + "privacy policy": "سیاست حریم خصوصی.", + "i agree": "موافقم", + "Driver already has 2 trips within the specified period.": + "راننده در حال حاضر ۲ سفر در بازه زمانی مشخص دارد.", + "The invitation was sent successfully": + "دعوت‌نامه با موفقیت ارسال شد", + "You should select your country": "باید کشور خود را انتخاب کنید", + "Scooter": "اسکوتر", + "A trip with a prior reservation, allowing you to choose the best captains and cars.": + "سفری با رزرو قبلی، که به شما امکان انتخاب بهترین سفیران و خودروها را می‌دهد.", + "Mishwar Vip": "مشوار VIP", + "The driver waiting you in picked location .": + "راننده در محل انتخاب شده منتظر شماست.", + "About Us": "درباره ما", + "You can change the vibration feedback for all buttons": + "می‌توانید بازخورد لرزشی دکمه‌ها را تغییر دهید", + "Most Secure Methods": "امن‌ترین روش‌ها", + "In-App VOIP Calls": "تماس اینترنتی درون‌برنامه‌ای", + "Recorded Trips for Safety": "سفرهای ضبط شده برای امنیت", + "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": + "\nما همچنین اولویت را بر مقرون‌به‌صرفه بودن می‌گذاریم.", + "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": + "Intaleq یک برنامه درخواست خودرو است که با در نظر گرفتن امنیت و بودجه شما طراحی شده است.", + "Sign In by Apple": "ورود با اپل", + "Sign In by Google": "ورود با گوگل", + "How do I request a ride?": "چگونه درخواست سفر دهم؟", + "Step-by-step instructions on how to request a ride through the Intaleq app.": + "دستورالعمل‌های گام‌به‌گام برای درخواست سفر.", + "What types of vehicles are available?": + "چه نوع خودروهایی موجود است؟", + "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": + "Intaleq گزینه‌های مختلفی از جمله اقتصادی، راحت و لوکس ارائه می‌دهد.", + "How can I pay for my ride?": "چگونه هزینه سفر را پرداخت کنم؟", + "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": + "Intaleq روش‌های پرداخت متعددی ارائه می‌دهد.", + "Can I cancel my ride?": "آیا می‌توانم سفرم را لغو کنم؟", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "بله، می‌توانید لغو کنید، اما ممکن است هزینه لغو اعمال شود.", + "Driver Registration & Requirements": "ثبت نام راننده و الزامات", + "How can I register as a driver?": + "چگونه به عنوان راننده ثبت نام کنم؟", + "What are the requirements to become a driver?": + "شرایط راننده شدن چیست؟", + "Visit our website or contact Intaleq support for information on driver registration and requirements.": + "برای اطلاعات بیشتر به وب‌سایت ما مراجعه کنید یا با پشتیبانی تماس بگیرید.", + "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": + "Intaleq امکان چت درون‌برنامه‌ای را فراهم می‌کند.", + "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": + "Intaleq امنیت شما را در اولویت قرار می‌دهد.", + "Frequently Questions": "سوالات متداول", + "User does not exist.": "کاربر وجود ندارد.", + "We need your phone number to contact you and to help you.": + "برای تماس و کمک به شما به شماره تلفن نیاز داریم.", + "You will recieve code in sms message": + "کد را در پیامک دریافت خواهید کرد", + "Please enter": "لطفاً وارد کنید", + "We need your phone number to contact you and to help you receive orders.": + "برای دریافت سفارشات به شماره تلفن نیاز داریم.", + "The full name on your criminal record does not match the one on your driver's license. Please verify and provide the correct documents.": + "نام کامل در گواهی عدم سوءپیشینه با گواهینامه مطابقت ندارد.", + "The national number on your driver's license does not match the one on your ID document. Please verify and provide the correct documents.": + "کد ملی در گواهینامه با کارت ملی مطابقت ندارد.", + "Capture an Image of Your Criminal Record": + "از گواهی عدم سوءپیشینه عکس بگیرید", + "IssueDate": "تاریخ صدور", + "Capture an Image of Your car license front": + "از روی کارت ماشین عکس بگیرید", + "Capture an Image of Your ID Document front": + "از روی کارت ملی عکس بگیرید", + "NationalID": "کد ملی", + "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": + "برنامه را با دوستان به اشتراک بگذارید و پاداش بگیرید.", + "FullName": "نام کامل", + "No invitation found yet!": "هنوز دعوتی پیدا نشد!", + "InspectionResult": "نتیجه معاینه", + "Criminal Record": "گواهی عدم سوءپیشینه", + "The email or phone number is already registered.": + "ایمیل یا شماره تلفن قبلاً ثبت شده است.", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "برای راننده شدن باید مدارک خود را آپلود کنید. هوش مصنوعی ما در ۲-۳ دقیقه بررسی می‌کند.", + "Documents check": "بررسی مدارک", + "Driver's License": "گواهینامه رانندگی", + "for your first registration!": "برای اولین ثبت نام شما!", + "Get it Now!": "همین الان بگیر!", + "before": "قبل از", + "Code not approved": "کد تأیید نشد", + "3000 LE": "۳۰۰۰ تومان", + "Do you have an invitation code from another driver?": + "آیا کد دعوت از راننده دیگری دارید؟", + "Paste the code here": "کد را اینجا پیست کنید", + "No, I don't have a code": "خیر، کد ندارم", + "Code approved": "کد تأیید شد", + "Install our app:": "برنامه ما را نصب کنید:", + "Invite another driver and both get a gift after he completes 100 trips!": + "راننده دیگری را دعوت کنید و بعد از ۱۰۰ سفر هدیه بگیرید!", + "Invite": "دعوت", + "Are you sure?": "مطمئن هستید؟", + "This will delete all recorded files from your device.": + "این کار تمام فایل‌های ضبط شده را حذف می‌کند.", + "Select a file": "انتخاب فایل", + "Select a File": "انتخاب یک فایل", + "Delete": "حذف", + "attach audio of complain": "ضمیمه صدای شکایت", + "Phone Number Check": "بررسی شماره تلفن", + "Drivers received orders": "رانندگان سفارشات را دریافت کردند", + "No audio files recorded.": "هیچ فایل صوتی ضبط نشده.", + "This is for delivery or a motorcycle.": + "این برای پیک یا موتورسیکلت است.", + "Intaleq Reminder": "یادآور Intaleq", + "It's time to check the Intaleq app!": + "وقت چک کردن برنامه Intaleq است!", + "you must insert token code": "باید کد توکن را وارد کنید", + "Something went wrong. Please try again.": + "مشکلی پیش آمد. لطفاً دوباره تلاش کنید.", + "Trip Details": "جزئیات سفر", + "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": + "جزئیات شکایت موجود نیست.", + "Submit Your Complaint": "ارسال شکایت", + "Status": "وضعیت", + "Choose from contact": "انتخاب از مخاطبین", + "attach correct audio": "صدای صحیح را ضمیمه کنید", + "be sure": "مطمئن باشید", + "Audio uploaded successfully.": "فایل صوتی با موفقیت آپلود شد.", + "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": + "عالی برای مسافرانی که دنبال خودروهای جدید و آزادی انتخاب مسیر هستند", + "Share this code with your friends and earn rewards when they use it!": + "این کد را به اشتراک بگذارید و پاداش بگیرید!", + "Enter phone": "وارد کردن تلفن", + "complete, you can claim your gift": + "تکمیل شد، می‌توانید هدیه را دریافت کنید", + "When": "وقتی", + "Enter driver's phone": "تلفن راننده را وارد کنید", + "Send Invite": "ارسال دعوت‌نامه", + "Show Invitations": "نمایش دعوت‌ها", + "License Type": "نوع گواهینامه", + "National Number": "کد ملی", + "Name (Arabic)": "نام (فارسی/عربی)", + "Name (English)": "نام (انگلیسی)", + "Address": "آدرس", + "Issue Date": "تاریخ صدور", + "Expiry Date": "تاریخ انقضا", + "License Categories": "دسته‌های گواهینامه", + "driver_license": "گواهینامه", + "Capture an Image of Your Driver License": + "عکس گواهینامه خود را بگیرید", + "ID Documents Back": "پشت کارت ملی", + "National ID": "کارت ملی", + "Occupation": "شغل", + "Religion": "مذهب", + "Full Name (Marital)": "نام کامل", + "Expiration Date": "تاریخ انقضا", + "Capture an Image of Your ID Document Back": "عکس پشت کارت ملی", + "ID Documents Front": "روی کارت ملی", + "First Name": "نام", + "CardID": "شماره کارت", + "Vehicle Details Front": "جزئیات خودرو (جلو)", + "Plate Number": "شماره پلاک", + "Owner Name": "نام مالک", + "Vehicle Details Back": "جزئیات خودرو (پشت)", + "Make": "سازنده", + "Model": "مدل", + "Year": "سال", + "Chassis": "شماره شاسی", + "Color": "رنگ", + "Displacement": "حجم موتور", + "Fuel": "سوخت", + "Tax Expiry Date": "تاریخ انقضای مالیات", + "Inspection Date": "تاریخ معاینه فنی", + "Capture an Image of Your car license back": "عکس پشت کارت ماشین", + "Capture an Image of Your Driver's License": "عکس گواهینامه رانندگی", + "Sign in with Google for easier email and name entry": + "ورود با گوگل برای سهولت", + "You will choose allow all the time to be ready receive orders": + "گزینه 'همیشه اجازه داده شود' را انتخاب کنید", + "Get to your destination quickly and easily.": + "سریع و آسان به مقصد برسید.", + "Enjoy a safe and comfortable ride.": "از سفری امن و راحت لذت ببرید.", + "Choose Language": "انتخاب زبان", + "Pay with Wallet": "پرداخت با کیف پول", + "Invalid MPIN": "MPIN نامعتبر", + "Invalid OTP": "کد تأیید نامعتبر", + "Enter your email address": "آدرس ایمیل خود را وارد کنید", + "Please enter Your Email.": "لطفاً ایمیل خود را وارد کنید.", + "Enter your phone number": "شماره تلفن خود را وارد کنید", + "Please enter your phone number.": + "لطفاً شماره تلفن خود را وارد کنید.", + "Please enter Your Password.": "لطفاً رمز عبور خود را وارد کنید.", + "if you dont have account": "اگر حساب کاربری ندارید", + "Register": "ثبت نام", + "Accept Ride's Terms & Review Privacy Notice": + "پذیرش شرایط و مرور حریم خصوصی", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "با انتخاب 'موافقم'، شرایط و حریم خصوصی را پذیرفته‌ام. من حداقل ۱۸ سال دارم.", + "First name": "نام", + "Enter your first name": "نام خود را وارد کنید", + "Please enter your first name.": "لطفاً نام خود را وارد کنید.", + "Last name": "نام خانوادگی", + "Enter your last name": "نام خانوادگی خود را وارد کنید", + "Please enter your last name.": + "لطفاً نام خانوادگی خود را وارد کنید.", + "City": "شهر", + "Please enter your City.": "لطفاً شهر خود را وارد کنید.", + "Verify Email": "تأیید ایمیل", + "We sent 5 digit to your Email provided": + "کد ۵ رقمی به ایمیل شما ارسال شد", + "5 digit": "۵ رقم", + "Send Verification Code": "ارسال کد تأیید", + "Your Ride Duration is ": "مدت زمان سفر شما: ", + "You will be thier in": "شما در ... آنجا خواهید بود", + "You trip distance is": "مسافت سفر شما:", + "Fee is": "هزینه:", + "From : ": "از: ", + "To : ": "به: ", + "Add Promo": "افزودن کد تخفیف", + "Confirm Selection": "تأیید انتخاب", + "distance is": "مسافت:", + "Privacy Policy": "سیاست حریم خصوصی", + "Intaleq LLC": "شرکت Intaleq", + "Syria's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "سرویس پیشرو اشتراک سفر در ایران.", + "Intaleq is the first ride-sharing app in Syria, designed to connect you with the nearest drivers for a quick and convenient travel experience.": + "Intaleq اولین برنامه اشتراک سفر است.", + "Why Choose Intaleq?": "چرا Intaleq؟", + "Closest to You": "نزدیک‌ترین به شما", + "We connect you with the nearest drivers for faster pickups and quicker journeys.": + "ما شما را به نزدیک‌ترین رانندگان متصل می‌کنیم.", + "Uncompromising Security": "امنیت بی چون و چرا", + "Lady Captains Available": "رانندگان خانم موجود است", + "Recorded Trips (Voice & AI Analysis)": + "سفرهای ضبط شده (صدا و تحلیل هوش مصنوعی)", + "Fastest Complaint Response": "سریع‌ترین پاسخ به شکایات", + "Our dedicated customer service team ensures swift resolution of any issues.": + "تیم پشتیبانی ما مشکلات را سریع حل می‌کند.", + "Affordable for Everyone": "مقرون‌به‌صرفه برای همه", + "Frequently Asked Questions": "سوالات متداول", + "Getting Started": "شروع کار", + "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": + "اپلیکیشن را باز کنید، مقصد را وارد کنید و درخواست خودرو دهید.", + "Vehicle Options": "گزینه‌های خودرو", + "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": + "Intaleq گزینه‌های متنوعی ارائه می‌دهد.", + "Payments": "پرداخت‌ها", + "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": + "می‌توانید نقدی یا با کارت پرداخت کنید.", + "Ride Management": "مدیریت سفر", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "بله، می‌توانید سفر را لغو کنید (ممکن است هزینه داشته باشد).", + "For Drivers": "برای رانندگان", + "Driver Registration": "ثبت نام راننده", + "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": + "برای ثبت نام راننده به سایت مراجعه کنید.", + "Visit Website/Contact Support": "مشاهده وب‌سایت / تماس با پشتیبانی", + "Close": "بستن", + "We are searching for the nearest driver": "جستجوی نزدیک‌ترین راننده", + "Communication": "ارتباطات", + "How do I communicate with the other party (passenger/driver)?": + "چگونه ارتباط برقرار کنم؟", + "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": + "از طریق چت درون برنامه‌ای.", + "Safety & Security": "ایمنی و امنیت", + "What safety measures does Intaleq offer?": + "چه اقدامات امنیتی ارائه می‌دهید؟", + "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": + "تأیید راننده، ردیابی سفر، تماس اضطراری.", + "Enjoy competitive prices across all trip options, making travel accessible.": + "از قیمت‌های رقابتی لذت ببرید.", + "Variety of Trip Choices": "تنوع انتخاب سفر", + "Choose the trip option that perfectly suits your needs and preferences.": + "گزینه مناسب خود را انتخاب کنید.", + "Your Choice, Our Priority": "انتخاب شما، اولویت ما", + "Because we are near, you have the flexibility to choose the ride that works best for you.": + "چون ما نزدیکیم، حق انتخاب دارید.", + "duration is": "مدت زمان:", + "Setting": "تنظیمات", + "Find answers to common questions": "پاسخ سوالات متداول", + "I don't need a ride anymore": "دیگر نیازی به سفر ندارم", + "I was just trying the application": + "فقط داشتم برنامه را تست می‌کردم", + "No driver accepted my request": "هیچ راننده‌ای قبول نکرد", + "I added the wrong pick-up/drop-off location": + "مبدأ/مقصد را اشتباه وارد کردم", + "I don't have a reason": "دلیلی ندارم", + "Can we know why you want to cancel Ride ?": + "چرا می‌خواهید لغو کنید؟", + "Cancel Ride": "لغو سفر", + "Add Payment Method": "افزودن روش پرداخت", + "Ride Wallet": "کیف پول سفر", + "Payment Method": "روش پرداخت", + "Type here Place": "مکان را اینجا بنویسید", + "Are You sure to ride to": "مطمئنید می‌خواهید بروید به", + "Confirm": "تأیید", + "You are Delete": "شما در حال حذف هستید", + "Deleted": "حذف شد", + "You Dont Have Any places yet !": "هنوز مکانی ندارید!", + "From : Current Location": "از: موقعیت فعلی", + "My Cared": "کارت‌های من", + "Add Card": "افزودن کارت", + "Add Credit Card": "افزودن کارت اعتباری", + "Please enter the cardholder name": "نام دارنده کارت", + "Please enter the expiry date": "تاریخ انقضا", + "Please enter the CVV code": "کد CVV", + "Go To Favorite Places": "رفتن به مکان‌های مورد علاقه", + "Go to this Target": "رفتن به این مقصد", + "My Profile": "پروفایل من", + "Are you want to go to this site": "می‌خواهید به این مکان بروید", + "MyLocation": "موقعیت من", + "my location": "موقعیت من", + "Target": "هدف", + "You Should choose rate figure": "باید امتیاز انتخاب کنید", + "Login Captin": "ورود سفیر", + "Register Captin": "ثبت نام سفیر", + "Send Verfication Code": "ارسال کد تأیید", + "KM": "کیلومتر", + "End Ride": "پایان سفر", + "Minute": "دقیقه", + "Go to passenger Location now": "الان به موقعیت مسافر بروید", + "Duration of the Ride is ": "مدت سفر: ", + "Distance of the Ride is ": "مسافت سفر: ", + "Name of the Passenger is ": "نام مسافر: ", + "Hello this is Captain": "سلام، من سفیر هستم", + "Start the Ride": "شروع سفر", + "Please Wait If passenger want To Cancel!": + "لطفاً صبر کنید شاید مسافر لغو کند!", + "Total Duration:": "مدت کل:", + "Active Duration:": "مدت فعال:", + "Waiting for Captin ...": "در انتظار سفیر...", + "Age is ": "سن: ", + "Rating is ": "امتیاز: ", + " to arrive you.": " تا رسیدن به شما.", + "Tariff": "تعرفه", + "Settings": "تنظیمات", + "Feed Back": "بازخورد", + "Please enter a valid 16-digit card number": + "لطفاً شماره کارت ۱۶ رقمی معتبر وارد کنید", + "Add Phone": "افزودن تلفن", + "Please enter a phone number": "لطفاً شماره تلفن وارد کنید", + "You dont Add Emergency Phone Yet!": + "هنوز تلفن اضطراری اضافه نکرده‌اید!", + "You will arrive to your destination after ": + "شما به مقصد می‌رسید بعد از ", + "You can cancel Ride now": "الان می‌توانید سفر را لغو کنید", + "You Can cancel Ride After Captain did not come in the time": + "اگر سفیر به موقع نیامد می‌توانید لغو کنید", + "If you in Car Now. Press Start The Ride": + "اگر در ماشین هستید، شروع سفر را بزنید", + "You Dont Have Any amount in": "موجودی ندارید در", + "Wallet!": "کیف پول!", + "You Have": "شما دارید", + "Save Credit Card": "ذخیره کارت اعتباری", + "Show Promos": "نمایش تخفیف‌ها", + "10 and get 4% discount": "۱۰ و ۴٪ تخفیف بگیرید", + "20 and get 6% discount": "۲۰ و ۶٪ تخفیف بگیرید", + "40 and get 8% discount": "۴۰ و ۸٪ تخفیف بگیرید", + "100 and get 11% discount": "۱۰۰ و ۱۱٪ تخفیف بگیرید", + "Pay with Your PayPal": "پرداخت با PayPal", + "You will choose one of above !": "یکی از موارد بالا را انتخاب کنید!", + "Edit Profile": "ویرایش پروفایل", + "Copy this Promo to use it in your Ride!": + "این کد تخفیف را کپی و استفاده کنید!", + "To change some Settings": "برای تغییر برخی تنظیمات", + "Order Request Page": "صفحه درخواست سفر", + "Rouats of Trip": "مسیرهای سفر", + "Passenger Name is ": "نام مسافر: ", + "Total From Passenger is ": "کل مبلغ از مسافر: ", + "Duration To Passenger is ": "زمان تا مسافر: ", + "Distance To Passenger is ": "مسافت تا مسافر: ", + "Total For You is ": "مجموع برای شما: ", + "Distance is ": "مسافت: ", + " KM": " کیلومتر", + "Duration of Trip is ": "مدت سفر: ", + " Minutes": " دقیقه", + "Apply Order": "پذیرش درخواست", + "Refuse Order": "رد درخواست", + "Rate Captain": "امتیاز به سفیر", + "Enter your Note": "یادداشت خود را وارد کنید", + "Type something...": "چیزی بنویسید...", + "Submit rating": "ثبت امتیاز", + "Rate Passenger": "امتیاز به مسافر", + "Ride Summary": "خلاصه سفر", + "welcome_message": "به Intaleq خوش آمدید!", + "app_description": "Intaleq امن و قابل اعتماد است.", + "get_to_destination": "سریع به مقصد برسید.", + "get_a_ride": "در چند دقیقه خودرو بگیرید.", + "safe_and_comfortable": "از سفری امن و راحت لذت ببرید.", + "committed_to_safety": "متعهد به ایمنی.", + "your ride is Accepted": "سفر شما پذیرفته شد", + "Driver is waiting at pickup.": "راننده در مبدأ منتظر است.", + "Driver is on the way": "راننده در راه است", + "Contact Options": "گزینه‌های تماس", + "Send a custom message": "ارسال پیام سفارشی", + "Type your message": "پیام خود را بنویسید", + "I will go now": "من الان می‌روم", + "You Have Tips": "انعام دارید", + " tips\nTotal is": " انعام\nمجموع:", + "Your fee is ": "هزینه شما: ", + "Do you want to pay Tips for this Driver": "می‌خواهید انعام دهید؟", + "Tip is ": "انعام: ", + "Are you want to wait drivers to accept your order": + "می‌خواهید منتظر پذیرش بمانید؟", + "This price is fixed even if the route changes for the driver.": + "قیمت ثابت است.", + "The price may increase if the route changes.": + "قیمت ممکن است تغییر کند.", + "The captain is responsible for the route.": + "مسئولیت مسیر با سفیر است.", + "We are search for nearst driver": "جستجوی نزدیک‌ترین راننده", + "Your order is being prepared": "سفارش در حال آماده‌سازی", + "The drivers are reviewing your request": "رانندگان در حال بررسی", + "Your order sent to drivers": "به رانندگان ارسال شد", + "You can call or record audio of this trip": + "می‌توانید تماس بگیرید یا ضبط کنید", + "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": + "سفر شروع شد! می‌توانید تماس اضطراری بگیرید یا سفر را اشتراک بگذارید.", + "Camera Access Denied.": "دسترسی دوربین رد شد.", + "Open Settings": "باز کردن تنظیمات", + "GPS Required Allow !.": "GPS لازم است!", + "Your Account is Deleted": "حساب شما حذف شد", + "Are you sure to delete your account?": "آیا مطمئنید؟", + "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": + "داده‌ها بعد از ۲ هفته پاک می‌شوند.", + "Enter Your First Name": "نام خود را وارد کنید", + "Are you Sure to LogOut?": "آیا برای خروج مطمئنید؟", + "Email Wrong": "ایمیل اشتباه", + "Email you inserted is Wrong.": "ایمیل وارد شده اشتباه است.", + "You have finished all times ": "تمام دفعات را استفاده کردید", + "if you want help you can email us here": "برای کمک ایمیل بزنید", + "Thanks": "ممنون", + "Email Us": "به ما ایمیل بزنید", + "I cant register in your app in face detection ": + "نمی‌توانم با تشخیص چهره ثبت نام کنم", + "Hi": "سلام", + "No face detected": "چهره‌ای تشخیص داده نشد", + "Image detecting result is ": "نتیجه تشخیص تصویر: ", + "from 3 times Take Attention": "از ۳ بار، دقت کنید", + "Be sure for take accurate images please\nYou have": + "لطفاً عکس دقیق بگیرید\nشما دارید", + "image verified": "تصویر تأیید شد", + "Next": "بعدی", + "There is no help Question here": "سوال کمکی اینجا نیست", + "You dont have Points": "امتیاز ندارید", + "You Are Stopped For this Day !": "برای امروز متوقف شدید!", + "You must be charge your Account": "باید حساب را شارژ کنید", + "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": + "۳ سفر را رد کردید.\nفردا می‌بینیمتان!", + "Recharge my Account": "شارژ حساب من", + "Ok , See you Tomorrow": "باشه، تا فردا", + "You are Stopped": "متوقف شدید", + "Connected": "متصل", + "Not Connected": "متصل نیست", + "Your are far from passenger location": "از مسافر دور هستید", + "go to your passenger location before\nPassenger cancel trip": + "قبل از لغو مسافر به موقعیت او بروید", + "You will get cost of your work for this trip": + "هزینه این سفر را دریافت خواهید کرد", + " in your wallet": " در کیف پول", + "you gain": "کسب کردید", + "Order Cancelled by Passenger": "لغو توسط مسافر", + "Feedback data saved successfully": "با موفقیت ذخیره شد", + "No Promo for today .": "امروز تخفیفی نیست.", + "Select your destination": "انتخاب مقصد", + "Search for your Start point": "جستجوی نقطه شروع", + "Search for waypoint": "جستجوی نقطه توقف", + "Current Location": "موقعیت فعلی", + "Add Location 1": "افزودن مکان ۱", + "You must Verify email !.": "باید ایمیل را تأیید کنید!", + "Cropper": "برش دهنده", + "Saved Sucssefully": "با موفقیت ذخیره شد", + "Select Date": "انتخاب تاریخ", + "Birth Date": "تاریخ تولد", + "Ok": "باشه", + "the 500 points equal 30 JOD": "۵۰۰ امتیاز برابر ۳۰ تومان", + "the 500 points equal 30 JOD for you \nSo go and gain your money": + "۵۰۰ امتیاز برای شما ۳۰ تومان است\nبروید و پول درآورید", + "token updated": "توکن بروز شد", + "Add Location 2": "افزودن مکان ۲", + "Add Location 3": "افزودن مکان ۳", + "Add Location 4": "افزودن مکان ۴", + "Waiting for your location": "در انتظار موقعیت شما", + "Search for your destination": "جستجوی مقصد", + "Hi! This is": "سلام! این", + " I am using": " من استفاده می‌کنم", + " to ride with": " برای سفر با", + " as the driver.": " به عنوان راننده.", + "is driving a ": "در حال راندن ", + " with license plate ": " با پلاک ", + " I am currently located at ": " من الان در ... هستم ", + "Please go to Car now ": "لطفاً الان به سمت ماشین بروید ", + "You will receive a code in WhatsApp Messenger": + "کد را در واتس‌اپ دریافت خواهید کرد", + "If you need assistance, contact us": + "اگر کمک نیاز دارید تماس بگیرید", + "Promo Ended": "تخفیف تمام شد", + "Enter the promo code and get": "کد تخفیف را وارد کنید و بگیرید", + "DISCOUNT": "تخفیف", + "No wallet record found": "رکورد کیف پول یافت نشد", + "for": "برای", + "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": + "Intaleq امن‌ترین برنامه است. کمیسیون پایین ۸٪. بیمه و تعمیر و نگهداری.", + "You can contact us during working hours from 12:00 - 19:00.": + "تماس در ساعات ۱۲ تا ۱۹.", + "Choose a contact option": "یک گزینه تماس انتخاب کنید", + "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": + "ساعات کاری ۱۲ تا ۱۹.\nواتس‌اپ یا ایمیل بزنید.", + "Promo code copied to clipboard!": "کد تخفیف کپی شد!", + "Copy Code": "کپی کد", + "Your invite code was successfully applied!": "کد دعوت اعمال شد!", + "Payment Options": "گزینه‌های پرداخت", + "wait 1 minute to receive message": "۱ دقیقه صبر کنید", + "You have copied the promo code.": "کد تخفیف را کپی کردید.", + "Select Payment Amount": "انتخاب مبلغ پرداخت", + "The promotion period has ended.": "دوره تخفیف تمام شده.", + "Promo Code Accepted": "کد تخفیف پذیرفته شد", + "Tap on the promo code to copy it!": "برای کپی ضربه بزنید!", + "Lowest Price Achieved": "کمترین قیمت حاصل شد", + "Cannot apply further discounts.": "تخفیف بیشتر ممکن نیست.", + "Promo Already Used": "تخفیف قبلاً استفاده شده", + "Invitation Used": "دعوت استفاده شده", + "You have already used this promo code.": + "شما قبلاً از این کد استفاده کرده‌اید.", + "Insert Your Promo Code": "کد تخفیف را وارد کنید", + "Enter promo code here": "کد تخفیف اینجا", + "Please enter a valid promo code": "لطفاً کد معتبر وارد کنید", + "Awfar Car": "خودروی اقتصادی", + "Old and affordable, perfect for budget rides.": + "قدیمی و مقرون‌به‌صرفه.", + " If you need to reach me, please contact the driver directly at": + " اگر کاری دارید با راننده تماس بگیرید در", + "No Car or Driver Found in your area.": + "خودرو یا راننده‌ای یافت نشد.", + "Please Try anther time ": "لطفاً زمان دیگری امتحان کنید ", + "There no Driver Aplly your order sorry for that ": + "هیچ راننده‌ای درخواست شما را نگرفت، متأسفیم ", + "Trip Cancelled": "سفر لغو شد", + "The Driver Will be in your location soon .": + "راننده به‌زودی می‌رسد.", + "The distance less than 500 meter.": "فاصله کمتر از ۵۰۰ متر.", + "Promo End !": "تخفیف تمام شد!", + "There is no notification yet": "اعلانی وجود ندارد", + "Use Touch ID or Face ID to confirm payment": + "از اثر انگشت یا چهره استفاده کنید", + "Contact us for any questions on your order.": + "برای هر سوالی تماس بگیرید.", + "Pyament Cancelled .": "پرداخت لغو شد.", + "type here": "اینجا بنویسید", + "Scan Driver License": "اسکن گواهینامه", + "Please put your licence in these border": + "گواهینامه را در کادر قرار دهید", + "Camera not initialized yet": "دوربین آماده نیست", + "Take Image": "عکس گرفتن", + "AI Page": "صفحه هوش مصنوعی", + "Take Picture Of ID Card": "عکس از کارت ملی", + "Take Picture Of Driver License Card": "عکس از گواهینامه", + "We are process picture please wait ": "در حال پردازش عکس، صبر کنید ", + "There is no data yet.": "هنوز داده‌ای نیست.", + "Name :": "نام:", + "Drivers License Class: ": "کلاس گواهینامه: ", + "Document Number: ": "شماره سند: ", + "Address: ": "آدرس: ", + "Height: ": "قد: ", + "Expiry Date: ": "تاریخ انقضا: ", + "Date of Birth: ": "تاریخ تولد: ", + "You can't continue with us .\nYou should renew Driver license": + "باید گواهینامه را تمدید کنید", + "Detect Your Face ": "تشخیص چهره ", + "Go to next step\nscan Car License.": "مرحله بعد\nاسکن کارت ماشین.", + "Name in arabic": "نام به فارسی", + "Drivers License Class": "کلاس گواهینامه", + "Selected Date": "تاریخ انتخاب شده", + "Select Time": "انتخاب زمان", + "Selected Time": "زمان انتخاب شده", + "Selected Date and Time": "تاریخ و زمان انتخاب شده", + "Lets check Car license ": "بررسی کارت ماشین ", + "Car": "خودرو", + "Plate": "پلاک", + "Rides": "سفرها", + "Selected driver": "راننده انتخاب شده", + "Lets check License Back Face": "بررسی پشت گواهینامه", + "Car License Card": "کارت ماشین", + "No image selected yet": "عکسی انتخاب نشده", + "Made :": "سازنده:", + "model :": "مدل:", + "VIN :": "شماره شاسی:", + "year :": "سال:", + "ُExpire Date": "تاریخ انقضا", + "Login Driver": "ورود راننده", + "Password must br at least 6 character.": + "رمز باید حداقل ۶ کاراکتر باشد.", + "if you don't have account": "اگر حساب ندارید", + "Here recorded trips audio": "صدای ضبط شده سفرها", + "Register as Driver": "ثبت نام به عنوان راننده", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": + "با انتخاب \"موافقم\"، شرایط استفاده را پذیرفته‌ام و ", + "Log Out Page": "صفحه خروج", + "Log Off": "خروج", + "Register Driver": "ثبت نام راننده", + "Verify Email For Driver": "تأیید ایمیل برای راننده", + "Admin DashBoard": "داشبورد مدیریت", + "Your name": "نام شما", + "your ride is applied": "سفر شما ثبت شد", + "H and": "س و", + "JOD": "تومان", + "m": "د", + "We search nearst Driver to you": "جستجوی نزدیک‌ترین راننده", + "please wait till driver accept your order": + "لطفاً منتظر پذیرش راننده بمانید", + "No accepted orders? Try raising your trip fee to attract riders.": + "سفارشی پذیرفته نشد؟ مبلغ را افزایش دهید.", + "You should select one": "باید یکی را انتخاب کنید", + "The driver accept your order for": "راننده سفارش شما را پذیرفت برای", + "The driver on your way": "راننده در راه است", + "Total price from ": "قیمت کل از ", + "Order Details Intaleq": "جزئیات سفارش Intaleq", + "Selected file:": "فایل انتخاب شده:", + "Your trip cost is": "هزینه سفر شما", + "this will delete all files from your device": + "این کار تمام فایل‌ها را حذف می‌کند", + "Exclusive offers and discounts always with the Intaleq app": + "تخفیف‌های ویژه همیشه با Intaleq", + "Submit Question": "ارسال سوال", + "Please enter your Question.": "لطفاً سوال خود را وارد کنید.", + "Help Details": "جزئیات راهنما", + "No trip yet found": "سفری یافت نشد", + "No Response yet.": "هنوز پاسخی نیست.", + " You Earn today is ": " درآمد امروز شما: ", + " You Have in": " شما دارید در", + "Total points is ": "مجموع امتیازات: ", + "Total Connection Duration:": "مجموع مدت اتصال:", + "Passenger name : ": "نام مسافر: ", + "Cost Of Trip IS ": "هزینه سفر: ", + "Arrival time": "زمان رسیدن", + "arrival time to reach your point": "زمان رسیدن به نقطه شما", + "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "قیمت‌گذاری پویا برای Intaleq و اسکوتر. زمانی و مسافتی برای Comfort.", + "Hello this is Driver": "سلام من راننده هستم", + "Is the Passenger in your Car ?": "آیا مسافر در خودرو است؟", + "Please wait for the passenger to enter the car before starting the trip.": + "لطفاً صبر کنید تا مسافر سوار شود.", + "No ,still Waiting.": "نه، هنوز منتظرم.", + "I arrive you": "رسیدم", + "I Arrive your site": "به موقعیت شما رسیدم", + "You are not in near to passenger location": "نزدیک مسافر نیستید", + "please go to picker location exactly": + "لطفاً دقیقاً به محل سوار شدن بروید", + "You Can Cancel Trip And get Cost of Trip From": + "می‌توانید لغو کنید و هزینه را دریافت کنید از", + "Are you sure to cancel?": "مطمئنید لغو می‌کنید؟", + "Insert Emergincy Number": "درج شماره اضطراری", + "Best choice for comfort car and flexible route and stops point": + "بهترین انتخاب برای راحتی و مسیر منعطف", + "Insert": "درج", + "This is for scooter or a motorcycle.": + "این برای اسکوتر یا موتورسیکلت است.", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "سفر مستقیم با قیمت ثابت.", + "You can decline a request without any cost": + "می‌توانید بدون هزینه رد کنید", + "Perfect for adventure seekers who want to experience something new and exciting": + "عالی برای ماجراجویان", + "My current location is:": "موقعیت فعلی من:", + "and I have a trip on": "و سفری دارم در", + "App with Passenger": "برنامه با مسافر", + "You will be pay the cost to driver or we will get it from you on next trip": + "هزینه را به راننده پرداخت می‌کنید یا در سفر بعد از شما می‌گیریم", + "Trip has Steps": "سفر مراحلی دارد", + "Distance from Passenger to destination is ": "فاصله مسافر تا مقصد: ", + "price is": "قیمت:", + "This ride type does not allow changes to the destination or additional stops": + "امکان تغییر مقصد یا توقف وجود ندارد", + "This price may be changed": "این قیمت ممکن است تغییر کند", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "سیم‌کارت ندارید؟ مشکلی نیست! از طریق برنامه تماس بگیرید.", + "This ride type allows changes, but the price may increase": + "امکان تغییر دارد اما قیمت ممکن است افزایش یابد", + "Select one message": "یک پیام انتخاب کنید", + "I'm waiting for you": "منتظر شما هستم", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "سرعت بالای ۱۰۰ کیلومتر تشخیص داده شد. لطفاً آهسته‌تر برانید.", + "Warning: Intaleqing detected!": "هشدار: سرعت غیرمجاز!", + "Please help! Contact me as soon as possible.": + "کمک! سریعاً تماس بگیرید.", + "Share Trip Details": "اشتراک جزئیات سفر", + "Car Plate is ": "پلاک خودرو: ", + "the 300 points equal 300 L.E for you \nSo go and gain your money": + "۳۰۰ امتیاز برابر ۳۰۰ تومان برای شماست\nبروید و پول درآورید", + "the 300 points equal 300 L.E": "۳۰۰ امتیاز برابر ۳۰۰ تومان", + "The payment was not approved. Please try again.": + "پرداخت تأیید نشد. دوباره تلاش کنید.", + "Payment Failed": "پرداخت ناموفق", + "This is a scheduled notification.": + "این یک اعلان زمان‌بندی شده است.", + "An error occurred during the payment process.": + "خطایی در پرداخت رخ داد.", + "The payment was approved.": "پرداخت تأیید شد.", + "Payment Successful": "پرداخت موفق", + "No ride found yet": "هنوز سفری یافت نشد", + "Accept Order": "پذیرش سفارش", + "Bottom Bar Example": "مثال نوار پایین", + "Driver phone": "تلفن راننده", + "Statistics": "آمار", + "Origin": "مبدأ", + "Destination": "مقصد", + "Driver Name": "نام راننده", + "Driver Car Plate": "پلاک راننده", + "Available for rides": "آماده برای سفر", + "Scan Id": "اسکن کارت ملی", + "Camera not initilaized yet": "دوربین هنوز آماده نیست", + "Scan ID MklGoogle": "اسکن ID MklGoogle", + "Language": "زبان", + "Jordan": "اردن", + "USA": "آمریکا", + "Egypt": "مصر", + "Turkey": "ترکیه", + "Saudi Arabia": "عربستان سعودی", + "Qatar": "قطر", + "Bahrain": "بحرین", + "Kuwait": "کویت", + "But you have a negative salary of": "اما موجودی منفی دارید به مبلغ", + "Promo Code": "کد تخفیف", + "Your trip distance is": "مسافت سفر شما:", + "Enter promo code": "کد تخفیف را وارد کنید", + "You have promo!": "تخفیف دارید!", + "Cost Duration": "هزینه مدت زمان", + "Duration is": "مدت زمان:", + "Leave": "ترک کردن", + "Join": "پیوستن", + "Heading your way now. Please be ready.": + "دارم می‌آیم. لطفاً آماده باشید.", + "Approaching your area. Should be there in 3 minutes.": + "نزدیک منطقه شما هستم. ۳ دقیقه دیگر می‌رسم.", + "There's heavy traffic here. Can you suggest an alternate pickup point?": + "ترافیک سنگین است. نقطه دیگری پیشنهاد می‌کنید؟", + "This ride is already taken by another driver.": + "این سفر توسط راننده دیگری گرفته شد.", + "You Should be select reason.": "باید دلیلی را انتخاب کنید.", + "Waiting for Driver ...": "در انتظار راننده...", + "Latest Recent Trip": "آخرین سفر اخیر", + "from your list": "از لیست شما", + "Do you want to change Work location": + "می‌خواهید محل کار را تغییر دهید", + "Do you want to change Home location": "می‌خواهید خانه را تغییر دهید", + "We Are Sorry That we dont have cars in your Location!": + "متاسفیم، در موقعیت شما خودرویی نداریم!", + "Choose from Map": "انتخاب از روی نقشه", + "Pick your ride location on the map - Tap to confirm": + "محل سفر را روی نقشه انتخاب کنید - برای تأیید ضربه بزنید", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "Intaleq امن و قابل اعتماد است.", + "With Intaleq, you can get a ride to your destination in minutes.": + "با Intaleq در چند دقیقه به مقصد برسید.", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "Intaleq متعهد به ایمنی است.", + "Pick from map": "انتخاب از نقشه", + "No Car in your site. Sorry!": "خودرویی در محل شما نیست. متاسفیم!", + "Nearest Car for you about ": "نزدیک‌ترین خودرو حدود ", + "From :": "از:", + "Get Details of Trip": "دریافت جزئیات سفر", + "If you want add stop click here": "برای افزودن توقف اینجا کلیک کنید", + "Where you want go ": "کجا می‌خواهید بروید ", + "My Card": "کارت من", + "Start Record": "شروع ضبط", + "History of Trip": "تاریخچه سفر", + "Helping Center": "مرکز راهنما", + "Record saved": "ضبط ذخیره شد", + "Trips recorded": "سفرهای ضبط شده", + "Select Your Country": "کشور خود را انتخاب کنید", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "لطفاً کشور خود را انتخاب کنید تا اطلاعات دقیق دریافت کنید.", + "Are you sure to delete recorded files": + "آیا از حذف فایل‌های ضبط شده مطمئنید", + "Select recorded trip": "انتخاب سفر ضبط شده", + "Card Number": "شماره کارت", + "Hi, Where to ": "سلام، به کجا ", + "Pick your destination from Map": "مقصد را از نقشه انتخاب کنید", + "Add Stops": "افزودن توقف", + "Get Direction": "مسیریابی", + "Add Location": "افزودن مکان", + "Switch Rider": "تغییر مسافر", + "You will arrive to your destination after timer end.": + "پس از پایان تایمر به مقصد خواهید رسید.", + "You can cancel trip": "می‌توانید سفر را لغو کنید", + "The driver waitting you in picked location .": + "راننده در محل انتخاب شده منتظر شماست.", + "Pay with Your": "پرداخت با", + "Pay with Credit Card": "پرداخت با کارت اعتباری", + "Show Promos to Charge": "نمایش تخفیف‌ها برای شارژ", + "Point": "امتیاز", + "How many hours would you like to wait?": + "چند ساعت می‌خواهید منتظر بمانید؟", + "Driver Wallet": "کیف پول راننده", + "Choose between those Type Cars": + "از بین این نوع خودروها انتخاب کنید", + "hour": "ساعت", + "Select Waiting Hours": "انتخاب ساعات انتظار", + "Total Points is": "مجموع امتیازات:", + "You will receive a code in SMS message": + "کدی در پیامک دریافت خواهید کرد", + "Done": "انجام شد", + "Total Budget from trips is ": "مجموع درآمد از سفرها: ", + "Total Amount:": "مبلغ کل:", + "Total Budget from trips by\nCredit card is ": + "مجموع درآمد از کارت اعتباری: ", + "This amount for all trip I get from Passengers": + "این مبلغ برای تمام سفرهایی که از مسافران گرفتم", + "Pay from my budget": "پرداخت از اعتبار من", + "This amount for all trip I get from Passengers and Collected For me in": + "این مبلغ جمع‌آوری شده برای من در", + "You can buy points from your budget": + "می‌توانید از اعتبار خود امتیاز بخرید", + "insert amount": "مبلغ را وارد کنید", + "You can buy Points to let you online\nby this list below": + "می‌توانید امتیاز بخرید تا آنلاین شوید\nاز لیست زیر", + "Create Wallet to receive your money": + "برای دریافت پول کیف پول بسازید", + "Enter your feedback here": "بازخورد خود را اینجا وارد کنید", + "Please enter your feedback.": "لطفاً بازخورد خود را وارد کنید.", + "Feedback": "بازخورد", + "Submit ": "ارسال ", + "Click here to Show it in Map": "برای نمایش روی نقشه کلیک کنید", + "Canceled": "لغو شد", + "No I want": "نه من می‌خواهم", + "Email is": "ایمیل:", + "Phone Number is": "شماره تلفن:", + "Date of Birth is": "تاریخ تولد:", + "Sex is ": "جنسیت: ", + "Car Details": "جزئیات خودرو", + "VIN is": "شماره شاسی:", + "Color is ": "رنگ: ", + "Make is ": "سازنده: ", + "Model is": "مدل:", + "Year is": "سال:", + "Expiration Date ": "تاریخ انقضا: ", + "Edit Your data": "ویرایش اطلاعات", + "write vin for your car": "شماره شاسی خودرو را بنویسید", + "VIN": "شماره شاسی", + "Device Change Detected": "تغییر دستگاه شناسایی شد", + "Please verify your identity": "لطفاً هویت خود را تأیید کنید", + "write Color for your car": "رنگ خودرو را بنویسید", + "write Make for your car": "سازنده خودرو را بنویسید", + "write Model for your car": "مدل خودرو را بنویسید", + "write Year for your car": "سال خودرو را بنویسید", + "write Expiration Date for your car": "تاریخ انقضای خودرو را بنویسید", + "Tariffs": "تعرفه‌ها", + "Minimum fare": "حداقل کرایه", + "Maximum fare": "حداکثر کرایه", + "Flag-down fee": "ورودی", + "Including Tax": "شامل مالیات", + "BookingFee": "هزینه رزرو", + "Morning": "صبح", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "از ۰۷:۳۰ تا ۱۰:۳۰", + "Evening": "عصر", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "از ۱۲:۰۰ تا ۱۵:۰۰", + "Night": "شب", + "You have in account": "در حساب دارید", + "Select Country": "انتخاب کشور", + "Ride Today : ": "سفر امروز: ", + "After this period\nYou can't cancel!": + "بعد از این مدت\nنمی‌توانید لغو کنید!", + "from 23:59 till 05:30": "از ۲۳:۵۹ تا ۰۵:۳۰", + "Rate Driver": "امتیاز به راننده", + "Total Cost is ": "هزینه کل: ", + "Write note": "نوشتن یادداشت", + "Time to arrive": "زمان رسیدن", + "Ride Summaries": "خلاصه سفرها", + "Total Cost": "هزینه کل", + "Average of Hours of": "میانگین ساعات", + " is ON for this month": " در این ماه روشن است", + "Days": "روزها", + "Total Hours on month": "مجموع ساعات در ماه", + "Counts of Hours on days": "تعداد ساعات در روزها", + "OrderId": "شناسه سفارش", + "created time": "زمان ایجاد", + "Intaleq Over": "Intaleq تمام شد", + "I will slow down": "من سرعتم را کم می‌کنم", + "Map Passenger": "نقشه مسافر", + "Be Slowly": "آهسته باش", + "If you want to make Google Map App run directly when you apply order": + "اگر می‌خواهید گوگل مپ مستقیماً اجرا شود", + "You can change the language of the app": + "می‌توانید زبان برنامه را تغییر دهید", + "Your Budget less than needed": "بودجه شما کمتر از حد نیاز است", + "You can change the Country to get all features": + "برای دسترسی به تمام ویژگی‌ها کشور را تغییر دهید", + "Change Country": "تغییر کشور" + }, + "el": { + "Order": "Αίτημα", + "OrderVIP": "VIP Αίτημα", + "Cancel Trip": "Ακύρωση Διαδρομής", + "Passenger Cancel Trip": "Ο επιβάτης ακύρωσε τη διαδρομή", + "VIP Order": "VIP Αίτημα", + "Hi ,I Arrive your site": "Γεια, έφτασα στο σημείο σας", + "The driver accepted your trip": + "Ο οδηγός αποδέχτηκε τη διαδρομή σας", + "message From passenger": "Μήνυμα από τον επιβάτη", + "Cancel": "Ακύρωση", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "Η διαδρομή ακυρώθηκε. Το κόστος θα προστεθεί στο πορτοφόλι σας.", + "token change": "Αλλαγή Token", + "face detect": "Ανίχνευση Προσώπου", + "Face Detection Result": "Αποτέλεσμα Ανίχνευσης Προσώπου", + "similar": "Παρόμοιο", + "not similar": "Μη παρόμοιο", + "Hi ,I will go now": "Γεια, ξεκινάω τώρα", + "Passenger come to you": "Ο επιβάτης έρχεται σε εσάς", + "Call Income": "Εισερχόμενη Κλήση", + "Call Income from Passenger": "Κλήση από Επιβάτη", + "Criminal Document Required": "Απαιτείται Ποινικό Μητρώο", + "You should have upload it .": "Πρέπει να το ανεβάσετε.", + "Call End": "Τέλος Κλήσης", + "The order has been accepted by another driver.": + "Το αίτημα έγινε αποδεκτό από άλλον οδηγό.", + "The order Accepted by another Driver": + "Το αίτημα έγινε δεκτό από άλλον Οδηγό", + "We regret to inform you that another driver has accepted this order.": + "Λυπούμαστε, ένας άλλος οδηγός αποδέχτηκε αυτό το αίτημα.", + "Driver Applied the Ride for You": + "Ο οδηγός καταχώρησε τη διαδρομή για εσάς", + "Applied": "Καταχωρήθηκε", + "Pay by Sham Cash": "Πληρωμή με Sham Cash", + "Pay with Debit Card": "Πληρωμή με Χρεωστική Κάρτα", + "Please go to Car Driver": "Παρακαλώ πηγαίνετε στον Οδηγό", + "Ok I will go now.": "Εντάξει, πηγαίνω τώρα.", + "Accepted Ride": "Αποδεκτή Διαδρομή", + "Driver Accepted the Ride for You": + "Ο οδηγός αποδέχτηκε τη διαδρομή για εσάς", + "Promo": "Προσφορά", + "Show latest promo": "Εμφάνιση τελευταίων προσφορών", + "Trip Monitoring": "Παρακολούθηση Διαδρομής", + "Driver Is Going To Passenger": "Ο οδηγός πηγαίνει στον Επιβάτη", + "Please stay on the picked point.": + "Παρακαλώ μείνετε στο επιλεγμένο σημείο.", + "message From Driver": "Μήνυμα από τον Οδηγό", + "Trip is Begin": "Η διαδρομή ξεκινά", + "Cancel Trip from driver": "Ακύρωση διαδρομής από τον οδηγό", + "We will look for a new driver.\nPlease wait.": + "Αναζητούμε νέο οδηγό.\nΠαρακαλώ περιμένετε.", + "The driver canceled your ride.": "Ο οδηγός ακύρωσε τη διαδρομή σας.", + "Driver Finish Trip": "Ο οδηγός ολοκλήρωσε τη διαδρομή", + "you will pay to Driver": "Θα πληρώσετε στον Οδηγό", + "Don’t forget your personal belongings.": + "Μην ξεχάσετε τα προσωπικά σας αντικείμενα.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "Βεβαιωθείτε ότι έχετε πάρει όλα τα προσωπικά σας αντικείμενα και ότι τυχόν ρέστα έχουν προστεθεί στο πορτοφόλι σας πριν αποχωρήσετε. Ευχαριστούμε που επιλέξατε το Intaleq.", + "Finish Monitor": "Τέλος Παρακολούθησης", + "Trip finished": "Η διαδρομή ολοκληρώθηκε", + "Call Income from Driver": "Κλήση από τον Οδηγό", + "Driver Cancelled Your Trip": "Ο Οδηγός Ακύρωσε τη Διαδρομή σας", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "Θα πληρώσετε το κόστος χρόνου του οδηγού, δείτε το Πορτοφόλι Intaleq", + "Order Applied": "Το αίτημα καταχωρήθηκε", + "welcome to intaleq": "Καλώς ήρθατε στο Intaleq", + "login or register subtitle": + "Εισάγετε τον αριθμό κινητού για είσοδο ή εγγραφή", + "An application error occurred.": "Προέκυψε σφάλμα εφαρμογής.", + "Submission Failed": "Η υποβολή απέτυχε", + "Your complaint has been submitted.": "Η καταγγελία σας υποβλήθηκε.", + "Failed to connect to the server. Please try again.": + "Αποτυχία σύνδεσης στον διακομιστή. Προσπαθήστε ξανά.", + "Ride information not found. Please refresh the page.": + "Δεν βρέθηκαν πληροφορίες διαδρομής. Ανανεώστε τη σελίδα.", + "Please describe your issue before submitting.": + "Περιγράψτε το πρόβλημά σας πριν την υποβολή.", + "An application error occurred during upload.": + "Προέκυψε σφάλμα κατά τη μεταφόρτωση.", + "Failed to upload audio file.": "Αποτυχία μεταφόρτωσης αρχείου ήχου.", + "Audio uploaded successfully.": "Ο ήχος μεταφορτώθηκε επιτυχώς.", + "Complaint cannot be filed for this ride. It may not have been completed or started.": + "Δεν μπορεί να υποβληθεί καταγγελία για αυτή τη διαδρομή. Ίσως δεν ολοκληρώθηκε ή δεν ξεκίνησε.", + "2. Attach Recorded Audio (Optional)": + "2. Επισύναψη Ηχογράφησης (Προαιρετικό)", + "Please enter a description of the issue.": + "Παρακαλώ εισάγετε περιγραφή του θέματος.", + "phone number label": "Αριθμός Τηλεφώνου", + "phone number required": "Απαιτείται αριθμός τηλεφώνου", + "send otp button": "Αποστολή Κωδικού OTP", + "verify your number title": "Επαληθεύστε τον αριθμό σας", + "otp sent subtitle": + "Ένας 5ψήφιος κωδικός στάλθηκε στο\n@phoneNumber", + "verify and continue button": "Επαλήθευση και Συνέχεια", + "enter otp validation": "Εισάγετε τον 5ψήφιο κωδικό OTP", + "one last step title": "Ένα τελευταίο βήμα", + "complete profile subtitle": + "Ολοκληρώστε το προφίλ σας για να ξεκινήσετε", + "first name label": "Όνομα", + "first name required": "Απαιτείται όνομα", + "last name label": "Επώνυμο", + "Verify OTP": "Επαλήθευση OTP", + "Verification Code": "Κωδικός Επαλήθευσης", + "We have sent a verification code to your mobile number:": + "Στείλαμε έναν κωδικό επαλήθευσης στο κινητό σας:", + "Verify": "Επαλήθευση", + "Resend Code": "Επαναποστολή Κωδικού", + "You can resend in": "Επαναποστολή σε", + "seconds": "δευτερόλεπτα", + "Error": "Σφάλμα", + "Please enter the complete 6-digit code.": + "Παρακαλώ εισάγετε τον πλήρη 6ψήφιο κωδικό.", + "last name required": "Απαιτείται επώνυμο", + "email optional label": "Email (Προαιρετικό)", + "complete registration button": "Ολοκλήρωση Εγγραφής", + "User with this phone number or email already exists.": + "Υπάρχει ήδη χρήστης με αυτό το τηλέφωνο ή email.", + "otp sent success": "Ο κωδικός στάλθηκε στο WhatsApp.", + "failed to send otp": "Αποτυχία αποστολής OTP.", + "server error try again": "Σφάλμα διακομιστή, προσπαθήστε ξανά.", + "an error occurred": "Προέκυψε σφάλμα: @error", + "otp verification failed": "Η επαλήθευση OTP απέτυχε.", + "registration failed": "Η εγγραφή απέτυχε.", + "welcome user": "Καλώς ήρθες, @firstName!", + "Cancel Trip from driver": "Ακύρωση από τον οδηγό", + "We will look for a new driver.\nPlease wait.": + "Αναζητούμε νέο οδηγό.\nΠαρακαλώ περιμένετε.", + "The driver canceled your ride.": "Ο οδηγός ακύρωσε τη διαδρομή σας.", + "Driver Finish Trip": "Ο Οδηγός Ολοκλήρωσε τη Διαδρομή", + "you will pay to Driver": "Θα πληρώσετε στον Οδηγό", + "Don't forget your personal belongings.": + "Μην ξεχάσετε τα προσωπικά σας αντικείμενα.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "Βεβαιωθείτε ότι πήρατε τα πράγματά σας και ότι τυχόν ρέστα προστέθηκαν στο πορτοφόλι σας. Ευχαριστούμε που επιλέξατε το Intaleq.", + "Finish Monitor": "Τέλος Παρακολούθησης", + "Trip finished": "Η διαδρομή έληξε", + "Call Income from Driver": "Κλήση από τον Οδηγό", + "Driver Cancelled Your Trip": "Ο Οδηγός Ακύρωσε τη Διαδρομή", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "Θα πληρώσετε για τον χρόνο του οδηγού, δείτε το Πορτοφόλι Intaleq", + "Order Applied": "Το αίτημα υποβλήθηκε", + "Share App": "Κοινοποίηση Εφαρμογής", + "Wallet": "Πορτοφόλι", + "Balance": "Υπόλοιπο", + "Don’t forget your personal belongings.": + "Μην ξεχάσετε τα αντικείμενά σας.", + "Profile": "Προφίλ", + "Contact Support": "Επικοινωνία με Υποστήριξη", + "Session expired. Please log in again.": + "Η συνεδρία έληξε. Συνδεθείτε ξανά.", + "Security Warning": "⚠️ Προειδοποίηση Ασφαλείας", + "Potential security risks detected. The application may not function correctly.": + "Εντοπίστηκαν πιθανοί κίνδυνοι ασφαλείας. Η εφαρμογή ενδέχεται να μην λειτουργεί σωστά.", + "please order now": "Κάντε αίτημα τώρα", + "Where to": "Πού πάτε;", + "Where are you going?": "Πού πηγαίνετε;", + "Quick Actions": "Γρήγορες Ενέργειες", + "My Balance": "Το Υπόλοιπό μου", + "Order History": "Ιστορικό Διαδρομών", + "Contact Us": "Επικοινωνία", + "Driver": "Οδηγός", + "Complaint": "Καταγγελία", + "Promos": "Προσφορές", + "Recent Places": "Πρόσφατα Μέρη", + "From": "Από", + "WhatsApp Location Extractor": "Εξαγωγή Τοποθεσίας WhatsApp", + "Location Link": "Σύνδεσμος Τοποθεσίας", + "Paste location link here": "Επικολλήστε τον σύνδεσμο εδώ", + "Go to this location": "Μετάβαση σε αυτή την τοποθεσία", + "Paste WhatsApp location link": "Επικολλήστε σύνδεσμο WhatsApp", + "Select Order Type": "Επιλογή Τύπου Διαδρομής", + "Choose who this order is for": "Για ποιον είναι η διαδρομή;", + "I want to order for myself": "Για εμένα", + "I want to order for someone else": "Για κάποιον άλλον", + "Order for someone else": "Διαδρομή για άλλον", + "Order for myself": "Διαδρομή για εμένα", + "Are you want to go this site": "Θέλετε να πάτε σε αυτό το σημείο;", + "No": "Όχι", + "Pay by Sham Cash": "Πληρωμή με Sham Cash", + "Intaleq Wallet": "Πορτοφόλι Intaleq", + "Have a promo code?": "Έχετε κωδικό προσφοράς;", + "Your Wallet balance is ": "Το υπόλοιπο του πορτοφολιού είναι ", + "Cash": "Μετρητά", + "Phone Number": "Αριθμός Τηλεφώνου", + "Search country": "Αναζήτηση χώρας", + "Payment Successful!": "Πληρωμή Επιτυχής!", + "Your payment was successful.": "Η πληρωμή σας ήταν επιτυχής.", + "Pay directly to the captain": "Πληρωμή απευθείας στον οδηγό", + "Top up Wallet to continue": "Φορτίστε το Πορτοφόλι για συνέχεια", + "Or pay with Cash instead": "Ή πληρώστε με Μετρητά", + "Confirm & Find a Ride": "Επιβεβαίωση & Εύρεση", + "Balance:": "Υπόλοιπο:", + "Alerts": "Ειδοποιήσεις", + "Welcome Back!": "Καλώς ήρθατε ξανά!", + "Current Balance": "Τρέχον Υπόλοιπο", + "Set Wallet Phone Number": "Ορισμός Τηλεφώνου Πορτοφολιού", + "Link a phone number for transfers": + "Σύνδεση τηλεφώνου για μεταφορές", + "Payment History": "Ιστορικό Πληρωμών", + "View your past transactions": "Δείτε τις προηγούμενες συναλλαγές", + "Top up Wallet": "Φόρτιση Πορτοφολιού", + "Add funds using our secure methods": "Προσθήκη χρημάτων με ασφάλεια", + "Driver is waiting": "Ο οδηγός περιμένει", + "Type your message...": "Γράψτε το μήνυμά σας...", + "Driver Accepted Request": "Ο Οδηγός Αποδέχτηκε", + "Message": "Μήνυμα", + "Call": "Κλήση", + "Set Phone Number": "Ορισμός Τηλεφώνου", + "Select This Ride": "Επιλογή Διαδρομής", + "Call Driver": "Κλήση Οδηγού", + "Increase Fare": "Αύξηση Ναύλου", + "Stop": "Στάση", + "Record": "Εγγραφή", + "Share": "Κοινοποίηση", + "WhatsApp": "WhatsApp", + "SOS": "SOS", + "No drivers accepted your request yet": + "Κανένας οδηγός δεν αποδέχτηκε ακόμα", + "Increasing the fare might attract more drivers. Would you like to increase the price?": + "Η αύξηση του ναύλου μπορεί να προσελκύσει περισσότερους οδηγούς. Θέλετε να αυξήσετε την τιμή;", + "Please make sure not to leave any personal belongings in the car.": + "Βεβαιωθείτε ότι δεν αφήσατε προσωπικά αντικείμενα στο αμάξι.", + "Cancel Ride": "Ακύρωση Διαδρομής", + "Route Not Found": "Η διαδρομή δεν βρέθηκε", + "We couldn't find a valid route to this destination. Please try selecting a different point.": + "Δεν βρέθηκε έγκυρη διαδρομή. Παρακαλώ επιλέξτε άλλο σημείο.", + "alert": "Ειδοποίηση", + "You can call or record audio during this trip.": + "Μπορείτε να καλέσετε ή να ηχογραφήσετε κατά τη διαδρομή.", + "Warning: Speeding detected!": + "Προειδοποίηση: Εντοπίστηκε υπερβολική ταχύτητα!", + "Fixed Price": "Σταθερή Τιμή", + "Report": "Αναφορά", + "Comfort": "Comfort", + "Intaleq Balance": "Υπόλοιπο Intaleq", + "Search for a starting point": "Αναζήτηση σημείου εκκίνησης", + "Top up Balance to continue": "Φορτίστε το Υπόλοιπο για συνέχεια", + "Electric": "Ηλεκτρικό", + "Lady": "Lady (Γυναίκες)", + "Van": "Van", + "Rayeh Gai": "Μετ' επιστροφής", + "Join Intaleq as a driver using my referral code!": + "Γίνε οδηγός στο Intaleq με τον κωδικό μου!", + "Use code:": "Χρήση κωδικού:", + "Download the Intaleq Driver app now and earn rewards!": + "Κατεβάστε την εφαρμογή Οδηγού Intaleq και κερδίστε!", + "Get a discount on your first Intaleq ride!": + "Έκπτωση στην πρώτη διαδρομή Intaleq!", + "Use my referral code:": "Χρησιμοποιήστε τον κωδικό μου:", + "Download the Intaleq app now and enjoy your ride!": + "Κατεβάστε το Intaleq και απολαύστε τη διαδρομή!", + "Contacts Loaded": "Οι επαφές φορτώθηκαν", + "Showing": "Εμφάνιση", + "of": "από", + "Pay by MTN Wallet": "Πληρωμή με MTN Wallet", + "Pay by Syriatel Wallet": "Πληρωμή με Syriatel Wallet", + "Customer not found": "Ο πελάτης δεν βρέθηκε", + "Wallet is blocked": "Το πορτοφόλι έχει αποκλειστεί", + "Customer phone is not active": "Το τηλέφωνο δεν είναι ενεργό", + "Balance not enough": "Ανεπαρκές υπόλοιπο", + "Balance limit exceeded": "Υπέρβαση ορίου υπολοίπου", + "Incorrect sms code": "⚠️ Λάθος κωδικός SMS. Προσπαθήστε ξανά.", + "contacts. Others were hidden because they don't have a phone number.": + "επαφές. Οι άλλες αποκρύφθηκαν γιατί δεν έχουν αριθμό.", + "No contacts found": "Δεν βρέθηκαν επαφές", + "No contacts with phone numbers were found on your device.": + "Δεν βρέθηκαν επαφές με αριθμούς στη συσκευή.", + "Permission denied": "Άρνηση πρόσβασης", + "Contact permission is required to pick contacts": + "Απαιτείται άδεια επαφών.", + "An error occurred while picking contacts:": + "Σφάλμα κατά την επιλογή επαφών:", + "Please enter a correct phone": "Εισάγετε σωστό τηλέφωνο", + "Success": "Επιτυχία", + "Invite sent successfully": "Η πρόσκληση στάλθηκε", + "Hello! I'm inviting you to try Intaleq.": + "Γεια! Σε προσκαλώ να δοκιμάσεις το Intaleq.", + "Use my invitation code to get a special gift on your first ride!": + "Χρησιμοποίησε τον κωδικό μου για δώρο στην πρώτη διαδρομή!", + "Your personal invitation code is:": "Ο κωδικός πρόσκλησής σου:", + "Be sure to use it quickly! This code expires at": + "Χρησιμοποίησέ το γρήγορα! Λήγει στις", + "Download the app now:": "Κατέβασε την εφαρμογή:", + "See you on the road!": "Τα λέμε στον δρόμο!", + "This phone number has already been invited.": + "Αυτός ο αριθμός έχει ήδη προσκληθεί.", + "An unexpected error occurred. Please try again.": + "Προέκυψε απροσδόκητο σφάλμα. Προσπαθήστε ξανά.", + "You deserve the gift": "Αξίζετε το δώρο", + "Claim your 20 LE gift for inviting": + "Διεκδικήστε το δώρο 20 € για την πρόσκληση", + "You have got a gift for invitation": "Έχετε ένα δώρο πρόσκλησης", + "You have earned 20": "Κερδίσατε 20", + "LE": "€", + "Vibration feedback for all buttons": "Δόνηση για όλα τα κουμπιά", + "Share with friends and earn rewards": + "Μοιραστείτε με φίλους και κερδίστε", + "Gift Already Claimed": "Το δώρο έχει ήδη ληφθεί", + "You have already received your gift for inviting": + "Έχετε ήδη λάβει το δώρο σας", + "Keep it up!": "Συνεχίστε έτσι!", + "has completed": "ολοκλήρωσε", + "trips": "διαδρομές", + "Personal Information": "Προσωπικά Στοιχεία", + "Name": "Όνομα", + "Not set": "Δεν ορίστηκε", + "Gender": "Φύλο", + "Education": "Εκπαίδευση", + "Work & Contact": "Εργασία & Επικοινωνία", + "Employment Type": "Τύπος Απασχόλησης", + "Marital Status": "Οικογενειακή Κατάσταση", + "SOS Phone": "Τηλέφωνο SOS", + "Sign Out": "Αποσύνδεση", + "Delete My Account": "Διαγραφή Λογαριασμού", + "Update Gender": "Ενημέρωση Φύλου", + "Update": "Ενημέρωση", + "Update Education": "Ενημέρωση Εκπαίδευσης", + "Are you sure? This action cannot be undone.": + "Είστε σίγουροι; Αυτή η ενέργεια δεν αναιρείται.", + "Confirm your Email": "Επιβεβαίωση Email", + "Type your Email": "Πληκτρολογήστε το Email", + "Delete Permanently": "Οριστική Διαγραφή", + "Male": "Άνδρας", + "Female": "Γυναίκα", + "Other": "Άλλο", + "High School Diploma": "Απολυτήριο Λυκείου", + "Associate Degree": "Πτυχίο ΙΕΚ/Κολεγίου", + "Bachelor's Degree": "Πτυχίο ΑΕΙ", + "Master's Degree": "Μεταπτυχιακό", + "Doctoral Degree": "Διδακτορικό", + "Select your preferred language for the app interface.": + "Επιλέξτε γλώσσα εφαρμογής.", + "Language Options": "Επιλογές Γλώσσας", + "You can claim your gift once they complete 2 trips.": + "Μπορείτε να πάρετε το δώρο αφού ολοκληρώσουν 2 διαδρομές.", + "Closest & Cheapest": "Κοντινότερο & Φθηνότερο", + "Comfort choice": "Επιλογή Comfort", + "Travel in a modern, silent electric car. A premium, eco-friendly choice for a smooth ride.": + "Ταξιδέψτε με σύγχρονο, αθόρυβο ηλεκτρικό αυτοκίνητο. Premium και οικολογική επιλογή.", + "Spacious van service ideal for families and groups. Comfortable, safe, and cost-effective travel together.": + "Ευρύχωρο βαν, ιδανικό για οικογένειες. Άνετο, ασφαλές και οικονομικό.", + "Quiet & Eco-Friendly": "Ήσυχο & Οικολογικό", + "Lady Captain for girls": "Γυναίκα Οδηγός για γυναίκες", + "Van for familly": "Βαν για οικογένεια", + "Are you sure to delete this location?": + "Σίγουρα θέλετε να διαγράψετε την τοποθεσία;", + "Change Work location?": "Αλλαγή τοποθεσίας Εργασίας;", + "Change Home location?": "Αλλαγή τοποθεσίας Σπιτιού;", + "Submit a Complaint": "Υποβολή Καταγγελίας", + "Submit Complaint": "Υποβολή", + "No trip history found": "Δεν βρέθηκε ιστορικό", + "Your past trips will appear here.": + "Οι προηγούμενες διαδρομές θα εμφανιστούν εδώ.", + "1. Describe Your Issue": "1. Περιγράψτε το θέμα", + "Enter your complaint here...": "Γράψτε την καταγγελία εδώ...", + "2. Attach Recorded Audio": "2. Επισύναψη Ήχου", + "No audio files found.": "Δεν βρέθηκαν αρχεία ήχου.", + "Confirm Attachment": "Επιβεβαίωση Επισύναψης", + "Attach this audio file?": "Επισύναψη αυτού του αρχείου;", + "Uploaded": "Μεταφορτώθηκε", + "3. Review Details & Response": "3. Έλεγχος Λεπτομερειών", + "Date": "Ημερομηνία", + "Today's Promos": "Σημερινές Προσφορές", + "No promos available right now.": "Δεν υπάρχουν προσφορές τώρα.", + "Check back later for new offers!": "Ελέγξτε ξανά αργότερα!", + "Valid Until:": "Ισχύει έως:", + "CODE": "ΚΩΔΙΚΟΣ", + "Login": "Είσοδος", + "Sign in for a seamless experience": + "Συνδεθείτε για καλύτερη εμπειρία", + "Sign In with Google": "Σύνδεση με Google", + "Sign in with Apple": "Σύνδεση με Apple", + "User not found": "Ο χρήστης δεν βρέθηκε", + "Need assistance? Contact us": "Χρειάζεστε βοήθεια; Επικοινωνήστε", + "Email": "Email", + "Your email address": "Η διεύθυνση email σας", + "Enter a valid email": "Εισάγετε έγκυρο email", + "Password": "Κωδικός", + "Your password": "Ο κωδικός σας", + "Enter your password": "Εισάγετε κωδικό πρόσβασης", + "Submit": "Υποβολή", + "Terms of Use & Privacy Notice": "Όροι Χρήσης & Πολιτική Απορρήτου", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the ": + "Επιλέγοντας \"Συμφωνώ\", επιβεβαιώνω ότι διάβασα και αποδέχομαι τους ", + "Terms of Use": "Όρους Χρήσης", + " and acknowledge the ": " και αναγνωρίζω την ", + "Privacy Notice": "Πολιτική Απορρήτου", + " . I am at least 18 years old.": " . Είμαι τουλάχιστον 18 ετών.", + "I Agree": "Συμφωνώ", + "Continue": "Συνέχεια", + "Enable Location": "Ενεργοποίηση Τοποθεσίας", + "To give you the best experience, we need to know where you are. Your location is used to find nearby captains and for pickups.": + "Για την καλύτερη εμπειρία, χρειαζόμαστε την τοποθεσία σας για να βρούμε κοντινούς οδηγούς.", + "Allow Location Access": "Να επιτρέπεται η πρόσβαση", + "Welcome to Intaleq!": "Καλώς ήρθατε στο Intaleq!", + "Before we start, please review our terms.": + "Πριν ξεκινήσουμε, δείτε τους όρους μας.", + "Your journey starts here": "Το ταξίδι ξεκινά εδώ", + "Cancel Search": "Ακύρωση Αναζήτησης", + "Set pickup location": "Ορισμός παραλαβής", + "Move the map to adjust the pin": "Μετακινήστε τον χάρτη", + "Searching for the nearest captain...": + "Αναζήτηση κοντινότερου οδηγού...", + "No one accepted? Try increasing the fare.": + "Κανείς δεν δέχτηκε; Αυξήστε την προσφορά.", + "Increase Your Trip Fee (Optional)": "Αύξηση Ναύλου (Προαιρετικό)", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "Δεν βρέθηκαν οδηγοί. Σκεφτείτε να αυξήσετε την τιμή για να γίνει πιο ελκυστική η προσφορά.", + "No, thanks": "Όχι, ευχαριστώ", + "Increase Fee": "Αύξηση Τιμής", + "Copy": "Αντιγραφή", + "Promo Copied!": "Αντιγράφηκε!", + "Code": "Κωδικός", + "copied to clipboard": "αντιγράφηκε στο πρόχειρο", + "Price": "Τιμή", + "Intaleq's Response": "Απάντηση Intaleq", + "Awaiting response...": "Αναμονή απάντησης...", + "Audio file not attached": "Δεν επισυνάφθηκε ήχος", + "The audio file is not uploaded yet.\\nDo you want to submit without it?": + "Ο ήχος δεν ανέβηκε ακόμα.\\nΝα γίνει υποβολή χωρίς αυτόν;", + "deleted": "διαγράφηκε", + "To Work": "Προς Εργασία", + "Work Saved": "Εργασία Αποθηκεύτηκε", + "To Home": "Προς Σπίτι", + "Home Saved": "Σπίτι Αποθηκεύτηκε", + "Destination selected": "Προορισμός επιλέχθηκε", + "Now select start pick": "Επιλέξτε σημείο παραλαβής", + "OK": "ΟΚ", + "Confirm Pick-up Location": "Επιβεβαίωση Παραλαβής", + "Set Location on Map": "Ορισμός στον Χάρτη", + "Leave a detailed comment (Optional)": "Αφήστε σχόλιο (Προαιρετικό)", + "Share your experience to help us improve...": + "Μοιραστείτε την εμπειρία σας...", + "Your valuable feedback helps us improve our service quality.": + "Η γνώμη σας μας βοηθά να βελτιωθούμε.", + "witout zero": "χωρίς μηδενικό", + "Top up Balance": "Φόρτιση Υπολοίπου", + "An error occurred": "Προέκυψε σφάλμα", + "Send WhatsApp Message": "Αποστολή WhatsApp", + "How was your trip with": "Πώς ήταν η διαδρομή με", + "Drawing route on map...": "Σχεδίαση διαδρομής...", + "Please wait while we prepare your trip.": + "Περιμένετε όσο ετοιμάζουμε τη διαδρομή.", + "Submit Rating": "Υποβολή Βαθμολογίας", + "Call Support": "Κλήση Υποστήριξης", + "You can contact us during working hours from 10:00 - 16:00.": + "Επικοινωνήστε μαζί μας 10:00 - 16:00.", + "Intaleq is the safest and most reliable ride-sharing app designed especially for passengers in Syria. We provide a comfortable, respectful, and affordable riding experience with features that prioritize your safety and convenience. Our trusted captains are verified, insured, and supported by regular car maintenance carried out by top engineers. We also offer on-road support services to make sure every trip is smooth and worry-free. With Intaleq, you enjoy quality, safety, and peace of mind—every time you ride.": + "Το Intaleq είναι η ασφαλέστερη εφαρμογή μεταφοράς στην Ελλάδα. Παρέχουμε άνετη και οικονομική εμπειρία. Οι οδηγοί μας είναι ελεγμένοι και ασφαλισμένοι. Απολαύστε ποιότητα και ασφάλεια.", + "Work time is from 10:00 AM to 16:00 PM.\nYou can send a WhatsApp message or email.": + "Ώρες εργασίας 10:00 - 16:00.\nΣτείλτε WhatsApp ή email.", + "Sorry": "Συγγνώμη", + "Customer MSISDN doesn’t have customer wallet": + "Ο αριθμός δεν έχει πορτοφόλι πελάτη", + "Please enter the number without the leading 0": + "Εισάγετε τον αριθμό χωρίς το αρχικό 0", + "Please enter your phone number": "Εισάγετε τον αριθμό τηλεφώνου", + "Phone number seems too short": "Ο αριθμός φαίνεται πολύ μικρός", + "No cars are available at the moment. Please try again later.": + "Δεν υπάρχουν οχήματα. Προσπαθήστε αργότερα.", + "Nearest Car: ~": "Κοντινότερο Όχημα: ~", + "Nearest Car": "Κοντινότερο Όχημα", + "No cars nearby": "Κανένα όχημα κοντά", + "Favorite Places": "Αγαπημένα Μέρη", + "No favorite places yet!": "Κανένα αγαπημένο μέρος ακόμα!", + "from your favorites": "από τα αγαπημένα", + "Back": "Πίσω", + "Enter your code below to apply the discount.": + "Εισάγετε τον κωδικό για έκπτωση.", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the": + "Επιλέγοντας \"Συμφωνώ\", αποδέχομαι τα", + "and acknowledge the": "και αναγνωρίζω την", + "Enable Location Access": "Ενεργοποίηση Τοποθεσίας", + "We need your location to find nearby drivers for pickups and drop-offs.": + "Χρειαζόμαστε την τοποθεσία σας για εύρεση οδηγών.", + "You should restart app to change language": + "Επανεκκινήστε την εφαρμογή για αλλαγή γλώσσας", + "Home Page": "Αρχική Σελίδα", + "To change Language the App": "Αλλαγή Γλώσσας Εφαρμογής", + "Learn more about our app and mission": "Μάθετε περισσότερα για εμάς", + "Promos For Today": "Σημερινές Προσφορές", + "Choose your ride": "Επιλέξτε διαδρομή", + "Your Journey Begins Here": "Το ταξίδι ξεκινά εδώ", + "Bonus gift": "Δώρο Bonus", + "Pay": "Πληρωμή", + "Get": "Λήψη", + "Send to Driver Again": "Αποστολή ξανά στον Οδηγό", + "Driver Name:": "Όνομα Οδηγού:", + "No trip data available": "Μη διαθέσιμα δεδομένα", + "Car Plate:": "Πινακίδα:", + "remaining": "απομένουν", + "Order Cancelled": "Ακυρώθηκε", + "You canceled VIP trip": "Ακυρώσατε τη VIP διαδρομή", + "Passenger cancelled order": "Ο επιβάτης ακύρωσε", + "Your trip is scheduled": "Η διαδρομή προγραμματίστηκε", + "Don't forget your ride!": "Μην ξεχάσετε τη διαδρομή!", + "Trip updated successfully": "Η διαδρομή ενημερώθηκε", + "Car Make:": "Μάρκα:", + "Car Model:": "Μοντέλο:", + "Car Color:": "Χρώμα:", + "Driver Phone:": "Τηλ. Οδηγού:", + "Pre-booking": "Προκράτηση", + "Waiting VIP": "Αναμονή VIP", + "Driver List": "Λίστα Οδηγών", + "Confirm Trip": "Επιβεβαίωση", + "Select date and time of trip": "Επιλογή ημερομηνίας και ώρας", + "Date and Time Picker": "Επιλογή Ημερομηνίας/Ώρας", + "Trip Status:": "Κατάσταση:", + "pending": "εκκρεμεί", + "accepted": "εγκρίθηκε", + "rejected": "απορρίφθηκε", + "Apply": "Εφαρμογή", + "Enter your promo code": "Εισάγετε κωδικό", + "Apply Promo Code": "Χρήση Κωδικού", + "Scheduled Time:": "Προγραμματισμένη Ώρα:", + "No drivers available": "Κανένας οδηγός διαθέσιμος", + "No drivers available at the moment. Please try again later.": + "Κανένας οδηγός τώρα. Προσπαθήστε αργότερα.", + "you have a negative balance of": "έχετε αρνητικό υπόλοιπο", + "Please try again in a few moments": "Προσπαθήστε ξανά σε λίγο", + "Unknown Driver": "Άγνωστος Οδηγός", + "in your": "στο", + "The driver accepted your order for": "Ο οδηγός αποδέχτηκε για", + "wallet due to a previous trip.": + "πορτοφόλι λόγω προηγούμενης διαδρομής.", + "rides": "διαδρομές", + "Add Work": "Προσθήκη Εργασίας", + "The reason is": "Ο λόγος είναι", + "User does not have a wallet #1652": + "Ο χρήστης δεν έχει πορτοφόλι #1652", + "Price of trip": "Τιμή διαδρομής", + "From:": "Από:", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Για Intaleq και Delivery, η τιμή είναι δυναμική. Για Comfort, βασίζεται σε χρόνο και απόσταση.", + "Phone Wallet Saved Successfully": + "Το τηλέφωνο πορτοφολιού αποθηκεύτηκε", + "Add wallet phone you use": "Προσθήκη τηλεφώνου πορτοφολιού", + "Update Available": "Διαθέσιμη Ενημέρωση", + "Phone number must be exactly 11 digits long": + "Ο αριθμός πρέπει να έχει 10 ψηφία", + "Insert Wallet phone number": "Εισαγωγή τηλεφώνου πορτοφολιού", + "Phone number isn't an Egyptian phone number": + "Δεν είναι ελληνικός αριθμός", + "A new version of the app is available. Please update to the latest version.": + "Νέα έκδοση διαθέσιμη. Παρακαλώ ενημερώστε.", + "We use location to get accurate and nearest passengers for you": + "Χρησιμοποιούμε την τοποθεσία για εύρεση επιβατών", + "This ride is already applied by another driver.": + "Αυτή η διαδρομή αναλήφθηκε από άλλον οδηγό.", + "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": + "Χρησιμοποιούμε την ακριβή τοποθεσία για εύρεση οδηγού. Διαχείριση στις Ρυθμίσεις.", + "Where are you, sir?": "Πού είστε;", + "I've been trying to reach you but your phone is off.": + "Προσπαθώ να σας βρω αλλά το κινητό είναι κλειστό.", + "Please don't be late": "Παρακαλώ μην αργήσετε", + "Please don't be late, I'm waiting for you at the specified location.": + "Μην αργήσετε, περιμένω στο σημείο.", + "My location is correct. You can search for me using the navigation app": + "Η τοποθεσία είναι σωστή. Βρείτε με μέσω GPS.", + "Hello, I'm at the agreed-upon location": + "Γεια, είμαι στο συμφωνημένο σημείο", + "How much longer will you be?": "Πόση ώρα ακόμα;", + "Phone number is verified before": "Ο αριθμός έχει επαληθευτεί", + "Change Ride": "Αλλαγή Διαδρομής", + "You can change the destination by long-pressing any point on the map": + "Αλλάξτε προορισμό πατώντας παρατεταμένα στον χάρτη", + "Pick from map destination": "Επιλογή προορισμού στον χάρτη", + "Pick or Tap to confirm": "Επιλέξτε ή Πατήστε για επιβεβαίωση", + "Accepted your order": "Αποδέχτηκε το αίτημα", + "Order Accepted": "Αίτημα Εγκρίθηκε", + "with type": "τύπου", + "accepted your order at price": "αποδέχτηκε στην τιμή", + "you canceled order": "ακυρώσατε", + "If you want order to another person": "Αν θέλετε διαδρομή για άλλον", + "upgrade price": "αύξηση τιμής", + "airport": "αεροδρόμιο", + "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": + "Καλύτερη επιλογή για άνετο αμάξι με ευέλικτη διαδρομή.", + "You can upgrade price to may driver accept your order": + "Μπορείτε να αυξήσετε την τιμή για να αποδεχτεί οδηγός", + "Change Route": "Αλλαγή Διαδρομής", + "No Captain Accepted Your Order": "Κανένας Οδηγός δεν αποδέχτηκε", + "We are looking for a captain but the price may increase to let a captain accept": + "Ψάχνουμε οδηγό αλλά η τιμή ίσως αυξηθεί", + "No, I want to cancel this trip": "Όχι, θέλω ακύρωση", + "Attention": "Προσοχή", + "Trip Cancelled. The cost of the trip will be deducted from your wallet.": + "Ακυρώθηκε. Το κόστος θα αφαιρεθεί από το πορτοφόλι.", + "You will be charged for the cost of the driver coming to your location.": + "Θα χρεωθείτε το κόστος μετάβασης του οδηγού.", + "reject your order.": "απέρριψε το αίτημα.", + "Order Under Review": "Υπό Εξέταση", + "is reviewing your order. They may need more information or a higher price.": + "εξετάζει το αίτημα. Ίσως χρειάζεται υψηλότερη τιμή.", + "Vibration": "Δόνηση", + "Resend code": "Επαναποστολή", + "change device": "αλλαγή συσκευής", + "Device Change Detected": "Ανιχνεύτηκε Αλλαγή Συσκευής", + "You can only use one device at a time. This device will now be set as your active device.": + "Μόνο μία συσκευή ταυτόχρονα. Αυτή ορίζεται ως ενεργή.", + "Click here point": "Πατήστε εδώ", + "Are you want to change": "Θέλετε να αλλάξετε", + "by": "από", + "Enter your complaint here": "Εισάγετε καταγγελία", + "Please enter your complaint.": "Παρακαλώ εισάγετε καταγγελία.", + "Complaint data saved successfully": "Αποθηκεύτηκε επιτυχώς", + "Trip Monitor": "Παρακολούθηση", + "Insert SOS Phone": "Εισαγωγή Τηλεφώνου SOS", + "Add SOS Phone": "Προσθήκη SOS", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "Αγαπητέ,\n\n🚀 Ξεκίνησα μια διαδρομή και μοιράζομαι την τοποθεσία μου! Κατέβασε το Intaleq για να με παρακολουθείς.\n\n👉 Σύνδεσμος: \nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nIntaleq ,", + "Send Intaleq app to him": "Αποστολή εφαρμογής", + "No passenger found for the given phone number": + "Δεν βρέθηκε επιβάτης", + "No user found for the given phone number": "Δεν βρέθηκε χρήστης", + "This price is": "Η τιμή είναι", + "Work": "Εργασία", + "Add Home": "Προσθήκη Σπιτιού", + "Notifications": "Ειδοποιήσεις", + "💳 Pay with Credit Card": "💳 Πληρωμή με Κάρτα", + "⚠️ You need to choose an amount!": "⚠️ Επιλέξτε ποσό!", + "💰 Pay with Wallet": "💰 Πληρωμή με Πορτοφόλι", + "You must restart the app to change the language.": + "Επανεκκίνηση για αλλαγή γλώσσας.", + "joined": "μπήκε", + "Driver joined the channel": "Ο οδηγός μπήκε στο κανάλι", + "Driver left the channel": "Ο οδηγός βγήκε από το κανάλι", + "Call Page": "Σελίδα Κλήσης", + "Call Left": "Κλήσεις που απομένουν", + " Next as Cash !": " Επόμενο με Μετρητά!", + "To use Wallet charge it": "Φορτίστε το πορτοφόλι", + "We are searching for the nearest driver to you": + "Ψάχνουμε τον κοντινότερο οδηγό", + "Best choice for cities": "Καλύτερη επιλογή για πόλη", + "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": + "Μετ' επιστροφής: Άνετο ταξίδι μεταξύ πόλεων.", + "This trip is for women only": "Μόνο για γυναίκες", + "Total budgets on month": "Σύνολο μήνα", + "You have call from driver": "Κλήση από οδηγό", + "Intaleq": "Intaleq", + "passenger agreement": "συμφωνία επιβάτη", + "To become a passenger, you must review and agree to the ": + "Πρέπει να συμφωνήσετε με τους ", + "agreement subtitle": "Αποδοχή Όρων Χρήσης και Πολιτικής Απορρήτου.", + "terms of use": "όρους χρήσης", + " and acknowledge our Privacy Policy.": + " και την Πολιτική Απορρήτου.", + "and acknowledge our": "και την", + "privacy policy": "πολιτική απορρήτου.", + "i agree": "συμφωνώ", + "Driver already has 2 trips within the specified period.": + "Ο οδηγός έχει ήδη 2 διαδρομές.", + "The invitation was sent successfully": "Η πρόσκληση στάλθηκε", + "You should select your country": "Επιλέξτε χώρα", + "Scooter": "Σκούτερ", + "A trip with a prior reservation, allowing you to choose the best captains and cars.": + "Διαδρομή με κράτηση, επιλογή οδηγών και οχημάτων.", + "Mishwar Vip": "VIP Διαδρομή", + "The driver waiting you in picked location .": + "Ο οδηγός περιμένει στο σημείο.", + "About Us": "Σχετικά", + "You can change the vibration feedback for all buttons": + "Αλλαγή δόνησης κουμπιών", + "Most Secure Methods": "Ασφαλείς Μέθοδοι", + "In-App VOIP Calls": "Κλήσεις VOIP", + "Recorded Trips for Safety": "Καταγεγραμμένες Διαδρομές", + "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": + "\nΠροσιτές τιμές για όλους.", + "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": + "Το Intaleq είναι εφαρμογή μετακίνησης με έμφαση στην ασφάλεια.", + "Sign In by Apple": "Είσοδος με Apple", + "Sign In by Google": "Είσοδος με Google", + "How do I request a ride?": "Πώς ζητάω διαδρομή;", + "Step-by-step instructions on how to request a ride through the Intaleq app.": + "Οδηγίες για αίτημα διαδρομής.", + "What types of vehicles are available?": "Τι οχήματα υπάρχουν;", + "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": + "Economy, Comfort, Luxury.", + "How can I pay for my ride?": "Πώς πληρώνω;", + "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": + "Μετρητά ή Κάρτα.", + "Can I cancel my ride?": "Μπορώ να ακυρώσω;", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "Ναι, ενδέχεται να υπάρξει χρέωση ακύρωσης.", + "Driver Registration & Requirements": "Εγγραφή Οδηγού", + "How can I register as a driver?": "Πώς γίνομαι οδηγός;", + "What are the requirements to become a driver?": "Απαιτήσεις οδηγού;", + "Visit our website or contact Intaleq support for information on driver registration and requirements.": + "Επισκεφτείτε την ιστοσελίδα ή επικοινωνήστε.", + "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": + "Chat εντός εφαρμογής.", + "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": + "Επαλήθευση οδηγού, παρακολούθηση, SOS.", + "Frequently Questions": "Συχνές Ερωτήσεις", + "User does not exist.": "Ο χρήστης δεν υπάρχει.", + "We need your phone number to contact you and to help you.": + "Χρειαζόμαστε το τηλέφωνο για επικοινωνία.", + "You will recieve code in sms message": "Θα λάβετε SMS με κωδικό", + "Please enter": "Εισάγετε", + "We need your phone number to contact you and to help you receive orders.": + "Χρειαζόμαστε το τηλέφωνο για λήψη παραγγελιών.", + "The full name on your criminal record does not match the one on your driver's license. Please verify and provide the correct documents.": + "Το όνομα στο Ποινικό Μητρώο δεν ταιριάζει με το δίπλωμα.", + "The national number on your driver's license does not match the one on your ID document. Please verify and provide the correct documents.": + "Ο αριθμός ταυτότητας δεν ταιριάζει.", + "Capture an Image of Your Criminal Record": + "Φωτογραφία Ποινικού Μητρώου", + "IssueDate": "Ημ. Έκδοσης", + "Capture an Image of Your car license front": + "Φωτογραφία Άδειας Κυκλοφορίας (Μπροστά)", + "Capture an Image of Your ID Document front": + "Φωτογραφία Ταυτότητας (Μπροστά)", + "NationalID": "Αριθμός Ταυτότητας", + "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": + "Μοιραστείτε και κερδίστε.", + "FullName": "Ονοματεπώνυμο", + "No invitation found yet!": "Καμία πρόσκληση!", + "InspectionResult": "Αποτέλεσμα Ελέγχου", + "Criminal Record": "Ποινικό Μητρώο", + "The email or phone number is already registered.": + "Το email ή τηλέφωνο χρησιμοποιείται.", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "Ανεβάστε δίπλωμα, ταυτότητα, άδεια κυκλοφορίας. Έλεγχος σε 2-3 λεπτά.", + "Documents check": "Έλεγχος Εγγράφων", + "Driver's License": "Δίπλωμα Οδήγησης", + "for your first registration!": "για την πρώτη εγγραφή!", + "Get it Now!": "Πάρτε το!", + "before": "πριν", + "Code not approved": "Κωδικός μη αποδεκτός", + "3000 LE": "30 €", + "Do you have an invitation code from another driver?": + "Έχετε κωδικό πρόσκλησης;", + "Paste the code here": "Επικόλληση κωδικού", + "No, I don't have a code": "Όχι", + "Code approved": "Κωδικός εγκρίθηκε", + "Install our app:": "Εγκατάσταση:", + "Invite another driver and both get a gift after he completes 100 trips!": + "Προσκαλέστε οδηγό και κερδίστε δώρο μετά από 100 διαδρομές!", + "Invite": "Πρόσκληση", + "Are you sure?": "Είστε σίγουροι;", + "This will delete all recorded files from your device.": + "Διαγραφή όλων των αρχείων.", + "Select a file": "Επιλογή αρχείου", + "Select a File": "Επιλογή Αρχείου", + "Delete": "Διαγραφή", + "attach audio of complain": "επισύναψη ήχου καταγγελίας", + "Phone Number Check": "Έλεγχος Τηλεφώνου", + "Drivers received orders": "Οι οδηγοί έλαβαν αιτήματα", + "No audio files recorded.": "Κανένα ηχητικό αρχείο.", + "This is for delivery or a motorcycle.": "Για διανομή ή μοτοσυκλέτα.", + "Intaleq Reminder": "Υπενθύμιση Intaleq", + "It's time to check the Intaleq app!": "Ώρα να ελέγξετε το Intaleq!", + "you must insert token code": "εισάγετε κωδικό token", + "Something went wrong. Please try again.": "Κάτι πήγε στραβά.", + "Trip Details": "Λεπτομέρειες", + "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": + "Δεν υπάρχουν λεπτομέρειες.", + "Submit Your Complaint": "Υποβολή", + "Status": "Κατάσταση", + "Choose from contact": "Επιλογή από επαφές", + "attach correct audio": "σωστός ήχος", + "be sure": "βεβαιωθείτε", + "Audio uploaded successfully.": "Επιτυχής μεταφόρτωση.", + "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": + "Ιδανικό για νέα μοντέλα και ελευθερία διαδρομής", + "Share this code with your friends and earn rewards when they use it!": + "Μοιραστείτε και κερδίστε!", + "Enter phone": "Εισαγωγή τηλεφώνου", + "complete, you can claim your gift": "ολοκληρώθηκε, λάβετε το δώρο", + "When": "Όταν", + "Enter driver's phone": "Τηλέφωνο οδηγού", + "Send Invite": "Αποστολή Πρόσκλησης", + "Show Invitations": "Προβολή Προσκλήσεων", + "License Type": "Τύπος Διπλώματος", + "National Number": "Αριθμός Ταυτότητας", + "Name (Arabic)": "Όνομα (Αραβικά)", + "Name (English)": "Όνομα (Αγγλικά)", + "Address": "Διεύθυνση", + "Issue Date": "Ημ. Έκδοσης", + "Expiry Date": "Ημ. Λήξης", + "License Categories": "Κατηγορίες", + "driver_license": "δίπλωμα_οδήγησης", + "Capture an Image of Your Driver License": "Φωτογραφία Διπλώματος", + "ID Documents Back": "Ταυτότητα (Πίσω)", + "National ID": "Ταυτότητα", + "Occupation": "Επάγγελμα", + "Religion": "Θρήσκευμα", + "Full Name (Marital)": "Ονοματεπώνυμο", + "Expiration Date": "Ημερομηνία Λήξης", + "Capture an Image of Your ID Document Back": + "Φωτογραφία Ταυτότητας (Πίσω)", + "ID Documents Front": "Ταυτότητα (Μπροστά)", + "First Name": "Όνομα", + "CardID": "Αρ. Κάρτας", + "Vehicle Details Front": "Στοιχεία Οχήματος (Μπροστά)", + "Plate Number": "Αριθμός Πινακίδας", + "Owner Name": "Ιδιοκτήτης", + "Vehicle Details Back": "Στοιχεία Οχήματος (Πίσω)", + "Make": "Μάρκα", + "Model": "Μοντέλο", + "Year": "Έτος", + "Chassis": "Αριθμός Πλαισίου", + "Color": "Χρώμα", + "Displacement": "Κυβισμός", + "Fuel": "Καύσιμο", + "Tax Expiry Date": "Λήξη Τελών", + "Inspection Date": "Ημ. ΚΤΕΟ", + "Capture an Image of Your car license back": + "Φωτογραφία Άδειας (Πίσω)", + "Capture an Image of Your Driver's License": "Φωτογραφία Διπλώματος", + "Sign in with Google for easier email and name entry": + "Είσοδος με Google", + "You will choose allow all the time to be ready receive orders": + "Επιλέξτε 'Πάντα' για λήψη παραγγελιών", + "Get to your destination quickly and easily.": + "Φτάστε γρήγορα στον προορισμό.", + "Enjoy a safe and comfortable ride.": "Απολαύστε ασφαλή διαδρομή.", + "Choose Language": "Επιλογή Γλώσσας", + "Pay with Wallet": "Πληρωμή με Πορτοφόλι", + "Invalid MPIN": "Άκυρο MPIN", + "Invalid OTP": "Άκυρο OTP", + "Enter your email address": "Εισάγετε email", + "Please enter Your Email.": "Παρακαλώ εισάγετε Email.", + "Enter your phone number": "Εισάγετε τηλέφωνο", + "Please enter your phone number.": "Παρακαλώ εισάγετε τηλέφωνο.", + "Please enter Your Password.": "Εισάγετε Κωδικό.", + "if you dont have account": "αν δεν έχετε λογαριασμό", + "Register": "Εγγραφή", + "Accept Ride's Terms & Review Privacy Notice": "Αποδοχή Όρων", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "Επιλέγοντας 'Συμφωνώ', αποδέχομαι τους Όρους. Είμαι άνω των 18.", + "First name": "Όνομα", + "Enter your first name": "Εισάγετε όνομα", + "Please enter your first name.": "Παρακαλώ εισάγετε όνομα.", + "Last name": "Επώνυμο", + "Enter your last name": "Εισάγετε επώνυμο", + "Please enter your last name.": "Παρακαλώ εισάγετε επώνυμο.", + "City": "Πόλη", + "Please enter your City.": "Εισάγετε Πόλη.", + "Verify Email": "Επαλήθευση Email", + "We sent 5 digit to your Email provided": "Στείλαμε 5ψήφιο κωδικό", + "5 digit": "5 ψηφία", + "Send Verification Code": "Αποστολή Κωδικού", + "Your Ride Duration is ": "Διάρκεια: ", + "You will be thier in": "Θα είστε εκεί σε", + "You trip distance is": "Απόσταση: ", + "Fee is": "Κόστος: ", + "From : ": "Από: ", + "To : ": "Προς: ", + "Add Promo": "Προσθήκη Προσφοράς", + "Confirm Selection": "Επιβεβαίωση", + "distance is": "απόσταση είναι", + "Privacy Policy": "Πολιτική Απορρήτου", + "Intaleq LLC": "Intaleq LLC", + "Syria's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "Πρωτοποριακή υπηρεσία στην Ελλάδα.", + "Intaleq is the first ride-sharing app in Syria, designed to connect you with the nearest drivers for a quick and convenient travel experience.": + "Το Intaleq συνδέει με τους κοντινότερους οδηγούς.", + "Why Choose Intaleq?": "Γιατί Intaleq;", + "Closest to You": "Δίπλα σας", + "We connect you with the nearest drivers for faster pickups and quicker journeys.": + "Γρηγορότερη εξυπηρέτηση.", + "Uncompromising Security": "Ασφάλεια", + "Lady Captains Available": "Γυναίκες Οδηγοί", + "Recorded Trips (Voice & AI Analysis)": "Καταγεγραμμένες Διαδρομές", + "Fastest Complaint Response": "Άμεση Ανταπόκριση", + "Our dedicated customer service team ensures swift resolution of any issues.": + "Επίλυση θεμάτων άμεσα.", + "Affordable for Everyone": "Οικονομικό", + "Frequently Asked Questions": "Συχνές Ερωτήσεις", + "Getting Started": "Ξεκινώντας", + "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": + "Ανοίξτε την εφαρμογή, εισάγετε προορισμό, πατήστε Αίτημα.", + "Vehicle Options": "Επιλογές Οχήματος", + "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": + "Economy, Comfort, Luxury.", + "Payments": "Πληρωμές", + "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": + "Μετρητά ή Κάρτα.", + "Ride Management": "Διαχείριση", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "Ναι, μπορείτε να ακυρώσετε (ενδέχεται να υπάρξει χρέωση).", + "For Drivers": "Για Οδηγούς", + "Driver Registration": "Εγγραφή", + "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": + "Επικοινωνήστε για εγγραφή.", + "Visit Website/Contact Support": "Ιστοσελίδα/Υποστήριξη", + "Close": "Κλείσιμο", + "We are searching for the nearest driver": "Αναζήτηση οδηγού", + "Communication": "Επικοινωνία", + "How do I communicate with the other party (passenger/driver)?": + "Πώς επικοινωνώ;", + "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": + "Μέσω chat.", + "Safety & Security": "Ασφάλεια", + "What safety measures does Intaleq offer?": "Μέτρα ασφαλείας;", + "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": + "Επαλήθευση, παρακολούθηση, επαφές έκτακτης ανάγκης.", + "Enjoy competitive prices across all trip options, making travel accessible.": + "Ανταγωνιστικές τιμές.", + "Variety of Trip Choices": "Ποικιλία", + "Choose the trip option that perfectly suits your needs and preferences.": + "Επιλέξτε ό,τι σας ταιριάζει.", + "Your Choice, Our Priority": "Προτεραιότητά μας", + "Because we are near, you have the flexibility to choose the ride that works best for you.": + "Ευελιξία επιλογής.", + "duration is": "διάρκεια είναι", + "Setting": "Ρύθμιση", + "Find answers to common questions": "Απαντήσεις", + "I don't need a ride anymore": "Δεν χρειάζομαι διαδρομή", + "I was just trying the application": "Δοκίμαζα την εφαρμογή", + "No driver accepted my request": "Κανείς δεν αποδέχτηκε", + "I added the wrong pick-up/drop-off location": "Λάθος τοποθεσία", + "I don't have a reason": "Κανένας λόγος", + "Can we know why you want to cancel Ride ?": "Γιατί ακυρώνετε;", + "Cancel Ride": "Ακύρωση", + "Add Payment Method": "Προσθήκη Τρόπου Πληρωμής", + "Ride Wallet": "Πορτοφόλι", + "Payment Method": "Τρόπος Πληρωμής", + "Type here Place": "Πληκτρολογήστε μέρος", + "Are You sure to ride to": "Σίγουρα προς", + "Confirm": "Επιβεβαίωση", + "You are Delete": "Διαγραφή", + "Deleted": "Διαγράφηκε", + "You Dont Have Any places yet !": "Κανένα μέρος ακόμα!", + "From : Current Location": "Από: Τρέχουσα Τοποθεσία", + "My Cared": "Οι Κάρτες Μου", + "Add Card": "Προσθήκη Κάρτας", + "Add Credit Card": "Προσθήκη Πιστωτικής", + "Please enter the cardholder name": "Όνομα κατόχου", + "Please enter the expiry date": "Ημερομηνία λήξης", + "Please enter the CVV code": "Κωδικός CVV", + "Go To Favorite Places": "Μετάβαση στα Αγαπημένα", + "Go to this Target": "Μετάβαση στον Προορισμό", + "My Profile": "Το Προφίλ μου", + "Are you want to go to this site": "Θέλετε να πάτε εδώ;", + "MyLocation": "Η Τοποθεσία Μου", + "my location": "τοποθεσία μου", + "Target": "Στόχος", + "You Should choose rate figure": "Επιλέξτε βαθμολογία", + "Login Captin": "Είσοδος Οδηγού", + "Register Captin": "Εγγραφή Οδηγού", + "Send Verfication Code": "Αποστολή Κωδικού", + "KM": "Χλμ", + "End Ride": "Τέλος Διαδρομής", + "Minute": "Λεπτό", + "Go to passenger Location now": "Πηγαίνετε στον Επιβάτη", + "Duration of the Ride is ": "Διάρκεια: ", + "Distance of the Ride is ": "Απόσταση: ", + "Name of the Passenger is ": "Όνομα Επιβάτη: ", + "Hello this is Captain": "Γεια σας, ο Οδηγός", + "Start the Ride": "Έναρξη", + "Please Wait If passenger want To Cancel!": + "Περιμένετε μήπως ακυρώσει ο επιβάτης!", + "Total Duration:": "Συνολική Διάρκεια:", + "Active Duration:": "Ενεργή Διάρκεια:", + "Waiting for Captin ...": "Αναμονή Οδηγού...", + "Age is ": "Ηλικία: ", + "Rating is ": "Βαθμολογία: ", + " to arrive you.": " για να φτάσει.", + "Tariff": "Τιμοκατάλογος", + "Settings": "Ρυθμίσεις", + "Feed Back": "Σχόλια", + "Please enter a valid 16-digit card number": + "Εισάγετε έγκυρο αριθμό κάρτας", + "Add Phone": "Προσθήκη Τηλεφώνου", + "Please enter a phone number": "Εισάγετε τηλέφωνο", + "You dont Add Emergency Phone Yet!": + "Δεν προσθέσατε τηλέφωνο έκτακτης ανάγκης!", + "You will arrive to your destination after ": "Άφιξη σε ", + "You can cancel Ride now": "Μπορείτε να ακυρώσετε", + "You Can cancel Ride After Captain did not come in the time": + "Ακύρωση αν ο οδηγός αργήσει", + "If you in Car Now. Press Start The Ride": + "Αν είστε στο όχημα, πατήστε Έναρξη", + "You Dont Have Any amount in": "Δεν έχετε υπόλοιπο στο", + "Wallet!": "Πορτοφόλι!", + "You Have": "Έχετε", + "Save Credit Card": "Αποθήκευση Κάρτας", + "Show Promos": "Εμφάνιση Προσφορών", + "10 and get 4% discount": "10 και κερδίστε 4% έκπτωση", + "20 and get 6% discount": "20 και κερδίστε 6% έκπτωση", + "40 and get 8% discount": "40 και κερδίστε 8% έκπτωση", + "100 and get 11% discount": "100 και κερδίστε 11% έκπτωση", + "Pay with Your PayPal": "Πληρωμή με PayPal", + "You will choose one of above !": "Επιλέξτε ένα!", + "Edit Profile": "Επεξεργασία", + "Copy this Promo to use it in your Ride!": "Αντιγράψτε τον κωδικό!", + "To change some Settings": "Αλλαγή Ρυθμίσεων", + "Order Request Page": "Σελίδα Αιτήματος", + "Rouats of Trip": "Διαδρομές", + "Passenger Name is ": "Όνομα Επιβάτη: ", + "Total From Passenger is ": "Σύνολο από Επιβάτη: ", + "Duration To Passenger is ": "Διάρκεια προς Επιβάτη: ", + "Distance To Passenger is ": "Απόσταση προς Επιβάτη: ", + "Total For You is ": "Σύνολο για Εσάς: ", + "Distance is ": "Απόσταση: ", + " KM": " Χλμ", + "Duration of Trip is ": "Διάρκεια: ", + " Minutes": " Λεπτά", + "Apply Order": "Αποδοχή", + "Refuse Order": "Απόρριψη", + "Rate Captain": "Βαθμολογία Οδηγού", + "Enter your Note": "Σχόλιο", + "Type something...": "Γράψτε κάτι...", + "Submit rating": "Υποβολή", + "Rate Passenger": "Βαθμολογία Επιβάτη", + "Ride Summary": "Σύνοψη", + "welcome_message": "Καλώς ήρθατε στο Intaleq!", + "app_description": "Ασφαλής μετακίνηση.", + "get_to_destination": "Φτάστε στον προορισμό.", + "get_a_ride": "Βρείτε διαδρομή.", + "safe_and_comfortable": "Ασφάλεια και άνεση.", + "committed_to_safety": "Δέσμευση στην ασφάλεια.", + "your ride is Accepted": "Η διαδρομή έγινε δεκτή", + "Driver is waiting at pickup.": "Ο οδηγός περιμένει.", + "Driver is on the way": "Ο οδηγός έρχεται", + "Contact Options": "Επικοινωνία", + "Send a custom message": "Προσαρμοσμένο μήνυμα", + "Type your message": "Γράψτε μήνυμα", + "I will go now": "Πηγαίνω τώρα", + "You Have Tips": "Έχετε φιλοδώρημα", + " tips\nTotal is": " φιλοδώρημα\nΣύνολο", + "Your fee is ": "Η χρέωση είναι ", + "Do you want to pay Tips for this Driver": + "Θέλετε να δώσετε φιλοδώρημα;", + "Tip is ": "Φιλοδώρημα: ", + "Are you want to wait drivers to accept your order": + "Θέλετε να περιμένετε;", + "This price is fixed even if the route changes for the driver.": + "Σταθερή τιμή.", + "The price may increase if the route changes.": + "Η τιμή μπορεί να αυξηθεί.", + "The captain is responsible for the route.": + "Ο οδηγός είναι υπεύθυνος για τη διαδρομή.", + "We are search for nearst driver": "Αναζήτηση οδηγού", + "Your order is being prepared": "Προετοιμασία", + "The drivers are reviewing your request": "Εξέταση αιτήματος", + "Your order sent to drivers": "Απεστάλη στους οδηγούς", + "You can call or record audio of this trip": + "Μπορείτε να καλέσετε ή να ηχογραφήσετε", + "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": + "Η διαδρομή ξεκίνησε! Μοιραστείτε την ή ηχογραφήστε.", + "Camera Access Denied.": "Άρνηση Πρόσβασης Κάμερας.", + "Open Settings": "Ρυθμίσεις", + "GPS Required Allow !.": "Απαιτείται GPS!", + "Your Account is Deleted": "Ο Λογαριασμός Διαγράφηκε", + "Are you sure to delete your account?": "Σίγουρα διαγραφή;", + "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": + "Τα δεδομένα θα διαγραφούν σε 2 εβδομάδες.", + "Enter Your First Name": "Εισάγετε Όνομα", + "Are you Sure to LogOut?": "Σίγουρα Αποσύνδεση;", + "Email Wrong": "Λάθος Email", + "Email you inserted is Wrong.": "Το email είναι λάθος.", + "You have finished all times ": "Τέλος προσπαθειών", + "if you want help you can email us here": + "Στείλτε μας email για βοήθεια", + "Thanks": "Ευχαριστώ", + "Email Us": "Στείλτε Email", + "I cant register in your app in face detection ": + "Πρόβλημα με ανίχνευση προσώπου", + "Hi": "Γεια", + "No face detected": "Δεν ανιχνεύτηκε πρόσωπο", + "Image detecting result is ": "Αποτέλεσμα: ", + "from 3 times Take Attention": "από 3 φορές, Προσοχή", + "Be sure for take accurate images please\nYou have": + "Βγάλτε καθαρές φωτογραφίες\nΈχετε", + "image verified": "επαληθεύτηκε", + "Next": "Επόμενο", + "There is no help Question here": "Δεν υπάρχει ερώτηση βοήθειας", + "You dont have Points": "Δεν έχετε Πόντους", + "You Are Stopped For this Day !": "Αποκλεισμός για σήμερα!", + "You must be charge your Account": "Φορτίστε τον λογαριασμό", + "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": + "Απορρίψατε 3 διαδρομές.\nΤα λέμε αύριο!", + "Recharge my Account": "Φόρτιση", + "Ok , See you Tomorrow": "ΟΚ, τα λέμε αύριο", + "You are Stopped": "Αποκλεισμός", + "Connected": "Συνδέθηκε", + "Not Connected": "Δεν συνδέθηκε", + "Your are far from passenger location": + "Είστε μακριά από τον επιβάτη", + "go to your passenger location before\nPassenger cancel trip": + "Πηγαίνετε στον επιβάτη πριν ακυρώσει", + "You will get cost of your work for this trip": + "Θα πληρωθείτε για τη διαδρομή", + " in your wallet": " στο πορτοφόλι", + "you gain": "κερδίσατε", + "Order Cancelled by Passenger": "Ακύρωση από Επιβάτη", + "Feedback data saved successfully": "Αποθηκεύτηκε", + "No Promo for today .": "Καμία Προσφορά σήμερα.", + "Select your destination": "Επιλογή προορισμού", + "Search for your Start point": "Σημείο εκκίνησης", + "Search for waypoint": "Στάση", + "Current Location": "Τρέχουσα Τοποθεσία", + "Add Location 1": "Προσθήκη Τοποθεσίας 1", + "You must Verify email !.": "Επαληθεύστε το email!", + "Cropper": "Περικοπή", + "Saved Sucssefully": "Αποθηκεύτηκε Επιτυχώς", + "Select Date": "Επιλογή Ημερομηνίας", + "Birth Date": "Ημ. Γέννησης", + "Ok": "ΟΚ", + "the 500 points equal 30 JOD": "500 πόντοι ισούνται με 30 €", + "the 500 points equal 30 JOD for you \nSo go and gain your money": + "500 πόντοι = 30 €\nΚερδίστε χρήματα", + "token updated": "token ενημερώθηκε", + "Add Location 2": "Προσθήκη Τοποθεσίας 2", + "Add Location 3": "Προσθήκη Τοποθεσίας 3", + "Add Location 4": "Προσθήκη Τοποθεσίας 4", + "Waiting for your location": "Αναμονή τοποθεσίας", + "Search for your destination": "Αναζήτηση προορισμού", + "Hi! This is": "Γεια! Είμαι", + " I am using": " χρησιμοποιώ", + " to ride with": " για διαδρομή με", + " as the driver.": " ως οδηγό.", + "is driving a ": "οδηγεί ", + " with license plate ": " με πινακίδα ", + " I am currently located at ": " Βρίσκομαι στο ", + "Please go to Car now ": "Πηγαίνετε στο όχημα τώρα ", + "You will receive a code in WhatsApp Messenger": + "Θα λάβετε κωδικό στο WhatsApp", + "If you need assistance, contact us": "Επικοινωνήστε για βοήθεια", + "Promo Ended": "Η Προσφορά Έληξε", + "Enter the promo code and get": "Εισάγετε κωδικό και κερδίστε", + "DISCOUNT": "ΕΚΠΤΩΣΗ", + "No wallet record found": "Δεν βρέθηκε πορτοφόλι", + "for": "για", + "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": + "Το Intaleq είναι η ασφαλέστερη εφαρμογή. Χαμηλή προμήθεια 8%. Ασφάλεια και συντήρηση.", + "You can contact us during working hours from 12:00 - 19:00.": + "Επικοινωνήστε 12:00 - 19:00.", + "Choose a contact option": "Επιλογή επικοινωνίας", + "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": + "Ώρες 12:00 - 19:00.\nΣτείλτε WhatsApp ή email.", + "Promo code copied to clipboard!": "Αντιγράφηκε!", + "Copy Code": "Αντιγραφή", + "Your invite code was successfully applied!": "Εφαρμόστηκε επιτυχώς!", + "Payment Options": "Επιλογές Πληρωμής", + "wait 1 minute to receive message": "περιμένετε 1 λεπτό", + "You have copied the promo code.": "Αντιγράψατε τον κωδικό.", + "Select Payment Amount": "Επιλογή Ποσού", + "The promotion period has ended.": "Η προσφορά έληξε.", + "Promo Code Accepted": "Κωδικός Δεκτός", + "Tap on the promo code to copy it!": "Πατήστε για αντιγραφή!", + "Lowest Price Achieved": "Χαμηλότερη Τιμή", + "Cannot apply further discounts.": "Δεν υπάρχουν άλλες εκπτώσεις.", + "Promo Already Used": "Χρησιμοποιήθηκε ήδη", + "Invitation Used": "Πρόσκληση Χρησιμοποιήθηκε", + "You have already used this promo code.": + "Χρησιμοποιήσατε τον κωδικό.", + "Insert Your Promo Code": "Εισαγωγή Κωδικού", + "Enter promo code here": "Εισάγετε κωδικό εδώ", + "Please enter a valid promo code": "Εισάγετε έγκυρο κωδικό", + "Awfar Car": "Οικονομικό Όχημα", + "Old and affordable, perfect for budget rides.": + "Οικονομικό και προσιτό.", + " If you need to reach me, please contact the driver directly at": + " Επικοινωνήστε με τον οδηγό στο", + "No Car or Driver Found in your area.": "Δεν βρέθηκε όχημα ή οδηγός.", + "Please Try anther time ": "Προσπαθήστε ξανά ", + "There no Driver Aplly your order sorry for that ": + "Κανείς δεν δέχτηκε, συγγνώμη ", + "Trip Cancelled": "Διαδρομή Ακυρώθηκε", + "The Driver Will be in your location soon .": + "Ο Οδηγός φτάνει σύντομα.", + "The distance less than 500 meter.": "Απόσταση κάτω από 500μ.", + "Promo End !": "Τέλος Προσφοράς!", + "There is no notification yet": "Καμία ειδοποίηση", + "Use Touch ID or Face ID to confirm payment": + "Χρήση Touch ID ή Face ID", + "Contact us for any questions on your order.": + "Επικοινωνήστε για ερωτήσεις.", + "Pyament Cancelled .": "Πληρωμή Ακυρώθηκε.", + "type here": "γράψτε εδώ", + "Scan Driver License": "Σάρωση Διπλώματος", + "Please put your licence in these border": + "Τοποθετήστε το δίπλωμα στο πλαίσιο", + "Camera not initialized yet": "Η κάμερα δεν άνοιξε", + "Take Image": "Λήψη Φωτογραφίας", + "AI Page": "Σελίδα AI", + "Take Picture Of ID Card": "Φωτογραφία Ταυτότητας", + "Take Picture Of Driver License Card": "Φωτογραφία Διπλώματος", + "We are process picture please wait ": + "Επεξεργασία εικόνας, περιμένετε ", + "There is no data yet.": "Δεν υπάρχουν δεδομένα.", + "Name :": "Όνομα :", + "Drivers License Class: ": "Κατηγορία Διπλώματος: ", + "Document Number: ": "Αριθμός Εγγράφου: ", + "Address: ": "Διεύθυνση: ", + "Height: ": "Ύψος: ", + "Expiry Date: ": "Λήξη: ", + "Date of Birth: ": "Ημ. Γέννησης: ", + "You can't continue with us .\nYou should renew Driver license": + "Πρέπει να ανανεώσετε το δίπλωμα", + "Detect Your Face ": "Ανίχνευση Προσώπου ", + "Go to next step\nscan Car License.": "Επόμενο βήμα\nσάρωση Άδειας.", + "Name in arabic": "Όνομα (Τοπικό)", + "Drivers License Class": "Κατηγορία", + "Selected Date": "Επιλεγμένη Ημερομηνία", + "Select Time": "Επιλογή Ώρας", + "Selected Time": "Επιλεγμένη Ώρα", + "Selected Date and Time": "Επιλογή", + "Lets check Car license ": "Έλεγχος Άδειας ", + "Car": "Όχημα", + "Plate": "Πινακίδα", + "Rides": "Διαδρομές", + "Selected driver": "Επιλεγμένος οδηγός", + "Lets check License Back Face": "Έλεγχος Πίσω Όψης", + "Car License Card": "Άδεια Κυκλοφορίας", + "No image selected yet": "Δεν επιλέχθηκε εικόνα", + "Made :": "Κατασκευαστής :", + "model :": "Μοντέλο :", + "VIN :": "Πλαίσιο :", + "year :": "Έτος :", + "ُExpire Date": "Ημ. Λήξης", + "Login Driver": "Είσοδος Οδηγού", + "Password must br at least 6 character.": "Τουλάχιστον 6 χαρακτήρες.", + "if you don't have account": "αν δεν έχετε λογαριασμό", + "Here recorded trips audio": "Ηχογραφήσεις διαδρομών", + "Register as Driver": "Εγγραφή ως Οδηγός", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": + "Επιλέγοντας \"Συμφωνώ\", αποδέχομαι τους Όρους Χρήσης και ", + "Log Out Page": "Αποσύνδεση", + "Log Off": "Αποσύνδεση", + "Register Driver": "Εγγραφή Οδηγού", + "Verify Email For Driver": "Επαλήθευση Email Οδηγού", + "Admin DashBoard": "Πίνακας Ελέγχου", + "Your name": "Το όνομά σας", + "your ride is applied": "η διαδρομή καταχωρήθηκε", + "H and": "H και", + "JOD": "€", + "m": "λ", + "We search nearst Driver to you": "Αναζήτηση κοντινού οδηγού", + "please wait till driver accept your order": "περιμένετε την αποδοχή", + "No accepted orders? Try raising your trip fee to attract riders.": + "Αυξήστε την προσφορά σας.", + "You should select one": "Επιλέξτε ένα", + "The driver accept your order for": "Ο οδηγός δέχτηκε για", + "The driver on your way": "Ο οδηγός έρχεται", + "Total price from ": "Συνολική τιμή από ", + "Order Details Intaleq": "Λεπτομέρειες", + "Selected file:": "Επιλεγμένο αρχείο:", + "Your trip cost is": "Κόστος διαδρομής", + "this will delete all files from your device": + "διαγραφή όλων των αρχείων", + "Exclusive offers and discounts always with the Intaleq app": + "Αποκλειστικές προσφορές", + "Submit Question": "Υποβολή Ερώτησης", + "Please enter your Question.": "Εισάγετε Ερώτηση.", + "Help Details": "Λεπτομέρειες Βοήθειας", + "No trip yet found": "Δεν βρέθηκε διαδρομή", + "No Response yet.": "Καμία απάντηση.", + " You Earn today is ": " Κέρδος σήμερα: ", + " You Have in": " Έχετε στο", + "Total points is ": "Σύνολο πόντων: ", + "Total Connection Duration:": "Διάρκεια Σύνδεσης:", + "Passenger name : ": "Όνομα Επιβάτη: ", + "Cost Of Trip IS ": "Κόστος Διαδρομής: ", + "Arrival time": "Ώρα άφιξης", + "arrival time to reach your point": "ώρα άφιξης στο σημείο", + "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Τιμή βάσει χρόνου και απόστασης.", + "Hello this is Driver": "Γεια σας, ο Οδηγός", + "Is the Passenger in your Car ?": "Είναι ο Επιβάτης στο Όχημα;", + "Please wait for the passenger to enter the car before starting the trip.": + "Περιμένετε να μπει ο επιβάτης.", + "No ,still Waiting.": "Όχι, αναμονή.", + "I arrive you": "Έφτασα", + "I Arrive your site": "Έφτασα στο σημείο", + "You are not in near to passenger location": + "Δεν είστε κοντά στον επιβάτη", + "please go to picker location exactly": + "πηγαίνετε ακριβώς στο σημείο παραλαβής", + "You Can Cancel Trip And get Cost of Trip From": + "Ακύρωση και λήψη κόστους από", + "Are you sure to cancel?": "Σίγουρα ακύρωση;", + "Insert Emergincy Number": "Εισαγωγή SOS Αριθμού", + "Best choice for comfort car and flexible route and stops point": + "Άνετο αμάξι, ευέλικτη διαδρομή", + "Insert": "Εισαγωγή", + "This is for scooter or a motorcycle.": "Για σκούτερ ή μοτοσυκλέτα.", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "Απευθείας διαδρομή, σταθερή τιμή.", + "You can decline a request without any cost": "Απόρριψη χωρίς χρέωση", + "Perfect for adventure seekers who want to experience something new and exciting": + "Για όσους ψάχνουν περιπέτεια", + "My current location is:": "Η τοποθεσία μου:", + "and I have a trip on": "και έχω διαδρομή στο", + "App with Passenger": "Εφαρμογή με Επιβάτη", + "You will be pay the cost to driver or we will get it from you on next trip": + "Πληρωμή στον οδηγό ή στην επόμενη διαδρομή", + "Trip has Steps": "Διαδρομή με Στάσεις", + "Distance from Passenger to destination is ": + "Απόσταση Επιβάτη από προορισμό: ", + "price is": "τιμή είναι", + "This ride type does not allow changes to the destination or additional stops": + "Χωρίς αλλαγές/στάσεις", + "This price may be changed": "Η τιμή μπορεί να αλλάξει", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "Χωρίς SIM; Καλέστε μέσω εφαρμογής.", + "This ride type allows changes, but the price may increase": + "Αλλαγές επιτρέπονται, η τιμή ίσως αυξηθεί", + "Select one message": "Επιλογή μηνύματος", + "I'm waiting for you": "Σας περιμένω", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "Υπερβολική ταχύτητα (>100 χλμ/ώ). Παρακαλώ επιβραδύνετε.", + "Warning: Intaleqing detected!": + "Προειδοποίηση: Υπερβολική ταχύτητα!", + "Please help! Contact me as soon as possible.": + "Βοήθεια! Επικοινωνήστε άμεσα.", + "Share Trip Details": "Κοινοποίηση Λεπτομερειών", + "Car Plate is ": "Πινακίδα: ", + "the 300 points equal 300 L.E for you \nSo go and gain your money": + "300 πόντοι = 300 €\nΚερδίστε χρήματα", + "the 300 points equal 300 L.E": "300 πόντοι = 300 €", + "The payment was not approved. Please try again.": + "Η πληρωμή δεν εγκρίθηκε. Προσπαθήστε ξανά.", + "Payment Failed": "Αποτυχία Πληρωμής", + "This is a scheduled notification.": "Προγραμματισμένη ειδοποίηση.", + "An error occurred during the payment process.": "Σφάλμα πληρωμής.", + "The payment was approved.": "Εγκρίθηκε.", + "Payment Successful": "Επιτυχής Πληρωμή", + "No ride found yet": "Δεν βρέθηκε διαδρομή", + "Accept Order": "Αποδοχή", + "Bottom Bar Example": "Παράδειγμα", + "Driver phone": "Τηλέφωνο Οδηγού", + "Statistics": "Στατιστικά", + "Origin": "Αφετηρία", + "Destination": "Προορισμός", + "Driver Name": "Όνομα Οδηγού", + "Driver Car Plate": "Πινακίδα Οδηγού", + "Available for rides": "Διαθέσιμος", + "Scan Id": "Σάρωση Ταυτότητας", + "Camera not initilaized yet": "Κάμερα μη έτοιμη", + "Scan ID MklGoogle": "Σάρωση Ταυτότητας", + "Language": "Γλώσσα", + "Jordan": "Ιορδανία", + "USA": "ΗΠΑ", + "Egypt": "Αίγυπτος", + "Turkey": "Τουρκία", + "Saudi Arabia": "Σαουδική Αραβία", + "Qatar": "Κατάρ", + "Bahrain": "Μπαχρέιν", + "Kuwait": "Κουβέιτ", + "But you have a negative salary of": "Αρνητικό υπόλοιπο:", + "Promo Code": "Κωδικός Προσφοράς", + "Your trip distance is": "Απόσταση διαδρομής:", + "Enter promo code": "Εισάγετε κωδικό", + "You have promo!": "Έχετε προσφορά!", + "Cost Duration": "Κόστος Διάρκειας", + "Duration is": "Διάρκεια:", + "Leave": "Αποχώρηση", + "Join": "Συμμετοχή", + "Heading your way now. Please be ready.": + "Έρχομαι. Να είστε έτοιμοι.", + "Approaching your area. Should be there in 3 minutes.": + "Πλησιάζω. Εκεί σε 3 λεπτά.", + "There's heavy traffic here. Can you suggest an alternate pickup point?": + "Κίνηση. Άλλο σημείο παραλαβής;", + "This ride is already taken by another driver.": + "Η διαδρομή αναλήφθηκε.", + "You Should be select reason.": "Επιλέξτε λόγο.", + "Waiting for Driver ...": "Αναμονή Οδηγού...", + "Latest Recent Trip": "Τελευταία Διαδρομή", + "from your list": "από τη λίστα", + "Do you want to change Work location": "Αλλαγή τοποθεσίας Εργασίας;", + "Do you want to change Home location": "Αλλαγή τοποθεσίας Σπιτιού;", + "We Are Sorry That we dont have cars in your Location!": + "Λυπούμαστε, κανένα όχημα στην περιοχή!", + "Choose from Map": "Επιλογή από Χάρτη", + "Pick your ride location on the map - Tap to confirm": + "Επιλέξτε σημείο στον χάρτη - Πατήστε για επιβεβαίωση", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "Το Intaleq είναι ασφαλές και αξιόπιστο.", + "With Intaleq, you can get a ride to your destination in minutes.": + "Βρείτε διαδρομή σε λεπτά.", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "Δέσμευση στην ασφάλεια, ελεγμένοι οδηγοί.", + "Pick from map": "Επιλογή από χάρτη", + "No Car in your site. Sorry!": "Κανένα όχημα. Συγγνώμη!", + "Nearest Car for you about ": "Κοντινότερο όχημα σε περίπου ", + "From :": "Από:", + "Get Details of Trip": "Λεπτομέρειες", + "If you want add stop click here": "Για προσθήκη στάσης πατήστε εδώ", + "Where you want go ": "Πού θέλετε να πάτε ", + "My Card": "Η Κάρτα Μου", + "Start Record": "Έναρξη Εγγραφής", + "History of Trip": "Ιστορικό", + "Helping Center": "Κέντρο Βοήθειας", + "Record saved": "Αποθηκεύτηκε", + "Trips recorded": "Καταγεγραμμένες", + "Select Your Country": "Επιλογή Χώρας", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "Επιλέξτε χώρα για ακριβείς πληροφορίες.", + "Are you sure to delete recorded files": "Διαγραφή αρχείων;", + "Select recorded trip": "Επιλογή διαδρομής", + "Card Number": "Αριθμός Κάρτας", + "Hi, Where to ": "Γεια, Πού πάτε ", + "Pick your destination from Map": "Προορισμός από Χάρτη", + "Add Stops": "Προσθήκη Στάσεων", + "Get Direction": "Οδηγίες", + "Add Location": "Προσθήκη Τοποθεσίας", + "Switch Rider": "Αλλαγή Επιβάτη", + "You will arrive to your destination after timer end.": + "Άφιξη μετά το πέρας του χρόνου.", + "You can cancel trip": "Μπορείτε να ακυρώσετε", + "The driver waitting you in picked location .": "Ο οδηγός περιμένει.", + "Pay with Your": "Πληρωμή με", + "Pay with Credit Card": "Πληρωμή με Κάρτα", + "Show Promos to Charge": "Προσφορές Φόρτισης", + "Point": "Πόντος", + "How many hours would you like to wait?": "Πόσες ώρες αναμονής;", + "Driver Wallet": "Πορτοφόλι Οδηγού", + "Choose between those Type Cars": "Επιλογή Τύπου Οχήματος", + "hour": "ώρα", + "Select Waiting Hours": "Ώρες Αναμονής", + "Total Points is": "Σύνολο Πόντων", + "You will receive a code in SMS message": "Θα λάβετε SMS", + "Done": "Τέλος", + "Total Budget from trips is ": "Σύνολο εσόδων: ", + "Total Amount:": "Συνολικό Ποσό:", + "Total Budget from trips by\nCredit card is ": + "Σύνολο εσόδων (Κάρτα): ", + "This amount for all trip I get from Passengers": "Ποσό από Επιβάτες", + "Pay from my budget": "Πληρωμή από υπόλοιπο", + "This amount for all trip I get from Passengers and Collected For me in": + "Ποσό που εισπράχθηκε", + "You can buy points from your budget": "Αγορά πόντων από υπόλοιπο", + "insert amount": "εισαγωγή ποσού", + "You can buy Points to let you online\nby this list below": + "Αγορά Πόντων για online", + "Create Wallet to receive your money": "Δημιουργία Πορτοφολιού", + "Enter your feedback here": "Εισάγετε σχόλια", + "Please enter your feedback.": "Παρακαλώ εισάγετε σχόλια.", + "Feedback": "Σχόλια", + "Submit ": "Υποβολή ", + "Click here to Show it in Map": "Προβολή στον Χάρτη", + "Canceled": "Ακυρώθηκε", + "No I want": "Όχι θέλω", + "Email is": "Email:", + "Phone Number is": "Τηλέφωνο:", + "Date of Birth is": "Ημ. Γέννησης:", + "Sex is ": "Φύλο: ", + "Car Details": "Στοιχεία Οχήματος", + "VIN is": "Πλαίσιο:", + "Color is ": "Χρώμα: ", + "Make is ": "Μάρκα: ", + "Model is": "Μοντέλο:", + "Year is": "Έτος:", + "Expiration Date ": "Λήξη: ", + "Edit Your data": "Επεξεργασία", + "write vin for your car": "εισάγετε πλαίσιο", + "VIN": "Πλαίσιο", + "Device Change Detected": "Αλλαγή Συσκευής", + "Please verify your identity": "Επαλήθευση ταυτότητας", + "write Color for your car": "εισάγετε χρώμα", + "write Make for your car": "εισάγετε μάρκα", + "write Model for your car": "εισάγετε μοντέλο", + "write Year for your car": "εισάγετε έτος", + "write Expiration Date for your car": "εισάγετε ημερομηνία λήξης", + "Tariffs": "Χρεώσεις", + "Minimum fare": "Ελάχιστη χρέωση", + "Maximum fare": "Μέγιστη χρέωση", + "Flag-down fee": "Σημαία", + "Including Tax": "Με ΦΠΑ", + "BookingFee": "Κόστος Κράτησης", + "Morning": "Πρωί", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "07:30 - 10:30", + "Evening": "Απόγευμα", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "12:00 - 15:00", + "Night": "Βράδυ", + "You have in account": "Έχετε στον λογαριασμό", + "Select Country": "Επιλογή Χώρας", + "Ride Today : ": "Διαδρομή Σήμερα: ", + "After this period\nYou can't cancel!": + "Μετά από αυτό\nΔεν μπορείτε να ακυρώσετε!", + "from 23:59 till 05:30": "23:59 - 05:30", + "Rate Driver": "Βαθμολογία Οδηγού", + "Total Cost is ": "Συνολικό Κόστος: ", + "Write note": "Σημείωση", + "Time to arrive": "Ώρα άφιξης", + "Ride Summaries": "Συνόψεις", + "Total Cost": "Συνολικό Κόστος", + "Average of Hours of": "Μέσος όρος ωρών", + " is ON for this month": " είναι ON αυτόν τον μήνα", + "Days": "Ημέρες", + "Total Hours on month": "Σύνολο Ωρών μήνα", + "Counts of Hours on days": "Ώρες ανά ημέρα", + "OrderId": "ID Παραγγελίας", + "created time": "ώρα δημιουργίας", + "Intaleq Over": "Τέλος Intaleq", + "I will slow down": "Θα επιβραδύνω", + "Map Passenger": "Χάρτης Επιβάτη", + "Be Slowly": "Πιο αργά", + "If you want to make Google Map App run directly when you apply order": + "Άμεσο άνοιγμα Google Maps", + "You can change the language of the app": "Αλλαγή γλώσσας εφαρμογής", + "Your Budget less than needed": + "Υπόλοιπο χαμηλότερο του απαιτούμενου", + "You can change the Country to get all features": + "Αλλάξτε Χώρα για όλα τα χαρακτηριστικά", + "Change Country": "Αλλαγή Χώρας" + }, + "ur": { + "Order": "آرڈر", + "OrderVIP": "VIP آرڈر", + "Cancel Trip": "سفر منسوخ کریں", + "Passenger Cancel Trip": "مسافر نے سفر منسوخ کر دیا", + "VIP Order": "VIP آرڈر", + "Hi ,I Arrive your site": "سلام، میں آپ کی لوکیشن پر پہنچ گیا ہوں", + "The driver accepted your trip": + "ڈرائیور نے آپ کا سفر قبول کر لیا ہے", + "message From passenger": "مسافر کا پیغام", + "Cancel": "منسوخ کریں", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "سفر منسوخ ہو گیا۔ سفر کی لاگت آپ کے والٹ میں شامل کر دی جائے گی۔", + "token change": "ٹوکن کی تبدیلی", + "face detect": "چہرے کی شناخت", + "Face Detection Result": "چہرے کی شناخت کا نتیجہ", + "similar": "ملتا جلتا", + "not similar": "مختلف", + "Hi ,I will go now": "سلام، میں اب جا رہا ہوں", + "Passenger come to you": "مسافر آپ کی طرف آ رہا ہے", + "Call Income": "آنے والی کال", + "Call Income from Passenger": "مسافر کی طرف سے کال", + "Criminal Document Required": "پولیس کلیئرنس درکار ہے", + "You should have upload it .": "آپ کو اسے اپ لوڈ کرنا چاہیے۔", + "Call End": "کال ختم", + "The order has been accepted by another driver.": + "آرڈر دوسرے ڈرائیور نے قبول کر لیا ہے۔", + "The order Accepted by another Driver": + "آرڈر دوسرے ڈرائیور نے قبول کر لیا", + "We regret to inform you that another driver has accepted this order.": + "ہمیں افسوس ہے کہ کسی اور ڈرائیور نے یہ آرڈر قبول کر لیا ہے۔", + "Driver Applied the Ride for You": + "ڈرائیور نے آپ کے لیے سفر کی درخواست دی", + "Applied": "درخواست دی گئی", + "Pay by Sham Cash": "Sham Cash کے ذریعے ادائیگی", + "Pay with Debit Card": "ڈیبٹ کارڈ سے ادائیگی", + "Please go to Car Driver": "براہ کرم ڈرائیور کے پاس جائیں", + "Ok I will go now.": "ٹھیک ہے، میں اب جا رہا ہوں۔", + "Accepted Ride": "قبول شدہ سفر", + "Driver Accepted the Ride for You": + "ڈرائیور نے آپ کے لیے سفر قبول کر لیا", + "Promo": "پرومو", + "Show latest promo": "تازہ ترین پرومو دکھائیں", + "Trip Monitoring": "سفر کی نگرانی", + "Driver Is Going To Passenger": "ڈرائیور مسافر کی طرف جا رہا ہے", + "Please stay on the picked point.": + "براہ کرم منتخب کردہ مقام پر رہیں۔", + "message From Driver": "ڈرائیور کا پیغام", + "Trip is Begin": "سفر شروع ہو گیا", + "Cancel Trip from driver": "ڈرائیور کی طرف سے منسوخی", + "We will look for a new driver.\nPlease wait.": + "ہم نئے ڈرائیور کی تلاش کر رہے ہیں۔\nبراہ کرم انتظار کریں۔", + "The driver canceled your ride.": + "ڈرائیور نے آپ کا سفر منسوخ کر دیا۔", + "Driver Finish Trip": "ڈرائیور نے سفر مکمل کر لیا", + "you will pay to Driver": "آپ ڈرائیور کو ادا کریں گے", + "Don’t forget your personal belongings.": + "اپنا ذاتی سامان نہ بھولیں۔", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "براہ کرم یقینی بنائیں کہ آپ کے پاس اپنا تمام سامان موجود ہے اور اگر کوئی بقایا رقم ہے تو وہ آپ کے والٹ میں شامل کر دی گئی ہے۔ Intaleq ایپ منتخب کرنے کا شکریہ۔", + "Finish Monitor": "نگرانی ختم کریں", + "Trip finished": "سفر مکمل ہو گیا", + "Call Income from Driver": "ڈرائیور کی طرف سے کال", + "Driver Cancelled Your Trip": "ڈرائیور نے آپ کا سفر منسوخ کر دیا", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "آپ ڈرائیور کے وقت کی قیمت ادا کریں گے، اپنا Intaleq والٹ دیکھیں", + "Order Applied": "آرڈر لاگو ہو گیا", + "welcome to intaleq": "Intaleq میں خوش آمدید", + "login or register subtitle": + "لاگ ان یا رجسٹر کرنے کے لیے اپنا موبائل نمبر درج کریں", + "An application error occurred.": "ایپلیکیشن میں خرابی پیش آ گئی۔", + "Submission Failed": "جمع کرانا ناکام ہو گیا", + "Your complaint has been submitted.": "آپ کی شکایت جمع کر دی گئی ہے۔", + "Failed to connect to the server. Please try again.": + "سرور سے رابطہ کرنے میں ناکامی۔ براہ کرم دوبارہ کوشش کریں۔", + "Ride information not found. Please refresh the page.": + "سفر کی معلومات نہیں ملیں۔ براہ کرم صفحہ ریفریش کریں۔", + "Please describe your issue before submitting.": + "جمع کرانے سے پہلے براہ کرم اپنا مسئلہ بیان کریں۔", + "An application error occurred during upload.": + "اپ لوڈ کے دوران ایپلیکیشن میں خرابی پیش آ گئی۔", + "Failed to upload audio file.": "آڈیو فائل اپ لوڈ کرنے میں ناکامی۔", + "Audio uploaded successfully.": "آڈیو کامیابی سے اپ لوڈ ہو گئی۔", + "Complaint cannot be filed for this ride. It may not have been completed or started.": + "اس سفر کے لیے شکایت درج نہیں کی جا سکتی۔ ہو سکتا ہے یہ مکمل یا شروع نہ ہوا ہو۔", + "2. Attach Recorded Audio (Optional)": + "2. ریکارڈ شدہ آڈیو منسلک کریں (اختیاری)", + "Please enter a description of the issue.": + "براہ کرم مسئلے کی تفصیل درج کریں۔", + "phone number label": "فون نمبر", + "phone number required": "فون نمبر درکار ہے", + "send otp button": "او ٹی پی (OTP) بھیجیں", + "verify your number title": "اپنے نمبر کی تصدیق کریں", + "otp sent subtitle": "ایک 5 ہندسوں کا کوڈ بھیجا گیا\n@phoneNumber", + "verify and continue button": "تصدیق کریں اور جاری رکھیں", + "enter otp validation": "براہ کرم 5 ہندسوں کا او ٹی پی درج کریں", + "one last step title": "ایک آخری قدم", + "complete profile subtitle": "شروع کرنے کے لیے پروفایل مکمل کریں", + "first name label": "پہلا نام", + "first name required": "پہلا نام درکار ہے", + "last name label": "آخری نام", + "Verify OTP": "او ٹی پی کی تصدیق کریں", + "Verification Code": "تصدیقی کوڈ", + "We have sent a verification code to your mobile number:": + "ہم نے آپ کے موبائل نمبر پر تصدیقی کوڈ بھیج دیا ہے:", + "Verify": "تصدیق کریں", + "Resend Code": "کوڈ دوبارہ بھیجیں", + "You can resend in": "دوبارہ بھیج سکتے ہیں", + "seconds": "سیکنڈز", + "Error": "خرابی", + "Please enter the complete 6-digit code.": + "براہ کرم مکمل 6 ہندسوں کا کوڈ درج کریں۔", + "last name required": "آخری نام درکار ہے", + "email optional label": "ای میل (اختیاری)", + "complete registration button": "رجسٹریشن مکمل کریں", + "User with this phone number or email already exists.": + "اس فون نمبر یا ای میل کے ساتھ صارف پہلے سے موجود ہے۔", + "otp sent success": "او ٹی پی کامیابی سے واٹس ایپ پر بھیج دیا گیا۔", + "failed to send otp": "او ٹی پی بھیجنے میں ناکامی۔", + "server error try again": "سرور کی خرابی، دوبارہ کوشش کریں۔", + "an error occurred": "ایک خرابی پیش آ گئی: @error", + "otp verification failed": "او ٹی پی کی تصدیق ناکام ہو گئی۔", + "registration failed": "رجسٹریشن ناکام ہو گئی۔", + "welcome user": "خوش آمدید، @firstName!", + "Cancel Trip from driver": "ڈرائیور کی طرف سے سفر منسوخ", + "We will look for a new driver.\nPlease wait.": + "ہم نئے ڈرائیور کی تلاش کریں گے۔\nبراہ کرم انتظار کریں۔", + "The driver canceled your ride.": + "ڈرائیور نے آپ کی سواری منسوخ کر دی۔", + "Driver Finish Trip": "ڈرائیور نے سفر ختم کر دیا", + "you will pay to Driver": "آپ ڈرائیور کو ادا کریں گے", + "Don't forget your personal belongings.": + "اپنا ذاتی سامان نہ بھولیں۔", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "براہ کرم یقینی بنائیں کہ آپ کے پاس اپنا تمام سامان موجود ہے اور اگر کوئی بقایا کرایہ ہے تو وہ آپ کے والٹ میں شامل کر دیا گیا ہے۔ Intaleq ایپ منتخب کرنے کا شکریہ۔", + "Finish Monitor": "نگرانی ختم کریں", + "Trip finished": "سفر ختم ہو گیا", + "Call Income from Driver": "ڈرائیور کی طرف سے کال", + "Driver Cancelled Your Trip": "ڈرائیور نے آپ کا سفر منسوخ کر دیا", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "آپ ڈرائیور کے وقت کی قیمت ادا کریں گے، اپنا Intaleq والٹ دیکھیں", + "Order Applied": "آرڈر لاگو ہو گیا", + "Share App": "ایپ شیئر کریں", + "Wallet": "والٹ", + "Balance": "بیلنس", + "Don’t forget your personal belongings.": + "اپنا ذاتی سامان نہ بھولیں۔", + "Profile": "پروفائل", + "Contact Support": "سپورٹ سے رابطہ کریں", + "Session expired. Please log in again.": + "سیشن ختم ہو گیا۔ براہ کرم دوبارہ لاگ ان کریں۔", + "Security Warning": "⚠️ سیکیورٹی وارننگ", + "Potential security risks detected. The application may not function correctly.": + "ممکنہ سیکیورٹی خطرات کا پتہ چلا۔ ہو سکتا ہے ایپلیکیشن صحیح کام نہ کرے۔", + "please order now": "ابھی آرڈر کریں", + "Where to": "کہاں جانا ہے؟", + "Where are you going?": "آپ کہاں جا رہے ہیں؟", + "Quick Actions": "فوری اقدامات", + "My Balance": "میرا بیلنس", + "Order History": "آرڈر ہسٹری", + "Contact Us": "ہم سے رابطہ کریں", + "Driver": "ڈرائیور", + "Complaint": "شکایت", + "Promos": "پروموز", + "Recent Places": "حالیہ مقامات", + "From": "سے", + "WhatsApp Location Extractor": "واٹس ایپ لوکیشن ایکسٹریکٹر", + "Location Link": "لوکیشن لنک", + "Paste location link here": "لوکیشن لنک یہاں پیسٹ کریں", + "Go to this location": "اس لوکیشن پر جائیں", + "Paste WhatsApp location link": "واٹس ایپ لوکیشن لنک پیسٹ کریں", + "Select Order Type": "آرڈر کی قسم منتخب کریں", + "Choose who this order is for": "منتخب کریں کہ یہ آرڈر کس کے لیے ہے", + "I want to order for myself": "میں اپنے لیے آرڈر کرنا چاہتا ہوں", + "I want to order for someone else": + "میں کسی اور کے لیے آرڈر کرنا چاہتا ہوں", + "Order for someone else": "کسی اور کے لیے آرڈر", + "Order for myself": "اپنے لیے آرڈر", + "Are you want to go this site": "کیا آپ اس جگہ جانا چاہتے ہیں", + "No": "نہیں", + "Pay by Sham Cash": "Sham Cash کے ذریعے ادائیگی", + "Intaleq Wallet": "Intaleq والٹ", + "Have a promo code?": "کیا آپ کے پاس پرومو کوڈ ہے؟", + "Your Wallet balance is ": "آپ کا والٹ بیلنس ہے: ", + "Cash": "نقد", + "Phone Number": "فون نمبر", + "Search country": "ملک تلاش کریں", + "Payment Successful!": "ادائیگی کامیاب!", + "Your payment was successful.": "آپ کی ادائیگی کامیاب رہی۔", + "Pay directly to the captain": "کپتان کو براہ راست ادائیگی کریں", + "Top up Wallet to continue": "جاری رکھنے کے لیے والٹ ٹاپ اپ کریں", + "Or pay with Cash instead": "یا اس کے بجائے نقد ادائیگی کریں", + "Confirm & Find a Ride": "تصدیق کریں اور سواری تلاش کریں", + "Balance:": "بیلنس:", + "Alerts": "الرٹس", + "Welcome Back!": "خوش آمدید!", + "Current Balance": "موجودہ بیلنس", + "Set Wallet Phone Number": "والٹ فون نمبر سیٹ کریں", + "Link a phone number for transfers": + "ٹرانسفر کے لیے فون نمبر لنک کریں", + "Payment History": "ادائیگی کی تاریخ", + "View your past transactions": "اپنی پرانی ٹرانزیکشنز دیکھیں", + "Top up Wallet": "والٹ ٹاپ اپ کریں", + "Add funds using our secure methods": + "ہمارے محفوظ طریقوں سے فنڈز شامل کریں", + "Driver is waiting": "ڈرائیور انتظار کر رہا ہے", + "Type your message...": "اپنا پیغام لکھیں...", + "Driver Accepted Request": "ڈرائیور نے درخواست قبول کر لی", + "Message": "پیغام", + "Call": "کال", + "Set Phone Number": "فون نمبر سیٹ کریں", + "Select This Ride": "یہ سواری منتخب کریں", + "Call Driver": "ڈرائیور کو کال کریں", + "Increase Fare": "کرایہ بڑھائیں", + "Stop": "رکیں", + "Record": "ریکارڈ", + "Share": "شیئر", + "WhatsApp": "واٹس ایپ", + "SOS": "SOS", + "No drivers accepted your request yet": + "ابھی تک کسی ڈرائیور نے آپ کی درخواست قبول نہیں کی", + "Increasing the fare might attract more drivers. Would you like to increase the price?": + "کرایہ بڑھانے سے مزید ڈرائیور متوجہ ہو سکتے ہیں۔ کیا آپ قیمت بڑھانا چاہیں گے؟", + "Please make sure not to leave any personal belongings in the car.": + "براہ کرم یقینی بنائیں کہ گاڑی میں کوئی ذاتی سامان نہ چھوڑیں۔", + "Cancel Ride": "سفر منسوخ کریں", + "Route Not Found": "روٹ نہیں ملا", + "We couldn't find a valid route to this destination. Please try selecting a different point.": + "ہمیں اس منزل کے لیے کوئی درست راستہ نہیں ملا۔ براہ کرم کوئی اور پوائنٹ منتخب کریں۔", + "alert": "انتباہ", + "You can call or record audio during this trip.": + "آپ اس سفر کے دوران کال یا آڈیو ریکارڈ کر سکتے ہیں۔", + "Warning: Speeding detected!": "انتباہ: تیز رفتاری کا پتہ چلا!", + "Fixed Price": "فکسڈ قیمت", + "Report": "رپورٹ", + "Comfort": "آرام دہ (Comfort)", + "Intaleq Balance": "Intaleq بیلنس", + "Search for a starting point": "نقطہ آغاز تلاش کریں", + "Top up Balance to continue": "جاری رکھنے کے لیے بیلنس ٹاپ اپ کریں", + "Electric": "الیکٹرک", + "Lady": "خواتین", + "Van": "وین", + "Rayeh Gai": "آنا جانا (Round Trip)", + "Join Intaleq as a driver using my referral code!": + "میرے ریفرل کوڈ کا استعمال کرتے ہوئے بطور ڈرائیور Intaleq میں شامل ہوں!", + "Use code:": "کوڈ استعمال کریں:", + "Download the Intaleq Driver app now and earn rewards!": + "ابھی Intaleq ڈرائیور ایپ ڈاؤن لوڈ کریں اور انعامات حاصل کریں!", + "Get a discount on your first Intaleq ride!": + "اپنی پہلی Intaleq سواری پر رعایت حاصل کریں!", + "Use my referral code:": "میرا ریفرل کوڈ استعمال کریں:", + "Download the Intaleq app now and enjoy your ride!": + "ابھی Intaleq ایپ ڈاؤن لوڈ کریں اور اپنی سواری کا لطف اٹھائیں!", + "Contacts Loaded": "رابطے لوڈ ہو گئے", + "Showing": "دکھا رہا ہے", + "of": "میں سے", + "Pay by MTN Wallet": "MTN والٹ سے ادائیگی کریں", + "Pay by Syriatel Wallet": "Syriatel والٹ سے ادائیگی کریں", + "Customer not found": "کسٹمر نہیں ملا", + "Wallet is blocked": "والٹ بلاک ہے", + "Customer phone is not active": "کسٹمر کا فون ایکٹو نہیں ہے", + "Balance not enough": "بیلنس کافی نہیں ہے", + "Balance limit exceeded": "بیلنس کی حد سے تجاوز", + "Incorrect sms code": "⚠️ غلط SMS کوڈ۔ براہ کرم دوبارہ کوشش کریں۔", + "contacts. Others were hidden because they don't have a phone number.": + "رابطے۔ دیگر چھپا دیے گئے کیونکہ ان کا فون نمبر نہیں ہے۔", + "No contacts found": "کوئی رابطہ نہیں ملا", + "No contacts with phone numbers were found on your device.": + "آپ کے آلے پر فون نمبرز کے ساتھ کوئی رابطہ نہیں ملا۔", + "Permission denied": "اجازت مسترد کر دی گئی", + "Contact permission is required to pick contacts": + "رابطے منتخب کرنے کے لیے رابطے کی اجازت درکار ہے۔", + "An error occurred while picking contacts:": + "رابطے منتخب کرتے وقت ایک خرابی پیش آ گئی:", + "Please enter a correct phone": "براہ کرم درست فون نمبر درج کریں", + "Success": "کامیابی", + "Invite sent successfully": "دعوت نامہ کامیابی سے بھیج دیا گیا", + "Hello! I'm inviting you to try Intaleq.": + "ہیلو! میں آپ کو Intaleq آزمانے کی دعوت دے رہا ہوں۔", + "Use my invitation code to get a special gift on your first ride!": + "اپنی پہلی سواری پر خصوصی تحفہ حاصل کرنے کے لیے میرا دعوتی کوڈ استعمال کریں!", + "Your personal invitation code is:": "آپ کا ذاتی دعوتی کوڈ ہے:", + "Be sure to use it quickly! This code expires at": + "اسے جلدی استعمال کرنا یقینی بنائیں! یہ کوڈ ختم ہو جائے گا", + "Download the app now:": "ابھی ایپ ڈاؤن لوڈ کریں:", + "See you on the road!": "راستے میں ملتے ہیں!", + "This phone number has already been invited.": + "اس فون نمبر کو پہلے ہی مدعو کیا جا چکا ہے۔", + "An unexpected error occurred. Please try again.": + "ایک غیر متوقع خرابی پیش آ گئی۔ براہ کرم دوبارہ کوشش کریں۔", + "You deserve the gift": "آپ تحفے کے مستحق ہیں", + "Claim your 20 LE gift for inviting": + "دعوت دینے پر اپنا 20 روپے کا تحفہ حاصل کریں", + "You have got a gift for invitation": + "آپ کو دعوت دینے پر تحفہ ملا ہے", + "You have earned 20": "آپ نے 20 کمائے ہیں", + "LE": "روپیہ", + "Vibration feedback for all buttons": + "تمام بٹنوں کے لیے وائبریشن فیڈبیک", + "Share with friends and earn rewards": + "دوستوں کے ساتھ شیئر کریں اور انعامات حاصل کریں", + "Gift Already Claimed": "تحفہ پہلے ہی حاصل کیا جا چکا ہے", + "You have already received your gift for inviting": + "آپ دعوت دینے کے لیے اپنا تحفہ پہلے ہی وصول کر چکے ہیں", + "Keep it up!": "جاری رکھیں!", + "has completed": "مکمل کر لیا ہے", + "trips": "سفر", + "Personal Information": "ذاتی معلومات", + "Name": "نام", + "Not set": "سیٹ نہیں", + "Gender": "جنس", + "Education": "تعلیم", + "Work & Contact": "کام اور رابطہ", + "Employment Type": "روزگار کی قسم", + "Marital Status": "ازدواجی حیثیت", + "SOS Phone": "SOS فون", + "Sign Out": "سائن آؤٹ", + "Delete My Account": "میرا اکاؤنٹ ڈیلیٹ کریں", + "Update Gender": "جنس اپ ڈیٹ کریں", + "Update": "اپ ڈیٹ", + "Update Education": "تعلیم اپ ڈیٹ کریں", + "Are you sure? This action cannot be undone.": + "کیا آپ کو یقین ہے؟ یہ عمل واپس نہیں کیا جا سکتا۔", + "Confirm your Email": "اپنے ای میل کی تصدیق کریں", + "Type your Email": "اپنا ای میل لکھیں", + "Delete Permanently": "مستقل طور پر ڈیلیٹ کریں", + "Male": "مرد", + "Female": "عورت", + "Other": "دیگر", + "High School Diploma": "ہائی اسکول ڈپلومہ", + "Associate Degree": "ایسوسی ایٹ ڈگری", + "Bachelor's Degree": "بیچلر ڈگری", + "Master's Degree": "ماسٹر ڈگری", + "Doctoral Degree": "ڈاکٹریٹ ڈگری", + "Select your preferred language for the app interface.": + "ایپ انٹرفیس کے لیے اپنی پسندیدہ زبان منتخب کریں۔", + "Language Options": "زبان کے اختیارات", + "You can claim your gift once they complete 2 trips.": + "جب وہ 2 سفر مکمل کر لیں تو آپ اپنا تحفہ حاصل کر سکتے ہیں۔", + "Closest & Cheapest": "سب سے قریب اور سستا", + "Comfort choice": "آرام دہ انتخاب", + "Travel in a modern, silent electric car. A premium, eco-friendly choice for a smooth ride.": + "جدید، خاموش الیکٹرک کار میں سفر کریں۔ ایک پریمیم، ماحول دوست انتخاب۔", + "Spacious van service ideal for families and groups. Comfortable, safe, and cost-effective travel together.": + "خاندانوں اور گروپوں کے لیے کشادہ وین سروس۔ آرام دہ، محفوظ اور کم خرچ۔", + "Quiet & Eco-Friendly": "خاموش اور ماحول دوست", + "Lady Captain for girls": "خواتین کے لیے لیڈی کیپٹن", + "Van for familly": "فیملی کے لیے وین", + "Are you sure to delete this location?": + "کیا آپ واقعی اس لوکیشن کو ڈیلیٹ کرنا چاہتے ہیں؟", + "Change Work location?": "کام کی جگہ تبدیل کریں؟", + "Change Home location?": "گھر کی لوکیشن تبدیل کریں؟", + "Submit a Complaint": "شکایت درج کریں", + "Submit Complaint": "شکایت جمع کرائیں", + "No trip history found": "کوئی سفری تاریخ نہیں ملی", + "Your past trips will appear here.": + "آپ کے پچھلے سفر یہاں ظاہر ہوں گے۔", + "1. Describe Your Issue": "1. اپنا مسئلہ بیان کریں", + "Enter your complaint here...": "اپنی شکایت یہاں لکھیں...", + "2. Attach Recorded Audio": "2. ریکارڈ شدہ آڈیو منسلک کریں", + "No audio files found.": "کوئی آڈیو فائل نہیں ملی۔", + "Confirm Attachment": "منسلک کرنے کی تصدیق کریں", + "Attach this audio file?": "کیا یہ آڈیو فائل منسلک کریں؟", + "Uploaded": "اپ لوڈ ہو گیا", + "3. Review Details & Response": "3. تفصیلات اور جواب کا جائزہ لیں", + "Date": "تاریخ", + "Today's Promos": "آج کے پروموز", + "No promos available right now.": "ابھی کوئی پرومو دستیاب نہیں ہے۔", + "Check back later for new offers!": + "نئی پیشکشوں کے لیے بعد میں دوبارہ چیک کریں!", + "Valid Until:": "تک درست:", + "CODE": "کوڈ", + "Login": "لاگ ان", + "Sign in for a seamless experience": + "بہترین تجربے کے لیے سائن ان کریں", + "Sign In with Google": "گوگل کے ساتھ سائن ان کریں", + "Sign in with Apple": "ایپل کے ساتھ سائن ان کریں", + "User not found": "صارف نہیں ملا", + "Need assistance? Contact us": "مدد چاہیے؟ ہم سے رابطہ کریں", + "Email": "ای میل", + "Your email address": "آپ کا ای میل ایڈریس", + "Enter a valid email": "ایک درست ای میل درج کریں", + "Password": "پاس ورڈ", + "Your password": "آپ کا پاس ورڈ", + "Enter your password": "اپنا پاس ورڈ درج کریں", + "Submit": "جمع کرائیں", + "Terms of Use & Privacy Notice": + "استعمال کی شرائط اور رازداری کا نوٹس", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the ": + "نیچے \"میں متفق ہوں\" کو منتخب کر کے، میں تصدیق کرتا ہوں کہ میں نے پڑھ لیا ہے اور اتفاق کرتا ہوں ", + "Terms of Use": "استعمال کی شرائط", + " and acknowledge the ": " اور تسلیم کرتا ہوں ", + "Privacy Notice": "رازداری کا نوٹس", + " . I am at least 18 years old.": " ۔ میری عمر کم از کم 18 سال ہے۔", + "I Agree": "میں متفق ہوں", + "Continue": "جاری رکھیں", + "Enable Location": "لوکیشن آن کریں", + "To give you the best experience, we need to know where you are. Your location is used to find nearby captains and for pickups.": + "بہترین تجربہ دینے کے لیے ہمیں آپ کی لوکیشن جاننے کی ضرورت ہے۔ آپ کی لوکیشن قریبی کپتانوں کو تلاش کرنے کے لیے استعمال ہوتی ہے۔", + "Allow Location Access": "لوکیشن تک رسائی کی اجازت دیں", + "Welcome to Intaleq!": "Intaleq میں خوش آمدید!", + "Before we start, please review our terms.": + "شروع کرنے سے پہلے، براہ کرم ہماری شرائط کا جائزہ لیں۔", + "Your journey starts here": "آپ کا سفر یہاں سے شروع ہوتا ہے", + "Cancel Search": "تلاش منسوخ کریں", + "Set pickup location": "پک اپ لوکیشن سیٹ کریں", + "Move the map to adjust the pin": + "پن کو ایڈجسٹ کرنے کے لیے نقشہ منتقل کریں", + "Searching for the nearest captain...": + "قریب ترین کپتان کی تلاش جاری ہے...", + "No one accepted? Try increasing the fare.": + "کسی نے قبول نہیں کیا؟ کرایہ بڑھانے کی کوشش کریں۔", + "Increase Your Trip Fee (Optional)": "اپنی ٹرپ فیس بڑھائیں (اختیاری)", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "ہمیں ابھی تک کوئی ڈرائیور نہیں ملا۔ اپنی پیشکش کو ڈرائیوروں کے لیے پرکشش بنانے کے لیے ٹرپ فیس بڑھانے پر غور کریں۔", + "No, thanks": "نہیں، شکریہ", + "Increase Fee": "فیس بڑھائیں", + "Copy": "کاپی", + "Promo Copied!": "پرمو کاپی ہو گیا!", + "Code": "کوڈ", + "copied to clipboard": "کلپ بورڈ پر کاپی ہو گیا", + "Price": "قیمت", + "Intaleq's Response": "Intaleq کا جواب", + "Awaiting response...": "جواب کا انتظار ہے...", + "Audio file not attached": "آڈیو فائل منسلک نہیں ہے", + "The audio file is not uploaded yet.\\nDo you want to submit without it?": + "آڈیو فائل ابھی تک اپ لوڈ نہیں ہوئی ہے۔\\nکیا آپ اس کے بغیر جمع کرانا چاہتے ہیں؟", + "deleted": "حذف کر دیا گیا", + "To Work": "کام پر", + "Work Saved": "کام محفوظ ہو گیا", + "To Home": "گھر پر", + "Home Saved": "گھر محفوظ ہو گیا", + "Destination selected": "منزل منتخب ہو گئی", + "Now select start pick": "اب پک اپ پوائنٹ منتخب کریں", + "OK": "ٹھیک ہے", + "Confirm Pick-up Location": "پک اپ لوکیشن کی تصدیق کریں", + "Set Location on Map": "نقشے پر لوکیشن سیٹ کریں", + "Leave a detailed comment (Optional)": + "تفصیلی تبصرہ چھوڑیں (اختیاری)", + "Share your experience to help us improve...": + "بہتر بنانے میں ہماری مدد کے لیے اپنا تجربہ شیئر کریں...", + "Your valuable feedback helps us improve our service quality.": + "آپ کی قیمتی رائے ہماری سروس کے معیار کو بہتر بنانے میں مدد کرتی ہے۔", + "witout zero": "صفر کے بغیر", + "Top up Balance": "بیلنس ٹاپ اپ کریں", + "An error occurred": "ایک خرابی پیش آ گئی", + "Send WhatsApp Message": "واٹس ایپ پیغام بھیجیں", + "How was your trip with": "آپ کا سفر کیسا رہا", + "Drawing route on map...": "نقشے پر راستہ بنایا جا رہا ہے...", + "Please wait while we prepare your trip.": + "براہ کرم انتظار کریں جب تک ہم آپ کا سفر تیار کرتے ہیں۔", + "Submit Rating": "ریٹنگ جمع کرائیں", + "Call Support": "سپورٹ کو کال کریں", + "You can contact us during working hours from 10:00 - 16:00.": + "آپ ہم سے دفتری اوقات 10:00 - 16:00 کے دوران رابطہ کر سکتے ہیں۔", + "Intaleq is the safest and most reliable ride-sharing app designed especially for passengers in Syria. We provide a comfortable, respectful, and affordable riding experience with features that prioritize your safety and convenience. Our trusted captains are verified, insured, and supported by regular car maintenance carried out by top engineers. We also offer on-road support services to make sure every trip is smooth and worry-free. With Intaleq, you enjoy quality, safety, and peace of mind—every time you ride.": + "Intaleq سب سے محفوظ اور قابل اعتماد رائیڈ شیئرنگ ایپ ہے جو خاص طور پر مسافروں کے لیے بنائی گئی ہے۔ ہم ایک آرام دہ، باوقار اور سستا سفر فراہم کرتے ہیں۔ ہمارے قابل اعتماد کپتان تصدیق شدہ ہیں۔ Intaleq کے ساتھ، آپ ہر بار معیار، حفاظت اور ذہنی سکون کا لطف اٹھاتے ہیں۔", + "Work time is from 10:00 AM to 16:00 PM.\nYou can send a WhatsApp message or email.": + "کام کا وقت صبح 10:00 بجے سے شام 4:00 بجے تک ہے۔\nآپ واٹس ایپ پیغام یا ای میل بھیج سکتے ہیں۔", + "Sorry": "معذرت", + "Customer MSISDN doesn’t have customer wallet": + "کسٹمر نمبر کا والٹ نہیں ہے", + "Please enter the number without the leading 0": + "براہ کرم شروع میں 0 کے بغیر نمبر درج کریں", + "Please enter your phone number": "براہ کرم اپنا فون نمبر درج کریں", + "Phone number seems too short": "فون نمبر بہت چھوٹا معلوم ہوتا ہے", + "No cars are available at the moment. Please try again later.": + "اس وقت کوئی کار دستیاب نہیں ہے۔ براہ کرم بعد میں کوشش کریں۔", + "Nearest Car: ~": "قریب ترین کار: ~", + "Nearest Car": "قریب ترین کار", + "No cars nearby": "قریب میں کوئی کار نہیں", + "Favorite Places": "پسندیدہ مقامات", + "No favorite places yet!": "ابھی تک کوئی پسندیدہ مقام نہیں!", + "from your favorites": "آپ کے پسندیدہ سے", + "Back": "واپس", + "Enter your code below to apply the discount.": + "رعایت حاصل کرنے کے لیے اپنا کوڈ نیچے درج کریں۔", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the": + "نیچے \"میں متفق ہوں\" کو منتخب کر کے، میں تصدیق کرتا ہوں کہ میں نے پڑھ لیا ہے اور اتفاق کرتا ہوں", + "and acknowledge the": "اور تسلیم کرتا ہوں", + "Enable Location Access": "لوکیشن تک رسائی فعال کریں", + "We need your location to find nearby drivers for pickups and drop-offs.": + "پک اپ اور ڈراپ آف کے لیے قریبی ڈرائیوروں کو تلاش کرنے کے لیے ہمیں آپ کی لوکیشن کی ضرورت ہے۔", + "You should restart app to change language": + "زبان تبدیل کرنے کے لیے آپ کو ایپ کو دوبارہ شروع کرنا چاہیے", + "Home Page": "ہوم پیج", + "To change Language the App": "ایپ کی زبان تبدیل کرنے کے لیے", + "Learn more about our app and mission": + "ہماری ایپ اور مشن کے بارے میں مزید جانیں", + "Promos For Today": "آج کے پروموز", + "Choose your ride": "اپنی سواری کا انتخاب کریں", + "Your Journey Begins Here": "آپ کا سفر یہاں سے شروع ہوتا ہے", + "Bonus gift": "بونس تحفہ", + "Pay": "ادائیگی", + "Get": "حاصل کریں", + "Send to Driver Again": "ڈرائیور کو دوبارہ بھیجیں", + "Driver Name:": "ڈرائیور کا نام:", + "No trip data available": "کوئی ٹرپ ڈیٹا دستیاب نہیں", + "Car Plate:": "کار کی پلیٹ:", + "remaining": "باقی", + "Order Cancelled": "آرڈر منسوخ", + "You canceled VIP trip": "آپ نے VIP ٹرپ منسوخ کر دیا", + "Passenger cancelled order": "مسافر نے آرڈر منسوخ کر دیا", + "Your trip is scheduled": "آپ کا سفر شیڈول ہے", + "Don't forget your ride!": "اپنی سواری نہ بھولیں!", + "Trip updated successfully": "سفر کامیابی سے اپ ڈیٹ ہو گیا", + "Car Make:": "کار کی ساخت:", + "Car Model:": "کار کا ماڈل:", + "Car Color:": "کار کا رنگ:", + "Driver Phone:": "ڈرائیور کا فون:", + "Pre-booking": "پری بکنگ", + "Waiting VIP": "VIP کا انتظار", + "Driver List": "ڈرائیور لسٹ", + "Confirm Trip": "سفر کی تصدیق کریں", + "Select date and time of trip": "سفر کی تاریخ اور وقت منتخب کریں", + "Date and Time Picker": "تاریخ اور وقت چننے والا", + "Trip Status:": "سفر کی حیثیت:", + "pending": "زیر التواء", + "accepted": "قبول شدہ", + "rejected": "مسترد", + "Apply": "لاگو کریں", + "Enter your promo code": "اپنا پرومو کوڈ درج کریں", + "Apply Promo Code": "پرومو کوڈ لاگو کریں", + "Scheduled Time:": "شیڈول ٹائم:", + "No drivers available": "کوئی ڈرائیور دستیاب نہیں", + "No drivers available at the moment. Please try again later.": + "اس وقت کوئی ڈرائیور دستیاب نہیں ہے۔ براہ کرم بعد میں کوشش کریں۔", + "you have a negative balance of": "آپ کا منفی بیلنس ہے", + "Please try again in a few moments": + "براہ کرم کچھ لمحوں میں دوبارہ کوشش کریں", + "Unknown Driver": "نامعلوم ڈرائیور", + "in your": "آپ کے میں", + "The driver accepted your order for": + "ڈرائیور نے آپ کا آرڈر قبول کر لیا برائے", + "wallet due to a previous trip.": "پچھلے سفر کی وجہ سے والٹ۔", + "rides": "سواریاں", + "Add Work": "کام شامل کریں", + "The reason is": "وجہ یہ ہے", + "User does not have a wallet #1652": "صارف کے پاس والٹ نہیں ہے #1652", + "Price of trip": "سفر کی قیمت", + "From:": "سے:", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Intaleq اور ڈیلیوری ٹرپس کے لیے، قیمت کا حساب متحرک طور پر لگایا جاتا ہے۔ کمفرٹ ٹرپس کے لیے، قیمت وقت اور فاصلے پر مبنی ہوتی ہے۔", + "Phone Wallet Saved Successfully": "فون والٹ کامیابی سے محفوظ ہو گیا", + "Add wallet phone you use": "اپنا استعمال شدہ والٹ فون شامل کریں", + "Update Available": "اپ ڈیٹ دستیاب ہے", + "Phone number must be exactly 11 digits long": + "فون نمبر بالکل 11 ہندسوں کا ہونا چاہیے", + "Insert Wallet phone number": "والٹ فون نمبر درج کریں", + "Phone number isn't an Egyptian phone number": + "فون نمبر درست نہیں ہے", + "A new version of the app is available. Please update to the latest version.": + "ایپ کا نیا ورژن دستیاب ہے۔ براہ کرم تازہ ترین ورژن پر اپ ڈیٹ کریں۔", + "We use location to get accurate and nearest passengers for you": + "ہم آپ کے لیے درست اور قریبی مسافروں کو حاصل کرنے کے لیے لوکیشن کا استعمال کرتے ہیں", + "This ride is already applied by another driver.": + "یہ سواری پہلے ہی کسی اور ڈرائیور نے لے لی ہے۔", + "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": + "ہم قریبی دستیاب ڈرائیور کو تلاش کرنے اور درست پک اپ اور ڈراپ آف معلومات فراہم کرنے کے لیے آپ کی دقیق لوکیشن کا استعمال کرتے ہیں۔ آپ ترتیبات میں اس کا انتظام کر سکتے ہیں۔", + "Where are you, sir?": "جناب آپ کہاں ہیں؟", + "I've been trying to reach you but your phone is off.": + "میں آپ سے رابطہ کرنے کی کوشش کر رہا ہوں لیکن آپ کا فون بند ہے۔", + "Please don't be late": "براہ کرم دیر نہ کریں", + "Please don't be late, I'm waiting for you at the specified location.": + "براہ کرم دیر نہ کریں، میں مقررہ جگہ پر آپ کا انتظار کر رہا ہوں۔", + "My location is correct. You can search for me using the navigation app": + "میری لوکیشن درست ہے۔ آپ نیویگیشن ایپ کا استعمال کرتے ہوئے مجھے تلاش کر سکتے ہیں", + "Hello, I'm at the agreed-upon location": + "ہیلو، میں طے شدہ جگہ پر ہوں", + "How much longer will you be?": "آپ کو اور کتنا وقت لگے گا؟", + "Phone number is verified before": "فون نمبر پہلے ہی تصدیق شدہ ہے", + "Change Ride": "سواری تبدیل کریں", + "You can change the destination by long-pressing any point on the map": + "آپ نقشے پر کسی بھی نقطہ کو طویل دبا کر منزل تبدیل کر سکتے ہیں", + "Pick from map destination": "نقشے سے منزل کا انتخاب کریں", + "Pick or Tap to confirm": "منتخب کریں یا تصدیق کے لیے ٹیپ کریں", + "Accepted your order": "آپ کا آرڈر قبول کر لیا", + "Order Accepted": "آرڈر قبول ہو گیا", + "with type": "قسم کے ساتھ", + "accepted your order at price": "اس قیمت پر آپ کا آرڈر قبول کیا", + "you canceled order": "آپ نے آرڈر منسوخ کر دیا", + "If you want order to another person": + "اگر آپ کسی اور شخص کو آرڈر کرنا چاہتے ہیں", + "upgrade price": "قیمت بڑھائیں", + "airport": "ایئرپورٹ", + "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": + "لچکدار راستے اور اسٹاپ پوائنٹس والی آرام دہ کار کے لیے بہترین انتخاب۔", + "You can upgrade price to may driver accept your order": + "آپ قیمت بڑھا سکتے ہیں تاکہ ڈرائیور آپ کا آرڈر قبول کر لے", + "Change Route": "راستہ تبدیل کریں", + "No Captain Accepted Your Order": + "کسی کپتان نے آپ کا آرڈر قبول نہیں کیا", + "We are looking for a captain but the price may increase to let a captain accept": + "ہم کپتان کی تلاش کر رہے ہیں لیکن قیمت بڑھ سکتی ہے", + "No, I want to cancel this trip": + "نہیں، میں یہ سفر منسوخ کرنا چاہتا ہوں", + "Attention": "توجہ", + "Trip Cancelled. The cost of the trip will be deducted from your wallet.": + "سفر منسوخ ہو گیا۔ سفر کی قیمت آپ کے والٹ سے کاٹ لی جائے گی۔", + "You will be charged for the cost of the driver coming to your location.": + "ڈرائیور کے آپ کی لوکیشن پر آنے کی قیمت آپ سے وصول کی جائے گی۔", + "reject your order.": "آپ کا آرڈر مسترد کریں۔", + "Order Under Review": "آرڈر زیر جائزہ", + "is reviewing your order. They may need more information or a higher price.": + "آپ کے آرڈر کا جائزہ لے رہا ہے۔ انہیں مزید معلومات یا زیادہ قیمت کی ضرورت ہو سکتی ہے۔", + "Vibration": "وائبریشن", + "Resend code": "کوڈ دوبارہ بھیجیں", + "change device": "ڈیوائس تبدیل کریں", + "Device Change Detected": "ڈیوائس کی تبدیلی کا پتہ چلا", + "You can only use one device at a time. This device will now be set as your active device.": + "آپ ایک وقت میں صرف ایک ڈیوائس استعمال کر سکتے ہیں۔ اب یہ ڈیوائس آپ کی فعال ڈیوائس کے طور پر سیٹ ہو جائے گی۔", + "Click here point": "یہاں کلک کریں", + "Are you want to change": "کیا آپ تبدیل کرنا چاہتے ہیں", + "by": "بذریعہ", + "Enter your complaint here": "اپنی شکایت یہاں درج کریں", + "Please enter your complaint.": "براہ کرم اپنی شکایت درج کریں۔", + "Complaint data saved successfully": + "شکایت کا ڈیٹا کامیابی سے محفوظ ہو گیا", + "Trip Monitor": "سفر مانیٹر", + "Insert SOS Phone": "SOS فون درج کریں", + "Add SOS Phone": "SOS فون شامل کریں", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "پیارے ،\n\n🚀 میں نے ابھی ایک دلچسپ سفر شروع کیا ہے اور میں اپنے سفر کی تفصیلات اور اپنی موجودہ لوکیشن آپ کے ساتھ ریئل ٹائم میں شیئر کرنا چاہتا ہوں! براہ کرم Intaleq ایپ ڈاؤن لوڈ کریں۔ یہ آپ کو میرے سفر کی تفصیلات اور میری تازہ ترین لوکیشن دیکھنے کی اجازت دے گی۔\n\n👉 ڈاؤن لوڈ لنک: \nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nمیں اپنے ایڈونچر کے دوران آپ کو قریب رکھنے کا منتظر ہوں!\n\nIntaleq ،", + "Send Intaleq app to him": "اسے Intaleq ایپ بھیجیں", + "No passenger found for the given phone number": + "دیے گئے فون نمبر کے لیے کوئی مسافر نہیں ملا", + "No user found for the given phone number": + "دیے گئے فون نمبر کے لیے کوئی صارف نہیں ملا", + "This price is": "یہ قیمت ہے", + "Work": "کام", + "Add Home": "گھر شامل کریں", + "Notifications": "اطلاعات", + "💳 Pay with Credit Card": "💳 کریڈٹ کارڈ سے ادائیگی کریں", + "⚠️ You need to choose an amount!": + "⚠️ آپ کو ایک رقم منتخب کرنے کی ضرورت ہے!", + "💰 Pay with Wallet": "💰 والٹ سے ادائیگی کریں", + "You must restart the app to change the language.": + "زبان تبدیل کرنے کے لیے آپ کو ایپ دوبارہ شروع کرنی چاہیے۔", + "joined": "شامل ہوا", + "Driver joined the channel": "ڈرائیور چینل میں شامل ہو گیا", + "Driver left the channel": "ڈرائیور نے چینل چھوڑ دیا", + "Call Page": "کال پیج", + "Call Left": "بقیہ کالز", + " Next as Cash !": " اگلا نقد کے طور پر!", + "To use Wallet charge it": "والٹ استعمال کرنے کے لیے اسے چارج کریں", + "We are searching for the nearest driver to you": + "ہم آپ کے قریب ترین ڈرائیور کو تلاش کر رہے ہیں", + "Best choice for cities": "شہروں کے لیے بہترین انتخاب", + "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": + "آنا جانا: شہروں کے درمیان آسان سفر کے لیے راؤنڈ ٹرپ سروس، آسان اور قابل اعتماد۔", + "This trip is for women only": "یہ سفر صرف خواتین کے لیے ہے", + "Total budgets on month": "مہینے کا کل بجٹ", + "You have call from driver": "ڈرائیور کی کال ہے", + "Intaleq": "Intaleq", + "passenger agreement": "مسافر معاہدہ", + "To become a passenger, you must review and agree to the ": + "مسافر بننے کے لیے، آپ کو جائزہ لینا ہوگا اور اتفاق کرنا ہوگا ", + "agreement subtitle": + "جاری رکھنے کے لیے، آپ کو استعمال کی شرائط اور رازداری کی پالیسی کا جائزہ لینا اور اتفاق کرنا چاہیے۔", + "terms of use": "استعمال کی شرائط", + " and acknowledge our Privacy Policy.": + " اور ہماری رازداری کی پالیسی کو تسلیم کریں۔", + "and acknowledge our": "اور تسلیم کریں ہماری", + "privacy policy": "رازداری کی پالیسی۔", + "i agree": "میں متفق ہوں", + "Driver already has 2 trips within the specified period.": + "مقررہ مدت میں ڈرائیور کے پاس پہلے ہی 2 سفر ہیں۔", + "The invitation was sent successfully": + "دعوت نامہ کامیابی سے بھیج دیا گیا", + "You should select your country": "آپ کو اپنا ملک منتخب کرنا چاہیے", + "Scooter": "سکوٹر", + "A trip with a prior reservation, allowing you to choose the best captains and cars.": + "پیشگی ریزرویشن کے ساتھ سفر، جو آپ کو بہترین کپتانوں اور کاروں کا انتخاب کرنے کی اجازت دیتا ہے۔", + "Mishwar Vip": "مشوار VIP", + "The driver waiting you in picked location .": + "ڈرائیور منتخب جگہ پر آپ کا انتظار کر رہا ہے۔", + "About Us": "ہمارے بارے میں", + "You can change the vibration feedback for all buttons": + "آپ تمام بٹنوں کے لیے وائبریشن فیڈبیک تبدیل کر سکتے ہیں", + "Most Secure Methods": "انتہائی محفوظ طریقے", + "In-App VOIP Calls": "ان-ایپ VOIP کالز", + "Recorded Trips for Safety": "حفاظت کے لیے ریکارڈ شدہ سفر", + "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": + "\nہم سستی کو بھی ترجیح دیتے ہیں، مسابقتی قیمتوں کی پیشکش کرتے ہیں تاکہ آپ کی سواریوں کو قابل رسائی بنایا جا سکے۔", + "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": + "Intaleq ایک رائیڈ شیئرنگ ایپ ہے جو آپ کی حفاظت اور سستی کو مدنظر رکھتے ہوئے ڈیزائن کی گئی ہے۔ ہم آپ کو آپ کے علاقے میں قابل اعتماد ڈرائیوروں سے جوڑتے ہیں۔", + "Sign In by Apple": "ایپل کے ذریعے سائن ان کریں", + "Sign In by Google": "گوگل کے ذریعے سائن ان کریں", + "How do I request a ride?": "میں سواری کی درخواست کیسے کروں؟", + "Step-by-step instructions on how to request a ride through the Intaleq app.": + "Intaleq ایپ کے ذریعے سواری کی درخواست کرنے کے طریقے پر مرحلہ وار ہدایات۔", + "What types of vehicles are available?": + "کس قسم کی گاڑیاں دستیاب ہیں؟", + "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": + "Intaleq آپ کی ضروریات کے مطابق گاڑیوں کے مختلف آپشنز پیش کرتا ہے۔", + "How can I pay for my ride?": + "میں اپنی سواری کے لیے ادائیگی کیسے کر سکتا ہوں؟", + "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": + "Intaleq آپ کی سہولت کے لیے ادائیگی کے متعدد طریقے پیش کرتا ہے۔", + "Can I cancel my ride?": "کیا میں اپنی سواری منسوخ کر سکتا ہوں؟", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "ہاں، آپ اپنی سواری منسوخ کر سکتے ہیں، لیکن براہ کرم نوٹ کریں کہ منسوخی کی فیس لاگو ہو سکتی ہے۔", + "Driver Registration & Requirements": "ڈرائیور رجسٹریشن اور تقاضے", + "How can I register as a driver?": + "میں بطور ڈرائیور کیسے رجسٹر ہو سکتا ہوں؟", + "What are the requirements to become a driver?": + "ڈرائیور بننے کے لیے کیا تقاضے ہیں؟", + "Visit our website or contact Intaleq support for information on driver registration and requirements.": + "ڈرائیور رجسٹریشن اور تقاضوں کے بارے میں معلومات کے لیے ہماری ویب سائٹ ملاحظہ کریں یا سپورٹ سے رابطہ کریں۔", + "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": + "Intaleq ان-ایپ چیٹ کی فعالیت فراہم کرتا ہے۔", + "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": + "Intaleq آپ کی حفاظت کو ترجیح دیتا ہے۔", + "Frequently Questions": "اکثر پوچھے گئے سوالات", + "User does not exist.": "صارف موجود نہیں ہے۔", + "We need your phone number to contact you and to help you.": + "ہمیں آپ سے رابطہ کرنے اور آپ کی مدد کرنے کے لیے آپ کے فون نمبر کی ضرورت ہے۔", + "You will recieve code in sms message": + "آپ کو SMS پیغام میں کوڈ موصول ہوگا", + "Please enter": "براہ کرم درج کریں", + "We need your phone number to contact you and to help you receive orders.": + "ہمیں آپ سے رابطہ کرنے اور آرڈرز وصول کرنے میں آپ کی مدد کرنے کے لیے آپ کے فون نمبر کی ضرورت ہے۔", + "The full name on your criminal record does not match the one on your driver's license. Please verify and provide the correct documents.": + "آپ کے پولیس ریکارڈ پر موجود پورا نام آپ کے ڈرائیونگ لائسنس سے میل نہیں کھاتا۔", + "The national number on your driver's license does not match the one on your ID document. Please verify and provide the correct documents.": + "آپ کے ڈرائیونگ لائسنس پر قومی نمبر آپ کے شناختی کارڈ سے میل نہیں کھاتا۔", + "Capture an Image of Your Criminal Record": + "اپنے پولیس کلیئرنس کی تصویر لیں", + "IssueDate": "اجراء کی تاریخ", + "Capture an Image of Your car license front": + "اپنی گاڑی کی رجسٹریشن کے سامنے کی تصویر لیں", + "Capture an Image of Your ID Document front": + "اپنے شناختی کارڈ کے سامنے کی تصویر لیں", + "NationalID": "شناختی کارڈ نمبر", + "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": + "آپ Intaleq ایپ کو اپنے دوستوں کے ساتھ شیئر کر سکتے ہیں اور انعامات حاصل کر سکتے ہیں", + "FullName": "پورا نام", + "No invitation found yet!": "ابھی تک کوئی دعوت نامہ نہیں ملا!", + "InspectionResult": "معائنے کا نتیجہ", + "Criminal Record": "پولیس کلیئرنس", + "The email or phone number is already registered.": + "ای میل یا فون نمبر پہلے سے رجسٹرڈ ہے۔", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "ڈرائیور بننے کے لیے، آپ کو اپنا ڈرائیونگ لائسنس، شناختی دستاویز، اور گاڑی کی رجسٹریشن دستاویز اپ لوڈ کرنے کی ضرورت ہے۔", + "Documents check": "دستاویزات کی جانچ", + "Driver's License": "ڈرائیونگ لائسنس", + "for your first registration!": "آپ کی پہلی رجسٹریشن کے لیے!", + "Get it Now!": "ابھی حاصل کریں!", + "before": "پہلے", + "Code not approved": "کوڈ منظور نہیں ہوا", + "3000 LE": "3000 روپیہ", + "Do you have an invitation code from another driver?": + "کیا آپ کے پاس کسی دوسرے ڈرائیور کا دعوتی کوڈ ہے؟", + "Paste the code here": "کوڈ یہاں پیسٹ کریں", + "No, I don't have a code": "نہیں، میرے پاس کوڈ نہیں ہے", + "Code approved": "کوڈ منظور ہو گیا", + "Install our app:": "ہماری ایپ انسٹال کریں:", + "Invite another driver and both get a gift after he completes 100 trips!": + "دوسرے ڈرائیور کو مدعو کریں اور اس کے 100 سفر مکمل کرنے کے بعد دونوں تحفہ حاصل کریں!", + "Invite": "دعوت دیں", + "Are you sure?": "کیا آپ کو یقین ہے؟", + "This will delete all recorded files from your device.": + "یہ آپ کے آلے سے تمام ریکارڈ شدہ فائلیں حذف کر دے گا۔", + "Select a file": "فائل منتخب کریں", + "Select a File": "ایک فائل منتخب کریں", + "Delete": "حذف کریں", + "attach audio of complain": "شکایت کی آڈیو منسلک کریں", + "Phone Number Check": "فون نمبر چیک", + "Drivers received orders": "ڈرائیوروں کو آرڈر موصول ہوئے", + "No audio files recorded.": "کوئی آڈیو فائل ریکارڈ نہیں ہوئی۔", + "This is for delivery or a motorcycle.": + "یہ ڈیلیوری یا موٹر سائیکل کے لیے ہے۔", + "Intaleq Reminder": "Intaleq یاد دہانی", + "It's time to check the Intaleq app!": + "Intaleq ایپ چیک کرنے کا وقت ہے!", + "you must insert token code": "آپ کو ٹوکن کوڈ داخل کرنا ہوگا", + "Something went wrong. Please try again.": + "کچھ غلط ہو گیا۔ براہ کرم دوبارہ کوشش کریں۔", + "Trip Details": "سفر کی تفصیلات", + "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": + "سیاق و سباق کوئی شکایت کی تفصیلات فراہم نہیں کرتا۔", + "Submit Your Complaint": "اپنی شکایت جمع کرائیں", + "Status": "حیثیت", + "Choose from contact": "رابطے سے منتخب کریں", + "attach correct audio": "درست آڈیو منسلک کریں", + "be sure": "یقینی بنائیں", + "Audio uploaded successfully.": "آڈیو کامیابی سے اپ لوڈ ہو گئی۔", + "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": + "جدید ترین کار ماڈلز کے متلاشی مسافروں کے لیے بہترین", + "Share this code with your friends and earn rewards when they use it!": + "اس کوڈ کو اپنے دوستوں کے ساتھ شیئر کریں اور انعامات حاصل کریں!", + "Enter phone": "فون درج کریں", + "complete, you can claim your gift": + "مکمل، آپ اپنا تحفہ حاصل کر سکتے ہیں", + "When": "جب", + "Enter driver's phone": "ڈرائیور کا فون درج کریں", + "Send Invite": "دعوت نامہ بھیجیں", + "Show Invitations": "دعوت نامے دکھائیں", + "License Type": "لائسنس کی قسم", + "National Number": "قومی نمبر", + "Name (Arabic)": "نام (اردو)", + "Name (English)": "نام (انگریزی)", + "Address": "پتہ", + "Issue Date": "اجراء کی تاریخ", + "Expiry Date": "میعاد ختم ہونے کی تاریخ", + "License Categories": "لائسنس کے زمرے", + "driver_license": "ڈرائیونگ لائسنس", + "Capture an Image of Your Driver License": + "اپنے ڈرائیونگ لائسنس کی تصویر لیں", + "ID Documents Back": "شناختی دستاویزات کی پشت", + "National ID": "شناختی کارڈ", + "Occupation": "پیشہ", + "Religion": "مذہب", + "Full Name (Marital)": "پورا نام", + "Expiration Date": "میعاد ختم ہونے کی تاریخ", + "Capture an Image of Your ID Document Back": + "اپنے شناختی کارڈ کی پشت کی تصویر لیں", + "ID Documents Front": "شناختی دستاویزات کا سامنے کا حصہ", + "First Name": "پہلا نام", + "CardID": "کارڈ آئی ڈی", + "Vehicle Details Front": "گاڑی کی تفصیلات سامنے", + "Plate Number": "پلیٹ نمبر", + "Owner Name": "مالک کا نام", + "Vehicle Details Back": "گاڑی کی تفصیلات پیچھے", + "Make": "میک", + "Model": "ماڈل", + "Year": "سال", + "Chassis": "چیسس", + "Color": "رنگ", + "Displacement": "ڈسپلیسمنٹ", + "Fuel": "ایندھن", + "Tax Expiry Date": "ٹیکس کی میعاد ختم ہونے کی تاریخ", + "Inspection Date": "معائنے کی تاریخ", + "Capture an Image of Your car license back": + "اپنی گاڑی کے لائسنس کی پشت کی تصویر لیں", + "Capture an Image of Your Driver's License": + "اپنے ڈرائیونگ لائسنس کی تصویر لیں", + "Sign in with Google for easier email and name entry": + "آسان ای میل اور نام کے اندراج کے لیے گوگل کے ساتھ سائن ان کریں", + "You will choose allow all the time to be ready receive orders": + "آپ آرڈرز وصول کرنے کے لیے ہر وقت اجازت کا انتخاب کریں گے", + "Get to your destination quickly and easily.": + "اپنی منزل پر تیزی اور آسانی سے پہنچیں۔", + "Enjoy a safe and comfortable ride.": + "محفوظ اور آرام دہ سواری کا لطف اٹھائیں۔", + "Choose Language": "زبان منتخب کریں", + "Pay with Wallet": "والٹ سے ادائیگی کریں", + "Invalid MPIN": "غلط MPIN", + "Invalid OTP": "غلط OTP", + "Enter your email address": "اپنا ای میل ایڈریس درج کریں", + "Please enter Your Email.": "براہ کرم اپنا ای میل درج کریں۔", + "Enter your phone number": "اپنا فون نمبر درج کریں", + "Please enter your phone number.": "براہ کرم اپنا فون نمبر درج کریں۔", + "Please enter Your Password.": "براہ کرم اپنا پاس ورڈ درج کریں۔", + "if you dont have account": "اگر آپ کا اکاؤنٹ نہیں ہے", + "Register": "رجسٹر کریں", + "Accept Ride's Terms & Review Privacy Notice": + "سفر کی شرائط قبول کریں اور رازداری کا نوٹس دیکھیں", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "نیچے 'میں متفق ہوں' کو منتخب کر کے، میں نے استعمال کی شرائط کا جائزہ لیا ہے اور ان سے اتفاق کرتا ہوں۔", + "First name": "پہلا نام", + "Enter your first name": "اپنا پہلا نام درج کریں", + "Please enter your first name.": "براہ کرم اپنا پہلا نام درج کریں۔", + "Last name": "آخری نام", + "Enter your last name": "اپنا آخری نام درج کریں", + "Please enter your last name.": "براہ کرم اپنا آخری نام درج کریں۔", + "City": "شہر", + "Please enter your City.": "براہ کرم اپنا شہر درج کریں۔", + "Verify Email": "ای میل کی تصدیق کریں", + "We sent 5 digit to your Email provided": + "ہم نے آپ کے فراہم کردہ ای میل پر 5 ہندسے بھیجے ہیں", + "5 digit": "5 ہندسے", + "Send Verification Code": "تصدیقی کوڈ بھیجیں", + "Your Ride Duration is ": "آپ کی سواری کا دورانیہ ہے ", + "You will be thier in": "آپ وہاں ہوں گے میں", + "You trip distance is": "آپ کے سفر کا فاصلہ ہے", + "Fee is": "فیس ہے", + "From : ": "سے: ", + "To : ": "تک: ", + "Add Promo": "پرومو شامل کریں", + "Confirm Selection": "انتخاب کی تصدیق کریں", + "distance is": "فاصلہ ہے", + "Privacy Policy": "رازداری کی پالیسی", + "Intaleq LLC": "Intaleq LLC", + "Syria's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "پاکستان کی صف اول کی رائیڈ شیئرنگ سروس۔", + "Intaleq is the first ride-sharing app in Syria, designed to connect you with the nearest drivers for a quick and convenient travel experience.": + "Intaleq پہلی رائیڈ شیئرنگ ایپ ہے جو آپ کو قریب ترین ڈرائیوروں سے جوڑتی ہے۔", + "Why Choose Intaleq?": "Intaleq کا انتخاب کیوں کریں؟", + "Closest to You": "آپ کے قریب ترین", + "We connect you with the nearest drivers for faster pickups and quicker journeys.": + "ہم آپ کو تیز تر پک اپ کے لیے قریب ترین ڈرائیوروں سے جوڑتے ہیں۔", + "Uncompromising Security": "غیر متزلزل سیکیورٹی", + "Lady Captains Available": "خواتین کپتان دستیاب ہیں", + "Recorded Trips (Voice & AI Analysis)": + "ریکارڈ شدہ سفر (آواز اور AI تجزیہ)", + "Fastest Complaint Response": "تیز ترین شکایت کا جواب", + "Our dedicated customer service team ensures swift resolution of any issues.": + "ہماری کسٹمر سروس ٹیم مسائل کے فوری حل کو یقینی بناتی ہے۔", + "Affordable for Everyone": "ہر ایک کے لیے سستا", + "Frequently Asked Questions": "اکثر پوچھے گئے سوالات", + "Getting Started": "شروع کرنا", + "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": + "بس ایپ کھولیں، منزل درج کریں اور 'سواری کی درخواست کریں' پر ٹیپ کریں۔", + "Vehicle Options": "گاڑی کے اختیارات", + "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": + "Intaleq اکانومی، کمفرٹ اور لگژری سمیت مختلف آپشنز پیش کرتا ہے۔", + "Payments": "ادائیگیاں", + "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": + "آپ نقد یا کارڈ کے ذریعے ادائیگی کر سکتے ہیں۔", + "Ride Management": "سفر کا انتظام", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "جی ہاں، آپ منسوخ کر سکتے ہیں، لیکن منسوخی کی فیس لاگو ہو سکتی ہے۔", + "For Drivers": "ڈرائیوروں کے لیے", + "Driver Registration": "ڈرائیور رجسٹریشن", + "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": + "رجسٹر کرنے کے لیے ویب سائٹ ملاحظہ کریں یا سپورٹ سے رابطہ کریں۔", + "Visit Website/Contact Support": + "ویب سائٹ ملاحظہ کریں / سپورٹ سے رابطہ کریں", + "Close": "بند کریں", + "We are searching for the nearest driver": + "ہم قریب ترین ڈرائیور تلاش کر رہے ہیں", + "Communication": "مواصلات", + "How do I communicate with the other party (passenger/driver)?": + "میں دوسرے فریق سے کیسے بات کروں؟", + "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": + "سفر کی تصدیق ہونے پر آپ ایپ میں چیٹ کر سکتے ہیں۔", + "Safety & Security": "حفاظت اور سیکیورٹی", + "What safety measures does Intaleq offer?": + "Intaleq کون سے حفاظتی اقدامات پیش کرتا ہے؟", + "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": + "Intaleq ڈرائیور کی تصدیق اور ٹرپ ٹریکنگ پیش کرتا ہے۔", + "Enjoy competitive prices across all trip options, making travel accessible.": + "مسابقتی قیمتوں کا لطف اٹھائیں۔", + "Variety of Trip Choices": "سفر کے انتخاب کی اقسام", + "Choose the trip option that perfectly suits your needs and preferences.": + "وہ آپشن منتخب کریں جو آپ کے لیے موزوں ہو۔", + "Your Choice, Our Priority": "آپ کا انتخاب، ہماری ترجیح", + "Because we are near, you have the flexibility to choose the ride that works best for you.": + "چونکہ ہم قریب ہیں، آپ کے پاس انتخاب کی لچک ہے۔", + "duration is": "دورانیہ ہے", + "Setting": "سیٹنگ", + "Find answers to common questions": "عام سوالات کے جوابات تلاش کریں", + "I don't need a ride anymore": "مجھے اب سواری کی ضرورت نہیں ہے", + "I was just trying the application": "میں صرف ایپلیکیشن آزما رہا تھا", + "No driver accepted my request": + "کسی ڈرائیور نے میری درخواست قبول نہیں کی", + "I added the wrong pick-up/drop-off location": + "میں نے غلط لوکیشن شامل کی", + "I don't have a reason": "میرے پاس کوئی وجہ نہیں ہے", + "Can we know why you want to cancel Ride ?": + "کیا ہم جان سکتے ہیں کہ آپ کیوں منسوخ کرنا چاہتے ہیں؟", + "Add Payment Method": "ادائیگی کا طریقہ شامل کریں", + "Ride Wallet": "سفر والٹ", + "Payment Method": "ادائیگی کا طریقہ", + "Type here Place": "یہاں جگہ لکھیں", + "Are You sure to ride to": "کیا آپ واقعی جانا چاہتے ہیں", + "Confirm": "تصدیق کریں", + "You are Delete": "آپ حذف کر رہے ہیں", + "Deleted": "حذف کر دیا گیا", + "You Dont Have Any places yet !": + "ابھی تک آپ کے پاس کوئی جگہ نہیں ہے!", + "From : Current Location": "سے: موجودہ لوکیشن", + "My Cared": "میرے کارڈز", + "Add Card": "کارڈ شامل کریں", + "Add Credit Card": "کریڈٹ کارڈ شامل کریں", + "Please enter the cardholder name": + "براہ کرم کارڈ ہولڈر کا نام درج کریں", + "Please enter the expiry date": + "براہ کرم میعاد ختم ہونے کی تاریخ درج کریں", + "Please enter the CVV code": "براہ کرم CVV کوڈ درج کریں", + "Go To Favorite Places": "پسندیدہ مقامات پر جائیں", + "Go to this Target": "اس ہدف پر جائیں", + "My Profile": "میرا پروفائل", + "Are you want to go to this site": "کیا آپ اس جگہ جانا چاہتے ہیں", + "MyLocation": "میری لوکیشن", + "my location": "میری لوکیشن", + "Target": "ہدف", + "You Should choose rate figure": "آپ کو ریٹنگ کا انتخاب کرنا چاہیے", + "Login Captin": "کپتان لاگ ان", + "Register Captin": "کپتان رجسٹر", + "Send Verfication Code": "تصدیقی کوڈ بھیجیں", + "KM": "کلو میٹر", + "End Ride": "سفر ختم کریں", + "Minute": "منٹ", + "Go to passenger Location now": "اب مسافر کی لوکیشن پر جائیں", + "Duration of the Ride is ": "سفر کا دورانیہ ہے ", + "Distance of the Ride is ": "سفر کا فاصلہ ہے ", + "Name of the Passenger is ": "مسافر کا نام ہے ", + "Hello this is Captain": "ہیلو یہ کپتان ہے", + "Start the Ride": "سفر شروع کریں", + "Please Wait If passenger want To Cancel!": + "براہ کرم انتظار کریں اگر مسافر منسوخ کرنا چاہے!", + "Total Duration:": "کل دورانیہ:", + "Active Duration:": "فعال دورانیہ:", + "Waiting for Captin ...": "کپتان کا انتظار...", + "Age is ": "عمر ہے ", + "Rating is ": "ریٹنگ ہے ", + " to arrive you.": " آپ تک پہنچنے کے لیے۔", + "Tariff": "ٹیرف", + "Settings": "ترتیبات", + "Feed Back": "فیڈ بیک", + "Please enter a valid 16-digit card number": + "براہ کرم درست 16 ہندسوں کا کارڈ نمبر درج کریں", + "Add Phone": "فون شامل کریں", + "Please enter a phone number": "براہ کرم فون نمبر درج کریں", + "You dont Add Emergency Phone Yet!": + "آپ نے ابھی تک ایمرجنسی فون شامل نہیں کیا!", + "You will arrive to your destination after ": + "آپ اپنی منزل پر پہنچیں گے بعد از ", + "You can cancel Ride now": "آپ اب سواری منسوخ کر سکتے ہیں", + "You Can cancel Ride After Captain did not come in the time": + "اگر کپتان وقت پر نہیں آیا تو آپ سواری منسوخ کر سکتے ہیں", + "If you in Car Now. Press Start The Ride": + "اگر آپ کار میں ہیں تو سفر شروع کریں دبائیں", + "You Dont Have Any amount in": "آپ کے پاس کوئی رقم نہیں ہے میں", + "Wallet!": "والٹ!", + "You Have": "آپ کے پاس ہے", + "Save Credit Card": "کریڈٹ کارڈ محفوظ کریں", + "Show Promos": "پروموز دکھائیں", + "10 and get 4% discount": "10 اور 4% ڈسکاؤنٹ حاصل کریں", + "20 and get 6% discount": "20 اور 6% ڈسکاؤنٹ حاصل کریں", + "40 and get 8% discount": "40 اور 8% ڈسکاؤنٹ حاصل کریں", + "100 and get 11% discount": "100 اور 11% ڈسکاؤنٹ حاصل کریں", + "Pay with Your PayPal": "اپنے پے پال سے ادائیگی کریں", + "You will choose one of above !": + "آپ کو اوپر والوں میں سے ایک کا انتخاب کرنا ہوگا!", + "Edit Profile": "پروفائل میں ترمیم کریں", + "Copy this Promo to use it in your Ride!": + "اپنی سواری میں استعمال کرنے کے لیے اس پرومو کو کاپی کریں!", + "To change some Settings": "کچھ ترتیبات تبدیل کرنے کے لیے", + "Order Request Page": "آرڈر کی درخواست کا صفحہ", + "Rouats of Trip": "سفر کے راستے", + "Passenger Name is ": "مسافر کا نام ہے ", + "Total From Passenger is ": "مسافر سے کل: ", + "Duration To Passenger is ": "مسافر تک دورانیہ ہے ", + "Distance To Passenger is ": "مسافر تک فاصلہ ہے ", + "Total For You is ": "آپ کے لیے کل: ", + "Distance is ": "فاصلہ ہے ", + " KM": " کلو میٹر", + "Duration of Trip is ": "سفر کا دورانیہ ہے ", + " Minutes": " منٹ", + "Apply Order": "آرڈر لاگو کریں", + "Refuse Order": "آرڈر مسترد کریں", + "Rate Captain": "کپتان کو ریٹ کریں", + "Enter your Note": "اپنا نوٹ درج کریں", + "Type something...": "کچھ لکھیں...", + "Submit rating": "ریٹنگ جمع کرائیں", + "Rate Passenger": "مسافر کو ریٹ کریں", + "Ride Summary": "سواری کا خلاصہ", + "welcome_message": "Intaleq میں خوش آمدید!", + "app_description": + "Intaleq ایک محفوظ، قابل اعتماد، اور قابل رسائی رائیڈ ہیلنگ ایپ ہے۔", + "get_to_destination": "اپنی منزل پر تیزی اور آسانی سے پہنچیں۔", + "get_a_ride": + "Intaleq کے ساتھ، آپ منٹوں میں منزل تک سواری حاصل کر سکتے ہیں۔", + "safe_and_comfortable": "محفوظ اور آرام دہ سواری کا لطف اٹھائیں۔", + "committed_to_safety": "Intaleq حفاظت کے لیے پرعزم ہے۔", + "your ride is Accepted": "آپ کی سواری قبول کر لی گئی ہے", + "Driver is waiting at pickup.": "ڈرائیور پک اپ پر انتظار کر رہا ہے۔", + "Driver is on the way": "ڈرائیور راستے میں ہے", + "Contact Options": "رابطے کے اختیارات", + "Send a custom message": "حسب ضرورت پیغام بھیجیں", + "Type your message": "اپنا پیغام ٹائپ کریں", + "I will go now": "میں اب جاؤں گا", + "You Have Tips": "آپ کے پاس ٹپس ہیں", + " tips\nTotal is": " ٹپس\nکل ہے", + "Your fee is ": "آپ کی فیس ہے ", + "Do you want to pay Tips for this Driver": + "کیا آپ اس ڈرائیور کے لیے ٹپ ادا کرنا چاہتے ہیں", + "Tip is ": "ٹپ ہے ", + "Are you want to wait drivers to accept your order": + "کیا آپ چاہتے ہیں کہ ڈرائیورز آپ کا آرڈر قبول کرنے کا انتظار کریں", + "This price is fixed even if the route changes for the driver.": + "یہ قیمت مقررہ ہے چاہے ڈرائیور کا راستہ بدل جائے۔", + "The price may increase if the route changes.": + "اگر راستہ بدل گیا تو قیمت بڑھ سکتی ہے۔", + "The captain is responsible for the route.": + "کپتان راستے کا ذمہ دار ہے۔", + "We are search for nearst driver": "ہم قریبی ڈرائیور تلاش کر رہے ہیں", + "Your order is being prepared": "آپ کا آرڈر تیار ہو رہا ہے", + "The drivers are reviewing your request": + "ڈرائیورز آپ کی درخواست کا جائزہ لے رہے ہیں", + "Your order sent to drivers": "آپ کا آرڈر ڈرائیورز کو بھیج دیا گیا", + "You can call or record audio of this trip": + "آپ اس سفر کی کال یا آڈیو ریکارڈ کر سکتے ہیں", + "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": + "سفر شروع ہو گیا ہے! بلا جھجھک ایمرجنسی نمبرز سے رابطہ کریں، اپنا سفر شیئر کریں، یا سفر کے لیے وائس ریکارڈنگ فعال کریں۔", + "Camera Access Denied.": "کیمرے تک رسائی مسترد کر دی گئی۔", + "Open Settings": "ترتیبات کھولیں", + "GPS Required Allow !.": "GPS کی اجازت درکار ہے!.", + "Your Account is Deleted": "آپ کا اکاؤنٹ حذف کر دیا گیا ہے", + "Are you sure to delete your account?": + "کیا آپ واقعی اپنا اکاؤنٹ حذف کرنا چاہتے ہیں؟", + "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": + "آپ کا ڈیٹا 2 ہفتوں بعد مٹا دیا جائے گا\nاور آپ 1 ماہ بعد ایپ استعمال کرنے کے لیے واپس نہیں آ سکیں گے ", + "Enter Your First Name": "اپنا پہلا نام درج کریں", + "Are you Sure to LogOut?": "کیا آپ واقعی لاگ آؤٹ کرنا چاہتے ہیں؟", + "Email Wrong": "ای میل غلط ہے", + "Email you inserted is Wrong.": + "جو ای میل آپ نے درج کیا ہے وہ غلط ہے۔", + "You have finished all times ": "آپ نے تمام اوقات ختم کر دیے ہیں ", + "if you want help you can email us here": + "اگر آپ مدد چاہتے ہیں تو آپ ہمیں یہاں ای میل کر سکتے ہیں", + "Thanks": "شکریہ", + "Email Us": "ہمیں ای میل کریں", + "I cant register in your app in face detection ": + "میں چہرے کی شناخت میں آپ کی ایپ میں رجسٹر نہیں ہو سکتا ", + "Hi": "ہیلو", + "No face detected": "کوئی چہرہ شناخت نہیں ہوا", + "Image detecting result is ": "تصویر کی شناخت کا نتیجہ ہے ", + "from 3 times Take Attention": "3 بار سے توجہ دیں", + "Be sure for take accurate images please\nYou have": + "براہ کرم درست تصاویر لینے کا یقین کریں\nآپ کے پاس ہے", + "image verified": "تصویر کی تصدیق ہو گئی", + "Next": "اگلا", + "There is no help Question here": "یہاں کوئی مدد کا سوال نہیں ہے", + "You dont have Points": "آپ کے پاس پوائنٹس نہیں ہیں", + "You Are Stopped For this Day !": "آپ اس دن کے لیے روک دیے گئے ہیں!", + "You must be charge your Account": "آپ کو اپنا اکاؤنٹ چارج کرنا ہوگا", + "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": + "آپ نے اس دن 3 سواریوں سے انکار کر دیا یہی وجہ ہے \nکل ملتے ہیں!", + "Recharge my Account": "میرا اکاؤنٹ ریچارج کریں", + "Ok , See you Tomorrow": "ٹھیک ہے، کل ملتے ہیں", + "You are Stopped": "آپ رکے ہوئے ہیں", + "Connected": "منسلک", + "Not Connected": "منسلک نہیں", + "Your are far from passenger location": + "آپ مسافر کی لوکیشن سے دور ہیں", + "go to your passenger location before\nPassenger cancel trip": + "مسافر کے سفر منسوخ کرنے سے پہلے\nاپنی مسافر کی لوکیشن پر جائیں", + "You will get cost of your work for this trip": + "آپ کو اس سفر کے لیے اپنے کام کی قیمت ملے گی", + " in your wallet": " آپ کے والٹ میں", + "you gain": "آپ نے حاصل کیا", + "Order Cancelled by Passenger": + "آرڈر مسافر کی طرف سے منسوخ کر دیا گیا", + "Feedback data saved successfully": + "فیڈ بیک ڈیٹا کامیابی سے محفوظ ہو گیا", + "No Promo for today .": "آج کے لیے کوئی پرومو نہیں ہے۔", + "Select your destination": "اپنی منزل منتخب کریں", + "Search for your Start point": "اپنا نقطہ آغاز تلاش کریں", + "Search for waypoint": "راستے کا نقطہ تلاش کریں", + "Current Location": "موجودہ لوکیشن", + "Add Location 1": "لوکیشن 1 شامل کریں", + "You must Verify email !.": "آپ کو ای میل کی تصدیق کرنی ہوگی!", + "Cropper": "کروپر", + "Saved Sucssefully": "کامیابی سے محفوظ ہو گیا", + "Select Date": "تاریخ منتخب کریں", + "Birth Date": "پیدائش کی تاریخ", + "Ok": "ٹھیک ہے", + "the 500 points equal 30 JOD": "500 پوائنٹس 30 روپے کے برابر ہیں", + "the 500 points equal 30 JOD for you \nSo go and gain your money": + "500 پوائنٹس آپ کے لیے 30 روپے کے برابر ہیں \nتو جائیں اور اپنے پیسے کمائیں", + "token updated": "ٹوکن اپ ڈیٹ ہو گیا", + "Add Location 2": "لوکیشن 2 شامل کریں", + "Add Location 3": "لوکیشن 3 شامل کریں", + "Add Location 4": "لوکیشن 4 شامل کریں", + "Waiting for your location": "آپ کی لوکیشن کا انتظار ہے", + "Search for your destination": "اپنی منزل تلاش کریں", + "Hi! This is": "ہیلو! یہ ہے", + " I am using": " میں استعمال کر رہا ہوں", + " to ride with": " سواری کرنے کے لیے ساتھ", + " as the driver.": " بطور ڈرائیور۔", + "is driving a ": "چلا رہا ہے ایک ", + " with license plate ": " لائسنس پلیٹ کے ساتھ ", + " I am currently located at ": " میں فی الحال یہاں واقع ہوں ", + "Please go to Car now ": "براہ کرم اب کار کے پاس جائیں ", + "You will receive a code in WhatsApp Messenger": + "آپ کو واٹس ایپ میسنجر میں ایک کوڈ موصول ہوگا", + "If you need assistance, contact us": + "اگر آپ کو مدد کی ضرورت ہو تو ہم سے رابطہ کریں", + "Promo Ended": "پرومو ختم ہو گیا", + "Enter the promo code and get": "پرومو کوڈ درج کریں اور حاصل کریں", + "DISCOUNT": "ڈسکاؤنٹ", + "No wallet record found": "کوئی والٹ ریکارڈ نہیں ملا", + "for": "کے لیے", + "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": + "Intaleq سب سے محفوظ رائیڈ شیئرنگ ایپ ہے جو کپتانوں اور مسافروں دونوں کے لیے بہت سی خصوصیات متعارف کراتی ہے۔", + "You can contact us during working hours from 12:00 - 19:00.": + "آپ ہم سے دفتری اوقات 12:00 - 19:00 کے دوران رابطہ کر سکتے ہیں۔", + "Choose a contact option": "رابطے کا اختیار منتخب کریں", + "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": + "کام کا وقت 12:00 - 19:00 ہے۔\nآپ واٹس ایپ پیغام یا ای میل بھیج سکتے ہیں۔", + "Promo code copied to clipboard!": + "پرومو کوڈ کلپ بورڈ پر کاپی ہو گیا!", + "Copy Code": "کوڈ کاپی کریں", + "Your invite code was successfully applied!": + "آپ کا دعوتی کوڈ کامیابی سے لاگو ہو گیا!", + "Payment Options": "ادائیگی کے اختیارات", + "wait 1 minute to receive message": + "پیغام موصول ہونے کے لیے 1 منٹ انتظار کریں", + "You have copied the promo code.": "آپ نے پرومو کوڈ کاپی کر لیا ہے۔", + "Select Payment Amount": "ادائیگی کی رقم منتخب کریں", + "The promotion period has ended.": "پروموشن کی مدت ختم ہو گئی ہے۔", + "Promo Code Accepted": "پرومو کوڈ قبول ہو گیا", + "Tap on the promo code to copy it!": + "اسے کاپی کرنے کے لیے پرومو کوڈ پر ٹیپ کریں!", + "Lowest Price Achieved": "کم ترین قیمت حاصل کی گئی", + "Cannot apply further discounts.": "مزید چھوٹ لاگو نہیں کی جا سکتی۔", + "Promo Already Used": "پرومو پہلے ہی استعمال ہو چکا ہے", + "Invitation Used": "دعوت نامہ استعمال ہو چکا ہے", + "You have already used this promo code.": + "آپ پہلے ہی یہ پرومو کوڈ استعمال کر چکے ہیں۔", + "Insert Your Promo Code": "اپنا پرومو کوڈ درج کریں", + "Enter promo code here": "پرومو کوڈ یہاں درج کریں", + "Please enter a valid promo code": + "براہ کرم ایک درست پرومو کوڈ درج کریں", + "Awfar Car": "سستی کار", + "Old and affordable, perfect for budget rides.": + "پرانی اور سستی، بجٹ سواریوں کے لیے بہترین۔", + " If you need to reach me, please contact the driver directly at": + " اگر آپ کو مجھ تک پہنچنے کی ضرورت ہو تو براہ کرم ڈرائیور سے براہ راست رابطہ کریں", + "No Car or Driver Found in your area.": + "آپ کے علاقے میں کوئی کار یا ڈرائیور نہیں ملا۔", + "Please Try anther time ": "براہ کرم کسی اور وقت کوشش کریں ", + "There no Driver Aplly your order sorry for that ": + "کوئی ڈرائیور آپ کا آرڈر اپلائی نہیں کر رہا اس کے لیے معذرت ", + "Trip Cancelled": "سفر منسوخ ہو گیا", + "The Driver Will be in your location soon .": + "ڈرائیور جلد ہی آپ کی لوکیشن پر ہوگا۔", + "The distance less than 500 meter.": "فاصلہ 500 میٹر سے کم ہے۔", + "Promo End !": "پرومو ختم!", + "There is no notification yet": "ابھی تک کوئی اطلاع نہیں ہے", + "Use Touch ID or Face ID to confirm payment": + "ادائیگی کی تصدیق کے لیے ٹچ آئی ڈی یا فیس آئی ڈی استعمال کریں", + "Contact us for any questions on your order.": + "اپنے آرڈر پر کسی بھی سوال کے لیے ہم سے رابطہ کریں۔", + "Pyament Cancelled .": "ادائیگی منسوخ ہو گئی۔", + "type here": "یہاں ٹائپ کریں", + "Scan Driver License": "ڈرائیونگ لائسنس اسکین کریں", + "Please put your licence in these border": + "براہ کرم اپنا لائسنس ان حدود میں رکھیں", + "Camera not initialized yet": "کیمرہ ابھی تک شروع نہیں ہوا", + "Take Image": "تصویر لیں", + "AI Page": "AI صفحہ", + "Take Picture Of ID Card": "شناختی کارڈ کی تصویر لیں", + "Take Picture Of Driver License Card": + "ڈرائیونگ لائسنس کارڈ کی تصویر لیں", + "We are process picture please wait ": + "ہم تصویر پر کارروائی کر رہے ہیں براہ کرم انتظار کریں ", + "There is no data yet.": "ابھی تک کوئی ڈیٹا نہیں ہے۔", + "Name :": "نام :", + "Drivers License Class: ": "ڈرائیونگ لائسنس کلاس: ", + "Document Number: ": "دستاویز نمبر: ", + "Address: ": "پتہ: ", + "Height: ": "اونچائی: ", + "Expiry Date: ": "میعاد ختم ہونے کی تاریخ: ", + "Date of Birth: ": "پیدائش کی تاریخ: ", + "You can't continue with us .\nYou should renew Driver license": + "آپ ہمارے ساتھ جاری نہیں رہ سکتے ۔\nآپ کو ڈرائیور لائسنس کی تجدید کرنی چاہیے", + "Detect Your Face ": "اپنا چہرہ شناخت کریں ", + "Go to next step\nscan Car License.": + "اگلے قدم پر جائیں\nکار لائسنس اسکین کریں۔", + "Name in arabic": "عربی میں نام", + "Drivers License Class": "ڈرائیونگ لائسنس کلاس", + "Selected Date": "منتخب کردہ تاریخ", + "Select Time": "وقت منتخب کریں", + "Selected Time": "منتخب کردہ وقت", + "Selected Date and Time": "منتخب کردہ تاریخ اور وقت", + "Lets check Car license ": "آئیے کار لائسنس چیک کریں ", + "Car": "کار", + "Plate": "پلیٹ", + "Rides": "سواریاں", + "Selected driver": "منتخب ڈرائیور", + "Lets check License Back Face": + "آئیے لائسنس کے پچھلے حصے کو چیک کریں", + "Car License Card": "کار لائسنس کارڈ", + "No image selected yet": "ابھی تک کوئی تصویر منتخب نہیں کی گئی", + "Made :": "بنایا گیا :", + "model :": "ماڈل :", + "VIN :": "VIN :", + "year :": "سال :", + "ُExpire Date": "میعاد ختم ہونے کی تاریخ", + "Login Driver": "لاگ ان ڈرائیور", + "Password must br at least 6 character.": + "پاس ورڈ کم از کم 6 حروف کا ہونا چاہیے۔", + "if you don't have account": "اگر آپ کا اکاؤنٹ نہیں ہے", + "Here recorded trips audio": "یہاں ریکارڈ شدہ دوروں کی آڈیو", + "Register as Driver": "بطور ڈرائیور رجسٹر کریں", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": + "نیچے \"میں متفق ہوں\" کو منتخب کر کے، میں نے جائزہ لیا ہے اور استعمال کی شرائط سے اتفاق کرتا ہوں اور تسلیم کرتا ہوں ", + "Log Out Page": "لاگ آؤٹ صفحہ", + "Log Off": "لاگ آف", + "Register Driver": "ڈرائیور رجسٹر کریں", + "Verify Email For Driver": "ڈرائیور کے لیے ای میل کی تصدیق کریں", + "Admin DashBoard": "ایڈمن ڈیش بورڈ", + "Your name": "آپ کا نام", + "your ride is applied": "آپ کی سواری لاگو ہو گئی ہے", + "H and": "H اور", + "JOD": "روپیہ", + "m": "منٹ", + "We search nearst Driver to you": + "ہم آپ کے قریب ترین ڈرائیور کو تلاش کرتے ہیں", + "please wait till driver accept your order": + "براہ کرم انتظار کریں جب تک ڈرائیور آپ کا آرڈر قبول نہ کرے", + "No accepted orders? Try raising your trip fee to attract riders.": + "کوئی قبول شدہ آرڈر نہیں؟ سواروں کو راغب کرنے کے لیے اپنی ٹرپ فیس بڑھانے کی کوشش کریں۔", + "You should select one": "آپ کو ایک منتخب کرنا چاہیے", + "The driver accept your order for": + "ڈرائیور آپ کا آرڈر قبول کرتا ہے برائے", + "The driver on your way": "ڈرائیور آپ کے راستے میں ہے", + "Total price from ": "سے کل قیمت ", + "Order Details Intaleq": "آرڈر کی تفصیلات Intaleq", + "Selected file:": "منتخب کردہ فائل:", + "Your trip cost is": "آپ کے سفر کی قیمت ہے", + "this will delete all files from your device": + "یہ آپ کے آلے سے تمام فائلیں حذف کر دے گا", + "Exclusive offers and discounts always with the Intaleq app": + "Intaleq ایپ کے ساتھ ہمیشہ خصوصی پیشکشیں اور چھوٹ", + "Submit Question": "سوال جمع کرائیں", + "Please enter your Question.": "براہ کرم اپنا سوال درج کریں۔", + "Help Details": "مدد کی تفصیلات", + "No trip yet found": "ابھی تک کوئی سفر نہیں ملا", + "No Response yet.": "ابھی تک کوئی جواب نہیں ملا۔", + " You Earn today is ": " آپ کی آج کی کمائی ہے ", + " You Have in": " آپ کے پاس ہے میں", + "Total points is ": "کل پوائنٹس ہیں ", + "Total Connection Duration:": "کل کنکشن کا دورانیہ:", + "Passenger name : ": "مسافر کا نام : ", + "Cost Of Trip IS ": "سفر کی قیمت ہے ", + "Arrival time": "پہنچنے کا وقت", + "arrival time to reach your point": "آپ کے پوائنٹ تک پہنچنے کا وقت", + "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Intaleq اور سکوٹر کے دوروں کے لیے، قیمت کا حساب متحرک طور پر لگایا جاتا ہے۔ کمفرٹ ٹرپس کے لیے، قیمت وقت اور فاصلے پر مبنی ہوتی ہے۔", + "Hello this is Driver": "ہیلو یہ ڈرائیور ہے", + "Is the Passenger in your Car ?": "کیا مسافر آپ کی کار میں ہے؟", + "Please wait for the passenger to enter the car before starting the trip.": + "براہ کرم سفر شروع کرنے سے پہلے مسافر کے کار میں داخل ہونے کا انتظار کریں۔", + "No ,still Waiting.": "نہیں، ابھی بھی انتظار کر رہا ہوں۔", + "I arrive you": "میں آپ کے پاس پہنچ گیا", + "I Arrive your site": "میں آپ کی لوکیشن پر پہنچ گیا", + "You are not in near to passenger location": + "آپ مسافر کی لوکیشن کے قریب نہیں ہیں", + "please go to picker location exactly": + "براہ کرم بالکل اسی لوکیشن پر جائیں جہاں سے اٹھانا ہے", + "You Can Cancel Trip And get Cost of Trip From": + "آپ سفر منسوخ کر سکتے ہیں اور سفر کی قیمت حاصل کر سکتے ہیں سے", + "Are you sure to cancel?": "کیا آپ منسوخ کرنے کے لیے یقینی ہیں؟", + "Insert Emergincy Number": "ایمرجنسی نمبر درج کریں", + "Best choice for comfort car and flexible route and stops point": + "آرام دہ کار اور لچکدار راستے اور اسٹاپس پوائنٹ کے لیے بہترین انتخاب", + "Insert": "درج کریں", + "This is for scooter or a motorcycle.": + "یہ سکوٹر یا موٹر سائیکل کے لیے ہے۔", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "یہ سفر آپ کے نقطہ آغاز سے سیدھا آپ کی منزل تک ایک مقررہ قیمت پر جاتا ہے۔ ڈرائیور کو منصوبہ بند راستے کی پیروی کرنی چاہیے۔", + "You can decline a request without any cost": + "آپ بغیر کسی قیمت کے درخواست مسترد کر سکتے ہیں", + "Perfect for adventure seekers who want to experience something new and exciting": + "ان مہم جوئی کرنے والوں کے لیے بہترین جو کچھ نیا اور دلچسپ تجربہ کرنا چاہتے ہیں", + "My current location is:": "میری موجودہ لوکیشن ہے:", + "and I have a trip on": "اور میرے پاس ایک سفر ہے پر", + "App with Passenger": "مسافر کے ساتھ ایپ", + "You will be pay the cost to driver or we will get it from you on next trip": + "آپ ڈرائیور کو قیمت ادا کریں گے یا ہم اگلے سفر پر آپ سے لے لیں گے", + "Trip has Steps": "سفر کے مراحل ہیں", + "Distance from Passenger to destination is ": + "مسافر سے منزل تک کا فاصلہ ہے ", + "price is": "قیمت ہے", + "This ride type does not allow changes to the destination or additional stops": + "اس قسم کی سواری منزل میں تبدیلیوں یا اضافی اسٹاپس کی اجازت نہیں دیتی", + "This price may be changed": "یہ قیمت تبدیل ہو سکتی ہے", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "کوئی سم کارڈ نہیں، کوئی مسئلہ نہیں! ہماری ایپ کے ذریعے براہ راست اپنے ڈرائیور کو کال کریں۔", + "This ride type allows changes, but the price may increase": + "اس قسم کی سواری تبدیلیوں کی اجازت دیتی ہے، لیکن قیمت بڑھ سکتی ہے", + "Select one message": "ایک پیغام منتخب کریں", + "I'm waiting for you": "میں آپ کا انتظار کر رہا ہوں", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "ہم نے محسوس کیا کہ Intaleq 100 کلومیٹر فی گھنٹہ سے تجاوز کر رہا ہے۔ براہ کرم اپنی حفاظت کے لیے رفتار کم کریں۔", + "Warning: Intaleqing detected!": "انتباہ: تیز رفتاری کا پتہ چلا!", + "Please help! Contact me as soon as possible.": + "براہ کرم مدد کریں! جتنی جلدی ہو سکے مجھ سے رابطہ کریں۔", + "Share Trip Details": "سفر کی تفصیلات شیئر کریں", + "Car Plate is ": "کار پلیٹ ہے ", + "the 300 points equal 300 L.E for you \nSo go and gain your money": + "300 پوائنٹس آپ کے لیے 300 روپے کے برابر ہیں \nتو جائیں اور اپنے پیسے کمائیں", + "the 300 points equal 300 L.E": "300 پوائنٹس 300 روپے کے برابر ہیں", + "The payment was not approved. Please try again.": + "ادائیگی منظور نہیں ہوئی۔ براہ کرم دوبارہ کوشش کریں۔", + "Payment Failed": "ادائیگی ناکام ہو گئی", + "This is a scheduled notification.": "یہ ایک طے شدہ اطلاع ہے۔", + "An error occurred during the payment process.": + "ادائیگی کے عمل کے دوران ایک خرابی پیش آ گئی۔", + "The payment was approved.": "ادائیگی منظور ہو گئی۔", + "Payment Successful": "ادائیگی کامیاب", + "No ride found yet": "ابھی تک کوئی سواری نہیں ملی", + "Accept Order": "آرڈر قبول کریں", + "Bottom Bar Example": "باٹم بار مثال", + "Driver phone": "ڈرائیور کا فون", + "Statistics": "شماریات", + "Origin": "اصل", + "Destination": "منزل", + "Driver Name": "ڈرائیور کا نام", + "Driver Car Plate": "ڈرائیور کار پلیٹ", + "Available for rides": "سواریوں کے لیے دستیاب", + "Scan Id": "آئی ڈی اسکین کریں", + "Camera not initilaized yet": "کیمرہ ابھی تک شروع نہیں ہوا", + "Scan ID MklGoogle": "آئی ڈی MklGoogle اسکین کریں", + "Language": "زبان", + "Jordan": "اردن", + "USA": "امریکہ", + "Egypt": "مصر", + "Turkey": "ترکی", + "Saudi Arabia": "سعودی عرب", + "Qatar": "قطر", + "Bahrain": "بحرین", + "Kuwait": "کویت", + "But you have a negative salary of": "لیکن آپ کی منفی تنخواہ ہے", + "Promo Code": "پرومو کوڈ", + "Your trip distance is": "آپ کے سفر کا فاصلہ ہے", + "Enter promo code": "پرومو کوڈ درج کریں", + "You have promo!": "آپ کے پاس پرومو ہے!", + "Cost Duration": "لاگت کا دورانیہ", + "Duration is": "دورانیہ ہے", + "Leave": "چھوڑیں", + "Join": "شامل ہوں", + "Heading your way now. Please be ready.": + "اب آپ کے راستے کی طرف بڑھ رہا ہوں۔ براہ کرم تیار رہیں۔", + "Approaching your area. Should be there in 3 minutes.": + "آپ کے علاقے کے قریب پہنچ رہا ہوں۔ 3 منٹ میں وہاں ہونا چاہیے۔", + "There's heavy traffic here. Can you suggest an alternate pickup point?": + "یہاں ٹریفک بہت زیادہ ہے۔ کیا آپ متبادل پک اپ پوائنٹ تجویز کر سکتے ہیں؟", + "This ride is already taken by another driver.": + "یہ سواری پہلے ہی کسی اور ڈرائیور نے لے لی ہے۔", + "You Should be select reason.": "آپ کو وجہ منتخب کرنی چاہیے۔", + "Waiting for Driver ...": "ڈرائیور کا انتظار...", + "Latest Recent Trip": "تازہ ترین حالیہ سفر", + "from your list": "آپ کی فہرست سے", + "Do you want to change Work location": + "کیا آپ کام کی جگہ تبدیل کرنا چاہتے ہیں", + "Do you want to change Home location": + "کیا آپ گھر کی لوکیشن تبدیل کرنا چاہتے ہیں", + "We Are Sorry That we dont have cars in your Location!": + "ہم معذرت خواہ ہیں کہ ہمارے پاس آپ کی لوکیشن میں کاریں نہیں ہیں!", + "Choose from Map": "نقشے سے منتخب کریں", + "Pick your ride location on the map - Tap to confirm": + "نقشے پر اپنی سواری کی لوکیشن منتخب کریں - تصدیق کے لیے ٹیپ کریں", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "Intaleq ایک رائیڈ ہیلنگ ایپ ہے جو محفوظ، قابل اعتماد اور قابل رسائی ہے۔", + "With Intaleq, you can get a ride to your destination in minutes.": + "Intaleq کے ساتھ، آپ منٹوں میں اپنی منزل تک سواری حاصل کر سکتے ہیں۔", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "Intaleq حفاظت کے لیے پرعزم ہے، اور ہمارے تمام کپتانوں کی احتیاط سے جانچ پڑتال کی جاتی ہے اور پس منظر کی جانچ کی جاتی ہے۔", + "Pick from map": "نقشے سے منتخب کریں", + "No Car in your site. Sorry!": "آپ کی جگہ پر کوئی کار نہیں۔ معذرت!", + "Nearest Car for you about ": "آپ کے لیے قریب ترین کار تقریباً ", + "From :": "سے :", + "Get Details of Trip": "سفر کی تفصیلات حاصل کریں", + "If you want add stop click here": + "اگر آپ اسٹاپ شامل کرنا چاہتے ہیں تو یہاں کلک کریں", + "Where you want go ": "آپ کہاں جانا چاہتے ہیں ", + "My Card": "میرا کارڈ", + "Start Record": "ریکارڈ شروع کریں", + "History of Trip": "سفر کی تاریخ", + "Helping Center": "ہیلپنگ سینٹر", + "Record saved": "ریکارڈ محفوظ ہو گیا", + "Trips recorded": "دورے ریکارڈ کیے گئے", + "Select Your Country": "اپنا ملک منتخب کریں", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "یہ یقینی بنانے کے لیے کہ آپ کو اپنی لوکیشن کے لیے درست ترین معلومات ملیں، براہ کرم نیچے اپنا ملک منتخب کریں۔", + "Are you sure to delete recorded files": + "کیا آپ واقعی ریکارڈ شدہ فائلیں حذف کرنا چاہتے ہیں", + "Select recorded trip": "ریکارڈ شدہ سفر منتخب کریں", + "Card Number": "کارڈ نمبر", + "Hi, Where to ": "ہیلو، کہاں جانا ہے ", + "Pick your destination from Map": "نقشے سے اپنی منزل منتخب کریں", + "Add Stops": "اسٹاپس شامل کریں", + "Get Direction": "سمت حاصل کریں", + "Add Location": "لوکیشن شامل کریں", + "Switch Rider": "رائیڈر تبدیل کریں", + "You will arrive to your destination after timer end.": + "ٹائمر ختم ہونے کے بعد آپ اپنی منزل پر پہنچ جائیں گے۔", + "You can cancel trip": "آپ سفر منسوخ کر سکتے ہیں", + "The driver waitting you in picked location .": + "ڈرائیور منتخب جگہ پر آپ کا انتظار کر رہا ہے۔", + "Pay with Your": "اپنے ساتھ ادا کریں", + "Pay with Credit Card": "کریڈٹ کارڈ سے ادائیگی کریں", + "Show Promos to Charge": "چارج کرنے کے لیے پروموز دکھائیں", + "Point": "پوائنٹ", + "How many hours would you like to wait?": + "آپ کتنے گھنٹے انتظار کرنا چاہیں گے؟", + "Driver Wallet": "ڈرائیور والٹ", + "Choose between those Type Cars": + "ان قسم کی کاروں کے درمیان انتخاب کریں", + "hour": "گھنٹہ", + "Select Waiting Hours": "انتظار کے اوقات منتخب کریں", + "Total Points is": "کل پوائنٹس ہیں", + "You will receive a code in SMS message": + "آپ کو ایس ایم ایس پیغام میں ایک کوڈ موصول ہوگا", + "Done": "ہو گیا", + "Total Budget from trips is ": "سفروں سے کل بجٹ ہے ", + "Total Amount:": "کل رقم:", + "Total Budget from trips by\nCredit card is ": + "کریڈٹ کارڈ کے ذریعے سفروں سے\nکل بجٹ ہے ", + "This amount for all trip I get from Passengers": + "یہ رقم تمام سفر کے لیے جو مجھے مسافروں سے ملتی ہے", + "Pay from my budget": "میرے بجٹ سے ادا کریں", + "This amount for all trip I get from Passengers and Collected For me in": + "یہ رقم تمام سفر کے لیے جو مجھے مسافروں سے ملتی ہے اور میرے لیے جمع کی گئی ہے", + "You can buy points from your budget": + "آپ اپنے بجٹ سے پوائنٹس خرید سکتے ہیں", + "insert amount": "رقم درج کریں", + "You can buy Points to let you online\nby this list below": + "آپ آن لائن رہنے کے لیے پوائنٹس خرید سکتے ہیں\nنیچے دی گئی اس فہرست کے ذریعے", + "Create Wallet to receive your money": + "اپنے پیسے وصول کرنے کے لیے والٹ بنائیں", + "Enter your feedback here": "اپنا فیڈ بیک یہاں درج کریں", + "Please enter your feedback.": "براہ کرم اپنا فیڈ بیک درج کریں۔", + "Feedback": "فیڈ بیک", + "Submit ": "جمع کرائیں ", + "Click here to Show it in Map": + "اسے نقشے میں دکھانے کے لیے یہاں کلک کریں", + "Canceled": "منسوخ", + "No I want": "نہیں میں چاہتا ہوں", + "Email is": "ای میل ہے:", + "Phone Number is": "فون نمبر ہے:", + "Date of Birth is": "پیدائش کی تاریخ ہے:", + "Sex is ": "جنس ہے: ", + "Car Details": "کار کی تفصیلات", + "VIN is": "VIN ہے:", + "Color is ": "رنگ ہے: ", + "Make is ": "میک ہے: ", + "Model is": "ماڈل ہے:", + "Year is": "سال ہے:", + "Expiration Date ": "میعاد ختم ہونے کی تاریخ: ", + "Edit Your data": "اپنے ڈیٹا میں ترمیم کریں", + "write vin for your car": "اپنی کار کے لیے vin لکھیں", + "VIN": "VIN", + "Device Change Detected": "ڈیوائس کی تبدیلی کا پتہ چلا", + "Please verify your identity": "براہ کرم اپنی شناخت کی تصدیق کریں", + "write Color for your car": "اپنی کار کے لیے رنگ لکھیں", + "write Make for your car": "اپنی کار کے لیے میک لکھیں", + "write Model for your car": "اپنی کار کے لیے ماڈل لکھیں", + "write Year for your car": "اپنی کار کے لیے سال لکھیں", + "write Expiration Date for your car": + "اپنی کار کے لیے میعاد ختم ہونے کی تاریخ لکھیں", + "Tariffs": "ٹیرف", + "Minimum fare": "کم از کم کرایہ", + "Maximum fare": "زیادہ سے زیادہ کرایہ", + "Flag-down fee": "فلیگ ڈاؤن فیس", + "Including Tax": "ٹیکس سمیت", + "BookingFee": "بکنگ فیس", + "Morning": "صبح", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "07:30 سے 10:30 تک (جمعرات، جمعہ، ہفتہ، پیر)", + "Evening": "شام", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "12:00 سے 15:00 تک (جمعرات، جمعہ، ہفتہ، پیر)", + "Night": "رات", + "You have in account": "آپ کے اکاؤنٹ میں ہے", + "Select Country": "ملک منتخب کریں", + "Ride Today : ": "آج کی سواری: ", + "After this period\nYou can't cancel!": + "اس مدت کے بعد\nآپ منسوخ نہیں کر سکتے!", + "from 23:59 till 05:30": "23:59 سے 05:30 تک", + "Rate Driver": "ڈرائیور کو ریٹ کریں", + "Total Cost is ": "کل قیمت ہے ", + "Write note": "نوٹ لکھیں", + "Time to arrive": "پہنچنے کا وقت", + "Ride Summaries": "سواری کے خلاصے", + "Total Cost": "کل قیمت", + "Average of Hours of": "گھنٹوں کی اوسط", + " is ON for this month": " اس مہینے کے لیے آن ہے", + "Days": "دن", + "Total Hours on month": "مہینے میں کل گھنٹے", + "Counts of Hours on days": "دنوں میں گھنٹوں کی گنتی", + "OrderId": "آرڈر آئی ڈی", + "created time": "تخلیق کا وقت", + "Intaleq Over": "Intaleq ختم", + "I will slow down": "میں رفتار کم کروں گا", + "Map Passenger": "نقشہ مسافر", + "Be Slowly": "آہستہ رہیں", + "If you want to make Google Map App run directly when you apply order": + "اگر آپ چاہتے ہیں کہ جب آپ آرڈر لاگو کریں تو گوگل میپ ایپ براہ راست چلے", + "You can change the language of the app": + "آپ ایپ کی زبان تبدیل کر سکتے ہیں", + "Your Budget less than needed": "آپ کا بجٹ ضرورت سے کم ہے", + "You can change the Country to get all features": + "آپ تمام خصوصیات حاصل کرنے کے لیے ملک تبدیل کر سکتے ہیں", + "Change Country": "ملک تبدیل کریں" + }, + "hi": { + "Order": "आदेश", + "OrderVIP": "वीआईपी आदेश", + "Cancel Trip": "यात्रा रद्द करें", + "Passenger Cancel Trip": "यात्री ने यात्रा रद्द कर दी", + "VIP Order": "वीआईपी आदेश", + "The driver accepted your trip": + "ड्राइवर ने आपकी यात्रा स्वीकार कर ली", + "message From passenger": "यात्री से संदेश", + "Cancel": "रद्द करें", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "यात्रा रद्द कर दी गई। यात्रा की लागत आपके वॉलेट में जोड़ दी जाएगी।", + "token change": "टोकन बदलें", + "face detect": "चेहरा पहचान", + "Face Detection Result": "चेहरा पहचान परिणाम", + "similar": "समान", + "not similar": "समान नहीं", + "Hi ,I will go now": "हाय, मैं अब जाऊंगा", + "Passenger come to you": "यात्री आपके पास आ रहा है", + "Call Income": "कॉल आय", + "Call Income from Passenger": "यात्री से कॉल आय", + "Criminal Document Required": "आपराधिक दस्तावेज़ आवश्यक", + "You should have upload it .": "आपको इसे अपलोड करना चाहिए था।", + "Call End": "कॉल समाप्त", + "The order has been accepted by another driver.": + "आदेश को एक अन्य ड्राइवर ने स्वीकार कर लिया है।", + "The order Accepted by another Driver": + "आदेश को एक अन्य ड्राइवर ने स्वीकार कर लिया", + "We regret to inform you that another driver has accepted this order.": + "हमें खेद है कि एक अन्य ड्राइवर ने इस आदेश को स्वीकार कर लिया है।", + "Driver Applied the Ride for You": + "ड्राइवर ने आपके लिए यात्रा लागू की", + "Applied": "लागू", + "Hi ,I Arrive your site": "हाय, मैं आपकी साइट पर पहुंच गया हूं", + "Please go to Car Driver": "कृपया कार ड्राइवर के पास जाएं", + "Ok I will go now.": "ठीक है, मैं अब जाऊंगा।", + "Accepted Ride": "स्वीकृत यात्रा", + "Driver Accepted the Ride for You": + "ड्राइवर ने आपके लिए यात्रा स्वीकार कर ली", + "Promo": "प्रोमो", + "Show latest promo": "नवीनतम प्रोमो दिखाएं", + "Trip Monitoring": "यात्रा निगरानी", + "Driver Is Going To Passenger": "ड्राइवर यात्री के पास जा रहा है", + "Please stay on the picked point.": "कृपया चुने हुए बिंदु पर रहें।", + "message From Driver": "ड्राइवर से संदेश", + "Trip is Begin": "यात्रा शुरू हो गई है", + "Cancel Trip from driver": "ड्राइवर से यात्रा रद्द करें", + "We will look for a new driver.\nPlease wait.": + "हम एक नए ड्राइवर की तलाश करेंगे।\nकृपया प्रतीक्षा करें।", + "The driver canceled your ride.": + "ड्राइवर ने आपकी यात्रा रद्द कर दी।", + "Driver Finish Trip": "ड्राइवर ने यात्रा समाप्त की", + "you will pay to Driver": "आप ड्राइवर को भुगतान करेंगे", + "Don’t forget your personal belongings.": + "अपने निजी सामान को न भूलें।", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "कृपया सुनिश्चित करें कि आपके पास आपका सारा निजी सामान है और कोई भी शेष किराया, यदि लागू हो, आपके वॉलेट में जोड़ दिया गया है। Intaleq ऐप चुनने के लिए धन्यवाद।", + "Finish Monitor": "निगरानी समाप्त", + "Trip finished": "यात्रा समाप्त", + "Call Income from Driver": "ड्राइवर से कॉल आय", + "Driver Cancelled Your Trip": "ड्राइवर ने आपकी यात्रा रद्द कर दी", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "आप ड्राइवर को भुगतान करेंगे, आप ड्राइवर के समय की लागत का भुगतान करेंगे, अपने Intaleq वॉलेट को देखें", + "Order Applied": "आदेश लागू", + //firebase above + +// + "Where to": "कहां जाना है", + "Where are you going?": "आप कहां जा रहे हैं?", + "Quick Actions": "त्वरित कार्रवाई", + "My Wallet": "मेरा वॉलेट", + "Order History": "आदेश इतिहास", + "Contact Us": "हमसे संपर्क करें", + "Driver": "ड्राइवर", + "Complaint": "शिकायत", + "Promos": "प्रोमो", + "Recent Places": "हाल के स्थान", + "From": "से", + "WhatsApp Location Extractor": "WhatsApp स्थान निकालने वाला", + "Location Link": "स्थान लिंक", + "Paste location link here": "स्थान लिंक यहां पेस्ट करें", + "Go to this location": "इस स्थान पर जाएं", + "Paste WhatsApp location link": "WhatsApp स्थान लिंक पेस्ट करें", + "Select Order Type": "आदेश प्रकार चुनें", + "Choose who this order is for": "चुनें कि यह आदेश किसके लिए है", + "I want to order for myself": "मैं अपने लिए आदेश देना चाहता हूं", + "I want to order for someone else": + "मैं किसी और के लिए आदेश देना चाहता हूं", + // "Cancel": "रद्द करें", + "Order for someone else": "किसी और के लिए आदेश", + "Order for myself": "अपने लिए आदेश", + "Are you want to go this site": "क्या आप इस साइट पर जाना चाहते हैं?", + // "Yes": "हां", + "No": "नहीं", + "Are you sure to delete this location?": + "क्या आप वाकई इस स्थान को हटाना चाहते हैं?", + "deleted": "हटाया गया", + "To Work": "काम पर", + "Work Saved": "काम की जगह सहेजी गई", + "To Home": "घर पर", + "Home Saved": "घर की जगह सहेजी गई", + "Destination selected": "गंतव्य चुना गया", + "Now select start pick": "अब शुरुआती स्थान चुनें", + "OK": "ठीक है", + "Confirm Pick-up Location": "पिक-अप स्थान की पुष्टि करें", + "Set Location on Map": "मानचित्र पर स्थान सेट करें", + "Nearest Car: ~": "निकटतम कार: ~", + "Nearest Car": "निकटतम कार", + "No cars nearby": "आस-पास कोई कार नहीं", + "Favorite Places": "पसंदीदा स्थान", + "No favorite places yet!": "अभी तक कोई पसंदीदा स्थान नहीं!", + "from your favorites": "आपके पसंदीदा से", + "Back": "पीछे", + "Sign in for a seamless experience": + "एक सहज अनुभव के लिए साइन इन करें", + "Sign In with Google": "Google के साथ साइन इन करें", + "Sign in with Apple": "Apple के साथ साइन इन करें", + "Need assistance? Contact us": "सहायता चाहिए? हमसे संपर्क करें", + "User not found": "उपयोगकर्ता नहीं मिला", + "Email": "ईमेल", + "Your email address": "आपका ईमेल पता", + "Enter a valid email": "एक वैध ईमेल दर्ज करें", + "Password": "पासवर्ड", + // "Your password": "आपका पासवर्ड", + "Enter your password": "अपना पासवर्ड दर्ज करें", + "Submit": "जमा करें", + "Terms of Use & Privacy Notice": "उपयोग की शर्तें और गोपनीयता नीति", + "Terms of Use": "उपयोग की शर्तें", + "Privacy Notice": "गोपनीयता नीति", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the": + "नीचे \"मैं सहमत हूं\" चुनकर, मैं पुष्टि करता हूं कि मैंने पढ़ लिया है और सहमत हूं", + "and acknowledge the": "और स्वीकार करता हूं", + ". I am at least 18 years old.": ". मैं कम से कम 18 वर्ष का हूं।", + "Continue": "जारी रखें", + "Enable Location Access": "स्थान पहुंच सक्षम करें", + "We need your location to find nearby drivers for pickups and drop-offs.": + "हमें पिकअप और ड्रॉप-ऑफ के लिए निकटतम ड्राइवर खोजने के लिए आपका स्थान चाहिए।", + "Allow Location Access": "स्थान पहुंच की अनुमति दें", + "You should restart app to change language": + "भाषा बदलने के लिए आपको ऐप को पुनः आरंभ करना चाहिए", + "Home Page": "मुखपृष्ठ", + "To change Language the App": "ऐप की भाषा बदलने के लिए", + "Learn more about our app and mission": + "हमारे ऐप और मिशन के बारे में अधिक जानें", + "Promos For Today": "आज के लिए प्रोमो", + "Choose your ride": "अपनी यात्रा चुनें", + "Your Journey Begins Here": "आपकी यात्रा यहां से शुरू होती है", + "Bonus gift": "बोनस उपहार", + "Pay": "भुगतान", + "Get": "प्राप्त करें", + "Send to Driver Again": "ड्राइवर को फिर से भेजें", + "Driver Name:": "ड्राइवर का नाम:", + "No trip data available": "कोई यात्रा डेटा उपलब्ध नहीं", + "Car Plate:": "कार नंबर:", + "remaining": "शेष", + "Order Cancelled": "आदेश रद्द", + "You canceled VIP trip": "आपने वीआईपी यात्रा रद्द कर दी", + "Passenger cancelled order": "यात्री ने आदेश रद्द कर दिया", + "Your trip is scheduled": "आपकी यात्रा निर्धारित है", + "Don't forget your ride!": "अपनी यात्रा न भूलें!", + "Trip updated successfully": "यात्रा सफलतापूर्वक अद्यतन", + "Car Make:": "कार निर्माता:", + "Car Model:": "कार मॉडल:", + "Car Color:": "कार का रंग:", + "Driver Phone:": "ड्राइवर का फोन:", + "Pre-booking": "पूर्व बुकिंग", + "Waiting VIP": "वीआईपी की प्रतीक्षा", + "Driver List": "ड्राइवर सूची", + "Confirm Trip": "यात्रा की पुष्टि करें", + "Select date and time of trip": "यात्रा की तारीख और समय चुनें", + "Date and Time Picker": "तारीख और समय चयनकर्ता", + "Trip Status:": "यात्रा स्थिति:", + "pending": "लंबित", + "accepted": "स्वीकृत", + "rejected": "अस्वीकृत", + "Apply": "लागू करें", + "Enter your promo code": "अपना प्रोमो कोड दर्ज करें", + "Apply Promo Code": "प्रोमो कोड लागू करें", + "Scheduled Time:": "निर्धारित समय:", + "No drivers available": "कोई ड्राइवर उपलब्ध नहीं", + "No drivers available at the moment. Please try again later.": + "फिलहाल कोई ड्राइवर उपलब्ध नहीं है। कृपया बाद में पुनः प्रयास करें।", + "you have a negative balance of": "आपका नकारात्मक शेष है", + "Please try again in a few moments": + "कृपया कुछ क्षणों में पुनः प्रयास करें", + "Unknown Driver": "अज्ञात ड्राइवर", + "in your": "आपके", + "The driver accepted your order for": + "ड्राइवर ने आपका आदेश स्वीकार कर लिया", + "wallet due to a previous trip.": "पिछली यात्रा के कारण वॉलेट।", + "rides": "यात्राएं", + "Add Work": "काम जोड़ें", + "The reason is": "कारण है", + "User does not have a wallet #1652": + "उपयोगकर्ता के पास वॉलेट नहीं है", + "Price of trip": "यात्रा की कीमत", + "From:": "से:", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "स्पीड और डिलीवरी यात्राओं के लिए, कीमत गतिशील रूप से गणना की जाती है। कम्फर्ट यात्राओं के लिए, कीमत समय और दूरी पर आधारित है।", + "Phone Wallet Saved Successfully": "फोन वॉलेट सफलतापूर्वक सहेजा गया", + "Add wallet phone you use": + "जो फोन वॉलेट आप उपयोग करते हैं उसे जोड़ें", + "Update Available": "अद्यतन उपलब्ध", + "Phone number must be exactly 11 digits long": + "फोन नंबर ठीक 11 अंकों का होना चाहिए", + "Insert Wallet phone number": "वॉलेट फोन नंबर डालें", + "Phone number isn't an Egyptian phone number": + "फोन नंबर मिस्र का फोन नंबर नहीं है", + "A new version of the app is available. Please update to the latest version.": + "ऐप का एक नया संस्करण उपलब्ध है। कृपया नवीनतम संस्करण पर अपडेट करें।", + "We use location to get accurate and nearest passengers for you": + "हम सटीक और निकटतम यात्रियों को प्राप्त करने के लिए स्थान का उपयोग करते हैं", + "This ride is already applied by another driver.": + "यह यात्रा पहले से ही एक अन्य ड्राइवर द्वारा लागू की गई है।", + "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": + "हम निकटतम उपलब्ध ड्राइवर खोजने और सटीक पिकअप और ड्रॉपऑफ जानकारी प्रदान करने के लिए आपके सटीक स्थान का उपयोग करते हैं। आप इसे सेटिंग्स में प्रबंधित कर सकते हैं।", + "Where are you, sir?": "आप कहां हैं, सर?", + "I've been trying to reach you but your phone is off.": + "मैं आपसे संपर्क करने की कोशिश कर रहा था लेकिन आपका फोन बंद है।", + "Please don't be late": "कृपया देर न करें", + "Please don't be late, I'm waiting for you at the specified location.": + "कृपया देर न करें, मैं आपका निर्दिष्ट स्थान पर इंतज़ार कर रहा हूं।", + "My location is correct. You can search for me using the navigation app": + "मेरा स्थान सही है। आप नेविगेशन ऐप का उपयोग करके मुझे खोज सकते हैं", + "Hello, I'm at the agreed-upon location": + "हैलो, मैं सहमत स्थान पर हूं", + "How much longer will you be?": "आपको और कितना समय लगेगा?", + "Phone number is verified before": + "फोन नंबर पहले सत्यापित किया गया है", + "Change Ride": "यात्रा बदलें", + "You can change the destination by long-pressing any point on the map": + "आप मानचित्र पर किसी भी बिंदु को लंबे समय तक दबाकर गंतव्य बदल सकते हैं", + "Pick from map destination": "मानचित्र से गंतव्य चुनें", + "Pick or Tap to confirm": "पुष्टि करने के लिए चुनें या टैप करें", + "Accepted your order": "आपका आदेश स्वीकार कर लिया गया", + "Order Accepted": "आदेश स्वीकृत", + "with type": "प्रकार के साथ", + "accepted your order at price": "कीमत पर आपका आदेश स्वीकार कर लिया", + "you canceled order": "आपने आदेश रद्द कर दिया", + "If you want order to another person": + "यदि आप किसी अन्य व्यक्ति के लिए आदेश देना चाहते हैं", + // "Ok I will go now.": "ठीक है, मैं अब जाऊंगा।", + // "Hi, I will go now": "हाय, मैं अब जाऊंगा", + "upgrade price": "मूल्य उन्नयन", + "Please enter a correct phone": "कृपया एक सही फोन दर्ज करें", + "airport": "हवाई अड्डा", + "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": + "लचीले मार्ग और स्टॉप पॉइंट्स के साथ आरामदायक कार के लिए सबसे अच्छा विकल्प। यह हवाई अड्डा इस कीमत पर वीजा प्रवेश प्रदान करता है।", + "You can upgrade price to may driver accept your order": + "आप कीमत बढ़ाकर ड्राइवर को अपना आदेश स्वीकार करने के लिए प्रेरित कर सकते हैं", + "Change Route": "मार्ग बदलें", + "No Captain Accepted Your Order": + "किसी कप्तान ने आपका आदेश स्वीकार नहीं किया", + "We are looking for a captain but the price may increase to let a captain accept": + "हम एक कप्तान की तलाश कर रहे हैं लेकिन कीमत बढ़ सकती है ताकि एक कप्तान स्वीकार कर सके", + "No, I want to cancel this trip": + "नहीं, मैं इस यात्रा को रद्द करना चाहता हूं", + // "Trip Cancelled. The cost of the trip will be added to your wallet.": "यात्रा रद्द कर दी गई। यात्रा की लागत आपके वॉलेट में जोड़ दी जाएगी।", + "Attention": "ध्यान", + "Trip Cancelled. The cost of the trip will be deducted from your wallet.": + "यात्रा रद्द कर दी गई। यात्रा की लागत आपके वॉलेट से काट ली जाएगी।", + "You will be charged for the cost of the driver coming to your location.": + "आपसे ड्राइवर के आपके स्थान पर आने की लागत ली जाएगी।", + "reject your order.": "आपका आदेश अस्वीकार करें।", + "Order Under Review": "आदेश समीक्षा के अधीन", + "is reviewing your order. They may need more information or a higher price.": + "आपके आदेश की समीक्षा कर रहा है। उन्हें अधिक जानकारी या उच्च कीमत की आवश्यकता हो सकती है।", + // "The driver canceled your ride.": "ड्राइवर ने आपकी यात्रा रद्द कर दी।", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "हमें अभी तक कोई ड्राइवर नहीं मिला है। अपने प्रस्ताव को ड्राइवरों के लिए अधिक आकर्षक बनाने के लिए अपनी यात्रा शुल्क बढ़ाने पर विचार करें।", + "Increase Your Trip Fee (Optional)": + "अपना यात्रा शुल्क बढ़ाएं (वैकल्पिक)", + "Vibration": "कंपन", + "Resend code": "कोड फिर से भेजें", + // "token change": "टोकन बदलें", + "change device": "डिवाइस बदलें", + "Device Change Detected": "डिवाइस परिवर्तन का पता चला", + "You can only use one device at a time. This device will now be set as your active device.": + "आप एक समय में केवल एक डिवाइस का उपयोग कर सकते हैं। यह डिवाइस अब आपके सक्रिय डिवाइस के रूप में सेट हो जाएगी।", + "Click here point": "यहां क्लिक करें", + "Are you want to change": "क्या आप बदलना चाहते हैं", + "by": "द्वारा", + "Enter your complaint here": "अपनी शिकायत यहां दर्ज करें", + "Please enter your complaint.": "कृपया अपनी शिकायत दर्ज करें।", + "Complaint data saved successfully": + "शिकायत डेटा सफलतापूर्वक सहेजा गया", + "Trip Monitor": "यात्रा निगरानी", + "Insert SOS Phone": "SOS फोन डालें", + "Add SOS Phone": "SOS फोन जोड़ें", + // "Trip Monitoring": "यात्रा निगरानी", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "प्रिय ,\n\n🚀 मैंने अभी एक रोमांचक यात्रा शुरू की है और मैं अपनी यात्रा के विवरण और अपनी वर्तमान स्थिति को आपके साथ वास्तविक समय में साझा करना चाहता हूं! कृपया Intaleq ऐप डाउनलोड करें। यह आपको मेरी यात्रा के विवरण और मेरी नवीनतम स्थिति देखने की अनुमति देगा।\n\n👈 डाउनलोड लिंक:\nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nमैं अपनी यात्रा के दौरान आपको करीब रखने की आशा करता हूं!\n\nIntaleq ,", + "Send Intaleq app to him": "उसे Intaleq ऐप भेजें", + "No passenger found for the given phone number": + "दिए गए फोन नंबर के लिए कोई यात्री नहीं मिला", + "No user found for the given phone number": + "दिए गए फोन नंबर के लिए कोई उपयोगकर्ता नहीं मिला", + "This price is": "यह कीमत है", + "Work": "काम", + "Add Home": "घर जोड़ें", + "Notifications": "सूचनाएं", + "💳 Pay with Credit Card": "💳 क्रेडिट कार्ड से भुगतान करें", + "⚠️ You need to choose an amount!": + "⚠️ आपको एक राशि चुनने की आवश्यकता है!", + "💰 Pay with Wallet": "💰 वॉलेट से भुगतान करें", + "You must restart the app to change the language.": + "भाषा बदलने के लिए आपको ऐप को पुनः आरंभ करना होगा।", + "joined": "शामिल हो गए", + "Driver joined the channel": "ड्राइवर चैनल में शामिल हो गया", + "Driver left the channel": "ड्राइवर ने चैनल छोड़ दिया", + "Call Page": "कॉल पेज", + // "Call End": "कॉल समाप्त", + "Call Left": "कॉल शेष", + r"$ Next as Cash $!": "अगला नकद के रूप में!", + "To use Wallet charge it": + "वॉलेट का उपयोग करने के लिए इसे चार्ज करें", + "We are searching for the nearest driver to you": + "हम आपके निकटतम ड्राइवर की तलाश कर रहे हैं", + "Best choice for cities": "शहरों के लिए सबसे अच्छा विकल्प", + "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": + "राये गई: शहरों के बीच सुविधाजनक यात्रा के लिए राउंड ट्रिप सेवा, आसान और विश्वसनीय।", + "Rayeh Gai": "राये गई", + "This trip is for women only": "यह यात्रा केवल महिलाओं के लिए है", + "Total budgets on month": "महीने पर कुल बजट", + "You have call from driver": "आपको ड्राइवर से कॉल आई है", + "Comfort": "आराम", + "Intaleq": "गति", + "Driver already has 2 trips within the specified period.": + "ड्राइवर के पास निर्दिष्ट अवधि के भीतर पहले से ही 2 यात्राएं हैं।", + "The invitation was sent successfully": + "आमंत्रण सफलतापूर्वक भेजा गया", + "Lady": "महिला", + "You should select your country": "आपको अपना देश चुनना चाहिए", + "Scooter": "स्कूटर", + "A trip with a prior reservation, allowing you to choose the best captains and cars.": + "पूर्व आरक्षण के साथ एक यात्रा, जो आपको सर्वश्रेष्ठ कप्तान और कार चुनने की अनुमति देती है।", + "Mishwar Vip": "मिश्वर वीआईपी", + "The driver waiting you in picked location .": + "ड्राइवर आपका चुने हुए स्थान पर इंतज़ार कर रहा है।", + "About Us": "हमारे बारे में", + "You can change the vibration feedback for all buttons": + "आप सभी बटनों के लिए कंपन प्रतिक्रिया बदल सकते हैं", + "Most Secure Methods": "सबसे सुरक्षित तरीके", + "In-App VOIP Calls": "इन-ऐप VOIP कॉल", + "Recorded Trips for Safety": "सुरक्षा के लिए रिकॉर्ड की गई यात्राएं", + "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": + "\nहम सस्ती कीमत को प्राथमिकता देते हैं, आपकी यात्राओं को सुलभ बनाने के लिए प्रतिस्पर्धी मूल्य प्रदान करते हैं।", + "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": + "Intaleq एक राइड-शेयरिंग ऐप है जो आपकी सुरक्षा और सस्ती कीमत को ध्यान में रखकर डिज़ाइन किया गया है। हम आपको आपके क्षेत्र में विश्वसनीय ड्राइवरों से जोड़ते हैं, एक सुविधाजनक और तनावमुक्त यात्रा अनुभव सुनिश्चित करते हैं।\n\nयहां कुछ प्रमुख विशेषताएं हैं जो हमें अलग बनाती हैं:", + "Sign In by Apple": "Apple के साथ साइन इन करें", + "Sign In by Google": "Google के साथ साइन इन करें", + "How do I request a ride?": "मैं यात्रा कैसे अनुरोध करूं?", + "Step-by-step instructions on how to request a ride through the Intaleq app.": + "Intaleq ऐप के माध्यम से यात्रा अनुरोध करने के लिए चरण-दर-चरण निर्देश।", + "What types of vehicles are available?": + "किस प्रकार के वाहन उपलब्ध हैं?", + "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": + "Intaleq आपकी आवश्यकताओं के अनुरूप विभिन्न प्रकार के वाहन विकल्प प्रदान करता है, जिसमें इकोनॉमी, कम्फर्ट और लग्ज़री शामिल हैं। वह विकल्प चुनें जो आपके बजट और यात्री संख्या के लिए सबसे उपयुक्त हो।", + "How can I pay for my ride?": + "मैं अपनी यात्रा के लिए भुगतान कैसे कर सकता हूं?", + "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": + "Intaleq आपकी सुविधा के लिए कई भुगतान विधियां प्रदान करता है। यात्रा की पुष्टि के दौरान नकद भुगतान या क्रेडिट/डेबिट कार्ड भुगतान के बीच चुनें।", + "Can I cancel my ride?": "क्या मैं अपनी यात्रा रद्द कर सकता हूं?", + "Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.": + "हां, आप कुछ शर्तों के तहत अपनी यात्रा रद्द कर सकते हैं (जैसे, ड्राइवर नियुक्त होने से पहले)। विवरण के लिए Intaleq रद्दीकरण नीति देखें।", + "Driver Registration & Requirements": "ड्राइवर पंजीकरण और आवश्यकताएं", + "How can I register as a driver?": + "मैं ड्राइवर के रूप में कैसे पंजीकृत कर सकता हूं?", + "What are the requirements to become a driver?": + "ड्राइवर बनने के लिए क्या आवश्यकताएं हैं?", + "Visit our website or contact Intaleq support for information on driver registration and requirements.": + "ड्राइवर पंजीकरण और आवश्यकताओं के बारे में जानकारी के लिए हमारी वेबसाइट पर जाएं या Intaleq समर्थन से संपर्क करें।", + "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": + "Intaleq आपको अपनी यात्रा के दौरान ड्राइवर या यात्री के साथ संवाद करने की अनुमति देने के लिए इन-ऐप चैट कार्यक्षमता प्रदान करता है।", + "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": + "Intaleq आपकी सुरक्षा को प्राथमिकता देता है। हम ड्राइवर सत्यापन, इन-ऐप यात्रा ट्रैकिंग और आपातकालीन संपर्क विकल्प जैसी सुविधाएं प्रदान करते हैं।", + "Frequently Questions": "अक्सर पूछे जाने वाले प्रश्न", + "User does not exist.": "उपयोगकर्ता मौजूद नहीं है।", + "We need your phone number to contact you and to help you.": + "हमें आपसे संपर्क करने और आपकी मदद करने के लिए आपका फोन नंबर चाहिए।", + "You will recieve code in sms message": + "आपको एसएमएस संदेश में कोड प्राप्त होगा", + "Please enter": "कृपया दर्ज करें", + "We need your phone number to contact you and to help you receive orders.": + "हमें आपसे संपर्क करने और आपको आदेश प्राप्त करने में मदद करने के लिए आपका फोन नंबर चाहिए।", + "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": + "आपके आपराधिक रिकॉर्ड पर पूरा नाम आपके ड्राइविंग लाइसेंस पर नाम से मेल नहीं खाता है। कृपया सत्यापित करें और सही दस्तावेज़ प्रदान करें।", + "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": + "आपके ड्राइविंग लाइसेंस पर राष्ट्रीय संख्या आपके पहचान दस्तावेज़ पर संख्या से मेल नहीं खाती है। कृपया सत्यापित करें और सही दस्तावेज़ प्रदान करें।", + "Capture an Image of Your Criminal Record": + "अपने आपराधिक रिकॉर्ड की एक छवि कैप्चर करें", + "IssueDate": "जारी करने की तारीख", + "Capture an Image of Your car license front ": + "अपने कार लाइसेंस के सामने की एक छवि कैप्चर करें", + "Capture an Image of Your ID Document front": + "अपने पहचान दस्तावेज़ के सामने की एक छवि कैप्चर करें", + "NationalID": "राष्ट्रीय पहचान", + "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": + "आप Intaleq ऐप को अपने दोस्तों के साथ साझा कर सकते हैं और उनके द्वारा आपके कोड का उपयोग करके की गई यात्राओं के लिए पुरस्कार अर्जित कर सकते हैं।", + "FullName": "पूरा नाम", + "No invitation found yet!": "अभी तक कोई आमंत्रण नहीं मिला!", + "InspectionResult": "निरीक्षण परिणाम", + "Criminal Record": "आपराधिक रिकॉर्ड", + "Share App": "ऐप साझा करें", + "The email or phone number is already registered.": + "ईमेल या फोन नंबर पहले से ही पंजीकृत है।", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "Intaleq ऐप पर राइड-शेयरिंग ड्राइवर बनने के लिए, आपको अपना ड्राइविंग लाइसेंस, पहचान दस्तावेज़ और कार पंजीकरण दस्तावेज़ अपलोड करने की आवश्यकता है। हमारी AI प्रणाली उनकी प्रामाणिकता की तुरंत समीक्षा और सत्यापन करेगी। यदि आपके दस्तावेज़ स्वीकृत होते हैं, तो आप Intaleq ऐप पर ड्राइवर के रूप में काम शुरू कर सकते हैं। कृपया ध्यान दें, जाली दस्तावेज़ जमा करना एक गंभीर अपराध है और इसके परिणामस्वरूप तत्काल समाप्ति और कानूनी परिणाम हो सकते हैं।", + "Documents check": "दस्तावेज़ जांच", + "Driver's License": "ड्राइविंग लाइसेंस", + "for your first registration!": "आपके पहले पंजीकरण के लिए!", + "Get it Now!": "अभी प्राप्त करें!", + "before": "पहले", + "Code not approved": "कोड स्वीकृत नहीं", + "3000 LE": "3000 एलई", + "Do you have an invitation code from another driver?": + "क्या आपके पास किसी अन्य ड्राइवर से आमंत्रण कोड है?", + "Paste the code here": "कोड यहां पेस्ट करें", + "No, I don't have a code": "नहीं, मेरे पास कोड नहीं है", + "Code approved": "कोड स्वीकृत", + "Install our app:": "हमारा ऐप इंस्टॉल करें:", + "Invite another driver and both get a gift after he completes 100 trips!": + "एक अन्य ड्राइवर को आमंत्रित करें और जब वह 100 यात्राएं पूरी करे तो दोनों को उपहार मिलेगा!", + "Invite": "आमंत्रित करें", + "Are you sure?": "क्या आप सुनिश्चित हैं?", + "This will delete all recorded files from your device.": + "यह आपके डिवाइस से सभी रिकॉर्ड की गई फ़ाइलों को हटा देगा।", + "Select a file": "एक फ़ाइल चुनें", + "Select a File": "एक फ़ाइल चुनें", + "Delete": "हटाएं", + "attach audio of complain": "शिकायत का ऑडियो संलग्न करें", + "Phone Number Check": "फोन नंबर जांच", + "Drivers received orders": "ड्राइवरों को आदेश प्राप्त हुए", + "No audio files recorded.": "कोई ऑडियो फ़ाइल रिकॉर्ड नहीं की गई।", + "This is for delivery or a motorcycle.": + "यह डिलीवरी या मोटरसाइकिल के लिए है।", + // "We will look for a new driver.\nPlease wait.": "हम एक नए ड्राइवर की तलाश करेंगे।\nकृपया प्रतीक्षा करें।", + "Intaleq Reminder": "Intaleq अनुस्मारक", + "It's time to check the Intaleq app!": + "Intaleq ऐप की जांच करने का समय आ गया है!", + "you must insert token code": "आपको टोकन कोड डालना होगा", + "Something went wrong. Please try again.": + "कुछ गलत हो गया। कृपया पुनः प्रयास करें।", + "Trip Details": "यात्रा विवरण", + "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": + "संदर्भ में कोई शिकायत विवरण नहीं है, इसलिए मैं इस मुद्दे का समाधान प्रदान नहीं कर सकता। कृपया आवश्यक जानकारी प्रदान करें, और मैं आपकी सहायता करने में प्रसन्न हूंगा।", + "Submit Your Complaint": "अपनी शिकायत जमा करें", + "Date": "तारीख", + "Price": "कीमत", + "Status": "स्थिति", + "Choose from contact": "संपर्क से चुनें", + "attach correct audio": "सही ऑडियो संलग्न करें", + "be sure": "सुनिश्चित करें", + "Audio uploaded successfully.": "ऑडियो सफलतापूर्वक अपलोड किया गया।", + "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": + "नवीनतम कार मॉडल की तलाश करने वाले यात्रियों के लिए आदर्श, जो किसी भी मार्ग को चुनने की स्वतंत्रता चाहते हैं।", + "Share this code with your friends and earn rewards when they use it!": + "इस कोड को अपने दोस्तों के साथ साझा करें और जब वे इसका उपयोग करें तो पुरस्कार अर्जित करें!", + "Enter phone": "फोन दर्ज करें", + "You deserve the gift": "आप उपहार के हकदार हैं", + "complete, you can claim your gift": + "पूरा करें, आप अपना उपहार दावा कर सकते हैं", + "When": "कब", + "Enter driver's phone": "ड्राइवर का फोन दर्ज करें", + "Send Invite": "आमंत्रण भेजें", + "Show Invitations": "आमंत्रण दिखाएं", + "License Type": "लाइसेंस प्रकार", + "National Number": "राष्ट्रीय संख्या", + "Name (Arabic)": "नाम (अरबी)", + "Name (English)": "नाम (अंग्रेजी)", + "Address": "पता", + "Issue Date": "जारी करने की तारीख", + "Expiry Date": "समाप्ति तिथि", + "License Categories": "लाइसेंस श्रेणियां", + "driver_license": "ड्राइविंग लाइसेंस", + "Capture an Image of Your Driver License": + "अपने ड्राइविंग लाइसेंस की एक छवि कैप्चर करें", + "ID Documents Back": "पहचान दस्तावेज़ पीछे", + "National ID": "राष्ट्रीय पहचान", + "Occupation": "पेशा", + "Gender": "लिंग", + "Religion": "धर्म", + "Marital Status": "वैवाहिक स्थिति", + "Full Name (Marital)": "पूरा नाम (वैवाहिक)", + "Expiration Date": "समाप्ति तिथि", + "Capture an Image of Your ID Document Back": + "अपने पहचान दस्तावेज़ के पीछे की एक छवि कैप्चर करें", + "ID Documents Front": "पहचान दस्तावेज़ सामने", + "First Name": "पहला नाम", + "CardID": "कार्ड आईडी", + "Vehicle Details Front": "वाहन विवरण सामने", + "Plate Number": "प्लेट नंबर", + "Owner Name": "मालिक का नाम", + "Vehicle Details Back": "वाहन विवरण पीछे", + "Make": "निर्माता", + "Model": "मॉडल", + "Year": "वर्ष", + "Chassis": "चेसिस", + "Color": "रंग", + "Displacement": "विस्थापन", + "Fuel": "ईंधन", + "Tax Expiry Date": "कर समाप्ति तिथि", + "Inspection Date": "निरीक्षण तिथि", + "Capture an Image of Your car license back": + "अपने कार लाइसेंस के पीछे की एक छवि कैप्चर करें", + "Capture an Image of Your Driver’s License": + "अपने ड्राइविंग लाइसेंस की एक छवि कैप्चर करें", + "Sign in with Google for easier email and name entry": + "ईमेल और नाम प्रविष्टि को आसान बनाने के लिए Google के साथ साइन इन करें", + "You will choose allow all the time to be ready receive orders": + "आप हर समय आदेश प्राप्त करने के लिए तैयार रहने की अनुमति चुनेंगे", + "Welcome to Intaleq!": "Intaleq में आपका स्वागत है!", + "Get to your destination quickly and easily.": + "अपने गंतव्य तक तेजी से और आसानी से पहुंचें।", + "Enjoy a safe and comfortable ride.": + "एक सुरक्षित और आरामदायक यात्रा का आनंद लें।", + "Choose Language": "भाषा चुनें", + "Login": "लॉगिन", + "Pay with Wallet": "वॉलेट से भुगतान करें", + "Invalid MPIN": "अमान्य MPIN", + "Invalid OTP": "अमान्य OTP", + // "Driver Accepted the Ride for You": "ड्राइवर ने आपके लिए यात्रा स्वीकार कर ली", + "Enter your email address": "अपना ईमेल पता दर्ज करें", + "Please enter Your Email.": "कृपया अपना ईमेल दर्ज करें।", + "Enter your phone number": "अपना फोन नंबर दर्ज करें", + "Please enter your phone number.": "कृपया अपना फोन नंबर दर्ज करें।", + "Please enter Your Password.": "कृपया अपना पासवर्ड दर्ज करें।", + "if you dont have account": "यदि आपके पास खाता नहीं है", + "Register": "पंजीकरण", + "Accept Ride's Terms & Review Privacy Notice": + "यात्रा की शर्तें स्वीकार करें और गोपनीयता नीति की समीक्षा करें", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "नीचे 'मैं सहमत हूं' चुनकर, मैंने उपयोग की शर्तों की समीक्षा की है और उनसे सहमत हूं और गोपनीयता नीति को स्वीकार करता हूं। मैं कम से कम 18 वर्ष का हूं।", + "I Agree": "मैं सहमत हूं", + // "Finish Monitor": "निगरानी समाप्त", + "First name": "पहला नाम", + "Enter your first name": "अपना पहला नाम दर्ज करें", + "Please enter your first name.": "कृपया अपना पहला नाम दर्ज करें।", + "Last name": "अंतिम नाम", + "Enter your last name": "अपना अंतिम नाम दर्ज करें", + "Please enter your last name.": "कृपया अपना अंतिम नाम दर्ज करें।", + "City": "शहर", + "Please enter your City.": "कृपया अपना शहर दर्ज करें।", + "Male": "पुरुष", + "Female": "महिला", + "Verify Email": "ईमेल सत्यापित करें", + "We sent 5 digit to your Email provided": + "हमने आपके प्रदान किए गए ईमेल पर 5 अंक भेजे हैं", + "5 digit": "5 अंक", + "Send Verification Code": "सत्यापन कोड भेजें", + "Your Ride Duration is ": "आपकी यात्रा की अवधि है ", + "You will be thier in": "आप वहां होंगे", + "You trip distance is": "आपकी यात्रा की दूरी है", + "Fee is": "शुल्क है", + "From : ": "से: ", + "To : ": "को: ", + "Add Promo": "प्रोमो जोड़ें", + "Confirm Selection": "चयन की पुष्टि करें", + "distance is": "दूरी है", + "Intaleq LLC": "Intaleq LLC", + "Egypt's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "मिस्र की अग्रणी राइड-शेयरिंग सेवा, जिसे अरब और स्थानीय मालिकों द्वारा गर्व से विकसित किया गया है। हम आपके निकट होने को प्राथमिकता देते हैं – हमारे मूल्यवान यात्रियों और समर्पित कप्तानों दोनों के लिए।", + "Why Choose Intaleq?": "Intaleq क्यों चुनें?", + "Closest to You": "आपके निकटतम", + "We connect you with the nearest drivers for faster pickups and quicker journeys.": + "हम आपको तेज पिकअप और तेज यात्राओं के लिए निकटतम ड्राइवरों से जोड़ते हैं।", + "Uncompromising Security": "अटल सुरक्षा", + "Lady Captains Available": "महिला कप्तान उपलब्ध", + "Recorded Trips (Voice & AI Analysis)": + "रिकॉर्ड की गई यात्राएं (वॉयस और AI विश्लेषण)", + "Fastest Complaint Response": "सबसे तेज शिकायत प्रतिक्रिया", + "Our dedicated customer service team ensures swift resolution of any issues.": + "हमारी समर्पित ग्राहक सेवा टीम किसी भी मुद्दे का त्वरित समाधान सुनिश्चित करती है।", + "Affordable for Everyone": "सभी के लिए सस्ती", + "Frequently Asked Questions": "अक्सर पूछे जाने वाले प्रश्न", + "Getting Started": "शुरुआत करना", + "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": + "बस Intaleq ऐप खोलें, अपना गंतव्य दर्ज करें और \"यात्रा अनुरोध\" टैप करें। ऐप आपको निकटतम ड्राइवर से जोड़ देगा।", + "Vehicle Options": "वाहन विकल्प", + "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": + "Intaleq आपकी आवश्यकताओं और बजट के अनुरूप इकोनॉमी, कम्फर्ट और लग्ज़री सहित विभिन्न विकल्प प्रदान करता है।", + "Payments": "भुगतान", + "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": + "आप नकद या क्रेडिट/डेबिट कार्ड का उपयोग करके अपनी यात्रा के लिए भुगतान कर सकते हैं। आप अपनी यात्रा की पुष्टि करने से पहले अपनी पसंदीदा भुगतान विधि चुन सकते हैं।", + "Ride Management": "यात्रा प्रबंधन", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "हां, आप अपनी यात्रा रद्द कर सकते हैं, लेकिन कृपया ध्यान दें कि रद्दीकरण शुल्क लागू हो सकता है, यह इस बात पर निर्भर करता है कि आप कितने समय पहले रद्द करते हैं।", + "For Drivers": "ड्राइवरों के लिए", + // "Driver Registration & Requirements": "ड्राइवर पंजीकरण और आवश्यकताएं", + "Driver Registration": "ड्राइवर पंजीकरण", + "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": + "ड्राइवर के रूप में पंजीकृत करने या आवश्यकताओं के बारे में जानने के लिए, कृपया हमारी वेबसाइट पर जाएं या सीधे Intaleq समर्थन से संपर्क करें।", + "Visit Website/Contact Support": + "वेबसाइट पर जाएं/समर्थन से संपर्क करें", + "Close": "बंद करें", + "We are searching for the nearest driver": + "हम निकटतम ड्राइवर की तलाश कर रहे हैं", + "Communication": "संचार", + "How do I communicate with the other party (passenger/driver)?": + "मैं दूसरे पक्ष (यात्री/ड्राइवर) के साथ कैसे संवाद करूं?", + "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": + "एक बार यात्रा की पुष्टि हो जाने पर आप इन-ऐप चैट सुविधा के माध्यम से अपने ड्राइवर या यात्री के साथ संवाद कर सकते हैं।", + "Safety & Security": "सुरक्षा और सुरक्षा", + "What safety measures does Intaleq offer?": + "Intaleq कौन से सुरक्षा उपाय प्रदान करता है?", + "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": + "Intaleq ड्राइवर सत्यापन, इन-ऐप यात्रा ट्रैकिंग, आपातकालीन संपर्क विकल्प और विश्वसनीय संपर्कों के साथ अपनी यात्रा स्थिति साझा करने की क्षमता सहित विभिन्न सुरक्षा सुविधाएं प्रदान करता है।", + "Enjoy competitive prices across all trip options, making travel accessible.": + "सभी यात्रा विकल्पों में प्रतिस्पर्धी कीमतों का आनंद लें, यात्रा को सुलभ बनाएं।", + "Variety of Trip Choices": "यात्रा विकल्पों की विविधता", + "Choose the trip option that perfectly suits your needs and preferences.": + "वह यात्रा विकल्प चुनें जो आपकी आवश्यकताओं और प्राथमिकताओं के अनुरूप हो।", + "Your Choice, Our Priority": "आपकी पसंद, हमारी प्राथमिकता", + "Because we are near, you have the flexibility to choose the ride that works best for you.": + "क्योंकि हम निकट हैं, आपके पास उस यात्रा को चुनने की लचीलापन है जो आपके लिए सबसे अच्छा काम करती है।", + "duration is": "अवधि है", + "Setting": "सेटिंग", + "Find answers to common questions": "सामान्य प्रश्नों के उत्तर खोजें", + "I don't need a ride anymore": "मुझे अब यात्रा की आवश्यकता नहीं है", + "I was just trying the application": + "मैं सिर्फ एप्लिकेशन आज़मा रहा था", + "No driver accepted my request": + "किसी ड्राइवर ने मेरा अनुरोध स्वीकार नहीं किया", + "I added the wrong pick-up/drop-off location": + "मैंने गलत पिक-अप/ड्रॉप-ऑफ स्थान जोड़ा", + "I don't have a reason": "मेरे पास कोई कारण नहीं है", + "Other": "अन्य", + "Can we know why you want to cancel Ride ?": + "क्या हम जान सकते हैं कि आप यात्रा क्यों रद्द करना चाहते हैं?", + "Cancel Ride": "यात्रा रद्द करें", + "Add Payment Method": "भुगतान विधि जोड़ें", + "Your Wallet balance is ": "आपके वॉलेट का शेष है ", + "Ride Wallet": "यात्रा वॉलेट", + "Payment Method": "भुगतान विधि", + "Type here Place": "यहां स्थान टाइप करें", + "Are You sure to ride to": "क्या आप वाकई यात्रा करना चाहते हैं", + "Confirm": "पुष्टि करें", + // "Back": "पीछे", + "You are Delete": "आप हटा रहे हैं", + "Deleted": "हटाया गया", + "You Dont Have Any places yet !": + "आपके पास अभी तक कोई स्थान नहीं है!", + // "Favorite Places": "पसंदीदा स्थान", + "From : Current Location": "से: वर्तमान स्थान", + // "Where to": "कहां जाना है", + "Profile": "प्रोफ़ाइल", + "Home": "घर", + "My Cared": "मेरी देखभाल", + "Add Card": "कार्ड जोड़ें", + "Add Credit Card": "क्रेडिट कार्ड जोड़ें", + "Please enter the cardholder name": + "कृपया कार्डधारक का नाम दर्ज करें", + "Please enter the expiry date": "कृपया समाप्ति तिथि दर्ज करें", + "Please enter the CVV code": "कृपया CVV कोड दर्ज करें", + "Go To Favorite Places": "पसंदीदा स्थानों पर जाएं", + "Go to this Target": "इस लक्ष्य पर जाएं", + "My Profile": "मेरी प्रोफ़ाइल", + "Sign Out": "साइन आउट", + "Are you want to go to this site": + "क्या आप इस साइट पर जाना चाहते हैं", + "MyLocation": "मेरा स्थान", + "my location": "मेरा स्थान", + "Target": "लक्ष्य", + "Update": "अद्यतन", + "You Should choose rate figure": "आपको रेट फिगर चुनना चाहिए", + "Login Captin": "कप्तान लॉगिन", + "Register Captin": "कप्तान पंजीकरण", + "Send Verfication Code": "सत्यापन कोड भेजें", + "KM": "किमी", + "End Ride": "यात्रा समाप्त", + "Minute": "मिनट", + "Go to passenger Location now": "अब यात्री के स्थान पर जाएं", + "Duration of the Ride is ": "यात्रा की अवधि है ", + "Distance of the Ride is ": "यात्रा की दूरी है", + "Name of the Passenger is ": "यात्री का नाम है", + "Hello this is Captain": "हैलो, यह कप्तान है", + "Start the Ride": "यात्रा शुरू करें", + "Please Wait If passenger want To Cancel!": + "कृपया प्रतीक्षा करें यदि यात्री रद्द करना चाहता है!", + "Total Duration:": "कुल अवधि:", + "Active Duration:": "सक्रिय अवधि:", + "Waiting for Captin ...": "कप्तान की प्रतीक्षा ...", + "Age is ": "उम्र है ", + "Rating is ": "रेटिंग है ", + " to arrive you.": "आप तक पहुंचने के लिए।", + "Tariff": "टैरिफ", + "Settings": "सेटिंग्स", + "Feed Back": "प्रतिक्रिया", + "Please enter a valid 16-digit card number": + "कृपया एक वैध 16-अंकीय कार्ड नंबर दर्ज करें", + "Add Phone": "फोन जोड़ें", + "Please enter a phone number": "कृपया एक फोन नंबर दर्ज करें", + "You dont Add Emergency Phone Yet!": + "आपने अभी तक आपातकालीन फोन नहीं जोड़ा है!", + "You will arrive to your destination after ": + "आप अपने गंतव्य पर पहुंचेंगे", + "You can cancel Ride now": "आप अब यात्रा रद्द कर सकते हैं", + "You Can cancel Ride After Captain did not come in the time": + "आप यात्रा रद्द कर सकते हैं यदि कप्तान समय पर नहीं आया", + "If you in Car Now. Press Start The Ride": + "यदि आप अब कार में हैं। यात्रा शुरू करें दबाएं", + "You Dont Have Any amount in": "आपके पास कोई राशि नहीं है", + "Wallet!": "वॉलेट!", + "You Have": "आपके पास है", + "Save Credit Card": "क्रेडिट कार्ड सहेजें", + "Show Promos": "प्रोमो दिखाएं", + "10 and get 4% discount": "10 और 4% छूट प्राप्त करें", + "20 and get 6% discount": "20 और 6% छूट प्राप्त करें", + "40 and get 8% discount": "40 और 8% छूट प्राप्त करें", + "100 and get 11% discount": "100 और 11% छूट प्राप्त करें", + "Pay with Your PayPal": "अपने PayPal से भुगतान करें", + "You will choose one of above !": "आप ऊपर में से एक चुनेंगे!", + "Delete My Account": "मेरा खाता हटाएं", + "Edit Profile": "प्रोफ़ाइल संपादित करें", + "Name": "नाम", + "Update Gender": "लिंग अद्यतन करें", + "Education": "शिक्षा", + "Update Education": "शिक्षा अद्यतन करें", + "Employment Type": "रोजगार प्रकार", + "SOS Phone": "SOS फोन", + "High School Diploma": "हाई स्कूल डिप्लोमा", + "Associate Degree": "एसोसिएट डिग्री", + "Bachelor's Degree": "स्नातक डिग्री", + "Master's Degree": "मास्टर डिग्री", + "Doctoral Degree": "डॉक्टरेट डिग्री", + "Copy this Promo to use it in your Ride!": + "इस प्रोमो को कॉपी करें और अपनी यात्रा में उपयोग करें!", + "To change some Settings": "कुछ सेटिंग्स बदलने के लिए", + "Order Request Page": "आदेश अनुरोध पृष्ठ", + "Rouats of Trip": "यात्रा के मार्ग", + "Passenger Name is ": "यात्री का नाम है ", + "Total From Passenger is ": "यात्री से कुल है ", + "Duration To Passenger is ": "यात्री तक की अवधि है ", + "Distance To Passenger is ": "यात्री तक की दूरी है ", + "Total For You is ": "आपके लिए कुल है ", + "Distance is ": "दूरी है ", + " KM": " किमी", + "Duration of Trip is ": "यात्रा की अवधि है ", + " Minutes": " मिनट", + "Apply Order": "आदेश लागू करें", + "Refuse Order": "आदेश अस्वीकार करें", + "Rate Captain": "कप्तान को रेट करें", + "Enter your Note": "अपनी नोट दर्ज करें", + "Type something...": "कुछ टाइप करें...", + "Submit rating": "रेटिंग जमा करें", + "Rate Passenger": "यात्री को रेट करें", + "Ride Summary": "यात्रा सारांश", + "welcome_message": "Intaleq में आपका स्वागत है!", + "app_description": + "Intaleq एक विश्वसनीय, सुरक्षित और सस्ती राइड-शेयरिंग एप्लिकेशन है।", + "get_to_destination": "अपने गंतव्य तक तेजी से और आसानी से पहुंचें।", + "get_a_ride": + "Intaleq के साथ, आप अपने गंतव्य तक कुछ ही मिनटों में यात्रा कर सकते हैं।", + "safe_and_comfortable": "एक सुरक्षित और आरामदायक यात्रा का आनंद लें।", + "committed_to_safety": + "Intaleq सुरक्षा के लिए प्रतिबद्ध है, और हमारे सभी कप्तानों की सावधानीपूर्वक जांच और पृष्ठभूमि जांच की जाती है।", + // "Driver Applied the Ride for You": "ड्राइवर ने आपके लिए यात्रा लागू की", + // "Show latest promo": "नवीनतम प्रोमो दिखाएं", + // "Cancel Trip": "यात्रा रद्द करें", + // "Passenger Cancel Trip": "यात्री ने यात्रा रद्द कर दी", + // "Accepted Ride": "स्वीकृत यात्रा", + "your ride is Accepted": "आपकी यात्रा स्वीकृत हो गई है", + // "Trip is Begin": "यात्रा शुरू हो गई है", + "Driver is waiting at pickup.": "ड्राइवर पिकअप पर इंतज़ार कर रहा है।", + "Driver is on the way": "ड्राइवर रास्ते में है", + "Contact Options": "संपर्क विकल्प", + "Send a custom message": "एक कस्टम संदेश भेजें", + "Type your message": "अपना संदेश टाइप करें", + // "Hi ,I will go now": "हाय, मैं अब जाऊंगा", + // "Passenger come to you": "यात्री आपके पास आ रहा है", + // "Hi ,I Arrive your site": "हाय, मैं आपकी साइट पर पहुंच गया हूं", + // "Driver Finish Trip": "ड्राइवर ने यात्रा समाप्त की", + // "you will pay to Driver": "आप ड्राइवर को भुगतान करेंगे", + // "Driver Cancel Your Trip": "ड्राइवर ने आपकी यात्रा रद्द कर दी", + // "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": "आप ड्राइवर को भुगतान करेंगे, आप ड्राइवर के समय की लागत का भुगतान करेंगे, अपने Intaleq वॉलेट को देखें", + // "I will go now": "मैं अब जाऊंगा", + "You Have Tips": "आपके पास टिप्स हैं", + " tips\nTotal is": " टिप्स\nकुल है", + // "No,I want": "नहीं, मैं चाहता हूं", + "Your fee is ": "आपका शुल्क है ", + // "Do you want to pay Tips for this Driver": "क्या आप इस ड्राइवर के लिए टिप्स देना चाहते हैं?", + "Tip is ": "टिप है ", + "Are you want to wait drivers to accept your order": + "क्या आप ड्राइवरों के आदेश स्वीकार करने की प्रतीक्षा करना चाहते हैं?", + "This price is fixed even if the route changes for the driver.": + "यह कीमत निश्चित है भले ही ड्राइवर के लिए मार्ग बदल जाए।", + "The price may increase if the route changes.": + "यदि मार्ग बदलता है तो कीमत बढ़ सकती है।", + "The captain is responsible for the route.": + "कप्तान मार्ग के लिए जिम्मेदार है।", + "We are search for nearst driver": + "हम निकटतम ड्राइवर की तलाश कर रहे हैं", + "Your order is being prepared": "आपका आदेश तैयार किया जा रहा है", + "The drivers are reviewing your request": + "ड्राइवर आपके अनुरोध की समीक्षा कर रहे हैं", + "Your order sent to drivers": + "आपका आदेश ड्राइवरों को भेज दिया गया है", + "You can call or record audio of this trip": + "आप इस यात्रा का ऑडियो कॉल या रिकॉर्ड कर सकते हैं", + "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": + "यात्रा शुरू हो गई है! आपातकालीन नंबरों से संपर्क करने, अपनी यात्रा साझा करने या यात्रा के लिए वॉयस रिकॉर्डिंग सक्रिय करने के लिए स्वतंत्र महसूस करें", + // "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": "कृपया सुनिश्चित करें कि आपके पास आपका सारा निजी सामान है और कोई भी शेष किराया, यदि लागू हो, आपके वॉलेट में जोड़ दिया गया है। Intaleq ऐप चुनने के लिए धन्यवाद।", + // "Don’t forget your personal belongings.": "अपने निजी सामान को न भूलें।", + "Camera Access Denied.": "कैमरा पहुंच अस्वीकृत।", + "Open Settings": "सेटिंग्स खोलें", + "GPS Required Allow !.": "GPS की आवश्यकता है!", + "Your Account is Deleted": "आपका खाता हटा दिया गया है", + "Are you sure to delete your account?": + "क्या आप वाकई अपना खाता हटाना चाहते हैं?", + "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": + "आपका डेटा 2 सप्ताह के बाद मिटा दिया जाएगा\nऔर आप 1 महीने के बाद ऐप का उपयोग करने के लिए वापस नहीं आ सकते हैं", + "Enter Your First Name": "अपना पहला नाम दर्ज करें", + "Are you Sure to LogOut?": "क्या आप वाकई लॉगआउट करना चाहते हैं?", + "Email Wrong": "ईमेल गलत", + "Email you inserted is Wrong.": + "आपके द्वारा दर्ज किया गया ईमेल गलत है।", + "You have finished all times ": "आपने सभी बार समाप्त कर दिया है", + "if you want help you can email us here": + "यदि आप मदद चाहते हैं तो आप हमें यहां ईमेल कर सकते हैं", + "Thanks": "धन्यवाद", + "Email Us": "हमें ईमेल करें", + "I cant register in your app in face detection ": + "मैं आपके ऐप में चेहरा पहचान में पंजीकृत नहीं कर सकता", + "Hi": "हाय", + "No face detected": "कोई चेहरा पहचाना नहीं गया", + "Image detecting result is ": "छवि पहचान परिणाम है ", + "from 3 times Take Attention": "3 बार से ध्यान दें", + "Be sure for take accurate images please\nYou have": + "कृपया सटीक छवियां लेने के लिए सुनिश्चित करें\nआपके पास है", + "image verified": "छवि सत्यापित", + "Next": "अगला", + "There is no help Question here": "यहां कोई मदद प्रश्न नहीं है", + "You dont have Points": "आपके पास पॉइंट्स नहीं हैं", + "You Are Stopped For this Day !": "आप इस दिन के लिए रोक दिए गए हैं!", + "You must be charge your Account": "आपको अपना खाता चार्ज करना होगा", + "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": + "आपने इस दिन 3 यात्राओं को अस्वीकार कर दिया है, यही कारण है\nकल मिलते हैं!", + "Recharge my Account": "मेरा खाता रिचार्ज करें", + "Ok , See you Tomorrow": "ठीक है, कल मिलते हैं", + "You are Stopped": "आप रोक दिए गए हैं", + "Connected": "जुड़ा हुआ", + "Not Connected": "जुड़ा नहीं है", + "Your are far from passenger location": + "आप यात्री के स्थान से दूर हैं", + "go to your passenger location before\nPassenger cancel trip": + "यात्री के स्थान पर जाएं इससे पहले कि\nयात्री यात्रा रद्द कर दे", + "You will get cost of your work for this trip": + "आपको इस यात्रा के लिए अपने काम की लागत मिलेगी", + " in your wallet": "आपके वॉलेट में", + "you gain": "आप कमाते हैं", + "Order Cancelled by Passenger": "यात्री द्वारा आदेश रद्द", + "Success": "सफलता", + "Feedback data saved successfully": + "प्रतिक्रिया डेटा सफलतापूर्वक सहेजा गया", + "No Promo for today .": "आज के लिए कोई प्रोमो नहीं।", + "Select your destination": "अपना गंतव्य चुनें", + "Search for your Start point": "अपने शुरुआती बिंदु की खोज करें", + "Search for waypoint": "वेपॉइंट की खोज करें", + "Current Location": "वर्तमान स्थान", + "Add Location 1": "स्थान 1 जोड़ें", + "You must Verify email !.": "आपको ईमेल सत्यापित करना होगा!", + "Cropper": "क्रॉपर", + "Saved Sucssefully": "सफलतापूर्वक सहेजा गया", + "Select Date": "तारीख चुनें", + "Birth Date": "जन्म तिथि", + "Ok": "ठीक है", + "the 500 points equal 30 JOD": "500 पॉइंट्स 30 JOD के बराबर हैं", + "the 500 points equal 30 JOD for you \nSo go and gain your money": + "500 पॉइंट्स आपके लिए 30 JOD के बराबर हैं\nतो जाएं और अपना पैसा कमाएं", + "token updated": "टोकन अद्यतन", + "Add Location 2": "स्थान 2 जोड़ें", + "Add Location 3": "स्थान 3 जोड़ें", + "Add Location 4": "स्थान 4 जोड़ें", + "Waiting for your location": "आपके स्थान की प्रतीक्षा", + "Search for your destination": "अपने गंतव्य की खोज करें", + "Hi! This is": "हाय! यह है", + " I am using": " मैं उपयोग कर रहा हूं", + " to ride with": " के साथ यात्रा करने के लिए", + " as the driver.": " ड्राइवर के रूप में।", + "is driving a ": "ड्राइविंग कर रहा है ", + " with license plate ": " लाइसेंस प्लेट के साथ ", + " I am currently located at ": " मैं वर्तमान में स्थित हूं ", + "Please go to Car now ": "कृपया अब कार पर जाएं ", + "You will receive a code in WhatsApp Messenger": + "आपको WhatsApp Messenger में एक कोड प्राप्त होगा", + "If you need assistance, contact us": + "यदि आपको सहायता की आवश्यकता है, तो हमसे संपर्क करें", + "Promo Ended": "प्रोमो समाप्त", + "Enter the promo code and get": + "प्रोमो कोड दर्ज करें और प्राप्त करें", + "DISCOUNT": "छूट", + "No wallet record found": "कोई वॉलेट रिकॉर्ड नहीं मिला", + "for": "के लिए", + "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": + "Intaleq सबसे सुरक्षित राइड-शेयरिंग ऐप है जो कप्तानों और यात्रियों दोनों के लिए कई सुविधाएं प्रदान करता है। हम सिर्फ 8% की सबसे कम कमीशन दर प्रदान करते हैं, यह सुनिश्चित करते हुए कि आपको अपनी यात्राओं के लिए सर्वोत्तम मूल्य मिले। हमारा ऐप सर्वश्रेष्ठ कप्तानों के लिए बीमा, शीर्ष इंजीनियरों के साथ कारों का नियमित रखरखाव और सभी उपयोगकर्ताओं के लिए सम्मानजनक और उच्च गुणवत्ता वाले अनुभव सुनिश्चित करने के लिए सड़क सेवाएं शामिल करता है।", + "You can contact us during working hours from 12:00 - 19:00.": + "आप काम के घंटों के दौरान 12:00 - 19:00 बजे के बीच हमसे संपर्क कर सकते हैं।", + "Choose a contact option": "संपर्क विकल्प चुनें", + "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": + "काम का समय 12:00 - 19:00 बजे के बीच है।\nआप WhatsApp संदेश या ईमेल भेज सकते हैं।", + "Promo code copied to clipboard!": + "प्रोमो कोड क्लिपबोर्ड पर कॉपी किया गया!", + "Copy Code": "कोड कॉपी करें", + "Your invite code was successfully applied!": + "आपका आमंत्रण कोड सफलतापूर्वक लागू किया गया!", + "Payment Options": "भुगतान विकल्प", + "wait 1 minute to receive message": + "संदेश प्राप्त करने के लिए 1 मिनट प्रतीक्षा करें", + "Promo Copied!": "प्रोमो कॉपी किया गया!", + "You have copied the promo code.": "आपने प्रोमो कोड कॉपी कर लिया है।", + "Valid Until:": "मान्य है:", + "Select Payment Amount": "भुगतान राशि चुनें", + "The promotion period has ended.": "प्रोमोशन अवधि समाप्त हो गई है।", + "Promo Code Accepted": "प्रोमो कोड स्वीकृत", + "Tap on the promo code to copy it!": + "प्रोमो कोड को कॉपी करने के लिए उस पर टैप करें!", + "Lowest Price Achieved": "सबसे कम कीमत प्राप्त", + "Cannot apply further discounts.": "आगे की छूट लागू नहीं की जा सकती।", + "Promo Already Used": "प्रोमो पहले से ही उपयोग किया गया", + "Invitation Used": "आमंत्रण उपयोग किया गया", + "You have already used this promo code.": + "आपने पहले से ही इस प्रोमो कोड का उपयोग कर लिया है।", + "Insert Your Promo Code": "अपना प्रोमो कोड डालें", + "Enter promo code here": "प्रोमो कोड यहां दर्ज करें", + "Please enter a valid promo code": + "कृपया एक वैध प्रोमो कोड दर्ज करें", + "Awfar Car": "अवफार कार", + "Old and affordable, perfect for budget rides.": + "पुरानी और सस्ती, बजट यात्राओं के लिए आदर्श।", + " If you need to reach me, please contact the driver directly at": + " यदि आपको मुझसे संपर्क करने की आवश्यकता है, तो कृपया सीधे ड्राइवर से संपर्क करें", + "No Car or Driver Found in your area.": + "आपके क्षेत्र में कोई कार या ड्राइवर नहीं मिला।", + "Please Try anther time ": "कृपया किसी अन्य समय प्रयास करें ", + "There no Driver Aplly your order sorry for that ": + "कोई ड्राइवर आपके आदेश को लागू नहीं करता है, इसके लिए खेद है ", + "Trip Cancelled": "यात्रा रद्द", + "The Driver Will be in your location soon .": + "ड्राइवर जल्द ही आपके स्थान पर होगा।", + "The distance less than 500 meter.": "दूरी 500 मीटर से कम है।", + "Promo End !": "प्रोमो समाप्त!", + "There is no notification yet": "अभी तक कोई सूचना नहीं है", + "Use Touch ID or Face ID to confirm payment": + "भुगतान की पुष्टि करने के लिए Touch ID या Face ID का उपयोग करें", + "Contact us for any questions on your order.": + "अपने आदेश पर किसी भी प्रश्न के लिए हमसे संपर्क करें।", + "Pyament Cancelled .": "भुगतान रद्द।", + "type here": "यहां टाइप करें", + "Scan Driver License": "ड्राइवर लाइसेंस स्कैन करें", + "Please put your licence in these border": + "कृपया अपना लाइसेंस इन सीमाओं में रखें", + "Camera not initialized yet": "कैमरा अभी तक आरंभ नहीं किया गया है", + "Take Image": "छवि लें", + "AI Page": "AI पेज", + "Take Picture Of ID Card": "पहचान पत्र की तस्वीर लें", + "Take Picture Of Driver License Card": + "ड्राइवर लाइसेंस कार्ड की तस्वीर लें", + "We are process picture please wait ": + "हम छवि प्रसंस्करण कर रहे हैं कृपया प्रतीक्षा करें ", + "There is no data yet.": "अभी तक कोई डेटा नहीं है।", + "Name :": "नाम:", + "Drivers License Class: ": "ड्राइवर लाइसेंस वर्ग:", + "Document Number: ": "दस्तावेज़ संख्या:", + "Address: ": "पता:", + "Height: ": "ऊंचाई:", + "Expiry Date: ": "समाप्ति तिथि:", + "Date of Birth: ": "जन्म तिथि:", + "You can\'t continue with us .\nYou should renew Driver license": + "आप हमारे साथ जारी नहीं रख सकते हैं।\nआपको ड्राइवर लाइसेंस नवीनीकृत करना चाहिए", + "Detect Your Face ": "अपना चेहरा पहचानें", + "Go to next step\nscan Car License.": + "अगले चरण पर जाएं\nकार लाइसेंस स्कैन करें।", + "Name in arabic": "अरबी में नाम", + "Drivers License Class": "ड्राइवर लाइसेंस वर्ग", + "Date of Birth": "जन्म तिथि", + // "Select date and time of trip": "यात्रा की तारीख और समय चुनें", + "Selected Date": "चयनित तारीख", + "Select Time": "समय चुनें", + "Selected Time": "चयनित समय", + // "OK": "ठीक है", + // "Cancel": "रद्द करें", + "Selected Date and Time": "चयनित तारीख और समय", + "Lets check Car license ": "कार लाइसेंस की जांच करें", + "Car": "कार", + "Plate": "प्लेट", + "N/A": "N/A", + "Rides": "यात्राएं", + "Age": "उम्र", + // "Education": "शिक्षा", + // "Color": "रंग", + // "Displacement": "विस्थापन", + // "Fuel": "ईंधन", + "Selected driver": "चयनित ड्राइवर", + "Lets check License Back Face": "लाइसेंस की पीठ की जांच करें", + "Car License Card": "कार लाइसेंस कार्ड", + "No image selected yet": "अभी तक कोई छवि चयनित नहीं है", + "Made :": "निर्माता:", + "model :": "मॉडल:", + "VIN :": "VIN:", + "year :": "वर्ष:", + "ُExpire Date": "समाप्ति तिथि", + "Login Driver": "ड्राइवर लॉगिन", + "Password must br at least 6 character.": + "पासवर्ड कम से कम 6 अक्षरों का होना चाहिए।", + "if you don\'t have account": "यदि आपके पास खाता नहीं है", + "Here recorded trips audio": + "यहां रिकॉर्ड की गई यात्राओं का ऑडियो है", + "Register as Driver": "ड्राइवर के रूप में पंजीकरण", + // "Privacy Notice": "गोपनीयता नीति", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": + "नीचे \"मैं सहमत हूं\" चुनकर, मैंने उपयोग की शर्तों की समीक्षा की है और उनसे सहमत हूं और स्वीकार करता हूं ", + ". I am at least 18 years of age.": ". मैं कम से कम 18 वर्ष का हूं।", + "Log Out Page": "लॉग आउट पेज", + "Log Off": "लॉग ऑफ", + "Register Driver": "ड्राइवर पंजीकरण", + "Verify Email For Driver": "ड्राइवर के लिए ईमेल सत्यापित करें", + "Admin DashBoard": "व्यवस्थापक डैशबोर्ड", + "Your name": "आपका नाम", + "your ride is applied": "आपकी यात्रा लागू हो गई है", + "Your password": "आपका पासवर्ड", + "H and": "घंटे और", + "LE": "एलई", + "JOD": "JOD", + "m": "मी", + "We search nearst Driver to you": + "हम आपके निकटतम ड्राइवर की तलाश करते हैं", + "please wait till driver accept your order": + "कृपया प्रतीक्षा करें जब तक ड्राइवर आपका आदेश स्वीकार नहीं करता", + "No accepted orders? Try raising your trip fee to attract riders.": + "कोई स्वीकृत आदेश नहीं? सवारों को आकर्षित करने के लिए अपनी यात्रा शुल्क बढ़ाने का प्रयास करें।", + "You should select one": "आपको एक चुनना चाहिए", + "The driver accept your order for": + "ड्राइवर ने आपका आदेश स्वीकार कर लिया", + "Increase Fee": "शुल्क बढ़ाएं", + "No, thanks": "नहीं, धन्यवाद", + "The driver on your way": "ड्राइवर आपके रास्ते में है", + "Total price from ": "से कुल कीमत ", + "Order Details Intaleq": "आदेश विवरण गति", + // "Order Applied": "आदेश लागू", + "accepted your order": "आपका आदेश स्वीकार कर लिया", + // "We regret to inform you that another driver has accepted this order.": "हमें खेद है कि एक अन्य ड्राइवर ने इस आदेश को स्वीकार कर लिया है", + "Selected file:": "चयनित फ़ाइल:", + "Your trip cost is": "आपकी यात्रा की लागत है", + "this will delete all files from your device": + "यह आपके डिवाइस से सभी फ़ाइलों को हटा देगा", + " in your": "आपके", + "Exclusive offers and discounts always with the Intaleq app": + "Intaleq ऐप के साथ हमेशा विशेष ऑफ़र और छूट", + // "Please go to Car Driver": "कृपया कार ड्राइवर के पास जाएं", + " wallet due to a previous trip.": "पिछली यात्रा के कारण वॉलेट।", + "Submit Question": "प्रश्न जमा करें", + "Please enter your Question.": "कृपया अपना प्रश्न दर्ज करें।", + "Help Details": "मदद विवरण", + "No trip yet found": "अभी तक कोई यात्रा नहीं मिली", + "No Response yet.": "अभी तक कोई प्रतिक्रिया नहीं।", + " You Earn today is ": " आप आज कमाते हैं ", + " You Have in": " आपके पास है", + "Total points is ": "कुल पॉइंट्स हैं ", + "Total Connection Duration:": "कुल कनेक्शन अवधि:", + " H and": " घंटे और", + "Passenger name : ": "यात्री का नाम: ", + "Cost Of Trip IS ": "यात्रा की लागत है ", + "Arrival time": "आगमन समय", + "arrival time to reach your point": + "आपके बिंदु तक पहुंचने का आगमन समय", + "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "स्पीड और स्कूटर यात्राओं के लिए, कीमत गतिशील रूप से गणना की जाती है। कम्फर्ट यात्राओं के लिए, कीमत समय और दूरी पर आधारित है।", + "Hello this is Driver": "हैलो, यह ड्राइवर है", + "Is the Passenger in your Car ?": "क्या यात्री आपकी कार में है?", + "Please wait for the passenger to enter the car before starting the trip.": + "यात्रा शुरू करने से पहले यात्री के कार में प्रवेश करने की प्रतीक्षा करें।", + "No ,still Waiting.": "नहीं, अभी भी प्रतीक्षा कर रहा हूं।", + "I arrive you": "मैं आप तक पहुंच गया हूं", + "I Arrive your site": "मैं आपकी साइट पर पहुंच गया हूं", + "You are not in near to passenger location": + "आप यात्री के स्थान के निकट नहीं हैं", + "please go to picker location exactly": + "कृपया पिकर स्थान पर ठीक से जाएं", + "You Can Cancel Trip And get Cost of Trip From": + "आप यात्रा रद्द कर सकते हैं और यात्रा की लागत प्राप्त कर सकते हैं", + "Are you sure to cancel?": "क्या आप रद्द करना चाहते हैं?", + // "Yes": "हां", + "Insert Emergincy Number": "आपातकालीन नंबर डालें", + "Best choice for comfort car and flexible route and stops point": + "आरामदायक कार और लचीले मार्ग और स्टॉप पॉइंट के लिए सबसे अच्छा विकल्प", + "Insert": "डालें", + "This is for scooter or a motorcycle.": + "यह स्कूटर या मोटरसाइकिल के लिए है।", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "यह यात्रा सीधे आपके शुरुआती बिंदु से आपके गंतव्य तक एक निश्चित कीमत पर जाती है। ड्राइवर को नियोजित मार्ग का पालन करना चाहिए", + "You can decline a request without any cost": + "आप बिना किसी लागत के अनुरोध को अस्वीकार कर सकते हैं", + "Perfect for adventure seekers who want to experience something new and exciting": + "उन साहसिक खोजकर्ताओं के लिए आदर्श जो कुछ नया और रोमांचक अनुभव करना चाहते हैं", + "My current location is:": "मेरा वर्तमान स्थान है:", + "and I have a trip on": "और मेरी यात्रा है", + "App with Passenger": "यात्री के साथ ऐप", + "You will be pay the cost to driver or we will get it from you on next trip": + "आप ड्राइवर को लागत का भुगतान करेंगे या हम इसे अगली यात्रा में आपसे प्राप्त करेंगे", + "Trip has Steps": "यात्रा में कदम हैं", + "Distance from Passenger to destination is ": + "यात्री से गंतव्य तक की दूरी है ", + "price is": "कीमत है", + "This ride type does not allow changes to the destination or additional stops": + "इस यात्रा प्रकार में गंतव्य या अतिरिक्त स्टॉप में परिवर्तन की अनुमति नहीं है", + "This price may be changed": "यह कीमत बदल सकती है", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "कोई SIM कार्ड नहीं, कोई समस्या नहीं! हमारे ऐप के माध्यम से सीधे अपने ड्राइवर को कॉल करें। हम आपकी गोपनीयता सुनिश्चित करने के लिए उन्नत तकनीक का उपयोग करते हैं।", + "This ride type allows changes, but the price may increase": + "इस यात्रा प्रकार में परिवर्तन की अनुमति है, लेकिन कीमत बढ़ सकती है", + "Select one message": "एक संदेश चुनें", + "I'm waiting for you": "मैं आपका इंतज़ार कर रहा हूं", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "हमने देखा कि गति 100 किमी/घंटा से अधिक है। कृपया अपनी सुरक्षा के लिए गति कम करें। यदि आप असुरक्षित महसूस करते हैं, तो आप अपनी यात्रा विवरण एक संपर्क के साथ साझा कर सकते हैं या लाल SOS बटन का उपयोग करके पुलिस को कॉल कर सकते हैं।", + "Warning: Intaleqing detected!": "चेतावनी: अत्यधिक गति का पता चला!", + "Please help! Contact me as soon as possible.": + "कृपया मदद करें! जितनी जल्दी हो सके मुझसे संपर्क करें।", + "Share Trip Details": "यात्रा विवरण साझा करें", + "Car Plate is ": "कार प्लेट है ", + "VIP Order": "वीआईपी आदेश", + "the 300 points equal 300 L.E for you \nSo go and gain your money": + "300 पॉइंट्स आपके लिए 300 एल.ई. के बराबर हैं\nतो जाएं और अपना पैसा कमाएं", + "the 300 points equal 300 L.E": "300 पॉइंट्स 300 एल.ई. के बराबर हैं", + "The payment was not approved. Please try again.": + "भुगतान स्वीकृत नहीं हुआ। कृपया पुनः प्रयास करें।", + "Payment Failed": "भुगतान विफल", + "Error": "त्रुटि", + "This is a scheduled notification.": "यह एक निर्धारित सूचना है।", + "An error occurred during the payment process.": + "भुगतान प्रक्रिया के दौरान एक त्रुटि हुई।", + "The payment was approved.": "भुगतान स्वीकृत हो गया।", + "Payment Successful": "भुगतान सफल", + "No ride found yet": "अभी तक कोई यात्रा नहीं मिली", + "Accept Order": "आदेश स्वीकार करें", + // "reject your order.": "आपका आदेश अस्वीकार करें।", + "Bottom Bar Example": "बॉटम बार उदाहरण", + "Driver phone": "ड्राइवर फोन", + "Statistics": "सांख्यिकी", + "Origin": "मूल", + "Destination": "गंतव्य", + "Driver Name": "ड्राइवर का नाम", + "Driver Car Plate": "ड्राइवर कार प्लेट", + "Available for rides": "यात्राओं के लिए उपलब्ध", + "Scan Id": "आईडी स्कैन करें", + "Camera not initilaized yet": "कैमरा अभी तक आरंभ नहीं किया गया है", + "Scan ID MklGoogle": "आईडी स्कैन MklGoogle", + "Language": "भाषा", + "Jordan": "जॉर्डन", + "USA": "यूएसए", + "Egypt": "मिस्र", + "Turkey": "तुर्की", + "Saudi Arabia": "सऊदी अरब", + "Qatar": "कतर", + "Bahrain": "बहरीन", + "Kuwait": "कुवैत", + "But you have a negative salary of": "लेकिन आपका नकारात्मक वेतन है", + "Promo Code": "प्रोमो कोड", + "Your trip distance is": "आपकी यात्रा की दूरी है", + "Enter promo code": "प्रोमो कोड दर्ज करें", + "You have promo!": "आपके पास प्रोमो है!", + "Cost Duration": "लागत अवधि", + "Duration is": "अवधि है", + "Leave": "छोड़ें", + "Join": "शामिल हों", + "Heading your way now. Please be ready.": + "अब आपके रास्ते में। कृपया तैयार रहें।", + "Approaching your area. Should be there in 3 minutes.": + "आपके क्षेत्र के निकट। 3 मिनट में वहां होना चाहिए।", + "There's heavy traffic here. Can you suggest an alternate pickup point?": + "यहां भारी यातायात है। क्या आप एक वैकल्पिक पिकअप बिंदु सुझा सकते हैं?", + "This ride is already taken by another driver.": + "यह यात्रा पहले से ही एक अन्य ड्राइवर द्वारा ली जा चुकी है।", + "You Should be select reason.": "आपको कारण चुनना चाहिए।", + " \$": " \$", + "Waiting for Driver ...": "ड्राइवर की प्रतीक्षा ...", + "Latest Recent Trip": "नवीनतम हाल की यात्रा", + "from your list": "आपकी सूची से", + "Do you want to change Work location": + "क्या आप कार्य स्थान बदलना चाहते हैं?", + "Do you want to change Home location": + "क्या आप घर का स्थान बदलना चाहते हैं?", + "We Are Sorry That we dont have cars in your Location!": + "हमें खेद है कि हमारे पास आपके स्थान पर कारें नहीं हैं!", + "Choose from Map": "मानचित्र से चुनें", + "Pick your ride location on the map - Tap to confirm": + "मानचित्र पर अपनी यात्रा स्थान चुनें - पुष्टि करने के लिए टैप करें", + // "To Work": "काम पर", + // "Are you want to go this site": "क्या आप इस साइट पर जाना चाहते हैं?", + "Closest & Cheapest": "निकटतम और सबसे सस्ता", + // "Work Saved": "काम की जगह सहेजी गई", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "Intaleq एक राइड-हेलिंग ऐप है जो सुरक्षित, विश्वसनीय और सुलभ है।", + "With Intaleq, you can get a ride to your destination in minutes.": + "Intaleq के साथ, आप अपने गंतव्य तक कुछ ही मिनटों में यात्रा कर सकते हैं।", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "Intaleq सुरक्षा के लिए प्रतिबद्ध है, और हमारे सभी कप्तानों की सावधानीपूर्वक जांच और पृष्ठभूमि जांच की जाती है।", + // "To Home": "घर पर", + // "Home Saved": "घर की जगह सहेजी गई", + // "Destination selected": "गंतव्य चुना गया:", + // "Now select start pick": "अब शुरुआती स्थान चुनें:", + "Pick from map": "मानचित्र से चुनें", + // "Click here point": "यहां क्लिक करें", + "No Car in your site. Sorry!": + "आपके स्थान पर कोई कार नहीं है। खेद है!", + "Nearest Car for you about ": "आपके लिए निकटतम कार लगभग ", + // "N/A": "N/A", + "From :": "से:", + "Get Details of Trip": "यात्रा का विवरण प्राप्त करें", + "If you want add stop click here": + "यदि आप स्टॉप जोड़ना चाहते हैं तो यहां क्लिक करें", + // "Driver": "ड्राइवर", + "Where you want go ": "आप कहां जाना चाहते हैं ", + "My Card": "मेरी कार्ड", + "Start Record": "रिकॉर्ड शुरू करें", + "Wallet": "वॉलेट", + "History of Trip": "यात्रा का इतिहास", + "Helping Center": "सहायता केंद्र", + "Record saved": "रिकॉर्ड सहेजा गया", + "Trips recorded": "यात्राएं रिकॉर्ड की गईं", + "Select Your Country": "अपना देश चुनें", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "यह सुनिश्चित करने के लिए कि आप अपने स्थान के लिए सबसे सटीक जानकारी प्राप्त करें, कृपया नीचे अपना देश चुनें। यह ऐप अनुभव और सामग्री को आपके देश के अनुरूप बनाने में मदद करेगा।", + "Are you sure to delete recorded files": + "क्या आप वाकई रिकॉर्ड की गई फ़ाइलों को हटाना चाहते हैं?", + "Select recorded trip": "रिकॉर्ड की गई यात्रा चुनें", + "Card Number": "कार्ड नंबर", + "Hi, Where to ": "हाय, कहां जाना है ", + "Pick your destination from Map": "मानचित्र से अपना गंतव्य चुनें", + "Add Stops": "स्टॉप जोड़ें", + "Get Direction": "दिशा प्राप्त करें", + "Add Location": "स्थान जोड़ें", + "Switch Rider": "सवार बदलें", + "You will arrive to your destination after timer end.": + "टाइमर समाप्त होने के बाद आप अपने गंतव्य पर पहुंचेंगे।", + "You can cancel trip": "आप यात्रा रद्द कर सकते हैं", + "The driver waitting you in picked location .": + "ड्राइवर आपका चुने हुए स्थान पर इंतज़ार कर रहा है।", + "10\$ and get 3% discount": "10\$ और 3% छूट प्राप्त करें", + "20\$ and get 4% discount": "20\$ और 4% छूट प्राप्त करें", + "40\$ and get 6% discount": "40\$ और 6% छूट प्राप्त करें", + "100\$ and get 9% discount": "100\$ और 9% छूट प्राप्त करें", + "Pay with Your": "अपने साथ भुगतान करें", + "Pay with Credit Card": "क्रेडिट कार्ड से भुगतान करें", + "Payment History": "भुगतान इतिहास", + "Show Promos to Charge": "चार्ज करने के लिए प्रोमो दिखाएं", + "Point": "पॉइंट", + "How many hours would you like to wait?": + "आप कितने घंटे प्रतीक्षा करना चाहेंगे?", + "Driver Wallet": "ड्राइवर वॉलेट", + "Choose between those Type Cars": "उन प्रकार की कारों के बीच चुनें", + "hour": "घंटा", + "Select Waiting Hours": "प्रतीक्षा घंटे चुनें", + "Total Points is": "कुल पॉइंट्स हैं", + "You will receive a code in SMS message": + "आपको एसएमएस संदेश में एक कोड प्राप्त होगा", + "Done": "हो गया", + "Total Budget from trips is ": "यात्राओं से कुल बजट है ", + "Total Amount:": "कुल राशि:", + "Total Budget from trips by\nCredit card is ": + "क्रेडिट कार्ड द्वारा यात्राओं से कुल बजट है ", + "This amount for all trip I get from Passengers": + "यह राशि सभी यात्राओं के लिए है जो मुझे यात्रियों से मिलती है", + "Pay from my budget": "मेरे बजट से भुगतान करें", + "This amount for all trip I get from Passengers and Collected For me in": + "यह राशि सभी यात्राओं के लिए है जो मुझे यात्रियों से मिलती है और मेरे लिए एकत्र की जाती है", + "You can buy points from your budget": + "आप अपने बजट से पॉइंट्स खरीद सकते हैं", + "insert amount": "राशि डालें", + "You can buy Points to let you online\nby this list below": + "आप पॉइंट्स खरीद सकते हैं ताकि आप ऑनलाइन रह सकें\nनीचे दी गई सूची से", + "Create Wallet to receive your money": + "अपना पैसा प्राप्त करने के लिए वॉलेट बनाएं", + "Enter your feedback here": "अपनी प्रतिक्रिया यहां दर्ज करें", + "Please enter your feedback.": "कृपया अपनी प्रतिक्रिया दर्ज करें।", + "Feedback": "प्रतिक्रिया", + "Submit ": "जमा करें ", + "Click here to Show it in Map": + "इसे मानचित्र में दिखाने के लिए यहां क्लिक करें", + "Canceled": "रद्द", + "Type your Email": "अपना ईमेल टाइप करें", + "No I want": "नहीं मैं चाहता हूं", + "Email is": "ईमेल है", + "Phone Number is": "फोन नंबर है", + "Date of Birth is": "जन्म तिथि है", + "Sex is ": "लिंग है ", + "Car Details": "कार विवरण", + "VIN is": "VIN है", + "Color is ": "रंग है ", + "Make is ": "निर्माता है ", + "Model is": "मॉडल है", + "Year is": "वर्ष है", + "Expiration Date ": "समाप्ति तिथि ", + "Edit Your data": "अपना डेटा संपादित करें", + "write vin for your car": "अपनी कार के लिए VIN लिखें", + "VIN": "VIN", + "write Color for your car": "अपनी कार के लिए रंग लिखें", + "write Make for your car": "अपनी कार के लिए निर्माता लिखें", + // "Make": "निर्माता", + "write Model for your car": "अपनी कार के लिए मॉडल लिखें", + // "Model": "मॉडल", + "write Year for your car": "अपनी कार के लिए वर्ष लिखें", + // "Expiration Date": "समाप्ति तिथि", + "write Expiration Date for your car": + "अपनी कार के लिए समाप्ति तिथि लिखें", + "Tariffs": "टैरिफ", + "Minimum fare": "न्यूनतम किराया", + "Maximum fare": "अधिकतम किराया", + "Flag-down fee": "फ्लैग-डाउन शुल्क", + "Including Tax": "कर सहित", + "BookingFee": "बुकिंग शुल्क", + "Morning": "सुबह", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "07:30 से 10:30 तक (गुरुवार, शुक्रवार, शनिवार, सोमवार)", + "Evening": "शाम", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "12:00 से 15:00 तक (गुरुवार, शुक्रवार, शनिवार, सोमवार)", + "Night": "रात", + "You have in account": "आपके खाते में है", + "Select Country": "देश चुनें", + "Ride Today : ": "आज की यात्रा: ", + "After this period\nYou can\'t cancel!": + "इस अवधि के बाद\nआप रद्द नहीं कर सकते!", + "from 23:59 till 05:30": "23:59 से 05:30 तक", + "Rate Driver": "ड्राइवर को रेट करें", + "Total Cost is ": "कुल लागत है ", + "Write note": "नोट लिखें", + "Time to arrive": "आगमन समय", + "Ride Summaries": "यात्रा सारांश", + "Total Cost": "कुल लागत", + "Average of Hours of": "घंटों का औसत", + " is ON for this month": " इस महीने के लिए चालू है", + "Days": "दिन", + "Total Hours on month": "महीने पर कुल घंटे", + "Counts of Hours on days": "दिनों पर घंटों की संख्या", + "OrderId": "आदेश आईडी", + "created time": "बनाया गया समय", + "Intaleq Over": "अत्यधिक गति", + "I will slow down": "मैं गति कम करूंगा", + "Map Passenger": "मानचित्र यात्री", + "Be Slowly": "धीरे-धीरे", + "If you want to make Google Map App run directly when you apply order": + "यदि आप Google Map ऐप को सीधे चलाना चाहते हैं जब आप आदेश लागू करते हैं", + "You can change the language of the app": + "आप ऐप की भाषा बदल सकते हैं", + "Your Budget less than needed": "आपका बजट आवश्यकता से कम है", + "You can change the Country to get all features": + "सभी सुविधाएं प्राप्त करने के लिए आप देश बदल सकते हैं", + "Change Country": "देश बदलें" + }, + + // + "ru": { + "Order": "Заказ", + "OrderVIP": "VIP Заказ", + "Cancel Trip": "Отменить поездку", + "Passenger Cancel Trip": "Пассажир отменил поездку", + "VIP Order": "VIP Заказ", + "The driver accepted your trip": "Водитель принял вашу поездку", + "message From passenger": "Сообщение от пассажира", + "Cancel": "Отменить", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "Поездка отменена. Стоимость поездки будет добавлена на ваш кошелек.", + "token change": "Смена токена", + "face detect": "Обнаружение лица", + "Face Detection Result": "Результат обнаружения лица", + "similar": "похоже", + "not similar": "не похоже", + "Hi ,I will go now": "Привет, я пойду сейчас", + "Passenger come to you": "Пассажир идет к вам", + "Call Income": "Доход от звонка", + "Call Income from Passenger": "Доход от звонка от пассажира", + "Criminal Document Required": "Требуется криминальный документ", + "You should have upload it .": "Вы должны были загрузить его.", + "Call End": "Звонок завершен", + "The order has been accepted by another driver.": + "Заказ был принят другим водителем.", + "The order Accepted by another Driver": + "Заказ принят другим водителем", + "We regret to inform you that another driver has accepted this order.": + "С сожалением сообщаем, что другой водитель принял этот заказ.", + "Driver Applied the Ride for You": + "Водитель применил поездку для вас", + "Applied": "Применено", + "Hi ,I Arrive your site": "Привет, я прибыл на ваше место", + "Please go to Car Driver": "Пожалуйста, подойдите к водителю машины", + "Ok I will go now.": "Хорошо, я пойду сейчас.", + "Accepted Ride": "Принятая поездка", + "Driver Accepted the Ride for You": "Водитель принял поездку для вас", + "Promo": "Промо", + "Show latest promo": "Показать последние промо", + "Trip Monitoring": "Мониторинг поездки", + "Driver Is Going To Passenger": "Водитель едет к пассажиру", + "Please stay on the picked point.": + "Пожалуйста, оставайтесь на выбранной точке.", + "message From Driver": "Сообщение от водителя", + "Trip is Begin": "Поездка началась", + "Cancel Trip from driver": "Отменить поездку от водителя", + "We will look for a new driver.\nPlease wait.": + "Мы найдем нового водителя.\nПожалуйста, подождите.", + "The driver canceled your ride.": "Водитель отменил вашу поездку.", + "Driver Finish Trip": "Водитель завершил поездку", + "you will pay to Driver": "вы заплатите водителю", + "Don’t forget your personal belongings.": + "Не забудьте свои личные вещи.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "Пожалуйста, убедитесь, что у вас есть все ваши личные вещи и что любой оставшийся тариф, если применимо, был добавлен на ваш кошелек перед уходом. Спасибо за выбор приложения Intaleq.", + "Finish Monitor": "Завершить мониторинг", + "Trip finished": "Поездка завершена", + "Call Income from Driver": "Доход от звонка от водителя", + "Driver Cancelled Your Trip": "Водитель отменил вашу поездку", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "вы заплатите водителю, вы заплатите стоимость времени водителя, посмотрите на ваш кошелек Intaleq", + "Order Applied": "Заказ применен", + //firebase above + +// + "Where to": "Куда", + "Where are you going?": "Куда вы направляетесь?", + "Quick Actions": "Быстрые действия", + "My Wallet": "Мой кошелек", + "Order History": "История заказов", + "Contact Us": "Свяжитесь с нами", + "Driver": "Водитель", + "Complaint": "Жалоба", + "Promos": "Промо", + "Recent Places": "Недавние места", + "From": "От", + "WhatsApp Location Extractor": "Извлечение местоположения WhatsApp", + "Location Link": "Ссылка на местоположение", + "Paste location link here": "Вставьте ссылку на местоположение здесь", + "Go to this location": "Перейти к этому местоположению", + "Paste WhatsApp location link": + "Вставьте ссылку на местоположение WhatsApp", + "Select Order Type": "Выберите тип заказа", + "Choose who this order is for": "Выберите, для кого этот заказ", + "I want to order for myself": "Я хочу заказать для себя", + "I want to order for someone else": + "Я хочу заказать для кого-то другого", + // "Cancel": "Отменить", + "Order for someone else": "Заказ для кого-то другого", + "Order for myself": "Заказ для себя", + "Are you want to go this site": "Вы хотите перейти на этот сайт?", + // "Yes": "Да", + "No": "Нет", + "Are you sure to delete this location?": + "Вы уверены, что хотите удалить это местоположение?", + "deleted": "удалено", + "To Work": "На работу", + "Work Saved": "Место работы сохранено", + "To Home": "Домой", + "Home Saved": "Домашнее местоположение сохранено", + "Destination selected": "Место назначения выбрано", + "Now select start pick": "Теперь выберите начальную точку", + "OK": "ОК", + "Confirm Pick-up Location": "Подтвердите место встречи", + "Set Location on Map": "Установить местоположение на карте", + "Nearest Car: ~": "Ближайшая машина: ~", + "Nearest Car": "Ближайшая машина", + "No cars nearby": "Поблизости нет машин", + "Favorite Places": "Избранные места", + "No favorite places yet!": "Пока нет избранных мест!", + "from your favorites": "из ваших избранных", + "Back": "Назад", + "Sign in for a seamless experience": + "Войдите для бесперебойного опыта", + "Sign In with Google": "Войти через Google", + "Sign in with Apple": "Войти через Apple", + "Need assistance? Contact us": "Нужна помощь? Свяжитесь с нами", + "User not found": "Пользователь не найден", + "Email": "Электронная почта", + "Your email address": "Ваш адрес электронной почты", + "Enter a valid email": + "Введите действительный адрес электронной почты", + "Password": "Пароль", + // "Your password": "Ваш пароль", + "Enter your password": "Введите ваш пароль", + "Submit": "Отправить", + "Terms of Use & Privacy Notice": + "Условия использования и уведомление о конфиденциальности", + "Terms of Use": "Условия использования", + "Privacy Notice": "Уведомление о конфиденциальности", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the": + "Выбирая \"Я согласен\" ниже, я подтверждаю, что прочитал и согласен с", + "and acknowledge the": "и признаю", + ". I am at least 18 years old.": ". Мне не менее 18 лет.", + "Continue": "Продолжить", + "Enable Location Access": "Включить доступ к местоположению", + "We need your location to find nearby drivers for pickups and drop-offs.": + "Нам нужно ваше местоположение, чтобы найти ближайших водителей для посадки и высадки.", + "Allow Location Access": "Разрешить доступ к местоположению", + "You should restart app to change language": + "Вы должны перезапустить приложение, чтобы изменить язык", + "Home Page": "Главная страница", + "To change Language the App": "Чтобы изменить язык приложения", + "Learn more about our app and mission": + "Узнайте больше о нашем приложении и миссии", + "Promos For Today": "Промо на сегодня", + "Choose your ride": "Выберите свою поездку", + "Your Journey Begins Here": "Ваше путешествие начинается здесь", + "Bonus gift": "Бонусный подарок", + "Pay": "Оплатить", + "Get": "Получить", + "Send to Driver Again": "Отправить водителю снова", + "Driver Name:": "Имя водителя:", + "No trip data available": "Нет данных о поездках", + "Car Plate:": "Номер машины:", + "remaining": "осталось", + "Order Cancelled": "Заказ отменен", + "You canceled VIP trip": "Вы отменили VIP поездку", + "Passenger cancelled order": "Пассажир отменил заказ", + "Your trip is scheduled": "Ваша поездка запланирована", + "Don't forget your ride!": "Не забудьте о своей поездке!", + "Trip updated successfully": "Поездка успешно обновлена", + "Car Make:": "Марка машины:", + "Car Model:": "Модель машины:", + "Car Color:": "Цвет машины:", + "Driver Phone:": "Телефон водителя:", + "Pre-booking": "Предварительное бронирование", + "Waiting VIP": "Ожидание VIP", + "Driver List": "Список водителей", + "Confirm Trip": "Подтвердить поездку", + "Select date and time of trip": "Выберите дату и время поездки", + "Date and Time Picker": "Выбор даты и времени", + "Trip Status:": "Статус поездки:", + "pending": "в ожидании", + "accepted": "принято", + "rejected": "отклонено", + "Apply": "Применить", + "Enter your promo code": "Введите ваш промо-код", + "Apply Promo Code": "Применить промо-код", + "Scheduled Time:": "Запланированное время:", + "No drivers available": "Нет доступных водителей", + "No drivers available at the moment. Please try again later.": + "В данный момент нет доступных водителей. Пожалуйста, попробуйте позже.", + "you have a negative balance of": "у вас отрицательный баланс", + "Please try again in a few moments": + "Пожалуйста, попробуйте снова через несколько мгновений", + "Unknown Driver": "Неизвестный водитель", + "in your": "в вашем", + "The driver accepted your order for": "Водитель принял ваш заказ на", + "wallet due to a previous trip.": "кошелек из-за предыдущей поездки.", + "rides": "поездки", + "Add Work": "Добавить работу", + "The reason is": "Причина в", + "User does not have a wallet #1652": + "У пользователя нет кошелька #1652", + "Price of trip": "Стоимость поездки", + "From:": "От:", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Для поездок Intaleq и Delivery цена рассчитывается динамически. Для поездок Comfort цена основана на времени и расстоянии.", + "Phone Wallet Saved Successfully": + "Телефонный кошелек успешно сохранен", + "Add wallet phone you use": + "Добавьте телефонный кошелек, который вы используете", + "Update Available": "Доступно обновление", + "Phone number must be exactly 11 digits long": + "Номер телефона должен состоять ровно из 11 цифр", + "Insert Wallet phone number": "Введите номер телефона кошелька", + "Phone number isn't an Egyptian phone number": + "Номер телефона не является египетским номером", + "A new version of the app is available. Please update to the latest version.": + "Доступна новая версия приложения. Пожалуйста, обновитесь до последней версии.", + "We use location to get accurate and nearest passengers for you": + "Мы используем местоположение, чтобы найти точных и ближайших пассажиров для вас", + "This ride is already applied by another driver.": + "Эта поездка уже применена другим водителем.", + "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": + "Мы используем ваше точное местоположение, чтобы найти ближайшего доступного водителя и предоставить точную информацию о посадке и высадке. Вы можете управлять этим в настройках.", + "Where are you, sir?": "Где вы, сэр?", + "I've been trying to reach you but your phone is off.": + "Я пытался связаться с вами, но ваш телефон выключен.", + "Please don't be late": "Пожалуйста, не опаздывайте", + "Please don't be late, I'm waiting for you at the specified location.": + "Пожалуйста, не опаздывайте, я жду вас в указанном месте.", + "My location is correct. You can search for me using the navigation app": + "Мое местоположение верно. Вы можете найти меня с помощью навигационного приложения", + "Hello, I'm at the agreed-upon location": + "Привет, я на согласованном месте", + "How much longer will you be?": "Сколько еще вам потребуется?", + "Phone number is verified before": "Номер телефона уже проверен", + "Change Ride": "Изменить поездку", + "You can change the destination by long-pressing any point on the map": + "Вы можете изменить место назначения, долго нажимая на любую точку на карте", + "Pick from map destination": "Выбрать место назначения на карте", + "Pick or Tap to confirm": "Выберите или нажмите, чтобы подтвердить", + "Accepted your order": "Ваш заказ принят", + "Order Accepted": "Заказ принят", + "with type": "с типом", + "accepted your order at price": "принял ваш заказ по цене", + "you canceled order": "вы отменили заказ", + "If you want order to another person": + "Если вы хотите заказать для другого человека", + // "Ok I will go now.": "Хорошо, я пойду сейчас.", + // "Hi, I will go now": "Привет, я пойду сейчас", + "upgrade price": "повышение цены", + "Please enter a correct phone": + "Пожалуйста, введите правильный телефон", + "airport": "аэропорт", + "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": + "Лучший выбор для комфортной машины с гибким маршрутом и остановками. Этот аэропорт предлагает визовый въезд по этой цене.", + "You can upgrade price to may driver accept your order": + "Вы можете повысить цену, чтобы водитель принял ваш заказ", + "Change Route": "Изменить маршрут", + "No Captain Accepted Your Order": + "Ни один капитан не принял ваш заказ", + "We are looking for a captain but the price may increase to let a captain accept": + "Мы ищем капитана, но цена может увеличиться, чтобы капитан принял", + "No, I want to cancel this trip": "Нет, я хочу отменить эту поездку", + // "Trip Cancelled. The cost of the trip will be added to your wallet.": "Поездка отменена. Стоимость поездки будет добавлена на ваш кошелек.", + "Attention": "Внимание", + "Trip Cancelled. The cost of the trip will be deducted from your wallet.": + "Поездка отменена. Стоимость поездки будет вычтена из вашего кошелька.", + "You will be charged for the cost of the driver coming to your location.": + "С вас будет взиматься плата за стоимость прибытия водителя к вашему местоположению.", + "reject your order.": "отклонить ваш заказ.", + "Order Under Review": "Заказ на рассмотрении", + "is reviewing your order. They may need more information or a higher price.": + "рассматривает ваш заказ. Им может потребоваться дополнительная информация или более высокая цена.", + // "The driver canceled your ride.": "Водитель отменил вашу поездку.", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "Мы еще не нашли водителей. Подумайте о повышении стоимости поездки, чтобы сделать ваше предложение более привлекательным для водителей.", + "Increase Your Trip Fee (Optional)": + "Увеличьте стоимость поездки (по желанию)", + "Vibration": "Вибрация", + "Resend code": "Отправить код снова", + // "token change": "Смена токена", + "change device": "Сменить устройство", + "Device Change Detected": "Обнаружена смена устройства", + "You can only use one device at a time. This device will now be set as your active device.": + "Вы можете использовать только одно устройство одновременно. Это устройство теперь будет установлено как ваше активное устройство.", + "Click here point": "Нажмите здесь", + "Are you want to change": "Вы хотите изменить", + "by": "на", + "Enter your complaint here": "Введите вашу жалобу здесь", + "Please enter your complaint.": "Пожалуйста, введите вашу жалобу.", + "Complaint data saved successfully": + "Данные жалобы успешно сохранены", + "Trip Monitor": "Мониторинг поездки", + "Insert SOS Phone": "Введите телефон SOS", + "Add SOS Phone": "Добавить телефон SOS", + // "Trip Monitoring": "Мониторинг поездки", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "Уважаемый ,\n\n🚀 Я только что начал увлекательное путешествие и хотел бы поделиться с вами деталями моей поездки и моим текущим местоположением в реальном времени! Пожалуйста, скачайте приложение Intaleq. Оно позволит вам просматривать детали моей поездки и мое последнее местоположение.\n\n👈 Ссылка для скачивания:\nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nЯ с нетерпением жду возможности держать вас рядом во время моего приключения!\n\nIntaleq ,", + "Send Intaleq app to him": "Отправить ему приложение Intaleq", + "No passenger found for the given phone number": + "Для указанного номера телефона пассажир не найден", + "No user found for the given phone number": + "Для указанного номера телефона пользователь не найден", + "This price is": "Эта цена", + "Work": "Работа", + "Add Home": "Добавить дом", + "Notifications": "Уведомления", + "💳 Pay with Credit Card": "💳 Оплатить кредитной картой", + "⚠️ You need to choose an amount!": "⚠️ Вам нужно выбрать сумму!", + "💰 Pay with Wallet": "💰 Оплатить с кошелька", + "You must restart the app to change the language.": + "Вы должны перезапустить приложение, чтобы изменить язык.", + "joined": "присоединился", + "Driver joined the channel": "Водитель присоединился к каналу", + "Driver left the channel": "Водитель покинул канал", + "Call Page": "Страница звонка", + // "Call End": "Звонок завершен", + "Call Left": "Оставшийся звонок", + r"$ Next as Cash $!": "Следующий как наличные!", + "To use Wallet charge it": + "Чтобы использовать кошелек, пополните его", + "We are searching for the nearest driver to you": + "Мы ищем ближайшего к вам водителя", + "Best choice for cities": "Лучший выбор для городов", + "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": + "Rayeh Gai: Услуга круглосуточного путешествия между городами, удобно и надежно.", + "Rayeh Gai": "Rayeh Gai", + "This trip is for women only": "Эта поездка только для женщин", + "Total budgets on month": "Общий бюджет за месяц", + "You have call from driver": "У вас звонок от водителя", + "Comfort": "Комфорт", + "Intaleq": "Скорость", + "Driver already has 2 trips within the specified period.": + "У водителя уже есть 2 поездки в указанный период.", + "The invitation was sent successfully": + "Приглашение успешно отправлено", + "Lady": "Леди", + "You should select your country": "Вы должны выбрать свою страну", + "Scooter": "Скутер", + "A trip with a prior reservation, allowing you to choose the best captains and cars.": + "Поездка с предварительным бронированием, позволяющая выбрать лучших капитанов и машины.", + "Mishwar Vip": "Mishwar Vip", + "The driver waiting you in picked location .": + "Водитель ждет вас в выбранном месте.", + "About Us": "О нас", + "You can change the vibration feedback for all buttons": + "Вы можете изменить вибрацию для всех кнопок", + "Most Secure Methods": "Самые безопасные методы", + "In-App VOIP Calls": "Внутриприложенные VOIP звонки", + "Recorded Trips for Safety": "Записанные поездки для безопасности", + "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": + "\nМы также уделяем внимание доступности, предлагая конкурентоспособные цены, чтобы сделать ваши поездки доступными.", + "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": + "Intaleq — это приложение для совместных поездок, разработанное с учетом вашей безопасности и доступности. Мы связываем вас с надежными водителями в вашем районе, обеспечивая удобный и беззаботный опыт путешествий.\n\nВот некоторые ключевые особенности, которые выделяют нас:", + "Sign In by Apple": "Войти через Apple", + "Sign In by Google": "Войти через Google", + "How do I request a ride?": "Как заказать поездку?", + "Step-by-step instructions on how to request a ride through the Intaleq app.": + "Пошаговые инструкции по заказу поездки через приложение Intaleq.", + "What types of vehicles are available?": + "Какие типы транспортных средств доступны?", + "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": + "Intaleq предлагает различные варианты транспортных средств, включая эконом, комфорт и люкс. Выберите вариант, который лучше всего соответствует вашему бюджету и количеству пассажиров.", + "How can I pay for my ride?": "Как я могу оплатить поездку?", + "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": + "Intaleq предлагает несколько способов оплаты для вашего удобства. Выберите между оплатой наличными или кредитной/дебетовой картой при подтверждении поездки.", + "Can I cancel my ride?": "Могу ли я отменить поездку?", + "Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.": + "Да, вы можете отменить поездку при определенных условиях (например, до назначения водителя). Подробности см. в политике отмены Intaleq.", + "Driver Registration & Requirements": + "Регистрация и требования для водителей", + "How can I register as a driver?": + "Как я могу зарегистрироваться как водитель?", + "What are the requirements to become a driver?": + "Каковы требования для того, чтобы стать водителем?", + "Visit our website or contact Intaleq support for information on driver registration and requirements.": + "Посетите наш сайт или свяжитесь с поддержкой Intaleq для получения информации о регистрации и требованиях для водителей.", + "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": + "Intaleq предоставляет функцию чата в приложении, чтобы вы могли общаться с водителем или пассажиром во время поездки.", + "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": + "Intaleq уделяет приоритетное внимание вашей безопасности. Мы предлагаем такие функции, как проверка водителя, отслеживание поездок в приложении и варианты экстренного контакта.", + "Frequently Questions": "Часто задаваемые вопросы", + "User does not exist.": "Пользователь не существует.", + "We need your phone number to contact you and to help you.": + "Нам нужен ваш номер телефона, чтобы связаться с вами и помочь вам.", + "You will recieve code in sms message": + "Вы получите код в SMS-сообщении", + "Please enter": "Пожалуйста, введите", + "We need your phone number to contact you and to help you receive orders.": + "Нам нужен ваш номер телефона, чтобы связаться с вами и помочь вам получать заказы.", + "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": + "Полное имя в вашем криминальном досье не совпадает с именем в вашем водительском удостоверении. Пожалуйста, проверьте и предоставьте правильные документы.", + "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": + "Национальный номер в вашем водительском удостоверении не совпадает с номером в вашем документе, удостоверяющем личность. Пожалуйста, проверьте и предоставьте правильные документы.", + "Capture an Image of Your Criminal Record": + "Сделайте снимок вашего криминального досье", + "IssueDate": "Дата выдачи", + "Capture an Image of Your car license front ": + "Сделайте снимок передней части вашего автомобильного удостоверения", + "Capture an Image of Your ID Document front": + "Сделайте снимок передней части вашего документа, удостоверяющего личность", + "NationalID": "Национальный идентификатор", + "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": + "Вы можете поделиться приложением Intaleq с друзьями и зарабатывать вознаграждения за поездки, которые они совершают, используя ваш код.", + "FullName": "Полное имя", + "No invitation found yet!": "Приглашений пока не найдено!", + "InspectionResult": "Результат проверки", + "Criminal Record": "Криминальное досье", + "Share App": "Поделиться приложением", + "The email or phone number is already registered.": + "Электронная почта или номер телефона уже зарегистрированы.", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "Чтобы стать водителем совместных поездок в приложении Intaleq, вам нужно загрузить ваше водительское удостоверение, документ, удостоверяющий личность, и документ о регистрации автомобиля. Наша система ИИ мгновенно проверит и подтвердит их подлинность всего за 2-3 минуты. Если ваши документы будут одобрены, вы сможете начать работать водителем в приложении Intaleq. Обратите внимание, что предоставление поддельных документов является серьезным правонарушением и может привести к немедленному прекращению и юридическим последствиям.", + "Documents check": "Проверка документов", + "Driver's License": "Водительское удостоверение", + "for your first registration!": "для вашей первой регистрации!", + "Get it Now!": "Получите это сейчас!", + "before": "до", + "Code not approved": "Код не одобрен", + "3000 LE": "3000 LE", + "Do you have an invitation code from another driver?": + "У вас есть пригласительный код от другого водителя?", + "Paste the code here": "Вставьте код здесь", + "No, I don't have a code": "Нет, у меня нет кода", + "Code approved": "Код одобрен", + "Install our app:": "Установите наше приложение:", + "Invite another driver and both get a gift after he completes 100 trips!": + "Пригласите другого водителя, и оба получите подарок после того, как он завершит 100 поездок!", + "Invite": "Пригласить", + "Are you sure?": "Вы уверены?", + "This will delete all recorded files from your device.": + "Это удалит все записанные файлы с вашего устройства.", + "Select a file": "Выберите файл", + "Select a File": "Выберите файл", + "Delete": "Удалить", + "attach audio of complain": "прикрепить аудио жалобы", + "Phone Number Check": "Проверка номера телефона", + "Drivers received orders": "Водители получили заказы", + "No audio files recorded.": "Нет записанных аудиофайлов.", + "This is for delivery or a motorcycle.": + "Это для доставки или мотоцикла.", + // "We will look for a new driver.\nPlease wait.": "Мы найдем нового водителя.\nПожалуйста, подождите.", + "Intaleq Reminder": "Напоминание Intaleq", + "It's time to check the Intaleq app!": + "Время проверить приложение Intaleq!", + "you must insert token code": "вы должны вставить токен-код", + "Something went wrong. Please try again.": + "Что-то пошло не так. Пожалуйста, попробуйте снова.", + "Trip Details": "Детали поездки", + "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": + "Контекст не предоставляет никаких деталей жалобы, поэтому я не могу предложить решение этой проблемы. Пожалуйста, предоставьте необходимую информацию, и я с радостью помогу вам.", + "Submit Your Complaint": "Отправить вашу жалобу", + "Date": "Дата", + "Price": "Цена", + "Status": "Статус", + "Choose from contact": "Выбрать из контактов", + "attach correct audio": "прикрепить правильное аудио", + "be sure": "будьте уверены", + "Audio uploaded successfully.": "Аудио успешно загружено.", + "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": + "Идеально для пассажиров, ищущих последние модели автомобилей с возможностью выбора любого маршрута по своему желанию.", + "Share this code with your friends and earn rewards when they use it!": + "Поделитесь этим кодом с друзьями и зарабатывайте вознаграждения, когда они его используют!", + "Enter phone": "Введите телефон", + "You deserve the gift": "Вы заслуживаете подарок", + "complete, you can claim your gift": + "завершено, вы можете получить свой подарок", + "When": "Когда", + "Enter driver's phone": "Введите телефон водителя", + "Send Invite": "Отправить приглашение", + "Show Invitations": "Показать приглашения", + "License Type": "Тип лицензии", + "National Number": "Национальный номер", + "Name (Arabic)": "Имя (арабское)", + "Name (English)": "Имя (английское)", + "Address": "Адрес", + "Issue Date": "Дата выдачи", + "Expiry Date": "Срок действия", + "License Categories": "Категории лицензии", + "driver_license": "водительское удостоверение", + "Capture an Image of Your Driver License": + "Сделайте снимок вашего водительского удостоверения", + "ID Documents Back": + "Обратная сторона документа, удостоверяющего личность", + "National ID": "Национальный идентификатор", + "Occupation": "Род занятий", + "Gender": "Пол", + "Religion": "Религия", + "Marital Status": "Семейное положение", + "Full Name (Marital)": "Полное имя (семейное)", + "Expiration Date": "Срок действия", + "Capture an Image of Your ID Document Back": + "Сделайте снимок обратной стороны вашего документа, удостоверяющего личность", + "ID Documents Front": + "Лицевая сторона документа, удостоверяющего личность", + "First Name": "Имя", + "CardID": "Идентификатор карты", + "Vehicle Details Front": + "Лицевая сторона деталей транспортного средства", + "Plate Number": "Номерной знак", + "Owner Name": "Имя владельца", + "Vehicle Details Back": + "Обратная сторона деталей транспортного средства", + "Make": "Марка", + "Model": "Модель", + "Year": "Год", + "Chassis": "Шасси", + "Color": "Цвет", + "Displacement": "Объем двигателя", + "Fuel": "Топливо", + "Tax Expiry Date": "Срок действия налога", + "Inspection Date": "Дата проверки", + "Capture an Image of Your car license back": + "Сделайте снимок обратной стороны вашего автомобильного удостоверения", + "Capture an Image of Your Driver’s License": + "Сделайте снимок вашего водительского удостоверения", + "Sign in with Google for easier email and name entry": + "Войдите через Google для более простого ввода электронной почты и имени", + "You will choose allow all the time to be ready receive orders": + "Вы будете выбирать разрешение все время, чтобы быть готовым получать заказы", + "Welcome to Intaleq!": "Добро пожаловать в Intaleq!", + "Get to your destination quickly and easily.": + "Доберитесь до места назначения быстро и легко.", + "Enjoy a safe and comfortable ride.": + "Наслаждайтесь безопасной и комфортной поездкой.", + "Choose Language": "Выберите язык", + "Login": "Войти", + "Pay with Wallet": "Оплатить с кошелька", + "Invalid MPIN": "Неверный MPIN", + "Invalid OTP": "Неверный OTP", + // "Driver Accepted the Ride for You": "Водитель принял поездку для вас", + "Enter your email address": "Введите ваш адрес электронной почты", + "Please enter Your Email.": + "Пожалуйста, введите вашу электронную почту.", + "Enter your phone number": "Введите ваш номер телефона", + "Please enter your phone number.": + "Пожалуйста, введите ваш номер телефона.", + "Please enter Your Password.": "Пожалуйста, введите ваш пароль.", + "if you dont have account": "если у вас нет аккаунта", + "Register": "Зарегистрироваться", + "Accept Ride's Terms & Review Privacy Notice": + "Примите условия поездки и ознакомьтесь с уведомлением о конфиденциальности", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "Выбирая \"Я согласен\" ниже, я подтверждаю, что прочитал и согласен с Условиями использования и признаю Уведомление о конфиденциальности. Мне не менее 18 лет.", + "I Agree": "Я согласен", + // "Finish Monitor": "Завершить мониторинг", + "First name": "Имя", + "Enter your first name": "Введите ваше имя", + "Please enter your first name.": "Пожалуйста, введите ваше имя.", + "Last name": "Фамилия", + "Enter your last name": "Введите вашу фамилию", + "Please enter your last name.": "Пожалуйста, введите вашу фамилию.", + "City": "Город", + "Please enter your City.": "Пожалуйста, введите ваш город.", + "Male": "Мужчина", + "Female": "Женщина", + "Verify Email": "Подтвердите электронную почту", + "We sent 5 digit to your Email provided": + "Мы отправили 5 цифр на вашу электронную почту", + "5 digit": "5 цифр", + "Send Verification Code": "Отправить код подтверждения", + "Your Ride Duration is ": "Продолжительность вашей поездки ", + "You will be thier in": "Вы будете там через", + "You trip distance is": "Расстояние вашей поездки", + "Fee is": "Плата составляет", + "From : ": "От: ", + "To : ": "До: ", + "Add Promo": "Добавить промо", + "Confirm Selection": "Подтвердить выбор", + "distance is": "расстояние составляет", + "Intaleq LLC": "Intaleq LLC", + "Egypt's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "Пионерский сервис совместных поездок в Египте, с гордостью разработанный арабскими и местными владельцами. Мы уделяем приоритетное внимание близости к вам — как к нашим ценным пассажирам, так и к нашим преданным капитанам.", + "Why Choose Intaleq?": "Почему выбирают Intaleq?", + "Closest to You": "Ближе всего к вам", + "We connect you with the nearest drivers for faster pickups and quicker journeys.": + "Мы связываем вас с ближайшими водителями для более быстрой посадки и более быстрых поездок.", + "Uncompromising Security": "Непреклонная безопасность", + "Lady Captains Available": "Доступны женщины-капитаны", + "Recorded Trips (Voice & AI Analysis)": + "Записанные поездки (голосовой и AI анализ)", + "Fastest Complaint Response": "Самый быстрый ответ на жалобы", + "Our dedicated customer service team ensures swift resolution of any issues.": + "Наша преданная команда обслуживания клиентов обеспечивает быстрое решение любых проблем.", + "Affordable for Everyone": "Доступно для всех", + "Frequently Asked Questions": "Часто задаваемые вопросы", + "Getting Started": "Начало работы", + "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": + "Просто откройте приложение Intaleq, введите место назначения и нажмите \"Заказать поездку\". Приложение свяжет вас с ближайшим водителем.", + "Vehicle Options": "Варианты транспортных средств", + "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": + "Intaleq предлагает различные варианты, включая Эконом, Комфорт и Люкс, чтобы соответствовать вашим потребностям и бюджету.", + "Payments": "Платежи", + "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": + "Вы можете оплатить поездку наличными или кредитной/дебетовой картой. Вы можете выбрать предпочтительный способ оплаты перед подтверждением поездки.", + "Ride Management": "Управление поездками", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "Да, вы можете отменить поездку, но обратите внимание, что могут применяться сборы за отмену в зависимости от того, насколько заранее вы отменяете.", + "For Drivers": "Для водителей", + // "Driver Registration & Requirements": "Регистрация и требования для водителей", + "Driver Registration": "Регистрация водителя", + "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": + "Чтобы зарегистрироваться в качестве водителя или узнать о требованиях, посетите наш сайт или свяжитесь напрямую с поддержкой Intaleq.", + "Visit Website/Contact Support": + "Посетите сайт/Свяжитесь с поддержкой", + "Close": "Закрыть", + "We are searching for the nearest driver": + "Мы ищем ближайшего водителя", + "Communication": "Связь", + "How do I communicate with the other party (passenger/driver)?": + "Как я могу связаться с другой стороной (пассажир/водитель)?", + "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": + "Вы можете общаться с вашим водителем или пассажиром через функцию чата в приложении после подтверждения поездки.", + "Safety & Security": "Безопасность и защита", + "What safety measures does Intaleq offer?": + "Какие меры безопасности предлагает Intaleq?", + "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": + "Intaleq предлагает различные функции безопасности, включая проверку водителя, отслеживание поездок в приложении, варианты экстренного контакта и возможность делиться статусом поездки с доверенными контактами.", + "Enjoy competitive prices across all trip options, making travel accessible.": + "Наслаждайтесь конкурентоспособными ценами на все варианты поездок, делая путешествия доступными.", + "Variety of Trip Choices": "Разнообразие вариантов поездок", + "Choose the trip option that perfectly suits your needs and preferences.": + "Выберите вариант поездки, который идеально соответствует вашим потребностям и предпочтениям.", + "Your Choice, Our Priority": "Ваш выбор, наш приоритет", + "Because we are near, you have the flexibility to choose the ride that works best for you.": + "Поскольку мы рядом, у вас есть гибкость в выборе поездки, которая лучше всего подходит для вас.", + "duration is": "продолжительность составляет", + "Setting": "Настройка", + "Find answers to common questions": + "Найдите ответы на распространенные вопросы", + "I don't need a ride anymore": "Мне больше не нужна поездка", + "I was just trying the application": "Я просто пробовал приложение", + "No driver accepted my request": + "Ни один водитель не принял мой запрос", + "I added the wrong pick-up/drop-off location": + "Я добавил неправильное место посадки/высадки", + "I don't have a reason": "У меня нет причины", + "Other": "Другое", + "Can we know why you want to cancel Ride ?": + "Можем ли мы узнать, почему вы хотите отменить поездку?", + "Cancel Ride": "Отменить поездку", + "Add Payment Method": "Добавить способ оплаты", + "Your Wallet balance is ": "Баланс вашего кошелька ", + "Ride Wallet": "Кошелек поездок", + "Payment Method": "Способ оплаты", + "Type here Place": "Введите место здесь", + "Are You sure to ride to": "Вы уверены, что хотите поехать в", + "Confirm": "Подтвердить", + // "Back": "Назад", + "You are Delete": "Вы удаляете", + "Deleted": "Удалено", + "You Dont Have Any places yet !": "У вас пока нет мест!", + // "Favorite Places": "Избранные места", + "From : Current Location": "От: Текущее местоположение", + // "Where to": "Куда", + "Profile": "Профиль", + "Home": "Дом", + "My Cared": "Моя забота", + "Add Card": "Добавить карту", + "Add Credit Card": "Добавить кредитную карту", + "Please enter the cardholder name": + "Пожалуйста, введите имя владельца карты", + "Please enter the expiry date": "Пожалуйста, введите срок действия", + "Please enter the CVV code": "Пожалуйста, введите CVV-код", + "Go To Favorite Places": "Перейти к избранным местам", + "Go to this Target": "Перейти к этой цели", + "My Profile": "Мой профиль", + "Sign Out": "Выйти", + "Are you want to go to this site": "Вы хотите перейти на этот сайт", + "MyLocation": "Мое местоположение", + "my location": "мое местоположение", + "Target": "Цель", + "Update": "Обновить", + "You Should choose rate figure": "Вы должны выбрать рейтинг", + "Login Captin": "Войти как капитан", + "Register Captin": "Зарегистрироваться как капитан", + "Send Verfication Code": "Отправить код подтверждения", + "KM": "Км", + "End Ride": "Завершить поездку", + "Minute": "Минута", + "Go to passenger Location now": + "Перейти к местоположению пассажира сейчас", + "Duration of the Ride is ": "Продолжительность поездки ", + "Distance of the Ride is ": "Расстояние поездки ", + "Name of the Passenger is ": "Имя пассажира ", + "Hello this is Captain": "Привет, это капитан", + "Start the Ride": "Начать поездку", + "Please Wait If passenger want To Cancel!": + "Пожалуйста, подождите, если пассажир хочет отменить!", + "Total Duration:": "Общая продолжительность:", + "Active Duration:": "Активная продолжительность:", + "Waiting for Captin ...": "Ожидание капитана ...", + "Age is ": "Возраст ", + "Rating is ": "Рейтинг ", + " to arrive you.": "чтобы прибыть к вам.", + "Tariff": "Тариф", + "Settings": "Настройки", + "Feed Back": "Обратная связь", + "Please enter a valid 16-digit card number": + "Пожалуйста, введите действительный 16-значный номер карты", + "Add Phone": "Добавить телефон", + "Please enter a phone number": "Пожалуйста, введите номер телефона", + "You dont Add Emergency Phone Yet!": + "Вы еще не добавили экстренный телефон!", + "You will arrive to your destination after ": + "Вы прибудете к месту назначения через ", + "You can cancel Ride now": "Вы можете отменить поездку сейчас", + "You Can cancel Ride After Captain did not come in the time": + "Вы можете отменить поездку, если капитан не пришел вовремя", + "If you in Car Now. Press Start The Ride": + "Если вы в машине сейчас. Нажмите \"Начать поездку\"", + "You Dont Have Any amount in": "У вас нет суммы в", + "Wallet!": "Кошелек!", + "You Have": "У вас есть", + "Save Credit Card": "Сохранить кредитную карту", + "Show Promos": "Показать промо", + "10 and get 4% discount": "10 и получите 4% скидку", + "20 and get 6% discount": "20 и получите 6% скидку", + "40 and get 8% discount": "40 и получите 8% скидку", + "100 and get 11% discount": "100 и получите 11% скидку", + "Pay with Your PayPal": "Оплатите с помощью PayPal", + "You will choose one of above !": + "Вы выберете один из вышеперечисленных!", + "Delete My Account": "Удалить мой аккаунт", + "Edit Profile": "Редактировать профиль", + "Name": "Имя", + "Update Gender": "Обновить пол", + "Education": "Образование", + "Update Education": "Обновить образование", + "Employment Type": "Тип занятости", + "SOS Phone": "Телефон SOS", + "High School Diploma": "Диплом средней школы", + "Associate Degree": "Диплом младшего специалиста", + "Bachelor's Degree": "Степень бакалавра", + "Master's Degree": "Степень магистра", + "Doctoral Degree": "Докторская степень", + "Copy this Promo to use it in your Ride!": + "Скопируйте этот промо, чтобы использовать его в вашей поездке!", + "To change some Settings": "Чтобы изменить некоторые настройки", + "Order Request Page": "Страница запроса заказа", + "Rouats of Trip": "Маршруты поездки", + "Passenger Name is ": "Имя пассажира ", + "Total From Passenger is ": "Всего от пассажира ", + "Duration To Passenger is ": "Продолжительность до пассажира ", + "Distance To Passenger is ": "Расстояние до пассажира ", + "Total For You is ": "Всего для вас ", + "Distance is ": "Расстояние ", + " KM": " Км", + "Duration of Trip is ": "Продолжительность поездки ", + " Minutes": " Минут", + "Apply Order": "Применить заказ", + "Refuse Order": "Отклонить заказ", + "Rate Captain": "Оценить капитана", + "Enter your Note": "Введите вашу заметку", + "Type something...": "Введите что-нибудь...", + "Submit rating": "Отправить рейтинг", + "Rate Passenger": "Оценить пассажира", + "Ride Summary": "Сводка поездки", + "welcome_message": "Добро пожаловать в Intaleq!", + "app_description": + "Intaleq — это надежное, безопасное и доступное приложение для совместных поездок.", + "get_to_destination": + "Доберитесь до места назначения быстро и легко.", + "get_a_ride": + "С Intaleq вы можете добраться до места назначения за считанные минуты.", + "safe_and_comfortable": + "Наслаждайтесь безопасной и комфортной поездкой.", + "committed_to_safety": + "Intaleq уделяет приоритетное внимание безопасности, и все наши капитаны тщательно проверяются и проверяются на благонадежность.", + // "Driver Applied the Ride for You": "Водитель применил поездку для вас", + // "Show latest promo": "Показать последние промо", + // "Cancel Trip": "Отменить поездку", + // "Passenger Cancel Trip": "Пассажир отменил поездку", + // "Accepted Ride": "Принятая поездка", + "your ride is Accepted": "ваша поездка принята", + // "Trip is Begin": "Поездка началась", + "Driver is waiting at pickup.": "Водитель ждет на месте посадки.", + "Driver is on the way": "Водитель в пути", + "Contact Options": "Варианты связи", + "Send a custom message": "Отправить пользовательское сообщение", + "Type your message": "Введите ваше сообщение", + // "Hi ,I will go now": "Привет, я пойду сейчас", + // "Passenger come to you": "Пассажир идет к вам", + // "Hi ,I Arrive your site": "Привет, я прибыл на ваше место", + // "Driver Finish Trip": "Водитель завершил поездку", + // "you will pay to Driver": "вы заплатите водителю", + // "Driver Cancel Your Trip": "Водитель отменил вашу поездку", + // "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": "вы заплатите водителю, вы заплатите стоимость времени водителя, посмотрите на ваш кошелек Intaleq", + // "I will go now": "Я пойду сейчас", + "You Have Tips": "У вас есть чаевые", + " tips\nTotal is": " чаевые\nВсего", + // "No,I want": "Нет, я хочу", + "Your fee is ": "Ваша плата ", + // "Do you want to pay Tips for this Driver": "Вы хотите дать чаевые этому водителю?", + "Tip is ": "Чаевые ", + "Are you want to wait drivers to accept your order": + "Вы хотите подождать, пока водители примут ваш заказ?", + "This price is fixed even if the route changes for the driver.": + "Эта цена фиксирована, даже если маршрут изменится для водителя.", + "The price may increase if the route changes.": + "Цена может увеличиться, если маршрут изменится.", + "The captain is responsible for the route.": + "Капитан отвечает за маршрут.", + "We are search for nearst Driver": "Мы ищем ближайшего водителя", + "Your order is being prepared": "Ваш заказ готовится", + "The drivers are reviewing your request": + "Водители рассматривают ваш запрос", + "Your order sent to drivers": "Ваш заказ отправлен водителям", + "You can call or record audio of this trip": + "Вы можете позвонить или записать аудио этой поездки", + "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": + "Поездка началась! Не стесняйтесь связываться с экстренными номерами, делиться своей поездкой или активировать запись голоса для путешествия", + // "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": "Пожалуйста, убедитесь, что у вас есть все ваши личные вещи и что любой оставшийся тариф, если применимо, был добавлен на ваш кошелек перед уходом. Спасибо за выбор приложения Intaleq.", + // "Don’t forget your personal belongings.": "Не забудьте свои личные вещи.", + "Camera Access Denied.": "Доступ к камере запрещен.", + "Open Settings": "Открыть настройки", + "GPS Required Allow !.": "Требуется GPS!", + "Your Account is Deleted": "Ваш аккаунт удален", + "Are you sure to delete your account?": + "Вы уверены, что хотите удалить свой аккаунт?", + "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": + "Ваши данные будут удалены через 2 недели\nИ вы не сможете вернуться к использованию приложения через 1 месяц", + "Enter Your First Name": "Введите ваше имя", + "Are you Sure to LogOut?": "Вы уверены, что хотите выйти?", + "Email Wrong": "Неверная электронная почта", + "Email you inserted is Wrong.": + "Введенная вами электронная почта неверна.", + "You have finished all times ": "Вы завершили все времена", + "if you want help you can email us here": + "если вам нужна помощь, вы можете написать нам здесь", + "Thanks": "Спасибо", + "Email Us": "Напишите нам", + "I cant register in your app in face detection ": + "Я не могу зарегистрироваться в вашем приложении с обнаружением лица", + "Hi": "Привет", + "No face detected": "Лицо не обнаружено", + "Image detecting result is ": "Результат обнаружения изображения ", + "from 3 times Take Attention": "с 3 раз обратите внимание", + "Be sure for take accurate images please\nYou have": + "Убедитесь, что вы делаете точные изображения, пожалуйста\nУ вас есть", + "image verified": "изображение проверено", + "Next": "Далее", + "There is no help Question here": "Здесь нет вопроса о помощи", + "You dont have Points": "У вас нет очков", + "You Are Stopped For this Day !": "Вы остановлены на этот день!", + "You must be charge your Account": "Вы должны пополнить свой аккаунт", + "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": + "Вы отказались от 3 поездок в этот день, это причина\nУвидимся завтра!", + "Recharge my Account": "Пополнить мой аккаунт", + "Ok , See you Tomorrow": "Хорошо, увидимся завтра", + "You are Stopped": "Вы остановлены", + "Connected": "Подключено", + "Not Connected": "Не подключено", + "Your are far from passenger location": + "Вы далеко от местоположения пассажира", + "go to your passenger location before\nPassenger cancel trip": + "перейдите к местоположению пассажира до того, как\nпассажир отменит поездку", + "You will get cost of your work for this trip": + "Вы получите стоимость вашей работы за эту поездку", + " in your wallet": "в вашем кошельке", + "you gain": "вы получаете", + "Order Cancelled by Passenger": "Заказ отменен пассажиром", + "Success": "Успех", + "Feedback data saved successfully": + "Данные обратной связи успешно сохранены", + "No Promo for today .": "Сегодня нет промо.", + "Select your destination": "Выберите место назначения", + "Search for your Start point": "Найдите вашу начальную точку", + "Search for waypoint": "Найдите промежуточную точку", + "Current Location": "Текущее местоположение", + "Add Location 1": "Добавить местоположение 1", + "You must Verify email !.": + "Вы должны подтвердить электронную почту!", + "Cropper": "Обрезка", + "Saved Sucssefully": "Успешно сохранено", + "Select Date": "Выберите дату", + "Birth Date": "Дата рождения", + "Ok": "ОК", + "the 500 points equal 30 JOD": "500 очков равны 30 JOD", + "the 500 points equal 30 JOD for you \nSo go and gain your money": + "500 очков равны 30 JOD для вас\nТак что идите и зарабатывайте свои деньги", + "token updated": "токен обновлен", + "Add Location 2": "Добавить местоположение 2", + "Add Location 3": "Добавить местоположение 3", + "Add Location 4": "Добавить местоположение 4", + "Waiting for your location": "Ожидание вашего местоположения", + "Search for your destination": "Найдите ваше место назначения", + "Hi! This is": "Привет! Это", + " I am using": " Я использую", + " to ride with": " чтобы поехать с", + " as the driver.": " как водитель.", + "is driving a ": "ведет ", + " with license plate ": " с номерным знаком ", + " I am currently located at ": " Я сейчас нахожусь в ", + "Please go to Car now ": "Пожалуйста, перейдите к машине сейчас ", + "You will receive a code in WhatsApp Messenger": + "Вы получите код в WhatsApp Messenger", + "If you need assistance, contact us": + "Если вам нужна помощь, свяжитесь с нами", + "Promo Ended": "Промо завершено", + "Enter the promo code and get": "Введите промо-код и получите", + "DISCOUNT": "СКИДКА", + "No wallet record found": "Запись кошелька не найдена", + "for": "для", + "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": + "Intaleq — самое безопасное приложение для совместных поездок, которое предлагает множество функций как для капитанов, так и для пассажиров. Мы предлагаем самую низкую комиссию в размере всего 8%, гарантируя, что вы получите лучшее соотношение цены и качества для ваших поездок. Наше приложение включает страховку для лучших капитанов, регулярное техническое обслуживание автомобилей с лучшими инженерами и услуги на дороге, чтобы обеспечить уважительный и качественный опыт для всех пользователей.", + "You can contact us during working hours from 12:00 - 19:00.": + "Вы можете связаться с нами в рабочее время с 12:00 до 19:00.", + "Choose a contact option": "Выберите вариант связи", + "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": + "Рабочее время с 12:00 до 19:00.\nВы можете отправить сообщение WhatsApp или электронную почту.", + "Promo code copied to clipboard!": + "Промо-код скопирован в буфер обмена!", + "Copy Code": "Скопировать код", + "Your invite code was successfully applied!": + "Ваш пригласительный код успешно применен!", + "Payment Options": "Варианты оплаты", + "wait 1 minute to receive message": + "подождите 1 минуту, чтобы получить сообщение", + "Promo Copied!": "Промо скопировано!", + "You have copied the promo code.": "Вы скопировали промо-код.", + "Valid Until:": "Действителен до:", + "Select Payment Amount": "Выберите сумму оплаты", + "The promotion period has ended.": "Период акции завершен.", + "Promo Code Accepted": "Промо-код принят", + "Tap on the promo code to copy it!": + "Нажмите на промо-код, чтобы скопировать его!", + "Lowest Price Achieved": "Самая низкая цена достигнута", + "Cannot apply further discounts.": + "Нельзя применить дополнительные скидки.", + "Promo Already Used": "Промо уже использовано", + "Invitation Used": "Приглашение использовано", + "You have already used this promo code.": + "Вы уже использовали этот промо-код.", + "Insert Your Promo Code": "Введите ваш промо-код", + "Enter promo code here": "Введите промо-код здесь", + "Please enter a valid promo code": + "Пожалуйста, введите действительный промо-код", + "Awfar Car": "Awfar Car", + "Old and affordable, perfect for budget rides.": + "Старый и доступный, идеально подходит для бюджетных поездок.", + " If you need to reach me, please contact the driver directly at": + " Если вам нужно связаться со мной, пожалуйста, свяжитесь с водителем напрямую по", + "No Car or Driver Found in your area.": + "В вашем районе не найдено ни одной машины или водителя.", + "Please Try anther time ": "Пожалуйста, попробуйте в другое время ", + "There no Driver Aplly your order sorry for that ": + "Нет водителя, который применил бы ваш заказ, извините за это ", + "Trip Cancelled": "Поездка отменена", + "The Driver Will be in your location soon .": + "Водитель скоро будет на вашем месте.", + "The distance less than 500 meter.": "Расстояние менее 500 метров.", + "Promo End !": "Промо завершено!", + "There is no notification yet": "Пока нет уведомлений", + "Use Touch ID or Face ID to confirm payment": + "Используйте Touch ID или Face ID для подтверждения оплаты", + "Contact us for any questions on your order.": + "Свяжитесь с нами по любым вопросам о вашем заказе.", + "Pyament Cancelled .": "Оплата отменена.", + "type here": "введите здесь", + "Scan Driver License": "Сканировать водительское удостоверение", + "Please put your licence in these border": + "Пожалуйста, поместите ваше удостоверение в эти границы", + "Camera not initialized yet": "Камера еще не инициализирована", + "Take Image": "Сделать снимок", + "AI Page": "Страница ИИ", + "Take Picture Of ID Card": "Сделать снимок удостоверения личности", + "Take Picture Of Driver License Card": + "Сделать снимок водительского удостоверения", + "We are process picture please wait ": + "Мы обрабатываем изображение, пожалуйста, подождите ", + "There is no data yet.": "Пока нет данных.", + "Name :": "Имя:", + "Drivers License Class: ": "Класс водительского удостоверения:", + "Document Number: ": "Номер документа:", + "Address: ": "Адрес:", + "Height: ": "Рост:", + "Expiry Date: ": "Срок действия:", + "Date of Birth: ": "Дата рождения:", + "You can\'t continue with us .\nYou should renew Driver license": + "Вы не можете продолжать с нами.\nВам следует обновить водительское удостоверение", + "Detect Your Face ": "Обнаружьте ваше лицо", + "Go to next step\nscan Car License.": + "Перейдите к следующему шагу\nсканируйте автомобильное удостоверение.", + "Name in arabic": "Имя на арабском", + "Drivers License Class": "Класс водительского удостоверения", + "Date of Birth": "Дата рождения", + // "Select date and time of trip": "Выберите дату и время поездки", + "Selected Date": "Выбранная дата", + "Select Time": "Выберите время", + "Selected Time": "Выбранное время", + // "OK": "ОК", + // "Cancel": "Отменить", + "Selected Date and Time": "Выбранная дата и время", + "Lets check Car license ": + "Давайте проверим автомобильное удостоверение", + "Car": "Машина", + "Plate": "Номерной знак", + "N/A": "N/A", + "Rides": "Поездки", + "Age": "Возраст", + // "Education": "Образование", + // "Color": "Цвет", + // "Displacement": "Объем двигателя", + // "Fuel": "Топливо", + "Selected driver": "Выбранный водитель", + "Lets check License Back Face": + "Давайте проверим обратную сторону удостоверения", + "Car License Card": "Автомобильное удостоверение", + "No image selected yet": "Изображение еще не выбрано", + "Made :": "Сделано:", + "model :": "модель:", + "VIN :": "VIN:", + "year :": "год:", + "ُExpire Date": "Срок действия", + "Login Driver": "Войти как водитель", + "Password must br at least 6 character.": + "Пароль должен состоять не менее чем из 6 символов.", + "if you don\'t have account": "если у вас нет аккаунта", + "Here recorded trips audio": "Здесь записано аудио поездок", + "Register as Driver": "Зарегистрироваться как водитель", + // "Privacy Notice": "Уведомление о конфиденциальности", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": + "Выбирая \"Я согласен\" ниже, я подтверждаю, что прочитал и согласен с Условиями использования и признаю ", + ". I am at least 18 years of age.": ". Мне не менее 18 лет.", + "Log Out Page": "Страница выхода", + "Log Off": "Выйти", + "Register Driver": "Зарегистрировать водителя", + "Verify Email For Driver": + "Подтвердить электронную почту для водителя", + "Admin DashBoard": "Панель администратора", + "Your name": "Ваше имя", + "your ride is applied": "ваша поездка применена", + "Your password": "Ваш пароль", + "H and": "Ч и", + "LE": "LE", + "JOD": "JOD", + "m": "м", + "We search nearst Driver to you": "Мы ищем ближайшего к вам водителя", + "please wait till driver accept your order": + "пожалуйста, подождите, пока водитель примет ваш заказ", + "No accepted orders? Try raising your trip fee to attract riders.": + "Нет принятых заказов? Попробуйте повысить стоимость поездки, чтобы привлечь водителей.", + "You should select one": "Вы должны выбрать один", + "The driver accept your order for": "Водитель принимает ваш заказ на", + "Increase Fee": "Увеличить плату", + "No, thanks": "Нет, спасибо", + "The driver on your way": "Водитель в пути", + "Total price from ": "Общая цена от ", + "Order Details Intaleq": "Детали заказа Скорость", + // "Order Applied": "Заказ применен", + "accepted your order": "принял ваш заказ", + // "We regret to inform you that another driver has accepted this order.": "С сожалением сообщаем, что другой водитель принял этот заказ", + "Selected file:": "Выбранный файл:", + "Your trip cost is": "Стоимость вашей поездки", + "this will delete all files from your device": + "это удалит все файлы с вашего устройства", + " in your": "в вашем", + "Exclusive offers and discounts always with the Intaleq app": + "Эксклюзивные предложения и скидки всегда с приложением Intaleq", + // "Please go to Car Driver": "Пожалуйста, подойдите к водителю машины", + " wallet due to a previous trip.": + "кошелек из-за предыдущей поездки.", + "Submit Question": "Отправить вопрос", + "Please enter your Question.": "Пожалуйста, введите ваш вопрос.", + "Help Details": "Детали помощи", + "No trip yet found": "Пока не найдено поездок", + "No Response yet.": "Пока нет ответа.", + " You Earn today is ": " Вы заработали сегодня ", + " You Have in": " У вас есть в", + "Total points is ": "Всего очков ", + "Total Connection Duration:": "Общая продолжительность соединения:", + " H and": " Ч и", + "Passenger name : ": "Имя пассажира: ", + "Cost Of Trip IS ": "Стоимость поездки ", + "Arrival time": "Время прибытия", + "arrival time to reach your point": "время прибытия до вашей точки", + "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Для поездок на скутере и скорости цена рассчитывается динамически. Для комфортных поездок цена основана на времени и расстоянии.", + "Hello this is Driver": "Привет, это водитель", + "Is the Passenger in your Car ?": "Пассажир в вашей машине?", + "Please wait for the passenger to enter the car before starting the trip.": + "Пожалуйста, подождите, пока пассажир войдет в машину, прежде чем начать поездку.", + "No ,still Waiting.": "Нет, все еще жду.", + "I arrive you": "Я прибыл к вам", + "I Arrive your site": "Я прибыл на ваше место", + "You are not in near to passenger location": + "Вы не близко к местоположению пассажира", + "please go to picker location exactly": + "пожалуйста, точно перейдите к месту выбора", + "You Can Cancel Trip And get Cost of Trip From": + "Вы можете отменить поездку и получить стоимость поездки от", + "Are you sure to cancel?": "Вы уверены, что хотите отменить?", + // "Yes": "Да", + "Insert Emergincy Number": "Введите номер экстренной службы", + "Best choice for comfort car and flexible route and stops point": + "Лучший выбор для комфортной машины и гибкого маршрута с остановками", + "Insert": "Вставить", + "This is for scooter or a motorcycle.": + "Это для скутера или мотоцикла.", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "Эта поездка идет напрямую от вашей начальной точки до места назначения по фиксированной цене. Водитель должен следовать запланированному маршруту", + "You can decline a request without any cost": + "Вы можете отклонить запрос без каких-либо затрат", + "Perfect for adventure seekers who want to experience something new and exciting": + "Идеально для искателей приключений, которые хотят испытать что-то новое и захватывающее", + "My current location is:": "Мое текущее местоположение:", + "and I have a trip on": "и у меня поездка на", + "App with Passenger": "Приложение с пассажиром", + "You will be pay the cost to driver or we will get it from you on next trip": + "Вы заплатите стоимость водителю, или мы получим ее от вас в следующей поездке", + "Trip has Steps": "Поездка имеет шаги", + "Distance from Passenger to destination is ": + "Расстояние от пассажира до места назначения ", + "price is": "цена", + "This ride type does not allow changes to the destination or additional stops": + "Этот тип поездки не позволяет изменять место назначения или добавлять остановки", + "This price may be changed": "Эта цена может быть изменена", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "Нет SIM-карты? Не проблема! Звоните своему водителю напрямую через наше приложение. Мы используем передовые технологии, чтобы обеспечить вашу конфиденциальность.", + "This ride type allows changes, but the price may increase": + "Этот тип поездки позволяет изменения, но цена может увеличиться", + "Select one message": "Выберите одно сообщение", + "I'm waiting for you": "Я жду вас", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "Мы заметили, что скорость превышает 100 км/ч. Пожалуйста, снизьте скорость для вашей безопасности. Если вы чувствуете себя небезопасно, вы можете поделиться деталями поездки с контактом или вызвать полицию, используя красную кнопку SOS.", + "Warning: Intaleqing detected!": + "Предупреждение: Обнаружено превышение скорости!", + "Please help! Contact me as soon as possible.": + "Пожалуйста, помогите! Свяжитесь со мной как можно скорее.", + "Share Trip Details": "Поделиться деталями поездки", + "Car Plate is ": "Номерной знак машины ", + "VIP Order": "VIP Заказ", + "the 300 points equal 300 L.E for you \nSo go and gain your money": + "300 очков равны 300 L.E для вас\nТак что идите и зарабатывайте свои деньги", + "the 300 points equal 300 L.E": "300 очков равны 300 L.E", + "The payment was not approved. Please try again.": + "Оплата не была одобрена. Пожалуйста, попробуйте снова.", + "Payment Failed": "Оплата не удалась", + "Error": "Ошибка", + "This is a scheduled notification.": + "Это запланированное уведомление.", + "An error occurred during the payment process.": + "Произошла ошибка во время процесса оплаты.", + "The payment was approved.": "Оплата была одобрена.", + "Payment Successful": "Оплата успешна", + "No ride found yet": "Пока не найдено поездок", + "Accept Order": "Принять заказ", + // "reject your order.": "отклонить ваш заказ.", + "Bottom Bar Example": "Пример нижней панели", + "Driver phone": "Телефон водителя", + "Statistics": "Статистика", + "Origin": "Начало", + "Destination": "Место назначения", + "Driver Name": "Имя водителя", + "Driver Car Plate": "Номерной знак машины водителя", + "Available for rides": "Доступен для поездок", + "Scan Id": "Сканировать ID", + "Camera not initilaized yet": "Камера еще не инициализирована", + "Scan ID MklGoogle": "Сканировать ID MklGoogle", + "Language": "Язык", + "Jordan": "Иордания", + "USA": "США", + "Egypt": "Египет", + "Turkey": "Турция", + "Saudi Arabia": "Саудовская Аравия", + "Qatar": "Катар", + "Bahrain": "Бахрейн", + "Kuwait": "Кувейт", + "But you have a negative salary of": + "Но у вас отрицательная зарплата", + "Promo Code": "Промо-код", + "Your trip distance is": "Расстояние вашей поездки", + "Enter promo code": "Введите промо-код", + "You have promo!": "У вас есть промо!", + "Cost Duration": "Стоимость продолжительности", + "Duration is": "Продолжительность", + "Leave": "Покинуть", + "Join": "Присоединиться", + "Heading your way now. Please be ready.": + "Сейчас направляюсь к вам. Пожалуйста, будьте готовы.", + "Approaching your area. Should be there in 3 minutes.": + "Приближаюсь к вашему району. Должен быть там через 3 минуты.", + "There's heavy traffic here. Can you suggest an alternate pickup point?": + "Здесь сильное движение. Можете предложить альтернативное место встречи?", + "This ride is already taken by another driver.": + "Эта поездка уже занята другим водителем.", + "You Should be select reason.": "Вы должны выбрать причину.", + " \$": " \$", + "Waiting for Driver ...": "Ожидание водителя ...", + "Latest Recent Trip": "Последняя недавняя поездка", + "from your list": "из вашего списка", + "Do you want to change Work location": + "Вы хотите изменить место работы?", + "Do you want to change Home location": + "Вы хотите изменить домашнее местоположение?", + "We Are Sorry That we dont have cars in your Location!": + "Нам жаль, что у нас нет машин в вашем местоположении!", + "Choose from Map": "Выбрать из карты", + "Pick your ride location on the map - Tap to confirm": + "Выберите место поездки на карте - Нажмите, чтобы подтвердить", + // "To Work": "На работу", + // "Are you want to go this site": "Вы хотите перейти на этот сайт?", + "Closest & Cheapest": "Ближайший и самый дешевый", + // "Work Saved": "Место работы сохранено", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "Intaleq — это приложение для вызова поездок, которое безопасно, надежно и доступно.", + "With Intaleq, you can get a ride to your destination in minutes.": + "С Intaleq вы можете добраться до места назначения за считанные минуты.", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "Intaleq уделяет приоритетное внимание безопасности, и все наши капитаны тщательно проверяются и проверяются на благонадежность.", + // "To Home": "Домой", + // "Home Saved": "Домашнее местоположение сохранено", + // "Destination selected": "Место назначения выбрано:", + // "Now select start pick": "Теперь выберите начальную точку:", + "Pick from map": "Выбрать из карты", + // "Click here point": "Нажмите здесь", + "No Car in your site. Sorry!": + "В вашем местоположении нет машин. Извините!", + "Nearest Car for you about ": "Ближайшая машина для вас примерно ", + // "N/A": "N/A", + "From :": "От:", + "Get Details of Trip": "Получить детали поездки", + "If you want add stop click here": + "Если вы хотите добавить остановку, нажмите здесь", + // "Driver": "Водитель", + "Where you want go ": "Куда вы хотите поехать ", + "My Card": "Моя карта", + "Start Record": "Начать запись", + "Wallet": "Кошелек", + "History of Trip": "История поездки", + "Helping Center": "Центр помощи", + "Record saved": "Запись сохранена", + "Trips recorded": "Поездки записаны", + "Select Your Country": "Выберите вашу страну", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "Чтобы убедиться, что вы получаете наиболее точную информацию для вашего местоположения, пожалуйста, выберите вашу страну ниже. Это поможет адаптировать опыт использования приложения и контент под вашу страну.", + "Are you sure to delete recorded files": + "Вы уверены, что хотите удалить записанные файлы?", + "Select recorded trip": "Выбрать записанную поездку", + "Card Number": "Номер карты", + "Hi, Where to ": "Привет, куда ", + "Pick your destination from Map": + "Выберите место назначения на карте", + "Add Stops": "Добавить остановки", + "Get Direction": "Получить направление", + "Add Location": "Добавить местоположение", + "Switch Rider": "Сменить водителя", + "You will arrive to your destination after timer end.": + "Вы прибудете к месту назначения после завершения таймера.", + "You can cancel trip": "Вы можете отменить поездку", + "The driver waitting you in picked location .": + "Водитель ждет вас в выбранном месте.", + "10\$ and get 3% discount": "10\$ и получите 3% скидку", + "20\$ and get 4% discount": "20\$ и получите 4% скидку", + "40\$ and get 6% discount": "40\$ и получите 6% скидку", + "100\$ and get 9% discount": "100\$ и получите 9% скидку", + "Pay with Your": "Оплатите с помощью", + "Pay with Credit Card": "Оплатить кредитной картой", + "Payment History": "История платежей", + "Show Promos to Charge": "Показать промо для пополнения", + "Point": "Очко", + "How many hours would you like to wait?": + "Сколько часов вы хотите подождать?", + "Driver Wallet": "Кошелек водителя", + "Choose between those Type Cars": "Выберите между этими типами машин", + "hour": "час", + "Select Waiting Hours": "Выберите часы ожидания", + "Total Points is": "Всего очков", + "You will receive a code in SMS message": + "Вы получите код в SMS-сообщении", + "Done": "Готово", + "Total Budget from trips is ": "Общий бюджет от поездок ", + "Total Amount:": "Общая сумма:", + "Total Budget from trips by\nCredit card is ": + "Общий бюджет от поездок по\nкредитной карте ", + "This amount for all trip I get from Passengers": + "Эта сумма за все поездки, которые я получаю от пассажиров", + "Pay from my budget": "Оплатить из моего бюджета", + "This amount for all trip I get from Passengers and Collected For me in": + "Эта сумма за все поездки, которые я получаю от пассажиров и собираю для себя в", + "You can buy points from your budget": + "Вы можете купить очки из своего бюджета", + "insert amount": "введите сумму", + "You can buy Points to let you online\nby this list below": + "Вы можете купить очки, чтобы оставаться онлайн\nпо этому списку ниже", + "Create Wallet to receive your money": + "Создайте кошелек, чтобы получать свои деньги", + "Enter your feedback here": "Введите вашу обратную связь здесь", + "Please enter your feedback.": + "Пожалуйста, введите вашу обратную связь.", + "Feedback": "Обратная связь", + "Submit ": "Отправить ", + "Click here to Show it in Map": + "Нажмите здесь, чтобы показать это на карте", + "Canceled": "Отменено", + "Type your Email": "Введите вашу электронную почту", + "No I want": "Нет, я хочу", + "Email is": "Электронная почта", + "Phone Number is": "Номер телефона", + "Date of Birth is": "Дата рождения", + "Sex is ": "Пол ", + "Car Details": "Детали машины", + "VIN is": "VIN", + "Color is ": "Цвет ", + "Make is ": "Марка ", + "Model is": "Модель", + "Year is": "Год", + "Expiration Date ": "Срок действия ", + "Edit Your data": "Редактировать ваши данные", + "write vin for your car": "напишите VIN для вашей машины", + "VIN": "VIN", + "write Color for your car": "напишите цвет для вашей машины", + "write Make for your car": "напишите марку для вашей машины", + // "Make": "Марка", + "write Model for your car": "напишите модель для вашей машины", + // "Model": "Модель", + "write Year for your car": "напишите год для вашей машины", + // "Expiration Date": "Срок действия", + "write Expiration Date for your car": + "напишите срок действия для вашей машины", + "Tariffs": "Тарифы", + "Minimum fare": "Минимальный тариф", + "Maximum fare": "Максимальный тариф", + "Flag-down fee": "Плата за остановку", + "Including Tax": "Включая налог", + "BookingFee": "Плата за бронирование", + "Morning": "Утро", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "с 07:30 до 10:30 (четверг, пятница, суббота, понедельник)", + "Evening": "Вечер", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "с 12:00 до 15:00 (четверг, пятница, суббота, понедельник)", + "Night": "Ночь", + "You have in account": "У вас на счету", + "Select Country": "Выберите страну", + "Ride Today : ": "Поездка сегодня: ", + "After this period\nYou can\'t cancel!": + "После этого периода\nВы не можете отменить!", + "from 23:59 till 05:30": "с 23:59 до 05:30", + "Rate Driver": "Оценить водителя", + "Total Cost is ": "Общая стоимость ", + "Write note": "Написать заметку", + "Time to arrive": "Время прибытия", + "Ride Summaries": "Сводки поездок", + "Total Cost": "Общая стоимость", + "Average of Hours of": "Среднее количество часов", + " is ON for this month": " включен на этот месяц", + "Days": "Дни", + "Total Hours on month": "Общее количество часов в месяце", + "Counts of Hours on days": "Количество часов в днях", + "OrderId": "ID заказа", + "created time": "время создания", + "Intaleq Over": "Превышение скорости", + "I will slow down": "Я снижу скорость", + "Map Passenger": "Карта пассажира", + "Be Slowly": "Будьте медленнее", + "If you want to make Google Map App run directly when you apply order": + "Если вы хотите, чтобы приложение Google Map запускалось напрямую при применении заказа", + "You can change the language of the app": + "Вы можете изменить язык приложения", + "Your Budget less than needed": "Ваш бюджет меньше необходимого", + "You can change the Country to get all features": + "Вы можете изменить страну, чтобы получить все функции", + "Change Country": "Изменить страну" + }, + "it": { + "Order": "Ordine", + "OrderVIP": "Ordine VIP", + "Cancel Trip": "Annulla viaggio", + "Passenger Cancel Trip": "Passeggero ha annullato il viaggio", + "VIP Order": "Ordine VIP", + "The driver accepted your trip": + "Il conducente ha accettato il tuo viaggio", + "message From passenger": "Messaggio dal passeggero", + "Cancel": "Annulla", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "Viaggio annullato. Il costo del viaggio verrà aggiunto al tuo portafoglio.", + "token change": "Cambio token", + "face detect": "Rilevamento volto", + "Face Detection Result": "Risultato rilevamento volto", + "similar": "simile", + "not similar": "non simile", + "Hi ,I will go now": "Ciao, vado ora", + "Passenger come to you": "Il passeggero sta venendo da te", + "Call Income": "Reddito da chiamata", + "Call Income from Passenger": "Reddito da chiamata dal passeggero", + "Criminal Document Required": "Documento penale richiesto", + "You should have upload it .": "Avresti dovuto caricarlo.", + "Call End": "Chiamata terminata", + "The order has been accepted by another driver.": + "L'ordine è stato accettato da un altro conducente.", + "The order Accepted by another Driver": + "L'ordine accettato da un altro conducente", + "We regret to inform you that another driver has accepted this order.": + "Ci dispiace informarti che un altro conducente ha accettato questo ordine.", + "Driver Applied the Ride for You": + "Il conducente ha applicato la corsa per te", + "Applied": "Applicato", + "Hi ,I Arrive your site": "Ciao, sono arrivato sul posto", + "Please go to Car Driver": "Per favore, vai dal conducente", + "Ok I will go now.": "Ok, vado ora.", + "Accepted Ride": "Corsa accettata", + "Driver Accepted the Ride for You": + "Il conducente ha accettato la corsa per te", + "Promo": "Promozione", + "Show latest promo": "Mostra le ultime promozioni", + "Trip Monitoring": "Monitoraggio viaggio", + "Driver Is Going To Passenger": + "Il conducente sta andando dal passeggero", + "Please stay on the picked point.": + "Per favore, rimani nel punto selezionato.", + "message From Driver": "Messaggio dal conducente", + "Trip is Begin": "Il viaggio è iniziato", + "Cancel Trip from driver": "Annulla viaggio dal conducente", + "We will look for a new driver.\nPlease wait.": + "Cercheremo un nuovo conducente.\nPer favore, attendi.", + "The driver canceled your ride.": + "Il conducente ha annullato la tua corsa.", + "Driver Finish Trip": "Il conducente ha terminato il viaggio", + "you will pay to Driver": "pagherai il conducente", + "Don’t forget your personal belongings.": + "Non dimenticare i tuoi effetti personali.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "Assicurati di avere tutti i tuoi effetti personali e che eventuali tariffe residue, se applicabili, siano state aggiunte al tuo portafoglio prima di partire. Grazie per aver scelto l'app Intaleq.", + "Finish Monitor": "Termina monitoraggio", + "Trip finished": "Viaggio terminato", + "Call Income from Driver": "Reddito da chiamata dal conducente", + "Driver Cancelled Your Trip": + "Il conducente ha annullato il tuo viaggio", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "pagherai il conducente, pagherai il costo del tempo del conducente, controlla il tuo portafoglio Intaleq", + "Order Applied": "Ordine applicato", + //firebase above + +// + "Where to": "Dove", + "Where are you going?": "Dove stai andando?", + "Quick Actions": "Azioni rapide", + "My Wallet": "Il mio portafoglio", + "Order History": "Cronologia ordini", + "Contact Us": "Contattaci", + "Driver": "Conducente", + "Complaint": "Reclamo", + "Promos": "Promozioni", + "Recent Places": "Luoghi recenti", + "From": "Da", + "WhatsApp Location Extractor": "Estrazione posizione WhatsApp", + "Location Link": "Link posizione", + "Paste location link here": "Incolla il link della posizione qui", + "Go to this location": "Vai a questa posizione", + "Paste WhatsApp location link": + "Incolla il link della posizione WhatsApp", + "Select Order Type": "Seleziona tipo ordine", + "Choose who this order is for": "Scegli per chi è questo ordine", + "I want to order for myself": "Voglio ordinare per me", + "I want to order for someone else": + "Voglio ordinare per qualcun altro", + // "Cancel": "Annulla", + "Order for someone else": "Ordine per qualcun altro", + "Order for myself": "Ordine per me", + "Are you want to go this site": "Vuoi andare su questo sito?", + // "Yes": "Sì", + "No": "No", + "Are you sure to delete this location?": + "Sei sicuro di voler eliminare questa posizione?", + "deleted": "eliminato", + "To Work": "Al lavoro", + "Work Saved": "Posizione lavoro salvata", + "To Home": "A casa", + "Home Saved": "Posizione casa salvata", + "Destination selected": "Destinazione selezionata", + "Now select start pick": "Ora seleziona il punto di partenza", + "OK": "OK", + "Confirm Pick-up Location": "Conferma punto di ritiro", + "Set Location on Map": "Imposta posizione sulla mappa", + "Nearest Car: ~": "Auto più vicina: ~", + "Nearest Car": "Auto più vicina", + "No cars nearby": "Nessuna auto nelle vicinanze", + "Favorite Places": "Luoghi preferiti", + "No favorite places yet!": "Nessun luogo preferito ancora!", + "from your favorites": "dai tuoi preferiti", + "Back": "Indietro", + "Sign in for a seamless experience": + "Accedi per un'esperienza senza interruzioni", + "Sign In with Google": "Accedi con Google", + "Sign in with Apple": "Accedi con Apple", + "Need assistance? Contact us": "Hai bisogno di aiuto? Contattaci", + "User not found": "Utente non trovato", + "Email": "Email", + "Your email address": "Il tuo indirizzo email", + "Enter a valid email": "Inserisci un'email valida", + "Password": "Password", + // "Your password": "La tua password", + "Enter your password": "Inserisci la tua password", + "Submit": "Invia", + "Terms of Use & Privacy Notice": + "Termini di utilizzo e Informativa sulla privacy", + "Terms of Use": "Termini di utilizzo", + "Privacy Notice": "Informativa sulla privacy", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the": + "Selezionando \"Accetto\" qui sotto, confermo di aver letto e accettato i", + "and acknowledge the": "e riconosco la", + ". I am at least 18 years old.": ". Ho almeno 18 anni.", + "Continue": "Continua", + "Enable Location Access": "Abilita accesso alla posizione", + "We need your location to find nearby drivers for pickups and drop-offs.": + "Abbiamo bisogno della tua posizione per trovare i conducenti vicini per ritiri e consegne.", + "Allow Location Access": "Consenti accesso alla posizione", + "You should restart app to change language": + "Dovresti riavviare l'app per cambiare lingua", + "Home Page": "Pagina iniziale", + "To change Language the App": "Per cambiare la lingua dell'app", + "Learn more about our app and mission": + "Scopri di più sulla nostra app e missione", + "Promos For Today": "Promozioni per oggi", + "Choose your ride": "Scegli la tua corsa", + "Your Journey Begins Here": "Il tuo viaggio inizia qui", + "Bonus gift": "Regalo bonus", + "Pay": "Paga", + "Get": "Ottieni", + "Send to Driver Again": "Invia di nuovo al conducente", + "Driver Name:": "Nome conducente:", + "No trip data available": "Nessun dato di viaggio disponibile", + "Car Plate:": "Targa auto:", + "remaining": "rimanente", + "Order Cancelled": "Ordine annullato", + "You canceled VIP trip": "Hai annullato il viaggio VIP", + "Passenger cancelled order": "Il passeggero ha annullato l'ordine", + "Your trip is scheduled": "Il tuo viaggio è programmato", + "Don't forget your ride!": "Non dimenticare la tua corsa!", + "Trip updated successfully": "Viaggio aggiornato con successo", + "Car Make:": "Marca auto:", + "Car Model:": "Modello auto:", + "Car Color:": "Colore auto:", + "Driver Phone:": "Telefono conducente:", + "Pre-booking": "Prenotazione anticipata", + "Waiting VIP": "In attesa VIP", + "Driver List": "Lista conducenti", + "Confirm Trip": "Conferma viaggio", + "Select date and time of trip": "Seleziona data e ora del viaggio", + "Date and Time Picker": "Selettore data e ora", + "Trip Status:": "Stato viaggio:", + "pending": "in attesa", + "accepted": "accettato", + "rejected": "rifiutato", + "Apply": "Applica", + "Enter your promo code": "Inserisci il tuo codice promozionale", + "Apply Promo Code": "Applica codice promozionale", + "Scheduled Time:": "Orario programmato:", + "No drivers available": "Nessun conducente disponibile", + "No drivers available at the moment. Please try again later.": + "Nessun conducente disponibile al momento. Riprova più tardi.", + "you have a negative balance of": "hai un saldo negativo di", + "Please try again in a few moments": "Riprova tra qualche istante", + "Unknown Driver": "Conducente sconosciuto", + "in your": "nel tuo", + "The driver accepted your order for": + "Il conducente ha accettato il tuo ordine per", + "wallet due to a previous trip.": + "portafoglio a causa di un viaggio precedente.", + "rides": "corse", + "Add Work": "Aggiungi lavoro", + "The reason is": "La ragione è", + "User does not have a wallet #1652": + "L'utente non ha un portafoglio #1652", + "Price of trip": "Prezzo del viaggio", + "From:": "Da:", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Per i viaggi Intaleq e Delivery, il prezzo è calcolato dinamicamente. Per i viaggi Comfort, il prezzo è basato su tempo e distanza.", + "Phone Wallet Saved Successfully": + "Portafoglio telefonico salvato con successo", + "Add wallet phone you use": + "Aggiungi il telefono del portafoglio che usi", + "Update Available": "Aggiornamento disponibile", + "Phone number must be exactly 11 digits long": + "Il numero di telefono deve essere esattamente di 11 cifre", + "Insert Wallet phone number": + "Inserisci il numero di telefono del portafoglio", + "Phone number isn't an Egyptian phone number": + "Il numero di telefono non è un numero egiziano", + "A new version of the app is available. Please update to the latest version.": + "È disponibile una nuova versione dell'app. Aggiorna all'ultima versione.", + "We use location to get accurate and nearest passengers for you": + "Usiamo la posizione per ottenere passeggeri accurati e più vicini per te", + "This ride is already applied by another driver.": + "Questa corsa è già stata applicata da un altro conducente.", + "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": + "Usiamo la tua posizione precisa per trovare il conducente disponibile più vicino e fornire informazioni accurate su ritiro e consegna. Puoi gestire questo nelle Impostazioni.", + "Where are you, sir?": "Dove sei, signore?", + "I've been trying to reach you but your phone is off.": + "Ho cercato di contattarti ma il tuo telefono è spento.", + "Please don't be late": "Per favore, non fare tardi", + "Please don't be late, I'm waiting for you at the specified location.": + "Per favore, non fare tardi, ti aspetto nel luogo specificato.", + "My location is correct. You can search for me using the navigation app": + "La mia posizione è corretta. Puoi cercarmi usando l'app di navigazione", + "Hello, I'm at the agreed-upon location": + "Ciao, sono nel luogo concordato", + "How much longer will you be?": "Quanto ci metterai ancora?", + "Phone number is verified before": + "Il numero di telefono è già stato verificato", + "Change Ride": "Cambia corsa", + "You can change the destination by long-pressing any point on the map": + "Puoi cambiare la destinazione premendo a lungo qualsiasi punto sulla mappa", + "Pick from map destination": "Scegli la destinazione dalla mappa", + "Pick or Tap to confirm": "Scegli o tocca per confermare", + "Accepted your order": "Il tuo ordine è stato accettato", + "Order Accepted": "Ordine accettato", + "with type": "con tipo", + "accepted your order at price": + "ha accettato il tuo ordine al prezzo di", + "you canceled order": "hai annullato l'ordine", + "If you want order to another person": + "Se vuoi ordinare per un'altra persona", + // "Ok I will go now.": "Ok, vado ora.", + // "Hi, I will go now": "Ciao, vado ora", + "upgrade price": "prezzo aggiornato", + "Please enter a correct phone": + "Per favore, inserisci un telefono corretto", + "airport": "aeroporto", + "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": + "Scelta migliore per un'auto comoda con un percorso flessibile e punti di sosta. Questo aeroporto offre l'ingresso con visto a questo prezzo.", + "You can upgrade price to may driver accept your order": + "Puoi aggiornare il prezzo per far accettare l'ordine al conducente", + "Change Route": "Cambia percorso", + "No Captain Accepted Your Order": + "Nessun capitano ha accettato il tuo ordine", + "We are looking for a captain but the price may increase to let a captain accept": + "Stiamo cercando un capitano ma il prezzo potrebbe aumentare per far accettare l'ordine", + "No, I want to cancel this trip": + "No, voglio annullare questo viaggio", + // "Trip Cancelled. The cost of the trip will be added to your wallet.": "Viaggio annullato. Il costo del viaggio verrà aggiunto al tuo portafoglio.", + "Attention": "Attenzione", + "Trip Cancelled. The cost of the trip will be deducted from your wallet.": + "Viaggio annullato. Il costo del viaggio verrà detratto dal tuo portafoglio.", + "You will be charged for the cost of the driver coming to your location.": + "Ti verrà addebitato il costo del conducente che viene alla tua posizione.", + "reject your order.": "rifiuta il tuo ordine.", + "Order Under Review": "Ordine in revisione", + "is reviewing your order. They may need more information or a higher price.": + "sta revisionando il tuo ordine. Potrebbero aver bisogno di maggiori informazioni o di un prezzo più alto.", + // "The driver canceled your ride.": "Il conducente ha annullato la tua corsa.", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "Non abbiamo ancora trovato nessun conducente. Considera di aumentare la tariffa del viaggio per rendere la tua offerta più attraente per i conducenti.", + "Increase Your Trip Fee (Optional)": + "Aumenta la tariffa del viaggio (opzionale)", + "Vibration": "Vibrazione", + "Resend code": "Rinvia codice", + // "token change": "Cambio token", + "change device": "Cambia dispositivo", + "Device Change Detected": "Cambio dispositivo rilevato", + "You can only use one device at a time. This device will now be set as your active device.": + "Puoi usare solo un dispositivo alla volta. Questo dispositivo sarà ora impostato come dispositivo attivo.", + "Click here point": "Clicca qui", + "Are you want to change": "Vuoi cambiare", + "by": "da", + "Enter your complaint here": "Inserisci il tuo reclamo qui", + "Please enter your complaint.": + "Per favore, inserisci il tuo reclamo.", + "Complaint data saved successfully": + "Dati del reclamo salvati con successo", + "Trip Monitor": "Monitoraggio viaggio", + "Insert SOS Phone": "Inserisci telefono SOS", + "Add SOS Phone": "Aggiungi telefono SOS", + // "Trip Monitoring": "Monitoraggio viaggio", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "Caro ,\n\n🚀 Ho appena iniziato un viaggio emozionante e vorrei condividere con te in tempo reale i dettagli del mio viaggio e la mia posizione attuale! Scarica l'app Intaleq. Ti permetterà di visualizzare i dettagli del mio viaggio e la mia ultima posizione.\n\n👈 Link di download:\nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nNon vedo l'ora di tenerti vicino durante la mia avventura!\n\nIntaleq ,", + "Send Intaleq app to him": "Inviagli l'app Intaleq", + "No passenger found for the given phone number": + "Nessun passeggero trovato per il numero di telefono fornito", + "No user found for the given phone number": + "Nessun utente trovato per il numero di telefono fornito", + "This price is": "Questo prezzo è", + "Work": "Lavoro", + "Add Home": "Aggiungi casa", + "Notifications": "Notifiche", + "💳 Pay with Credit Card": "💳 Paga con carta di credito", + "⚠️ You need to choose an amount!": "⚠️ Devi scegliere un importo!", + "💰 Pay with Wallet": "💰 Paga con portafoglio", + "You must restart the app to change the language.": + "Devi riavviare l'app per cambiare lingua.", + "joined": "unito", + "Driver joined the channel": "Il conducente si è unito al canale", + "Driver left the channel": "Il conducente ha lasciato il canale", + "Call Page": "Pagina chiamata", + // "Call End": "Chiamata terminata", + "Call Left": "Chiamata rimanente", + r"$ Next as Cash $!": "Prossimo come contanti!", + "To use Wallet charge it": "Per usare il portafoglio, ricaricalo", + "We are searching for the nearest driver to you": + "Stiamo cercando il conducente più vicino a te", + "Best choice for cities": "Scelta migliore per le città", + "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": + "Rayeh Gai: Servizio di viaggio di andata e ritorno per viaggi convenienti tra città, facile e affidabile.", + "Rayeh Gai": "Rayeh Gai", + "This trip is for women only": "Questo viaggio è solo per donne", + "Total budgets on month": "Budget totale del mese", + "You have call from driver": "Hai una chiamata dal conducente", + "Comfort": "Comfort", + "Intaleq": "Velocità", + "Driver already has 2 trips within the specified period.": + "Il conducente ha già 2 viaggi nel periodo specificato.", + "The invitation was sent successfully": + "L'invito è stato inviato con successo", + "Lady": "Signora", + "You should select your country": "Dovresti selezionare il tuo paese", + "Scooter": "Scooter", + "A trip with a prior reservation, allowing you to choose the best captains and cars.": + "Un viaggio con prenotazione anticipata, che ti permette di scegliere i migliori capitani e auto.", + "Mishwar Vip": "Mishwar Vip", + "The driver waiting you in picked location .": + "Il conducente ti aspetta nel luogo selezionato.", + "About Us": "Chi siamo", + "You can change the vibration feedback for all buttons": + "Puoi cambiare il feedback di vibrazione per tutti i pulsanti", + "Most Secure Methods": "Metodi più sicuri", + "In-App VOIP Calls": "Chiamate VOIP in-app", + "Recorded Trips for Safety": "Viaggi registrati per sicurezza", + "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": + "\nDiamo anche priorità alla convenienza, offrendo prezzi competitivi per rendere le tue corse accessibili.", + "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": + "Intaleq è un'app di ride-sharing progettata pensando alla tua sicurezza e convenienza. Ti colleghiamo a conducenti affidabili nella tua zona, garantendo un'esperienza di viaggio comoda e senza stress.\n\nEcco alcune delle caratteristiche principali che ci distinguono:", + "Sign In by Apple": "Accedi con Apple", + "Sign In by Google": "Accedi con Google", + "How do I request a ride?": "Come posso richiedere una corsa?", + "Step-by-step instructions on how to request a ride through the Intaleq app.": + "Istruzioni passo-passo su come richiedere una corsa tramite l'app Intaleq.", + "What types of vehicles are available?": + "Quali tipi di veicoli sono disponibili?", + "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": + "Intaleq offre una varietà di opzioni di veicoli per soddisfare le tue esigenze, inclusi economia, comfort e lusso. Scegli l'opzione che meglio si adatta al tuo budget e al numero di passeggeri.", + "How can I pay for my ride?": "Come posso pagare la mia corsa?", + "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": + "Intaleq offre più metodi di pagamento per tua comodità. Scegli tra pagamento in contanti o con carta di credito/debito durante la conferma della corsa.", + "Can I cancel my ride?": "Posso annullare la mia corsa?", + "Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.": + "Sì, puoi annullare la tua corsa a determinate condizioni (ad esempio, prima che il conducente sia assegnato). Vedi la politica di cancellazione di Intaleq per i dettagli.", + "Driver Registration & Requirements": + "Registrazione e requisiti per i conducenti", + "How can I register as a driver?": + "Come posso registrarmi come conducente?", + "What are the requirements to become a driver?": + "Quali sono i requisiti per diventare un conducente?", + "Visit our website or contact Intaleq support for information on driver registration and requirements.": + "Visita il nostro sito web o contatta il supporto Intaleq per informazioni sulla registrazione e i requisiti dei conducenti.", + "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": + "Intaleq fornisce una funzionalità di chat in-app per permetterti di comunicare con il tuo conducente o passeggero durante il viaggio.", + "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": + "Intaleq dà priorità alla tua sicurezza. Offriamo funzionalità come la verifica del conducente, il tracciamento del viaggio in-app e opzioni di contatto di emergenza.", + "Frequently Questions": "Domande frequenti", + "User does not exist.": "L'utente non esiste.", + "We need your phone number to contact you and to help you.": + "Abbiamo bisogno del tuo numero di telefono per contattarti e aiutarti.", + "You will recieve code in sms message": + "Riceverai il codice in un messaggio SMS", + "Please enter": "Per favore, inserisci", + "We need your phone number to contact you and to help you receive orders.": + "Abbiamo bisogno del tuo numero di telefono per contattarti e aiutarti a ricevere ordini.", + "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": + "Il nome completo sul tuo casellario giudiziale non corrisponde a quello sulla tua patente di guida. Verifica e fornisci i documenti corretti.", + "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": + "Il numero nazionale sulla tua patente di guida non corrisponde a quello sul tuo documento d'identità. Verifica e fornisci i documenti corretti.", + "Capture an Image of Your Criminal Record": + "Cattura un'immagine del tuo casellario giudiziale", + "IssueDate": "Data di emissione", + "Capture an Image of Your car license front ": + "Cattura un'immagine della parte anteriore della tua patente auto", + "Capture an Image of Your ID Document front": + "Cattura un'immagine della parte anteriore del tuo documento d'identità", + "NationalID": "ID nazionale", + "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": + "Puoi condividere l'app Intaleq con i tuoi amici e guadagnare ricompense per le corse che fanno usando il tuo codice", + "FullName": "Nome completo", + "No invitation found yet!": "Nessun invito trovato ancora!", + "InspectionResult": "Risultato ispezione", + "Criminal Record": "Casellario giudiziale", + "Share App": "Condividi app", + "The email or phone number is already registered.": + "L'email o il numero di telefono è già registrato.", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "Per diventare un conducente di ride-sharing sull'app Intaleq, devi caricare la tua patente di guida, il documento d'identità e il documento di registrazione dell'auto. Il nostro sistema AI esaminerà e verificherà istantaneamente la loro autenticità in soli 2-3 minuti. Se i tuoi documenti sono approvati, puoi iniziare a lavorare come conducente sull'app Intaleq. Nota che la presentazione di documenti fraudolenti è un reato grave e può comportare la risoluzione immediata e conseguenze legali.", + "Documents check": "Controllo documenti", + "Driver's License": "Patente di guida", + "for your first registration!": "per la tua prima registrazione!", + "Get it Now!": "Ottienilo ora!", + "before": "prima", + "Code not approved": "Codice non approvato", + "3000 LE": "3000 LE", + "Do you have an invitation code from another driver?": + "Hai un codice di invito da un altro conducente?", + "Paste the code here": "Incolla il codice qui", + "No, I don't have a code": "No, non ho un codice", + "Code approved": "Codice approvato", + "Install our app:": "Installa la nostra app:", + "Invite another driver and both get a gift after he completes 100 trips!": + "Invita un altro conducente e entrambi riceverete un regalo dopo che avrà completato 100 viaggi!", + "Invite": "Invita", + "Are you sure?": "Sei sicuro?", + "This will delete all recorded files from your device.": + "Questo cancellerà tutti i file registrati dal tuo dispositivo.", + "Select a file": "Seleziona un file", + "Select a File": "Seleziona un file", + "Delete": "Elimina", + "attach audio of complain": "allega audio del reclamo", + "Phone Number Check": "Controllo numero di telefono", + "Drivers received orders": "I conducenti hanno ricevuto ordini", + "No audio files recorded.": "Nessun file audio registrato.", + "This is for delivery or a motorcycle.": + "Questo è per la consegna o una moto.", + // "We will look for a new driver.\nPlease wait.": "Cercheremo un nuovo conducente.\nPer favore, attendi.", + "Intaleq Reminder": "Promemoria Intaleq", + "It's time to check the Intaleq app!": + "È ora di controllare l'app Intaleq!", + "you must insert token code": "devi inserire il codice token", + "Something went wrong. Please try again.": + "Qualcosa è andato storto. Riprova.", + "Trip Details": "Dettagli viaggio", + "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": + "Il contesto non fornisce dettagli sul reclamo, quindi non posso fornire una soluzione a questo problema. Fornisci le informazioni necessarie e sarò felice di aiutarti.", + "Submit Your Complaint": "Invia il tuo reclamo", + "Date": "Data", + "Price": "Prezzo", + "Status": "Stato", + "Choose from contact": "Scegli dai contatti", + "attach correct audio": "allega audio corretto", + "be sure": "assicurati", + "Audio uploaded successfully.": "Audio caricato con successo.", + "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": + "Perfetto per i passeggeri che cercano le ultime modelli di auto con la libertà di scegliere qualsiasi percorso desiderino", + "Share this code with your friends and earn rewards when they use it!": + "Condividi questo codice con i tuoi amici e guadagna ricompense quando lo usano!", + "Enter phone": "Inserisci telefono", + "You deserve the gift": "Ti meriti il regalo", + "complete, you can claim your gift": + "completo, puoi richiedere il tuo regalo", + "When": "Quando", + "Enter driver's phone": "Inserisci il telefono del conducente", + "Send Invite": "Invia invito", + "Show Invitations": "Mostra inviti", + "License Type": "Tipo di licenza", + "National Number": "Numero nazionale", + "Name (Arabic)": "Nome (arabo)", + "Name (English)": "Nome (inglese)", + "Address": "Indirizzo", + "Issue Date": "Data di emissione", + "Expiry Date": "Data di scadenza", + "License Categories": "Categorie di licenza", + "driver_license": "patente di guida", + "Capture an Image of Your Driver License": + "Cattura un'immagine della tua patente di guida", + "ID Documents Back": "Retro del documento d'identità", + "National ID": "ID nazionale", + "Occupation": "Occupazione", + "Gender": "Genere", + "Religion": "Religione", + "Marital Status": "Stato civile", + "Full Name (Marital)": "Nome completo (matrimoniale)", + "Expiration Date": "Data di scadenza", + "Capture an Image of Your ID Document Back": + "Cattura un'immagine del retro del tuo documento d'identità", + "ID Documents Front": "Fronte del documento d'identità", + "First Name": "Nome", + "CardID": "ID carta", + "Vehicle Details Front": "Dettagli veicolo fronte", + "Plate Number": "Numero di targa", + "Owner Name": "Nome proprietario", + "Vehicle Details Back": "Dettagli veicolo retro", + "Make": "Marca", + "Model": "Modello", + "Year": "Anno", + "Chassis": "Telaio", + "Color": "Colore", + "Displacement": "Cilindrata", + "Fuel": "Carburante", + "Tax Expiry Date": "Data di scadenza tasse", + "Inspection Date": "Data di ispezione", + "Capture an Image of Your car license back": + "Cattura un'immagine del retro della tua patente auto", + "Capture an Image of Your Driver’s License": + "Cattura un'immagine della tua patente di guida", + "Sign in with Google for easier email and name entry": + "Accedi con Google per un inserimento più semplice di email e nome", + "You will choose allow all the time to be ready receive orders": + "Sceglierai di consentire tutto il tempo per essere pronto a ricevere ordini", + "Welcome to Intaleq!": "Benvenuto in Intaleq!", + "Get to your destination quickly and easily.": + "Raggiungi la tua destinazione in modo rapido e semplice.", + "Enjoy a safe and comfortable ride.": + "Goditi un viaggio sicuro e confortevole.", + "Choose Language": "Scegli lingua", + "Login": "Accedi", + "Pay with Wallet": "Paga con portafoglio", + "Invalid MPIN": "MPIN non valido", + "Invalid OTP": "OTP non valido", + // "Driver Accepted the Ride for You": "Il conducente ha accettato la corsa per te", + "Enter your email address": "Inserisci il tuo indirizzo email", + "Please enter Your Email.": "Per favore, inserisci la tua email.", + "Enter your phone number": "Inserisci il tuo numero di telefono", + "Please enter your phone number.": + "Per favore, inserisci il tuo numero di telefono.", + "Please enter Your Password.": + "Per favore, inserisci la tua password.", + "if you dont have account": "se non hai un account", + "Register": "Registrati", + "Accept Ride's Terms & Review Privacy Notice": + "Accetta i termini della corsa e rivedi l'informativa sulla privacy", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "Selezionando 'Accetto' qui sotto, confermo di aver letto e accettato i Termini di utilizzo e riconosco l'Informativa sulla privacy. Ho almeno 18 anni.", + "I Agree": "Accetto", + // "Finish Monitor": "Termina monitoraggio", + "First name": "Nome", + "Enter your first name": "Inserisci il tuo nome", + "Please enter your first name.": "Per favore, inserisci il tuo nome.", + "Last name": "Cognome", + "Enter your last name": "Inserisci il tuo cognome", + "Please enter your last name.": + "Per favore, inserisci il tuo cognome.", + "City": "Città", + "Please enter your City.": "Per favore, inserisci la tua città.", + "Male": "Maschio", + "Female": "Femmina", + "Verify Email": "Verifica email", + "We sent 5 digit to your Email provided": + "Abbiamo inviato 5 cifre alla tua email fornita", + "5 digit": "5 cifre", + "Send Verification Code": "Invia codice di verifica", + "Your Ride Duration is ": "La durata della tua corsa è ", + "You will be thier in": "Sarai lì tra", + "You trip distance is": "La distanza del tuo viaggio è", + "Fee is": "La tariffa è", + "From : ": "Da: ", + "To : ": "A: ", + "Add Promo": "Aggiungi promozione", + "Confirm Selection": "Conferma selezione", + "distance is": "la distanza è", + "Intaleq LLC": "Intaleq LLC", + "Egypt's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "Il servizio pionieristico di ride-sharing in Egitto, sviluppato con orgoglio da proprietari arabi e locali. Diamo priorità alla vicinanza a te – sia ai nostri preziosi passeggeri che ai nostri dedicati capitani.", + "Why Choose Intaleq?": "Perché scegliere Intaleq?", + "Closest to You": "Più vicino a te", + "We connect you with the nearest drivers for faster pickups and quicker journeys.": + "Ti colleghiamo ai conducenti più vicini per ritiri più veloci e viaggi più rapidi.", + "Uncompromising Security": "Sicurezza senza compromessi", + "Lady Captains Available": "Capitani donna disponibili", + "Recorded Trips (Voice & AI Analysis)": + "Viaggi registrati (analisi vocale e AI)", + "Fastest Complaint Response": "Risposta ai reclami più veloce", + "Our dedicated customer service team ensures swift resolution of any issues.": + "Il nostro team dedicato al servizio clienti garantisce una risoluzione rapida di qualsiasi problema.", + "Affordable for Everyone": "Accessibile per tutti", + "Frequently Asked Questions": "Domande frequenti", + "Getting Started": "Per iniziare", + "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": + "Apri semplicemente l'app Intaleq, inserisci la tua destinazione e tocca \"Richiedi corsa\". L'app ti collegherà a un conducente vicino.", + "Vehicle Options": "Opzioni veicolo", + "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": + "Intaleq offre una varietà di opzioni tra cui Economia, Comfort e Lusso per soddisfare le tue esigenze e il tuo budget.", + "Payments": "Pagamenti", + "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": + "Puoi pagare la tua corsa in contanti o con carta di credito/debito. Puoi selezionare il metodo di pagamento preferito prima di confermare la corsa.", + "Ride Management": "Gestione corse", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "Sì, puoi annullare la tua corsa, ma tieni presente che potrebbero essere applicate commissioni di cancellazione a seconda di quanto in anticipo annulli.", + "For Drivers": "Per i conducenti", + // "Driver Registration & Requirements": "Registrazione e requisiti per i conducenti", + "Driver Registration": "Registrazione conducente", + "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": + "Per registrarti come conducente o conoscere i requisiti, visita il nostro sito web o contatta direttamente il supporto Intaleq.", + "Visit Website/Contact Support": + "Visita il sito/Contatta il supporto", + "Close": "Chiudi", + "We are searching for the nearest driver": + "Stiamo cercando il conducente più vicino", + "Communication": "Comunicazione", + "How do I communicate with the other party (passenger/driver)?": + "Come posso comunicare con l'altra parte (passeggero/conducente)?", + "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": + "Puoi comunicare con il tuo conducente o passeggero tramite la funzione di chat in-app una volta confermata la corsa.", + "Safety & Security": "Sicurezza e protezione", + "What safety measures does Intaleq offer?": + "Quali misure di sicurezza offre Intaleq?", + "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": + "Intaleq offre varie funzionalità di sicurezza tra cui verifica del conducente, tracciamento del viaggio in-app, opzioni di contatto di emergenza e la possibilità di condividere lo stato del viaggio con contatti fidati.", + "Enjoy competitive prices across all trip options, making travel accessible.": + "Goditi prezzi competitivi su tutte le opzioni di viaggio, rendendo i viaggi accessibili.", + "Variety of Trip Choices": "Varietà di scelte di viaggio", + "Choose the trip option that perfectly suits your needs and preferences.": + "Scegli l'opzione di viaggio che si adatta perfettamente alle tue esigenze e preferenze.", + "Your Choice, Our Priority": "La tua scelta, la nostra priorità", + "Because we are near, you have the flexibility to choose the ride that works best for you.": + "Poiché siamo vicini, hai la flessibilità di scegliere la corsa che funziona meglio per te.", + "duration is": "la durata è", + "Setting": "Impostazione", + "Find answers to common questions": "Trova risposte a domande comuni", + "I don't need a ride anymore": "Non ho più bisogno di una corsa", + "I was just trying the application": + "Stavo solo provando l'applicazione", + "No driver accepted my request": + "Nessun conducente ha accettato la mia richiesta", + "I added the wrong pick-up/drop-off location": + "Ho aggiunto il luogo di ritiro/consegna sbagliato", + "I don't have a reason": "Non ho una ragione", + "Other": "Altro", + "Can we know why you want to cancel Ride ?": + "Possiamo sapere perché vuoi annullare la corsa?", + "Cancel Ride": "Annulla corsa", + "Add Payment Method": "Aggiungi metodo di pagamento", + "Your Wallet balance is ": "Il saldo del tuo portafoglio è ", + "Ride Wallet": "Portafoglio corse", + "Payment Method": "Metodo di pagamento", + "Type here Place": "Digita qui il luogo", + "Are You sure to ride to": "Sei sicuro di voler andare a", + "Confirm": "Conferma", + // "Back": "Indietro", + "You are Delete": "Stai eliminando", + "Deleted": "Eliminato", + "You Dont Have Any places yet !": "Non hai ancora nessun luogo!", + // "Favorite Places": "Luoghi preferiti", + "From : Current Location": "Da: Posizione attuale", + // "Where to": "Dove", + "Profile": "Profilo", + "Home": "Casa", + "My Cared": "La mia cura", + "Add Card": "Aggiungi carta", + "Add Credit Card": "Aggiungi carta di credito", + "Please enter the cardholder name": + "Per favore, inserisci il nome del titolare della carta", + "Please enter the expiry date": + "Per favore, inserisci la data di scadenza", + "Please enter the CVV code": "Per favore, inserisci il codice CVV", + "Go To Favorite Places": "Vai ai luoghi preferiti", + "Go to this Target": "Vai a questo obiettivo", + "My Profile": "Il mio profilo", + "Sign Out": "Esci", + "Are you want to go to this site": "Vuoi andare su questo sito", + "MyLocation": "La mia posizione", + "my location": "la mia posizione", + "Target": "Obiettivo", + "Update": "Aggiorna", + "You Should choose rate figure": "Dovresti scegliere una valutazione", + "Login Captin": "Accedi come capitano", + "Register Captin": "Registrati come capitano", + "Send Verfication Code": "Invia codice di verifica", + "KM": "Km", + "End Ride": "Termina corsa", + "Minute": "Minuto", + "Go to passenger Location now": + "Vai alla posizione del passeggero ora", + "Duration of the Ride is ": "La durata della corsa è ", + "Distance of the Ride is ": "La distanza della corsa è ", + "Name of the Passenger is ": "Il nome del passeggero è ", + "Hello this is Captain": "Ciao, sono il capitano", + "Start the Ride": "Inizia la corsa", + "Please Wait If passenger want To Cancel!": + "Per favore, aspetta se il passeggero vuole annullare!", + "Total Duration:": "Durata totale:", + "Active Duration:": "Durata attiva:", + "Waiting for Captin ...": "In attesa del capitano ...", + "Age is ": "L'età è ", + "Rating is ": "La valutazione è ", + " to arrive you.": "per arrivare da te.", + "Tariff": "Tariffa", + "Settings": "Impostazioni", + "Feed Back": "Feedback", + "Please enter a valid 16-digit card number": + "Per favore, inserisci un numero di carta valido di 16 cifre", + "Add Phone": "Aggiungi telefono", + "Please enter a phone number": + "Per favore, inserisci un numero di telefono", + "You dont Add Emergency Phone Yet!": + "Non hai ancora aggiunto un telefono di emergenza!", + "You will arrive to your destination after ": + "Arriverai a destinazione dopo ", + "You can cancel Ride now": "Puoi annullare la corsa ora", + "You Can cancel Ride After Captain did not come in the time": + "Puoi annullare la corsa se il capitano non è arrivato in tempo", + "If you in Car Now. Press Start The Ride": + "Se sei in macchina ora. Premi Inizia la corsa", + "You Dont Have Any amount in": "Non hai alcun importo in", + "Wallet!": "Portafoglio!", + "You Have": "Hai", + "Save Credit Card": "Salva carta di credito", + "Show Promos": "Mostra promozioni", + "10 and get 4% discount": "10 e ottieni il 4% di sconto", + "20 and get 6% discount": "20 e ottieni il 6% di sconto", + "40 and get 8% discount": "40 e ottieni il 8% di sconto", + "100 and get 11% discount": "100 e ottieni l'11% di sconto", + "Pay with Your PayPal": "Paga con il tuo PayPal", + "You will choose one of above !": "Sceglierai uno dei precedenti!", + "Delete My Account": "Elimina il mio account", + "Edit Profile": "Modifica profilo", + "Name": "Nome", + "Update Gender": "Aggiorna genere", + "Education": "Istruzione", + "Update Education": "Aggiorna istruzione", + "Employment Type": "Tipo di occupazione", + "SOS Phone": "Telefono SOS", + "High School Diploma": "Diploma di scuola superiore", + "Associate Degree": "Diploma di laurea breve", + "Bachelor's Degree": "Laurea triennale", + "Master's Degree": "Laurea magistrale", + "Doctoral Degree": "Dottorato", + "Copy this Promo to use it in your Ride!": + "Copia questa promozione per usarla nella tua corsa!", + "To change some Settings": "Per cambiare alcune impostazioni", + "Order Request Page": "Pagina richiesta ordine", + "Rouats of Trip": "Percorsi del viaggio", + "Passenger Name is ": "Il nome del passeggero è ", + "Total From Passenger is ": "Totale dal passeggero è ", + "Duration To Passenger is ": "Durata fino al passeggero è ", + "Distance To Passenger is ": "Distanza fino al passeggero è ", + "Total For You is ": "Totale per te è ", + "Distance is ": "La distanza è ", + " KM": " Km", + "Duration of Trip is ": "La durata del viaggio è ", + " Minutes": " Minuti", + "Apply Order": "Applica ordine", + "Refuse Order": "Rifiuta ordine", + "Rate Captain": "Valuta capitano", + "Enter your Note": "Inserisci la tua nota", + "Type something...": "Scrivi qualcosa...", + "Submit rating": "Invia valutazione", + "Rate Passenger": "Valuta passeggero", + "Ride Summary": "Riepilogo corsa", + "welcome_message": "Benvenuto in Intaleq!", + "app_description": + "Intaleq è un'app affidabile, sicura e accessibile per il ride-sharing.", + "get_to_destination": + "Raggiungi la tua destinazione in modo rapido e semplice.", + "get_a_ride": + "Con Intaleq puoi raggiungere la tua destinazione in pochi minuti.", + "safe_and_comfortable": "Goditi un viaggio sicuro e confortevole.", + "committed_to_safety": + "Intaleq dà priorità alla sicurezza e tutti i nostri capitani sono accuratamente controllati e verificati.", + // "Driver Applied the Ride for You": "Il conducente ha applicato la corsa per te", + // "Show latest promo": "Mostra le ultime promozioni", + // "Cancel Trip": "Annulla viaggio", + // "Passenger Cancel Trip": "Passeggero ha annullato il viaggio", + // "Accepted Ride": "Corsa accettata", + "your ride is Accepted": "la tua corsa è stata accettata", + // "Trip is Begin": "Il viaggio è iniziato", + "Driver is waiting at pickup.": + "Il conducente sta aspettando al punto di ritiro.", + "Driver is on the way": "Il conducente è in arrivo", + "Contact Options": "Opzioni di contatto", + "Send a custom message": "Invia un messaggio personalizzato", + "Type your message": "Scrivi il tuo messaggio", + // "Hi ,I will go now": "Ciao, vado ora", + // "Passenger come to you": "Il passeggero sta venendo da te", + // "Hi ,I Arrive your site": "Ciao, sono arrivato sul posto", + // "Driver Finish Trip": "Il conducente ha terminato il viaggio", + // "you will pay to Driver": "pagherai il conducente", + // "Driver Cancel Your Trip": "Il conducente ha annullato il tuo viaggio", + // "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": "pagherai il conducente, pagherai il costo del tempo del conducente, controlla il tuo portafoglio Intaleq", + // "I will go now": "Vado ora", + "You Have Tips": "Hai mance", + " tips\nTotal is": " mance\nTotale", + // "No,I want": "No, voglio", + "Your fee is ": "La tua tariffa è ", + // "Do you want to pay Tips for this Driver": "Vuoi dare una mancia a questo conducente?", + "Tip is ": "La mancia è ", + "Are you want to wait drivers to accept your order": + "Vuoi aspettare che i conducenti accettino il tuo ordine?", + "This price is fixed even if the route changes for the driver.": + "Questo prezzo è fisso anche se il percorso cambia per il conducente.", + "The price may increase if the route changes.": + "Il prezzo potrebbe aumentare se il percorso cambia.", + "The captain is responsible for the route.": + "Il capitano è responsabile del percorso.", + "We are search for nearst Driver": + "Stiamo cercando il conducente più vicino", + "Your order is being prepared": "Il tuo ordine è in preparazione", + "The drivers are reviewing your request": + "I conducenti stanno rivedendo la tua richiesta", + "Your order sent to drivers": + "Il tuo ordine è stato inviato ai conducenti", + "You can call or record audio of this trip": + "Puoi chiamare o registrare l'audio di questo viaggio", + "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": + "Il viaggio è iniziato! Sentiti libero di contattare i numeri di emergenza, condividere il tuo viaggio o attivare la registrazione vocale per il viaggio", + // "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": "Assicurati di avere tutti i tuoi effetti personali e che eventuali tariffe residue, se applicabili, siano state aggiunte al tuo portafoglio prima di partire. Grazie per aver scelto l'app Intaleq.", + // "Don’t forget your personal belongings.": "Non dimenticare i tuoi effetti personali.", + "Camera Access Denied.": "Accesso alla camera negato.", + "Open Settings": "Apri impostazioni", + "GPS Required Allow !.": "GPS richiesto!", + "Your Account is Deleted": "Il tuo account è stato eliminato", + "Are you sure to delete your account?": + "Sei sicuro di voler eliminare il tuo account?", + "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": + "I tuoi dati verranno cancellati dopo 2 settimane\nE non potrai tornare a usare l'app dopo 1 mese", + "Enter Your First Name": "Inserisci il tuo nome", + "Are you Sure to LogOut?": "Sei sicuro di voler uscire?", + "Email Wrong": "Email errata", + "Email you inserted is Wrong.": "L'email che hai inserito è errata.", + "You have finished all times ": "Hai finito tutti i tempi", + "if you want help you can email us here": + "se hai bisogno di aiuto puoi scriverci qui", + "Thanks": "Grazie", + "Email Us": "Scrivici", + "I cant register in your app in face detection ": + "Non riesco a registrarmi nella tua app con il rilevamento del volto", + "Hi": "Ciao", + "No face detected": "Nessun volto rilevato", + "Image detecting result is ": + "Il risultato del rilevamento dell'immagine è ", + "from 3 times Take Attention": "da 3 volte presta attenzione", + "Be sure for take accurate images please\nYou have": + "Assicurati di scattare immagini accurate per favore\nHai", + "image verified": "immagine verificata", + "Next": "Avanti", + "There is no help Question here": "Non c'è una domanda di aiuto qui", + "You dont have Points": "Non hai punti", + "You Are Stopped For this Day !": "Sei fermo per oggi!", + "You must be charge your Account": "Devi ricaricare il tuo account", + "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": + "Hai rifiutato 3 corse oggi, questo è il motivo\nCi vediamo domani!", + "Recharge my Account": "Ricarica il mio account", + "Ok , See you Tomorrow": "Ok, ci vediamo domani", + "You are Stopped": "Sei fermo", + "Connected": "Connesso", + "Not Connected": "Non connesso", + "Your are far from passenger location": + "Sei lontano dalla posizione del passeggero", + "go to your passenger location before\nPassenger cancel trip": + "vai alla posizione del passeggero prima che\nil passeggero annulli il viaggio", + "You will get cost of your work for this trip": + "Otterrai il costo del tuo lavoro per questo viaggio", + " in your wallet": "nel tuo portafoglio", + "you gain": "guadagni", + "Order Cancelled by Passenger": "Ordine annullato dal passeggero", + "Success": "Successo", + "Feedback data saved successfully": + "Dati del feedback salvati con successo", + "No Promo for today .": "Nessuna promozione per oggi.", + "Select your destination": "Seleziona la tua destinazione", + "Search for your Start point": "Cerca il tuo punto di partenza", + "Search for waypoint": "Cerca un punto intermedio", + "Current Location": "Posizione attuale", + "Add Location 1": "Aggiungi posizione 1", + "You must Verify email !.": "Devi verificare l'email!", + "Cropper": "Ritaglio", + "Saved Sucssefully": "Salvato con successo", + "Select Date": "Seleziona data", + "Birth Date": "Data di nascita", + "Ok": "OK", + "the 500 points equal 30 JOD": "500 punti equivalgono a 30 JOD", + "the 500 points equal 30 JOD for you \nSo go and gain your money": + "500 punti equivalgono a 30 JOD per te\nQuindi vai e guadagna i tuoi soldi", + "token updated": "token aggiornato", + "Add Location 2": "Aggiungi posizione 2", + "Add Location 3": "Aggiungi posizione 3", + "Add Location 4": "Aggiungi posizione 4", + "Waiting for your location": "In attesa della tua posizione", + "Search for your destination": "Cerca la tua destinazione", + "Hi! This is": "Ciao! Questo è", + " I am using": " Sto usando", + " to ride with": " per viaggiare con", + " as the driver.": " come conducente.", + "is driving a ": "sta guidando un ", + " with license plate ": " con targa ", + " I am currently located at ": " Mi trovo attualmente a ", + "Please go to Car now ": "Per favore, vai alla macchina ora ", + "You will receive a code in WhatsApp Messenger": + "Riceverai un codice su WhatsApp Messenger", + "If you need assistance, contact us": + "Se hai bisogno di assistenza, contattaci", + "Promo Ended": "Promozione terminata", + "Enter the promo code and get": + "Inserisci il codice promozionale e ottieni", + "DISCOUNT": "SCONTO", + "No wallet record found": "Nessun record del portafoglio trovato", + "for": "per", + "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": + "Intaleq è l'app di ride-sharing più sicura che introduce molte funzionalità sia per i capitani che per i passeggeri. Offriamo la commissione più bassa, solo l'8%, garantendo il miglior valore per le tue corse. La nostra app include assicurazione per i migliori capitani, manutenzione regolare delle auto con i migliori ingegneri e servizi su strada per garantire un'esperienza rispettosa e di alta qualità per tutti gli utenti.", + "You can contact us during working hours from 12:00 - 19:00.": + "Puoi contattarci durante l'orario di lavoro dalle 12:00 alle 19:00.", + "Choose a contact option": "Scegli un'opzione di contatto", + "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": + "L'orario di lavoro è dalle 12:00 alle 19:00.\nPuoi inviare un messaggio WhatsApp o un'email.", + "Promo code copied to clipboard!": + "Codice promozionale copiato negli appunti!", + "Copy Code": "Copia codice", + "Your invite code was successfully applied!": + "Il tuo codice di invito è stato applicato con successo!", + "Payment Options": "Opzioni di pagamento", + "wait 1 minute to receive message": + "aspetta 1 minuto per ricevere il messaggio", + "Promo Copied!": "Promozione copiata!", + "You have copied the promo code.": + "Hai copiato il codice promozionale.", + "Valid Until:": "Valido fino:", + "Select Payment Amount": "Seleziona l'importo del pagamento", + "The promotion period has ended.": + "Il periodo della promozione è terminato.", + "Promo Code Accepted": "Codice promozionale accettato", + "Tap on the promo code to copy it!": + "Tocca il codice promozionale per copiarlo!", + "Lowest Price Achieved": "Prezzo più basso raggiunto", + "Cannot apply further discounts.": + "Non è possibile applicare ulteriori sconti.", + "Promo Already Used": "Promozione già utilizzata", + "Invitation Used": "Invito utilizzato", + "You have already used this promo code.": + "Hai già utilizzato questo codice promozionale.", + "Insert Your Promo Code": "Inserisci il tuo codice promozionale", + "Enter promo code here": "Inserisci il codice promozionale qui", + "Please enter a valid promo code": + "Per favore, inserisci un codice promozionale valido", + "Awfar Car": "Auto Awfar", + "Old and affordable, perfect for budget rides.": + "Vecchia e conveniente, perfetta per corse economiche.", + " If you need to reach me, please contact the driver directly at": + " Se hai bisogno di contattarmi, contatta direttamente il conducente al", + "No Car or Driver Found in your area.": + "Nessuna auto o conducente trovato nella tua zona.", + "Please Try anther time ": "Per favore, prova un'altra volta ", + "There no Driver Aplly your order sorry for that ": + "Nessun conducente ha applicato il tuo ordine, scusa per questo ", + "Trip Cancelled": "Viaggio annullato", + "The Driver Will be in your location soon .": + "Il conducente sarà nella tua posizione presto.", + "The distance less than 500 meter.": + "La distanza è inferiore a 500 metri.", + "Promo End !": "Promozione terminata!", + "There is no notification yet": "Non ci sono ancora notifiche", + "Use Touch ID or Face ID to confirm payment": + "Usa Touch ID o Face ID per confermare il pagamento", + "Contact us for any questions on your order.": + "Contattaci per qualsiasi domanda sul tuo ordine.", + "Pyament Cancelled .": "Pagamento annullato.", + "type here": "scrivi qui", + "Scan Driver License": "Scansiona la patente di guida", + "Please put your licence in these border": + "Per favore, metti la tua patente in questi bordi", + "Camera not initialized yet": + "La fotocamera non è ancora inizializzata", + "Take Image": "Scatta immagine", + "AI Page": "Pagina AI", + "Take Picture Of ID Card": "Scatta una foto della carta d'identità", + "Take Picture Of Driver License Card": + "Scatta una foto della patente di guida", + "We are process picture please wait ": + "Stiamo elaborando l'immagine, per favore aspetta ", + "There is no data yet.": "Non ci sono ancora dati.", + "Name :": "Nome:", + "Drivers License Class: ": "Classe patente di guida:", + "Document Number: ": "Numero documento:", + "Address: ": "Indirizzo:", + "Height: ": "Altezza:", + "Expiry Date: ": "Data di scadenza:", + "Date of Birth: ": "Data di nascita:", + "You can\'t continue with us .\nYou should renew Driver license": + "Non puoi continuare con noi.\nDovresti rinnovare la patente di guida", + "Detect Your Face ": "Rileva il tuo volto ", + "Go to next step\nscan Car License.": + "Vai al prossimo passo\nscansiona la patente auto.", + "Name in arabic": "Nome in arabo", + "Drivers License Class": "Classe patente di guida", + "Date of Birth": "Data di nascita", + // "Select date and time of trip": "Seleziona data e ora del viaggio", + "Selected Date": "Data selezionata", + "Select Time": "Seleziona ora", + "Selected Time": "Ora selezionata", + // "OK": "OK", + // "Cancel": "Annulla", + "Selected Date and Time": "Data e ora selezionate", + "Lets check Car license ": "Controlliamo la patente auto ", + "Car": "Auto", + "Plate": "Targa", + "N/A": "N/A", + "Rides": "Corse", + "Age": "Età", + // "Education": "Istruzione", + // "Color": "Colore", + // "Displacement": "Cilindrata", + // "Fuel": "Carburante", + "Selected driver": "Conducente selezionato", + "Lets check License Back Face": "Controlliamo il retro della patente", + "Car License Card": "Carta patente auto", + "No image selected yet": "Nessuna immagine selezionata ancora", + "Made :": "Fatto:", + "model :": "modello:", + "VIN :": "VIN:", + "year :": "anno:", + "ُExpire Date": "Data di scadenza", + "Login Driver": "Accedi come conducente", + "Password must br at least 6 character.": + "La password deve essere di almeno 6 caratteri.", + "if you don\'t have account": "se non hai un account", + "Here recorded trips audio": "Qui è registrato l'audio dei viaggi", + "Register as Driver": "Registrati come conducente", + // "Privacy Notice": "Informativa sulla privacy", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": + "Selezionando \"Accetto\" qui sotto, confermo di aver letto e accettato i Termini di utilizzo e riconosco l'", + ". I am at least 18 years of age.": ". Ho almeno 18 anni.", + "Log Out Page": "Pagina di uscita", + "Log Off": "Esci", + "Register Driver": "Registra conducente", + "Verify Email For Driver": "Verifica email per il conducente", + "Admin DashBoard": "Pannello di amministrazione", + "Your name": "Il tuo nome", + "your ride is applied": "la tua corsa è stata applicata", + "Your password": "La tua password", + "H and": "H e", + "LE": "LE", + "JOD": "JOD", + "m": "m", + "We search nearst Driver to you": + "Cerchiamo il conducente più vicino a te", + "please wait till driver accept your order": + "per favore aspetta che il conducente accetti il tuo ordine", + "No accepted orders? Try raising your trip fee to attract riders.": + "Nessun ordine accettato? Prova ad aumentare la tariffa del viaggio per attirare i conducenti.", + "You should select one": "Dovresti selezionarne uno", + "The driver accept your order for": + "Il conducente accetta il tuo ordine per", + "Increase Fee": "Aumenta la tariffa", + "No, thanks": "No, grazie", + "The driver on your way": "Il conducente è in arrivo", + "Total price from ": "Prezzo totale da ", + "Order Details Intaleq": "Dettagli ordine Velocità", + // "Order Applied": "Ordine applicato", + "accepted your order": "ha accettato il tuo ordine", + // "We regret to inform you that another driver has accepted this order.": "Ci dispiace informarti che un altro conducente ha accettato questo ordine", + "Selected file:": "File selezionato:", + "Your trip cost is": "Il costo del tuo viaggio è", + "this will delete all files from your device": + "questo cancellerà tutti i file dal tuo dispositivo", + " in your": "nel tuo", + "Exclusive offers and discounts always with the Intaleq app": + "Offerte e sconti esclusivi sempre con l'app Intaleq", + // "Please go to Car Driver": "Per favore, vai dal conducente", + " wallet due to a previous trip.": + "portafoglio a causa di un viaggio precedente.", + "Submit Question": "Invia domanda", + "Please enter your Question.": + "Per favore, inserisci la tua domanda.", + "Help Details": "Dettagli aiuto", + "No trip yet found": "Nessun viaggio trovato ancora", + "No Response yet.": "Nessuna risposta ancora.", + " You Earn today is ": " Hai guadagnato oggi ", + " You Have in": " Hai in", + "Total points is ": "Totale punti è ", + "Total Connection Duration:": "Durata totale connessione:", + " H and": " H e", + "Passenger name : ": "Nome passeggero: ", + "Cost Of Trip IS ": "Il costo del viaggio è ", + "Arrival time": "Tempo di arrivo", + "arrival time to reach your point": + "tempo di arrivo per raggiungere il tuo punto", + "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Per i viaggi in scooter e velocità, il prezzo è calcolato dinamicamente. Per i viaggi Comfort, il prezzo è basato su tempo e distanza.", + "Hello this is Driver": "Ciao, sono il conducente", + "Is the Passenger in your Car ?": "Il passeggero è nella tua auto?", + "Please wait for the passenger to enter the car before starting the trip.": + "Per favore, aspetta che il passeggero entri in auto prima di iniziare il viaggio.", + "No ,still Waiting.": "No, sto ancora aspettando.", + "I arrive you": "Sono arrivato da te", + "I Arrive your site": "Sono arrivato sul posto", + "You are not in near to passenger location": + "Non sei vicino alla posizione del passeggero", + "please go to picker location exactly": + "per favore vai esattamente alla posizione di ritiro", + "You Can Cancel Trip And get Cost of Trip From": + "Puoi annullare il viaggio e ottenere il costo del viaggio da", + "Are you sure to cancel?": "Sei sicuro di voler annullare?", + // "Yes": "Sì", + "Insert Emergincy Number": "Inserisci numero di emergenza", + "Best choice for comfort car and flexible route and stops point": + "Scelta migliore per auto comoda e percorso flessibile con punti di sosta", + "Insert": "Inserisci", + "This is for scooter or a motorcycle.": + "Questo è per uno scooter o una moto.", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "Questo viaggio va direttamente dal tuo punto di partenza alla tua destinazione per un prezzo fisso. Il conducente deve seguire il percorso pianificato", + "You can decline a request without any cost": + "Puoi rifiutare una richiesta senza alcun costo", + "Perfect for adventure seekers who want to experience something new and exciting": + "Perfetto per chi cerca avventure e vuole provare qualcosa di nuovo ed emozionante", + "My current location is:": "La mia posizione attuale è:", + "and I have a trip on": "e ho un viaggio su", + "App with Passenger": "App con passeggero", + "You will be pay the cost to driver or we will get it from you on next trip": + "Pagherai il costo al conducente o lo prenderemo da te nel prossimo viaggio", + "Trip has Steps": "Il viaggio ha passaggi", + "Distance from Passenger to destination is ": + "La distanza dal passeggero alla destinazione è ", + "price is": "il prezzo è", + "This ride type does not allow changes to the destination or additional stops": + "Questo tipo di corsa non consente cambiamenti alla destinazione o fermate aggiuntive", + "This price may be changed": "Questo prezzo potrebbe cambiare", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "Nessuna SIM card? Nessun problema! Chiama direttamente il tuo conducente tramite la nostra app. Usiamo tecnologia avanzata per garantire la tua privacy.", + "This ride type allows changes, but the price may increase": + "Questo tipo di corsa consente cambiamenti, ma il prezzo potrebbe aumentare", + "Select one message": "Seleziona un messaggio", + "I'm waiting for you": "Ti sto aspettando", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "Abbiamo notato che la velocità supera i 100 km/h. Per favore, rallenta per la tua sicurezza. Se ti senti in pericolo, puoi condividere i dettagli del tuo viaggio con un contatto o chiamare la polizia usando il pulsante rosso SOS.", + "Warning: Intaleqing detected!": + "Avviso: Rilevato eccesso di velocità!", + "Please help! Contact me as soon as possible.": + "Per favore, aiuto! Contattami il prima possibile.", + "Share Trip Details": "Condividi dettagli del viaggio", + "Car Plate is ": "La targa dell'auto è ", + "VIP Order": "Ordine VIP", + "the 300 points equal 300 L.E for you \nSo go and gain your money": + "300 punti equivalgono a 300 L.E per te\nQuindi vai e guadagna i tuoi soldi", + "the 300 points equal 300 L.E": "300 punti equivalgono a 300 L.E", + "The payment was not approved. Please try again.": + "Il pagamento non è stato approvato. Riprova.", + "Payment Failed": "Pagamento fallito", + "Error": "Errore", + "This is a scheduled notification.": + "Questa è una notifica programmata.", + "An error occurred during the payment process.": + "Si è verificato un errore durante il processo di pagamento.", + "The payment was approved.": "Il pagamento è stato approvato.", + "Payment Successful": "Pagamento riuscito", + "No ride found yet": "Nessuna corsa trovata ancora", + "Accept Order": "Accetta ordine", + // "reject your order.": "rifiuta il tuo ordine.", + "Bottom Bar Example": "Esempio barra inferiore", + "Driver phone": "Telefono conducente", + "Statistics": "Statistiche", + "Origin": "Origine", + "Destination": "Destinazione", + "Driver Name": "Nome conducente", + "Driver Car Plate": "Targa auto conducente", + "Available for rides": "Disponibile per corse", + "Scan Id": "Scansiona ID", + "Camera not initilaized yet": + "La fotocamera non è ancora inizializzata", + "Scan ID MklGoogle": "Scansiona ID MklGoogle", + "Language": "Lingua", + "Jordan": "Giordania", + "USA": "USA", + "Egypt": "Egitto", + "Turkey": "Turchia", + "Saudi Arabia": "Arabia Saudita", + "Qatar": "Qatar", + "Bahrain": "Bahrain", + "Kuwait": "Kuwait", + "But you have a negative salary of": + "Ma hai uno stipendio negativo di", + "Promo Code": "Codice promozionale", + "Your trip distance is": "La distanza del tuo viaggio è", + "Enter promo code": "Inserisci codice promozionale", + "You have promo!": "Hai una promozione!", + "Cost Duration": "Costo durata", + "Duration is": "La durata è", + "Leave": "Lascia", + "Join": "Unisciti", + "Heading your way now. Please be ready.": + "Sto venendo da te. Per favore, sii pronto.", + "Approaching your area. Should be there in 3 minutes.": + "Mi sto avvicinando alla tua zona. Dovrei essere lì in 3 minuti.", + "There's heavy traffic here. Can you suggest an alternate pickup point?": + "C'è molto traffico qui. Puoi suggerire un punto di ritiro alternativo?", + "This ride is already taken by another driver.": + "Questa corsa è già stata presa da un altro conducente.", + "You Should be select reason.": "Dovresti selezionare una ragione.", + " \$": " \$", + "Waiting for Driver ...": "In attesa del conducente ...", + "Latest Recent Trip": "Ultimo viaggio recente", + "from your list": "dalla tua lista", + "Do you want to change Work location": + "Vuoi cambiare la posizione di lavoro?", + "Do you want to change Home location": + "Vuoi cambiare la posizione di casa?", + "We Are Sorry That we dont have cars in your Location!": + "Ci dispiace che non abbiamo auto nella tua posizione!", + "Choose from Map": "Scegli dalla mappa", + "Pick your ride location on the map - Tap to confirm": + "Scegli la posizione della tua corsa sulla mappa - Tocca per confermare", + // "To Work": "Al lavoro", + // "Are you want to go this site": "Vuoi andare su questo sito?", + "Closest & Cheapest": "Più vicino e più economico", + // "Work Saved": "Posizione lavoro salvata", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "Intaleq è l'app di ride-sharing che è sicura, affidabile e accessibile.", + "With Intaleq, you can get a ride to your destination in minutes.": + "Con Intaleq, puoi raggiungere la tua destinazione in pochi minuti.", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "Intaleq si impegna per la sicurezza e tutti i nostri capitani sono accuratamente controllati e verificati.", + // "To Home": "A casa", + // "Home Saved": "Posizione casa salvata", + // "Destination selected": "Destinazione selezionata:", + // "Now select start pick": "Ora seleziona il punto di partenza:", + "Pick from map": "Scegli dalla mappa", + // "Click here point": "Clicca qui", + "No Car in your site. Sorry!": + "Nessuna auto nella tua posizione. Scusa!", + "Nearest Car for you about ": "Auto più vicina per te circa ", + // "N/A": "N/A", + "From :": "Da:", + "Get Details of Trip": "Ottieni dettagli del viaggio", + "If you want add stop click here": + "Se vuoi aggiungere una fermata, clicca qui", + // "Driver": "Conducente", + "Where you want go ": "Dove vuoi andare ", + "My Card": "La mia carta", + "Start Record": "Inizia registrazione", + "Wallet": "Portafoglio", + "History of Trip": "Cronologia viaggio", + "Helping Center": "Centro di aiuto", + "Record saved": "Registrazione salvata", + "Trips recorded": "Viaggi registrati", + "Select Your Country": "Seleziona il tuo paese", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "Per assicurarti di ricevere le informazioni più accurate per la tua posizione, seleziona il tuo paese qui sotto. Questo aiuterà a personalizzare l'esperienza e i contenuti dell'app per il tuo paese.", + "Are you sure to delete recorded files": + "Sei sicuro di voler eliminare i file registrati?", + "Select recorded trip": "Seleziona viaggio registrato", + "Card Number": "Numero carta", + "Hi, Where to ": "Ciao, dove ", + "Pick your destination from Map": + "Scegli la tua destinazione dalla mappa", + "Add Stops": "Aggiungi fermate", + "Get Direction": "Ottieni direzione", + "Add Location": "Aggiungi posizione", + "Switch Rider": "Cambia conducente", + "You will arrive to your destination after timer end.": + "Arriverai a destinazione dopo la fine del timer.", + "You can cancel trip": "Puoi annullare il viaggio", + "The driver waitting you in picked location .": + "Il conducente ti aspetta nel luogo selezionato.", + "10\$ and get 3% discount": "10\$ e ottieni il 3% di sconto", + "20\$ and get 4% discount": "20\$ e ottieni il 4% di sconto", + "40\$ and get 6% discount": "40\$ e ottieni il 6% di sconto", + "100\$ and get 9% discount": "100\$ e ottieni il 9% di sconto", + "Pay with Your": "Paga con il tuo", + "Pay with Credit Card": "Paga con carta di credito", + "Payment History": "Cronologia pagamenti", + "Show Promos to Charge": "Mostra promozioni per ricaricare", + "Point": "Punto", + "How many hours would you like to wait?": + "Quante ore vuoi aspettare?", + "Driver Wallet": "Portafoglio conducente", + "Choose between those Type Cars": "Scegli tra questi tipi di auto", + "hour": "ora", + "Select Waiting Hours": "Seleziona ore di attesa", + "Total Points is": "Totale punti è", + "You will receive a code in SMS message": + "Riceverai un codice in un messaggio SMS", + "Done": "Fatto", + "Total Budget from trips is ": "Budget totale dai viaggi è ", + "Total Amount:": "Importo totale:", + "Total Budget from trips by\nCredit card is ": + "Budget totale dai viaggi con\ncarta di credito è ", + "This amount for all trip I get from Passengers": + "Questo importo per tutti i viaggi che ottengo dai passeggeri", + "Pay from my budget": "Paga dal mio budget", + "This amount for all trip I get from Passengers and Collected For me in": + "Questo importo per tutti i viaggi che ottengo dai passeggeri e raccolti per me in", + "You can buy points from your budget": + "Puoi acquistare punti dal tuo budget", + "insert amount": "inserisci importo", + "You can buy Points to let you online\nby this list below": + "Puoi acquistare punti per rimanere online\ncon questa lista qui sotto", + "Create Wallet to receive your money": + "Crea un portafoglio per ricevere i tuoi soldi", + "Enter your feedback here": "Inserisci il tuo feedback qui", + "Please enter your feedback.": + "Per favore, inserisci il tuo feedback.", + "Feedback": "Feedback", + "Submit ": "Invia ", + "Click here to Show it in Map": + "Clicca qui per mostrarlo sulla mappa", + "Canceled": "Annullato", + "Type your Email": "Scrivi la tua email", + "No I want": "No, voglio", + "Email is": "L'email è", + "Phone Number is": "Il numero di telefono è", + "Date of Birth is": "La data di nascita è", + "Sex is ": "Il sesso è ", + "Car Details": "Dettagli auto", + "VIN is": "Il VIN è", + "Color is ": "Il colore è ", + "Make is ": "La marca è ", + "Model is": "Il modello è", + "Year is": "L'anno è", + "Expiration Date ": "Data di scadenza ", + "Edit Your data": "Modifica i tuoi dati", + "write vin for your car": "scrivi il VIN per la tua auto", + "VIN": "VIN", + "write Color for your car": "scrivi il colore per la tua auto", + "write Make for your car": "scrivi la marca per la tua auto", + // "Make": "Marca", + "write Model for your car": "scrivi il modello per la tua auto", + // "Model": "Modello", + "write Year for your car": "scrivi l'anno per la tua auto", + // "Expiration Date": "Data di scadenza", + "write Expiration Date for your car": + "scrivi la data di scadenza per la tua auto", + "Tariffs": "Tariffe", + "Minimum fare": "Tariffa minima", + "Maximum fare": "Tariffa massima", + "Flag-down fee": "Tariffa di fermata", + "Including Tax": "Inclusa tassa", + "BookingFee": "Tariffa di prenotazione", + "Morning": "Mattina", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "dalle 07:30 alle 10:30 (giovedì, venerdì, sabato, lunedì)", + "Evening": "Sera", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "dalle 12:00 alle 15:00 (giovedì, venerdì, sabato, lunedì)", + "Night": "Notte", + "You have in account": "Hai nel conto", + "Select Country": "Seleziona paese", + "Ride Today : ": "Corsa oggi: ", + "After this period\nYou can\'t cancel!": + "Dopo questo periodo\nNon puoi annullare!", + "from 23:59 till 05:30": "dalle 23:59 alle 05:30", + "Rate Driver": "Valuta conducente", + "Total Cost is ": "Costo totale è ", + "Write note": "Scrivi nota", + "Time to arrive": "Tempo di arrivo", + "Ride Summaries": "Riepiloghi corse", + "Total Cost": "Costo totale", + "Average of Hours of": "Media di ore di", + " is ON for this month": " è acceso per questo mese", + "Days": "Giorni", + "Total Hours on month": "Ore totali nel mese", + "Counts of Hours on days": "Conteggio ore nei giorni", + "OrderId": "ID ordine", + "created time": "tempo di creazione", + "Intaleq Over": "Eccesso di velocità", + "I will slow down": "Rallenterò", + "Map Passenger": "Mappa passeggero", + "Be Slowly": "Sii lento", + "If you want to make Google Map App run directly when you apply order": + "Se vuoi che l'app Google Map si avvii direttamente quando applichi l'ordine", + "You can change the language of the app": + "Puoi cambiare la lingua dell'app", + "Your Budget less than needed": + "Il tuo budget è inferiore al necessario", + "You can change the Country to get all features": + "Puoi cambiare il paese per ottenere tutte le funzionalità", + "Change Country": "Cambia paese" + }, + "zh": { + "Order": "订单", + "OrderVIP": "VIP订单", + "Cancel Trip": "取消行程", + "Passenger Cancel Trip": "乘客取消行程", + "VIP Order": "VIP订单", + "The driver accepted your trip": "司机已接受您的行程", + "message From passenger": "乘客的消息", + "Cancel": "取消", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "行程已取消。行程费用将添加到您的钱包中。", + "token change": "令牌更改", + "face detect": "人脸检测", + "Face Detection Result": "人脸检测结果", + "similar": "相似", + "not similar": "不相似", + "Hi ,I will go now": "嗨,我现在要走了", + "Passenger come to you": "乘客来找您", + "Call Income": "通话收入", + "Call Income from Passenger": "来自乘客的通话收入", + "Criminal Document Required": "需要犯罪记录文件", + "You should have upload it .": "您应该已经上传了。", + "Call End": "通话结束", + "The order has been accepted by another driver.": "订单已被其他司机接受。", + "The order Accepted by another Driver": "订单被其他司机接受", + "We regret to inform you that another driver has accepted this order.": + "我们遗憾地通知您,其他司机已接受此订单。", + "Driver Applied the Ride for You": "司机已为您申请行程", + "Applied": "已申请", + "Hi ,I Arrive your site": "嗨,我到达您的位置了", + "Please go to Car Driver": "请前往司机处", + "Ok I will go now.": "好的,我现在就去。", + "Accepted Ride": "已接受的行程", + "Driver Accepted the Ride for You": "司机已接受您的行程", + "Promo": "促销", + "Show latest promo": "显示最新促销", + "Trip Monitoring": "行程监控", + "Driver Is Going To Passenger": "司机正在前往乘客处", + "Please stay on the picked point.": "请留在指定地点。", + "message From Driver": "司机的消息", + "Trip is Begin": "行程开始", + "Cancel Trip from driver": "司机取消行程", + "We will look for a new driver.\nPlease wait.": "我们将寻找新的司机。\n请稍候。", + "The driver canceled your ride.": "司机取消了您的行程。", + "Driver Finish Trip": "司机完成行程", + "you will pay to Driver": "您将支付给司机", + "Don’t forget your personal belongings.": "请不要忘记您的个人物品。", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "请确保您带上了所有个人物品,并在离开前将任何剩余费用(如适用)添加到您的钱包中。感谢您选择Intaleq应用。", + "Finish Monitor": "结束监控", + "Trip finished": "行程结束", + "Call Income from Driver": "来自司机的通话收入", + "Driver Cancelled Your Trip": "司机取消了您的行程", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "您将支付给司机,您将支付司机的时间费用,请查看您的Intaleq钱包", + "Order Applied": "订单已申请", + //firebase above + +// + "Where to": "去哪里", + "Where are you going?": "您要去哪里?", + "Quick Actions": "快速操作", + "My Wallet": "我的钱包", + "Order History": "订单历史", + "Contact Us": "联系我们", + "Driver": "司机", + "Complaint": "投诉", + "Promos": "促销", + "Recent Places": "最近的地点", + "From": "从", + "WhatsApp Location Extractor": "WhatsApp位置提取器", + "Location Link": "位置链接", + "Paste location link here": "在此处粘贴位置链接", + "Go to this location": "前往此位置", + "Paste WhatsApp location link": "粘贴WhatsApp位置链接", + "Select Order Type": "选择订单类型", + "Choose who this order is for": "选择此订单是为谁", + "I want to order for myself": "我想为自己下单", + "I want to order for someone else": "我想为别人下单", + // "Cancel": "取消", + "Order for someone else": "为别人下单", + "Order for myself": "为自己下单", + "Are you want to go this site": "您想去这个网站吗?", + // "Yes": "是", + "No": "否", + "Are you sure to delete this location?": "您确定要删除此位置吗?", + "deleted": "已删除", + "To Work": "去工作", + "Work Saved": "工作地点已保存", + "To Home": "回家", + "Home Saved": "家已保存", + "Destination selected": "目的地已选择", + "Now select start pick": "现在选择起点", + "OK": "确定", + "Confirm Pick-up Location": "确认接载地点", + "Set Location on Map": "在地图上设置位置", + "Nearest Car: ~": "最近的车:~", + "Nearest Car": "最近的车", + "No cars nearby": "附近没有车", + "Favorite Places": "收藏的地点", + "No favorite places yet!": "还没有收藏的地点!", + "from your favorites": "从您的收藏中", + "Back": "返回", + "Sign in for a seamless experience": "登录以获得无缝体验", + "Sign In with Google": "使用Google登录", + "Sign in with Apple": "使用Apple登录", + "Need assistance? Contact us": "需要帮助?联系我们", + "User not found": "用户未找到", + "Email": "电子邮件", + "Your email address": "您的电子邮件地址", + "Enter a valid email": "请输入有效的电子邮件", + "Password": "密码", + // "Your password": "您的密码", + "Enter your password": "请输入您的密码", + "Submit": "提交", + "Terms of Use & Privacy Notice": "使用条款和隐私声明", + "Terms of Use": "使用条款", + "Privacy Notice": "隐私声明", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the": + "通过在下方选择“我同意”,我确认我已阅读并同意", + "and acknowledge the": "并承认", + ". I am at least 18 years old.": "。我至少18岁。", + "Continue": "继续", + "Enable Location Access": "启用位置访问", + "We need your location to find nearby drivers for pickups and drop-offs.": + "我们需要您的位置以找到附近的司机进行接送。", + "Allow Location Access": "允许位置访问", + "You should restart app to change language": "您应重新启动应用以更改语言", + "Home Page": "主页", + "To change Language the App": "更改应用语言", + "Learn more about our app and mission": "了解更多关于我们的应用和使命", + "Promos For Today": "今日促销", + "Choose your ride": "选择您的行程", + "Your Journey Begins Here": "您的旅程从这里开始", + "Bonus gift": "奖励礼物", + "Pay": "支付", + "Get": "获得", + "Send to Driver Again": "再次发送给司机", + "Driver Name:": "司机姓名:", + "No trip data available": "没有可用的行程数据", + "Car Plate:": "车牌号:", + "remaining": "剩余", + "Order Cancelled": "订单已取消", + "You canceled VIP trip": "您取消了VIP行程", + "Passenger cancelled order": "乘客取消了订单", + "Your trip is scheduled": "您的行程已安排", + "Don't forget your ride!": "别忘了您的行程!", + "Trip updated successfully": "行程更新成功", + "Car Make:": "汽车品牌:", + "Car Model:": "汽车型号:", + "Car Color:": "汽车颜色:", + "Driver Phone:": "司机电话:", + "Pre-booking": "提前预订", + "Waiting VIP": "等待VIP", + "Driver List": "司机列表", + "Confirm Trip": "确认行程", + "Select date and time of trip": "选择行程的日期和时间", + "Date and Time Picker": "日期和时间选择器", + "Trip Status:": "行程状态:", + "pending": "待定", + "accepted": "已接受", + "rejected": "已拒绝", + "Apply": "应用", + "Enter your promo code": "输入您的促销代码", + "Apply Promo Code": "应用促销代码", + "Scheduled Time:": "预定时间:", + "No drivers available": "没有可用的司机", + "No drivers available at the moment. Please try again later.": + "目前没有可用的司机。请稍后再试。", + "you have a negative balance of": "您的余额为负", + "Please try again in a few moments": "请稍后再试", + "Unknown Driver": "未知司机", + "in your": "在您的", + "The driver accepted your order for": "司机已接受您的订单", + "wallet due to a previous trip.": "由于之前的行程,钱包。", + "rides": "行程", + "Add Work": "添加工作", + "The reason is": "原因是", + "User does not have a wallet #1652": "用户没有钱包 #1652", + "Price of trip": "行程价格", + "From:": "从:", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "对于速度和送货行程,价格是动态计算的。对于舒适行程,价格基于时间和距离。", + "Phone Wallet Saved Successfully": "手机钱包保存成功", + "Add wallet phone you use": "添加您使用的钱包手机", + "Update Available": "有更新可用", + "Phone number must be exactly 11 digits long": "电话号码必须正好是11位数字", + "Insert Wallet phone number": "插入钱包电话号码", + "Phone number isn't an Egyptian phone number": "电话号码不是埃及电话号码", + "A new version of the app is available. Please update to the latest version.": + "有新版本的应用可用。请更新到最新版本。", + "We use location to get accurate and nearest passengers for you": + "我们使用位置为您获取准确且最近的乘客", + "This ride is already applied by another driver.": "此行程已被其他司机申请。", + "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": + "我们使用您的精确位置来找到最近的可用司机并提供准确的接送信息。您可以在设置中管理此功能。", + "Where are you, sir?": "先生,您在哪里?", + "I've been trying to reach you but your phone is off.": + "我一直在尝试联系您,但您的电话已关机。", + "Please don't be late": "请不要迟到", + "Please don't be late, I'm waiting for you at the specified location.": + "请不要迟到,我在指定地点等您。", + "My location is correct. You can search for me using the navigation app": + "我的位置是正确的。您可以使用导航应用搜索我。", + "Hello, I'm at the agreed-upon location": "您好,我在约定的地点", + "How much longer will you be?": "您还要多久?", + "Phone number is verified before": "电话号码之前已验证", + "Change Ride": "更改行程", + "You can change the destination by long-pressing any point on the map": + "您可以通过长按地图上的任何点来更改目的地", + "Pick from map destination": "从地图中选择目的地", + "Pick or Tap to confirm": "选择或点击确认", + "Accepted your order": "已接受您的订单", + "Order Accepted": "订单已接受", + "with type": "类型为", + "accepted your order at price": "以价格接受了您的订单", + "you canceled order": "您取消了订单", + "If you want order to another person": "如果您想为其他人下单", + // "Ok I will go now.": "好的,我现在就去。", + // "Hi, I will go now": "嗨,我现在要走了", + "upgrade price": "升级价格", + "Please enter a correct phone": "请输入正确的电话", + "airport": "机场", + "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": + "选择舒适的车,路线灵活且有停靠点。此机场以此价格提供签证入境。", + "You can upgrade price to may driver accept your order": + "您可以升级价格以使司机接受您的订单", + "Change Route": "更改路线", + "No Captain Accepted Your Order": "没有船长接受您的订单", + "We are looking for a captain but the price may increase to let a captain accept": + "我们正在寻找船长,但价格可能会上涨以使船长接受", + "No, I want to cancel this trip": "不,我想取消此行程", + // "Trip Cancelled. The cost of the trip will be added to your wallet.": "行程已取消。行程费用将添加到您的钱包中。", + "Attention": "注意", + "Trip Cancelled. The cost of the trip will be deducted from your wallet.": + "行程已取消。行程费用将从您的钱包中扣除。", + "You will be charged for the cost of the driver coming to your location.": + "您将被收取司机前往您位置的费用。", + "reject your order.": "拒绝您的订单。", + "Order Under Review": "订单正在审核中", + "is reviewing your order. They may need more information or a higher price.": + "正在审核您的订单。他们可能需要更多信息或更高的价格。", + // "The driver canceled your ride.": "司机取消了您的行程。", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "我们还没有找到任何司机。考虑增加您的行程费用以使您的报价对司机更具吸引力。", + "Increase Your Trip Fee (Optional)": "增加您的行程费用(可选)", + "Vibration": "振动", + "Resend code": "重新发送代码", + // "token change": "令牌更改", + "change device": "更改设备", + "Device Change Detected": "检测到设备更改", + "You can only use one device at a time. This device will now be set as your active device.": + "您一次只能使用一个设备。此设备现在将被设置为您的活动设备。", + "Click here point": "点击这里", + "Are you want to change": "您想更改", + "by": "由", + "Enter your complaint here": "在此处输入您的投诉", + "Please enter your complaint.": "请输入您的投诉。", + "Complaint data saved successfully": "投诉数据保存成功", + "Trip Monitor": "行程监控", + "Insert SOS Phone": "插入SOS电话", + "Add SOS Phone": "添加SOS电话", + // "Trip Monitoring": "行程监控", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "亲爱的,\n\n🚀 我刚刚开始了一次激动人心的旅行,我想与您实时分享我的旅程详情和当前位置!请下载Intaleq应用。它将允许您查看我的行程详情和最新位置。\n\n👈 下载链接:\nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\n我期待在冒险中与您保持联系!\n\nIntaleq,", + "Send Intaleq app to him": "发送Intaleq应用给他", + "No passenger found for the given phone number": "未找到给定电话号码的乘客", + "No user found for the given phone number": "未找到给定电话号码的用户", + "This price is": "此价格为", + "Work": "工作", + "Add Home": "添加家", + "Notifications": "通知", + "💳 Pay with Credit Card": "💳 使用信用卡支付", + "⚠️ You need to choose an amount!": "⚠️ 您需要选择一个金额!", + "💰 Pay with Wallet": "💰 使用钱包支付", + "You must restart the app to change the language.": "您必须重新启动应用以更改语言。", + "joined": "已加入", + "Driver joined the channel": "司机已加入频道", + "Driver left the channel": "司机已离开频道", + "Call Page": "通话页面", + // "Call End": "通话结束", + "Call Left": "剩余通话", + r"$ Next as Cash $!": "下一个作为现金!", + "To use Wallet charge it": "要使用钱包,请充值", + "We are searching for the nearest driver to you": "我们正在为您寻找最近的司机", + "Best choice for cities": "城市的最佳选择", + "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": + "Rayeh Gai:往返服务,方便城市间旅行,简单可靠。", + "Rayeh Gai": "Rayeh Gai", + "This trip is for women only": "此行程仅限女性", + "Total budgets on month": "本月总预算", + "You have call from driver": "您有来自司机的电话", + "Comfort": "舒适", + "Intaleq": "速度", + "Driver already has 2 trips within the specified period.": + "司机在指定时间内已经有2次行程。", + "The invitation was sent successfully": "邀请已成功发送", + "Lady": "女士", + "You should select your country": "您应选择您的国家", + "Scooter": "滑板车", + "A trip with a prior reservation, allowing you to choose the best captains and cars.": + "提前预订的行程,允许您选择最好的船长和汽车。", + "Mishwar Vip": "Mishwar Vip", + "The driver waiting you in picked location .": "司机在指定地点等您。", + "About Us": "关于我们", + "You can change the vibration feedback for all buttons": + "您可以更改所有按钮的振动反馈", + "Most Secure Methods": "最安全的方法", + "In-App VOIP Calls": "应用内VOIP通话", + "Recorded Trips for Safety": "为安全记录的行程", + "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": + "\n我们还优先考虑 affordability,提供有竞争力的价格以使您的行程更易获得。", + "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": + "Intaleq是一款专为您的安全和 affordability 设计的拼车应用。我们将您与您所在地区的可靠司机联系起来,确保便捷且无压力的旅行体验。\n\n以下是一些使我们与众不同的关键功能:", + "Sign In by Apple": "使用Apple登录", + "Sign In by Google": "使用Google登录", + "How do I request a ride?": "如何请求行程?", + "Step-by-step instructions on how to request a ride through the Intaleq app.": + "通过Intaleq应用请求行程的逐步说明。", + "What types of vehicles are available?": "有哪些类型的车辆可用?", + "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": + "Intaleq提供多种车辆选项以满足您的需求,包括经济型、舒适型和豪华型。选择最适合您预算和乘客数量的选项。", + "How can I pay for my ride?": "如何支付我的行程?", + "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": + "Intaleq提供多种支付方式以方便您。在行程确认期间选择现金支付或信用卡/借记卡支付。", + "Can I cancel my ride?": "我可以取消我的行程吗?", + "Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.": + "是的,您可以在某些条件下取消行程(例如,在分配司机之前)。有关详细信息,请参阅Intaleq取消政策。", + "Driver Registration & Requirements": "司机注册和要求", + "How can I register as a driver?": "如何注册为司机?", + "What are the requirements to become a driver?": "成为司机的要求是什么?", + "Visit our website or contact Intaleq support for information on driver registration and requirements.": + "访问我们的网站或联系Intaleq支持以获取有关司机注册和要求的信息。", + "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": + "Intaleq提供应用内聊天功能,允许您在行程期间与司机或乘客沟通。", + "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": + "Intaleq优先考虑您的安全。我们提供司机验证、应用内行程跟踪和紧急联系人选项等功能。", + "Frequently Questions": "常见问题", + "User does not exist.": "用户不存在。", + "We need your phone number to contact you and to help you.": + "我们需要您的电话号码以联系您并帮助您。", + "You will recieve code in sms message": "您将在短信中收到代码", + "Please enter": "请输入", + "We need your phone number to contact you and to help you receive orders.": + "我们需要您的电话号码以联系您并帮助您接收订单。", + "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": + "您的犯罪记录上的全名与驾驶执照上的不匹配。请验证并提供正确的文件。", + "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": + "您的驾驶执照上的国家号码与身份证件上的不匹配。请验证并提供正确的文件。", + "Capture an Image of Your Criminal Record": "拍摄您的犯罪记录图像", + "IssueDate": "签发日期", + "Capture an Image of Your car license front ": "拍摄您的汽车驾照正面图像", + "Capture an Image of Your ID Document front": "拍摄您的身份证件正面图像", + "NationalID": "国家ID", + "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": + "您可以与朋友分享Intaleq应用,并通过他们使用您的代码乘坐行程赚取奖励", + "FullName": "全名", + "No invitation found yet!": "尚未找到邀请!", + "InspectionResult": "检查结果", + "Criminal Record": "犯罪记录", + "Share App": "分享应用", + "The email or phone number is already registered.": "电子邮件或电话号码已注册。", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "要在Intaleq应用上成为拼车司机,您需要上传您的驾驶执照、身份证件和汽车注册文件。我们的AI系统将在2-3分钟内即时审查并验证其真实性。如果您的文件获得批准,您可以开始在Intaleq应用上作为司机工作。请注意,提交欺诈性文件是严重违法行为,可能导致立即终止和法律后果。", + "Documents check": "文件检查", + "Driver's License": "驾驶执照", + "for your first registration!": "用于您的首次注册!", + "Get it Now!": "立即获取!", + "before": "之前", + "Code not approved": "代码未批准", + "3000 LE": "3000 LE", + "Do you have an invitation code from another driver?": + "您有其他司机的邀请代码吗?", + "Paste the code here": "在此处粘贴代码", + "No, I don't have a code": "不,我没有代码", + "Code approved": "代码已批准", + "Install our app:": "安装我们的应用:", + "Invite another driver and both get a gift after he completes 100 trips!": + "邀请另一位司机,并在他完成100次行程后双方都获得礼物!", + "Invite": "邀请", + "Are you sure?": "您确定吗?", + "This will delete all recorded files from your device.": + "这将删除您设备上的所有记录文件。", + "Select a file": "选择一个文件", + "Select a File": "选择一个文件", + "Delete": "删除", + "attach audio of complain": "附加投诉音频", + "Phone Number Check": "电话号码检查", + "Drivers received orders": "司机已收到订单", + "No audio files recorded.": "没有录制的音频文件。", + "This is for delivery or a motorcycle.": "这是用于送货或摩托车。", + // "We will look for a new driver.\nPlease wait.": "我们将寻找新的司机。\n请稍候。", + "Intaleq Reminder": "Intaleq提醒", + "It's time to check the Intaleq app!": "是时候检查Intaleq应用了!", + "you must insert token code": "您必须插入令牌代码", + "Something went wrong. Please try again.": "出了点问题。请再试一次。", + "Trip Details": "行程详情", + "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": + "上下文未提供任何投诉详情,因此我无法提供此问题的解决方案。请提供必要的信息,我将很乐意帮助您。", + "Submit Your Complaint": "提交您的投诉", + "Date": "日期", + "Price": "价格", + "Status": "状态", + "Choose from contact": "从联系人中选择", + "attach correct audio": "附加正确的音频", + "be sure": "确保", + "Audio uploaded successfully.": "音频上传成功。", + "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": + "非常适合寻求最新车型并希望自由选择任何路线的乘客", + "Share this code with your friends and earn rewards when they use it!": + "与朋友分享此代码,并在他们使用时赚取奖励!", + "Enter phone": "输入电话", + "You deserve the gift": "您应得的礼物", + "complete, you can claim your gift": "完成,您可以领取您的礼物", + "When": "何时", + "Enter driver's phone": "输入司机的电话", + "Send Invite": "发送邀请", + "Show Invitations": "显示邀请", + "License Type": "执照类型", + "National Number": "国家号码", + "Name (Arabic)": "姓名(阿拉伯语)", + "Name (English)": "姓名(英语)", + "Address": "地址", + "Issue Date": "签发日期", + "Expiry Date": "到期日期", + "License Categories": "执照类别", + "driver_license": "驾驶执照", + "Capture an Image of Your Driver License": "拍摄您的驾驶执照图像", + "ID Documents Back": "身份证件背面", + "National ID": "国家ID", + "Occupation": "职业", + "Gender": "性别", + "Religion": "宗教", + "Marital Status": "婚姻状况", + "Full Name (Marital)": "全名(婚姻)", + "Expiration Date": "到期日期", + "Capture an Image of Your ID Document Back": "拍摄您的身份证件背面图像", + "ID Documents Front": "身份证件正面", + "First Name": "名字", + "CardID": "卡ID", + "Vehicle Details Front": "车辆详情正面", + "Plate Number": "车牌号", + "Owner Name": "车主姓名", + "Vehicle Details Back": "车辆详情背面", + "Make": "品牌", + "Model": "型号", + "Year": "年份", + "Chassis": "底盘", + "Color": "颜色", + "Displacement": "排量", + "Fuel": "燃料", + "Tax Expiry Date": "税务到期日期", + "Inspection Date": "检查日期", + "Capture an Image of Your car license back": "拍摄您的汽车驾照背面图像", + "Capture an Image of Your Driver’s License": "拍摄您的驾驶执照图像", + "Sign in with Google for easier email and name entry": + "使用Google登录以便更轻松地输入电子邮件和姓名", + "You will choose allow all the time to be ready receive orders": + "您将选择始终允许以准备接收订单", + "Welcome to Intaleq!": "欢迎来到Intaleq!", + "Get to your destination quickly and easily.": "快速轻松地到达您的目的地。", + "Enjoy a safe and comfortable ride.": "享受安全舒适的行程。", + "Choose Language": "选择语言", + "Login": "登录", + "Pay with Wallet": "使用钱包支付", + "Invalid MPIN": "无效的MPIN", + "Invalid OTP": "无效的OTP", + // "Driver Accepted the Ride for You": "司机已接受您的行程", + "Enter your email address": "输入您的电子邮件地址", + "Please enter Your Email.": "请输入您的电子邮件。", + "Enter your phone number": "输入您的电话号码", + "Please enter your phone number.": "请输入您的电话号码。", + "Please enter Your Password.": "请输入您的密码。", + "if you dont have account": "如果您没有账户", + "Register": "注册", + "Accept Ride's Terms & Review Privacy Notice": "接受行程条款并查看隐私声明", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "通过在下方选择“我同意”,我确认我已阅读并同意使用条款并承认隐私声明。我至少18岁。", + "I Agree": "我同意", + // "Finish Monitor": "结束监控", + "First name": "名字", + "Enter your first name": "输入您的名字", + "Please enter your first name.": "请输入您的名字。", + "Last name": "姓氏", + "Enter your last name": "输入您的姓氏", + "Please enter your last name.": "请输入您的姓氏。", + "City": "城市", + "Please enter your City.": "请输入您的城市。", + "Male": "男性", + "Female": "女性", + "Verify Email": "验证电子邮件", + "We sent 5 digit to your Email provided": "我们向您提供的电子邮件发送了5位数字", + "5 digit": "5位数字", + "Send Verification Code": "发送验证码", + "Your Ride Duration is ": "您的行程时长为 ", + "You will be thier in": "您将在", + "You trip distance is": "您的行程距离为", + "Fee is": "费用为", + "From : ": "从:", + "To : ": "到:", + "Add Promo": "添加促销", + "Confirm Selection": "确认选择", + "distance is": "距离为", + "Intaleq LLC": "Intaleq有限责任公司", + "Egypt's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "埃及的先锋拼车服务,由阿拉伯和本地业主自豪地开发。我们优先考虑靠近您——无论是我们宝贵的乘客还是我们敬业的船长。", + "Why Choose Intaleq?": "为什么选择Intaleq?", + "Closest to You": "离您最近", + "We connect you with the nearest drivers for faster pickups and quicker journeys.": + "我们将您与最近的司机联系起来,以便更快地接送和更快的旅程。", + "Uncompromising Security": "不妥协的安全", + "Lady Captains Available": "女船长可用", + "Recorded Trips (Voice & AI Analysis)": "记录的行程(语音和AI分析)", + "Fastest Complaint Response": "最快的投诉响应", + "Our dedicated customer service team ensures swift resolution of any issues.": + "我们专门的客户服务团队确保快速解决任何问题。", + "Affordable for Everyone": "人人可负担", + "Frequently Asked Questions": "常见问题", + "Getting Started": "入门", + "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": + "只需打开Intaleq应用,输入您的目的地,然后点击“请求行程”。应用将为您联系附近的司机。", + "Vehicle Options": "车辆选项", + "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": + "Intaleq提供多种选项,包括经济型、舒适型和豪华型,以满足您的需求和预算。", + "Payments": "支付", + "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": + "您可以使用现金或信用卡/借记卡支付您的行程。您可以在确认行程前选择您喜欢的支付方式。", + "Ride Management": "行程管理", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "是的,您可以取消您的行程,但请注意,根据您取消的时间,可能会收取取消费用。", + "For Drivers": "对于司机", + // "Driver Registration & Requirements": "司机注册和要求", + "Driver Registration": "司机注册", + "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": + "要注册为司机或了解要求,请访问我们的网站或直接联系Intaleq支持。", + "Visit Website/Contact Support": "访问网站/联系支持", + "Close": "关闭", + "We are searching for the nearest driver": "我们正在寻找最近的司机", + "Communication": "沟通", + "How do I communicate with the other party (passenger/driver)?": + "我如何与另一方(乘客/司机)沟通?", + "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": + "一旦行程确认,您可以通过应用内聊天功能与司机或乘客沟通。", + "Safety & Security": "安全与保障", + "What safety measures does Intaleq offer?": "Intaleq提供哪些安全措施?", + "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": + "Intaleq提供各种安全功能,包括司机验证、应用内行程跟踪、紧急联系人选项以及与可信联系人共享行程状态的能力。", + "Enjoy competitive prices across all trip options, making travel accessible.": + "享受所有行程选项的竞争价格,使旅行更易获得。", + "Variety of Trip Choices": "多种行程选择", + "Choose the trip option that perfectly suits your needs and preferences.": + "选择最适合您需求和偏好的行程选项。", + "Your Choice, Our Priority": "您的选择,我们的优先", + "Because we are near, you have the flexibility to choose the ride that works best for you.": + "因为我们离您近,您可以灵活选择最适合您的行程。", + "duration is": "时长为", + "Setting": "设置", + "Find answers to common questions": "找到常见问题的答案", + "I don't need a ride anymore": "我不再需要行程", + "I was just trying the application": "我只是在试用应用", + "No driver accepted my request": "没有司机接受我的请求", + "I added the wrong pick-up/drop-off location": "我添加了错误的接载/下车地点", + "I don't have a reason": "我没有理由", + "Other": "其他", + "Can we know why you want to cancel Ride ?": "我们可以知道您为什么想取消行程吗?", + "Cancel Ride": "取消行程", + "Add Payment Method": "添加支付方式", + "Your Wallet balance is ": "您的钱包余额为 ", + "Ride Wallet": "行程钱包", + "Payment Method": "支付方式", + "Type here Place": "在此处输入地点", + "Are You sure to ride to": "您确定要去", + "Confirm": "确认", + // "Back": "返回", + "You are Delete": "您正在删除", + "Deleted": "已删除", + "You Dont Have Any places yet !": "您还没有任何地点!", + // "Favorite Places": "收藏的地点", + "From : Current Location": "从:当前位置", + // "Where to": "去哪里", + "Profile": "个人资料", + "Home": "家", + "My Cared": "我的关心", + "Add Card": "添加卡片", + "Add Credit Card": "添加信用卡", + "Please enter the cardholder name": "请输入持卡人姓名", + "Please enter the expiry date": "请输入到期日期", + "Please enter the CVV code": "请输入CVV代码", + "Go To Favorite Places": "前往收藏的地点", + "Go to this Target": "前往此目标", + "My Profile": "我的个人资料", + "Sign Out": "登出", + "Are you want to go to this site": "您想去这个网站吗", + "MyLocation": "我的位置", + "my location": "我的位置", + "Target": "目标", + "Update": "更新", + "You Should choose rate figure": "您应选择评分", + "Login Captin": "登录船长", + "Register Captin": "注册船长", + "Send Verfication Code": "发送验证码", + "KM": "公里", + "End Ride": "结束行程", + "Minute": "分钟", + "Go to passenger Location now": "现在前往乘客位置", + "Duration of the Ride is ": "行程时长为 ", + "Distance of the Ride is ": "行程距离为 ", + "Name of the Passenger is ": "乘客姓名为 ", + "Hello this is Captain": "您好,我是船长", + "Start the Ride": "开始行程", + "Please Wait If passenger want To Cancel!": "如果乘客想取消,请稍候!", + "Total Duration:": "总时长:", + "Active Duration:": "活动时长:", + "Waiting for Captin ...": "等待船长...", + "Age is ": "年龄为 ", + "Rating is ": "评分为 ", + " to arrive you.": "到达您。", + "Tariff": "关税", + "Settings": "设置", + "Feed Back": "反馈", + "Please enter a valid 16-digit card number": "请输入有效的16位卡号", + "Add Phone": "添加电话", + "Please enter a phone number": "请输入电话号码", + "You dont Add Emergency Phone Yet!": "您还没有添加紧急电话!", + "You will arrive to your destination after ": "您将在之后到达目的地", + "You can cancel Ride now": "您现在可以取消行程", + "You Can cancel Ride After Captain did not come in the time": + "如果船长没有按时到达,您可以取消行程", + "If you in Car Now. Press Start The Ride": "如果您现在在车里。按下开始行程", + "You Dont Have Any amount in": "您没有任何金额在", + "Wallet!": "钱包!", + "You Have": "您有", + "Save Credit Card": "保存信用卡", + "Show Promos": "显示促销", + "10 and get 4% discount": "10并获得4%折扣", + "20 and get 6% discount": "20并获得6%折扣", + "40 and get 8% discount": "40并获得8%折扣", + "100 and get 11% discount": "100并获得11%折扣", + "Pay with Your PayPal": "使用您的PayPal支付", + "You will choose one of above !": "您将选择上述之一!", + "Delete My Account": "删除我的账户", + "Edit Profile": "编辑个人资料", + "Name": "姓名", + "Update Gender": "更新性别", + "Education": "教育", + "Update Education": "更新教育", + "Employment Type": "就业类型", + "SOS Phone": "SOS电话", + "High School Diploma": "高中文凭", + "Associate Degree": "副学士学位", + "Bachelor's Degree": "学士学位", + "Master's Degree": "硕士学位", + "Doctoral Degree": "博士学位", + "Copy this Promo to use it in your Ride!": "复制此促销以在您的行程中使用!", + "To change some Settings": "更改一些设置", + "Order Request Page": "订单请求页面", + "Rouats of Trip": "行程路线", + "Passenger Name is ": "乘客姓名为 ", + "Total From Passenger is ": "乘客总金额为 ", + "Duration To Passenger is ": "到达乘客的时长为 ", + "Distance To Passenger is ": "到达乘客的距离为 ", + "Total For You is ": "您的总金额为 ", + "Distance is ": "距离为 ", + " KM": " 公里", + "Duration of Trip is ": "行程时长为 ", + " Minutes": " 分钟", + "Apply Order": "应用订单", + "Refuse Order": "拒绝订单", + "Rate Captain": "评分船长", + "Enter your Note": "输入您的备注", + "Type something...": "输入一些内容...", + "Submit rating": "提交评分", + "Rate Passenger": "评分乘客", + "Ride Summary": "行程摘要", + "welcome_message": "欢迎来到Intaleq!", + "app_description": "Intaleq是一款可靠、安全且易于使用的拼车应用。", + "get_to_destination": "快速轻松地到达您的目的地。", + "get_a_ride": "使用Intaleq,您可以在几分钟内到达目的地。", + "safe_and_comfortable": "享受安全舒适的行程。", + "committed_to_safety": "Intaleq致力于安全,我们所有的船长都经过仔细筛选和背景调查。", + // "Driver Applied the Ride for You": "司机已为您申请行程", + // "Show latest promo": "显示最新促销", + // "Cancel Trip": "取消行程", + // "Passenger Cancel Trip": "乘客取消行程", + // "Accepted Ride": "已接受的行程", + "your ride is Accepted": "您的行程已被接受", + // "Trip is Begin": "行程开始", + "Driver is waiting at pickup.": "司机在接载点等待。", + "Driver is on the way": "司机正在路上", + "Contact Options": "联系选项", + "Send a custom message": "发送自定义消息", + "Type your message": "输入您的消息", + // "Hi ,I will go now": "嗨,我现在要走了", + // "Passenger come to you": "乘客来找您", + // "Hi ,I Arrive your site": "嗨,我到达您的位置了", + // "Driver Finish Trip": "司机完成行程", + // "you will pay to Driver": "您将支付给司机", + // "Driver Cancel Your Trip": "司机取消了您的行程", + // "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": "您将支付给司机,您将支付司机的时间费用,请查看您的Intaleq钱包", + // "I will go now": "我现在要走了", + "You Have Tips": "您有小费", + " tips\nTotal is": " 小费\n总计", + // "No,I want": "不,我想", + "Your fee is ": "您的费用为 ", + // "Do you want to pay Tips for this Driver": "您想给这位司机小费吗?", + "Tip is ": "小费为 ", + "Are you want to wait drivers to accept your order": "您想等待司机接受您的订单吗?", + "This price is fixed even if the route changes for the driver.": + "即使司机的路线改变,此价格也是固定的。", + "The price may increase if the route changes.": "如果路线改变,价格可能会上涨。", + "The captain is responsible for the route.": "船长负责路线。", + "We are search for nearst Driver": "我们正在寻找最近的司机", + "Your order is being prepared": "您的订单正在准备中", + "The drivers are reviewing your request": "司机们正在审查您的请求", + "Your order sent to drivers": "您的订单已发送给司机", + "You can call or record audio of this trip": "您可以打电话或录制此行程的音频", + "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": + "行程已开始!随时联系紧急号码,分享您的行程,或激活语音录制以记录旅程", + // "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": "请确保您带上了所有个人物品,并在离开前将任何剩余费用(如适用)添加到您的钱包中。感谢您选择Intaleq应用。", + // "Don’t forget your personal belongings.": "请不要忘记您的个人物品。", + "Camera Access Denied.": "相机访问被拒绝。", + "Open Settings": "打开设置", + "GPS Required Allow !.": "需要GPS允许!", + "Your Account is Deleted": "您的账户已被删除", + "Are you sure to delete your account?": "您确定要删除您的账户吗?", + "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": + "您的数据将在2周后删除\n并且您将无法在1个月后返回使用应用", + "Enter Your First Name": "输入您的名字", + "Are you Sure to LogOut?": "您确定要登出吗?", + "Email Wrong": "电子邮件错误", + "Email you inserted is Wrong.": "您输入的电子邮件错误。", + "You have finished all times ": "您已完成所有时间", + "if you want help you can email us here": "如果您需要帮助,可以在这里给我们发电子邮件", + "Thanks": "谢谢", + "Email Us": "给我们发电子邮件", + "I cant register in your app in face detection ": "我无法在您的应用中进行人脸检测注册", + "Hi": "嗨", + "No face detected": "未检测到人脸", + "Image detecting result is ": "图像检测结果为 ", + "from 3 times Take Attention": "从3次开始注意", + "Be sure for take accurate images please\nYou have": "请确保拍摄准确的图像\n您有", + "image verified": "图像已验证", + "Next": "下一步", + "There is no help Question here": "这里没有帮助问题", + "You dont have Points": "您没有积分", + "You Are Stopped For this Day !": "您今天被停止了!", + "You must be charge your Account": "您必须为您的账户充值", + "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": + "您今天拒绝了3次行程,这是原因\n明天见!", + "Recharge my Account": "为我的账户充值", + "Ok , See you Tomorrow": "好的,明天见", + "You are Stopped": "您被停止了", + "Connected": "已连接", + "Not Connected": "未连接", + "Your are far from passenger location": "您离乘客位置很远", + "go to your passenger location before\nPassenger cancel trip": + "在乘客取消行程之前前往乘客位置", + "You will get cost of your work for this trip": "您将获得此行程的工作费用", + " in your wallet": "在您的钱包中", + "you gain": "您获得", + "Order Cancelled by Passenger": "乘客取消订单", + "Success": "成功", + "Feedback data saved successfully": "反馈数据保存成功", + "No Promo for today .": "今天没有促销。", + "Select your destination": "选择您的目的地", + "Search for your Start point": "搜索您的起点", + "Search for waypoint": "搜索途径点", + "Current Location": "当前位置", + "Add Location 1": "添加位置1", + "You must Verify email !.": "您必须验证电子邮件!", + "Cropper": "裁剪", + "Saved Sucssefully": "保存成功", + "Select Date": "选择日期", + "Birth Date": "出生日期", + "Ok": "确定", + "the 500 points equal 30 JOD": "500点等于30 JOD", + "the 500 points equal 30 JOD for you \nSo go and gain your money": + "500点等于30 JOD\n所以去赚取您的钱", + "token updated": "令牌已更新", + "Add Location 2": "添加位置2", + "Add Location 3": "添加位置3", + "Add Location 4": "添加位置4", + "Waiting for your location": "等待您的位置", + "Search for your destination": "搜索您的目的地", + "Hi! This is": "嗨!这是", + " I am using": " 我正在使用", + " to ride with": " 与", + " as the driver.": " 作为司机。", + "is driving a ": "正在驾驶一辆 ", + " with license plate ": " 车牌号为 ", + " I am currently located at ": " 我目前位于 ", + "Please go to Car now ": "请现在去车里 ", + "You will receive a code in WhatsApp Messenger": + "您将在WhatsApp Messenger中收到代码", + "If you need assistance, contact us": "如果您需要帮助,请联系我们", + "Promo Ended": "促销结束", + "Enter the promo code and get": "输入促销代码并获得", + "DISCOUNT": "折扣", + "No wallet record found": "未找到钱包记录", + "for": "为", + "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": + "Intaleq是最安全的拼车应用,为船长和乘客引入了许多功能。我们提供最低的佣金率,仅为8%,确保您获得最佳的行程价值。我们的应用包括为最佳船长提供的保险,由顶级工程师定期维护汽车,以及道路服务,以确保所有用户的尊重和高质量体验。", + "You can contact us during working hours from 12:00 - 19:00.": + "您可以在工作时间内联系我们,时间为12:00 - 19:00。", + "Choose a contact option": "选择联系选项", + "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": + "工作时间为12:00 - 19:00。\n您可以发送WhatsApp消息或电子邮件。", + "Promo code copied to clipboard!": "促销代码已复制到剪贴板!", + "Copy Code": "复制代码", + "Your invite code was successfully applied!": "您的邀请代码已成功应用!", + "Payment Options": "支付选项", + "wait 1 minute to receive message": "等待1分钟以接收消息", + "Promo Copied!": "促销已复制!", + "You have copied the promo code.": "您已复制促销代码。", + "Valid Until:": "有效期至:", + "Select Payment Amount": "选择支付金额", + "The promotion period has ended.": "促销期已结束。", + "Promo Code Accepted": "促销代码已接受", + "Tap on the promo code to copy it!": "点击促销代码以复制它!", + "Lowest Price Achieved": "达到最低价格", + "Cannot apply further discounts.": "无法应用更多折扣。", + "Promo Already Used": "促销已使用", + "Invitation Used": "邀请已使用", + "You have already used this promo code.": "您已经使用过此促销代码。", + "Insert Your Promo Code": "插入您的促销代码", + "Enter promo code here": "在此处输入促销代码", + "Please enter a valid promo code": "请输入有效的促销代码", + "Awfar Car": "Awfar汽车", + "Old and affordable, perfect for budget rides.": "老旧且价格实惠,非常适合预算行程。", + " If you need to reach me, please contact the driver directly at": + " 如果您需要联系我,请直接联系司机", + "No Car or Driver Found in your area.": "在您所在地区未找到汽车或司机。", + "Please Try anther time ": "请再试一次 ", + "There no Driver Aplly your order sorry for that ": + "没有司机申请您的订单,对此表示抱歉 ", + "Trip Cancelled": "行程已取消", + "The Driver Will be in your location soon .": "司机将很快到达您的位置。", + "The distance less than 500 meter.": "距离小于500米。", + "Promo End !": "促销结束!", + "There is no notification yet": "还没有通知", + "Use Touch ID or Face ID to confirm payment": + "使用Touch ID或Face ID确认支付", + "Contact us for any questions on your order.": "如有任何订单问题,请联系我们。", + "Pyament Cancelled .": "支付已取消。", + "type here": "在此处输入", + "Scan Driver License": "扫描驾驶执照", + "Please put your licence in these border": "请将您的执照放在这些边框内", + "Camera not initialized yet": "相机尚未初始化", + "Take Image": "拍摄图像", + "AI Page": "AI页面", + "Take Picture Of ID Card": "拍摄身份证照片", + "Take Picture Of Driver License Card": "拍摄驾驶执照照片", + "We are process picture please wait ": "我们正在处理图片,请稍候 ", + "There is no data yet.": "还没有数据。", + "Name :": "姓名:", + "Drivers License Class: ": "驾驶执照类别:", + "Document Number: ": "文件编号:", + "Address: ": "地址:", + "Height: ": "身高:", + "Expiry Date: ": "到期日期:", + "Date of Birth: ": "出生日期:", + "You can\'t continue with us .\nYou should renew Driver license": + "您无法继续与我们合作。\n您应更新驾驶执照", + "Detect Your Face ": "检测您的脸 ", + "Go to next step\nscan Car License.": "进入下一步\n扫描汽车执照。", + "Name in arabic": "阿拉伯语姓名", + "Drivers License Class": "驾驶执照类别", + "Date of Birth": "出生日期", + // "Select date and time of trip": "选择行程的日期和时间", + "Selected Date": "选择的日期", + "Select Time": "选择时间", + "Selected Time": "选择的时间", + // "OK": "确定", + // "Cancel": "取消", + "Selected Date and Time": "选择的日期和时间", + "Lets check Car license ": "让我们检查汽车执照 ", + "Car": "汽车", + "Plate": "车牌", + "N/A": "不适用", + "Rides": "行程", + "Age": "年龄", + // "Education": "教育", + // "Color": "颜色", + // "Displacement": "排量", + // "Fuel": "燃料", + "Selected driver": "选择的司机", + "Lets check License Back Face": "让我们检查执照背面", + "Car License Card": "汽车执照卡", + "No image selected yet": "尚未选择图像", + "Made :": "制造:", + "model :": "型号:", + "VIN :": "VIN:", + "year :": "年份:", + "ُExpire Date": "到期日期", + "Login Driver": "登录司机", + "Password must br at least 6 character.": "密码必须至少6个字符。", + "if you don\'t have account": "如果您没有账户", + "Here recorded trips audio": "这里记录了行程音频", + "Register as Driver": "注册为司机", + // "Privacy Notice": "隐私声明", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": + "通过在下方选择“我同意”,我确认我已阅读并同意使用条款并承认", + ". I am at least 18 years of age.": "。我至少18岁。", + "Log Out Page": "登出页面", + "Log Off": "登出", + "Register Driver": "注册司机", + "Verify Email For Driver": "为司机验证电子邮件", + "Admin DashBoard": "管理员仪表板", + "Your name": "您的姓名", + "your ride is applied": "您的行程已申请", + "Your password": "您的密码", + "H and": "H 和", + "LE": "LE", + "JOD": "JOD", + "m": "米", + "We search nearst Driver to you": "我们为您寻找最近的司机", + "please wait till driver accept your order": "请等待司机接受您的订单", + "No accepted orders? Try raising your trip fee to attract riders.": + "没有接受的订单?尝试提高您的行程费用以吸引司机。", + "You should select one": "您应选择一个", + "The driver accept your order for": "司机接受了您的订单", + "Increase Fee": "增加费用", + "No, thanks": "不,谢谢", + "The driver on your way": "司机正在路上", + "Total price from ": "总价格从 ", + "Order Details Intaleq": "订单详情速度", + // "Order Applied": "订单已申请", + "accepted your order": "接受了您的订单", + // "We regret to inform you that another driver has accepted this order.": "我们遗憾地通知您,其他司机已接受此订单", + "Selected file:": "选择的文件:", + "Your trip cost is": "您的行程费用为", + "this will delete all files from your device": "这将删除您设备上的所有文件", + " in your": "在您的", + "Exclusive offers and discounts always with the Intaleq app": + "独家优惠和折扣始终与Intaleq应用相伴", + // "Please go to Car Driver": "请前往司机处", + " wallet due to a previous trip.": "由于之前的行程,钱包。", + "Submit Question": "提交问题", + "Please enter your Question.": "请输入您的问题。", + "Help Details": "帮助详情", + "No trip yet found": "尚未找到行程", + "No Response yet.": "尚未有回应。", + " You Earn today is ": " 您今天赚取的是 ", + " You Have in": " 您有在", + "Total points is ": "总积分为 ", + "Total Connection Duration:": "总连接时长:", + " H and": " H 和", + "Passenger name : ": "乘客姓名: ", + "Cost Of Trip IS ": "行程费用为 ", + "Arrival time": "到达时间", + "arrival time to reach your point": "到达您地点的到达时间", + "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "对于速度和滑板车行程,价格是动态计算的。对于舒适行程,价格基于时间和距离。", + "Hello this is Driver": "您好,这是司机", + "Is the Passenger in your Car ?": "乘客在您的车里吗?", + "Please wait for the passenger to enter the car before starting the trip.": + "请等待乘客进入车内后再开始行程。", + "No ,still Waiting.": "不,仍在等待。", + "I arrive you": "我到达您", + "I Arrive your site": "我到达您的位置", + "You are not in near to passenger location": "您离乘客位置不远", + "please go to picker location exactly": "请准确前往接载地点", + "You Can Cancel Trip And get Cost of Trip From": "您可以取消行程并从以下获取行程费用", + "Are you sure to cancel?": "您确定要取消吗?", + // "Yes": "是", + "Insert Emergincy Number": "插入紧急号码", + "Best choice for comfort car and flexible route and stops point": + "舒适汽车和灵活路线及停靠点的最佳选择", + "Insert": "插入", + "This is for scooter or a motorcycle.": "这是用于滑板车或摩托车。", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "此行程直接从您的起点到目的地,价格固定。司机必须遵循计划的路线", + "You can decline a request without any cost": "您可以免费拒绝请求", + "Perfect for adventure seekers who want to experience something new and exciting": + "非常适合想要体验新鲜刺激的冒险者", + "My current location is:": "我的当前位置是:", + "and I have a trip on": "我有一个行程在", + "App with Passenger": "与乘客的应用", + "You will be pay the cost to driver or we will get it from you on next trip": + "您将支付给司机费用,或者我们将在下次行程中从您那里收取", + "Trip has Steps": "行程有步骤", + "Distance from Passenger to destination is ": "乘客到目的地的距离为 ", + "price is": "价格为", + "This ride type does not allow changes to the destination or additional stops": + "此行程类型不允许更改目的地或额外停靠点", + "This price may be changed": "此价格可能会更改", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "没有SIM卡?没问题!通过我们的应用直接呼叫司机。我们使用先进技术确保您的隐私。", + "This ride type allows changes, but the price may increase": + "此行程类型允许更改,但价格可能会上涨", + "Select one message": "选择一个消息", + "I'm waiting for you": "我在等您", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "我们注意到速度超过100公里/小时。为了您的安全,请减速。如果您感到不安全,可以与联系人分享行程详情或使用红色SOS按钮呼叫警察。", + "Warning: Intaleqing detected!": "警告:检测到超速!", + "Please help! Contact me as soon as possible.": "请帮忙!尽快联系我。", + "Share Trip Details": "分享行程详情", + "Car Plate is ": "车牌号为 ", + "VIP Order": "VIP订单", + "the 300 points equal 300 L.E for you \nSo go and gain your money": + "300点等于300 L.E\n所以去赚取您的钱", + "the 300 points equal 300 L.E": "300点等于300 L.E", + "The payment was not approved. Please try again.": "支付未获批准。请再试一次。", + "Payment Failed": "支付失败", + "Error": "错误", + "This is a scheduled notification.": "这是计划的通知。", + "An error occurred during the payment process.": "支付过程中发生错误。", + "The payment was approved.": "支付已获批准。", + "Payment Successful": "支付成功", + "No ride found yet": "尚未找到行程", + "Accept Order": "接受订单", + // "reject your order.": "拒绝您的订单。", + "Bottom Bar Example": "底部栏示例", + "Driver phone": "司机电话", + "Statistics": "统计", + "Origin": "起点", + "Destination": "目的地", + "Driver Name": "司机姓名", + "Driver Car Plate": "司机车牌", + "Available for rides": "可用于行程", + "Scan Id": "扫描ID", + "Camera not initilaized yet": "相机尚未初始化", + "Scan ID MklGoogle": "扫描ID MklGoogle", + "Language": "语言", + "Jordan": "约旦", + "USA": "美国", + "Egypt": "埃及", + "Turkey": "土耳其", + "Saudi Arabia": "沙特阿拉伯", + "Qatar": "卡塔尔", + "Bahrain": "巴林", + "Kuwait": "科威特", + "But you have a negative salary of": "但您的工资为负", + "Promo Code": "促销代码", + "Your trip distance is": "您的行程距离为", + "Enter promo code": "输入促销代码", + "You have promo!": "您有促销!", + "Cost Duration": "费用时长", + "Duration is": "时长为", + "Leave": "离开", + "Join": "加入", + "Heading your way now. Please be ready.": "正在前往您处。请准备好。", + "Approaching your area. Should be there in 3 minutes.": + "正在接近您所在区域。应该会在3分钟内到达。", + "There's heavy traffic here. Can you suggest an alternate pickup point?": + "这里交通拥堵。您能建议一个替代的接载点吗?", + "This ride is already taken by another driver.": "此行程已被其他司机接单。", + "You Should be select reason.": "您应选择原因。", + " \$": " \$", + "Waiting for Driver ...": "等待司机...", + "Latest Recent Trip": "最近的行程", + "from your list": "从您的列表中", + "Do you want to change Work location": "您想更改工作地点吗?", + "Do you want to change Home location": "您想更改家庭地点吗?", + "We Are Sorry That we dont have cars in your Location!": + "很抱歉,您所在位置没有汽车!", + "Choose from Map": "从地图中选择", + "Pick your ride location on the map - Tap to confirm": + "在地图上选择您的行程位置 - 点击确认", + // "To Work": "去工作", + // "Are you want to go this site": "您想去这个网站吗?", + "Closest & Cheapest": "最近且最便宜", + // "Work Saved": "工作地点已保存", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "Intaleq是一款安全、可靠且易于使用的打车应用。", + "With Intaleq, you can get a ride to your destination in minutes.": + "使用Intaleq,您可以在几分钟内到达目的地。", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "Intaleq致力于安全,我们所有的船长都经过仔细筛选和背景调查。", + // "To Home": "回家", + // "Home Saved": "家已保存", + // "Destination selected": "目的地已选择:", + // "Now select start pick": "现在选择起点:", + "Pick from map": "从地图中选择", + // "Click here point": "点击这里", + "No Car in your site. Sorry!": "您的位置没有汽车。抱歉!", + "Nearest Car for you about ": "您最近的汽车大约 ", + // "N/A": "不适用", + "From :": "从:", + "Get Details of Trip": "获取行程详情", + "If you want add stop click here": "如果您想添加停靠点,请点击这里", + // "Driver": "司机", + "Where you want go ": "您想去哪里 ", + "My Card": "我的卡片", + "Start Record": "开始记录", + "Wallet": "钱包", + "History of Trip": "行程历史", + "Helping Center": "帮助中心", + "Record saved": "记录已保存", + "Trips recorded": "行程已记录", + "Select Your Country": "选择您的国家", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "为确保您收到最准确的位置信息,请在下方选择您的国家。这将有助于根据您的国家定制应用体验和内容。", + "Are you sure to delete recorded files": "您确定要删除记录的文件吗?", + "Select recorded trip": "选择记录的行程", + "Card Number": "卡号", + "Hi, Where to ": "嗨,去哪里 ", + "Pick your destination from Map": "从地图中选择您的目的地", + "Add Stops": "添加停靠点", + "Get Direction": "获取方向", + "Add Location": "添加位置", + "Switch Rider": "切换司机", + "You will arrive to your destination after ": "您将在之后到达目的地", + "You can cancel trip": "您可以取消行程", + "The driver waitting you in picked location .": "司机在指定地点等您。", + "10\$ and get 3% discount": "10\$并获得3%折扣", + "20\$ and get 4% discount": "20\$并获得4%折扣", + "40\$ and get 6% discount": "40\$并获得6%折扣", + "100\$ and get 9% discount": "100\$并获得9%折扣", + "Pay with Your": "使用您的", + "Pay with Credit Card": "使用信用卡支付", + "Payment History": "支付历史", + "Show Promos to Charge": "显示促销以充值", + "Point": "点", + "How many hours would you like to wait?": "您想等待多少小时?", + "Driver Wallet": "司机钱包", + "Choose between those Type Cars": "在这些类型的汽车之间选择", + "hour": "小时", + "Select Waiting Hours": "选择等待小时", + "Total Points is": "总积分为", + "You will receive a code in SMS message": "您将在短信中收到代码", + "Done": "完成", + "Total Budget from trips is ": "行程总预算为 ", + "Total Amount:": "总金额:", + "Total Budget from trips by\nCredit card is ": "通过信用卡的行程总预算为 ", + "This amount for all trip I get from Passengers": "我从乘客那里获得的所有行程的金额", + "Pay from my budget": "从我的预算中支付", + "This amount for all trip I get from Passengers and Collected For me in": + "我从乘客那里获得的所有行程的金额并为我收集在", + "You can buy points from your budget": "您可以从预算中购买积分", + "insert amount": "插入金额", + "You can buy Points to let you online\nby this list below": + "您可以购买积分以让您在线\n通过以下列表", + "Create Wallet to receive your money": "创建钱包以接收您的钱", + "Enter your feedback here": "在此处输入您的反馈", + "Please enter your feedback.": "请输入您的反馈。", + "Feedback": "反馈", + "Submit ": "提交 ", + "Click here to Show it in Map": "点击此处在地图上显示", + "Canceled": "已取消", + "Type your Email": "输入您的电子邮件", + "No I want": "不,我想", + "Email is": "电子邮件是", + "Phone Number is": "电话号码是", + "Date of Birth is": "出生日期是", + "Sex is ": "性别是 ", + "Car Details": "汽车详情", + "VIN is": "VIN是", + "Color is ": "颜色是 ", + "Make is ": "品牌是 ", + "Model is": "型号是", + "Year is": "年份是", + "Expiration Date ": "到期日期 ", + "Edit Your data": "编辑您的数据", + "write vin for your car": "为您的汽车写VIN", + "VIN": "VIN", + "write Color for your car": "为您的汽车写颜色", + "write Make for your car": "为您的汽车写品牌", + // "Make": "品牌", + "write Model for your car": "为您的汽车写型号", + // "Model": "型号", + "write Year for your car": "为您的汽车写年份", + // "Expiration Date": "到期日期", + "write Expiration Date for your car": "为您的汽车写到期日期", + "Tariffs": "关税", + "Minimum fare": "最低费用", + "Maximum fare": "最高费用", + "Flag-down fee": "招手费", + "Including Tax": "含税", + "BookingFee": "预订费", + "Morning": "早上", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "从07:30到10:30(星期四、星期五、星期六、星期一)", + "Evening": "晚上", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "从12:00到15:00(星期四、星期五、星期六、星期一)", + "Night": "晚上", + "You have in account": "您有在账户中", + "Select Country": "选择国家", + "Ride Today : ": "今天的行程: ", + "After this period\nYou can\'t cancel!": "在此期限后\n您不能取消!", + "from 23:59 till 05:30": "从23:59到05:30", + "Rate Driver": "评分司机", + "Total Cost is ": "总费用为 ", + "Write note": "写备注", + "Time to arrive": "到达时间", + "Ride Summaries": "行程摘要", + "Total Cost": "总费用", + "Average of Hours of": "平均小时数", + " is ON for this month": " 本月开启", + "Days": "天", + "Total Hours on month": "本月总小时数", + "Counts of Hours on days": "每天的小时数", + "OrderId": "订单ID", + "created time": "创建时间", + "Intaleq Over": "超速", + "I will slow down": "我会减速", + "Map Passenger": "地图乘客", + "Be Slowly": "慢慢来", + "If you want to make Google Map App run directly when you apply order": + "如果您想在申请订单时直接运行Google地图应用", + "You can change the language of the app": "您可以更改应用的语言", + "Your Budget less than needed": "您的预算低于所需", + "You can change the Country to get all features": "您可以更改国家以获取所有功能", + "Change Country": "更改国家" + }, + + "ar-gulf": { + "Order": "طلب", + "OrderVIP": "طلب VIP", + "Cancel Trip": "إلغاء الرحلة", + "Passenger Cancel Trip": "الراكب ألغى الرحلة", + "VIP Order": "طلب VIP", + "The driver accepted your trip": "السائق قبل رحلتك", + "message From passenger": "رسالة من الراكب", + "Cancel": "إلغاء", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "تم إلغاء الرحلة. سيتم إضافة تكلفة الرحلة إلى محفظتك.", + "token change": "تغيير الرمز", + "face detect": "كشف الوجه", + "Face Detection Result": "نتيجة كشف الوجه", + "similar": "مشابه", + "not similar": "غير مشابه", + "Hi ,I will go now": "مرحبا، أنا بروح الحين", + "Passenger come to you": "الراكب جاي لك", + "Call Income": "مكالمة واردة", + "Call Income from Passenger": "مكالمة واردة من الراكب", + "Criminal Document Required": "مطلوب وثيقة جنائية", + "You should have upload it .": "يفترض إنك حملتها.", + "Call End": "انتهاء المكالمة", + "The order has been accepted by another driver.": + "الطلب تم قبوله من سائق آخر.", + "The order Accepted by another Driver": "الطلب تم قبوله من سائق آخر", + "We regret to inform you that another driver has accepted this order.": + "نتأسف لإبلاغك بأن سائق آخر قد قبل هذا الطلب.", + "Driver Applied the Ride for You": "السائق قدم الطلب لك", + "Applied": "تم التقديم", + "Hi ,I Arrive your site": "مرحبا، وصلت موقعك", + "Please go to Car Driver": "لو سمحت روح لسائق السيارة", + "Ok I will go now.": "اوكي بروح الحين.", + "Accepted Ride": "تم قبول الرحلة", + "Driver Accepted the Ride for You": "السائق قبل الرحلة لك", + "Promo": "عرض ترويجي", + "Show latest promo": "عرض أحدث عرض ترويجي", + "Trip Monitoring": "مراقبة الرحلة", + "Driver Is Going To Passenger": "السائق في طريقه إليك", + "Please stay on the picked point.": + "لو سمحت خليك في نقطة الالتقاط المحددة.", + "message From Driver": "رسالة من السائق", + "Trip is Begin": "بدأت الرحلة", + "Cancel Trip from driver": "إلغاء الرحلة من السائق", + "We will look for a new driver.\nPlease wait.": + "بندور على سائق جديد.\nلو سمحت انتظر.", + "The driver canceled your ride.": "السائق ألغى رحلتك.", + "Driver Finish Trip": "السائق أنهى الرحلة", + "you will pay to Driver": "بتدفع للسائق", + "Don’t forget your personal belongings.": "لا تنسى أغراضك الشخصية.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "لو سمحت تأكد إن معاك كل أغراضك الشخصية وإن أي مبلغ متبقي، إذا فيه، تم إضافته لمحفظتك قبل لا تمشي. شكراً لاستخدامك تطبيق Intaleq", + "Finish Monitor": "إنهاء المراقبة", + "Trip finished": "الرحلة انتهت", + "Call Income from Driver": "مكالمة واردة من السائق", + "Driver Cancelled Your Trip": "السائق ألغى رحلتك", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "بتدفع للسائق بتدفع تكلفة وقت السائق شوف محفظة Intaleq مالتك", + "Order Applied": "تم تطبيق الطلب", + + //firebase above + +// + "Where to": "وين تبي تروح؟", + "Where are you going?": "وين بتروح؟", + "Quick Actions": "إجراءات سريعة", + "My Wallet": "محفظتي", + "Order History": "سجل الطلبات", + "Contact Us": "اتصل بنا", + "Driver": "السائق", + "Complaint": "شكوى", + "Promos": "العروض", + "Recent Places": "الأماكن الأخيرة", + "From": "من", + "WhatsApp Location Extractor": "مستخرج موقع واتساب", + "Location Link": "رابط الموقع", + "Paste location link here": "الصق رابط الموقع هنا", + "Go to this location": "انتقل إلى هذا الموقع", + "Paste WhatsApp location link": "الصق رابط موقع واتساب", + "Select Order Type": "اختر نوع الطلب", + "Choose who this order is for": "اختر الطلب هذا حق منو؟", + "I want to order for myself": "أبي أطلب لنفسي", + "I want to order for someone else": "أبي أطلب لشخص ثاني", + // "Cancel": "إلغاء", + "Order for someone else": "اطلب لشخص آخر", + "Order for myself": "اطلب لنفسي", + "Are you want to go this site": "تبغي تروح هالمكان؟", + // "Yes": "أيوة", + "No": "لا", + "Are you sure to delete this location?": + "متأكد إنك تبي تحذف هالموقع؟", + "deleted": "تم الحذف", + "To Work": "للشغل", + "Work Saved": "تم حفظ مكان الشغل", + "To Home": "للبيت", + "Home Saved": "تم حفظ مكان البيت", + "Destination selected": "تم اختيار الوجهة", + "Now select start pick": "الحين اختار نقطة البداية", + "OK": "تمام", + "Confirm Pick-up Location": "تأكيد موقع الالتقاء", + "Set Location on Map": "حدد الموقع على الخريطة", + "Nearest Car: ~": "أقرب سيارة: ~", + "Nearest Car": "أقرب سيارة", + "No cars nearby": "ما فيه سيارات قريبة", + "Favorite Places": "الأماكن المفضلة", + "No favorite places yet!": "ما فيه أماكن مفضلة للحين!", + "from your favorites": "من مفضلتك", + "Back": "رجوع", + "Sign in for a seamless experience": "سجل الدخول لتجربة أفضل", + "Sign In with Google": "تسجيل الدخول باستخدام جوجل", + "Sign in with Apple": "تسجيل الدخول باستخدام آبل", + "Need assistance? Contact us": "محتاج مساعدة؟ كلمنا", + "User not found": "المستخدم مو موجود", + "Email": "البريد الإلكتروني", + "Your email address": "عنوان بريدك الإلكتروني", + "Enter a valid email": "أدخل بريد إلكتروني صحيح", + "Password": "كلمة المرور", + // "Your password": "كلمة مرورك", + "Enter your password": "أدخل كلمة المرور", + "Submit": "إرسال", + "Terms of Use & Privacy Notice": "شروط الاستخدام وإشعار الخصوصية", + "Terms of Use": "شروط الاستخدام", + "Privacy Notice": "سياسة الخصوصية", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the": + "بالنقر على \"أوافق\" أدناه، أؤكد أنني قرأت ووافقت على", + "and acknowledge the": "وأقر بـ", + ". I am at least 18 years old.": ". أنا عمري 18 سنة على الأقل.", + + "Continue": "متابعة", + "Enable Location Access": "تفعيل الوصول للموقع", + "We need your location to find nearby drivers for pickups and drop-offs.": + "نحتاج موقعك عشان نلاقي سواقين قريبين للاستلام والتوصيل.", + "Allow Location Access": "السماح بالوصول للموقع", + "You should restart app to change language": + "يفترض تقفل التطبيق وتفتحه مرة ثانية عشان اللغة تتغير", + "Home Page": "الرئيسية", + "To change Language the App": "لتغيير لغة التطبيق", + "Learn more about our app and mission": + "اعرف أكثر عن تطبيقنا ورسالتنا", + "Promos For Today": "عروض اليوم", + "Choose your ride": "اختار مشوارك", + "Your Journey Begins Here": "رحلتك تبدأ هنا", + "Bonus gift": "هدية إضافية", + "Pay": "ادفع", + "Get": "احصل على", + "Send to Driver Again": "إرسال للسواق مرة ثانية", + "Driver Name:": "اسم السائق:", + "No trip data available": "ما فيه بيانات للرحلة متوفرة", + "Car Plate:": "رقم اللوحة:", + "remaining": "متبقي", + "Order Cancelled": "تم إلغاء الطلب", + "You canceled VIP trip": "ألغيت مشوار VIP", + "Passenger cancelled order": "الراكب ألغى الطلب", + "Your trip is scheduled": "رحلتك مجدولة", + "Don't forget your ride!": "لا تنسى مشوارك!", + "Trip updated successfully": "تم تحديث الرحلة بنجاح", + "Car Make:": "ماركة السيارة:", + "Car Model:": "موديل السيارة:", + "Car Color:": "لون السيارة:", + "Driver Phone:": "رقم تلفون السواق:", + "Pre-booking": "حجز مسبق", + "Waiting VIP": "انتظار VIP", + "Driver List": "قائمة السائقين", + "Confirm Trip": "تأكيد المشوار", + "Select date and time of trip": "حدد تاريخ ووقت المشوار", + "Date and Time Picker": "اختيار التاريخ والوقت", + "Trip Status:": "حالة المشوار:", + "pending": "قيد الانتظار", + "accepted": "تم القبول", + "rejected": "تم الرفض", + "Apply": "تطبيق", + "Enter your promo code": "أدخل رمز الترويج الخاص بك", + "Apply Promo Code": "تطبيق رمز الترويج", + "Scheduled Time:": "الوقت المحدد:", + "No drivers available": "ما فيه سواقين متوفرين", + "No drivers available at the moment. Please try again later.": + "ما فيه سواقين متوفرين الحين. حاول مرة ثانية بعدين.", + "you have a negative balance of": "عندك رصيد سلبي قدره", + "Please try again in a few moments": "حاول مرة ثانية بعد لحظات قليلة", + "Unknown Driver": "سائق غير معروف", + "in your": "في محفظتك", + "The driver accepted your order for": "السائق قبل طلبك مقابل", + "wallet due to a previous trip.": "بسبب رحلة سابقة.", + "rides": "مشاوير", + "Add Work": "أضف مكان الشغل", + "The reason is": "السبب هو", + "User does not have a wallet #1652": "المستخدم ما عنده محفظة #1652", + "Price of trip": "سعر المشوار", + "From:": "من:", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "بالنسبة لمشاوير Intaleq والتوصيل، السعر ينحسب بشكل تلقائي. أما مشاوير كمفورت، السعر يكون على حسب الوقت والمسافة", + "Phone Wallet Saved Successfully": "تم حفظ محفظة الهاتف بنجاح", + "Add wallet phone you use": "ضيف رقم محفظة هاتفك اللي تستخدمها", + "Update Available": "تحديث متوفر", + "Phone number must be exactly 11 digits long": + "رقم التلفون لازم يكون 11 رقم بالضبط", + "Insert Wallet phone number": "أدخل رقم محفظة هاتفك", + "Phone number isn't an Egyptian phone number": + "رقم التلفون هذا مو رقم مصري", + "A new version of the app is available. Please update to the latest version.": + "فيه نسخة جديدة من التطبيق متوفرة. يرجى التحديث لآخر نسخة.", + "We use location to get accurate and nearest passengers for you": + "نستخدم الموقع عشان نوصلك بأقرب ركاب وأدقهم ليك", + "This ride is already applied by another driver.": + "المشوار هذا اتقبل من سواق ثاني خلاص.", + "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": + "نستخدم موقعك بالتحديد عشان نلاقي أقرب سواق متوفر ونعطيك معلومات دقيقة عن مكان الاستلام والوصول. ممكن تتحكم في هذا من الإعدادات.", + + "Where are you, sir?": "وين مكانك يا طويل العمر؟", + "I've been trying to reach you but your phone is off.": + "أحاول أتصل فيك بس تلفونك مسكر.", + "Please don't be late": "لو سمحت لا تتأخر", + "Please don't be late, I'm waiting for you at the specified location.": + "لو سمحت لا تتأخر، أنا أنتظرك في المكان اللي محدد.", + "My location is correct. You can search for me using the navigation app": + "موقعي صحيح. ممكن تدور علي باستخدام تطبيق الملاحة", + "Hello, I'm at the agreed-upon location": + "مرحبا، أنا في المكان المتفق عليه", + "How much longer will you be?": "شقد باقي لك وتوصل؟", + "Phone number is verified before": "تم التحقق من رقم الهاتف قبل", + "Change Ride": "تغيير المشوار", + "You can change the destination by long-pressing any point on the map": + "ممكن تغير الوجهة بالضغط مطولاً على أي نقطة في الخريطة", + "Pick from map destination": "اختار وجهتك من الخريطة", + "Pick or Tap to confirm": "اختار أو اضغط للتأكيد", + "Accepted your order": "تم قبول طلبك", + "Order Accepted": "تم قبول الطلب", + "with type": "مع نوع", + "accepted your order at price": "تم قبول طلبك بسعر", + + "you canceled order": "أنت ألغيت الطلب", + "If you want order to another person": "إذا تبي تطلب لشخص ثاني", + // "Ok I will go now.": "تمام، أنا ماشي الحين.", + // "Hi, I will go now": "مرحبا، أنا ماشي الحين", + "upgrade price": "رفع السعر", + "Please enter a correct phone": "يرجى إدخال رقم هاتف صحيح", + "airport": "مطار", + "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": + "أفضل اختيار لسيارة مريحة بمسار مرن ونقاط توقف. هالمطار يقدم دخول فيزا بهالسعر.", + "You can upgrade price to may driver accept your order": + "ممكن تزيد السعر عشان السواق يقبل طلبك", + "Change Route": "تغيير المسار", + "No Captain Accepted Your Order": "ما فيه كابتن قبل طلبك", + "We are looking for a captain but the price may increase to let a captain accept": + "بندور على كابتن بس ممكن السعر يزيد عشان كابتن يقبل", + "No, I want to cancel this trip": "لا، أبي ألغي المشوار هذا", + // "Trip Cancelled. The cost of the trip will be added to your wallet.": + // "تم إلغاء الرحلة. سيتم إضافة تكلفة الرحلة لمحفظتك.", + "Attention": "تنبيه", + "Trip Cancelled. The cost of the trip will be deducted from your wallet.": + "تم إلغاء الرحلة. سيتم خصم تكلفة الرحلة من محفظتك.", + "You will be charged for the cost of the driver coming to your location.": + "راح تتحاسب على تكلفة مجيء السواق لموقعك.", + "reject your order.": "رفض طلبك.", + "Order Under Review": "الطلب قيد المراجعة", + "is reviewing your order. They may need more information or a higher price.": + "يراجع طلبك. ممكن يحتاجون معلومات أكثر أو سعر أعلى.", + // "The driver canceled your ride.": "السواق ألغى مشوارك.", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "ما لقينا أي سواقين للحين. فكر تزيد سعر المشوار عشان عرضك يكون جذاب أكثر للسواقين.", + "Increase Your Trip Fee (Optional)": "زيد سعر مشوارك (اختياري)", + "Vibration": "اهتزاز", + "Resend code": "إعادة إرسال الرمز", + // "token change": "تغيير الرمز", + "change device": "تغيير الجهاز", + "Device Change Detected": "تم اكتشاف تغيير الجهاز", + "You can only use one device at a time. This device will now be set as your active device.": + "ممكن تستخدم جهاز واحد بس في المرة الواحدة. الجهاز هذا راح يتعين الحين كجهازك النشط.", + "Click here point": "اضغط هنا", + "Are you want to change": "تبي تغير؟", + "by": "بواسطة", + "Enter your complaint here": "اكتب شكوتك هنا", + "Please enter your complaint.": "يرجى إدخال شكواك.", + "Complaint data saved successfully": "تم حفظ بيانات الشكوى بنجاح", + "Trip Monitor": "مراقبة الرحلة", + "Insert SOS Phone": "أدخل رقم طوارئ", + "Add SOS Phone": "أضف رقم طوارئ", + // "Trip Monitoring": "مراقبة الرحلة", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "عزيزي،\n\n🚀 توني بديت رحلة مثيرة وأبي أشارك تفاصيل رحلتي وموقعي الحالي معك في الوقت الفعلي! يرجى تنزيل تطبيق Intaleq. راح يسمح لك تشوف تفاصيل رحلتي وموقعي الأخير.\n\n👈 رابط التحميل:\nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nأتطلع إني أبقيك قريب خلال مغامرتي!\n\nIntaleq،", + "Send Intaleq app to him": "ارسله تطبيق Intaleq", + "No passenger found for the given phone number": + "ما فيه راكب بالرقم هذا", + "No user found for the given phone number": + "ما فيه مستخدم بالرقم هذا", + "This price is": "السعر هذا", + "Work": "شغل", + "Add Home": "أضف بيت", + "Notifications": "الإشعارات", + "💳 Pay with Credit Card": "ادفع بالبطاقة الائتمانية 💳", + "⚠️ You need to choose an amount!": "⚠️ لازم تختار مبلغ!", + "💰 Pay with Wallet": "ادفع من المحفظة", + "You must restart the app to change the language.": + "لازم تقفل التطبيق وتفتحه مرة ثانية عشان اللغة تتغير.", + "joined": "انضم", + "Driver joined the channel": "السائق انضم للقناة", + "Driver left the channel": "السائق غادر القناة", + "Call Page": "صفحة الاتصال", + // "Call End": "انتهاء المكالمة", + "Call Left": "مكالمات متبقية", + + "To use Wallet charge it": "عشان تستخدم المحفظة اشحنها", + "We are searching for the nearest driver to you": + "بندور لك على أقرب سواق ليك", + "Best choice for cities": "أفضل اختيار للمدن", + "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": + "رايح جاي: خدمة للذهاب والعودة لـ Intaleq مريح بين المدن، سهلة وموثوقة.", + "Rayeh Gai": "رايح جاي", + "This trip is for women only": "المشوار هذا للسيدات فقط", + "Total budgets on month": "إجمالي الميزانية الشهرية", + "You have call from driver": "عندك مكالمة من السواق", + "Comfort": "كمفورت", + "Intaleq": "Intaleq", + "Driver already has 2 trips within the specified period.": + "السائق عنده بالفعل مشوارين خلال الفترة المحددة.", + "The invitation was sent successfully": "تم إرسال الدعوة بنجاح", + "Lady": "ليدي", + "You should select your country": "يجب عليك اختيار بلدك", + "Scooter": "سكوتر", + "A trip with a prior reservation, allowing you to choose the best captains and cars.": + "مشوار بحجز مسبق، تقدر تختار فيه أفضل الكباتن والسيارات.", + "Mishwar Vip": "مشوار VIP", + "The driver waiting you in picked location .": + "السائق ينتظرك في مكان الالتقاء اللي اخترته.", + "About Us": "عن التطبيق", + "You can change the vibration feedback for all buttons": + "ممكن تغير اهتزاز الأزرار", + "Most Secure Methods": "أكثر طرق الأمان", + "In-App VOIP Calls": "مكالمات صوتية داخل التطبيق", + "Recorded Trips for Safety": "تسجيل الرحلات للأمان", + "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": + "\nكما نولي أهمية كبيرة للأسعار المناسبة، ونقدم أسعارًا تنافسية لجعل مشاويرك في متناول الجميع.", + "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": + "Intaleq هو تطبيق لمشاركة المشاوير مصمم مع وضع سلامتك وتكلفة المشوار في الاعتبار. نوصلك بسواقين موثوقين في منطقتك، ونضمن لك تجربة Intaleq مريحة وبدون قلق.\n\nإليك بعض المميزات الأساسية اللي تميزنا:", + "Sign In by Apple": "تسجيل الدخول باستخدام Apple", + "Sign In by Google": "تسجيل الدخول باستخدام Google", + "How do I request a ride?": "شلون أطلب مشوار؟", + "Step-by-step instructions on how to request a ride through the Intaleq app.": + "تعليمات خطوة بخطوة عن كيفية طلب مشوار من خلال تطبيق Intaleq.", + "What types of vehicles are available?": + "إيش أنواع السيارات المتاحة؟", + "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": + "Intaleq يقدم لك اختيارات متنوعة للسيارات تناسب احتياجاتك، منها اقتصادي ومريح وفاخر. اختار اللي يناسب ميزانيتك وعدد الركاب.", + "How can I pay for my ride?": "شلون أدفع ثمن المشوار؟", + "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": + "Intaleq يقدم لك طرق دفع متعددة لراحتك. اختار بين الدفع كاش أو ببطاقة الائتمان/الخصم وأنت تأكد المشوار.", + "Can I cancel my ride?": "ممكن ألغي المشوار؟", + "Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.": + "نعم، ممكن تلغي رحلتك في ظل ظروف معينة (مثل قبل تعيين السائق). اطلع على سياسة الإلغاء في Intaleq للحصول على التفاصيل.", + "Driver Registration & Requirements": "تسجيل السائقين والمتطلبات", + "How can I register as a driver?": "كيف ممكن أسجل كسائق؟", + "What are the requirements to become a driver?": + "ما هي المتطلبات عشان أصير سائق؟", + "Visit our website or contact Intaleq support for information on driver registration and requirements.": + "تفضل بزيارة موقعنا الإلكتروني أو اتصل بدعم Intaleq للحصول على معلومات حول تسجيل السائقين والمتطلبات.", + + "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": + "Intaleq يوفر ميزة الدردشة داخل التطبيق عشان يسمح لك تتواصل مع سائقك أو راكبك أثناء الرحلة.", + + "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": + "Intaleq يعطي أهمية كبيرة لسلامتك. نقدم ميزات مثل التحقق من هوية السائق، وتتبع الرحلات داخل التطبيق، وخيارات الاتصال في حالات الطوارئ.", + "Frequently Questions": "الأسئلة الشائعة", + "User does not exist.": "المستخدم مو موجود.", + "We need your phone number to contact you and to help you.": + "نحتاج رقم تلفونك عشان نتصل فيك ونساعدك", + "You will recieve code in sms message": "راح تستلم رمز في رسالة SMS", + "Please enter": "يرجى إدخال", + "We need your phone number to contact you and to help you receive orders.": + "نحتاج رقم تلفونك عشان نتصل فيك ونساعدك تستقبل الطلبات.", + "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": + "الاسم الكامل في سجلك الجنائي ما يطابق الاسم اللي في رخصة القيادة الخاصة بك. يرجى التحقق وتقديم الوثائق الصحيحة.", + "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": + "الرقم الوطني في رخصة القيادة الخاصة بك ما يطابق الرقم اللي في وثيقة الهوية الخاصة بك. يرجى التحقق وتقديم الوثائق الصحيحة.", + "Capture an Image of Your Criminal Record": "صور سجلك الجنائي", + "IssueDate": "تاريخ الإصدار", + "Capture an Image of Your car license front ": + "صور الواجهة الأمامية لرخصة سيارتك", + "Capture an Image of Your ID Document front": + "صور الواجهة الأمامية لوثيقة هويتك", + "NationalID": "الرقم القومي", + "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": + "ممكن تشارك تطبيق Intaleq مع أصدقائك وتربح مكافآت من الرحلات اللي يسوونها باستخدام كودك.", + "FullName": "الاسم الكامل", + "No invitation found yet!": "ما فيه دعوات للحين!", + "InspectionResult": "نتيجة الفحص", + "Criminal Record": "السجل الجنائي", + "Share App": "شارك التطبيق", + "The email or phone number is already registered.": + "البريد الإلكتروني أو رقم التلفون مسجل بالفعل.", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "عشان تصير سائق مشاركة ركوب في تطبيق Intaleq، لازم تحمل رخصة القيادة الخاصة بك، وثيقة الهوية، ووثيقة تسجيل السيارة. نظام الذكاء الاصطناعي الخاص بنا راح يراجع ويتحقق من صحة الوثائق في غضون 2-3 دقائق فقط. إذا الوثائق الخاصة بك اتقبلت، ممكن تبدأ تشتغل كسائق في تطبيق Intaleq. يرجى الملاحظة، تقديم وثائق مزورة يعتبر جريمة خطيرة وممكن يترتب عليها إنهاء الحساب فورا وعواقب قانونية.", + "Documents check": "فحص الوثائق", + "Driver's License": "رخصة القيادة", + "for your first registration!": "لتسجيلك الأول!", + "Get it Now!": "احصل عليه الحين!", + "before": "قبل", + "Code not approved": "الرمز مو مقبول", + "3000 LE": "3000 جنيه مصري", + "Do you have an invitation code from another driver?": + "عندك كود دعوة من سائق ثاني؟", + "Paste the code here": "الصق الكود هنا", + "No, I don't have a code": "لا، ما عندي كود", + "Code approved": "تمت الموافقة على الكود", + "Install our app:": "ثبت تطبيقنا:", + "Invite another driver and both get a gift after he completes 100 trips!": + "ادع صديق عشان يصير سائق واثنينكم تحصلون على هدية بعد ما يكمل 100 مشوار!", + "Invite": "دعوة", + "Are you sure?": "متأكد؟", + "This will delete all recorded files from your device.": + "هذا راح يحذف كل الملفات المسجلة من جهازك.", + "Select a file": "اختار ملف", + "Select a File": "اختار ملف", + "Delete": "حذف", + "attach audio of complain": "أرفق صوت الشكوى", + "Phone Number Check": "فحص رقم الهاتف", + "Drivers received orders": "السائقون استقبلوا الطلبات", + "No audio files recorded.": "ما فيه ملفات صوتية مسجلة.", + "This is for delivery or a motorcycle.": + "هذا للتوصيل أو للدراجة النارية.", + // "We will look for a new driver.\nPlease wait.": + // "سوف نبحث عن سائق جديد.\nيرجى الانتظار", + "Intaleq Reminder": "تذكير Intaleq", + "It's time to check the Intaleq app!": + "حان وقت استخدام تطبيق Intaleq", + "you must insert token code": "لازم تدخل رمز التحقق.", + "Something went wrong. Please try again.": + "حدث خطأ ما. يرجى المحاولة مرة ثانية.", + "Trip Details": "تفاصيل الرحلة", + "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": + "السياق ما يوفر تفاصيل الشكوى، عشان كذا ما أقدر أقدم حل لهالمشكلة. يرجى تقديم المعلومات اللازمة، وراح أكون سعيد أساعدك", + "Submit Your Complaint": "أرسل شكواك", + "Date": "التاريخ", + "Price": "السعر", + "Status": "الحالة", + "Choose from contact": "اختار من جهات الاتصال", + "attach correct audio": "أرفق صوت الشكوى الصحيح", + "be sure": "تأكد", + "Audio uploaded successfully.": "تم رفع الصوت بنجاح", + "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": + "مثالي للركاب اللي يبحثون عن أحدث موديلات السيارات مع حرية اختيار أي طريق يبغونه", + "Share this code with your friends and earn rewards when they use it!": + "شارك هالكود مع أصدقائك واحصل على مكافآت لما يستخدمونه!", + "Enter phone": "أدخل رقم الهاتف", + "You deserve the gift": "أنت تستحق الهدية", + "complete, you can claim your gift": " ممكن تطالب بهديتك", + "When": "عندما يكمل", + "Enter driver's phone": "أدخل رقم هاتف السائق", + "Send Invite": "أرسل الدعوة", + "Show Invitations": "عرض الدعوات", + "License Type": "نوع الرخصة", + "National Number": "الرقم الوطني", + "Name (Arabic)": "الاسم بالعربي", + "Name (English)": "الاسم بالإنجليزية", + "Address": "العنوان", + "Issue Date": "تاريخ الإصدار", + "Expiry Date": "تاريخ الانتهاء", + "License Categories": "فئات الرخصة", + "driver_license": "رخصة القيادة", + "Capture an Image of Your Driver License": "صور رخصة قيادتك", + "ID Documents Back": "الوجه الخلفي لوثائق الهوية", + "National ID": "البطاقة الوطنية", + "Occupation": "المهنة", + "Gender": "الجنس", + "Religion": "الديانة", + "Marital Status": "الحالة الاجتماعية", + "Full Name (Marital)": "الاسم الكامل (حسب الحالة الاجتماعية)", + "Expiration Date": "تاريخ الانتهاء", + "Capture an Image of Your ID Document Back": + "صور الوجه الخلفي لوثيقة الهوية الخاصة بك", + "ID Documents Front": "الوجه الأمامي لوثائق الهوية", + "First Name": "الاسم الأول", + "CardID": "رقم البطاقة", + "Vehicle Details Front": "تفاصيل المركبة ‏الوجه الأمامية", + "Plate Number": "رقم اللوحة", + "Owner Name": "اسم المالك", + "Vehicle Details Back": "تفاصيل المركبة ‏الوجه الخلفي", + "Make": "المصنع", + "Model": "الطراز", + "Year": "السنة", + "Chassis": "الشاسيه", + "Color": "اللون", + "Displacement": "السعة", + "Fuel": "الوقود", + "Tax Expiry Date": "تاريخ انتهاء الضريبة", + "Inspection Date": "تاريخ الفحص", + "Capture an Image of Your car license back": + "صور الوجه الخلفي لرخصة سيارتك", + "Capture an Image of Your Driver’s License": "صور رخصة قيادتك", + "Sign in with Google for easier email and name entry": + "سجل دخولك باستخدام جوجل لتسجيل بريدك الإلكتروني واسمك بسهولة", + "You will choose allow all the time to be ready receive orders": + "راح تختار السماح دايما عشان تكون جاهز لاستقبال الطلبات", + "Welcome to Intaleq!": "مرحبا بكم في Intaleq!", + "Get to your destination quickly and easily.": + "وصول إلى وجهتك بسرعة وسهولة.", + "Enjoy a safe and comfortable ride.": "استمتع برحلة آمنة ومريحة.", + "Choose Language": "اختر اللغة", + "Login": "تسجيل الدخول", + "Pay with Wallet": "ادفع باستخدام المحفظة", + "Invalid MPIN": "رمز PIN غير صحيح", + "Invalid OTP": "كود التحقق خاطئ", + // "Driver Accepted the Ride for You": "السائق قبل الرحلة لك", + "Enter your email address": "أدخل عنوان بريدك الإلكتروني", + "Please enter Your Email.": "يرجى إدخال بريدك الإلكتروني.", + "Enter your phone number": "أدخل رقم هاتفك", + "Please enter your phone number.": "يرجى إدخال رقم هاتفك.", + "Please enter Your Password.": "يرجى إدخال كلمة المرور.", + "if you dont have account": "إذا ما عندك حساب", + "Register": "تسجيل", + "Accept Ride's Terms & Review Privacy Notice": + "قبول شروط الاستخدام ومراجعة إشعار الخصوصية", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "من خلال اختيار 'أوافق' أدناه، قمت بمراجعة وقبول شروط الاستخدام وأقر بإشعار الخصوصية. أنا عمري 18 سنة على الأقل.", + "I Agree": "أوافق", + // "Finish Monitor": " إنهاء مراقبة الرحلة ", + "First name": "الاسم الأول", + "Enter your first name": "أدخل اسمك الأول", + "Please enter your first name.": "يرجى إدخال اسمك الأول.", + "Last name": "اسم العائلة", + "Enter your last name": "أدخل اسمك الأخير", + "Please enter your last name.": "يرجى إدخال اسمك الأخير.", + "City": "المدينة", + "Please enter your City.": "يرجى إدخال اسم مدينتك.", + "Male": "ذكر", + "Female": "أنثى", + "Verify Email": "تحقق من البريد الإلكتروني", + "We sent 5 digit to your Email provided": + "لقد أرسلنا رمزًا مؤلفًا من 5 أرقام إلى بريدك الإلكتروني المدخل", + "5 digit": "5 أرقام", + "Send Verification Code": "إرسال رمز التحقق", + "Your Ride Duration is ": "مُدَّة رِحْلَتِكَ ", + "You will be thier in": "راح تكون هناك في", + "You trip distance is": "مَسَافَة الرِّحْلَة", + "Fee is": "الرُّسُوم", + "From : ": "مِنْ: ", + "To : ": "إِلَى: ", + "Add Promo": "إضَافَة بَرُومُو", + "Confirm Selection": "تَأْكِيد الاخْتِيَار", + "distance is": "المَسَافَة", + + "Intaleq LLC": "شركة Intaleq", + "Egypt's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "أول خدمة مشاركة ركوب في مصر، تم تطويرها بفخر من قبل مالكين عرب ومحليين. نركز على أن نكون قريبين منك - سواء كنت راكبًا قيمًا أو قائدًا مخلصًا.", + "Why Choose Intaleq?": "ليش تختار Intaleq؟", + "Closest to You": "الأقرب إليك", + "We connect you with the nearest drivers for faster pickups and quicker journeys.": + "نربطك بأقرب السائقين لضمان وصول سريع ورحلات أسرع.", + "Uncompromising Security": "أعلى مستويات الأمان", + "Lady Captains Available": "قائدات سيارات متاحات", + "Recorded Trips (Voice & AI Analysis)": + "الرحلات المسجلة (تحليل صوتي بالذكاء الاصطناعي)", + "Fastest Complaint Response": "أسرع استجابة للشكاوى", + "Our dedicated customer service team ensures swift resolution of any issues.": + "فريق خدمة العملاء لدينا يضمن حل أي مشكلة بسرعة.", + "Affordable for Everyone": "في متناول الجميع", + "Frequently Asked Questions": "الأسئلة الشائعة", + "Getting Started": "البدء", + + "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": + "افتح تطبيق Intaleq، وأدخل وجهتك، واضغط على \"طلب رحلة\". راح يقوم التطبيق بتوصيلك بأقرب سائق.", + "Vehicle Options": "خيارات المركبات", + + "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": + "Intaleq يوفر مجموعة متنوعة من الخيارات بما في ذلك الاقتصادية، المريحة، والفاخرة لتلبية احتياجاتك وميزانيتك.", + "Payments": "المدفوعات", + + "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": + "ممكن تدفع ثمن مشوارك كاش أو ببطاقة الائتمان/الخصم. تقدر تختار طريقة الدفع اللي تفضلها قبل ما تأكد مشوارك.", + "Ride Management": "إدارة الرحلات", + + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "أيوة، ممكن تلغي مشوارك، بس يرجى ملاحظة إن فيه رسوم إلغاء ممكن تتطبق على حسب الوقت اللي تلغي فيه قبلها بقد إيش.", + "For Drivers": "للسواقين", + // "Driver Registration & Requirements": "تسجيل ومتطلبات السواقين", + "Driver Registration": "تسجيل السواق", + "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": + "عشان تسجل كسواق أو تعرف المتطلبات، يرجى زيارة موقعنا الإلكتروني أو الاتصال بدعم Intaleq مباشرةً.", + "Visit Website/Contact Support": "زيارة الموقع/الاتصال بالدعم", + "Close": "إغلاق", + "We are searching for the nearest driver": "بندور على أقرب سواق", + "Communication": "التواصل", + "How do I communicate with the other party (passenger/driver)?": + "شلون أتواصل مع الطرف الثاني (الراكب/السواق)؟", + "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": + "ممكن تتواصل مع السواق أو الراكب من خلال خاصية الشات داخل التطبيق أول ما المشوار يتأكد.", + "Safety & Security": "الأمان والحماية", + "What safety measures does Intaleq offer?": + "إيش إجراءات الأمان اللي يقدمها Intaleq؟", + "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": + "Intaleq يقدم مميزات أمان متنوعة زي التحقق من السواق، تتبع الرحلة داخل التطبيق، خيارات الاتصال في حالات الطوارئ، وإمكانية مشاركة حالة رحلتك مع جهات اتصال موثوقة.", + "Enjoy competitive prices across all trip options, making travel accessible.": + "استمتع بأسعار تنافسية على كل خيارات الرحلات، وهذا يخلي الIntaleq سهل الوصول ليه.", + "Variety of Trip Choices": "خيارات رحلات متنوعة", + "Choose the trip option that perfectly suits your needs and preferences.": + "اختار خيار الرحلة اللي يناسب احتياجاتك وتفضيلاتك بالضبط.", + "Your Choice, Our Priority": "اختيارك هو أولويتنا", + "Because we are near, you have the flexibility to choose the ride that works best for you.": + "عشان إحنا قراب، عندك المرونة تختار المشوار اللي يناسبك.", + "duration is": "المدة هي", + "Setting": "الإعدادات", + "Find answers to common questions": "اعثر على إجابات للأسئلة الشائعة", + "I don't need a ride anymore": "أنا مو محتاج مشوار ثاني", + "I was just trying the application": "كنت بجرب التطبيق بس", + "No driver accepted my request": "ما فيه سواق قبل الطلب بتاعي", + "I added the wrong pick-up/drop-off location": + "أنا ضفت مكان استلام/توصيل غلط", + "I don't have a reason": "ما لي سبب", + "Other": "أخرى", + "Can we know why you want to cancel Ride ?": + "ممكن نعرف ليش تبي تلغي المشوار؟", + "Cancel Ride": "إلغاء المشوار", + "Add Payment Method": "إضافة طريقة الدفع", + "Your Wallet balance is ": "رصيد محفظتك هو ", + "Ride Wallet": "محفظة الرحلة", + "Payment Method": "طريقة الدفع", + "Type here Place": "اكتب هنا المكان", + "Are You sure to ride to": "أنت متأكد إنك تبي تروح", + "Confirm": "تأكيد", + // "Back": "رجوع", + "You are Delete": "أنت على وشك الحذف", + "Deleted": "تم الحذف", + "You Dont Have Any places yet !": "للحين ما عندك أي أماكن!", + // "Favorite Places": "الأماكن المفضلة", + "From : Current Location": "من: الموقع الحالي", + // "Where to": "إلى أين", + "Profile": "الملف الشخصي", + "Home": "الصفحة الرئيسية", + "My Cared": "بطاقاتي", + "Add Card": "إضافة بطاقة", + "Add Credit Card": "إضافة بطاقة ائتمان", + "Please enter the cardholder name": "يرجى إدخال اسم حامل البطاقة", + "Please enter the expiry date": "يرجى إدخال تاريخ انتهاء الصلاحية", + "Please enter the CVV code": "يرجى إدخال رمز CVV", + "Go To Favorite Places": "الذهاب إلى الأماكن المفضلة", + "Go to this Target": "الذهاب إلى هذا الهدف", + "My Profile": "ملفي الشخصي", + "Sign Out": "تسجيل الخروج", + "Are you want to go to this site": "هل ترغب في الذهاب إلى هذا الموقع", + "MyLocation": "موقعي", + "my location": "موقعي", + "Target": "هدف", + "Update": "تحديث", + "You Should choose rate figure": "يجب عليك اختيار تقييم", + "Login Captin": "تسجيل دخول الكابتن", + "Register Captin": "تسجيل كابتن جديد", + "Send Verfication Code": "إرسال رمز التحقق", + "KM": "كم", + "End Ride": "إنهاء الرحلة", + "Minute": "دقيقة", + "Go to passenger Location now": "اذهب إلى موقع الراكب الآن", + "Duration of the Ride is ": "مدة الرحلة هي ", + "Distance of the Ride is ": "المسافة للرحلة هي", + "Name of the Passenger is ": "اسم الراكب هو", + "Hello this is Captain": "مرحباً، أنا الكابتن", + "Start the Ride": "بدء الرحلة", + "Please Wait If passenger want To Cancel!": + "الرجاء الانتظار إذا أراد الراكب الإلغاء!", + "Total Duration:": "المدة الإجمالية:", + "Active Duration:": "المدة الفعلية:", + "Waiting for Captin ...": "في انتظار الكابتن...", + "Age is ": "العمر هو", + "Rating is ": "التقييم هو", + " to arrive you.": "للوصول إليك.", + + "Tariff": "تعريفة", + "Settings": "الإعدادات", + "Feed Back": "اقتراحات", + + "Please enter a valid 16-digit card number": + "يرجى إدخال رقم بطاقة صالح مكون من 16 رقم", + "Add Phone": "إضافة هاتف", + "Please enter a phone number": "يرجى إدخال رقم هاتف", + "You dont Add Emergency Phone Yet!": "للحين ما ضفت رقم هاتف طوارئ!", + "You will arrive to your destination after ": "راح توصل وجهتك بعد", + "You can cancel Ride now": "ممكن تلغي المشوار الحين", + "You Can cancel Ride After Captain did not come in the time": + "ممكن تلغي المشوار بعد ما الكابتن ما يوصل في الوقت المحدد", + "If you in Car Now. Press Start The Ride": + "إذا أنت في السيارة الحين. اضغط على بدء الرحلة", + "You Dont Have Any amount in": "ما عندك أي مبلغ في", + "Wallet!": "المحفظة!", + "You Have": "لديك", + "Save Credit Card": "حفظ بطاقة الائتمان", + "Show Promos": "إظهار العروض الترويجية", + "10 and get 4% discount": "10 واحصل على خصم 4%", + "20 and get 6% discount": "20 واحصل على خصم 6%", + "40 and get 8% discount": "40 واحصل على خصم 8%", + "100 and get 11% discount": "100 واحصل على خصم 11%", + "Pay with Your PayPal": "ادفع باستخدام PayPal", + "You will choose one of above !": "راح تختار واحد من اللي فوق!", + "Delete My Account": "حذف حسابي", + "Edit Profile": "تعديل الملف الشخصي", + "Name": "الاسم", + "Update Gender": "تحديث الجنس", + "Education": "التعليم", + "Update Education": "تحديث التعليم", + "Employment Type": "نوع التوظيف", + "SOS Phone": "هاتف الطوارئ", + "High School Diploma": "شهادة الثانوية العامة", + "Associate Degree": "درجة الدبلوم", + "Bachelor's Degree": "بكالوريوس", + "Master's Degree": "ماجستير", + "Doctoral Degree": "دكتوراه", + "Copy this Promo to use it in your Ride!": + "انسخ العرض هذا عشان تستخدمه في مشوارك!", + "To change some Settings": "لتغيير بعض الإعدادات", + "Order Request Page": "صفحة طلب الطلب", + "Rouats of Trip": "طرق الرحلة", + "Passenger Name is ": "اسم الراكب هو ", + "Total From Passenger is ": "المبلغ الإجمالي من الراكب هو ", + "Duration To Passenger is ": "المدة للوصول للراكب هي ", + "Distance To Passenger is ": "المسافة للوصول للراكب هي ", + "Total For You is ": "المبلغ الإجمالي ليك هو ", + "Distance is ": "المسافة هي ", + " KM": " كيلومتر", + "Duration of Trip is ": "مدة الرحلة هي ", + " Minutes": " دقائق", + "Apply Order": "قبول الطلب", + "Refuse Order": "رفض الطلب", + "Rate Captain": "تقييم الكابتن", + "Enter your Note": "أدخل ملاحظتك", + "Type something...": "اكتب شي...", + "Submit rating": "إرسال التقييم", + "Rate Passenger": "تقييم الراكب", + "Ride Summary": "ملخص الرحلة", + "welcome_message": "مرحباً بك في Intaleq!", + "app_description": + "Intaleq هو تطبيق موثوق وآمن وسهل الوصول إليه لمشاركة الركوب.", + "get_to_destination": "اذهب إلى وجهتك بسرعة وسهولة.", + "get_a_ride": "مع Intaleq، تقدر تحصل على رحلة لوجهتك في دقايق.", + "safe_and_comfortable": "استمتع برحلة آمنة ومريحة.", + "committed_to_safety": + "Intaleq ملتزمة بالسلامة، وكل الكباتن عندنا يتم فحصهم زين ويتعمل لهم فحص خلفية.", + // "Driver Applied the Ride for You": "السواق طلب المشوار ليك", + // "Show latest promo": "أظهر آخر عرض ترويجي", + // "Cancel Trip": "إلغاء الرحلة", + // "Passenger Cancel Trip": "الراكب ألغى الرحلة", + // "Accepted Ride": "تم قبول الرحلة", + "your ride is Accepted": "تم قبول رحلتك", + + // "Trip is Begin": "بدأت الرحلة", + "Driver is waiting at pickup.": "السائق ينتظرك عند نقطة الاستلام.", + "Driver is on the way": "السائق في الطريق", + "Contact Options": "خيارات الاتصال", + "Send a custom message": "أرسل رسالة مخصصة", + "Type your message": "اكتب رسالتك", + // "Hi ,I will go now": "مرحبا، أنا بتحرك الحين", + // "Passenger come to you": "الراكب جاي لك", + // "Hi ,I Arrive your site": "مرحبا، وصلت مكانك", + // "Driver Finish Trip": "السواق أنهى الرحلة", + // "you will pay to Driver": "بتدفع للسواق", + // "Driver Cancel Your Trip": "السواق ألغى رحلتك", + // "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + // "بتدفع للسواق تكلفة وقته، شوف محفظتك في Intaleq", + // "I will go now": "أنا بتحرك الحين", + "You Have Tips": "عندك بقشيش", + " tips\nTotal is": " بقشيش\nالمجموع هو", + // "No,I want": "لا، أبي", + "Your fee is ": "الأجرة بتاعتك هي ", + // "Do you want to pay Tips for this Driver": + // "هل تريد دفع بقشيش للسواق هذا؟", + "Tip is ": " مبلغ البقشيش هو", + + "Are you want to wait drivers to accept your order": + "تبي تنتظر لحد ما السواقين يقبلون طلبك؟", + + "This price is fixed even if the route changes for the driver.": + "السعر هذا ثابت حتى لو المسار تغير للسواق.", + "The price may increase if the route changes.": + "احتمالية زيادة السعر عند تغيير المسار", + "The captain is responsible for the route.": + "الكابتن مسؤول عن المسار", + "We are search for nearst driver": "بندور على أقرب سواق", + "Your order is being prepared": "جاري تجهيز الطلب بتاعك", + "The drivers are reviewing your request": "السواقين يدرسون طلبك", + "Your order sent to drivers": "تم إرسال طلبك للسواقين", + "You can call or record audio of this trip": + "ممكن تتصل أو تسجل صوت للرحلة هذه", + "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": + "بدأت الرحلة! براحتك تتصل بأرقام الطوارئ، تشارك رحلتك، أو تفعل التسجيل الصوتي للرحلة", + // "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + // "الرجاء التأكد من جميع أغراضك الشخصية وإضافة باقي الأجرة في محفظتك قبل النزول. شكراً لاختيارك تطبيق Intaleq", + // "Don’t forget your personal belongings.": "لا تنسى متعلقاتك الشخصية.", + "Camera Access Denied.": "تم رفض الوصول للكاميرا.", + "Open Settings": "افتح الإعدادات", + "GPS Required Allow !.": "تفعيل GPS مطلوب!", + "Your Account is Deleted": "تم حذف حسابك", + "Are you sure to delete your account?": + "أنت متأكد إنك تبي تحذف حسابك؟", + "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": + "بياناتك راح تتمسح بعد أسبوعين\nوما راح تقدر ترجع تستخدم التطبيق ثاني بعد شهر", + "Enter Your First Name": "أدخل اسمك الأول", + "Are you Sure to LogOut?": "أنت متأكد إنك تبي تسجل الخروج؟", + "Email Wrong": "البريد الإلكتروني غلط", + "Email you inserted is Wrong.": "البريد الإلكتروني اللي أدخلته غلط.", + "You have finished all times ": "لقد استنفدت كل المحاولات", + "if you want help you can email us here": + "إذا تبي مساعدة ممكن تراسلنا إيميل هنا", + "Thanks": "شكراً", + "Email Us": "راسلنا إيميل", + "I cant register in your app in face detection ": + "مو قادر أسجل في تطبيقكم بسبب كشف الوجه", + "Hi": "مرحباً", + "No face detected": "لم يتم الكشف عن أي وجه", + "Image detecting result is ": "نتيجة الكشف عن الصورة هي", + "from 3 times Take Attention": "من 3 محاولات انتبه", + "Be sure for take accurate images please\nYou have": + "الرجاء التأكد من التقاط صور دقيقة\nعندك", + "image verified": "الصورة موثقة", + "Next": "التالي", + "There is no help Question here": "ما فيه أسئلة مساعدة هنا", + + "You dont have Points": "ما عندك نقاط", + "You Are Stopped For this Day !": "تم توقيفك لهاليوم!", + "You must be charge your Account": "يجب إعادة شحن رصيد النقاط", + "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": + "رفضت 3 رحلات اليوم وهذا السبب\nنلتقي باكر!", + "Recharge my Account": "ادفع رسوم من حسابي", + "Ok , See you Tomorrow": "تمام، نلتقي باكر", + "You are Stopped": "تم توقيفك", + "Connected": "متصل", + "Not Connected": "غير متصل", + "Your are far from passenger location": "أنت بعيد عن مكان الراكب", + "go to your passenger location before\nPassenger cancel trip": + "اذهب إلى مكان الراكب قبل ما\nيلغي الراكب الرحلة", + "You will get cost of your work for this trip": + "راح تحصل على تكاليف عملك لهذه الرحلة", + " in your wallet": "في محفظتك", + "you gain": "ربحت", + + "Order Cancelled by Passenger": "تم إلغاء الطلب من قبل الراكب", + "Success": "نجاح", + "Feedback data saved successfully": "تم حفظ بيانات التعليقات بنجاح", + "No Promo for today .": "ما فيه عروض ترويجية اليوم.", + "Select your destination": "اختار وجهتك", + "Search for your Start point": "ابحث عن نقطة الانطلاق", + "Search for waypoint": "ابحث عن النقطة الآلية", + "Current Location": "الموقع الحالي", + "Add Location 1": "إضافة الموقع 1", + "You must Verify email !.": "يجب التحقق من البريد الإلكتروني!", + "Cropper": "القاصة", + "Saved Sucssefully": "تم الحفظ بنجاح", + "Select Date": "اختر التاريخ", + "Birth Date": "تاريخ الميلاد", + "Ok": "موافق", + "the 500 points equal 30 JOD": "الـ 500 نقطة تساوي 30 دينار أردني", + "the 500 points equal 30 JOD for you \nSo go and gain your money": + "الـ 500 نقطة تساوي 30 دينار أردني\nفاستحق فلوسك واكسب النقاط", + "token updated": "تم تحديث الرمز", + "Add Location 2": "إضافة الموقع 2", + "Add Location 3": "إضافة الموقع 3", + "Add Location 4": "إضافة الموقع 4", + "Waiting for your location": "في انتظار موقعك", + "Search for your destination": "ابحث عن وجهتك", + "Hi! This is": "مرحباً! أنا", + " I am using": " أنا أستخدم", + " to ride with": " للركوب مع", + " as the driver.": " كسائق.", + "is driving a ": "يقود", + " with license plate ": "بلوحة ترخيص", + " I am currently located at ": "أنا حالياً في", + "Please go to Car now ": "الرجاء التحرك إلى السيارة الآن", + "You will receive a code in WhatsApp Messenger": + "سوف تتلقى رمزًا في واتساب ماسنجر", + "If you need assistance, contact us": + "إذا كنت بحاجة إلى المساعدة، تواصل معنا", + "Promo Ended": "انتهى العرض", + "Enter the promo code and get": "أدخل رمز الترويج واحصل على", + "DISCOUNT": "خصم", + "No wallet record found": "لم يتم العثور على سجل محفظة", + "for": "لمدة", + "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": + "Intaleq هو أكثر تطبيق آمن لمشاركة الركوب ويقدم مميزات كثيرة للكباتن والركاب. إحنا نقدم أقل نسبة عمولة وهي 8% بس، وهذا يضمن إنك تاخذ أحسن قيمة لمشاويرك. تطبيقنا فيه تأمين لأحسن الكباتن، صيانة دورية للسيارات مع أحسن المهندسين، وخدمات على الطريق لضمان تجربة محترمة وعالية الجودة لكل المستخدمين.", + "You can contact us during working hours from 12:00 - 19:00.": + "ممكن تتصل بينا في مواعيد العمل من الساعة 12:00 للساعة 7:00 مساءً.", + + "Choose a contact option": "اختر طريقة الاتصال", + "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": + "مواعيد العمل من الساعة 12:00 للساعة 7:00 مساءً.\nممكن تبعت رسالة واتساب أو إيميل.", + "Promo code copied to clipboard!": "تم نسخ رمز العرض إلى الحافظة!", + "Copy Code": "نسخ الرمز", + "Your invite code was successfully applied!": + "تم تطبيق رمز الدعوة بنجاح!", + "Payment Options": "خيارات الدفع", + "wait 1 minute to receive message": + "انتظر دقيقة واحدة لاستلام الرسالة", + "Promo Copied!": "تم نسخ العرض!", + "You have copied the promo code.": "تم نسخ رمز العرض.", + "Valid Until:": "صالح حتى:", + "Select Payment Amount": "اختر مبلغ الدفع", + "The promotion period has ended.": "انتهت فترة العرض.", + "Promo Code Accepted": "تم قبول كود العرض", + "Tap on the promo code to copy it!": "اضغط على رمز العرض لنسخه!", + "Lowest Price Achieved": "تم الوصول إلى أقل سعر", + "Cannot apply further discounts.": + "لا يمكن تطبيق المزيد من الخصومات.", + "Promo Already Used": "تم استخدام كود العرض بالفعل", + "Invitation Used": "تم استخدام الدعوة", + "You have already used this promo code.": + "لقد استخدمت هذا الكود بالفعل.", + "Insert Your Promo Code": "أدخل كود العرض الخاص بك", + "Enter promo code here": "أدخل كود العرض هنا", + "Please enter a valid promo code": "يرجى إدخال كود عرض صالح", + "Awfar Car": "أوفر كار", + "Old and affordable, perfect for budget rides.": + "سيارة قديمة وبسعر معقول، مثالية للمشاوير الاقتصادية.", + " If you need to reach me, please contact the driver directly at": + "إذا محتاج تتواصل معاي، يرجى التواصل مع السواق مباشرة على", + "No Car or Driver Found in your area.": + "لم يتم العثور على سيارة أو سواق في منطقتك.", + "Please Try anther time ": "الرجاء المحاولة في وقت آخر", + "There no Driver Aplly your order sorry for that ": + "ما فيه سواق قبل طلبك، آسفين على كده", + "Trip Cancelled": "تم إلغاء الرحلة", + "The Driver Will be in your location soon .": + "السواق بيكون في موقعك قريبًا.", + "The distance less than 500 meter.": "المسافة أقل من 500 متر.", + "Promo End !": "انتهاء العرض!", + "There is no notification yet": "لا توجد إشعارات بعد", + "Use Touch ID or Face ID to confirm payment": + "استخدم Touch ID أو Face ID لتأكيد الدفع", + "Contact us for any questions on your order.": + "تواصل معانا لو عندك أي استفسارات بخصوص طلبك.", + "Pyament Cancelled .": "تم إلغاء الدفع.", + "type here": "اكتب هنا", + "Scan Driver License": "مسح رخصة القيادة", + "Please put your licence in these border": + "الرجاء وضع رخصتك داخل هذا الإطار", + "Camera not initialized yet": "الكاميرا لم يتم تشغيلها بعد", + "Take Image": "التقاط الصورة", + "AI Page": "صفحة الذكاء الاصطناعي", + "Take Picture Of ID Card": "التقاط صورة لبطاقة الهوية", + "Take Picture Of Driver License Card": + "التقاط صورة لبطاقة رخصة القيادة", + "We are process picture please wait ": + "نقوم بمعالجة الصورة، الرجاء الانتظار", + "There is no data yet.": "لا توجد بيانات بعد.", + "Name :": "الاسم:", + "Drivers License Class: ": "فئة رخصة القيادة:", + "Document Number: ": "رقم المستند:", + "Address: ": "العنوان:", + "Height: ": "الطول:", + "Expiry Date: ": "تاريخ الانتهاء:", + "Date of Birth: ": "تاريخ الميلاد:", + "You can\'t continue with us .\nYou should renew Driver license": + "لا يمكنك الاستمرار معانا. يجب تجديد رخصة القيادة", + "Detect Your Face ": "التعرف على وجهك", + "Go to next step\nscan Car License.": + "اذهب للخطوة اللي بعدها\nوامسح رخصة السيارة.", + "Name in arabic": "الاسم باللغة العربية", + "Drivers License Class": "فئة رخصة القيادة", + "Date of Birth": "تاريخ الميلاد", + // "Select date and time of trip": "اختر تاريخ ووقت الرحلة", + "Selected Date": "التاريخ المحدد", + "Select Time": "اختر الوقت", + "Selected Time": "الوقت المحدد", + // "OK": "موافق", + // "Cancel": "إلغاء", + "Selected Date and Time": "التاريخ والوقت المحددين", + "Lets check Car license ": "يلا نفحص رخصة السيارة", + "Car": "السيارة", + "Plate": "لوحة السيارة", + "N/A": "غير متوفر", + "Rides": "الرحلات", + "Age": "العمر", + // "Education": "التعليم", + // "Color": "اللون", + // "Displacement": "السعة", + // "Fuel": "الوقود", + "Selected driver": "السائق اللي اخترته", + "Lets check License Back Face": "يلا نفحص الوجه الخلفي للرخصة", + "Car License Card": "بطاقة رخصة السيارة", + "No image selected yet": "لم يتم اختيار أي صورة بعد", + "Made :": "الصنع:", + "model :": "الموديل:", + "VIN :": "رقم الشاسيه:", + "year :": "السنة:", + "ُExpire Date": "تاريخ الانتهاء", + "Login Driver": "تسجيل دخول السائق", + "Password must br at least 6 character.": + "كلمة المرور لازم تكون 6 حروف على الأقل.", + "if you don\'t have account": "إذا ما عندك حساب", + "Here recorded trips audio": "هنا تسجيلات صوتية للرحلات", + "Register as Driver": "التسجيل كسائق", + // "Privacy Notice": "إخطار الخصوصية", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": + "باختياري 'أوافق' أدناه، قمت بمراجعة والموافقة على شروط الاستخدام والإقرار بـ", + ". I am at least 18 years of age.": ". أنا عمري 18 سنة على الأقل.", + "Log Out Page": "صفحة تسجيل الخروج", + "Log Off": "تسجيل الخروج", + "Register Driver": "تسجيل سائق جديد", + "Verify Email For Driver": "التحقق من البريد الإلكتروني للسائق", + "Admin DashBoard": "لوحة تحكم المدير", + "Your name": "اسمك", + "your ride is applied": "تم قبول الطلب بتاعك", + "Your password": "كلمة المرور بتاعتك", + "H and": "ساعة و", + "LE": "جنيه", + "JOD": "دينار", + "m": "دقيقة", + "We search nearst Driver to you": "بندور على أقرب سواق ليك", + "please wait till driver accept your order": + "الرجاء الانتظار لحد ما السواق يقبل طلبك", + "No accepted orders? Try raising your trip fee to attract riders.": + "ما فيه طلبات مقبولة؟ حاول تزيد أجرة المشوار لجذب الركاب.", + "You should select one": "لازم تختار واحد", + "The driver accept your order for": "السواق قبل طلبك بمبلغ", + "Increase Fee": "زيد الأجرة", + "No, thanks": "لا، شكرا", + "The driver on your way": "الكابتن في طريقه إليك", + "Total price from ": "السعر الإجمالي من ", + "Order Details Intaleq": "طلب سريع", + // "Order Applied": "تم قبول الطلب", + "accepted your order": "قبل طلبك", + // "We regret to inform you that another driver has accepted this order.": + // "نأسف لإبلاغك بأن سائق آخر قد قبل هذا الطلب", + "Selected file:": "الملف المختار:", + "Your trip cost is": "تكلفة رحلتك هي", + "this will delete all files from your device": + "حذف هذا راح يمسح كل الملفات من جهازك", + " in your": "في محفظتك", + "Exclusive offers and discounts always with the Intaleq app": + "عروض وخصومات حصرية دائمًا مع تطبيق Intaleq", + // "Please go to Car Driver": "الرجاء التوجه إلى سائق السيارة", + " wallet due to a previous trip.": "بسبب رحلة سابقة.", + "Submit Question": "اطرح سؤال", + "Please enter your Question.": "الرجاء إدخال سؤالك.", + "Help Details": "تفاصيل المساعدة", + "No trip yet found": "لم يتم حجز أي رحلة بعد", + "No Response yet.": "ما فيه رد للحين.", + " You Earn today is ": "اللي كسبته اليوم هو", + " You Have in": "عندك في", + "Total points is ": "إجمالي النقاط هو", + "Total Connection Duration:": "إجمالي مدة الاتصال:", + " H and": "ساعة و", + "Passenger name : ": "اسم الراكب", + "Cost Of Trip IS ": "تكلفة الرحلة هي", + "Arrival time": "وقت الوصول", + "arrival time to reach your point": "الوقت المتوقع للوصول إلى وجهتك", + "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "بالنسبة لمشاوير Intaleq والسكوتر، السعر ينحسب بشكل تلقائي. أما مشاوير الراحة، فالسعر يكون حسب الوقت والمسافة.", + "Hello this is Driver": "مرحباً، أنا السواق", + "Is the Passenger in your Car ?": "هل الراكب معاك في السيارة؟", + "Please wait for the passenger to enter the car before starting the trip.": + "الرجاء الانتظار لحد ما الراكب يركب السيارة قبل ما تبدأ المشوار.", + "No ,still Waiting.": "لا، للحين أنتظر.", + "I arrive you": "أنا وصلت لك", + "I Arrive your site": "أنا وصلت مكانك", + "You are not in near to passenger location": + "أنت مو قريب من مكان الراكب", + "please go to picker location exactly": + "الرجاء الذهاب إلى موقع الراكب بالضبط", + "You Can Cancel Trip And get Cost of Trip From": + "ممكن تلغي المشوار وتاخذ التكلفة من", + "Are you sure to cancel?": "أنت متأكد إنك تبي تلغي؟", + // "Yes": "نعم", + "Insert Emergincy Number": "أدخل رقم الطوارئ", + "Best choice for comfort car and flexible route and stops point": + "أفضل اختيار لسيارة مريحة ومسار مرن ونقط وقوف", + "Insert": "إدخال", + "This is for scooter or a motorcycle.": "هذا للتوصيل أو للموتوسيكل", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "المشوار هذا يروح مباشرة من نقطة البداية لنقطة النهاية بسعر ثابت. والسواق لازم يلتزم بالمسار المحدد.", + "You can decline a request without any cost": + "تقدر ترفض الطلب بدون أي تكلفة", + "Perfect for adventure seekers who want to experience something new and exciting": + "مثالي لمحبي المغامرة اللي يبون يجربون أشياء جديدة ومثيرة", + "My current location is:": "موقعي الحالي هو:", + "and I have a trip on": "وعندي مشوار على", + "App with Passenger": "التطبيق\nمع الراكب", + "You will be pay the cost to driver or we will get it from you on next trip": + "راح تدفع التكلفة للسواق أو راح ناخذها منك في المشوار اللي جاي", + "Trip has Steps": "الرحلة لها خطوات", + "Distance from Passenger to destination is ": + "المسافة من الراكب للوجهة هي", + "price is": "التكلفة", + "This ride type does not allow changes to the destination or additional stops": + "نوع المشوار هذا ما يسمح بتغيير الوجهة ولا إضافة وقفات.", + "This price may be changed": "خلي بالك السعر ممكن يتغير", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "حتى لو ما فيه خط، لا تقلق! كلم السواق بتاعك من خلال التطبيق بتاعنا. نستخدم تكنولوجيا حديثة عشان نحافظ على خصوصيتك.", + "This ride type allows changes, but the price may increase": + "نوع المشوار هذا يسمح بالتغييرات، بس السعر ممكن يزيد", + "Select one message": "اختار رسالة", + + "I'm waiting for you": "أنا في انتظارك", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "لاحظنا إن السرعة تزيد عن 100 كم/ساعة. يرجى التباطؤ حفاظًا على سلامتك. لو حسيت بعدم الأمان، ممكن تشارك تفاصيل رحلتك مع حد تثق فيه أو تتصل بالشرطة عن طريق زر الطوارئ الأحمر.", + "Warning: Intaleqing detected!": "تحذير: تم رصد السرعة الزائدة!", + "Please help! Contact me as soon as possible.": + "الرجاء المساعدة! اتصل بي في أقرب وقت ممكن", + "Share Trip Details": "مشاركة تفاصيل الرحلة", + "Car Plate is ": "رقم اللوحة", + "VIP Order": "طلب VIP", + "the 300 points equal 300 L.E for you \nSo go and gain your money": + "اكسب 300 جنيه! كل 300 نقطة تساوي 300 جنيه. يلا استغل نقاطك!", + "the 300 points equal 300 L.E": "الـ 300 نقطة تساوي 300 جنيه ليك", + "The payment was not approved. Please try again.": + "الدفع ما اتقبل. يرجى المحاولة مرة ثانية.", + "Payment Failed": "فشل الدفع", + "Error": "خطأ", + "This is a scheduled notification.": "هذا إشعار مجدول.", + "An error occurred during the payment process.": + "حدث خطأ أثناء عملية الدفع.", + "The payment was approved.": "تمت الموافقة على الدفع.", + "Payment Successful": "نجح الدفع", + "No ride found yet": "ما فيه طلبات متاحة حاليًا", + "Accept Order": "اقبل الطلب", + // "reject your order.": "رفض طلبك.", + "Bottom Bar Example": "مثال لشريط التنقل السفلي", + "Driver phone": "رقم السواق", + "Statistics": "الإحصائيات", + "Origin": "نقطة الانطلاق", + "Destination": "الوجهة", + "Driver Name": "اسم السائق", + "Driver Car Plate": "لوحة السيارة", + "Available for rides": "متاح للمشاوير", + "Scan Id": "مسح الهوية", + "Camera not initilaized yet": "الكاميرا ما اشتغلت للحين", + "Scan ID MklGoogle": "مسح هوية MklGoogle", + "Language": "اللغة", + "Jordan": "الأردن", + "USA": "الولايات المتحدة الأمريكية", + "Egypt": "مصر", + "Turkey": "تركيا", + "Saudi Arabia": "المملكة العربية السعودية", + "Qatar": "قطر", + "Bahrain": "البحرين", + "Kuwait": "الكويت", + "But you have a negative salary of": "لكن عندك رصيد سالب بقيمة", + "Promo Code": "كود ترويجي", + "Your trip distance is": "مسافة رحلتك هي", + "Enter promo code": "أدخل كود ترويجي", + "You have promo!": "عندك عرض ترويجي!", + "Cost Duration": "تكلفة المدة", + "Duration is": "المدة هي", + "Leave": "مغادرة", + "Join": "انضمام", + "Heading your way now. Please be ready.": + "أنا في طريقي إليك الحين. يرجى الاستعداد.", + "Approaching your area. Should be there in 3 minutes.": + "أقترب من منطقتك. يفترض أوصل خلال 3 دقايق.", + "There's heavy traffic here. Can you suggest an alternate pickup point?": + "فيه زحمة مرور شديدة هنا. ممكن تقترح مكان ثاني للاستلام؟", + "This ride is already taken by another driver.": + "المشوار هذا أخذه سواق ثاني خلاص.", + "You Should be select reason.": "يجب أن تختار سبب.", + + "Waiting for Driver ...": "في انتظار السواق...", + "Latest Recent Trip": "آخر مشوار سويته", + "from your list": "من قائمتك", + "Do you want to change Work location": "تبي تغير مكان شغلك؟", + "Do you want to change Home location": "تبي تغير مكان بيتك؟", + "We Are Sorry That we dont have cars in your Location!": + "نعتذر لعدم وجود سيارات في موقعك!", + "Choose from Map": "اختر من الخريطة", + "Pick your ride location on the map - Tap to confirm": + "حدد مكان الالتقاء على الخريطة - اضغط للتأكيد", + // "To Work": "إلى العمل", + // "Are you want to go this site": "عايز تروح المكان ده؟", + "Closest & Cheapest": "الأقرب والأرخص", + // "Work Saved": "تم حفظ مكان الشغل", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "Intaleq هو تطبيق توصيل آمن وموثوق وسهل الاستخدام.", + "With Intaleq, you can get a ride to your destination in minutes.": + "مع Intaleq، تقدر توصل لوجهتك في دقايق.", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "Intaleq ملتزمة بالأمان، وكل الكباتن يتم فحصهم بدقة والتحقق من خلفيتهم.", + // "To Home": "إلى المنزل", + // "Home Saved": "تم حفظ مكان البيت", + // "Destination selected": "تم اختيار الوجهة:", + // "Now select start pick": "اختار مكان الانطلاق الحين:", + "Pick from map": "اختيار من الخريطة", + // "Click here point": "حدد هذه النقطة", + "No Car in your site. Sorry!": "ما فيه سيارة في موقعك. آسف!", + "Nearest Car for you about ": "أقرب سيارة ليك على بعد حوالي ", + // "N/A": "غير متوفر", + "From :": "من:", + "Get Details of Trip": "عرض تفاصيل الرحلة", + "If you want add stop click here": "إذا تبي تضيف وقفة اضغط هنا", + // "Driver": "السائق", + "Where you want go ": "وين تبي تروح؟", + "My Card": "بطاقتي", + "Start Record": "بدء التسجيل", + "Wallet": "المحفظة", + "History of Trip": "سجل الرحلات", + "Helping Center": "مركز المساعدة", + "Record saved": "تم حفظ التسجيل", + "Trips recorded": "الرحلات المسجلة", + "Select Your Country": "اختر بلدك", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "لتلقي أدق المعلومات لموقعك، يرجى اختيار بلدك أدناه. هذا راح يساعد على تخصيص تجربة التطبيق والمحتوى لبلدك.", + "Are you sure to delete recorded files": + "أكيد تبي تمسح الملفات الصوتية المسجلة؟", + "Select recorded trip": "اختر الملف الصوتي المسجل", + "Card Number": "رقم البطاقة", + "Hi, Where to ": "مرحبا، وين تبي تروح؟", + "Pick your destination from Map": "اختار وجهتك من الخريطة", + "Add Stops": "إضافة محطات", + "Get Direction": "عرض الاتجاهات", + "Add Location": "إضافة موقع", + "Switch Rider": "تبديل الراكب", + "You will arrive to your destination after timer end.": + "راح توصل وجهتك بعد انتهاء العداد.", + "You can cancel trip": "تقدر تلغي الرحلة", + "The driver waitting you in picked location .": + "السواق ينتظرك في المكان اللي اخترته.", + + "Pay with Your": "ادفع بـ", + "Pay with Credit Card": "ادفع ببطاقة الائتمان", + "Payment History": "سجل المدفوعات", + "Show Promos to Charge": "عرض العروض للشحن", + "Point": "نقطة", + "How many hours would you like to wait?": "كم ساعة تبي تنتظر؟", + "Driver Wallet": "محفظة السائق", + "Choose between those Type Cars": "اختار من بين أنواع السيارات هذي", + "hour": "ساعة", + "Select Waiting Hours": "اختر ساعات الانتظار", + "Total Points is": "إجمالي النقاط هو", + "You will receive a code in SMS message": + "سوف تتلقى رمزًا في رسالة نصية", + "Done": "تم", + "Total Budget from trips is ": "إجمالي المبلغ المستحق من الرحلات هو", + "Total Amount:": "المبلغ الإجمالي:", + "Total Budget from trips by\nCredit card is ": + "إجمالي المبلغ المستحق من الرحلات عن طريق\nبطاقة الائتمان هو", + "This amount for all trip I get from Passengers": + "هذا المبلغ اللي حصلت عليه من كل الرحلات من الركاب", + "Pay from my budget": "ادفع من رصيدي", + "This amount for all trip I get from Passengers and Collected For me in": + "هذا المبلغ اللي حصلت عليه من كل الرحلات من الركاب وتم تجميعه لي في", + "You can buy points from your budget": "تقدر تشتري نقاط من رصيدك", + "insert amount": "أدخل المبلغ", + "You can buy Points to let you online\nby this list below": + "تقدر تشتري نقاط عشان تبقى متصل\nمن القائمة هذه تحت", + "Create Wallet to receive your money": "إنشاء محفظة لاستقبال أموالك", + "Enter your feedback here": "اكتب ملاحظاتك هنا", + "Please enter your feedback.": "يرجى إدخال ملاحظاتك.", + "Feedback": "ملاحظات", + "Submit ": "إرسال", + "Click here to Show it in Map": "اضغط هنا لعرضه على الخريطة", + "Canceled": "تم الإلغاء", + "Type your Email": "اكتب بريدك الإلكتروني", + "No I want": "لا أريد", + "Email is": "البريد الإلكتروني هو", + "Phone Number is": "رقم الهاتف هو", + "Date of Birth is": "تاريخ الميلاد هو", + "Sex is ": "النوع هو ", + "Car Details": "تفاصيل السيارة", + "VIN is": "رقم الشاسيه هو", + "Color is ": "اللون هو ", + "Make is ": "الشركة المصنعة", + "Model is": "الموديل هو", + "Year is": "السنة هي", + "Expiration Date ": "تاريخ الانتهاء ", + "Edit Your data": "تعديل بياناتك", + "write vin for your car": "اكتب رقم الشاسيه لسيارتك", + "VIN": "رقم الشاسيه", + "write Color for your car": "اكتب لون سيارتك", + "write Make for your car": "اكتب الشركة المصنعة لسيارتك", + // "Make": "الشركة المصنعة", + "write Model for your car": "اكتب موديل سيارتك", + // "Model": "الموديل", + "write Year for your car": "اكتب سنة صنع سيارتك", + // "Expiration Date": "تاريخ الانتهاء", + "write Expiration Date for your car": "اكتب تاريخ انتهاء رخصة سيارتك", + "Tariffs": "التعريفات", + "Minimum fare": "الحد الأدنى للأجرة", + "Maximum fare": "الحد الأقصى للأجرة", + "Flag-down fee": "رسوم فتح العداد", + "Including Tax": "شامل الضريبة", + "BookingFee": "رسوم الحجز", + "Morning": "الصباح", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "من 07:30 حتى 10:30 (الخميس، الجمعة، السبت، الاثنين)", + "Evening": "المساء", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "من 12:00 حتى 15:00 (الخميس، الجمعة، السبت، الاثنين)", + "Night": "الليل", + "You have in account": "عندك في الحساب", + "Select Country": "اختر الدولة", + "Ride Today : ": "عدد رحلات اليوم: ", + "After this period\nYou can\'t cancel!": + "بعد الفترة هذه\nما تقدر تلغي!", + "from 23:59 till 05:30": "من 23:59 حتى 05:30", + "Rate Driver": "تقييم السائق", + "Total Cost is ": "صافي الربح", + "Write note": "اكتب ملاحظة", + "Time to arrive": "وقت الوصول", + "Ride Summaries": "ملخصات الرحلات", + "Total Cost": "المبلغ الإجمالي", + "Average of Hours of": "متوسط ساعات", + " is ON for this month": "في هذا الشهر", + "Days": "أيام", + "Total Hours on month": "إجمالي الساعات في الشهر", + "Counts of Hours on days": "عدد ساعات الأيام", + "OrderId": "رقم الرحلة", + "created time": "وقت الرحلة", + "Intaleq Over": "سرعة عالية", + "I will slow down": "حاضر بهدي السرعة", + "Map Passenger": "خريطة الراكب", + "Be Slowly": "بالراحة شوية في السرعة", + "If you want to make Google Map App run directly when you apply order": + "لو تبي تطبيق خرائط جوجل يشتغل تلقائي لما تطلب الخدمة", + "You can change the language of the app": "تقدر تغير لغة التطبيق", + "Your Budget less than needed": "القيمة المدخلة أقل من رصيدك", + "You can change the Country to get all features": + "تقدر تغير الدولة عشان تحصل على كل المميزات", + "Change Country": "تغيير الدولة" + }, + + "ar-ma": { + "Order": "طلب", + "OrderVIP": "طلب VIP", + "Cancel Trip": "إلغي الرحلة", + "Passenger Cancel Trip": "الزبون ألغى الرحلة", + "VIP Order": "طلب VIP", + "The driver accepted your trip": "السائق قبل الرحلة ديالك", + "message From passenger": "رسالة من الزبون", + "Cancel": "إلغاء", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "الرحلة ملغية. الفلوس ديال الرحلة غادي تزاد في الجيب ديالك.", + "token change": "تبديل الرمز", + "face detect": "كشف الوجه", + "Face Detection Result": "نتيجة كشف الوجه", + "similar": "مشابه", + "not similar": "ماشي مشابه", + "Hi ,I will go now": "مرحبا، أنا غادي نمشي دابا", + "Passenger come to you": "الزبون جاي عندك", + "Call Income": "مكالمة واردة", + "Call Income from Passenger": "مكالمة واردة من الزبون", + "Criminal Document Required": "مطلوب وثيقة جنائية", + "You should have upload it .": "خاصك تكون حملتيها.", + "Call End": "نهاية المكالمة", + "The order has been accepted by another driver.": + "الطلب تقبل من عند سائق آخر.", + "The order Accepted by another Driver": "الطلب تقبل من عند سائق آخر", + "We regret to inform you that another driver has accepted this order.": + "كنتأسفوا نبلغوك باللي سائق آخر قبل هذا الطلب.", + "Driver Applied the Ride for You": "السائق قدم الطلب ليك", + "Applied": "تطبق", + "Hi ,I Arrive your site": "مرحبا، وصلت للموقع ديالك", + "Please go to Car Driver": "الله يرحم الوالدين سير عند سائق السيارة", + "Ok I will go now.": "واخا، غادي نمشي دابا.", + "Accepted Ride": "الرحلة مقبولة", + "Driver Accepted the Ride for You": "السائق قبل الرحلة ليك", + "Promo": "عرض ترويجي", + "Show latest promo": "عرض آخر عرض ترويجي", + "Trip Monitoring": "مراقبة الرحلة", + "Driver Is Going To Passenger": "السائق غادي في الطريق ليك", + "Please stay on the picked point.": + "الله يرحم الوالدين بقا في نقطة الالتقاط اللي تحددات.", + "message From Driver": "رسالة من السائق", + "Trip is Begin": "الرحلة بدات", + "Cancel Trip from driver": "إلغاء الرحلة من السائق", + "We will look for a new driver.\nPlease wait.": + "غادي نقلبوا على سائق جديد.\nالله يرحم الوالدين تسنى.", + "The driver canceled your ride.": "السائق ألغى الرحلة ديالك.", + "Driver Finish Trip": "السائق سالا الرحلة", + "you will pay to Driver": "غادي تخلص السائق", + "Don’t forget your personal belongings.": "متنساش حوايجك الشخصية.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "الله يرحم الوالدين تأكد باللي معاك كل حوايجك الشخصية وباللي أي مبلغ باقي، إلا كان، تزاد في الجيب ديالك قبل ما تمشي. شكرا لاستعمالك تطبيق Intaleq", + "Finish Monitor": "سالي المراقبة", + "Trip finished": "الرحلة سالات", + "Call Income from Driver": "مكالمة واردة من السائق", + "Driver Cancelled Your Trip": "السائق ألغى الرحلة ديالك", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "غادي تخلص السائق غادي تخلص تكلفة وقت السائق شوف الجيب ديال Intaleq ديالك", + "Order Applied": "الطلب طبق", + + //firebase above + +// + "Where to": "فين غادي؟", + "Where are you going?": "فين غادي؟", + "Quick Actions": "إجراءات سريعة", + "My Wallet": "جيبي", + "Order History": "تاريخ الطلبات", + "Contact Us": "اتصل بنا", + "Driver": "السائق", + "Complaint": "شكاية", + "Promos": "العروض", + "Recent Places": "الأماكن الأخيرة", + "From": "من", + "WhatsApp Location Extractor": "مستخرج موقع واتساب", + "Location Link": "رابط الموقع", + "Paste location link here": "لصق رابط الموقع هنا", + "Go to this location": "سير لهذا الموقع", + "Paste WhatsApp location link": "لصق رابط موقع واتساب", + "Select Order Type": "اختار نوع الطلب", + "Choose who this order is for": "اختار الطلب هذا ديال من؟", + "I want to order for myself": "بغيت نطلب ليا", + "I want to order for someone else": "بغيت نطلب لواحد آخر", + // "Cancel": "إلغاء", + "Order for someone else": "طلب لشخص آخر", + "Order for myself": "طلب ليا", + "Are you want to go this site": "واش باغي تمشي لهذا المكان؟", + // "Yes": "أيوة", + "No": "لا", + "Are you sure to delete this location?": + "متأكد باللي باغي تمسح هذا الموقع؟", + "deleted": "تمسح", + "To Work": "للخدمة", + "Work Saved": "مكان الخدمة تسجل", + "To Home": "للدار", + "Home Saved": "مكان الدار تسجل", + "Destination selected": "الوجهة مختارة", + "Now select start pick": "دابا اختار نقطة البداية", + "OK": "واخا", + "Confirm Pick-up Location": "تأكيد موقع الالتقاء", + "Set Location on Map": "حدد الموقع على الخريطة", + "Nearest Car: ~": "أقرب طوموبيل: ~", + "Nearest Car": "أقرب طوموبيل", + "No cars nearby": "ماكاينش طوموبيلات قريبة", + "Favorite Places": "الأماكن المفضلة", + "No favorite places yet!": "مازال ماكاينش أماكن مفضلة!", + "from your favorites": "من المفضلة ديالك", + "Back": "رجوع", + "Sign in for a seamless experience": + "تسجل الدخول باش تكون تجربة أحسن", + "Sign In with Google": "تسجيل الدخول بجوجل", + "Sign in with Apple": "تسجيل الدخول بآبل", + "Need assistance? Contact us": "محتاج مساعدة؟ عيط لينا", + "User not found": "المستخدم مالقيناهش", + "Email": "البريد الإلكتروني", + "Your email address": "عنوان البريد الإلكتروني ديالك", + "Enter a valid email": "دخل بريد إلكتروني صحيح", + "Password": "كلمة السر", + // "Your password": "كلمة مرورك", + "Enter your password": "دخل كلمة السر ديالك", + "Submit": "إرسال", + "Terms of Use & Privacy Notice": "شروط الاستخدام وإشعار الخصوصية", + "Terms of Use": "شروط الاستخدام", + "Privacy Notice": "سياسة الخصوصية", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the": + "بالضغط على \"موافق\" لتحت، كنأكد باللي قريت ووافقت على", + "and acknowledge the": "وكنقر بـ", + ". I am at least 18 years old.": ". أنا عندي 18 عام ولا كثر.", + + "Continue": "كمل", + "Enable Location Access": "فعل الوصول للموقع", + "We need your location to find nearby drivers for pickups and drop-offs.": + "محتاجين الموقع ديالك باش نلقاو سواقين قرابين للاستلام والتوصيل.", + "Allow Location Access": "السماح بالوصول للموقع", + "You should restart app to change language": + "خاصك تسد التطبيق وتعاود تفتحو باش اللغة تبدل", + "Home Page": "الصفحة الرئيسية", + "To change Language the App": "باش تبدل لغة التطبيق", + "Learn more about our app and mission": + "عرف كثر على التطبيق ديالنا والمهمة ديالنا", + "Promos For Today": "عروض اليوم", + "Choose your ride": "اختار مشوارك", + "Your Journey Begins Here": "الرحلة ديالك كتبدا هنا", + "Bonus gift": "هدية إضافية", + "Pay": "خلص", + "Get": "حصل على", + "Send to Driver Again": "عاود صيفط للسائق", + "Driver Name:": "اسم السائق:", + "No trip data available": "ماكاينش بيانات للرحلة متوفرة", + "Car Plate:": "نمرة الطوموبيل:", + "remaining": "باقي", + "Order Cancelled": "الطلب ملغي", + "You canceled VIP trip": "لغيتي مشوار VIP", + "Passenger cancelled order": "الزبون ألغى الطلب", + "Your trip is scheduled": "الرحلة ديالك مجدولة", + "Don't forget your ride!": "متنساش مشوارك!", + "Trip updated successfully": "الرحلة تحدتات بنجاح", + "Car Make:": "ماركة الطوموبيل:", + "Car Model:": "موديل الطوموبيل:", + "Car Color:": "لون الطوموبيل:", + "Driver Phone:": "نمرة تيليفون السائق:", + "Pre-booking": "حجز مسبق", + "Waiting VIP": "انتظار VIP", + "Driver List": "قائمة السائقين", + "Confirm Trip": "أكد المشوار", + "Select date and time of trip": "حدد التاريخ والوقت ديال المشوار", + "Date and Time Picker": "اختيار التاريخ والوقت", + "Trip Status:": "حالة المشوار:", + "pending": "قيد الانتظار", + "accepted": "مقبول", + "rejected": "مرفوض", + "Apply": "تطبيق", + "Enter your promo code": "دخل رمز الترويج الخاص بك", + "Apply Promo Code": "تطبيق رمز الترويج", + "Scheduled Time:": "الوقت المحدد:", + "No drivers available": "ماكاينش سواقين متوفرين", + "No drivers available at the moment. Please try again later.": + "ماكاينش سواقين متوفرين دابا. حاول مرة أخرى من بعد.", + "you have a negative balance of": "عندك رصيد ناقص ديال", + "Please try again in a few moments": "حاول مرة أخرى بعد لحظات قليلة", + "Unknown Driver": "سائق غير معروف", + "in your": "في الجيب ديالك", + "The driver accepted your order for": "السائق قبل الطلب ديالك بـ", + "wallet due to a previous trip.": "في الجيب ديالك بسبب رحلة سابقة.", + "rides": "مشاوير", + "Add Work": "زيد مكان الخدمة", + "The reason is": "السبب هو", + "User does not have a wallet #1652": "المستخدم معندوش جيب #1652", + "Price of trip": "ثمن المشوار", + "From:": "من:", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "بالنسبة لمشاوير السرعة والتوصيل، الثمن كيتحسب تلقائيا. أما مشاوير الكمفورت، الثمن كيكون على حساب الوقت والمسافة", + "Phone Wallet Saved Successfully": "جيب التيليفون تسجل بنجاح", + "Add wallet phone you use": "زيد نمرة جيب التيليفون اللي كتستعمل", + "Update Available": "تحديث متوفر", + "Phone number must be exactly 11 digits long": + "نمرة التيليفون خاصها تكون 11 رقم بالضبط", + "Insert Wallet phone number": "دخل نمرة جيب التيليفون ديالك", + "Phone number isn't an Egyptian phone number": + "نمرة التيليفون هادي ماشي نمرة مصرية", + "A new version of the app is available. Please update to the latest version.": + "كاين نسخة جديدة من التطبيق متوفرة. الله يرحم الوالدين دير التحديث لآخر نسخة.", + "We use location to get accurate and nearest passengers for you": + "كنستعملو الموقع باش نوصلوك بأقرب ركاب وأدقهم ليك", + "This ride is already applied by another driver.": + "المشوار هذا تقبل من عند سائق آخر خلاص.", + "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": + "كنستعملو الموقع ديالك بالضبط باش نلقاو أقرب سائق متوفر ونديوك معلومات دقيقة على مكان الاستلام والوصول. ممكن تتحكم في هذا من الإعدادات.", + + "Where are you, sir?": "فين وصلتي أسي؟", + "I've been trying to reach you but your phone is off.": + "كنحاول نعيط ليك والتيليفون مسدود.", + "Please don't be late": "الله يرحم الوالدين متأخرش", + "Please don't be late, I'm waiting for you at the specified location.": + "الله يرحم الوالدين متأخرش، أنا كنتسناك في المكان اللي محدد.", + "My location is correct. You can search for me using the navigation app": + "الموقع ديالي مزيان. ممكن تقلب عليا باستعمال تطبيق الملاحة", + "Hello, I'm at the agreed-upon location": + "أهلا، أنا في المكان المتفق عليه", + "How much longer will you be?": "شحال باقي ليك باش توصل؟", + "Phone number is verified before": "نمرة التيليفون مأكدة من قبل", + "Change Ride": "بدل المشوار", + "You can change the destination by long-pressing any point on the map": + "ممكن تبدل الوجهة بالضغط مطولاً على أي نقطة في الخريطة", + "Pick from map destination": "اختار الوجهة ديالك من الخريطة", + "Pick or Tap to confirm": "اختار أو ضغط باش تأكد", + "Accepted your order": "الطلب ديالك تقبل", + "Order Accepted": "الطلب مقبول", + "with type": "مع نوع", + "accepted your order at price": "الطلب ديالك تقبل بثمن", + + "you canceled order": "أنت لغيتي الطلب", + "If you want order to another person": "إلا بغيتي تطلب لشخص آخر", + // "Ok I will go now.": "واخا، أنا غادي دابا.", + // "Hi, I will go now": "أهلا، أنا غادي دابا", + "upgrade price": "طلع الثمن", + "Please enter a correct phone": + "الله يرحم الوالدين دخل نمرة تيليفون صحيحة", + "airport": "مطار", + "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": + "أحسن اختيار لطوموبيل مريحة بمسار مرن ونقط توقف. المطار هذا كيقدم دخول فيزا بهذا الثمن.", + "You can upgrade price to may driver accept your order": + "ممكن تزيد في الثمن باش السائق يقبل الطلب ديالك", + "Change Route": "بدل المسار", + "No Captain Accepted Your Order": "ماكاينش كابيتان قبل الطلب ديالك", + "We are looking for a captain but the price may increase to let a captain accept": + "كنقلبوا على كابيتان ولكن ممكن الثمن يزيد باش كابيتان يقبل", + "No, I want to cancel this trip": "لا، بغيت نلغي المشوار هذا", + // "Trip Cancelled. The cost of the trip will be added to your wallet.": + // "الرحلة ملغية. هيتزاد الثمن ديال الرحلة في الجيب ديالك.", + "Attention": "تنبيه", + "Trip Cancelled. The cost of the trip will be deducted from your wallet.": + "الرحلة ملغية. هيتخصم الثمن ديال الرحلة من الجيب ديالك.", + "You will be charged for the cost of the driver coming to your location.": + "غادي تتحسب عليك تكلفة مجيئ السائق للموقع ديالك.", + "reject your order.": "رفض الطلب ديالك.", + "Order Under Review": "الطلب قيد المراجعة", + "is reviewing your order. They may need more information or a higher price.": + "كيراجع الطلب ديالك. ممكن يحتاجو معلومات كثر أو ثمن أعلى.", + // "The driver canceled your ride.": "السائق ألغى المشوار ديالك.", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "مالقيناش أي سواقين حتى دابا. فكر تزيد في ثمن المشوار باش العرض ديالك يكون جذاب كثر للسواقين.", + "Increase Your Trip Fee (Optional)": + "زيد في ثمن المشوار ديالك (اختياري)", + "Vibration": "اهتزاز", + "Resend code": "عاود صيفط الرمز", + // "token change": "تبديل الرمز", + "change device": "بدل الجهاز", + "Device Change Detected": "تغير الجهاز تم الكشف عليه", + "You can only use one device at a time. This device will now be set as your active device.": + "ممكن تستعمل جهاز واحد فقط في المرة الوحدة. الجهاز هذا غادي يتعين دابا كجهازك النشط.", + "Click here point": "ضغط هنا", + "Are you want to change": "واش باغي تبدل؟", + "by": "بواسطة", + "Enter your complaint here": "كتب الشكاية ديالك هنا", + "Please enter your complaint.": + "الله يرحم الوالدين دخل الشكاية ديالك.", + "Complaint data saved successfully": "بيانات الشكاية تسجلات بنجاح", + "Trip Monitor": "مراقبة الرحلة", + "Insert SOS Phone": "دخل نمرة طوارئ", + "Add SOS Phone": "زيد نمرة طوارئ", + // "Trip Monitoring": "مراقبة الرحلة", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "عزيزي،\n\n🚀 يلاه بديت رحلة مشوقة وبغيت نشارك معاك تفاصيل الرحلة ديالي والموقع الحالي ديالي في الوقت الفعلي! الله يرحم الوالدين نزل تطبيق Intaleq. غادي يسمح ليك تشوف تفاصيل الرحلة ديالي والموقع الأخير ديالي.\n\n👈 رابط التحميل:\nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nكنتسنى نبقيك قريب مني خلال المغامرة ديالي!\n\nIntaleq،", + "Send Intaleq app to him": "صيفط ليه تطبيق Intaleq", + "No passenger found for the given phone number": + "مالقيناش زبون بالنمرة التيليفون هادي", + "No user found for the given phone number": + "مالقيناش مستخدم بالنمرة التيليفون هادي", + "This price is": "الثمن هذا", + "Work": "خدمة", + "Add Home": "زيد دار", + "Notifications": "الإشعارات", + "💳 Pay with Credit Card": "خلص بالبطاقة الائتمانية 💳", + "⚠️ You need to choose an amount!": "⚠️ خاصك تختار مبلغ!", + "💰 Pay with Wallet": "خلص من الجيب", + "You must restart the app to change the language.": + "خاصك تسد التطبيق وتعاود تفتحو باش اللغة تبدل.", + "joined": "انضم", + "Driver joined the channel": "السائق انضم للقناة", + "Driver left the channel": "السائق غادر القناة", + "Call Page": "صفحة الاتصال", + // "Call End": "نهاية المكالمة", + "Call Left": "مكالمات باقية", + + "To use Wallet charge it": "باش تستعمل الجيب شحنو", + "We are searching for the nearest driver to you": + "كنقلبوا ليك على أقرب سائق ليك", + "Best choice for cities": "أحسن اختيار للمدن", + "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": + "رايح جاي: خدمة للذهاب والعودة لـ Intaleq مريح بين المدن، ساهلة وموثوقة.", + "Rayeh Gai": "رايح جاي", + "This trip is for women only": "المشوار هذا خاص بالعيالات فقط", + "Total budgets on month": "إجمالي الميزانية الشهرية", + "You have call from driver": "عندك مكالمة من السائق", + "Comfort": "كمفورت", + "Intaleq": "Intaleq", + "Driver already has 2 trips within the specified period.": + "السائق عندو ديجا جوج مشاوير خلال الفترة المحددة.", + "The invitation was sent successfully": "الدعوة تصيفطات بنجاح", + "Lady": "ليدي", + "You should select your country": "خاصك تختار البلد ديالك", + "Scooter": "سكوتر", + "A trip with a prior reservation, allowing you to choose the best captains and cars.": + "مشوار بحجز مسبق، تقدر تختار فيه أحسن الكباتن والطوموبيلات.", + "Mishwar Vip": "مشوار VIP", + "The driver waiting you in picked location .": + "السائق كيتسناك في مكان الالتقاء اللي اختاريتي.", + "About Us": "على التطبيق", + "You can change the vibration feedback for all buttons": + "ممكن تبدل اهتزاز الأزرار", + "Most Secure Methods": "أكثر طرق الأمان", + "In-App VOIP Calls": "مكالمات صوتية داخل التطبيق", + "Recorded Trips for Safety": "تسجيل الرحلات للأمان", + "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": + "\nكما أننا كنعطيو الأولوية للأسعار المناسبة، وكنقدمو أسعار تنافسية باش المشاوير ديالك تكون في المتناول.", + "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": + "Intaleq هو تطبيق لمشاركة المشاوير مصمم مع وضع السلامة ديالك وتكلفة المشوار في الاعتبار. كنوصلوك بسواقين موثوقين في المنطقة ديالك، وكنضمنو ليك تجربة Intaleq مريحة وبلا ستريس.\n\nها بعض المميزات الأساسية اللي كتميزنا:", + "Sign In by Apple": "تسجيل الدخول بـ Apple", + "Sign In by Google": "تسجيل الدخول بـ Google", + "How do I request a ride?": "كيفاش نطلب مشوار؟", + "Step-by-step instructions on how to request a ride through the Intaleq app.": + "تعليمات خطوة بخطوة على كيفية طلب مشوار من خلال تطبيق Intaleq.", + "What types of vehicles are available?": + "شنو أنواع الطوموبيلات اللي متوفرة؟", + "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": + "Intaleq كتقدم ليك اختيارات متنوعة ديال الطوموبيلات تناسب الاحتياجات ديالك، منها اقتصادي ومريح وفاخر. اختار اللي كيناسب الميزانية ديالك وعدد الركاب.", + "How can I pay for my ride?": "كيفاش نخلص ثمن المشوار ديالي؟", + "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": + "Intaleq كتقدم ليك طرق دفع متعددة للراحة ديالك. اختار بين الدفع كاش ولا ببطاقة الائتمان/الخصم وأنت كتأكد المشوار.", + "Can I cancel my ride?": "واش ممكن نلغي المشوار ديالي؟", + "Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.": + "أه، ممكن تلغي الرحلة ديالك في ظروف معينة (بحال قبل ما يتعين السائق). شوف سياسة الإلغاء في Intaleq باش تعرف التفاصيل.", + "Driver Registration & Requirements": "تسجيل السائقين والمتطلبات", + "How can I register as a driver?": "كيفاش ممكن نسجل كسائق؟", + "What are the requirements to become a driver?": + "شنو هما المتطلبات باش نخدم كسائق؟", + "Visit our website or contact Intaleq support for information on driver registration and requirements.": + "الله يرحم الوالدين زور الموقع الإلكتروني ديالنا ولا عيط لدعم Intaleq باش تعرف معلومات على تسجيل السائقين والمتطلبات.", + + "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": + "Intaleq كتوفر ميزة الدردشة داخل التطبيق باش تسمح ليك تتواصل مع السائق ديالك أو الراكب ديالك أثناء الرحلة.", + + "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": + "Intaleq كتعطي الأولوية للسلامة ديالك. كنقدمو مميزات بحال التحقق من هوية السائق، وتتبع الرحلات داخل التطبيق، وخيارات الاتصال في حالات الطوارئ.", + "Frequently Questions": "الأسئلة الشائعة", + "User does not exist.": "المستخدم ما كاينش.", + "We need your phone number to contact you and to help you.": + "محتاجين نمرة التيليفون ديالك باش نتصلو بيك ونعاونوك", + "You will recieve code in sms message": "غادي توصلك رمز في رسالة SMS", + "Please enter": "الله يرحم الوالدين دخل", + "We need your phone number to contact you and to help you receive orders.": + "محتاجين نمرة التيليفون ديالك باش نتصلو بيك ونعاونوك تستقبل الطلبات.", + "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": + "الاسم الكامل في السجل الجنائي ديالك ماكيطابقش مع الاسم اللي في رخصة السياقة ديالك. الله يرحم الوالدين تحقق وقدم الوثائق الصحيحة.", + "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": + "الرقم الوطني في رخصة السياقة ديالك ماكيطابقش مع الرقم اللي في وثيقة الهوية ديالك. الله يرحم الوالدين تحقق وقدم الوثائق الصحيحة.", + "Capture an Image of Your Criminal Record": "صور السجل الجنائي ديالك", + "IssueDate": "تاريخ الإصدار", + "Capture an Image of Your car license front ": + "صور الواجهة الأمامية لرخصة الطوموبيل ديالك", + "Capture an Image of Your ID Document front": + "صور الواجهة الأمامية لوثيقة الهوية ديالك", + "NationalID": "الرقم القومي", + "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": + "ممكن تشارك تطبيق Intaleq مع صحابك وتربح مكافآت على المشاوير اللي كيديرو باستعمال الكود ديالك.", + "FullName": "الاسم الكامل", + "No invitation found yet!": "مازال مالقيناش دعوات!", + "InspectionResult": "نتيجة الفحص", + "Criminal Record": "السجل الجنائي", + "Share App": "شارك التطبيق", + "The email or phone number is already registered.": + "البريد الإلكتروني أو نمرة التيليفون مسجلين ديجا.", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "باش تولي سائق ديال الركوب المشترك في تطبيق Intaleq، خاصك تحمل رخصة السياقة ديالك، وثيقة الهوية، ووثيقة تسجيل الطوموبيل. النظام ديال الذكاء الاصطناعي ديالنا غادي يراجع ويتحقق من صحة الوثائق ديالك في غضون 2-3 دقائق فقط. إلا الوثائق ديالك تقبلو، ممكن تبدا تخدم كسائق في تطبيق Intaleq. الله يرحم الوالدين لاحظ، تقديم وثائق مزورة كيتعتبر جريمة خطيرة وممكن يترتب عليها إنهاء الحساب فورا وعواقب قانونية.", + "Documents check": "فحص الوثائق", + "Driver's License": "رخصة السياقة", + "for your first registration!": "للتسجيل الأول ديالك!", + "Get it Now!": "حصل عليه دابا!", + "before": "قبل", + "Code not approved": "الرمز ما مقبولش", + "3000 LE": "3000 جنيه مصري", + "Do you have an invitation code from another driver?": + "واش عندك كود دعوة من سائق آخر؟", + "Paste the code here": "لصق الكود هنا", + "No, I don't have a code": "لا، معنديش كود", + "Code approved": "الكود مقبول", + "Install our app:": "نزل التطبيق ديالنا:", + "Invite another driver and both get a gift after he completes 100 trips!": + "عيط لصاحبك باش يولي سائق و بجوج تربحو هدية من بعد ما يسالي 100 مشوار!", + "Invite": "دعوة", + "Are you sure?": "متأكد؟", + "This will delete all recorded files from your device.": + "هذا غادي يمسح كل الملفات المسجلة من الجهاز ديالك.", + "Select a file": "اختار ملف", + "Select a File": "اختار ملف", + "Delete": "مسح", + "attach audio of complain": "رفق صوت الشكاية", + "Phone Number Check": "فحص نمرة التيليفون", + "Drivers received orders": "السائقون استقبلو الطلبات", + "No audio files recorded.": "ماكاينش ملفات صوتية مسجلة.", + "This is for delivery or a motorcycle.": + "هذا خاص بالتوصيل ولا الموطور.", + // "We will look for a new driver.\nPlease wait.": + // "غادي نقلبو على سائق جديد.\nالله يرحم الوالدين تسنى", + "Intaleq Reminder": "تذكير Intaleq", + "It's time to check the Intaleq app!": + "الوقت باش تشوف تطبيق Intaleq!", + "you must insert token code": "خاصك تدخل رمز التحقق.", + "Something went wrong. Please try again.": + "وقع شي مشكل. الله يرحم الوالدين حاول مرة أخرى.", + "Trip Details": "تفاصيل الرحلة", + "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": + "السياق ما كيوفرش تفاصيل الشكاية، داكشي علاش مايمكنش نقدم حل لهذا المشكل. الله يرحم الوالدين قدم المعلومات الضرورية، وغادي نكون سعيد نعاونك", + "Submit Your Complaint": "صيفط الشكاية ديالك", + "Date": "التاريخ", + "Price": "الثمن", + "Status": "الحالة", + "Choose from contact": "اختار من جهات الاتصال", + "attach correct audio": "رفق صوت الشكاية الصحيح", + "be sure": "تأكد", + "Audio uploaded successfully.": "الصوت ترفع بنجاح", + "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": + "مثالي للركاب اللي كيقلبوا على أحدث موديلات الطوموبيلات مع حرية اختيار أي طريق بغاو", + "Share this code with your friends and earn rewards when they use it!": + "شارك الكود هذا مع صحابك وربح مكافآت فاش كيستعملوه!", + "Enter phone": "دخل نمرة التيليفون", + "You deserve the gift": "أنت كتستحق الهدية", + "complete, you can claim your gift": " ممكن تطلب الهدية ديالك", + "When": "فاش يسالي", + "Enter driver's phone": "دخل نمرة تيليفون السائق", + "Send Invite": "صيفط الدعوة", + "Show Invitations": "عرض الدعوات", + "License Type": "نوع الرخصة", + "National Number": "الرقم الوطني", + "Name (Arabic)": "الاسم بالعربية", + "Name (English)": "الاسم بالإنجليزية", + "Address": "العنوان", + "Issue Date": "تاريخ الإصدار", + "Expiry Date": "تاريخ الانتهاء", + "License Categories": "فئات الرخصة", + "driver_license": "رخصة السياقة", + "Capture an Image of Your Driver License": "صور رخصة السياقة ديالك", + "ID Documents Back": "الوجه الخلفي لوثائق الهوية", + "National ID": "البطاقة الوطنية", + "Occupation": "المهنة", + "Gender": "الجنس", + "Religion": "الدين", + "Marital Status": "الحالة الاجتماعية", + "Full Name (Marital)": "الاسم الكامل (حسب الحالة الاجتماعية)", + "Expiration Date": "تاريخ الانتهاء", + "Capture an Image of Your ID Document Back": + "صور الوجه الخلفي لوثيقة الهوية ديالك", + "ID Documents Front": "الوجه الأمامي لوثائق الهوية", + "First Name": "الاسم الأول", + "CardID": "رقم البطاقة", + "Vehicle Details Front": "تفاصيل المركبة ‏الوجه الأمامي", + "Plate Number": "نمرة اللوحة", + "Owner Name": "اسم المالك", + "Vehicle Details Back": "تفاصيل المركبة ‏الوجه الخلفي", + "Make": "المصنع", + "Model": "الطراز", + "Year": "السنة", + "Chassis": "الشاسي", + "Color": "اللون", + "Displacement": "السعة", + "Fuel": "الوقود", + "Tax Expiry Date": "تاريخ انتهاء الضريبة", + "Inspection Date": "تاريخ الفحص", + "Capture an Image of Your car license back": + "صور الوجه الخلفي لرخصة الطوموبيل ديالك", + "Capture an Image of Your Driver’s License": "صور رخصة السياقة ديالك", + "Sign in with Google for easier email and name entry": + "تسجل الدخول بجوجل باش تسجل البريد الإلكتروني والاسم ديالك بسهولة", + "You will choose allow all the time to be ready receive orders": + "غادي تختار السماح ديما باش تكون مستعد تستقبل الطلبات", + "Welcome to Intaleq!": "مرحبا بك في Intaleq!", + "Get to your destination quickly and easily.": + "وصل للوجهة ديالك بسرعة وسهولة.", + "Enjoy a safe and comfortable ride.": "استمتع برحلة آمنة ومريحة.", + "Choose Language": "اختار اللغة", + "Login": "تسجيل الدخول", + "Pay with Wallet": "خلص بالجيب", + "Invalid MPIN": "رمز PIN غير صحيح", + "Invalid OTP": "كود التحقق خاطئ", + // "Driver Accepted the Ride for You": "السائق قبل الرحلة ليك", + "Enter your email address": "دخل عنوان البريد الإلكتروني ديالك", + "Please enter Your Email.": + "الله يرحم الوالدين دخل البريد الإلكتروني ديالك.", + "Enter your phone number": "دخل نمرة التيليفون ديالك", + "Please enter your phone number.": + "الله يرحم الوالدين دخل نمرة التيليفون ديالك.", + "Please enter Your Password.": + "الله يرحم الوالدين دخل كلمة السر ديالك.", + "if you dont have account": "إلا ماكانش عندك حساب", + "Register": "تسجيل", + "Accept Ride's Terms & Review Privacy Notice": + "قبل شروط الاستخدام وراجع إشعار الخصوصية", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "بالاختيار ديال 'موافق' لتحت، راجعت ووافقت على شروط الاستخدام وكنقر بإشعار الخصوصية. عندي على الأقل 18 عام.", + "I Agree": "موافق", + // "Finish Monitor": " إنهاء مراقبة الرحلة ", + "First name": "الاسم الشخصي", + "Enter your first name": "دخل اسمك الشخصي", + "Please enter your first name.": + "الله يرحم الوالدين دخل اسمك الشخصي.", + "Last name": "الاسم العائلي", + "Enter your last name": "دخل اسمك العائلي", + "Please enter your last name.": + "الله يرحم الوالدين دخل اسمك العائلي.", + "City": "المدينة", + "Please enter your City.": + "الله يرحم الوالدين دخل اسم المدينة ديالك.", + "Male": "ذكر", + "Female": "أنثى", + "Verify Email": "تأكيد البريد الإلكتروني", + "We sent 5 digit to your Email provided": + "صيفطنا رمز من 5 أرقام للبريد الإلكتروني اللي عطيتي", + "5 digit": "5 أرقام", + "Send Verification Code": "صيفط رمز التحقق", + "Your Ride Duration is ": "المدة ديال الرحلة ديالك هي ", + "You will be thier in": "غادي تكون تما في", + "You trip distance is": "المسافة ديال الرحلة ديالك هي", + "Fee is": "الرسوم هي", + "From : ": "من: ", + "To : ": "إلى: ", + "Add Promo": "زيد برومو", + "Confirm Selection": "أكد الاختيار", + "distance is": "المسافة هي", + + "Intaleq LLC": "شركة Intaleq", + "Egypt's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "أول خدمة مشاركة الركوب في مصر، مطورة بكل فخر من طرف مالكين عرب ومحليين. كنعطيو الأولوية نكونو قراب ليك - سواء كنتي راكب قيم ولا كابتن مخلص.", + "Why Choose Intaleq?": "علاش تختار Intaleq؟", + "Closest to You": "الأقرب ليك", + "We connect you with the nearest drivers for faster pickups and quicker journeys.": + "كنربطوك بأقرب السائقين باش يكون الاستلام أسرع والرحلات أقصر.", + "Uncompromising Security": "أعلى مستويات الأمان", + "Lady Captains Available": "كابتانات متوفرات", + "Recorded Trips (Voice & AI Analysis)": + "الرحلات المسجلة (تحليل صوتي بالذكاء الاصطناعي)", + "Fastest Complaint Response": "أسرع استجابة للشكايات", + "Our dedicated customer service team ensures swift resolution of any issues.": + "فريق خدمة العملاء ديالنا مكلف كيضمن حل سريع لأي مشكل.", + "Affordable for Everyone": "في المتناول ديال كلشي", + "Frequently Asked Questions": "الأسئلة الشائعة", + "Getting Started": "البدء", + + "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": + "حل تطبيق Intaleq، دخل الوجهة ديالك، وضغط على \"طلب رحلة\". التطبيق غادي يوصلك بأقرب سائق.", + "Vehicle Options": "خيارات المركبات", + + "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": + "Intaleq كتوفر مجموعة متنوعة من الخيارات منها اقتصادي، مريح، وفاخر باش تناسب الاحتياجات والميزانية ديالك.", + "Payments": "المدفوعات", + + "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": + "ممكن تخلص ثمن المشوار ديالك كاش ولا ببطاقة الائتمان/الخصم. ممكن تختار طريقة الدفع اللي كتفضل قبل ما تأكد المشوار ديالك.", + "Ride Management": "إدارة الرحلات", + + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "أه، ممكن تلغي المشوار ديالك، ولكن الله يرحم الوالدين لاحظ باللي رسوم الإلغاء ممكن تطبق على حساب شحال قبل لغيتي المشوار.", + "For Drivers": "للسواقين", + // "Driver Registration & Requirements": "تسجيل ومتطلبات السواقين", + "Driver Registration": "تسجيل السائق", + "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": + "باش تسجل كسائق ولا تعرف المتطلبات، الله يرحم الوالدين زور الموقع الإلكتروني ديالنا ولا اتصل بدعم Intaleq مباشرةً.", + "Visit Website/Contact Support": "زور الموقع/اتصل بالدعم", + "Close": "سد", + "We are searching for the nearest driver": "كنقلبوا على أقرب سائق", + "Communication": "التواصل", + "How do I communicate with the other party (passenger/driver)?": + "كيفاش نتواصل مع الطرف الآخر (الزبون/السائق)؟", + "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": + "ممكن تتواصل مع السائق ديالك ولا الراكب ديالك من خلال ميزة الشات داخل التطبيق فاش كيتأكد المشوار.", + "Safety & Security": "الأمان والحماية", + "What safety measures does Intaleq offer?": + "شنو هما إجراءات الأمان اللي كيقدم Intaleq؟", + "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": + "Intaleq كيقدم مميزات أمان متنوعة منها التحقق من السائق، تتبع الرحلة داخل التطبيق، خيارات الاتصال في حالات الطوارئ، وإمكانية مشاركة حالة الرحلة ديالك مع جهات اتصال موثوقة.", + "Enjoy competitive prices across all trip options, making travel accessible.": + "استمتع بأسعار تنافسية على كل خيارات الرحلات، وهذا كيخلي Intaleq سهل الوصول ليه.", + "Variety of Trip Choices": "خيارات رحلات متنوعة", + "Choose the trip option that perfectly suits your needs and preferences.": + "اختار خيار الرحلة اللي كيناسب الاحتياجات والتفضيلات ديالك بالضبط.", + "Your Choice, Our Priority": "الاختيار ديالك هو الأولوية ديالنا", + "Because we are near, you have the flexibility to choose the ride that works best for you.": + "حيت احنا قراب، عندك المرونة تختار المشوار اللي كيناسبك.", + "duration is": "المدة هي", + "Setting": "الإعدادات", + "Find answers to common questions": "لقا أجوبة للأسئلة الشائعة", + "I don't need a ride anymore": "مابغيتش مشوار آخر", + "I was just trying the application": "كنت غير كنجرب التطبيق", + "No driver accepted my request": "ماكاينش سائق قبل الطلب ديالي", + "I added the wrong pick-up/drop-off location": + "زديت موقع الالتقاء/الوصول غالط", + "I don't have a reason": "ما عندي حتى سبب", + "Other": "آخر", + "Can we know why you want to cancel Ride ?": + "واش ممكن نعرفو علاش باغي تلغي المشوار؟", + "Cancel Ride": "إلغاء المشوار", + "Add Payment Method": "زيد طريقة الدفع", + "Your Wallet balance is ": "الرصيد ديال الجيب ديالك هو ", + "Ride Wallet": "جيب الرحلة", + "Payment Method": "طريقة الدفع", + "Type here Place": "كتب هنا المكان", + "Are You sure to ride to": "متأكد باللي باغي تمشي لـ", + "Confirm": "أكد", + // "Back": "رجوع", + "You are Delete": "أنت غادي تمسح", + "Deleted": "تمسح", + "You Dont Have Any places yet !": "مازال ماعندك حتى أماكن!", + // "Favorite Places": "الأماكن المفضلة", + "From : Current Location": "من: الموقع الحالي", + // "Where to": "إلى أين", + "Profile": "الملف الشخصي", + "Home": "الصفحة الرئيسية", + "My Cared": "البطاقات ديالي", + "Add Card": "زيد بطاقة", + "Add Credit Card": "زيد بطاقة ائتمان", + "Please enter the cardholder name": + "الله يرحم الوالدين دخل اسم صاحب البطاقة", + "Please enter the expiry date": + "الله يرحم الوالدين دخل تاريخ الانتهاء", + "Please enter the CVV code": "الله يرحم الوالدين دخل رمز CVV", + "Go To Favorite Places": "سير للأماكن المفضلة", + "Go to this Target": "سير لهذا الهدف", + "My Profile": "الملف الشخصي ديالي", + "Sign Out": "تسجيل الخروج", + "Are you want to go to this site": "واش باغي تمشي لهذا الموقع", + "MyLocation": "الموقع ديالي", + "my location": "الموقع ديالي", + "Target": "هدف", + "Update": "تحديث", + "You Should choose rate figure": "خاصك تختار تقييم", + "Login Captin": "تسجيل دخول الكابتن", + "Register Captin": "تسجيل كابتن جديد", + "Send Verfication Code": "صيفط رمز التحقق", + "KM": "كم", + "End Ride": "سالي الرحلة", + "Minute": "دقيقة", + "Go to passenger Location now": "سير لموقع الزبون دابا", + "Duration of the Ride is ": "المدة ديال الرحلة هي ", + "Distance of the Ride is ": "المسافة ديال الرحلة هي", + "Name of the Passenger is ": "اسم الزبون هو", + "Hello this is Captain": "مرحبا هذا الكابتن", + "Start the Ride": "بدا الرحلة", + "Please Wait If passenger want To Cancel!": + "الله يرحم الوالدين تسنى إلا الزبون بغا يلغي!", + "Total Duration:": "المدة الإجمالية:", + "Active Duration:": "المدة الفعلية:", + "Waiting for Captin ...": "كنتسناو الكابتن...", + "Age is ": "العمر هو", + "Rating is ": "التقييم هو", + " to arrive you.": "باش يوصل عندك.", + + "Tariff": "تعريفة", + "Settings": "الإعدادات", + "Feed Back": "اقتراحات", + + "Please enter a valid 16-digit card number": + "الله يرحم الوالدين دخل رقم بطاقة صحيح مكون من 16 رقم", + "Add Phone": "زيد تيليفون", + "Please enter a phone number": "الله يرحم الوالدين دخل نمرة تيليفون", + "You dont Add Emergency Phone Yet!": + "مازال مازتي نمرة تيليفون طوارئ!", + "You will arrive to your destination after ": + "غادي توصل للوجهة ديالك من بعد", + "You can cancel Ride now": "ممكن تلغي المشوار دابا", + "You Can cancel Ride After Captain did not come in the time": + "ممكن تلغي المشوار من بعد ما الكابتن ما يوصلش في الوقت المحدد", + "If you in Car Now. Press Start The Ride": + "إلا كنتي في الطوموبيل دابا. ضغط على بدا الرحلة", + "You Dont Have Any amount in": "ماعندك حتى مبلغ في", + "Wallet!": "الجيب!", + "You Have": "عندك", + "Save Credit Card": "حفظ بطاقة الائتمان", + "Show Promos": "عرض العروض الترويجية", + "10 and get 4% discount": "10 وربح خصم 4%", + "20 and get 6% discount": "20 وربح خصم 6%", + "40 and get 8% discount": "40 وربح خصم 8%", + "100 and get 11% discount": "100 وربح خصم 11%", + "Pay with Your PayPal": "خلص بـ PayPal ديالك", + "You will choose one of above !": "غادي تختار وحدة من هادو لفوق!", + "Delete My Account": "مسح الحساب ديالي", + "Edit Profile": "تعديل الملف الشخصي", + "Name": "الاسم", + "Update Gender": "تحديث الجنس", + "Education": "التعليم", + "Update Education": "تحديث التعليم", + "Employment Type": "نوع التوظيف", + "SOS Phone": "تيليفون الطوارئ", + "High School Diploma": "شهادة الباكالوريا", + "Associate Degree": "دبلوم جامعي", + "Bachelor's Degree": "إجازة جامعية", + "Master's Degree": "ماستر", + "Doctoral Degree": "دكتوراه", + "Copy this Promo to use it in your Ride!": + "نسخ العرض هذا باش تستعملو في المشوار ديالك!", + "To change some Settings": "باش تبدل شي إعدادات", + "Order Request Page": "صفحة طلب الطلب", + "Rouats of Trip": "طرق الرحلة", + "Passenger Name is ": "اسم الراكب هو ", + "Total From Passenger is ": "المبلغ الإجمالي من الراكب هو ", + "Duration To Passenger is ": "المدة باش توصل للراكب هي ", + "Distance To Passenger is ": "المسافة باش توصل للراكب هي ", + "Total For You is ": "المبلغ الإجمالي ليك هو ", + "Distance is ": "المسافة هي ", + " KM": " كيلومتر", + "Duration of Trip is ": "المدة ديال الرحلة هي ", + " Minutes": " دقائق", + "Apply Order": "قبل الطلب", + "Refuse Order": "رفض الطلب", + "Rate Captain": "قيم الكابتن", + "Enter your Note": "دخل الملاحظة ديالك", + "Type something...": "كتب شي حاجة...", + "Submit rating": "صيفط التقييم", + "Rate Passenger": "قيم الراكب", + "Ride Summary": "ملخص الرحلة", + "welcome_message": "مرحبا بك في Intaleq!", + "app_description": + "Intaleq هو تطبيق موثوق وآمن وسهل الوصول ليه لمشاركة الركوب.", + "get_to_destination": "سير للوجهة ديالك بسرعة وسهولة.", + "get_a_ride": "مع Intaleq، ممكن تحصل على رحلة للوجهة ديالك في دقائق.", + "safe_and_comfortable": "استمتع برحلة آمنة ومريحة.", + "committed_to_safety": + "Intaleq ملتزمة بالسلامة، وكل الكباتن عندنا كيتفحصو مزيان وكيديرو ليهم فحص الخلفية.", + // "Driver Applied the Ride for You": "السائق طلب المشوار ليك", + // "Show latest promo": "أظهر آخر عرض ترويجي", + // "Cancel Trip": "إلغاء الرحلة", + // "Passenger Cancel Trip": "الزبون ألغى الرحلة", + // "Accepted Ride": "الرحلة مقبولة", + "your ride is Accepted": "الرحلة ديالك مقبولة", + + // "Trip is Begin": "الرحلة بدات", + "Driver is waiting at pickup.": "السائق كيتسناك في نقطة الاستلام.", + "Driver is on the way": "السائق في الطريق", + "Contact Options": "خيارات الاتصال", + "Send a custom message": "صيفط رسالة مخصصة", + "Type your message": "كتب الرسالة ديالك", + // "Hi ,I will go now": "مرحبا، أنا غادي نتحرك دابا", + // "Passenger come to you": "الزبون جاي عندك", + // "Hi ,I Arrive your site": "مرحبا، وصلت للمكان ديالك", + // "Driver Finish Trip": "السائق سالا الرحلة", + // "you will pay to Driver": "غادي تخلص السائق", + // "Driver Cancel Your Trip": "السائق ألغى الرحلة ديالك", + // "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + // "غادي تخلص السائق تكلفة الوقت ديالو، شوف الجيب ديالك في Intaleq", + // "I will go now": "أنا غادي نتحرك دابا", + "You Have Tips": "عندك زيادة فلوس", + " tips\nTotal is": " زيادة مال\nالمجموع هو", + // "No,I want": "لا، بغيت", + "Your fee is ": "الأجرة ديالك هي ", + // "Do you want to pay Tips for this Driver": + // "واش باغي تخلص البقشيش للسائق هذا؟", + "Tip is ": " مبلغ البقشيش هو", + + "Are you want to wait drivers to accept your order": + "واش باغي تسنى حتى السائقين يقبلو الطلب ديالك؟", + + "This price is fixed even if the route changes for the driver.": + "الثمن هذا ثابت حتى إلا المسار تبدل للسائق.", + "The price may increase if the route changes.": + "احتمالية زيادة الثمن إلى المسار تبدل.", + "The captain is responsible for the route.": + "الكابتن مسؤول على المسار", + "We are search for nearst driver": "كنقلبو على أقرب سائق", + "Your order is being prepared": "جاري تجهيز الطلب ديالك", + "The drivers are reviewing your request": + "السائقين كيدرسو الطلب ديالك", + "Your order sent to drivers": "الطلب ديالك تصيفط للسائقين", + "You can call or record audio of this trip": + "ممكن تعيط ولا تسجل صوت للرحلة هادي", + "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": + "الرحلة بدات! براحتك تعيط لأرقام الطوارئ، شارك الرحلة ديالك، ولا فعل التسجيل الصوتي للرحلة", + // "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + // "الرجاء التأكد من جميع أغراضك الشخصية وإضافة باقي الأجرة في الجيب ديالك قبل النزول. شكرا لاختيارك تطبيق Intaleq", + // "Don’t forget your personal belongings.": "متنساش متعلقاتك الشخصية.", + "Camera Access Denied.": "الوصول للكاميرا مرفوض.", + "Open Settings": "فتح الإعدادات", + "GPS Required Allow !.": "تفعيل GPS مطلوب!", + "Your Account is Deleted": "الحساب ديالك تمسح", + "Are you sure to delete your account?": + "متأكد باللي باغي تمسح الحساب ديالك؟", + "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": + "البيانات ديالك غادي يتمسحو من بعد أسبوعين\nومغاديش تقدر ترجع تستعمل التطبيق من بعد شهر", + "Enter Your First Name": "دخل اسمك الشخصي", + "Are you Sure to LogOut?": "متأكد باللي باغي تسجل الخروج؟", + "Email Wrong": "البريد الإلكتروني غالط", + "Email you inserted is Wrong.": "البريد الإلكتروني اللي دخلتي غالط.", + "You have finished all times ": "ساليتي كل المحاولات", + "if you want help you can email us here": + "إلا بغيتي مساعدة ممكن تصيفط لينا إيميل هنا", + "Thanks": "شكرا", + "Email Us": "صيفط لينا إيميل", + "I cant register in your app in face detection ": + "ماعرفتش نسجل في التطبيق ديالكم بسبب كشف الوجه", + "Hi": "مرحبا", + "No face detected": "ماكاينش وجه مكشوف", + "Image detecting result is ": "النتيجة ديال كشف الصورة هي", + "from 3 times Take Attention": "من 3 مرات رد البال", + "Be sure for take accurate images please\nYou have": + "الله يرحم الوالدين تأكد تلتقط صور دقيقة\nعندك", + "image verified": "الصورة مأكدة", + "Next": "التالي", + "There is no help Question here": "ماكاينش أسئلة مساعدة هنا", + + "You dont have Points": "ماعندكش نقاط", + "You Are Stopped For this Day !": "توقفتي هذا النهار!", + "You must be charge your Account": "خاصك تعاود تشحن رصيد النقاط", + "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": + "رفضتي 3 رحلات اليوم هذا هو السبب\nنتلاقاو غدا!", + "Recharge my Account": "خلص رسوم من الحساب ديالي", + "Ok , See you Tomorrow": "واخا، نتلاقاو غدا", + "You are Stopped": "توقفتي", + "Connected": "متصل", + "Not Connected": "غير متصل", + "Your are far from passenger location": "أنت بعيد على مكان الراكب", + "go to your passenger location before\nPassenger cancel trip": + "سير لمكان الراكب قبل ما\nالراكب يلغي الرحلة", + "You will get cost of your work for this trip": + "غادي تاخد تكاليف الخدمة ديالك على الرحلة هادي", + " in your wallet": "في الجيب ديالك", + "you gain": "ربحتي", + + "Order Cancelled by Passenger": "الطلب تلغى من عند الراكب", + "Success": "نجاح", + "Feedback data saved successfully": "بيانات التعليقات تسجلات بنجاح", + "No Promo for today .": "ماكاينش عروض ترويجية اليوم.", + "Select your destination": "اختار الوجهة ديالك", + "Search for your Start point": "قلب على نقطة الانطلاق ديالك", + "Search for waypoint": "قلب على النقطة الآلية", + "Current Location": "الموقع الحالي", + "Add Location 1": "زيد الموقع 1", + "You must Verify email !.": "خاصك تأكد البريد الإلكتروني!", + "Cropper": "القاصة", + "Saved Sucssefully": "تسجل بنجاح", + "Select Date": "اختار التاريخ", + "Birth Date": "تاريخ الميلاد", + "Ok": "موافق", + "the 500 points equal 30 JOD": "500 نقطة كتساوي 30 دينار أردني", + "the 500 points equal 30 JOD for you \nSo go and gain your money": + "500 نقطة كتساوي 30 دينار أردني ليك\nفستاهل فلوسك وربح النقاط", + "token updated": "الرمز تحدت", + "Add Location 2": "زيد الموقع 2", + "Add Location 3": "زيد الموقع 3", + "Add Location 4": "زيد الموقع 4", + "Waiting for your location": "كنتسناو الموقع ديالك", + "Search for your destination": "قلب على الوجهة ديالك", + "Hi! This is": "مرحبا! أنا", + " I am using": " أنا كنستعمل", + " to ride with": " باش نركب مع", + " as the driver.": " كسائق.", + "is driving a ": "كيسوق", + " with license plate ": "بلوحة ترخيص", + " I am currently located at ": "أنا دابا كاين في", + "Please go to Car now ": "الله يرحم الوالدين سير للطوموبيل دابا", + "You will receive a code in WhatsApp Messenger": + "غادي توصل برمز في واتساب ماسنجر", + "If you need assistance, contact us": "إلا محتاج مساعدة، تواصل معنا", + "Promo Ended": "العرض سالا", + "Enter the promo code and get": "دخل رمز الترويج وربح", + "DISCOUNT": "خصم", + "No wallet record found": "ماكاينش سجل الجيب", + "for": "لمدة", + "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": + "Intaleq هو أكثر تطبيق آمن لمشاركة الركوب وكيدخل مميزات بزاف للكباتن والركاب بجوج. كنقدمو أقل نسبة عمولة وهي 8% فقط، وهذا كيضمن ليك تاخد أحسن قيمة للمشاوير ديالك. التطبيق ديالنا فيه تأمين لأحسن الكباتن، صيانة دورية للطوموبيلات مع أحسن المهندسين، وخدمات على الطريق لضمان تجربة محترمة وعالية الجودة لكل المستخدمين.", + "You can contact us during working hours from 12:00 - 19:00.": + "ممكن تعيط لينا في مواعيد العمل من 12:00 - 19:00.", + + "Choose a contact option": "اختار طريقة الاتصال", + "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": + "مواعيد العمل من 12:00 - 19:00.\nممكن تصيفط رسالة واتساب ولا إيميل.", + "Promo code copied to clipboard!": "رمز العرض تنساخ للحافظة!", + "Copy Code": "نسخ الرمز", + "Your invite code was successfully applied!": + "رمز الدعوة ديالك طبق بنجاح!", + "Payment Options": "خيارات الدفع", + "wait 1 minute to receive message": + "تسنى دقيقة واحدة باش توصلك الرسالة", + "Promo Copied!": "العرض تنساخ!", + "You have copied the promo code.": "نسختي رمز العرض.", + "Valid Until:": "صالح حتى:", + "Select Payment Amount": "اختار مبلغ الدفع", + "The promotion period has ended.": "فترة العرض سالات.", + "Promo Code Accepted": "كود العرض مقبول", + "Tap on the promo code to copy it!": "ضغط على رمز العرض باش تنسخو!", + "Lowest Price Achieved": "أقل ثمن تحقق", + "Cannot apply further discounts.": "مايمكنش نطبقو تخفيضات أخرى.", + "Promo Already Used": "كود العرض مستعمل ديجا", + "Invitation Used": "الدعوة مستعملة", + "You have already used this promo code.": "استعملتي الكود هذا ديجا.", + "Insert Your Promo Code": "دخل كود العرض ديالك", + "Enter promo code here": "دخل كود العرض هنا", + "Please enter a valid promo code": + "الله يرحم الوالدين دخل كود عرض صحيح", + "Awfar Car": "أوفر كار", + "Old and affordable, perfect for budget rides.": + "طوموبيل قديمة وبثمن معقول، مثالية للمشاوير الاقتصادية.", + " If you need to reach me, please contact the driver directly at": + "إلا كنتي محتاج توصل ليا، الله يرحم الوالدين تواصل مع السائق مباشرة على", + "No Car or Driver Found in your area.": + "مالقيناش لا طوموبيل لا سائق في المنطقة ديالك.", + "Please Try anther time ": "الله يرحم الوالدين حاول وقت آخر", + "There no Driver Aplly your order sorry for that ": + "ماكاينش سائق قبل الطلب ديالك كنتأسفوا على هذا", + "Trip Cancelled": "الرحلة ملغية", + "The Driver Will be in your location soon .": + "السائق غادي يكون في الموقع ديالك قريبًا.", + "The distance less than 500 meter.": "المسافة قل من 500 متر.", + "Promo End !": "العرض سالا!", + "There is no notification yet": "ماكاينش إشعارات حتى دابا", + "Use Touch ID or Face ID to confirm payment": + "استعمل Touch ID ولا Face ID باش تأكد الدفع", + "Contact us for any questions on your order.": + "تواصل معنا إلا عندك أي استفسارات بخصوص الطلب ديالك.", + "Pyament Cancelled .": "الدفع ملغي.", + "type here": "كتب هنا", + "Scan Driver License": "مسح رخصة السياقة", + "Please put your licence in these border": + "الله يرحم الوالدين حط الرخصة ديالك في هذا الإطار", + "Camera not initialized yet": "الكاميرا مازال ماخدماتش", + "Take Image": "صور", + "AI Page": "صفحة الذكاء الاصطناعي", + "Take Picture Of ID Card": "صور بطاقة الهوية", + "Take Picture Of Driver License Card": "صور بطاقة رخصة السياقة", + "We are process picture please wait ": + "كنعالج الصورة الله يرحم الوالدين تسنى", + "There is no data yet.": "ماكاينش بيانات حتى دابا.", + "Name :": "الاسم:", + "Drivers License Class: ": "فئة رخصة السياقة:", + "Document Number: ": "رقم الوثيقة:", + "Address: ": "العنوان:", + "Height: ": "الطول:", + "Expiry Date: ": "تاريخ الانتهاء:", + "Date of Birth: ": "تاريخ الميلاد:", + "You can\'t continue with us .\nYou should renew Driver license": + "مايمكنش تكمل معنا. خاصك تجدد رخصة السياقة", + "Detect Your Face ": "كشف الوجه ديالك", + "Go to next step\nscan Car License.": + "سير للخطوة اللي جاية\nومسح رخصة الطوموبيل.", + "Name in arabic": "الاسم بالعربية", + "Drivers License Class": "فئة رخصة السياقة", + "Date of Birth": "تاريخ الميلاد", + // "Select date and time of trip": "اختار تاريخ ووقت الرحلة", + "Selected Date": "التاريخ المحدد", + "Select Time": "اختار الوقت", + "Selected Time": "الوقت المحدد", + // "OK": "موافق", + // "Cancel": "إلغاء", + "Selected Date and Time": "التاريخ والوقت المحددين", + "Lets check Car license ": "يلا نفحصو رخصة الطوموبيل", + "Car": "الطوموبيل", + "Plate": "اللوحة ديال الطوموبيل", + "N/A": "غير متوفر", + "Rides": "الرحلات", + "Age": "العمر", + // "Education": "التعليم", + // "Color": "اللون", + // "Displacement": "السعة", + // "Fuel": "الوقود", + "Selected driver": "السائق اللي اختاريتي", + "Lets check License Back Face": "يلا نفحصو الوجه الخلفي للرخصة", + "Car License Card": "بطاقة رخصة الطوموبيل", + "No image selected yet": "مازال ما اختاريتي صورة", + "Made :": "الصنع:", + "model :": "الموديل:", + "VIN :": "رقم الشاسي:", + "year :": "السنة:", + "ُExpire Date": "تاريخ الانتهاء", + "Login Driver": "تسجيل دخول السائق", + "Password must br at least 6 character.": + "كلمة السر خاصها تكون 6 حروف على الأقل.", + "if you don\'t have account": "إلا ماكانش عندك حساب", + "Here recorded trips audio": "هنا تسجيلات صوتية ديال الرحلات", + "Register as Driver": "تسجيل كسائق", + // "Privacy Notice": "إخطار الخصوصية", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": + "بالاختيار ديال 'موافق' لتحت، راجعت ووافقت على شروط الاستخدام وكنقر بـ", + ". I am at least 18 years of age.": ". أنا عمري 18 عام على الأقل.", + "Log Out Page": "صفحة تسجيل الخروج", + "Log Off": "تسجيل الخروج", + "Register Driver": "تسجيل سائق جديد", + "Verify Email For Driver": "تأكيد البريد الإلكتروني للسائق", + "Admin DashBoard": "لوحة تحكم المدير", + "Your name": "الاسم ديالك", + "your ride is applied": "الطلب ديالك تقبل", + "Your password": "كلمة السر ديالك", + "H and": "ساعة و", + "LE": "جنيه", + "JOD": "دينار", + "m": "دقيقة", + "We search nearst Driver to you": "كنقلبو على أقرب سائق ليك", + "please wait till driver accept your order": + "الله يرحم الوالدين تسنى حتى السائق يقبل الطلب ديالك", + "No accepted orders? Try raising your trip fee to attract riders.": + "ماكاينش طلبات مقبولة؟ حاول تطلع في أجرة المشوار باش تجذب الركاب.", + "You should select one": "خاصك تختار واحد", + "The driver accept your order for": "السائق قبل الطلب ديالك بـ", + "Increase Fee": "زيد في الأجرة", + "No, thanks": "لا، شكرا", + "The driver on your way": "الكابتن في الطريق ليك", + "Total price from ": "الثمن الإجمالي من ", + "Order Details Intaleq": "طلب سريع", + // "Order Applied": "الطلب مقبول", + "accepted your order": "قبل الطلب ديالك", + // "We regret to inform you that another driver has accepted this order.": + // "كنتأسفوا نبلغوك باللي سائق آخر قبل هذا الطلب", + "Selected file:": "الملف المختار:", + "Your trip cost is": "تكلفة الرحلة ديالك هي", + "this will delete all files from your device": + "المسح هذا غادي يمسح كل الملفات من الجهاز ديالك", + " in your": "في الجيب ديالك", + "Exclusive offers and discounts always with the Intaleq app": + "عروض وخصومات حصرية ديما مع تطبيق Intaleq", + // "Please go to Car Driver": "الرجاء التوجه إلى سائق السيارة", + " wallet due to a previous trip.": "بسبب رحلة سابقة.", + "Submit Question": "طرح سؤال", + "Please enter your Question.": "الله يرحم الوالدين دخل السؤال ديالك.", + "Help Details": "تفاصيل المساعدة", + "No trip yet found": "مازال ما تحجزات حتى رحلة", + "No Response yet.": "مازال ماكاينش رد.", + " You Earn today is ": "اللي ربحتي اليوم هو", + " You Have in": "عندك في", + "Total points is ": "إجمالي النقاط هو", + "Total Connection Duration:": "إجمالي مدة الاتصال:", + " H and": "ساعة و", + "Passenger name : ": "اسم الراكب", + "Cost Of Trip IS ": "تكلفة الرحلة هي", + "Arrival time": "وقت الوصول", + "arrival time to reach your point": + "الوقت المتوقع للوصول للوجهة ديالك", + "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "بالنسبة لمشاوير السرعة والسكوتر، الثمن كيتحسب تلقائيا. أما مشاوير الراحة، فالثمن كيكون على حساب الوقت والمسافة.", + "Hello this is Driver": "مرحبا هذا السائق", + "Is the Passenger in your Car ?": "واش الراكب معاك في الطوموبيل؟", + "Please wait for the passenger to enter the car before starting the trip.": + "الله يرحم الوالدين تسنى حتى الراكب يركب الطوموبيل قبل ما تبدا المشوار.", + "No ,still Waiting.": "لا، مازال كنتسنى.", + "I arrive you": "أنا وصلت عندك", + "I Arrive your site": "أنا وصلت للمكان ديالك", + "You are not in near to passenger location": + "أنت ماشي قريب من مكان الراكب", + "please go to picker location exactly": + "الله يرحم الوالدين سير لموقع الراكب بالضبط", + "You Can Cancel Trip And get Cost of Trip From": + "ممكن تلغي المشوار وتاخد التكلفة من", + "Are you sure to cancel?": "متأكد باللي باغي تلغي؟", + // "Yes": "أيوة", + "Insert Emergincy Number": "دخل نمرة الطوارئ", + "Best choice for comfort car and flexible route and stops point": + "أحسن اختيار لطوموبيل مريحة ومسار مرن ونقط وقوف", + "Insert": "إدخال", + "This is for scooter or a motorcycle.": + "هذا خاص بالتوصيل ولا الموطور", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "المشوار هذا كيمشي نيشان من نقطة البداية لنقطة النهاية بثمن ثابت. والسائق خاصو يتبع المسار المحدد.", + "You can decline a request without any cost": + "تقدر ترفض الطلب بلا حتى تكلفة", + "Perfect for adventure seekers who want to experience something new and exciting": + "مثالي لعشاق المغامرة اللي باغين يجربو حوايج جديدة ومثيرة", + "My current location is:": "الموقع الحالي ديالي هو:", + "and I have a trip on": "وعندي مشوار على", + "App with Passenger": "التطبيق\nمع الراكب", + "You will be pay the cost to driver or we will get it from you on next trip": + "غادي تخلص التكلفة للسائق ولا غادي ناخدوها منك في المشوار اللي جاي", + "Trip has Steps": "الرحلة فيها خطوات", + "Distance from Passenger to destination is ": + "المسافة من الراكب للوجهة هي", + "price is": "التكلفة هي", + "This ride type does not allow changes to the destination or additional stops": + "نوع المشوار هذا ما كيسمحش بتغيير الوجهة ولا زيادة وقفات.", + "This price may be changed": + "الله يرحم الوالدين البال الثمن ممكن يتبدل", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "حتى إلا ماكانش خط، ماعليش! عيط للسائق ديالك مباشرة من خلال التطبيق ديالنا. كنستعملو تكنولوجيا حديثة باش نحافظو على الخصوصية ديالك.", + "This ride type allows changes, but the price may increase": + "نوع المشوار هذا كيسمح بالتغييرات، ولكن الثمن ممكن يزيد", + "Select one message": "اختار رسالة", + + "I'm waiting for you": "كنتسناك", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "لاحظنا باللي السرعة كتفوت 100 كم/ساعة. الله يرحم الوالدين نقص السرعة حفاظًا على السلامة ديالك. إلا حسيتي براسك ماشي آمن، ممكن تشارك تفاصيل الرحلة ديالك مع شي حد كتثيق فيه ولا تعيط للبوليس بالزر الأحمر SOS.", + "Warning: Intaleqing detected!": "تحذير: السرعة الزائدة مرصودة!", + "Please help! Contact me as soon as possible.": + "الله يرحم الوالدين عاونوني! عيطو بيا في أقرب وقت ممكن", + "Share Trip Details": "شارك تفاصيل الرحلة", + "Car Plate is ": "نمرة الطوموبيل هي", + "VIP Order": "طلب VIP", + "the 300 points equal 300 L.E for you \nSo go and gain your money": + "ربح 300 جنيه! كل 300 نقطة كتساوي 300 جنيه. يلا استغل النقاط ديالك!", + "the 300 points equal 300 L.E": "300 نقطة كتساوي 300 جنيه ليك", + "The payment was not approved. Please try again.": + "الدفع ما تقبلش. الله يرحم الوالدين حاول مرة أخرى.", + "Payment Failed": "فشل الدفع", + "Error": "خطأ", + "This is a scheduled notification.": "هذا إشعار مجدول.", + "An error occurred during the payment process.": + "وقع خطأ أثناء عملية الدفع.", + "The payment was approved.": "الدفع تقبل.", + "Payment Successful": "الدفع ناجح", + "No ride found yet": "ماكاينش طلبات متوفرة حاليًا", + "Accept Order": "قبل الطلب", + // "reject your order.": "رفض الطلب ديالك.", + "Bottom Bar Example": "مثال لشريط التنقل السفلي", + "Driver phone": "نمرة تيليفون السائق", + "Statistics": "الإحصائيات", + "Origin": "نقطة الانطلاق", + "Destination": "الوجهة", + "Driver Name": "اسم السائق", + "Driver Car Plate": "لوحة الطوموبيل", + "Available for rides": "متوفر للمشاوير", + "Scan Id": "مسح الهوية", + "Camera not initilaized yet": "الكاميرا مازال ماخدماتش", + "Scan ID MklGoogle": "مسح هوية MklGoogle", + "Language": "اللغة", + "Jordan": "الأردن", + "USA": "الولايات المتحدة الأمريكية", + "Egypt": "مصر", + "Turkey": "تركيا", + "Saudi Arabia": "المملكة العربية السعودية", + "Qatar": "قطر", + "Bahrain": "البحرين", + "Kuwait": "الكويت", + "But you have a negative salary of": "ولكن عندك رصيد ناقص بقيمة", + "Promo Code": "كود ترويجي", + "Your trip distance is": "المسافة ديال الرحلة ديالك هي", + "Enter promo code": "دخل كود ترويجي", + "You have promo!": "عندك عرض ترويجي!", + "Cost Duration": "تكلفة المدة", + "Duration is": "المدة هي", + "Leave": "مغادرة", + "Join": "انضمام", + "Heading your way now. Please be ready.": + "أنا جاي في الطريق ليك دابا. الله يرحم الوالدين وجد.", + "Approaching your area. Should be there in 3 minutes.": + "كنقرب من المنطقة ديالك. خاصني نكون تما في 3 دقائق.", + "There's heavy traffic here. Can you suggest an alternate pickup point?": + "كاين زحام كثير هنا. ممكن تقترح نقطة التقاء بديلة؟", + "This ride is already taken by another driver.": + "المشوار هذا خداه سائق آخر خلاص.", + "You Should be select reason.": "خاصك تختار سبب.", + + "Waiting for Driver ...": "كنتسناو السائق...", + "Latest Recent Trip": "آخر مشوار درت", + "from your list": "من اللائحة ديالك", + "Do you want to change Work location": "واش باغي تبدل مكان الخدمة؟", + "Do you want to change Home location": "واش باغي تبدل مكان الدار؟", + "We Are Sorry That we dont have cars in your Location!": + "كنتأسفوا باللي ما عندناش طوموبيلات في الموقع ديالك!", + "Choose from Map": "اختار من الخريطة", + "Pick your ride location on the map - Tap to confirm": + "حدد مكان الالتقاء ديال المشوار ديالك على الخريطة - ضغط باش تأكد", + // "To Work": "إلى الخدمة", + // "Are you want to go this site": "عايز تروح المكان ده؟", + "Closest & Cheapest": "الأقرب والأرخص", + // "Work Saved": "مكان الخدمة تسجل", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "Intaleq هو تطبيق التوصيل اللي آمن وموثوق وسهل الاستعمال.", + "With Intaleq, you can get a ride to your destination in minutes.": + "مع Intaleq، ممكن توصل للوجهة ديالك في دقائق.", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "Intaleq ملتزمة بالأمان، وكل الكباتن ديالنا كيتفحصو مزيان وكيديرو ليهم فحص الخلفية.", + // "To Home": "إلى الدار", + // "Home Saved": "مكان الدار تسجل", + // "Destination selected": "الوجهة مختارة:", + // "Now select start pick": "اختار مكان الانطلاق دابا:", + "Pick from map": "اختيار من الخريطة", + // "Click here point": "حدد هذه النقطة", + "No Car in your site. Sorry!": + "ماكاينش طوموبيل في الموقع ديالك. آسف!", + "Nearest Car for you about ": "أقرب طوموبيل ليك على بعد تقريبا ", + // "N/A": "غير متوفر", + "From :": "من:", + "Get Details of Trip": "عرض تفاصيل الرحلة", + "If you want add stop click here": "إلا بغيتي تزيد وقفة ضغط هنا", + // "Driver": "السائق", + "Where you want go ": "فين باغي تمشي؟", + "My Card": "البطاقة ديالي", + "Start Record": "بدا التسجيل", + "Wallet": "الجيب", + "History of Trip": "سجل الرحلات", + "Helping Center": "مركز المساعدة", + "Record saved": "التسجيل تسجل", + "Trips recorded": "الرحلات المسجلة", + "Select Your Country": "اختار البلد ديالك", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "باش تضمن توصلك أدق المعلومات للموقع ديالك، الله يرحم الوالدين اختار البلد ديالك لتحت. هذا غادي يساعد نخصو تجربة التطبيق والمحتوى للبلد ديالك.", + "Are you sure to delete recorded files": + "متأكد باللي باغي تمسح الملفات الصوتية المسجلة؟", + "Select recorded trip": "اختار الملف الصوتي المسجل", + "Card Number": "رقم البطاقة", + "Hi, Where to ": "مرحبا، فين غادي؟", + "Pick your destination from Map": "اختار الوجهة ديالك من الخريطة", + "Add Stops": "زيد محطات", + "Get Direction": "عرض الاتجاهات", + "Add Location": "زيد موقع", + "Switch Rider": "بدل الراكب", + "You will arrive to your destination after timer end.": + "غادي توصل للوجهة ديالك من بعد ما يسالي العداد.", + "You can cancel trip": "تقدر تلغي الرحلة", + "The driver waitting you in picked location .": + "السائق كيتسناك في المكان اللي اختاريتي.", + + "Pay with Your": "خلص بـ", + "Pay with Credit Card": "خلص ببطاقة الائتمان", + "Payment History": "سجل المدفوعات", + "Show Promos to Charge": "عرض العروض باش تشحن", + "Point": "نقطة", + "How many hours would you like to wait?": "شحال من ساعة باغي تسنى؟", + "Driver Wallet": "جيب السائق", + "Choose between those Type Cars": + "اختار من بين أنواع الطوموبيلات هادو", + "hour": "ساعة", + "Select Waiting Hours": "اختار ساعات الانتظار", + "Total Points is": "إجمالي النقاط هو", + "You will receive a code in SMS message": + "غادي توصل برمز في رسالة نصية", + "Done": "تم", + "Total Budget from trips is ": "إجمالي المبلغ المستحق من الرحلات هو", + "Total Amount:": "المبلغ الإجمالي:", + "Total Budget from trips by\nCredit card is ": + "إجمالي المبلغ المستحق من الرحلات عن طريق\nبطاقة الائتمان هو", + "This amount for all trip I get from Passengers": + "هذا المبلغ اللي حصلت عليه من كل الرحلات من الركاب", + "Pay from my budget": "خلص من الرصيد ديالي", + "This amount for all trip I get from Passengers and Collected For me in": + "هذا المبلغ اللي حصلت عليه من كل الرحلات من الركاب وتجمع ليا في", + "You can buy points from your budget": + "ممكن تشري نقاط من الرصيد ديالك", + "insert amount": "دخل المبلغ", + "You can buy Points to let you online\nby this list below": + "ممكن تشري نقاط باش تبقى متصل\nمن اللائحة هادي لتحت", + "Create Wallet to receive your money": + "إنشاء جيب لاستقبال الفلوس ديالك", + "Enter your feedback here": "كتب الملاحظات ديالك هنا", + "Please enter your feedback.": + "الله يرحم الوالدين دخل الملاحظات ديالك.", + "Feedback": "ملاحظات", + "Submit ": "إرسال", + "Click here to Show it in Map": "ضغط هنا باش تعرضو في الخريطة", + "Canceled": "ملغي", + "Type your Email": "كتب البريد الإلكتروني ديالك", + "No I want": "لا مابغيتش", + "Email is": "البريد الإلكتروني هو", + "Phone Number is": "نمرة التيليفون هي", + "Date of Birth is": "تاريخ الميلاد هو", + "Sex is ": "النوع هو ", + "Car Details": "تفاصيل الطوموبيل", + "VIN is": "رقم الشاسي هو", + "Color is ": "اللون هو ", + "Make is ": "الشركة المصنعة هي", + "Model is": "الموديل هو", + "Year is": "السنة هي", + "Expiration Date ": "تاريخ الانتهاء ", + "Edit Your data": "تعديل البيانات ديالك", + "write vin for your car": "كتب رقم الشاسي ديال الطوموبيل ديالك", + "VIN": "رقم الشاسي", + "write Color for your car": "كتب لون الطوموبيل ديالك", + "write Make for your car": "كتب الشركة المصنعة ديال الطوموبيل ديالك", + // "Make": "الشركة المصنعة", + "write Model for your car": "كتب موديل الطوموبيل ديالك", + // "Model": "الموديل", + "write Year for your car": "كتب سنة صنع الطوموبيل ديالك", + // "Expiration Date": "تاريخ الانتهاء", + "write Expiration Date for your car": + "كتب تاريخ انتهاء رخصة الطوموبيل ديالك", + "Tariffs": "التعريفات", + "Minimum fare": "الحد الأدنى للأجرة", + "Maximum fare": "الحد الأقصى للأجرة", + "Flag-down fee": "رسوم فتح العداد", + "Including Tax": "شامل الضريبة", + "BookingFee": "رسوم الحجز", + "Morning": "الصباح", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "من 07:30 حتى 10:30 (الخميس، الجمعة، السبت، الاثنين)", + "Evening": "المساء", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "من 12:00 حتى 15:00 (الخميس، الجمعة، السبت، الاثنين)", + "Night": "الليل", + "You have in account": "عندك في الحساب", + "Select Country": "اختار الدولة", + "Ride Today : ": "عدد رحلات اليوم: ", + "After this period\nYou can\'t cancel!": + "من بعد الفترة هادي\nمايمكنش تلغي!", + "from 23:59 till 05:30": "من 23:59 حتى 05:30", + "Rate Driver": "قيم السائق", + "Total Cost is ": "صافي الربح", + "Write note": "كتب ملاحظة", + "Time to arrive": "وقت الوصول", + "Ride Summaries": "ملخصات الرحلات", + "Total Cost": "المبلغ الإجمالي", + "Average of Hours of": "متوسط ساعات", + " is ON for this month": "في هذا الشهر", + "Days": "أيام", + "Total Hours on month": "إجمالي الساعات في الشهر", + "Counts of Hours on days": "عدد ساعات الأيام", + "OrderId": "رقم الرحلة", + "created time": "وقت الرحلة", + "Intaleq Over": "سرعة عالية", + "I will slow down": "واخا غادي نقص السرعة", + "Map Passenger": "خريطة الراكب", + "Be Slowly": "بالمهل شوية في السرعة", + "If you want to make Google Map App run directly when you apply order": + "إلا بغيتي تطبيق خرائط جوجل يخدم تلقائي فاش كتطلب الخدمة", + "You can change the language of the app": "تقدر تبدل لغة التطبيق", + "Your Budget less than needed": "القيمة المدخلة قل من الرصيد ديالك", + "You can change the Country to get all features": + "تقدر تبدل الدولة باش تحصل على كل المميزات", + "Change Country": "تبديل الدولة" + } + }; +} + + +================================================== +FILE PATH: ./lib/controller/local/phone_intel/helpers.dart +================================================== + +import 'countries.dart'; + +bool isNumeric(String s) => + s.isNotEmpty && int.tryParse(s.replaceAll("+", "")) != null; + +String removeDiacritics(String str) { + var withDia = + 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž'; + var withoutDia = + 'AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUuuuuNnSsYyyZz'; + + for (int i = 0; i < withDia.length; i++) { + str = str.replaceAll(withDia[i], withoutDia[i]); + } + + return str; +} + +extension CountryExtensions on List { + List stringSearch(String search) { + search = removeDiacritics(search.toLowerCase()); + return where( + (country) => isNumeric(search) || search.startsWith("+") + ? country.dialCode.contains(search) + : removeDiacritics(country.name.replaceAll("+", "").toLowerCase()) + .contains(search) || + country.nameTranslations.values.any((element) => + removeDiacritics(element.toLowerCase()).contains(search)), + ).toList(); + } +} + + +================================================== +FILE PATH: ./lib/controller/local/phone_intel/intl_phone_field.dart +================================================== + +library intl_phone_field; + +import 'dart:async'; +import 'package:flutter/foundation.dart' show kIsWeb; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import './countries.dart'; +import './phone_number.dart'; +import 'country_picker_dialog.dart'; +import 'helpers.dart'; + +class IntlPhoneField extends StatefulWidget { + /// The TextFormField key. + final GlobalKey? formFieldKey; + + /// Whether to hide the text being edited (e.g., for passwords). + final bool obscureText; + + /// How the text should be aligned horizontally. + final TextAlign textAlign; + + /// How the text should be aligned vertically. + final TextAlignVertical? textAlignVertical; + final VoidCallback? onTap; + + /// {@macro flutter.widgets.editableText.readOnly} + final bool readOnly; + final FormFieldSetter? onSaved; + + /// {@macro flutter.widgets.editableText.onChanged} + /// + /// See also: + /// + /// * [inputFormatters], which are called before [onChanged] + /// runs and can validate and change ("format") the input value. + /// * [onEditingComplete], [onSubmitted], [onSelectionChanged]: + /// which are more specialized input change notifications. + final ValueChanged? onChanged; + + final ValueChanged? onCountryChanged; + + /// An optional method that validates an input. Returns an error string to display if the input is invalid, or null otherwise. + /// + /// A [PhoneNumber] is passed to the validator as argument. + /// The validator can handle asynchronous validation when declared as a [Future]. + /// Or run synchronously when declared as a [Function]. + /// + /// By default, the validator checks whether the input number length is between selected country's phone numbers min and max length. + /// If `disableLengthCheck` is not set to `true`, your validator returned value will be overwritten by the default validator. + /// But, if `disableLengthCheck` is set to `true`, your validator will have to check phone number length itself. + final FutureOr Function(PhoneNumber?)? validator; + + /// {@macro flutter.widgets.editableText.keyboardType} + final TextInputType keyboardType; + + /// Controls the text being edited. + /// + /// If null, this widget will create its own [TextEditingController]. + final TextEditingController? controller; + + /// Defines the keyboard focus for this widget. + /// + /// The [focusNode] is a long-lived object that's typically managed by a + /// [StatefulWidget] parent. See [FocusNode] for more information. + /// + /// To give the keyboard focus to this widget, provide a [focusNode] and then + /// use the current [FocusScope] to request the focus: + /// + /// ```dart + /// FocusScope.of(context).requestFocus(myFocusNode); + /// ``` + /// + /// This happens automatically when the widget is tapped. + /// + /// To be notified when the widget gains or loses the focus, add a listener + /// to the [focusNode]: + /// + /// ```dart + /// focusNode.addListener(() { print(myFocusNode.hasFocus); }); + /// ``` + /// + /// If null, this widget will create its own [FocusNode]. + /// + /// ## Keyboard + /// + /// Requesting the focus will typically cause the keyboard to be shown + /// if it's not showing already. + /// + /// On Android, the user can hide the keyboard - without changing the focus - + /// with the system back button. They can restore the keyboard's visibility + /// by tapping on a text field. The user might hide the keyboard and + /// switch to a physical keyboard, or they might just need to get it + /// out of the way for a moment, to expose something it's + /// obscuring. In this case requesting the focus again will not + /// cause the focus to change, and will not make the keyboard visible. + /// + /// This widget builds an [EditableText] and will ensure that the keyboard is + /// showing when it is tapped by calling [EditableTextState.requestKeyboard()]. + final FocusNode? focusNode; + + /// {@macro flutter.widgets.editableText.onSubmitted} + /// + /// See also: + /// + /// * [EditableText.onSubmitted] for an example of how to handle moving to + /// the next/previous field when using [TextInputAction.next] and + /// [TextInputAction.previous] for [textInputAction]. + final void Function(String)? onSubmitted; + + /// If false the widget is "disabled": it ignores taps, the [TextFormField]'s + /// [decoration] is rendered in grey, + /// [decoration]'s [InputDecoration.counterText] is set to `""`, + /// and the drop down icon is hidden no matter [showDropdownIcon] value. + /// + /// If non-null this property overrides the [decoration]'s + /// [Decoration.enabled] property. + final bool enabled; + + /// The appearance of the keyboard. + /// + /// This setting is only honored on iOS devices. + /// + /// If unset, defaults to the brightness of [ThemeData.brightness]. + final Brightness? keyboardAppearance; + + /// Initial Value for the field. + /// This property can be used to pre-fill the field. + final String? initialValue; + + final String languageCode; + + /// 2 letter ISO Code or country dial code. + /// + /// ```dart + /// initialCountryCode: 'IN', // India + /// initialCountryCode: '+225', // Côte d'Ivoire + /// ``` + final String? initialCountryCode; + + /// List of Country to display see countries.dart for format + final List? countries; + + /// The decoration to show around the text field. + /// + /// By default, draws a horizontal line under the text field but can be + /// configured to show an icon, label, hint text, and error text. + /// + /// Specify null to remove the decoration entirely (including the + /// extra padding introduced by the decoration to save space for the labels). + final InputDecoration decoration; + + /// The style to use for the text being edited. + /// + /// This text style is also used as the base style for the [decoration]. + /// + /// If null, defaults to the `subtitle1` text style from the current [Theme]. + final TextStyle? style; + + /// Disable view Min/Max Length check + final bool disableLengthCheck; + + /// Won't work if [enabled] is set to `false`. + final bool showDropdownIcon; + + final BoxDecoration dropdownDecoration; + + /// The style use for the country dial code. + final TextStyle? dropdownTextStyle; + + /// {@macro flutter.widgets.editableText.inputFormatters} + final List? inputFormatters; + + /// The text that describes the search input field. + /// + /// When the input field is empty and unfocused, the label is displayed on top of the input field (i.e., at the same location on the screen where text may be entered in the input field). + /// When the input field receives focus (or if the field is non-empty), the label moves above (i.e., vertically adjacent to) the input field. + final String searchText; + + /// Position of an icon [leading, trailing] + final IconPosition dropdownIconPosition; + + /// Icon of the drop down button. + /// + /// Default is [Icon(Icons.arrow_drop_down)] + final Icon dropdownIcon; + + /// Whether this text field should focus itself if nothing else is already focused. + final bool autofocus; + + /// Autovalidate mode for text form field. + /// + /// If [AutovalidateMode.onUserInteraction], this FormField will only auto-validate after its content changes. + /// If [AutovalidateMode.always], it will auto-validate even without user interaction. + /// If [AutovalidateMode.disabled], auto-validation will be disabled. + /// + /// Defaults to [AutovalidateMode.onUserInteraction]. + final AutovalidateMode? autovalidateMode; + + /// Whether to show or hide country flag. + /// + /// Default value is `true`. + final bool showCountryFlag; + + /// Message to be displayed on autoValidate error + /// + /// Default value is `Invalid Mobile Number`. + final String? invalidNumberMessage; + + /// The color of the cursor. + final Color? cursorColor; + + /// How tall the cursor will be. + final double? cursorHeight; + + /// How rounded the corners of the cursor should be. + final Radius? cursorRadius; + + /// How thick the cursor will be. + final double cursorWidth; + + /// Whether to show cursor. + final bool? showCursor; + + /// The padding of the Flags Button. + /// + /// The amount of insets that are applied to the Flags Button. + /// + /// If unset, defaults to [EdgeInsets.zero]. + final EdgeInsetsGeometry flagsButtonPadding; + + /// The type of action button to use for the keyboard. + final TextInputAction? textInputAction; + + /// Optional set of styles to allow for customizing the country search + /// & pick dialog + final PickerDialogStyle? pickerDialogStyle; + + /// The margin of the country selector button. + /// + /// The amount of space to surround the country selector button. + /// + /// If unset, defaults to [EdgeInsets.zero]. + final EdgeInsets flagsButtonMargin; + + /// Enable the autofill hint for phone number. + final bool disableAutoFillHints; + + /// If null, default magnification configuration will be used. + final TextMagnifierConfiguration? magnifierConfiguration; + + const IntlPhoneField({ + Key? key, + this.formFieldKey, + this.initialCountryCode, + this.languageCode = 'en', + this.disableAutoFillHints = false, + this.obscureText = false, + this.textAlign = TextAlign.left, + this.textAlignVertical, + this.onTap, + this.readOnly = false, + this.initialValue, + this.keyboardType = TextInputType.phone, + this.controller, + this.focusNode, + this.decoration = const InputDecoration(), + this.style, + this.dropdownTextStyle, + this.onSubmitted, + this.validator, + this.onChanged, + this.countries, + this.onCountryChanged, + this.onSaved, + this.showDropdownIcon = true, + this.dropdownDecoration = const BoxDecoration(), + this.inputFormatters, + this.enabled = true, + this.keyboardAppearance, + @Deprecated('Use searchFieldInputDecoration of PickerDialogStyle instead') + this.searchText = 'Search country', + this.dropdownIconPosition = IconPosition.leading, + this.dropdownIcon = const Icon(Icons.arrow_drop_down), + this.autofocus = false, + this.textInputAction, + this.autovalidateMode = AutovalidateMode.onUserInteraction, + this.showCountryFlag = true, + this.cursorColor, + this.disableLengthCheck = false, + this.flagsButtonPadding = EdgeInsets.zero, + this.invalidNumberMessage = 'Invalid Mobile Number', + this.cursorHeight, + this.cursorRadius = Radius.zero, + this.cursorWidth = 2.0, + this.showCursor = true, + this.pickerDialogStyle, + this.flagsButtonMargin = EdgeInsets.zero, + this.magnifierConfiguration, + }) : super(key: key); + + @override + State createState() => _IntlPhoneFieldState(); +} + +class _IntlPhoneFieldState extends State { + late List _countryList; + late Country _selectedCountry; + late List filteredCountries; + late String number; + + String? validatorMessage; + + @override + void initState() { + super.initState(); + _countryList = widget.countries ?? countries; + filteredCountries = _countryList; + number = widget.initialValue ?? ''; + if (widget.initialCountryCode == null && number.startsWith('+')) { + number = number.substring(1); + // parse initial value + _selectedCountry = countries.firstWhere( + (country) => number.startsWith(country.fullCountryCode), + orElse: () => _countryList.first); + + // remove country code from the initial number value + number = number.replaceFirst( + RegExp("^${_selectedCountry.fullCountryCode}"), ""); + } else { + _selectedCountry = _countryList.firstWhere( + (item) => item.code == (widget.initialCountryCode ?? 'US'), + orElse: () => _countryList.first); + + // remove country code from the initial number value + if (number.startsWith('+')) { + number = number.replaceFirst( + RegExp("^\\+${_selectedCountry.fullCountryCode}"), ""); + } else { + number = number.replaceFirst( + RegExp("^${_selectedCountry.fullCountryCode}"), ""); + } + } + + if (widget.autovalidateMode == AutovalidateMode.always) { + final initialPhoneNumber = PhoneNumber( + countryISOCode: _selectedCountry.code, + countryCode: '+${_selectedCountry.dialCode}', + number: widget.initialValue ?? '', + ); + + final value = widget.validator?.call(initialPhoneNumber); + + if (value is String) { + validatorMessage = value; + } else { + (value as Future).then((msg) { + validatorMessage = msg; + }); + } + } + } + + Future _changeCountry() async { + filteredCountries = _countryList; + await showDialog( + context: context, + useRootNavigator: false, + builder: (context) => StatefulBuilder( + builder: (ctx, setState) => CountryPickerDialog( + languageCode: widget.languageCode.toLowerCase(), + style: widget.pickerDialogStyle, + filteredCountries: filteredCountries, + searchText: widget.searchText, + countryList: _countryList, + selectedCountry: _selectedCountry, + onCountryChanged: (Country country) { + _selectedCountry = country; + widget.onCountryChanged?.call(country); + setState(() {}); + }, + ), + ), + ); + if (mounted) setState(() {}); + } + + @override + Widget build(BuildContext context) { + return TextFormField( + key: widget.formFieldKey, + initialValue: (widget.controller == null) ? number : null, + autofillHints: widget.disableAutoFillHints + ? null + : [AutofillHints.telephoneNumberNational], + readOnly: widget.readOnly, + obscureText: widget.obscureText, + textAlign: widget.textAlign, + textAlignVertical: widget.textAlignVertical, + cursorColor: widget.cursorColor, + onTap: widget.onTap, + controller: widget.controller, + focusNode: widget.focusNode, + cursorHeight: widget.cursorHeight, + cursorRadius: widget.cursorRadius, + cursorWidth: widget.cursorWidth, + showCursor: widget.showCursor, + onFieldSubmitted: widget.onSubmitted, + magnifierConfiguration: widget.magnifierConfiguration, + decoration: widget.decoration.copyWith( + prefixIcon: _buildFlagsButton(), + counterText: !widget.enabled ? '' : null, + ), + style: widget.style, + onSaved: (value) { + widget.onSaved?.call( + PhoneNumber( + countryISOCode: _selectedCountry.code, + countryCode: + '+${_selectedCountry.dialCode}${_selectedCountry.regionCode}', + number: value!, + ), + ); + }, + onChanged: (value) async { + final phoneNumber = PhoneNumber( + countryISOCode: _selectedCountry.code, + countryCode: '+${_selectedCountry.fullCountryCode}', + number: value, + ); + + if (widget.autovalidateMode != AutovalidateMode.disabled) { + validatorMessage = await widget.validator?.call(phoneNumber); + } + + widget.onChanged?.call(phoneNumber); + }, + validator: (value) { + if (value == null || !isNumeric(value)) return validatorMessage; + if (!widget.disableLengthCheck) { + return value.length >= _selectedCountry.minLength && + value.length <= _selectedCountry.maxLength + ? null + : widget.invalidNumberMessage; + } + + return validatorMessage; + }, + maxLength: widget.disableLengthCheck ? null : _selectedCountry.maxLength, + keyboardType: widget.keyboardType, + inputFormatters: widget.inputFormatters, + enabled: widget.enabled, + keyboardAppearance: widget.keyboardAppearance, + autofocus: widget.autofocus, + textInputAction: widget.textInputAction, + autovalidateMode: widget.autovalidateMode, + ); + } + + Container _buildFlagsButton() { + return Container( + margin: widget.flagsButtonMargin, + child: DecoratedBox( + decoration: widget.dropdownDecoration, + child: InkWell( + borderRadius: widget.dropdownDecoration.borderRadius as BorderRadius?, + onTap: widget.enabled ? _changeCountry : null, + child: Padding( + padding: widget.flagsButtonPadding, + child: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const SizedBox( + width: 4, + ), + if (widget.enabled && + widget.showDropdownIcon && + widget.dropdownIconPosition == IconPosition.leading) ...[ + widget.dropdownIcon, + const SizedBox(width: 4), + ], + if (widget.showCountryFlag) ...[ + kIsWeb + ? Image.asset( + 'assets/flags/${_selectedCountry.code.toLowerCase()}.png', + package: 'intl_phone_field', + width: 32, + ) + : Text( + _selectedCountry.flag, + style: const TextStyle(fontSize: 18), + ), + const SizedBox(width: 8), + ], + FittedBox( + child: Text( + '+${_selectedCountry.dialCode}', + style: widget.dropdownTextStyle, + ), + ), + if (widget.enabled && + widget.showDropdownIcon && + widget.dropdownIconPosition == IconPosition.trailing) ...[ + const SizedBox(width: 4), + widget.dropdownIcon, + ], + const SizedBox(width: 8), + ], + ), + ), + ), + ), + ); + } +} + +enum IconPosition { + leading, + trailing, +} + + +================================================== +FILE PATH: ./lib/controller/local/phone_intel/country_picker_dialog.dart +================================================== + +import 'package:Intaleq/controller/local/phone_intel/helpers.dart'; +import 'package:flutter/foundation.dart' show kIsWeb; +import 'package:flutter/material.dart'; + +import 'countries.dart'; + +class PickerDialogStyle { + final Color? backgroundColor; + + final TextStyle? countryCodeStyle; + + final TextStyle? countryNameStyle; + + final Widget? listTileDivider; + + final EdgeInsets? listTilePadding; + + final EdgeInsets? padding; + + final Color? searchFieldCursorColor; + + final InputDecoration? searchFieldInputDecoration; + + final EdgeInsets? searchFieldPadding; + + final double? width; + + PickerDialogStyle({ + this.backgroundColor, + this.countryCodeStyle, + this.countryNameStyle, + this.listTileDivider, + this.listTilePadding, + this.padding, + this.searchFieldCursorColor, + this.searchFieldInputDecoration, + this.searchFieldPadding, + this.width, + }); +} + +class CountryPickerDialog extends StatefulWidget { + final List countryList; + final Country selectedCountry; + final ValueChanged onCountryChanged; + final String searchText; + final List filteredCountries; + final PickerDialogStyle? style; + final String languageCode; + + const CountryPickerDialog({ + Key? key, + required this.searchText, + required this.languageCode, + required this.countryList, + required this.onCountryChanged, + required this.selectedCountry, + required this.filteredCountries, + this.style, + }) : super(key: key); + + @override + State createState() => _CountryPickerDialogState(); +} + +class _CountryPickerDialogState extends State { + late List _filteredCountries; + late Country _selectedCountry; + + @override + void initState() { + _selectedCountry = widget.selectedCountry; + _filteredCountries = widget.filteredCountries.toList() + ..sort( + (a, b) => a + .localizedName(widget.languageCode) + .compareTo(b.localizedName(widget.languageCode)), + ); + + super.initState(); + } + + @override + Widget build(BuildContext context) { + final mediaWidth = MediaQuery.of(context).size.width; + final width = widget.style?.width ?? mediaWidth; + const defaultHorizontalPadding = 40.0; + const defaultVerticalPadding = 24.0; + return Dialog( + insetPadding: EdgeInsets.symmetric( + vertical: defaultVerticalPadding, + horizontal: mediaWidth > (width + defaultHorizontalPadding * 2) + ? (mediaWidth - width) / 2 + : defaultHorizontalPadding), + backgroundColor: widget.style?.backgroundColor, + child: Container( + padding: widget.style?.padding ?? const EdgeInsets.all(10), + child: Column( + children: [ + Padding( + padding: + widget.style?.searchFieldPadding ?? const EdgeInsets.all(0), + child: TextField( + cursorColor: widget.style?.searchFieldCursorColor, + decoration: widget.style?.searchFieldInputDecoration ?? + InputDecoration( + suffixIcon: const Icon(Icons.search), + labelText: widget.searchText, + ), + onChanged: (value) { + _filteredCountries = widget.countryList.stringSearch(value) + ..sort( + (a, b) => a + .localizedName(widget.languageCode) + .compareTo(b.localizedName(widget.languageCode)), + ); + if (mounted) setState(() {}); + }, + ), + ), + const SizedBox(height: 20), + Expanded( + child: ListView.builder( + shrinkWrap: true, + itemCount: _filteredCountries.length, + itemBuilder: (ctx, index) => Column( + children: [ + ListTile( + leading: kIsWeb + ? Image.asset( + 'assets/flags/${_filteredCountries[index].code.toLowerCase()}.png', + package: 'intl_phone_field', + width: 32, + ) + : Text( + _filteredCountries[index].flag, + style: const TextStyle(fontSize: 18), + ), + contentPadding: widget.style?.listTilePadding, + title: Text( + _filteredCountries[index] + .localizedName(widget.languageCode), + style: widget.style?.countryNameStyle ?? + const TextStyle(fontWeight: FontWeight.w700), + ), + trailing: Text( + '+${_filteredCountries[index].dialCode}', + style: widget.style?.countryCodeStyle ?? + const TextStyle(fontWeight: FontWeight.w700), + ), + onTap: () { + _selectedCountry = _filteredCountries[index]; + widget.onCountryChanged(_selectedCountry); + Navigator.of(context).pop(); + }, + ), + widget.style?.listTileDivider ?? + const Divider(thickness: 1), + ], + ), + ), + ), + ], + ), + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/controller/local/phone_intel/countries.dart +================================================== + +// see: https://en.wikipedia.org/wiki/List_of_country_calling_codes +// for list of country/calling codes + +const List countries = [ + Country( + name: "Afghanistan", + nameTranslations: { + "sk": "Afganistan", + "se": "Afghanistan", + "pl": "Afganistan", + "no": "Afghanistan", + "ja": "アフガニスタン", + "it": "Afghanistan", + "zh": "阿富汗", + "nl": "Afghanistan", + "de": "Afghanistan", + "fr": "Afghanistan", + "es": "Afganistán", + "en": "Afghanistan", + "pt_BR": "Afeganistão", + "sr-Cyrl": "Авганистан", + "sr-Latn": "Avganistan", + "zh_TW": "阿富汗", + "tr": "Afganistan", + "ro": "Afganistan", + "ar": "أفغانستان", + "fa": "افغانستان", + "yue": "阿富汗" + }, + flag: "🇦🇫", + code: "AF", + dialCode: "93", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Åland Islands", + nameTranslations: { + "sk": "Alandy", + "se": "Ålánda", + "pl": "Wyspy Alandzkie", + "no": "Åland", + "ja": "オーランド諸島", + "it": "Isole Åland", + "zh": "奥兰群岛", + "nl": "Åland", + "de": "Ålandinseln", + "fr": "Îles Åland", + "es": "Islas Åland", + "en": "Åland Islands", + "pt_BR": "Ilhas Aland", + "sr-Cyrl": "Аландска Острва", + "sr-Latn": "Alandska Ostrva", + "zh_TW": "奧蘭群島", + "tr": "Åland", + "ro": "Insulele Åland", + "ar": "جزر أولاند", + "fa": "جزیره اولاند", + "yue": "奧蘭群島" + }, + flag: "🇦🇽", + code: "AX", + dialCode: "358", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Albania", + nameTranslations: { + "sk": "Albánsko", + "se": "Albánia", + "pl": "Albania", + "no": "Albania", + "ja": "アルバニア", + "it": "Albania", + "zh": "阿尔巴尼亚", + "nl": "Albanië", + "de": "Albanien", + "fr": "Albanie", + "es": "Albania", + "en": "Albania", + "pt_BR": "Albânia", + "sr-Cyrl": "Албанија", + "sr-Latn": "Albanija", + "zh_TW": "阿爾巴尼亞", + "tr": "Arnavutluk", + "ro": "Albania", + "ar": "ألبانيا", + "fa": "آلبانی", + "yue": "阿爾巴尼亞" + }, + flag: "🇦🇱", + code: "AL", + dialCode: "355", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Algeria", + nameTranslations: { + "sk": "Alžírsko", + "se": "Algeria", + "pl": "Algieria", + "no": "Algerie", + "ja": "アルジェリア", + "it": "Algeria", + "zh": "阿尔及利亚", + "nl": "Algerije", + "de": "Algerien", + "fr": "Algérie", + "es": "Argelia", + "en": "Algeria", + "pt_BR": "Argélia", + "sr-Cyrl": "Аргентина", + "sr-Latn": "Argentina", + "zh_TW": "阿爾及利亞", + "tr": "Cezayir", + "ro": "Algeria", + "ar": "الجزائر", + "fa": "الجزیره", + "yue": "阿爾及利亞" + }, + flag: "🇩🇿", + code: "DZ", + dialCode: "213", + minLength: 9, + maxLength: 9, + ), + Country( + name: "American Samoa", + nameTranslations: { + "sk": "Americká Samoa", + "se": "Amerihká Samoa", + "pl": "Samoa Amerykańskie", + "no": "Amerikansk Samoa", + "ja": "米領サモア", + "it": "Samoa americane", + "zh": "美属萨摩亚", + "nl": "Amerikaans-Samoa", + "de": "Amerikanisch-Samoa", + "fr": "Samoa américaines", + "es": "Samoa Americana", + "en": "American Samoa", + "pt_BR": "Samoa Americana", + "sr-Cyrl": "Америчка Самоа", + "sr-Latn": "Američka Samoa", + "zh_TW": "美屬薩摩亞", + "tr": "Amerikan Samoası", + "ro": "Samoa Americană", + "ar": "ساموا الأمريكية", + "fa": "ساموا آمریکا", + "yue": "美屬薩摩亞" + }, + flag: "🇦🇸", + code: "AS", + dialCode: "1684", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Andorra", + nameTranslations: { + "sk": "Andorra", + "se": "Andorra", + "pl": "Andora", + "no": "Andorra", + "ja": "アンドラ", + "it": "Andorra", + "zh": "安道尔", + "nl": "Andorra", + "de": "Andorra", + "fr": "Andorre", + "es": "Andorra", + "en": "Andorra", + "pt_BR": "Andorra", + "sr-Cyrl": "Андора", + "sr-Latn": "Andora", + "zh_TW": "安道爾", + "tr": "Andora", + "ro": "Andorra", + "ar": "أندورا", + "fa": "آندورا", + "yue": "安道爾" + }, + flag: "🇦🇩", + code: "AD", + dialCode: "376", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Angola", + nameTranslations: { + "sk": "Angola", + "se": "Angola", + "pl": "Angola", + "no": "Angola", + "ja": "アンゴラ", + "it": "Angola", + "zh": "安哥拉", + "nl": "Angola", + "de": "Angola", + "fr": "Angola", + "es": "Angola", + "en": "Angola", + "pt_BR": "Angola", + "sr-Cyrl": "Ангола", + "sr-Latn": "Angola", + "zh_TW": "安哥拉", + "tr": "Angola", + "ro": "Angola", + "ar": "أنغولا", + "fa": "آنگولا", + "yue": "安哥拉" + }, + flag: "🇦🇴", + code: "AO", + dialCode: "244", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Anguilla", + nameTranslations: { + "sk": "Anguilla", + "se": "Anguilla", + "pl": "Anguilla", + "no": "Anguilla", + "ja": "アンギラ", + "it": "Anguilla", + "zh": "安圭拉", + "nl": "Anguilla", + "de": "Anguilla", + "fr": "Anguilla", + "es": "Anguila", + "en": "Anguilla", + "pt_BR": "Anguilla", + "sr-Cyrl": "Ангвила", + "sr-Latn": "Angvila", + "zh_TW": "安圭拉", + "tr": "Anguilla", + "ro": "Anguilla", + "ar": "أنغويلا", + "fa": "آنگولیا", + "yue": "安圭拉" + }, + flag: "🇦🇮", + code: "AI", + dialCode: "1264", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Antarctica", + nameTranslations: { + "sk": "Antarktída", + "se": "Antárktis", + "pl": "Antarktyda", + "no": "Antarktis", + "ja": "南極", + "it": "Antartide", + "zh": "南极洲", + "nl": "Antarctica", + "de": "Antarktis", + "fr": "Antarctique", + "es": "Antártida", + "en": "Antarctica", + "pt_BR": "Antártica", + "sr-Cyrl": "Антарктик", + "sr-Latn": "Antarktik", + "zh_TW": "南極", + "tr": "Antarktika", + "ro": "Antarctica", + "ar": "القارة القطبية الجنوبية", + "fa": "قطب جنوب", + "yue": "南极洲" + }, + flag: "🇦🇶", + code: "AQ", + dialCode: "672", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Antigua and Barbuda", + nameTranslations: { + "sk": "Antigua a Barbuda", + "se": "Antigua ja Barbuda", + "pl": "Antigua i Barbuda", + "no": "Antigua og Barbuda", + "ja": "アンティグア・バーブーダ", + "it": "Antigua e Barbuda", + "zh": "安提瓜和巴布达", + "nl": "Antigua en Barbuda", + "de": "Antigua und Barbuda", + "fr": "Antigua-et-Barbuda", + "es": "Antigua y Barbuda", + "en": "Antigua & Barbuda", + "pt_BR": "Antigua e Barbuda", + "sr-Cyrl": "Антигва и Барбуда", + "sr-Latn": "Antigva i Barbuda", + "zh_TW": "安提瓜和巴布達", + "tr": "Antigua ve Barbuda", + "ro": "Antigua şi Barbuda", + "ar": "أنتيغوا وباربودا", + "fa": "آنتیگوآ و باربودا", + "yue": "安提瓜同巴布达" + }, + flag: "🇦🇬", + code: "AG", + dialCode: "1268", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Argentina", + nameTranslations: { + "sk": "Argentína", + "se": "Argentina", + "pl": "Argentyna", + "no": "Argentina", + "ja": "アルゼンチン", + "it": "Argentina", + "zh": "阿根廷", + "nl": "Argentinië", + "de": "Argentinien", + "fr": "Argentine", + "es": "Argentina", + "en": "Argentina", + "pt_BR": "Argentina", + "sr-Cyrl": "Аргентина", + "sr-Latn": "Argentina", + "zh_TW": "阿根廷", + "tr": "Arjantin", + "ro": "Argentina", + "ar": "الأرجنتين", + "fa": "آرژانتین", + "yue": "阿根廷" + }, + flag: "🇦🇷", + code: "AR", + dialCode: "54", + minLength: 12, + maxLength: 12, + ), + Country( + name: "Armenia", + nameTranslations: { + "sk": "Arménsko", + "se": "Armenia", + "pl": "Armenia", + "no": "Armenia", + "ja": "アルメニア", + "it": "Armenia", + "zh": "亚美尼亚", + "nl": "Armenië", + "de": "Armenien", + "fr": "Arménie", + "es": "Armenia", + "en": "Armenia", + "pt_BR": "Armênia", + "sr-Cyrl": "Јерменија", + "sr-Latn": "Jermenija", + "zh_TW": "亞美尼亞", + "tr": "Ermenistan", + "ro": "Armenia", + "ar": "أرمينيا", + "fa": "ارمنستان", + "yue": "亞美尼亞" + }, + flag: "🇦🇲", + code: "AM", + dialCode: "374", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Aruba", + nameTranslations: { + "sk": "Aruba", + "se": "Aruba", + "pl": "Aruba", + "no": "Aruba", + "ja": "アルバ", + "it": "Aruba", + "zh": "阿鲁巴", + "nl": "Aruba", + "de": "Aruba", + "fr": "Aruba", + "es": "Aruba", + "en": "Aruba", + "pt_BR": "Aruba", + "sr-Cyrl": "Аруба", + "sr-Latn": "Aruba", + "zh_TW": "阿魯巴", + "tr": "Aruba", + "ro": "Aruba", + "ar": "أروبا", + "fa": "آروبا", + "yue": "阿魯巴島" + }, + flag: "🇦🇼", + code: "AW", + dialCode: "297", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Australia", + nameTranslations: { + "sk": "Austrália", + "se": "Austrália", + "pl": "Australia", + "no": "Australia", + "ja": "オーストラリア", + "it": "Australia", + "zh": "澳大利亚", + "nl": "Australië", + "de": "Australien", + "fr": "Australie", + "es": "Australia", + "en": "Australia", + "pt_BR": "Austrália", + "sr-Cyrl": "Аустралија", + "sr-Latn": "Australija", + "zh_TW": "澳州", + "tr": "Avustralya", + "ro": "Australia", + "ar": "أستراليا", + "fa": "استرالیا", + "yue": "澳洲" + }, + flag: "🇦🇺", + code: "AU", + dialCode: "61", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Austria", + nameTranslations: { + "sk": "Rakúsko", + "se": "Nuortariika", + "pl": "Austria", + "no": "Østerrike", + "ja": "オーストリア", + "it": "Austria", + "zh": "奥地利", + "nl": "Oostenrijk", + "de": "Österreich", + "fr": "Autriche", + "es": "Austria", + "en": "Austria", + "pt_BR": "Áustria", + "sr-Cyrl": "Аустрија", + "sr-Latn": "Austrija", + "zh_TW": "奥地利", + "tr": "Avusturya", + "ro": "Austria", + "ar": "النمسا", + "fa": "اتریش", + "yue": "奧地利" + }, + flag: "🇦🇹", + code: "AT", + dialCode: "43", + minLength: 13, + maxLength: 13, + ), + Country( + name: "Azerbaijan", + nameTranslations: { + "sk": "Azerbajdžan", + "se": "Aserbaižan", + "pl": "Azerbejdżan", + "no": "Aserbajdsjan", + "ja": "アゼルバイジャン", + "it": "Azerbaigian", + "zh": "阿塞拜疆", + "nl": "Azerbeidzjan", + "de": "Aserbaidschan", + "fr": "Azerbaïdjan", + "es": "Azerbaiyán", + "en": "Azerbaijan", + "pt_BR": "Azerbaijão", + "sr-Cyrl": "Азербејџан", + "sr-Latn": "Azerbejdžan", + "zh_TW": "亞塞拜然", + "tr": "Azerbaycan", + "ro": "Azerbaidjan", + "ar": "أذربيجان", + "fa": "آذربایجان", + "yue": "阿塞拜疆" + }, + flag: "🇦🇿", + code: "AZ", + dialCode: "994", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Bahamas", + nameTranslations: { + "sk": "Bahamy", + "se": "Bahamas", + "pl": "Bahamy", + "no": "Bahamas", + "ja": "バハマ", + "it": "Bahamas", + "zh": "巴哈马", + "nl": "Bahama's", + "de": "Bahamas", + "fr": "Bahamas", + "es": "Bahamas", + "en": "Bahamas", + "pt_BR": "Bahamas", + "sr-Cyrl": "Бахаме", + "sr-Latn": "Bahame", + "zh_TW": "巴哈馬", + "tr": "Bahama", + "ro": "Bahamas", + "ar": "باهاماس", + "fa": "باهاماس", + "yue": "巴哈馬" + }, + flag: "🇧🇸", + code: "BS", + dialCode: "1242", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Bahrain", + nameTranslations: { + "sk": "Bahrajn", + "se": "Bahrain", + "pl": "Bahrajn", + "no": "Bahrain", + "ja": "バーレーン", + "it": "Bahrein", + "zh": "巴林", + "nl": "Bahrein", + "de": "Bahrain", + "fr": "Bahreïn", + "es": "Baréin", + "en": "Bahrain", + "pt_BR": "Bahrain", + "sr-Cyrl": "Бахреин", + "sr-Latn": "Bahrein", + "zh_TW": "巴林", + "tr": "Bahreyn", + "ro": "Bahrein", + "ar": "البحرين", + "fa": "بحرین", + "yue": "巴林" + }, + flag: "🇧🇭", + code: "BH", + dialCode: "973", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Bangladesh", + nameTranslations: { + "sk": "Bangladéš", + "se": "Bangladesh", + "pl": "Bangladesz", + "no": "Bangladesh", + "ja": "バングラデシュ", + "it": "Bangladesh", + "zh": "孟加拉国", + "nl": "Bangladesh", + "de": "Bangladesch", + "fr": "Bangladesh", + "es": "Bangladés", + "en": "Bangladesh", + "pt_BR": "Bangladesh", + "sr-Cyrl": "Бангладеш", + "sr-Latn": "Bangladeš", + "zh_TW": "孟加拉", + "tr": "Bangladeş", + "ro": "Bangladesh", + "ar": "بنغلاديش", + "fa": "بنگلادش", + "yue": "孟加拉囯" + }, + flag: "🇧🇩", + code: "BD", + dialCode: "880", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Barbados", + nameTranslations: { + "sk": "Barbados", + "se": "Barbados", + "pl": "Barbados", + "no": "Barbados", + "ja": "バルバドス", + "it": "Barbados", + "zh": "巴巴多斯", + "nl": "Barbados", + "de": "Barbados", + "fr": "Barbade", + "es": "Barbados", + "en": "Barbados", + "pt_BR": "Barbados", + "sr-Cyrl": "Барбадос", + "sr-Latn": "Barbados", + "zh_TW": "巴巴多斯", + "tr": "Barbados", + "ro": "Barbados", + "ar": "باربادوس", + "fa": "باربادوس", + "yue": "巴巴多斯" + }, + flag: "🇧🇧", + code: "BB", + dialCode: "1246", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Belarus", + nameTranslations: { + "sk": "Bielorusko", + "se": "Vilges-Ruošša", + "pl": "Białoruś", + "no": "Hviterussland", + "ja": "ベラルーシ", + "it": "Bielorussia", + "zh": "白俄罗斯", + "nl": "Belarus", + "de": "Belarus", + "fr": "Biélorussie", + "es": "Bielorrusia", + "en": "Belarus", + "pt_BR": "Bielo-Rússia", + "sr-Cyrl": "Белорусија", + "sr-Latn": "Belorusija", + "zh_TW": "白俄羅斯", + "tr": "Belarus", + "ro": "Belarus", + "ar": "بيلاروس", + "fa": "بلاروس", + "yue": "白俄羅斯" + }, + flag: "🇧🇾", + code: "BY", + dialCode: "375", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Belgium", + nameTranslations: { + "sk": "Belgicko", + "se": "Belgia", + "pl": "Belgia", + "no": "Belgia", + "ja": "ベルギー", + "it": "Belgio", + "zh": "比利时", + "nl": "België", + "de": "Belgien", + "fr": "Belgique", + "es": "Bélgica", + "en": "Belgium", + "pt_BR": "Bélgica", + "sr-Cyrl": "Белгија", + "sr-Latn": "Belgija", + "zh_TW": "比利時", + "tr": "Belçika", + "ro": "Belgia", + "ar": "بلجيكا", + "fa": "بلژیک", + "yue": "比利時" + }, + flag: "🇧🇪", + code: "BE", + dialCode: "32", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Belize", + nameTranslations: { + "sk": "Belize", + "se": "Belize", + "pl": "Belize", + "no": "Belize", + "ja": "ベリーズ", + "it": "Belize", + "zh": "伯利兹", + "nl": "Belize", + "de": "Belize", + "fr": "Belize", + "es": "Belice", + "en": "Belize", + "pt_BR": "Belize", + "sr-Cyrl": "Белизе", + "sr-Latn": "Belize", + "zh_TW": "伯利茲", + "tr": "Belize", + "ro": "Belize", + "ar": "بليز", + "fa": "بليز", + "yue": "伯利茲" + }, + flag: "🇧🇿", + code: "BZ", + dialCode: "501", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Benin", + nameTranslations: { + "sk": "Benin", + "se": "Benin", + "pl": "Benin", + "no": "Benin", + "ja": "ベナン", + "it": "Benin", + "zh": "贝宁", + "nl": "Benin", + "de": "Benin", + "fr": "Bénin", + "es": "Benín", + "en": "Benin", + "pt_BR": "Benin", + "sr-Cyrl": "Бенин", + "sr-Latn": "Benin", + "zh_TW": "貝南", + "tr": "Benin", + "ro": "Benin", + "ar": "بنين", + "fa": "بنين", + "yue": "貝寧" + }, + flag: "🇧🇯", + code: "BJ", + dialCode: "229", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Bermuda", + nameTranslations: { + "sk": "Bermudy", + "se": "Bermuda", + "pl": "Bermudy", + "no": "Bermuda", + "ja": "バミューダ", + "it": "Bermuda", + "zh": "百慕大", + "nl": "Bermuda", + "de": "Bermuda", + "fr": "Bermudes", + "es": "Bermudas", + "en": "Bermuda", + "pt_BR": "Bermudas", + "sr-Cyrl": "Бермуда", + "sr-Latn": "Bermuda", + "zh_TW": "百慕達", + "tr": "Bermuda", + "ro": "Insulele Bermude", + "ar": "برمودا", + "fa": "برمودا", + "yue": "百慕大" + }, + flag: "🇧🇲", + code: "BM", + dialCode: "1441", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Bhutan", + nameTranslations: { + "sk": "Bhután", + "se": "Bhutan", + "pl": "Bhutan", + "no": "Bhutan", + "ja": "ブータン", + "it": "Bhutan", + "zh": "不丹", + "nl": "Bhutan", + "de": "Bhutan", + "fr": "Bhoutan", + "es": "Bután", + "en": "Bhutan", + "pt_BR": "Butão", + "sr-Cyrl": "Бутан", + "sr-Latn": "Butan", + "zh_TW": "不丹", + "tr": "Bhutan", + "ro": "Bhutan", + "ar": "بوتان", + "fa": "بوتان", + "yue": "不丹" + }, + flag: "🇧🇹", + code: "BT", + dialCode: "975", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Bolivia, Plurinational State of bolivia", + nameTranslations: { + "sk": "Bolívia", + "se": "Bolivia", + "pl": "Boliwia", + "no": "Bolivia", + "ja": "ボリビア", + "it": "Bolivia", + "zh": "玻利维亚", + "nl": "Bolivia", + "de": "Bolivien", + "fr": "Bolivie", + "es": "Bolivia", + "en": "Bolivia", + "pt_BR": "Bolívia", + "sr-Cyrl": "Боливија", + "sr-Latn": "Bolivija", + "zh_TW": "玻利維亞", + "tr": "Bolivya", + "ro": "Bolivia", + "ar": "بوليفيا", + "fa": "بولیوی", + "yue": "玻利維亞(多民族國家)" + }, + flag: "🇧🇴", + code: "BO", + dialCode: "591", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Bosnia and Herzegovina", + nameTranslations: { + "sk": "Bosna a Hercegovina", + "se": "Bosnia-Hercegovina", + "pl": "Bośnia i Hercegowina", + "no": "Bosnia-Hercegovina", + "ja": "ボスニア・ヘルツェゴビナ", + "it": "Bosnia ed Erzegovina", + "zh": "波斯尼亚和黑塞哥维那", + "nl": "Bosnië en Herzegovina", + "de": "Bosnien und Herzegowina", + "fr": "Bosnie-Herzégovine", + "es": "Bosnia y Herzegovina", + "en": "Bosnia & Herzegovina", + "pt_BR": "Bósnia e Herzegovina", + "sr-Cyrl": "Босна и Херцеговина", + "sr-Latn": "Bosna i Hercegovina", + "zh_TW": "波士尼亞和黑塞哥維那", + "tr": "Bosna Hersek", + "ro": "Bosnia și Herțegovina", + "ar": "البوسنة والهرسك", + "fa": "بوسنی و هرزگوین", + "yue": "波斯尼亞黑塞哥維那" + }, + flag: "🇧🇦", + code: "BA", + dialCode: "387", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Botswana", + nameTranslations: { + "sk": "Botswana", + "se": "Botswana", + "pl": "Botswana", + "no": "Botswana", + "ja": "ボツワナ", + "it": "Botswana", + "zh": "博茨瓦纳", + "nl": "Botswana", + "de": "Botsuana", + "fr": "Botswana", + "es": "Botsuana", + "en": "Botswana", + "pt_BR": "Botswana", + "sr-Cyrl": "Боцвана", + "sr-Latn": "Bocvana", + "zh_TW": "博茨瓦納", + "tr": "Botsvana", + "ro": "Botswana", + "ar": "بوتسوانا", + "fa": "بوتسوانا", + "yue": "博茨瓦納" + }, + flag: "🇧🇼", + code: "BW", + dialCode: "267", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Bouvet Island", + nameTranslations: { + "sk": "Bouvetov ostrov", + "se": "Bouvet-sullot", + "pl": "Wyspa Bouveta", + "no": "Bouvetøya", + "ja": "ブーベ島", + "it": "Isola Bouvet", + "zh": "布韦岛", + "nl": "Bouveteiland", + "de": "Bouvetinsel", + "fr": "Île Bouvet", + "es": "Isla Bouvet", + "en": "Bouvet Island", + "pt_BR": "Ilha Bouvet", + "sr-Cyrl": "Острво Буве", + "sr-Latn": "Ostrvo Buve", + "zh_TW": "布維特島", + "tr": "Bouvet Adası", + "ro": "Insula Bouvet", + "ar": "جزيرة بوفيه", + "fa": "جزیره بووه", + "yue": "布维特岛" + }, + flag: "🇧🇻", + code: "BV", + dialCode: "47", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Brazil", + nameTranslations: { + "sk": "Brazília", + "se": "Brasil", + "pl": "Brazylia", + "no": "Brasil", + "ja": "ブラジル", + "it": "Brasile", + "zh": "巴西", + "nl": "Brazilië", + "de": "Brasilien", + "fr": "Brésil", + "es": "Brasil", + "en": "Brazil", + "pt_BR": "Brasil", + "sr-Cyrl": "Бразил", + "sr-Latn": "Brazil", + "zh_TW": "巴西", + "tr": "Brezilya", + "ro": "Brazilia", + "ar": "البرازيل", + "fa": "برزیل", + "yue": "巴西" + }, + flag: "🇧🇷", + code: "BR", + dialCode: "55", + minLength: 11, + maxLength: 11, + ), + Country( + name: "British Indian Ocean Territory", + nameTranslations: { + "sk": "Britské indickooceánske územie", + "se": "British Indian Ocean Territory", + "pl": "Brytyjskie Terytorium Oceanu Indyjskiego", + "no": "Det britiske territoriet i Indiahavet", + "ja": "英領インド洋地域", + "it": "Territorio britannico dell'Oceano Indiano", + "zh": "英属印度洋领地", + "nl": "Brits Indische Oceaanterritorium", + "de": "Britisches Territorium im Indischen Ozean", + "fr": "Territoire britannique de l'océan Indien", + "es": "Territorio Británico del Océano Índico", + "en": "British Indian Ocean Territory", + "pt_BR": "Território Britânico do Oceano Índico", + "sr-Cyrl": "Британска територија Индијског океана", + "sr-Latn": "Britanska teritorija Indijskog okeana", + "zh_TW": "英屬印度洋領地", + "tr": "Britanya Hint Okyanusu Toprakları", + "ro": "Teritoriul Britanic din Oceanul Indian", + "ar": "إقليم المحيط الهندي البريطاني", + "fa": "سرزمین دریایی هند - بریتانیا", + "yue": "英屬印度洋領土" + }, + flag: "🇮🇴", + code: "IO", + dialCode: "246", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Brunei Darussalam", + nameTranslations: { + "sk": "Brunej", + "se": "Brunei", + "pl": "Brunei", + "no": "Brunei", + "ja": "ブルネイ", + "it": "Brunei", + "zh": "文莱", + "nl": "Brunei", + "de": "Brunei Darussalam", + "fr": "Brunéi Darussalam", + "es": "Brunéi", + "en": "Brunei", + "pt_BR": "Brunei", + "sr-Cyrl": "Брунеј", + "sr-Latn": "Brunej", + "zh_TW": "汶萊", + "tr": "Bruney", + "ro": "Brunei", + "ar": "بروناي", + "fa": "برونئی", + "yue": "文萊達魯薩蘭國" + }, + flag: "🇧🇳", + code: "BN", + dialCode: "673", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Bulgaria", + nameTranslations: { + "sk": "Bulharsko", + "se": "Bulgária", + "pl": "Bułgaria", + "no": "Bulgaria", + "ja": "ブルガリア", + "it": "Bulgaria", + "zh": "保加利亚", + "nl": "Bulgarije", + "de": "Bulgarien", + "fr": "Bulgarie", + "es": "Bulgaria", + "en": "Bulgaria", + "pt_BR": "Bulgária", + "sr-Cyrl": "Бугарска", + "sr-Latn": "Bugarska", + "zh_TW": "保加利亞", + "tr": "Bulgaristan", + "ro": "Bulgaria", + "ar": "بلغاريا", + "fa": "بلغارستان", + "yue": "保加利亞" + }, + flag: "🇧🇬", + code: "BG", + dialCode: "359", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Burkina Faso", + nameTranslations: { + "sk": "Burkina Faso", + "se": "Burkina Faso", + "pl": "Burkina Faso", + "no": "Burkina Faso", + "ja": "ブルキナファソ", + "it": "Burkina Faso", + "zh": "布基纳法索", + "nl": "Burkina Faso", + "de": "Burkina Faso", + "fr": "Burkina Faso", + "es": "Burkina Faso", + "en": "Burkina Faso", + "pt_BR": "Burkina Faso", + "sr-Cyrl": "Буркина Фасо", + "sr-Latn": "Burkina Faso", + "zh_TW": "布吉納法索", + "tr": "Burkina Faso", + "ro": "Burkina Faso", + "ar": "بوركينا فاسو", + "fa": "بورکینافاسو", + "yue": "布基納法索" + }, + flag: "🇧🇫", + code: "BF", + dialCode: "226", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Burundi", + nameTranslations: { + "sk": "Burundi", + "se": "Burundi", + "pl": "Burundi", + "no": "Burundi", + "ja": "ブルンジ", + "it": "Burundi", + "zh": "布隆迪", + "nl": "Burundi", + "de": "Burundi", + "fr": "Burundi", + "es": "Burundi", + "en": "Burundi", + "pt_BR": "Burundi", + "sr-Cyrl": "Бурунди", + "sr-Latn": "Burundi", + "zh_TW": "蒲隆地", + "tr": "Burundi", + "ro": "Burundi", + "ar": "بوروندي", + "fa": "بوروندی", + "yue": "蒲隆地" + }, + flag: "🇧🇮", + code: "BI", + dialCode: "257", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Cambodia", + nameTranslations: { + "sk": "Kambodža", + "se": "Kambodža", + "pl": "Kambodża", + "no": "Kambodsja", + "ja": "カンボジア", + "it": "Cambogia", + "zh": "柬埔寨", + "nl": "Cambodja", + "de": "Kambodscha", + "fr": "Cambodge", + "es": "Camboya", + "en": "Cambodia", + "pt_BR": "Camboja", + "sr-Cyrl": "Камбоџа", + "sr-Latn": "Kambodža", + "zh_TW": "柬埔寨", + "tr": "Kamboçya", + "ro": "Cambogia", + "ar": "كمبوديا", + "fa": "کامبوج", + "yue": "柬埔寨" + }, + flag: "🇰🇭", + code: "KH", + dialCode: "855", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Cameroon", + nameTranslations: { + "sk": "Kamerun", + "se": "Kamerun", + "pl": "Kamerun", + "no": "Kamerun", + "ja": "カメルーン", + "it": "Camerun", + "zh": "喀麦隆", + "nl": "Kameroen", + "de": "Kamerun", + "fr": "Cameroun", + "es": "Camerún", + "en": "Cameroon", + "pt_BR": "Camarões", + "sr-Cyrl": "Камерун", + "sr-Latn": "Kamerun", + "zh_TW": "喀麥隆", + "tr": "Kamerun", + "ro": "Camerun", + "ar": "الكاميرون", + "fa": "کامرون", + "yue": "喀 麥 隆" + }, + flag: "🇨🇲", + code: "CM", + dialCode: "237", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Canada", + nameTranslations: { + "sk": "Kanada", + "se": "Kanáda", + "pl": "Kanada", + "no": "Canada", + "ja": "カナダ", + "it": "Canada", + "zh": "加拿大", + "nl": "Canada", + "de": "Kanada", + "fr": "Canada", + "es": "Canadá", + "en": "Canada", + "pt_BR": "Canadá", + "sr-Cyrl": "Канада", + "sr-Latn": "Kanada", + "zh_TW": "加拿大", + "tr": "Kanada", + "ro": "Canada", + "ar": "كندا", + "fa": "کانادا", + "yue": "加拿大" + }, + flag: "🇨🇦", + code: "CA", + dialCode: "1", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Cayman Islands", + nameTranslations: { + "sk": "Kajmanie ostrovy", + "se": "Cayman-sullot", + "pl": "Kajmany", + "no": "Caymanøyene", + "ja": "ケイマン諸島", + "it": "Isole Cayman", + "zh": "开曼群岛", + "nl": "Kaaimaneilanden", + "de": "Kaimaninseln", + "fr": "Îles Caïmans", + "es": "Islas Caimán", + "en": "Cayman Islands", + "pt_BR": "Ilhas Cayman", + "sr-Cyrl": "Кајманска Острва", + "sr-Latn": "Kajmanska Ostrva", + "zh_TW": "開曼群島", + "tr": "Cayman Adaları", + "ro": "Insulele Cayman", + "ar": "جزر كايمان", + "fa": "جزایر کیمن", + "yue": "開曼群島" + }, + flag: "🇰🇾", + code: "KY", + dialCode: "345", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Central African Republic", + nameTranslations: { + "sk": "Stredoafrická republika", + "se": "Gaska-Afrihká dásseváldi", + "pl": "Republika Środkowoafrykańska", + "no": "Den sentralafrikanske republikk", + "ja": "中央アフリカ共和国", + "it": "Repubblica Centrafricana", + "zh": "中非共和国", + "nl": "Centraal-Afrikaanse Republiek", + "de": "Zentralafrikanische Republik", + "fr": "République centrafricaine", + "es": "República Centroafricana", + "en": "Central African Republic", + "pt_BR": "República Centro-Africana", + "sr-Cyrl": "Централноафричка Република", + "sr-Latn": "Centralnoafrička Republika", + "zh_TW": "中非共和國", + "tr": "Orta Afrika Cumhuriyeti", + "ro": "Republica Centrafricană", + "ar": "جمهورية أفريقيا الوسطى", + "fa": "جمهوری افریقای مرکزی", + "yue": "中非共和國" + }, + flag: "🇨🇫", + code: "CF", + dialCode: "236", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Chad", + nameTranslations: { + "sk": "Čad", + "se": "Tčad", + "pl": "Czad", + "no": "Tsjad", + "ja": "チャド", + "it": "Ciad", + "zh": "乍得", + "nl": "Tsjaad", + "de": "Tschad", + "fr": "Tchad", + "es": "Chad", + "en": "Chad", + "pt_BR": "Chade", + "sr-Cyrl": "Чад", + "sr-Latn": "Čad", + "zh_TW": "查德", + "tr": "Çad", + "ro": "Ciad", + "ar": "تشاد", + "fa": "چاد", + "yue": "乍得" + }, + flag: "🇹🇩", + code: "TD", + dialCode: "235", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Chile", + nameTranslations: { + "sk": "Čile", + "se": "Čiile", + "pl": "Chile", + "no": "Chile", + "ja": "チリ", + "it": "Cile", + "zh": "智利", + "nl": "Chili", + "de": "Chile", + "fr": "Chili", + "es": "Chile", + "en": "Chile", + "pt_BR": "Chile", + "sr-Cyrl": "Чиле", + "sr-Latn": "Čile", + "zh_TW": "智利", + "tr": "Şili", + "ro": "Chile", + "ar": "تشيلي", + "fa": "شیلی", + "yue": "智利" + }, + flag: "🇨🇱", + code: "CL", + dialCode: "56", + minLength: 9, + maxLength: 9, + ), + Country( + name: "China", + nameTranslations: { + "sk": "Čína", + "se": "Kiinná", + "pl": "Chiny", + "no": "Kina", + "ja": "中国", + "it": "Cina", + "zh": "中国", + "nl": "China", + "de": "China", + "fr": "Chine", + "es": "China", + "en": "China", + "pt_BR": "China", + "sr-Cyrl": "Кина", + "sr-Latn": "Kina", + "zh_TW": "中國", + "tr": "Çin", + "ro": "China", + "ar": "الصين", + "fa": "چین", + "yue": "中國" + }, + flag: "🇨🇳", + code: "CN", + dialCode: "86", + minLength: 11, + maxLength: 12, + ), + Country( + name: "Christmas Island", + nameTranslations: { + "sk": "Vianočný ostrov", + "se": "Juovllat-sullot", + "pl": "Wyspa Bożego Narodzenia", + "no": "Christmasøya", + "ja": "クリスマス島", + "it": "Isola Christmas", + "zh": "圣诞岛", + "nl": "Christmaseiland", + "de": "Weihnachtsinsel", + "fr": "Île Christmas", + "es": "Isla de Navidad", + "en": "Christmas Island", + "pt_BR": "Ilha do Natal", + "sr-Cyrl": "Ускршња Острва", + "sr-Latn": "Uskršnja Ostrva", + "zh_TW": "聖誕島", + "tr": "Christmas Adası", + "ro": "Insula Crăciunului", + "ar": "جزيرة عيد الميلاد", + "fa": "جزیره کریسمس", + "yue": "聖誕島" + }, + flag: "🇨🇽", + code: "CX", + dialCode: "61", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Cocos (Keeling) Islands", + nameTranslations: { + "sk": "Kokosové ostrovy", + "se": "Cocos-sullot", + "pl": "Wyspy Kokosowe", + "no": "Kokosøyene", + "ja": "ココス(キーリング)諸島", + "it": "Isole Cocos (Keeling)", + "zh": "科科斯(基林)群岛", + "nl": "Cocoseilanden", + "de": "Kokosinseln", + "fr": "Îles Cocos", + "es": "Islas Cocos", + "en": "Cocos (Keeling) Islands", + "pt_BR": "Ilhas Cocos (Keeling)", + "sr-Cyrl": "Кокосова Острва", + "sr-Latn": "Kokosova Ostrva", + "zh_TW": "科科斯(基林)群島", + "tr": "Cocos (Keyling) Adaları", + "ro": "Insulele Cocos", + "ar": "جزر كوكوس", + "fa": "جزایر کوکوس", + "yue": "可可島(基林)群島" + }, + flag: "🇨🇨", + code: "CC", + dialCode: "61", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Colombia", + nameTranslations: { + "sk": "Kolumbia", + "se": "Kolombia", + "pl": "Kolumbia", + "no": "Colombia", + "ja": "コロンビア", + "it": "Colombia", + "zh": "哥伦比亚", + "nl": "Colombia", + "de": "Kolumbien", + "fr": "Colombie", + "es": "Colombia", + "en": "Colombia", + "pt_BR": "Colômbia", + "sr-Cyrl": "Колумбија", + "sr-Latn": "Kolumbija", + "zh_TW": "哥倫比亞", + "tr": "Kolombiya", + "ro": "Columbia", + "ar": "كولومبيا", + "fa": "کلمبیا", + "yue": "哥倫比亞" + }, + flag: "🇨🇴", + code: "CO", + dialCode: "57", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Comoros", + nameTranslations: { + "sk": "Komory", + "se": "Komoros", + "pl": "Komory", + "no": "Komorene", + "ja": "コモロ", + "it": "Comore", + "zh": "科摩罗", + "nl": "Comoren", + "de": "Komoren", + "fr": "Comores", + "es": "Comoras", + "en": "Comoros", + "pt_BR": "Comores", + "sr-Cyrl": "Комори", + "sr-Latn": "Komori", + "zh_TW": "科摩羅", + "tr": "Komor Adaları", + "ro": "Comore", + "ar": "جزر القمر", + "fa": "جزیره کومور", + "yue": "科摩羅" + }, + flag: "🇰🇲", + code: "KM", + dialCode: "269", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Congo", + nameTranslations: { + "sk": "Konžská republika", + "se": "Kongo-Brazzaville", + "pl": "Kongo", + "no": "Kongo-Brazzaville", + "ja": "コンゴ共和国(ブラザビル)", + "it": "Congo-Brazzaville", + "zh": "刚果(布)", + "nl": "Congo-Brazzaville", + "de": "Kongo-Brazzaville", + "fr": "Congo-Brazzaville", + "es": "Congo", + "en": "Congo - Brazzaville", + "pt_BR": "República do Congo", + "sr-Cyrl": "Република Конго", + "sr-Latn": "Republika Kongo", + "zh_TW": "剛果共和國(布拉柴維爾)", + "tr": "Kongo Cumhuriyeti", + "ro": "Republica Congo", + "ar": "جمهورية الكونغو", + "fa": "جمهوری کنگو", + "yue": "剛果(共和國)" + }, + flag: "🇨🇬", + code: "CG", + dialCode: "242", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Congo, The Democratic Republic of the Congo", + nameTranslations: { + "sk": "Konžská demokratická republika", + "se": "Kongo-Kinshasa", + "pl": "Demokratyczna Republika Konga", + "no": "Kongo-Kinshasa", + "ja": "コンゴ民主共和国(キンシャサ)", + "it": "Congo - Kinshasa", + "zh": "刚果(金)", + "nl": "Congo-Kinshasa", + "de": "Kongo-Kinshasa", + "fr": "Congo-Kinshasa", + "es": "República Democrática del Congo", + "en": "Congo - Kinshasa", + "pt_BR": "República Democrática do Congo", + "sr-Cyrl": "Демократска Република Конго", + "sr-Latn": "Demokratska Republika Kongo", + "zh_TW": "剛果民主共和國(金沙薩)", + "tr": "Kongo Demokratik Cumhuriyeti", + "ro": "Republica Democrată Congo", + "ar": "جمهورية الكونغو الديمقراطية", + "fa": "جمهوری دموکراتیک کنگو", + "yue": "剛果(金)" + }, + flag: "🇨🇩", + code: "CD", + dialCode: "243", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Cook Islands", + nameTranslations: { + "sk": "Cookove ostrovy", + "se": "Cook-sullot", + "pl": "Wyspy Cooka", + "no": "Cookøyene", + "ja": "クック諸島", + "it": "Isole Cook", + "zh": "库克群岛", + "nl": "Cookeilanden", + "de": "Cookinseln", + "fr": "Îles Cook", + "es": "Islas Cook", + "en": "Cook Islands", + "pt_BR": "Ilhas Cook", + "sr-Cyrl": "Кукова Острва", + "sr-Latn": "Kukova Ostrva", + "zh_TW": "庫克群島", + "tr": "Cook Adaları", + "ro": "Insulele Cook", + "ar": "جزر كوك", + "fa": "جزایر کوک", + "yue": "庫克群島" + }, + flag: "🇨🇰", + code: "CK", + dialCode: "682", + minLength: 5, + maxLength: 5, + ), + Country( + name: "Costa Rica", + nameTranslations: { + "sk": "Kostarika", + "se": "Costa Rica", + "pl": "Kostaryka", + "no": "Costa Rica", + "ja": "コスタリカ", + "it": "Costa Rica", + "zh": "哥斯达黎加", + "nl": "Costa Rica", + "de": "Costa Rica", + "fr": "Costa Rica", + "es": "Costa Rica", + "en": "Costa Rica", + "pt_BR": "Costa Rica", + "sr-Cyrl": "Коста Рика", + "sr-Latn": "Kosta Rika", + "zh_TW": "哥斯大黎加", + "tr": "Kosta Rika", + "ro": "Costa Rica", + "ar": "كوستاريكا", + "fa": "کاستاریکا", + "yue": "哥斯達黎加" + }, + flag: "🇨🇷", + code: "CR", + dialCode: "506", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Côte d'Ivoire", + nameTranslations: { + "sk": "Pobrežie Slonoviny", + "se": "Elfenbenariddu", + "pl": "Côte d'Ivoire", + "no": "Elfenbenskysten", + "ja": "コートジボワール", + "it": "Costa d'Avorio", + "zh": "科特迪瓦", + "nl": "Ivoorkust", + "de": "Côte d'Ivoire", + "fr": "Côte d'Ivoire", + "es": "Côte d'Ivoire", + "en": "Côte d'Ivoire", + "pt_BR": "Côte d'Ivoire", + "sr-Cyrl": "Обала Слоноваче", + "sr-Latn": "Obala Slonovače", + "zh_TW": "象牙海岸", + "tr": "Fildişi Kıyısı", + "ro": "Coasta de fildeș", + "ar": "ساحل العاج", + "fa": "ساحل عاج", + "yue": "科特迪瓦" + }, + flag: "🇨🇮", + code: "CI", + dialCode: "225", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Croatia", + nameTranslations: { + "sk": "Chorvátsko", + "se": "Kroátia", + "pl": "Chorwacja", + "no": "Kroatia", + "ja": "クロアチア", + "it": "Croazia", + "zh": "克罗地亚", + "nl": "Kroatië", + "de": "Kroatien", + "fr": "Croatie", + "es": "Croacia", + "en": "Croatia", + "pt_BR": "Croácia", + "sr-Cyrl": "Хрватска", + "sr-Latn": "Hrvatska", + "zh_TW": "克羅埃西亞", + "tr": "Hırvatistan", + "ro": "Croația", + "ar": "كرواتيا", + "fa": "کرواسی", + "yue": "克羅地亞" + }, + flag: "🇭🇷", + code: "HR", + dialCode: "385", + minLength: 12, + maxLength: 12, + ), + Country( + name: "Cuba", + nameTranslations: { + "sk": "Kuba", + "se": "Kuba", + "pl": "Kuba", + "no": "Cuba", + "ja": "キューバ", + "it": "Cuba", + "zh": "古巴", + "nl": "Cuba", + "de": "Kuba", + "fr": "Cuba", + "es": "Cuba", + "en": "Cuba", + "pt_BR": "Cuba", + "sr-Cyrl": "Куба", + "sr-Latn": "Kuba", + "zh_TW": "古巴", + "tr": "Küba", + "ro": "Cuba", + "ar": "كوبا", + "fa": "كوبا", + "yue": "古巴" + }, + flag: "🇨🇺", + code: "CU", + dialCode: "53", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Cyprus", + nameTranslations: { + "sk": "Cyprus", + "se": "Kypros", + "pl": "Cypr", + "no": "Kypros", + "ja": "キプロス", + "it": "Cipro", + "zh": "塞浦路斯", + "nl": "Cyprus", + "de": "Zypern", + "fr": "Chypre", + "es": "Chipre", + "en": "Cyprus", + "pt_BR": "Chipre", + "sr-Cyrl": "Кипар", + "sr-Latn": "Kipar", + "zh_TW": "塞普勒斯", + "tr": "Kıbrıs", + "ro": "Cipru", + "ar": "قبرص", + "fa": "قبرس", + "yue": "塞浦路斯" + }, + flag: "🇨🇾", + code: "CY", + dialCode: "357", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Czech Republic", + nameTranslations: { + "sk": "Česko", + "se": "Čeahkka", + "pl": "Czechy", + "no": "Tsjekkia", + "ja": "チェコ", + "it": "Cechia", + "zh": "捷克", + "nl": "Tsjechië", + "de": "Tschechien", + "fr": "Tchéquie", + "es": "Chequia", + "en": "Czechia", + "pt_BR": "Czechia", + "sr-Cyrl": "Чешка", + "sr-Latn": "Češka", + "zh_TW": "捷克", + "tr": "Çek Cumhuriyeti", + "ro": "Cehia", + "ar": "جمهورية التشيك", + "fa": "جمهوری چک", + "yue": "捷克共和國" + }, + flag: "🇨🇿", + code: "CZ", + dialCode: "420", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Denmark", + nameTranslations: { + "sk": "Dánsko", + "se": "Dánmárku", + "pl": "Dania", + "no": "Danmark", + "ja": "デンマーク", + "it": "Danimarca", + "zh": "丹麦", + "nl": "Denemarken", + "de": "Dänemark", + "fr": "Danemark", + "es": "Dinamarca", + "en": "Denmark", + "pt_BR": "Dinamarca", + "sr-Cyrl": "Данска", + "sr-Latn": "Danska", + "zh_TW": "丹麥", + "tr": "Danimarka", + "ro": "Danemarca", + "ar": "الدنمارك", + "fa": "دانمارک", + "yue": "丹麥" + }, + flag: "🇩🇰", + code: "DK", + dialCode: "45", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Djibouti", + nameTranslations: { + "sk": "Džibutsko", + "se": "Djibouti", + "pl": "Dżibuti", + "no": "Djibouti", + "ja": "ジブチ", + "it": "Gibuti", + "zh": "吉布提", + "nl": "Djibouti", + "de": "Dschibuti", + "fr": "Djibouti", + "es": "Yibuti", + "en": "Djibouti", + "pt_BR": "Djibouti", + "sr-Cyrl": "Џибути", + "sr-Latn": "Džibuti", + "zh_TW": "吉布地", + "tr": "Cibuti", + "ro": "Djibouti", + "ar": "جيبوتي", + "fa": "جیبوتی", + "yue": "吉布提" + }, + flag: "🇩🇯", + code: "DJ", + dialCode: "253", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Dominica", + nameTranslations: { + "sk": "Dominika", + "se": "Dominica", + "pl": "Dominika", + "no": "Dominica", + "ja": "ドミニカ国", + "it": "Dominica", + "zh": "多米尼克", + "nl": "Dominica", + "de": "Dominica", + "fr": "Dominique", + "es": "Dominica", + "en": "Dominica", + "pt_BR": "Dominica", + "sr-Cyrl": "Доминика", + "sr-Latn": "Dominika", + "zh_TW": "多明尼加", + "tr": "Dominika", + "ro": "Dominica", + "ar": "دومينيكا", + "fa": "دومينيكا", + "yue": "多米尼加" + }, + flag: "🇩🇲", + code: "DM", + dialCode: "1767", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Dominican Republic", + nameTranslations: { + "sk": "Dominikánska republika", + "se": "Dominikána dásseváldi", + "pl": "Dominikana", + "no": "Den dominikanske republikk", + "ja": "ドミニカ共和国", + "it": "Repubblica Dominicana", + "zh": "多米尼加共和国", + "nl": "Dominicaanse Republiek", + "de": "Dominikanische Republik", + "fr": "République dominicaine", + "es": "República Dominicana", + "en": "Dominican Republic", + "pt_BR": "República Dominicana", + "sr-Cyrl": "Доминиканска Република", + "sr-Latn": "Dominikanska Republika", + "zh_TW": "多明尼加共和國", + "tr": "Dominik Cumhuriyeti", + "ro": "Republica Dominicană", + "ar": "جمهورية الدومينيكان", + "fa": "جمهوری دومنیکن", + "yue": "多明尼加共和國" + }, + flag: "🇩🇴", + code: "DO", + dialCode: "1", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Ecuador", + nameTranslations: { + "sk": "Ekvádor", + "se": "Ecuador", + "pl": "Ekwador", + "no": "Ecuador", + "ja": "エクアドル", + "it": "Ecuador", + "zh": "厄瓜多尔", + "nl": "Ecuador", + "de": "Ecuador", + "fr": "Équateur", + "es": "Ecuador", + "en": "Ecuador", + "pt_BR": "Equador", + "sr-Cyrl": "Еквадор", + "sr-Latn": "Ekvador", + "zh_TW": "厄瓜多", + "tr": "Ekvador", + "ro": "Ecuador", + "ar": "الإكوادور", + "fa": "اكوادور", + "yue": "厄瓜多爾" + }, + flag: "🇪🇨", + code: "EC", + dialCode: "593", + minLength: 8, + maxLength: 9, + ), + Country( + name: "Egypt", + nameTranslations: { + "sk": "Egypt", + "se": "Egypt", + "pl": "Egipt", + "no": "Egypt", + "ja": "エジプト", + "it": "Egitto", + "zh": "埃及", + "nl": "Egypt", + "de": "Ägypt", + "fr": "Égypte", + "es": "Egipt", + "en": "Egypt", + "pt_BR": "Egito", + "sr-Cyrl": "Египат", + "sr-Latn": "Egipat", + "zh_TW": "埃及", + "tr": "Mısır", + "ro": "Egipt", + "ar": "مصر", + "fa": "مصر", + "yue": "埃及" + }, + flag: "🇪🇬", + code: "EG", + dialCode: "2", + minLength: 11, + maxLength: 11, + ), + Country( + name: "El Salvador", + nameTranslations: { + "sk": "Salvádor", + "se": "El Salvador", + "pl": "Salwador", + "no": "El Salvador", + "ja": "エルサルバドル", + "it": "El Salvador", + "zh": "萨尔瓦多", + "nl": "El Salvador", + "de": "El Salvador", + "fr": "Salvador", + "es": "El Salvador", + "en": "El Salvador", + "pt_BR": "El Salvador", + "sr-Cyrl": "Салвадор", + "sr-Latn": "Salvador", + "zh_TW": "薩爾瓦多", + "tr": "El Salvador", + "ro": "Salvador", + "ar": "السلفادور", + "fa": "ال سالوادور", + "yue": "薩爾瓦多" + }, + flag: "🇸🇻", + code: "SV", + dialCode: "503", + minLength: 11, + maxLength: 11, + ), + Country( + name: "Equatorial Guinea", + nameTranslations: { + "sk": "Rovníková Guinea", + "se": "Ekvatoriála Guinea", + "pl": "Gwinea Równikowa", + "no": "Ekvatorial-Guinea", + "ja": "赤道ギニア", + "it": "Guinea Equatoriale", + "zh": "赤道几内亚", + "nl": "Equatoriaal-Guinea", + "de": "Äquatorialguinea", + "fr": "Guinée équatoriale", + "es": "Guinea Ecuatorial", + "en": "Equatorial Guinea", + "pt_BR": "Guiné Equatorial", + "sr-Cyrl": "Екваторијална Гвинеја", + "sr-Latn": "Ekvatorijalna Gvineja", + "zh_TW": "赤道幾內亞", + "tr": "Ekvator Ginesi", + "ro": "Guineea Ecuatorială", + "ar": "غينيا الاستوائية", + "fa": "گینه استوایی", + "yue": "赤道幾內亞" + }, + flag: "🇬🇶", + code: "GQ", + dialCode: "240", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Eritrea", + nameTranslations: { + "sk": "Eritrea", + "se": "Eritrea", + "pl": "Erytrea", + "no": "Eritrea", + "ja": "エリトリア", + "it": "Eritrea", + "zh": "厄立特里亚", + "nl": "Eritrea", + "de": "Eritrea", + "fr": "Érythrée", + "es": "Eritrea", + "en": "Eritrea", + "pt_BR": "Eritreia", + "sr-Cyrl": "Еритреја", + "sr-Latn": "Eritreja", + "zh_TW": "厄立特裡亞", + "tr": "Eritre", + "ro": "Eritreea", + "ar": "إريتريا", + "fa": "اریتره", + "yue": "厄立特里亞" + }, + flag: "🇪🇷", + code: "ER", + dialCode: "291", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Estonia", + nameTranslations: { + "sk": "Estónsko", + "se": "Estlánda", + "pl": "Estonia", + "no": "Estland", + "ja": "エストニア", + "it": "Estonia", + "zh": "爱沙尼亚", + "nl": "Estland", + "de": "Estland", + "fr": "Estonie", + "es": "Estonia", + "en": "Estonia", + "pt_BR": "Estônia", + "sr-Cyrl": "Естонија", + "sr-Latn": "Estonija", + "zh_TW": "愛沙尼亞", + "tr": "Estonya", + "ro": "Estonia", + "ar": "إستونيا", + "fa": "استونی", + "yue": "愛沙尼亞" + }, + flag: "🇪🇪", + code: "EE", + dialCode: "372", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Ethiopia", + nameTranslations: { + "sk": "Etiópia", + "se": "Etiopia", + "pl": "Etiopia", + "no": "Etiopia", + "ja": "エチオピア", + "it": "Etiopia", + "zh": "埃塞俄比亚", + "nl": "Ethiopië", + "de": "Äthiopien", + "fr": "Éthiopie", + "es": "Etiopía", + "en": "Ethiopia", + "pt_BR": "Etiópia", + "sr-Cyrl": "Етиопија", + "sr-Latn": "Etiopija", + "zh_TW": "伊索比亞", + "tr": "Etiyopya", + "ro": "Etiopia", + "ar": "إثيوبيا", + "fa": "اتیوپی", + "yue": "埃塞俄比亞" + }, + flag: "🇪🇹", + code: "ET", + dialCode: "251", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Falkland Islands (Malvinas)", + nameTranslations: { + "sk": "Falklandy", + "se": "Falklandsullot", + "pl": "Falklandy", + "no": "Falklandsøyene", + "ja": "フォークランド諸島", + "it": "Isole Falkland", + "zh": "福克兰群岛", + "nl": "Falklandeilanden", + "de": "Falklandinseln", + "fr": "Îles Malouines", + "es": "Islas Malvinas", + "en": "Falkland Islands", + "pt_BR": "Ilhas Falkland", + "sr-Cyrl": "Фокландска Острва", + "sr-Latn": "Foklandska Ostrva", + "zh_TW": "福克蘭群島", + "tr": "Falkland Adaları", + "ro": "Insulele Falklands", + "ar": "جزر فوكلاند", + "fa": "جزایر فالکلند", + "yue": "福克蘭群島(馬爾維納斯群島)" + }, + flag: "🇫🇰", + code: "FK", + dialCode: "500", + minLength: 5, + maxLength: 5, + ), + Country( + name: "Faroe Islands", + nameTranslations: { + "sk": "Faerské ostrovy", + "se": "Fearsullot", + "pl": "Wyspy Owcze", + "no": "Færøyene", + "ja": "フェロー諸島", + "it": "Isole Fær Øer", + "zh": "法罗群岛", + "nl": "Faeröer", + "de": "Färöer", + "fr": "Îles Féroé", + "es": "Islas Feroe", + "en": "Faroe Islands", + "pt_BR": "ilhas Faroe", + "sr-Cyrl": "Фарска Острва", + "sr-Latn": "Farska Ostrva", + "zh_TW": "法羅群島", + "tr": "Faroe Adaları", + "ro": "Insulele Feroe", + "ar": "جزر فارو", + "fa": "جزایر فارو", + "yue": "法羅群島" + }, + flag: "🇫🇴", + code: "FO", + dialCode: "298", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Fiji", + nameTranslations: { + "sk": "Fidži", + "se": "Fijisullot", + "pl": "Fidżi", + "no": "Fiji", + "ja": "フィジー", + "it": "Figi", + "zh": "斐济", + "nl": "Fiji", + "de": "Fidschi", + "fr": "Fidji", + "es": "Fiyi", + "en": "Fiji", + "pt_BR": "Fiji", + "sr-Cyrl": "Фиџи", + "sr-Latn": "Fidži", + "zh_TW": "斐濟", + "tr": "Fiji", + "ro": "Fiji", + "ar": "فيجي", + "fa": "فيجي", + "yue": "斐濟" + }, + flag: "🇫🇯", + code: "FJ", + dialCode: "679", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Finland", + nameTranslations: { + "sk": "Fínsko", + "se": "Suopma", + "pl": "Finlandia", + "no": "Finland", + "ja": "フィンランド", + "it": "Finlandia", + "zh": "芬兰", + "nl": "Finland", + "de": "Finnland", + "fr": "Finlande", + "es": "Finlandia", + "en": "Finland", + "pt_BR": "Finlândia", + "sr-Cyrl": "Финска", + "sr-Latn": "Finska", + "zh_TW": "芬蘭", + "tr": "Finlandiya", + "ro": "Finlanda", + "ar": "فنلندا", + "fa": "فنلاند", + "yue": "芬蘭" + }, + flag: "🇫🇮", + code: "FI", + dialCode: "358", + minLength: 12, + maxLength: 12, + ), + Country( + name: "France", + nameTranslations: { + "sk": "Francúzsko", + "se": "Frankriika", + "pl": "Francja", + "no": "Frankrike", + "ja": "フランス", + "it": "Francia", + "zh": "法国", + "nl": "Frankrijk", + "de": "Frankreich", + "fr": "France", + "es": "Francia", + "en": "France", + "pt_BR": "França", + "sr-Cyrl": "Француска", + "sr-Latn": "Francuska", + "zh_TW": "法國", + "tr": "Fransa", + "ro": "Franța", + "ar": "فرنسا", + "fa": "فرانسه", + "yue": "法國" + }, + flag: "🇫🇷", + code: "FR", + dialCode: "33", + minLength: 9, + maxLength: 9, + ), + Country( + name: "French Guiana", + nameTranslations: { + "sk": "Francúzska Guyana", + "se": "Frankriikka Guayana", + "pl": "Gujana Francuska", + "no": "Fransk Guyana", + "ja": "仏領ギアナ", + "it": "Guyana francese", + "zh": "法属圭亚那", + "nl": "Frans-Guyana", + "de": "Französisch-Guayana", + "fr": "Guyane française", + "es": "Guayana Francesa", + "en": "French Guiana", + "pt_BR": "Guiana Francesa", + "sr-Cyrl": "Француска Гвајана", + "sr-Latn": "Francuska Gvajana", + "zh_TW": "法屬蓋亞那", + "tr": "Fransız Guyanası", + "ro": "Guiana Franceză", + "ar": "غويانا الفرنسية", + "fa": "گویان فرانسه", + "yue": "法屬圭亞那" + }, + flag: "🇬🇫", + code: "GF", + dialCode: "594", + minLength: 15, + maxLength: 15, + ), + Country( + name: "French Polynesia", + nameTranslations: { + "sk": "Francúzska Polynézia", + "se": "Frankriikka Polynesia", + "pl": "Polinezja Francuska", + "no": "Fransk Polynesia", + "ja": "仏領ポリネシア", + "it": "Polinesia francese", + "zh": "法属波利尼西亚", + "nl": "Frans-Polynesië", + "de": "Französisch-Polynesien", + "fr": "Polynésie française", + "es": "Polinesia Francesa", + "en": "French Polynesia", + "pt_BR": "Polinésia Francesa", + "sr-Cyrl": "Француска Полинезија", + "sr-Latn": "Francuska Polinezija", + "zh_TW": "法屬玻里尼西亞", + "tr": "Fransız Polinezyası", + "ro": "Polinezia Franceză", + "ar": "بولينزيا الفرنسية", + "fa": "پلی‌نزی فرانسه", + "yue": "法屬波利尼西亞" + }, + flag: "🇵🇫", + code: "PF", + dialCode: "689", + minLength: 6, + maxLength: 6, + ), + Country( + name: "French Southern Territories", + nameTranslations: { + "sk": "Francúzske južné a antarktické územia", + "se": "French Southern Territories", + "pl": "Francuskie Terytoria Południowe i Antarktyczne", + "no": "De franske sørterritorier", + "ja": "仏領極南諸島", + "it": "Terre australi francesi", + "zh": "法属南部领地", + "nl": "Franse Gebieden in de zuidelijke Indische Oceaan", + "de": "Französische Süd- und Antarktisgebiete", + "fr": "Terres australes françaises", + "es": "Territorios Australes Franceses", + "en": "French Southern Territories", + "pt_BR": "Territórios Franceses do Sul", + "sr-Cyrl": "Француске јужне и антарктичке земље", + "sr-Latn": "Francuske južne i antarktičke zemlje", + "zh_TW": "法屬南部屬地", + "tr": "Fransız Güney ve Antarktika Toprakları", + "ro": "Teritoriile australe și antarctice franceze", + "ar": "أراض فرنسية جنوبية وأنتارتيكية", + "fa": "سرزمین‌های جنوبی فرانسه", + "yue": "法國南部領土" + }, + flag: "🇹🇫", + code: "TF", + dialCode: "262", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Gabon", + nameTranslations: { + "sk": "Gabon", + "se": "Gabon", + "pl": "Gabon", + "no": "Gabon", + "ja": "ガボン", + "it": "Gabon", + "zh": "加蓬", + "nl": "Gabon", + "de": "Gabun", + "fr": "Gabon", + "es": "Gabón", + "en": "Gabon", + "pt_BR": "Gabão", + "sr-Cyrl": "Габон", + "sr-Latn": "Gabon", + "zh_TW": "加彭", + "tr": "Gabon", + "ro": "Gabon", + "ar": "الغابون", + "fa": "گابن", + "yue": "加蓬" + }, + flag: "🇬🇦", + code: "GA", + dialCode: "241", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Gambia", + nameTranslations: { + "sk": "Gambia", + "se": "Gámbia", + "pl": "Gambia", + "no": "Gambia", + "ja": "ガンビア", + "it": "Gambia", + "zh": "冈比亚", + "nl": "Gambia", + "de": "Gambia", + "fr": "Gambie", + "es": "Gambia", + "en": "Gambia", + "pt_BR": "Gâmbia", + "sr-Cyrl": "Гамбија", + "sr-Latn": "Gambija", + "zh_TW": "岡比亞", + "tr": "Gambiya", + "ro": "Gambia", + "ar": "غامبيا", + "fa": "گامبیا", + "yue": "岡比亞" + }, + flag: "🇬🇲", + code: "GM", + dialCode: "220", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Georgia", + nameTranslations: { + "sk": "Gruzínsko", + "se": "Georgia", + "pl": "Gruzja", + "no": "Georgia", + "ja": "ジョージア", + "it": "Georgia", + "zh": "格鲁吉亚", + "nl": "Georgië", + "de": "Georgien", + "fr": "Géorgie", + "es": "Georgia", + "en": "Georgia", + "pt_BR": "Georgia", + "sr-Cyrl": "Грузија", + "sr-Latn": "Gruzija", + "zh_TW": "喬治亞", + "tr": "Gürcistan", + "ro": "Georgia", + "ar": "جورجيا", + "fa": "گرجستان", + "yue": "格魯吉亞" + }, + flag: "🇬🇪", + code: "GE", + dialCode: "995", + minLength: 8, + maxLength: 9, + ), + Country( + name: "Germany", + nameTranslations: { + "sk": "Nemecko", + "se": "Duiska", + "pl": "Niemcy", + "no": "Tyskland", + "ja": "ドイツ", + "it": "Germania", + "zh": "德国", + "nl": "Duitsland", + "de": "Deutschland", + "fr": "Allemagne", + "es": "Alemania", + "en": "Germany", + "pt_BR": "Alemanha", + "sr-Cyrl": "Немачка", + "sr-Latn": "Nemačka", + "zh_TW": "德國", + "tr": "Almanya", + "ro": "Germania", + "ar": "ألمانيا", + "fa": "آلمان", + "yue": "德國" + }, + flag: "🇩🇪", + code: "DE", + dialCode: "49", + minLength: 9, + maxLength: 13, + ), + Country( + name: "Ghana", + nameTranslations: { + "sk": "Ghana", + "se": "Ghana", + "pl": "Ghana", + "no": "Ghana", + "ja": "ガーナ", + "it": "Ghana", + "zh": "加纳", + "nl": "Ghana", + "de": "Ghana", + "fr": "Ghana", + "es": "Ghana", + "en": "Ghana", + "pt_BR": "Gana", + "sr-Cyrl": "Гана", + "sr-Latn": "Gana", + "zh_TW": "迦納", + "tr": "Gana", + "ro": "Ghana", + "ar": "غانا", + "fa": "غنا", + "yue": "加納" + }, + flag: "🇬🇭", + code: "GH", + dialCode: "233", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Gibraltar", + nameTranslations: { + "sk": "Gibraltár", + "se": "Gibraltar", + "pl": "Gibraltar", + "no": "Gibraltar", + "ja": "ジブラルタル", + "it": "Gibilterra", + "zh": "直布罗陀", + "nl": "Gibraltar", + "de": "Gibraltar", + "fr": "Gibraltar", + "es": "Gibraltar", + "en": "Gibraltar", + "pt_BR": "Gibraltar", + "sr-Cyrl": "Гибралтар", + "sr-Latn": "Gibraltar", + "zh_TW": "直布羅陀", + "tr": "Cebelitarık", + "ro": "Gibraltar", + "ar": "جبل طارق", + "fa": "جبل الطارق", + "yue": "直布羅陀" + }, + flag: "🇬🇮", + code: "GI", + dialCode: "350", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Greece", + nameTranslations: { + "sk": "Grécko", + "se": "Greika", + "pl": "Grecja", + "no": "Hellas", + "ja": "ギリシャ", + "it": "Grecia", + "zh": "希腊", + "nl": "Griekenland", + "de": "Griechenland", + "fr": "Grèce", + "es": "Grecia", + "en": "Greece", + "pt_BR": "Grécia", + "sr-Cyrl": "Грчка", + "sr-Latn": "Grčka", + "zh_TW": "希臘", + "tr": "Yunanistan", + "ro": "Grecia", + "ar": "اليونان", + "fa": "یونان", + "yue": "希臘" + }, + flag: "🇬🇷", + code: "GR", + dialCode: "30", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Greenland", + nameTranslations: { + "sk": "Grónsko", + "se": "Kalaallit Nunaat", + "pl": "Grenlandia", + "no": "Grønland", + "ja": "グリーンランド", + "it": "Groenlandia", + "zh": "格陵兰", + "nl": "Groenland", + "de": "Grönland", + "fr": "Groenland", + "es": "Groenlandia", + "en": "Greenland", + "pt_BR": "Groenlândia", + "sr-Cyrl": "Гренланд", + "sr-Latn": "Grenland", + "zh_TW": "格陵蘭", + "tr": "Grönland", + "ro": "Groenlanda", + "ar": "جرينلاند", + "fa": "گرینلند", + "yue": "格陵蘭" + }, + flag: "🇬🇱", + code: "GL", + dialCode: "299", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Grenada", + nameTranslations: { + "sk": "Grenada", + "se": "Grenada", + "pl": "Grenada", + "no": "Grenada", + "ja": "グレナダ", + "it": "Grenada", + "zh": "格林纳达", + "nl": "Grenada", + "de": "Grenada", + "fr": "Grenade", + "es": "Granada", + "en": "Grenada", + "pt_BR": "Grenada", + "sr-Cyrl": "Гренада", + "sr-Latn": "Grenada", + "zh_TW": "格林納達", + "tr": "Grenada", + "ro": "Grenada", + "ar": "غرينادا", + "fa": "گرنادا", + "yue": "格林納達" + }, + flag: "🇬🇩", + code: "GD", + dialCode: "1473", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Guadeloupe", + nameTranslations: { + "sk": "Guadeloupe", + "se": "Guadeloupe", + "pl": "Gwadelupa", + "no": "Guadeloupe", + "ja": "グアドループ", + "it": "Guadalupa", + "zh": "瓜德罗普", + "nl": "Guadeloupe", + "de": "Guadeloupe", + "fr": "Guadeloupe", + "es": "Guadalupe", + "en": "Guadeloupe", + "pt_BR": "Guadalupe", + "sr-Cyrl": "Гваделуп", + "sr-Latn": "Gvadelup", + "zh_TW": "瓜地洛普", + "tr": "Guadeloupe", + "ro": "Guadelupa", + "ar": "غوادلوب", + "fa": "گوادلوپ", + "yue": "瓜德罗普" + }, + flag: "🇬🇵", + code: "GP", + dialCode: "590", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Guam", + nameTranslations: { + "sk": "Guam", + "se": "Guam", + "pl": "Guam", + "no": "Guam", + "ja": "グアム", + "it": "Guam", + "zh": "关岛", + "nl": "Guam", + "de": "Guam", + "fr": "Guam", + "es": "Guam", + "en": "Guam", + "pt_BR": "Guam", + "sr-Cyrl": "Гвам", + "sr-Latn": "Gvam", + "zh_TW": "關島", + "tr": "Guam", + "ro": "Guam", + "ar": "غوام", + "fa": "گوام", + "yue": "關島" + }, + flag: "🇬🇺", + code: "GU", + dialCode: "1671", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Guatemala", + nameTranslations: { + "sk": "Guatemala", + "se": "Guatemala", + "pl": "Gwatemala", + "no": "Guatemala", + "ja": "グアテマラ", + "it": "Guatemala", + "zh": "危地马拉", + "nl": "Guatemala", + "de": "Guatemala", + "fr": "Guatemala", + "es": "Guatemala", + "en": "Guatemala", + "pt_BR": "Guatemala", + "sr-Cyrl": "Гватемала", + "sr-Latn": "Gvatemala", + "zh_TW": "瓜地馬拉", + "tr": "Guatemala", + "ro": "Guatemala", + "ar": "غواتيمالا", + "fa": "گواتمالا", + "yue": "危地馬拉" + }, + flag: "🇬🇹", + code: "GT", + dialCode: "502", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Guernsey", + nameTranslations: { + "sk": "Guernsey", + "se": "Guernsey", + "pl": "Guernsey", + "no": "Guernsey", + "ja": "ガーンジー", + "it": "Guernsey", + "zh": "根西岛", + "nl": "Guernsey", + "de": "Guernsey", + "fr": "Guernesey", + "es": "Guernsey", + "en": "Guernsey", + "pt_BR": "Guernsey", + "sr-Cyrl": "Гернзи", + "sr-Latn": "Gernzi", + "zh_TW": "根息島", + "tr": "Guernsey", + "ro": "Guernsey", + "ar": "غيرنزي", + "fa": "گرنزی", + "yue": "格恩西島" + }, + flag: "🇬🇬", + code: "GG", + dialCode: "44", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Guinea", + nameTranslations: { + "sk": "Guinea", + "se": "Guinea", + "pl": "Gwinea", + "no": "Guinea", + "ja": "ギニア", + "it": "Guinea", + "zh": "几内亚", + "nl": "Guinee", + "de": "Guinea", + "fr": "Guinée", + "es": "Guinea", + "en": "Guinea", + "pt_BR": "Guiné", + "sr-Cyrl": "Гвинеја", + "sr-Latn": "Gvineja", + "zh_TW": "幾內亞", + "tr": "Gine", + "ro": "Guinea", + "ar": "غينيا", + "fa": "گینه", + "yue": "幾內亞" + }, + flag: "🇬🇳", + code: "GN", + dialCode: "224", + minLength: 8, + maxLength: 9, + ), + Country( + name: "Guinea-Bissau", + nameTranslations: { + "sk": "Guinea-Bissau", + "se": "Guinea-Bissau", + "pl": "Gwinea Bissau", + "no": "Guinea-Bissau", + "ja": "ギニアビサウ", + "it": "Guinea-Bissau", + "zh": "几内亚比绍", + "nl": "Guinee-Bissau", + "de": "Guinea-Bissau", + "fr": "Guinée-Bissau", + "es": "Guinea-Bisáu", + "en": "Guinea-Bissau", + "pt_BR": "Guiné-bissau", + "sr-Cyrl": "Гвинеја Бисао", + "sr-Latn": "Gvineja Bisao", + "zh_TW": "幾內亞比索", + "tr": "Gine-Bissau", + "ro": "Guineea-Bissau", + "ar": "غينيا بيساو", + "fa": "گینه بیسائو", + "yue": "幾內亞比紹" + }, + flag: "🇬🇼", + code: "GW", + dialCode: "245", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Guyana", + nameTranslations: { + "sk": "Guyana", + "se": "Guyana", + "pl": "Gujana", + "no": "Guyana", + "ja": "ガイアナ", + "it": "Guyana", + "zh": "圭亚那", + "nl": "Guyana", + "de": "Guyana", + "fr": "Guyana", + "es": "Guyana", + "en": "Guyana", + "pt_BR": "Guiana", + "sr-Cyrl": "Гвајана", + "sr-Latn": "Gvajana", + "zh_TW": "蓋亞那", + "tr": "Guyana", + "ro": "Guyana", + "ar": "غيانا", + "fa": "گویان", + "yue": "圭亞那" + }, + flag: "🇬🇾", + code: "GY", + dialCode: "592", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Haiti", + nameTranslations: { + "sk": "Haiti", + "se": "Haiti", + "pl": "Haiti", + "no": "Haiti", + "ja": "ハイチ", + "it": "Haiti", + "zh": "海地", + "nl": "Haïti", + "de": "Haiti", + "fr": "Haïti", + "es": "Haití", + "en": "Haiti", + "pt_BR": "Haiti", + "sr-Cyrl": "Хаити", + "sr-Latn": "Haiti", + "zh_TW": "海地", + "tr": "Haiti", + "ro": "Haiti", + "ar": "هايتي", + "fa": "هائیتی", + "yue": "海地" + }, + flag: "🇭🇹", + code: "HT", + dialCode: "509", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Heard Island and Mcdonald Islands", + nameTranslations: { + "sk": "Heardov ostrov a Macdonaldove ostrovy", + "se": "Heard- ja McDonald-sullot", + "pl": "Wyspy Heard i McDonalda", + "no": "Heard- og McDonaldøyene", + "ja": "ハード島・マクドナルド諸島", + "it": "Isole Heard e McDonald", + "zh": "赫德岛和麦克唐纳群岛", + "nl": "Heard en McDonaldeilanden", + "de": "Heard und McDonaldinseln", + "fr": "Îles Heard et McDonald", + "es": "Islas Heard y McDonald", + "en": "Heard & McDonald Islands", + "pt_BR": "Ilhas Heard e McDonald", + "sr-Cyrl": "Острва Херд и Макдоналд", + "sr-Latn": "Ostrva Herd i Makdonald", + "zh_TW": "赫德暨麥當勞群島", + "tr": "Heard Adası ve McDonald Adaları", + "ro": "Insula Heard și Insulele McDonald", + "ar": "جزيرة هيرد وجزر ماكدونالد", + "fa": "جزیره هرد و جزایر مک‌دونالد", + "yue": "赫德岛同麦克唐纳群岛" + }, + flag: "🇭🇲", + code: "HM", + dialCode: "672", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Holy See (Vatican City State)", + nameTranslations: { + "sk": "Vatikán", + "se": "Vatikána", + "pl": "Watykan", + "no": "Vatikanstaten", + "ja": "バチカン市国", + "it": "Città del Vaticano", + "zh": "梵蒂冈", + "nl": "Vaticaanstad", + "de": "Vatikanstadt", + "fr": "État de la Cité du Vatican", + "es": "Ciudad del Vaticano", + "en": "Vatican City", + "pt_BR": "Cidade do Vaticano", + "sr-Cyrl": "Ватикан", + "sr-Latn": "Vatikan", + "zh_TW": "梵蒂岡", + "tr": "Vatikan", + "ro": "Vatican", + "ar": "الفاتيكان", + "fa": "واتیکان", + "yue": "梵蒂岡城國" + }, + flag: "🇻🇦", + code: "VA", + dialCode: "379", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Honduras", + nameTranslations: { + "sk": "Honduras", + "se": "Honduras", + "pl": "Honduras", + "no": "Honduras", + "ja": "ホンジュラス", + "it": "Honduras", + "zh": "洪都拉斯", + "nl": "Honduras", + "de": "Honduras", + "fr": "Honduras", + "es": "Honduras", + "en": "Honduras", + "pt_BR": "Honduras", + "sr-Cyrl": "Хондурас", + "sr-Latn": "Honduras", + "zh_TW": "宏都拉斯", + "tr": "Honduras", + "ro": "Honduras", + "ar": "هندوراس", + "fa": "هندوراس", + "yue": "洪都拉斯" + }, + flag: "🇭🇳", + code: "HN", + dialCode: "504", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Hong Kong", + nameTranslations: { + "sk": "Hongkong – OAO Číny", + "se": "Hongkong", + "pl": "SRA Hongkong (Chiny)", + "no": "Hongkong S.A.R. Kina", + "ja": "中華人民共和国香港特別行政区", + "it": "RAS di Hong Kong", + "zh": "中国香港特别行政区", + "nl": "Hongkong SAR van China", + "de": "Sonderverwaltungsregion Hongkong", + "fr": "R.A.S. chinoise de Hong Kong", + "es": "RAE de Hong Kong (China)", + "en": "Hong Kong SAR China", + "pt_BR": "RAE de Hong Kong China", + "sr-Cyrl": "Хонг Конг", + "sr-Latn": "Hong Kong", + "zh_TW": "香港", + "tr": "Hong Kong", + "ro": "Hong Kong", + "ar": "هونغ كونغ", + "fa": "هنگ کنگ", + "yue": "香港" + }, + flag: "🇭🇰", + code: "HK", + dialCode: "852", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Hungary", + nameTranslations: { + "sk": "Maďarsko", + "se": "Ungár", + "pl": "Węgry", + "no": "Ungarn", + "ja": "ハンガリー", + "it": "Ungheria", + "zh": "匈牙利", + "nl": "Hongarije", + "de": "Ungarn", + "fr": "Hongrie", + "es": "Hungría", + "en": "Hungary", + "pt_BR": "Hungria", + "sr-Cyrl": "Мађарска", + "sr-Latn": "Mađarska", + "zh_TW": "匈牙利", + "tr": "Macaristan", + "ro": "Ungaria", + "ar": "المجر", + "fa": "مجارستان", + "yue": "匈牙利" + }, + flag: "🇭🇺", + code: "HU", + dialCode: "36", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Iceland", + nameTranslations: { + "sk": "Island", + "se": "Islánda", + "pl": "Islandia", + "no": "Island", + "ja": "アイスランド", + "it": "Islanda", + "zh": "冰岛", + "nl": "IJsland", + "de": "Island", + "fr": "Islande", + "es": "Islandia", + "en": "Iceland", + "pt_BR": "Islândia", + "sr-Cyrl": "Исланд", + "sr-Latn": "Island", + "zh_TW": "冰島", + "tr": "İzlanda", + "ro": "Islanda", + "ar": "آيسلندا", + "fa": "ایسلند", + "yue": "冰島" + }, + flag: "🇮🇸", + code: "IS", + dialCode: "354", + minLength: 7, + maxLength: 9, + ), + Country( + name: "India", + nameTranslations: { + "sk": "India", + "se": "India", + "pl": "Indie", + "no": "India", + "ja": "インド", + "it": "India", + "zh": "印度", + "nl": "India", + "de": "Indien", + "fr": "Inde", + "es": "India", + "en": "India", + "pt_BR": "Índia", + "sr-Cyrl": "Индија", + "sr-Latn": "Indija", + "zh_TW": "印度", + "tr": "Hindistan", + "ro": "India", + "ar": "الهند", + "fa": "هند", + "yue": "印度" + }, + flag: "🇮🇳", + code: "IN", + dialCode: "91", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Indonesia", + nameTranslations: { + "sk": "Indonézia", + "se": "Indonesia", + "pl": "Indonezja", + "no": "Indonesia", + "ja": "インドネシア", + "it": "Indonesia", + "zh": "印度尼西亚", + "nl": "Indonesië", + "de": "Indonesien", + "fr": "Indonésie", + "es": "Indonesia", + "en": "Indonesia", + "pt_BR": "Indonésia", + "sr-Cyrl": "Индонезија", + "sr-Latn": "Indonezija", + "zh_TW": "印尼", + "tr": "Endonezya", + "ro": "Indonezia", + "ar": "إندونيسيا", + "fa": "اندونزی", + "yue": "印尼" + }, + flag: "🇮🇩", + code: "ID", + dialCode: "62", + minLength: 10, + maxLength: 13, + ), + Country( + name: "Iran, Islamic Republic of Persian Gulf", + nameTranslations: { + "sk": "Irán", + "se": "Iran", + "pl": "Iran", + "no": "Iran", + "ja": "イラン", + "it": "Iran", + "zh": "伊朗", + "nl": "Iran", + "de": "Iran", + "fr": "Iran", + "es": "Irán", + "en": "Iran", + "pt_BR": "Irã", + "sr-Cyrl": "Иран", + "sr-Latn": "Iran", + "zh_TW": "伊朗", + "tr": "İran", + "ro": "Iran", + "ar": "إيران", + "fa": "ایران", + "yue": "伊朗" + }, + flag: "🇮🇷", + code: "IR", + dialCode: "98", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Iraq", + nameTranslations: { + "sk": "Irak", + "se": "Irak", + "pl": "Irak", + "no": "Irak", + "ja": "イラク", + "it": "Iraq", + "zh": "伊拉克", + "nl": "Irak", + "de": "Irak", + "fr": "Irak", + "es": "Irak", + "en": "Iraq", + "pt_BR": "Iraque", + "sr-Cyrl": "Ирак", + "sr-Latn": "Irak", + "zh_TW": "伊拉克", + "tr": "Irak", + "ro": "Irak", + "ar": "العراق", + "fa": "عراق", + "yue": "伊拉克" + }, + flag: "🇮🇶", + code: "IQ", + dialCode: "964", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Ireland", + nameTranslations: { + "sk": "Írsko", + "se": "Irlánda", + "pl": "Irlandia", + "no": "Irland", + "ja": "アイルランド", + "it": "Irlanda", + "zh": "爱尔兰", + "nl": "Ierland", + "de": "Irland", + "fr": "Irlande", + "es": "Irlanda", + "en": "Ireland", + "pt_BR": "Irlanda", + "sr-Cyrl": "Ирска", + "sr-Latn": "Irska", + "zh_TW": "愛爾蘭", + "tr": "İrlanda", + "ro": "Irlanda", + "ar": "أيرلندا", + "fa": "ایرلند", + "yue": "愛爾蘭" + }, + flag: "🇮🇪", + code: "IE", + dialCode: "353", + minLength: 7, + maxLength: 9, + ), + Country( + name: "Isle of Man", + nameTranslations: { + "sk": "Ostrov Man", + "se": "Mann-sullot", + "pl": "Wyspa Man", + "no": "Man", + "ja": "マン島", + "it": "Isola di Man", + "zh": "马恩岛", + "nl": "Isle of Man", + "de": "Isle of Man", + "fr": "Île de Man", + "es": "Isla de Man", + "en": "Isle of Man", + "pt_BR": "Ilha de Man", + "sr-Cyrl": "Острво Мен", + "sr-Latn": "Ostrvo Men", + "zh_TW": "曼島", + "tr": "Man Adası", + "ro": "Insula Man", + "ar": "جزيرة مان", + "fa": "جزیره مان", + "yue": "马伊岛" + }, + flag: "🇮🇲", + code: "IM", + dialCode: "44", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Israel", + nameTranslations: { + "sk": "Izrael", + "se": "Israel", + "pl": "Izrael", + "no": "Israel", + "ja": "イスラエル", + "it": "Israele", + "zh": "以色列", + "nl": "Israël", + "de": "Israel", + "fr": "Israël", + "es": "Israel", + "en": "Israel", + "pt_BR": "Israel", + "sr-Cyrl": "Израел", + "sr-Latn": "Izrael", + "zh_TW": "以色列", + "tr": "İsrail", + "ro": "Israel", + "ar": "إسرائيل", + "fa": "إسرائيل", + "yue": "以色列" + }, + flag: "🇮🇱", + code: "IL", + dialCode: "972", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Campione d'Italia", + nameTranslations: { + "sk": "Taliansko", + "se": "Itália", + "pl": "Włochy", + "no": "Italia", + "ja": "イタリア", + "it": "Italia", + "zh": "意大利", + "nl": "Italië", + "de": "Italien", + "fr": "Italie", + "es": "Italia", + "en": "Italy", + "pt_BR": "Itália", + "sr-Cyrl": "Италија", + "sr-Latn": "Italija", + "zh_TW": "義大利", + "tr": "İtalya", + "ro": "Italia", + "ar": "إيطاليا", + "fa": "ایتالیا", + "yue": "意大利" + }, + flag: "🇮🇹", + code: "IT", + dialCode: "39", + minLength: 9, + maxLength: 10, + ), + Country( + name: "Jamaica", + nameTranslations: { + "sk": "Jamajka", + "se": "Jamaica", + "pl": "Jamajka", + "no": "Jamaica", + "ja": "ジャマイカ", + "it": "Giamaica", + "zh": "牙买加", + "nl": "Jamaica", + "de": "Jamaika", + "fr": "Jamaïque", + "es": "Jamaica", + "en": "Jamaica", + "pt_BR": "Jamaica", + "sr-Cyrl": "Јамајка", + "sr-Latn": "Jamajka", + "zh_TW": "牙買加", + "tr": "Jamaika", + "ro": "Jamaica", + "ar": "جامايكا", + "fa": "جامائیکا", + "yue": "牙買加" + }, + flag: "🇯🇲", + code: "JM", + dialCode: "1876", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Japan", + nameTranslations: { + "sk": "Japonsko", + "se": "Japána", + "pl": "Japonia", + "no": "Japan", + "ja": "日本", + "it": "Giappone", + "zh": "日本", + "nl": "Japan", + "de": "Japan", + "fr": "Japon", + "es": "Japón", + "en": "Japan", + "pt_BR": "Japão", + "sr-Cyrl": "Јапан", + "sr-Latn": "Japan", + "zh_TW": "日本", + "tr": "Japonya", + "ro": "Japonia", + "ar": "اليابان", + "fa": "ژاپن", + "yue": "日本" + }, + flag: "🇯🇵", + code: "JP", + dialCode: "81", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Jersey", + nameTranslations: { + "sk": "Jersey", + "se": "Jersey", + "pl": "Jersey", + "no": "Jersey", + "ja": "ジャージー", + "it": "Jersey", + "zh": "泽西岛", + "nl": "Jersey", + "de": "Jersey", + "fr": "Jersey", + "es": "Jersey", + "en": "Jersey", + "pt_BR": "Jersey", + "sr-Cyrl": "Џерзи", + "sr-Latn": "Džerzi", + "zh_TW": "澤西", + "tr": "Jersey", + "ro": "Jersey", + "ar": "جيرزي", + "fa": "جرزی", + "yue": "澤西" + }, + flag: "🇯🇪", + code: "JE", + dialCode: "44", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Jordan", + nameTranslations: { + "sk": "Jordánsko", + "se": "Jordánia", + "pl": "Jordania", + "no": "Jordan", + "ja": "ヨルダン", + "it": "Giordania", + "zh": "约旦", + "nl": "Jordanië", + "de": "Jordanien", + "fr": "Jordanie", + "es": "Jordania", + "en": "Jordan", + "pt_BR": "Jordânia", + "sr-Cyrl": "Јордан", + "sr-Latn": "Jordan", + "zh_TW": "約旦", + "tr": "Mavera-i Ürdün", + "ro": "Iordania", + "ar": "الأردن", + "fa": "اردن", + "yue": "約旦" + }, + flag: "🇯🇴", + code: "JO", + dialCode: "962", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Kazakhstan", + nameTranslations: { + "sk": "Kazachstan", + "se": "Kasakstan", + "pl": "Kazachstan", + "no": "Kasakhstan", + "ja": "カザフスタン", + "it": "Kazakistan", + "zh": "哈萨克斯坦", + "nl": "Kazachstan", + "de": "Kasachstan", + "fr": "Kazakhstan", + "es": "Kazajistán", + "en": "Kazakhstan", + "pt_BR": "Cazaquistão", + "sr-Cyrl": "Казахстан", + "sr-Latn": "Kazahstan", + "zh_TW": "哈薩克", + "tr": "Kazakistan", + "ro": "Kazahstan", + "ar": "كازاخستان", + "fa": "قزاقستان", + "yue": "哈薩克斯坦" + }, + flag: "🇰🇿", + code: "KZ", + dialCode: "7", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Kenya", + nameTranslations: { + "sk": "Keňa", + "se": "Kenia", + "pl": "Kenia", + "no": "Kenya", + "ja": "ケニア", + "it": "Kenya", + "zh": "肯尼亚", + "nl": "Kenia", + "de": "Kenia", + "fr": "Kenya", + "es": "Kenia", + "en": "Kenya", + "pt_BR": "Quênia", + "sr-Cyrl": "Кенија", + "sr-Latn": "Kenija", + "zh_TW": "肯亞", + "tr": "Kenya", + "ro": "Kenya", + "ar": "كينيا", + "fa": "كنيا", + "yue": "肯雅" + }, + flag: "🇰🇪", + code: "KE", + dialCode: "254", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Kiribati", + nameTranslations: { + "sk": "Kiribati", + "se": "Kiribati", + "pl": "Kiribati", + "no": "Kiribati", + "ja": "キリバス", + "it": "Kiribati", + "zh": "基里巴斯", + "nl": "Kiribati", + "de": "Kiribati", + "fr": "Kiribati", + "es": "Kiribati", + "en": "Kiribati", + "pt_BR": "Kiribati", + "sr-Cyrl": "Кирибати", + "sr-Latn": "Kiribati", + "zh_TW": "吉里巴斯", + "tr": "Kiribati", + "ro": "Kiribati", + "ar": "كيريباتي", + "fa": "کیریباتی", + "yue": "基里巴斯" + }, + flag: "🇰🇮", + code: "KI", + dialCode: "686", + minLength: 5, + maxLength: 5, + ), + Country( + name: "Korea, Democratic People's Republic of Korea", + nameTranslations: { + "sk": "Severná Kórea", + "se": "Davvi-Korea", + "pl": "Korea Północna", + "no": "Nord-Korea", + "ja": "北朝鮮", + "it": "Corea del Nord", + "zh": "朝鲜", + "nl": "Noord-Korea", + "de": "Nordkorea", + "fr": "Corée du Nord", + "es": "Corea del Norte", + "en": "North Korea", + "pt_BR": "Coreia do Norte", + "sr-Cyrl": "Северна Кореја", + "sr-Latn": "Severna Koreja", + "zh_TW": "北韓", + "tr": "Kuzey Kore", + "ro": "Coreea de Nord", + "ar": "كوريا الشمالية", + "fa": "کره شمالی", + "yue": "朝鮮(朝鮮民主主義人民共咊囯)" + }, + flag: "🇰🇵", + code: "KP", + dialCode: "850", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Korea, Republic of South Korea", + nameTranslations: { + "sk": "Južná Kórea", + "se": "Mátta-Korea", + "pl": "Korea Południowa", + "no": "Sør-Korea", + "ja": "韓国", + "it": "Corea del Sud", + "zh": "韩国", + "nl": "Zuid-Korea", + "de": "Südkorea", + "fr": "Corée du Sud", + "es": "Corea del Sur", + "en": "South Korea", + "pt_BR": "Coreia do Sul", + "sr-Cyrl": "Јужна Кореја", + "sr-Latn": "Južna Koreja", + "zh_TW": "南韓", + "tr": "Güney Kore", + "ro": "Coreea de Sud", + "ar": "كوريا الجنوبية", + "fa": "کره جنوبی", + "yue": "韓國(大韓民國)" + }, + flag: "🇰🇷", + code: "KR", + dialCode: "82", + minLength: 11, + maxLength: 11, + ), + Country( + name: "Kuwait", + nameTranslations: { + "sk": "Kuvajt", + "se": "Kuwait", + "pl": "Kuwejt", + "no": "Kuwait", + "ja": "クウェート", + "it": "Kuwait", + "zh": "科威特", + "nl": "Koeweit", + "de": "Kuwait", + "fr": "Koweït", + "es": "Kuwait", + "en": "Kuwait", + "pt_BR": "Kuwait", + "sr-Cyrl": "Кувајт", + "sr-Latn": "Kuvajt", + "zh_TW": "科威特", + "tr": "Kuveyt", + "ro": "Kuweit", + "ar": "الكويت", + "fa": "کویت", + "yue": "科威特" + }, + flag: "🇰🇼", + code: "KW", + dialCode: "965", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Kyrgyzstan", + nameTranslations: { + "sk": "Kirgizsko", + "se": "Kirgisistan", + "pl": "Kirgistan", + "no": "Kirgisistan", + "ja": "キルギス", + "it": "Kirghizistan", + "zh": "吉尔吉斯斯坦", + "nl": "Kirgizië", + "de": "Kirgisistan", + "fr": "Kirghizistan", + "es": "Kirguistán", + "en": "Kyrgyzstan", + "pt_BR": "Quirguistão", + "sr-Cyrl": "Киргистан", + "sr-Latn": "Kirgistan", + "zh_TW": "吉爾吉斯", + "tr": "Kırgızistan", + "ro": "Kîrgîzstan", + "ar": "قيرغيزستان", + "fa": "قرقیزستان", + "yue": "吉爾吉斯斯坦" + }, + flag: "🇰🇬", + code: "KG", + dialCode: "996", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Laos", + nameTranslations: { + "sk": "Laos", + "se": "Laos", + "pl": "Laos", + "no": "Laos", + "ja": "ラオス", + "it": "Laos", + "zh": "老挝", + "nl": "Laos", + "de": "Laos", + "fr": "Laos", + "es": "Laos", + "en": "Laos", + "pt_BR": "Laos", + "sr-Cyrl": "Лаос", + "sr-Latn": "Laos", + "zh_TW": "寮國", + "tr": "Laos", + "ro": "Laos", + "ar": "لاوس", + "fa": "لائوس", + "yue": "老撾人民民主共和國" + }, + flag: "🇱🇦", + code: "LA", + dialCode: "856", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Latvia", + nameTranslations: { + "sk": "Lotyšsko", + "se": "Látvia", + "pl": "Łotwa", + "no": "Latvia", + "ja": "ラトビア", + "it": "Lettonia", + "zh": "拉脱维亚", + "nl": "Letland", + "de": "Lettland", + "fr": "Lettonie", + "es": "Letonia", + "en": "Latvia", + "pt_BR": "Letônia", + "sr-Cyrl": "Летонија", + "sr-Latn": "Letonija", + "zh_TW": "拉托維亞", + "tr": "Letonya", + "ro": "Letonia", + "ar": "لاتفيا", + "fa": "لتونی", + "yue": "拉脫維亞" + }, + flag: "🇱🇻", + code: "LV", + dialCode: "371", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Lebanon", + nameTranslations: { + "sk": "Libanon", + "se": "Libanon", + "pl": "Liban", + "no": "Libanon", + "ja": "レバノン", + "it": "Libano", + "zh": "黎巴嫩", + "nl": "Libanon", + "de": "Libanon", + "fr": "Liban", + "es": "Líbano", + "en": "Lebanon", + "pt_BR": "Líbano", + "sr-Cyrl": "Либан", + "sr-Latn": "Liban", + "zh_TW": "黎巴嫩", + "tr": "Lübnan", + "ro": "Liban", + "ar": "لبنان", + "fa": "لبنان", + "yue": "黎巴嫩" + }, + flag: "🇱🇧", + code: "LB", + dialCode: "961", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Lesotho", + nameTranslations: { + "sk": "Lesotho", + "se": "Lesotho", + "pl": "Lesotho", + "no": "Lesotho", + "ja": "レソト", + "it": "Lesotho", + "zh": "莱索托", + "nl": "Lesotho", + "de": "Lesotho", + "fr": "Lesotho", + "es": "Lesoto", + "en": "Lesotho", + "pt_BR": "Lesoto", + "sr-Cyrl": "Лесото", + "sr-Latn": "Lesoto", + "zh_TW": "賴索托", + "tr": "Lesotho", + "ro": "Lesotho", + "ar": "ليسوتو", + "fa": "لسوتو", + "yue": "萊索托" + }, + flag: "🇱🇸", + code: "LS", + dialCode: "266", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Liberia", + nameTranslations: { + "sk": "Libéria", + "se": "Liberia", + "pl": "Liberia", + "no": "Liberia", + "ja": "リベリア", + "it": "Liberia", + "zh": "利比里亚", + "nl": "Liberia", + "de": "Liberia", + "fr": "Libéria", + "es": "Liberia", + "en": "Liberia", + "pt_BR": "Libéria", + "sr-Cyrl": "Либерија", + "sr-Latn": "Liberija", + "zh_TW": "賴比瑞亞", + "tr": "Liberya", + "ro": "Liberia", + "ar": "ليبيريا", + "fa": "لیبریا", + "yue": "利比里亞" + }, + flag: "🇱🇷", + code: "LR", + dialCode: "231", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Libyan Arab Jamahiriya", + nameTranslations: { + "sk": "Líbya", + "se": "Libya", + "pl": "Libia", + "no": "Libya", + "ja": "リビア", + "it": "Libia", + "zh": "利比亚", + "nl": "Libië", + "de": "Libyen", + "fr": "Libye", + "es": "Libia", + "en": "Libya", + "pt_BR": "Líbia", + "sr-Cyrl": "Либија", + "sr-Latn": "Libija", + "zh_TW": "利比亞", + "tr": "Libya", + "ro": "Libia", + "ar": "ليبيا", + "fa": "لیبی", + "yue": "利比亞" + }, + flag: "🇱🇾", + code: "LY", + dialCode: "218", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Liechtenstein", + nameTranslations: { + "sk": "Lichtenštajnsko", + "se": "Liechtenstein", + "pl": "Liechtenstein", + "no": "Liechtenstein", + "ja": "リヒテンシュタイン", + "it": "Liechtenstein", + "zh": "列支敦士登", + "nl": "Liechtenstein", + "de": "Liechtenstein", + "fr": "Liechtenstein", + "es": "Liechtenstein", + "en": "Liechtenstein", + "pt_BR": "Liechtenstein", + "sr-Cyrl": "Лихтенштајн", + "sr-Latn": "Lihtenštajn", + "zh_TW": "列支敦斯登", + "tr": "Lihtenştayn", + "ro": "Liechtenstein", + "ar": "ليختنشتاين", + "fa": "لیختن‌اشتاین", + "yue": "列支敦士登" + }, + flag: "🇱🇮", + code: "LI", + dialCode: "423", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Lithuania", + nameTranslations: { + "sk": "Litva", + "se": "Lietuva", + "pl": "Litwa", + "no": "Litauen", + "ja": "リトアニア", + "it": "Lituania", + "zh": "立陶宛", + "nl": "Litouwen", + "de": "Litauen", + "fr": "Lituanie", + "es": "Lituania", + "en": "Lithuania", + "pt_BR": "Lituânia", + "sr-Cyrl": "Литванија", + "sr-Latn": "Litvanija", + "zh_TW": "立陶宛", + "tr": "Litvanya", + "ro": "Lituania", + "ar": "ليتوانيا", + "fa": "لیتوانی", + "yue": "立陶宛" + }, + flag: "🇱🇹", + code: "LT", + dialCode: "370", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Luxembourg", + nameTranslations: { + "sk": "Luxembursko", + "se": "Luxembourg", + "pl": "Luksemburg", + "no": "Luxemburg", + "ja": "ルクセンブルク", + "it": "Lussemburgo", + "zh": "卢森堡", + "nl": "Luxemburg", + "de": "Luxemburg", + "fr": "Luxembourg", + "es": "Luxemburgo", + "en": "Luxembourg", + "pt_BR": "Luxemburgo", + "sr-Cyrl": "Луксенбург", + "sr-Latn": "Luksenburg", + "zh_TW": "盧森堡", + "tr": "Lüksemburg", + "ro": "Luxemburg", + "ar": "لوكسمبورغ", + "fa": "لوکزامبورگ", + "yue": "盧森堡" + }, + flag: "🇱🇺", + code: "LU", + dialCode: "352", + minLength: 11, + maxLength: 11, + ), + Country( + name: "Macao", + nameTranslations: { + "sk": "Macao – OAO Číny", + "se": "Makáo", + "pl": "SRA Makau (Chiny)", + "no": "Macao S.A.R. Kina", + "ja": "中華人民共和国マカオ特別行政区", + "it": "RAS di Macao", + "zh": "中国澳门特别行政区", + "nl": "Macau SAR van China", + "de": "Sonderverwaltungsregion Macau", + "fr": "R.A.S. chinoise de Macao", + "es": "RAE de Macao (China)", + "en": "Macao SAR China", + "pt_BR": "RAE de Macau China", + "sr-Cyrl": "Макао", + "sr-Latn": "Makao", + "zh_TW": "澳門", + "tr": "Makao", + "ro": "Macao", + "ar": "ماكاو", + "fa": "ماكائو", + "yue": "澳門" + }, + flag: "🇲🇴", + code: "MO", + dialCode: "853", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Macedonia", + nameTranslations: { + "sk": "Severné Macedónsko", + "se": "North Macedonia", + "pl": "Macedonia Północna", + "no": "Nord-Makedonia", + "ja": "北マケドニア", + "it": "Macedonia del Nord", + "zh": "北马其顿", + "nl": "Noord-Macedonië", + "de": "Nordmazedonien", + "fr": "Macédoine du Nord", + "es": "Macedonia del Norte", + "en": "North Macedonia", + "pt_BR": "Macedônia do Norte", + "sr-Cyrl": "Северна Македонија", + "sr-Latn": "Severna Makedonija", + "zh_TW": "北馬其頓", + "tr": "Kuzey Makedonya", + "ro": "Macedonia de Nord", + "ar": "مقدونيا", + "fa": "مقدونیه", + "yue": "馬其頓(前南斯拉夫共和國)" + }, + flag: "🇲🇰", + code: "MK", + dialCode: "389", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Madagascar", + nameTranslations: { + "sk": "Madagaskar", + "se": "Madagaskar", + "pl": "Madagaskar", + "no": "Madagaskar", + "ja": "マダガスカル", + "it": "Madagascar", + "zh": "马达加斯加", + "nl": "Madagaskar", + "de": "Madagaskar", + "fr": "Madagascar", + "es": "Madagascar", + "en": "Madagascar", + "pt_BR": "Madagáscar", + "sr-Cyrl": "Мадагаскар", + "sr-Latn": "Madagaskar", + "zh_TW": "馬達加斯加", + "tr": "Madagaskar", + "ro": "Madagascar", + "ar": "مدغشقر", + "fa": "ماداگاسکار", + "yue": "馬達加斯加" + }, + flag: "🇲🇬", + code: "MG", + dialCode: "261", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Malawi", + nameTranslations: { + "sk": "Malawi", + "se": "Malawi", + "pl": "Malawi", + "no": "Malawi", + "ja": "マラウイ", + "it": "Malawi", + "zh": "马拉维", + "nl": "Malawi", + "de": "Malawi", + "fr": "Malawi", + "es": "Malaui", + "en": "Malawi", + "pt_BR": "Malawi", + "sr-Cyrl": "Малави", + "sr-Latn": "Malavi", + "zh_TW": "馬拉威", + "tr": "Malavi", + "ro": "Malawi", + "ar": "مالاوي", + "fa": "مالاوی", + "yue": "馬拉維" + }, + flag: "🇲🇼", + code: "MW", + dialCode: "265", + minLength: 7, + maxLength: 9, + ), + Country( + name: "Malaysia", + nameTranslations: { + "sk": "Malajzia", + "se": "Malesia", + "pl": "Malezja", + "no": "Malaysia", + "ja": "マレーシア", + "it": "Malaysia", + "zh": "马来西亚", + "nl": "Maleisië", + "de": "Malaysia", + "fr": "Malaisie", + "es": "Malasia", + "en": "Malaysia", + "pt_BR": "Malásia", + "sr-Cyrl": "Малезија", + "sr-Latn": "Malezija", + "zh_TW": "馬來西亞", + "tr": "Malezya", + "ro": "Malaezia", + "ar": "ماليزيا", + "fa": "مالزی", + "yue": "馬來西亞" + }, + flag: "🇲🇾", + code: "MY", + dialCode: "60", + minLength: 9, + maxLength: 10, + ), + Country( + name: "Maldives", + nameTranslations: { + "sk": "Maldivy", + "se": "Malediivvat", + "pl": "Malediwy", + "no": "Maldivene", + "ja": "モルディブ", + "it": "Maldive", + "zh": "马尔代夫", + "nl": "Maldiven", + "de": "Malediven", + "fr": "Maldives", + "es": "Maldivas", + "en": "Maldives", + "pt_BR": "Maldivas", + "sr-Cyrl": "Малдиви", + "sr-Latn": "Maldivi", + "zh_TW": "馬爾地夫", + "tr": "Maldivler", + "ro": "Maldive", + "ar": "جزر المالديف", + "fa": "مالدیو", + "yue": "馬爾代夫" + }, + flag: "🇲🇻", + code: "MV", + dialCode: "960", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Mali", + nameTranslations: { + "sk": "Mali", + "se": "Mali", + "pl": "Mali", + "no": "Mali", + "ja": "マリ", + "it": "Mali", + "zh": "马里", + "nl": "Mali", + "de": "Mali", + "fr": "Mali", + "es": "Mali", + "en": "Mali", + "pt_BR": "Mali", + "sr-Cyrl": "Мали", + "sr-Latn": "Mali", + "zh_TW": "馬里", + "tr": "Mali", + "ro": "Mali", + "ar": "مالي", + "fa": "مالی", + "yue": "馬里" + }, + flag: "🇲🇱", + code: "ML", + dialCode: "223", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Malta", + nameTranslations: { + "sk": "Malta", + "se": "Málta", + "pl": "Malta", + "no": "Malta", + "ja": "マルタ", + "it": "Malta", + "zh": "马耳他", + "nl": "Malta", + "de": "Malta", + "fr": "Malte", + "es": "Malta", + "en": "Malta", + "pt_BR": "Malta", + "sr-Cyrl": "Малта", + "sr-Latn": "Malta", + "zh_TW": "馬爾他", + "tr": "Malta", + "ro": "Malta", + "ar": "مالطا", + "fa": "مالت", + "yue": "馬耳他" + }, + flag: "🇲🇹", + code: "MT", + dialCode: "356", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Marshall Islands", + nameTranslations: { + "sk": "Marshallove ostrovy", + "se": "Marshallsullot", + "pl": "Wyspy Marshalla", + "no": "Marshalløyene", + "ja": "マーシャル諸島", + "it": "Isole Marshall", + "zh": "马绍尔群岛", + "nl": "Marshalleilanden", + "de": "Marshallinseln", + "fr": "Îles Marshall", + "es": "Islas Marshall", + "en": "Marshall Islands", + "pt_BR": "Ilhas Marshall", + "sr-Cyrl": "Маршалска Острва", + "sr-Latn": "Maršalska Ostrva", + "zh_TW": "馬紹爾群島", + "tr": "Marshall Adaları", + "ro": "Insulele Marshall", + "ar": "جزر مارشال", + "fa": "جزایر مارشال", + "yue": "馬紹爾群島" + }, + flag: "🇲🇭", + code: "MH", + dialCode: "692", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Martinique", + nameTranslations: { + "sk": "Martinik", + "se": "Martinique", + "pl": "Martynika", + "no": "Martinique", + "ja": "マルティニーク", + "it": "Martinica", + "zh": "马提尼克", + "nl": "Martinique", + "de": "Martinique", + "fr": "Martinique", + "es": "Martinica", + "en": "Martinique", + "pt_BR": "Martinica", + "sr-Cyrl": "Мартиник", + "sr-Latn": "Martinik", + "zh_TW": "馬丁尼克", + "tr": "Martinique", + "ro": "Martinica", + "ar": "مارتينيك", + "fa": "مارتینیک", + "yue": "马提尼克" + }, + flag: "🇲🇶", + code: "MQ", + dialCode: "596", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Mauritania", + nameTranslations: { + "sk": "Mauritánia", + "se": "Mauretánia", + "pl": "Mauretania", + "no": "Mauritania", + "ja": "モーリタニア", + "it": "Mauritania", + "zh": "毛里塔尼亚", + "nl": "Mauritanië", + "de": "Mauretanien", + "fr": "Mauritanie", + "es": "Mauritania", + "en": "Mauritania", + "pt_BR": "Mauritânia", + "sr-Cyrl": "Мауританија", + "sr-Latn": "Mauritanija", + "zh_TW": "茅利塔尼亞", + "tr": "Moritanya", + "ro": "Mauritania", + "ar": "موريتانيا", + "fa": "موریتانی", + "yue": "毛里塔尼亞" + }, + flag: "🇲🇷", + code: "MR", + dialCode: "222", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Mauritius", + nameTranslations: { + "sk": "Maurícius", + "se": "Mauritius", + "pl": "Mauritius", + "no": "Mauritius", + "ja": "モーリシャス", + "it": "Mauritius", + "zh": "毛里求斯", + "nl": "Mauritius", + "de": "Mauritius", + "fr": "Maurice", + "es": "Mauricio", + "en": "Mauritius", + "pt_BR": "Maurício", + "sr-Cyrl": "Маурицијус", + "sr-Latn": "Mauricijus", + "zh_TW": "模里西斯", + "tr": "Mauritius", + "ro": "Mauritius", + "ar": "موريشيوس", + "fa": "موریس", + "yue": "毛里求斯" + }, + flag: "🇲🇺", + code: "MU", + dialCode: "230", + minLength: 7, + maxLength: 8, + ), + Country( + name: "Mayotte", + nameTranslations: { + "sk": "Mayotte", + "se": "Mayotte", + "pl": "Majotta", + "no": "Mayotte", + "ja": "マヨット", + "it": "Mayotte", + "zh": "马约特", + "nl": "Mayotte", + "de": "Mayotte", + "fr": "Mayotte", + "es": "Mayotte", + "en": "Mayotte", + "pt_BR": "Mayotte", + "sr-Cyrl": "Мајота", + "sr-Latn": "Majota", + "zh_TW": "馬約特", + "tr": "Mayotte", + "ro": "Mayotte", + "ar": "مايوت", + "fa": "مایوت", + "yue": "馬約特" + }, + flag: "🇾🇹", + code: "YT", + dialCode: "262", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Mexico", + nameTranslations: { + "sk": "Mexiko", + "se": "Meksiko", + "pl": "Meksyk", + "no": "Mexico", + "ja": "メキシコ", + "it": "Messico", + "zh": "墨西哥", + "nl": "Mexico", + "de": "Mexiko", + "fr": "Mexique", + "es": "México", + "en": "Mexico", + "pt_BR": "México", + "sr-Cyrl": "Мексико", + "sr-Latn": "Meksiko", + "zh_TW": "墨西哥", + "tr": "Meksika", + "ro": "Mexic", + "ar": "المكسيك", + "fa": "مکزیک", + "yue": "墨西哥" + }, + flag: "🇲🇽", + code: "MX", + dialCode: "52", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Micronesia, Federated States of Micronesia", + nameTranslations: { + "sk": "Mikronézia", + "se": "Mikronesia", + "pl": "Mikronezja", + "no": "Mikronesiaføderasjonen", + "ja": "ミクロネシア連邦", + "it": "Micronesia", + "zh": "密克罗尼西亚", + "nl": "Micronesia", + "de": "Mikronesien", + "fr": "États fédérés de Micronésie", + "es": "Micronesia", + "en": "Micronesia", + "pt_BR": "Micronésia", + "sr-Cyrl": "Микронезија", + "sr-Latn": "Mikronezija", + "zh_TW": "密克羅尼西亞", + "tr": "Mikronezya", + "ro": "Micronezia", + "ar": "ولايات ميكرونيسيا المتحدة", + "fa": "ایالات فدرال میکرونزی", + "yue": "密克罗尼西亚(聯邦)" + }, + flag: "🇫🇲", + code: "FM", + dialCode: "691", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Moldova", + nameTranslations: { + "sk": "Moldavsko", + "se": "Moldávia", + "pl": "Mołdawia", + "no": "Moldova", + "ja": "モルドバ", + "it": "Moldavia", + "zh": "摩尔多瓦", + "nl": "Moldavië", + "de": "Republik Moldau", + "fr": "Moldavie", + "es": "Moldavia", + "en": "Moldova", + "pt_BR": "Moldova", + "sr-Cyrl": "Молдавија", + "sr-Latn": "Moldavija", + "zh_TW": "摩爾多瓦", + "tr": "Moldova", + "ro": "Moldova", + "ar": "مولدوفا", + "fa": "مولداوی", + "yue": "摩爾多瓦(共和國)" + }, + flag: "🇲🇩", + code: "MD", + dialCode: "373", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Monaco", + nameTranslations: { + "sk": "Monako", + "se": "Monaco", + "pl": "Monako", + "no": "Monaco", + "ja": "モナコ", + "it": "Monaco", + "zh": "摩纳哥", + "nl": "Monaco", + "de": "Monaco", + "fr": "Monaco", + "es": "Mónaco", + "en": "Monaco", + "pt_BR": "Mônaco", + "sr-Cyrl": "Монако", + "sr-Latn": "Monako", + "zh_TW": "摩納哥", + "tr": "Monako", + "ro": "Monaco", + "ar": "موناكو", + "fa": "موناكو", + "yue": "摩納哥" + }, + flag: "🇲🇨", + code: "MC", + dialCode: "377", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Mongolia", + nameTranslations: { + "sk": "Mongolsko", + "se": "Mongolia", + "pl": "Mongolia", + "no": "Mongolia", + "ja": "モンゴル", + "it": "Mongolia", + "zh": "蒙古", + "nl": "Mongolië", + "de": "Mongolei", + "fr": "Mongolie", + "es": "Mongolia", + "en": "Mongolia", + "pt_BR": "Mongólia", + "sr-Cyrl": "Монголија", + "sr-Latn": "Mongolija", + "zh_TW": "蒙古", + "tr": "Moğolistan", + "ro": "Mongolia", + "ar": "منغوليا", + "fa": "مغولستان", + "yue": "蒙古" + }, + flag: "🇲🇳", + code: "MN", + dialCode: "976", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Montenegro", + nameTranslations: { + "sk": "Čierna Hora", + "se": "Montenegro", + "pl": "Czarnogóra", + "no": "Montenegro", + "ja": "モンテネグロ", + "it": "Montenegro", + "zh": "黑山", + "nl": "Montenegro", + "de": "Montenegro", + "fr": "Monténégro", + "es": "Montenegro", + "en": "Montenegro", + "pt_BR": "Montenegro", + "sr-Cyrl": "Црна Гора", + "sr-Latn": "Crna Gora", + "zh_TW": "蒙特內哥羅", + "tr": "Karadağ", + "ro": "Muntenegru", + "ar": "الجبل الأسود", + "fa": "مونته‌نگرو", + "yue": "黑山" + }, + flag: "🇲🇪", + code: "ME", + dialCode: "382", + minLength: 12, + maxLength: 12, + ), + Country( + name: "Montserrat", + nameTranslations: { + "sk": "Montserrat", + "se": "Montserrat", + "pl": "Montserrat", + "no": "Montserrat", + "ja": "モントセラト", + "it": "Montserrat", + "zh": "蒙特塞拉特", + "nl": "Montserrat", + "de": "Montserrat", + "fr": "Montserrat", + "es": "Montserrat", + "en": "Montserrat", + "pt_BR": "Montserrat", + "sr-Cyrl": "Монтсерат", + "sr-Latn": "Montserat", + "zh_TW": "蒙哲臘", + "tr": "Montserrat", + "ro": "Montserrat", + "ar": "مونتسرات", + "fa": "مونتسرات", + "yue": "蒙特塞拉特" + }, + flag: "🇲🇸", + code: "MS", + dialCode: "1664", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Morocco", + nameTranslations: { + "sk": "Maroko", + "se": "Marokko", + "pl": "Maroko", + "no": "Marokko", + "ja": "モロッコ", + "it": "Marocco", + "zh": "摩洛哥", + "nl": "Marokko", + "de": "Marokko", + "fr": "Maroc", + "es": "Marruecos", + "en": "Morocco", + "pt_BR": "Marrocos", + "sr-Cyrl": "Мароко", + "sr-Latn": "Maroko", + "zh_TW": "摩洛哥", + "tr": "Fas", + "ro": "Maroc", + "ar": "المغرب", + "fa": "مراکش", + "yue": "摩洛哥" + }, + flag: "🇲🇦", + code: "MA", + dialCode: "212", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Mozambique", + nameTranslations: { + "sk": "Mozambik", + "se": "Mosambik", + "pl": "Mozambik", + "no": "Mosambik", + "ja": "モザンビーク", + "it": "Mozambico", + "zh": "莫桑比克", + "nl": "Mozambique", + "de": "Mosambik", + "fr": "Mozambique", + "es": "Mozambique", + "en": "Mozambique", + "pt_BR": "Moçambique", + "sr-Cyrl": "Мозамбик", + "sr-Latn": "Mozambik", + "zh_TW": "莫三比克", + "tr": "Mozambik", + "ro": "Mozambic", + "ar": "موزمبيق", + "fa": "موزامبیک", + "yue": "莫桑比克" + }, + flag: "🇲🇿", + code: "MZ", + dialCode: "258", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Myanmar", + nameTranslations: { + "sk": "Mjanmarsko", + "se": "Burma", + "pl": "Mjanma (Birma)", + "no": "Myanmar (Burma)", + "ja": "ミャンマー (ビルマ)", + "it": "Myanmar (Birmania)", + "zh": "缅甸", + "nl": "Myanmar (Birma)", + "de": "Myanmar", + "fr": "Myanmar (Birmanie)", + "es": "Myanmar (Birmania)", + "en": "Myanmar (Burma)", + "pt_BR": "Mianmar (Birmânia)", + "sr-Cyrl": "Мјанмар (Бурма)", + "sr-Latn": "Mjanmar (Burma)", + "zh_TW": "緬甸", + "tr": "Myanmar", + "ro": "Myanmar", + "ar": "ميانمار", + "fa": "میانمار", + "yue": "緬甸" + }, + flag: "🇲🇲", + code: "MM", + dialCode: "95", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Namibia", + nameTranslations: { + "sk": "Namíbia", + "se": "Namibia", + "pl": "Namibia", + "no": "Namibia", + "ja": "ナミビア", + "it": "Namibia", + "zh": "纳米比亚", + "nl": "Namibië", + "de": "Namibia", + "fr": "Namibie", + "es": "Namibia", + "en": "Namibia", + "pt_BR": "Namibia", + "sr-Cyrl": "Намибија", + "sr-Latn": "Namibija", + "zh_TW": "納米比亞", + "tr": "Namibya", + "ro": "Namibia", + "ar": "ناميبيا", + "fa": "نامیبیا", + "yue": "納米比亞" + }, + flag: "🇳🇦", + code: "NA", + dialCode: "264", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Nauru", + nameTranslations: { + "sk": "Nauru", + "se": "Nauru", + "pl": "Nauru", + "no": "Nauru", + "ja": "ナウル", + "it": "Nauru", + "zh": "瑙鲁", + "nl": "Nauru", + "de": "Nauru", + "fr": "Nauru", + "es": "Nauru", + "en": "Nauru", + "pt_BR": "Nauru", + "sr-Cyrl": "Науру", + "sr-Latn": "Nauru", + "zh_TW": "諾魯", + "tr": "Nauru", + "ro": "Nauru", + "ar": "ناورو", + "fa": "نائورو", + "yue": "瑙魯" + }, + flag: "🇳🇷", + code: "NR", + dialCode: "674", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Nepal", + nameTranslations: { + "sk": "Nepál", + "se": "Nepal", + "pl": "Nepal", + "no": "Nepal", + "ja": "ネパール", + "it": "Nepal", + "zh": "尼泊尔", + "nl": "Nepal", + "de": "Nepal", + "fr": "Népal", + "es": "Nepal", + "en": "Nepal", + "pt_BR": "Nepal", + "sr-Cyrl": "Непал", + "sr-Latn": "Nepal", + "zh_TW": "尼泊爾", + "tr": "Nepal", + "ro": "Nepal", + "ar": "نيبال", + "fa": "نپال", + "yue": "尼泊爾" + }, + flag: "🇳🇵", + code: "NP", + dialCode: "977", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Netherlands", + nameTranslations: { + "sk": "Holandsko", + "se": "Vuolleeatnamat", + "pl": "Holandia", + "no": "Nederland", + "ja": "オランダ", + "it": "Paesi Bassi", + "zh": "荷兰", + "nl": "Nederland", + "de": "Niederlande", + "fr": "Pays-Bas", + "es": "Países Bajos", + "en": "Netherlands", + "pt_BR": "Países Baixos", + "sr-Cyrl": "Холандија", + "sr-Latn": "Holandija", + "zh_TW": "荷蘭", + "tr": "Hollanda", + "ro": "Olanda", + "ar": "هولندا", + "fa": "هلند", + "yue": "荷蘭" + }, + flag: "🇳🇱", + code: "NL", + dialCode: "31", + minLength: 9, + maxLength: 9, + ), + Country( + name: "New Caledonia", + nameTranslations: { + "sk": "Nová Kaledónia", + "se": "Ođđa-Kaledonia", + "pl": "Nowa Kaledonia", + "no": "Ny-Caledonia", + "ja": "ニューカレドニア", + "it": "Nuova Caledonia", + "zh": "新喀里多尼亚", + "nl": "Nieuw-Caledonië", + "de": "Neukaledonien", + "fr": "Nouvelle-Calédonie", + "es": "Nueva Caledonia", + "en": "New Caledonia", + "pt_BR": "Nova Caledônia", + "sr-Cyrl": "Нова Каледонија", + "sr-Latn": "Nova Kaledonija", + "zh_TW": "新喀里多尼亞", + "tr": "Yeni Kaledonya", + "ro": "Noua Caledonie", + "ar": "كاليدونيا الجديدة", + "fa": "کالدونیای جدید", + "yue": "新喀里多尼亚" + }, + flag: "🇳🇨", + code: "NC", + dialCode: "687", + minLength: 6, + maxLength: 6, + ), + Country( + name: "New Zealand", + nameTranslations: { + "sk": "Nový Zéland", + "se": "Ođđa-Selánda", + "pl": "Nowa Zelandia", + "no": "New Zealand", + "ja": "ニュージーランド", + "it": "Nuova Zelanda", + "zh": "新西兰", + "nl": "Nieuw-Zeeland", + "de": "Neuseeland", + "fr": "Nouvelle-Zélande", + "es": "Nueva Zelanda", + "en": "New Zealand", + "pt_BR": "Nova Zelândia", + "sr-Cyrl": "Нови Зеланд", + "sr-Latn": "Novi Zeland", + "zh_TW": "紐西蘭", + "tr": "Yeni Zelanda", + "ro": "Noua Zeelandă", + "ar": "نيوزيلندا", + "fa": "نیوزلند", + "yue": "紐西蘭" + }, + flag: "🇳🇿", + code: "NZ", + dialCode: "64", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Nicaragua", + nameTranslations: { + "sk": "Nikaragua", + "se": "Nicaragua", + "pl": "Nikaragua", + "no": "Nicaragua", + "ja": "ニカラグア", + "it": "Nicaragua", + "zh": "尼加拉瓜", + "nl": "Nicaragua", + "de": "Nicaragua", + "fr": "Nicaragua", + "es": "Nicaragua", + "en": "Nicaragua", + "pt_BR": "Nicarágua", + "sr-Cyrl": "Никарагва", + "sr-Latn": "Nikaragva", + "zh_TW": "尼加拉瓜", + "tr": "Nikaragua", + "ro": "Nicaragua", + "ar": "نيكاراغوا", + "fa": "نیکاراگوئه", + "yue": "尼加拉瓜" + }, + flag: "🇳🇮", + code: "NI", + dialCode: "505", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Niger", + nameTranslations: { + "sk": "Niger", + "se": "Niger", + "pl": "Niger", + "no": "Niger", + "ja": "ニジェール", + "it": "Niger", + "zh": "尼日尔", + "nl": "Niger", + "de": "Niger", + "fr": "Niger", + "es": "Níger", + "en": "Niger", + "pt_BR": "Níger", + "sr-Cyrl": "Нигер", + "sr-Latn": "Niger", + "zh_TW": "尼日爾", + "tr": "Nijer", + "ro": "Niger", + "ar": "النيجر", + "fa": "نیجر", + "yue": "尼日爾" + }, + flag: "🇳🇪", + code: "NE", + dialCode: "227", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Nigeria", + nameTranslations: { + "sk": "Nigéria", + "se": "Nigeria", + "pl": "Nigeria", + "no": "Nigeria", + "ja": "ナイジェリア", + "it": "Nigeria", + "zh": "尼日利亚", + "nl": "Nigeria", + "de": "Nigeria", + "fr": "Nigéria", + "es": "Nigeria", + "en": "Nigeria", + "pt_BR": "Nigéria", + "sr-Cyrl": "Нигерија", + "sr-Latn": "Nigerija", + "zh_TW": "奈及利亞", + "tr": "Nijerya", + "ro": "Nigeria", + "ar": "نيجيريا", + "fa": "نیجریه", + "yue": "尼日利亞" + }, + flag: "🇳🇬", + code: "NG", + dialCode: "234", + minLength: 10, + maxLength: 11, + ), + Country( + name: "Niue", + nameTranslations: { + "sk": "Niue", + "se": "Niue", + "pl": "Niue", + "no": "Niue", + "ja": "ニウエ", + "it": "Niue", + "zh": "纽埃", + "nl": "Niue", + "de": "Niue", + "fr": "Niue", + "es": "Niue", + "en": "Niue", + "pt_BR": "Niue", + "sr-Cyrl": "Нијуе", + "sr-Latn": "Nijue", + "zh_TW": "紐埃", + "tr": "Niue", + "ro": "Niue", + "ar": "نييوي", + "fa": "نیووی", + "yue": "紐埃" + }, + flag: "🇳🇺", + code: "NU", + dialCode: "683", + minLength: 4, + maxLength: 4, + ), + Country( + name: "Norfolk Island", + nameTranslations: { + "sk": "Norfolk", + "se": "Norfolksullot", + "pl": "Norfolk", + "no": "Norfolkøya", + "ja": "ノーフォーク島", + "it": "Isola Norfolk", + "zh": "诺福克岛", + "nl": "Norfolk", + "de": "Norfolkinsel", + "fr": "Île Norfolk", + "es": "Isla Norfolk", + "en": "Norfolk Island", + "pt_BR": "Ilha Norfolk", + "sr-Cyrl": "Острво Норфок", + "sr-Latn": "Ostrvo Norfok", + "zh_TW": "諾福克島", + "tr": "Norfolk Adası", + "ro": "Insulele Norfolk", + "ar": "جزيرة نورفولك", + "fa": "جزیره نورفک", + "yue": "诺福克岛" + }, + flag: "🇳🇫", + code: "NF", + dialCode: "672", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Northern Mariana Islands", + nameTranslations: { + "sk": "Severné Mariány", + "se": "Davvi-Mariánat", + "pl": "Mariany Północne", + "no": "Nord-Marianene", + "ja": "北マリアナ諸島", + "it": "Isole Marianne settentrionali", + "zh": "北马里亚纳群岛", + "nl": "Noordelijke Marianen", + "de": "Nördliche Marianen", + "fr": "Îles Mariannes du Nord", + "es": "Islas Marianas del Norte", + "en": "Northern Mariana Islands", + "pt_BR": "Ilhas Marianas do Norte", + "sr-Cyrl": "Северна Маријанска Острва", + "sr-Latn": "Severna Marijanska Ostrva", + "zh_TW": "北馬利安納群島", + "tr": "Kuzey Mariana Adaları", + "ro": "Insulelor Mariane de Nord", + "ar": "جزر ماريانا الشمالية", + "fa": "جزایر ماریانای شمالی", + "yue": "北馬里亞納群島" + }, + flag: "🇲🇵", + code: "MP", + dialCode: "1670", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Norway", + nameTranslations: { + "sk": "Nórsko", + "se": "Norga", + "pl": "Norwegia", + "no": "Norge", + "ja": "ノルウェー", + "it": "Norvegia", + "zh": "挪威", + "nl": "Noorwegen", + "de": "Norwegen", + "fr": "Norvège", + "es": "Noruega", + "en": "Norway", + "pt_BR": "Noruega", + "sr-Cyrl": "Норвешка", + "sr-Latn": "Norveška", + "zh_TW": "挪威", + "tr": "Norveç", + "ro": "Norvegia", + "ar": "النرويج", + "fa": "نروژ", + "yue": "挪威" + }, + flag: "🇳🇴", + code: "NO", + dialCode: "47", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Oman", + nameTranslations: { + "sk": "Omán", + "se": "Oman", + "pl": "Oman", + "no": "Oman", + "ja": "オマーン", + "it": "Oman", + "zh": "阿曼", + "nl": "Oman", + "de": "Oman", + "fr": "Oman", + "es": "Omán", + "en": "Oman", + "pt_BR": "Omã", + "sr-Cyrl": "Оман", + "sr-Latn": "Oman", + "zh_TW": "阿曼", + "tr": "Umman", + "ro": "Oman", + "ar": "عمان", + "fa": "عمان", + "yue": "阿曼" + }, + flag: "🇴🇲", + code: "OM", + dialCode: "968", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Pakistan", + nameTranslations: { + "sk": "Pakistan", + "se": "Pakistan", + "pl": "Pakistan", + "no": "Pakistan", + "ja": "パキスタン", + "it": "Pakistan", + "zh": "巴基斯坦", + "nl": "Pakistan", + "de": "Pakistan", + "fr": "Pakistan", + "es": "Pakistán", + "en": "Pakistan", + "pt_BR": "Paquistão", + "sr-Cyrl": "Пакистан", + "sr-Latn": "Pakistan", + "zh_TW": "巴基斯坦", + "tr": "Pakistan", + "ro": "Pakistan", + "ar": "باكستان", + "fa": "پاکستان", + "yue": "巴基斯坦" + }, + flag: "🇵🇰", + code: "PK", + dialCode: "92", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Palau", + nameTranslations: { + "sk": "Palau", + "se": "Palau", + "pl": "Palau", + "no": "Palau", + "ja": "パラオ", + "it": "Palau", + "zh": "帕劳", + "nl": "Palau", + "de": "Palau", + "fr": "Palaos", + "es": "Palaos", + "en": "Palau", + "pt_BR": "Palau", + "sr-Cyrl": "Палау", + "sr-Latn": "Palau", + "zh_TW": "帛琉", + "tr": "Palau", + "ro": "Palau", + "ar": "بالاو", + "fa": "پالائو", + "yue": "帕劳" + }, + flag: "🇵🇼", + code: "PW", + dialCode: "680", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Palestinian Territory, Occupied", + nameTranslations: { + "sk": "Palestínske územia", + "se": "Palestina", + "pl": "Terytoria Palestyńskie", + "no": "Det palestinske området", + "ja": "パレスチナ自治区", + "it": "Territori palestinesi", + "zh": "巴勒斯坦领土", + "nl": "Palestijnse gebieden", + "de": "Palästinensische Autonomiegebiete", + "fr": "Territoires palestiniens", + "es": "Territorios Palestinos", + "en": "Palestinian Territories", + "pt_BR": "Territórios Palestinos", + "sr-Cyrl": "Палестина", + "sr-Latn": "Palestina", + "zh_TW": "巴勒斯坦", + "tr": "Filistin", + "ro": "Palestina", + "ar": "فلسطين", + "fa": "فلسطین", + "yue": "巴勒斯坦,国" + }, + flag: "🇵🇸", + code: "PS", + dialCode: "970", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Panama", + nameTranslations: { + "sk": "Panama", + "se": "Panama", + "pl": "Panama", + "no": "Panama", + "ja": "パナマ", + "it": "Panamá", + "zh": "巴拿马", + "nl": "Panama", + "de": "Panama", + "fr": "Panama", + "es": "Panamá", + "en": "Panama", + "pt_BR": "Panamá", + "sr-Cyrl": "Панама", + "sr-Latn": "Panama", + "zh_TW": "巴拿馬", + "tr": "Panama", + "ro": "Panama", + "ar": "بنما", + "fa": "پاناما", + "yue": "巴拿馬" + }, + flag: "🇵🇦", + code: "PA", + dialCode: "507", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Papua New Guinea", + nameTranslations: { + "sk": "Papua-Nová Guinea", + "se": "Papua-Ođđa-Guinea", + "pl": "Papua-Nowa Gwinea", + "no": "Papua Ny-Guinea", + "ja": "パプアニューギニア", + "it": "Papua Nuova Guinea", + "zh": "巴布亚新几内亚", + "nl": "Papoea-Nieuw-Guinea", + "de": "Papua-Neuguinea", + "fr": "Papouasie-Nouvelle-Guinée", + "es": "Papúa Nueva Guinea", + "en": "Papua New Guinea", + "pt_BR": "Papua Nova Guiné", + "sr-Cyrl": "Папуа Нова Гвинеја", + "sr-Latn": "Papua Nova Gvineja", + "zh_TW": "巴布亞新幾內亞", + "tr": "Papua Yeni Gine", + "ro": "Papua Noua Guinee", + "ar": "بابوا غينيا الجديدة", + "fa": "پاپوآ گینه نو", + "yue": "巴布亚新几内亚" + }, + flag: "🇵🇬", + code: "PG", + dialCode: "675", + minLength: 11, + maxLength: 11, + ), + Country( + name: "Paraguay", + nameTranslations: { + "sk": "Paraguaj", + "se": "Paraguay", + "pl": "Paragwaj", + "no": "Paraguay", + "ja": "パラグアイ", + "it": "Paraguay", + "zh": "巴拉圭", + "nl": "Paraguay", + "de": "Paraguay", + "fr": "Paraguay", + "es": "Paraguay", + "en": "Paraguay", + "pt_BR": "Paraguai", + "sr-Cyrl": "Парагвај", + "sr-Latn": "Paragvaj", + "zh_TW": "巴拉圭", + "tr": "Paraguay", + "ro": "Paraguay", + "ar": "باراغواي", + "fa": "پاراگوئه", + "yue": "巴拉圭" + }, + flag: "🇵🇾", + code: "PY", + dialCode: "595", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Peru", + nameTranslations: { + "sk": "Peru", + "se": "Peru", + "pl": "Peru", + "no": "Peru", + "ja": "ペルー", + "it": "Perù", + "zh": "秘鲁", + "nl": "Peru", + "de": "Peru", + "fr": "Pérou", + "es": "Perú", + "en": "Peru", + "pt_BR": "Peru", + "sr-Cyrl": "Перу", + "sr-Latn": "Peru", + "zh_TW": "秘鲁", + "tr": "Peru", + "ro": "Peru", + "ar": "بيرو", + "fa": "پرو", + "yue": "秘魯" + }, + flag: "🇵🇪", + code: "PE", + dialCode: "51", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Philippines", + nameTranslations: { + "sk": "Filipíny", + "se": "Filippiinnat", + "pl": "Filipiny", + "no": "Filippinene", + "ja": "フィリピン", + "it": "Filippine", + "zh": "菲律宾", + "nl": "Filipijnen", + "de": "Philippinen", + "fr": "Philippines", + "es": "Filipinas", + "en": "Philippines", + "pt_BR": "Filipinas", + "sr-Cyrl": "Филипини", + "sr-Latn": "Filipini", + "zh_TW": "菲律賓", + "tr": "Filipinler", + "ro": "Filipine", + "ar": "الفلبين", + "fa": "فیلیپین", + "yue": "菲律賓" + }, + flag: "🇵🇭", + code: "PH", + dialCode: "63", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Pitcairn", + nameTranslations: { + "sk": "Pitcairnove ostrovy", + "se": "Pitcairn", + "pl": "Pitcairn", + "no": "Pitcairnøyene", + "ja": "ピトケアン諸島", + "it": "Isole Pitcairn", + "zh": "皮特凯恩群岛", + "nl": "Pitcairneilanden", + "de": "Pitcairninseln", + "fr": "Îles Pitcairn", + "es": "Islas Pitcairn", + "en": "Pitcairn Islands", + "pt_BR": "Ilhas Pitcairn", + "sr-Cyrl": "Острва Питкерн", + "sr-Latn": "Ostrva Pitkern", + "zh_TW": "皮特肯群島", + "tr": "Pitcairn Adaları", + "ro": "Insulele Pitcairn", + "ar": "جزر بيتكيرن", + "fa": "جزایر پیت‌کرن", + "yue": "皮特凱恩" + }, + flag: "🇵🇳", + code: "PN", + dialCode: "64", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Poland", + nameTranslations: { + "sk": "Poľsko", + "se": "Polen", + "pl": "Polska", + "no": "Polen", + "ja": "ポーランド", + "it": "Polonia", + "zh": "波兰", + "nl": "Polen", + "de": "Polen", + "fr": "Pologne", + "es": "Polonia", + "en": "Poland", + "pt_BR": "Polônia", + "sr-Cyrl": "Пољска", + "sr-Latn": "Poljska", + "zh_TW": "波蘭", + "tr": "Polonya", + "ro": "Polonia", + "ar": "بولندا", + "fa": "لهستان", + "yue": "波蘭" + }, + flag: "🇵🇱", + code: "PL", + dialCode: "48", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Portugal", + nameTranslations: { + "sk": "Portugalsko", + "se": "Portugála", + "pl": "Portugalia", + "no": "Portugal", + "ja": "ポルトガル", + "it": "Portogallo", + "zh": "葡萄牙", + "nl": "Portugal", + "de": "Portugal", + "fr": "Portugal", + "es": "Portugal", + "en": "Portugal", + "pt_BR": "Portugal", + "sr-Cyrl": "Португалија", + "sr-Latn": "Portugalija", + "zh_TW": "葡萄牙", + "tr": "Portekiz", + "ro": "Portugalia", + "ar": "البرتغال", + "fa": "پرتغال", + "yue": "葡萄牙" + }, + flag: "🇵🇹", + code: "PT", + dialCode: "351", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Puerto Rico", + nameTranslations: { + "sk": "Portoriko", + "se": "Puerto Rico", + "pl": "Portoryko", + "no": "Puerto Rico", + "ja": "プエルトリコ", + "it": "Portorico", + "zh": "波多黎各", + "nl": "Puerto Rico", + "de": "Puerto Rico", + "fr": "Porto Rico", + "es": "Puerto Rico", + "en": "Puerto Rico", + "pt_BR": "Porto Rico", + "sr-Cyrl": "Порто Рико", + "sr-Latn": "Porto Riko", + "zh_TW": "波多黎各", + "tr": "Porto Riko", + "ro": "Puerto Rico", + "ar": "بورتوريكو", + "fa": "پورتوریکو", + "yue": "波多黎各" + }, + flag: "🇵🇷", + code: "PR", + dialCode: "1939", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Qatar", + nameTranslations: { + "sk": "Katar", + "se": "Qatar", + "pl": "Katar", + "no": "Qatar", + "ja": "カタール", + "it": "Qatar", + "zh": "卡塔尔", + "nl": "Qatar", + "de": "Katar", + "fr": "Qatar", + "es": "Catar", + "en": "Qatar", + "pt_BR": "Catar", + "sr-Cyrl": "Катар", + "sr-Latn": "Katar", + "zh_TW": "卡達", + "tr": "Katar", + "ro": "Qatar", + "ar": "قطر", + "fa": "قطر", + "yue": "卡塔爾" + }, + flag: "🇶🇦", + code: "QA", + dialCode: "974", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Romania", + nameTranslations: { + "sk": "Rumunsko", + "se": "Románia", + "pl": "Rumunia", + "no": "Romania", + "ja": "ルーマニア", + "it": "Romania", + "zh": "罗马尼亚", + "nl": "Roemenië", + "de": "Rumänien", + "fr": "Roumanie", + "es": "Rumanía", + "en": "Romania", + "pt_BR": "Romênia", + "sr-Cyrl": "Румунија", + "sr-Latn": "Rumunija", + "zh_TW": "羅馬尼亞", + "tr": "Romanya", + "ro": "România", + "ar": "رومانيا", + "fa": "رومانی", + "yue": "羅馬尼亞" + }, + flag: "🇷🇴", + code: "RO", + dialCode: "40", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Russia", + nameTranslations: { + "sk": "Rusko", + "se": "Ruošša", + "pl": "Rosja", + "no": "Russland", + "ja": "ロシア", + "it": "Russia", + "zh": "俄罗斯", + "nl": "Rusland", + "de": "Russland", + "fr": "Russie", + "es": "Rusia", + "en": "Russia", + "pt_BR": "Rússia", + "sr-Cyrl": "Русија", + "sr-Latn": "Rusija", + "zh_TW": "俄羅斯", + "tr": "Rusya", + "ro": "Rusia", + "ar": "روسيا", + "fa": "روسیه", + "yue": "俄儸斯聯邦" + }, + flag: "🇷🇺", + code: "RU", + dialCode: "7", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Rwanda", + nameTranslations: { + "sk": "Rwanda", + "se": "Rwanda", + "pl": "Rwanda", + "no": "Rwanda", + "ja": "ルワンダ", + "it": "Ruanda", + "zh": "卢旺达", + "nl": "Rwanda", + "de": "Ruanda", + "fr": "Rwanda", + "es": "Ruanda", + "en": "Rwanda", + "pt_BR": "Ruanda", + "sr-Cyrl": "Руанда", + "sr-Latn": "Ruanda", + "zh_TW": "盧安達", + "tr": "Ruanda", + "ro": "Rwanda", + "ar": "رواندا", + "fa": "رواندا", + "yue": "盧旺達" + }, + flag: "🇷🇼", + code: "RW", + dialCode: "250", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Reunion", + nameTranslations: { + "sk": "Réunion", + "se": "Réunion", + "pl": "Reunion", + "no": "Réunion", + "ja": "レユニオン", + "it": "Riunione", + "zh": "留尼汪", + "nl": "Réunion", + "de": "Réunion", + "fr": "La Réunion", + "es": "Reunión", + "en": "Réunion", + "pt_BR": "Reunião", + "sr-Cyrl": "Реинион", + "sr-Latn": "Reinion", + "zh_TW": "留尼旺", + "tr": "La Réunion", + "ro": "La Réunion", + "ar": "لا ريونيون", + "fa": "رئونیون", + "yue": "留尼汪" + }, + flag: "🇷🇪", + code: "RE", + dialCode: "262", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Saint Barthelemy", + nameTranslations: { + "sk": "Svätý Bartolomej", + "se": "Saint Barthélemy", + "pl": "Saint-Barthélemy", + "no": "Saint-Barthélemy", + "ja": "サン・バルテルミー", + "it": "Saint-Barthélemy", + "zh": "圣巴泰勒米", + "nl": "Saint-Barthélemy", + "de": "St. Barthélemy", + "fr": "Saint-Barthélemy", + "es": "San Bartolomé", + "en": "St. Barthélemy", + "pt_BR": "São Bartolomeu", + "sr-Cyrl": "Сент Бартелеми", + "sr-Latn": "Sent Bartelemi", + "zh_TW": "聖巴瑟米", + "tr": "Saint Barthélemy", + "ro": "Saint Barthélemy", + "ar": "سان بارتيلمي", + "fa": "سن بارتلمی", + "yue": "聖巴泰勒米" + }, + flag: "🇧🇱", + code: "BL", + dialCode: "590", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Saint Helena, Ascension and Tristan Da Cunha", + nameTranslations: { + "sk": "Svätá Helena", + "se": "Saint Helena", + "pl": "Wyspa Świętej Heleny", + "no": "St. Helena", + "ja": "セントヘレナ", + "it": "Sant'Elena", + "zh": "圣赫勒拿", + "nl": "Sint-Helena", + "de": "St. Helena", + "fr": "Sainte-Hélène", + "es": "Santa Elena", + "en": "St. Helena", + "pt_BR": "Santa Helena", + "sr-Cyrl": "Света Јелена, Асенсион и Тристан да Куња", + "sr-Latn": "Sveta Jelena, Asension i Tristan de Kunja", + "zh_TW": "聖凱倫拿島", + "tr": "Saint Helena", + "ro": "Sfânta Elena", + "ar": "سانت هيلانة وأسينشين وتريستان دا كونا", + "fa": "سنت هلن", + "yue": "圣赫勒拿、阿森松同特里斯坦·达库尼亚" + }, + flag: "🇸🇭", + code: "SH", + dialCode: "290", + minLength: 4, + maxLength: 4, + ), + Country( + name: "Saint Kitts and Nevis", + nameTranslations: { + "sk": "Svätý Krištof a Nevis", + "se": "Saint Kitts ja Nevis", + "pl": "Saint Kitts i Nevis", + "no": "Saint Kitts og Nevis", + "ja": "セントクリストファー・ネーヴィス", + "it": "Saint Kitts e Nevis", + "zh": "圣基茨和尼维斯", + "nl": "Saint Kitts en Nevis", + "de": "St. Kitts und Nevis", + "fr": "Saint-Christophe-et-Niévès", + "es": "San Cristóbal y Nieves", + "en": "St. Kitts & Nevis", + "pt_BR": "São Cristóvão e Nevis", + "sr-Cyrl": "Сент Китс и Невис", + "sr-Latn": "Sent Kits i Nevis", + "zh_TW": "聖克里斯多福及尼維斯", + "tr": "Saint Kitts ve Nevis", + "ro": "Sfântul Kitts și Nevis", + "ar": "سانت كيتس ونيفيس", + "fa": "سنت کیتس و نویس", + "yue": "圣基茨同尼维斯" + }, + flag: "🇰🇳", + code: "KN", + dialCode: "1869", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Saint Lucia", + nameTranslations: { + "sk": "Svätá Lucia", + "se": "Saint Lucia", + "pl": "Saint Lucia", + "no": "St. Lucia", + "ja": "セントルシア", + "it": "Saint Lucia", + "zh": "圣卢西亚", + "nl": "Saint Lucia", + "de": "St. Lucia", + "fr": "Sainte-Lucie", + "es": "Santa Lucía", + "en": "St. Lucia", + "pt_BR": "Santa Lúcia", + "sr-Cyrl": "Света Луција", + "sr-Latn": "Sveta Lucija", + "zh_TW": "聖露西亞", + "tr": "Saint Lucia", + "ro": "Sfânta Elena", + "ar": "سانت لوسيا", + "fa": "سنت لوسیا", + "yue": "聖盧西亞" + }, + flag: "🇱🇨", + code: "LC", + dialCode: "1758", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Saint Martin", + nameTranslations: { + "sk": "Svätý Martin (fr.)", + "se": "Frankriikka Saint Martin", + "pl": "Saint-Martin", + "no": "Saint-Martin", + "ja": "サン・マルタン", + "it": "Saint Martin", + "zh": "法属圣马丁", + "nl": "Saint-Martin", + "de": "St. Martin", + "fr": "Saint-Martin", + "es": "San Martín", + "en": "St. Martin", + "pt_BR": "São Martinho", + "sr-Cyrl": "Свети Мартин", + "sr-Latn": "Sveti Martin", + "zh_TW": "聖馬丁", + "tr": "Saint Martin", + "ro": "Sfântul Martin", + "ar": "تجمع سان مارتين", + "fa": "سن مارتن", + "yue": "聖馬丁(法國部分)" + }, + flag: "🇲🇫", + code: "MF", + dialCode: "590", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Saint Pierre and Miquelon", + nameTranslations: { + "sk": "Saint Pierre a Miquelon", + "se": "Saint Pierre ja Miquelon", + "pl": "Saint-Pierre i Miquelon", + "no": "Saint-Pierre-et-Miquelon", + "ja": "サンピエール島・ミクロン島", + "it": "Saint-Pierre e Miquelon", + "zh": "圣皮埃尔和密克隆群岛", + "nl": "Saint-Pierre en Miquelon", + "de": "St. Pierre und Miquelon", + "fr": "Saint-Pierre-et-Miquelon", + "es": "San Pedro y Miquelón", + "en": "St. Pierre & Miquelon", + "pt_BR": "São Pedro e Miquelon", + "sr-Cyrl": "Сен Пјер и Микелон", + "sr-Latn": "Sen Pjer i Mikelon", + "zh_TW": "聖皮埃與密克隆群島", + "tr": "Saint Pierre ve Miquelon", + "ro": "Saint Pierre și Miquelon", + "ar": "سان بيير وميكلون", + "fa": "سن-پیر و میکلون", + "yue": "聖皮埃尔同米克隆" + }, + flag: "🇵🇲", + code: "PM", + dialCode: "508", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Saint Vincent and the Grenadines", + nameTranslations: { + "sk": "Svätý Vincent a Grenadíny", + "se": "Saint Vincent ja Grenadine", + "pl": "Saint Vincent i Grenadyny", + "no": "St. Vincent og Grenadinene", + "ja": "セントビンセント及びグレナディーン諸島", + "it": "Saint Vincent e Grenadine", + "zh": "圣文森特和格林纳丁斯", + "nl": "Saint Vincent en de Grenadines", + "de": "St. Vincent und die Grenadinen", + "fr": "Saint-Vincent-et-les-Grenadines", + "es": "San Vicente y las Granadinas", + "en": "St. Vincent & Grenadines", + "pt_BR": "São Vicente e Granadinas", + "sr-Cyrl": "Свети Винсент и Гренадини", + "sr-Latn": "Sveti Vinsent i Grenadini", + "zh_TW": "聖文森及格瑞那丁", + "tr": "Saint Vincent ve Grenadinler", + "ro": "Sfântul Vincențiu și Grenadinele", + "ar": "سانت فينسنت والغرينادين", + "fa": "سنت وینسنت و گرنادین‌ها", + "yue": "聖文森特同格林纳丁斯" + }, + flag: "🇻🇨", + code: "VC", + dialCode: "1784", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Samoa", + nameTranslations: { + "sk": "Samoa", + "se": "Samoa", + "pl": "Samoa", + "no": "Samoa", + "ja": "サモア", + "it": "Samoa", + "zh": "萨摩亚", + "nl": "Samoa", + "de": "Samoa", + "fr": "Samoa", + "es": "Samoa", + "en": "Samoa", + "pt_BR": "Samoa", + "sr-Cyrl": "Самоа", + "sr-Latn": "Samoa", + "zh_TW": "薩摩亞", + "tr": "Samoa", + "ro": "Samoa", + "ar": "ساموا", + "fa": "ساموآ", + "yue": "薩摩亞" + }, + flag: "🇼🇸", + code: "WS", + dialCode: "685", + minLength: 7, + maxLength: 7, + ), + Country( + name: "San Marino", + nameTranslations: { + "sk": "San Maríno", + "se": "San Marino", + "pl": "San Marino", + "no": "San Marino", + "ja": "サンマリノ", + "it": "San Marino", + "zh": "圣马力诺", + "nl": "San Marino", + "de": "San Marino", + "fr": "Saint-Marin", + "es": "San Marino", + "en": "San Marino", + "pt_BR": "San Marino", + "sr-Cyrl": "Сан Марино", + "sr-Latn": "San Marino", + "zh_TW": "聖馬利諾", + "tr": "San Marino", + "ro": "San Marino", + "ar": "سان مارينو", + "fa": "سان مارینو", + "yue": "聖馬力諾" + }, + flag: "🇸🇲", + code: "SM", + dialCode: "378", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Sao Tome and Principe", + nameTranslations: { + "sk": "Svätý Tomáš a Princov ostrov", + "se": "São Tomé ja Príncipe", + "pl": "Wyspy Świętego Tomasza i Książęca", + "no": "São Tomé og Príncipe", + "ja": "サントメ・プリンシペ", + "it": "São Tomé e Príncipe", + "zh": "圣多美和普林西比", + "nl": "Sao Tomé en Principe", + "de": "São Tomé und Príncipe", + "fr": "Sao Tomé-et-Principe", + "es": "Santo Tomé y Príncipe", + "en": "São Tomé & Príncipe", + "pt_BR": "São Tomé e Príncipe", + "sr-Cyrl": "Сао Томе и Принсипе", + "sr-Latn": "Sao Tome i Prinsipe", + "zh_TW": "聖多美普林西比", + "tr": "São Tomé ve Príncipe", + "ro": "Sao Tome şi Principe", + "ar": "ساو تومي وبرينسيب", + "fa": "سائوتومه و پرنسیپ", + "yue": "聖多美和普林西比" + }, + flag: "🇸🇹", + code: "ST", + dialCode: "239", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Saudi Arabia", + nameTranslations: { + "sk": "Saudská Arábia", + "se": "Saudi-Arábia", + "pl": "Arabia Saudyjska", + "no": "Saudi-Arabia", + "ja": "サウジアラビア", + "it": "Arabia Saudita", + "zh": "沙特阿拉伯", + "nl": "Saoedi-Arabië", + "de": "Saudi-Arabien", + "fr": "Arabie saoudite", + "es": "Arabia Saudí", + "en": "Saudi Arabia", + "pt_BR": "Arábia Saudita", + "sr-Cyrl": "Саудијска Арабија", + "sr-Latn": "Saudijska Arabija", + "zh_TW": "沙烏地阿拉", + "tr": "Suudi Arabistan", + "ro": "Arabia Saudită", + "ar": "السعودية", + "fa": "عربستان سعودی", + "yue": "沙地阿拉伯" + }, + flag: "🇸🇦", + code: "SA", + dialCode: "966", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Senegal", + nameTranslations: { + "sk": "Senegal", + "se": "Senegal", + "pl": "Senegal", + "no": "Senegal", + "ja": "セネガル", + "it": "Senegal", + "zh": "塞内加尔", + "nl": "Senegal", + "de": "Senegal", + "fr": "Sénégal", + "es": "Senegal", + "en": "Senegal", + "pt_BR": "Senegal", + "sr-Cyrl": "Сенегал", + "sr-Latn": "Senegal", + "zh_TW": "塞內加爾", + "tr": "Senegal", + "ro": "Senegal", + "ar": "السنغال", + "fa": "سنگال", + "yue": "塞內加爾" + }, + flag: "🇸🇳", + code: "SN", + dialCode: "221", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Serbia", + nameTranslations: { + "sk": "Srbsko", + "se": "Serbia", + "pl": "Serbia", + "no": "Serbia", + "ja": "セルビア", + "it": "Serbia", + "zh": "塞尔维亚", + "nl": "Servië", + "de": "Serbien", + "fr": "Serbie", + "es": "Serbia", + "en": "Serbia", + "pt_BR": "Sérvia", + "sr-Cyrl": "Србија", + "sr-Latn": "Srbija", + "zh_TW": "塞爾維亞", + "tr": "Sırbistan", + "ro": "Serbia", + "ar": "صربيا", + "fa": "صربستان", + "yue": "塞爾維亞" + }, + flag: "🇷🇸", + code: "RS", + dialCode: "381", + minLength: 12, + maxLength: 12, + ), + Country( + name: "Seychelles", + nameTranslations: { + "sk": "Seychely", + "se": "Seychellsullot", + "pl": "Seszele", + "no": "Seychellene", + "ja": "セーシェル", + "it": "Seychelles", + "zh": "塞舌尔", + "nl": "Seychellen", + "de": "Seychellen", + "fr": "Seychelles", + "es": "Seychelles", + "en": "Seychelles", + "pt_BR": "Seychelles", + "sr-Cyrl": "Сејшели", + "sr-Latn": "Sejšeli", + "zh_TW": "塞席爾", + "tr": "Seyşeller", + "ro": "Seychelles", + "ar": "سيشل", + "fa": "سیشل", + "yue": "塞舌爾" + }, + flag: "🇸🇨", + code: "SC", + dialCode: "248", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Sierra Leone", + nameTranslations: { + "sk": "Sierra Leone", + "se": "Sierra Leone", + "pl": "Sierra Leone", + "no": "Sierra Leone", + "ja": "シエラレオネ", + "it": "Sierra Leone", + "zh": "塞拉利昂", + "nl": "Sierra Leone", + "de": "Sierra Leone", + "fr": "Sierra Leone", + "es": "Sierra Leona", + "en": "Sierra Leone", + "pt_BR": "Serra Leoa", + "sr-Cyrl": "Сијера Леоне", + "sr-Latn": "Sijera Leone", + "zh_TW": "獅子山", + "tr": "Sierra Leone", + "ro": "Sierra Leone", + "ar": "سيراليون", + "fa": "سیرالئون", + "yue": "塞拉利昂" + }, + flag: "🇸🇱", + code: "SL", + dialCode: "232", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Singapore", + nameTranslations: { + "sk": "Singapur", + "se": "Singapore", + "pl": "Singapur", + "no": "Singapore", + "ja": "シンガポール", + "it": "Singapore", + "zh": "新加坡", + "nl": "Singapore", + "de": "Singapur", + "fr": "Singapour", + "es": "Singapur", + "en": "Singapore", + "pt_BR": "Cingapura", + "sr-Cyrl": "Сингапур", + "sr-Latn": "Singapur", + "zh_TW": "新加坡", + "tr": "Singapur", + "ro": "Singapore", + "ar": "سنغافورة", + "fa": "سنگاپور", + "yue": "星架坡" + }, + flag: "🇸🇬", + code: "SG", + dialCode: "65", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Slovakia", + nameTranslations: { + "sk": "Slovensko", + "se": "Slovákia", + "pl": "Słowacja", + "no": "Slovakia", + "ja": "スロバキア", + "it": "Slovacchia", + "zh": "斯洛伐克", + "nl": "Slowakije", + "de": "Slowakei", + "fr": "Slovaquie", + "es": "Eslovaquia", + "en": "Slovakia", + "pt_BR": "Eslováquia", + "sr-Cyrl": "Словачка", + "sr-Latn": "Slovačka", + "zh_TW": "斯洛伐克", + "tr": "Slovakya", + "ro": "Slovacia", + "ar": "سلوفاكيا", + "fa": "اسلواکی", + "yue": "斯洛伐克" + }, + flag: "🇸🇰", + code: "SK", + dialCode: "421", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Slovenia", + nameTranslations: { + "sk": "Slovinsko", + "se": "Slovenia", + "pl": "Słowenia", + "no": "Slovenia", + "ja": "スロベニア", + "it": "Slovenia", + "zh": "斯洛文尼亚", + "nl": "Slovenië", + "de": "Slowenien", + "fr": "Slovénie", + "es": "Eslovenia", + "en": "Slovenia", + "pt_BR": "Eslovênia", + "sr-Cyrl": "Словеније", + "sr-Latn": "Slovenija", + "zh_TW": "斯洛維尼亞", + "tr": "Slovenya", + "ro": "Slovenia", + "ar": "سلوفينيا", + "fa": "اسلوونی", + "yue": "斯洛文尼亞" + }, + flag: "🇸🇮", + code: "SI", + dialCode: "386", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Solomon Islands", + nameTranslations: { + "sk": "Šalamúnove ostrovy", + "se": "Salomon-sullot", + "pl": "Wyspy Salomona", + "no": "Salomonøyene", + "ja": "ソロモン諸島", + "it": "Isole Salomone", + "zh": "所罗门群岛", + "nl": "Salomonseilanden", + "de": "Salomonen", + "fr": "Îles Salomon", + "es": "Islas Salomón", + "en": "Solomon Islands", + "pt_BR": "Ilhas Salomão", + "sr-Cyrl": "Соломонска Острва", + "sr-Latn": "Solomonska Ostrva", + "zh_TW": "所羅門群島", + "tr": "Solomon Adaları", + "ro": "Insulele Solomon", + "ar": "جزر سليمان", + "fa": "جزایر سلیمان", + "yue": "所羅門群島" + }, + flag: "🇸🇧", + code: "SB", + dialCode: "677", + minLength: 5, + maxLength: 5, + ), + Country( + name: "Somalia", + nameTranslations: { + "sk": "Somálsko", + "se": "Somália", + "pl": "Somalia", + "no": "Somalia", + "ja": "ソマリア", + "it": "Somalia", + "zh": "索马里", + "nl": "Somalië", + "de": "Somalia", + "fr": "Somalie", + "es": "Somalia", + "en": "Somalia", + "pt_BR": "Somália", + "sr-Cyrl": "Сомалија", + "sr-Latn": "Somalija", + "zh_TW": "索馬利亞", + "tr": "Somali", + "ro": "Somalia", + "ar": "الصومال", + "fa": "سومالی", + "yue": "索馬里" + }, + flag: "🇸🇴", + code: "SO", + dialCode: "252", + minLength: 8, + maxLength: 8, + ), + Country( + name: "South Africa", + nameTranslations: { + "sk": "Južná Afrika", + "se": "Mátta-Afrihká", + "pl": "Republika Południowej Afryki", + "no": "Sør-Afrika", + "ja": "南アフリカ", + "it": "Sudafrica", + "zh": "南非", + "nl": "Zuid-Afrika", + "de": "Südafrika", + "fr": "Afrique du Sud", + "es": "Sudáfrica", + "en": "South Africa", + "pt_BR": "África do Sul", + "sr-Cyrl": "Јужноафричка Република", + "sr-Latn": "Južnoafrička Republika", + "zh_TW": "南非", + "tr": "Güney Afrika", + "ro": "Africa de Sud", + "ar": "جنوب أفريقيا", + "fa": "آفریقای جنوبی", + "yue": "南非" + }, + flag: "🇿🇦", + code: "ZA", + dialCode: "27", + minLength: 9, + maxLength: 9, + ), + Country( + name: "South Sudan", + nameTranslations: { + "sk": "Južný Sudán", + "se": "Máttasudan", + "pl": "Sudan Południowy", + "no": "Sør-Sudan", + "ja": "南スーダン", + "it": "Sud Sudan", + "zh": "南苏丹", + "nl": "Zuid-Soedan", + "de": "Südsudan", + "fr": "Soudan du Sud", + "es": "Sudán del Sur", + "en": "South Sudan", + "pt_BR": "Sudão do Sul", + "sr-Cyrl": "Јужни Судан", + "sr-Latn": "Južni Sudan", + "zh_TW": "南蘇丹", + "tr": "Güney Sudan", + "ro": "Sudanul de Sud", + "ar": "جنوب السودان", + "fa": "سودان جنوبی", + "yue": "南蘇丹" + }, + flag: "🇸🇸", + code: "SS", + dialCode: "211", + minLength: 9, + maxLength: 9, + ), + Country( + name: "South Georgia and the South Sandwich Islands", + nameTranslations: { + "sk": "Južná Georgia a Južné Sandwichove ostrovy", + "se": "Lulli Georgia ja Lulli Sandwich-sullot", + "pl": "Georgia Południowa i Sandwich Południowy", + "no": "Sør-Georgia og Sør-Sandwichøyene", + "ja": "サウスジョージア・サウスサンドウィッチ諸島", + "it": "Georgia del Sud e Sandwich australi", + "zh": "南乔治亚和南桑威奇群岛", + "nl": "Zuid-Georgia en Zuidelijke Sandwicheilanden", + "de": "Südgeorgien und die Südlichen Sandwichinseln", + "fr": "Géorgie du Sud et îles Sandwich du Sud", + "es": "Islas Georgia del Sur y Sandwich del Sur", + "en": "South Georgia & South Sandwich Islands", + "pt_BR": "Geórgia do Sul e Ilhas Sandwich do Sul", + "sr-Cyrl": "Јужна Џорџија и Јужна Сендвичка Острва", + "sr-Latn": "Južna Džordžija i Južna Sendvička Ostrva", + "zh_TW": "南喬治亞與南三明治群島 ", + "tr": "Güney Georgia ve Güney Sandwich Adaları", + "ro": "Georgia de Sud și Insulele Sandwich de Sud", + "ar": "جورجيا الجنوبية وجزر ساندويتش الجنوبية", + "fa": "جزایر جورجیای جنوبی و ساندویچ جنوبی", + "yue": "南喬治亞州同南桑威奇群島" + }, + flag: "🇬🇸", + code: "GS", + dialCode: "500", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Spain", + nameTranslations: { + "sk": "Španielsko", + "se": "Spánia", + "pl": "Hiszpania", + "no": "Spania", + "ja": "スペイン", + "it": "Spagna", + "zh": "西班牙", + "nl": "Spanje", + "de": "Spanien", + "fr": "Espagne", + "es": "España", + "en": "Spain", + "pt_BR": "Espanha", + "sr-Cyrl": "Шпанија", + "sr-Latn": "Španija", + "zh_TW": "西班牙", + "tr": "İspanya", + "ro": "Spania", + "ar": "إسبانيا", + "fa": "اسپانیا", + "yue": "西班牙" + }, + flag: "🇪🇸", + code: "ES", + dialCode: "34", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Sri Lanka", + nameTranslations: { + "sk": "Srí Lanka", + "se": "Sri Lanka", + "pl": "Sri Lanka", + "no": "Sri Lanka", + "ja": "スリランカ", + "it": "Sri Lanka", + "zh": "斯里兰卡", + "nl": "Sri Lanka", + "de": "Sri Lanka", + "fr": "Sri Lanka", + "es": "Sri Lanka", + "en": "Sri Lanka", + "pt_BR": "Sri Lanka", + "sr-Cyrl": "Шри Ланка", + "sr-Latn": "Šri Lanka", + "zh_TW": "斯里蘭卡", + "tr": "Sri Lanka", + "ro": "Sri Lanka", + "ar": "سريلانكا", + "fa": "سریلانکا", + "yue": "斯里蘭卡" + }, + flag: "🇱🇰", + code: "LK", + dialCode: "94", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Sudan", + nameTranslations: { + "sk": "Sudán", + "se": "Davvisudan", + "pl": "Sudan", + "no": "Sudan", + "ja": "スーダン", + "it": "Sudan", + "zh": "苏丹", + "nl": "Soedan", + "de": "Sudan", + "fr": "Soudan", + "es": "Sudán", + "en": "Sudan", + "pt_BR": "Sudão", + "sr-Cyrl": "Судан", + "sr-Latn": "Sudan", + "zh_TW": "蘇丹", + "tr": "Sudan", + "ro": "Sudan", + "ar": "السودان", + "fa": "سودان", + "yue": "蘇丹" + }, + flag: "🇸🇩", + code: "SD", + dialCode: "249", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Suriname", + nameTranslations: { + "sk": "Surinam", + "se": "Surinam", + "pl": "Surinam", + "no": "Surinam", + "ja": "スリナム", + "it": "Suriname", + "zh": "苏里南", + "nl": "Suriname", + "de": "Suriname", + "fr": "Suriname", + "es": "Surinam", + "en": "Suriname", + "pt_BR": "Suriname", + "sr-Cyrl": "Суринам", + "sr-Latn": "Surinam", + "zh_TW": "蘇利南", + "tr": "Surinam", + "ro": "Surinam", + "ar": "سورينام", + "fa": "سورینام", + "yue": "蘇里南" + }, + flag: "🇸🇷", + code: "SR", + dialCode: "597", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Svalbard and Jan Mayen", + nameTranslations: { + "sk": "Svalbard a Jan Mayen", + "se": "Svalbárda ja Jan Mayen", + "pl": "Svalbard i Jan Mayen", + "no": "Svalbard og Jan Mayen", + "ja": "スバールバル諸島・ヤンマイエン島", + "it": "Svalbard e Jan Mayen", + "zh": "斯瓦尔巴和扬马延", + "nl": "Spitsbergen en Jan Mayen", + "de": "Spitzbergen und Jan Mayen", + "fr": "Svalbard et Jan Mayen", + "es": "Svalbard y Jan Mayen", + "en": "Svalbard & Jan Mayen", + "pt_BR": "Svalbard e Jan Mayen", + "sr-Cyrl": "Свалбард", + "sr-Latn": "Svalbard", + "zh_TW": "斯瓦巴及尖棉", + "tr": "Svalbard ve Jan Mayen", + "ro": "Svalbard și Jan Mayen", + "ar": "سفالبارد ويان ماين", + "fa": "سوالبارد و یان ماین", + "yue": "斯瓦尔巴德同扬·马延" + }, + flag: "🇸🇯", + code: "SJ", + dialCode: "47", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Eswatini", + nameTranslations: { + "sk": "Eswatini", + "se": "Svazieana", + "pl": "Eswatini", + "no": "Eswatini", + "ja": "エスワティニ", + "it": "Swaziland", + "zh": "斯威士兰", + "nl": "eSwatini", + "de": "Eswatini", + "fr": "Eswatini", + "es": "Esuatini", + "en": "Eswatini", + "pt_BR": "Eswatini", + "sr-Cyrl": "Свазиланд", + "sr-Latn": "Svaziland", + "zh_TW": "史瓦帝尼", + "tr": "Esvatini", + "ro": "Eswatini", + "ar": "إسواتيني", + "fa": "اسواتینی", + "yue": "斯威士蘭" + }, + flag: "🇸🇿", + code: "SZ", + dialCode: "268", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Sweden", + nameTranslations: { + "sk": "Švédsko", + "se": "Ruoŧŧa", + "pl": "Szwecja", + "no": "Sverige", + "ja": "スウェーデン", + "it": "Svezia", + "zh": "瑞典", + "nl": "Zweden", + "de": "Schweden", + "fr": "Suède", + "es": "Suecia", + "en": "Sweden", + "pt_BR": "Suécia", + "sr-Cyrl": "Шведска", + "sr-Latn": "Švedska", + "zh_TW": "瑞典", + "tr": "İsveç", + "ro": "Suedia", + "ar": "السويد", + "fa": "سوئد", + "yue": "瑞典" + }, + flag: "🇸🇪", + code: "SE", + dialCode: "46", + minLength: 7, + maxLength: 13, + ), + Country( + name: "Switzerland", + nameTranslations: { + "sk": "Švajčiarsko", + "se": "Šveica", + "pl": "Szwajcaria", + "no": "Sveits", + "ja": "スイス", + "it": "Svizzera", + "zh": "瑞士", + "nl": "Zwitserland", + "de": "Schweiz", + "fr": "Suisse", + "es": "Suiza", + "en": "Switzerland", + "pt_BR": "Suíça", + "sr-Cyrl": "Швајцарска", + "sr-Latn": "Švajcarska", + "zh_TW": "瑞士", + "tr": "İsviçre", + "ro": "Elveţia", + "ar": "سويسرا", + "fa": "سوئیس", + "yue": "瑞士" + }, + flag: "🇨🇭", + code: "CH", + dialCode: "41", + minLength: 9, + maxLength: 12, + ), + Country( + name: "Syrian Arab Republic", + nameTranslations: { + "sk": "Sýria", + "se": "Syria", + "pl": "Syria", + "no": "Syria", + "ja": "シリア", + "it": "Siria", + "zh": "叙利亚", + "nl": "Syrië", + "de": "Syrien", + "fr": "Syrie", + "es": "Siria", + "en": "Syria", + "pt_BR": "Síria", + "sr-Cyrl": "Сирија", + "sr-Latn": "Sirija", + "zh_TW": "敘利亞", + "tr": "Suriye", + "ro": "Siria", + "ar": "سوريا", + "fa": "سوریه", + "yue": "阿拉伯敘利亞共和國" + }, + flag: "🇸🇾", + code: "SY", + dialCode: "963", + minLength: 9, + maxLength: 10, + ), + Country( + name: "Taiwan", + nameTranslations: { + "sk": "Taiwan", + "se": "Taiwan", + "pl": "Tajwan", + "no": "Taiwan", + "ja": "台湾", + "it": "Taiwan", + "zh": "台湾", + "nl": "Taiwan", + "de": "Taiwan", + "fr": "Taïwan", + "es": "Taiwán", + "en": "Taiwan", + "pt_BR": "Taiwan", + "sr-Cyrl": "Тајван", + "sr-Latn": "Tajvan", + "zh_TW": "台灣", + "tr": "Tayvan", + "ro": "Taiwan", + "ar": "تايوان", + "fa": "تایوان", + "yue": "台灣" + }, + flag: "🇹🇼", + code: "TW", + dialCode: "886", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Tajikistan", + nameTranslations: { + "sk": "Tadžikistan", + "se": "Tažikistan", + "pl": "Tadżykistan", + "no": "Tadsjikistan", + "ja": "タジキスタン", + "it": "Tagikistan", + "zh": "塔吉克斯坦", + "nl": "Tadzjikistan", + "de": "Tadschikistan", + "fr": "Tadjikistan", + "es": "Tayikistán", + "en": "Tajikistan", + "pt_BR": "Tajiquistão", + "sr-Cyrl": "Таџикистан", + "sr-Latn": "Tadžikistan", + "zh_TW": "塔吉克", + "tr": "Tacikistan", + "ro": "Tadiquistão", + "ar": "طاجيكستان", + "fa": "تاجیکستان", + "yue": "塔吉克斯坦" + }, + flag: "🇹🇯", + code: "TJ", + dialCode: "992", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Tanzania, United Republic of Tanzania", + nameTranslations: { + "sk": "Tanzánia", + "se": "Tanzánia", + "pl": "Tanzania", + "no": "Tanzania", + "ja": "タンザニア", + "it": "Tanzania", + "zh": "坦桑尼亚", + "nl": "Tanzania", + "de": "Tansania", + "fr": "Tanzanie", + "es": "Tanzania", + "en": "Tanzania", + "pt_BR": "Tanzânia", + "sr-Cyrl": "Танзанија", + "sr-Latn": "Tanzanija", + "zh_TW": "坦尚尼亞", + "tr": "Tanzanya", + "ro": "Tanzania", + "ar": "تنزانيا", + "fa": "تانزانیا", + "yue": "坦桑尼亞,聯合共和國" + }, + flag: "🇹🇿", + code: "TZ", + dialCode: "255", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Thailand", + nameTranslations: { + "sk": "Thajsko", + "se": "Thaieana", + "pl": "Tajlandia", + "no": "Thailand", + "ja": "タイ", + "it": "Thailandia", + "zh": "泰国", + "nl": "Thailand", + "de": "Thailand", + "fr": "Thaïlande", + "es": "Tailandia", + "en": "Thailand", + "pt_BR": "Tailândia", + "sr-Cyrl": "Тајланд", + "sr-Latn": "Tajland", + "zh_TW": "泰國", + "tr": "Tayland", + "ro": "Tailanda", + "ar": "تايلاند", + "fa": "تایلند", + "yue": "泰國" + }, + flag: "🇹🇭", + code: "TH", + dialCode: "66", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Timor-Leste", + nameTranslations: { + "sk": "Východný Timor", + "se": "Nuorta-Timor", + "pl": "Timor Wschodni", + "no": "Øst-Timor", + "ja": "東ティモール", + "it": "Timor Est", + "zh": "东帝汶", + "nl": "Oost-Timor", + "de": "Timor-Leste", + "fr": "Timor oriental", + "es": "Timor-Leste", + "en": "Timor-Leste", + "pt_BR": "Timor-Leste", + "sr-Cyrl": "Источни Тимор", + "sr-Latn": "Istočni Timor", + "zh_TW": "東帝汶", + "tr": "Doğu Timor", + "ro": "Timorul de Est", + "ar": "تيمور الشرقية", + "fa": "تیمور شرقی", + "yue": "東帝汶" + }, + flag: "🇹🇱", + code: "TL", + dialCode: "670", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Togo", + nameTranslations: { + "sk": "Togo", + "se": "Togo", + "pl": "Togo", + "no": "Togo", + "ja": "トーゴ", + "it": "Togo", + "zh": "多哥", + "nl": "Togo", + "de": "Togo", + "fr": "Togo", + "es": "Togo", + "en": "Togo", + "pt_BR": "Ir", + "sr-Cyrl": "Того", + "sr-Latn": "Togo", + "zh_TW": "多哥", + "tr": "Togo", + "ro": "Togo", + "ar": "توغو", + "fa": "توگو", + "yue": "多哥" + }, + flag: "🇹🇬", + code: "TG", + dialCode: "228", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Tokelau", + nameTranslations: { + "sk": "Tokelau", + "se": "Tokelau", + "pl": "Tokelau", + "no": "Tokelau", + "ja": "トケラウ", + "it": "Tokelau", + "zh": "托克劳", + "nl": "Tokelau", + "de": "Tokelau", + "fr": "Tokelau", + "es": "Tokelau", + "en": "Tokelau", + "pt_BR": "Tokelau", + "sr-Cyrl": "Токелау", + "sr-Latn": "Tokelau", + "zh_TW": "托克勞", + "tr": "Tokelau", + "ro": "Tokelau", + "ar": "توكيلاو", + "fa": "توکلائو", + "yue": "托克劳" + }, + flag: "🇹🇰", + code: "TK", + dialCode: "690", + minLength: 4, + maxLength: 4, + ), + Country( + name: "Tonga", + nameTranslations: { + "sk": "Tonga", + "se": "Tonga", + "pl": "Tonga", + "no": "Tonga", + "ja": "トンガ", + "it": "Tonga", + "zh": "汤加", + "nl": "Tonga", + "de": "Tonga", + "fr": "Tonga", + "es": "Tonga", + "en": "Tonga", + "pt_BR": "Tonga", + "sr-Cyrl": "Тонга", + "sr-Latn": "Tonga", + "zh_TW": "東加", + "tr": "Tonga", + "ro": "Tonga", + "ar": "تونغا", + "fa": "تونگا", + "yue": "湯加" + }, + flag: "🇹🇴", + code: "TO", + dialCode: "676", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Trinidad and Tobago", + nameTranslations: { + "sk": "Trinidad a Tobago", + "se": "Trinidad ja Tobago", + "pl": "Trynidad i Tobago", + "no": "Trinidad og Tobago", + "ja": "トリニダード・トバゴ", + "it": "Trinidad e Tobago", + "zh": "特立尼达和多巴哥", + "nl": "Trinidad en Tobago", + "de": "Trinidad und Tobago", + "fr": "Trinité-et-Tobago", + "es": "Trinidad y Tobago", + "en": "Trinidad & Tobago", + "pt_BR": "Trinidad e Tobago", + "sr-Cyrl": "Тринидад и Тобаго", + "sr-Latn": "Trinidad i Tobago", + "zh_TW": "千里達及托巴哥", + "tr": "Trinidad ve Tobago", + "ro": "Trinidad şi Tobago", + "ar": "ترينيداد وتوباغو", + "fa": "ترینیداد و توباگو", + "yue": "特立尼達和多巴哥" + }, + flag: "🇹🇹", + code: "TT", + dialCode: "1868", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Tunisia", + nameTranslations: { + "sk": "Tunisko", + "se": "Tunisia", + "pl": "Tunezja", + "no": "Tunisia", + "ja": "チュニジア", + "it": "Tunisia", + "zh": "突尼斯", + "nl": "Tunesië", + "de": "Tunesien", + "fr": "Tunisie", + "es": "Túnez", + "en": "Tunisia", + "pt_BR": "Tunísia", + "sr-Cyrl": "Тунис", + "sr-Latn": "Tunis", + "zh_TW": "突尼西亞", + "tr": "Tunus", + "ro": "Tunisia", + "ar": "تونس", + "fa": "تونس", + "yue": "突尼斯" + }, + flag: "🇹🇳", + code: "TN", + dialCode: "216", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Turkey", + nameTranslations: { + "sk": "Turecko", + "se": "Durka", + "pl": "Turcja", + "no": "Tyrkia", + "ja": "トルコ", + "it": "Turchia", + "zh": "土耳其", + "nl": "Turkije", + "de": "Türkei", + "fr": "Turquie", + "es": "Turquía", + "en": "Turkey", + "pt_BR": "Peru", + "sr-Cyrl": "Турска", + "sr-Latn": "Turska", + "zh_TW": "土耳其", + "tr": "Türkiye", + "ro": "Turcia", + "ar": "تركيا", + "fa": "ترکیه", + "yue": "土耳其" + }, + flag: "🇹🇷", + code: "TR", + dialCode: "90", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Turkmenistan", + nameTranslations: { + "sk": "Turkménsko", + "se": "Turkmenistan", + "pl": "Turkmenistan", + "no": "Turkmenistan", + "ja": "トルクメニスタン", + "it": "Turkmenistan", + "zh": "土库曼斯坦", + "nl": "Turkmenistan", + "de": "Turkmenistan", + "fr": "Turkménistan", + "es": "Turkmenistán", + "en": "Turkmenistan", + "pt_BR": "Turcomenistão", + "sr-Cyrl": "Туркменистан", + "sr-Latn": "Turkmenistan", + "zh_TW": "土庫曼", + "tr": "Türkmenistan", + "ro": "Turkmenistan", + "ar": "تركمانستان", + "fa": "ترکمنستان", + "yue": "土庫曼斯坦" + }, + flag: "🇹🇲", + code: "TM", + dialCode: "993", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Turks and Caicos Islands", + nameTranslations: { + "sk": "Turks a Caicos", + "se": "Turks ja Caicos-sullot", + "pl": "Turks i Caicos", + "no": "Turks- og Caicosøyene", + "ja": "タークス・カイコス諸島", + "it": "Isole Turks e Caicos", + "zh": "特克斯和凯科斯群岛", + "nl": "Turks- en Caicoseilanden", + "de": "Turks- und Caicosinseln", + "fr": "Îles Turques-et-Caïques", + "es": "Islas Turcas y Caicos", + "en": "Turks & Caicos Islands", + "pt_BR": "Ilhas Turks e Caicos", + "sr-Cyrl": "Туркс и Кајкос", + "sr-Latn": "Turks i Kajkos", + "zh_TW": "土克斯及開科斯群島", + "tr": "Turks ve Caicos Adaları", + "ro": "Insulele Turks și Caicos", + "ar": "جزر توركس وكايكوس", + "fa": "جزایر تورکس و کایکوس", + "yue": "特克斯同凯科斯群岛" + }, + flag: "🇹🇨", + code: "TC", + dialCode: "1649", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Tuvalu", + nameTranslations: { + "sk": "Tuvalu", + "se": "Tuvalu", + "pl": "Tuvalu", + "no": "Tuvalu", + "ja": "ツバル", + "it": "Tuvalu", + "zh": "图瓦卢", + "nl": "Tuvalu", + "de": "Tuvalu", + "fr": "Tuvalu", + "es": "Tuvalu", + "en": "Tuvalu", + "pt_BR": "Tuvalu", + "sr-Cyrl": "Тувалу", + "sr-Latn": "Tuvalu", + "zh_TW": "圖瓦盧", + "tr": "Tuvalu", + "ro": "Tuvalu", + "ar": "توفالو", + "fa": "تووالو", + "yue": "圖瓦盧" + }, + flag: "🇹🇻", + code: "TV", + dialCode: "688", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Uganda", + nameTranslations: { + "sk": "Uganda", + "se": "Uganda", + "pl": "Uganda", + "no": "Uganda", + "ja": "ウガンダ", + "it": "Uganda", + "zh": "乌干达", + "nl": "Oeganda", + "de": "Uganda", + "fr": "Ouganda", + "es": "Uganda", + "en": "Uganda", + "pt_BR": "Uganda", + "sr-Cyrl": "Уганда", + "sr-Latn": "Uganda", + "zh_TW": "烏干達", + "tr": "Uganda", + "ro": "Uganda", + "ar": "أوغندا", + "fa": "اوگاندا", + "yue": "烏干達" + }, + flag: "🇺🇬", + code: "UG", + dialCode: "256", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Ukraine", + nameTranslations: { + "sk": "Ukrajina", + "se": "Ukraina", + "pl": "Ukraina", + "no": "Ukraina", + "ja": "ウクライナ", + "it": "Ucraina", + "zh": "乌克兰", + "nl": "Oekraïne", + "de": "Ukraine", + "fr": "Ukraine", + "es": "Ucrania", + "en": "Ukraine", + "pt_BR": "Ucrânia", + "sr-Cyrl": "Украјина", + "sr-Latn": "Ukrajina", + "zh_TW": "烏克蘭", + "tr": "Ukrayna", + "ro": "Ucraína", + "ar": "أوكرانيا", + "fa": "اوکراین", + "yue": "烏克蘭" + }, + flag: "🇺🇦", + code: "UA", + dialCode: "380", + minLength: 9, + maxLength: 9, + ), + Country( + name: "United Arab Emirates", + nameTranslations: { + "sk": "Spojené arabské emiráty", + "se": "Ovttastuvvan Arábaemiráhtat", + "pl": "Zjednoczone Emiraty Arabskie", + "no": "De forente arabiske emirater", + "ja": "アラブ首長国連邦", + "it": "Emirati Arabi Uniti", + "zh": "阿拉伯联合酋长国", + "nl": "Verenigde Arabische Emiraten", + "de": "Vereinigte Arabische Emirate", + "fr": "Émirats arabes unis", + "es": "Emiratos Árabes Unidos", + "en": "United Arab Emirates", + "pt_BR": "Emirados Árabes Unidos", + "sr-Cyrl": "Уједињени Арапски Емирати", + "sr-Latn": "Ujedinjeni Arapski Emirati", + "zh_TW": "阿拉伯聯合大公國", + "tr": "Birleşik Arap Emirlikleri", + "ro": "Emiratele Arabe Unite", + "ar": "الإمارات العربية المتحدة", + "fa": "امارات متحده عربی", + "yue": "阿拉伯聯合酋長國" + }, + flag: "🇦🇪", + code: "AE", + dialCode: "971", + minLength: 9, + maxLength: 9, + ), + Country( + name: "United Kingdom", + nameTranslations: { + "sk": "Spojené kráľovstvo", + "se": "Stuorra-Británnia", + "pl": "Wielka Brytania", + "no": "Storbritannia", + "ja": "イギリス", + "it": "Regno Unito", + "zh": "英国", + "nl": "Verenigd Koninkrijk", + "de": "Vereinigtes Königreich", + "fr": "Royaume-Uni", + "es": "Reino Unido", + "en": "United Kingdom", + "pt_BR": "Reino Unido", + "sr-Cyrl": "Уједињено Краљевство", + "sr-Latn": "Ujedinjeno Kraljevstvo", + "zh_TW": "英國", + "tr": "Büyük Britanya ve Kuzey İrlanda Birleşik Krallığ", + "ro": "Regatul Unit al Marii Britanii și Irlandei de Nord", + "ar": "المملكة المتحدة", + "fa": "بریتانیا", + "yue": "大不列顛及北愛爾蘭聯合王國" + }, + flag: "🇬🇧", + code: "GB", + dialCode: "44", + minLength: 10, + maxLength: 10, + ), + Country( + name: "United States", + nameTranslations: { + "sk": "Spojené štáty", + "se": "Amerihká ovttastuvvan stáhtat", + "pl": "Stany Zjednoczone", + "no": "USA", + "ja": "アメリカ合衆国", + "it": "Stati Uniti", + "zh": "美国", + "nl": "Verenigde Staten", + "de": "Vereinigte Staaten", + "fr": "États-Unis", + "es": "Estados Unidos", + "en": "United States", + "pt_BR": "Estados Unidos", + "sr-Cyrl": "Сједињене Америчке Државе", + "sr-Latn": "Sjedinjene Američke Države", + "zh_TW": "美國", + "tr": "Amerika Birleşik Devletleri", + "ro": "Statele Unite ale Americii", + "ar": "الولايات المتحدة", + "fa": "ایالات متحده آمریکا", + "yue": "美利堅郃眾囯" + }, + flag: "🇺🇸", + code: "US", + dialCode: "1", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Uruguay", + nameTranslations: { + "sk": "Uruguaj", + "se": "Uruguay", + "pl": "Urugwaj", + "no": "Uruguay", + "ja": "ウルグアイ", + "it": "Uruguay", + "zh": "乌拉圭", + "nl": "Uruguay", + "de": "Uruguay", + "fr": "Uruguay", + "es": "Uruguay", + "en": "Uruguay", + "pt_BR": "Uruguai", + "sr-Cyrl": "Уругвај", + "sr-Latn": "Urugvaj", + "zh_TW": "烏拉圭", + "tr": "Uruguay", + "ro": "Uruguay", + "ar": "الأوروغواي", + "fa": "اروگوئه", + "yue": "烏拉圭" + }, + flag: "🇺🇾", + code: "UY", + dialCode: "598", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Uzbekistan", + nameTranslations: { + "sk": "Uzbekistan", + "se": "Usbekistan", + "pl": "Uzbekistan", + "no": "Usbekistan", + "ja": "ウズベキスタン", + "it": "Uzbekistan", + "zh": "乌兹别克斯坦", + "nl": "Oezbekistan", + "de": "Usbekistan", + "fr": "Ouzbékistan", + "es": "Uzbekistán", + "en": "Uzbekistan", + "pt_BR": "Uzbequistão", + "sr-Cyrl": "Узбекистан", + "sr-Latn": "Uzbekistan", + "zh_TW": "烏玆別克", + "tr": "Özbekistan", + "ro": "Uzbekistan", + "ar": "أوزبكستان", + "fa": "ازبکستان", + "yue": "月即別" + }, + flag: "🇺🇿", + code: "UZ", + dialCode: "998", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Vanuatu", + nameTranslations: { + "sk": "Vanuatu", + "se": "Vanuatu", + "pl": "Vanuatu", + "no": "Vanuatu", + "ja": "バヌアツ", + "it": "Vanuatu", + "zh": "瓦努阿图", + "nl": "Vanuatu", + "de": "Vanuatu", + "fr": "Vanuatu", + "es": "Vanuatu", + "en": "Vanuatu", + "pt_BR": "Vanuatu", + "sr-Cyrl": "Вануату", + "sr-Latn": "Vanuatu", + "zh_TW": "瓦努阿圖", + "tr": "Vanuatu", + "ro": "Vanuatu", + "ar": "فانواتو", + "fa": "وانواتو", + "yue": "瓦努阿圖" + }, + flag: "🇻🇺", + code: "VU", + dialCode: "678", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Venezuela, Bolivarian Republic of Venezuela", + nameTranslations: { + "sk": "Venezuela", + "se": "Venezuela", + "pl": "Wenezuela", + "no": "Venezuela", + "ja": "ベネズエラ", + "it": "Venezuela", + "zh": "委内瑞拉", + "nl": "Venezuela", + "de": "Venezuela", + "fr": "Venezuela", + "es": "Venezuela", + "en": "Venezuela", + "pt_BR": "Venezuela", + "sr-Cyrl": "Венецуела", + "sr-Latn": "Venecuela", + "zh_TW": "委內瑞拉", + "tr": "Venezuela", + "ro": "Venezuela", + "ar": "فنزويلا", + "fa": "ونزوئلا", + "yue": "委內瑞拉(玻利瓦爾共和國)" + }, + flag: "🇻🇪", + code: "VE", + dialCode: "58", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Vietnam", + nameTranslations: { + "sk": "Vietnam", + "se": "Vietnam", + "pl": "Wietnam", + "no": "Vietnam", + "ja": "ベトナム", + "it": "Vietnam", + "zh": "越南", + "nl": "Vietnam", + "de": "Vietnam", + "fr": "Vietnam", + "es": "Vietnam", + "en": "Vietnam", + "pt_BR": "Vietnã", + "sr-Cyrl": "Вијетнам", + "sr-Latn": "Vijetnam", + "zh_TW": "越南", + "tr": "Vietnam", + "ro": "Vietnam", + "ar": "فيتنام", + "fa": "ویتنام", + "yue": "越南" + }, + flag: "🇻🇳", + code: "VN", + dialCode: "84", + minLength: 11, + maxLength: 11, + ), + Country( + name: "Virgin Islands, British", + nameTranslations: { + "sk": "Britské Panenské ostrovy", + "se": "Brittania Virgin-sullot", + "pl": "Brytyjskie Wyspy Dziewicze", + "no": "De britiske jomfruøyene", + "ja": "英領ヴァージン諸島", + "it": "Isole Vergini Britanniche", + "zh": "英属维尔京群岛", + "nl": "Britse Maagdeneilanden", + "de": "Britische Jungferninseln", + "fr": "Îles Vierges britanniques", + "es": "Islas Vírgenes Británicas", + "en": "British Virgin Islands", + "pt_BR": "Ilhas Virgens Britânicas", + "sr-Cyrl": "Британска Девичанска Острва", + "sr-Latn": "Britanska Devičanska Ostrva", + "zh_TW": "英屬維京群島", + "tr": "Britanya Virjin Adaları", + "ro": "Insulele Virgine Britanice", + "ar": "جزر العذراء البريطانية", + "fa": "جزایر ویرجین بریتانیا", + "yue": "維爾京群島(英國)" + }, + flag: "🇻🇬", + code: "VG", + dialCode: "1284", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Virgin Islands, U.S.", + nameTranslations: { + "sk": "Americké Panenské ostrovy", + "se": "AOS Virgin-sullot", + "pl": "Wyspy Dziewicze Stanów Zjednoczonych", + "no": "De amerikanske jomfruøyene", + "ja": "米領ヴァージン諸島", + "it": "Isole Vergini Americane", + "zh": "美属维尔京群岛", + "nl": "Amerikaanse Maagdeneilanden", + "de": "Amerikanische Jungferninseln", + "fr": "Îles Vierges des États-Unis", + "es": "Islas Vírgenes de EE. UU.", + "en": "U.S. Virgin Islands", + "pt_BR": "Ilhas Virgens Americanas", + "sr-Cyrl": "Амепичка Девичанска Острва", + "sr-Latn": "Američka Devičanska Ostrva", + "zh_TW": "美屬維京群島", + "tr": "Amerika Birleşik Devletleri Virjin Adaları", + "ro": "Insulele Virgine Americane", + "ar": "جزر العذراء الأمريكية", + "fa": "جزایر ویرجین ایالات متحده آمریکا", + "yue": "維爾京群島(美國)" + }, + flag: "🇻🇮", + code: "VI", + dialCode: "1340", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Wallis and Futuna", + nameTranslations: { + "sk": "Wallis a Futuna", + "se": "Wallis ja Futuna", + "pl": "Wallis i Futuna", + "no": "Wallis og Futuna", + "ja": "ウォリス・フツナ", + "it": "Wallis e Futuna", + "zh": "瓦利斯和富图纳", + "nl": "Wallis en Futuna", + "de": "Wallis und Futuna", + "fr": "Wallis-et-Futuna", + "es": "Wallis y Futuna", + "en": "Wallis & Futuna", + "pt_BR": "Wallis e Futuna", + "sr-Cyrl": "Валис и Футуна", + "sr-Latn": "Valis i Futuna", + "zh_TW": "瓦利斯和富圖那", + "tr": "Wallis ve Futuna", + "ro": "Wallis și Futuna", + "ar": "والس وفوتونا", + "fa": "والیس و فوتونا", + "yue": "瓦利斯同富图纳" + }, + flag: "🇼🇫", + code: "WF", + dialCode: "681", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Yemen", + nameTranslations: { + "sk": "Jemen", + "se": "Jemen", + "pl": "Jemen", + "no": "Jemen", + "ja": "イエメン", + "it": "Yemen", + "zh": "也门", + "nl": "Jemen", + "de": "Jemen", + "fr": "Yémen", + "es": "Yemen", + "en": "Yemen", + "pt_BR": "Iémen", + "sr-Cyrl": "Јемен", + "sr-Latn": "Jemen", + "zh_TW": "葉門", + "tr": "Yemen", + "ro": "Yemen", + "ar": "اليمن", + "fa": "یمن", + "yue": "也門" + }, + flag: "🇾🇪", + code: "YE", + dialCode: "967", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Zambia", + nameTranslations: { + "sk": "Zambia", + "se": "Zambia", + "pl": "Zambia", + "no": "Zambia", + "ja": "ザンビア", + "it": "Zambia", + "zh": "赞比亚", + "nl": "Zambia", + "de": "Sambia", + "fr": "Zambie", + "es": "Zambia", + "en": "Zambia", + "pt_BR": "Zâmbia", + "sr-Cyrl": "Замбија", + "sr-Latn": "Zambija", + "zh_TW": "贊比亞", + "tr": "Zambiya", + "ro": "Zambia", + "ar": "زامبيا", + "fa": "زامبیا", + "yue": "贊比亞" + }, + flag: "🇿🇲", + code: "ZM", + dialCode: "260", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Zimbabwe", + nameTranslations: { + "sk": "Zimbabwe", + "se": "Zimbabwe", + "pl": "Zimbabwe", + "no": "Zimbabwe", + "ja": "ジンバブエ", + "it": "Zimbabwe", + "zh": "津巴布韦", + "nl": "Zimbabwe", + "de": "Simbabwe", + "fr": "Zimbabwe", + "es": "Zimbabue", + "en": "Zimbabwe", + "pt_BR": "Zimbábue", + "sr-Cyrl": "Зимбабве", + "sr-Latn": "Zimbabve", + "zh_TW": "辛巴威", + "tr": "Zimbabve", + "ro": "Zimbabwe", + "ar": "زيمبابوي", + "fa": "زیمبابوه", + "yue": "津巴布韋" + }, + flag: "🇿🇼", + code: "ZW", + dialCode: "263", + minLength: 9, + maxLength: 9) +]; + +class Country { + final String name; + final Map nameTranslations; + final String flag; + final String code; + final String dialCode; + final String regionCode; + final int minLength; + final int maxLength; + + const Country({ + required this.name, + required this.flag, + required this.code, + required this.dialCode, + required this.nameTranslations, + required this.minLength, + required this.maxLength, + this.regionCode = "", + }); + + String get fullCountryCode { + return dialCode + regionCode; + } + + String get displayCC { + if (regionCode != "") { + return "$dialCode $regionCode"; + } + return dialCode; + } + + String localizedName(String languageCode) { + return nameTranslations[languageCode] ?? name; + } +} + + +================================================== +FILE PATH: ./lib/controller/local/phone_intel/phone_number.dart +================================================== + +import 'countries.dart'; + +class NumberTooLongException implements Exception {} + +class NumberTooShortException implements Exception {} + +class InvalidCharactersException implements Exception {} + +class PhoneNumber { + String countryISOCode; + String countryCode; + String number; + + PhoneNumber({ + required this.countryISOCode, + required this.countryCode, + required this.number, + }); + + factory PhoneNumber.fromCompleteNumber({required String completeNumber}) { + if (completeNumber == "") { + return PhoneNumber(countryISOCode: "", countryCode: "", number: ""); + } + + try { + Country country = getCountry(completeNumber); + String number; + if (completeNumber.startsWith('+')) { + number = completeNumber.substring(1 + country.dialCode.length + country.regionCode.length); + } else { + number = completeNumber.substring(country.dialCode.length + country.regionCode.length); + } + return PhoneNumber( + countryISOCode: country.code, countryCode: country.dialCode + country.regionCode, number: number); + } on InvalidCharactersException { + rethrow; + // ignore: unused_catch_clause + } on Exception catch (e) { + return PhoneNumber(countryISOCode: "", countryCode: "", number: ""); + } + } + + bool isValidNumber() { + Country country = getCountry(completeNumber); + if (number.length < country.minLength) { + throw NumberTooShortException(); + } + + if (number.length > country.maxLength) { + throw NumberTooLongException(); + } + return true; + } + + String get completeNumber { + return countryCode + number; + } + + static Country getCountry(String phoneNumber) { + if (phoneNumber == "") { + throw NumberTooShortException(); + } + + final validPhoneNumber = RegExp(r'^[+0-9]*[0-9]*$'); + + if (!validPhoneNumber.hasMatch(phoneNumber)) { + throw InvalidCharactersException(); + } + + if (phoneNumber.startsWith('+')) { + return countries + .firstWhere((country) => phoneNumber.substring(1).startsWith(country.dialCode + country.regionCode)); + } + return countries.firstWhere((country) => phoneNumber.startsWith(country.dialCode + country.regionCode)); + } + + @override + String toString() => 'PhoneNumber(countryISOCode: $countryISOCode, countryCode: $countryCode, number: $number)'; +} + + +================================================== +FILE PATH: ./lib/controller/firebase/access_token.dart +================================================== + +import 'dart:convert'; +import 'package:googleapis_auth/auth_io.dart'; + +class AccessTokenManager { + static final AccessTokenManager _instance = AccessTokenManager._internal(); + late final String serviceAccountJsonKey; + AccessToken? _accessToken; + DateTime? _expiryDate; + + AccessTokenManager._internal(); + + factory AccessTokenManager(String jsonKey) { + if (_instance._isServiceAccountKeyInitialized()) { + // Prevent re-initialization + return _instance; + } + _instance.serviceAccountJsonKey = jsonKey; + return _instance; + } + + bool _isServiceAccountKeyInitialized() { + try { + serviceAccountJsonKey; // Access to check if initialized + return true; + } catch (e) { + return false; + } + } + + Future getAccessToken() async { + if (_accessToken != null && DateTime.now().isBefore(_expiryDate!)) { + return _accessToken!.data; + } + try { + final serviceAccountCredentials = ServiceAccountCredentials.fromJson( + json.decode(serviceAccountJsonKey)); + final client = await clientViaServiceAccount( + serviceAccountCredentials, + ['https://www.googleapis.com/auth/firebase.messaging'], + ); + + _accessToken = client.credentials.accessToken; + _expiryDate = client.credentials.accessToken.expiry; + client.close(); + return _accessToken!.data; + } catch (e) { + throw Exception('Failed to obtain access token'); + } + } +} + + +================================================== +FILE PATH: ./lib/controller/firebase/firbase_messge.dart +================================================== + +import 'dart:convert'; +import 'dart:io'; +import 'package:Intaleq/views/home/HomePage/trip_monitor/trip_link_monitor.dart'; +import 'package:firebase_messaging/firebase_messaging.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/controller/functions/toast.dart'; +import 'package:Intaleq/views/widgets/elevated_btn.dart'; + +import '../../constant/box_name.dart'; +import '../../constant/colors.dart'; +import '../../constant/style.dart'; +import '../../main.dart'; +import '../../print.dart'; +import '../../views/Rate/rate_captain.dart'; +import '../../views/home/map_page_passenger.dart'; +import '../../views/home/profile/promos_passenger_page.dart'; +import '../auth/google_sign.dart'; +import '../functions/audio_record1.dart'; +import '../home/map_passenger_controller.dart'; +import 'local_notification.dart'; + +class FirebaseMessagesController extends GetxController { + final fcmToken = FirebaseMessaging.instance; + + List tokens = []; + List dataTokens = []; + late String driverID; + late String driverToken; + NotificationSettings? notificationSettings; + + Future getNotificationSettings() async { + // Get the current notification settings + NotificationSettings? notificationSettings = + await FirebaseMessaging.instance.getNotificationSettings(); + 'Notification authorization status: ${notificationSettings.authorizationStatus}'; + + // Call the update function if needed + update(); + } + + Future requestFirebaseMessagingPermission() async { + FirebaseMessaging messaging = FirebaseMessaging.instance; + + // Check if the platform is Android + if (Platform.isAndroid) { + // Request permission for Android + await messaging.requestPermission(); + } else if (Platform.isIOS) { + // Request permission for iOS + NotificationSettings settings = await messaging.requestPermission( + alert: true, + announcement: true, + badge: true, + carPlay: true, + criticalAlert: true, + provisional: false, + sound: true, + ); + messaging.setForegroundNotificationPresentationOptions( + alert: true, badge: true, sound: true); + } + } + + NotificationController notificationController = + Get.isRegistered() + ? Get.find() + : Get.put(NotificationController()); + + Future getToken() async { + fcmToken.getToken().then((token) { + Log.print('fcmToken: ${token}'); + box.write(BoxName.tokenFCM, (token.toString())); + }); + // 🔹 الاشتراك في topic + await fcmToken + .subscribeToTopic("passengers"); // أو "users" حسب نوع المستخدم + print("Subscribed to 'passengers' topic ✅"); + + FirebaseMessaging.onMessage.listen((RemoteMessage message) { + // If the app is in the background or terminated, show a system tray message + RemoteNotification? notification = message.notification; + AndroidNotification? android = notification?.android; + // if (notification != null && android != null) { + if (message.data.isNotEmpty && message.notification != null) { + fireBaseTitles(message); + } + }); + FirebaseMessaging.onBackgroundMessage((RemoteMessage message) async { + // Handle background message + if (message.data.isNotEmpty && message.notification != null) { + fireBaseTitles(message); + } + }); + + FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) { + if (message.data.isNotEmpty && message.notification != null) { + fireBaseTitles(message); + } + }); + } + + Future fireBaseTitles(RemoteMessage message) async { + // [!! تعديل !!] + // اقرأ "النوع" من حمولة البيانات، وليس من العنوان + String category = message.data['category'] ?? ''; + + // اقرأ العنوان (للعرض) + String title = message.notification?.title ?? ''; + String body = message.notification?.body ?? ''; + + if (category == 'ORDER') { + // <-- مثال: كان 'Order'.tr + Log.print('message: ${message}'); + if (Platform.isAndroid) { + notificationController.showNotification(title, body, 'Order'); + } + } + + // ... داخل معالج الإشعارات في تطبيق الراكب ... + else if (category == 'Accepted Ride') { + // <-- كان 'Accepted Ride' + var driverListJson = message.data['driverList']; + if (driverListJson != null) { + var myList = jsonDecode(driverListJson) as List; + final controller = Get.find(); + // controller.currentRideState.value = RideState.driverApplied; + await controller.processRideAcceptance( + driverIdFromFCM: myList[0].toString(), + rideIdFromFCM: myList[3].toString()); + } else { + Log.print('❌ خطأ: RIDE_ACCEPTED وصل بدون driverList'); + } + } else if (category == 'Promo') { + // <-- كان 'Promo'.tr + if (Platform.isAndroid) { + notificationController.showNotification(title, body, 'promo'); + } + Get.to(const PromosPassengerPage()); + } else if (category == 'Trip Monitoring') { + // <-- كان 'Trip Monitoring'.tr + if (Platform.isAndroid) { + notificationController.showNotification(title, body, 'iphone_ringtone'); + } + var myListString = message.data['DriverList']; + var myList = jsonDecode(myListString) as List; + Get.to(() => TripMonitor(), arguments: { + 'rideId': myList[0].toString(), + 'driverId': myList[1].toString(), + }); + } else if (category == 'token change') { + // <-- كان 'token change'.tr + if (Platform.isAndroid) { + notificationController.showNotification(title, body, 'cancel'); + } + GoogleSignInHelper.signOut(); + } else if (category == 'Driver Is Going To Passenger') { + // <-- كان 'Driver Is Going To Passenger' + Get.find().isDriverInPassengerWay = true; + Get.find().update(); + if (Platform.isAndroid) { + notificationController.showNotification(title, body, 'tone1'); + } + } else if (category == 'message From passenger') { + // <-- كان 'message From passenger' + if (Platform.isAndroid) { + notificationController.showNotification(title, body, 'ding'); + } + passengerDialog(body); + update(); + } else if (category == 'message From Driver') { + // <-- كان 'message From Driver' + if (Platform.isAndroid) { + notificationController.showNotification(title, body, 'ding'); + } + passengerDialog(body); + update(); + } else if (category == 'Trip is Begin') { + // <-- كان 'Trip is Begin' + Log.print('[FCM] استقبل إشعار "TRIP_BEGUN".'); + final controller = Get.find(); + controller.processRideBegin(); + } else if (category == 'Hi ,I will go now') { + // <-- كان 'Hi ,I will go now'.tr + if (Platform.isAndroid) { + notificationController.showNotification(title, body, 'ding'); + } + update(); + } else if (category == 'Hi ,I Arrive your site') { + // <-- كان 'Hi ,I Arrive your site'.tr + final controller = Get.find(); + // if (controller.currentRideState.value == RideState.driverApplied) { + Log.print('[FCM] السائق وصل. تغيير الحالة إلى driverArrived'); + controller.currentRideState.value = RideState.driverArrived; + // } + } else if (category == 'Cancel Trip from driver') { + // <-- كان "Cancel Trip from driver" + Get.back(); + if (Platform.isAndroid) { + notificationController.showNotification(title, body, 'cancel'); + } + Get.defaultDialog( + title: "The driver canceled your ride.".tr, // العنوان المترجم للعرض + middleText: "We will look for a new driver.\nPlease wait.".tr, + confirm: MyElevatedButton( + kolor: AppColor.greenColor, + title: 'Ok'.tr, + onPressed: () async { + Get.back(); + await Get.find() + .reSearchAfterCanceledFromDriver(); + }, + ), + cancel: MyElevatedButton( + title: 'Cancel'.tr, + kolor: AppColor.redColor, + onPressed: () { + Get.offAll(() => const MapPagePassenger()); + }, + )); + } else if (category == 'Driver Finish Trip') { + // 1. محاولة استخراج البيانات بمرونة (سواء كانت نص أو ليست نص) + final rawData = message.data['DriverList']; + List driverList = []; + + if (rawData != null) { + if (rawData is String) { + try { + driverList = jsonDecode(rawData); + } catch (e) { + Log.print('Error decoding DriverList JSON: $e'); + } + } else if (rawData is List) { + // في بعض الأحيان المكتبة تحولها لقائمة تلقائياً + driverList = rawData; + } + } + + // 2. إشعار "لا تنسى أغراضك" (يعمل دائماً) + notificationController.showNotification( + 'Alert'.tr, + "Please make sure not to leave any personal belongings in the car.".tr, + 'tone1', + ); + + // 3. التصحيح هنا: التأكد أن القائمة تحتوي على 4 عناصر على الأقل لتجنب RangeError + // العناصر هي: [0:Id, 1:RideId, 2:Token, 3:Price] + if (driverList.length >= 4) { + // استخراج السعر بأمان + String price = driverList[3].toString(); + + // استخراج العنوان بأمان (إذا كان title غير معرف سابقاً نستخدم نص افتراضي) + String notificationTitle = + message.notification?.title ?? "Trip Finished".tr; + + if (Platform.isAndroid) { + notificationController.showNotification(notificationTitle, + '${'you will pay to Driver'.tr} $price \$', 'tone1'); + } + + // الانتقال لصفحة التقييم + Get.to(() => RateDriverFromPassenger(), arguments: { + 'driverId': driverList[0].toString(), + 'rideId': driverList[1].toString(), + 'price': price + }); + + try { + if (Get.isRegistered()) { + Get.find().stopRecording(); + } + Get.find().tripFinishedFromDriver(); + } catch (e) { + Log.print("Error stopping logic: $e"); + } + } else { + Log.print( + 'Error: TRIP_FINISHED list is incomplete. Length is: ${driverList.length}'); + } + } else if (category == 'Finish Monitor') { + // <-- كان "Finish Monitor".tr + Get.defaultDialog( + titleStyle: AppStyle.title, + title: 'Trip finished '.tr, + middleText: '', + confirm: MyElevatedButton( + title: 'Ok'.tr, + onPressed: () { + Get.offAll(() => const MapPagePassenger()); + })); + } else if (category == 'Driver Cancelled Your Trip') { + if (Platform.isAndroid) { + notificationController.showNotification( + 'Driver Cancelled Your Trip'.tr, + 'you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet' + .tr, + 'cancel'); + } + box.write(BoxName.parentTripSelected, false); + box.remove(BoxName.tokenParent); + + Get.find().restCounter(); + Get.offAll(() => const MapPagePassenger()); + } + // ... (باقي الحالات مثل Call Income, Call End, إلخ) ... + // ... بنفس الطريقة ... + + else if (category == 'Order Applied') { + if (Platform.isAndroid) { + notificationController.showNotification( + 'The order Accepted by another Driver'.tr, + 'We regret to inform you that another driver has accepted this order.' + .tr, + 'order'); + } + } + } + // Future fireBaseTitles(RemoteMessage message) async { + // if (message.notification!.title! == 'Order'.tr) { + // Log.print('message: ${message}'); + // if (Platform.isAndroid) { + // notificationController.showNotification( + // 'Order'.tr, message.notification!.body!, 'Order'); + // } + // } else // ... داخل معالج الإشعارات في تطبيق الراكب ... + + // if (message.notification!.title! == 'Accepted Ride') { + // // ... + + // // انظر هنا: قمنا بتغيير "passengerList" إلى "driverList" + // var driverListJson = message.data['driverList']; + + // // تأكد من أن البيانات ليست null قبل المتابعة + // if (driverListJson != null) { + // var myList = jsonDecode(driverListJson) as List; + // Log.print('myList: ${myList}'); + + // final controller = Get.find(); + + // // استدعاء الدالة الموحدة الجديدة التي أنشأناها + // await controller.processRideAcceptance( + // driverIdFromFCM: myList[0].toString(), + // rideIdFromFCM: myList[3].toString()); + // } else { + // Log.print( + // '❌ خطأ فادح: إشعار "Accepted Ride" وصل بدون بيانات (driverList is null)'); + // } + // } else if (message.notification!.title! == 'Promo'.tr) { + // if (Platform.isAndroid) { + // notificationController.showNotification( + // 'Promo', 'Show latest promo'.tr, 'promo'); + // } + // Get.to(const PromosPassengerPage()); + // } else if (message.notification!.title! == 'Trip Monitoring'.tr) { + // if (Platform.isAndroid) { + // notificationController.showNotification( + // 'Trip Monitoring'.tr, '', 'iphone_ringtone'); + // } + // var myListString = message.data['DriverList']; + // var myList = jsonDecode(myListString) as List; + // Get.toNamed('/tripmonitor', arguments: { + // 'rideId': myList[0].toString(), + // 'driverId': myList[1].toString(), + // }); + // } else if (message.notification!.title! == 'token change'.tr) { + // if (Platform.isAndroid) { + // notificationController.showNotification( + // 'token change'.tr, 'token change'.tr, 'cancel'); + // } + // GoogleSignInHelper.signOut(); + // } else if (message.notification!.title! == 'Driver Is Going To Passenger') { + // Get.find().isDriverInPassengerWay = true; + // Get.find().update(); + // if (Platform.isAndroid) { + // notificationController.showNotification('Driver is Going To You'.tr, + // 'Please stay on the picked point.'.tr, 'tone1'); + // } + // // Get.snackbar('Driver is Going To Passenger', '', + // // backgroundColor: AppColor.greenColor); + // } else if (message.notification!.title! == 'message From passenger') { + // if (Platform.isAndroid) { + // notificationController.showNotification( + // 'message From passenger'.tr, ''.tr, 'ding'); + // } + // passengerDialog(message.notification!.body!); + + // update(); + // } else if (message.notification!.title! == 'message From Driver') { + // if (Platform.isAndroid) { + // notificationController.showNotification( + // 'message From Driver'.tr, ''.tr, 'ding'); + // } + // passengerDialog(message.notification!.body!); + + // update(); + // } else // (هذا الكود في معالج الإشعارات لديك) + // if (message.notification!.title! == 'Trip is Begin') { + // Log.print('[FCM] استقبل إشعار "Trip is Begin".'); + + // // (تم حذف الإشعار المحلي من هنا، نُقل إلى الدالة الموحدة) + + // final controller = Get.find(); + + // // استدعاء حارس البوابة الجديد والآمن + // controller.processRideBegin(); + + // // (تم حذف كل الأوامر التالية من هنا) + // // Get.find().getBeginRideFromDriver(); + // // box.write(BoxName.passengerWalletTotal, '0'); + // // update(); + // } else if (message.notification!.title! == 'Hi ,I will go now'.tr) { + // // Get.snackbar('Hi ,I will go now', '', + // // backgroundColor: AppColor.greenColor); + // if (Platform.isAndroid) { + // notificationController.showNotification( + // 'Passenger come to you'.tr, 'Hi ,I will go now'.tr, 'ding'); + // } + // update(); + // } // ... داخل معالج الإشعارات (FCM Handler) ... + // if (message.notification!.title! == 'Hi ,I Arrive your site'.tr) { + // final controller = Get.find(); + + // // 1. التأكد أننا في الحالة الصحيحة (السائق كان في الطريق) + // if (controller.currentRideState.value == RideState.driverApplied) { + // Log.print('[FCM] السائق وصل. تغيير الحالة إلى driverArrived'); + + // // 2. تغيير الحالة فقط! + // controller.currentRideState.value = RideState.driverArrived; + // } + // } else if (message.notification!.title! == "Cancel Trip from driver") { + // Get.back(); + // if (Platform.isAndroid) { + // notificationController.showNotification("Cancel Trip from driver".tr, + // "We will look for a new driver.\nPlease wait.".tr, 'cancel'); + // } + // Get.defaultDialog( + // title: "The driver canceled your ride.".tr, + // middleText: "We will look for a new driver.\nPlease wait.".tr, + // confirm: MyElevatedButton( + // kolor: AppColor.greenColor, + // title: 'Ok'.tr, + // onPressed: () async { + // Get.back(); + // await Get.find() + // .reSearchAfterCanceledFromDriver(); + // }, + // ), + // cancel: MyElevatedButton( + // title: 'Cancel'.tr, + // kolor: AppColor.redColor, + // onPressed: () { + // Get.offAll(() => const MapPagePassenger()); + // }, + // ) + // // Get.find() + // // .searchNewDriverAfterRejectingFromDriver(); + // ); + // } else if (message.notification!.title! == 'Driver Finish Trip'.tr) { + // // الخطوة 1: استقبل البيانات وتحقق من وجودها + // final rawData = message.data['DriverList']; + // List driverList = []; // ابدأ بقائمة فارغة كإجراء وقائي + + // // الخطوة 2: قم بفك تشفير البيانات بأمان + // if (rawData != null && rawData is String) { + // try { + // driverList = jsonDecode(rawData); + // Log.print('Successfully decoded DriverList: $driverList'); + // } catch (e) { + // Log.print('Error decoding DriverList JSON: $e'); + // // اترك القائمة فارغة في حالة حدوث خطأ + // } + // } else { + // Log.print('Error: DriverList data is null or not a String.'); + // } + + // // الخطوة 3: استخدم البيانات فقط إذا كانت القائمة تحتوي على العناصر المطلوبة + // // هذا يمنع خطأ "RangeError" إذا كانت القائمة أقصر من المتوقع + // if (driverList.length >= 4) { + // if (Platform.isAndroid) { + // notificationController.showNotification( + // "Driver Finish Trip".tr, + // '${'you will pay to Driver'.tr} ${driverList[3].toString()} \$', // تم تحسين طريقة عرض النص + // 'tone1'); + // } + + // Get.find().stopRecording(); + + // if ((double.tryParse( + // box.read(BoxName.passengerWalletTotal).toString()) ?? + // 0) < + // 0) { + // box.write(BoxName.passengerWalletTotal, 0); + // } + + // Get.find().tripFinishedFromDriver(); + + // NotificationController().showNotification( + // 'Don’t forget your personal belongings.'.tr, + // 'Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app' + // .tr, + // 'ding'); + + // Get.to(() => RateDriverFromPassenger(), arguments: { + // 'driverId': driverList[0].toString(), + // 'rideId': driverList[1].toString(), + // 'price': driverList[3].toString() + // }); + // } else { + // Log.print( + // 'Error: Decoded driverList does not have enough elements. Received: $driverList'); + // // هنا يمكنك عرض رسالة خطأ للمستخدم إذا لزم الأمر + // } + // } else if (message.notification!.title! == "Finish Monitor".tr) { + // Get.defaultDialog( + // titleStyle: AppStyle.title, + // title: 'Trip finished '.tr, + // middleText: '', + // confirm: MyElevatedButton( + // title: 'Ok'.tr, + // onPressed: () { + // Get.offAll(() => const MapPagePassenger()); + // })); + // } + // // else if (message.notification!.title! == "Trip Monitoring".tr) { + // // Get.to(() => const TripMonitor()); + // // } + // else if (message.notification!.title! == 'Call Income') { + // try { + // var myListString = message.data['DriverList']; + // var driverList = jsonDecode(myListString) as List; + // // if (Platform.isAndroid) { + // if (Platform.isAndroid) { + // notificationController.showNotification( + // 'Call Income'.tr, + // message.notification!.body!, + // 'iphone_ringtone', + // ); + // } + // // } + // // Assuming GetMaterialApp is initialized and context is valid for navigation + // // Get.to(() => PassengerCallPage( + // // channelName: driverList[1].toString(), + // // token: driverList[0].toString(), + // // remoteID: driverList[2].toString(), + // // )); + // } catch (e) {} + // } else if (message.notification!.title! == 'Call Income from Driver'.tr) { + // try { + // var myListString = message.data['DriverList']; + // var driverList = jsonDecode(myListString) as List; + // // if (Platform.isAndroid) { + // if (Platform.isAndroid) { + // notificationController.showNotification( + // 'Call Income'.tr, + // message.notification!.body!, + // 'iphone_ringtone', + // ); + // } + // // Assuming GetMaterialApp is initialized and context is valid for navigation + // // Get.to(() => PassengerCallPage( + // // channelName: driverList[1].toString(), + // // token: driverList[0].toString(), + // // remoteID: driverList[2].toString(), + // // )); + // } catch (e) {} + // } else if (message.notification!.title! == 'Call End'.tr) { + // try { + // var myListString = message.data['DriverList']; + // var driverList = jsonDecode(myListString) as List; + // if (Platform.isAndroid) { + // notificationController.showNotification( + // 'Call End'.tr, + // message.notification!.body!, + // 'ding', + // ); + // } + // // Assuming GetMaterialApp is initialized and context is valid for navigation + // // Get.off(const CallPage()); + // } catch (e) {} + // } else if (message.notification!.title! == 'Driver Cancelled Your Trip') { + // // Get.snackbar( + // // 'You will be pay the cost to driver or we will get it from you on next trip' + // // .tr, + // // 'message', + // // backgroundColor: AppColor.redColor); + // if (Platform.isAndroid) { + // notificationController.showNotification( + // 'Driver Cancelled Your Trip'.tr, + // 'you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet' + // .tr, + // 'cancel'); + // } + // box.write(BoxName.parentTripSelected, false); + // box.remove(BoxName.tokenParent); + + // Get.find().restCounter(); + // Get.offAll(() => const MapPagePassenger()); + // } + // // else if (message.notification!.title! == 'Order Applied') { + // // Get.snackbar( + // // "The order has been accepted by another driver." + // // .tr, // Corrected grammar + // // "Be more mindful next time to avoid dropping orders." + // // .tr, // Improved sentence structure + // // backgroundColor: AppColor.yellowColor, + // // snackPosition: SnackPosition.BOTTOM, + // // ); + // // } + + // else if (message.notification!.title! == 'Order Applied'.tr) { + // if (Platform.isAndroid) { + // notificationController.showNotification( + // 'The order Accepted by another Driver'.tr, + // 'We regret to inform you that another driver has accepted this order.' + // .tr, + // 'order'); + // } + // } + // } + + SnackbarController driverAppliedTripSnakBar() { + return Get.snackbar( + 'Driver Applied the Ride for You'.tr, + '', + colorText: AppColor.greenColor, + duration: const Duration(seconds: 3), + snackPosition: SnackPosition.TOP, + titleText: Text( + 'Applied'.tr, + style: const TextStyle(color: AppColor.redColor), + ), + messageText: Text( + 'Driver Applied the Ride for You'.tr, + style: AppStyle.title, + ), + icon: const Icon(Icons.approval), + shouldIconPulse: true, + margin: const EdgeInsets.all(16), + padding: const EdgeInsets.all(16), + ); + } + + Future passengerDialog(String message) { + return Get.defaultDialog( + barrierDismissible: false, + title: 'message From Driver'.tr, + titleStyle: AppStyle.title, + middleTextStyle: AppStyle.title, + middleText: message.tr, + confirm: MyElevatedButton( + title: 'Ok'.tr, + onPressed: () { + // Get.find().sendNotificationToPassengerToken( + // 'Hi ,I will go now'.tr, + // 'I will go now'.tr, + // Get.find().driverToken, []); + // Get.find() + // .startTimerDriverWaitPassenger5Minute(); + + Get.back(); + })); + } + + Future driverFinishTripDialoge(List driverList) { + return Get.defaultDialog( + title: 'Driver Finish Trip'.tr, + content: const DriverTipWidget(), + confirm: MyElevatedButton( + title: 'Yes'.tr, + onPressed: () async { + Get.to(() => RateDriverFromPassenger(), arguments: { + 'driverId': driverList[0].toString(), + 'rideId': driverList[1].toString(), + 'price': driverList[3].toString() + }); + }, + kolor: AppColor.greenColor, + ), + cancel: MyElevatedButton( + title: 'No,I want'.tr, + onPressed: () { + Get.to(() => RateDriverFromPassenger(), arguments: { + 'driverId': driverList[0].toString(), + 'rideId': driverList[1].toString(), + 'price': driverList[3].toString() + }); + }, + kolor: AppColor.redColor, + )); + } +} + +class DriverTipWidget extends StatelessWidget { + const DriverTipWidget({ + super.key, + }); + + @override + Widget build(BuildContext context) { + return GetBuilder(builder: (controller) { + return Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + // Text( + // '${'Your fee is '.tr}${Get.find().totalPassenger.toStringAsFixed(2)}'), + Text( + 'Do you want to pay Tips for this Driver'.tr, + textAlign: TextAlign.center, + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + InkWell( + onTap: () { + box.write(BoxName.tipPercentage, '0.05'); + + Toast.show( + context, + '${'Tip is '.tr}${(controller.totalPassenger) * (double.parse(box.read(BoxName.tipPercentage.toString())))}', + AppColor.blueColor); + controller.update(); + }, + child: Container( + decoration: BoxDecoration(border: Border.all()), + child: const Padding( + padding: EdgeInsets.all(4), + child: Center( + child: Text('5%'), + ), + ), + ), + ), + InkWell( + onTap: () { + box.write(BoxName.tipPercentage, '0.10'); + Toast.show( + context, + '${'Tip is'.tr} ${(controller.totalPassenger) * (double.parse(box.read(BoxName.tipPercentage.toString())))}', + AppColor.blueColor); + controller.update(); + }, + child: Container( + decoration: BoxDecoration(border: Border.all()), + child: const Center( + child: Padding( + padding: EdgeInsets.all(5), + child: Text('10%'), + ), + ), + ), + ), + InkWell( + onTap: () { + box.write(BoxName.tipPercentage, '0.15'); + Toast.show( + context, + '${'Tip is'.tr} ${(controller.totalPassenger) * (double.parse(box.read(BoxName.tipPercentage.toString())))}', + AppColor.blueColor); + controller.update(); + }, + child: Container( + decoration: BoxDecoration(border: Border.all()), + child: const Center( + child: Padding( + padding: EdgeInsets.all(5), + child: Text('15%'), + ), + ), + ), + ), + InkWell( + onTap: () { + box.write(BoxName.tipPercentage, '0.20'); + Toast.show( + context, + '${'Tip is'.tr} ${(controller.totalPassenger) * (double.parse(box.read(BoxName.tipPercentage.toString())))}', + AppColor.blueColor); + controller.update(); + }, + child: Container( + decoration: BoxDecoration(border: Border.all()), + child: const Center( + child: Padding( + padding: EdgeInsets.all(5), + child: Text('20%'), + ), + ), + ), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + MyElevatedButton( + kolor: AppColor.redColor, + title: 'No i want'.tr, + onPressed: () { + box.write(BoxName.tipPercentage, '0'); + controller.update(); + }), + Container( + decoration: AppStyle.boxDecoration1, + child: Padding( + padding: const EdgeInsets.all(6), + child: Text( + '${(controller.totalPassenger) * (double.parse(box.read(BoxName.tipPercentage.toString())))} ${box.read(BoxName.countryCode) == 'Egypt' ? 'LE'.tr : 'JOD'.tr}', + style: AppStyle.title, + ), + ), + ), + ], + ) + ], + ); + }); + } +} + + +================================================== +FILE PATH: ./lib/controller/firebase/local_notification.dart +================================================== + +import 'dart:async'; +import 'dart:io'; + +import 'package:flutter_local_notifications/flutter_local_notifications.dart'; +import 'package:get/get.dart'; +import 'package:permission_handler/permission_handler.dart'; +import 'package:timezone/data/latest.dart' as tz; +import 'package:timezone/timezone.dart' as tz; + +import '../../main.dart'; + +class NotificationController extends GetxController { + final FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin = + FlutterLocalNotificationsPlugin(); + + @override + void onInit() { + super.onInit(); + initNotifications(); + } + + // Initializes the local notifications plugin + Future initNotifications() async { + const AndroidInitializationSettings android = + AndroidInitializationSettings('@mipmap/launcher_icon'); + DarwinInitializationSettings ios = DarwinInitializationSettings( + requestAlertPermission: true, + requestBadgePermission: true, + requestSoundPermission: true, + // onDidReceiveLocalNotification: + // (int id, String? title, String? body, String? payload) async {}, + ); + InitializationSettings initializationSettings = + InitializationSettings(android: android, iOS: ios); + await _flutterLocalNotificationsPlugin.initialize(initializationSettings); + + tz.initializeTimeZones(); + print('Notifications initialized'); + } + + // Displays a notification with the given title and message + void showNotification(String title, String message, String tone) async { + final AndroidNotificationDetails android = AndroidNotificationDetails( + 'high_importance_channel', + 'High Importance Notifications', + importance: Importance.max, + priority: Priority.high, + showWhen: false, + sound: RawResourceAndroidNotificationSound(tone), + ); + + const DarwinNotificationDetails ios = DarwinNotificationDetails( + sound: 'default', + presentAlert: true, + presentBadge: true, + presentSound: true, + ); + + final NotificationDetails details = + NotificationDetails(android: android, iOS: ios); + await _flutterLocalNotificationsPlugin.show(0, title, message, details); + print('Notification shown: $title - $message'); + } +// /Users/hamzaaleghwairyeen/development/App/ride 2/lib/controller/firebase/local_notification.dart + +// Assume _flutterLocalNotificationsPlugin is initialized somewhere in your code + + // void scheduleNotificationsForSevenDays( + // String title, String message, String tone) async { + // final AndroidNotificationDetails android = AndroidNotificationDetails( + // 'high_importance_channel', + // 'High Importance Notifications', + // importance: Importance.max, + // priority: Priority.high, + // sound: RawResourceAndroidNotificationSound(tone), + // ); + + // const DarwinNotificationDetails ios = DarwinNotificationDetails( + // sound: 'default', + // presentAlert: true, + // presentBadge: true, + // presentSound: true, + // ); + + // final NotificationDetails details = + // NotificationDetails(android: android, iOS: ios); + + // // Check for the exact alarm permission on Android 12 and above + // if (Platform.isAndroid) { + // if (await Permission.scheduleExactAlarm.isDenied) { + // if (await Permission.scheduleExactAlarm.request().isGranted) { + // print('SCHEDULE_EXACT_ALARM permission granted'); + // } else { + // print('SCHEDULE_EXACT_ALARM permission denied'); + // return; + // } + // } + // } + + // // Schedule notifications for the next 7 days + // for (int day = 0; day < 7; day++) { + // // Schedule for 8:00 AM + // await _scheduleNotificationForTime( + // day, 8, 0, title, message, details, day * 1000 + 1); + + // // Schedule for 3:00 PM + // await _scheduleNotificationForTime( + // day, 15, 0, title, message, details, day * 1000 + 2); // Unique ID + + // // Schedule for 8:00 PM + // await _scheduleNotificationForTime( + // day, 20, 0, title, message, details, day * 1000 + 3); // Unique ID + // } + + // print('Notifications scheduled successfully for the next 7 days'); + // } + void scheduleNotificationsForSevenDays( + String title, String message, String tone) async { + final AndroidNotificationDetails android = AndroidNotificationDetails( + 'high_importance_channel', + 'High Importance Notifications', + importance: Importance.max, + priority: Priority.high, + sound: RawResourceAndroidNotificationSound(tone), + ); + + const DarwinNotificationDetails ios = DarwinNotificationDetails( + sound: 'default', + presentAlert: true, + presentBadge: true, + presentSound: true, + ); + + final NotificationDetails details = + NotificationDetails(android: android, iOS: ios); + + // Check for the exact alarm permission on Android 12 and above + if (Platform.isAndroid) { + if (await Permission.scheduleExactAlarm.isDenied) { + if (await Permission.scheduleExactAlarm.request().isGranted) { + print('SCHEDULE_EXACT_ALARM permission granted'); + } else { + print('SCHEDULE_EXACT_ALARM permission denied'); + return; + } + } + } + + // Schedule notifications for the next 7 days + for (int day = 0; day < 7; day++) { + // List of notification times + final notificationTimes = [ + {'hour': 8, 'minute': 0, 'id': day * 1000 + 1}, // 8:00 AM + {'hour': 15, 'minute': 0, 'id': day * 1000 + 2}, // 3:00 PM + {'hour': 20, 'minute': 0, 'id': day * 1000 + 3}, // 8:00 PM + ]; + + for (var time in notificationTimes) { + final notificationId = time['id'] as int; + + // Check if this notification ID is already stored + bool isScheduled = box.read('notification_$notificationId') ?? false; + + if (!isScheduled) { + // Schedule the notification if not already scheduled + await _scheduleNotificationForTime( + day, + time['hour'] as int, + time['minute'] as int, + title, + message, + details, + notificationId, + ); + + // Mark this notification ID as scheduled in GetStorage + box.write('notification_$notificationId', true); + } else { + print('Notification with ID $notificationId is already scheduled.'); + } + } + } + + print('Notifications scheduled successfully for the next 7 days'); + } + + void scheduleNotificationsForTimeSelected( + String title, String message, String tone, DateTime timeSelected) async { + final AndroidNotificationDetails android = AndroidNotificationDetails( + 'high_importance_channel', + 'High Importance Notifications', + importance: Importance.max, + priority: Priority.high, + sound: RawResourceAndroidNotificationSound(tone), + ); + + const DarwinNotificationDetails ios = DarwinNotificationDetails( + sound: 'default', + presentAlert: true, + presentBadge: true, + presentSound: true, + ); + + final NotificationDetails details = + NotificationDetails(android: android, iOS: ios); + + // Check for the exact alarm permission on Android 12 and above + if (Platform.isAndroid) { + if (await Permission.scheduleExactAlarm.isDenied) { + if (await Permission.scheduleExactAlarm.request().isGranted) { + print('SCHEDULE_EXACT_ALARM permission granted'); + } else { + print('SCHEDULE_EXACT_ALARM permission denied'); + return; + } + } + } + + // Schedule notifications for 10 and 30 minutes before the timeSelected + await _scheduleNotificationForTimeVIP( + timeSelected.subtract(const Duration(minutes: 10)), // 10 minutes before + title, + message, + details, + 1, // Unique ID for 10-minute before notification + ); + + await _scheduleNotificationForTimeVIP( + timeSelected.subtract(const Duration(minutes: 30)), // 30 minutes before + title, + message, + details, + 2, // Unique ID for 30-minute before notification + ); + + print('Notifications scheduled successfully for the time selected'); + } + + Future _scheduleNotificationForTimeVIP( + DateTime scheduledDate, + String title, + String message, + NotificationDetails details, + int notificationId, + ) async { + // Initialize and set Cairo timezone + tz.initializeTimeZones(); + var cairoLocation = tz.getLocation('Africa/Cairo'); + + final now = tz.TZDateTime.now(cairoLocation); + + // Convert to Cairo time + tz.TZDateTime scheduledTZDateTime = + tz.TZDateTime.from(scheduledDate, cairoLocation); + + // Check if 10 minutes before the scheduled time is in the past + if (scheduledTZDateTime + .subtract(const Duration(minutes: 10)) + .isBefore(now)) { + // If the 10 minutes before the scheduled time is in the past, don't schedule + print( + 'Scheduled time minus 10 minutes is in the past. Skipping notification.'); + return; // Skip this notification + } + + print('Current time (Cairo): $now'); + print('Scheduling notification for: $scheduledTZDateTime'); + + await _flutterLocalNotificationsPlugin.zonedSchedule( + notificationId, // Unique ID for each notification + title, + message, + scheduledTZDateTime, + details, + androidScheduleMode: AndroidScheduleMode.exact, + // uiLocalNotificationDateInterpretation: + // UILocalNotificationDateInterpretation.absoluteTime, + matchDateTimeComponents: + null, // Don't repeat automatically; we handle manually + ); + + print('Notification scheduled successfully for: $scheduledTZDateTime'); + } + + Future _scheduleNotificationForTime( + int dayOffset, + int hour, + int minute, + String title, + String message, + NotificationDetails details, + int notificationId, + ) async { + // Initialize and set Cairo timezone + tz.initializeTimeZones(); + var cairoLocation = tz.getLocation('Africa/Cairo'); + + final now = tz.TZDateTime.now(cairoLocation); + tz.TZDateTime scheduledDate = tz.TZDateTime( + cairoLocation, + now.year, + now.month, + now.day + dayOffset, // Add offset to schedule for the next days + hour, + minute, + ); + + // If the scheduled time is in the past, move it to the next day + if (scheduledDate.isBefore(now)) { + scheduledDate = scheduledDate.add(const Duration(days: 1)); + } + + print('Current time (Cairo): $now'); + print('Scheduling notification for: $scheduledDate'); + + await _flutterLocalNotificationsPlugin.zonedSchedule( + notificationId, // Unique ID for each notification + title, + message, + scheduledDate, + details, + androidScheduleMode: AndroidScheduleMode.exact, + // uiLocalNotificationDateInterpretation: + // UILocalNotificationDateInterpretation.absoluteTime, + matchDateTimeComponents: + null, // Don't repeat automatically; we handle 7 days manually + ); + + print('Notification scheduled successfully for: $scheduledDate'); + } +} + + +================================================== +FILE PATH: ./lib/controller/firebase/notification_service.dart +================================================== + +import 'package:Intaleq/print.dart'; +import 'package:http/http.dart' as http; +import 'dart:convert'; + +class NotificationService { + // استبدل هذا الرابط بالرابط الصحيح لملف PHP على السيرفر الخاص بك + static const String _serverUrl = + 'https://syria.intaleq.xyz/intaleq/fcm/send_fcm.php'; + static const String _batchServerUrl = + 'https://syria.intaleq.xyz/intaleq/fcm/send_fcm_batch.php'; + static Future sendNotification({ + required String target, + required String title, + required String body, + required String? category, // <-- [الإضافة الأولى] + String? tone, + List? driverList, // <-- [تعديل 1] : إضافة المتغير الجديد + bool isTopic = false, + }) async { + try { + final Map payload = { + 'target': target, + 'title': title, + 'body': body, + 'isTopic': isTopic, + }; + if (category != null) { + payload['category'] = + category; // <-- [الإضافة الثانية] (النص الثابت للتحكم) + } + // نضيف النغمة فقط إذا لم تكن فارغة + if (tone != null) { + payload['tone'] = tone; + } + + // <-- [تعديل 2] : نضيف قائمة البيانات بعد تشفيرها إلى JSON + if (driverList != null) { + payload['driverList'] = jsonEncode(driverList); + } + + final response = await http.post( + Uri.parse(_serverUrl), + headers: { + 'Content-Type': 'application/json; charset=UTF-8', + }, + body: jsonEncode(payload), + ); + + if (response.statusCode == 200) { + print('✅ Notification sent successfully.'); + print('Server Response: ${response.body}'); + } else { + print( + '❌ Failed to send notification. Status code: ${response.statusCode}'); + print('Server Error: ${response.body}'); + } + } catch (e) { + print('❌ An error occurred while sending notification: $e'); + } + } + + /// [4] !! دالة جديدة مضافة !! + /// ترسل إشعاراً "مجمعاً" إلى قائمة من السائقين + static Future sendBatchNotification({ + required List targets, // <-- قائمة التوكينز + required String title, + required String body, + String? tone, + List? driverList, // <-- بيانات الرحلة (نفسها للجميع) + }) async { + // لا ترسل شيئاً إذا كانت القائمة فارغة + if (targets.isEmpty) { + Log.print('⚠️ [Batch] No targets to send to. Skipped.'); + return; + } + + try { + final Map payload = { + // "targets" بدلاً من "target" + 'targets': jsonEncode(targets), // تشفير قائمة التوكينز + 'title': title, + 'body': body, + }; + + if (tone != null) { + payload['tone'] = tone; + } + + // بيانات الرحلة (DriverList) + if (driverList != null) { + payload['driverList'] = jsonEncode(driverList); + } + + final response = await http.post( + Uri.parse(_batchServerUrl), // <-- !! تستخدم الرابط الجديد + headers: { + 'Content-Type': 'application/json; charset=UTF-8', + }, + body: jsonEncode(payload), + ); + + if (response.statusCode == 200) { + Log.print('✅ [Batch] Notifications sent successfully.'); + Log.print('Server Response: ${response.body}'); + } else { + Log.print('❌ [Batch] Failed to send. Status: ${response.statusCode}'); + Log.print('Server Error: ${response.body}'); + } + } catch (e) { + Log.print('❌ [Batch] An error occurred: $e'); + } + } +} + + +================================================== +FILE PATH: ./lib/controller/firebase/live_activity.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +class LiveActivityScreen extends StatefulWidget { + @override + _LiveActivityScreenState createState() => _LiveActivityScreenState(); +} + +class _LiveActivityScreenState extends State { + static const platform = MethodChannel('live_activity_channel'); + + Future _startLiveActivity() async { + try { + await platform.invokeMethod('startLiveActivity'); + } on PlatformException catch (e) { + print("Failed to start Live Activity: '${e.message}'."); + } + } + + Future _updateLiveActivity(double progress) async { + try { + await platform.invokeMethod('updateLiveActivity', {"progress": progress}); + } on PlatformException catch (e) { + print("Failed to update Live Activity: '${e.message}'."); + } + } + + Future _endLiveActivity() async { + try { + await platform.invokeMethod('endLiveActivity'); + } on PlatformException catch (e) { + print("Failed to end Live Activity: '${e.message}'."); + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: Text("Live Activity Test")), + body: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ElevatedButton( + onPressed: _startLiveActivity, + child: Text("Start Live Activity"), + ), + ElevatedButton( + onPressed: () => _updateLiveActivity(0.5), + child: Text("Update Progress to 50%"), + ), + ElevatedButton( + onPressed: _endLiveActivity, + child: Text("End Live Activity"), + ), + ], + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/controller/profile/setting_controller.dart +================================================== + +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/main.dart'; +import 'package:get/get.dart'; + +class SettingController extends GetxController { + bool isGoogleMapsEnabled = false; + + void onChangMapApp() { + if (!isGoogleMapsEnabled) { + isGoogleMapsEnabled = true; + box.write(BoxName.googlaMapApp, true); + update(); + } else { + isGoogleMapsEnabled = false; + box.write(BoxName.googlaMapApp, false); + update(); + } + } + + @override + void onInit() { + if (box.read(BoxName.googlaMapApp) != null) { + isGoogleMapsEnabled = box.read(BoxName.googlaMapApp); + } + update(); + super.onInit(); + } +} + + +================================================== +FILE PATH: ./lib/controller/profile/profile_controller.dart +================================================== + +import 'dart:convert'; + +import 'package:Intaleq/constant/colors.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/links.dart'; +import 'package:Intaleq/controller/functions/crud.dart'; +import 'package:Intaleq/main.dart'; + +class ProfileController extends GetxController { + bool isloading = false; + Map prfoileData = {}; + TextEditingController txtController = TextEditingController(); + List genders = ['Male', 'Female', 'Other']; + + String gender = 'Male'; + + void setGender(String value) { + gender = value; + update(); + } + + String? selectedDegree; + + void setDegree(String? degree) { + selectedDegree = degree; + update(); + } + + String? selectedCountry; + + void setCountry(String? country) { + selectedCountry = country; + // box.write(BoxName.countryCode, country); + update(); + } + + updateColumn(Map payload) async { + isloading = true; + update(); + await CRUD().post(link: AppLink.updateprofile, payload: payload); + await getProfile(); + isloading = false; + update(); + } + + updatField(String columnName, TextInputType type) async { + Get.dialog( + CupertinoAlertDialog( + title: Text('${'Update'.tr} $columnName'), + content: Column( + children: [ + const SizedBox(height: 16), // Add spacing between title and input + CupertinoTextField( + controller: txtController, + placeholder: 'type here'.tr, + keyboardType: type, + padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16), + decoration: BoxDecoration( + border: Border.all(color: CupertinoColors.lightBackgroundGray), + borderRadius: BorderRadius.circular(8), + ), + ), + const SizedBox(height: 20), + CupertinoButton( + color: AppColor.blueColor, + onPressed: () async { + Get.back(); + await updateColumn({ + 'id': box.read(BoxName.passengerID), + columnName: (txtController.text), + }); + if (columnName == 'first_name') { + box.write(BoxName.name, (txtController.text)); + } + + txtController.clear(); + }, + child: Text('Update'.tr), + ), + ], + ), + ), + ); + } + + getProfile() async { + isloading = true; + update(); + var res = await CRUD().get(link: AppLink.getprofile, payload: { + 'id': box.read(BoxName.passengerID).toString(), + }); + + if (res.toString() == 'failure') { + // Get.snackbar('failure', 'message'); + isloading = false; + update(); + } else { + var jsonDecoded = jsonDecode(res); + prfoileData = jsonDecoded['data']; + box.write(BoxName.sosPhonePassenger, prfoileData['sosPhone'].toString()); + box.write(BoxName.gender, prfoileData['gender'].toString()); + box.write(BoxName.name, + '${prfoileData['first_name']} ${prfoileData['last_name']}'); + isloading = false; + update(); + } + } + + @override + void onInit() { + getProfile(); + super.onInit(); + } +} + + +================================================== +FILE PATH: ./lib/controller/profile/captain_profile_controller.dart +================================================== + +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/links.dart'; +import 'package:Intaleq/controller/functions/crud.dart'; +import 'package:Intaleq/main.dart'; + +class CaptainProfileController extends GetxController { + bool isLoading = false; + TextEditingController vin = TextEditingController(); + TextEditingController color = TextEditingController(); + TextEditingController make = TextEditingController(); + TextEditingController model = TextEditingController(); + TextEditingController year = TextEditingController(); + TextEditingController expirationDate = TextEditingController(); + + Future updateFields() async { + var payload = { + 'driverID': box.read(BoxName.driverID), + }; + + if (vin.text.isNotEmpty) { + payload['vin'] = vin.text; + } + + if (color.text.isNotEmpty) { + payload['color'] = color.text; + } + + if (model.text.isNotEmpty) { + payload['model'] = model.text; + } + + if (make.text.isNotEmpty) { + payload['make'] = make.text; + } + + if (year.text.isNotEmpty) { + payload['year'] = year.text; + } + + if (expirationDate.text.isNotEmpty) { + payload['expiration_date'] = expirationDate.text; + } + + var res = + await CRUD().post(link: AppLink.updateRegisrationCar, payload: payload); + + if (jsonDecode(res)['status'] == 'success') { + box.write(BoxName.vin, vin.text); + box.write(BoxName.color, color.text); + box.write(BoxName.model, model.text); + box.write(BoxName.make, make.text); + box.write(BoxName.year, year.text); + box.write(BoxName.expirationDate, expirationDate.text); + update(); + Get.back(); + } + } + + Map captainProfileData = {}; + Future getProfileData() async { + var res = await CRUD().get( + link: AppLink.getCaptainProfile, + payload: {'id': box.read(BoxName.driverID)}); + if (res != 'failure') { + var d = jsonDecode(res); + captainProfileData = d['message']; + update(); + box.write(BoxName.sexDriver, d['message']['gender']); + box.write(BoxName.dobDriver, d['message']['birthdate']); + box.write(BoxName.vin, d['message']['vin']); + box.write(BoxName.color, d['message']['color']); + box.write(BoxName.model, d['message']['model']); + box.write(BoxName.carPlate, d['message']['car_plate']); + box.write(BoxName.make, d['message']['make']); + box.write(BoxName.year, d['message']['year']); + box.write(BoxName.expirationDate, d['message']['expiration_date']); + // box.write(BoxName.acc, d['message']['accountBank']); + + update(); + } + } + + @override + void onInit() { + // if (box.read(BoxName.dobDriver) == null) { + getProfileData(); + // } + + super.onInit(); + } +} + + +================================================== +FILE PATH: ./lib/controller/functions/add_error.dart +================================================== + +import '../../constant/box_name.dart'; +import '../../constant/links.dart'; +import '../../main.dart'; +import 'crud.dart'; + +addError(String error, where) async { + CRUD().post(link: AppLink.addError, payload: { + 'error': error.toString(), // Example error description + 'userId': box.read(BoxName.driverID) ?? + box.read(BoxName.passengerID), // Example user ID + 'userType': box.read(BoxName.driverID) != null + ? 'Driver' + : 'passenger', // Example user type + 'phone': box.read(BoxName.phone) ?? + box.read(BoxName.phoneDriver), // Example phone number + + 'device': where + }); +} + + +================================================== +FILE PATH: ./lib/controller/functions/sss.dart +================================================== + +import 'package:secure_string_operations/secure_string_operations.dart'; + +import '../../constant/char_map.dart'; +import '../../main.dart'; + +class Sss { + static read(String boxname) async { + return box.read(X.r(X.r(X.r(boxname, cn), cC), cs)); + } + + static write(String boxname, value) async { + return box.write(boxname, X.c(X.c(X.c(value, cn), cC), cs)); + } + + static delete(String boxname) async { + return box.remove(boxname); + } +} + + +================================================== +FILE PATH: ./lib/controller/functions/twilio_service.dart +================================================== + +// import 'package:ride/constant/credential.dart'; +// import 'package:twilio_flutter/twilio_flutter.dart'; +// +// class TwilioSMS { +// TwilioFlutter twilioFlutter = TwilioFlutter( +// accountSid: AppCredintials.accountSIDTwillo, +// authToken: AppCredintials.authTokenTwillo, +// twilioNumber: '+962 7 9858 3052'); +// +// Future sendSMS({ +// required String recipientPhoneNumber, +// required String message, +// }) async { +// try { +// await twilioFlutter.sendSMS( +// toNumber: recipientPhoneNumber, +// messageBody: message, +// ); +// } catch (e) { +// } +// } +// } + + +================================================== +FILE PATH: ./lib/controller/functions/launch.dart +================================================== + +import 'package:url_launcher/url_launcher.dart'; +import 'dart:io'; + +void showInBrowser(String url) async { + if (await canLaunchUrl(Uri.parse(url))) { + launchUrl(Uri.parse(url)); + } else {} +} + +Future makePhoneCall(String phoneNumber) async { + // 1. تنظيف الرقم (إزالة المسافات والفواصل) + String formattedNumber = phoneNumber.replaceAll(RegExp(r'\s+'), ''); + + // 2. منطق التنسيق (مع الحفاظ على الأرقام القصيرة مثل 112 كما هي) + if (formattedNumber.length > 6) { + if (formattedNumber.startsWith('09')) { + // إذا كان يبدأ بـ 09 (رقم موبايل سوري محلي) -> +963 + formattedNumber = '+963${formattedNumber.substring(1)}'; + } else if (!formattedNumber.startsWith('+')) { + // إذا لم يكن دولياً ولا محلياً معروفاً -> إضافة + فقط + formattedNumber = '+$formattedNumber'; + } + } + // ملاحظة: الأرقام القصيرة (مثل 112) ستتجاوز الشرط أعلاه وتبقى "112" وهو الصحيح + + // 3. التنفيذ (Launch) + final Uri launchUri = Uri( + scheme: 'tel', + path: formattedNumber, + ); + + try { + // استخدام LaunchMode.externalApplication هو الحل الجذري لمشاكل الـ Intent + // لأنه يجبر النظام على تسليم الرابط لتطبيق الهاتف بدلاً من محاولة فتحه داخل تطبيقك + if (await canLaunchUrl(launchUri)) { + await launchUrl(launchUri, mode: LaunchMode.externalApplication); + } else { + // في بعض الأجهزة canLaunchUrl تعود بـ false مع الـ tel ومع ذلك يعمل launchUrl + // لذا نجرب الإطلاق المباشر كاحتياط + await launchUrl(launchUri, mode: LaunchMode.externalApplication); + } + } catch (e) { + // طباعة الخطأ في حال الفشل التام + print("Error launching call: $e"); + } +} + +void launchCommunication( + String method, String contactInfo, String message) async { + String url; + + if (Platform.isIOS) { + switch (method) { + case 'phone': + url = 'tel:$contactInfo'; + break; + case 'sms': + url = 'sms:$contactInfo?body=${Uri.encodeComponent(message)}'; + break; + case 'whatsapp': + url = + 'https://api.whatsapp.com/send?phone=$contactInfo&text=${Uri.encodeComponent(message)}'; + break; + case 'email': + url = + 'mailto:$contactInfo?subject=Subject&body=${Uri.encodeComponent(message)}'; + break; + default: + return; + } + } else if (Platform.isAndroid) { + switch (method) { + case 'phone': + url = 'tel:$contactInfo'; + break; + + case 'sms': + url = 'sms:$contactInfo?body=${Uri.encodeComponent(message)}'; + break; + case 'whatsapp': + // Check if WhatsApp is installed + final bool whatsappInstalled = + await canLaunchUrl(Uri.parse('whatsapp://')); + if (whatsappInstalled) { + url = + 'whatsapp://send?phone=$contactInfo&text=${Uri.encodeComponent(message)}'; + } else { + // Provide an alternative action, such as opening the WhatsApp Web API + url = + 'https://api.whatsapp.com/send?phone=$contactInfo&text=${Uri.encodeComponent(message)}'; + } + break; + case 'email': + url = + 'mailto:$contactInfo?subject=Subject&body=${Uri.encodeComponent(message)}'; + break; + default: + return; + } + } else { + return; + } + + if (await canLaunchUrl(Uri.parse(url))) { + await launchUrl(Uri.parse(url)); + } else {} +} + + +================================================== +FILE PATH: ./lib/controller/functions/device_info.dart +================================================== + +import 'dart:io'; + +import 'package:device_info_plus/device_info_plus.dart'; + +import '../../print.dart'; + +class DeviceInfoPlus { + static List> deviceDataList = []; + + static Future>> getDeviceInfo() async { + final DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin(); + + try { + if (Platform.isAndroid) { + AndroidDeviceInfo androidInfo = await deviceInfoPlugin.androidInfo; + Map deviceData = { + 'platform': 'Android', + 'brand': androidInfo.brand, + 'model': androidInfo.model, + 'androidId': androidInfo.device, + 'versionRelease': androidInfo.version.release, + 'sdkVersion': androidInfo.version.sdkInt, + 'manufacturer': androidInfo.manufacturer, + 'isPhysicalDevice': androidInfo.isPhysicalDevice, + 'serialNumber': androidInfo.fingerprint, + 'fingerprint': androidInfo.fingerprint, + 'type': androidInfo.type, + 'data': androidInfo.data, + 'version': androidInfo.version, + 'tags': androidInfo.tags, + 'display': androidInfo.display, + }; + // Log.print('deviceData: ${deviceData}'); + deviceDataList.add(deviceData); + } else if (Platform.isIOS) { + IosDeviceInfo iosInfo = await deviceInfoPlugin.iosInfo; + Map deviceData = { + 'brand': 'Apple', + 'model': iosInfo.model, + 'systemName': iosInfo.systemName, + 'systemVersion': iosInfo.systemVersion, + 'utsname': iosInfo.utsname, + 'isPhysicalDevice': iosInfo.isPhysicalDevice, + 'identifierForVendor': iosInfo.identifierForVendor, + 'name': iosInfo.name, + 'localizedModel': iosInfo.localizedModel, + }; + deviceDataList.add(deviceData); + } else if (Platform.isMacOS) { + MacOsDeviceInfo macInfo = await deviceInfoPlugin.macOsInfo; + Map deviceData = { + 'platform': 'macOS', + 'model': macInfo.model, + 'version': macInfo.systemGUID, + }; + deviceDataList.add(deviceData); + } else if (Platform.isWindows) { + WindowsDeviceInfo windowsInfo = await deviceInfoPlugin.windowsInfo; + Map deviceData = { + 'platform': 'Windows', + 'manufacturer': windowsInfo.computerName, + 'version': windowsInfo.majorVersion, + 'deviceId': windowsInfo.deviceId, + 'userName': windowsInfo.userName, + 'productName': windowsInfo.productName, + 'installDate': windowsInfo.installDate, + 'productId': windowsInfo.productId, + 'numberOfCores': windowsInfo.numberOfCores, + 'systemMemoryInMegabytes': windowsInfo.systemMemoryInMegabytes, + }; + deviceDataList.add(deviceData); + } else if (Platform.isLinux) { + LinuxDeviceInfo linuxInfo = await deviceInfoPlugin.linuxInfo; + Map deviceData = { + 'platform': 'Linux', + 'manufacturer': linuxInfo.name, + 'version': linuxInfo.version, + }; + deviceDataList.add(deviceData); + } + } catch (e) {} + + return deviceDataList; + } + + // Method to print all device data + static void printDeviceInfo() { + for (Map deviceData in deviceDataList) { + 'Version: ${deviceData['version'] ?? deviceData['versionRelease'] ?? 'N/A'}'; + } + } +} + + +================================================== +FILE PATH: ./lib/controller/functions/audio_record1.dart +================================================== + +import 'dart:io'; + +// import 'package:flutter_sound/flutter_sound.dart'; +import 'package:path_provider/path_provider.dart'; + +import 'package:get/get.dart'; +import 'package:just_audio/just_audio.dart'; +import 'package:record/record.dart'; + +class AudioRecorderController extends GetxController { + AudioPlayer audioPlayer = AudioPlayer(); + AudioRecorder recorder = AudioRecorder(); + + bool isRecording = false; + bool isPlaying = false; + bool isPaused = false; + String filePath = ''; + String? selectedFilePath; + double currentPosition = 0; + double totalDuration = 0; + + Future playSoundFromAssets(String sound) async { + try { + await audioPlayer.setAsset(sound); + audioPlayer.play(); + } catch (e) { + print("Error playing sound: $e"); + } + } + + // Start recording + Future startRecording() async { + final bool isPermissionGranted = await recorder.hasPermission(); + if (!isPermissionGranted) { + // RecordingPermissionException('l'); + return; + } + + final directory = await getApplicationDocumentsDirectory(); + // Generate a unique file name using the current timestamp + String fileName = + // '${DateTime.now().year}-${DateTime.now().month}-${DateTime.now().day}_${Get.find().rideId}.m4a'; + '${DateTime.now().year}-${DateTime.now().month}-${DateTime.now().day}.m4a'; + filePath = '${directory.path}/$fileName'; + + // Define the configuration for the recording + const config = RecordConfig( + // Specify the format, encoder, sample rate, etc., as needed + encoder: AudioEncoder.aacLc, // For example, using AAC codec + sampleRate: 44100, // Sample rate + bitRate: 128000, // Bit rate + ); + + // Start recording to file with the specified configuration + await recorder.start(config, path: filePath); + + isRecording = true; + update(); + } + + // Pause recording + Future pauseRecording() async { + if (isRecording && !isPaused) { + await recorder.pause(); + isPaused = true; + update(); + } + } + + // Resume recording + Future resumeRecording() async { + if (isRecording && isPaused) { + await recorder.resume(); + isPaused = false; + update(); + } + } + + // Stop recording + Future stopRecording() async { + recorder.stop(); + isRecording = false; + isPaused = false; + update(); + } + + // Play the selected recorded file + Future playRecordedFile(String filePath) async { + await audioPlayer.setFilePath(filePath); + totalDuration = audioPlayer.duration?.inSeconds.toDouble() ?? 0; + audioPlayer.play(); + + isPlaying = true; + isPaused = false; + audioPlayer.positionStream.listen((position) { + currentPosition = position.inSeconds.toDouble(); + update(); + }); + selectedFilePath = filePath; + update(); + } + + // Pause playback + Future pausePlayback() async { + if (isPlaying && !isPaused) { + await audioPlayer.pause(); + isPaused = true; + update(); + } + } + + // Resume playback + Future resumePlayback() async { + if (isPlaying && isPaused) { + await audioPlayer.play(); + isPaused = false; + update(); + } + } + + // Stop playback + Future stopPlayback() async { + await audioPlayer.stop(); + isPlaying = false; + isPaused = false; + currentPosition = 0; + update(); + } + + // Get a list of recorded files + Future> getRecordedFiles() async { + final directory = await getApplicationDocumentsDirectory(); + final files = await directory.list().toList(); + return files + .map((file) => file.path) + .where((path) => path.endsWith('.m4a')) + .toList(); + } + + // Delete a specific recorded file + Future deleteRecordedFile(String filePath) async { + final file = File(filePath); + if (await file.exists()) { + await file.delete(); + update(); + } + } + + // Delete all recorded files + Future deleteAllRecordedFiles() async { + final directory = await getApplicationDocumentsDirectory(); + final files = await directory.list().toList(); + for (final file in files) { + if (file.path.endsWith('.m4a')) { + await deleteRecordedFile(file.path); + } + } + } + + @override + void onClose() { + audioPlayer.dispose(); + recorder.dispose(); + super.onClose(); + } +} + + +================================================== +FILE PATH: ./lib/controller/functions/secure_storage.dart +================================================== + +import 'dart:convert'; + +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/info.dart'; +import 'package:Intaleq/controller/auth/login_controller.dart'; +import 'package:jwt_decoder/jwt_decoder.dart'; +import 'package:secure_string_operations/secure_string_operations.dart'; + +import '../../constant/char_map.dart'; +import '../../constant/links.dart'; +import '../../main.dart'; +import '../../print.dart'; +import 'crud.dart'; +import 'encrypt_decrypt.dart'; + +class SecureStorage { + void saveData(String key, value) async { + await storage.write(key: key, value: value); + } + + Future readData(String boxName) async { + final String? value = await storage.read(key: boxName); + return value.toString(); + } +} + +const List keysToFetch = [ + 'serverPHP', + // 'seferAlexandriaServer', + // 'seferPaymentServer', + // 'seferCairoServer', + // 'seferGizaServer', +]; + +class AppInitializer { + List> links = []; + + Future initializeApp() async { + if (box.read(BoxName.jwt) == null) { + await LoginController().getJWT(); + } else { + bool isTokenExpired = JwtDecoder.isExpired( + r(box.read(BoxName.jwt)).toString().split(AppInformation.addd)[0]); + + if (isTokenExpired) { + await LoginController().getJWT(); + } + } + + // await getKey(); + } + + getAIKey(String key1) async { + if (box.read(BoxName.firstTimeLoadKey) == null) { + var res = + await CRUD().get(link: AppLink.getapiKey, payload: {"keyName": key1}); + if (res != 'failure') { + var d = jsonDecode(res)['message']; + storage.write(key: key1, value: d[key1].toString()); + } else {} + } + } + + Future getKey() async { + try { + var res = + await CRUD().get(link: AppLink.getLocationAreaLinks, payload: {}); + if (res != 'failure') { + links = List>.from(jsonDecode(res)['message']); + await box.remove(BoxName.locationName); + await box.remove(BoxName.basicLink); + await box.remove(links[4]['name']); + await box.remove(links[1]['name']); + await box.remove(links[2]['name']); + await box.write(BoxName.locationName, links); + await box.write(BoxName.basicLink, (links[0]['server_link'])); + await box.write(links[2]['name'], (links[2]['server_link'])); + await box.write(links[1]['name'], (links[3]['server_link'])); + await box.write(links[3]['name'], (links[1]['server_link'])); + await box.write(BoxName.paymentLink, (links[4]['server_link'])); + } + } catch (e) {} + } +} + + +================================================== +FILE PATH: ./lib/controller/functions/location_permission.dart +================================================== + +import 'package:location/location.dart'; +import 'package:get/get.dart'; + +class LocationPermissions { + late Location location; + + Future locationPermissions() async { + location = Location(); + var permissionStatus = await location.requestPermission(); + if (permissionStatus == PermissionStatus.denied) { + // The user denied the location permission. + Get.defaultDialog(title: 'GPS Required Allow !.'.tr, middleText: ''); + return null; + } + } +} + + +================================================== +FILE PATH: ./lib/controller/functions/sms_controller.dart +================================================== + +import 'dart:convert'; + +import 'package:Intaleq/constant/api_key.dart'; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/info.dart'; +import 'package:Intaleq/constant/links.dart'; +import 'package:Intaleq/controller/auth/login_controller.dart'; +import 'package:Intaleq/env/env.dart'; +import 'package:Intaleq/main.dart'; +import 'package:Intaleq/views/widgets/elevated_btn.dart'; +import 'package:get/get.dart'; +import 'package:http/http.dart' as http; + +import '../../print.dart'; +import '../auth/register_controller.dart'; +import 'crud.dart'; + +class SmsEgyptController extends GetxController { + var headers = {'Content-Type': 'application/json'}; + Future getSender() async { + var res = await CRUD().get(link: AppLink.getSender, payload: {}); + if (res != 'failure') { + var d = jsonDecode(res)['message'][0]['senderId'].toString(); + return d; + } else { + return "Sefer Egy"; + } + } + + Future sendSmsEgypt(String phone, otp) async { + // String sender = await getSender(); + // var body = jsonEncode({ + // "username": 'Sefer', + // "password": AK.smsPasswordEgypt, + // "message": "${AppInformation.appName} app code is $otp\ncopy it to app", + // "language": box.read(BoxName.lang) == 'en' ? "e" : 'r', + // "sender": sender, //"Sefer Egy", + // "receiver": phone + // }); + + var res = await CRUD().post(link: AppLink.sendSmsFromPHP, payload: { + "language": box.read(BoxName.lang) == 'en' ? "e" : 'r', + "receiver": phone, + }); + if (res != 'failure') { + // var res = await http.post( + // Uri.parse(AppLink.sendSms), + // body: body, + // headers: headers, + // ); + + // else if (jsonDecode(res)['message'].toString() == + // "Invalid Sender with Connection") { + // + // } + // else { + Get.defaultDialog( + title: 'You will receive a code in SMS message'.tr, + middleText: '', + confirm: MyElevatedButton( + title: 'OK'.tr, + onPressed: () { + Get.back(); + })); + } else { + await CRUD().post(link: AppLink.updatePhoneInvalidSMSPassenger, payload: { + "phone_number": + '+2${Get.find().phoneController.text}' + }); + box.write(BoxName.phoneDriver, + '+2${Get.find().phoneController.text}'); + box.write(BoxName.isVerified, '1'); + + await Get.put(LoginController()).loginUsingCredentials( + box.read(BoxName.driverID).toString(), + box.read(BoxName.emailDriver).toString(), + ); + } + } + + Future checkCredit(String phone, otp) async { + var res = await http.post( + Uri.parse(AppLink.checkCredit), + body: { + "username": AppInformation.appName, + "password": AK.smsPasswordEgypt, + }, + headers: headers, + ); + } + + Future sendSmsWithValidaty(String phone, otp) async { + var res = await http.post( + Uri.parse(AppLink.checkCredit), + body: { + "username": AppInformation.appName, + "password": AK.smsPasswordEgypt, + "message": "This is an example SMS message.", + "language": box.read(BoxName.lang) == 'en' ? "e" : 'r', + "sender": "Kazumi", // todo add sefer sender name + "receiver": "2$phone", + "validity": "10", + "StartTime": DateTime.now().toString() // "1/1/2024 10:00:00" + }, + headers: headers, + ); + } + + Future sendSmsStatus(String smsid) async { + var res = await http.post( + Uri.parse(AppLink.checkCredit), + body: { + "username": AppInformation.appName, + "password": AK.smsPasswordEgypt, + "smsid": smsid //"00b77dfc-5b8f-474d-9def-9f0158b70f98" + }, + headers: headers, + ); + } + + Future sendWhatsAppAuth(String to, String token) async { + var headers = { + 'Authorization': 'Bearer ${Env.whatsapp}', + 'Content-Type': 'application/json' + }; + var request = http.Request( + 'POST', + Uri.parse( + 'https://graph.facebook.com/v20.0/${Env.whatappID}/messages')); + request.body = json.encode({ + "messaging_product": "whatsapp", + "to": to, //"962798583052", + "type": "template", + "template": { + "name": "sefer1", + "language": {"code": "en"}, + "components": [ + { + "type": "body", + "parameters": [ + { + "type": "text", + "text": token, + } + ] + } + ] + } + }); + request.headers.addAll(headers); + + http.StreamedResponse response = await request.send(); + + if (response.statusCode == 200) { + print(await response.stream.bytesToString()); + Get.defaultDialog( + title: 'You will receive a code in WhatsApp Messenger'.tr, + middleText: '', + confirm: MyElevatedButton( + title: 'OK'.tr, + onPressed: () { + Get.back(); + })); + } else { + print(response.reasonPhrase); + } + } +} + + +================================================== +FILE PATH: ./lib/controller/functions/location_controller.dart +================================================== + +// import 'dart:async'; + +// import 'package:get/get.dart'; +// import 'package:google_maps_flutter/google_maps_flutter.dart'; +// import 'package:location/location.dart'; +// import 'package:Intaleq/constant/box_name.dart'; +// import 'package:Intaleq/constant/links.dart'; +// import 'package:Intaleq/controller/functions/crud.dart'; +// import 'package:Intaleq/controller/home/payment/captain_wallet_controller.dart'; +// import 'package:Intaleq/main.dart'; + +// // LocationController.dart +// class LocationController extends GetxController { +// LocationData? _currentLocation; +// late Location location; +// bool isLoading = false; +// late double heading = 0; +// late double accuracy = 0; +// late double previousTime = 0; +// late double latitude; +// late double totalDistance = 0; +// late double longitude; +// late DateTime time; +// late double speed = 0; +// late double speedAccuracy = 0; +// late double headingAccuracy = 0; +// bool isActive = false; +// late LatLng myLocation; +// String totalPoints = '0'; +// LocationData? get currentLocation => _currentLocation; +// Timer? _locationTimer; + +// @override +// void onInit() async { +// super.onInit(); +// location = Location(); +// getLocation(); +// // startLocationUpdates(); + +// totalPoints = Get.put(CaptainWalletController()).totalPoints; +// } + +// Future startLocationUpdates() async { +// if (box.read(BoxName.driverID) != null) { +// _locationTimer = +// Timer.periodic(const Duration(seconds: 5), (timer) async { +// try { +// totalPoints = Get.find().totalPoints; + +// // if (isActive) { +// if (double.parse(totalPoints) > -300) { +// await getLocation(); + +// // if (box.read(BoxName.driverID) != null) { +// await CRUD() +// .post(link: AppLink.addCarsLocationByPassenger, payload: { +// 'driver_id': box.read(BoxName.driverID).toString(), +// 'latitude': myLocation.latitude.toString(), +// 'longitude': myLocation.longitude.toString(), +// 'heading': heading.toString(), +// 'speed': (speed * 3.6).toStringAsFixed(1), +// 'distance': totalDistance == 0 +// ? '0' +// : totalDistance < 1 +// ? totalDistance.toStringAsFixed(3) +// : totalDistance.toStringAsFixed(1), +// 'status': box.read(BoxName.statusDriverLocation).toString() +// }); +// } + +// // } +// } catch (e) { +// // Handle the error gracefully +// } +// }); +// } +// } + +// void stopLocationUpdates() { +// _locationTimer?.cancel(); +// } + +// Future getLocation() async { +// // isLoading = true; +// // update(); +// bool serviceEnabled; +// PermissionStatus permissionGranted; + +// // Check if location services are enabled +// serviceEnabled = await location.serviceEnabled(); +// if (!serviceEnabled) { +// serviceEnabled = await location.requestService(); +// if (!serviceEnabled) { +// // Location services are still not enabled, handle the error +// return; +// } +// } + +// // Check if the app has permission to access location +// permissionGranted = await location.hasPermission(); +// if (permissionGranted == PermissionStatus.denied) { +// permissionGranted = await location.requestPermission(); +// if (permissionGranted != PermissionStatus.granted) { +// // Location permission is still not granted, handle the error +// return; +// } +// } + +// // Configure location accuracy +// // LocationAccuracy desiredAccuracy = LocationAccuracy.high; + +// // Get the current location +// LocationData _locationData = await location.getLocation(); +// myLocation = +// (_locationData.latitude != null && _locationData.longitude != null +// ? LatLng(_locationData.latitude!, _locationData.longitude!) +// : null)!; +// speed = _locationData.speed!; +// heading = _locationData.heading!; +// // Calculate the distance between the current location and the previous location +// // if (Get.find().rideId == 'rideId') { +// // if (previousTime > 0) { +// // double distance = calculateDistanceInKmPerHour( +// // previousTime, _locationData.time, speed); +// // totalDistance += distance; +// // } + +// // previousTime = _locationData.time!; +// // } +// // Print location details +// // isLoading = false; +// update(); +// } + +// double calculateDistanceInKmPerHour( +// double? startTime, double? endTime, double speedInMetersPerSecond) { +// // Calculate the time difference in hours +// double timeDifferenceInHours = (endTime! - startTime!) / 1000 / 3600; + +// // Convert speed to kilometers per hour +// double speedInKmPerHour = speedInMetersPerSecond * 3.6; + +// // Calculate the distance in kilometers +// double distanceInKilometers = speedInKmPerHour * timeDifferenceInHours; + +// return distanceInKilometers; +// } +// } + + +================================================== +FILE PATH: ./lib/controller/functions/securty_check.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:get/get.dart'; + +class SecurityChecks { + static const platform = MethodChannel( + 'com.Intaleq.intaleq/security'); // Choose a unique channel name + + static Future isDeviceCompromised() async { + try { + final bool result = await platform + .invokeMethod('isNativeRooted'); // Invoke the native method + return result; + } on PlatformException catch (e) { + print("Failed to check security status: ${e.message}"); + return true; // Treat platform errors as a compromised device (for safety) + } + } + + static isDeviceRootedFromNative(BuildContext context) async { + bool compromised = await isDeviceCompromised(); + if (compromised) { + showDialog( + barrierDismissible: false, + context: context, + builder: (context) => AlertDialog( + title: Text("Security Warning".tr), + content: Text( + "Your device appears to be compromised. The app will now close." + .tr), + actions: [ + TextButton( + onPressed: () { + SystemNavigator.pop(); // Close the app + }, + child: Text("OK"), + ), + ], + ), + ); + } else { + // Continue with normal app flow + print("Device is secure."); + } + } +} + + +================================================== +FILE PATH: ./lib/controller/functions/scan_id_card.dart +================================================== + +// import 'package:credit_card_scanner/credit_card_scanner.dart'; +// import 'package:get/get.dart'; +// +// class ScanIdCard extends GetxController { +// CardDetails? _cardDetails; +// CardScanOptions scanOptions = const CardScanOptions( +// scanCardHolderName: true, +// enableDebugLogs: true, +// validCardsToScanBeforeFinishingScan: 5, +// possibleCardHolderNamePositions: [ +// CardHolderNameScanPosition.aboveCardNumber, +// ], +// ); +// +// Future scanCard() async { +// final CardDetails? cardDetails = +// await CardScanner.scanCard(scanOptions: scanOptions); +// if (cardDetails == null) { +// return; +// } +// +// _cardDetails = cardDetails; +// update(); +// } +// } + + +================================================== +FILE PATH: ./lib/controller/functions/call_controller.dart +================================================== + +// import 'package:SEFER/constant/api_key.dart'; +// import 'package:SEFER/controller/functions/crud.dart'; +// import 'package:SEFER/controller/home/map_passenger_controller.dart'; +// import 'package:agora_rtc_engine/agora_rtc_engine.dart'; +// import 'package:get/get.dart'; +// import 'package:permission_handler/permission_handler.dart'; + +// import '../../constant/box_name.dart'; +// import '../firebase/firbase_messge.dart'; +// import '../../main.dart'; + +// class CallController extends GetxController { +// String channelName = ''; // Get.find().rideId; +// String token = ''; +// // int uid = int.parse(box.read(BoxName.phoneDriver)); // uid of the local user +// int uid = 0; +// int? remoteUid; // uid of the remote user +// bool _isJoined = false; // Indicates if the local user has joined the channel +// String status = ''; +// late RtcEngine agoraEngine; // Agora engine instance + +// @override +// void onInit() { +// super.onInit(); +// // if (box.read(BoxName.passengerID) != null) { +// channelName = Get.find().rideId; // 'sefer300'; // +// remoteUid = int.parse(Get.find().driverPhone); +// uid = int.parse(box.read(BoxName.phone)); +// // } else { +// // channelName = Get.find().rideId; // 'sefer300'; // +// // remoteUid = int.parse(Get.find().passengerPhone); +// // uid = int.parse(box.read(BoxName.phoneDriver)); +// // } + +// initAgoraFull(); +// } + +// initAgoraFull() async { +// await fetchToken(); +// // Set up an instance of Agora engine +// setupVoiceSDKEngine(); +// // join(); +// FirebaseMessagesController().sendNotificationToPassengerToken( +// 'Call Income from Passenger', +// '${'You have call from Passenger'.tr} ${box.read(BoxName.name)}', +// Get.find().driverToken, +// [ +// token, +// channelName, +// uid.toString(), +// remoteUid.toString(), +// ], +// 'iphone_ringtone.wav', +// ); +// join(); +// } + +// @override +// void onClose() { +// agoraEngine.leaveChannel(); +// super.onClose(); +// } + +// Future setupVoiceSDKEngine() async { +// // retrieve or request microphone permission +// await [Permission.microphone].request(); + +// //create an instance of the Agora engine +// agoraEngine = createAgoraRtcEngine(); +// await agoraEngine.initialize(RtcEngineContext(appId: AK.agoraAppId)); +// // Register the event handler +// agoraEngine.registerEventHandler( +// RtcEngineEventHandler( +// onJoinChannelSuccess: (RtcConnection connection, int elapsed) { +// // Get.snackbar( +// // "Local user uid:${connection.localUid} joined the channel", ''); +// status = 'joined'.tr; +// _isJoined = true; +// update(); +// }, +// onUserJoined: (RtcConnection connection, int remoteUid, int elapsed) { +// // Get.snackbar("Remote user uid:$remoteUid joined the channel", ''); +// status = Get.find().driverName.toString(); +// ' joined'.tr; +// remoteUid = remoteUid; +// update(); +// }, +// onUserOffline: (RtcConnection connection, int? remoteUid, +// UserOfflineReasonType reason) { +// // Get.snackbar("Remote user uid:$remoteUid left the channel", ''); +// status = 'Call left'.tr; +// remoteUid = null; +// update(); +// }, +// ), +// ); +// } + +// void join() async { +// // Set channel options including the client role and channel profile +// ChannelMediaOptions options = const ChannelMediaOptions( +// clientRoleType: ClientRoleType.clientRoleBroadcaster, +// channelProfile: ChannelProfileType.channelProfileCommunication, +// ); + +// await agoraEngine.joinChannel( +// token: token, +// channelId: channelName, +// options: options, +// uid: uid, +// ); +// } + +// void leave() { +// _isJoined = false; +// remoteUid = null; +// update(); +// agoraEngine.leaveChannel(); +// } + +// // Clean up the resources when you leave +// @override +// void dispose() async { +// await agoraEngine.leaveChannel(); +// super.dispose(); +// } + +// fetchToken() async { +// var res = await CRUD() +// .getAgoraToken(channelName: channelName, uid: uid.toString()); +// token = res; +// update(); +// } +// } + + +================================================== +FILE PATH: ./lib/controller/functions/encrypt_decrypt.dart +================================================== + +import 'package:Intaleq/env/env.dart'; +import 'package:encrypt/encrypt.dart' as encrypt; +import 'package:flutter/foundation.dart'; +import 'package:secure_string_operations/secure_string_operations.dart'; + +import '../../constant/char_map.dart'; + +class EncryptionHelper { + static EncryptionHelper? _instance; + + late final encrypt.Key key; + late final encrypt.IV iv; + + EncryptionHelper._(this.key, this.iv); + static EncryptionHelper get instance { + if (_instance == null) { + throw Exception( + "EncryptionHelper is not initialized. Call `await EncryptionHelper.initialize()` in main."); + } + return _instance!; + } + + /// Initializes and stores the instance globally + static Future initialize() async { + if (_instance != null) { + debugPrint("EncryptionHelper is already initialized."); + return; // Prevent re-initialization + } + debugPrint("Initializing EncryptionHelper..."); + var keyOfApp = r(Env.keyOfApp).toString().split(Env.addd)[0]; + var initializationVector = + r(Env.initializationVector).toString().split(Env.addd)[0]; + + // Set the global instance + _instance = EncryptionHelper._( + encrypt.Key.fromUtf8(keyOfApp!), + encrypt.IV.fromUtf8(initializationVector!), + ); + debugPrint("EncryptionHelper initialized successfully."); + } + + /// Encrypts a string + String encryptData(String plainText) { + try { + final encrypter = + encrypt.Encrypter(encrypt.AES(key, mode: encrypt.AESMode.cbc)); + final encrypted = encrypter.encrypt(plainText, iv: iv); + return encrypted.base64; + } catch (e) { + debugPrint('Encryption Error: $e'); + return ''; + } + } + + /// Decrypts a string + String decryptData(String encryptedText) { + try { + final encrypter = + encrypt.Encrypter(encrypt.AES(key, mode: encrypt.AESMode.cbc)); + final encrypted = encrypt.Encrypted.fromBase64(encryptedText); + return encrypter.decrypt(encrypted, iv: iv); + } catch (e) { + debugPrint('Decryption Error: $e'); + return ''; + } + } +} + +r(String string) { + return X.r(X.r(X.r(string, cn), cC), cs).toString(); +} + +c(String string) { + return X.c(X.c(X.c(string, cn), cC), cs).toString(); +} + + +================================================== +FILE PATH: ./lib/controller/functions/tts.dart +================================================== + +import 'package:Intaleq/constant/box_name.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_tts/flutter_tts.dart'; +import 'package:get/get.dart'; + +import '../../main.dart'; + +class TextToSpeechController extends GetxController { + final flutterTts = FlutterTts(); + + @override + void onInit() { + super.onInit(); + initTts(); + } + + @override + void onClose() { + flutterTts.stop(); // Stop any ongoing TTS + super.onClose(); + } + + // Initialize TTS engine with language check + Future initTts() async { + try { + String langCode = box.read(BoxName.lang) ?? 'en-US'; + bool isAvailable = await flutterTts.isLanguageAvailable(langCode); + + // If language is unavailable, default to 'en-US' + if (!isAvailable) { + langCode = 'en-US'; + } + + await flutterTts.setLanguage(langCode); + await flutterTts.setSpeechRate(0.5); // Adjust speech rate + await flutterTts.setVolume(1.0); // Set volume + } catch (error) { + Get.snackbar('Error', 'Failed to initialize TTS: $error'); + } + } + + // Function to speak the given text + Future speakText(String text) async { + try { + await flutterTts.awaitSpeakCompletion(true); + await flutterTts.speak(text); + } catch (error) { + Get.snackbar('Error', 'Failed to speak text: $error'); + } + } +} + + +================================================== +FILE PATH: ./lib/controller/functions/upload_image.dart +================================================== + +import 'dart:convert'; +import 'dart:io'; + +import 'package:Intaleq/constant/api_key.dart'; +import 'package:get/get.dart'; +import 'package:http/http.dart' as http; +import 'package:image_cropper/image_cropper.dart'; +import 'package:image_picker/image_picker.dart'; +import 'package:path/path.dart'; +import 'package:secure_string_operations/secure_string_operations.dart'; + +import '../../constant/box_name.dart'; +import '../../constant/char_map.dart'; +import '../../constant/colors.dart'; +import '../../constant/info.dart'; +import '../../main.dart'; + +class ImageController extends GetxController { + File? myImage; + bool isloading = false; + CroppedFile? croppedFile; + final picker = ImagePicker(); + var image; + choosImage(String link, String imageType) async { + final pickedImage = await picker.pickImage(source: ImageSource.gallery); + image = File(pickedImage!.path); + croppedFile = await ImageCropper().cropImage( + sourcePath: image!.path, + uiSettings: [ + AndroidUiSettings( + toolbarTitle: 'Cropper'.tr, + toolbarColor: AppColor.blueColor, + toolbarWidgetColor: AppColor.yellowColor, + initAspectRatio: CropAspectRatioPreset.original, + lockAspectRatio: false), + IOSUiSettings( + title: 'Cropper'.tr, + ), + ], + ); + myImage = File(pickedImage.path); + isloading = true; + update(); +// Save the cropped image + File savedCroppedImage = File(croppedFile!.path); + try { + await uploadImage( + savedCroppedImage, + { + 'driverID': + box.read(BoxName.driverID) ?? box.read(BoxName.passengerID), + 'imageType': imageType + }, + link, + ); + } catch (e) { + Get.snackbar('Image Upload Failed'.tr, e.toString(), + backgroundColor: AppColor.redColor); + } finally { + isloading = false; + update(); + } + } + + uploadImage(File file, Map data, String link) async { + var request = http.MultipartRequest( + 'POST', + Uri.parse(link), //'https://ride.mobile-app.store/uploadImage1.php' + ); + + var length = await file.length(); + var stream = http.ByteStream(file.openRead()); + var multipartFile = http.MultipartFile( + 'image', + stream, + length, + filename: basename(file.path), + ); + request.headers.addAll({ + 'Authorization': + 'Bearer ${X.r(X.r(X.r(box.read(BoxName.jwt), cn), cC), cs).toString().split(AppInformation.addd)[0]}' + }); + // Set the file name to the driverID + request.files.add( + http.MultipartFile( + 'image', + stream, + length, + filename: '${box.read(BoxName.driverID)}.jpg', + ), + ); + data.forEach((key, value) { + request.fields[key] = value; + }); + var myrequest = await request.send(); + var res = await http.Response.fromStream(myrequest); + if (res.statusCode == 200) { + return jsonDecode(res.body); + } else { + throw Exception( + 'Failed to upload image: ${res.statusCode} - ${res.body}'); + } + } +} + + +================================================== +FILE PATH: ./lib/controller/functions/custom_pant.dart +================================================== + +import 'package:flutter/material.dart'; + +class LineChartPainter extends CustomPainter { + final List data; + + LineChartPainter(this.data); + + @override + void paint(Canvas canvas, Size size) { + // Calculate the scale factor. + final scaleFactor = size.height / 240; + + // Draw the line chart. + for (var i = 0; i < data.length - 1; i++) { + final x1 = i * size.width / data.length; + final y1 = data[i] * scaleFactor; + final x2 = (i + 1) * size.width / data.length; + final y2 = data[i + 1] * scaleFactor; + + canvas.drawLine(Offset(x1, y1), Offset(x2, y2), Paint()); + } + } + + @override + bool shouldRepaint(LineChartPainter oldDelegate) => false; +} + + +================================================== +FILE PATH: ./lib/controller/functions/remove_account.dart +================================================== + +// import 'package:ride/controller/functions/crud.dart'; + +// class RemoveAccount { + +// void removeAccount()async{ +// var res=await CRUD().post(link: link) +// } +// } + +================================================== +FILE PATH: ./lib/controller/functions/crud.dart +================================================== + +import 'dart:async'; +import 'dart:convert'; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/links.dart'; +import 'package:Intaleq/controller/auth/login_controller.dart'; +import 'package:Intaleq/main.dart'; +import 'package:get/get.dart'; +import 'package:http/http.dart' as http; +import 'package:Intaleq/env/env.dart'; + +import '../../constant/api_key.dart'; + +import '../../print.dart'; +import '../../views/widgets/elevated_btn.dart'; +import '../../views/widgets/error_snakbar.dart'; +import 'encrypt_decrypt.dart'; +import 'upload_image.dart'; +import 'dart:io'; + +import 'network/net_guard.dart'; + +class CRUD { + final NetGuard _netGuard = NetGuard(); + final _client = http.Client(); + + /// Stores the signature of the last logged error to prevent duplicates. + static String _lastErrorSignature = ''; + + /// Stores the timestamp of the last logged error. + static DateTime _lastErrorTimestamp = DateTime(2000); + + /// The minimum time that must pass before logging the same error again. + static const Duration _errorLogDebounceDuration = Duration(minutes: 1); + + /// Asynchronously logs an error to the server with debouncing to prevent log flooding. + static Future addError( + String error, String details, String where) async { + try { + final currentErrorSignature = '$where-$error'; + final now = DateTime.now(); + + if (currentErrorSignature == _lastErrorSignature && + now.difference(_lastErrorTimestamp) < _errorLogDebounceDuration) { + return; + } + + _lastErrorSignature = currentErrorSignature; + _lastErrorTimestamp = now; + + final userId = + box.read(BoxName.driverID) ?? box.read(BoxName.passengerID); + final userType = + box.read(BoxName.driverID) != null ? 'Driver' : 'Passenger'; + final phone = box.read(BoxName.phone) ?? box.read(BoxName.phoneDriver); + + // Fire-and-forget call to prevent infinite loops if the logger itself fails. + CRUD().post( + link: AppLink.addError, + payload: { + 'error': error.toString(), + 'userId': userId.toString(), + 'userType': userType, + 'phone': phone.toString(), + 'device': where, + 'details': details, + }, + ); + } catch (e) {} + } + + /// Centralized private method to handle all API requests. + /// Includes retry logic, network checking, and standardized error handling. + Future _makeRequest({ + required String link, + Map? payload, + required Map headers, + }) async { + // timeouts أقصر + const connectTimeout = Duration(seconds: 6); + const receiveTimeout = Duration(seconds: 10); + + Future doPost() { + final url = Uri.parse(link); + // استخدم _client بدل http.post + return _client + .post(url, body: payload, headers: headers) + .timeout(connectTimeout + receiveTimeout); + } + + http.Response response; + try { + // retry ذكي: محاولة واحدة إضافية فقط لأخطاء شبكة/5xx + try { + response = await doPost(); + } on SocketException catch (_) { + // محاولة ثانية واحدة فقط + response = await doPost(); + } on TimeoutException catch (_) { + response = await doPost(); + } + + final sc = response.statusCode; + final body = response.body; + Log.print('request: ${response.request}'); + Log.print('body: ${body}'); + + // 2xx + if (sc >= 200 && sc < 300) { + try { + final jsonData = jsonDecode(body); + return jsonData; // لا تعيد 'success' فقط؛ أعِد الجسم كله + } catch (e, st) { + // لا تسجّل كخطأ شبكي لكل حالة؛ فقط معلومات + addError('JSON Decode Error', 'Body: $body\n$st', + 'CRUD._makeRequest $link'); + return 'failure'; + } + } + + // 401 → دع الطبقة العليا تتعامل مع التجديد + if (sc == 401) { + await Get.put(LoginController()).getJWT(); + // لا تستدع getJWT هنا كي لا نضاعف الرحلات + return 'token_expired'; + } + + // 5xx: لا تعِد المحاولة هنا (حاولنا مرة ثانية فوق) + if (sc >= 500) { + addError( + 'Server 5xx', 'SC: $sc\nBody: $body', 'CRUD._makeRequest $link'); + return 'failure'; + } + + // 4xx أخرى: أعد الخطأ بدون تسجيل مكرر + return 'failure'; + } on SocketException { + _netGuard.notifyOnce((title, msg) => mySnackeBarError(msg)); + return 'no_internet'; + } on TimeoutException { + return 'failure'; + } catch (e, st) { + addError('HTTP Request Exception: $e', 'Stack: $st', + 'CRUD._makeRequest $link'); + return 'failure'; + } + } + + /// Performs a standard authenticated POST request. + /// Automatically handles token renewal. + Future post({ + required String link, + Map? payload, + }) async { + String token = r(box.read(BoxName.jwt)).toString().split(Env.addd)[0]; + // if (JwtDecoder.isExpired(token)) { + // await Get.put(LoginController()).getJWT(); + // token = r(box.read(BoxName.jwt)).toString().split(Env.addd)[0]; + // } + + final headers = { + "Content-Type": "application/x-www-form-urlencoded", + 'Authorization': 'Bearer $token' + }; + + return await _makeRequest( + link: link, + payload: payload, + headers: headers, + ); + } + + /// Performs a standard authenticated GET request (using POST method as per original code). + /// Automatically handles token renewal. + Future get({ + required String link, + Map? payload, + }) async { + var url = Uri.parse( + link, + ); + var response = await http.post( + url, + body: payload, + headers: { + "Content-Type": "application/x-www-form-urlencoded", + 'Authorization': + 'Bearer ${r(box.read(BoxName.jwt)).toString().split(Env.addd)[0]}' + }, + ); + Log.print('request: ${response.request}'); + Log.print('body: ${response.body}'); + Log.print('payload: ${payload}'); + + if (response.statusCode == 200) { + var jsonData = jsonDecode(response.body); + if (jsonData['status'] == 'success') { + return response.body; + } + + return jsonData['status']; + } else if (response.statusCode == 401) { + // Specifically handle 401 Unauthorized + var jsonData = jsonDecode(response.body); + + if (jsonData['error'] == 'Token expired') { + // Show snackbar prompting to re-login + await Get.put(LoginController()).getJWT(); + // mySnackbarSuccess('please order now'.tr); + return 'token_expired'; // Return a specific value for token expiration + } else { + // Other 401 errors + // addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401', + // url.toString()); + return 'failure'; + } + } else { + addError('Non-200 response code: ${response.statusCode}', + 'crud().post - Other', url.toString()); + return 'failure'; + } + } + + /// Performs an authenticated POST request to wallet endpoints. + Future postWallet({ + required String link, + Map? payload, + }) async { + var jwt = await LoginController().getJwtWallet(); + final hmac = box.read(BoxName.hmac); + + final headers = { + "Content-Type": "application/x-www-form-urlencoded", + 'Authorization': 'Bearer $jwt', + 'X-HMAC-Auth': hmac.toString(), + }; + + return await _makeRequest( + link: link, + payload: payload, + headers: headers, + ); + } + + /// Performs an authenticated GET request to wallet endpoints (using POST). + Future getWallet({ + required String link, + Map? payload, + }) async { + var s = await LoginController().getJwtWallet(); + final hmac = box.read(BoxName.hmac); + var url = Uri.parse( + link, + ); + var response = await http.post( + url, + body: payload, + headers: { + "Content-Type": "application/x-www-form-urlencoded", + 'Authorization': 'Bearer $s', + 'X-HMAC-Auth': hmac.toString(), + }, + ); + if (response.statusCode == 200) { + var jsonData = jsonDecode(response.body); + if (jsonData['status'] == 'success') { + return response.body; + } + + return jsonData['status']; + } else if (response.statusCode == 401) { + // Specifically handle 401 Unauthorized + var jsonData = jsonDecode(response.body); + + if (jsonData['error'] == 'Token expired') { + // Show snackbar prompting to re-login + await Get.put(LoginController()).getJwtWallet(); + + return 'token_expired'; // Return a specific value for token expiration + } else { + // Other 401 errors + addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401', + url.toString()); + return 'failure'; + } + } else { + addError('Non-200 response code: ${response.statusCode}', + 'crud().post - Other', url.toString()); + return 'failure'; + } + } + // ======================================================================= + // All other specialized methods remain below. + // They are kept separate because they interact with external third-party APIs + // and have unique authentication, body structures, or error handling logic + // that doesn't fit the standardized `_makeRequest` helper. + // ======================================================================= + + Future postWalletMtn( + {required String link, Map? payload}) async { + // This method has a very custom response-wrapping logic, so it's kept separate. + final s = await LoginController().getJwtWallet(); + final hmac = box.read(BoxName.hmac); + final url = Uri.parse(link); + + try { + final response = await http.post( + url, + body: payload, + headers: { + "Content-Type": "application/x-www-form-urlencoded", + "Authorization": "Bearer $s", + "X-HMAC-Auth": hmac.toString(), + }, + ); + + Map wrap(String status, {Object? message, int? code}) { + return { + 'status': status, + 'message': message, + 'code': code ?? response.statusCode, + }; + } + + if (response.statusCode == 200) { + try { + return jsonDecode(response.body); + } catch (e) { + return wrap('failure', + message: 'JSON decode error', code: response.statusCode); + } + } else if (response.statusCode == 401) { + try { + final jsonData = jsonDecode(response.body); + if (jsonData is Map && jsonData['error'] == 'Token expired') { + await Get.put(LoginController()).getJWT(); + return { + 'status': 'failure', + 'message': 'token_expired', + 'code': 401 + }; + } + return wrap('failure', message: jsonData); + } catch (_) { + return wrap('failure', message: response.body); + } + } else { + try { + final jsonData = jsonDecode(response.body); + return wrap('failure', message: jsonData); + } catch (_) { + return wrap('failure', message: response.body); + } + } + } catch (e) { + return { + 'status': 'failure', + 'message': 'HTTP request error: $e', + 'code': -1 + }; + } + } + + // Future getTokenParent({ + // required String link, + // Map? payload, + // }) async { + // // Uses Basic Auth, so it's a separate implementation. + // var url = Uri.parse( + // link, + // ); + // var response = await http.post( + // url, + // body: payload, + // headers: { + // "Content-Type": "application/x-www-form-urlencoded", + // 'Authorization': + // 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials.toString()))}', + // }, + // ); + // if (response.statusCode == 200) { + // return jsonDecode(response.body); + // } + // // Consider adding error handling here. + // return null; + // } + + Future sendWhatsAppAuth(String to, String token) async { + var res = await CRUD() + .get(link: AppLink.getApiKey, payload: {'keyName': 'whatsapp_key'}); + var accesstoken = jsonDecode(res)['message']['whatsapp_key']; + var headers = { + 'Authorization': 'Bearer $accesstoken', + 'Content-Type': 'application/json' + }; + + var url = 'https://graph.facebook.com/v20.0/${Env.whatappID}/messages'; + var request = http.Request('POST', Uri.parse(url)); + + var body = json.encode({ + "messaging_product": "whatsapp", + "to": to, + "type": "template", + "template": { + "name": "sefer1", + "language": {"code": "en"}, + "components": [ + { + "type": "body", + "parameters": [ + { + "type": "text", + "text": token, + } + ] + } + ] + } + }); + + request.body = body; + request.headers.addAll(headers); + + try { + http.StreamedResponse response = await request.send(); + + if (response.statusCode == 200) { + String responseBody = await response.stream.bytesToString(); + + Get.defaultDialog( + title: 'You will receive a code in WhatsApp Messenger'.tr, + middleText: 'wait 1 minute to recive message'.tr, + confirm: MyElevatedButton( + title: 'OK'.tr, + onPressed: () { + Get.back(); + }, + ), + ); + } else { + String errorBody = await response.stream.bytesToString(); + } + } catch (e) {} + } + + Future getAgoraToken({ + required String channelName, + required String uid, + }) async { + var uid = box.read(BoxName.phone) ?? box.read(BoxName.phoneDriver); + var res = await http.get(Uri.parse( + // 'https://repulsive-pig-rugby-shirt.cyclic.app/token?channelName=$channelName'), + 'https://orca-app-b2i85.ondigitalocean.app/token?channelName=$channelName'), + headers: {'Authorization': 'Bearer ${AK.agoraAppCertificate}'}); + + if (res.statusCode == 200) { + var response = jsonDecode(res.body); + return response['token']; + } else {} + } + + Future getLlama({ + required String link, + required String payload, + required String prompt, + }) async { + var url = Uri.parse( + link, + ); + var headers = { + 'Content-Type': 'application/json', + 'Authorization': + 'Bearer LL-X5lJ0Px9CzKK0HTuVZ3u2u4v3tGWkImLTG7okGRk4t25zrsLqJ0qNoUzZ2x4ciPy' + // 'Authorization': 'Bearer ${Env.llamaKey}' + }; + var data = json.encode({ + "model": "Llama-3-70b-Inst-FW", + // "model": "llama-13b-chat", + "messages": [ + { + "role": "user", + "content": + "Extract the desired information from the following passage as json decoded like $prompt just in this:\n\n$payload" + } + ], + "temperature": 0.9 + }); + var response = await http.post( + url, + body: data, + headers: headers, + ); + + if (response.statusCode == 200) { + return response.body; + } + return response.statusCode; + } + + Future allMethodForAI(String prompt, linkPHP, imagePath) async { + await ImageController().choosImage(linkPHP, imagePath); + Future.delayed(const Duration(seconds: 2)); + String extracted = + await arabicTextExtractByVisionAndAI(imagePath: imagePath); + // await AI().geminiAiExtraction(prompt, extracted); + } + + Future arabicTextExtractByVisionAndAI({ + required String imagePath, + }) async { + var headers = { + 'Content-Type': 'application/json', + 'Ocp-Apim-Subscription-Key': '21010e54b50f41a4904708c526e102df' + }; + var url = Uri.parse( + 'https://ocrhamza.cognitiveservices.azure.com/vision/v2.1/ocr?language=ar', + ); + String imagePathFull = + '${AppLink.server}card_image/$imagePath-${box.read(BoxName.driverID) ?? box.read(BoxName.passengerID)}.jpg'; + + var requestBody = {"url": imagePathFull}; + var response = await http.post( + url, + body: jsonEncode(requestBody), // Encode the JSON object to a string + headers: headers, + ); + + if (response.statusCode == 200) { + var responseBody = jsonDecode(response.body); + return responseBody.toString(); + } + return response.statusCode; + } + + Future getChatGPT({ + required String link, + required String payload, + }) async { + var url = Uri.parse( + link, + ); + var headers = { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer ${Env.chatGPTkeySeferNew}' + }; + var data = json.encode({ + "model": "gpt-3.5-turbo", + "messages": [ + { + "role": "user", + "content": + "Extract the desired information from the following passage as json decoded like vin,make,made,year,expiration_date,color,owner,registration_date just in this:\n\n$payload" + } + ], + "temperature": 0.9 + }); + var response = await http.post( + url, + body: data, + headers: headers, + ); + + if (response.statusCode == 200) { + return response.body; + } + return response.statusCode; + } + + Future postStripe({ + required String link, + Map? payload, + }) async { + // String? secretKey = await storage.read(key: BoxName.secretKey); + var url = Uri.parse( + link, + ); + var response = await http.post( + url, + body: payload, + headers: { + "Content-Type": "application/x-www-form-urlencoded", + 'Authorization': 'Bearer ${AK.secretKey}', + }, + ); + if (response.statusCode == 200) { + return response.body; + } else {} + } + + // Future post({ + // required String link, + // Map? payload, + // }) async { + // // String? basicAuthCredentials = + // // await storage.read(key: BoxName.basicAuthCredentials); + // var url = Uri.parse( + // link, + // ); + // var response = await http.post( + // url, + // body: payload, + // headers: { + // "Content-Type": "application/x-www-form-urlencoded", + // 'Authorization': + // 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}', + // }, + // ); + // var jsonData = jsonDecode(response.body); + // if (response.statusCode == 200) { + // if (jsonData['status'] == 'success') { + // return response.body; + // } else { + // return (jsonData['status']); + // } + // } else { + // return response.statusCode; + // } + // } + + Future postPayMob({ + required String link, + Map? payload, + }) async { + // String? basicAuthCredentials = + // await storage.read(key: BoxName.basicAuthCredentials); + var url = Uri.parse( + link, + ); + var response = await http.post(url, + body: payload, headers: {'Content-Type': 'application/json'}); + + var jsonData = jsonDecode(response.body); + if (response.statusCode == 200) { + if (jsonData['status'] == 'success') { + return response.body; + } else { + return (jsonData['status']); + } + } else { + return response.statusCode; + } + } + + sendEmail( + String link, + Map? payload, + ) async { + var headers = { + "Content-Type": "application/x-www-form-urlencoded", + 'Authorization': + 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}', + }; + var request = http.Request('POST', Uri.parse(link)); + request.bodyFields = payload!; + request.headers.addAll(headers); + + http.StreamedResponse response = await request.send(); + if (response.statusCode == 200) { + } else {} + } + + Future postFromDialogue({ + required String link, + Map? payload, + }) async { + // String? basicAuthCredentials = + // await storage.read(key: BoxName.basicAuthCredentials); + var url = Uri.parse( + link, + ); + var response = await http.post( + url, + body: payload, + headers: { + "Content-Type": "application/x-www-form-urlencoded", + 'Authorization': + 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}', + }, + ); + + if (response.body.isNotEmpty) { + var jsonData = jsonDecode(response.body); + if (response.statusCode == 200) { + if (jsonData['status'] == 'success') { + Get.back(); + // Get.snackbar( + // jsonData['status'], + // jsonData['message'], + // ); + + return response.body; + } + } + return (jsonData['status']); + } + } + + Future sendVerificationRequest(String phoneNumber) async { + final accountSid = AK.accountSIDTwillo; + final authToken = AK.authTokenTwillo; + final verifySid = AK.twilloRecoveryCode; + + final Uri verificationUri = Uri.parse( + 'https://verify.twilio.com/v2/Services/$verifySid/Verifications'); + + // Send the verification request + final response = await http.post( + verificationUri, + headers: { + 'Authorization': + 'Basic ' + base64Encode(utf8.encode('$accountSid:$authToken')), + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: { + 'To': phoneNumber, + 'Channel': 'sms', + }, + ); + + if (response.statusCode == 201) { + } else {} + + // Prompt the user to enter the OTP + final otpCode = "123456"; // Replace with user input + + // Check the verification code + final checkUri = Uri.parse( + 'https://verify.twilio.com/v2/Services/$verifySid/VerificationCheck'); + + final checkResponse = await http.post( + checkUri, + headers: { + 'Authorization': + 'Basic ' + base64Encode(utf8.encode('$accountSid:$authToken')), + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: { + 'To': phoneNumber, + 'Code': otpCode, + }, + ); + + if (checkResponse.statusCode == 201) { + } else {} + } + + Future getGoogleApi({ + required String link, + Map? payload, + }) async { + var url = Uri.parse( + link, + ); + var response = await http.post( + url, + body: payload, + ); + var jsonData = jsonDecode(response.body); + if (jsonData['status'] == 'OK') { + return jsonData; + } + return (jsonData['status']); + } + + Future getHereMap({ + required String link, + }) async { + var url = Uri.parse(link); + try { + var response = await http.get(url); + + if (response.statusCode == 200) { + // Ensure the response body is decoded as UTF-8 + var decodedBody = utf8.decode(response.bodyBytes); + var data = jsonDecode(decodedBody); + return data; + } else { + return null; + } + } catch (e) { + return null; + } + } + + // Future update({ + // required String endpoint, + // required Map data, + // required String id, + // }) async { + // // String? basicAuthCredentials = + // // await storage.read(key: BoxName.basicAuthCredentials); + // var url = Uri.parse('$endpoint/$id'); + // var response = await http.put( + // url, + // body: json.encode(data), + // headers: { + // 'Authorization': + // 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}', + // }, + // ); + // return json.decode(response.body); + // } + + Future delete({ + required String endpoint, + required String id, + }) async { + // String? basicAuthCredentials = + // await storage.read(key: BoxName.basicAuthCredentials); + var url = Uri.parse('$endpoint/$id'); + var response = await http.delete( + url, + headers: { + 'Authorization': + 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}', + }, + ); + return json.decode(response.body); + } + + // ... [Other methods like sendWhatsAppAuth, getAgoraToken, getLlama, etc., would remain here as they are] ... + // For brevity, I am omitting the rest of the third-party API methods as they would not change. +} + + +================================================== +FILE PATH: ./lib/controller/functions/digit_obsecur_formate.dart +================================================== + +// import 'package:flutter/services.dart'; + +// class DigitObscuringFormatter extends TextInputFormatter { +// @override +// TextEditingValue formatEditUpdate( +// TextEditingValue oldValue, TextEditingValue newValue) { +// final maskedText = maskDigits(newValue.text); +// return newValue.copyWith( +// text: maskedText, +// selection: updateCursorPosition(maskedText, newValue.selection)); +// } + +// String maskDigits(String text) { +// final totalDigits = text.length; +// final visibleDigits = 4; +// final hiddenDigits = totalDigits - visibleDigits * 2; + +// final firstVisibleDigits = text.substring(0, visibleDigits); +// final lastVisibleDigits = text.substring(totalDigits - visibleDigits); + +// final maskedDigits = List.filled(hiddenDigits, '*').join(); + +// return '$firstVisibleDigits$maskedDigits$lastVisibleDigits'; +// } + +// TextSelection updateCursorPosition( +// String maskedText, TextSelection currentSelection) { +// final cursorPosition = currentSelection.baseOffset; +// final cursorOffset = +// currentSelection.extentOffset - currentSelection.baseOffset; +// final totalDigits = maskedText.length; +// const visibleDigits = 4; +// final hiddenDigits = totalDigits - visibleDigits * 2; + +// final updatedPosition = cursorPosition <= visibleDigits +// ? cursorPosition +// : hiddenDigits + visibleDigits + (cursorPosition - visibleDigits); + +// return TextSelection.collapsed( +// offset: updatedPosition, affinity: currentSelection.affinity); +// } +// } + + +================================================== +FILE PATH: ./lib/controller/functions/toast.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/colors.dart'; +import 'package:Intaleq/constant/style.dart'; + +class Toast { + static void show(BuildContext context, String message, Color color) { + final snackBar = SnackBar( + clipBehavior: Clip.antiAliasWithSaveLayer, + backgroundColor: color, + elevation: 3, + content: Text( + message, + style: AppStyle.title.copyWith(color: AppColor.secondaryColor), + ), + behavior: SnackBarBehavior.floating, + animation: const AlwaysStoppedAnimation(1.0), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), // Custom border radius + ), + width: Get.width * .8, + // shape: const StadiumBorder( + // side: BorderSide( + // color: AppColor.secondaryColor, + // width: 1.0, + // style: BorderStyle.solid, + // )), + duration: const Duration(seconds: 2), + ); + + ScaffoldMessenger.of(context).showSnackBar( + snackBar, + ); + } +} + + +================================================== +FILE PATH: ./lib/controller/functions/geolocation.dart +================================================== + +import 'package:geolocator/geolocator.dart'; + +class GeoLocation { + Future getCurrentLocation() async { + bool serviceEnabled; + LocationPermission permission; + + // Check if location services are enabled. + serviceEnabled = await Geolocator.isLocationServiceEnabled(); + if (!serviceEnabled) { + // Location services are not enabled, so we request the user to enable it. + return Future.error('Location services are disabled.'); + } + + permission = await Geolocator.checkPermission(); + if (permission == LocationPermission.denied) { + permission = await Geolocator.requestPermission(); + if (permission == LocationPermission.denied) { + // Permissions are denied, we cannot fetch the location. + return Future.error('Location permissions are denied'); + } + } + + if (permission == LocationPermission.deniedForever) { + // Permissions are denied forever, we cannot request permissions. + return Future.error( + 'Location permissions are permanently denied, we cannot request permissions.'); + } + + // When we reach here, permissions are granted and we can fetch the location. + return await Geolocator.getCurrentPosition( + desiredAccuracy: LocationAccuracy.high); + } +} + + +================================================== +FILE PATH: ./lib/controller/functions/log_out.dart +================================================== + +import 'dart:io'; + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/colors.dart'; +import 'package:Intaleq/constant/links.dart'; +import 'package:Intaleq/controller/functions/crud.dart'; +import 'package:Intaleq/main.dart'; +import 'package:Intaleq/onbording_page.dart'; +import 'package:Intaleq/views/widgets/elevated_btn.dart'; +import 'package:Intaleq/views/widgets/my_textField.dart'; + +import '../../constant/style.dart'; + +class LogOutController extends GetxController { + TextEditingController checkTxtController = TextEditingController(); + final formKey = GlobalKey(); + final formKey1 = GlobalKey(); + final emailTextController = TextEditingController(); + + Future deleteMyAccountDriver(String id) async { + await CRUD().post(link: AppLink.removeUser, payload: {'id': id}).then( + (value) => Get.snackbar('Deleted'.tr, 'Your Account is Deleted', + backgroundColor: AppColor.redColor)); + } + + checkBeforeDelete() async { + var res = await CRUD().post( + link: AppLink.deletecaptainAccounr, + payload: {'id': box.read(BoxName.driverID)}).then((value) => exit(0)); + } + + deletecaptainAccount() { + Get.defaultDialog( + backgroundColor: AppColor.yellowColor, + title: 'Are you sure to delete your account?'.tr, + middleText: + 'Your data will be erased after 2 weeks\nAnd you will can\'t return to use app after 1 month ', + titleStyle: AppStyle.title, + content: Column( + children: [ + Container( + width: Get.width, + decoration: AppStyle.boxDecoration, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + 'Your data will be erased after 2 weeks\nAnd you will can\'t return to use app after 1 month' + .tr, + style: AppStyle.title.copyWith(color: AppColor.redColor), + ), + ), + ), + const SizedBox( + height: 20, + ), + Form( + key: formKey, + child: SizedBox( + width: Get.width, + child: MyTextForm( + controller: checkTxtController, + label: 'Enter Your First Name'.tr, + hint: 'Enter Your First Name'.tr, + type: TextInputType.name, + ), + )) + ], + ), + confirm: MyElevatedButton( + title: 'Delete'.tr, + onPressed: () { + if (checkTxtController.text == box.read(BoxName.nameDriver)) { + deletecaptainAccount(); + } + })); + } + + Future logOutPassenger() async { + Get.defaultDialog( + title: 'Are you Sure to LogOut?'.tr, + content: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + MyElevatedButton( + title: 'Cancel'.tr, + onPressed: () => Get.back(), + ), + ElevatedButton( + style: ButtonStyle( + backgroundColor: MaterialStateProperty.all(AppColor.redColor), + ), + onPressed: () { + // box.remove(BoxName.agreeTerms); + box.remove(BoxName.passengerPhotoUrl); + box.remove(BoxName.driverID); + box.remove(BoxName.email); + box.remove(BoxName.lang); + box.remove(BoxName.name); + box.remove(BoxName.passengerID); + box.remove(BoxName.phone); + box.remove(BoxName.tokenFCM); + box.remove(BoxName.tokens); + box.remove(BoxName.addHome); + box.remove(BoxName.addWork); + box.remove(BoxName.agreeTerms); + box.remove(BoxName.apiKeyRun); + box.remove(BoxName.countryCode); + box.remove(BoxName.accountIdStripeConnect); + box.remove(BoxName.passengerWalletTotal); + box.remove(BoxName.isVerified); + Get.offAll(OnBoardingPage()); + }, + child: Text( + 'Sign Out'.tr, + style: + AppStyle.title.copyWith(color: AppColor.secondaryColor), + )) + ], + )); + } + + Future logOutCaptain() async { + Get.defaultDialog( + title: 'Are you Sure to LogOut?'.tr, + titleStyle: AppStyle.title, + content: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + MyElevatedButton( + title: 'Cancel'.tr, + onPressed: () => Get.back(), + ), + ElevatedButton( + style: ButtonStyle( + backgroundColor: MaterialStateProperty.all(AppColor.redColor), + ), + onPressed: () { + // box.remove(BoxName.agreeTerms); + box.remove(BoxName.driverID); + box.remove(BoxName.sexDriver); + box.remove(BoxName.dobDriver); + box.remove(BoxName.nameDriver); + box.remove(BoxName.emailDriver); + box.remove(BoxName.phoneDriver); + box.remove(BoxName.statusDriverLocation); + box.remove(BoxName.cvvCodeDriver); + box.remove(BoxName.lastNameDriver); + box.remove(BoxName.passwordDriver); + box.remove(BoxName.cardNumberDriver); + box.remove(BoxName.expiryDateDriver); + box.remove(BoxName.cardHolderNameDriver); + box.remove(BoxName.vin); + box.remove(BoxName.make); + box.remove(BoxName.year); + box.remove(BoxName.owner); + box.remove(BoxName.onBoarding); + box.remove(BoxName.agreeTerms); + Get.offAll(OnBoardingPage()); + }, + child: Text( + 'Sign Out'.tr, + style: + AppStyle.title.copyWith(color: AppColor.secondaryColor), + )) + ], + )); + } + + deletePassengerAccount() async { + if (formKey1.currentState!.validate()) { + if (box.read(BoxName.email).toString() == emailTextController.text) { + await CRUD().post(link: AppLink.passengerRemovedAccountEmail, payload: { + 'email': box.read(BoxName.email), + }); + } else { + Get.snackbar('Email Wrong'.tr, 'Email you inserted is Wrong.'.tr, + snackPosition: SnackPosition.BOTTOM, + backgroundColor: AppColor.redColor); + } + } + } +} + + +================================================== +FILE PATH: ./lib/controller/functions/package_info.dart +================================================== + +import 'dart:async'; +import 'dart:convert'; +import 'dart:io'; +import 'dart:ui'; +import 'package:device_info_plus/device_info_plus.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:jailbreak_root_detection/jailbreak_root_detection.dart'; +import 'package:package_info_plus/package_info_plus.dart'; +import 'package:url_launcher/url_launcher.dart'; +import '../../constant/box_name.dart'; +import '../../constant/colors.dart'; +import '../../main.dart'; +import '../../print.dart'; +import 'encrypt_decrypt.dart'; + +Future checkForUpdate(BuildContext context) async { + final packageInfo = await PackageInfo.fromPlatform(); + final currentVersion = packageInfo.buildNumber; + final version = packageInfo.version; + print('currentVersion is : $currentVersion'); + // Fetch the latest version from your server + String latestVersion = box.read(BoxName.package); + box.write(BoxName.packagInfo, version); + + if (latestVersion.isNotEmpty && latestVersion != currentVersion) { + showUpdateDialog(context); + } +} + +checkForBounusInvitation() { + if (box.read(BoxName.inviteCode) != null) {} +} + +// Future getPackageInfo() async { +// final response = await CRUD().get(link: AppLink.packageInfo, payload: { +// "platform": Platform.isAndroid ? 'android' : 'ios', +// "appName": AppInformation.appName, +// }); + +// if (response != 'failure') { +// return jsonDecode(response)['message'][0]['version']; +// } +// return ''; +// } +// getDeviceFingerprint() async { +// final deviceInfo = await DeviceInfoPlugin().deviceInfo; +// var deviceData; + +// if (Platform.isAndroid) { +// deviceData = deviceInfo.data; +// Log.print('deviceData: ${jsonEncode(deviceData)}'); +// } else if (Platform.isIOS) { +// deviceData = deviceInfo.data; +// } + +// final String deviceId = +// deviceData['device'] ?? deviceData['identifierForVendor']; +// final String deviceModel = deviceData['model']; +// final String osVersion = deviceData['systemVersion']; + +// Log.print('fingr: ${'${deviceId}_${deviceModel}_$osVersion'}'); +// Log.print('deviceModel: ${deviceModel}'); +// Log.print('osVersion: ${osVersion}'); +// return EncryptionHelper.instance +// .encryptData('${deviceId}_${deviceModel}_$osVersion'); +// } + +void showUpdateDialog(BuildContext context) { + final String storeUrl = Platform.isAndroid + ? 'https://play.google.com/store/apps/details?id=com.Intaleq.intaleq' + : 'https://apps.apple.com/jo/app/intaleq-rider/id6748075179'; + showGeneralDialog( + context: context, + barrierDismissible: false, + barrierColor: Colors.black.withOpacity(0.5), + pageBuilder: (_, __, ___) { + return BackdropFilter( + filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5), + child: Center( + child: AlertDialog( + // Using AlertDialog for a more Material Design look + shape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular(16)), // More rounded corners + elevation: 4, // Add a bit more elevation + contentPadding: EdgeInsets.zero, // Remove default content padding + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: const EdgeInsets.only(top: 20.0), + child: Image.asset( + 'assets/images/logo.png', + height: 72, // Slightly larger logo + width: 72, + ), + ), + const SizedBox(height: 16), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 24.0), + child: Text( + 'Update Available'.tr, + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.titleLarge?.copyWith( + // Use theme's title style + fontWeight: FontWeight.bold, + ), + ), + ), + Padding( + padding: const EdgeInsets.all(24.0), + child: Text( + 'A new version of the app is available. Please update to the latest version.' + .tr, // More encouraging message + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.bodyMedium?.copyWith( + // Use theme's body style + color: Colors.black87, + ), + ), + ), + const Divider(height: 0), + Row( + children: [ + Expanded( + child: TextButton( + // Using TextButton for "Cancel" + onPressed: () => Navigator.pop(context), + style: TextButton.styleFrom( + foregroundColor: Colors.grey, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + bottomLeft: Radius.circular(16), + ), + ), + ), + child: Text('Cancel'.tr), + ), + ), + const SizedBox( + height: 48, + child: VerticalDivider(width: 0), // Using VerticalDivider + ), + Expanded( + child: ElevatedButton( + // Using ElevatedButton for "Update" + onPressed: () async { + if (await canLaunchUrl(Uri.parse(storeUrl))) { + await launchUrl(Uri.parse(storeUrl)); + } + if (context.mounted) Navigator.pop(context); + }, + style: ElevatedButton.styleFrom( + backgroundColor: AppColor + .primaryColor, // Use theme's primary color + foregroundColor: Theme.of(context) + .colorScheme + .onPrimary, // Use theme's onPrimary color + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + bottomRight: Radius.circular(16), + ), + ), + ), + child: Text('Update'.tr), + ), + ), + ], + ), + ], + ), + ), + ), + ); + }, + transitionBuilder: (_, animation, __, child) { + return ScaleTransition( + scale: CurvedAnimation( + parent: animation, + curve: Curves.easeOutCubic, // More natural curve + ), + child: child, + ); + }, + ); +} + +class SecurityHelper { + /// Performs security checks and handles potential risks + static Future performSecurityChecks() async { + bool isNotTrust = false; + bool isJailBroken = false; + bool isRealDevice = true; + bool isOnExternalStorage = false; + bool checkForIssues = false; + bool isDevMode = false; + bool isTampered = false; + String bundleId = ""; + + try { + isNotTrust = await JailbreakRootDetection.instance.isNotTrust; + isJailBroken = await JailbreakRootDetection.instance.isJailBroken; + isRealDevice = await JailbreakRootDetection.instance.isRealDevice; + isOnExternalStorage = + await JailbreakRootDetection.instance.isOnExternalStorage; + + List issues = + await JailbreakRootDetection.instance.checkForIssues; + checkForIssues = issues.isNotEmpty; + + isDevMode = await JailbreakRootDetection.instance.isDevMode; + + // Get Bundle ID + PackageInfo packageInfo = await PackageInfo.fromPlatform(); + bundleId = packageInfo.packageName; + if (bundleId.isNotEmpty) { + // Pass the CORRECT bundle ID to isTampered + isTampered = await JailbreakRootDetection.instance.isTampered(bundleId); + } + } catch (e) { + debugPrint("Error during security checks: $e"); + // Consider handling specific exceptions, not just general errors. + } + + // Save values to storage (using GetStorage) + await box.write('isNotTrust', isNotTrust); // Use await for write operations + await box.write('isTampered', isTampered); // Use await + await box.write('isJailBroken', isJailBroken); // Use await + + debugPrint("Security Check Results:"); + debugPrint("isNotTrust: $isNotTrust"); + debugPrint("isJailBroken: $isJailBroken"); + debugPrint("isRealDevice: $isRealDevice"); + debugPrint("isOnExternalStorage: $isOnExternalStorage"); + debugPrint("checkForIssues: $checkForIssues"); + debugPrint("isDevMode: $isDevMode"); + debugPrint("isTampered: $isTampered"); + debugPrint("Bundle ID: $bundleId"); // Print the bundle ID + + // Check for security risks and potentially show a warning + if (isJailBroken || isRealDevice == false || isTampered) { + // print("security_warning".tr); //using easy_localization + // Use a more robust approach to show a warning, like a dialog: + _showSecurityWarning(); + } + } + + /// Deletes all app data + static void _showSecurityWarning() { + // Use an RxInt to track the remaining seconds. This is the KEY! + RxInt secondsRemaining = 10.obs; + + Get.dialog( + CupertinoAlertDialog( + title: Text("Security Warning".tr), + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Obx(() => Text( + "Potential security risks detected. The application will close in @seconds seconds." + .trParams({ + // Use trParams for placeholders + 'seconds': secondsRemaining.value.toString(), + }), + // Wrap the Text widget in Obx + )), + SizedBox(height: 24), // More spacing before the progress bar + Obx(() => SizedBox( + width: double.infinity, // Make progress bar full width + child: CupertinoActivityIndicator( + // in case of loading + radius: 15, + animating: true, + ))), + SizedBox(height: 8), + Obx(() => ClipRRect( + borderRadius: BorderRadius.circular(8), // Rounded corners + child: LinearProgressIndicator( + value: secondsRemaining.value / 10, + backgroundColor: Colors.grey.shade300, // Lighter background + valueColor: AlwaysStoppedAnimation( + CupertinoColors.systemRed), // iOS-style red + minHeight: 8, // Slightly thicker progress bar + ), + )), + ], + ), + ), + barrierDismissible: false, + ); + + Timer.periodic(Duration(seconds: 1), (timer) { + secondsRemaining.value--; + if (secondsRemaining.value <= 0) { + timer.cancel(); + // Get.back(); + _clearDataAndExit(); + } + }); + } + + static Future _clearDataAndExit() async { + await storage.deleteAll(); + await box.erase(); + exit(0); // Exit the app + print('exit'); + } +} + +class DeviceHelper { + static Future getDeviceFingerprint() async { + final DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin(); + var deviceData; + + try { + if (Platform.isAndroid) { + // Fetch Android-specific device information + AndroidDeviceInfo androidInfo = await deviceInfoPlugin.androidInfo; + deviceData = androidInfo.toMap(); // Convert to a map for easier access + // Log.print('deviceData: ${jsonEncode(deviceData)}'); + } else if (Platform.isIOS) { + // Fetch iOS-specific device information + IosDeviceInfo iosInfo = await deviceInfoPlugin.iosInfo; + deviceData = iosInfo.toMap(); // Convert to a map for easier access + } else { + throw UnsupportedError('Unsupported platform'); + } + + // Extract relevant device information + final String deviceId = Platform.isAndroid + ? deviceData['androidId'] ?? deviceData['fingerprint'] ?? 'unknown' + : deviceData['identifierForVendor'] ?? 'unknown'; + + final String deviceModel = deviceData['model'] ?? 'unknown'; + final String osVersion = Platform.isAndroid + ? deviceData['version']['release'] ?? 'unknown' + : deviceData['systemVersion'] ?? 'unknown'; + + // Log the extracted information + + // Generate and return the encrypted fingerprint + final String fingerprint = '${deviceId}_${deviceModel}_$osVersion'; + // print(EncryptionHelper.instance.encryptData(fingerprint)); + return EncryptionHelper.instance.encryptData(fingerprint); + } catch (e) { + throw Exception('Failed to generate device fingerprint'); + } + } +} + + +================================================== +FILE PATH: ./lib/controller/functions/network/connection_check.dart +================================================== + +import 'dart:async'; +import 'dart:io'; +import 'package:http/http.dart' as http; + +import 'net_guard.dart'; + +typedef BodyEncoder = Future Function(); + +class HttpRetry { + /// ريتراي لـ network/transient errors فقط. + static Future sendWithRetry( + BodyEncoder send, { + int maxRetries = 3, + Duration baseDelay = const Duration(milliseconds: 400), + Duration timeout = const Duration(seconds: 12), + }) async { + // ✅ Pre-flight check for internet connection + if (!await NetGuard().hasInternet()) { + // Immediately throw a specific exception if there's no internet. + // This avoids pointless retries. + throw const SocketException("No internet connection"); + } + int attempt = 0; + while (true) { + attempt++; + try { + final res = await send().timeout(timeout); + return res; + } on TimeoutException catch (_) { + if (attempt >= maxRetries) rethrow; + } on SocketException catch (_) { + if (attempt >= maxRetries) rethrow; + } on HandshakeException catch (_) { + if (attempt >= maxRetries) rethrow; + } on http.ClientException catch (e) { + // مثال: Connection reset by peer + final msg = e.message.toLowerCase(); + final transient = msg.contains('connection reset') || + msg.contains('broken pipe') || + msg.contains('timed out'); + if (!transient || attempt >= maxRetries) rethrow; + } + // backoff: 0.4s, 0.8s, 1.6s + final delay = baseDelay * (1 << (attempt - 1)); + await Future.delayed(delay); + } + } +} + + +================================================== +FILE PATH: ./lib/controller/functions/network/net_guard.dart +================================================== + +import 'dart:async'; +import 'dart:io'; +import 'package:connectivity_plus/connectivity_plus.dart'; +import 'package:internet_connection_checker/internet_connection_checker.dart'; + +class NetGuard { + static final NetGuard _i = NetGuard._(); + NetGuard._(); + factory NetGuard() => _i; + + bool _notified = false; + + /// فحص: (أ) فيه شبكة؟ (ب) فيه انترنت؟ (ج) السيرفر نفسه reachable؟ + Future hasInternet({Uri? mustReach}) async { + final connectivity = await Connectivity().checkConnectivity(); + if (connectivity == ConnectivityResult.none) return false; + + final hasNet = + await InternetConnectionChecker.createInstance().hasConnection; + if (!hasNet) return false; + + if (mustReach != null) { + try { + final host = mustReach.host; + final result = await InternetAddress.lookup(host); + if (result.isEmpty || result.first.rawAddress.isEmpty) return false; + + // اختباري خفيف عبر TCP (80/443) — 400ms timeout + final port = mustReach.scheme == 'http' ? 80 : 443; + final socket = await Socket.connect(host, port, + timeout: const Duration(milliseconds: 400)); + socket.destroy(); + } catch (_) { + return false; + } + } + return true; + } + + /// إظهار إشعار مرة واحدة ثم إسكات التكرارات + void notifyOnce(void Function(String title, String msg) show) { + if (_notified) return; + _notified = true; + show('لا يوجد اتصال بالإنترنت', 'تحقق من الشبكة ثم حاول مجددًا.'); + // إعادة السماح بعد 15 ثانية + Future.delayed(const Duration(seconds: 15), () => _notified = false); + } +} + + +================================================== +FILE PATH: ./lib/controller/themes/themes.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:Intaleq/constant/style.dart'; + +import '../../constant/colors.dart'; + +ThemeData lightThemeEnglish = ThemeData( + brightness: Brightness.light, + fontFamily: "SFPro", + textTheme: TextTheme( + displaySmall: AppStyle.title, + displayLarge: AppStyle.headTitle, + displayMedium: AppStyle.headTitle2, + bodyLarge: AppStyle.title, + bodyMedium: AppStyle.subtitle, + ), + primarySwatch: Colors.blue, + dialogTheme: DialogThemeData( + backgroundColor: AppColor.secondaryColor, + contentTextStyle: AppStyle.title, + titleTextStyle: AppStyle.headTitle2, + ), + appBarTheme: AppBarTheme( + elevation: 0, + color: AppColor.secondaryColor, + centerTitle: true, + iconTheme: const IconThemeData( + color: AppColor.primaryColor, + ), + toolbarTextStyle: TextTheme( + titleSmall: AppStyle.subtitle, + headlineSmall: AppStyle.title, + titleLarge: AppStyle.headTitle2, + ).bodyMedium, + titleTextStyle: TextTheme( + titleSmall: AppStyle.subtitle, + headlineSmall: AppStyle.title, + titleLarge: AppStyle.headTitle2, + ).titleLarge, + ), +); + +ThemeData darkThemeEnglish = ThemeData( + brightness: Brightness.dark, + fontFamily: "SFPro", + textTheme: TextTheme( + displaySmall: AppStyle.title, + displayLarge: AppStyle.headTitle, + displayMedium: AppStyle.headTitle2, + bodyLarge: AppStyle.title, + bodyMedium: AppStyle.subtitle, + ), + primarySwatch: Colors.blue, + dialogTheme: DialogThemeData( + backgroundColor: AppColor.secondaryColor, + contentTextStyle: AppStyle.title, + titleTextStyle: AppStyle.headTitle2, + ), + appBarTheme: AppBarTheme( + elevation: 0, + color: AppColor.secondaryColor, + centerTitle: true, + iconTheme: const IconThemeData( + color: AppColor.primaryColor, + ), + toolbarTextStyle: TextTheme( + titleSmall: AppStyle.subtitle, + headlineSmall: AppStyle.title, + titleLarge: AppStyle.headTitle2, + ).bodyMedium, + titleTextStyle: TextTheme( + titleSmall: AppStyle.subtitle, + headlineSmall: AppStyle.title, + titleLarge: AppStyle.headTitle2, + ).titleLarge, + ), +); + +ThemeData lightThemeArabic = ThemeData( + brightness: Brightness.light, + fontFamily: 'SFArabic', + textTheme: TextTheme( + displaySmall: AppStyle.title, + displayLarge: AppStyle.headTitle, + displayMedium: AppStyle.headTitle2, + bodyLarge: AppStyle.title, + bodyMedium: AppStyle.subtitle, + ), + primarySwatch: Colors.blue, + dialogTheme: DialogThemeData( + backgroundColor: AppColor.secondaryColor, + contentTextStyle: AppStyle.title, + titleTextStyle: AppStyle.headTitle2, + ), + appBarTheme: AppBarTheme( + elevation: 0, + color: AppColor.secondaryColor, + centerTitle: true, + iconTheme: const IconThemeData( + color: AppColor.primaryColor, + ), + toolbarTextStyle: TextTheme( + titleSmall: AppStyle.subtitle, + headlineSmall: AppStyle.title, + titleLarge: AppStyle.headTitle2, + ).bodyMedium, + titleTextStyle: TextTheme( + titleSmall: AppStyle.subtitle, + headlineSmall: AppStyle.title, + titleLarge: AppStyle.headTitle2, + ).titleLarge, + ), +); + +ThemeData darkThemeArabic = ThemeData( + brightness: Brightness.dark, + fontFamily: 'SFArabic', + textTheme: TextTheme( + displaySmall: AppStyle.title, + displayLarge: AppStyle.headTitle, + displayMedium: AppStyle.headTitle2, + bodyLarge: AppStyle.title, + bodyMedium: AppStyle.subtitle, + ), + primarySwatch: Colors.blue, + dialogTheme: DialogThemeData( + backgroundColor: AppColor.secondaryColor, + contentTextStyle: AppStyle.title, + titleTextStyle: AppStyle.headTitle2, + ), + appBarTheme: AppBarTheme( + elevation: 0, + color: AppColor.secondaryColor, + centerTitle: true, + iconTheme: const IconThemeData( + color: AppColor.primaryColor, + ), + toolbarTextStyle: TextTheme( + titleSmall: AppStyle.subtitle, + headlineSmall: AppStyle.title, + titleLarge: AppStyle.headTitle2, + ).bodyMedium, + titleTextStyle: TextTheme( + titleSmall: AppStyle.subtitle, + headlineSmall: AppStyle.title, + titleLarge: AppStyle.headTitle2, + ).titleLarge, + ), +); + + +================================================== +FILE PATH: ./lib/env/env.dart +================================================== + +import 'package:envied/envied.dart'; + +part 'env.g.dart'; + +@Envied() +abstract class Env { + @EnviedField(varName: 'basicAuthCredentials', obfuscate: true) + static final String basicAuthCredentials = _Env.basicAuthCredentials; + + @EnviedField(varName: 'basicCompareFaces', obfuscate: true) + static final String basicCompareFaces = _Env.basicCompareFaces; + + @EnviedField(varName: 'mapKeyOsm', obfuscate: true) + static final String mapKeyOsm = _Env.mapKeyOsm; + + @EnviedField(varName: 'sss_encryptionSalt', obfuscate: true) + static final String sss_encryptionSalt = _Env.sss_encryptionSalt; + + @EnviedField(varName: 'sss_pass', obfuscate: true) + static final String sss_pass = _Env.sss_pass; + + @EnviedField(varName: 'addd', obfuscate: true) + static final String addd = _Env.addd; + + @EnviedField(varName: 'passnpassenger', obfuscate: true) + static final String passnpassenger = _Env.passnpassenger; + + @EnviedField(varName: 'newId', obfuscate: true) + static final String newId = _Env.newId; + + @EnviedField(varName: 'allowed', obfuscate: true) + static final String allowed = _Env.allowed; + + @EnviedField(varName: 'apiKeyHere', obfuscate: true) + static final String apiKeyHere = _Env.apiKeyHere; + + @EnviedField(varName: 'getLocationAreaLinks', obfuscate: true) + static final String getLocationAreaLinks = _Env.getLocationAreaLinks; + + @EnviedField(varName: 'initializationVector', obfuscate: true) + static final String initializationVector = _Env.initializationVector; + + @EnviedField(varName: 'basicCompareFacesURL', obfuscate: true) + static final String basicCompareFacesURL = _Env.basicCompareFacesURL; + + @EnviedField(varName: 'accountSIDTwillo', obfuscate: true) + static final String accountSIDTwillo = _Env.accountSIDTwillo; + + @EnviedField(varName: 'serverAPI', obfuscate: true) + static final String serverAPI = _Env.serverAPI; + + @EnviedField(varName: 'mapAPIKEY', obfuscate: true) + static final String mapAPIKEY = _Env.mapAPIKEY; + + @EnviedField(varName: 'mapAPIKEYIOS', obfuscate: true) + static final String mapAPIKEYIOS = _Env.mapAPIKEYIOS; + + @EnviedField(varName: 'twilloRecoveryCode', obfuscate: true) + static final String twilloRecoveryCode = _Env.twilloRecoveryCode; + + @EnviedField(varName: 'authTokenTwillo', obfuscate: true) + static final String authTokenTwillo = _Env.authTokenTwillo; + + @EnviedField(varName: 'chatGPTkey', obfuscate: true) + static final String chatGPTkey = _Env.chatGPTkey; + + @EnviedField(varName: 'transactionCloude', obfuscate: true) + static final String transactionCloude = _Env.transactionCloude; + + @EnviedField(varName: 'visionApi', obfuscate: true) + static final String visionApi = _Env.visionApi; + + @EnviedField(varName: 'secretKey', obfuscate: true) + static final String secretKey = _Env.secretKey; + + @EnviedField(varName: 'stripe_publishableKe', obfuscate: true) + static final String stripePublishableKe = _Env.stripePublishableKe; + + @EnviedField(varName: 'chatGPTkeySefer', obfuscate: true) + static final String chatGPTkeySefer = _Env.chatGPTkeySefer; + + @EnviedField(varName: 'llamaKey', obfuscate: true) + static final String llamaKey = _Env.llamaKey; + + @EnviedField(varName: 'privateKeyFCM', obfuscate: true) + static final String privateKeyFCM = _Env.privateKeyFCM; + + @EnviedField(varName: 'whatsapp', obfuscate: true) + static final String whatsapp = _Env.whatsapp; + + @EnviedField(varName: 'whatappID', obfuscate: true) + static final String whatappID = _Env.whatappID; + + @EnviedField(varName: 'serverPHP', obfuscate: true) + static final String serverPHP = _Env.serverPHP; + + @EnviedField(varName: 'seferAlexandriaServer', obfuscate: true) + static final String seferAlexandriaServer = _Env.seferAlexandriaServer; + + @EnviedField(varName: 'seferPaymentServer', obfuscate: true) + static final String seferPaymentServer = _Env.seferPaymentServer; + + @EnviedField(varName: 'seferCairoServer', obfuscate: true) + static final String seferCairoServer = _Env.seferCairoServer; + + @EnviedField(varName: 'seferGizaServer', obfuscate: true) + static final String seferGizaServer = _Env.seferGizaServer; + + @EnviedField(varName: 'chatGPTkeySeferNew', obfuscate: true) + static final String chatGPTkeySeferNew = _Env.chatGPTkeySeferNew; + + @EnviedField(varName: 'cohere', obfuscate: true) + static final String cohere = _Env.cohere; + + @EnviedField(varName: 'claudeAiAPI', obfuscate: true) + static final String claudeAiAPI = _Env.claudeAiAPI; + + @EnviedField(varName: 'payPalClientId', obfuscate: true) + static final String payPalClientId = _Env.payPalClientId; + + @EnviedField(varName: 'payPalSecret', obfuscate: true) + static final String payPalSecret = _Env.payPalSecret; + + @EnviedField(varName: 'geminiApi', obfuscate: true) + static final String geminiApi = _Env.geminiApi; + + @EnviedField(varName: 'geminiApiMasa', obfuscate: true) + static final String geminiApiMasa = _Env.geminiApiMasa; + + @EnviedField(varName: 'agoraAppId', obfuscate: true) + static final String agoraAppId = _Env.agoraAppId; + + @EnviedField(varName: 'agoraAppCertificate', obfuscate: true) + static final String agoraAppCertificate = _Env.agoraAppCertificate; + + @EnviedField(varName: 'payPalClientIdLive', obfuscate: true) + static final String payPalClientIdLive = _Env.payPalClientIdLive; + + @EnviedField(varName: 'payPalSecretLive', obfuscate: true) + static final String payPalSecretLive = _Env.payPalSecretLive; + + @EnviedField(varName: 'integrationIdPayMob', obfuscate: true) + static final String integrationIdPayMob = _Env.integrationIdPayMob; + + @EnviedField(varName: 'passwordPayMob', obfuscate: true) + static final String passwordPayMob = _Env.passwordPayMob; + + @EnviedField(varName: 'usernamePayMob', obfuscate: true) + static final String usernamePayMob = _Env.usernamePayMob; + + @EnviedField(varName: 'payMobApikey', obfuscate: true) + static final String payMobApikey = _Env.payMobApikey; + + @EnviedField(varName: 'integrationIdPayMobWallet', obfuscate: true) + static final String integrationIdPayMobWallet = + _Env.integrationIdPayMobWallet; + + @EnviedField(varName: 'smsPasswordEgypt', obfuscate: true) + static final String smsPasswordEgypt = _Env.smsPasswordEgypt; + + @EnviedField(varName: 'ocpApimSubscriptionKey', obfuscate: true) + static final String ocpApimSubscriptionKey = _Env.ocpApimSubscriptionKey; + + @EnviedField(varName: 'chatGPTkeySeferNew4', obfuscate: true) + static final String chatGPTkeySeferNew4 = _Env.chatGPTkeySeferNew4; + + @EnviedField(varName: 'anthropicAIkeySeferNew', obfuscate: true) + static final String anthropicAIkeySeferNew = _Env.anthropicAIkeySeferNew; + + @EnviedField(varName: 'llama3Key', obfuscate: true) + static final String llama3Key = _Env.llama3Key; + + @EnviedField(varName: 'payMobOutClientSecrret', obfuscate: true) + static final String payMobOutClientSecrret = _Env.payMobOutClientSecrret; + + @EnviedField(varName: 'payMobOutClient_id', obfuscate: true) + static final String payMobOutClient_id = _Env.payMobOutClient_id; + + @EnviedField(varName: 'payMobOutPassword', obfuscate: true) + static final String payMobOutPassword = _Env.payMobOutPassword; + + @EnviedField(varName: 'payMobOutUserName', obfuscate: true) + static final String payMobOutUserName = _Env.payMobOutUserName; + + @EnviedField(varName: 'A', obfuscate: true) + static final String A = _Env.A; + + @EnviedField(varName: 'B', obfuscate: true) + static final String B = _Env.B; + + @EnviedField(varName: 'C', obfuscate: true) + static final String C = _Env.C; + + @EnviedField(varName: 'D', obfuscate: true) + static final String D = _Env.D; + + @EnviedField(varName: 'E', obfuscate: true) + static final String E = _Env.E; + + @EnviedField(varName: 'F', obfuscate: true) + static final String F = _Env.F; + + @EnviedField(varName: 'G', obfuscate: true) + static final String G = _Env.G; + + @EnviedField(varName: 'H', obfuscate: true) + static final String H = _Env.H; + + @EnviedField(varName: 'I', obfuscate: true) + static final String I = _Env.I; + + @EnviedField(varName: 'J', obfuscate: true) + static final String J = _Env.J; + + @EnviedField(varName: 'K', obfuscate: true) + static final String K = _Env.K; + + @EnviedField(varName: 'L', obfuscate: true) + static final String L = _Env.L; + + @EnviedField(varName: 'M', obfuscate: true) + static final String M = _Env.M; + + @EnviedField(varName: 'N', obfuscate: true) + static final String N = _Env.N; + + @EnviedField(varName: 'O', obfuscate: true) + static final String O = _Env.O; + + @EnviedField(varName: 'P', obfuscate: true) + static final String P = _Env.P; + + @EnviedField(varName: 'Q', obfuscate: true) + static final String Q = _Env.Q; + + @EnviedField(varName: 'R', obfuscate: true) + static final String R = _Env.R; + + @EnviedField(varName: 'S', obfuscate: true) + static final String S = _Env.S; + + @EnviedField(varName: 'T', obfuscate: true) + static final String T = _Env.T; + + @EnviedField(varName: 'U', obfuscate: true) + static final String U = _Env.U; + + @EnviedField(varName: 'V', obfuscate: true) + static final String V = _Env.V; + + @EnviedField(varName: 'W', obfuscate: true) + static final String W = _Env.W; + + @EnviedField(varName: 'X', obfuscate: true) + static final String X = _Env.X; + + @EnviedField(varName: 'Y', obfuscate: true) + static final String Y = _Env.Y; + + @EnviedField(varName: 'Z', obfuscate: true) + static final String Z = _Env.Z; + @EnviedField(varName: 'a', obfuscate: true) + static final String a = _Env.a; + + @EnviedField(varName: 'b', obfuscate: true) + static final String b = _Env.b; + + @EnviedField(varName: 'c', obfuscate: true) + static final String c = _Env.c; + + @EnviedField(varName: 'd', obfuscate: true) + static final String d = _Env.d; + + @EnviedField(varName: 'e', obfuscate: true) + static final String e = _Env.e; + + @EnviedField(varName: 'f', obfuscate: true) + static final String f = _Env.f; + + @EnviedField(varName: 'g', obfuscate: true) + static final String g = _Env.g; + + @EnviedField(varName: 'h', obfuscate: true) + static final String h = _Env.h; + + @EnviedField(varName: 'i', obfuscate: true) + static final String i = _Env.i; + + @EnviedField(varName: 'j', obfuscate: true) + static final String j = _Env.j; + + @EnviedField(varName: 'k', obfuscate: true) + static final String k = _Env.k; + + @EnviedField(varName: 'l', obfuscate: true) + static final String l = _Env.l; + + @EnviedField(varName: 'm', obfuscate: true) + static final String m = _Env.m; + + @EnviedField(varName: 'n', obfuscate: true) + static final String n = _Env.n; + + @EnviedField(varName: 'o', obfuscate: true) + static final String o = _Env.o; + + @EnviedField(varName: 'p', obfuscate: true) + static final String p = _Env.p; + + @EnviedField(varName: 'q', obfuscate: true) + static final String q = _Env.q; + + @EnviedField(varName: 'r', obfuscate: true) + static final String r = _Env.r; + + @EnviedField(varName: 's', obfuscate: true) + static final String s = _Env.s; + + @EnviedField(varName: 't', obfuscate: true) + static final String t = _Env.t; + + @EnviedField(varName: 'u', obfuscate: true) + static final String u = _Env.u; + + @EnviedField(varName: 'v', obfuscate: true) + static final String v = _Env.v; + + @EnviedField(varName: 'w', obfuscate: true) + static final String w = _Env.w; + + @EnviedField(varName: 'x', obfuscate: true) + static final String x = _Env.x; + + @EnviedField(varName: 'y', obfuscate: true) + static final String y = _Env.y; + + @EnviedField(varName: 'z', obfuscate: true) + static final String z = _Env.z; + + @EnviedField(varName: 'keyOfApp', obfuscate: true) + static final String keyOfApp = _Env.keyOfApp; +} + + +================================================== +FILE PATH: ./lib/env/env.g.dart +================================================== + +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'env.dart'; + +// ************************************************************************** +// EnviedGenerator +// ************************************************************************** + +// coverage:ignore-file +// ignore_for_file: type=lint +// generated_from: .env +final class _Env { + static const List _enviedkeybasicAuthCredentials = [ + 43044676, + 864909550, + 4242758126, + 2514357568, + 1555483995, + 1142069238, + 1205503833, + 1967239324, + 1860681093, + 3229905743, + 3243147856, + 1002171964, + 2971668333, + 3009646440, + 331994719, + 3443456963, + 813108254, + 2398669640, + 2665467623, + 1880765956, + 3552236665, + 3431379130, + 4129886444, + 2497907908, + 2195738790, + 3192394429, + 1329286224, + 3931833945, + 353914251, + 1168254924, + 1798346792, + ]; + + static const List _envieddatabasicAuthCredentials = [ + 43044659, + 864909471, + 4242758016, + 2514357549, + 1555483946, + 1142069127, + 1205503786, + 1967239414, + 1860681212, + 3229905721, + 3243147815, + 1002171990, + 2971668251, + 3009646418, + 331994673, + 3443456946, + 813108332, + 2398669585, + 2665467565, + 1880766036, + 3552236601, + 3431379083, + 4129886427, + 2497907959, + 2195738769, + 3192394469, + 1329286178, + 3931833857, + 353914343, + 1168254862, + 1798346820, + ]; + + static final String basicAuthCredentials = String.fromCharCodes( + List.generate( + _envieddatabasicAuthCredentials.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatabasicAuthCredentials[i] ^ + _enviedkeybasicAuthCredentials[i])); + + static const List _enviedkeybasicCompareFaces = [ + 3727333105, + 1843694516, + 3611997723, + 2407362513, + 1356628908, + 2977101071, + 1936901014, + 2964813805, + 197648233, + 3590224812, + 3940587702, + 2375653923, + 764212019, + 500016560, + 3035095344, + 1159165809, + 3677722776, + 3500824290, + 3405327942, + 2095637207, + 3941804910, + 2161512590, + 1479882886, + 327839885, + 153188006, + 365671944, + 436594973, + 98326119, + ]; + + static const List _envieddatabasicCompareFaces = [ + 3727333003, + 1843694558, + 3611997806, + 2407362491, + 1356628928, + 2977101178, + 1936901095, + 2964813707, + 197648153, + 3590224838, + 3940587660, + 2375653965, + 764212034, + 500016578, + 3035095401, + 1159165723, + 3677722856, + 3500824226, + 3405327991, + 2095637216, + 3941804893, + 2161512633, + 1479882974, + 327839999, + 153188094, + 365672036, + 436595039, + 98326027, + ]; + + static final String basicCompareFaces = String.fromCharCodes( + List.generate( + _envieddatabasicCompareFaces.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatabasicCompareFaces[i] ^ _enviedkeybasicCompareFaces[i])); + + static const List _enviedkeymapKeyOsm = [ + 1880725877, + 1912740320, + 3266542548, + 2054336914, + 1379127872, + 227009578, + 1846478925, + 2878974208, + 3213278626, + 1144816508, + 2203359042, + 735878522, + 2466200304, + 946402320, + 879102837, + 2671812745, + 3872307814, + 4055984631, + 763879643, + 2036980354, + ]; + + static const List _envieddatamapKeyOsm = [ + 1880725784, + 1912740225, + 3266542520, + 2054337014, + 1379127845, + 227009628, + 1846478861, + 2878974322, + 3213278669, + 1144816393, + 2203359030, + 735878431, + 2466200285, + 946402420, + 879102746, + 2671812837, + 3872307722, + 4055984534, + 763879593, + 2036980465, + ]; + + static final String mapKeyOsm = String.fromCharCodes(List.generate( + _envieddatamapKeyOsm.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatamapKeyOsm[i] ^ _enviedkeymapKeyOsm[i])); + + static const List _enviedkeysss_encryptionSalt = [ + 2142255476, + 284366874, + 1270706260, + 748215919, + 3776340499, + 2561096438, + 2457298913, + 2960978234, + 3161273143, + 3930985837, + 1018819817, + 2074811740, + 3001526957, + 4071104153, + 2899558977, + 2789268373, + 2541058341, + 1634579503, + 997672564, + 2969112716, + 2447544998, + 1502588636, + 1988629125, + 2924861119, + 2138175500, + 2187714698, + 1601108451, + 228144794, + 2397079823, + 3312472734, + 2136600304, + 998965048, + 129266895, + 4206281394, + 1306643977, + 3223055380, + 1131453015, + 1087145342, + 259389477, + 315073875, + 112155829, + 841060857, + 3480083606, + 3550310828, + 1157550670, + 3157014039, + 2803451551, + 3492161659, + 296978924, + 3653454494, + 3228245663, + 2933207844, + 571656288, + 748970365, + 3674906033, + 659647310, + 2533357593, + 2934855029, + 11938227, + 2934294970, + 940307896, + 2899367891, + 1005948227, + ]; + + static const List _envieddatasss_encryptionSalt = [ + 2142255374, + 284366973, + 1270706297, + 748215833, + 3776340600, + 2561096346, + 2457298824, + 2960978271, + 3161273114, + 3930985823, + 1018819717, + 2074811757, + 3001527031, + 4071104245, + 2899558961, + 2789268461, + 2541058380, + 1634579555, + 997672510, + 2969112762, + 2447545041, + 1502588557, + 1988629194, + 2924861129, + 2138175598, + 2187714792, + 1601108439, + 228144846, + 2397079905, + 3312472797, + 2136600265, + 998965088, + 129266877, + 4206281418, + 1306644078, + 3223055425, + 1131452946, + 1087145223, + 259389555, + 315073794, + 112155900, + 841060748, + 3480083616, + 3550310904, + 1157550599, + 3157014099, + 2803451563, + 3492161546, + 296978876, + 3653454506, + 3228245721, + 2933207921, + 571656245, + 748970252, + 3674906078, + 659647261, + 2533357612, + 2934854957, + 11938241, + 2934295010, + 940307924, + 2899367825, + 1005948207, + ]; + + static final String sss_encryptionSalt = String.fromCharCodes( + List.generate( + _envieddatasss_encryptionSalt.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatasss_encryptionSalt[i] ^ _enviedkeysss_encryptionSalt[i])); + + static const List _enviedkeysss_pass = [ + 2936667352, + 876206380, + 3186128085, + 3644475235, + 4171551389, + 3935055651, + 4185160202, + 3383043288, + 3512428989, + 273877880, + 2194175269, + 1682477365, + 3966359733, + 1028886641, + 3350459976, + 4292396371, + 3148371564, + 710615900, + 1115304974, + 2505747022, + 3041382642, + 2936086504, + 4085505205, + 108362252, + 2692491002, + 2152838152, + 3563449119, + 2874766139, + 555351262, + 3788871382, + 3226362165, + 1225811350, + ]; + + static const List _envieddatasss_pass = [ + 2936667311, + 876206429, + 3186128059, + 3644475150, + 4171551468, + 3935055698, + 4185160313, + 3383043250, + 3512428996, + 273877774, + 2194175314, + 1682477379, + 3966359695, + 1028886559, + 3350459961, + 4292396321, + 3148371457, + 710615813, + 1115305028, + 2505746974, + 3041382578, + 2936086489, + 4085505154, + 108362303, + 2692490957, + 2152838192, + 3563449159, + 2874766153, + 555351174, + 3788871354, + 3226362231, + 1225811450, + ]; + + static final String sss_pass = String.fromCharCodes(List.generate( + _envieddatasss_pass.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatasss_pass[i] ^ _enviedkeysss_pass[i])); + + static const List _enviedkeyaddd = [ + 856359347, + 522158964, + 1370037474, + 3606466936, + 960432668, + 1732434775, + ]; + + static const List _envieddataaddd = [ + 856359409, + 522158872, + 1370037408, + 3606466836, + 960432722, + 1732434747, + ]; + + static final String addd = String.fromCharCodes(List.generate( + _envieddataaddd.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataaddd[i] ^ _enviedkeyaddd[i])); + + static const List _enviedkeypassnpassenger = [ + 1792474850, + 1924104668, + 391311376, + 1647542146, + 668170995, + 988459319, + 1243891080, + 2395250797, + 2083894806, + 163003598, + 2320848855, + 3562560371, + 3133824981, + ]; + + static const List _envieddatapassnpassenger = [ + 1792474762, + 1924104638, + 391311479, + 1647542240, + 668170906, + 988459331, + 1243891178, + 2395250741, + 2083894884, + 163003542, + 2320848805, + 3562560305, + 3133824935, + ]; + + static final String passnpassenger = String.fromCharCodes(List.generate( + _envieddatapassnpassenger.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatapassnpassenger[i] ^ _enviedkeypassnpassenger[i])); + + static const List _enviedkeynewId = [ + 3220512096, + 1148287903, + 4066941307, + ]; + + static const List _envieddatanewId = [ + 3220512014, + 1148287994, + 4066941196, + ]; + + static final String newId = String.fromCharCodes(List.generate( + _envieddatanewId.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatanewId[i] ^ _enviedkeynewId[i])); + + static const List _enviedkeyallowed = [ + 1921270333, + 2061111604, + 3841100501, + 4129347794, + 1797614554, + 2186603037, + 2827436722, + 1539632237, + 3191692936, + 736776115, + 218392634, + ]; + + static const List _envieddataallowed = [ + 1921270352, + 2061111643, + 3841100471, + 4129347771, + 1797614518, + 2186603128, + 2827436703, + 1539632140, + 3191693048, + 736776131, + 218392576, + ]; + + static final String allowed = String.fromCharCodes(List.generate( + _envieddataallowed.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataallowed[i] ^ _enviedkeyallowed[i])); + + static const List _enviedkeyapiKeyHere = [ + 3817268896, + 4161775699, + 3301141030, + 1134146372, + 3857066077, + 2722898092, + 3934718659, + 3063587468, + 1822209404, + 4077554629, + 757295573, + 976327143, + 3144131708, + 3652349276, + 4136573864, + 1630918124, + 1883011707, + 2138798218, + 3463168398, + 2798516309, + 2130629731, + 2691517471, + 944278046, + 1837676307, + 3326908696, + 3172767852, + 2506241482, + 4072360526, + 2641044003, + 2624375478, + 1621395439, + 1757597560, + 2570551575, + 2303844382, + 1388240981, + 545560487, + 2022366108, + 4107939182, + 3708908872, + 2921895529, + 971259046, + 1041402734, + 1428626189, + 1025360981, + 2661920942, + 2598284823, + 4170160364, + 3394231170, + 108567072, + ]; + + static const List _envieddataapiKeyHere = [ + 3817268935, + 4161775628, + 3301141105, + 1134146314, + 3857065992, + 2722898126, + 3934718710, + 3063587520, + 1822209361, + 4077554609, + 757295527, + 976327054, + 3144131596, + 3652349222, + 4136573855, + 1630918081, + 1883011645, + 2138798258, + 3463168481, + 2798516280, + 2130629675, + 2691517551, + 944278091, + 1837676414, + 3326908799, + 3172767781, + 2506241456, + 4072360454, + 2641043988, + 2624375539, + 1621395387, + 1757597469, + 2570551647, + 2303844391, + 1388240941, + 545560573, + 2022366116, + 4107939132, + 3708908863, + 2921895470, + 971259105, + 1041402711, + 1428626258, + 1025360914, + 2661920918, + 2598284909, + 4170160308, + 3394231227, + 108567137, + ]; + + static final String apiKeyHere = String.fromCharCodes(List.generate( + _envieddataapiKeyHere.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataapiKeyHere[i] ^ _enviedkeyapiKeyHere[i])); + + static const List _enviedkeygetLocationAreaLinks = [ + 3404126900, + 3635509459, + 2760068551, + 1135026344, + 361014727, + 2319372031, + 2714864201, + 3531563054, + 1810411494, + 3495896604, + 3923131927, + 3463236857, + 4273060280, + 3250330773, + 3596924584, + 2134775821, + 760926808, + 73878508, + 1821638353, + 582171256, + 3456259047, + 842584153, + 4259212386, + 3452581713, + 596600050, + 898075563, + 2734934163, + 626507477, + 2488240861, + 1729100675, + 2304482244, + 2116746605, + 2229198287, + 4054662819, + 919217506, + 3217274338, + 87409090, + 3028410396, + 2357937549, + 2039888758, + 918643754, + 676818405, + 2278470455, + 762101466, + 703159238, + 4078132155, + 2102302303, + 1758233505, + 327406267, + 2205087070, + 3204855632, + 3474242571, + 576463225, + 2529772108, + 1816139063, + 186395551, + 170455642, + 873083301, + 406004334, + 1746650876, + 3404571507, + 3278932612, + 2364323337, + 1029539922, + 391278705, + 943403502, + 341044865, + 1925641005, + 708085454, + 878870981, + 406709643, + 1348206451, + 2204128571, + 1007920868, + 4073079278, + ]; + + static const List _envieddatagetLocationAreaLinks = [ + 3404126940, + 3635509415, + 2760068531, + 1135026392, + 361014708, + 2319371973, + 2714864230, + 3531563009, + 1810411399, + 3495896684, + 3923132030, + 3463236823, + 4273060300, + 3250330855, + 3596924609, + 2134775933, + 760926754, + 73878465, + 1821638324, + 582171167, + 3456258974, + 842584105, + 4259212310, + 3452581759, + 596599953, + 898075588, + 2734934270, + 626507514, + 2488240809, + 1729100785, + 2304482221, + 2116746525, + 2229198261, + 4054662796, + 919217424, + 3217274251, + 87409062, + 3028410489, + 2357937570, + 2039888666, + 918643781, + 676818310, + 2278470486, + 762101422, + 703159215, + 4078132180, + 2102302257, + 1758233486, + 327406300, + 2205087035, + 3204855588, + 3474242644, + 576463125, + 2529772067, + 1816139092, + 186395646, + 170455598, + 873083340, + 406004225, + 1746650770, + 3404571436, + 3278932709, + 2364323451, + 1029539895, + 391278608, + 943403441, + 341044973, + 1925641028, + 708085408, + 878870958, + 406709752, + 1348206429, + 2204128587, + 1007920780, + 4073079198, + ]; + + static final String getLocationAreaLinks = String.fromCharCodes( + List.generate( + _envieddatagetLocationAreaLinks.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatagetLocationAreaLinks[i] ^ + _enviedkeygetLocationAreaLinks[i])); + + static const List _enviedkeyinitializationVector = [ + 2201295168, + 2446211413, + 1881952212, + 2993956456, + 972975111, + 3151220221, + 1530369156, + 2788019061, + 326364544, + 3044280583, + 983993733, + 1260359253, + 3722860874, + 3461661086, + 667702118, + 2522204854, + 3330797164, + 3115156146, + 3573155996, + 2827515416, + 2004019848, + 428764783, + ]; + + static const List _envieddatainitializationVector = [ + 2201295153, + 2446211373, + 1881952178, + 2993956369, + 972975213, + 3151220104, + 1530369263, + 2788018946, + 326364655, + 3044280674, + 983993826, + 1260359207, + 3722860836, + 3461661180, + 667702031, + 2522204864, + 3330797108, + 3115156160, + 3573156036, + 2827515498, + 2004019914, + 428764701, + ]; + + static final String initializationVector = String.fromCharCodes( + List.generate( + _envieddatainitializationVector.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatainitializationVector[i] ^ + _enviedkeyinitializationVector[i])); + + static const List _enviedkeybasicCompareFacesURL = [ + 1330600922, + 2887722883, + 2311059944, + 1416268531, + 3823483437, + 1178246148, + 2679379553, + 3811548580, + 1911437534, + 697424122, + 3139472572, + 2497341502, + 2812690971, + 2271326259, + 1920762681, + 2993486050, + 1687020017, + 3048008054, + 2830274653, + 62070531, + 1614942967, + 3087909243, + 3525994045, + 1276239452, + 748595692, + 32173991, + 1537813415, + 503865261, + 1130536453, + 48682119, + 1829158149, + 297207651, + 2478383607, + 2655797692, + 450448992, + 1384807967, + 1659905640, + 475498785, + 3310131022, + 1000386431, + 1876247973, + 1266592207, + 2214694242, + 3501035720, + 2217940831, + 4007139879, + 635569862, + 2304126238, + 1402568687, + 3524149872, + 3624292399, + 930448730, + 4143781031, + 3937919167, + 577897467, + 18660539, + 792610170, + 442906291, + 2690221051, + 2753670074, + ]; + + static const List _envieddatabasicCompareFacesURL = [ + 1330600882, + 2887722999, + 2311059868, + 1416268419, + 3823483486, + 1178246206, + 2679379534, + 3811548555, + 1911437496, + 697424027, + 3139472607, + 2497341531, + 2812690998, + 2271326295, + 1920762716, + 2993485974, + 1687019924, + 3048007957, + 2830274601, + 62070574, + 1614942865, + 3087909197, + 3525993988, + 1276239470, + 748595672, + 32173972, + 1537813406, + 503865247, + 1130536550, + 48682163, + 1829158246, + 297207636, + 2478383577, + 2655797716, + 450448901, + 1384808045, + 1659905543, + 475498826, + 3310131003, + 1000386334, + 1876248021, + 1266592191, + 2214694220, + 3501035691, + 2217940784, + 4007139914, + 635569897, + 2304126333, + 1402568576, + 3524149789, + 3624292447, + 930448699, + 4143781077, + 3937919194, + 577897380, + 18660573, + 792610075, + 442906320, + 2690220958, + 2753670089, + ]; + + static final String basicCompareFacesURL = String.fromCharCodes( + List.generate( + _envieddatabasicCompareFacesURL.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatabasicCompareFacesURL[i] ^ + _enviedkeybasicCompareFacesURL[i])); + + static const List _enviedkeyaccountSIDTwillo = [ + 2843783092, + 1674419346, + 3803422258, + 132889725, + 1586455900, + 3294810875, + 2713641844, + 719237140, + 2160285213, + 3355031642, + 1044812735, + 465231708, + 2773128885, + 2458872187, + 1257532603, + 2310638280, + 311739674, + 4045327999, + 3499891219, + 628184479, + 4039907483, + 2533330186, + 1341177550, + 1025907715, + 509633930, + 1553205648, + 1248145143, + 3082345651, + 2221820334, + 3094338270, + 624605643, + 2263308676, + 3691275035, + 383131392, + 2080149801, + 794174709, + 2136872233, + 468082603, + 3193516271, + 3874655752, + 284351138, + ]; + + static const List _envieddataaccountSIDTwillo = [ + 2843783141, + 1674419412, + 3803422282, + 132889677, + 1586455853, + 3294810754, + 2713641792, + 719237153, + 2160285227, + 3355031600, + 1044812746, + 465231670, + 2773128838, + 2458872131, + 1257532552, + 2310638246, + 311739683, + 4045327879, + 3499891302, + 628184550, + 4039907497, + 2533330235, + 1341177591, + 1025907767, + 509634043, + 1553205670, + 1248145093, + 3082345610, + 2221820383, + 3094338287, + 624605613, + 2263308782, + 3691275051, + 383131513, + 2080149790, + 794174637, + 2136872283, + 468082675, + 3193516163, + 3874655818, + 284351182, + ]; + + static final String accountSIDTwillo = String.fromCharCodes( + List.generate( + _envieddataaccountSIDTwillo.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddataaccountSIDTwillo[i] ^ _enviedkeyaccountSIDTwillo[i])); + + static const List _enviedkeyserverAPI = [ + 3976340862, + 876930661, + 2754762348, + 2464537893, + 3707602655, + 2489749710, + 3424437440, + 1372632324, + 2975339402, + 2676738093, + 3221041012, + 744897494, + 1424458647, + 1079081365, + 3562411819, + 4004226372, + 2704808793, + 1168829629, + 1992531918, + 3180887892, + 1772554705, + 4274017960, + 263526825, + 1684978867, + 3658977582, + 2764849002, + 2435386837, + 2434610909, + 1238171864, + 3938577549, + 3000351850, + 1398183753, + 75887018, + 774832896, + 1523285360, + 309110719, + 858312180, + 2818584421, + 3270452275, + 983656457, + 1664075801, + 2926896384, + 769664241, + 1537228947, + 2075245662, + 3146684998, + 2628184795, + 1239022201, + 654943327, + 1715476740, + 1718664042, + 2638834984, + 4184911395, + 489667049, + 1830225181, + 2640753699, + 4200140839, + 201082292, + 701445777, + 3501131445, + 1086182735, + 2058515131, + 4059527038, + 950334178, + 587472557, + 1704249165, + 922220226, + 1556517143, + 1406823262, + 2446727386, + 2079624285, + 37938373, + 1344228475, + 3910369000, + 1492984777, + 1437083473, + 2842770769, + 2576354000, + 1864807939, + 2895209442, + 2917935409, + 567043849, + 576658584, + 4104668683, + 289522001, + 3394727170, + 3201674837, + 1290177783, + 3115294296, + 4259693824, + 3129141406, + 325281440, + 530300610, + 415806151, + 187464629, + 530694302, + 2938142458, + 1021781952, + 291246485, + 3228999424, + 3831388593, + 2533438819, + 2895384640, + 3081205453, + 2373368017, + 2532170150, + 3060366470, + 4244026566, + 1554490727, + 3410670928, + 960347257, + 3614687388, + 3705063013, + 198619704, + 705028789, + 3504828489, + 1242117333, + 774908927, + 3721749151, + 4098061798, + 942891585, + 3861283949, + 111830844, + 3658249279, + 446418689, + 869497804, + 1866712611, + 1426830386, + 2940675768, + 3528266654, + 331680518, + 3378186940, + 1334652234, + 596949604, + 1854281103, + 2800667846, + 476777023, + 3236423334, + 2603128686, + 503959906, + 3681931758, + 2093974656, + 2704910478, + 2439513144, + 3257918460, + 2319599066, + 1093709546, + 3895079102, + 2569178988, + 3737864579, + 839085567, + 273990226, + 2247636415, + 1654429663, + 3419379873, + 3959242870, + 3890025019, + 3201343901, + ]; + + static const List _envieddataserverAPI = [ + 3976340783, + 876930612, + 2754762301, + 2464537972, + 3707602608, + 2489749676, + 3424437395, + 1372632438, + 2975339512, + 2676738155, + 3221040925, + 744897516, + 1424458694, + 1079081411, + 3562411898, + 4004226428, + 2704808814, + 1168829637, + 1992531867, + 3180887907, + 1772554667, + 4274018015, + 263526890, + 1684978885, + 3658977603, + 2764848944, + 2435386799, + 2434610823, + 1238171836, + 3938577644, + 3000351762, + 1398183740, + 75887097, + 774832946, + 1523285270, + 309110669, + 858312135, + 2818584380, + 3270452231, + 983656548, + 1664075875, + 2926896439, + 769664188, + 1537229033, + 2075245607, + 3146684937, + 2628184737, + 1239022091, + 654943335, + 1715476843, + 1718663950, + 2638834970, + 4184911425, + 489666971, + 1830225195, + 2640753768, + 4200140926, + 201082317, + 701445876, + 3501131507, + 1086182702, + 2058515183, + 4059526952, + 950334126, + 587472618, + 1704249214, + 922220169, + 1556517156, + 1406823222, + 2446727330, + 2079624296, + 37938335, + 1344228378, + 3910368957, + 1492984752, + 1437083433, + 2842770790, + 2576353973, + 1864808026, + 2895209364, + 2917935472, + 567043920, + 576658664, + 4104668746, + 289521927, + 3394727270, + 3201674782, + 1290177692, + 3115294325, + 4259693874, + 3129141414, + 325281430, + 530300556, + 415806099, + 187464679, + 530694391, + 2938142409, + 1021781946, + 291246566, + 3228999481, + 3831388632, + 2533438768, + 2895384591, + 3081205411, + 2373367945, + 2532170194, + 3060366558, + 4244026516, + 1554490670, + 3410670888, + 960347146, + 3614687467, + 3705062914, + 198619659, + 705028862, + 3504828460, + 1242117302, + 774908861, + 3721749234, + 4098061717, + 942891565, + 3861283934, + 111830890, + 3658249287, + 446418763, + 869497845, + 1866712660, + 1426830461, + 2940675733, + 3528266728, + 331680591, + 3378186956, + 1334652221, + 596949521, + 1854281147, + 2800667798, + 476777033, + 3236423313, + 2603128586, + 503959817, + 3681931686, + 2093974763, + 2704910550, + 2439513174, + 3257918357, + 2319599023, + 1093709458, + 3895079155, + 2569178943, + 3737864647, + 839085464, + 273990149, + 2247636455, + 1654429613, + 3419379961, + 3959242778, + 3890025081, + 3201343985, + ]; + + static final String serverAPI = String.fromCharCodes(List.generate( + _envieddataserverAPI.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataserverAPI[i] ^ _enviedkeyserverAPI[i])); + + static const List _enviedkeymapAPIKEY = [ + 2247714160, + 2560268629, + 60973890, + 4238015695, + 3486272014, + 4139058870, + 3284541187, + 1937795265, + 4268641415, + 3452889939, + 3658126130, + 253733115, + 3331289064, + 2627639475, + 4246775286, + 878786301, + 3804413434, + 2745587036, + 1763947689, + 295551841, + 2115785072, + 88958942, + 1115480111, + 3276376593, + 4136534122, + 1162804378, + 14284426, + 17535057, + 2319425705, + 1953711881, + 3792644850, + 1255190121, + 514431811, + 3899457619, + 2021344858, + 1913226202, + 3546162315, + 698376319, + 2354027959, + ]; + + static const List _envieddatamapAPIKEY = [ + 2247714097, + 2560268572, + 60973880, + 4238015662, + 3486272093, + 4139058895, + 3284541250, + 1937795217, + 4268641473, + 3452889857, + 3658126189, + 253733027, + 3331288970, + 2627639521, + 4246775224, + 878786253, + 3804413346, + 2745586950, + 1763947676, + 295551784, + 2115784970, + 88958957, + 1115480174, + 3276376648, + 4136534062, + 1162804464, + 14284484, + 17534984, + 2319425761, + 1953711950, + 3792644792, + 1255190062, + 514431857, + 3899457568, + 2021344872, + 1913226123, + 3546162396, + 698376200, + 2354028026, + ]; + + static final String mapAPIKEY = String.fromCharCodes(List.generate( + _envieddatamapAPIKEY.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatamapAPIKEY[i] ^ _enviedkeymapAPIKEY[i])); + + static const List _enviedkeymapAPIKEYIOS = [ + 3242026595, + 226759590, + 3513945943, + 1675836857, + 2070623184, + 1212962385, + 2949685960, + 2314727532, + 4229834780, + 2675409629, + 4268245054, + 2647028317, + 1980982459, + 2590627602, + 4006411907, + 740712139, + 2498147417, + 130942695, + 3681207417, + 3402766120, + 3536327117, + 3770297355, + 2085970437, + 566701769, + 4055782816, + 1608102648, + 3393804425, + 2100732790, + 3315765567, + 1614848706, + 1829636998, + 2806101795, + 3386515473, + 2410019939, + 3104463353, + 924278124, + 6962405, + 2844298305, + 701510329, + ]; + + static const List _envieddatamapAPIKEYIOS = [ + 3242026530, + 226759663, + 3513945901, + 1675836888, + 2070623107, + 1212962344, + 2949685900, + 2314727432, + 4229834861, + 2675409590, + 4268245106, + 2647028240, + 1980982520, + 2590627680, + 4006412018, + 740712097, + 2498147343, + 130942613, + 3681207319, + 3402766111, + 3536327061, + 3770297446, + 2085970532, + 566701741, + 4055782889, + 1608102537, + 3393804528, + 2100732696, + 3315765574, + 1614848685, + 1829637060, + 2806101826, + 3386515494, + 2410019891, + 3104463307, + 924278107, + 6962346, + 2844298276, + 701510388, + ]; + + static final String mapAPIKEYIOS = String.fromCharCodes(List.generate( + _envieddatamapAPIKEYIOS.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatamapAPIKEYIOS[i] ^ _enviedkeymapAPIKEYIOS[i])); + + static const List _enviedkeytwilloRecoveryCode = [ + 2689140138, + 1298299846, + 2057967448, + 2137865182, + 2938356726, + 1691312281, + 2231705315, + 59667461, + 1041068572, + 1212147038, + 3924764144, + 1831149843, + 40385226, + 1407278889, + 3376967208, + 2930603709, + 2681028551, + 325951936, + 450904546, + 1158123913, + 3461876794, + 4048211225, + 3908777410, + 1222192183, + 3459582394, + 3627977289, + 1751140149, + 3573607933, + 3595094674, + 3865880740, + 714370723, + ]; + + static const List _envieddatatwilloRecoveryCode = [ + 2689140201, + 1298299783, + 2057967373, + 2137865193, + 2938356687, + 1691312349, + 2231705259, + 59667541, + 1041068628, + 1212147055, + 3924764082, + 1831149945, + 40385167, + 1407278864, + 3376967288, + 2930603752, + 2681028495, + 325951988, + 450904487, + 1158123997, + 3461876834, + 4048211277, + 3908777361, + 1222192239, + 3459582432, + 3627977233, + 1751140167, + 3573607845, + 3595094782, + 3865880806, + 714370767, + ]; + + static final String twilloRecoveryCode = String.fromCharCodes( + List.generate( + _envieddatatwilloRecoveryCode.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatatwilloRecoveryCode[i] ^ _enviedkeytwilloRecoveryCode[i])); + + static const List _enviedkeyauthTokenTwillo = [ + 550160046, + 2319335841, + 1053614357, + 3805976816, + 2370913201, + 1385227187, + 1955262560, + 3654581219, + 3218643785, + 3775928016, + 1080892875, + 1144318036, + 1298398762, + 3254180924, + 4054769829, + 576524082, + 916329670, + 4055003212, + 986404453, + 521422304, + 1307751592, + 641572031, + 1969181429, + 3951897168, + 828310667, + 3969389323, + 1200210257, + 3203333471, + 2467733379, + 917204918, + 3855643778, + 3370839775, + 2467915783, + 2462259520, + 2536763376, + 2301343237, + 309682522, + 1346811043, + 9843013, + ]; + + static const List _envieddataauthTokenTwillo = [ + 550160025, + 2319335825, + 1053614432, + 3805976777, + 2370913161, + 1385227225, + 1955262485, + 3654581203, + 3218643835, + 3775928033, + 1080892927, + 1144318011, + 1298398802, + 3254180932, + 4054769809, + 576524099, + 916329718, + 4055003193, + 986404434, + 521422292, + 1307751576, + 641571981, + 1969181389, + 3951897125, + 828310715, + 3969389369, + 1200210272, + 3203333418, + 2467733431, + 917204935, + 3855643895, + 3370839785, + 2467915826, + 2462259480, + 2536763266, + 2301343325, + 309682486, + 1346811105, + 9842985, + ]; + + static final String authTokenTwillo = String.fromCharCodes(List.generate( + _envieddataauthTokenTwillo.length, + (int i) => i, + growable: false, + ).map( + (int i) => _envieddataauthTokenTwillo[i] ^ _enviedkeyauthTokenTwillo[i])); + + static const List _enviedkeychatGPTkey = [ + 3411261939, + 2148041557, + 1239406863, + 2505787222, + 1026121752, + 506996797, + 1625950291, + 2287542558, + 1602415689, + 3979349983, + 3431506210, + 2145365833, + 1700889457, + 2046901692, + 1940607177, + 3545010845, + 1595543080, + 51154378, + 3799259360, + 2429407672, + 4164116956, + 2680039016, + 3275785567, + 1250429927, + 2147043762, + 1486248192, + 1272778244, + 2987720676, + 1957620816, + 568908027, + 2422341873, + 2109254189, + 2435992579, + 3518627944, + 1350420187, + 2603668676, + 3520694324, + 799269050, + 1126040433, + 3973271653, + 3874166578, + 2691444775, + 499201732, + 1725502412, + 512811952, + 3550319764, + 2791440863, + 3370105785, + 213525776, + 3622779136, + 3508089745, + 3424172753, + 2441788357, + 1587664731, + 3861880036, + 3873561842, + 3004624558, + 3359940933, + ]; + + static const List _envieddatachatGPTkey = [ + 3411261833, + 2148041522, + 1239406882, + 2505787234, + 1026121819, + 506996751, + 1625950309, + 2287542639, + 1602415741, + 3979349900, + 3431506299, + 2145365806, + 1700889395, + 2046901751, + 1940607128, + 3545010936, + 1595543136, + 51154320, + 3799259300, + 2429407689, + 4164116919, + 2680038975, + 3275785520, + 1250429840, + 2147043825, + 1486248249, + 1272778332, + 2987720598, + 1957620776, + 568907932, + 2422341796, + 2109254248, + 2435992677, + 3518627901, + 1350420130, + 2603668733, + 3520694398, + 799269096, + 1126040326, + 3973271639, + 3874166592, + 2691444810, + 499201778, + 1725502365, + 512811906, + 3550319861, + 2791440827, + 3370105819, + 213525795, + 3622779243, + 3508089851, + 3424172710, + 2441788317, + 1587664681, + 3861879996, + 3873561758, + 3004624620, + 3359940905, + ]; + + static final String chatGPTkey = String.fromCharCodes(List.generate( + _envieddatachatGPTkey.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatachatGPTkey[i] ^ _enviedkeychatGPTkey[i])); + + static const List _enviedkeytransactionCloude = [ + 3074221553, + 3951058408, + 4067445206, + 4240864769, + 3029822673, + 338343838, + 313992139, + 177933594, + 1201867745, + 902478735, + 2553476916, + 257362754, + 392548703, + 2942901664, + 3789213795, + 3442876235, + 1376555914, + 647608357, + 3179574741, + 942544542, + 1564366485, + 1769541812, + 3204174490, + 3220680781, + 2298243568, + 3608817361, + 1548501007, + 1334349355, + 1102447177, + 1385255816, + 3808195097, + 883667915, + 772327800, + 3925076835, + 3326689581, + 516407938, + 1753712902, + 4211012475, + 186284189, + 2507991086, + 2230197226, + 1267305337, + 3358179646, + 1142302397, + 3106352290, + 1768862547, + 4106756966, + 2172865925, + 480632436, + 2351076572, + 4283776158, + 2544420734, + 207632763, + 3684204177, + 1987313992, + 2918435654, + 203592029, + 2106962387, + 3721228987, + 2850354239, + 1310733976, + 3623391472, + ]; + + static const List _envieddatatransactionCloude = [ + 3074221472, + 3951058304, + 4067445173, + 4240864886, + 3029822628, + 338343927, + 313992103, + 177933685, + 1201867660, + 902478846, + 2553476951, + 257362733, + 392548662, + 2942901698, + 3789213785, + 3442876186, + 1376555996, + 647608426, + 3179574666, + 942544596, + 1564366555, + 1769541869, + 3204174559, + 3220680713, + 2298243522, + 3608817289, + 1548501080, + 1334349418, + 1102447227, + 1385255870, + 3808195136, + 883667859, + 772327731, + 3925076768, + 3326689567, + 516408022, + 1753712982, + 4211012417, + 186284228, + 2507991141, + 2230197211, + 1267305277, + 3358179688, + 1142302453, + 3106352276, + 1768862464, + 4106756908, + 2172865991, + 480632391, + 2351076589, + 4283776208, + 2544420685, + 207632683, + 3684204244, + 1987314041, + 2918435603, + 203591941, + 2106962337, + 3721229027, + 2850354259, + 1310734042, + 3623391388, + ]; + + static final String transactionCloude = String.fromCharCodes( + List.generate( + _envieddatatransactionCloude.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatatransactionCloude[i] ^ _enviedkeytransactionCloude[i])); + + static const List _enviedkeyvisionApi = [ + 3449569445, + 1424033417, + 474964228, + 2213678135, + 567698513, + 278969534, + 144214055, + 2659032685, + 3925455488, + 1622357700, + 1136615058, + 2580278842, + 3675016836, + 4191209896, + 2524594001, + 3838616617, + 1876340672, + 2111963964, + 4288508606, + 581945109, + 3240508474, + 1076307663, + 3057404931, + 782678162, + 1629718417, + 3313726635, + 964809155, + 1597079749, + 3336087780, + 1859779564, + 1660419210, + 2578934842, + 4099186848, + 2378904315, + 2338194984, + 881229155, + 436842941, + 3639724217, + ]; + + static const List _envieddatavisionApi = [ + 3449569430, + 1424033529, + 474964293, + 2213678203, + 567698466, + 278969551, + 144214132, + 2659032638, + 3925455577, + 1622357648, + 1136615140, + 2580278848, + 3675016948, + 4191209886, + 2524594024, + 3838616696, + 1876340725, + 2111964026, + 4288508659, + 581945180, + 3240508509, + 1076307629, + 3057405049, + 782678264, + 1629718486, + 3313726621, + 964809113, + 1597079796, + 3336087710, + 1859779463, + 1660419326, + 2578934896, + 4099186936, + 2378904201, + 2338195056, + 881229071, + 436843007, + 3639724245, + ]; + + static final String visionApi = String.fromCharCodes(List.generate( + _envieddatavisionApi.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatavisionApi[i] ^ _enviedkeyvisionApi[i])); + + static const List _enviedkeysecretKey = [ + 4140745550, + 3178408042, + 1670814531, + 3711282077, + 1662128599, + 2889772086, + 1014452685, + 3064053161, + 3380164303, + 1121077713, + 3395820404, + 3048260593, + 2971600797, + 1624369151, + 564174429, + 1994829589, + 2238813768, + 3856513925, + 2474391362, + 1671318605, + 1275341974, + 2433357473, + 2300558167, + 3502011188, + 3045159025, + 3673257124, + 3784164155, + 2921536830, + 3053351981, + 1709997607, + 939033529, + 2210749178, + 1543708163, + 3587197731, + 522450157, + 1494024919, + 1215441420, + 4032619068, + 4178537696, + 1895028211, + 814537802, + 3097838214, + 3924531299, + 1123669819, + 2471307014, + 903882385, + 518508348, + 2734682307, + 1609277034, + 2300250967, + 457095514, + 4234953889, + 3319745839, + 3982427809, + 1770484065, + 1929441996, + 668317955, + 2709879740, + 1548907051, + 2501230123, + 906637839, + 2421468484, + 402638955, + 1070192145, + 3349225512, + 1492212846, + 269678157, + 3904211919, + 3200035485, + 2869006894, + 3610364665, + 1788566239, + 3206653378, + 747661071, + 1566895650, + 3568568164, + 3654832529, + 3253616469, + 2410231022, + 2720063622, + 1111909744, + 3148038286, + 778856656, + 3884526090, + 545658427, + 2059041156, + 2243131660, + 450205184, + 3076101930, + 776895230, + 1756916461, + 1964317324, + 1474443632, + 4025902323, + 4141291063, + 3352169569, + 3125356068, + 3252599961, + 3744929749, + 774818637, + 226178144, + 1277440227, + 633593715, + 2779085681, + 3252663185, + 2579559376, + 1983324010, + 2710271075, + 53403007, + 325554330, + 4073441341, + 3337826937, + 1408439834, + 3775185935, + ]; + + static const List _envieddatasecretKey = [ + 4140745524, + 3178407949, + 1670814492, + 3711282159, + 1662128568, + 2889772102, + 1014452647, + 3064053238, + 3380164346, + 1121077734, + 3395820349, + 3048260504, + 2971600875, + 1624369097, + 564174381, + 1994829656, + 2238813710, + 3856513990, + 2474391296, + 1671318539, + 1275342055, + 2433357458, + 2300558100, + 3502011142, + 3045158943, + 3673257106, + 3784164210, + 2921536870, + 3053352001, + 1709997642, + 939033555, + 2210749059, + 1543708264, + 3587197779, + 522450069, + 1494024851, + 1215441505, + 4032619115, + 4178537689, + 1895028160, + 814537753, + 3097838289, + 3924531280, + 1123669837, + 2471307120, + 903882441, + 518508372, + 2734682357, + 1609277010, + 2300250882, + 457095451, + 4234953880, + 3319745915, + 3982427796, + 1770484007, + 1929441923, + 668318033, + 2709879784, + 1548907132, + 2501230156, + 906637912, + 2421468471, + 402638911, + 1070192162, + 3349225503, + 1492212797, + 269678137, + 3904211844, + 3200035566, + 2869006945, + 3610364585, + 1788566203, + 3206653365, + 747661131, + 1566895686, + 3568568087, + 3654832616, + 3253616493, + 2410230943, + 2720063700, + 1111909705, + 3148038397, + 778856610, + 3884526151, + 545658478, + 2059041256, + 2243131769, + 450205281, + 3076101954, + 776895117, + 1756916446, + 1964317410, + 1474443552, + 4025902267, + 4141291073, + 3352169478, + 3125356134, + 3252600056, + 3744929766, + 774818686, + 226178068, + 1277440164, + 633593624, + 2779085640, + 3252663201, + 2579559334, + 1983323964, + 2710271062, + 53402919, + 325554408, + 4073441381, + 3337826837, + 1408439896, + 3775186019, + ]; + + static final String secretKey = String.fromCharCodes(List.generate( + _envieddatasecretKey.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatasecretKey[i] ^ _enviedkeysecretKey[i])); + + static const List _enviedkeystripePublishableKe = [ + 1131561294, + 2711604043, + 2145438534, + 2360936889, + 917884507, + 943173038, + 2049302825, + 2388082498, + 1714080331, + 918934053, + 1312375978, + 1430083567, + 3144177047, + 753529424, + 3600024350, + 3533519459, + 3393226149, + 3034528707, + 2274373170, + 705124211, + 3505652149, + 3164031223, + 2980824754, + 4177489357, + 2612244290, + 380737404, + 2073785079, + 2028554690, + 3637466038, + 1326782093, + 3714588566, + 982432894, + 1922869578, + 1801151060, + 1847673334, + 2962612282, + 4172865284, + 2600285898, + 3137668193, + 1757787985, + 2419940104, + 3077560413, + 2958385622, + 1866645297, + 1813098684, + 2931437, + 430881370, + 3054916559, + 3072068927, + 2983391157, + 537211855, + 3016928490, + 2932098291, + 967822812, + 2680842344, + 349884289, + 1918020125, + 4181677295, + 935528141, + 98582932, + 1580985494, + 3131539899, + 1625179159, + 2225003075, + 2057582527, + 2841569269, + 186929617, + 3189508925, + 1770763366, + 353156279, + 878542735, + 3018827748, + 2205537999, + 544189314, + 3077791291, + 3905192562, + 730377716, + 1986075123, + 197393759, + 212586995, + 1540211849, + 4134830671, + 1543569231, + 2828495303, + 2567308120, + 1830630969, + 3757512651, + 2552828232, + 695885796, + 1231146981, + 2871782048, + 1453407665, + 1681892297, + 1140670313, + 2344516727, + 460245895, + 3192034309, + 3434432290, + 2206422758, + 1177540407, + 919924075, + 1753835819, + 3003089654, + 2783922040, + 4124749669, + 3899550883, + 302065634, + 3160408601, + 4084296451, + 416404171, + 98095081, + 115708127, + 3379724151, + 906566332, + ]; + + static const List _envieddatastripePublishableKe = [ + 1131561272, + 2711604012, + 2145438489, + 2360936905, + 917884457, + 943173057, + 2049302873, + 2388082472, + 1714080276, + 918934032, + 1312375965, + 1430083494, + 3144177150, + 753529382, + 3600024360, + 3533519406, + 3393226211, + 3034528640, + 2274373232, + 705124149, + 3505652164, + 3164031172, + 2980824817, + 4177489407, + 2612244268, + 380737354, + 2073784988, + 2028554636, + 3637466108, + 1326782179, + 3714588620, + 982432828, + 1922869555, + 1801150978, + 1847673280, + 2962612308, + 4172865393, + 2600285838, + 3137668117, + 1757787913, + 2419940205, + 3077560420, + 2958385567, + 1866645339, + 1813098745, + 2931389, + 430881301, + 3054916521, + 3072068951, + 2983391192, + 537211839, + 3016928430, + 2932098183, + 967822731, + 2680842245, + 349884405, + 1918020142, + 4181677218, + 935528065, + 98582982, + 1580985510, + 3131539932, + 1625179206, + 2225003059, + 2057582550, + 2841569213, + 186929586, + 3189508972, + 1770763275, + 353156342, + 878542793, + 3018827689, + 2205537946, + 544189394, + 3077791305, + 3905192488, + 730377623, + 1986075072, + 197393678, + 212586906, + 1540211914, + 4134830603, + 1543569189, + 2828495295, + 2567308058, + 1830631011, + 3757512583, + 2552828202, + 695885724, + 1231146913, + 2871782115, + 1453407618, + 1681892268, + 1140670223, + 2344516623, + 460245968, + 3192034429, + 3434432344, + 2206422741, + 1177540356, + 919923977, + 1753835900, + 3003089598, + 2783921993, + 4124749631, + 3899550916, + 302065552, + 3160408682, + 4084296539, + 416404153, + 98095025, + 115708083, + 3379724085, + 906566352, + ]; + + static final String stripePublishableKe = String.fromCharCodes( + List.generate( + _envieddatastripePublishableKe.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatastripePublishableKe[i] ^ + _enviedkeystripePublishableKe[i])); + + static const List _enviedkeychatGPTkeySefer = [ + 1170213883, + 1230796405, + 2692608690, + 586643958, + 1444376389, + 2665329816, + 2520813035, + 1892323135, + 2615026508, + 1821623105, + 470915285, + 2986511910, + 1984021874, + 2378608420, + 4040076084, + 1357339810, + 786958546, + 2745942755, + 3001335999, + 3616186175, + 4272291956, + 1508908783, + 4257149852, + 2993173190, + 3400204933, + 1967437533, + 1568762336, + 2145918089, + 4214034336, + 1367897060, + 3851127028, + 3108930351, + 1212223174, + 2320450111, + 1310355215, + 2550142673, + 77649110, + 2799649395, + 968869800, + 924457208, + 4273065543, + 845117018, + 2884866301, + 1074957533, + 2383930581, + 2489578455, + 4022005017, + 981527223, + 514946709, + 90417695, + 284556780, + 1287050855, + 1681773132, + 2288410432, + 1165774811, + 3493773321, + 3160030646, + 639429337, + ]; + + static const List _envieddatachatGPTkeySefer = [ + 1170213761, + 1230796306, + 2692608671, + 586643903, + 1444376364, + 2665329866, + 2520813016, + 1892323158, + 2615026552, + 1821623086, + 470915258, + 2986511964, + 1984021779, + 2378608407, + 4040076141, + 1357339860, + 786958522, + 2745942677, + 3001336029, + 3616186118, + 4272291846, + 1508908725, + 4257149943, + 2993173239, + 3400204998, + 1967437540, + 1568762296, + 2145918203, + 4214034392, + 1367896963, + 3851126945, + 3108930410, + 1212223222, + 2320450131, + 1310355255, + 2550142651, + 77649028, + 2799649313, + 968869874, + 924457098, + 4273065487, + 845116976, + 2884866254, + 1074957452, + 2383930544, + 2489578466, + 4022005064, + 981527279, + 514946757, + 90417779, + 284556701, + 1287050801, + 1681773076, + 2288410418, + 1165774723, + 3493773413, + 3160030708, + 639429301, + ]; + + static final String chatGPTkeySefer = String.fromCharCodes(List.generate( + _envieddatachatGPTkeySefer.length, + (int i) => i, + growable: false, + ).map( + (int i) => _envieddatachatGPTkeySefer[i] ^ _enviedkeychatGPTkeySefer[i])); + + static const List _enviedkeyllamaKey = [ + 2216994654, + 4165720590, + 2390816986, + 2956800409, + 2229394218, + 967747776, + 94923990, + 343817980, + 744985647, + 3686941901, + 1171660115, + 3365633231, + 4148699480, + 3208172736, + 1999091990, + 521684559, + 2316246415, + 3823642181, + 2869414779, + 366505400, + 1520105813, + 2034625152, + 1870663200, + 729470607, + 3908999355, + 4085221290, + 1497281490, + 3213374705, + 3043620130, + 2328360698, + 3378489523, + 3120061209, + 3360390810, + 1054108641, + 3498504396, + 914607340, + 2038771644, + 2528646761, + 2396923777, + 3146042573, + 280186846, + 977954549, + 995303269, + 3809127322, + 3447387968, + 4210006039, + 2032659889, + 1067097282, + 3998891546, + 3195386803, + 1828139144, + 1327307609, + 206086698, + 2844558899, + 229991343, + 2606249556, + 3543194086, + 1263528290, + 1426721303, + 1658400226, + 3147579068, + 3409949773, + 1538614711, + 2565062690, + 2007018161, + 1405116349, + 448046420, + 3360054307, + 49411291, + 2622305860, + 2198106288, + 395273829, + 1696907761, + 3580203004, + ]; + + static const List _envieddatallamaKey = [ + 2216994572, + 4165720668, + 2390817015, + 2956800476, + 2229394271, + 967747769, + 94923961, + 343817914, + 744985707, + 3686941848, + 1171660069, + 3365633193, + 4148699402, + 3208172676, + 1999092052, + 521684512, + 2316246501, + 3823642225, + 2869414733, + 366505438, + 1520105743, + 2034625227, + 1870663265, + 729470715, + 3908999408, + 4085221344, + 1497281505, + 3213374599, + 3043620173, + 2328360631, + 3378489483, + 3120061268, + 3360390894, + 1054108630, + 3498504442, + 914607316, + 2038771679, + 2528646713, + 2396923876, + 3146042503, + 280186760, + 977954498, + 995303202, + 3809127380, + 3447387940, + 4210006102, + 2032659930, + 1067097234, + 3998891598, + 3195386872, + 1828139244, + 1327307520, + 206086674, + 2844558972, + 229991371, + 2606249529, + 3543194079, + 1263528204, + 1426721315, + 1658400133, + 3147579099, + 3409949706, + 1538614726, + 2565062763, + 2007018116, + 1405116410, + 448046381, + 3360054348, + 49411203, + 2622305846, + 2198106344, + 395273737, + 1696907699, + 3580202896, + ]; + + static final String llamaKey = String.fromCharCodes(List.generate( + _envieddatallamaKey.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatallamaKey[i] ^ _enviedkeyllamaKey[i])); + + static const List _enviedkeyprivateKeyFCM = [ + 737108508, + 573120338, + 87095031, + 3005608619, + 2324184303, + 319812, + 2992299153, + 1346659080, + 2924955154, + 62838611, + 2170406324, + 2505515809, + 3735550956, + 3806209478, + 3398063631, + 4084618736, + 1378498819, + 3623321480, + 1059847717, + 656736188, + 1833632012, + 2992399005, + 3804747339, + 3613930643, + 364610222, + 974429030, + 1309336034, + 1575179458, + 589362886, + 2939539774, + 839258162, + 66853677, + 1800855274, + 989131233, + 1213040799, + 991279817, + 1644643465, + 4139169443, + 3747969893, + 2280084727, + 3433754513, + 3069250459, + 2150388496, + 504933718, + 1756200000, + 1163653455, + 1561342080, + 957420387, + 1499889787, + 1738785616, + 1142338960, + 98655020, + 1222420391, + 3251658945, + 1828673116, + 2669757101, + 1663890525, + 4213198241, + 1901515812, + 2006237424, + 3566990374, + 432866887, + 1264698320, + 3101388361, + 2703842830, + 2049244912, + 3628984175, + 1832165781, + 4205264615, + 4014240891, + 969864767, + 703341982, + 2882946897, + 2360807110, + 2781536977, + 3050041755, + 685806492, + 1311138729, + 3060249574, + 1002363991, + 1773186186, + 850997462, + 3999181183, + 3970312693, + 1035395438, + 4109867875, + 3639678784, + 4268164630, + 3408604790, + 3354725165, + 1327178068, + 3339196999, + 3402432680, + 3411255658, + 527910727, + 3283055986, + 3194268840, + 1184094784, + 3791630318, + 3499230394, + 2572662801, + 2946226062, + 2416566560, + 440429692, + 3966221448, + 4121517506, + 4232403026, + 634559426, + 175875236, + 3055100647, + 1446238432, + 2098346578, + 602461515, + 1444886775, + 435403627, + 1988702943, + 1905524171, + 2737701185, + 2042620012, + 2832605364, + 810205668, + 2822943840, + 4273478887, + 2336637032, + 1116549109, + 876235429, + 4220014655, + 4176943484, + 976927884, + 584017154, + 3546447020, + 4242171676, + 2638608556, + 1952394712, + 2917757340, + 3707210940, + 2461337446, + 233635531, + 1707193000, + 2607604006, + 4268905770, + 3870067046, + 3191750736, + 2860161726, + 346202625, + 1644345478, + 2250124580, + 944391642, + 3255524738, + 892954419, + 1808714419, + 1390002373, + 587678839, + 2218828846, + 3374471347, + 1141500902, + 1838733170, + 2966644131, + 880245722, + 2087597934, + 293704416, + 978320167, + 3978037520, + 2180809218, + 248819883, + 1637697607, + 2355943008, + 1795956877, + 3772518787, + 3881755530, + 4269727252, + 2875576223, + 3127537762, + 4034453623, + 2203270748, + 34570445, + 2396105344, + 571104241, + 475073527, + 4159175048, + 1027140149, + 373649624, + 1416965627, + 504987029, + 592068475, + 2921450630, + 3935163257, + 1454349378, + 656342480, + 754900442, + 1182580228, + 1128670799, + 89676618, + 2402432183, + 2014451494, + 3489468502, + 4013501671, + 1653974719, + 2887167246, + 3893150706, + 1533169037, + 1164736734, + 1780892227, + 4014216560, + 1358147922, + 2337430013, + 1741844150, + 4102090228, + 2748631274, + 493501955, + 1850086195, + 1960883912, + 3308646063, + 38467718, + 3028939472, + 917717499, + 2742103999, + 1723815327, + 2119841600, + 3876374749, + 1705086518, + 2881525210, + 1570309733, + 4020838165, + 4042003212, + 3183612656, + 1061776814, + 464840108, + 2286632549, + 1917636967, + 24591962, + 1176332303, + 477225995, + 2125512648, + 2725072293, + 4100958052, + 724903694, + 2328117473, + 763126139, + 2374124356, + 2956326092, + 1671131017, + 3720376838, + 2502605733, + 4144105348, + 657115594, + 799433316, + 4278236939, + 769817051, + 3428656795, + 3593147835, + 1412960909, + 2453315602, + 3669869285, + 1496696873, + 2426769290, + 1026625395, + 3651924245, + 2279303817, + 2686506544, + 1087789694, + 601636723, + 3613706545, + 1825740751, + 2450074753, + 421625639, + 1992538740, + 895723198, + 1259255899, + 3722659894, + 4013418838, + 1562558351, + 1632139253, + 2991629749, + 2273247995, + 599051780, + 1669649043, + 568846846, + 1494068229, + 2739996413, + 2779113522, + 779098913, + 3619089187, + 3385785731, + 1519618858, + 953641745, + 1721296229, + 4044107066, + 3004078488, + 3009551678, + 2517659741, + 46896549, + 2278016083, + 647406909, + 3288514709, + 431566043, + 2590570702, + 1584893263, + 2225661900, + 260418302, + 3321929698, + 119911658, + 1690775963, + 4150474225, + 3566955070, + 549546159, + 3176775036, + 4174765343, + 834562569, + 15792934, + 1553903139, + 3210900562, + 1589989155, + 3760850120, + 1094719765, + 3518056714, + 178402282, + 826054878, + 3928025223, + 2810483389, + 2685635791, + 2372946117, + 1313388299, + 3488829322, + 2825312391, + 2681967164, + 2805496622, + 4084983424, + 2657934618, + 2021592252, + 2915120957, + 2962531015, + 1722337676, + 1280032280, + 2548289251, + 171511951, + 415022382, + 1189000272, + 932422039, + 3216734072, + 341391577, + 3047858348, + 1651917881, + 2277957490, + 490984133, + 4236650724, + 304171102, + 65598413, + 3558705810, + 1971557001, + 171398204, + 2394745268, + 310403285, + 2891827010, + 1724246465, + 2016263904, + 3028194727, + 1651520282, + 3098360562, + 3908082798, + 1842511364, + 2816161470, + 3849091953, + 2742832395, + 790092614, + 1390496218, + 816088873, + 3429482282, + 461830516, + 3199835900, + 3686386062, + 3979458454, + 1170862496, + 1979591381, + 3166629024, + 2643421316, + 893273076, + 1872015831, + 217186267, + 2396243201, + 2114500105, + 2929432768, + 3286322993, + 172230515, + 3745091746, + 2433348965, + 2437658089, + 280270945, + 28997464, + 1196313563, + 275582724, + 3333984396, + 4164495252, + 1044000849, + 333220410, + 1650095926, + 2490214898, + 1724270327, + 2827910655, + 504243810, + 1584872463, + 3188419011, + 1245166968, + 3263494297, + 3798399279, + 1988345126, + 2727316013, + 1196129747, + 431024879, + 1545774225, + 4139702023, + 374409265, + 3588824839, + 1492346082, + 932072585, + 3424993475, + 2422754366, + 998601680, + 2521224794, + 1072875324, + 1159425289, + 737029075, + 3650336061, + 1303107153, + 2039781324, + 2856489033, + 3623638098, + 3845037406, + 2946816830, + 3927059905, + 1845338773, + 1231510506, + 2933439153, + 683918580, + 872778124, + 2604776366, + 1981900781, + 3635907945, + 1550897010, + 3629184493, + 1206118436, + 3648149673, + 727434716, + 1602639726, + 1780556341, + 3850244527, + 1323335048, + 1108496685, + 1157470000, + 2772928365, + 3452416260, + 718494217, + 3881102491, + 215401665, + 3798263247, + 1615013368, + 4035375785, + 900559206, + 1568113547, + 749008281, + 2897102640, + 1614058632, + 1758876724, + 3653676490, + 163972223, + 882695078, + 59167481, + 1834379473, + 2322546183, + 2980393762, + 1490232916, + 4041737500, + 3568989214, + 699988833, + 971275641, + 1742513241, + 1682423804, + 3878685575, + 4216770089, + 226208992, + 3348458910, + 2196695664, + 521500134, + 4280698849, + 1357611769, + 3289541888, + 3393910430, + 2287883831, + 4031431574, + 2828012877, + 3416437096, + 121667562, + 920735091, + 2196578511, + 2948310575, + 248380011, + 3891608726, + 2234400771, + 1770949553, + 252910982, + 152768081, + 992190982, + 4250800032, + 1104665650, + 1620460112, + 910886375, + 988589648, + 2109982703, + 2954961044, + 2885572299, + 3172494047, + 3560837227, + 2608909294, + 716888483, + 2465398108, + 1517335489, + 3736024899, + 2771259711, + 2061806890, + 1417775752, + 2999572845, + 29999225, + 4177180716, + 2514305897, + 1440587013, + 3165606417, + 2277946711, + 3147469051, + 2251725117, + 2992871711, + 2476340157, + 1126230188, + 39175539, + 3398671674, + 1736606847, + 228199498, + 2156353508, + 26073285, + 3799395509, + 2325692300, + 3791842104, + 902520711, + 2617319459, + 4149280098, + 1592411394, + 1938317647, + 240139609, + 768338201, + 2082924395, + 530812431, + 3998049412, + 2081467991, + 2314487964, + 2586281339, + 678618197, + 2528282136, + 451421623, + 1097511910, + 1917811767, + 1394821074, + 3613783713, + 4020287465, + 2271581618, + 2092137012, + 2084276535, + 2554427534, + 1800484963, + 3233181901, + 3031706316, + 2720746266, + 2758588661, + 2813951483, + 3907403596, + 1207599635, + 2169947936, + 2378158479, + 4117306363, + 2977420137, + 2226429496, + 2243095694, + 890007429, + 3283153562, + 2811967260, + 872014127, + 3556991083, + 2961403593, + 2229661479, + 2904431980, + 3855472067, + 1371651097, + 2933911223, + 2739638134, + 2908258650, + 1882535407, + 2431747602, + 3494440069, + 3560078145, + 2160705027, + 44081358, + 3748888990, + 4092449092, + 1623245009, + 2338635800, + 2572708241, + 2954676519, + 444147035, + 3344052727, + 3517469182, + 1471233591, + 650354967, + 3633282511, + 4125039770, + 2705400548, + 1313620863, + 3082416307, + 3978062965, + 279638977, + 854836137, + 4037337142, + 3090453260, + 4193697212, + 4062362249, + 1846808329, + 2578093281, + 4049164058, + 2846163405, + 1582371251, + 2264731836, + 366032606, + 590114350, + 3999681516, + 2376085057, + 820850321, + 1018267856, + 369940615, + 3531233325, + 4268864790, + 3497986315, + 2341486448, + 4227911824, + 2181113229, + 1355479127, + 2749160717, + 3246985925, + 3341528965, + 2073181213, + 699314014, + 1199359806, + 1884703566, + 1550999136, + 1482176013, + 1300010586, + 999931811, + 2273329898, + 2676099752, + 3108976156, + 1024613626, + 1270967057, + 2078640132, + 2774447762, + 3819528373, + 2718802711, + 494397542, + 2530165843, + 1204456198, + 123347534, + 1750412062, + 2496052368, + 4139143146, + 2882254737, + 85720860, + 2519613776, + 4102714487, + 1945156607, + 586502618, + 2827709244, + 2671446606, + 3080614560, + 584388351, + 1498919328, + 2296929519, + 3086107889, + 2976189208, + 735158679, + 4238520014, + 4215975286, + 254924375, + 3680593173, + 1793969614, + 210479610, + 265149446, + 453475021, + 3916600565, + 2504430318, + 115272910, + 603683711, + 1058652331, + 3016477085, + 3630690683, + 3940171619, + 235273795, + 2312000813, + 1769144434, + 1983369480, + 1210401977, + 774429527, + 2735389365, + 3451516815, + 2697681175, + 2873966044, + 107771890, + 340153891, + 3902757494, + 3595538682, + 1710448917, + 789110533, + 2226993021, + 3853510958, + 2412690304, + 3867806110, + 2133599140, + 118636039, + 1464073882, + 1533404869, + 829450745, + 1864196201, + 2173100295, + 2241884490, + 2351157253, + 947820395, + 3437489691, + 3975263411, + 1471809739, + 1798150894, + 1305861513, + 2932005066, + 3352365449, + 4068857789, + 3126210219, + 1856052759, + 390543120, + 207370740, + 2605083184, + 148692290, + 3652608071, + 2309777504, + 1201795662, + 331100815, + 999928362, + 1977239666, + 1611841523, + 725679959, + 2725432383, + 1962919820, + 3833271832, + 1197493782, + 3887581928, + 2346764006, + 2707146122, + 2277292665, + 358692238, + 2638816175, + 1205487518, + 4238210704, + 3610245619, + 4128009742, + 2554570374, + 1067956320, + 3837039785, + 1107712321, + 2083151010, + 3841744080, + 4169811655, + 1076138161, + 2352889067, + 3282931048, + 2323101680, + 443842367, + 2540039222, + 2422063034, + 1730525519, + 2762219325, + 3148840983, + 3874209774, + 196601397, + 4074234285, + 4062274235, + 1880180572, + 3875358394, + 4013145833, + 547311925, + 2450684733, + 2461043683, + 4171289982, + 1640138908, + 1282371500, + 17590684, + 1087296399, + 469602025, + 3623122096, + 747793869, + 3896203969, + 3999952150, + 4190926131, + 2519459794, + 2168164444, + 557626550, + 880135470, + 3187688392, + 3813281250, + 574556672, + 3153433893, + 2430581141, + 2807013398, + 152834970, + 2135828491, + 502818277, + 1130118504, + 4202838221, + 1789641146, + 1467085169, + 396223144, + 597493763, + 1736613021, + 1197732685, + 836437136, + 3465854683, + 3700168912, + 91762645, + 2391202287, + 295023822, + 2581861205, + 449024774, + 3001822024, + 2466418913, + 2872346546, + 300481715, + 572637303, + 1484271709, + 726078579, + 4039959954, + 666631537, + 1023898487, + 1853351749, + 3948710707, + 439645115, + 979350397, + 2222951989, + 2589438737, + 1937329467, + 1501831158, + 2316802053, + 372631927, + 702808879, + 3578596427, + 2126623624, + 2458752824, + 591974828, + 2339297450, + 1288431087, + 3134899097, + 1829570731, + 1748985463, + 1532824309, + 1262165961, + 1620842260, + 3834158622, + 3207937693, + 2620793381, + 4217292006, + 3277388845, + 425428660, + 2751160949, + 56937876, + 2669958664, + 184488470, + 29417658, + 2042579986, + 565191942, + 4291650434, + 3961586806, + 1918052443, + 2110155068, + 4266271406, + 1220892870, + 2242469591, + 3290204425, + 724667407, + 3770454219, + 2387813055, + 480452061, + 2567603094, + 2949949763, + 2282276912, + 1267200881, + 953654159, + 4034685237, + 1216035564, + 1909479177, + 1058998664, + 1366599365, + 1253836179, + 1360163121, + 2167363261, + 3193726845, + 1179755768, + 3433333284, + 773380335, + 3567753495, + 1576466808, + 3739894862, + 2045959091, + 3999190751, + 3100414601, + 2926965518, + 3258699619, + 383894937, + 3934726680, + 2488205526, + 1498264025, + 1161227547, + 3127776177, + 2220619538, + 406109899, + 2833378383, + 2052513668, + 1280065426, + 2747083647, + 1440776597, + 363124222, + 2717590284, + 2092050036, + 4211537666, + 2081321006, + 3920316579, + 2554903412, + 4234188134, + 1395865732, + 3656836441, + 935516021, + 3869038146, + 4070759880, + 3991091986, + 2976518188, + 2127252047, + 1715179207, + 3202801490, + 3025431438, + 928909809, + 1546620296, + 3318207810, + 1054357827, + 1212288271, + 3277649527, + 3553252595, + 3936269711, + 3001222140, + 3103022786, + 4170067321, + 1626772232, + 3277583984, + 1160016141, + 4044133250, + 4131372905, + 66760443, + 3630089669, + 1635899333, + 502492080, + 1312728592, + 2800543548, + 4218566229, + 3255613742, + 1595941176, + 3058111293, + 4042640544, + 3127660476, + 1422193398, + 600918209, + 2420093446, + 4236433793, + 747974874, + 2886017697, + 3114878858, + 167931937, + 1327836548, + 3104741324, + 2684527889, + 1613037900, + 1092139049, + 2037389600, + 3866448239, + 3288595761, + 4179522838, + 171851053, + 3390747309, + 1957846235, + 23954568, + 1558940286, + 3034700871, + 3415480659, + 31874120, + 1522582913, + 2856359821, + 3377785531, + 1500505280, + 2357411074, + 3800478749, + 4101318918, + 1803104233, + 3217189798, + 1959035055, + 1183090872, + 3885183854, + 1832623879, + 1205759224, + 2056117810, + 1299363468, + 972370045, + 2099975250, + 4217065998, + 4257348043, + 418611142, + 1655512169, + 2417558657, + 2909371272, + 2656106451, + 2715763522, + 2079161048, + 911449349, + 1919205988, + 1318085068, + 2274121803, + 3022121620, + 1086658175, + 2320667621, + 838833674, + 1260983287, + 3660810140, + 3113371403, + 1356064041, + 3093057820, + 4073346200, + 1315756395, + 686757640, + 3121357794, + 1236500707, + 3765722282, + 2652649750, + 3709236432, + 3540803614, + 3817916578, + 3883188098, + 3953988724, + 543859401, + 781311165, + 2452456487, + 2916550976, + 2684750456, + 892435042, + 2949028583, + 717754283, + 1888475079, + 1299906003, + 3511116600, + 126850201, + 1270745562, + 2783791148, + 986369010, + 608139713, + 91067219, + 1164090762, + 457020967, + 3861335863, + 822290723, + 1786969484, + 4114107643, + 1303132466, + 518716490, + 3816897171, + 1577554041, + 2339924357, + 2891084300, + 4111620052, + 3322948639, + 1539415787, + 1548519233, + 3926129564, + 696176191, + 925185431, + 395062940, + 3381587935, + 3306889576, + 899581582, + 449788296, + 1019594972, + 1913865482, + 203763988, + 1755407500, + 61297365, + 675631477, + 527690561, + 1096593511, + 2112238977, + 787715666, + 571860435, + 2568655235, + 1903106127, + 2426624345, + 1489747569, + 2080869854, + 1003709041, + 3656976326, + 3137952402, + 3129839596, + 2424355766, + 1454318887, + 3784378793, + 2943475351, + 2000379797, + 1143833414, + 774235851, + 4066300097, + 98194233, + 1878191248, + 2867373123, + 522169991, + 2685739569, + 4256716450, + 3325187370, + 2235760853, + 1640310346, + 3318246218, + 3423908467, + 951516825, + 2362245957, + 3314963287, + 4023177333, + 381459942, + 3542113435, + 569408190, + 1295185712, + 3607258715, + 1292661913, + 247757194, + 987131275, + 2552584360, + 2636622474, + 1860546077, + 2494312162, + 2782351156, + 2896368516, + 838382320, + 2007823094, + 238508444, + 2524339566, + 2363415013, + 2914138234, + 3628020394, + 956855823, + 2261081192, + 2228097171, + 4177271318, + 4158766735, + 3572796950, + 1430343560, + 3441921890, + 3454495262, + 1182316596, + 2269278379, + 1077135908, + 2953651496, + 526971321, + 2859895637, + 3358886671, + 4174772554, + 1567842165, + 251118008, + 670301942, + 3825963349, + 3042555775, + 1426858006, + 1471961782, + 217889906, + 3702626458, + 2455552095, + 3555365240, + 2593708682, + 786674689, + 402322780, + 1874981423, + 3407237843, + 4114519660, + 351189325, + 3161005591, + 150308336, + 1879067335, + 134237765, + 2879585660, + 762142372, + 735835325, + 1401753103, + 398664220, + 14875690, + 4243747163, + 936349311, + 2941560796, + 1819832225, + 3360941066, + 2101168559, + 3516605739, + 3182955717, + 233125019, + 97945065, + 4099904870, + 2261675179, + 547900100, + 2128456938, + 2732575461, + 87231801, + 3385975847, + 3482964761, + 3121124802, + 1597590321, + 2958060603, + 2312160825, + 1250748769, + 3020167481, + 3371053442, + 3126787605, + 4053203213, + 2924348123, + 979929759, + 2756455437, + 148006320, + 3383905452, + 600443167, + 2403008860, + 2978733323, + 928489282, + 1780947185, + 210481903, + 323488255, + 1615005026, + 1406587679, + 3950773997, + 394274012, + 3894535349, + 919963673, + 3631959377, + 3527523437, + 1657473608, + 386182504, + 2937059394, + 1321489105, + 3741745280, + 3920310972, + 3696070760, + 2261738974, + 1952926698, + 225802290, + 1195348745, + 2965761565, + 2056518620, + 396407764, + 956877131, + 1875725986, + 3097739097, + 4101905068, + 2699871357, + 1413749666, + 1109515490, + 13462994, + 3880381067, + 2916419322, + 328116183, + 226106344, + 2081329924, + 1535097045, + 2564774093, + 261153752, + 3399688227, + 3761551783, + 1004728373, + 2532161257, + 3255250062, + 2428018453, + 3469426376, + 3004436359, + 1739930729, + 3599610239, + 1267828660, + 4098765701, + 2386215404, + 1505123847, + 2142089888, + 2321182915, + 2881932175, + 2615077004, + 1415862358, + 1168026497, + 3645446514, + 3372125962, + 938799889, + 1710103627, + 255086590, + 3674651304, + 124795004, + 3199066378, + 3366934121, + 2992417017, + 3415524713, + 2126893206, + 704178108, + 2185287323, + 682500890, + 3868817720, + 3396196232, + 3965823276, + 3045211901, + 1440582217, + 4124975708, + 3663042745, + 958722551, + 3582803003, + 698410183, + 1326584168, + 883957682, + 4041682102, + 1483491300, + 2209582450, + 482929064, + 3263992226, + 1281004503, + 2617265487, + 2142447888, + 1819676160, + 1008729606, + 4034822963, + 3809141533, + 2709813384, + 67866807, + 1557696127, + 3761367730, + 3374392519, + 346552041, + 1703846311, + 3218328747, + 3001103576, + 3412946097, + 2399822036, + 2694597616, + 3997488047, + 1218196704, + 3414355785, + 2436806548, + 2017963340, + 725408394, + 1615692731, + 1087814103, + 2697424351, + 1458392249, + 24065513, + 1070411251, + 447202720, + 1571053203, + 112625802, + 118146864, + 2474166716, + 2842438865, + 3534055229, + 67689917, + 1515927908, + 2734103201, + 1751644415, + 3909275685, + 3384879962, + 3666017748, + 1692475293, + 4217449575, + 3963510214, + 2609960465, + 1773019879, + 1740638298, + 3079688126, + 825059366, + 2525582253, + 809173383, + 2448899203, + 2217736624, + 2277520791, + 1914224962, + 829145164, + 2188695753, + 16465694, + 3434611013, + 3259469704, + 1023650405, + 2687217452, + 761380722, + 2737740268, + 1279609669, + 917421681, + 4101602515, + 3805311991, + 88690492, + 3188616163, + 1894076295, + 4293155904, + 761188336, + 1347314708, + 2426965027, + 1196224288, + 2756209073, + 3055959203, + 689707034, + 499604835, + 2899737222, + 1270153861, + 3031332410, + 3602089111, + 3363204557, + 2438482117, + 3926141544, + 673670532, + 1197517520, + 2178506629, + 1165071025, + 3459297880, + 2491136398, + 2100111560, + 2499580939, + 3129850684, + 1561898561, + 4222189335, + 2858594911, + 2452644462, + 564650845, + 4241715201, + 3050183901, + 3429249115, + 1744088629, + 3505491935, + 1210719655, + 899473164, + 220101518, + 2927579979, + 2257482708, + 3626306094, + 2467319906, + 2553372897, + 2478778089, + 1823007988, + 365664256, + 3933134839, + 801172840, + 1868036938, + 378019419, + 1035773600, + 3525003728, + 1873010767, + 2342038560, + 3993115804, + 3075704627, + 3990883732, + 2838094948, + 2098740841, + 305999125, + 831587975, + 1355628682, + 4022023860, + 4287347855, + 1442429211, + 2559972308, + 3460099817, + 3553454924, + 885235272, + 3728279493, + 1983042396, + 1429545122, + 913342015, + 2367269965, + 1544672492, + 2388114674, + 3250341216, + 818693828, + 2072485903, + 4142497218, + 1958958614, + 1612361722, + 2706445790, + 978171912, + 2084253816, + 958314763, + 2592481316, + 2043038190, + 2170464672, + 4221314248, + 887093129, + 3453655083, + 1854155212, + 63867747, + 116312548, + 135403836, + 1091665580, + 3512840896, + 323240053, + 2474737633, + 3832061396, + 1311071742, + 1638570649, + 2974975999, + 1478237231, + 2326274480, + 914336033, + 1169484559, + 4012288073, + 2942417787, + 360693785, + 4286096455, + 1425575245, + 1127870535, + 1619231999, + 2603112489, + 4222012819, + 833564180, + 330380982, + 1779793167, + 2025688161, + 2561250724, + 3393389550, + 1048169470, + 2471305892, + 1174749206, + 446098583, + 2474897940, + 2883114031, + 3833127176, + 2492943358, + 1613051102, + 811168361, + 2431387582, + 3553946610, + 1570264805, + 3123044116, + 3901492289, + 3235168185, + 3470112902, + 1881735798, + 1685107906, + 3987640058, + 3586110152, + 963626683, + 1969775845, + 2759373690, + 646389819, + 1541048599, + 179753707, + 1559193915, + 2631429993, + 2264097382, + 526413453, + 3415678409, + 1512725176, + 787218320, + 75508960, + 346272688, + 2089974690, + 2322990168, + 3668388399, + 270007621, + 1454966087, + 366506235, + 4011835820, + 4282907384, + 962899261, + 7953992, + 1885674769, + 4122477458, + 478979518, + 1470752794, + 5233456, + 621787137, + 3389803770, + 651426711, + 1422549806, + 960418404, + 1888196357, + 3380956448, + 3068584, + 4113639785, + 560028865, + 2491692851, + 3993048966, + 1300605056, + 3918766673, + 2841666712, + 3817375337, + 1686792805, + 3106757569, + 1982375920, + 3615367808, + 827914130, + 476813543, + 3891456498, + 3621439766, + 1963144944, + 1794052985, + 3430537391, + 2467825840, + 2395936451, + 2598868089, + 877982392, + 882309317, + 3944952157, + 2433750346, + 2918248908, + 2553151756, + 213845474, + 3583080327, + 2818841781, + 2117778591, + 281749132, + 1684124194, + 2678034393, + 452324480, + 152633409, + 2970659676, + 3596194198, + 724922234, + 1015624469, + 1851498348, + 267948356, + 918220441, + 2682008985, + 2313014353, + 4120956231, + 2957427741, + 3284133875, + 1597303758, + 1838259435, + 4039263642, + 3952562195, + 1113742084, + 1035117265, + 1538807463, + 3415876745, + 4185266524, + 2260658205, + 3320051878, + 1491398558, + 2368326563, + 3518122532, + 557159606, + 188220554, + 728450273, + 2669937361, + 3944084932, + 146185271, + 3753049809, + 654749166, + 2548701163, + 1492790078, + 885159436, + 2032180833, + 185541083, + 1408338135, + 4177556901, + 2799355718, + 1962137425, + 4060195839, + 3886028009, + 3062049221, + 3640202633, + 2215380570, + 2851749466, + 1604187894, + 3333853758, + 3308495490, + 3884855944, + 1330134302, + 3860627584, + 1487207126, + 972927344, + 3338038739, + 1450672074, + 3540760251, + 2266667253, + 3100933941, + 1873295160, + 326309452, + 924886925, + 862802014, + 3215289878, + 4164073953, + 3139818106, + 1910022282, + 1288279712, + 2990058922, + 3800086005, + 3739259520, + 1659970167, + 2420358523, + 178844776, + 824545594, + 3630376942, + 2877871673, + 2543016416, + 3154096241, + 2495265942, + 4180559181, + 2935731231, + 2765594424, + 1610187670, + 3518701025, + 4142784444, + 3054890357, + 112345705, + 1324268213, + 2409064639, + 32964358, + 1335035866, + 4270370491, + 1861361973, + 1723022102, + 1009151923, + 2162047271, + 1267993893, + 278717373, + 1324613848, + 3896145043, + 934799488, + 1513616344, + 1207592915, + 1971754670, + 397023240, + 3722562442, + 3449169263, + 2410482035, + 3280773420, + 615291146, + 206999015, + 4265620950, + 891352110, + 4046806586, + 1116027327, + 3524593186, + 4187321562, + 1961121785, + 4073733746, + 1090056247, + 2485658783, + 4204201438, + 3276672999, + 3761441831, + 508897925, + 1506802514, + 1781099422, + 653494937, + 850676639, + 1805005754, + 3141555797, + 676908582, + 1803517501, + 2611079747, + 1564681518, + 2825767216, + 3682456965, + 73543672, + 3773697306, + 1874869614, + 4288118543, + 2264388187, + 716261797, + 4213906212, + 2330637413, + 2636008824, + 327609223, + 3611718407, + 3237500828, + 2461606882, + 1218773841, + 3381243615, + 3683127091, + 180739774, + 3540860418, + 4210302593, + 4255660573, + 1101708331, + 2275520458, + 2956221658, + 705091750, + 128285119, + 348025140, + 3015879819, + 4294433780, + 2283013827, + 2872091639, + 1995514832, + 3898335866, + 369231877, + 3134065288, + 3785352366, + 3449195521, + 2349342163, + 946546054, + 1813497194, + 171256487, + 3632156745, + 612524536, + 269302038, + 1879637666, + 3974863517, + 1839164500, + 1519188293, + 749291211, + 3859073775, + 1920085967, + 348345041, + 832069339, + 2612864119, + 1066316368, + 2939433048, + 4062582254, + 1487983609, + 117681181, + 2292585491, + 2035812192, + 1057146609, + 2115797024, + 583238974, + 2308649929, + 255596716, + 843085928, + 105840604, + 2542246419, + 2300356691, + 1637936571, + 494605222, + 862961433, + 778282545, + 28971885, + 2211284115, + 273242591, + 3381041291, + 510866997, + 873890165, + 1888519834, + 1168926363, + 2785290841, + 1178329596, + 475402216, + 3152982868, + 3322435169, + 1126330723, + 1966599271, + 1984447370, + 733013171, + 3917577367, + 2262567596, + 3843711059, + 2191985467, + 3822513516, + 1099306433, + 1803887553, + 1454209210, + 609003286, + 3839737322, + 4019677114, + 3252288430, + 776485098, + 1531519310, + 1455211875, + 952129344, + 2759034510, + 364205245, + 1770711601, + 951845063, + 1215290123, + 4084089504, + 477941061, + 2264074574, + 2015479554, + 1289454639, + 2969428072, + 2895626307, + 3569496672, + 3568383351, + 3342545915, + 2708719178, + 1492005991, + 3420172830, + 2826721269, + 2628372477, + 1684037350, + 1139606518, + 3929018151, + 3098455923, + 186296217, + 1811168242, + 2284940997, + 3742025144, + 2429700032, + 1801511958, + 1165053060, + 2641259009, + 3658146352, + 1645470446, + 1217120055, + 1920510494, + 3516800778, + 3305472259, + 2054592050, + 4063578358, + 593666440, + 1076195398, + 2860686291, + 1087373254, + 1281209491, + 1433086410, + 58552541, + 4012745489, + 474610793, + 709960614, + 3960616745, + 2635967364, + 3050780856, + 3121903516, + 685939958, + 2781278349, + 3520536842, + 523160525, + 3543296627, + 1588391733, + 3903034586, + 824621684, + 124080467, + 930236687, + 3233189258, + 2197305320, + 699789197, + 3696830151, + 3011553708, + 2829726216, + 3622840010, + 2127420462, + 1200826818, + 100174625, + 3419024423, + 2816514213, + 1529054674, + 1829765057, + 3421549413, + 3237053658, + 2766857046, + 3391000382, + 900303648, + 739008767, + 124496053, + 1723628191, + 1633988332, + 602847449, + 2350559786, + 1561895414, + 98628964, + 869557287, + 3174432014, + 2685076422, + 2908904158, + 1161633329, + 190273391, + 3540362039, + 2126448741, + 2297854532, + 1342031747, + 2305317969, + 3685516741, + 2322878667, + 355614790, + 1785502827, + 3636545872, + 1548295048, + 1645576781, + 782791020, + 4179603951, + 4163928832, + 2661881448, + 1234070201, + 880831587, + 2356023557, + 2377661565, + 2125832884, + 2377522010, + 3591637257, + 928622845, + 2253675010, + 3153308400, + 2383862582, + 794868856, + 966417220, + 1813968216, + 2982461149, + 2409845479, + 2387490767, + 1122654867, + 3175442033, + 2000993418, + 725670439, + 1192129860, + 1132129980, + 1745208070, + 2391341201, + 3041728908, + 2159426814, + 1302004203, + 1617459203, + 1911768148, + 476777400, + 3180606824, + 1248616377, + 3928566530, + 1850108970, + 3502869434, + 2739220178, + 2952410190, + 4210146922, + 2238360923, + 1038610832, + 1605495355, + 4163727637, + 233525315, + 1687242609, + 3676168878, + 740965605, + 3346781024, + 3363598671, + 1069649518, + 3663459067, + 2771448169, + 1018963616, + 831487941, + 4144016834, + 3264560939, + 751076954, + 639736708, + 861511578, + 1059871732, + 175859367, + 811543104, + 3661361784, + 194965611, + 3582278989, + 632916676, + 3739461337, + 864289586, + 3820973112, + 1913974855, + 1657081394, + 657192957, + 1101023031, + 2874327524, + 1168278160, + 3093754513, + 4205829771, + 1749005270, + 1052060195, + 743611671, + 3533429521, + 3867604030, + 4203833123, + 323903819, + 1070185509, + 395653014, + 3703661459, + 2737722089, + 2635756254, + 169890506, + 194909705, + 2509036782, + 4002461430, + 581790067, + 2801365610, + 2184894333, + 1495813188, + 958922075, + 4188590836, + 3526773797, + 4244824144, + 3687154895, + 1726700272, + 3992371074, + 2086690336, + 1106859089, + 3103616298, + 3429869385, + 861527161, + 396196204, + 432619913, + 2829280502, + 2784614857, + 1343210775, + 2412999924, + 3104538665, + 2805969251, + 1481524270, + 1809948259, + 1304964239, + 981654964, + 3054769109, + 3099781004, + 3529798319, + 3794356060, + 1653832115, + 1800861787, + 3845574120, + 867500634, + 1733599597, + 3264188362, + 3837798787, + 212765050, + 3263781488, + 1843586422, + 2798258489, + 179736818, + 1333619755, + 3465220937, + 2098927980, + 773090001, + 2534516902, + 3976028918, + 4218099570, + 2102132164, + 349958245, + 1275818492, + 3643660222, + 2044148648, + 4033014278, + 1571915587, + 278661416, + 4202882002, + 1091713967, + 3043118505, + 1942530998, + 3983613615, + 1773332063, + 3847568268, + 2204552035, + 661684914, + 1789474512, + 218465177, + 4066014252, + 4043422341, + 466066968, + 4285235649, + 1362471588, + 1459910018, + 2048495197, + 2292895974, + 2287214387, + 2467719787, + 452202191, + 561332838, + 1506465554, + 2716724265, + 1625862669, + 2978760393, + 1749644375, + 1660623568, + 3390843917, + 2774383551, + 1943768826, + 2872116418, + 4291881297, + 56892350, + 2020945277, + 3541739198, + 804365932, + 141617903, + 3021370095, + 3736298791, + 2118840600, + 1246547929, + 3997734469, + 3479572, + 1671443415, + 2847570642, + 2438226091, + 2772857050, + 1966757129, + 337494088, + 1781021915, + 4045923063, + 2602228945, + 4199435130, + 348116742, + 2288411135, + 243501321, + 856775941, + 2043385542, + 2807031976, + 1099293477, + 1506043577, + 100599652, + 1753555786, + 530518633, + 206163940, + 3815848638, + 1874846472, + 2040312267, + 3957908769, + 2051469840, + 1046873021, + 3853268326, + 1120770657, + 608359198, + 3650155525, + 562008079, + 3379898922, + 2057937314, + 2829495306, + 1352423463, + 1424167408, + 487002809, + 3206903943, + 4037813154, + 2054021679, + 3918180328, + 1314532147, + 2332954764, + 2755650147, + 22869110, + 2221675638, + 529422952, + 2216813559, + 28460189, + 1186371777, + 419139358, + 3666901497, + 2293040387, + 1227484898, + 238501053, + 2556841463, + 1617308720, + 803025343, + 861238697, + 119514264, + 3229174143, + 1987112011, + 2865057429, + 1112900447, + 1407928884, + 1900474977, + 2768906643, + 3671178356, + 3970256532, + 3057462887, + 480340502, + 1515289858, + 1272730497, + 1804059970, + 1444028903, + 447627905, + 3993520546, + 3303255701, + 1533216601, + 3530272608, + 3547749415, + 4008018797, + 2909571964, + 753947902, + 544210023, + 2373393245, + 3710608871, + 2422318272, + 862834386, + 2977678954, + 1561615415, + 877293941, + 3376143881, + 431649966, + 643816384, + 4012200797, + 1243530181, + 2522196700, + 1308061688, + 2327649160, + 3364635784, + 987491481, + 2296524860, + 3998836545, + 3061738622, + 2301057958, + 2451877545, + 2318043384, + 3528951720, + 3624140615, + 77896408, + 2242427079, + 2592857474, + 1554274825, + 3689357916, + 474505634, + 3228566628, + 3637164040, + 242197890, + 337516152, + 422317770, + 2725263333, + 2476332659, + 2254155961, + 3281599173, + 2527297814, + 326609542, + 3597550691, + 3066376078, + 1629799726, + 3578675441, + 3368771307, + 2480119774, + 4096332419, + 2242369551, + 733301417, + 2336079280, + 401665740, + 46265531, + 4106097814, + 2010267197, + 3626587265, + 3530359458, + 322636037, + 852851961, + 4032337673, + 3773787547, + 1065333391, + 3308839744, + 2275765169, + 3599013970, + 580370296, + 769904862, + 1990798107, + 2195415657, + 2713394321, + 702265631, + 754248649, + 3753592131, + 3297910203, + 27447168, + 638607870, + 4153235966, + 1541837747, + 2444317264, + 3696997815, + 1960327965, + 3469063468, + 2741101681, + 2197375464, + 1675881674, + 990815654, + 1461054978, + 3412711693, + 1722005152, + 2413609765, + 2173530700, + 1683043527, + 3885063087, + 2809478304, + 207231789, + 2040851763, + 2913636631, + 2705415885, + 3377000576, + 3996186714, + 1807884677, + 1374228809, + 4191831456, + 2351813194, + 32879892, + 898623490, + 3536814887, + 2238130323, + 31776039, + 1714925957, + 4280395886, + 320992657, + 69054436, + 1328560455, + 3710506541, + 2326583595, + 2637876344, + 3013094900, + 1875933749, + 3109302611, + 4250050007, + 2071860946, + 1604167520, + 2504576469, + 2885110642, + 314140346, + 2835907504, + 4021924325, + 881595382, + 2508450728, + 3042598433, + 3577228499, + 3221797486, + 316176502, + 1612879805, + 2047075112, + 2160797133, + 1776889792, + 3403420203, + 3485662133, + 1375535023, + 451062288, + 3443563948, + 3242854535, + 3361300026, + 1240080434, + 2832104274, + 649885340, + 852039268, + 753656803, + 1814387483, + 3500678549, + 4246459931, + 1019193347, + 4168437065, + 271266176, + 3571555013, + 1794098201, + 3630587046, + 1893193944, + 543676696, + 2922819465, + 3605835612, + 4259354786, + 697495066, + 1418050267, + 358767164, + 3641238744, + 2240236069, + 1193640740, + 2532558438, + 3162712899, + 1154541657, + 2951418312, + 4248463261, + 540429074, + 1271556058, + 2466175058, + 3967140302, + 746486868, + 1926230165, + 2313857212, + 1746481008, + 4049771007, + 276819718, + 1300410526, + 858057278, + 4159855216, + 2007958802, + 1458631060, + 3011696811, + 1237842519, + 269825411, + 2070571958, + 1056523616, + 4118799167, + 2272898628, + 1511813972, + 220140022, + 2402554623, + 2119219342, + 652198072, + 3132014063, + 867028654, + 1529211883, + 3427379980, + 1851848807, + 419142561, + 3171492047, + 3520737863, + 3875333620, + 3010227615, + 3268216433, + 1001804898, + 2186578344, + 1048133228, + 999941173, + 816741580, + 3534386973, + 3855162922, + 4196200624, + 3207822732, + 3833859943, + 135757702, + 3391657400, + 763171032, + 2287109680, + 3871343181, + 877732000, + 764395419, + 439471433, + 3796002044, + 2793528188, + 2392351897, + 2035365002, + 1223193382, + 4129706955, + 3036778681, + 343996415, + 4160658517, + 1654591154, + 4248047665, + 2252070190, + 2779121866, + 1437154125, + 2593929761, + 3336273139, + 3924543196, + 3310087890, + 3715870187, + 1649871853, + 273759252, + 319291040, + 4213854912, + 723208195, + 1736008610, + 3429417077, + 2166018101, + 1451128230, + 196521758, + 3064637844, + 1055394271, + 1316527796, + 2618766203, + 4023720373, + 4028106986, + 1813236080, + 4202998799, + 1142002362, + 2577236163, + 4071117031, + 902556451, + 437864039, + 3085657673, + 669842288, + 1795096631, + 2911344726, + 2170792561, + 2234546397, + 2690995763, + 2676358759, + 709149943, + 1012312890, + 3849027082, + 1466015008, + 3679555372, + 2136425442, + 3068280767, + 1604393680, + 1271239244, + 2165911239, + 3212576502, + 4119568089, + 4212440637, + 3509698481, + 433244020, + 1198689033, + 3803012383, + 3831485936, + 696582326, + 1273056213, + 4267629071, + 1017357420, + 1413334459, + 3076505173, + 3340334389, + 2884945686, + 2343498209, + 186633817, + 2376862992, + 548323457, + 1358195436, + 2975710699, + 2701493952, + 371993266, + 3071386261, + 2940700998, + 3459878016, + 3873529290, + 891054793, + 2767893467, + 3096804830, + 453580791, + 2803055095, + 1428970493, + 2310757201, + 1807480102, + 4142520804, + 2418197685, + 660457580, + 3379726443, + 1918748089, + 3380544713, + 805590200, + 417915645, + 2592658906, + 2991229834, + 4189616576, + 2580956066, + 2225901297, + 606702186, + 1686419986, + 3555297525, + 1503163476, + 1822325093, + 1325627042, + 467095686, + 1450795955, + 2379131582, + 4097768532, + 1897967225, + 2230833133, + 1655003515, + 1528706843, + 2311482541, + 3254169242, + 618321406, + 1129751153, + 2163467091, + 1131242386, + 3580752534, + 344260348, + 1562907382, + 2963068076, + 1505018536, + 2318526962, + 3552091401, + 1636935726, + 2382887536, + 4073024494, + 604206665, + 179337553, + 3321588108, + 384384652, + 2216525144, + 770124852, + 1445246410, + 3736321303, + 344573115, + 462212969, + 4052963802, + 3468036091, + 1085346189, + 2883315614, + 3361670333, + 1709505992, + 3514670, + 4133931679, + 50927383, + 475373344, + 2445475375, + 4162896623, + 234388227, + 3571053121, + 3171699146, + 3597597359, + 623509604, + 3253962117, + 1905698487, + 3262720417, + 1391758329, + 1196498293, + 516427586, + 3207779051, + 1214752339, + 4007349164, + 2647594653, + 1411353718, + 1208595518, + 2101685446, + 1149330900, + 963947695, + 4131359946, + 2690099763, + 3413659715, + 3204312604, + 2445693581, + 2260843692, + 3167366059, + 3653061237, + 3254204110, + 239819133, + 2699859773, + 4223884450, + 1146977759, + 991186934, + 2364443582, + 1316158362, + 2418505597, + 1820234209, + 3287888021, + 1018316196, + 1868021467, + 663786682, + 848938475, + 3244248876, + 1012591774, + 3103336081, + 3575307952, + 1659916481, + 1131078749, + 1987856229, + 1724042654, + 899857000, + 1915782124, + 1627955056, + 2992643328, + 2104408461, + 1524318379, + 984348781, + 159697712, + 34614736, + 3645806616, + 1627676776, + 3109228302, + 1370554154, + 2040434315, + 1553910911, + 1026540458, + 3867928459, + 431000418, + 152448043, + 691960367, + 4289891560, + 1244496521, + 1377202318, + 3895899651, + 2171093566, + 1561992988, + 2252110915, + 1445096217, + 754104836, + 3619386089, + 4050441378, + 1185348651, + 2627412500, + 1407362265, + 1298068069, + 1430755464, + 3844479895, + 3618517022, + 59736412, + 552100264, + 1115491274, + 3654244247, + 2173460403, + 87368796, + 15996738, + 2475381667, + 340016539, + 2175403706, + 4287126893, + 3678850389, + 1521285129, + 3352740003, + 431171835, + 1917217131, + 4121275216, + 2395517170, + 2907776642, + 2660073619, + 3305497766, + 432211443, + 1044661636, + 4197390238, + 2989717750, + 3219938265, + 1660173246, + 1875513833, + 3160138064, + 1114180220, + 1900942382, + 2570014103, + 24250575, + 1793405122, + 3135775104, + 3691054363, + 1788205993, + 3020995842, + 2777266347, + 205746810, + 3201465979, + 3063789352, + 3389233479, + 271265688, + 2424812677, + 98503380, + 78210431, + 292284637, + 484041607, + 1787870899, + 3590556653, + 909930309, + 3100227788, + 3184061217, + 2849511009, + 4245099983, + 4114171783, + 912316613, + 317027273, + 2009246575, + 2384701120, + 4122715074, + 3875346911, + 942301007, + 2733181543, + 3989143902, + 3592896189, + 3414269848, + 1576595578, + 1232805803, + 1325884808, + 3728880276, + 1830083556, + 2629986692, + 2504078327, + 3144670934, + 791765512, + 3973341621, + 727510202, + 4124368023, + 3483950645, + 1873797351, + 2232106889, + 3290136317, + 1671952923, + 2602619349, + 4279386338, + 3213227055, + 1133211744, + 1346700000, + 2482375216, + 3120611154, + 1382571007, + 1392782475, + 3601732108, + 3556657898, + 950094521, + 309672136, + 967236171, + 1920432479, + 4223184050, + 52721480, + 673995073, + 2699926917, + 709861124, + 2067789480, + 1883200737, + 1801477455, + 4141002550, + 3228364895, + 1983198415, + 857706243, + 2332825183, + 4099244372, + 2432098977, + 2290443223, + 2718865077, + 2363532398, + 353871707, + 796248592, + 3974305086, + 3668153167, + 3010220886, + 2959066356, + 3208768709, + 2548031705, + 3959972152, + 3891484091, + 1395441026, + 1327188347, + 2212970376, + 104935482, + 3907210745, + 3979836769, + 1561382556, + 3948002582, + 539174856, + 3413985039, + 1973453152, + 3266894197, + 3042039942, + 3032792760, + 2180991686, + 4030410608, + 3197502960, + 2835948083, + 516998978, + 1663960567, + 2267681531, + 3353519247, + 3822351886, + 3257728881, + 3696655968, + 3335053992, + 198379156, + 1696585017, + 3772977781, + 3065480492, + 2650933604, + 1785757241, + 3072962718, + 4076518835, + 148543993, + 1352493878, + 3427072025, + 188342029, + 3894678808, + 4088737782, + 3372313219, + 3898295289, + 3876976471, + 4127834099, + 420249418, + 482409197, + 3461256983, + 3269303517, + 2096686210, + 690023618, + 3839651000, + 3364817826, + 2369252370, + 2103265256, + 2910720334, + 3109060832, + 1467810115, + 3251904271, + 2354897991, + 2142098206, + 2204140353, + 1742026742, + 348325637, + 2641698184, + 877361616, + 3661595675, + 2821896091, + 2676446548, + 2486102911, + 3130861206, + 2322539475, + 4064710158, + 643945898, + 789074879, + 3220302062, + 2585312561, + 2766178036, + 2144322290, + 564971392, + 1673385042, + 2687000568, + 1521458096, + 1145728595, + 1322176305, + 1723255860, + 2145650441, + 629297718, + 384473330, + 218873679, + 2716275836, + 2903058153, + 140212026, + 2845868426, + 3150674569, + 3645483047, + 137186379, + 955484067, + 2630986851, + 2911774269, + 1245825734, + 2768219185, + 3021370275, + 457212471, + 2193682090, + 2336342758, + 2681588123, + 2026845002, + 1842827079, + 2441577285, + 4065238976, + 4059717959, + 1630822024, + 3375028927, + 1697093999, + 2055417175, + 4109915499, + 3942456819, + 2683613011, + 1774765807, + 3082184868, + 4100697789, + 3298111565, + 850022871, + 2526040909, + 3499006157, + 785798133, + 3015464099, + 2431506293, + 183695631, + 2978011915, + 2439793236, + 1056650966, + 1850520063, + 191087962, + 3382518053, + 119623700, + 1080030572, + 2228599724, + 2615684184, + 1654047832, + 965690922, + 3349645992, + 3575792007, + 2805409655, + 4276231298, + 3400998476, + 3994695711, + 1518430905, + 2194813207, + 3438408598, + 2398095237, + 668507232, + 1514840721, + 2281009251, + 659163436, + 2373796001, + 338144178, + 1268347232, + 1713458683, + 151107739, + 256716674, + 2859653652, + 3405980334, + 486546124, + 1584119571, + 2597514969, + 1468507195, + 2000577736, + 1843808045, + 1988265849, + 1026376241, + 3277345568, + 2678166464, + 696164723, + 3030809616, + 3302361850, + 2422323485, + 936466401, + 985571383, + 1928548543, + 827494749, + 1670498593, + 3418529383, + 1163435623, + 3716546717, + 1735276449, + 3909999989, + 3682056837, + 1420416230, + 1172221989, + 1189979089, + 2180173803, + 1337511419, + 1981310147, + 2745057916, + 2311566543, + 863237347, + 1156374074, + 3158497072, + 3209643625, + 4280019240, + 632432014, + 473685650, + 481475417, + 1791620933, + 3733485419, + 183631936, + 1152014001, + 210005650, + 1546343676, + 2672416368, + 842247511, + 3931493036, + 46628612, + 3955907689, + 3226700419, + 109755983, + 2697267694, + 71378308, + 3654160173, + 1323910007, + 3041013517, + 2102236205, + 3264224022, + 2497052598, + 1482332770, + 2755593383, + 1647613701, + 1079841219, + 3898622647, + 382553371, + 1070663631, + 3453507166, + 3222582762, + 2338624790, + 874037591, + 3363659527, + 4081838842, + 2035791334, + 914705757, + 2252036853, + 348342028, + 2273729455, + 1998981920, + 1550771241, + 1989761566, + 496642953, + 269017530, + 3396188728, + 2632336744, + 946110016, + 3418015478, + 3346831221, + 2438544059, + 591279900, + 4114795117, + 2370717586, + 4095897209, + 576788505, + 3634120340, + 2919133009, + 245561815, + 957213667, + 1292236995, + 2491904620, + 2815239179, + 3923024807, + 1695656778, + 4105132125, + 2586670745, + 485134428, + 1054405090, + 2674237313, + 1776216389, + 155456865, + 700137022, + 1084647028, + 1539957484, + 1554266451, + 2879174926, + ]; + + static const List _envieddataprivateKeyFCM = [ + 737108555, + 573120264, + 87094948, + 3005608675, + 2324184216, + 319752, + 2992299204, + 1346659142, + 2924955227, + 62838652, + 2170406339, + 2505515853, + 3735550869, + 3806209418, + 3398063706, + 4084618633, + 1378498890, + 3623321554, + 1059847789, + 656736229, + 1833632106, + 2992399026, + 3804747323, + 3613930740, + 364610273, + 974428937, + 1309336020, + 1575179400, + 589362844, + 2939539790, + 839258206, + 66853753, + 1800855227, + 989131152, + 1213040852, + 991279746, + 1644643515, + 4139169515, + 3747969839, + 2280084634, + 3433754596, + 3069250504, + 2150388570, + 504933757, + 1756199986, + 1163653499, + 1561342153, + 957420314, + 1499889692, + 1738785578, + 1142339007, + 98655099, + 1222420364, + 3251658993, + 1828673135, + 2669757144, + 1663890459, + 4213198321, + 1901515874, + 2006237347, + 3566990354, + 432866862, + 1264698268, + 3101388351, + 2703842874, + 2049244849, + 3628984102, + 1832165856, + 4205264573, + 4014240846, + 969864724, + 703342057, + 2882946839, + 2360807044, + 2781536917, + 3050041806, + 685806501, + 1311138766, + 3060249472, + 1002364005, + 1773186238, + 850997478, + 3999181081, + 3970312594, + 1035395332, + 4109867787, + 3639678762, + 4268164700, + 3408604689, + 3354725212, + 1327178085, + 3339196965, + 3402432735, + 3411255555, + 527910672, + 3283055942, + 3194268924, + 1184094770, + 3791630210, + 3499230446, + 2572662905, + 2946226106, + 2416566649, + 440429588, + 3966221517, + 4121517494, + 4232402970, + 634559400, + 175875277, + 3055100599, + 1446238388, + 2098346512, + 602461448, + 1444886686, + 435403534, + 1988702899, + 1905524156, + 2737701128, + 2042619919, + 2832605421, + 810205602, + 2822943762, + 4273478799, + 2336636954, + 1116549017, + 876235489, + 4220014603, + 4176943364, + 976927936, + 584017238, + 3546447076, + 4242171725, + 2638608623, + 1952394720, + 2917757434, + 3707210969, + 2461337397, + 233635473, + 1707193053, + 2607604092, + 4268905758, + 3870066962, + 3191750755, + 2860161737, + 346202715, + 1644345551, + 2250124663, + 944391560, + 3255524836, + 892954434, + 1808714457, + 1390002352, + 587678782, + 2218828887, + 3374471366, + 1141500883, + 1838733130, + 2966644186, + 880245682, + 2087597865, + 293704405, + 978320239, + 3978037542, + 2180809270, + 248819961, + 1637697582, + 2355942918, + 1795956975, + 3772518855, + 3881755583, + 4269727345, + 2875576313, + 3127537672, + 4034453517, + 2203270681, + 34570491, + 2396105419, + 571104187, + 475073460, + 4159175137, + 1027140163, + 373649584, + 1416965554, + 504987109, + 592068387, + 2921450725, + 3935163186, + 1454349431, + 656342459, + 754900459, + 1182580336, + 1128670844, + 89676664, + 2402432219, + 2014451563, + 3489468472, + 4013501579, + 1653974771, + 2887167301, + 3893150600, + 1533169117, + 1164736693, + 1780892176, + 4014216449, + 1358147845, + 2337429967, + 1741844172, + 4102090138, + 2748631209, + 493502043, + 1850086250, + 1960883872, + 3308646141, + 38467784, + 3028939423, + 917717418, + 2742104058, + 1723815379, + 2119841643, + 3876374702, + 1705086583, + 2881525174, + 1570309641, + 4020838264, + 4042003293, + 3183612606, + 1061776862, + 464840164, + 2286632499, + 1917636894, + 24591981, + 1176332355, + 477226058, + 2125512623, + 2725072343, + 4100958044, + 724903740, + 2328117464, + 763126065, + 2374124328, + 2956326137, + 1671131080, + 3720376937, + 2502605792, + 4144105457, + 657115522, + 799433225, + 4278237010, + 769817022, + 3428656894, + 3593147896, + 1412960961, + 2453315677, + 3669869228, + 1496696915, + 2426769372, + 1026625350, + 3651924346, + 2279303876, + 2686506580, + 1087789622, + 601636611, + 3613706592, + 1825740680, + 2450074821, + 421625699, + 1992538677, + 895723231, + 1259255836, + 3722659869, + 4013418804, + 1562558432, + 1632139212, + 2991629804, + 2273247903, + 599051877, + 1669649063, + 568846736, + 1494068278, + 2739996334, + 2779113475, + 779098991, + 3619089275, + 3385785805, + 1519618923, + 953641830, + 1721296176, + 4044107017, + 3004078576, + 3009551622, + 2517659688, + 46896626, + 2278016032, + 647406949, + 3288514804, + 431565978, + 2590570630, + 1584893212, + 2225661949, + 260418195, + 3321929609, + 119911565, + 1690776057, + 4150474181, + 3566955015, + 549546116, + 3176774939, + 4174765387, + 834562627, + 15793015, + 1553903215, + 3210900532, + 1589989195, + 3760850106, + 1094719853, + 3518056814, + 178402176, + 826054892, + 3928025325, + 2810483442, + 2685635719, + 2372946055, + 1313388345, + 3488829378, + 2825312486, + 2681967209, + 2805496687, + 4084983479, + 2657934675, + 2021592261, + 2915120964, + 2962530999, + 1722337754, + 1280032320, + 2548289207, + 171512011, + 415022427, + 1189000213, + 932422093, + 3216733954, + 341391488, + 3047858398, + 1651917920, + 2277957377, + 490984170, + 4236650703, + 304171047, + 65598342, + 3558705824, + 1971557057, + 171398218, + 2394745305, + 310403219, + 2891826990, + 1724246437, + 2016263887, + 3028194785, + 1651520363, + 3098360454, + 3908082777, + 1842511466, + 2816161498, + 3849091878, + 2742832506, + 790092579, + 1390496180, + 816088911, + 3429482310, + 461830464, + 3199835821, + 3686386171, + 3979458464, + 1170862475, + 1979591335, + 3166629007, + 2643421390, + 893272993, + 1872015762, + 217186195, + 2396243305, + 2114500200, + 2929432711, + 3286323068, + 172230453, + 3745091820, + 2433348878, + 2437657984, + 280270882, + 28997424, + 1196313517, + 275582832, + 3333984474, + 4164495324, + 1044000827, + 333220470, + 1650095998, + 2490214838, + 1724270264, + 2827910589, + 504243733, + 1584872504, + 3188418969, + 1245166858, + 3263494381, + 3798399298, + 1988345107, + 2727316038, + 1196129687, + 431024789, + 1545774310, + 4139702133, + 374409287, + 3588824958, + 1492345984, + 932072650, + 3424993429, + 2422754404, + 998601603, + 2521224744, + 1072875366, + 1159425352, + 737029028, + 3650336119, + 1303107111, + 2039781305, + 2856489005, + 3623638022, + 3845037417, + 2946816859, + 3927059867, + 1845338879, + 1231510456, + 2933439197, + 683918509, + 872778238, + 2604776394, + 1981900672, + 3635907931, + 1550896897, + 3629184454, + 1206118482, + 3648149660, + 727434637, + 1602639706, + 1780556354, + 3850244601, + 1323335145, + 1108496724, + 1157470066, + 2772928286, + 3452416360, + 718494283, + 3881102540, + 215401713, + 3798263293, + 1615013299, + 4035375869, + 900559177, + 1568113629, + 749008363, + 2897102696, + 1614058690, + 1758876743, + 3653676479, + 163972143, + 882695148, + 59167410, + 1834379429, + 2322546254, + 2980393749, + 1490232888, + 4041737518, + 3568989300, + 699988777, + 971275523, + 1742513168, + 1682423722, + 3878685617, + 4216770148, + 226208976, + 3348458984, + 2196695581, + 521500075, + 4280698809, + 1357611692, + 3289541944, + 3393910508, + 2287883867, + 4031431671, + 2828012837, + 3416437082, + 121667469, + 920735008, + 2196578457, + 2948310595, + 248379986, + 3891608780, + 2234400859, + 1770949513, + 252911083, + 152768029, + 992191102, + 4250800067, + 1104665699, + 1620460093, + 910886352, + 988589625, + 2109982648, + 2954961142, + 2885572231, + 3172493990, + 3560837180, + 2608909238, + 716888467, + 2465398031, + 1517335541, + 3736024875, + 2771259734, + 2061806930, + 1417775846, + 2999572746, + 29999118, + 4177180703, + 2514305831, + 1440587054, + 3165606523, + 2277946720, + 3147468940, + 2251725137, + 2992871787, + 2476340220, + 1126230228, + 39175466, + 3398671701, + 1736606747, + 228199468, + 2156353423, + 26073222, + 3799395537, + 2325692358, + 3791842130, + 902520759, + 2617319521, + 4149280006, + 1592411495, + 1938317575, + 240139625, + 768338243, + 2082924328, + 530812492, + 3998049487, + 2081467963, + 2314488062, + 2586281274, + 678618139, + 2528282219, + 451421596, + 1097511818, + 1917811814, + 1394821044, + 3613783700, + 4020287361, + 2271581691, + 2092137038, + 2084276573, + 2554427621, + 1800484896, + 3233181946, + 3031706270, + 2720746361, + 2758588582, + 2813951384, + 3907403646, + 1207599723, + 2169948018, + 2378158561, + 4117306294, + 2977420039, + 2226429449, + 2243095779, + 890007526, + 3283153635, + 2811967341, + 872014202, + 3556990983, + 2961403522, + 2229661463, + 2904431918, + 3855472042, + 1371651191, + 2933911262, + 2739638053, + 2908258621, + 1882535341, + 2431747649, + 3494440172, + 3560078137, + 2160705095, + 44081405, + 3748889044, + 4092449056, + 1623244961, + 2338635871, + 2572708265, + 2954676594, + 444146959, + 3344052658, + 3517469095, + 1471233634, + 650354978, + 3633282465, + 4125039868, + 2705400496, + 1313620777, + 3082416343, + 3978062866, + 279638962, + 854836177, + 4037337117, + 3090453354, + 4193697247, + 4062362367, + 1846808419, + 2578093188, + 4049164079, + 2846163337, + 1582371295, + 2264731859, + 366032561, + 590114328, + 3999681430, + 2376085027, + 820850429, + 1018267803, + 369940709, + 3531233380, + 4268864832, + 3497986401, + 2341486357, + 4227911848, + 2181113339, + 1355479103, + 2749160760, + 3246985864, + 3341529046, + 2073181275, + 699313972, + 1199359859, + 1884703612, + 1550999065, + 1482176127, + 1300010606, + 999931853, + 2273329829, + 2676099800, + 3108976254, + 1024613547, + 1270967140, + 2078640189, + 2774447783, + 3819528387, + 2718802776, + 494397489, + 2530165884, + 1204456300, + 123347485, + 1750412103, + 2496052421, + 4139143040, + 2882254844, + 85720878, + 2519613703, + 4102714416, + 1945156495, + 586502570, + 2827709311, + 2671446563, + 3080614608, + 584388285, + 1498919414, + 2296929430, + 3086107814, + 2976189249, + 735158768, + 4238519970, + 4215975174, + 254924387, + 3680593236, + 1793969570, + 210479508, + 265149553, + 453474953, + 3916600507, + 2504430248, + 115272834, + 603683663, + 1058652314, + 3016477165, + 3630690632, + 3940171529, + 235273778, + 2312000774, + 1769144387, + 1983369553, + 1210402000, + 774429487, + 2735389413, + 3451516891, + 2697681229, + 2873966006, + 107771804, + 340153939, + 3902757442, + 3595538616, + 1710449016, + 789110577, + 2226992933, + 3853511017, + 2412690409, + 3867806169, + 2133599213, + 118636114, + 1464073972, + 1533404840, + 829450643, + 1864196139, + 2173100386, + 2241884425, + 2351157300, + 947820371, + 3437489752, + 3975263458, + 1471809790, + 1798150877, + 1305861627, + 2932005037, + 3352365474, + 4068857820, + 3126210300, + 1856052833, + 390543189, + 207370691, + 2605083237, + 148692270, + 3652608008, + 2309777453, + 1201795645, + 331100896, + 999928387, + 1977239552, + 1611841428, + 725679874, + 2725432334, + 1962919893, + 3833271859, + 1197493858, + 3887581865, + 2346763934, + 2707146224, + 2277292571, + 358692342, + 2638816152, + 1205487530, + 4238210792, + 3610245511, + 4128009815, + 2554570464, + 1067956231, + 3837039847, + 1107712299, + 2083151043, + 3841744038, + 4169811646, + 1076138229, + 2352889024, + 3282930991, + 2323101572, + 443842410, + 2540039265, + 2422063057, + 1730525440, + 2762219367, + 3148841031, + 3874209690, + 196601470, + 4074234366, + 4062274287, + 1880180537, + 3875358440, + 4013145794, + 547311877, + 2450684744, + 2461043617, + 4171289868, + 1640139002, + 1282371576, + 17590777, + 1087296487, + 469601967, + 3623122171, + 747793919, + 3896204021, + 3999952199, + 4190926154, + 2519459746, + 2168164364, + 557626499, + 880135521, + 3187688348, + 3813281233, + 574556772, + 3153433975, + 2430581239, + 2807013463, + 152835053, + 2135828569, + 502818227, + 1130118406, + 4202838184, + 1789641155, + 1467085090, + 396223212, + 597493833, + 1736613074, + 1197732669, + 836437235, + 3465854602, + 3700168849, + 91762668, + 2391202199, + 295023772, + 2581861168, + 449024863, + 3001822008, + 2466418859, + 2872346581, + 300481756, + 572637216, + 1484271727, + 726078538, + 4039960021, + 666631435, + 1023898425, + 1853351689, + 3948710781, + 439645173, + 979350290, + 2222952048, + 2589438790, + 1937329424, + 1501831104, + 2316802096, + 372631871, + 702808934, + 3578596410, + 2126623697, + 2458752873, + 591974811, + 2339297533, + 1288430980, + 3134899151, + 1829570753, + 1748985415, + 1532824239, + 1262166008, + 1620842274, + 3834158663, + 3207937746, + 2620793416, + 4217291911, + 3277388802, + 425428707, + 2751160861, + 56937926, + 2669958716, + 184488539, + 29417705, + 2042580058, + 565192017, + 4291650546, + 3961586745, + 1918052406, + 2110155085, + 4266271446, + 1220892816, + 2242469526, + 3290204496, + 724667456, + 3770454200, + 2387813112, + 480452013, + 2567603148, + 2949949748, + 2282276873, + 1267200800, + 953654241, + 4034685286, + 1216035486, + 1909479248, + 1058998695, + 1366599302, + 1253836245, + 1360163199, + 2167363205, + 3193726728, + 1179755699, + 3433333324, + 773380278, + 3567753543, + 1576466747, + 3739894906, + 2045959137, + 3999190680, + 3100414662, + 2926965568, + 3258699563, + 383895028, + 3934726771, + 2488205539, + 1498263962, + 1161227595, + 3127776129, + 2220619616, + 406109855, + 2833378305, + 2052513733, + 1280065442, + 2747083532, + 1440776684, + 363124108, + 2717590350, + 2092049959, + 4211537714, + 2081321078, + 3920316659, + 2554903346, + 4234188053, + 1395865806, + 3656836449, + 935515907, + 3869038122, + 4070759855, + 3991092056, + 2976518209, + 2127251981, + 1715179253, + 3202801445, + 3025431524, + 928909732, + 1546620411, + 3318207862, + 1054357877, + 1212288326, + 3277649459, + 3553252523, + 3936269754, + 3001222024, + 3103022724, + 4170067211, + 1626772333, + 3277583907, + 1160016186, + 4044133363, + 4131372893, + 66760346, + 3630089661, + 1635899318, + 502492159, + 1312728643, + 2800543556, + 4218566159, + 3255613795, + 1595941231, + 3058111342, + 4042640625, + 3127660496, + 1422193316, + 600918153, + 2420093541, + 4236433913, + 747974793, + 2886017733, + 3114878973, + 167932007, + 1327836626, + 3104741261, + 2684527988, + 1613037884, + 1092139115, + 2037389673, + 3866448137, + 3288595806, + 4179522897, + 171851130, + 3390747365, + 1957846152, + 23954653, + 1558940179, + 3034700802, + 3415480675, + 31874107, + 1522583033, + 2856359933, + 3377785544, + 1500505274, + 2357411113, + 3800478840, + 4101319025, + 1803104170, + 3217189826, + 1959035126, + 1183090892, + 3885183796, + 1832623989, + 1205759151, + 2056117867, + 1299363529, + 972369997, + 2099975224, + 4217066105, + 4257347982, + 418611127, + 1655512064, + 2417558741, + 2909371361, + 2656106392, + 2715763472, + 2079161065, + 911449416, + 1919205968, + 1318085028, + 2274121787, + 3022121722, + 1086658118, + 2320667573, + 838833723, + 1260983194, + 3660810197, + 3113371451, + 1356064106, + 3093057876, + 4073346282, + 1315756290, + 686757694, + 3121357719, + 1236500657, + 3765722367, + 2652649807, + 3709236450, + 3540803671, + 3817916623, + 3883188154, + 3953988674, + 543859362, + 781311176, + 2452456546, + 2916550919, + 2684750393, + 892435031, + 2949028512, + 717754350, + 1888475134, + 1299905926, + 3511116554, + 126850209, + 1270745581, + 2783791198, + 986368957, + 608139700, + 91067185, + 1164090844, + 457021028, + 3861335889, + 822290784, + 1786969511, + 4114107570, + 1303132490, + 518716447, + 3816897191, + 1577553935, + 2339924426, + 2891084386, + 4111619994, + 3322948726, + 1539415771, + 1548519284, + 3926129658, + 696176241, + 925185443, + 395063024, + 3381587861, + 3306889501, + 899581690, + 449788396, + 1019594884, + 1913865568, + 203764067, + 1755407593, + 61297309, + 675631419, + 527690614, + 1096593451, + 2112239024, + 787715592, + 571860377, + 2568655287, + 1903106055, + 2426624361, + 1489747504, + 2080869805, + 1003708983, + 3656976288, + 3137952481, + 3129839572, + 2424355815, + 1454318868, + 3784378849, + 2943475396, + 2000379869, + 1143833357, + 774235817, + 4066300079, + 98194188, + 1878191325, + 2867373079, + 522170061, + 2685739620, + 4256716494, + 3325187436, + 2235760871, + 1640310328, + 3318246182, + 3423908379, + 951516887, + 2362245930, + 3314963258, + 4023177272, + 381459850, + 3542113495, + 569408244, + 1295185758, + 3607258633, + 1292661995, + 247757262, + 987131377, + 2552584433, + 2636622563, + 1860546126, + 2494312104, + 2782351106, + 2896368627, + 838382265, + 2007822996, + 238508510, + 2524339510, + 2363414943, + 2914138158, + 3628020370, + 956855911, + 2261081178, + 2228097184, + 4177271361, + 4158766807, + 3572796998, + 1430343621, + 3441921836, + 3454495340, + 1182316640, + 2269278400, + 1077135942, + 2953651520, + 526971265, + 2859895554, + 3358886756, + 4174772506, + 1567842048, + 251118047, + 670301875, + 3825963269, + 3042555661, + 1426858086, + 1471961734, + 217889854, + 3702626510, + 2455552038, + 3555365170, + 2593708739, + 786674739, + 402322731, + 1874981466, + 3407237793, + 4114519593, + 351189285, + 3161005695, + 150308256, + 1879067278, + 134237737, + 2879585549, + 762142446, + 735835338, + 1401753161, + 398664319, + 14875738, + 4243747121, + 936349225, + 2941560714, + 1819832274, + 3360941134, + 2101168578, + 3516605805, + 3182955662, + 233125110, + 97945021, + 4099904791, + 2261675238, + 547900065, + 2128456845, + 2732575407, + 87231818, + 3385975885, + 3482964768, + 3121124737, + 1597590281, + 2958060624, + 2312160881, + 1250748680, + 3020167489, + 3371053523, + 3126787642, + 4053203302, + 2924348066, + 979929803, + 2756455485, + 148006385, + 3383905496, + 600443214, + 2403008879, + 2978733434, + 928489238, + 1780947111, + 210481815, + 323488152, + 1615004970, + 1406587727, + 3950773954, + 394274021, + 3894535387, + 919963745, + 3631959336, + 3527523352, + 1657473583, + 386182404, + 2937059348, + 1321489067, + 3741745380, + 3920311001, + 3696070674, + 2261738927, + 1952926598, + 225802352, + 1195348793, + 2965761572, + 2056518565, + 396407707, + 956877089, + 1875726068, + 3097739063, + 4101905117, + 2699871314, + 1413749722, + 1109515447, + 13463033, + 3880381157, + 2916419220, + 328116099, + 226106256, + 2081329974, + 1535096967, + 2564774037, + 261153761, + 3399688211, + 3761551851, + 1004728389, + 2532161167, + 3255250111, + 2428018476, + 3469426426, + 3004436419, + 1739930715, + 3599610188, + 1267828678, + 4098765782, + 2386215322, + 1505123955, + 2142089942, + 2321182885, + 2881932232, + 2615077048, + 1415862298, + 1168026560, + 3645446401, + 3372126008, + 938799975, + 1710103591, + 255086481, + 3674651363, + 124794896, + 3199066464, + 3366934050, + 2992416958, + 3415524697, + 2126893295, + 704178165, + 2185287388, + 682500980, + 3868817740, + 3396196302, + 3965823334, + 3045211807, + 1440582176, + 4124975671, + 3663042810, + 958722436, + 3582803021, + 698410230, + 1326584074, + 883957731, + 4041682128, + 1483491260, + 2209582341, + 482929097, + 3263992214, + 1281004468, + 2617265431, + 2142447986, + 1819676214, + 1008729704, + 4034823002, + 3809141622, + 2709813499, + 67866755, + 1557696009, + 3761367685, + 3374392494, + 346551963, + 1703846372, + 3218328769, + 3001103508, + 3412946123, + 2399821969, + 2694597508, + 3997488086, + 1218196649, + 3414355725, + 2436806638, + 2017963302, + 725408467, + 1615692762, + 1087814070, + 2697424268, + 1458392307, + 24065418, + 1070411203, + 447202759, + 1571053280, + 112625852, + 118146825, + 2474166728, + 2842438824, + 3534055240, + 67689936, + 1515927843, + 2734103185, + 1751644317, + 3909275718, + 3384879981, + 3666017685, + 1692475383, + 4217449517, + 3963510183, + 2609960485, + 1773019814, + 1740638252, + 3079688140, + 825059426, + 2525582297, + 809173441, + 2448899296, + 2217736664, + 2277520857, + 1914225008, + 829145121, + 2188695792, + 16465742, + 3434610973, + 3259469775, + 1023650339, + 2687217475, + 761380669, + 2737740196, + 1279609606, + 917421633, + 4101602486, + 3805311923, + 88690545, + 3188616082, + 1894076385, + 4293155841, + 761188286, + 1347314807, + 2426965009, + 1196224374, + 2756209099, + 3055959255, + 689707129, + 499604794, + 2899737322, + 1270153923, + 3031332479, + 3602089178, + 3363204485, + 2438482165, + 3926141486, + 673670644, + 1197517567, + 2178506707, + 1165071042, + 3459297809, + 2491136507, + 2100111521, + 2499581023, + 3129850739, + 1561898514, + 4222189406, + 2858594918, + 2452644410, + 564650798, + 4241715299, + 3050183909, + 3429249068, + 1744088671, + 3505491853, + 1210719691, + 899473278, + 220101611, + 2927579964, + 2257482725, + 3626306077, + 2467319847, + 2553372816, + 2478778046, + 1823007905, + 365664344, + 3933134777, + 801172828, + 1868036978, + 378019368, + 1035773650, + 3525003654, + 1873010695, + 2342038593, + 3993115866, + 3075704661, + 3990883821, + 2838094908, + 2098740796, + 305999190, + 831588069, + 1355628761, + 4022023876, + 4287347946, + 1442429310, + 2559972280, + 3460099719, + 3553454909, + 885235211, + 3728279456, + 1983042414, + 1429545107, + 913342074, + 2367269946, + 1544672427, + 2388114621, + 3250341136, + 818693794, + 2072485992, + 4142497203, + 1958958705, + 1612361647, + 2706445757, + 978172029, + 2084253783, + 958314814, + 2592481395, + 2043038090, + 2170464724, + 4221314193, + 887093185, + 3453655040, + 1854155177, + 63867732, + 116312482, + 135403788, + 1091665654, + 3512840947, + 323239949, + 2474737557, + 3832061314, + 1311071688, + 1638570741, + 2974975909, + 1478237281, + 2326274497, + 914336119, + 1169484600, + 4012288036, + 2942417708, + 360693824, + 4286096434, + 1425575220, + 1127870526, + 1619231897, + 2603112464, + 4222012880, + 833564205, + 330381030, + 1779793273, + 2025688072, + 2561250786, + 3393389446, + 1048169422, + 2471305982, + 1174749267, + 446098644, + 2474898015, + 2883114103, + 3833127265, + 2492943240, + 1613051065, + 811168351, + 2431387592, + 3553946496, + 1570264757, + 3123044128, + 3901492273, + 3235168200, + 3470112962, + 1881735717, + 1685107892, + 3987639951, + 3586110141, + 963626636, + 1969775836, + 2759373600, + 646389840, + 1541048645, + 179753691, + 1559193946, + 2631429949, + 2264097280, + 526413497, + 3415678458, + 1512725238, + 787218368, + 75508886, + 346272759, + 2089974768, + 2322990097, + 3668388454, + 270007575, + 1454966129, + 366506163, + 4011835854, + 4282907282, + 962899273, + 7954019, + 1885674844, + 4122477537, + 478979543, + 1470752809, + 5233523, + 621787210, + 3389803657, + 651426757, + 1422549826, + 960418344, + 1888196471, + 3380956526, + 3068560, + 4113639706, + 560028850, + 2491692895, + 3993049086, + 1300605126, + 3918766647, + 2841666778, + 3817375325, + 1686792767, + 3106757528, + 1982375808, + 3615367889, + 827914225, + 476813472, + 3891456415, + 3621439826, + 1963144840, + 1794052909, + 3430537419, + 2467825792, + 2395936437, + 2598867983, + 877982422, + 882309284, + 3944952111, + 2433750316, + 2918248889, + 2553151804, + 213845383, + 3583080445, + 2818841807, + 2117778602, + 281749195, + 1684124279, + 2678034413, + 452324545, + 152633369, + 2970659613, + 3596194213, + 724922175, + 1015624567, + 1851498328, + 267948342, + 918220480, + 2682009085, + 2313014320, + 4120956200, + 2957427807, + 3284133824, + 1597303683, + 1838259385, + 4039263714, + 3952562277, + 1113742182, + 1035117187, + 1538807521, + 3415876774, + 4185266542, + 2260658259, + 3320051947, + 1491398650, + 2368326610, + 3518122566, + 557159581, + 188220615, + 728450260, + 2669937336, + 3944084884, + 146185315, + 3753049735, + 654749065, + 2548701113, + 1492790116, + 885159483, + 2032180759, + 185541046, + 1408338067, + 4177556950, + 2799355663, + 1962137406, + 4060195736, + 3886027932, + 3062049265, + 3640202694, + 2215380590, + 2851749425, + 1604187793, + 3333853774, + 3308495579, + 3884856006, + 1330134388, + 3860627664, + 1487207059, + 972927298, + 3338038673, + 1450672124, + 3540760205, + 2266667172, + 3100933967, + 1873295127, + 326309391, + 924887023, + 862801932, + 3215289951, + 4164073943, + 3139818041, + 1910022355, + 1288279782, + 2990058987, + 3800085915, + 3739259590, + 1659970116, + 2420358414, + 178844699, + 824545649, + 3630376836, + 2877871703, + 2543016366, + 3154096157, + 2495265967, + 4180559142, + 2935731242, + 2765594458, + 1610187728, + 3518700973, + 4142784388, + 3054890257, + 112345695, + 1324268237, + 2409064596, + 32964419, + 1335035797, + 4270370529, + 1861362004, + 1723022158, + 1009151966, + 2162047253, + 1267993927, + 278717415, + 1324613808, + 3896145118, + 934799564, + 1513616365, + 1207592856, + 1971754625, + 397023271, + 3722562558, + 3449169197, + 2410481985, + 3280773496, + 615291257, + 206998944, + 4265620922, + 891352091, + 4046806648, + 1116027336, + 3524593173, + 4187321513, + 1961121719, + 4073733653, + 1090056272, + 2485658844, + 4204201451, + 3276672977, + 3761441900, + 508898036, + 1506802461, + 1781099483, + 653494998, + 850676728, + 1805005708, + 3141555714, + 676908616, + 1803517561, + 2611079690, + 1564681537, + 2825767241, + 3682457009, + 73543606, + 3773697376, + 1874869524, + 4288118598, + 2264388150, + 716261825, + 4213906204, + 2330637356, + 2636008765, + 327609318, + 3611718506, + 3237500905, + 2461606840, + 1218773813, + 3381243572, + 3683127130, + 180739807, + 3540860515, + 4210302675, + 4255660657, + 1101708307, + 2275520481, + 2956221685, + 705091830, + 128285068, + 348025209, + 3015879921, + 4294433759, + 2283013793, + 2872091588, + 1995514850, + 3898335823, + 369231982, + 3134065362, + 3785352404, + 3449195584, + 2349342137, + 946546100, + 1813497103, + 171256456, + 3632156796, + 612524446, + 269302131, + 1879637754, + 3974863602, + 1839164449, + 1519188277, + 749291251, + 3859073721, + 1920085984, + 348344985, + 832069359, + 2612864018, + 1066316340, + 2939432977, + 4062582173, + 1487983536, + 117681242, + 2292585590, + 2035812137, + 1057146523, + 2115797096, + 583239024, + 2308649916, + 255596793, + 843085891, + 105840563, + 2542246503, + 2300356633, + 1637936515, + 494605290, + 862961480, + 778282504, + 28971816, + 2211284221, + 273242514, + 3381041357, + 510867058, + 873890068, + 1888519872, + 1168926461, + 2785290802, + 1178329493, + 475402122, + 3152982843, + 3322435113, + 1126330708, + 1966599169, + 1984447471, + 733013236, + 3917577382, + 2262567675, + 3843711100, + 2191985493, + 3822513492, + 1099306418, + 1803887515, + 1454209275, + 609003386, + 3839737247, + 4019677129, + 3252288451, + 776485021, + 1531519277, + 1455211795, + 952129317, + 2759034567, + 364205294, + 1770711679, + 951845029, + 1215290232, + 4084089547, + 477940998, + 2264074531, + 2015479635, + 1289454692, + 2969428007, + 2895626359, + 3569496660, + 3568383256, + 3342545842, + 2708719218, + 1492005920, + 3420172846, + 2826721186, + 2628372394, + 1684037284, + 1139606406, + 3929018219, + 3098455869, + 186296310, + 1811168198, + 2284941034, + 3742025101, + 2429699982, + 1801512024, + 1165053109, + 2641259095, + 3658146308, + 1645470390, + 1217120066, + 1920510542, + 3516800845, + 3305472341, + 2054592093, + 4063578303, + 593666528, + 1076195390, + 2860686210, + 1087373205, + 1281209564, + 1433086376, + 58552465, + 4012745557, + 474610731, + 709960686, + 3960616774, + 2635967446, + 3050780876, + 3121903592, + 685939867, + 2781278400, + 3520536900, + 523160453, + 3543296515, + 1588391686, + 3903034558, + 824621603, + 124080421, + 930236708, + 3233189336, + 2197305297, + 699789278, + 3696830090, + 3011553748, + 2829726279, + 3622839999, + 2127420509, + 1200826805, + 100174713, + 3419024509, + 2816514300, + 1529054625, + 1829765005, + 3421549360, + 3237053584, + 2766856978, + 3391000331, + 900303702, + 739008691, + 124496113, + 1723628204, + 1633988229, + 602847456, + 2350559856, + 1561895308, + 98628902, + 869557330, + 3174432066, + 2685076404, + 2908904092, + 1161633365, + 190273286, + 3540362108, + 2126448642, + 2297854466, + 1342031848, + 2305317990, + 3685516727, + 2322878621, + 355614720, + 1785502749, + 3636545796, + 1548295162, + 1645576759, + 782791005, + 4179603884, + 4163928905, + 2661881345, + 1234070267, + 880831527, + 2356023630, + 2377661464, + 2125832946, + 2377521966, + 3591637375, + 928622768, + 2253675115, + 3153308341, + 2383862608, + 794868797, + 966417200, + 1813968139, + 2982461070, + 2409845430, + 2387490724, + 1122654938, + 3175441988, + 2000993508, + 725670473, + 1192129836, + 1132129933, + 1745208162, + 2391341273, + 3041728991, + 2159426694, + 1302004153, + 1617459281, + 1911768086, + 476777418, + 3180606725, + 1248616446, + 3928566627, + 1850108933, + 3502869487, + 2739220127, + 2952410123, + 4210146885, + 2238360895, + 1038610899, + 1605495391, + 4163727687, + 233525252, + 1687242525, + 3676168920, + 740965553, + 3346780986, + 3363598650, + 1069649446, + 3663459004, + 2771448071, + 1018963665, + 831487982, + 4144016786, + 3264560972, + 751076880, + 639736770, + 861511670, + 1059871644, + 175859428, + 811543155, + 3661361687, + 194965554, + 3582278913, + 632916614, + 3739461297, + 864289661, + 3820973170, + 1913974820, + 1657081413, + 657192907, + 1101022978, + 2874327429, + 1168278243, + 3093754585, + 4205829824, + 1749005243, + 1052060186, + 743611683, + 3533429605, + 3867604057, + 4203833199, + 323903790, + 1070185570, + 395653107, + 3703661508, + 2737722035, + 2635756263, + 169890463, + 194909808, + 2509036698, + 4002461363, + 581789973, + 2801365535, + 2184894219, + 1495813169, + 958922007, + 4188590790, + 3526773826, + 4244824089, + 3687154830, + 1726700197, + 3992371159, + 2086690385, + 1106859069, + 3103616282, + 3429869370, + 861527093, + 396196102, + 432620014, + 2829280408, + 2784614814, + 1343210837, + 2412999835, + 3104538707, + 2805969243, + 1481524250, + 1809948219, + 1304964300, + 981655007, + 3054769051, + 3099781082, + 3529798370, + 3794355980, + 1653832065, + 1800861757, + 3845574058, + 867500650, + 1733599534, + 3264188323, + 3837798837, + 212764980, + 3263781425, + 1843586324, + 2798258539, + 179736724, + 1333619822, + 3465220984, + 2098927894, + 773089947, + 2534516942, + 3976028878, + 4218099490, + 2102132114, + 349958189, + 1275818393, + 3643660228, + 2044148718, + 4033014384, + 1571915573, + 278661485, + 4202881949, + 1091713987, + 3043118481, + 1942531069, + 3983613657, + 1773331977, + 3847568359, + 2204551983, + 661684931, + 1789474454, + 218465261, + 4066014294, + 4043422423, + 466067049, + 4285235622, + 1362471664, + 1459910132, + 2048495158, + 2292895914, + 2287214437, + 2467719748, + 452202156, + 561332748, + 1506465621, + 2716724241, + 1625862767, + 2978760383, + 1749644317, + 1660623523, + 3390843993, + 2774383582, + 1943768754, + 2872116393, + 4291881277, + 56892379, + 2020945175, + 3541739239, + 804365917, + 141617883, + 3021369990, + 3736298833, + 2118840627, + 1246547881, + 3997734402, + 3479588, + 1671443376, + 2847570571, + 2438226161, + 2772857070, + 1966757198, + 337494051, + 1781021874, + 4045922966, + 2602228964, + 4199435024, + 348116848, + 2288411052, + 243501427, + 856776002, + 2043385511, + 2807031963, + 1099293548, + 1506043619, + 100599585, + 1753555771, + 530518529, + 206163883, + 3815848697, + 1874846525, + 2040312227, + 3957908857, + 2051469949, + 1046873080, + 3853268260, + 1120770605, + 608359293, + 3650155591, + 562008172, + 3379898956, + 2057937362, + 2829495357, + 1352423526, + 1424167296, + 487002856, + 3206903986, + 4037813223, + 2054021717, + 3918180231, + 1314532163, + 2332954872, + 2755650138, + 22869043, + 2221675580, + 529422910, + 2216813466, + 28460201, + 1186371818, + 419139445, + 3666901419, + 2293040468, + 1227484887, + 238501075, + 2556841376, + 1617308786, + 803025289, + 861238768, + 119514312, + 3229174038, + 1987111994, + 2865057527, + 1112900389, + 1407928914, + 1900474907, + 2768906667, + 3671178293, + 3970256630, + 3057462864, + 480340537, + 1515289975, + 1272730583, + 1804060020, + 1444028832, + 447627976, + 3993520629, + 3303255750, + 1533216531, + 3530272527, + 3547749472, + 4008018778, + 2909571866, + 753947854, + 544209932, + 2373393162, + 3710608854, + 2422318251, + 862834359, + 2977678911, + 1561615427, + 877293881, + 3376143920, + 431650045, + 643816339, + 4012200815, + 1243530155, + 2522196718, + 1308061623, + 2327649264, + 3364635855, + 987491498, + 2296524911, + 3998836593, + 3061738534, + 2301058033, + 2451877603, + 2318043274, + 3528951793, + 3624140584, + 77896342, + 2242427134, + 2592857591, + 1554274925, + 3689357834, + 474505684, + 3228566541, + 3637164110, + 242197990, + 337516052, + 422317823, + 2725263266, + 2476332546, + 2254156029, + 3281599156, + 2527297858, + 326609632, + 3597550592, + 3066376122, + 1629799745, + 3578675349, + 3368771250, + 2480119783, + 4096332533, + 2242369595, + 733301455, + 2336079316, + 401665690, + 46265480, + 4106097908, + 2010267248, + 3626587366, + 3530359543, + 322636085, + 852851913, + 4032337712, + 3773787592, + 1065333430, + 3308839737, + 2275765127, + 3599013942, + 580370230, + 769904780, + 1990798195, + 2195415552, + 2713394338, + 702265677, + 754248604, + 3753592087, + 3297910234, + 27447246, + 638607799, + 4153235869, + 1541837801, + 2444317208, + 3696997878, + 1960328011, + 3469063502, + 2741101620, + 2197375396, + 1675881722, + 990815728, + 1461055066, + 3412711799, + 1722005240, + 2413609834, + 2173530661, + 1683043560, + 3885063133, + 2809478292, + 207231844, + 2040851824, + 2913636733, + 2705415808, + 3377000646, + 3996186626, + 1807884787, + 1374228766, + 4191831542, + 2351813132, + 32879916, + 898623610, + 3536814974, + 2238130347, + 31776117, + 1714926049, + 4280395812, + 320992705, + 69054337, + 1328560419, + 3710506584, + 2326583570, + 2637876272, + 3013094845, + 1875933783, + 3109302544, + 4250049923, + 2071860899, + 1604167499, + 2504576385, + 2885110562, + 314140352, + 2835907583, + 4021924226, + 881595270, + 2508450784, + 3042598478, + 3577228434, + 3221797408, + 316176396, + 1612879824, + 2047075088, + 2160797087, + 1776889770, + 3403420230, + 3485662087, + 1375535046, + 451062310, + 3443564006, + 3242854578, + 3361300078, + 1240080510, + 2832104199, + 649885434, + 852039189, + 753656711, + 1814387528, + 3500678562, + 4246459989, + 1019193418, + 4168436993, + 271266281, + 3571554978, + 1794098209, + 3630587115, + 1893193965, + 543676788, + 2922819559, + 3605835573, + 4259354778, + 697495082, + 1418050187, + 358767184, + 3641238679, + 2240236105, + 1193640778, + 2532558347, + 3162712868, + 1154541615, + 2951418274, + 4248463355, + 540429095, + 1271556009, + 2466175076, + 3967140254, + 746486819, + 1926230260, + 2313857224, + 1746480898, + 4049770909, + 276819784, + 1300410536, + 858057327, + 4159855163, + 2007958879, + 1458631148, + 3011696832, + 1237842543, + 269825505, + 2070571985, + 1056523606, + 4118799219, + 2272898603, + 1511813917, + 220139972, + 2402554502, + 2119219401, + 652198081, + 3132014042, + 867028711, + 1529211816, + 3427380038, + 1851848786, + 419142597, + 3171492001, + 3520737828, + 3875333506, + 3010227708, + 3268216355, + 1001804877, + 2186578415, + 1048133131, + 999941217, + 816741556, + 3534387029, + 3855162991, + 4196200640, + 3207822838, + 3833859924, + 135757799, + 3391657427, + 763170998, + 2287109732, + 3871343145, + 877732077, + 764395498, + 439471363, + 3796001969, + 2793528090, + 2392351968, + 2035365081, + 1223193458, + 4129707004, + 3036778746, + 343996306, + 4160658460, + 1654591170, + 4248047717, + 2252070241, + 2779121823, + 1437154049, + 2593929828, + 3336273084, + 3924543208, + 3310087848, + 3715870086, + 1649871748, + 273759327, + 319291090, + 4213854871, + 723208282, + 1736008660, + 3429416963, + 2166018137, + 1451128291, + 196521843, + 3064637941, + 1055394238, + 1316527820, + 2618766156, + 4023720415, + 4028106971, + 1813235990, + 4202998853, + 1142002389, + 2577236153, + 4071117011, + 902556538, + 437864022, + 3085657619, + 669842242, + 1795096590, + 2911344652, + 2170792476, + 2234546410, + 2690995736, + 2676358666, + 709149872, + 1012312835, + 3849027174, + 1466015079, + 3679555422, + 2136425377, + 3068280810, + 1604393662, + 1271239231, + 2165911186, + 3212576463, + 4119568026, + 4212440679, + 3509698526, + 433243957, + 1198689147, + 3803012400, + 3831485844, + 696582301, + 1273056179, + 4267629155, + 1017357350, + 1413334485, + 3076505094, + 3340334434, + 2884945761, + 2343498117, + 186633774, + 2376863096, + 548323533, + 1358195395, + 2975710649, + 2701493912, + 371993306, + 3071386336, + 2940701037, + 3459878128, + 3873529256, + 891054754, + 2767893439, + 3096804779, + 453580741, + 2803054992, + 1428970409, + 2310757180, + 1807480129, + 4142520797, + 2418197716, + 660457502, + 3379726431, + 1918748116, + 3380544702, + 805590231, + 417915578, + 2592658819, + 2991229946, + 4189616633, + 2580956133, + 2225901214, + 606702091, + 1686420087, + 3555297427, + 1503163443, + 1822325030, + 1325627115, + 467095795, + 1450795971, + 2379131607, + 4097768472, + 1897967181, + 2230833081, + 1655003464, + 1528706897, + 2311482568, + 3254169329, + 618321328, + 1129751074, + 2163467132, + 1131242463, + 3580752608, + 344260241, + 1562907308, + 2963068138, + 1505018570, + 2318526875, + 3552091470, + 1636935766, + 2382887452, + 4073024474, + 604206621, + 179337479, + 3321588186, + 384384739, + 2216525114, + 770124894, + 1445246463, + 3736321370, + 344573128, + 462212912, + 4052963730, + 3468035994, + 1085346298, + 2883315666, + 3361670350, + 1709506045, + 3514733, + 4133931686, + 50927446, + 475373380, + 2445475413, + 4162896517, + 234388294, + 3571053108, + 3171699073, + 3597597337, + 623509519, + 3253962225, + 1905698502, + 3262720480, + 1391758219, + 1196498245, + 516427565, + 3207779034, + 1214752298, + 4007349199, + 2647594719, + 1411353601, + 1208595544, + 2101685420, + 1149330914, + 963947673, + 4131359905, + 2690099782, + 3413659698, + 3204312655, + 2445693667, + 2260843769, + 3167366044, + 3653061182, + 3254204063, + 239819032, + 2699859801, + 4223884495, + 1146977715, + 991186866, + 2364443597, + 1316158377, + 2418505509, + 1820234124, + 3287888121, + 1018316261, + 1868021418, + 663786718, + 848938412, + 3244248903, + 1012591784, + 3103336135, + 3575307906, + 1659916419, + 1131078680, + 1987856150, + 1724042665, + 899856967, + 1915782030, + 1627955035, + 2992643426, + 2104408555, + 1524318430, + 984348728, + 159697786, + 34614695, + 3645806633, + 1627676718, + 3109228397, + 1370554227, + 2040434413, + 1553910854, + 1026540519, + 3867928541, + 431000378, + 152448102, + 691960446, + 4289891462, + 1244496583, + 1377202367, + 3895899763, + 2171093596, + 1561993048, + 2252110856, + 1445096275, + 754104914, + 3619386013, + 4050441408, + 1185348608, + 2627412558, + 1407362219, + 1298067971, + 1430755491, + 3844479958, + 3618517063, + 59736333, + 552100241, + 1115491247, + 3654244323, + 2173460454, + 87368716, + 15996722, + 2475381712, + 340016628, + 2175403774, + 4287126805, + 3678850362, + 1521285220, + 3352739985, + 431171765, + 1917217057, + 4121275138, + 2395517077, + 2907776744, + 2660073721, + 3305497794, + 432211328, + 1044661704, + 4197390325, + 2989717690, + 3219938192, + 1660173294, + 1875513745, + 3160138005, + 1114180134, + 1900942360, + 2570014175, + 24250501, + 1793405072, + 3135775169, + 3691054430, + 1788206026, + 3020995948, + 2777266403, + 205746690, + 3201465935, + 3063789329, + 3389233410, + 271265738, + 2424812718, + 98503342, + 78210333, + 292284601, + 484041675, + 1787870872, + 3590556634, + 909930248, + 3100227719, + 3184061262, + 2849510925, + 4245099917, + 4114171861, + 912316607, + 317027237, + 2009246520, + 2384701172, + 4122715055, + 3875346821, + 942300935, + 2733181483, + 3989143815, + 3592896214, + 3414269931, + 1576595481, + 1232805837, + 1325884912, + 3728880291, + 1830083462, + 2629986805, + 2504078240, + 3144670860, + 791765627, + 3973341693, + 727510159, + 4124368071, + 3483950657, + 1873797261, + 2232106957, + 3290136205, + 1671952930, + 2602619280, + 4279386246, + 3213227038, + 1133211672, + 1346699906, + 2482375288, + 3120611106, + 1382570898, + 1392782588, + 3601732170, + 3556657800, + 950094543, + 309672191, + 967236115, + 1920432393, + 4223184000, + 52721445, + 673995032, + 2699927011, + 709861207, + 2067789564, + 1883200727, + 1801477377, + 4141002563, + 3228364903, + 1983198379, + 857706319, + 2332825094, + 4099244351, + 2432098958, + 2290443233, + 2718865090, + 2363532293, + 353871650, + 796248650, + 3974305095, + 3668153133, + 3010220832, + 2959066316, + 3208768685, + 2548031639, + 3959972189, + 3891484042, + 1395441109, + 1327188241, + 2212970407, + 104935438, + 3907210646, + 3979836746, + 1561382645, + 3948002651, + 539174810, + 3413985121, + 1973453103, + 3266894086, + 3042040005, + 3032792813, + 2180991655, + 4030410499, + 3197502884, + 2835948042, + 516998917, + 1663960508, + 2267681469, + 3353519293, + 3822351979, + 3257728779, + 3696655887, + 3335054029, + 198379262, + 1696584968, + 3772977703, + 3065480572, + 2650933534, + 1785757303, + 3072962733, + 4076518900, + 148543891, + 1352493895, + 3427072075, + 188342077, + 3894678911, + 4088737680, + 3372313329, + 3898295191, + 3876976435, + 4127834013, + 420249470, + 482409181, + 3461257073, + 3269303429, + 2096686276, + 690023596, + 3839650956, + 3364817895, + 2369252384, + 2103265158, + 2910720374, + 3109060776, + 1467810067, + 3251904311, + 2354897940, + 2142098261, + 2204140324, + 1742026677, + 348325741, + 2641698273, + 877361566, + 3661595773, + 2821896112, + 2676446591, + 2486102839, + 3130861267, + 2322539433, + 4064710252, + 643945936, + 789074907, + 3220302039, + 2585312592, + 2766177987, + 2144322198, + 564971498, + 1673384970, + 2687000509, + 1521458051, + 1145728523, + 1322176350, + 1723255898, + 2145650481, + 629297689, + 384473232, + 218873646, + 2716275769, + 2903058056, + 140212078, + 2845868511, + 3150674635, + 3645483116, + 137186321, + 955484150, + 2630986764, + 2911774324, + 1245825692, + 2768219144, + 3021370348, + 457212529, + 2193682131, + 2336342678, + 2681588174, + 2026845025, + 1842827026, + 2441577248, + 4065238959, + 4059718007, + 1630822091, + 3375028981, + 1697093919, + 2055417118, + 4109915474, + 3942456752, + 2683612969, + 1774765738, + 3082184909, + 4100697805, + 3298111531, + 850022799, + 2526040893, + 3499006206, + 785798041, + 3015464164, + 2431506236, + 183695714, + 2978011997, + 2439793212, + 1056650917, + 1850519963, + 191087883, + 3382518127, + 119623718, + 1080030509, + 2228599771, + 2615684106, + 1654047798, + 965690995, + 3349645982, + 3575792079, + 2805409564, + 4276231386, + 3400998431, + 3994695720, + 1518430861, + 2194813284, + 3438408690, + 2398095293, + 668507220, + 1514840737, + 2281009195, + 659163477, + 2373796088, + 338144200, + 1268347172, + 1713458620, + 151107799, + 256716722, + 2859653718, + 3405980310, + 486546081, + 1584119621, + 2597514927, + 1468507228, + 2000577689, + 1843808090, + 1988265760, + 1026376315, + 3277345649, + 2678166457, + 696164656, + 3030809659, + 3302361730, + 2422323541, + 936466355, + 985571418, + 1928548593, + 827494664, + 1670498663, + 3418529320, + 1163435614, + 3716546792, + 1735276486, + 3909999896, + 3682056941, + 1420416169, + 1172222024, + 1189979017, + 2180173754, + 1337511313, + 1981310101, + 2745057810, + 2311566500, + 863237296, + 1156374126, + 3158497033, + 3209643569, + 4280019289, + 632432068, + 473685730, + 481475380, + 1791620970, + 3733485341, + 183631927, + 1152014053, + 210005715, + 1546343589, + 2672416322, + 842247535, + 3931493103, + 46628651, + 3955907624, + 3226700527, + 109756030, + 2697267591, + 71378383, + 3654160192, + 1323909946, + 3041013607, + 2102236267, + 3264224103, + 2497052641, + 1482332704, + 2755593445, + 1647613771, + 1079841192, + 3898622670, + 382553417, + 1070663557, + 3453507130, + 3222582748, + 2338624890, + 874037507, + 3363659634, + 4081838729, + 2035791326, + 914705770, + 2252036763, + 348342117, + 2273729525, + 1998981970, + 1550771202, + 1989761642, + 496643065, + 269017536, + 3396188794, + 2632336696, + 946109964, + 3418015393, + 3346831171, + 2438544107, + 591279942, + 4114795049, + 2370717683, + 4095897144, + 576788602, + 3634120391, + 2919133028, + 245561782, + 957213623, + 1292236947, + 2491904575, + 2815239204, + 3923024835, + 1695656764, + 4105132141, + 2586670760, + 485134347, + 1054405079, + 2674237414, + 1776216329, + 155456772, + 700137083, + 1084646940, + 1539957421, + 1554266478, + 2879174963, + ]; + + static final String privateKeyFCM = String.fromCharCodes(List.generate( + _envieddataprivateKeyFCM.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataprivateKeyFCM[i] ^ _enviedkeyprivateKeyFCM[i])); + + static const List _enviedkeywhatsapp = [ + 1793842969, + 2979695104, + 552073010, + 1668071036, + 2757896425, + 1581344975, + 773472335, + 1616631832, + 1449651370, + 3414828039, + 2843499424, + 1830468926, + 2891653828, + 3079700325, + 3527078668, + 2229291198, + 3562135513, + 2772163578, + 1858670456, + 51193159, + 449790980, + 1229902759, + 2139978907, + 258398912, + 3223809443, + 2298512949, + 1635102805, + 3375712085, + 3168807237, + 594649961, + 3289374766, + 3867368905, + 4202143482, + 3071505162, + 1927721702, + 695516413, + 1432465318, + 1225239294, + 67878624, + 4169846636, + 2356401047, + 3353573547, + 321745033, + 513583934, + 171655095, + 2930408540, + 1767025116, + 576247158, + 2220394527, + 2600470306, + 4029672093, + 3556356676, + 1603293260, + 2460012237, + 4197750517, + 393292666, + 953620913, + 716484490, + 2637385041, + 2159698738, + 3179430737, + 1643947214, + 1866881695, + 2503016748, + 3043773092, + 3422328671, + 1684653533, + 1465686760, + 3307419590, + 3572767836, + 1229702234, + 1539144660, + 527945081, + 345164705, + 2389645242, + 2117534473, + 3075657522, + 887980157, + 2982380784, + 3676587774, + 3254679643, + 1819174876, + 129637013, + 2014788662, + 3817149673, + 1867026413, + 811305888, + 595125993, + 3652772980, + 142336218, + 3531097276, + 4006246751, + 3967370500, + 1663706737, + 83146681, + 2166354582, + 2916933061, + 526508897, + 2735525085, + 2815591717, + 2412035693, + 1054886648, + 2328553487, + 2003705192, + 1950345465, + 876893635, + 3899344687, + 3060093431, + 423395087, + 2725935342, + 238247821, + 2043197861, + 1936616979, + 1620213925, + 1853941934, + 2186640340, + 2594762996, + 3505366877, + 3243768794, + 1775071644, + 2432111367, + 819868695, + 2831363539, + 165891404, + 1751389448, + 3731402399, + 1818537722, + 375129131, + 3398266519, + 3528740996, + 663040447, + 354719114, + 71447354, + 557283994, + 2373369852, + 543223698, + 2460580232, + 3894281735, + 1095167230, + 3660744843, + 288606202, + 4224966146, + 4092236737, + 780041457, + 3364381616, + 2292637065, + 3599245883, + 2342754819, + 3473897504, + 1806695205, + 464477110, + 2397293484, + 3258478611, + 526361096, + 1450699111, + 158117824, + 2476522858, + 1061211419, + 2247614670, + 1817304775, + 4258311242, + 1498410948, + 4024258313, + 3376363360, + 1439306411, + 351407984, + 2170321866, + 2143937637, + 91317167, + 2655130680, + 2601485600, + 2614545932, + 405810379, + 1655554511, + 1229412828, + 565809995, + 2893216575, + 2582393985, + 1830463464, + 1831450456, + 4009201662, + 720932633, + 120908142, + 3730597739, + 3769457771, + 3623692340, + 1779289477, + 781678819, + 3219259097, + 586773655, + 70367488, + 2690381339, + 1965848783, + 693898669, + 1623622987, + 3021785898, + 696377969, + 785678098, + 1949522814, + 905984237, + 1708448043, + 136642637, + 1423588436, + 2427508648, + 4058424892, + 2897520513, + 3301054351, + 3690610146, + 3916605147, + 1566674996, + 2313600931, + 3440099349, + 3658534190, + 3084120730, + 2032429252, + 3236671555, + 2739413625, + 1793844070, + 1517468365, + 92152554, + 2416308598, + 3196847680, + 458994295, + 4083969608, + 3463544947, + ]; + + static const List _envieddatawhatsapp = [ + 1793843036, + 2979695169, + 552073075, + 1668070963, + 2757896349, + 1581344941, + 773472277, + 1616631898, + 1449651449, + 3414828114, + 2843499499, + 1830468873, + 2891653872, + 3079700263, + 3527078723, + 2229291204, + 3562135438, + 2772163523, + 1858670337, + 51193125, + 449791027, + 1229902739, + 2139978974, + 258398887, + 3223809506, + 2298512965, + 1635102724, + 3375712012, + 3168807217, + 594649888, + 3289374742, + 3867368945, + 4202143380, + 3071505235, + 1927721618, + 695516344, + 1432465311, + 1225239188, + 67878577, + 4169846533, + 2356401070, + 3353573626, + 321745127, + 513583986, + 171655152, + 2930408492, + 1767025067, + 576247109, + 2220394585, + 2600470387, + 4029672173, + 3556356647, + 1603293305, + 2460012201, + 4197750413, + 393292595, + 953620957, + 716484558, + 2637385014, + 2159698788, + 3179430683, + 1643947188, + 1866881788, + 2503016801, + 3043773149, + 3422328616, + 1684653464, + 1465686698, + 3307419575, + 3572767762, + 1229702147, + 1539144626, + 527945034, + 345164754, + 2389645186, + 2117534585, + 3075657561, + 887980054, + 2982380742, + 3676587677, + 3254679553, + 1819174814, + 129637024, + 2014788711, + 3817149657, + 1867026329, + 811305931, + 595125922, + 3652772865, + 142336137, + 3531097331, + 4006246661, + 3967370566, + 1663706626, + 83146742, + 2166354656, + 2916933000, + 526508859, + 2735525020, + 2815591702, + 2412035641, + 1054886555, + 2328553595, + 2003705088, + 1950345417, + 876893578, + 3899344707, + 3060093365, + 423395143, + 2725935293, + 238247916, + 2043197928, + 1936617029, + 1620213969, + 1853941965, + 2186640262, + 2594762926, + 3505366814, + 3243768745, + 1775071741, + 2432111443, + 819868764, + 2831363485, + 165891359, + 1751389533, + 3731402479, + 1818537628, + 375129191, + 3398266565, + 3528741059, + 663040493, + 354719208, + 71447306, + 557284072, + 2373369748, + 543223774, + 2460580333, + 3894281853, + 1095167152, + 3660744909, + 288606102, + 4224966254, + 4092236721, + 780041384, + 3364381682, + 2292637166, + 3599245910, + 2342754925, + 3473897542, + 1806695239, + 464477150, + 2397293561, + 3258478706, + 526361202, + 1450699060, + 158117786, + 2476522792, + 1061211458, + 2247614614, + 1817304739, + 4258311224, + 1498410992, + 4024258361, + 3376363278, + 1439306438, + 351407934, + 2170321918, + 2143937588, + 91317226, + 2655130719, + 2601485655, + 2614546025, + 405810304, + 1655554557, + 1229412793, + 565809978, + 2893216614, + 2582394064, + 1830463366, + 1831450380, + 4009201578, + 720932695, + 120908059, + 3730597657, + 3769457682, + 3623692384, + 1779289546, + 781678746, + 3219259035, + 586773756, + 70367563, + 2690381377, + 1965848717, + 693898652, + 1623622918, + 3021785970, + 696377916, + 785678181, + 1949522760, + 905984184, + 1708448028, + 136642588, + 1423588410, + 2427508732, + 4058424942, + 2897520592, + 3301054411, + 3690610074, + 3916605075, + 1566675030, + 2313601014, + 3440099395, + 3658534210, + 3084120811, + 2032429219, + 3236671498, + 2739413547, + 1793844018, + 1517468351, + 92152450, + 2416308503, + 3196847663, + 458994200, + 4083969554, + 3463544887, + ]; + + static final String whatsapp = String.fromCharCodes(List.generate( + _envieddatawhatsapp.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatawhatsapp[i] ^ _enviedkeywhatsapp[i])); + + static const List _enviedkeywhatappID = [ + 1819412129, + 3327493801, + 2092517253, + 2395283877, + 3893198638, + 3503604887, + 1154553732, + 1288357486, + 4243965497, + 1722242509, + 3181122895, + 2902152004, + 1711462864, + 3071899946, + 3429761792, + 3309611997, + ]; + + static const List _envieddatawhatappID = [ + 1819412114, + 3327493791, + 2092517308, + 2395283868, + 3893198621, + 3503604910, + 1154553779, + 1288357469, + 4243965455, + 1722242559, + 3181122935, + 2902152053, + 1711462881, + 3071899922, + 3429761847, + 3309612004, + ]; + + static final String whatappID = String.fromCharCodes(List.generate( + _envieddatawhatappID.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatawhatappID[i] ^ _enviedkeywhatappID[i])); + + static const List _enviedkeyserverPHP = [ + 233376009, + 1566551619, + 331136896, + 1216815661, + 3348545035, + 1628229582, + 1995657241, + 2181999862, + 1951700888, + 2914520558, + 2161104576, + 1501169137, + 1375149634, + 3266906497, + 3787386150, + 816242737, + 3926386164, + 3389223109, + 3748498346, + 4247380979, + 3039263969, + 2069342385, + 2132327120, + 4123561875, + 653197231, + 4002794145, + 1466155994, + 3755037342, + ]; + + static const List _envieddataserverPHP = [ + 233376097, + 1566551607, + 331137012, + 1216815709, + 3348545144, + 1628229620, + 1995657270, + 2181999833, + 1951700985, + 2914520478, + 2161104553, + 1501169119, + 1375149617, + 3266906596, + 3787386176, + 816242772, + 3926386054, + 3389223147, + 3748498374, + 4247380890, + 3039263895, + 2069342420, + 2132327167, + 4123561952, + 653197258, + 4002794183, + 1466155967, + 3755037420, + ]; + + static final String serverPHP = String.fromCharCodes(List.generate( + _envieddataserverPHP.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataserverPHP[i] ^ _enviedkeyserverPHP[i])); + + static const List _enviedkeyseferAlexandriaServer = [ + 1086921407, + 33749971, + 1299323737, + 1867562283, + 2725745879, + 215058798, + 298712080, + 3434842082, + 85476533, + 2515542448, + 1597505511, + 1850904501, + 2067434882, + 4078997699, + 1544783480, + 2940658160, + 612752526, + 4086642355, + 804329563, + 842643547, + 3180693037, + 3045223902, + 1106223810, + 4136910478, + 1430798941, + 1839108451, + 502158413, + 657946649, + 3921194686, + 3774568523, + 3078739367, + 4204284264, + 521028757, + 765962122, + ]; + + static const List _envieddataseferAlexandriaServer = [ + 1086921431, + 33749927, + 1299323693, + 1867562331, + 2725745828, + 215058772, + 298712127, + 3434842061, + 85476550, + 2515542485, + 1597505409, + 1850904528, + 2067434992, + 4078997666, + 1544783380, + 2940658069, + 612752630, + 4086642386, + 804329525, + 842643519, + 3180693087, + 3045223863, + 1106223779, + 4136910496, + 1430798894, + 1839108362, + 502158393, + 657946748, + 3921194641, + 3774568504, + 3078739394, + 4204284174, + 521028848, + 765962232, + ]; + + static final String seferAlexandriaServer = String.fromCharCodes( + List.generate( + _envieddataseferAlexandriaServer.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddataseferAlexandriaServer[i] ^ + _enviedkeyseferAlexandriaServer[i])); + + static const List _enviedkeyseferPaymentServer = [ + 768732214, + 1782044716, + 1242343195, + 599532122, + 1181653385, + 1616222116, + 706631781, + 1926324764, + 3590100961, + 718385720, + 373115292, + 1953572398, + 2795340879, + 1698493261, + 583152396, + 1890182344, + 3772704194, + 556817110, + 334161123, + 3268311950, + 2706703664, + 1610555282, + 4096377317, + 1315160758, + 3046746327, + 732560256, + ]; + + static const List _envieddataseferPaymentServer = [ + 768732254, + 1782044760, + 1242343279, + 599532074, + 1181653498, + 1616222110, + 706631754, + 1926324787, + 3590100882, + 718385757, + 373115386, + 1953572427, + 2795340861, + 1698493245, + 583152507, + 1890182374, + 3772704177, + 556817086, + 334161036, + 3268312062, + 2706703647, + 1610555361, + 4096377216, + 1315160784, + 3046746290, + 732560370, + ]; + + static final String seferPaymentServer = String.fromCharCodes( + List.generate( + _envieddataseferPaymentServer.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddataseferPaymentServer[i] ^ _enviedkeyseferPaymentServer[i])); + + static const List _enviedkeyseferCairoServer = [ + 3073257740, + 1302008952, + 542297899, + 3748129686, + 2723833722, + 1975173002, + 3149390824, + 289782306, + 1064768129, + 644127797, + 3248108054, + 2638358548, + 2870995283, + 313981222, + 2138442133, + 886639710, + 2411621102, + 3452465477, + 1581948073, + 3299869757, + 449605680, + 1270795421, + 2638220430, + 2269838457, + 3151657341, + 2621627433, + 1390113920, + 1637966510, + 2477090572, + 3818419085, + 315504448, + 3361813050, + 919653993, + 1820260643, + 3891002182, + 661845594, + 4060691614, + 3878676975, + 2321487167, + 2938001642, + 2827739125, + 3249564106, + 4091313571, + ]; + + static const List _envieddataseferCairoServer = [ + 3073257828, + 1302008844, + 542297951, + 3748129766, + 2723833609, + 1975173040, + 3149390791, + 289782285, + 1064768242, + 644127824, + 3248108132, + 2638358626, + 2870995254, + 313981268, + 2138442171, + 886639661, + 2411621003, + 3452465443, + 1581948108, + 3299869775, + 449605662, + 1270795505, + 2638220519, + 2269838351, + 3151657240, + 2621627398, + 1390114035, + 1637966539, + 2477090666, + 3818419176, + 315504434, + 3361813012, + 919653898, + 1820260687, + 3891002159, + 661845561, + 4060691701, + 3878676928, + 2321487180, + 2938001551, + 2827739027, + 3249564079, + 4091313617, + ]; + + static final String seferCairoServer = String.fromCharCodes( + List.generate( + _envieddataseferCairoServer.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddataseferCairoServer[i] ^ _enviedkeyseferCairoServer[i])); + + static const List _enviedkeyseferGizaServer = [ + 1183664105, + 3712616981, + 850615188, + 586186022, + 1049538427, + 3791291947, + 588468066, + 3410202723, + 1944492552, + 3626804165, + 2355509289, + 2704756690, + 4227380775, + 1907132442, + 3442221577, + 3841071374, + 1429277940, + 1082657021, + 2357495824, + 2341268371, + 2553773200, + 3545366828, + 1047264255, + 3882435335, + 942455229, + 431809903, + 523643076, + 2261709373, + 1661193779, + 2467584001, + ]; + + static const List _envieddataseferGizaServer = [ + 1183664001, + 3712617057, + 850615264, + 586186070, + 1049538312, + 3791291921, + 588468045, + 3410202700, + 1944492655, + 3626804140, + 2355509331, + 2704756659, + 4227380820, + 1907132543, + 3442221679, + 3841071467, + 1429277830, + 1082656979, + 2357495935, + 2341268477, + 2553773308, + 3545366853, + 1047264145, + 3882435426, + 942455186, + 431809820, + 523643041, + 2261709403, + 1661193814, + 2467584115, + ]; + + static final String seferGizaServer = String.fromCharCodes(List.generate( + _envieddataseferGizaServer.length, + (int i) => i, + growable: false, + ).map( + (int i) => _envieddataseferGizaServer[i] ^ _enviedkeyseferGizaServer[i])); + + static const List _enviedkeychatGPTkeySeferNew = [ + 1297435154, + 654002855, + 1779588987, + 3282634969, + 1301979722, + 3975701436, + 345655782, + 1349749531, + 2404583887, + 560991681, + 2596680516, + 3215978169, + 3301508178, + 4286201656, + 3253646576, + 3886158780, + 769086640, + 1779746901, + 2506465089, + 3783440253, + 2144878225, + 2858950572, + 1934026004, + 260097273, + 1105373916, + 478771000, + 4287369645, + 2142027115, + 2208328988, + 528496807, + 3345892157, + 1804654518, + 1109564889, + 72701215, + 3200042259, + 4023225626, + 3333814692, + 2936481284, + 3795649336, + 148882206, + 3353419022, + 2427744117, + 162711774, + 3297309729, + 921780895, + 3729383667, + 1940116294, + 1360112056, + 503923734, + 3258551381, + 124050768, + 3991470922, + 2579994026, + 2638204174, + 2030014935, + 6272770, + 2070747, + 883719464, + ]; + + static const List _envieddatachatGPTkeySeferNew = [ + 1297435240, + 654002880, + 1779588950, + 3282634883, + 1301979774, + 3975701459, + 345655719, + 1349749585, + 2404583852, + 560991616, + 2596680470, + 3215978230, + 3301508149, + 4286201718, + 3253646504, + 3886158806, + 769086679, + 1779746855, + 2506465028, + 3783440180, + 2144878276, + 2858950548, + 1934026098, + 260097202, + 1105373855, + 478770945, + 4287369717, + 2142027033, + 2208329060, + 528496832, + 3345892200, + 1804654579, + 1109564909, + 72701262, + 3200042343, + 4023225704, + 3333814742, + 2936481384, + 3795649353, + 148882223, + 3353419127, + 2427744028, + 162711723, + 3297309785, + 921780911, + 3729383577, + 1940116234, + 1360112011, + 503923826, + 3258551324, + 124050692, + 3991470873, + 2579994098, + 2638204284, + 2030014863, + 6272878, + 2070681, + 883719492, + ]; + + static final String chatGPTkeySeferNew = String.fromCharCodes( + List.generate( + _envieddatachatGPTkeySeferNew.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatachatGPTkeySeferNew[i] ^ _enviedkeychatGPTkeySeferNew[i])); + + static const List _enviedkeycohere = [ + 2846263346, + 1209375899, + 921926163, + 861122420, + 1267353074, + 4127489306, + 3504270502, + 1400187864, + 1514023688, + 3654050103, + 3259743895, + 1546430706, + 841299856, + 3213593265, + 812906699, + 1442134310, + 3055617311, + 3592492504, + 4056319548, + 1650694833, + 2637716127, + 2817352558, + 3452259327, + 605039471, + 3673440630, + 333790363, + 4178513786, + 4023020203, + 743093901, + 389307320, + 242941519, + 892355416, + 3775091845, + 842900567, + 4048999057, + 2269053376, + 796096779, + 1301480278, + 721688597, + 3713590308, + 1827778179, + 875487106, + 3600909625, + 483721521, + 4165893280, + 2379156339, + 3710511826, + ]; + + static const List _envieddatacohere = [ + 2846263411, + 1209375982, + 921926271, + 861122307, + 1267352982, + 4127489314, + 3504270559, + 1400187885, + 1514023771, + 3654050151, + 3259743936, + 1546430621, + 841299939, + 3213593217, + 812906659, + 1442134380, + 3055617399, + 3592492468, + 4056319611, + 1650694785, + 2637716203, + 2817352449, + 3452259242, + 605039369, + 3673440590, + 333790460, + 4178513717, + 4023020227, + 743093976, + 389307373, + 242941501, + 892355368, + 3775091939, + 842900578, + 4048999104, + 2269053426, + 796096863, + 1301480198, + 721688696, + 3713590386, + 1827778244, + 875487194, + 3600909643, + 483721577, + 4165893324, + 2379156273, + 3710511806, + ]; + + static final String cohere = String.fromCharCodes(List.generate( + _envieddatacohere.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatacohere[i] ^ _enviedkeycohere[i])); + + static const List _enviedkeyclaudeAiAPI = [ + 4131489666, + 2165259452, + 2845346099, + 2981133697, + 3704954378, + 1507193410, + 196445514, + 3410652725, + 141352172, + 1811972728, + 705512459, + 1831801987, + 2341365198, + 3369088150, + 1786951065, + 1097883633, + 757379414, + 560635189, + 1329131469, + 803104093, + 1402632910, + 1034441769, + 283917562, + 4207662176, + 3243702378, + 3726190199, + 2822663170, + 4020696522, + 1150887032, + 3074483755, + 1047896673, + 291144645, + 3091318844, + 3763132207, + 934238455, + 592501991, + 4220721937, + 567304901, + 535349385, + 702442603, + 1457973911, + 1333997339, + 2654549676, + 1871547490, + 1982972942, + 265118810, + 4028087444, + 786609233, + 3946375097, + 1734781531, + 4222345314, + 2239839030, + 312083840, + 2522689386, + 548755348, + 1300402719, + 1180221657, + 476380623, + 2522336599, + 3697540394, + 506425126, + 3238151482, + 2176910194, + 477649508, + 3905994510, + 2486576092, + 2026065083, + 3763234771, + 2910279619, + 3056970464, + 1512338710, + 2544532521, + 498897564, + 3641536473, + 1944631323, + 2475511856, + 1257279720, + 1178807909, + 2682455016, + 3035387467, + 658134552, + 1023291979, + 2783382201, + 2363134543, + 904714733, + 103852103, + 2420089577, + 4145163296, + 4001366076, + 121112603, + 3437690877, + 1002286287, + 308250192, + 353426924, + 2650989615, + 1483631504, + 1946989618, + 3918308885, + 3367602157, + 3670219410, + 2538339801, + 1788491585, + 3854086315, + 2898573027, + 1982648414, + 847163354, + 3787243296, + 3993991952, + 2955160710, + 725876103, + 734759720, + 2317250640, + 2182600452, + 4154762703, + 2888719858, + ]; + + static const List _envieddataclaudeAiAPI = [ + 4131489784, + 2165259483, + 2845346078, + 2981133808, + 3704954472, + 1507193377, + 196445543, + 3410652740, + 141352090, + 1811972631, + 705512504, + 1831802042, + 2341365154, + 3369088187, + 1786951137, + 1097883558, + 757379353, + 560635213, + 1329131396, + 803104026, + 1402632889, + 1034441854, + 283917486, + 4207662127, + 3243702288, + 3726190132, + 2822663236, + 4020696456, + 1150886934, + 3074483810, + 1047896632, + 291144598, + 3091318903, + 3763132260, + 934238367, + 592501889, + 4220722024, + 567304895, + 535349462, + 702442528, + 1457973953, + 1333997402, + 2654549722, + 1871547408, + 1982972998, + 265118839, + 4028087458, + 786609166, + 3946375053, + 1734781441, + 4222345255, + 2239839100, + 312083916, + 2522689372, + 548755372, + 1300402776, + 1180221574, + 476380574, + 2522336533, + 3697540450, + 506425108, + 3238151436, + 2176910109, + 477649409, + 3905994586, + 2486576019, + 2026065142, + 3763234718, + 2910279596, + 3056970417, + 1512338787, + 2544532558, + 498897573, + 3641536402, + 1944631406, + 2475511935, + 1257279618, + 1178807823, + 2682454947, + 3035387416, + 658134600, + 1023291924, + 2783382264, + 2363134587, + 904714686, + 103852148, + 2420089530, + 4145163381, + 4001366136, + 121112695, + 3437690783, + 1002286263, + 308250114, + 353426901, + 2650989643, + 1483631589, + 1946989668, + 3918308975, + 3367602050, + 3670219459, + 2538339828, + 1788491532, + 3854086336, + 2898572987, + 1982648321, + 847163279, + 3787243377, + 3993992001, + 2955160791, + 725876191, + 734759770, + 2317250568, + 2182600552, + 4154762637, + 2888719774, + ]; + + static final String claudeAiAPI = String.fromCharCodes(List.generate( + _envieddataclaudeAiAPI.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataclaudeAiAPI[i] ^ _enviedkeyclaudeAiAPI[i])); + + static const List _enviedkeypayPalClientId = [ + 3421699884, + 2705657941, + 487022891, + 3984248249, + 2328904681, + 3885822742, + 3420930535, + 3264555084, + 732736906, + 213767513, + 3094507499, + 2980624808, + 91218360, + 1727574095, + 2532614855, + 1378550900, + 597992186, + 3740308450, + 89891106, + 1998860893, + 754237010, + 7377079, + 1848663582, + 1594098541, + 2710966637, + 1962166415, + 792185201, + 1240811118, + 2544473063, + 2414153168, + 3431248430, + 3888830653, + 4225193163, + 1123136414, + 3985085840, + 2687175171, + 4203868975, + 3526848237, + 1543571245, + 1196935314, + 2496614288, + 2116953668, + 115720969, + 1879493505, + 3754501167, + 3006098519, + 3716336685, + 874718366, + 1006590153, + 3827373254, + 4076660377, + 2997934424, + 1447267292, + 1449991732, + 431000800, + 4216414536, + 1855856651, + 3876864333, + 1522129099, + 3453112731, + 3378256048, + 3928705733, + 2201768161, + 3793455754, + 3675489758, + 4176286142, + 1613231063, + 1911375162, + 2121092415, + 562556003, + 1088200541, + 2523683948, + 77184514, + 1608558091, + 3887542762, + 3569332801, + 1875853468, + 1625541807, + 3018562711, + 1945231113, + 4081662892, + 1159821612, + 3455547693, + 3931528180, + 1868551342, + 2259042253, + 2202260091, + ]; + + static const List _envieddatapayPalClientId = [ + 3421699965, + 2705657876, + 487022951, + 3984248256, + 2328904580, + 3885822842, + 3420930433, + 3264555010, + 732736963, + 213767532, + 3094507455, + 2980624850, + 91218380, + 1727574139, + 2532614836, + 1378550873, + 597992067, + 3740308369, + 89891149, + 1998860839, + 754237028, + 7377089, + 1848663642, + 1594098521, + 2710966578, + 1962166497, + 792185088, + 1240811062, + 2544473047, + 2414153091, + 3431248507, + 3888830665, + 4225193120, + 1123136477, + 3985085903, + 2687175282, + 4203869046, + 3526848187, + 1543571200, + 1196935367, + 2496614391, + 2116953647, + 115721020, + 1879493606, + 3754501198, + 3006098458, + 3716336754, + 874718374, + 1006590099, + 3827373291, + 4076660466, + 2997934399, + 1447267304, + 1449991800, + 431000789, + 4216414587, + 1855856736, + 3876864373, + 1522129054, + 3453112814, + 3378256072, + 3928705690, + 2201768149, + 3793455840, + 3675489691, + 4176286185, + 1613230991, + 1911375230, + 2121092436, + 562555949, + 1088200493, + 2523683892, + 77184581, + 1608558168, + 3887542717, + 3569332753, + 1875853548, + 1625541862, + 3018562797, + 1945231181, + 4081662954, + 1159821684, + 3455547743, + 3931528108, + 1868551362, + 2259042191, + 2202259991, + ]; + + static final String payPalClientId = String.fromCharCodes(List.generate( + _envieddatapayPalClientId.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatapayPalClientId[i] ^ _enviedkeypayPalClientId[i])); + + static const List _enviedkeypayPalSecret = [ + 121165755, + 1630078286, + 1737211075, + 1637386669, + 13716191, + 2950471662, + 1051079565, + 3965657676, + 3320742932, + 3083677180, + 968800573, + 3405798028, + 1331351023, + 2565991939, + 3869177361, + 3216086204, + 4066736060, + 2430655662, + 57150375, + 269987922, + 2544126626, + 4215543828, + 4097892174, + 1738593356, + 2703465053, + 2607827280, + 1109206618, + 2866562579, + 4260359871, + 4021869541, + 2474246835, + 3668453945, + 3402147556, + 2248569444, + 1789853542, + 2823798342, + 2481759251, + 1043821477, + 173776381, + 478654565, + 991387389, + 2287369832, + 1921798374, + 213626855, + 2559535110, + 1272072583, + 3254143429, + 5161082, + 1973907271, + 2565613093, + 3783797477, + 96054033, + 174619207, + 4261596093, + 1699128524, + 2685126863, + 3649927403, + 3726540925, + 3663952131, + 1316273443, + 368786469, + 80602253, + 3444046054, + 3479861766, + 2144548527, + 3163025384, + 2962797859, + 3577493416, + 1141138401, + 239839525, + 744127193, + 2164093100, + 2039878416, + 508090314, + 2382175382, + 4194983077, + 3898019067, + 1410604459, + 3257668586, + 4222177847, + 3752615140, + 644983055, + 382830146, + 3630979793, + 3152539121, + 3962793586, + ]; + + static const List _envieddatapayPalSecret = [ + 121165809, + 1630078220, + 1737211010, + 1637386732, + 13716137, + 2950471583, + 1051079623, + 3965657629, + 3320742995, + 3083677097, + 968800590, + 3405798087, + 1331350955, + 2565991987, + 3869177419, + 3216086230, + 4066736084, + 2430655642, + 57150444, + 269987896, + 2544126663, + 4215543927, + 4097892148, + 1738593332, + 2703465019, + 2607827218, + 1109206556, + 2866562667, + 4260359826, + 4021869526, + 2474246795, + 3668453994, + 3402147456, + 2248569352, + 1789853444, + 2823798287, + 2481759296, + 1043821456, + 173776331, + 478654515, + 991387311, + 2287369765, + 1921798366, + 213626793, + 2559535170, + 1272072673, + 3254143392, + 5161036, + 1973907242, + 2565613135, + 3783797416, + 96054132, + 174619165, + 4261596151, + 1699128484, + 2685126785, + 3649927335, + 3726540855, + 3663952230, + 1316273480, + 368786448, + 80602325, + 3444045953, + 3479861847, + 2144548588, + 3163025305, + 2962797928, + 3577493483, + 1141138345, + 239839569, + 744127115, + 2164093130, + 2039878438, + 508090247, + 2382175484, + 4194983159, + 3898018946, + 1410604422, + 3257668492, + 4222177807, + 3752615100, + 644983165, + 382830106, + 3630979773, + 3152539059, + 3962793502, + ]; + + static final String payPalSecret = String.fromCharCodes(List.generate( + _envieddatapayPalSecret.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatapayPalSecret[i] ^ _enviedkeypayPalSecret[i])); + + static const List _enviedkeygeminiApi = [ + 223111900, + 3327322925, + 1904098812, + 2602619825, + 3339605079, + 526054989, + 278313337, + 2869630502, + 1721997030, + 2715276728, + 3145406489, + 2682533619, + 1183004989, + 3727499938, + 3853073384, + 3612204326, + 3745106684, + 3578513899, + 2789755954, + 3069137050, + 4109517740, + 895537005, + 904901295, + 4036534410, + 638996261, + 179318343, + 1320184843, + 500675349, + 1616703134, + 426210751, + 4079331271, + 189396896, + 192631094, + 3640333089, + 1107408930, + 2083209537, + 2718309932, + 3006793381, + 1118157039, + 3396017793, + 3841677072, + 1240956711, + 1709853059, + 800759106, + 1266123344, + 1443079759, + ]; + + static const List _envieddatageminiApi = [ + 223111821, + 3327322978, + 1904098705, + 2602619840, + 3339605005, + 526054974, + 278313256, + 2869630591, + 1721996939, + 2715276680, + 3145406497, + 2682533509, + 1183005009, + 3727500013, + 3853073305, + 3612204364, + 3745106613, + 3578513884, + 2789755993, + 3069137142, + 4109517818, + 895536935, + 904901321, + 4036534524, + 638996341, + 179318387, + 1320184924, + 500675415, + 1616703192, + 426210810, + 4079331240, + 189396933, + 192631131, + 3640333131, + 1107408965, + 2083209528, + 2718309919, + 3006793372, + 1118157017, + 3396017896, + 3841677128, + 1240956757, + 1709853147, + 800759086, + 1266123282, + 1443079715, + ]; + + static final String geminiApi = String.fromCharCodes(List.generate( + _envieddatageminiApi.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatageminiApi[i] ^ _enviedkeygeminiApi[i])); + + static const List _enviedkeygeminiApiMasa = [ + 2146824880, + 3907550243, + 2903161886, + 3785672320, + 461321014, + 2732161292, + 4101278503, + 4188348806, + 3097765060, + 2840107809, + 4074499765, + 1377687999, + 2466413864, + 4131866855, + 2085971762, + 4291528158, + 586406621, + 1172253824, + 4129699771, + 4001684368, + 13304699, + 1388693678, + 2478131258, + 1930071347, + 3722746620, + 3939759101, + 1802140304, + 3906288734, + 520770620, + 3777786566, + 1532556456, + 2718322361, + 517308172, + 3937157671, + 3195294693, + 1852072784, + 2465473003, + 1057364077, + 1530550642, + 1157768896, + 838941114, + 716159291, + 3129977605, + 2454090027, + 656020204, + 3015116062, + ]; + + static const List _envieddatageminiApiMasa = [ + 2146824929, + 3907550316, + 2903161971, + 3785672433, + 461321068, + 2732161407, + 4101278582, + 4188348879, + 3097765044, + 2840107845, + 4074499832, + 1377687947, + 2466413930, + 4131866805, + 2085971777, + 4291528085, + 586406576, + 1172253921, + 4129699839, + 4001684442, + 13304628, + 1388693758, + 2478131213, + 1930071383, + 3722746534, + 3939758989, + 1802140325, + 3906288755, + 520770655, + 3777786608, + 1532556518, + 2718322414, + 517308266, + 3937157700, + 3195294605, + 1852072807, + 2465472955, + 1057364012, + 1530550558, + 1157768849, + 838941154, + 716159305, + 3129977693, + 2454090055, + 656020142, + 3015116146, + ]; + + static final String geminiApiMasa = String.fromCharCodes(List.generate( + _envieddatageminiApiMasa.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatageminiApiMasa[i] ^ _enviedkeygeminiApiMasa[i])); + + static const List _enviedkeyagoraAppId = [ + 982909115, + 4032014746, + 2667496976, + 1244373814, + 2169549490, + 2513268815, + 2508161066, + 4262625227, + 1093894722, + 1763747356, + 1770864288, + 1378934887, + 3910975307, + 286333664, + 1412833318, + 736382532, + 2647048045, + 2968933242, + 4134348585, + 2526996351, + 4261988531, + 2485258326, + 677404645, + 1947318732, + 2195371670, + 1967723766, + 2804742620, + 2852574734, + 1194486788, + 467783494, + 1174851848, + 2550687044, + 3607336842, + 3890566513, + 3072184807, + 1966246901, + 3746002505, + 414459976, + 1203014288, + ]; + + static const List _envieddataagoraAppId = [ + 982909068, + 4032014763, + 2667497000, + 1244373774, + 2169549442, + 2513268777, + 2508161048, + 4262625185, + 1093894772, + 1763747375, + 1770864278, + 1378934792, + 3910975358, + 286333648, + 1412833311, + 736382510, + 2647048031, + 2968933198, + 4134348624, + 2526996298, + 4261988481, + 2485258351, + 677404625, + 1947318776, + 2195371694, + 1967723718, + 2804742565, + 2852574781, + 1194486836, + 467783475, + 1174851888, + 2550687088, + 3607336882, + 3890566441, + 3072184725, + 1966246829, + 3746002469, + 414459914, + 1203014396, + ]; + + static final String agoraAppId = String.fromCharCodes(List.generate( + _envieddataagoraAppId.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataagoraAppId[i] ^ _enviedkeyagoraAppId[i])); + + static const List _enviedkeyagoraAppCertificate = [ + 148296787, + 1030269029, + 1441602575, + 3812053442, + 1950278356, + 3671561267, + 1434625225, + 1827943176, + 765538776, + 3510473977, + 3534647847, + 3991651439, + 1730649378, + 2192235652, + 1497868681, + 4222456294, + 1419635174, + 3078558415, + 1343057880, + 3963467963, + 4239606087, + 2705073477, + 4069796052, + 2033453495, + 2041090376, + 230773555, + 394941453, + 2603169682, + 1284221495, + 2992890744, + 124758038, + 467387007, + 341677396, + 4166361420, + 1940683495, + 748215012, + 2783096969, + 3303498089, + 742275820, + 1621720979, + ]; + + static const List _envieddataagoraAppCertificate = [ + 148296761, + 1030269012, + 1441602616, + 3812053427, + 1950278381, + 3671561223, + 1434625277, + 1827943293, + 765538796, + 3510473920, + 3534647828, + 3991651414, + 1730649362, + 2192235758, + 1497868769, + 4222456215, + 1419635153, + 3078558458, + 1343057888, + 3963467982, + 4239606134, + 2705073523, + 4069796064, + 2033453454, + 2041090428, + 230773511, + 394941493, + 2603169763, + 1284221445, + 2992890625, + 124758048, + 467386887, + 341677362, + 4166361401, + 1940683455, + 748214934, + 2783097041, + 3303497989, + 742275758, + 1621721087, + ]; + + static final String agoraAppCertificate = String.fromCharCodes( + List.generate( + _envieddataagoraAppCertificate.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddataagoraAppCertificate[i] ^ + _enviedkeyagoraAppCertificate[i])); + + static const List _enviedkeypayPalClientIdLive = [ + 3552726285, + 2580431135, + 2141467714, + 1977667948, + 1697503721, + 1397758048, + 3646243724, + 3886040870, + 4282098554, + 1516286681, + 3899403517, + 959529468, + 3036846974, + 2315036963, + 3713426433, + 2890887741, + 2531903124, + 721530673, + 4108100855, + 1158560523, + 4215626327, + 4086707267, + 239381149, + 4105735368, + 1927091653, + 192987965, + 2662456065, + 3161952659, + 3814724116, + 1538481867, + 6275129, + 2666158292, + 52303665, + 3064532886, + 2887207556, + 3853394648, + 518755327, + 1643163885, + 882952186, + 2614573476, + 3823537516, + 2867017412, + 1374159785, + 3975971167, + 1231003132, + 423235819, + 2836549127, + 2037589140, + 600989228, + 2723944530, + 996747902, + 2686676354, + 3314504667, + 3381757186, + 1613617052, + 539196595, + 3246335736, + 592746814, + 2067366515, + 1033116353, + 2873721425, + 2123513883, + 3897157020, + 4198928116, + 3497306144, + 1869438875, + 3921661566, + 1971604268, + 452087330, + 652709085, + 530077752, + 1788224811, + 1599395528, + 3396125369, + 1044589359, + 1172057857, + 910407299, + 2777323186, + 2371455886, + 2555785932, + 2693487469, + 1986233264, + 3587400517, + 2796334831, + 1253728048, + 1779876709, + 3229508354, + ]; + + static const List _envieddatapayPalClientIdLive = [ + 3552726364, + 2580431173, + 2141467652, + 1977667847, + 1697503619, + 1397757985, + 3646243811, + 3886040956, + 4282098460, + 1516286622, + 3899403401, + 959529362, + 3036846873, + 2315037037, + 3713426546, + 2890887768, + 2531903206, + 721530717, + 4108100763, + 1158560573, + 4215626277, + 4086707312, + 239381246, + 4105735307, + 1927091696, + 192987915, + 2662456153, + 3161952767, + 3814724133, + 1538481848, + 6275183, + 2666158232, + 52303712, + 3064532989, + 2887207658, + 3853394669, + 518755227, + 1643163808, + 882952088, + 2614573533, + 3823537417, + 2867017382, + 1374159809, + 3975971109, + 1231003062, + 423235762, + 2836549170, + 2037589165, + 600989289, + 2723944451, + 996747853, + 2686676458, + 3314504609, + 3381757237, + 1613617093, + 539196619, + 3246335641, + 592746875, + 2067366402, + 1033116292, + 2873721365, + 2123513922, + 3897157068, + 4198928032, + 3497306229, + 1869438941, + 3921661469, + 1971604349, + 452087413, + 652709036, + 530077774, + 1788224846, + 1599395480, + 3396125400, + 1044589438, + 1172057908, + 910407382, + 2777323256, + 2371455940, + 2555785882, + 2693487423, + 1986233320, + 3587400503, + 2796334775, + 1253728092, + 1779876647, + 3229508462, + ]; + + static final String payPalClientIdLive = String.fromCharCodes( + List.generate( + _envieddatapayPalClientIdLive.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatapayPalClientIdLive[i] ^ _enviedkeypayPalClientIdLive[i])); + + static const List _enviedkeypayPalSecretLive = [ + 2030481687, + 2374296424, + 1786325201, + 3827900864, + 2011755744, + 1576804989, + 4106065234, + 151360359, + 2017536624, + 700557338, + 675070335, + 3432919210, + 3698582474, + 1171857885, + 512505249, + 4025333002, + 2024742898, + 2116895516, + 547549038, + 295363405, + 2326440743, + 4074596481, + 1625411968, + 1651924972, + 2662701471, + 1280423674, + 2296129374, + 496548526, + 366509611, + 2740563886, + 2612163806, + 427394664, + 2491424604, + 2951614831, + 168838064, + 54111290, + 1090769287, + 3530866617, + 35882260, + 18199976, + 3463767436, + 2943476326, + 500035527, + 1571743413, + 992732431, + 799490452, + 2823646577, + 40216469, + 2940170304, + 184954509, + 4282949234, + 2772598102, + 558625554, + 1849671575, + 894050496, + 36582234, + 161552723, + 2659773181, + 3663862072, + 2018359548, + 587051423, + 916894767, + 4207278312, + 3355701774, + 2070950420, + 531568126, + 2134881064, + 885934849, + 3934990500, + 993122391, + 3529432859, + 1535952155, + 85660285, + 973589799, + 916107842, + 2705808325, + 3987642436, + 1307329773, + 1434021525, + 248291006, + 3625191388, + 2496189146, + 526077057, + 1211805651, + 979820799, + 4115901212, + 1029148217, + 3290241584, + ]; + + static const List _envieddatapayPalSecretLive = [ + 2030481757, + 2374296377, + 1786325141, + 3827900801, + 2011755700, + 1576804876, + 4106065209, + 151360268, + 2017536542, + 700557406, + 675070233, + 3432919235, + 3698582412, + 1171857837, + 512505316, + 4025333067, + 2024742844, + 2116895530, + 547549022, + 295363334, + 2326440805, + 4074596533, + 1625412080, + 1651924907, + 2662701551, + 1280423614, + 2296129343, + 496548580, + 366509633, + 2740563927, + 2612163759, + 427394602, + 2491424541, + 2951614731, + 168838025, + 54111312, + 1090769407, + 3530866676, + 35882326, + 18200056, + 3463767548, + 2943476252, + 500035472, + 1571743456, + 992732478, + 799490500, + 2823646528, + 40216574, + 2940170355, + 184954565, + 4282949187, + 2772598076, + 558625608, + 1849671679, + 894050449, + 36582192, + 161552701, + 2659773130, + 3663862027, + 2018359481, + 587051479, + 916894812, + 4207278243, + 3355701855, + 2070950522, + 531568031, + 2134881055, + 885934901, + 3934990580, + 993122415, + 3529432939, + 1535952162, + 85660229, + 973589839, + 916107813, + 2705808266, + 3987642410, + 1307329696, + 1434021620, + 248291049, + 3625191308, + 2496189069, + 526077145, + 1211805601, + 979820711, + 4115901296, + 1029148283, + 3290241628, + ]; + + static final String payPalSecretLive = String.fromCharCodes( + List.generate( + _envieddatapayPalSecretLive.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatapayPalSecretLive[i] ^ _enviedkeypayPalSecretLive[i])); + + static const List _enviedkeyintegrationIdPayMob = [ + 3654573150, + 1726293679, + 2947676486, + 2157023955, + 377315424, + 3751620473, + 123442183, + 781919614, + 3351785447, + 1189637498, + 2610557485, + 2489492130, + 75344293, + ]; + + static const List _envieddataintegrationIdPayMob = [ + 3654573166, + 1726293661, + 2947676533, + 2157023972, + 377315414, + 3751620426, + 123442231, + 781919526, + 3351785365, + 1189637410, + 2610557505, + 2489492192, + 75344329, + ]; + + static final String integrationIdPayMob = String.fromCharCodes( + List.generate( + _envieddataintegrationIdPayMob.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddataintegrationIdPayMob[i] ^ + _enviedkeyintegrationIdPayMob[i])); + + static const List _enviedkeypasswordPayMob = [ + 455586774, + 1319198849, + 2688367329, + 4285093273, + 3991230385, + 1888169663, + 3458283361, + 2949993930, + 485515189, + 3920514897, + 624344622, + 1942465452, + 650310738, + 4021059774, + 1090786964, + 2184434844, + 981635995, + 2342210780, + 3867561568, + 1742253967, + 2920680318, + 2330572772, + ]; + + static const List _envieddatapasswordPayMob = [ + 455586737, + 1319198913, + 2688367247, + 4285093362, + 3991230453, + 1888169613, + 3458283330, + 2949993971, + 485515148, + 3920514874, + 624344591, + 1942465476, + 650310678, + 4021059809, + 1090787002, + 2184434923, + 981636035, + 2342210734, + 3867561528, + 1742254051, + 2920680252, + 2330572680, + ]; + + static final String passwordPayMob = String.fromCharCodes(List.generate( + _envieddatapasswordPayMob.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatapasswordPayMob[i] ^ _enviedkeypasswordPayMob[i])); + + static const List _enviedkeyusernamePayMob = [ + 735226781, + 3232807860, + 604641465, + 2603658497, + 831960714, + 2644715423, + 3108564553, + 888477117, + 3400875144, + 817901851, + 484913884, + 3270397590, + 3527485519, + 1372702805, + 1936333875, + 3970994750, + 3167947641, + ]; + + static const List _envieddatausernamePayMob = [ + 735226798, + 3232807811, + 604641418, + 2603658544, + 831960755, + 2644715438, + 3108564601, + 888477065, + 3400875192, + 817901870, + 484913902, + 3270397646, + 3527485501, + 1372702733, + 1936333919, + 3970994812, + 3167947541, + ]; + + static final String usernamePayMob = String.fromCharCodes(List.generate( + _envieddatausernamePayMob.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatausernamePayMob[i] ^ _enviedkeyusernamePayMob[i])); + + static const List _enviedkeypayMobApikey = [ + 2288554765, + 99021556, + 1379082864, + 3641224902, + 1617390932, + 2147021960, + 785487333, + 858280014, + 737909779, + 929875170, + 3972756086, + 485612469, + 3421108523, + 4010096243, + 64260136, + 1894613888, + 3787149752, + 3344674437, + 854275289, + 1976573742, + 2270494605, + 239810333, + 4170960803, + 2350926209, + 2788073045, + 2842168659, + 1187478396, + 2291877331, + 1451515120, + 976186188, + 3288466792, + 2918391322, + 1054032172, + 3631612848, + 2570562905, + 1507096279, + 1568957329, + 2861347782, + 2126215707, + 1271642600, + 3009410419, + 178493041, + 620874867, + 3711808171, + 2493969056, + 4030909934, + 1350497437, + 2734123054, + 768645482, + 3549580818, + 2941994991, + 3126483035, + 1934726425, + 909758111, + 1492783858, + 1103493827, + 2098224472, + 2944369037, + 4029371986, + 3788572137, + 3141935863, + 4131572112, + 3331115354, + 980222396, + 1315356134, + 3818998721, + 2816648721, + 2034937471, + 160324387, + 1976609508, + 1213246212, + 1910474542, + 1177398683, + 2157129451, + 2431024978, + 606165381, + 4097525413, + 3260187395, + 2682525837, + 2234868792, + 1122049514, + 3115849585, + 3433788576, + 3945226751, + 3872653808, + 3588345399, + 44330722, + 3148245917, + 501421260, + 4135023008, + 3359995159, + 1721403393, + 1310284016, + 1575584382, + 4020185764, + 3164585227, + 904832103, + 3737745846, + 1721936888, + 1964930153, + 2309824574, + 4018644885, + 2347934267, + 3302578110, + 148693602, + 2777360975, + 1179923342, + 582459283, + 2605165049, + 1508802989, + 1150742329, + 3442074447, + 2136994736, + 3137392863, + 84173647, + 2773779105, + 4039649431, + 3467094362, + 914576556, + 3420997411, + 262365489, + 424245432, + 1933033876, + 715206461, + 2128227907, + 3528523880, + 655515621, + 942302124, + 3947702053, + 2534699992, + 2830377873, + 1623889930, + 2002636873, + 4272113400, + 394708502, + 23811932, + 490809059, + 3334395671, + 3319809835, + 1013090730, + 443348053, + 1816356813, + 72725651, + 1150267119, + 492520233, + 911614955, + 2617323322, + 2438344147, + 2359404232, + 2278077740, + 2491802776, + 1706761179, + 1996337518, + 3564926735, + 4022679790, + 1311184514, + 1952451092, + 2883315381, + 1343101584, + 723275509, + 1951539390, + 1149312437, + 1112938651, + 4047981700, + 1669035893, + 2390525571, + 3757106778, + 2239198993, + 3383702978, + 908696099, + 3709077244, + 3560935101, + 1459778206, + 1056915818, + 64064107, + 3277119886, + 1792052535, + 2575453249, + 3968966925, + 1299377180, + 2745550106, + 2496848151, + 1376586936, + 1018852387, + 1880066071, + 586356832, + 2156328563, + 1846774569, + 2440121465, + 2323298114, + 4200981759, + 447629554, + 4081049949, + 3555810496, + 1854698230, + 2749732169, + 1294011321, + 2879684, + 2628839113, + 1745369115, + 79000060, + 4119961120, + 2150275563, + 178890822, + 508194240, + 1032693264, + 1762091940, + 3058168058, + 2225041293, + 3411953063, + 256248766, + 2662256645, + 636293703, + 2826287380, + 2619048493, + 3171863243, + 4279962384, + 276212829, + 1984437294, + 3180368442, + 4150462732, + 1807107120, + 874527245, + 3886933849, + 2604832068, + 1845087947, + 191955219, + 1935696233, + 1839548663, + 3304755351, + 2780783422, + 2995577488, + 3479722691, + 2412828850, + 3983823882, + 760349881, + 3136216048, + 1313286025, + 820002687, + 4218634656, + 4156570742, + 2317198155, + 331974873, + 4082744982, + 2033334067, + 1253887459, + 3828824863, + 1509681618, + 2135130800, + 244223328, + 4243440203, + 4170315033, + 1753766115, + 1010156976, + 3376300731, + 1973546264, + 1387451528, + 582839595, + 2302013555, + 632179390, + 2067259020, + 1826567799, + 540364447, + 1459916657, + 1873122319, + 1903890961, + 2089439980, + 987427398, + 2405067238, + 4080331041, + 495170366, + 269747709, + 1562261480, + 2732132835, + 3369938925, + 1438711953, + 1349642243, + 1911877160, + 617763650, + 3972169256, + 2747361227, + 3254961475, + 2440869133, + 2728150260, + 1200952805, + 3323860211, + ]; + + static const List _envieddatapayMobApikey = [ + 2288554816, + 99021488, + 1379082754, + 3641224833, + 1617390885, + 2147022019, + 785487264, + 858279961, + 737909824, + 929875155, + 3972755972, + 485612515, + 3421108570, + 4010096155, + 64260162, + 1894613991, + 3787149791, + 3344674509, + 854275247, + 1976573803, + 2270494685, + 239810393, + 4170960853, + 2350926289, + 2788073023, + 2842168601, + 1187478347, + 2291877285, + 1451515050, + 976186120, + 3288466730, + 2918391391, + 1054032212, + 3631612866, + 2570562838, + 1507096288, + 1568957378, + 2861347829, + 2126215769, + 1271642541, + 3009410353, + 178492950, + 620874753, + 3711808199, + 2493969094, + 4030909883, + 1350497514, + 2734123130, + 768645419, + 3549580833, + 2941994886, + 3126483054, + 1934726475, + 909758193, + 1492783778, + 1103493878, + 2098224386, + 2944369123, + 4029371940, + 3788572038, + 3141935803, + 4131572131, + 3331115287, + 980222350, + 1315356085, + 3818998776, + 2816648803, + 2034937402, + 160324449, + 1976609411, + 1213246326, + 1910474562, + 1177398741, + 2157129407, + 2431024950, + 606165472, + 4097525469, + 3260187467, + 2682525880, + 2234868808, + 1122049470, + 3115849505, + 3433788614, + 3945226696, + 3872653758, + 3588345469, + 44330640, + 3148245995, + 501421237, + 4135022993, + 3359995237, + 1721403492, + 1310283946, + 1575584308, + 4020185810, + 3164585274, + 904832051, + 3737745880, + 1721936847, + 1964930067, + 2309824600, + 4018644898, + 2347934285, + 3302578154, + 148693547, + 2777360907, + 1179923447, + 582459364, + 2605164947, + 1508803045, + 1150742366, + 3442074494, + 2136994803, + 3137392872, + 84173571, + 2773779140, + 4039649518, + 3467094377, + 914576532, + 3420997483, + 262365541, + 424245500, + 1933033965, + 715206515, + 2128227842, + 3528523867, + 655515539, + 942302107, + 3947702129, + 2534699912, + 2830377975, + 1623890030, + 2002636849, + 4272113330, + 394708580, + 23811901, + 490808987, + 3334395686, + 3319809881, + 1013090781, + 443347973, + 1816356768, + 72725699, + 1150267035, + 492520292, + 911614881, + 2617323331, + 2438344105, + 2359404217, + 2278077799, + 2491802845, + 1706761090, + 1996337460, + 3564926826, + 4022679689, + 1311184618, + 1952451173, + 2883315334, + 1343101661, + 723275392, + 1951539442, + 1149312480, + 1112938729, + 4047981762, + 1669035837, + 2390525616, + 3757106715, + 2239199008, + 3383702915, + 908696132, + 3709077172, + 3560935134, + 1459778262, + 1056915803, + 64064094, + 3277119949, + 1792052589, + 2575453304, + 3968967000, + 1299377277, + 2745550144, + 2496848195, + 1376586996, + 1018852460, + 1880066159, + 586356750, + 2156328452, + 1846774553, + 2440121403, + 2323298070, + 4200981659, + 447629448, + 4081049877, + 3555810440, + 1854698116, + 2749732107, + 1294011384, + 2879670, + 2628839072, + 1745369192, + 78999974, + 4119961157, + 2150275481, + 178890771, + 508194189, + 1032693317, + 1762092017, + 3058167936, + 2225041367, + 3411953046, + 256248828, + 2662256747, + 636293637, + 2826287473, + 2619048552, + 3171863202, + 4279962490, + 276212757, + 1984437336, + 3180368500, + 4150462822, + 1807107177, + 874527297, + 3886933815, + 2604832023, + 1845087994, + 191955281, + 1935696188, + 1839548606, + 3304755412, + 2780783475, + 2995577592, + 3479722640, + 2412828895, + 3983823962, + 760349905, + 3136215985, + 1313286072, + 820002634, + 4218634697, + 4156570640, + 2317198083, + 331974816, + 4082745024, + 2033334082, + 1253887400, + 3828824922, + 1509681567, + 2135130872, + 244223287, + 4243440178, + 4170315090, + 1753766063, + 1010157010, + 3376300738, + 1973546349, + 1387451585, + 582839675, + 2302013445, + 632179421, + 2067259076, + 1826567758, + 540364490, + 1459916564, + 1873122371, + 1903890978, + 2089439898, + 987427356, + 2405067167, + 4080331109, + 495170392, + 269747648, + 1562261387, + 2732132757, + 3369938830, + 1438712009, + 1349642353, + 1911877232, + 617763630, + 3972169322, + 2747361191, + 3254961441, + 2440869231, + 2728150166, + 1200952711, + 3323860113, + ]; + + static final String payMobApikey = String.fromCharCodes(List.generate( + _envieddatapayMobApikey.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatapayMobApikey[i] ^ _enviedkeypayMobApikey[i])); + + static const List _enviedkeyintegrationIdPayMobWallet = [ + 1413137455, + 898254321, + 2177459705, + 3072645458, + 1820170071, + 2197507912, + 117696677, + 1351150926, + 3651392903, + 3946798712, + 928177752, + 1620501515, + 1162201864, + ]; + + static const List _envieddataintegrationIdPayMobWallet = [ + 1413137439, + 898254275, + 2177459662, + 3072645477, + 1820170080, + 2197507963, + 117696668, + 1351150870, + 3651393013, + 3946798624, + 928177716, + 1620501577, + 1162201956, + ]; + + static final String integrationIdPayMobWallet = String.fromCharCodes( + List.generate( + _envieddataintegrationIdPayMobWallet.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddataintegrationIdPayMobWallet[i] ^ + _enviedkeyintegrationIdPayMobWallet[i])); + + static const List _enviedkeysmsPasswordEgypt = [ + 182877642, + 162116053, + 3144150019, + 2192521632, + 3078726239, + 628617237, + 3598374899, + 1422188225, + 2405592561, + 2801136078, + 4004604538, + 1874426530, + 1875960650, + 3418924421, + 876935509, + 2604388168, + ]; + + static const List _envieddatasmsPasswordEgypt = [ + 182877568, + 162116092, + 3144150101, + 2192521672, + 3078726242, + 628617316, + 3598374801, + 1422188270, + 2405592497, + 2801136003, + 4004604450, + 1874426576, + 1875960594, + 3418924521, + 876935447, + 2604388132, + ]; + + static final String smsPasswordEgypt = String.fromCharCodes( + List.generate( + _envieddatasmsPasswordEgypt.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatasmsPasswordEgypt[i] ^ _enviedkeysmsPasswordEgypt[i])); + + static const List _enviedkeyocpApimSubscriptionKey = [ + 2414595069, + 881357453, + 2811886322, + 3795850197, + 1418919245, + 3119792422, + 186943801, + 265664303, + 1973937884, + 3434198924, + 3676058486, + 2705361094, + 3314588616, + 1182082916, + 2271931341, + 1919957345, + 1172116628, + 1231830017, + 862957600, + 3141659494, + 2386846607, + 3726068195, + 2750296861, + 2555568196, + 529987068, + 113644863, + 740301871, + 631670019, + 2211800778, + 1751909562, + 1566096200, + 3834424971, + ]; + + static const List _envieddataocpApimSubscriptionKey = [ + 2414595021, + 881357547, + 2811886279, + 3795850161, + 1418919212, + 3119792453, + 186943834, + 265664332, + 1973937848, + 3434199022, + 3676058389, + 2705361059, + 3314588668, + 1182082901, + 2271931390, + 1919957328, + 1172116726, + 1231830064, + 862957633, + 3141659475, + 2386846697, + 3726068186, + 2750296872, + 2555568246, + 529987013, + 113644806, + 740301849, + 631670064, + 2211800826, + 1751909512, + 1566096173, + 3834425016, + ]; + + static final String ocpApimSubscriptionKey = String.fromCharCodes( + List.generate( + _envieddataocpApimSubscriptionKey.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddataocpApimSubscriptionKey[i] ^ + _enviedkeyocpApimSubscriptionKey[i])); + + static const List _enviedkeychatGPTkeySeferNew4 = [ + 1076556633, + 2963087341, + 3996850880, + 736133229, + 2083391885, + 631860030, + 3191908704, + 3580038176, + 3669196509, + 3078267219, + 2170935048, + 3425289401, + 1826201013, + 1391964679, + 4050338086, + 2284609889, + 272223768, + 4034924380, + 771773434, + 691382098, + 3384763695, + 1210074658, + 3737542700, + 795874415, + 2520481719, + 2531161799, + 1532035674, + 3304479058, + 142476670, + 4254358635, + 1807727471, + 3356514599, + 931112425, + 1954700454, + 3091208618, + 3038959884, + 566640323, + 26573218, + 1717059450, + 2298525598, + 1517625648, + 4253189760, + 700894011, + 2924350747, + 2138406976, + 3025390544, + 1698946599, + 1379395357, + 118566879, + 231476294, + 1479980332, + 3169308695, + 490528272, + 725922310, + 3086397863, + 279991260, + 402151131, + 1754887422, + 982253443, + 3552655340, + 371865671, + 2689612609, + 3470419031, + ]; + + static const List _envieddatachatGPTkeySeferNew4 = [ + 1076556579, + 2963087242, + 3996850925, + 736133147, + 2083391969, + 631860055, + 3191908613, + 3580038157, + 3669196527, + 3078267199, + 2170935097, + 3425289443, + 1826201049, + 1391964791, + 4050338142, + 2284609800, + 272223861, + 4034924304, + 771773360, + 691382116, + 3384763736, + 1210074739, + 3737542755, + 795874329, + 2520481749, + 2531161765, + 1532035694, + 3304478982, + 142476560, + 4254358568, + 1807727446, + 3356514687, + 931112347, + 1954700510, + 3091208653, + 3038959961, + 566640262, + 26573275, + 1717059372, + 2298525647, + 1517625721, + 4253189877, + 700893965, + 2924350799, + 2138406921, + 3025390484, + 1698946579, + 1379395436, + 118566799, + 231476338, + 1479980394, + 3169308738, + 490528325, + 725922423, + 3086397896, + 279991183, + 402151150, + 1754887334, + 982253553, + 3552655284, + 371865643, + 2689612547, + 3470419003, + ]; + + static final String chatGPTkeySeferNew4 = String.fromCharCodes( + List.generate( + _envieddatachatGPTkeySeferNew4.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatachatGPTkeySeferNew4[i] ^ + _enviedkeychatGPTkeySeferNew4[i])); + + static const List _enviedkeyanthropicAIkeySeferNew = [ + 3497607593, + 2340598064, + 1262607821, + 565891647, + 3746086673, + 4226120506, + 3533229263, + 1265467964, + 1805177012, + 375206222, + 1205414190, + 1589033804, + 2957731336, + 251111401, + 300352762, + 971190292, + 165378315, + 180421589, + 2498489434, + 271619944, + 4027613759, + 3152936729, + 4293000363, + 4047303899, + 721987091, + 1945831717, + 487668300, + 958684386, + 3048525290, + 583914267, + 3948826816, + 1147224384, + 11730391, + 3408113444, + 1165476622, + 1324843187, + 2904161174, + 1066334824, + 3472421579, + 3866691095, + 957207598, + 1359260716, + 898571805, + 1658525385, + 3476539724, + 1854197051, + 1927574239, + 371396213, + 2776052536, + 501553212, + 581863247, + 4188546243, + 2293407257, + 3405259633, + 463115780, + 3470969446, + 527942819, + 1211438252, + 1309032602, + 375510161, + 3051306551, + 1665084745, + 3666305438, + 345147658, + 2282310515, + 1286203917, + 2113155411, + 4282979471, + 394325385, + 3992158732, + 935801107, + 346276638, + 439947739, + 1487007136, + 1544596163, + 1932454069, + 3417583390, + 2827628785, + 1489482874, + 2583490175, + 2578164134, + 3994046976, + 2882095989, + 2893788550, + 3625013441, + 1394658830, + 2171262927, + 1731894667, + 1491221739, + 4066090668, + 210415079, + 1347650176, + 450661996, + 3143646300, + 3222623393, + 496573453, + 3636174320, + 2816243210, + 2023062957, + 2555119348, + 255887650, + 768360210, + 872971978, + 2262564598, + 3341469319, + 3284443495, + 3177589200, + 692016282, + 270380105, + 3637537557, + 1589396004, + 3575714188, + 3604479021, + 2982744586, + 1689906383, + ]; + + static const List _envieddataanthropicAIkeySeferNew = [ + 3497607635, + 2340598103, + 1262607840, + 565891662, + 3746086771, + 4226120537, + 3533229282, + 1265467981, + 1805177026, + 375206177, + 1205414173, + 1589033845, + 2957731365, + 251111300, + 300352660, + 971190304, + 165378397, + 180421553, + 2498489367, + 271619897, + 4027613706, + 3152936823, + 4293000414, + 4047303825, + 721987190, + 1945831788, + 487668245, + 958684298, + 3048525223, + 583914325, + 3948826868, + 1147224336, + 11730323, + 3408113533, + 1165476732, + 1324843140, + 2904161255, + 1066334727, + 3472421555, + 3866691108, + 957207555, + 1359260760, + 898571823, + 1658525344, + 3476539773, + 1854197111, + 1927574199, + 371396162, + 2776052569, + 501553266, + 581863195, + 4188546183, + 2293407359, + 3405259560, + 463115842, + 3470969419, + 527942884, + 1211438282, + 1309032610, + 375510246, + 3051306591, + 1665084700, + 3666305492, + 345147728, + 2282310448, + 1286204030, + 2113155431, + 4282979512, + 394325452, + 3992158825, + 935801206, + 346276722, + 439947664, + 1487007182, + 1544596219, + 1932454122, + 3417583435, + 2827628690, + 1489482775, + 2583490090, + 2578164203, + 3994047085, + 2882095900, + 2893788629, + 3625013389, + 1394658927, + 2171262889, + 1731894715, + 1491221694, + 4066090726, + 210414976, + 1347650224, + 450661928, + 3143646250, + 3222623476, + 496573537, + 3636174241, + 2816243320, + 2023063017, + 2555119232, + 255887631, + 768360229, + 872972028, + 2262564533, + 3341469397, + 3284443413, + 3177589179, + 692016331, + 270380056, + 3637537613, + 1589396054, + 3575714260, + 3604479041, + 2982744648, + 1689906339, + ]; + + static final String anthropicAIkeySeferNew = String.fromCharCodes( + List.generate( + _envieddataanthropicAIkeySeferNew.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddataanthropicAIkeySeferNew[i] ^ + _enviedkeyanthropicAIkeySeferNew[i])); + + static const List _enviedkeyllama3Key = [ + 885088594, + 2029043020, + 471244066, + 106289035, + 4150241905, + 2162869705, + 2535617460, + 2791378646, + 3599865233, + 11829306, + 3723821367, + 897214443, + 2346921271, + 620796019, + 2157117439, + 1088999473, + 1355091641, + 3547099981, + 1805725306, + 3681386991, + 4237192823, + 2429376902, + 1329080405, + 2547249326, + 1586537703, + 2923317113, + 4289190607, + 2652587145, + 2323377003, + 2865396422, + 2052834529, + 3754568014, + 1627697854, + 779921213, + 3298031603, + 333058013, + 2244345759, + 3388336537, + 3040084026, + 69525403, + 2290723667, + 3368367523, + 2488957174, + 4035197742, + 1771564708, + 2654793947, + 2577738857, + 3927374704, + 476796961, + 1808037711, + 3139261084, + 1092266942, + 2441768177, + 2389431230, + 3749491302, + 4022985518, + 2208437853, + 3340787371, + 27458753, + 1215398584, + 865432840, + 31304311, + 57686919, + ]; + + static const List _envieddatallama3Key = [ + 885088569, + 2029042998, + 471244101, + 106289108, + 4150241796, + 2162869661, + 2535617516, + 2791378607, + 3599865250, + 11829343, + 3723821326, + 897214383, + 2346921333, + 620795921, + 2157117372, + 1088999520, + 1355091592, + 3547099915, + 1805725204, + 3681386914, + 4237192752, + 2429377003, + 1329080365, + 2547249399, + 1586537616, + 2923317037, + 4289190532, + 2652587248, + 2323376920, + 2865396414, + 2052834520, + 3754567963, + 1627697901, + 779921164, + 3298031505, + 333057960, + 2244345837, + 3388336609, + 3040084080, + 69525489, + 2290723687, + 3368367557, + 2488957104, + 4035197785, + 1771564779, + 2654793905, + 2577738764, + 3927374660, + 476797037, + 1808037653, + 3139261150, + 1092266987, + 2441768119, + 2389431285, + 3749491244, + 4022985597, + 2208437868, + 3340787443, + 27458739, + 1215398624, + 865432932, + 31304245, + 57687019, + ]; + + static final String llama3Key = String.fromCharCodes(List.generate( + _envieddatallama3Key.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatallama3Key[i] ^ _enviedkeyllama3Key[i])); + + static const List _enviedkeypayMobOutClientSecrret = [ + 4264988709, + 3646168072, + 3380432823, + 1202916749, + 188891197, + 2348055028, + 980374865, + 691847699, + 858619970, + 236163923, + 983512430, + 1173363436, + 2588752223, + 1850955507, + 2940315249, + 3012903707, + 3454704114, + 3679631406, + 1336038420, + 1861903658, + 1061219879, + 3511339279, + 465062838, + 1995684868, + 166723696, + 2714471717, + 2750986828, + 3271474652, + 453494562, + 3134765296, + 2961820378, + 3255418231, + 1527579838, + 1503229545, + 865486792, + 4016651235, + 1193085733, + 4013525992, + 3996077619, + 987541940, + 90574541, + 1343106639, + 4020388508, + 738850202, + 321279576, + 2278021266, + 964616123, + 848235473, + 2268364926, + 628132074, + 519294312, + 851646420, + 768312856, + 2658302388, + 1925598342, + 2547803291, + 3802816604, + 991707138, + 3036080356, + 1794174250, + 642074119, + 69309849, + 1079636780, + 3185344540, + 2412187710, + 4131118941, + 2720338736, + 1171166020, + 4284190285, + 4293720329, + 2949473096, + 4012259445, + 1771814354, + 4253311796, + 55319254, + 1295125115, + 3305444413, + 1795046677, + 799432192, + 453289034, + 1185735862, + 4229905307, + 3858769716, + 198473083, + 1396343935, + 2889162676, + 3788233503, + 1272897642, + 4072483666, + 4139541119, + 3224656612, + 2978560105, + 2199000949, + 3875281074, + 190782812, + 81611089, + 3335432250, + 696827626, + 312099149, + 4261642655, + 4052447067, + 3435334467, + 2730833303, + 112962881, + 3837714402, + 2324184634, + 3619344500, + 711843341, + 3625049384, + 1378545021, + 3368427889, + 2585099402, + 41176282, + 328886374, + 1501826592, + 3092199643, + 303692997, + 2178944930, + 2809314240, + 4202936697, + 2552084579, + 2128830007, + 2503255561, + 1271344259, + 4003981504, + 2891561291, + 2510780511, + 3887504346, + 2526998922, + 2771081782, + 3660656166, + 1610615192, + 2472001617, + 4213066156, + 3058810271, + ]; + + static const List _envieddatapayMobOutClientSecrret = [ + 4264988765, + 3646168177, + 3380432861, + 1202916839, + 188891247, + 2348054936, + 980374842, + 691847794, + 858619946, + 236163865, + 983512355, + 1173363420, + 2588752135, + 1850955408, + 2940315202, + 3012903715, + 3454704037, + 3679631428, + 1336038485, + 1861903706, + 1061219940, + 3511339328, + 465062878, + 1995684924, + 166723602, + 2714471763, + 2750986795, + 3271474576, + 453494555, + 3134765187, + 2961820342, + 3255418161, + 1527579854, + 1503229479, + 865486764, + 4016651182, + 1193085724, + 4013525937, + 3996077654, + 987542007, + 90574520, + 1343106678, + 4020388573, + 738850290, + 321279508, + 2278021347, + 964616153, + 848235454, + 2268364853, + 628132007, + 519294264, + 851646368, + 768312949, + 2658302439, + 1925598448, + 2547803384, + 3802816622, + 991707212, + 3036080349, + 1794174309, + 642074163, + 69309933, + 1079636852, + 3185344612, + 2412187768, + 4131118865, + 2720338790, + 1171166070, + 4284190215, + 4293720392, + 2949473054, + 4012259395, + 1771814305, + 4253311808, + 55319188, + 1295125032, + 3305444457, + 1795046740, + 799432263, + 453288972, + 1185735921, + 4229905368, + 3858769762, + 198472974, + 1396343837, + 2889162739, + 3788233594, + 1272897628, + 4072483615, + 4139541041, + 3224656532, + 2978560010, + 2199000898, + 3875281151, + 190782758, + 81611035, + 3335432276, + 696827568, + 312099198, + 4261642700, + 4052447026, + 3435334423, + 2730833313, + 112962822, + 3837714322, + 2324184667, + 3619344386, + 711843407, + 3625049415, + 1378544958, + 3368427837, + 2585099485, + 41176241, + 328886323, + 1501826646, + 3092199565, + 303692967, + 2178944966, + 2809314195, + 4202936637, + 2552084482, + 2128830074, + 2503255609, + 1271344377, + 4003981448, + 2891561277, + 2510780458, + 3887504280, + 2526998981, + 2771081838, + 3660656212, + 1610615232, + 2472001597, + 4213066222, + 3058810355, + ]; + + static final String payMobOutClientSecrret = String.fromCharCodes( + List.generate( + _envieddatapayMobOutClientSecrret.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatapayMobOutClientSecrret[i] ^ + _enviedkeypayMobOutClientSecrret[i])); + + static const List _enviedkeypayMobOutClient_id = [ + 1277710166, + 3570887466, + 3300596234, + 3946106165, + 2491202833, + 1455847098, + 3705885436, + 209105712, + 734539831, + 2504601961, + 3463065390, + 24500048, + 135958795, + 3182539427, + 2539508928, + 926247052, + 811539137, + 3915063505, + 1600374961, + 1779440534, + 1118002215, + 1881039676, + 2188534408, + 1229554472, + 3010114338, + 637363783, + 3231531923, + 3202961066, + 2261292633, + 4151812925, + 3752840036, + 4215950647, + 3121405040, + 2089005472, + 3542781189, + 208084763, + 3546830170, + 1060027583, + 1403716561, + 2333828858, + 4263593250, + 3919363206, + 1976159982, + 799681614, + 3137082410, + 2016555878, + 697118340, + ]; + + static const List _envieddatapayMobOutClient_id = [ + 1277710092, + 3570887450, + 3300596287, + 3946106176, + 2491202917, + 1455847054, + 3705885380, + 209105748, + 734539873, + 2504601858, + 3463065413, + 24499971, + 135958841, + 3182539460, + 2539508873, + 926247102, + 811539131, + 3915063476, + 1600375007, + 1779440592, + 1118002273, + 1881039711, + 2188534467, + 1229554523, + 3010114372, + 637363715, + 3231531992, + 3202961100, + 2261292561, + 4151812988, + 3752839985, + 4215950599, + 3121404967, + 2089005541, + 3542781257, + 208084842, + 3546830097, + 1060027590, + 1403716507, + 2333828810, + 4263593326, + 3919363294, + 1976159900, + 799681558, + 3137082438, + 2016555812, + 697118440, + ]; + + static final String payMobOutClient_id = String.fromCharCodes( + List.generate( + _envieddatapayMobOutClient_id.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatapayMobOutClient_id[i] ^ _enviedkeypayMobOutClient_id[i])); + + static const List _enviedkeypayMobOutPassword = [ + 1706063984, + 1969680724, + 68062376, + 2896156483, + 1498432991, + 4275012347, + 965427005, + 3081980774, + 2457192874, + 3211472108, + 1543033645, + 425244421, + 1733608295, + 3092152787, + 3120368766, + 3841960491, + 2474388827, + 4269766308, + 3903459638, + 460952430, + 4193866642, + 708981423, + 2457676098, + 1415795025, + 459092326, + 1283158809, + 2410763725, + 1200198681, + 3508884257, + 707325897, + 174438679, + 2666306102, + ]; + + static const List _envieddatapayMobOutPassword = [ + 1706063924, + 1969680742, + 68062418, + 2896156425, + 1498432921, + 4275012227, + 965427030, + 3081980707, + 2457192841, + 3211472032, + 1543033699, + 425244526, + 1733608276, + 3092152741, + 3120368644, + 3841960472, + 2474388835, + 4269766366, + 3903459588, + 460952330, + 4193866699, + 708981463, + 2457676082, + 1415794975, + 459092224, + 1283158862, + 2410763669, + 1200198763, + 3508884345, + 707325861, + 174438741, + 2666306138, + ]; + + static final String payMobOutPassword = String.fromCharCodes( + List.generate( + _envieddatapayMobOutPassword.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatapayMobOutPassword[i] ^ _enviedkeypayMobOutPassword[i])); + + static const List _enviedkeypayMobOutUserName = [ + 979111844, + 855161253, + 3547697110, + 3333900560, + 595342184, + 3063681166, + 3673923474, + 1052959906, + 2912271237, + 2658978493, + 4248499936, + 2174942116, + 182184572, + 737370897, + 2195848513, + 731565787, + 401446721, + 3124102037, + 1517816789, + 4166303242, + 3342050373, + 3196365210, + 3339925039, + 3455638556, + ]; + + static const List _envieddatapayMobOutUserName = [ + 979111902, + 855161295, + 3547697059, + 3333900666, + 595342084, + 3063681233, + 3673923555, + 1052959956, + 2912271338, + 2658978530, + 4248499846, + 2174942163, + 182184471, + 737371003, + 2195848487, + 731565756, + 401446699, + 3124102137, + 1517816717, + 4166303352, + 3342050333, + 3196365302, + 3339925101, + 3455638640, + ]; + + static final String payMobOutUserName = String.fromCharCodes( + List.generate( + _envieddatapayMobOutUserName.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatapayMobOutUserName[i] ^ _enviedkeypayMobOutUserName[i])); + + static const List _enviedkeyA = [4070300691]; + + static const List _envieddataA = [4070300738]; + + static final String A = String.fromCharCodes(List.generate( + _envieddataA.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataA[i] ^ _enviedkeyA[i])); + + static const List _enviedkeyB = [1084207557]; + + static const List _envieddataB = [1084207517]; + + static final String B = String.fromCharCodes(List.generate( + _envieddataB.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataB[i] ^ _enviedkeyB[i])); + + static const List _enviedkeyC = [3054985261]; + + static const List _envieddataC = [3054985323]; + + static final String C = String.fromCharCodes(List.generate( + _envieddataC.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataC[i] ^ _enviedkeyC[i])); + + static const List _enviedkeyD = [3115376077]; + + static const List _envieddataD = [3115376020]; + + static final String D = String.fromCharCodes(List.generate( + _envieddataD.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataD[i] ^ _enviedkeyD[i])); + + static const List _enviedkeyE = [6624674]; + + static const List _envieddataE = [6624744]; + + static final String E = String.fromCharCodes(List.generate( + _envieddataE.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataE[i] ^ _enviedkeyE[i])); + + static const List _enviedkeyF = [1354559357]; + + static const List _envieddataF = [1354559272]; + + static final String F = String.fromCharCodes(List.generate( + _envieddataF.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataF[i] ^ _enviedkeyF[i])); + + static const List _enviedkeyG = [3789449009]; + + static const List _envieddataG = [3789449082]; + + static final String G = String.fromCharCodes(List.generate( + _envieddataG.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataG[i] ^ _enviedkeyG[i])); + + static const List _enviedkeyH = [3797578577]; + + static const List _envieddataH = [3797578502]; + + static final String H = String.fromCharCodes(List.generate( + _envieddataH.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataH[i] ^ _enviedkeyH[i])); + + static const List _enviedkeyI = [2380101037]; + + static const List _envieddataI = [2380101090]; + + static final String I = String.fromCharCodes(List.generate( + _envieddataI.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataI[i] ^ _enviedkeyI[i])); + + static const List _enviedkeyJ = [1110014504]; + + static const List _envieddataJ = [1110014573]; + + static final String J = String.fromCharCodes(List.generate( + _envieddataJ.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataJ[i] ^ _enviedkeyJ[i])); + + static const List _enviedkeyK = [4173176877]; + + static const List _envieddataK = [4173176938]; + + static final String K = String.fromCharCodes(List.generate( + _envieddataK.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataK[i] ^ _enviedkeyK[i])); + + static const List _enviedkeyL = [1499334736]; + + static const List _envieddataL = [1499334658]; + + static final String L = String.fromCharCodes(List.generate( + _envieddataL.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataL[i] ^ _enviedkeyL[i])); + + static const List _enviedkeyM = [2674591645]; + + static const List _envieddataM = [2674591699]; + + static final String M = String.fromCharCodes(List.generate( + _envieddataM.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataM[i] ^ _enviedkeyM[i])); + + static const List _enviedkeyN = [304791608]; + + static const List _envieddataN = [304791674]; + + static final String N = String.fromCharCodes(List.generate( + _envieddataN.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataN[i] ^ _enviedkeyN[i])); + + static const List _enviedkeyO = [3693551577]; + + static const List _envieddataO = [3693551504]; + + static final String O = String.fromCharCodes(List.generate( + _envieddataO.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataO[i] ^ _enviedkeyO[i])); + + static const List _enviedkeyP = [4224688067]; + + static const List _envieddataP = [4224688021]; + + static final String P = String.fromCharCodes(List.generate( + _envieddataP.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataP[i] ^ _enviedkeyP[i])); + + static const List _enviedkeyQ = [2827380783]; + + static const List _envieddataQ = [2827380846]; + + static final String Q = String.fromCharCodes(List.generate( + _envieddataQ.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataQ[i] ^ _enviedkeyQ[i])); + + static const List _enviedkeyR = [582702531]; + + static const List _envieddataR = [582702479]; + + static final String R = String.fromCharCodes(List.generate( + _envieddataR.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataR[i] ^ _enviedkeyR[i])); + + static const List _enviedkeyS = [3082986447]; + + static const List _envieddataS = [3082986389]; + + static final String S = String.fromCharCodes(List.generate( + _envieddataS.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataS[i] ^ _enviedkeyS[i])); + + static const List _enviedkeyT = [1828852022]; + + static const List _envieddataT = [1828852085]; + + static final String T = String.fromCharCodes(List.generate( + _envieddataT.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataT[i] ^ _enviedkeyT[i])); + + static const List _enviedkeyU = [2605092056]; + + static const List _envieddataU = [2605091984]; + + static final String U = String.fromCharCodes(List.generate( + _envieddataU.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataU[i] ^ _enviedkeyU[i])); + + static const List _enviedkeyV = [566737383]; + + static const List _envieddataV = [566737335]; + + static final String V = String.fromCharCodes(List.generate( + _envieddataV.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataV[i] ^ _enviedkeyV[i])); + + static const List _enviedkeyW = [2482454634]; + + static const List _envieddataW = [2482454590]; + + static final String W = String.fromCharCodes(List.generate( + _envieddataW.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataW[i] ^ _enviedkeyW[i])); + + static const List _enviedkeyX = [2686680474]; + + static const List _envieddataX = [2686680542]; + + static final String X = String.fromCharCodes(List.generate( + _envieddataX.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataX[i] ^ _enviedkeyX[i])); + + static const List _enviedkeyY = [3902863251]; + + static const List _envieddataY = [3902863296]; + + static final String Y = String.fromCharCodes(List.generate( + _envieddataY.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataY[i] ^ _enviedkeyY[i])); + + static const List _enviedkeyZ = [2832255177]; + + static const List _envieddataZ = [2832255108]; + + static final String Z = String.fromCharCodes(List.generate( + _envieddataZ.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataZ[i] ^ _enviedkeyZ[i])); + + static const List _enviedkeya = [3933644150]; + + static const List _envieddataa = [3933644039]; + + static final String a = String.fromCharCodes(List.generate( + _envieddataa.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataa[i] ^ _enviedkeya[i])); + + static const List _enviedkeyb = [884281895]; + + static const List _envieddatab = [884281951]; + + static final String b = String.fromCharCodes(List.generate( + _envieddatab.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatab[i] ^ _enviedkeyb[i])); + + static const List _enviedkeyc = [4285848867]; + + static const List _envieddatac = [4285848901]; + + static final String c = String.fromCharCodes(List.generate( + _envieddatac.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatac[i] ^ _enviedkeyc[i])); + + static const List _enviedkeyd = [325872292]; + + static const List _envieddatad = [325872349]; + + static final String d = String.fromCharCodes(List.generate( + _envieddatad.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatad[i] ^ _enviedkeyd[i])); + + static const List _enviedkeye = [551888213]; + + static const List _envieddatae = [551888191]; + + static final String e = String.fromCharCodes(List.generate( + _envieddatae.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatae[i] ^ _enviedkeye[i])); + + static const List _enviedkeyf = [3390312645]; + + static const List _envieddataf = [3390312624]; + + static final String f = String.fromCharCodes(List.generate( + _envieddataf.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataf[i] ^ _enviedkeyf[i])); + + static const List _enviedkeyg = [1523644267]; + + static const List _envieddatag = [1523644160]; + + static final String g = String.fromCharCodes(List.generate( + _envieddatag.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatag[i] ^ _enviedkeyg[i])); + + static const List _enviedkeyh = [1027626612]; + + static const List _envieddatah = [1027626499]; + + static final String h = String.fromCharCodes(List.generate( + _envieddatah.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatah[i] ^ _enviedkeyh[i])); + + static const List _enviedkeyi = [3972156524]; + + static const List _envieddatai = [3972156419]; + + static final String i = String.fromCharCodes(List.generate( + _envieddatai.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatai[i] ^ _enviedkeyi[i])); + + static const List _enviedkeyj = [3652219750]; + + static const List _envieddataj = [3652219651]; + + static final String j = String.fromCharCodes(List.generate( + _envieddataj.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataj[i] ^ _enviedkeyj[i])); + + static const List _enviedkeyk = [1892242618]; + + static const List _envieddatak = [1892242653]; + + static final String k = String.fromCharCodes(List.generate( + _envieddatak.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatak[i] ^ _enviedkeyk[i])); + + static const List _enviedkeyl = [4139038360]; + + static const List _envieddatal = [4139038442]; + + static final String l = String.fromCharCodes(List.generate( + _envieddatal.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatal[i] ^ _enviedkeyl[i])); + + static const List _enviedkeym = [1935902723]; + + static const List _envieddatam = [1935902829]; + + static final String m = String.fromCharCodes(List.generate( + _envieddatam.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatam[i] ^ _enviedkeym[i])); + + static const List _enviedkeyn = [454391326]; + + static const List _envieddatan = [454391420]; + + static final String n = String.fromCharCodes(List.generate( + _envieddatan.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatan[i] ^ _enviedkeyn[i])); + + static const List _enviedkeyo = [1549454828]; + + static const List _envieddatao = [1549454725]; + + static final String o = String.fromCharCodes(List.generate( + _envieddatao.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatao[i] ^ _enviedkeyo[i])); + + static const List _enviedkeyp = [3208483522]; + + static const List _envieddatap = [3208483508]; + + static final String p = String.fromCharCodes(List.generate( + _envieddatap.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatap[i] ^ _enviedkeyp[i])); + + static const List _enviedkeyq = [227736950]; + + static const List _envieddataq = [227736855]; + + static final String q = String.fromCharCodes(List.generate( + _envieddataq.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataq[i] ^ _enviedkeyq[i])); + + static const List _enviedkeyr = [3723456175]; + + static const List _envieddatar = [3723456195]; + + static final String r = String.fromCharCodes(List.generate( + _envieddatar.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatar[i] ^ _enviedkeyr[i])); + + static const List _enviedkeys = [698669951]; + + static const List _envieddatas = [698669829]; + + static final String s = String.fromCharCodes(List.generate( + _envieddatas.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatas[i] ^ _enviedkeys[i])); + + static const List _enviedkeyt = [2925574026]; + + static const List _envieddatat = [2925574121]; + + static final String t = String.fromCharCodes(List.generate( + _envieddatat.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatat[i] ^ _enviedkeyt[i])); + + static const List _enviedkeyu = [766142683]; + + static const List _envieddatau = [766142643]; + + static final String u = String.fromCharCodes(List.generate( + _envieddatau.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatau[i] ^ _enviedkeyu[i])); + + static const List _enviedkeyv = [864666963]; + + static const List _envieddatav = [864666915]; + + static final String v = String.fromCharCodes(List.generate( + _envieddatav.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatav[i] ^ _enviedkeyv[i])); + + static const List _enviedkeyw = [2272854285]; + + static const List _envieddataw = [2272854393]; + + static final String w = String.fromCharCodes(List.generate( + _envieddataw.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataw[i] ^ _enviedkeyw[i])); + + static const List _enviedkeyx = [1538775448]; + + static const List _envieddatax = [1538775548]; + + static final String x = String.fromCharCodes(List.generate( + _envieddatax.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatax[i] ^ _enviedkeyx[i])); + + static const List _enviedkeyy = [1867877966]; + + static const List _envieddatay = [1867877949]; + + static final String y = String.fromCharCodes(List.generate( + _envieddatay.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatay[i] ^ _enviedkeyy[i])); + + static const List _enviedkeyz = [2379433934]; + + static const List _envieddataz = [2379433891]; + + static final String z = String.fromCharCodes(List.generate( + _envieddataz.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataz[i] ^ _enviedkeyz[i])); + + static const List _enviedkeykeyOfApp = [ + 3703376563, + 1126704269, + 3589076024, + 2257760945, + 2714219593, + 66002768, + 2508345102, + 2625987895, + 1672280462, + 1959184026, + 4215276535, + 1001843470, + 4154811221, + 1947813524, + 4175333798, + 4264094942, + 2714313863, + 28573172, + 303569854, + 2907929024, + 1446736686, + 1355382816, + 1204633338, + 335451250, + 2458769150, + 1798378055, + 3766825897, + 3448538967, + 4175183517, + 1408526284, + 3775543911, + 912105030, + 1601117947, + 2057204534, + 1675599468, + 279594428, + 1171863592, + 1279296811, + ]; + + static const List _envieddatakeyOfApp = [ + 3703376593, + 1126704364, + 3589076052, + 2257760962, + 2714219564, + 66002726, + 2508345166, + 2625987840, + 1672280504, + 1959184035, + 4215276481, + 1001843578, + 4154811188, + 1947813622, + 4175333832, + 4264094911, + 2714313958, + 28573070, + 303569883, + 2907929011, + 1446736707, + 1355382853, + 1204633234, + 335451159, + 2458769036, + 1798378018, + 3766825934, + 3448538925, + 4175183597, + 1408526250, + 3775543821, + 912105001, + 1601117859, + 2057204548, + 1675599412, + 279594446, + 1171863658, + 1279296857, + ]; + + static final String keyOfApp = String.fromCharCodes(List.generate( + _envieddatakeyOfApp.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatakeyOfApp[i] ^ _enviedkeykeyOfApp[i])); +} + + +================================================== +FILE PATH: ./lib/constant/char_map.dart +================================================== + +import '../env/env.dart'; + +Map cs = { + "a": Env.a, + "b": Env.b, + "c": Env.c, + "d": Env.d, + "e": Env.e, + "f": Env.f, + "g": Env.g, + "h": Env.h, + "i": Env.i, + "j": Env.j, + "k": Env.k, + "l": Env.l, + "m": Env.m, + "n": Env.n, + "o": Env.o, + "p": Env.p, + "q": Env.q, + "r": Env.r, + "s": Env.s, + "t": Env.t, + "u": Env.u, + "v": Env.v, + "w": Env.w, + "x": Env.x, + "y": Env.y, + "z": Env.z, +}; +Map cC = { + "A": Env.A, + "B": Env.B, + "C": Env.C, + "D": Env.D, + "E": Env.E, + "F": Env.F, + "G": Env.G, + "H": Env.H, + "I": Env.I, + "J": Env.J, + "K": Env.K, + "L": Env.L, + "M": Env.M, + "N": Env.N, + "O": Env.O, + "P": Env.P, + "Q": Env.Q, + "R": Env.R, + "S": Env.S, + "T": Env.T, + "U": Env.U, + "V": Env.V, + "W": Env.W, + "X": Env.X, + "Y": Env.Y, + "Z": Env.Z +}; + +// + +// + +Map cn = { + "0": "3", + "1": "7", + "2": "1", + "3": "9", + "4": "0", + "5": "5", + "6": "2", + "7": "6", + "8": "4", + "9": "8" +}; + + +================================================== +FILE PATH: ./lib/constant/colors.dart +================================================== + +import 'package:flutter/material.dart'; + +/// A class that holds the color palette for the 'Intaleq' app. +/// The palette is professionally designed to be modern, cohesive, and culturally +/// relevant, inspired by the Syrian flag and the app's brand identity. +class AppColor { + // --- Core Brand Colors (Inspired by the Syrian Flag) --- + + /// **Primary Color:** A strong, modern green representing growth, safety, and movement. + /// Ideal for app bars, primary buttons, and major UI elements. + static const Color primaryColor = Color(0xFF108942); + + /// **Text/Write Color:** A very dark, near-black color for main text. + /// It's softer on the eyes than pure black, improving readability. + /// The variable name `writeColor` is kept as requested. + static const Color writeColor = Color(0xFF1A1A1A); + + /// **Secondary Color:** Pure white, used for backgrounds to create a clean + /// and spacious look, ensuring content stands out. + static const Color secondaryColor = Colors.white; + + /// **Accent Color:** A vibrant, energetic red from the Syrian flag. + /// Perfect for calls-to-action, highlights, icons, and notifications. + static const Color accentColor = Color.fromARGB(255, 148, 140, 141); + + // --- Neutral & Status Colors --- + + /// **Grey Color:** A neutral grey for secondary text, borders, dividers, + /// and disabled states. + static const Color grayColor = Color(0xFF8E8E93); + + /// **Red Color (Error):** A clear, attention-grabbing red for error messages and alerts. + static const Color redColor = Color(0xFFD32F2F); + + /// **Green Color (Success):** A positive green for success messages and confirmations. + static const Color greenColor = Color(0xFF388E3C); + + /// **Blue Color (Info):** A standard blue for informational text, links, or icons. + static const Color blueColor = Color(0xFF108942); + + /// **Yellow Color (Warning):** A warm yellow for warning messages or important highlights. + static const Color yellowColor = Color(0xFFFFA000); + + // --- Tier & Social Colors --- + + /// **Gold Tier:** A bright gold for premium features, user ranks, or rewards. + static const Color gold = Color(0xFFFFD700); + + /// **Bronze Tiers:** Classic bronze colors for other user tiers or levels. + static const Color bronze = Color(0xFFCD7F32); + static const Color goldenBronze = Color(0xFFB87333); // Kept from original + + /// **Twitter/X Color:** The official brand color for social login buttons. + + // --- Utility Colors --- + + /// **Accent Tint:** A transparent version of the red accent color. + /// Useful for subtle backgrounds on selected items or highlighted areas. + /// Replaces the old `deepPurpleAccent` to match the new brand palette. + static Color deepPurpleAccent = const Color(0xFFCE1126).withOpacity(0.1); +} + + +================================================== +FILE PATH: ./lib/constant/notification.dart +================================================== + +List passengerMessages = [ + // --- رسائل العروض والتوفير --- + "وفر على حالك: 🚗 أسعار انطلق نازلة كتير! شوف العروض الجديدة وفوت هلأ قبل ما تخلص. 🌟", + "خصم اليوم: 🤔 لا تفوّت الفرصة! افتح تطبيق انطلق وشوف الأسعار يلي ما بتنعاد.", + "عروض نارية: 🎁 اليوم خصم خاص إلك، احجز مشوارك الجاي بسعر ولا أروع!", + "مشاوير اقتصادية: 💸 مع انطلق بتتحرك براحتك وبتدفع أقل، جرب وشوف الفرق!", + + // --- رسائل السهولة والراحة --- + "مشوار بكبسة زر: 📲 افتح تطبيق انطلق، وخلِّي السيارة توصلك لعندك بثواني.", + "ارتاح من المواصلات: 🤔 خلّي انطلق يريحك من الانتظار والزحمة، وانطلق وين ما بدك.", + "سيارتك جاهزة: 🚕 الكابتن ناطر طلبك، حدد وجهتك وخلّي الطريق علينا.", + "رحلة مريحة: 🛣️ ارتاح بالكرسي، نحنا منهتم بكل التفاصيل من الباب للباب.", + + // --- رسائل الأمان والثقة --- + "رحلتك بأمان: 🙏 كل كباتنّا مدرّبين وملتزمين، وسلامتك أولويتنا.", + "سافر وانت مطمّن: 🔒 مع انطلق كل شي موثوق ومسجّل لتكون مرتاح البال.", + "شارك رحلتك: ❤️ فيك تبعت تفاصيل المشوار لأهلك أو رفقاتك بخطوة وحدة.", + "انطلق بثقة: ✅ كل الرحلات مراقبة لتضمن تجربة آمنة ومريحة 100%.", + + // --- رسائل تفاعلية ومناسبات --- + "الويكند بلّش: 🥳 خلي مشاويرك مع الأصحاب علينا، وفر وقتك وفلوسك مع انطلق.", + "رايح عالشغل: 💼 لا تتأخر، افتح التطبيق وخلي الكابتن يوصلك بلا تعب.", + "الشمس مولّعة: ☀️ لا تمشي تحت الحر، خلي السيارة تجي لعندك.", + "مستعجل: 🏃‍♂️ لا تقلق، انطلق أسرع طريق لتوصل عموعدك.", + + // --- رسائل تشجيعية عامة --- + "وين رايح اليوم؟ 🗺️ وين ما كانت وجهتك، انطلق بيخدمك بكل مكان وبأي وقت.", + "جرب شي جديد: 🚘 شوف فئات السيارات الجديدة وخلي رحلتك أريح وأجمل.", + "شكراً لاختيارك: ⭐ وجودك معنا بيفرحنا، ونتمنى دايماً تكون رحلتك مريحة وسعيدة.", + "كل يوم جديد: ✨ فوت عالتطبيق وتابع آخر التحديثات والعروض يلي نازلة خصيصاً إلك." +]; + + +================================================== +FILE PATH: ./lib/constant/box_name.dart +================================================== + +class BoxName { + static const String driverID = "driverID"; + static const String countryCode = "countryCode"; + static const String googlaMapApp = "googlaMapApp"; + + static const String tokenParent = "tokenParent"; + static const String lang = "lang"; + static const String serverChosen = "serverChosen"; + static const String gender = "gender"; + static const String jwt = "jwt"; + static const String lowEndMode = "lowEndMode"; + static const String appVersionChecked = "appVersionChecked"; + static const String lastName = "lastName"; + static const String fingerPrint = "fingerPrint"; + static const String payMobApikey = "payMobApikey"; + static const String refreshToken = "refreshToken"; + static const String serverLocations = "serverLocations"; + static const String carType = "carType"; + static const String carPlate = "carPlate"; + static const String basicLink = "basicLink"; + static const String packagInfo = "packagInfo"; + static const String paymentLink = "paymentLink"; + static const String locationName = "locationName"; + static const String isVerified = 'isVerified'; + static const String isFirstTime = 'isFirstTime'; + static const String firstTimeLoadKey = 'firstTimeLoadKey'; + static const String isSavedPhones = 'isSavedPhones'; + static const String statusDriverLocation = "statusDriverLocation"; + static const String isTest = "isTest"; + static const String hmac = "hmac"; + static const String password = "password"; + static const String validity = "validity"; + static const String promo = "promo"; + static const String discount = "discount"; + static const String arrivalTime = "arrivalTime"; + static const String passwordDriver = "passwordDriver"; + static const String agreeTerms = "agreeTerms"; + static const String addWork = 'addWork'; + static const String addHome = 'addHome'; + static const String placesDestination = 'placesDestination'; + static const String tipPercentage = 'tipPercentage'; + static const String accountIdStripeConnect = "accountIdStripeConnect"; + static const String faceDetectTimes = "faceDetectTimes"; + static const String sosPhonePassenger = "sosPhonePassenger"; + static const String sosPhoneDriver = "sosPhoneDriver"; + static const String passengerID = "pasengerID"; + static const String phone = "phone"; + static const String package = "package"; + static const String isInstall = "isInstall"; + static const String isGiftToken = "isGiftToken"; + static const String inviteCode = "inviteCode"; + static const String phoneWallet = "phoneWallet"; + static const String phoneDriver = "phoneDriver"; + static const String dobDriver = "dobDriver"; + static const String sexDriver = "sexDriver"; + static const String lastNameDriver = "lastNameDriver"; + static const String name = "name"; + static const String locationPermission = "locationPermission"; + static const String nameDriver = "nameDriver"; + static const String driverPhotoUrl = "driverPhotoUrl"; + static const String passengerPhotoUrl = "passengerPhotoUrl"; + static const String email = "email"; + static const String emailDriver = "emailDriver"; + static const String tokens = "tokens"; + static const String tokenFCM = "tokenFCM"; + static const String tokenDriver = "tokenDriver"; + static const String cardNumber = "cardNumber"; + static const String cardNumberDriver = "cardNumberDriver"; + static const String cardHolderName = "cardHolderName"; + static const String cardHolderNameDriver = "cardHolderNameDriver"; + static const String expiryDate = "expiryDate"; + static const String expiryDateDriver = "expiryDateDriver"; + static const String cvvCode = "cvvCode"; + static const String cvvCodeDriver = "cvvCodeDriver"; + static const String passengerWalletDetails = "passengerWalletDetails"; + static const String passengerWalletTotal = "passengerWalletTotal"; + static const String passengerWalletFound = "passengerWalletFound"; + static const String periods = 'periods'; + static const String onBoarding = 'onBoarding'; + static const String stripePublishableKey = 'stripe_publishableKe'; + static const String apiKeyRun = 'apiKeyRun'; + static const String keyOfApp = 'keyOfApp'; + static const String initializationVector = 'initializationVector'; + static const String serverAPI = 'serverAPI'; + static const String secretKey = 'secretKey'; + static const String basicAuthCredentials = 'basicAuthCredentials'; + static const String mapAPIKEY = 'mapAPIKEY'; + static const String twilloRecoveryCode = 'twilloRecoveryCode'; + static const String accountSIDTwillo = 'accountSIDTwillo'; + static const String authTokenTwillo = 'authTokenTwillo'; + static const String chatGPTkey = 'chatGPTkey'; + static const String chatGPTkeySefer = 'chatGPTkeySefer'; + static const String transactionCloude = 'transactionCloude'; + static const String visionApi = 'visionApi'; + static const String vin = "vin"; + static const String isvibrate = "isvibrate"; + static const String make = "make"; + static const String model = "model"; + static const String year = "year"; + static const String expirationDate = "expirationDate"; + static const String color = "color"; + static const String owner = "owner"; + static const String registrationDate = "registrationDate"; + static const String recentLocations = 'recentLocations'; + static const String tripData = 'tripData'; + static const String parentTripSelected = 'parentTripSelected'; +} + + +================================================== +FILE PATH: ./lib/constant/info.dart +================================================== + +class AppInformation { + static const String companyName = 'Intaleq llc'; + static const String appName = 'Intaleq'; + static const String phoneNumber = '962798583052'; + static const String linkedInProfile = + 'https://www.linkedin.com/in/hamza-ayed/'; + static const String website = 'https://intaleqapp.com'; + static const String email = 'hamzaayed@intaleqapp.com'; + static const String addd = 'BlBlNl'; + static const String privacyPolicy = ''' + + + + + + Intaleq - Privacy Policy & Terms of Use + + + +

Privacy Policy & Terms of Use

+ +
+

Effective Date: August 9, 2025

+

Last Updated: August 9, 2025

+
+ +

1. Introduction and Acceptance

+

By downloading, registering, or using the Intaleq application ("App"), you agree to be bound by this Privacy Policy and our Terms of Use. If you do not agree, you must stop using the App immediately. Your continued use constitutes acceptance of these terms and any future updates.

+ +

2. Definitions

+
    +
  • "Intaleq", "we", "us": Refers to the Intaleq for Ride Hailing company, Damascus – Syria (Owner & operator), which provides the technology platform.
  • +
  • "Driver": An independent service provider who uses the App to offer transportation services.
  • +
  • "Passenger", "you": An individual who uses the App to request transportation services.
  • +
  • "Services": The connection between Passengers and Drivers facilitated by our App.
  • +
+ +

3. Privacy Policy

+ +

3.1 Information We Collect

+

We collect information necessary to provide and improve our Services.

+ +

A. Information You Provide:

+
    +
  • For Drivers: To ensure safety and compliance, we collect identity information, including your full name, phone number, personal photo, and official documents (e.g., driver's license, vehicle registration).
  • +
  • For Passengers: We only require a phone number for registration and communication. We are not authorized to request or view official identity documents for passengers.
  • +
+ +

B. Information Collected Automatically:

+
    +
  • Location Data: We collect precise location data when the App is in use to facilitate ride matching, navigation, and for safety purposes.
  • +
  • Device Data: We collect information about your device, such as model, operating system, and unique identifiers, to ensure App functionality and for security verification.
  • +
  • Usage Data: We log how you interact with our App, including trip history and features used, to improve our services.
  • +
+ +

3.2 Payment Information

+

We do not collect, process, or store any sensitive payment information like credit/debit card numbers. We facilitate payments by connecting you to licensed, local third-party providers:

+
    +
  • Mobile Carrier Billing: Payments via MTN and Syriatel are processed directly by them based on your registered phone number. A one-time password (OTP) sent by the carrier is required to confirm the transaction.
  • +
  • Bank Card Payments: We connect you with the Syrian company "eCash" to process card payments. They handle the transaction, and your bank will send an OTP to your phone to authorize it.
  • +
+ +

3.3 How We Use Your Information

+
    +
  • To operate and maintain the Services (e.g., connect Drivers and Passengers).
  • +
  • To verify Driver identity and eligibility.
  • +
  • To improve App security and prevent fraud.
  • +
  • To provide customer support.
  • +
  • To comply with legal obligations.
  • +
+ +

3.4 Data Sharing

+

We do not sell your personal data. We only share it in the following limited circumstances:

+
    +
  • Between Passenger and Driver: To facilitate a ride, we share necessary information like name, photo, and real-time location.
  • +
  • With Service Providers: For services like payment processing and mapping. These providers are contractually obligated to protect your data.
  • +
  • For Legal Reasons: If required by law or a valid legal order.
  • +
+ +

3.5 Policy for Minors

+

Our services are intended for individuals over the age of 18. + For Drivers: We strictly verify the identity and age of all drivers to ensure no minors are operating on our platform. + For Passengers: While we do not verify passenger identity, the service is not directed at children under 18. If a parent or guardian becomes aware that their child has provided us with information without their consent, they should contact us immediately.

+ +

4. User Obligations & Conduct

+
    +
  • You must provide accurate and current information during registration.
  • +
  • You are responsible for maintaining the security of your account.
  • +
  • You agree not to use the App for any illegal activities, to harass others, or to cause damage to a Driver's vehicle.
  • +
+ +

5. Disclaimer of Liability

+

The App is provided "as is". Intaleq is an intermediary platform and is not liable for the actions of Drivers or Passengers, accidents, delays, or any disputes between users. Our liability is limited to the fullest extent permitted by law.

+ +

6. Policy Updates

+

We may update these terms. If we make significant changes, we will notify you within the App. You will be required to review and accept the new terms to continue using the Services, ensuring your consent is active and informed.

+ +

7. Account Deletion & Contact

+

You have the right to request the deletion of your account and personal data. To do so, or for any other questions, please contact us. We will respond to deletion requests within 30 days.

+

Email: support@intaleqapp.com

+ + + +'''; + + static const String privacyPolicyArabic = ''' + + + + + + انطلق - سياسة الخصوصية وشروط الاستخدام + + + +

سياسة الخصوصية وشروط الاستخدام

+ +
+

تاريخ النفاذ: 9 أغسطس 2025

+

آخر تحديث: 9 أغسطس 2025

+
+ +

1. المقدمة والقبول

+

عبر تحميل أو تسجيل أو استخدام تطبيق "انطلق" ("التطبيق")، فإنك توافق على الالتزام بسياسة الخصوصية وشروط الاستخدام هذه. إذا كنت لا توافق، يجب عليك التوقف فورًا عن استخدام التطبيق. استمرارك في الاستخدام يُعد قبولاً لهذه الشروط وأي تحديثات مستقبلية لها.

+ +

2. التعريفات

+
    +
  • "انطلق"، "نحن": تشير إلى شركة انطلق لنقل الركاب، دمشق – سوريا (مالك ومشغل التطبيق)، التي توفر المنصة التقنية.
  • +
  • "السائق": مقدم خدمة مستقل يستخدم التطبيق لتقديم خدمات النقل.
  • +
  • "الراكب"، "أنت": الفرد الذي يستخدم التطبيق لطلب خدمات النقل.
  • +
  • "الخدمات": عملية الربط بين الركاب والسائقين التي يسهلها تطبيقنا.
  • +
+ +

3. سياسة الخصوصية

+ +

3.1 المعلومات التي نجمعها

+

نحن نجمع المعلومات الضرورية لتقديم خدماتنا وتحسينها.

+ +

أ. المعلومات التي تقدمها بنفسك:

+
    +
  • بالنسبة للسائقين: لضمان السلامة والامتثال للقوانين، نجمع بيانات الهوية الشخصية، بما في ذلك الاسم الكامل، رقم الهاتف، صورة شخصية، والوثائق الرسمية (مثل رخصة القيادة وتسجيل المركبة).
  • +
  • بالنسبة للركاب: نطلب فقط رقم هاتف للتسجيل والتواصل. نحن غير مخولين بطلب أو الاطلاع على وثائق الهوية الرسمية للركاب.
  • +
+ +

ب. المعلومات التي تُجمع تلقائيًا:

+
    +
  • بيانات الموقع: نجمع بيانات الموقع الجغرافي الدقيقة عند استخدام التطبيق لتسهيل تحديد أماكن الانطلاق والوصول، الملاحة، ولأغراض السلامة.
  • +
  • بيانات الجهاز: نجمع معلومات عن جهازك (طراز، نظام تشغيل، معرفات فريدة) لضمان عمل التطبيق وللتحقق الأمني.
  • +
  • بيانات الاستخدام: نسجل كيفية تفاعلك مع التطبيق، بما في ذلك سجل الرحلات والميزات المستخدمة، بهدف تحسين خدماتنا.
  • +
+ +

3.2 معلومات الدفع

+

نحن لا نجمع أو نعالج أو نخزن أي معلومات دفع حساسة مثل أرقام بطاقات الائتمان/الخصم. نحن نسهل عمليات الدفع عبر ربطك بمزودي خدمات محليين مرخصين:

+
    +
  • الدفع عبر رصيد الهاتف المحمول: تتم معالجة الدفعات عبر شركتي MTN و Syriatel مباشرة من خلالهما بناءً على رقم هاتفك المسجل لديهم. يتطلب تأكيد العملية إدخال رمز تحقق (OTP) يُرسل من قبل شركة الاتصالات.
  • +
  • الدفع عبر البطاقات البنكية: نربطك بشركة "eCash" السورية لمعالجة الدفعات بالبطاقات. هي التي تتولى المعاملة، وسيقوم البنك الذي تتعامل معه بإرسال رمز تحقق (OTP) إلى هاتفك لتفويض العملية.
  • +
+ +

3.3 كيف نستخدم معلوماتك

+
    +
  • لتشغيل وصيانة الخدمات (مثل الربط بين السائقين والركاب).
  • +
  • للتحقق من هوية السائقين وأهليتهم.
  • +
  • لتحسين أمان التطبيق ومنع الاحتيال.
  • +
  • لتقديم الدعم الفني للعملاء.
  • +
  • للامتثال للالتزامات القانونية.
  • +
+ +

3.4 مشاركة البيانات

+

نحن لا نبيع بياناتك الشخصية. نشاركها فقط في الحالات المحدودة التالية:

+
    +
  • بين الراكب والسائق: لتسهيل الرحلة، نشارك المعلومات الضرورية مثل الاسم، الصورة، والموقع المباشر.
  • +
  • مع مزودي الخدمات: مثل معالجي الدفع وخدمات الخرائط. هؤلاء المزودون ملزمون تعاقديًا بحماية بياناتك.
  • +
  • لأسباب قانونية: إذا طُلب ذلك بموجب القانون أو أمر قضائي ساري المفعول.
  • +
+ +

3.5 سياسة القاصرين

+

خدماتنا موجهة للأفراد الذين تزيد أعمارهم عن 18 عامًا. + بالنسبة للسائقين: نحن نتحقق بدقة من هوية وعمر جميع السائقين لضمان عدم وجود قاصرين يعملون على منصتنا. + بالنسبة للركاب: على الرغم من أننا لا نتحقق من هوية الركاب، فإن الخدمة غير موجهة للأطفال دون سن 18. إذا علم ولي الأمر أن طفله قد زودنا بمعلومات دون موافقته، فيجب عليه الاتصال بنا على الفور.

+ +

4. التزامات المستخدم وسلوكه

+
    +
  • يجب عليك تقديم معلومات دقيقة وحديثة عند التسجيل.
  • +
  • أنت مسؤول عن الحفاظ على أمان حسابك.
  • +
  • أنت توافق على عدم استخدام التطبيق لأي أنشطة غير قانونية، أو لمضايقة الآخرين، أو التسبب في ضرر لمركبة السائق.
  • +
+ +

5. إخلاء المسؤولية

+

يتم تقديم التطبيق "كما هو". "انطلق" هي منصة وسيطة وليست مسؤولة عن تصرفات السائقين أو الركاب، أو الحوادث، أو التأخير، أو أي نزاعات بين المستخدمين. مسؤوليتنا محدودة إلى أقصى حد يسمح به القانون.

+ +

6. تحديثات السياسة

+

قد نقوم بتحديث هذه الشروط. في حال إجراء تغييرات جوهرية، سنقوم بإعلامك داخل التطبيق. سيُطلب منك مراجعة الشروط الجديدة وقبولها لمواصلة استخدام الخدمات، لضمان أن موافقتك فعالة ومبنية على معرفة.

+ +

7. حذف الحساب والتواصل

+

لديك الحق في طلب حذف حسابك وبياناتك الشخصية. للقيام بذلك، أو لأي استفسارات أخرى، يرجى التواصل معنا. سنرد على طلبات الحذف في غضون 30 يومًا.

+

البريد الإلكتروني: support@intaleqapp.com

+ + + +'''; +} + + +================================================== +FILE PATH: ./lib/constant/links.dart +================================================== + +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/main.dart'; + +class AppLink { + static String serverPHP = box.read('serverPHP'); + + static String paymentServer = 'https://walletintaleq.intaleq.xyz/v1/main'; + static String location = 'https://api.intaleq.xyz/intaleq/ride/location'; + static String locationServer = + 'https://location.intaleq.xyz/intaleq/ride/location'; + static String seferPaymentServer0 = box.read('seferPaymentServer'); + + static final String endPoint = 'https://api.intaleq.xyz/intaleq'; + static final String ride = 'https://rides.intaleq.xyz/intaleq'; + // box.read(BoxName.serverChosen) ?? box.read(BoxName.basicLink); + static final String server = 'https://api.intaleq.xyz/intaleq'; + static String IntaleqSyriaServer = endPoint; + static String IntaleqGizaServer = box.read('Giza'); + static String IntaleqAlexandriaServer = box.read('Alexandria'); + + static String googleMapsLink = 'https://maps.googleapis.com/maps/api/'; + static String searcMaps = + 'https://autosuggest.search.hereapi.com/v1/autosuggest'; + static String llama = 'https://api.llama-api.com/chat/completions'; + static String gemini = + 'https://generativelanguage.googleapis.com/v1beta3/models/text-bison-001:generateText'; + + static String test = "$server/test.php"; + //===============firebase========================== + static String getTokens = "$server/ride/firebase/get.php"; + static String getTokenParent = "$server/ride/firebase/getTokenParent.php"; + static String addTokens = "$server/ride/firebase/add.php"; + static String addFingerPrint = "$paymentServer/ride/firebase/add.php"; + static String addTokensDriver = "$server/ride/firebase/addDriver.php"; + static String packageInfo = "$server/auth/packageInfo.php"; + + //=======================Wallet=================== + static String wallet = '$paymentServer/ride/passengerWallet'; + static String walletDriver = '$paymentServer/ride/driverWallet'; + static String getAllPassengerTransaction = + "$wallet/getAllPassengerTransaction.php"; + static String getWalletByPassenger = "$wallet/getWalletByPassenger.php"; + static String getPassengersWallet = "$wallet/get.php"; + static String payWithPayMobWalletPasenger = + '$paymentServer/ride/payMob/wallet/payWithPayMob.php'; + static String payWithPayMobCardPassenger = + '$paymentServer/ride/payMob/payWithPayMob.php'; + static String payWithEcash = "$paymentServer/ecash/payWithEcash.php"; + + static String paymetVerifyPassenger = + "$paymentServer/ride/payMob/paymet_verfy.php"; + static String getPassengerWalletArchive = + "$wallet/getPassengerWalletArchive.php"; + + static String addDrivePayment = "$paymentServer/ride/payment/add.php"; + static String addSeferWallet = "$paymentServer/ride/seferWallet/add.php"; + static String addPassengersWallet = "$wallet/add.php"; + static String deletePassengersWallet = "$wallet/delete.php"; + static String updatePassengersWallet = "$wallet/update.php"; + + static String getWalletByDriver = "$walletDriver/getWalletByDriver.php"; + static String getDriversWallet = "$walletDriver/get.php"; + static String addDriversWalletPoints = "$walletDriver/add.php"; + static String deleteDriversWallet = "$walletDriver/delete.php"; + static String updateDriversWallet = "$walletDriver/update.php"; + + //=======================promo===================ride.mobile-app.store/ride/promo/get.php + static String promo = '$server/ride/promo'; + static String getPassengersPromo = "$promo/get.php"; + static String getPromoFirst = "$promo/getPromoFirst.php"; + static String getPromoBytody = "$promo/getPromoBytody.php"; + static String addPassengersPromo = "$promo/add.php"; + static String deletePassengersPromo = "$promo/delete.php"; + static String updatePassengersPromo = "$promo/update.php"; + + //===============contact========================== + static String savePhones = "$server/ride/egyptPhones/add.php"; + static String getPhones = "$server/ride/egyptPhones/get.php"; + + ////=======================cancelRide=================== + // static String ride = '$server/ride'; + static String addCancelRideFromPassenger = "$ride/cancelRide/add.php"; + static String cancelRide = "$ride/cancelRide/get.php"; +//-----------------ridessss------------------ + static String addRides = "$ride/ride/rides/add.php"; + static String getRides = "$ride/ride/rides/get.php"; + static String getRideOrderID = "$ride/ride/rides/getRideOrderID.php"; + static String getRideStatus = "$ride/ride/rides/getRideStatus.php"; + static String getRideStatusBegin = "$ride/ride/rides/getRideStatusBegin.php"; + static String getRideStatusFromStartApp = + "$server/ride/rides/getRideStatusFromStartApp.php"; + static String updateRides = "$ride/ride/rides/update.php"; + static String updateStausFromSpeed = + "$ride/ride/rides/updateStausFromSpeed.php"; + static String deleteRides = "$ride/ride/rides/delete.php"; + +//-----------------DriverPayment------------------ + static String adddriverScam = "$server/driver_scam/add.php"; + static String getdriverScam = "$server/ride/driver_scam/get.php"; + +/////////---getKazanPercent===//////////// + static String getKazanPercent = "$server/ride/kazan/get.php"; + static String addKazanPercent = "$server/ride/kazan/add.php"; + +////-----------------DriverPayment------------------ + static String addDriverpayment = "$paymentServer/ride/payment/add.php"; + static String addDriverPaymentPoints = + "$paymentServer/ride/driverPayment/add.php"; + static String addPaymentTokenPassenger = + "$paymentServer/ride/passengerWallet/addPaymentTokenPassenger.php"; + static String addPaymentTokenDriver = + "$paymentServer/ride/driverWallet/addPaymentToken.php"; + static String getDriverPaymentPoints = + "$paymentServer/ride/driverWallet/get.php"; + static String payWithEcashPassenger = + "$paymentServer/ride/ecash/passenger/payWithEcash.php"; + static String payWithMTNConfirm = + "$paymentServer/ride/mtn/passenger/mtn_confirm.php"; + static String payWithMTNStart = + "$paymentServer/ride/mtn/passenger/mtn_start.php"; + static String payWithSyriatelConfirm = + "$paymentServer/ride/syriatel/passenger/confirm_payment.php"; + static String payWithSyriatelStart = + "$paymentServer/ride/syriatel/passenger/start_payment.php"; + static String getDriverpaymentToday = "$paymentServer/ride/payment/get.php"; + static String getCountRide = "$paymentServer/ride/payment/getCountRide.php"; + static String getAllPaymentFromRide = + "$paymentServer/ride/payment/getAllPayment.php"; + static String getAllPaymentVisa = + "$paymentServer/ride/payment/getAllPaymentVisa.php"; + +//-----------------Passenger NotificationCaptain------------------ + static String addNotificationPassenger = + "$server/ride/notificationPassenger/add.php"; + static String getNotificationPassenger = + "$server/ride/notificationPassenger/get.php"; + static String updateNotificationPassenger = + "$server/ride/notificationPassenger/update.php"; +//-----------------Driver NotificationCaptain------------------ + static String addNotificationCaptain = + "$server/ride/notificationCaptain/add.php"; + static String addWaitingRide = + "$server/ride/notificationCaptain/addWaitingRide.php"; + static String updateWaitingTrip = + "$server/ride/notificationCaptain/updateWaitingTrip.php"; + static String getRideWaiting = + "$endPoint/ride/notificationCaptain/getRideWaiting.php"; + static String getNotificationCaptain = + "$server/ride/notificationCaptain/get.php"; + static String updateNotificationCaptain = + "$server/ride/notificationCaptain/update.php"; + static String deleteNotificationCaptain = + "$server/ride/notificationCaptain/delete.php"; + //-----------------invitor------------------ + + static String addInviteDriver = "$server/ride/invitor/add.php"; + static String addInvitationPassenger = + "$server/ride/invitor/addInvitationPassenger.php"; + static String getInviteDriver = "$server/ride/invitor/get.php"; + static String getDriverInvitationToPassengers = + "$server/ride/invitor/getDriverInvitationToPassengers.php"; + static String updateInviteDriver = "$server/ride/invitor/update.php"; + static String updatePassengerGift = + "$server/ride/invitor/updatePassengerGift.php"; + //-----------------Api Key------------------ + static String addApiKey = "$server/ride/apiKey/add.php"; + static String getApiKey = "$server/ride/apiKey/get.php"; + static String getCnMap = "$server/auth/cnMap.php"; + static String updateApiKey = "$server/ride/apiKey/update.php"; + static String deleteApiKey = "$server/ride/apiKey/delete.php"; + static String getPlacesSyria = "$server/ride/places_syria/get.php"; + +//-----------------Feed Back------------------ + static String addFeedBack = "$server/ride/feedBack/add.php"; + static String add_solve_all = "$server/ride/feedBack/add_solve_all.php"; + static String uploadAudio = "$server/ride/feedBack/upload_audio.php"; + static String getFeedBack = "$server/ride/feedBack/get.php"; + static String updateFeedBack = "$server/ride/feedBack/updateFeedBack.php"; + + //-----------------Tips------------------ + static String addTips = "$server/ride/tips/add.php"; + static String getTips = "$server/ride/tips/get.php"; + static String updateTips = "$server/ride/tips/update.php"; + +//-----------------Help Center------------------ + static String addhelpCenter = "$server/ride/helpCenter/add.php"; + static String gethelpCenter = "$server/ride/helpCenter/get.php"; + static String getByIdhelpCenter = "$server/ride/helpCenter/getById.php"; + static String updatehelpCenter = "$server/ride/helpCenter/update.php"; + static String deletehelpCenter = "$server/ride/helpCenter/delete.php"; + + //-----------------license------------------ + static String addLicense = "$server/ride/license/add.php"; + static String getLicense = "$server/ride/license/get.php"; + static String updateLicense = "$server/ride/license/updateFeedBack.php"; +//-----------------RegisrationCar------------------ + static String addRegisrationCar = "$server/ride/RegisrationCar/add.php"; + static String getRegisrationCar = + "${box.read(BoxName.serverChosen)}/server/ride/RegisrationCar/get.php"; + static String selectDriverAndCarForMishwariTrip = + "$server/ride/RegisrationCar/selectDriverAndCarForMishwariTrip.php"; + static String updateRegisrationCar = "$server/ride/RegisrationCar/update.php"; + +//-----------------mishwari------------------ + + static String addMishwari = "$server/ride/mishwari/add.php"; + static String cancelMishwari = "$server/ride/mishwari/cancel.php"; + static String getMishwari = "$server/ride/mishwari/get.php"; + +//-----------------DriverOrder------------------ + + static String addDriverOrder = "$server/ride/driver_order/add.php"; + static String getDriverOrder = "$server/ride/driver_order/get.php"; + static String getOrderCancelStatus = + "$server/ride/driver_order/getOrderCancelStatus.php"; + static String updateDriverOrder = "$server/ride/driver_order/update.php"; + static String deleteDriverOrder = "$server/ride/driver_order/delete.php"; + + // ===================================== + static String addRateToPassenger = "$server/ride/rate/add.php"; + static String savePlacesServer = "$server/ride/places/add.php"; + static String getapiKey = "$server/ride/apiKey/get.php"; + static String addRateToDriver = "$server/ride/rate/addRateToDriver.php"; + static String getDriverRate = "$server/ride/rate/getDriverRate.php"; + static String getPassengerRate = "$server/ride/rate/getPassengerRate.php"; + + ////////////////emails ============// + static String sendEmailToPassengerForTripDetails = + "$server/ride/rides/emailToPassengerTripDetail.php"; + +// =========================================== + static String pathImage = "$server/upload/types/"; + static String uploadImage = "$server/uploadImage.php"; + static String uploadImage1 = "$server/uploadImage1.php"; + static String uploadImagePortrate = "$server/uploadImagePortrate.php"; + static String uploadImageType = "$server/uploadImageType.php"; +//=============egypt documents ============== + static String uploadEgyptidFront = + "$server/EgyptDocuments/uploadEgyptidFront.php"; + static String uploadEgypt = "$server/uploadEgypt.php"; + + //==================certifcate========== + // static String location = '${box.read(BoxName.serverChosen)}/ride/location'; + static String getCarsLocationByPassenger = "$location/get.php"; + + static String getLocationAreaLinks = + '$server/ride/location/get_location_area_links.php'; + static String addpassengerLocation = + "$locationServer/addpassengerLocation.php"; + static String getCarsLocationByPassengerSpeed = "$location/getSpeed.php"; + static String getCarsLocationByPassengerComfort = "$location/getComfort.php"; + static String getCarsLocationByPassengerBalash = "$location/getBalash.php"; + static String getCarsLocationByPassengerElectric = + "$location/getElectric.php"; + static String getCarsLocationByPassengerPinkBike = + "$location/getPinkBike.php"; + static String getCarsLocationByPassengerVan = + "$location/getCarsLocationByPassengerVan.php"; + static String getCarsLocationByPassengerDelivery = + "$location/getDelivery.php"; + static String getLocationParents = "$location/getLocationParents.php"; + static String getFemalDriverLocationByPassenger = + "$location/getFemalDriver.php"; + static String getDriverCarsLocationToPassengerAfterApplied = + "$location/getDriverCarsLocationToPassengerAfterApplied.php"; +// static String addCarsLocationByPassenger = "$location/add.php"; +// static String deleteCarsLocationByPassenger = "$location/delete.php"; +// static String updateCarsLocationByPassenger = "$location/update.php"; +// static String getTotalDriverDuration = "$location/getTotalDriverDuration.php"; +// static String getTotalDriverDurationToday = + // "$location/getTotalDriverDurationToday.php"; + + //==================Blog============= + static String profile = '$server/ride/profile'; + static String getprofile = "$profile/get.php"; + static String getCaptainProfile = "$profile/getCaptainProfile.php"; + static String addprofile = "$profile/add.php"; + static String deleteprofile = "$profile/delete.php"; + static String updateprofile = "$profile/update.php"; + + //===================Auth============ + + static String auth = '$server/auth'; + static String login = "$auth/login.php"; + static String loginJwtRider = "$server/login.php"; + static String loginJwtWalletRider = "$server/loginWallet.php"; + static String loginFirstTime = "$server/loginFirstTime.php"; + static String getTesterApp = "$auth/Tester/getTesterApp.php"; + static String updateTesterApp = "$auth/Tester/updateTesterApp.php"; + static String signUp = "$auth/signup.php"; + static String sendVerifyEmail = "$auth/sendVerifyEmail.php"; + static String loginFromGooglePassenger = "$auth/loginFromGooglePassenger.php"; + static String checkPhoneNumberISVerfiedPassenger = + "$auth/checkPhoneNumberISVerfiedPassenger.php"; + + static String passengerRemovedAccountEmail = + "$auth/passengerRemovedAccountEmail.php"; + static String verifyEmail = "$auth/verifyEmail.php"; +//===================Auth Captin============ + static String authCaptin = '$server/auth/captin'; + static String loginCaptin = "$authCaptin/login.php"; + static String loginFromGoogleCaptin = "$authCaptin/loginFromGoogle.php"; + static String signUpCaptin = "$authCaptin/register.php"; + static String sendVerifyEmailCaptin = "$authCaptin/sendVerifyEmail.php"; + static String sendVerifyOtpMessage = "$server/auth/otpmessage.php"; + static String verifyOtpMessage = "$server/auth/verifyOtpMessage.php"; + static String verifyEmailCaptin = "$authCaptin/verifyEmail.php"; + static String removeUser = "$authCaptin/removeAccount.php"; + static String deletecaptainAccounr = "$authCaptin/deletecaptainAccounr.php"; + static String updateAccountBank = "$authCaptin/updateAccountBank.php"; + static String getAccount = "$authCaptin/getAccount.php"; + static String updatePassengersInvitation = + "$server/ride/invitor/updatePassengersInvitation.php"; + static String updateDriverInvitationDirectly = + "$server/ride/invitor/updateDriverInvitationDirectly.php"; + //===================Admin Captin============ + + static String getPassengerDetailsByPassengerID = + "$server/Admin/getPassengerDetailsByPassengerID.php"; + static String getPassengerDetails = "$server/Admin/getPassengerDetails.php"; + static String getPassengerbyEmail = "$server/Admin/getPassengerbyEmail.php"; + static String addAdminUser = "$server/Admin/adminUser/add.php"; + static String getAdminUser = "$server/Admin/adminUser/get.php"; + static String addError = "$server/Admin/errorApp.php"; + static String getCaptainDetailsByEmailOrIDOrPhone = + "$server/Admin/AdminCaptain/getCaptainDetailsByEmailOrIDOrPhone.php"; + static String getCaptainDetails = "$server/Admin/AdminCaptain/get.php"; + static String getRidesPerMonth = + "$server/Admin/AdminRide/getRidesPerMonth.php"; + static String getRidesDetails = "$server/Admin/AdminRide/get.php"; + +//////////Sms egypt/////////// + static String sendSms = "https://sms.kazumi.me/api/sms/send-sms"; + static String sendSmsFromPHP = + '$server/auth/sms_new_backend/sendOtpPassenger.php'; + static String verifyOtpPassenger = + '$server/auth/passengerOTP/verifyOtpPassenger.php'; + static String senddlr = "https://sms.kazumi.me/api/sms/send-dlr"; + static String sendvalidity = "https://sms.kazumi.me/api/sms/send-validity"; + static String sendmany = "https://sms.kazumi.me/api/sms/send-many"; + static String checkCredit = "https://sms.kazumi.me/api/sms/check-credit"; + static String getSender = "$server/auth/sms/getSender.php"; + static String checkStatus = "https://sms.kazumi.me/api/sms/check-status"; + static String updatePhoneInvalidSMSPassenger = + "$server/auth/sms/updatePhoneInvalidSMSPassenger.php"; +} + + +================================================== +FILE PATH: ./lib/constant/credential.dart +================================================== + +import 'dart:convert'; +import 'package:crypto/crypto.dart'; + +import '../controller/functions/crud.dart'; +import '../main.dart'; +import 'box_name.dart'; +import 'char_map.dart'; +import 'links.dart'; + +class AC { + gAK() async { + if (box.read(BoxName.apiKeyRun).toString() != 'run') { + var res = await CRUD().get(link: AppLink.getApiKey, payload: {}); + var decod = jsonDecode(res); + print(decod); + Map jsonData = {}; + for (var i = 0; i < decod['message'].length; i++) { + String h = decod['message'][i]['hashed_key'].toString(); + String retrievedString = r(r(r(h, cn), cC), cs); + + await storage.write( + key: decod['message'][i]['name'].toString(), + value: retrievedString.toString(), + ); + // + String name = decod['message'][i]['name'].toString(); + String value = decod['message'][i]['hashed_key'].toString(); + + jsonData[name] = value; + } + String jsonString = json.encode(jsonData); + print(jsonString); + box.write(BoxName.apiKeyRun, 'run'); + } + } + + String q(String b, String c) { + final d = utf8.encode(c); + final e = utf8.encode(b); + + final f = Hmac(sha256, d); + final g = f.convert(e); + + final h = g.bytes; + final i = base64Url.encode(h); + return i; + } + + String j(String k, String l) { + final m = utf8.encode(l); + final n = base64Url.decode(k); + + final o = Hmac(sha256, m); + final p = o.convert(n); + + final q = utf8.decode(p.bytes); + return q; + } + + String a(String b, String c) { + int d = b.length; + int e = d ~/ 4; + + List f = []; + for (int g = 0; g < d; g += e) { + int h = g + e; + if (h > d) { + h = d; + } + String i = b.substring(g, h); + f.add(i); + } + + print(f); + Map j = {}; + j['birinci'] = f[4]; + j['ikinci'] = f[2]; + j['üçüncü'] = c + f[1]; + j['dördüncü'] = f[0]; + j['beş'] = f[3]; + + String k = ''; + j.forEach((l, m) { + k += m; + }); + + return k; + } + + Map n(String o, String c) { + String p = o.replaceAll(c, ''); + + Map q = {}; + q['birinci'] = p[p.length - 5] + p[p.length - 3]; + q['ikinci'] = p[p.length - 1] + p[p.length - 15]; + q['üçüncü'] = p[p.length - 9] + p[p.length - 12]; + q['dördüncü'] = p[p.length - 11] + p[p.length - 6]; + q['beş'] = p[p.length - 2] + p[p.length - 8]; + + return q; + } + + String c(String a, Map b) { + StringBuffer c = StringBuffer(); + c.write(a); + + String d = "Bl"; + c.write(b[d] ?? d); + + StringBuffer e = StringBuffer(); + String f = c.toString(); + + for (int g = 0; g < f.length; g++) { + String h = f[g]; + e.write(b[h] ?? h); + } + + return e.toString(); + } + + String r(String a, Map b) { + StringBuffer c = StringBuffer(); + String d = "Bl"; + int e = d.length; + + for (int f = 0; f < a.length; f++) { + String g = a[f]; + String h = b.keys.firstWhere( + (i) => b[i] == g, + orElse: () => g, + ); + + c.write(h); + } + + String j = c.toString(); + + if (j.endsWith(d)) { + j = j.substring(0, j.length - e); + } + + return j; + } +} + + +================================================== +FILE PATH: ./lib/constant/api_key.dart +================================================== + +import 'package:Intaleq/main.dart'; +import 'package:secure_string_operations/secure_string_operations.dart'; + +import '../env/env.dart'; +import 'char_map.dart'; + +class AK { + static final String publishableKey = + X.r(X.r(X.r(Env.stripePublishableKe, cn), cC), cs); + static final String sss_pass = X.r(X.r(X.r(Env.sss_pass, cn), cC), cs); + static final String allowed = Env.allowed; + static final String passnpassenger = X + .r(X.r(X.r(Env.passnpassenger, cn), cC), cs) + .toString() + .split(Env.addd)[0]; + static final String newId = Env.newId; + static final String sss_encryptionSalt = + X.r(X.r(X.r(Env.sss_encryptionSalt, cn), cC), cs); + static final String secretKey = X.r(X.r(X.r(Env.secretKey, cn), cC), cs); + static final String basicAuthCredentials = + X.r(X.r(X.r(Env.basicAuthCredentials, cn), cC), cs); + static final String accountSIDTwillo = + X.r(X.r(X.r(Env.accountSIDTwillo, cn), cC), cs); + static final String serverAPI = X.r(X.r(X.r(Env.serverAPI, cn), cC), cs); + static final String mapAPIKEY = Env.mapAPIKEY; + static final String mapAPIKEYIOS = Env.mapAPIKEYIOS; + static final String twilloRecoveryCode = + X.r(X.r(X.r(Env.twilloRecoveryCode, cn), cC), cs); + static final String authTokenTwillo = + X.r(X.r(X.r(Env.authTokenTwillo, cn), cC), cs); + static final String chatGPTkey = X.r(X.r(X.r(Env.chatGPTkey, cn), cC), cs); + static final String transactionCloude = + X.r(X.r(X.r(Env.transactionCloude, cn), cC), cs); + static final String visionApi = X.r(X.r(X.r(Env.visionApi, cn), cC), cs); + static final String chatGPTkeySefer = + X.r(X.r(X.r(Env.chatGPTkeySefer, cn), cC), cs); + static final String chatGPTkeySeferNew = + X.r(X.r(X.r(Env.chatGPTkeySeferNew, cn), cC), cs); + static final String serverPHP = Env.serverPHP; + static final String llamaKey = X.r(X.r(X.r(Env.llamaKey, cn), cC), cs); + static final String cohere = X.r(X.r(X.r(Env.cohere, cn), cC), cs); + static final String claudeAiAPI = X.r(X.r(X.r(Env.claudeAiAPI, cn), cC), cs); + static final String payPalClientId = + X.r(X.r(X.r(Env.payPalClientId, cn), cC), cs); + static final String payPalSecret = + X.r(X.r(X.r(Env.payPalSecret, cn), cC), cs); + static final String geminiApi = X.r(X.r(X.r(Env.geminiApi, cn), cC), cs); + static final String agoraAppId = X.r(X.r(X.r(Env.agoraAppId, cn), cC), cs); + static final String agoraAppCertificate = + X.r(X.r(X.r(Env.agoraAppCertificate, cn), cC), cs); + static final String payPalClientIdLive = + X.r(X.r(X.r(Env.payPalClientIdLive, cn), cC), cs); + static final String payPalSecretLive = + X.r(X.r(X.r(Env.payPalSecretLive, cn), cC), cs); + static final String integrationIdPayMob = + X.r(X.r(X.r(Env.integrationIdPayMob, cn), cC), cs); + static final String passwordPayMob = + X.r(X.r(X.r(Env.passwordPayMob, cn), cC), cs); + static final String usernamePayMob = + X.r(X.r(X.r(Env.usernamePayMob, cn), cC), cs); + static final String payMobApikey = + X.r(X.r(X.r(Env.payMobApikey, cn), cC), cs); + static final String integrationIdPayMobWallet = + X.r(X.r(X.r(Env.integrationIdPayMobWallet, cn), cC), cs); + static final String apiKeyHere = Env.apiKeyHere; + static final String smsPasswordEgypt = + X.r(X.r(X.r(Env.smsPasswordEgypt, cn), cC), cs); + static final String ocpApimSubscriptionKey = Env.ocpApimSubscriptionKey; + static final String chatGPTkeySeferNew4 = + X.r(X.r(X.r(Env.chatGPTkeySeferNew4, cn), cC), cs); + static final String anthropicAIkeySeferNew = + X.r(X.r(X.r(Env.anthropicAIkeySeferNew, cn), cC), cs); + static final String llama3Key = X.r(X.r(X.r(Env.llama3Key, cn), cC), cs); + static final String payMobOutClientSecrret = + X.r(X.r(X.r(Env.payMobOutClientSecrret, cn), cC), cs); + static final String payMobOutClient_id = + X.r(X.r(X.r(Env.payMobOutClient_id, cn), cC), cs); + static final String payMobOutPassword = + X.r(X.r(X.r(Env.payMobOutPassword, cn), cC), cs); + static final String payMobOutUserName = + X.r(X.r(X.r(Env.payMobOutUserName, cn), cC), cs); + +/////////// + static final String keyOfApp = X.r(X.r(X.r(Env.keyOfApp, cn), cC), cs); +} + + +================================================== +FILE PATH: ./lib/constant/table_names.dart +================================================== + +import 'package:Intaleq/env/env.dart'; + +class TableName { + static const String placesFavorite = "placesFavorite"; + static const String recentLocations = "recentLocations"; + static const String carLocations = "carLocations"; + static const String driverOrdersRefuse = "driverOrdersRefuse"; + static const String rideLocation = "rideLocation"; + static const String faceDetectTimes = "faceDetectTimes"; + static const String captainNotification = "captainNotification"; +} + +class Pasenger { + static const String pasengerpas = 'MG6DEJZSczBT6Rx0jOlehQ=='; + static const String payMobApikey = 'payMobApikey'; + static const String initializationVector = 'initializationVector'; + static const String keyOfApp = 'keyOfApp'; + static const String FCM_PRIVATE_KEY_INTALEQ = 'FCM_PRIVATE_KEY_INTALEQ'; +} + + +================================================== +FILE PATH: ./lib/constant/univeries_polygon.dart +================================================== + +import 'package:google_maps_flutter/google_maps_flutter.dart'; + +class UniversitiesPolygons { + // AUC polygon points + static const List> universityPolygons = [ + // AUC Polygon + [ + LatLng(30.013431, 31.502572), + LatLng(30.018469, 31.497478), + LatLng(30.023158, 31.495870), + LatLng(30.025084, 31.496781), + LatLng(30.018701, 31.511393), + LatLng(30.015312, 31.508310), + ], + // Example polygon for University 'German University in Cairo (GUC)' + [ + LatLng(29.984554, 31.437829), + LatLng(29.990363, 31.438390), + LatLng(29.990560, 31.445643), + LatLng(29.984436, 31.445825), + ], + //Future University in Egypt (FUE) + [ + LatLng(30.025794, 31.490946), + LatLng(30.028341, 31.491014), + LatLng(30.028341, 31.492586), + LatLng(30.025844, 31.492491), + ], + //'British University in Egypt (BUE)' + [ + LatLng(30.117423, 31.605834), + LatLng(30.118224, 31.605543), + LatLng(30.118649, 31.607361), + LatLng(30.118932, 31.608033), + LatLng(30.119592, 31.612159), + LatLng(30.119372, 31.612958), + LatLng(30.120017, 31.617102), + LatLng(30.119435, 31.617193), + ], + //Misr International University (MIU) + [ + LatLng(30.166498, 31.491663), + LatLng(30.171956, 31.491060), + LatLng(30.172212, 31.495754), + LatLng(30.167112, 31.496108), + ], + // Canadian International College (CIC) + [ + LatLng(30.034312, 31.428963), + LatLng(30.035661, 31.429037), + LatLng(30.036074, 31.430522), + LatLng(30.036017, 31.431146), + LatLng(30.034580, 31.431117), + ], + // October 6 University (O6U) + [ + LatLng(29.974102, 30.946934), + LatLng(29.976620, 30.944925), + LatLng(29.979848, 30.949832), + LatLng(29.977372, 30.951950), + ], + [ + LatLng(30.029312, 31.210046), + LatLng(30.027124, 31.201393), + LatLng(30.014523, 31.205087), + LatLng(30.015416, 31.212218), + LatLng(30.027325, 31.210661), + ], + // Add polygons for 8 more universities... + ]; + + static const List universityNames = [ + "American University in Cairo (AUC)", + 'German University in Cairo (GUC)', + 'Future University in Egypt (FUE)', + 'British University in Egypt (BUE)', + 'Misr International University (MIU)', + 'Canadian International College (CIC)', + 'October 6 University (O6U)', + "Cairo University", + // Add names for 8 more universities... + ]; +} + + +================================================== +FILE PATH: ./lib/constant/country_polygons.dart +================================================== + +// في ملف: constant/country_polygons.dart + +import 'package:google_maps_flutter/google_maps_flutter.dart'; + +class CountryPolygons { + // ========================================================== + // 1. الأردن: تغطية الممر الحضري الرئيسي (من إربد شمالاً حتى العقبة جنوباً) + // حوالي 12 نقطة + // ========================================================== + static final List jordanBoundary = [ + // شمال إربد (قرب الحدود) + const LatLng(32.65, 35.80), + // شمال شرق المفرق + const LatLng(32.35, 37.00), + // شرق الزرقاء / الأزرق + const LatLng(31.85, 36.80), + // جنوب شرق (نهاية الزحف السكاني) + const LatLng(31.00, 36.50), + // جنوب / معان + const LatLng(30.30, 35.75), + // العقبة + const LatLng(29.50, 35.00), + // البحر الأحمر / الحدود الغربية + const LatLng(29.50, 34.85), + // غرب وادي عربة + const LatLng(30.80, 35.25), + // منطقة البحر الميت / السلط + const LatLng(32.00, 35.50), + // العودة عبر وادي الأردن إلى الشمال + const LatLng(32.45, 35.60), + // العودة لنقطة إربد + const LatLng(32.65, 35.80), + ]; + + // ========================================================== + // 2. سوريا: تغطية الممر الغربي والساحلي (درعا، دمشق، حمص، حماة، حلب، الساحل) + // حوالي 14 نقطة + // ========================================================== + static final List syriaBoundary = [ + // درعا / الجنوب + const LatLng(32.65, 35.95), + // شرق السويداء (حدود المنطقة المأهولة) + const LatLng(32.85, 37.10), + // أطراف دمشق الشرقية + const LatLng(33.50, 36.65), + // تدمر (أقصى امتداد شرقي للمضلع) + const LatLng(34.50, 38.30), + // الرقة (شمال شرق) + const LatLng(35.95, 38.80), + // حلب (الشمال) + const LatLng(36.45, 37.15), + // الحدود الشمالية الغربية (إدلب / تركيا) + const LatLng(36.50, 36.50), + // اللاذقية (الساحل) + const LatLng(35.50, 35.75), + // طرطوس (الساحل) + const LatLng(34.80, 35.85), + // حمص + const LatLng(34.70, 36.70), + // حماة + const LatLng(35.10, 36.70), + // العودة إلى منطقة دمشق + const LatLng(33.40, 36.30), + // العودة إلى درعا + const LatLng(32.65, 35.95), + ]; + + // ========================================================== + // 3. مصر: تغطية القاهرة الكبرى، الدلتا، والإسكندرية والإسماعيلية + // حوالي 10 نقاط + // ========================================================== + static final List egyptBoundary = [ + // جنوب الفيوم (أقصى امتداد جنوبي غربي) + const LatLng(29.20, 30.60), + // جنوب القاهرة (العياط) + const LatLng(29.80, 31.30), + // شرق السويس + const LatLng(29.95, 32.70), + // الإسماعيلية / القناة + const LatLng(30.60, 32.25), + // بورسعيد / أطراف الدلتا الشمالية الشرقية + const LatLng(31.30, 31.80), + // دمياط / ساحل الدلتا + const LatLng(31.50, 31.25), + // الإسكندرية (أقصى الشمال الغربي) + const LatLng(31.20, 29.80), + // غرب الدلتا + const LatLng(30.50, 30.20), + // العودة لنقطة البداية + const LatLng(29.20, 30.60), + ]; + + // دالة تُرجع رابط API بناءً على اسم الدولة + static String getRoutingApiUrl(String countryName) { + switch (countryName) { + case 'Jordan': + return 'https://routec.intaleq.xyz/route-jo'; + case 'Syria': + return 'https://routec.intaleq.xyz/route'; + case 'Egypt': + return 'https://routec.intaleq.xyz/route-eg'; + default: + // الافتراضي في حالة لم يقع الموقع ضمن أي من المضلعات + return 'https://routec.intaleq.xyz/route'; + } + } +} + + +================================================== +FILE PATH: ./lib/constant/style.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; +import '../main.dart'; +import 'box_name.dart'; +import 'colors.dart'; + +class AppStyle { + static TextStyle headTitle = TextStyle( + fontWeight: FontWeight.bold, + fontSize: 36, + color: AppColor.accentColor, + fontFamily: box.read(BoxName.lang) == 'ar' + // ?GoogleFonts.markaziText().fontFamily + ? GoogleFonts.markaziText().fontFamily + : GoogleFonts.inter().fontFamily); + static TextStyle headTitle2 = TextStyle( + fontWeight: FontWeight.bold, + fontSize: 24, + color: AppColor.writeColor, + fontFamily: box.read(BoxName.lang) == 'ar' + ? GoogleFonts.markaziText().fontFamily + : GoogleFonts.inter().fontFamily); + static TextStyle title = TextStyle( + fontWeight: FontWeight.normal, + fontSize: 16, + color: AppColor.writeColor, + fontFamily: box.read(BoxName.lang) == 'ar' + ? GoogleFonts.markaziText().fontFamily + : GoogleFonts.inter().fontFamily); + static TextStyle subtitle = TextStyle( + fontWeight: FontWeight.bold, + fontSize: 12, + color: AppColor.writeColor, + fontFamily: box.read(BoxName.lang) == 'ar' + ? GoogleFonts.markaziText().fontFamily + : GoogleFonts.inter().fontFamily); + static TextStyle number = const TextStyle( + fontWeight: FontWeight.bold, + fontSize: 14, + color: AppColor.writeColor, + fontFamily: 'digit'); + + static BoxDecoration boxDecoration = const BoxDecoration( + boxShadow: [ + BoxShadow( + color: AppColor.accentColor, blurRadius: 5, offset: Offset(2, 4)), + BoxShadow( + color: AppColor.accentColor, blurRadius: 5, offset: Offset(-2, -2)) + ], + color: AppColor.secondaryColor, + borderRadius: BorderRadius.all( + Radius.elliptical(15, 30), + )); + static BoxDecoration boxDecoration1 = const BoxDecoration( + boxShadow: [ + BoxShadow( + color: Color.fromARGB(255, 237, 230, 230), + blurRadius: 5, + offset: Offset(2, 4)), + BoxShadow( + color: Color.fromARGB(255, 242, 237, 237), + blurRadius: 5, + offset: Offset(-2, -2)) + ], + color: AppColor.secondaryColor, + borderRadius: BorderRadius.all( + Radius.elliptical(15, 30), + ), + ); +} + + +================================================== +FILE PATH: ./lib/views/home/setting_page.dart +================================================== + +import 'package:Intaleq/controller/home/home_page_controller.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/views/lang/languages.dart'; + +import 'HomePage/about_page.dart'; +import 'HomePage/frequentlyQuestionsPage.dart'; +import 'HomePage/share_app_page.dart'; +import 'HomePage/trip_record_page.dart'; + +// NOTE: This is a placeholder for your actual CountryPickerFromSetting widget. +// You should remove this and import your own widget. +class CountryPickerFromSetting extends StatelessWidget { + const CountryPickerFromSetting({super.key}); + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: Text('Change Country'.tr)), + body: Center( + child: Text('Country Picker Page Placeholder'.tr), + ), + ); + } +} + +class SettingPage extends StatelessWidget { + const SettingPage({super.key}); + + @override + Widget build(BuildContext context) { + // Using lazyPut to ensure the controller is available when needed. + Get.lazyPut(() => HomePageController()); + + return Scaffold( + backgroundColor: + const Color(0xFFF5F5F7), // A slightly off-white background + appBar: AppBar( + title: Text('Setting'.tr, + style: const TextStyle( + color: Colors.black87, fontWeight: FontWeight.bold)), + backgroundColor: Colors.white, + elevation: 0.5, + leading: IconButton( + icon: const Icon(Icons.arrow_back_ios_new, color: Colors.black87), + onPressed: () => Get.back(), + ), + ), + body: SafeArea( + child: ListView( + padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 20.0), + children: [ + _buildSectionHeader('General'.tr), + _buildSettingsCard( + children: [ + _buildSettingsTile( + icon: Icons.language, + color: Colors.blue, + title: 'Language'.tr, + subtitle: 'To change Language the App'.tr, + onTap: () => Get.to(() => const Language()), + ), + // const Divider(height: 1, indent: 68, endIndent: 16), + // _buildSettingsTile( + // icon: Icons.map_outlined, + // color: Colors.green, + // title: 'Change Country'.tr, + // subtitle: 'You can change the Country to get all features'.tr, + // onTap: () => Get.to(() => const CountryPickerFromSetting()), + // ), + ], + ), + const SizedBox(height: 24), + _buildSectionHeader('Preferences'.tr), + _buildSettingsCard( + children: [ + GetBuilder( + builder: (controller) { + return _buildSettingsSwitchTile( + icon: Icons.vibration, + color: Colors.purple, + title: 'Vibration'.tr, + subtitle: 'Vibration feedback for all buttons'.tr, + value: controller.isVibrate, + onChanged: controller.changeVibrateOption, + ); + }, + ), + const Divider(height: 1, indent: 68, endIndent: 16), + _buildSettingsTile( + icon: Icons.mic_none, + color: Colors.orange, + title: 'Trips recorded'.tr, + subtitle: 'Here recorded trips audio'.tr, + onTap: () => Get.to(() => const TripsRecordedPage()), + ), + ], + ), + const SizedBox(height: 24), + _buildSectionHeader('Support & Info'.tr), + _buildSettingsCard( + children: [ + _buildSettingsTile( + icon: Icons.help_outline, + color: Colors.cyan, + title: 'Frequently Questions'.tr, + subtitle: 'Find answers to common questions'.tr, + onTap: () => Get.to(() => const FrequentlyQuestionsPage()), + ), + const Divider(height: 1, indent: 68, endIndent: 16), + _buildSettingsTile( + icon: Icons.info_outline, + color: Colors.indigo, + title: 'About Us'.tr, + subtitle: 'Learn more about our app and mission'.tr, + onTap: () => Get.to(() => const AboutPage()), + ), + const Divider(height: 1, indent: 68, endIndent: 16), + _buildSettingsTile( + icon: Icons.share_outlined, + color: Colors.redAccent, + title: 'Share App'.tr, + subtitle: 'Share with friends and earn rewards'.tr, + onTap: () => Get.to(() => ShareAppPage()), + ), + ], + ), + ], + ), + ), + ); + } + + Widget _buildSectionHeader(String title) { + return Padding( + padding: const EdgeInsets.only(bottom: 12.0, left: 8.0), + child: Text( + title, + style: TextStyle( + color: Colors.grey[700], + fontWeight: FontWeight.bold, + fontSize: 15, + ), + ), + ); + } + + Widget _buildSettingsCard({required List children}) { + return Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + ), + clipBehavior: Clip.antiAlias, + child: Column( + children: children, + ), + ); + } + + Widget _buildSettingsTile({ + required IconData icon, + required Color color, + required String title, + required String subtitle, + required VoidCallback onTap, + }) { + return ListTile( + onTap: onTap, + leading: Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: color.withOpacity(0.1), + borderRadius: BorderRadius.circular(10), + ), + child: Icon(icon, color: color, size: 22), + ), + title: Text(title, + style: const TextStyle(fontWeight: FontWeight.w500, fontSize: 16)), + subtitle: Text(subtitle, + style: TextStyle(color: Colors.grey[600], fontSize: 13)), + trailing: Icon(Icons.chevron_right, color: Colors.grey[400]), + contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 6), + ); + } + + Widget _buildSettingsSwitchTile({ + required IconData icon, + required Color color, + required String title, + required String subtitle, + required bool value, + required ValueChanged onChanged, + }) { + return SwitchListTile( + secondary: Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: color.withOpacity(0.1), + borderRadius: BorderRadius.circular(10), + ), + child: Icon(icon, color: color, size: 22), + ), + title: Text(title, + style: const TextStyle(fontWeight: FontWeight.w500, fontSize: 16)), + subtitle: Text(subtitle, + style: TextStyle(color: Colors.grey[600], fontSize: 13)), + value: value, + onChanged: onChanged, + activeColor: const Color(0xFF007AFF), // iOS-like blue + contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 6), + ); + } +} + + +================================================== +FILE PATH: ./lib/views/home/map_page_passenger.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import '../../constant/box_name.dart'; +import '../../constant/colors.dart'; +import '../../controller/functions/crud.dart'; +import '../../controller/functions/package_info.dart'; +import '../../controller/home/map_passenger_controller.dart'; +import '../../main.dart'; +import '../../views/home/map_widget.dart/ride_begin_passenger.dart'; + +import '../../controller/home/menu_controller.dart'; +import 'map_widget.dart/apply_order_widget.dart'; +import 'map_widget.dart/buttom_sheet_map_show.dart'; +import 'map_widget.dart/car_details_widget_to_go.dart'; +import 'map_widget.dart/cash_confirm_bottom_page.dart'; +import 'map_widget.dart/google_map_passenger_widget.dart'; +import 'map_widget.dart/left_main_menu_icons.dart'; +import 'map_widget.dart/main_bottom_menu_map.dart'; +import 'map_widget.dart/map_menu_widget.dart'; +import 'map_widget.dart/menu_map_page.dart'; +import 'map_widget.dart/passengerRideLoctionWidget.dart'; +import 'map_widget.dart/payment_method.page.dart'; +import 'map_widget.dart/points_page_for_rider.dart'; +import 'map_widget.dart/ride_from_start_app.dart'; +import 'map_widget.dart/searching_captain_window.dart'; +import 'map_widget.dart/vip_begin.dart'; + +class MapPagePassenger extends StatelessWidget { + const MapPagePassenger({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(MapPassengerController()); + Get.put(MyMenuController()); + Get.put(CRUD()); + WidgetsBinding.instance.addPostFrameCallback((_) { + checkForUpdate(context); + }); + + return Scaffold( + body: SafeArea( + bottom: true, + child: Stack( + children: [ + GoogleMapPassengerWidget(), + // OsmMapPassengerWidget(), + leftMainMenuIcons(), + // PaymobPackage(), + const PickerIconOnMap(), + // PickerAnimtionContainerFormPlaces(), + const MainBottomMenuMap(), + // NewMainBottomSheet(), + + buttomSheetMapPage(), + CarDetailsTypeToChoose(), + // const HeaderDestination(), + const BurcMoney(), + // const PromoCode(), + ApplyOrderWidget(), + const MapMenuWidget(), + // hexagonClipper(), + const CancelRidePageShow(), + CashConfirmPageShown(), + const PaymentMethodPage(), + const SearchingCaptainWindow(), + // timerForCancelTripFromPassenger(), + // const DriverTimeArrivePassengerPage(), + // const TimerToPassengerFromDriver(), + const PassengerRideLocationWidget(), + const RideBeginPassenger(), + const VipRideBeginPassenger(), + const RideFromStartApp(), + + // cancelRidePage(), + // const MenuIconMapPageWidget(), + PointsPageForRider() + ], + ), + ), + ); + } +} + +class CancelRidePageShow extends StatelessWidget { + const CancelRidePageShow({ + super.key, + }); + + @override + Widget build(BuildContext context) { + return GetBuilder( + builder: (controller) { + // نستخدم RideState Enum لأنه أدق، أو نصلح المنطق النصي + // الشرط: + // 1. يوجد خط مسار + // 2. الحالة ليست "بدأت" + // 3. الحالة ليست "انتهت" + // 4. الحالة ليست "قيد التنفيذ" (لزيادة التأكيد) + + // bool showCancelButton = controller.polyLines.isNotEmpty && + // controller.statusRide != 'Begin' && // استخدمنا && + // controller.statusRide != 'inProgress' && + // controller.statusRide != 'Finished'; + + // يمكنك أيضاً استخدام RideState ليكون أدق: + bool showCancelButton = controller.polyLines.isNotEmpty && + controller.currentRideState.value != RideState.inProgress && + controller.currentRideState.value != RideState.finished; + + return showCancelButton + ? Positioned( + right: box.read(BoxName.lang) != 'ar' ? 10 : null, + left: box.read(BoxName.lang) == 'ar' ? 10 : null, + top: Get.height * .013, + child: GestureDetector( + onTap: () { + // استدعاء دالة الإلغاء + controller.changeCancelRidePageShow(); + // ملاحظة: تأكد أن الدالة تظهر ديالوج للتأكيد أولاً ولا تلغي فوراً + }, + child: Container( + decoration: BoxDecoration( + color: AppColor.redColor, + borderRadius: BorderRadius.circular(15)), + child: const Padding( + padding: EdgeInsets.all(3), + child: Icon( + Icons.clear, + size: 40, + color: AppColor.secondaryColor, + ), + ), + ), + )) + : const SizedBox(); + }, + ); + } +} + +class PickerIconOnMap extends StatelessWidget { + const PickerIconOnMap({ + super.key, + }); + + @override + Widget build(BuildContext context) { + return GetBuilder( + builder: (controller) => controller.isPickerShown + ? Positioned( + bottom: Get.height * .2, + top: 0, + left: 0, + right: 0, + child: controller.isPickerShown + ? const Icon( + Icons.add_location, + color: Colors.purple, + ) + : const SizedBox(), + ) + : const SizedBox()); + } +} + + +================================================== +FILE PATH: ./lib/views/home/drawer_menu_page.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:Intaleq/constant/colors.dart'; + +class DrawerMenuPage extends StatelessWidget { + const DrawerMenuPage({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + height: 500, + color: AppColor.secondaryColor.withOpacity(.5), + child: Column( + children: [ + Container( + height: 100, + color: AppColor.secondaryColor, + ), + Container( + color: Colors.transparent, + ) + ], + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/views/home/HomePage/contact_us.dart +================================================== + +import 'package:Intaleq/constant/colors.dart'; +import 'package:Intaleq/constant/style.dart'; +// ignore: unused_import +import 'package:Intaleq/controller/functions/launch.dart'; +import 'package:Intaleq/views/widgets/my_scafold.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_font_icons/flutter_font_icons.dart'; +import 'package:get/get.dart'; + +import '../../../controller/functions/tts.dart'; +import '../../../controller/home/contact_us_controller.dart'; + +class ContactUsPage extends StatelessWidget { + ContactUsPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(ContactUsController()); + return GetBuilder(builder: (controller) { + return MyScafolld( + title: "Contact Us".tr, + body: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: ListView( + // crossAxisAlignment: CrossAxisAlignment.center, + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + decoration: AppStyle.boxDecoration1, + child: Column( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(15), + child: Image.asset('assets/images/logo.gif')), + IconButton( + onPressed: () async { + Get.put(TextToSpeechController()).speakText( + 'Intaleq is the safest and most reliable ride-sharing app designed especially for passengers in Syria. We provide a comfortable, respectful, and affordable riding experience with features that prioritize your safety and convenience. Our trusted captains are verified, insured, and supported by regular car maintenance carried out by top engineers. We also offer on-road support services to make sure every trip is smooth and worry-free. With Intaleq, you enjoy quality, safety, and peace of mind—every time you ride.' + .tr); + }, + icon: const Icon(Icons.headphones), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + 'Intaleq is the safest and most reliable ride-sharing app designed especially for passengers in Syria. We provide a comfortable, respectful, and affordable riding experience with features that prioritize your safety and convenience. Our trusted captains are verified, insured, and supported by regular car maintenance carried out by top engineers. We also offer on-road support services to make sure every trip is smooth and worry-free. With Intaleq, you enjoy quality, safety, and peace of mind—every time you ride.' + .tr, + style: AppStyle.title, + textAlign: TextAlign.center, + ), + ), + ], + ), + ), + const SizedBox( + height: 30, + ), + Container( + decoration: AppStyle.boxDecoration1, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + "You can contact us during working hours from 10:00 - 16:00." + .tr, + style: AppStyle.title, + textAlign: TextAlign.center, + ), + ), + ), + InkWell( + onTap: () => controller.showContactDialog(context), + child: const Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Icon( + Icons.phone, + color: AppColor.blueColor, + ), + Icon( + FontAwesome.whatsapp, + color: AppColor.greenColor, + ), + Icon( + Icons.email, + color: AppColor.redColor, + ), + ], + ), + ), + const SizedBox( + height: 30, + ) + ], + ), + ) + ], + isleading: true); + }); + } +} + + +================================================== +FILE PATH: ./lib/views/home/HomePage/share_app_page.dart +================================================== + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../../constant/colors.dart'; +import '../../../controller/home/profile/invit_controller.dart'; +import '../../../print.dart'; + +class ShareAppPage extends StatelessWidget { + final InviteController controller = Get.put(InviteController()); + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: CupertinoColors.systemBackground, + appBar: AppBar( + backgroundColor: CupertinoColors.systemBackground, + elevation: 0, + title: Text( + 'Invite'.tr, + style: const TextStyle(color: CupertinoColors.label), + ), + leading: IconButton( + icon: const Icon(Icons.arrow_back_ios, color: AppColor.blueColor), + onPressed: () => Get.back(), + ), + ), + body: SafeArea( + child: GetBuilder( + builder: (controller) { + return Column( + children: [ + Expanded( + child: SingleChildScrollView( + padding: const EdgeInsets.all(16), + child: _buildPassengerTab(context), + ), + ), + ], + ); + }, + ), + ), + ); + } + + Widget _buildPassengerTab(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: CupertinoColors.systemGrey6, + borderRadius: BorderRadius.circular(12), + ), + child: Column( + children: [ + Text( + "Share this code with your friends and earn rewards when they use it!" + .tr, + textAlign: TextAlign.center, + style: const TextStyle( + color: CupertinoColors.secondaryLabel, + fontSize: 13, + ), + ), + ], + ), + ), + const SizedBox(height: 20), + _buildPhoneInput(), + const SizedBox(height: 20), + _buildActionButtonsPassengers(), + const SizedBox(height: 20), + const SizedBox(height: 20), + _buildInvitationsListPassengers(context), + ], + ); + } + + // Widget _buildPhoneInput() { + // return Container( + // decoration: BoxDecoration( + // color: CupertinoColors.systemGrey6, + // borderRadius: BorderRadius.circular(8), + // ), + // child: Row( + // children: [ + // Expanded( + // child: CupertinoTextField.borderless( + // controller: controller.invitePhoneController, + // placeholder: 'Enter phone'.tr, + // padding: const EdgeInsets.all(12), + // keyboardType: TextInputType.phone, + // ), + // ), + // CupertinoButton( + // child: const Icon(CupertinoIcons.person_badge_plus, + // color: AppColor.blueColor), + // onPressed: () async { + // await controller.pickContacts(); + // if (controller.contacts.isNotEmpty) { + // if (box.read(BoxName.isSavedPhones) == null) { + // controller.savePhoneToServer(); + // box.write(BoxName.isSavedPhones, true); + // } + // _showContactsDialog(Get.context!); + // } + // }, + // ), + // ], + // ), + // ); + // } + Widget _buildPhoneInput() { + return Container( + decoration: BoxDecoration( + color: CupertinoColors.systemGrey6, + borderRadius: BorderRadius.circular(8), + ), + child: Row( + children: [ + Expanded( + child: CupertinoTextField.borderless( + controller: controller.invitePhoneController, + placeholder: 'Enter phone'.tr, + padding: const EdgeInsets.all(12), + keyboardType: TextInputType.phone, + ), + ), + CupertinoButton( + child: const Icon(CupertinoIcons.person_badge_plus, + color: AppColor.blueColor), + onPressed: () async { + await controller.pickContacts(); + Log.print('contacts: ${controller.contacts}'); + if (controller.contacts.isNotEmpty) { + _showContactsDialog(Get + .context!); // Show contacts dialog after loading contacts + } else { + Get.snackbar( + 'No contacts available'.tr, + 'Please add contacts to your phone.'.tr, + ); + } + }, + ), + ], + ), + ); + } + + Widget _buildActionButtonsPassengers() { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 20.0, horizontal: 16.0), + child: Row( + children: [ + Expanded( + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.1), + blurRadius: 6, + offset: const Offset(0, 3), + ), + ], + ), + child: CupertinoButton( + color: AppColor.blueColor, + borderRadius: BorderRadius.circular(10), + padding: const EdgeInsets.symmetric(vertical: 14), + onPressed: controller.sendInviteToPassenger, + child: Text( + 'Send Invite'.tr, + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: CupertinoColors.white, + ), + ), + ), + ), + ), + const SizedBox(width: 16), + Expanded( + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.1), + blurRadius: 6, + offset: const Offset(0, 3), + ), + ], + ), + child: CupertinoButton( + color: AppColor.blueColor, + borderRadius: BorderRadius.circular(10), + padding: const EdgeInsets.symmetric(vertical: 14), + child: Text( + 'Show Invitations'.tr, + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: CupertinoColors.white, + ), + ), + onPressed: () async { + controller.fetchDriverStatsPassengers(); + }, + ), + ), + ), + ], + ), + ); + } + + Widget _buildInvitationsListPassengers(BuildContext context) { + return SizedBox( + height: Get.height * .4, + child: controller.driverInvitationDataToPassengers.isEmpty + ? Center( + child: Text( + "No invitation found yet!".tr, + style: const TextStyle( + color: CupertinoColors.secondaryLabel, + fontSize: 17, + ), + ), + ) + : ListView.builder( + itemCount: controller.driverInvitationDataToPassengers.length, + itemBuilder: (context, index) { + return _buildInvitationItemPassengers(context, index); + }, + ), + ); + } + + Widget _buildInvitationItemPassengers(BuildContext context, int index) { + // Extracting the data from the sample JSON-like structure + var invitation = controller.driverInvitationDataToPassengers[index]; + + int countOfInvitDriver = + int.tryParse(invitation['countOfInvitDriver']?.toString() ?? '0') ?? 0; + double progressValue = (countOfInvitDriver / 10.0).clamp(0.0, 1.0); + + return GestureDetector( + onTap: () { + controller.onSelectPassengerInvitation(index); + }, + child: Container( + margin: const EdgeInsets.symmetric(vertical: 8.0), + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: CupertinoColors.systemGrey6, + borderRadius: BorderRadius.circular(12), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + invitation['passengerName'] + .toString(), // Handle null or missing data + style: const TextStyle( + fontSize: 17, + fontWeight: FontWeight.w600, + color: CupertinoColors.label, + ), + ), + const SizedBox(height: 8), + ClipRRect( + borderRadius: BorderRadius.circular(4), + child: LinearProgressIndicator( + value: progressValue, + backgroundColor: CupertinoColors.systemGrey4, + valueColor: + const AlwaysStoppedAnimation(AppColor.blueColor), + minHeight: 6, + ), + ), + const SizedBox(height: 4), + Text( + '$countOfInvitDriver / 2 ${'Trip'.tr}', // Show trips completed + style: const TextStyle( + fontSize: 13, + color: CupertinoColors.secondaryLabel, + ), + ), + ], + ), + ), + ); + } + + Widget _buildPassengerStats(BuildContext context) { + return Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: CupertinoColors.systemGrey6, + borderRadius: BorderRadius.circular(12), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "Your Rewards".tr, + style: const TextStyle( + fontSize: 17, + fontWeight: FontWeight.w600, + color: CupertinoColors.label, + ), + ), + const SizedBox(height: 16), + _buildStatItem( + context, + "Total Invites".tr, + controller.driverInvitationDataToPassengers[0]['countOfInvitDriver'] + .toString(), + ), + _buildStatItem( + context, + "Active Users".tr, + controller.driverInvitationDataToPassengers[0]['passengerName'] + .toString(), + ), + ], + ), + ); + } + + Widget _buildStatItem(BuildContext context, String label, String value) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 8.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + label, + style: const TextStyle( + color: CupertinoColors.label, + fontSize: 15, + ), + ), + Text( + value, + style: const TextStyle( + fontWeight: FontWeight.w600, + color: AppColor.blueColor, + fontSize: 15, + ), + ), + ], + ), + ); + } + + void _showContactsDialog(BuildContext context) { + Get.defaultDialog( + title: 'Choose from contact'.tr, + content: SizedBox( + height: 400, + width: 400, + child: Column( + children: [ + // Header with cancel and title + // Container( + // padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + // decoration: const BoxDecoration( + // borderRadius: BorderRadius.vertical(top: Radius.circular(20)), + // color: CupertinoColors.systemGrey6, + // ), + // child: Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // CupertinoButton( + // padding: EdgeInsets.zero, + // child: Text( + // 'Cancel'.tr, + // style: const TextStyle(color: CupertinoColors.systemBlue), + // ), + // onPressed: () => Navigator.pop(context), + // ), + // Container( + // child: Text('Choose from contact'.tr, + // style: AppStyle.title)), + // const SizedBox(width: 60), // Balance for Cancel button + // ], + // ), + // ), + + // Contact list + Expanded( + child: ListView.builder( + itemCount: controller.contactMaps.length, + itemBuilder: (context, index) { + final contact = controller.contactMaps[index]; + return CupertinoButton( + padding: EdgeInsets.zero, + onPressed: () { + controller.selectPhone(contact['phones'].toString()); + }, + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 16, vertical: 12), + decoration: BoxDecoration( + color: CupertinoColors.systemBackground, + border: Border( + bottom: BorderSide( + color: CupertinoColors.separator.withOpacity(0.5), + ), + ), + ), + child: Row( + children: [ + // Display contact name and phone number + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + contact['name'], + style: const TextStyle( + color: CupertinoColors.label, + fontSize: 17, + fontWeight: FontWeight.w500, + ), + ), + Text( + (contact['phones'][0].toString()), + style: const TextStyle( + color: CupertinoColors.secondaryLabel, + fontSize: 15, + ), + ), + ], + ), + ), + // Chevron icon for selection + const Icon( + CupertinoIcons.chevron_forward, + color: CupertinoColors.systemGrey2, + ), + ], + ), + ), + ); + }, + ), + ), + ], + ), + ), + ); + // showCupertinoModalPopup( + // context: context, + // builder: (BuildContext context) => Container( + // height: 400, + // decoration: BoxDecoration( + // color: CupertinoColors.systemBackground, + // borderRadius: const BorderRadius.vertical(top: Radius.circular(20)), + // boxShadow: [ + // BoxShadow( + // color: CupertinoColors.black.withOpacity(0.2), + // offset: const Offset(0, -4), + // blurRadius: 10, + // ), + // ], + // ), + // child: Column( + // children: [ + // // Header with cancel and title + // Container( + // padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + // decoration: const BoxDecoration( + // borderRadius: BorderRadius.vertical(top: Radius.circular(20)), + // color: CupertinoColors.systemGrey6, + // ), + // child: Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // CupertinoButton( + // padding: EdgeInsets.zero, + // child: Text( + // 'Cancel'.tr, + // style: const TextStyle(color: CupertinoColors.systemBlue), + // ), + // onPressed: () => Navigator.pop(context), + // ), + // Container( + // child: Text('Choose from contact'.tr, + // style: AppStyle.title)), + // const SizedBox(width: 60), // Balance for Cancel button + // ], + // ), + // ), + + // // Contact list + // Expanded( + // child: ListView.builder( + // itemCount: controller.contactMaps.length, + // itemBuilder: (context, index) { + // final contact = controller.contactMaps[index]; + // return CupertinoButton( + // padding: EdgeInsets.zero, + // onPressed: () { + // controller.selectPhone(contact['phones'].toString()); + // }, + // child: Container( + // padding: const EdgeInsets.symmetric( + // horizontal: 16, vertical: 12), + // decoration: BoxDecoration( + // color: CupertinoColors.systemBackground, + // border: Border( + // bottom: BorderSide( + // color: CupertinoColors.separator.withOpacity(0.5), + // ), + // ), + // ), + // child: Row( + // children: [ + // // Display contact name and phone number + // Expanded( + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // Text( + // contact['name'], + // style: const TextStyle( + // color: CupertinoColors.label, + // fontSize: 17, + // fontWeight: FontWeight.w500, + // ), + // ), + // Text( + // controller.formatPhoneNumber( + // contact['phones'][0].toString()), + // style: const TextStyle( + // color: CupertinoColors.secondaryLabel, + // fontSize: 15, + // ), + // ), + // ], + // ), + // ), + // // Chevron icon for selection + // const Icon( + // CupertinoIcons.chevron_forward, + // color: CupertinoColors.systemGrey2, + // ), + // ], + // ), + // ), + // ); + // }, + // ), + // ), + // ], + // ), + // ), + // ); + } +} + + +================================================== +FILE PATH: ./lib/views/home/HomePage/about_page.dart +================================================== + +import 'package:flutter/cupertino.dart'; +import 'package:get/get.dart'; + +class AboutPage extends StatelessWidget { + const AboutPage({super.key}); + + @override + Widget build(BuildContext context) { + return CupertinoPageScaffold( + navigationBar: CupertinoNavigationBar( + middle: Text('About Us'.tr), + ), + child: SafeArea( + child: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(20.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + // Company Logo + Center( + child: Image.asset( + 'assets/images/logo.gif', // Replace with your logo image asset path + height: 80.0, + ), + ), + const SizedBox(height: 20), + + // Company Name and Introduction + Text( + 'Intaleq LLC', + style: CupertinoTheme.of(context).textTheme.navTitleTextStyle, + textAlign: TextAlign.center, + ), + const SizedBox(height: 8), + Text( + "Syria's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains." + .tr, + style: CupertinoTheme.of(context).textTheme.textStyle, + textAlign: TextAlign.center, + ), + const SizedBox(height: 30), + + // Key Features Section + Text( + 'Why Choose Intaleq?'.tr, + style: CupertinoTheme.of(context).textTheme.navTitleTextStyle, + textAlign: TextAlign.center, + ), + const SizedBox(height: 15), + + // Nearest Availability + Row( + children: [ + const Icon(CupertinoIcons.location_solid, + color: CupertinoColors.activeBlue), + const SizedBox(width: 10), + Expanded( + child: Text( + 'Closest to You'.tr, + style: CupertinoTheme.of(context).textTheme.textStyle, + ), + ), + ], + ), + const SizedBox(height: 10), + Text( + 'We connect you with the nearest drivers for faster pickups and quicker journeys.' + .tr, + style: CupertinoTheme.of(context) + .textTheme + .textStyle + .copyWith(color: CupertinoColors.secondaryLabel), + ), + const SizedBox(height: 20), + + // High-Level Security + Row( + children: [ + const Icon(CupertinoIcons.shield_fill, + color: CupertinoColors.activeGreen), + const SizedBox(width: 10), + Expanded( + child: Text( + 'Uncompromising Security'.tr, + style: CupertinoTheme.of(context).textTheme.textStyle, + ), + ), + ], + ), + const SizedBox(height: 10), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + const Icon(CupertinoIcons.person_2_fill, + size: 18, color: CupertinoColors.activeGreen), + const SizedBox(width: 5), + Text( + 'Lady Captains Available'.tr, + style: CupertinoTheme.of(context) + .textTheme + .textStyle + .copyWith(fontSize: 15), + ), + ], + ), + const SizedBox(height: 5), + Row( + children: [ + const Icon(CupertinoIcons.recordingtape, + size: 18, color: CupertinoColors.activeGreen), + const SizedBox(width: 5), + Text( + 'Recorded Trips (Voice & AI Analysis)'.tr, + style: CupertinoTheme.of(context) + .textTheme + .textStyle + .copyWith(fontSize: 15), + ), + ], + ), + ], + ), + const SizedBox(height: 20), + + // Fast Support + Row( + children: [ + const Icon(CupertinoIcons.bolt_horizontal_fill, + color: CupertinoColors.systemOrange), + const SizedBox(width: 10), + Expanded( + child: Text( + 'Fastest Complaint Response'.tr, + style: CupertinoTheme.of(context).textTheme.textStyle, + ), + ), + ], + ), + const SizedBox(height: 10), + Text( + 'Our dedicated customer service team ensures swift resolution of any issues.' + .tr, + style: CupertinoTheme.of(context) + .textTheme + .textStyle + .copyWith(color: CupertinoColors.secondaryLabel), + ), + const SizedBox(height: 20), + + // Affordable Pricing + Row( + children: [ + const Icon(CupertinoIcons.money_dollar_circle_fill, + color: CupertinoColors.activeBlue), + const SizedBox(width: 10), + Expanded( + child: Text( + 'Affordable for Everyone'.tr, + style: CupertinoTheme.of(context).textTheme.textStyle, + ), + ), + ], + ), + const SizedBox(height: 10), + Text( + 'Enjoy competitive prices across all trip options, making travel accessible.' + .tr, + style: CupertinoTheme.of(context) + .textTheme + .textStyle + .copyWith(color: CupertinoColors.secondaryLabel), + ), + const SizedBox(height: 20), + + // Trip Options + Row( + children: [ + const Icon(CupertinoIcons.car_detailed, + color: CupertinoColors.systemPurple), + const SizedBox(width: 10), + Expanded( + child: Text( + 'Variety of Trip Choices'.tr, + style: CupertinoTheme.of(context).textTheme.textStyle, + ), + ), + ], + ), + const SizedBox(height: 10), + Text( + 'Choose the trip option that perfectly suits your needs and preferences.' + .tr, + style: CupertinoTheme.of(context) + .textTheme + .textStyle + .copyWith(color: CupertinoColors.secondaryLabel), + ), + const SizedBox(height: 20), + + // Passenger Choice + Row( + children: [ + Icon(CupertinoIcons.hand_draw_fill, + color: CupertinoColors.systemGreen), + const SizedBox(width: 10), + Expanded( + child: Text( + 'Your Choice, Our Priority'.tr, + style: CupertinoTheme.of(context).textTheme.textStyle, + ), + ), + ], + ), + const SizedBox(height: 10), + Text( + 'Because we are near, you have the flexibility to choose the ride that works best for you.' + .tr, + style: CupertinoTheme.of(context) + .textTheme + .textStyle + .copyWith(color: CupertinoColors.secondaryLabel), + ), + ], + ), + ), + ), + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/views/home/HomePage/trip_record_page.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:path/path.dart' as path; +import 'package:share_plus/share_plus.dart'; + +import '../../../controller/functions/audio_record1.dart'; + +class TripsRecordedPage extends StatelessWidget { + const TripsRecordedPage({super.key}); + + @override + Widget build(BuildContext context) { + // Ensure the controller is available. + // If it's not initialized elsewhere, you can use Get.put() or Get.lazyPut() here. + // Get.lazyPut(() => AudioRecorderController()); + + return Scaffold( + appBar: AppBar( + title: Text('Trips recorded'.tr), + backgroundColor: Colors.white, + elevation: 1, + actions: [ + GetBuilder( + builder: (controller) => IconButton( + tooltip: 'Delete All'.tr, + icon: const Icon(Icons.delete_sweep_outlined), + onPressed: () { + _showDeleteConfirmation(context, controller, isDeleteAll: true); + }, + ), + ) + ], + ), + body: GetBuilder( + builder: (controller) { + return Column( + children: [ + Expanded( + child: _buildRecordingsList(controller), + ), + // Show player controls only when a file is selected + if (controller.selectedFilePath != null) + _buildPlayerControls(context, controller), + ], + ); + }, + ), + ); + } + + /// Builds the list of recorded audio files. + Widget _buildRecordingsList(AudioRecorderController controller) { + return FutureBuilder>( + future: controller.getRecordedFiles(), + builder: (context, snapshot) { + if (snapshot.connectionState == ConnectionState.waiting) { + return const Center(child: CircularProgressIndicator()); + } + if (snapshot.hasError) { + return Center(child: Text('Error: ${snapshot.error}'.tr)); + } + if (!snapshot.hasData || snapshot.data!.isEmpty) { + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.mic_off_outlined, size: 80, color: Colors.grey[400]), + const SizedBox(height: 16), + Text( + 'No Recordings Found'.tr, + style: TextStyle(fontSize: 18, color: Colors.grey[600]), + ), + const SizedBox(height: 8), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 40.0), + child: Text( + 'Record your trips to see them here.'.tr, + textAlign: TextAlign.center, + style: TextStyle(color: Colors.grey[500]), + ), + ), + ], + ), + ); + } + + final recordedFiles = snapshot.data!; + return ListView.builder( + padding: const EdgeInsets.only(top: 8, bottom: 8), + itemCount: recordedFiles.length, + itemBuilder: (context, index) { + final file = recordedFiles[index]; + final fileName = path.basename(file); + final isSelected = controller.selectedFilePath == file; + + return Card( + margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 6), + elevation: isSelected ? 4 : 1, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12)), + child: ListTile( + leading: Icon( + isSelected && controller.isPlaying + ? Icons.pause_circle_filled + : Icons.play_circle_fill, + color: + isSelected ? Theme.of(context).primaryColor : Colors.grey, + size: 40, + ), + title: Text(fileName, + style: const TextStyle(fontWeight: FontWeight.w500)), + subtitle: Text("Audio Recording".tr), + onTap: () { + if (isSelected) { + controller.isPlaying + ? controller.pausePlayback() + : controller.resumePlayback(); + } else { + controller.playRecordedFile(file); + } + }, + selected: isSelected, + selectedTileColor: + Theme.of(context).primaryColor.withOpacity(0.1), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12)), + ), + ); + }, + ); + }, + ); + } + + /// Builds the player UI at the bottom of the screen. + Widget _buildPlayerControls( + BuildContext context, AudioRecorderController controller) { + final fileName = path.basename(controller.selectedFilePath!); + final positionText = Duration(seconds: controller.currentPosition.toInt()) + .toString() + .split('.') + .first + .padLeft(8, '0') + .substring(3); + final durationText = Duration(seconds: controller.totalDuration.toInt()) + .toString() + .split('.') + .first + .padLeft(8, '0') + .substring(3); + + return Material( + elevation: 10, + child: Container( + padding: const EdgeInsets.symmetric(vertical: 12.0, horizontal: 16.0), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text(fileName, + style: + const TextStyle(fontWeight: FontWeight.bold, fontSize: 16), + textAlign: TextAlign.center), + const SizedBox(height: 8), + Row( + children: [ + Text(positionText), + Expanded( + child: Slider( + value: (controller.totalDuration > 0) + ? controller.currentPosition / controller.totalDuration + : 0.0, + onChanged: (value) { + final newPosition = value * controller.totalDuration; + controller.audioPlayer + .seek(Duration(seconds: newPosition.toInt())); + }, + ), + ), + Text(durationText), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + IconButton( + icon: const Icon(Icons.share_outlined), + tooltip: 'Share'.tr, + onPressed: () { + Share.shareXFiles([XFile(controller.selectedFilePath!)]); + }, + iconSize: 28, + ), + IconButton( + icon: Icon(controller.isPlaying + ? Icons.pause_circle_filled + : Icons.play_circle_filled), + onPressed: () { + controller.isPlaying + ? controller.pausePlayback() + : controller.resumePlayback(); + }, + iconSize: 56, + color: Theme.of(context).primaryColor, + ), + IconButton( + icon: + const Icon(Icons.delete_outline, color: Colors.redAccent), + tooltip: 'Delete'.tr, + onPressed: () { + _showDeleteConfirmation(context, controller, + isDeleteAll: false); + }, + iconSize: 28, + ), + ], + ) + ], + ), + ), + ); + } + + /// Shows a confirmation dialog for deleting one or all files. + void _showDeleteConfirmation( + BuildContext context, + AudioRecorderController controller, { + required bool isDeleteAll, + }) { + showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: Text(isDeleteAll + ? 'Delete All Recordings?'.tr + : 'Delete Recording?'.tr), + content: Text(isDeleteAll + ? 'This action cannot be undone.'.tr + : 'Are you sure you want to delete this file?'.tr), + actions: [ + TextButton( + child: Text('Cancel'.tr), + onPressed: () => Navigator.of(context).pop(), + ), + TextButton( + child: + Text('Delete'.tr, style: const TextStyle(color: Colors.red)), + onPressed: () async { + if (isDeleteAll) { + await controller.deleteAllRecordedFiles(); + } else { + // NOTE: You may need to add this method to your controller + // if it doesn't exist. + // await controller.deleteFile(controller.selectedFilePath!); + } + Navigator.of(context).pop(); + }, + ), + ], + ); + }, + ); + } +} + + +================================================== +FILE PATH: ./lib/views/home/HomePage/frequentlyQuestionsPage.dart +================================================== + +import 'package:Intaleq/views/home/HomePage/contact_us.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +class FrequentlyQuestionsPage extends StatelessWidget { + const FrequentlyQuestionsPage({super.key}); + + void _showAnswerDialog(BuildContext context, String question, String answer) { + showCupertinoDialog( + context: context, + builder: (BuildContext context) => CupertinoAlertDialog( + title: Text(question, + style: const TextStyle( + fontWeight: FontWeight.bold, color: Colors.indigo)), + content: Text(answer), + actions: [ + CupertinoDialogAction( + isDefaultAction: true, + onPressed: () { + Navigator.of(context).pop(); + }, + child: const Text('Close'), + ), + ], + ), + ); + } + + @override + Widget build(BuildContext context) { + return CupertinoPageScaffold( + navigationBar: CupertinoNavigationBar( + backgroundColor: Colors.indigo, + middle: Text( + 'Frequently Asked Questions'.tr, + style: const TextStyle(color: Colors.white), + ), + ), + child: SafeArea( + child: ListView( + children: [ + CupertinoListSection.insetGrouped( + header: Text( + 'Getting Started'.tr, + style: const TextStyle(fontWeight: FontWeight.bold), + ), + children: [ + CupertinoListTile( + leading: const Icon( + CupertinoIcons.car_detailed, + color: Colors.indigo, + ), + title: Text('How do I request a ride?'.tr), + trailing: const CupertinoListTileChevron(), + onTap: () => _showAnswerDialog( + context, + 'How do I request a ride?'.tr, + 'Simply open the Intaleq app, enter your destination, and tap "Request Ride". The app will connect you with a nearby driver.' + .tr, + ), + ), + ], + ), + CupertinoListSection.insetGrouped( + header: Text( + 'Vehicle Options'.tr, + style: const TextStyle(fontWeight: FontWeight.bold), + ), + children: [ + CupertinoListTile( + leading: const Icon( + CupertinoIcons.car_fill, + color: Colors.blue, + ), + title: Text('What types of vehicles are available?'.tr), + trailing: const CupertinoListTileChevron(), + onTap: () => _showAnswerDialog( + context, + 'What types of vehicles are available?'.tr, + 'Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.' + .tr, + ), + ), + ], + ), + CupertinoListSection.insetGrouped( + header: Text( + 'Payments'.tr, + style: const TextStyle(fontWeight: FontWeight.bold), + ), + children: [ + CupertinoListTile( + leading: const Icon( + CupertinoIcons.creditcard, + color: Colors.green, + ), + title: Text('How can I pay for my ride?'.tr), + trailing: const CupertinoListTileChevron(), + onTap: () => _showAnswerDialog( + context, + 'How can I pay for my ride?'.tr, + 'You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.' + .tr, + ), + ), + ], + ), + CupertinoListSection.insetGrouped( + header: Text( + 'Ride Management'.tr, + style: const TextStyle(fontWeight: FontWeight.bold), + ), + children: [ + CupertinoListTile( + leading: const Icon( + CupertinoIcons.xmark_circle_fill, + color: Colors.red, + ), + title: Text('Can I cancel my ride?'.tr), + trailing: const CupertinoListTileChevron(), + onTap: () => _showAnswerDialog( + context, + 'Can I cancel my ride?'.tr, + 'Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.' + .tr, + ), + ), + ], + ), + CupertinoListSection.insetGrouped( + header: Text( + 'For Drivers'.tr, + style: const TextStyle(fontWeight: FontWeight.bold), + ), + children: [ + CupertinoListTile( + leading: const Icon( + CupertinoIcons.person_crop_circle_fill, + color: Colors.orange, + ), + title: Text('Driver Registration & Requirements'.tr), + trailing: const CupertinoListTileChevron(), + onTap: () => showCupertinoDialog( + context: context, + builder: (BuildContext context) => CupertinoAlertDialog( + title: Text('Driver Registration'.tr, + style: const TextStyle( + fontWeight: FontWeight.bold, + color: Colors.indigo)), + content: Text( + 'To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.' + .tr), + actions: [ + CupertinoDialogAction( + isDefaultAction: true, + onPressed: () { + Get.to(() => ContactUsPage()); + // Optionally, you can open a URL here + }, + child: Text('Visit Website/Contact Support'.tr), + ), + CupertinoDialogAction( + onPressed: () { + Navigator.of(context).pop(); + }, + child: Text('Close'.tr), + ), + ], + ), + ), + ), + ], + ), + CupertinoListSection.insetGrouped( + header: Text( + 'Communication'.tr, + style: const TextStyle(fontWeight: FontWeight.bold), + ), + children: [ + CupertinoListTile( + leading: const Icon( + CupertinoIcons.chat_bubble_2_fill, + color: Colors.purple, + ), + title: Text( + 'How do I communicate with the other party (passenger/driver)?' + .tr), + trailing: const CupertinoListTileChevron(), + onTap: () => _showAnswerDialog( + context, + 'How do I communicate with the other party (passenger/driver)?' + .tr, + 'You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.' + .tr, + ), + ), + ], + ), + CupertinoListSection.insetGrouped( + header: Text( + 'Safety & Security'.tr, + style: const TextStyle(fontWeight: FontWeight.bold), + ), + children: [ + CupertinoListTile( + leading: const Icon( + CupertinoIcons.shield_fill, + color: Colors.teal, + ), + title: Text('What safety measures does Intaleq offer?'.tr), + trailing: const CupertinoListTileChevron(), + onTap: () => _showAnswerDialog( + context, + 'What safety measures does Intaleq offer?'.tr, + 'Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.' + .tr, + ), + ), + ], + ), + const SizedBox(height: 20), // Add some bottom padding + ], + ), + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/views/home/HomePage/trip_monitor/trip_monitor.dart +================================================== + +import 'dart:io'; + +import 'package:Intaleq/controller/home/trip_monitor_controller.dart'; +import 'package:Intaleq/views/widgets/my_scafold.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:vibration/vibration.dart'; + +import '../../../../constant/colors.dart'; +import '../../../../constant/style.dart'; +import '../../../widgets/elevated_btn.dart'; + +class TripMonitor extends StatelessWidget { + const TripMonitor({super.key}); + + @override + Widget build(BuildContext context) { + final params = Get.parameters; + final arguments = Get.arguments as Map?; + + // Use params or arguments to initialize your controller + final controller = Get.put(TripMonitorController()); + controller.init( + rideId: params['rideId'] ?? arguments?['rideId'], + driverId: params['driverId'] ?? arguments?['driverId'], + ); + return GetBuilder(builder: (tripMonitorController) { + return MyScafolld( + title: 'Trip Monitor'.tr, + body: [ + GoogleMap( + onMapCreated: tripMonitorController.onMapCreated, + initialCameraPosition: CameraPosition( + // bearing: 45, + target: tripMonitorController.parentLocation, + zoom: 16, + tilt: 40, + ), + // onCameraMove: (position) {}, + markers: { + Marker( + markerId: MarkerId('start'.tr), + position: tripMonitorController.parentLocation, + draggable: true, + icon: tripMonitorController.tripData['message'][0]['model'] + .contains('دراجة') + ? tripMonitorController.motoIcon + : tripMonitorController.tripData['message'][0]['model'] + ['gender'] == + 'Male' + ? tripMonitorController.carIcon + : tripMonitorController.ladyIcon, + rotation: tripMonitorController.rotation, + ), + }, + ), + speedCircle() + ], + isleading: true, + ); + }); + } +} + +GetBuilder speedCircle() { + if (Get.find().speed > 100) { + if (Platform.isIOS) { + HapticFeedback.selectionClick(); + } else { + Vibration.vibrate(duration: 1000); + } + Get.defaultDialog( + barrierDismissible: false, + titleStyle: AppStyle.title, + title: 'Speed Over'.tr, + middleText: 'Please slow down'.tr, + middleTextStyle: AppStyle.title, + confirm: MyElevatedButton( + title: 'I will slow down'.tr, + onPressed: () => Get.back(), + ), + ); + } + return GetBuilder( + builder: (tripMonitorController) { + return Positioned( + bottom: 25, + right: 100, + child: Container( + decoration: BoxDecoration( + shape: BoxShape.circle, + color: tripMonitorController.speed > 100 + ? Colors.red + : AppColor.secondaryColor, + border: Border.all(width: 3, color: AppColor.redColor), + ), + height: 60, + width: 60, + child: Center( + child: Text( + tripMonitorController.speed.toStringAsFixed(0), + style: AppStyle.number, + ), + ), + ), + ); + }, + ); +} + + +================================================== +FILE PATH: ./lib/views/home/HomePage/trip_monitor/trip_link_monitor.dart +================================================== + +import 'dart:io'; + +import 'package:Intaleq/controller/home/trip_monitor_controller.dart'; +import 'package:Intaleq/views/widgets/my_scafold.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:vibration/vibration.dart'; + +import '../../../../constant/colors.dart'; +import '../../../../constant/style.dart'; +import '../../../widgets/elevated_btn.dart'; + +class TripMonitor extends StatelessWidget { + const TripMonitor({super.key}); + + @override + Widget build(BuildContext context) { + final params = Get.parameters; + // Use params to initialize your controller or pass data + Get.put(TripMonitorController()).init(); + return GetBuilder(builder: (tripMonitorController) { + return MyScafolld( + title: 'Trip Monitor'.tr, + body: [ + GoogleMap( + onMapCreated: tripMonitorController.onMapCreated, + initialCameraPosition: CameraPosition( + // bearing: 45, + target: tripMonitorController.parentLocation, + zoom: 16, + tilt: 40, + ), + // onCameraMove: (position) {}, + markers: { + Marker( + markerId: MarkerId('start'.tr), + position: tripMonitorController.parentLocation, + draggable: true, + icon: tripMonitorController.tripData['message'][0]['model'] + .contains('دراجة') + ? tripMonitorController.motoIcon + : tripMonitorController.tripData['message'][0]['model'] + ['gender'] == + 'Male' + ? tripMonitorController.carIcon + : tripMonitorController.ladyIcon, + rotation: tripMonitorController.rotation, + ), + }, + ), + speedCircle() + ], + isleading: true, + ); + }); + } +} + +GetBuilder speedCircle() { + if (Get.find().speed > 100) { + if (Platform.isIOS) { + HapticFeedback.selectionClick(); + } else { + Vibration.vibrate(duration: 1000); + } + Get.defaultDialog( + barrierDismissible: false, + titleStyle: AppStyle.title, + title: 'Speed Over'.tr, + middleText: 'Please slow down'.tr, + middleTextStyle: AppStyle.title, + confirm: MyElevatedButton( + title: 'I will slow down'.tr, + onPressed: () => Get.back(), + ), + ); + } + return GetBuilder( + builder: (tripMonitorController) { + return Positioned( + bottom: 25, + right: 100, + child: Container( + decoration: BoxDecoration( + shape: BoxShape.circle, + color: tripMonitorController.speed > 100 + ? Colors.red + : AppColor.secondaryColor, + border: Border.all(width: 3, color: AppColor.redColor), + ), + height: 60, + width: 60, + child: Center( + child: Text( + tripMonitorController.speed.toStringAsFixed(0), + style: AppStyle.number, + ), + ), + ), + ); + }, + ); +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/form_search_start.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; + +import '../../../constant/colors.dart'; +import '../../../constant/style.dart'; +import '../../../controller/home/map_passenger_controller.dart'; + +// --------------------------------------------------- +// -- Widget for Start Point Search (Updated) -- +// --------------------------------------------------- + +GetBuilder formSearchPlacesStart() { + return GetBuilder( + id: 'start_point_form', // إضافة معرف لتحديث هذا الجزء فقط عند الحاجة + builder: (controller) => Column( + children: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0), + child: Row( + children: [ + // --- حقل البحث النصي --- + Expanded( + child: TextFormField( + controller: controller.placeStartController, + onChanged: (value) { + if (controller.placeStartController.text.length > 2) { + controller.getPlacesStart(); + } else if (controller.placeStartController.text.isEmpty) { + controller.clearPlacesStart(); + } + }, + decoration: InputDecoration( + hintText: 'Search for a starting point'.tr, + hintStyle: + AppStyle.subtitle.copyWith(color: Colors.grey[600]), + prefixIcon: + const Icon(Icons.search, color: AppColor.primaryColor), + suffixIcon: controller.placeStartController.text.isNotEmpty + ? IconButton( + icon: Icon(Icons.clear, color: Colors.grey[400]), + onPressed: () { + controller.placeStartController.clear(); + controller.clearPlacesStart(); + }, + ) + : null, + contentPadding: const EdgeInsets.symmetric( + horizontal: 16.0, vertical: 10.0), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(8.0), + borderSide: BorderSide.none, + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(8.0), + borderSide: BorderSide(color: AppColor.primaryColor), + ), + filled: true, + fillColor: Colors.grey[50], + ), + ), + ), + + const SizedBox(width: 8.0), + + // --- أيقونة اختيار الموقع من الخريطة (الجزء المضاف) --- + IconButton( + onPressed: () { + // هذا السطر مهم جداً: نخبر الكونترولر أننا نحدد نقطة البداية الآن + controller.passengerStartLocationFromMap = true; + + // إخفاء القائمة السفلية وفتح مؤشر الخريطة (Picker) + controller.changeMainBottomMenuMap(); + controller.changePickerShown(); + }, + icon: Icon(Icons.location_on_outlined, + color: AppColor.accentColor, size: 30), + tooltip: 'Pick start point on map'.tr, + ), + ], + ), + ), + + // --- قائمة نتائج البحث --- + AnimatedContainer( + duration: const Duration(milliseconds: 200), + height: controller.placesStart.isNotEmpty ? 300 : 0, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(8.0), + ), + margin: const EdgeInsets.symmetric(horizontal: 16.0), + child: ListView.separated( + shrinkWrap: true, + physics: const ClampingScrollPhysics(), + itemCount: controller.placesStart.length, + separatorBuilder: (context, index) => + const Divider(height: 1, color: Colors.grey), + itemBuilder: (BuildContext context, int index) { + var res = controller.placesStart[index]; + var title = res['name_ar'] ?? res['name'] ?? 'Unknown Place'; + var address = res['address'] ?? 'Details not available'; + + return ListTile( + leading: const Icon(Icons.place, size: 30, color: Colors.grey), + title: Text(title, + style: AppStyle.subtitle + .copyWith(fontWeight: FontWeight.w500)), + subtitle: Text(address, + style: TextStyle(color: Colors.grey[600], fontSize: 12)), + onTap: () { + var latitude = res['latitude']; + var longitude = res['longitude']; + if (latitude != null && longitude != null) { + // تحديث موقع الراكب (نقطة الانطلاق) بناءً على الاختيار + controller.passengerLocation = + LatLng(double.parse(latitude), double.parse(longitude)); + + // تحديث النص في الحقل + controller.placeStartController.text = title; + + // مسح النتائج + controller.clearPlacesStart(); + + // إغلاق القائمة والعودة للخريطة لرؤية النتيجة (اختياري حسب منطق تطبيقك) + controller.changeMainBottomMenuMap(); + + controller.update(); + } + }, + ); + }, + ), + ), + ], + ), + ); +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/timer_to_passenger_from_driver.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/views/widgets/elevated_btn.dart'; + +import '../../../constant/colors.dart'; +import '../../../constant/style.dart'; +import '../../../controller/home/map_passenger_controller.dart'; +import 'ride_begin_passenger.dart'; + +class TimerToPassengerFromDriver extends StatelessWidget { + const TimerToPassengerFromDriver({ + super.key, + }); + + @override + Widget build(BuildContext context) { + return GetBuilder(builder: (controller) { + if (controller.remainingTime == 0 && + (controller.isDriverInPassengerWay == true || + controller.timeToPassengerFromDriverAfterApplied > 0)) { + // ) { + return Positioned( + left: 10, + right: 10, + bottom: 5, + child: Container( + decoration: AppStyle.boxDecoration, + height: controller.remainingTime == 0 && + (controller.isDriverInPassengerWay == true || + controller.timeToPassengerFromDriverAfterApplied > 0) + ? 200 + : 0, + // width: 100, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + children: [ + Text( + 'You Can cancel Ride After Captain did not come in the time' + .tr, + style: AppStyle.title, + textAlign: TextAlign.center, + ), + Stack( + children: [ + LinearProgressIndicator( + backgroundColor: AppColor.accentColor, + color: controller + .remainingTimeToPassengerFromDriverAfterApplied < + 60 + ? AppColor.redColor + : AppColor.greenColor, + minHeight: 25, + borderRadius: BorderRadius.circular(15), + value: controller + .progressTimerToPassengerFromDriverAfterApplied + .toDouble(), + ), + Center( + child: Text( + controller.stringRemainingTimeToPassenger, + style: AppStyle.title, + ), + ) + ], + ), + IconButton( + onPressed: () {}, + icon: const Icon( + Icons.phone, + color: AppColor.blueColor, + ), + ), + controller.remainingTimeToPassengerFromDriverAfterApplied < 60 + ? MyElevatedButton( + title: 'You can cancel trip'.tr, + onPressed: () async { + await controller + .calculateDistanceBetweenPassengerAndDriverBeforeCancelRide(); + }) + : const SizedBox() + ], + ), + ), + ), + ); + } else if (controller.remainingTime == 0 && + controller.isDriverArrivePassenger == true) { + return Positioned( + left: 10, + right: 10, + bottom: 5, + child: Container( + decoration: AppStyle.boxDecoration, + height: controller.remainingTime == 0 && + controller.isDriverArrivePassenger == true + ? 150 + : 0, + // width: 100, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + children: [ + Text( + 'The driver waiting you in picked location .'.tr, + style: AppStyle.title, + textAlign: TextAlign.center, + ), + Stack( + children: [ + LinearProgressIndicator( + backgroundColor: AppColor.accentColor, + color: + controller.remainingTimeDriverWaitPassenger5Minute < + 60 + ? AppColor.redColor + : AppColor.greenColor, + minHeight: 50, + borderRadius: BorderRadius.circular(15), + value: controller + .progressTimerDriverWaitPassenger5Minute + .toDouble(), + ), + Center( + child: Text( + controller + .stringRemainingTimeDriverWaitPassenger5Minute, + style: AppStyle.title, + ), + ) + ], + ), + Text( + 'Please go to Car now '.tr, + style: AppStyle.title, + textAlign: TextAlign.center, + ), + ], + ), + ), + ), + ); + } else { + return const RideBeginPassenger(); + } + }); + } +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/map_menu_widget.dart +================================================== + +import 'dart:ui'; // مهم لإضافة تأثير الضبابية + +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/main.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_font_icons/flutter_font_icons.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/views/home/my_wallet/passenger_wallet.dart'; +import 'package:Intaleq/views/home/profile/complaint_page.dart'; +import 'package:Intaleq/views/home/profile/order_history.dart'; +import 'package:Intaleq/views/home/profile/promos_passenger_page.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import '../../../constant/colors.dart'; +import '../../../constant/links.dart'; +import '../../../controller/home/map_passenger_controller.dart'; +import '../../notification/notification_page.dart'; +import '../HomePage/contact_us.dart'; +import '../HomePage/share_app_page.dart'; +import '../setting_page.dart'; +import '../profile/passenger_profile_page.dart'; + +// --- الويدجت الرئيسية بالتصميم الجديد --- +class MapMenuWidget extends StatelessWidget { + const MapMenuWidget({super.key}); + + @override + Widget build(BuildContext context) { + Get.lazyPut(() => MapPassengerController()); + + return GetBuilder( + builder: (controller) => Stack( + children: [ + // --- خلفية معتمة عند فتح القائمة --- + if (controller.widthMenu > 0) + GestureDetector( + onTap: controller.getDrawerMenu, + child: Container( + color: Colors.black.withOpacity(0.4), + ), + ), + + // --- القائمة الجانبية المنزلقة --- + _buildSideMenu(controller), + + // --- زر القائمة العائم --- + _buildMenuButton(controller), + ], + ), + ); + } + + // --- ويدجت لبناء زر القائمة --- + Widget _buildMenuButton(MapPassengerController controller) { + return Positioned( + top: 45, + left: 16, + child: SafeArea( + child: InkWell( + onTap: controller.getDrawerMenu, + borderRadius: BorderRadius.circular(50), + child: ClipRRect( + borderRadius: BorderRadius.circular(50), + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 5.0, sigmaY: 5.0), + child: AnimatedContainer( + duration: const Duration(milliseconds: 300), + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: AppColor.secondaryColor.withOpacity(0.8), + shape: BoxShape.circle, + border: + Border.all(color: AppColor.writeColor.withOpacity(0.2)), + ), + child: Icon( + controller.widthMenu > 0 ? Icons.close : Icons.menu, + color: AppColor.writeColor, + size: 26, + ), + ), + ), + ), + ), + ), + ); + } + + // --- ويدجت لبناء القائمة الجانبية --- + Widget _buildSideMenu(MapPassengerController controller) { + return AnimatedPositioned( + duration: const Duration(milliseconds: 400), + curve: Curves.fastOutSlowIn, + top: 0, + bottom: 0, + left: controller.widthMenu > 0 ? 0 : -Get.width, + child: ClipRRect( + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), + child: Container( + width: Get.width * 0.8, + constraints: const BoxConstraints(maxWidth: 320), + decoration: BoxDecoration( + color: AppColor.secondaryColor.withOpacity(0.95), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.2), + blurRadius: 20, + ) + ], + ), + child: SafeArea( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildMenuHeader(), + _buildQuickActionButtons(), + const Divider( + color: Colors.white24, + indent: 16, + endIndent: 16, + height: 24), + Expanded( + child: ListView( + padding: const EdgeInsets.symmetric(horizontal: 8), + children: [ + MenuListItem( + title: 'My Balance'.tr, + icon: Icons.account_balance_wallet_outlined, + onTap: () => Get.to(() => const PassengerWallet())), + MenuListItem( + title: 'Order History'.tr, + icon: Icons.history_rounded, + onTap: () => Get.to(() => const OrderHistory())), + MenuListItem( + title: 'Promos'.tr, + icon: Icons.local_offer_outlined, + onTap: () => + Get.to(() => const PromosPassengerPage())), + MenuListItem( + title: 'Contact Us'.tr, + icon: Icons.contact_support_outlined, + onTap: () => Get.to(() => ContactUsPage())), + MenuListItem( + title: 'Complaint'.tr, + icon: Icons.flag_outlined, + onTap: () => Get.to(() => ComplaintPage())), + MenuListItem( + title: 'Driver'.tr, + icon: Ionicons.car_sport_outline, + onTap: () => _launchDriverAppUrl()), + MenuListItem( + title: 'Share App'.tr, + icon: Icons.share_outlined, + onTap: () => Get.to(() => ShareAppPage())), + MenuListItem( + title: 'Privacy Policy'.tr, + icon: Icons.shield_outlined, + onTap: () => launchUrl(Uri.parse( + '${AppLink.server}/privacy_policy.php')), + ), + ], + ), + ), + const Divider( + color: Colors.white24, + indent: 16, + endIndent: 16, + height: 1), + Padding( + padding: const EdgeInsets.all(8.0), + child: MenuListItem( + title: 'Logout'.tr, + icon: Icons.logout_rounded, + onTap: () { + Get.defaultDialog( + title: "Logout".tr, + middleText: "Are you sure you want to logout?".tr, + textConfirm: "Logout".tr, + textCancel: "Cancel".tr, + onConfirm: () { + // controller.logout(); + Get.back(); + }, + ); + }, + color: Colors.red.shade300, + ), + ), + ], + ), + ), + ), + ), + ), + ); + } + + // --- ويدجت رأس القائمة --- + Widget _buildMenuHeader() { + return Padding( + padding: const EdgeInsets.fromLTRB(20, 30, 20, 16), + child: Row( + children: [ + const CircleAvatar( + radius: 30, + backgroundColor: AppColor.primaryColor, + child: Icon(Icons.person, color: AppColor.writeColor, size: 35), + ), + const SizedBox(width: 16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + box.read(BoxName.name) ?? 'Guest', + style: AppStyle.headTitle.copyWith(fontSize: 20), + overflow: TextOverflow.ellipsis, + ), + const SizedBox(height: 4), + Text( + "Intaleq Passenger".tr, + style: AppStyle.title.copyWith( + color: AppColor.writeColor.withOpacity(0.7), + fontSize: 14), + ), + ], + ), + ), + ], + ), + ); + } + + // --- ويدجت الأزرار السريعة --- + Widget _buildQuickActionButtons() { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + _buildSmallActionButton( + icon: Icons.person_outline_rounded, + label: 'Profile'.tr, + onTap: () => Get.to(() => PassengerProfilePage())), + _buildSmallActionButton( + icon: Icons.notifications_none_rounded, + label: 'Alerts'.tr, + onTap: () => Get.to(() => const NotificationPage())), + _buildSmallActionButton( + icon: Icons.settings_outlined, + label: 'Settings'.tr, + onTap: () => Get.to(() => const SettingPage())), + ], + ), + ); + } + + Widget _buildSmallActionButton( + {required IconData icon, + required String label, + required VoidCallback onTap}) { + return InkWell( + onTap: onTap, + borderRadius: BorderRadius.circular(12), + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 8.0, horizontal: 12.0), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(icon, color: AppColor.writeColor.withOpacity(0.9), size: 24), + const SizedBox(height: 6), + Text(label, + style: AppStyle.subtitle.copyWith( + fontSize: 12, color: AppColor.writeColor.withOpacity(0.9))), + ], + ), + ), + ); + } + + void _launchDriverAppUrl() async { + final String driverAppUrl; + if (defaultTargetPlatform == TargetPlatform.android) { + driverAppUrl = + 'https://play.google.com/store/apps/details?id=com.intaleq_driver'; + } else if (defaultTargetPlatform == TargetPlatform.iOS) { + driverAppUrl = + 'https://apps.apple.com/st/app/intaleq-driver/id6482995159'; + } else { + return; + } + try { + final Uri url = Uri.parse(driverAppUrl); + if (await canLaunchUrl(url)) { + await launchUrl(url); + } else { + Get.snackbar('Error', 'Could not launch driver app store.'); + } + } catch (e) { + Get.snackbar('Error', 'Could not open the link.'); + } + } +} + +// --- ويدجت عناصر القائمة بتصميم محسن --- +class MenuListItem extends StatelessWidget { + const MenuListItem({ + super.key, + required this.title, + required this.onTap, + required this.icon, + this.color, + }); + + final String title; + final IconData icon; + final VoidCallback onTap; + final Color? color; + + @override + Widget build(BuildContext context) { + return ListTile( + onTap: onTap, + leading: Icon( + icon, + size: 26, + color: color ?? AppColor.writeColor.withOpacity(0.8), + ), + title: Text( + title.tr, + style: AppStyle.title.copyWith( + fontSize: 16, + color: color ?? AppColor.writeColor, + ), + ), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + splashColor: AppColor.primaryColor.withOpacity(0.2), + ); + } +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/main_bottom_Menu_map.dart +================================================== + +import 'package:Intaleq/views/widgets/my_textField.dart'; + +import 'package:flutter/cupertino.dart'; + +import 'package:flutter/material.dart'; + +import 'package:get/get.dart'; + +import 'package:Intaleq/constant/box_name.dart'; + +import 'package:Intaleq/constant/style.dart'; + +import 'package:Intaleq/controller/home/map_passenger_controller.dart'; + +import 'package:Intaleq/main.dart'; + +import 'package:Intaleq/views/home/map_widget.dart/form_search_places_destenation.dart'; + +import 'package:Intaleq/views/widgets/elevated_btn.dart'; + +import 'package:google_maps_flutter/google_maps_flutter.dart'; + +import '../../../constant/colors.dart'; + +import '../../../constant/table_names.dart'; + +import '../../../controller/functions/toast.dart'; + +import '../../../controller/functions/tts.dart'; + +import '../../widgets/error_snakbar.dart'; + +import '../../widgets/mydialoug.dart'; + +import 'form_search_start.dart'; + +class MainBottomMenuMap extends StatelessWidget { + const MainBottomMenuMap({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(MapPassengerController()); + + return GetBuilder( + builder: (controller) => Positioned( + bottom: Get.height * .04, // Increased bottom padding + + left: 16, + + right: 16, + + child: GestureDetector( + onTap: controller + .changeMainBottomMenuMap, // Make the whole area tappable + + child: AnimatedContainer( + duration: const Duration( + milliseconds: 300), // Reduced duration for smoother animation + + curve: Curves.easeInOut, // Added animation curve + + height: controller.mainBottomMenuMapHeight, + + decoration: BoxDecoration( + color: AppColor.secondaryColor, // Use a solid background color + + borderRadius: BorderRadius.circular(16), // More rounded corners + + boxShadow: [ + BoxShadow( + color: Colors.black12, + blurRadius: 10, + offset: Offset(0, 5), + ), + ], + ), + + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), // Add bouncing effect + + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + + crossAxisAlignment: CrossAxisAlignment + .stretch, // Stretch children to full width + + children: [ + Padding( + padding: const EdgeInsets.all(16.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + controller.isMainBottomMenuMap + ? 'Where are you going?'.tr + : 'Quick Actions'.tr, + style: AppStyle.title + .copyWith(fontWeight: FontWeight.bold), + ), + IconButton( + onPressed: controller.changeMainBottomMenuMap, + icon: Icon( + controller.isMainBottomMenuMap + ? Icons.keyboard_arrow_down_rounded + : Icons.keyboard_arrow_up_rounded, + size: 28, + color: AppColor.primaryColor, + ), + ), + ], + ), + ), + if (controller.isMainBottomMenuMap) ...[ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: InkWell( + onTap: () => controller.changeMainBottomMenuMap(), + child: Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: AppColor.primaryColor + .withOpacity(0.05), // Subtle background + + borderRadius: BorderRadius.circular(12), + ), + child: DefaultTextStyle( + style: AppStyle.subtitle + .copyWith(color: AppColor.writeColor), + child: Center( + child: controller.isPickerShown + ? clickPointPosition(controller, context) + : whereWidgetSmall(controller), + ), + ), + ), + ), + ), + const SizedBox(height: 8), + if (controller.recentPlaces.isNotEmpty) + Padding( + padding: const EdgeInsets.symmetric(horizontal: 8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ +// Text('Recent Places'.tr, style: AppStyle.subtitle), + + SizedBox( + height: 30, + child: Center( + child: ListView.separated( + scrollDirection: Axis.horizontal, + itemCount: controller.recentPlaces.length, + separatorBuilder: (context, index) => + const SizedBox(width: 8), + itemBuilder: (context, index) => + _buildRecentPlaceButton( + controller, context, index), + ), + ), + ), + ], + ), + ), + ] else ...[ + if (!controller.isAnotherOreder) + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: Text( + '${'From:'.tr} ${controller.currentLocationString}' + .tr, + style: AppStyle.subtitle, + ), + ), + const SizedBox(height: 8), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: !controller.isAnotherOreder + ? const SizedBox() + : formSearchPlacesStart(), + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: formSearchPlacesDestenation(), + ), + const SizedBox(height: 16), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: GestureDetector( + onTap: () { + Get.dialog( + AlertDialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16)), + title: Text('WhatsApp Location Extractor'.tr), + content: Form( + key: controller.sosFormKey, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + MyTextForm( + controller: + controller.whatsAppLocationText, + label: 'Location Link'.tr, + hint: 'Paste location link here'.tr, + type: TextInputType.url, + ), + const SizedBox(height: 16), + MyElevatedButton( + title: 'Go to this location'.tr, + onPressed: () async { + controller.goToWhatappLocation(); + }, + ), + ], + ), + ), + ), + ); + }, + child: Container( + decoration: BoxDecoration( + color: Colors.blue.shade100, // Lighter background + + borderRadius: BorderRadius.circular(12), + + border: Border.all( + color: Colors.blue.shade400), // Add a border + ), + padding: const EdgeInsets.all(16), + child: Row( + children: [ + Icon(Icons.link, color: Colors.blue.shade700), + const SizedBox(width: 8), + Expanded( + child: Text( + 'Paste WhatsApp location link'.tr, + style: TextStyle(color: Colors.blue.shade700), + ), + ), + const Icon(Icons.arrow_forward_ios_rounded, + size: 16, color: Colors.blueGrey), + ], + ), + ), + ), + ), + const SizedBox(height: 16), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: OutlinedButton( + onPressed: () { + showCupertinoModalPopup( + context: context, + builder: (BuildContext context) => + CupertinoActionSheet( + title: Text('Select Order Type'.tr), + message: Text('Choose who this order is for'.tr), + actions: [ + CupertinoActionSheetAction( + child: Text('I want to order for myself'.tr), + onPressed: () { + controller.changeisAnotherOreder(false); + + Navigator.pop(context); + }, + ), + CupertinoActionSheetAction( + child: Text( + 'I want to order for someone else'.tr), + onPressed: () { + controller.changeisAnotherOreder(true); + + Navigator.pop(context); + }, + ), + ], + cancelButton: CupertinoActionSheetAction( + isDefaultAction: true, + onPressed: () { + Navigator.pop(context); + }, + child: Text('Cancel'.tr), + ), + ), + ); + }, + child: Text( + !controller.isAnotherOreder + ? 'Order for someone else'.tr + : 'Order for myself'.tr, + ), + ), + ), + ], + const SizedBox(height: 8), + ], + ), + ), + ), + ), + ), + ); + } + + Widget _buildRecentPlaceButton( + MapPassengerController controller, BuildContext context, int index) { + final textToSpeechController = Get.find(); + + return InkWell( + onTap: () { + MyDialog().getDialog('Are you want to go this site'.tr, ' ', () async { + Get.back(); + + await controller.getLocation(); + + await controller.getDirectionMap( + '${controller.passengerLocation.latitude},${controller.passengerLocation.longitude}', + '${controller.recentPlaces[index]['latitude']},${controller.recentPlaces[index]['longitude']}', + ); + + controller.showBottomSheet1(); + }); + }, + onLongPress: () { + MyDialog().getDialog( + "Are you sure to delete this location?".tr, + '', + () { + sql.deleteData(TableName.recentLocations, + controller.recentPlaces[index]['id']); + + controller.getFavioratePlaces(); + + controller.update(); + + Get.back(); + + mySnackbarSuccess('deleted'.tr); + }, + ); + }, + child: Container( + decoration: BoxDecoration( + color: AppColor.primaryColor.withOpacity(0.05), // Subtle background + + borderRadius: BorderRadius.circular(12), + + border: Border( + bottom: BorderSide( + color: AppColor.primaryColor.withOpacity(0.1), width: 1), + ), + ), + child: Text(controller.recentPlaces[index]['name'], + style: const TextStyle(fontSize: 14)), + ), + ); + } + + Widget clickPointPosition( + MapPassengerController controller, BuildContext context) { + return TextButton( + onPressed: () async { + controller.clearPolyline(); + + controller.data = []; + + if (controller.passengerStartLocationFromMap == true) { + controller.newMyLocation = controller.newStartPointLocation; + + controller.changeMainBottomMenuMap(); + + await controller.getDirectionMap( + '${controller.newStartPointLocation.latitude},${controller.newStartPointLocation.longitude}', + '${controller.myDestination.latitude},${controller.myDestination.longitude}', + ); + + controller.currentLocationToFormPlaces = false; + + controller.placesDestination = []; + + controller.clearPlacesStart(); + + controller.clearPlacesDestination(); + + controller.passengerStartLocationFromMap = false; + + controller.isPickerShown = false; + + controller.showBottomSheet1(); + } else if (controller.startLocationFromMap == true) { + controller.newMyLocation = controller.newStartPointLocation; + + controller.hintTextStartPoint = + '${controller.newStartPointLocation.latitude.toStringAsFixed(4)} , ${controller.newStartPointLocation.longitude.toStringAsFixed(4)}'; + + controller.startLocationFromMap = false; + + controller.isPickerShown = false; + } else if (controller.workLocationFromMap == true) { + controller.hintTextDestinationPoint = 'To Work'.tr; + + box.write(BoxName.addWork, + '${controller.newMyLocation.latitude.toStringAsFixed(4)} , ${controller.newMyLocation.longitude.toStringAsFixed(4)}'); + + controller.newMyLocation = controller.newMyLocation; + + controller.isPickerShown = false; + + controller.workLocationFromMap = false; + + Get.snackbar('Work Saved'.tr, '', + backgroundColor: AppColor.greenColor); + } else if (controller.homeLocationFromMap == true) { + controller.hintTextDestinationPoint = 'To Home'.tr; + + box.write(BoxName.addHome, + '${controller.newMyLocation.latitude.toStringAsFixed(4)} , ${controller.newMyLocation.longitude.toStringAsFixed(4)}'); + + controller.newMyLocation = controller.newMyLocation; + + controller.isPickerShown = false; + + controller.homeLocationFromMap = false; + + controller.update(); + + Get.snackbar('Home Saved'.tr, '', + backgroundColor: AppColor.greenColor); + } else { + controller.hintTextDestinationPoint = + '${controller.newMyLocation.latitude.toStringAsFixed(4)} , ${controller.newMyLocation.longitude.toStringAsFixed(4)}'; + + controller.myDestination = controller.newMyLocation; + + controller.isPickerShown = false; + + controller.changeMainBottomMenuMap(); + + controller.passengerStartLocationFromMap = true; + + controller.isPickerShown = true; + + if (controller.isAnotherOreder == false) { + await controller.mapController?.animateCamera( + CameraUpdate.newLatLng(LatLng( + controller.passengerLocation.latitude, + controller.passengerLocation.longitude))); + + Get.defaultDialog( + title: 'Destination selected'.tr, + titleStyle: AppStyle.title, + content: Text( + 'Now select start pick'.tr, + style: AppStyle.title, + ), + confirm: MyElevatedButton( + title: 'OK'.tr, + onPressed: () { + Get.back(); + })); + } + + if (controller.isWhatsAppOrder == true) { + Get.defaultDialog( + title: 'Destination selected'.tr, + titleStyle: AppStyle.title, + content: Text( + 'Now select start pick'.tr, + style: AppStyle.title, + ), + confirm: MyElevatedButton( + title: 'OK'.tr, + onPressed: () { + Get.back(); + })); + } + } + + controller.placesDestination = []; + + controller.placeDestinationController.clear(); + + // controller.showBottomSheet1(); + + controller.changeMainBottomMenuMap(); + }, + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 8.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon( + controller.passengerStartLocationFromMap + ? Icons.location_on + : Icons.location_searching, + size: 20, + color: AppColor.primaryColor, + ), + const SizedBox(width: 8), + Text( + controller.passengerStartLocationFromMap + ? 'Confirm Pick-up Location'.tr + : "Set Location on Map".tr, + style: AppStyle.subtitle.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.primaryColor, + ), + ), + ], + ), + ), + ); + } + + Widget whereWidgetSmall(MapPassengerController controller) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.location_searching, color: AppColor.primaryColor), + const SizedBox(width: 8), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + '${'Where to'.tr} ${(box.read(BoxName.name).toString().split(' ')[0])} ', + style: AppStyle.subtitle), + +// if (controller.noCarString) + +// Text('Nearest Car: ~'.tr, + +// style: TextStyle(color: Colors.grey.shade600)) + +// else + + // Text( + // controller.nearestCar != null + // ? 'Nearest Car: ${controller.nearestDistance.toStringAsFixed(0)} m' + // : 'No cars nearby'.tr, + // style: TextStyle(color: Colors.grey.shade600), + // ), + ], + ), + ], + ); + } +} + +class FaviouratePlacesDialog extends StatelessWidget { + const FaviouratePlacesDialog({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(MapPassengerController()); + + return GetBuilder( + builder: (controller) => Center( + child: InkWell( + onTap: () async { + List favoritePlaces = + await sql.getAllData(TableName.placesFavorite); + + Get.defaultDialog( + title: 'Favorite Places'.tr, + content: SizedBox( + width: Get.width * .8, + height: 300, + child: favoritePlaces.isEmpty + ? Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon( + Icons.star_border_rounded, + size: 99, + color: AppColor.accentColor, + ), + Text( + 'No favorite places yet!'.tr, + style: AppStyle.title, + ), + ], + ), + ) + : ListView.separated( + itemCount: favoritePlaces.length, + separatorBuilder: (context, index) => const Divider(), + itemBuilder: (BuildContext context, int index) { + return ListTile( + leading: + const Icon(Icons.star, color: Colors.amber), + title: Text(favoritePlaces[index]['name'], + style: AppStyle.title), + trailing: IconButton( + icon: const Icon(Icons.delete_outline, + color: Colors.redAccent), + onPressed: () async { + await sql.deleteData(TableName.placesFavorite, + favoritePlaces[index]['id']); + + Get.back(); + + Toast.show( + context, + '${'Deleted'.tr} ${favoritePlaces[index]['name']} from your favorites', + AppColor.redColor); + }, + ), + onTap: () async { + Get.back(); + + await controller.getLocation(); + + await controller.getDirectionMap( + '${controller.passengerLocation.latitude},${controller.passengerLocation.longitude}', + '${favoritePlaces[index]['latitude']},${favoritePlaces[index]['longitude']}', + ); + + controller.showBottomSheet1(); + }, + ); + }, + ), + ), + confirm: MyElevatedButton( + title: 'Back'.tr, onPressed: () => Get.back()), + ); + }, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.star_border_rounded, + color: AppColor.accentColor), + const SizedBox(width: 8), + Text('Favorite Places'.tr, style: AppStyle.title), + ], + ), + ), + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/hexegone_clipper.dart +================================================== + +import 'dart:math'; + +import 'package:flutter/material.dart'; + +class HexagonClipper extends CustomClipper { + @override + Path getClip(Size size) { + final path = Path(); + final height = size.height; + final width = size.width; + final centerX = width / 2; + final centerY = height / 2; + final radius = width / 2; + + const angle = 2 * pi / 10; // Angle between each side of the hexagon + + // Start at the top right vertex of the hexagon + final startX = centerX + radius * cos(0); + final startY = centerY + radius * sin(0); + path.moveTo(startX, startY); + + // Draw the remaining sides of the hexagon + for (int i = 1; i < 10; i++) { + final x = centerX + radius * cos(angle * i); + final y = centerY + radius * sin(angle * i); + path.lineTo(x, y); + } + + path.close(); + + return path; + } + + @override + bool shouldReclip(HexagonClipper oldClipper) => false; +} + +class ArrowClipper extends CustomClipper { + @override + Path getClip(Size size) { + final path = Path(); + path.moveTo(0, size.height / 2); + path.lineTo(size.width / 2, 0); + path.lineTo(size.width, size.height / 2); + path.lineTo(size.width / 2, size.height); + path.close(); + return path; + } + + @override + bool shouldReclip(ArrowClipper oldClipper) => false; +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/select_driver_mishwari.dart +================================================== + +import 'package:Intaleq/constant/colors.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/controller/home/map_passenger_controller.dart'; +import 'package:Intaleq/views/widgets/elevated_btn.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../../constant/links.dart'; +import '../../../print.dart'; + +class CupertinoDriverListWidget extends StatelessWidget { + MapPassengerController mapPassengerController = + Get.put(MapPassengerController()); + @override + Widget build(BuildContext context) { + return CupertinoPageScaffold( + navigationBar: CupertinoNavigationBar( + middle: Text('Driver List'.tr), // Ensure text is properly localized + ), + child: SafeArea( + child: mapPassengerController.driversForMishwari.isEmpty + ? Center( + child: Text( + 'No drivers available at the moment. Please try again later.' + .tr, + style: const TextStyle( + fontSize: 18, // Adjust the size as needed + fontWeight: FontWeight.w600, + color: CupertinoColors.inactiveGray, // Customize color + ), + textAlign: TextAlign.center, // Center-align the text + ), + ) + : ListView.separated( + itemCount: mapPassengerController.driversForMishwari.length, + separatorBuilder: (context, index) => + const Divider(height: 1), + itemBuilder: (context, index) { + var driver = + mapPassengerController.driversForMishwari[index]; + return Container( + decoration: AppStyle.boxDecoration1, + child: CupertinoListTile( + padding: const EdgeInsets.symmetric( + vertical: 4, horizontal: 8), + leading: CircleAvatar( + radius: 25, + backgroundImage: NetworkImage( + '${AppLink.IntaleqSyriaServer}/portrate_captain_image/${driver['id']}.jpg', + ), + child: Builder( + builder: (context) { + return Image.network( + '${AppLink.IntaleqSyriaServer}/portrate_captain_image/${driver['id']}.jpg', + fit: BoxFit.cover, + loadingBuilder: (BuildContext context, + Widget child, + ImageChunkEvent? loadingProgress) { + if (loadingProgress == null) { + return child; // Image is loaded + } else { + return Center( + child: CircularProgressIndicator( + value: loadingProgress + .expectedTotalBytes != + null + ? loadingProgress + .cumulativeBytesLoaded / + (loadingProgress + .expectedTotalBytes ?? + 1) + : null, + ), + ); + } + }, + errorBuilder: (BuildContext context, + Object error, StackTrace? stackTrace) { + return const Icon( + Icons + .person, // Icon to show when image fails to load + size: 25, // Adjust the size as needed + color: AppColor + .blueColor, // Color for the error icon + ); + }, + ); + }, + ), + ), + title: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + '${driver['NAME'].toString().split(' ')[0]} ${driver['NAME'].toString().split(' ')[1]}', + style: + const TextStyle(fontWeight: FontWeight.bold), + ), + Text('${'Age'.tr}: ${driver['age'].toString()}'), + Row( + children: [ + const Icon(CupertinoIcons.star_fill, + size: 16, + color: CupertinoColors.systemYellow), + const SizedBox(width: 4), + Text(driver['rating']?.toStringAsFixed(1) ?? + 'N/A'.tr), + const SizedBox(width: 8), + Text('${'Rides'.tr}: ${driver['ride_count']}'), + ], + ), + ], + ), + subtitle: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Car'.tr}: ${driver['make']} ${driver['model']} (${driver['year']})'), + Text('${'Plate'.tr}: ${driver['car_plate']}'), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + SizedBox( + // width: Get.width * .3, + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text('${'Color'.tr}: ${driver['color']}'), + const SizedBox(width: 8), + Container( + width: 20, + height: 20, + decoration: BoxDecoration( + color: driver['color_hex'] + .toString() == + 'null' + ? Colors.amber + : hexToColor(driver['color_hex'] + .toString()), + borderRadius: + BorderRadius.circular(4), + border: Border.all(), + ), + ), + ], + ), + ), + ], + ), + ], + ), + onTap: () { + Log.print(' driver["id"]: ${driver['driver_id']}'); + Get.find().driverIdVip = + driver['driver_id']; + + // Handle driver selection + Get.defaultDialog( + title: + '${'Selected driver'.tr}: ${driver['NAME']}', + content: Column( + children: [ + Column( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Car'.tr}: ${driver['make']} ${driver['model']} (${driver['year']})'), + Text( + '${'Plate'.tr}: ${driver['car_plate']}'), + Row( + mainAxisAlignment: + MainAxisAlignment.center, + children: [ + Text( + '${'Color'.tr}: ${driver['color']}'), + const SizedBox(width: 8), + Container( + width: 20, + height: 20, + decoration: BoxDecoration( + color: driver['color_hex'] + .toString() == + 'null' + ? Colors.amber + : hexToColor( + driver['color_hex'] + .toString()), + borderRadius: + BorderRadius.circular(4), + border: Border.all(), + ), + ), + ], + ), + ], + ), + ], + ), + confirm: MyElevatedButton( + title: 'OK'.tr, + onPressed: () { + Get.back(); + showDateTimePickerDialog(driver); + })); + print('${'Selected driver'.tr}: ${driver['NAME']}'); + // Get.back(); // Close the dialog + }, + ), + ); + }, + )), + ); + } + + Color hexToColor(String hexColor) { + hexColor = hexColor.replaceAll("#", ""); + String colorString = "ff$hexColor"; + return Color(int.parse(colorString, radix: 16)); + } + + void showDriverSelectionDialog(Map driver) { + Get.defaultDialog( + title: '${'Selected driver'.tr}: ${driver['name']}', + content: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Car'.tr}: ${driver['make']} ${driver['model']} (${driver['year']})'), + Text('${'Plate'.tr}: ${driver['car_plate']}'), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text('${'Color'.tr}: ${driver['color']}'), + const SizedBox(width: 8), + Container( + width: 20, + height: 20, + decoration: BoxDecoration( + color: driver['color_hex'].toString() == 'null' + ? Colors.amber + : hexToColor(driver['color_hex'].toString()), + borderRadius: BorderRadius.circular(4), + border: Border.all(), + ), + ), + ], + ), + ], + ), + confirm: MyElevatedButton( + title: 'OK'.tr, + onPressed: () { + Get.back(); + showDateTimePickerDialog(driver); + }, + ), + ); + } + + void showDateTimePickerDialog(Map driver) { + DateTime selectedDateTime = DateTime.now(); + + Get.defaultDialog( + barrierDismissible: false, + title: "Select date and time of trip".tr, + content: SizedBox( + // height: 400, // Adjust height as needed + width: double.maxFinite, + child: Column( + children: [ + DateTimePickerWidget(), + ], + ), + ), + confirm: MyElevatedButton( + title: 'Confirm Trip'.tr, + onPressed: () async { + DateTime selectedDateTime = + mapPassengerController.selectedDateTime.value; + // Save trip data and set up notifications + Get.back(); + await mapPassengerController.saveTripData(driver, selectedDateTime); + }, + ), + cancel: MyElevatedButton( + kolor: AppColor.redColor, + title: 'Cancel'.tr, + onPressed: () { + Get.back(); + }, + ), + ); + } +} + +class DateTimePickerWidget extends StatelessWidget { + final MapPassengerController controller = Get.put(MapPassengerController()); + + @override + Widget build(BuildContext context) { + return CupertinoPageScaffold( + navigationBar: CupertinoNavigationBar( + transitionBetweenRoutes: false, + automaticallyImplyLeading: false, + middle: Text('Date and Time Picker'.tr), + ), + child: SafeArea( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Obx(() => Text( + '${'Selected Date and Time'.tr}: ${controller.selectedDateTime.value}', + style: const TextStyle(fontSize: 18), + textAlign: TextAlign.center, + )), + const SizedBox(height: 20), + SizedBox( + height: 200, + child: CupertinoDatePicker( + mode: CupertinoDatePickerMode.dateAndTime, + initialDateTime: controller.selectedDateTime.value, + onDateTimeChanged: (newDateTime) { + controller.updateDateTime(newDateTime); + }, + ), + ), + ], + ), + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/apply_order_widget.dart +================================================== + +import 'package:Intaleq/constant/colors.dart'; +import 'package:Intaleq/constant/links.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/controller/home/map_passenger_controller.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:get/get.dart'; +import 'package:intl/intl.dart'; + +import '../../../constant/box_name.dart'; +import '../../../controller/firebase/notification_service.dart'; +import '../../../controller/functions/launch.dart'; +import '../../../main.dart'; + +class ApplyOrderWidget extends StatelessWidget { + const ApplyOrderWidget({super.key}); + + @override + Widget build(BuildContext context) { + Color parseColor(String colorHex) { + if (colorHex.isEmpty) return Colors.grey; + try { + String processedHex = colorHex.replaceFirst('#', '').trim(); + if (processedHex.length == 6) processedHex = 'FF$processedHex'; + return Color(int.parse('0x$processedHex')); + } catch (e) { + return Colors.grey; + } + } + + return Obx(() { + final controller = Get.find(); + + final bool isVisible = + controller.currentRideState.value == RideState.driverApplied || + controller.currentRideState.value == RideState.driverArrived; + + return AnimatedPositioned( + duration: const Duration(milliseconds: 500), + curve: Curves.elasticOut, + // تغيير: جعلنا الإخفاء للأسفل أقل حدة ليكون التحريك أسرع + bottom: isVisible ? 0 : -400, + left: 0, + right: 0, + child: Container( + decoration: BoxDecoration( + color: Theme.of(context).cardColor, + borderRadius: const BorderRadius.vertical(top: Radius.circular(25)), + boxShadow: [ + BoxShadow( + blurRadius: 20, + spreadRadius: 1, + color: Colors.black.withOpacity(0.1), + offset: const Offset(0, -3), + ) + ], + ), + // تغيير: تقليل الحواف الخارجية بشكل كبير + padding: const EdgeInsets.fromLTRB(16, 8, 16, 16), + child: GetBuilder( + builder: (c) { + return Column( + mainAxisSize: + MainAxisSize.min, // مهم جداً: يأخذ أقل مساحة ممكنة + children: [ + // مقبض صغير + Container( + width: 40, + height: 4, + decoration: BoxDecoration( + color: Colors.grey.withOpacity(0.3), + borderRadius: BorderRadius.circular(10), + ), + ), + const SizedBox(height: 10), // تقليل المسافة + + // 1. [تغيير جوهري] دمج السعر مع الحالة في صف واحد لتوفير المساحة + _buildCompactHeaderRow(context, c), + + const SizedBox(height: 10), // مسافة مضغوطة + + // 2. كرت المعلومات المضغوط + _buildCompactInfoCard(context, c, parseColor), + + const SizedBox(height: 10), // مسافة مضغوطة + + // 3. أزرار الاتصال (Slim) + _buildCompactButtonsRow(context, c), + + const SizedBox(height: 10), // مسافة مضغوطة + + // 4. شريط الوقت + c.currentRideState.value == RideState.driverArrived + ? const DriverArrivePassengerAndWaitMinute() + : const TimeDriverToPassenger(), + ], + ); + }, + ), + ), + ); + }); + } + + // --------------------------------------------------------------------------- + // [NEW] 1. صف الرأس المضغوط (يحتوي الحالة + الإحصائيات + السعر) + // --------------------------------------------------------------------------- + Widget _buildCompactHeaderRow( + BuildContext context, MapPassengerController controller) { + // تنسيق السعر + final formatter = NumberFormat("#,###"); + String formattedPrice = formatter.format(controller.totalPassenger); + + // حساب الدقائق + int minutes = + (controller.timeToPassengerFromDriverAfterApplied / 60).ceil(); + if (minutes < 1) minutes = 1; + + // تنسيق المسافة + String distanceDisplay = ""; + try { + double distMeters = double.parse(controller.distanceByPassenger); + if (distMeters >= 1000) { + distanceDisplay = "${(distMeters / 1000).toStringAsFixed(1)} km"; + } else { + distanceDisplay = "${distMeters.toInt()} m"; + } + } catch (e) { + distanceDisplay = controller.distanceByPassenger; + } + + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + // القسم الأيسر: الحالة + Chips + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Driver is on the way'.tr, + style: AppStyle.subtitle.copyWith( + color: Colors.grey[600], + fontWeight: FontWeight.w600, + fontSize: 13, // تصغير الخط + ), + ), + const SizedBox(height: 6), + Row( + children: [ + _buildMiniStatChip( + icon: Icons.access_time_filled_rounded, + text: "$minutes ${'min'.tr}", + color: AppColor.primaryColor, + bgColor: AppColor.primaryColor.withOpacity(0.1), + ), + const SizedBox(width: 8), + _buildMiniStatChip( + icon: Icons.near_me_rounded, + text: distanceDisplay, + color: Colors.orange[800]!, + bgColor: Colors.orange.withOpacity(0.1), + ), + ], + ), + ], + ), + ), + + // القسم الأيمن: السعر (كبير وواضح في الزاوية) + Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Text( + formattedPrice, + style: AppStyle.title.copyWith( + fontSize: 24, // تصغير من 32 إلى 24 + fontWeight: FontWeight.w900, + color: AppColor.primaryColor, + height: 1.0, + ), + ), + Text( + 'SYP'.tr, + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.bold, + color: Colors.grey[600], + ), + ), + ], + ), + ], + ); + } + + Widget _buildMiniStatChip({ + required IconData icon, + required String text, + required Color color, + required Color bgColor, + }) { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + decoration: BoxDecoration( + color: bgColor, + borderRadius: BorderRadius.circular(12), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(icon, size: 12, color: color), // تصغير الأيقونة + const SizedBox(width: 4), + Text( + text, + style: TextStyle( + color: color, + fontWeight: FontWeight.bold, + fontSize: 12, // تصغير الخط + ), + ), + ], + ), + ); + } + + // --------------------------------------------------------------------------- + // [MODIFIED] 2. كرت المعلومات المضغوط جداً + // --------------------------------------------------------------------------- + Widget _buildCompactInfoCard(BuildContext context, + MapPassengerController controller, Color Function(String) parseColor) { + return Container( + // تقليل الحواف الداخلية للكرت + padding: const EdgeInsets.all(10), + decoration: BoxDecoration( + color: Theme.of(context).scaffoldBackgroundColor, + borderRadius: BorderRadius.circular(16), + border: Border.all(color: Colors.grey.withOpacity(0.1)), + ), + child: Column( + children: [ + // الصف العلوي: سائق + سيارة + Row( + children: [ + // صورة السائق (أصغر) + Container( + decoration: BoxDecoration( + shape: BoxShape.circle, + border: Border.all( + color: AppColor.primaryColor.withOpacity(0.2), width: 2), + ), + child: CircleAvatar( + radius: 22, // تصغير من 28 إلى 22 + backgroundColor: Colors.grey[200], + backgroundImage: NetworkImage( + '${AppLink.server}/portrate_captain_image/${controller.driverId}.jpg'), + onBackgroundImageError: (_, __) => + const Icon(Icons.person, color: Colors.grey, size: 20), + ), + ), + + const SizedBox(width: 10), + + // معلومات نصية + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + controller.driverName, + style: const TextStyle( + fontSize: 15, // تصغير الخط + fontWeight: FontWeight.bold, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + const SizedBox(height: 2), + Row( + children: [ + const Icon(Icons.star_rounded, + color: Colors.amber, size: 14), + Text( + " ${controller.driverRate} • ${controller.model}", + style: TextStyle( + fontSize: 12, + color: Colors.grey[700], + fontWeight: FontWeight.w500, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ], + ), + ], + ), + ), + + // أيقونة السيارة (أصغر) + _buildMicroCarIcon(controller, parseColor), + ], + ), + + const SizedBox(height: 8), + + // لوحة السيارة (شريط نحيف جداً) + _buildSlimLicensePlate(controller.licensePlate), + ], + ), + ); + } + + Widget _buildMicroCarIcon( + MapPassengerController controller, Color Function(String) parseColor) { + Color carColor = parseColor(controller.colorHex); + return Container( + height: 40, // تصغير من 50 + width: 40, + decoration: BoxDecoration( + color: carColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + ), + padding: const EdgeInsets.all(4), + child: ColorFiltered( + colorFilter: ColorFilter.mode(carColor, BlendMode.srcIn), + child: Image.asset( + box.read(BoxName.carType) == 'Scooter' || + box.read(BoxName.carType) == 'Pink Bike' + ? 'assets/images/moto.png' + : 'assets/images/car3.png', + fit: BoxFit.contain, + ), + ), + ); + } + + Widget _buildSlimLicensePlate(String plateNumber) { + return Container( + width: double.infinity, + padding: const EdgeInsets.symmetric(vertical: 2, horizontal: 8), + decoration: BoxDecoration( + color: const Color(0xFFF5F5F5), + borderRadius: BorderRadius.circular(6), + border: Border.all(color: Colors.grey.withOpacity(0.3)), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + plateNumber, + style: const TextStyle( + fontFamily: 'RobotoMono', + fontSize: 18, // تصغير الرقم + fontWeight: FontWeight.w900, + color: Colors.black87, + letterSpacing: 1.5, + ), + ), + const Text("SYR", + style: TextStyle( + fontSize: 10, + fontWeight: FontWeight.bold, + color: Colors.black54)), + ], + ), + ); + } + + // --------------------------------------------------------------------------- + // [MODIFIED] 3. أزرار الاتصال (Slim Buttons) + // --------------------------------------------------------------------------- + Widget _buildCompactButtonsRow( + BuildContext context, MapPassengerController controller) { + return SizedBox( + height: 40, // تحديد ارتفاع ثابت وصغير للأزرار + child: Row( + children: [ + Expanded( + child: _buildSlimButton( + label: 'Message'.tr, // اختصار الكلمة + icon: Icons.chat_bubble_outline_rounded, + color: AppColor.blueColor, + bgColor: AppColor.blueColor.withOpacity(0.08), + onTap: () => _showContactOptionsDialog(context, controller), + ), + ), + const SizedBox(width: 10), // تقليل المسافة + Expanded( + child: _buildSlimButton( + label: 'Call'.tr, // اختصار الكلمة + icon: Icons.phone_rounded, + color: Colors.white, + bgColor: AppColor.greenColor, + onTap: () { + HapticFeedback.heavyImpact(); + makePhoneCall(controller.driverPhone); + }, + isPrimary: true, + ), + ), + ], + ), + ); + } + + Widget _buildSlimButton({ + required String label, + required IconData icon, + required Color color, + required Color bgColor, + required VoidCallback onTap, + bool isPrimary = false, + }) { + return ElevatedButton( + onPressed: onTap, + style: ElevatedButton.styleFrom( + backgroundColor: bgColor, + foregroundColor: color, + elevation: isPrimary ? 2 : 0, + padding: EdgeInsets.zero, // إزالة الحواشي الداخلية + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(icon, size: 18, color: color), // تصغير الأيقونة + const SizedBox(width: 6), + Text( + label, + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 14, // تصغير الخط + color: color, + ), + ), + ], + ), + ); + } + + // --- النوافذ المنبثقة للرسائل (نفس الكود السابق مع تحسين بسيط) --- + void _showContactOptionsDialog( + BuildContext context, MapPassengerController controller) { + Get.bottomSheet( + Container( + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: Theme.of(context).cardColor, + borderRadius: const BorderRadius.vertical(top: Radius.circular(20)), + ), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('Quick Message'.tr, + style: AppStyle.title.copyWith(fontSize: 16)), + const SizedBox(height: 15), + ..._buildPredefinedMessages(controller), + const Divider(height: 20), + _buildCustomMessageInput(controller, context), + SizedBox(height: MediaQuery.of(context).viewInsets.bottom), + ], + ), + ), + isScrollControlled: true, + ); + } + + List _buildPredefinedMessages(MapPassengerController controller) { + const messages = [ + 'Hello, I\'m at the agreed-upon location', + 'I\'m waiting for you', + "How much longer will you be?", + ]; + + return messages + .map((message) => Padding( + padding: const EdgeInsets.only(bottom: 8.0), + child: InkWell( + onTap: () { + _sendMessage(controller, message.tr); + Get.back(); + }, + child: Container( + padding: + const EdgeInsets.symmetric(vertical: 10, horizontal: 12), + decoration: BoxDecoration( + color: Colors.grey.withOpacity(0.08), + borderRadius: BorderRadius.circular(8), + border: Border.all(color: Colors.grey.withOpacity(0.1)), + ), + child: Row( + children: [ + Icon(Icons.chat_bubble_outline, + size: 16, color: AppColor.primaryColor), + const SizedBox(width: 10), + Expanded( + child: Text(message.tr, + style: AppStyle.subtitle.copyWith(fontSize: 13))), + ], + ), + ), + ), + )) + .toList(); + } + + Widget _buildCustomMessageInput( + MapPassengerController controller, BuildContext context) { + return Row( + children: [ + Expanded( + child: Container( + height: 40, + padding: const EdgeInsets.symmetric(horizontal: 12), + decoration: BoxDecoration( + color: Colors.grey.withOpacity(0.08), + borderRadius: BorderRadius.circular(20), + ), + child: Form( + key: controller.messagesFormKey, + child: TextFormField( + controller: controller.messageToDriver, + decoration: InputDecoration( + hintText: 'Type your message...'.tr, + hintStyle: TextStyle(color: Colors.grey[500], fontSize: 13), + border: InputBorder.none, + contentPadding: const EdgeInsets.only(bottom: 10), + ), + ), + ), + ), + ), + const SizedBox(width: 8), + InkWell( + onTap: () { + if (controller.messagesFormKey.currentState!.validate()) { + _sendMessage(controller, controller.messageToDriver.text); + controller.messageToDriver.clear(); + Get.back(); + } + }, + child: CircleAvatar( + backgroundColor: AppColor.primaryColor, + radius: 20, + child: + const Icon(Icons.send_rounded, color: Colors.white, size: 16), + ), + ), + ], + ); + } + + void _sendMessage(MapPassengerController controller, String text) { + NotificationService.sendNotification( + category: 'message From passenger', + target: controller.driverToken.toString(), + title: 'Message From passenger'.tr, + body: text, + isTopic: false, + tone: 'ding', + driverList: [], + ); + } +} + +// ----------------------------------------------------------------------------- +// مؤشرات الانتظار والوقت (مضغوطة) +// ----------------------------------------------------------------------------- + +class DriverArrivePassengerAndWaitMinute extends StatelessWidget { + const DriverArrivePassengerAndWaitMinute({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return GetBuilder(builder: (controller) { + return Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('Waiting...'.tr, + style: const TextStyle( + fontWeight: FontWeight.bold, + fontSize: 12, + color: Colors.orange)), + Text( + controller.stringRemainingTimeDriverWaitPassenger5Minute, + style: const TextStyle( + fontWeight: FontWeight.bold, + color: Colors.orange, + fontSize: 12), + ), + ], + ), + const SizedBox(height: 4), + ClipRRect( + borderRadius: BorderRadius.circular(2), + child: LinearProgressIndicator( + backgroundColor: Colors.orange.withOpacity(0.2), + color: Colors.orange, + minHeight: 4, + value: + controller.progressTimerDriverWaitPassenger5Minute.toDouble(), + ), + ), + ], + ); + }); + } +} + +class TimeDriverToPassenger extends StatelessWidget { + const TimeDriverToPassenger({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return GetBuilder(builder: (controller) { + if (controller.timeToPassengerFromDriverAfterApplied <= 0) { + return const SizedBox(); + } + return Column( + children: [ + // شريط التقدم فقط لأن الوقت والمسافة موجودان بالأعلى + ClipRRect( + borderRadius: BorderRadius.circular(2), + child: LinearProgressIndicator( + backgroundColor: AppColor.primaryColor.withOpacity(0.1), + color: AppColor.primaryColor, + minHeight: 4, + value: controller.progressTimerToPassengerFromDriverAfterApplied + .toDouble() + .clamp(0.0, 1.0), + ), + ), + ], + ); + }); + } +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/ride_begin_passenger.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:flutter_font_icons/flutter_font_icons.dart'; +import 'package:get/get.dart'; +import 'package:intl/intl.dart'; + +// تأكد من المسارات +import '../../../constant/box_name.dart'; +import '../../../constant/colors.dart'; +import '../../../constant/links.dart'; +import '../../../constant/style.dart'; +import '../../../controller/functions/audio_record1.dart'; +import '../../../controller/functions/launch.dart'; +import '../../../controller/functions/toast.dart'; +import '../../../controller/home/map_passenger_controller.dart'; +import '../../../controller/profile/profile_controller.dart'; +import '../../../main.dart'; +import '../../../views/home/profile/complaint_page.dart'; + +class RideBeginPassenger extends StatelessWidget { + const RideBeginPassenger({super.key}); + + @override + Widget build(BuildContext context) { + final ProfileController profileController = Get.put(ProfileController()); + final AudioRecorderController audioController = + Get.put(AudioRecorderController()); + + return Obx(() { + final controller = Get.find(); + + // شرط الإظهار + final bool isVisible = + controller.currentRideState.value == RideState.inProgress && + controller.isStartAppHasRide == false; + + return AnimatedPositioned( + duration: const Duration(milliseconds: 500), + curve: Curves.easeInOutCubic, + // تم تقليل قيمة الإخفاء لأن الارتفاع الكلي للنافذة أصبح أصغر + bottom: isVisible ? 0 : -300, + left: 0, + right: 0, + child: Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(25), + topRight: Radius.circular(25), + ), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.1), + blurRadius: 20, + spreadRadius: 2, + offset: const Offset(0, -3), + ), + ], + ), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 10), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + // 1. مقبض السحب + Center( + child: Container( + width: 40, + height: 4, + decoration: BoxDecoration( + color: Colors.grey[300], + borderRadius: BorderRadius.circular(10), + ), + ), + ), + const SizedBox(height: 12), + + // 2. هيدر المعلومات (سائق + سيارة + سعر) + _buildCompactHeader(controller), + + const SizedBox(height: 12), + + // خط فاصل خفيف + const Divider( + height: 1, thickness: 0.5, color: Color(0xFFEEEEEE)), + + const SizedBox(height: 12), + + // 3. الأزرار (إجراءات) + _buildCompactActionButtons( + context, controller, profileController, audioController), + + // إضافة هامش سفلي بسيط لرفع الأزرار عن حافة الشاشة + const SizedBox(height: 5), + ], + ), + ), + ), + ); + }); + } + + // --- الهيدر (بدون تغيير، ممتاز) --- + Widget _buildCompactHeader(MapPassengerController controller) { + return Row( + children: [ + // صورة السائق + Container( + decoration: BoxDecoration( + shape: BoxShape.circle, + border: Border.all( + color: AppColor.primaryColor.withOpacity(0.5), width: 1.5), + ), + child: CircleAvatar( + radius: 24, + backgroundImage: NetworkImage( + '${AppLink.server}/portrate_captain_image/${controller.driverId}.jpg'), + onBackgroundImageError: (_, __) => const Icon(Icons.person), + ), + ), + const SizedBox(width: 10), + + // الاسم ومعلومات السيارة + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Flexible( + child: Text( + controller.driverName, + style: const TextStyle( + fontWeight: FontWeight.bold, + fontSize: 15, + color: Colors.black87, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), + const SizedBox(width: 4), + const Icon(Icons.star, color: Colors.amber, size: 14), + Text( + controller.driverRate, + style: const TextStyle( + fontSize: 12, fontWeight: FontWeight.bold), + ), + ], + ), + const SizedBox(height: 2), + Row( + children: [ + Flexible( + child: Text( + '${controller.model} • ', + style: TextStyle(fontSize: 12, color: Colors.grey[700]), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), + Container( + padding: + const EdgeInsets.symmetric(horizontal: 4, vertical: 1), + decoration: BoxDecoration( + color: Colors.grey[100], + border: Border.all(color: Colors.black12), + borderRadius: BorderRadius.circular(4), + ), + child: Text( + controller.licensePlate, + style: const TextStyle( + fontFamily: 'monospace', + fontSize: 11, + fontWeight: FontWeight.w900, + ), + ), + ), + ], + ), + ], + ), + ), + + // السعر + Container( + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 6), + decoration: BoxDecoration( + color: AppColor.primaryColor.withOpacity(0.08), + borderRadius: BorderRadius.circular(8), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Text( + NumberFormat('#,###').format(controller.totalPassenger), + style: const TextStyle( + fontWeight: FontWeight.w900, + fontSize: 16, + color: AppColor.primaryColor, + ), + ), + Text('SYP', + style: TextStyle(fontSize: 9, color: Colors.grey[600])), + ], + ), + ), + ], + ); + } + + // --- الأزرار (بدون تغيير) --- + Widget _buildCompactActionButtons( + BuildContext context, + MapPassengerController controller, + ProfileController profileController, + AudioRecorderController audioController) { + return SizedBox( + height: 60, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + _compactBtn( + icon: Icons.sos_rounded, + label: 'SOS'.tr, + color: AppColor.redColor, + bgColor: AppColor.redColor.withOpacity(0.1), + onTap: () async { + if (box.read(BoxName.sosPhonePassenger) == null) { + await profileController.updatField( + 'sosPhone', TextInputType.phone); + box.write(BoxName.sosPhonePassenger, + profileController.prfoileData['sosPhone']); + } else { + makePhoneCall('112'); + } + }, + ), + _compactBtn( + icon: FontAwesome.whatsapp, + label: 'WhatsApp'.tr, + color: const Color(0xFF25D366), + bgColor: const Color(0xFF25D366).withOpacity(0.1), + onTap: () async { + if (box.read(BoxName.sosPhonePassenger) == null) { + await profileController.updatField( + 'sosPhone', TextInputType.phone); + } else { + final phone = controller.formatSyrianPhoneNumber( + box.read(BoxName.sosPhonePassenger).toString()); + controller.sendWhatsapp(phone); + } + }, + ), + _compactBtn( + icon: Icons.share, + label: 'Share'.tr, + color: AppColor.primaryColor, + bgColor: AppColor.primaryColor.withOpacity(0.1), + onTap: () async => await controller.shareTripWithFamily(), + ), + GetBuilder( + init: audioController, + builder: (audioCtx) { + return _compactBtn( + icon: audioCtx.isRecording + ? Icons.stop_circle_outlined + : Icons.mic_none_outlined, + label: audioCtx.isRecording ? 'Stop'.tr : 'Record'.tr, + color: audioCtx.isRecording + ? AppColor.redColor + : AppColor.primaryColor, + bgColor: audioCtx.isRecording + ? AppColor.redColor.withOpacity(0.1) + : AppColor.primaryColor.withOpacity(0.1), + onTap: () async { + if (!audioCtx.isRecording) { + await audioCtx.startRecording(); + Toast.show(context, 'Start Record'.tr, AppColor.greenColor); + } else { + await audioCtx.stopRecording(); + Toast.show(context, 'Record saved'.tr, AppColor.greenColor); + } + }, + ); + }, + ), + _compactBtn( + icon: Icons.info_outline_rounded, + label: 'Report'.tr, + color: Colors.grey[700]!, + bgColor: Colors.grey[200]!, + onTap: () => Get.to(() => ComplaintPage()), + ), + ], + ), + ); + } + + Widget _compactBtn({ + required IconData icon, + required String label, + required Color color, + required Color bgColor, + required VoidCallback onTap, + }) { + return InkWell( + onTap: onTap, + borderRadius: BorderRadius.circular(10), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: bgColor, + shape: BoxShape.circle, + ), + child: Icon(icon, size: 20, color: color), + ), + const SizedBox(height: 4), + Text( + label, + style: TextStyle( + fontSize: 10, + color: Colors.grey[700], + fontWeight: FontWeight.w500), + ), + ], + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/cash_confirm_bottom_page.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/views/home/my_wallet/passenger_wallet.dart'; + +import '../../../constant/colors.dart'; +import '../../../constant/info.dart'; +import '../../../controller/home/map_passenger_controller.dart'; +import '../../../controller/payment/payment_controller.dart'; +import '../../../main.dart'; +import '../../widgets/elevated_btn.dart'; + +class CashConfirmPageShown extends StatelessWidget { + CashConfirmPageShown({super.key}); + final PaymentController paymentController = Get.put(PaymentController()); + + @override + Widget build(BuildContext context) { + return GetBuilder(builder: (controller) { + // شرط الإظهار الرئيسي لم يتغير + return Positioned( + bottom: 0, + left: 0, + right: 0, + child: AnimatedContainer( + duration: const Duration(milliseconds: 300), + curve: Curves.easeInOut, + // التحكم في ظهور اللوحة لم يتغير + transform: Matrix4.translationValues( + 0, controller.isCashConfirmPageShown ? 0 : Get.height, 0), + decoration: BoxDecoration( + color: AppColor.secondaryColor, + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(24), + topRight: Radius.circular(24), + ), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.2), + blurRadius: 20, + ), + ], + ), + child: Padding( + padding: const EdgeInsets.all(20.0), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // --- 1. رأس الصفحة --- + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Payment Method'.tr, + style: AppStyle.headTitle.copyWith(fontSize: 24), + ), + // زر الإغلاق (كان معلقاً في الكود القديم، تم تفعيله هنا) + IconButton( + onPressed: () => controller.changeCashConfirmPageShown(), + icon: const Icon(Icons.close, color: AppColor.writeColor), + ), + ], + ), + const SizedBox(height: 16), + + // --- 2. بطاقات اختيار الدفع --- + GetBuilder(builder: (paymentCtrl) { + // نفس منطق تغيير اللون للسيارات النسائية + final bool isLadyRide = box.read(BoxName.carType) == 'Lady' || + box.read(BoxName.carType) == 'Pink Bike'; + final Color selectedColor = + isLadyRide ? Colors.pink.shade300 : AppColor.primaryColor; + + return Column( + children: [ + // بطاقة المحفظة + _buildPaymentOptionCard( + icon: Icons.account_balance_wallet_outlined, + title: '${AppInformation.appName} Balance'.tr, + subtitle: + '${'Balance:'.tr} ${box.read(BoxName.passengerWalletTotal) ?? '0.0'} ${'SYP'.tr}', + isSelected: paymentCtrl.isWalletChecked, + selectedColor: selectedColor, + onTap: () => + paymentCtrl.onChangedPaymentMethodWallet(true), + ), + const SizedBox(height: 12), + // بطاقة الكاش + _buildPaymentOptionCard( + icon: Icons.money_rounded, + title: 'Cash'.tr, + subtitle: 'Pay directly to the captain'.tr, + isSelected: paymentCtrl.isCashChecked, + selectedColor: selectedColor, + onTap: () => + paymentCtrl.onChangedPaymentMethodCash(true), + ), + ], + ); + }), + const SizedBox(height: 24), + + // --- 3. أزرار التأكيد (بنفس منطقك القديم تماماً) --- + GetBuilder(builder: (paymentCtrl) { + final bool isWalletSufficient = (double.tryParse( + box.read(BoxName.passengerWalletTotal) ?? '0') ?? + 0) >= + controller.totalPassenger; + + // إذا تم اختيار المحفظة والرصيد غير كافٍ + if (paymentCtrl.isWalletChecked && !isWalletSufficient) { + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + MyElevatedButton( + title: 'Top up Balance to continue'.tr, + onPressed: () => + Get.to(() => const PassengerWallet()), + kolor: AppColor.redColor, + ), + const SizedBox(height: 8), + TextButton( + onPressed: () => + paymentCtrl.onChangedPaymentMethodCash(true), + child: Text("Or pay with Cash instead".tr, + style: TextStyle(color: AppColor.primaryColor)), + ) + ], + ); + } + // في كل الحالات الأخرى (كاش، أو محفظة برصيد كافٍ) + else { + return MyElevatedButton( + title: 'Confirm & Find a Ride'.tr, + onPressed: () { + // --- نفس منطقك القديم بالضبط --- + controller.changeCashConfirmPageShown(); + // controller.isSearchingWindow = true; + controller.startSearchingForDriver(); + // controller.update(); + }, + ); + } + }), + ], + ), + ), + ), + ); + }); + } + + // --- ويدجت مساعدة لبناء بطاقة الدفع --- + Widget _buildPaymentOptionCard({ + required IconData icon, + required String title, + required String subtitle, + required bool isSelected, + required VoidCallback onTap, + required Color selectedColor, + }) { + return GestureDetector( + onTap: onTap, + child: AnimatedContainer( + duration: const Duration(milliseconds: 250), + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: isSelected + ? selectedColor.withOpacity(0.1) + : AppColor.writeColor.withOpacity(0.05), + borderRadius: BorderRadius.circular(12), + border: Border.all( + color: isSelected + ? selectedColor + : AppColor.writeColor.withOpacity(0.2), + width: isSelected ? 2.0 : 1.0, + ), + ), + child: Row( + children: [ + Icon(icon, + color: isSelected ? selectedColor : AppColor.writeColor, + size: 28), + const SizedBox(width: 16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(title, + style: + AppStyle.title.copyWith(fontWeight: FontWeight.bold)), + Text(subtitle, + style: AppStyle.subtitle.copyWith( + color: AppColor.writeColor.withOpacity(0.7))), + ], + ), + ), + if (isSelected) + Icon(Icons.check_circle_rounded, color: selectedColor, size: 24), + ], + ), + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/vip_begin.dart +================================================== + +import 'package:Intaleq/constant/links.dart'; +import 'package:Intaleq/views/home/profile/complaint_page.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_font_icons/flutter_font_icons.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/controller/profile/profile_controller.dart'; +import 'package:Intaleq/main.dart'; + +import '../../../constant/colors.dart'; +import '../../../constant/style.dart'; +import '../../../controller/functions/audio_record1.dart'; +import '../../../controller/functions/launch.dart'; +import '../../../controller/functions/toast.dart'; +import '../../../controller/home/map_passenger_controller.dart'; + +class VipRideBeginPassenger extends StatelessWidget { + const VipRideBeginPassenger({ + super.key, + }); + + @override + Widget build(BuildContext context) { + ProfileController profileController = Get.put(ProfileController()); + AudioRecorderController audioController = + Get.put(AudioRecorderController()); + // Get.put(MapPassengerController()); + return GetBuilder(builder: (controller) { + if (controller.statusRideVip == 'Begin' || + !controller.statusRideFromStart) { + return Positioned( + left: 10, + right: 10, + bottom: 10, + child: Container( + decoration: AppStyle.boxDecoration, + height: controller.statusRideVip == 'Begin' ? Get.height * .33 : 0, + // width: 100, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + CircleAvatar( + radius: 30, + backgroundImage: NetworkImage( + '${AppLink.server}/portrate_captain_image/${controller.driverId}.jpg', + ), + onBackgroundImageError: (_, __) { + // Handle error here + }, + backgroundColor: Colors.grey, + child: const Icon( + Icons.person, // Default icon or placeholder + size: 30, + color: Colors.white, + ), // Placeholder background color + ), + Column( + children: [ + Container( + decoration: AppStyle.boxDecoration, + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 6, vertical: 2), + child: Text( + controller.driverName, + style: AppStyle.title, + ), + ), + ), + const SizedBox( + height: 10, + ), + Container( + decoration: AppStyle.boxDecoration, + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 6, vertical: 2), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceAround, + children: [ + Text( + controller.make, + style: AppStyle.title, + ), + const SizedBox( + width: 10, + ), + Text( + controller.model, + style: AppStyle.title, + ), + ], + ), + ), + ), + ], + ), + Column( + children: [ + Container( + decoration: AppStyle.boxDecoration, + child: Padding( + padding: const EdgeInsets.all(3), + child: Text( + 'vip', + style: AppStyle.title, + ), + ), + ), + Text( + '${controller.driverRate} 📈', + style: AppStyle.title, + ), + ], + ), + ], + ), + // SizedBox( + // height: 5, + // ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Container( + width: Get.width * .15, + decoration: AppStyle.boxDecoration, + child: IconButton( + onPressed: () => Get.to( + () => ComplaintPage(), + transition: Transition.downToUp, + ), + icon: const Icon( + Icons.note_add, + color: AppColor.redColor, + ), + tooltip: ' Add Note', // Optional tooltip for clarity + ), + ), + Container( + width: Get.width * .15, + decoration: AppStyle.boxDecoration, + child: audioController.isRecording == false + ? IconButton( + onPressed: () async { + await audioController.startRecording(); + Toast.show(context, 'Start Record'.tr, + AppColor.greenColor); + }, + icon: const Icon( + Icons.play_circle_fill_outlined, + color: AppColor.greenColor, + ), + tooltip: + ' Add Note', // Optional tooltip for clarity + ) + : IconButton( + onPressed: () async { + await audioController.stopRecording(); + Toast.show(context, 'Record saved'.tr, + AppColor.greenColor); + }, + icon: const Icon( + Icons.stop_circle, + color: AppColor.greenColor, + ), + tooltip: + ' Add Note', // Optional tooltip for clarity + ), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Container( + decoration: AppStyle.boxDecoration, + width: Get.width * .15, + child: IconButton( + onPressed: () async { + if (box.read(BoxName.sosPhonePassenger) == null) { + { + await profileController.updatField( + 'sosPhone', TextInputType.phone); + box.write(BoxName.sosPhonePassenger, + profileController.prfoileData['sosPhone']); + } + } else { + makePhoneCall('122'); + // box.read(BoxName.sosPhonePassenger)); + } + }, + icon: const Icon( + Icons.sos_rounded, + color: AppColor.redColor, + ), + ), + ), + Container( + decoration: AppStyle.boxDecoration, + width: Get.width * .15, + child: IconButton( + onPressed: () async { + if (box.read(BoxName.sosPhonePassenger) == null || + box.read(BoxName.sosPhonePassenger) == 'sos') { + { + await profileController.updatField( + 'sosPhone', TextInputType.phone); + box.write(BoxName.sosPhonePassenger, + profileController.prfoileData['sosPhone']); + } + } else { + String phoneNumber = box + .read(BoxName.sosPhonePassenger) + .toString(); + // phoneNumber = phoneNumber.replaceAll('0', ''); + var phone = box.read(BoxName.countryCode) == + 'Egypt' + ? '+2${box.read(BoxName.sosPhonePassenger)}' + : '+962${box.read(BoxName.sosPhonePassenger)}'; + controller.sendWhatsapp(phone); + } + }, + icon: const Icon( + FontAwesome.whatsapp, + color: AppColor.greenColor, + ), + ), + ), + Container( + decoration: AppStyle.boxDecoration, + width: Get.width * .15, + child: IconButton( + onPressed: () async { + await controller.shareTripWithFamily(); + }, + icon: const Icon( + AntDesign.Safety, + color: AppColor.blueColor, + ), + ), + ), + ], + ), + Stack( + children: [ + // StreamCounter(), + LinearProgressIndicator( + backgroundColor: AppColor.accentColor, + color: + // controller.remainingTimeTimerRideBegin < 60 + // ? AppColor.redColor + // : + AppColor.greenColor, + minHeight: 25, + borderRadius: BorderRadius.circular(15), + value: + 24 //controller.progressTimerRideBegin.toDouble(), + ), + Center( + child: Text( + controller.stringElapsedTimeRideBeginVip, + style: AppStyle.title, + ), + ) + ], + ) + ], + ), + ), + ), + ); + } else { + return const SizedBox(); + } + }); + } +} + +class StreamCounter extends StatelessWidget { + const StreamCounter({Key? key}) : super(key: key); + + @override + // Build the UI based on the timer value + Widget build(BuildContext context) { + Get.put(MapPassengerController()); + return GetBuilder(builder: (controller) { + return StreamBuilder( + initialData: 0, + stream: controller.timerController.stream, + builder: (context, snapshot) { + // Calculate the remaining time based on the current tick + final remainingTime = controller.durationToRide - snapshot.data!; + + // Format the remaining time as a string + final formattedRemainingTime = + '${(remainingTime / 60).floor()}:${(remainingTime % 60).toString().padLeft(2, '0')}'; + + // Return the UI widgets based on the remaining time + return Column( + children: [ + Text(formattedRemainingTime), + // ElevatedButton( + // onPressed: () { + // // Handle button press here + // }, + // ), + ], + ); + }, + ); + }); + } +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/payment_method.page.dart +================================================== + +import 'package:flutter/material.dart'; + +import 'package:get/get.dart'; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/controller/functions/secure_storage.dart'; +import 'package:Intaleq/controller/home/payment/credit_card_controller.dart'; +import 'package:Intaleq/views/widgets/elevated_btn.dart'; + +import '../../../constant/colors.dart'; +import '../../../constant/style.dart'; +import '../../../controller/functions/digit_obsecur_formate.dart'; +import '../../../controller/home/map_passenger_controller.dart'; + +class PaymentMethodPage extends StatelessWidget { + const PaymentMethodPage({ + super.key, + }); + + @override + Widget build(BuildContext context) { + return GetBuilder( + builder: (controller) => Positioned( + right: 5, + bottom: 5, + left: 5, + child: AnimatedContainer( + duration: const Duration(milliseconds: 400), + height: controller.isPaymentMethodPageShown + ? controller.paymentPageShown + : 0, + decoration: BoxDecoration( + color: AppColor.secondaryColor, + borderRadius: BorderRadius.circular(15)), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'My Card'.tr, + style: AppStyle.title.copyWith(fontSize: 22), + ), + IconButton( + onPressed: () => + controller.changePaymentMethodPageShown(), + icon: const Icon(Icons.close), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Add Card'.tr, + style: AppStyle.title, + ), + // GetBuilder( + // builder: (controller) => IconButton( + // onPressed: () { + // // controller.scanCard(); + // // Get.defaultDialog(content: OptionConfigureWidget( + // // initialOptions: scanOptions, + // // onScanOptionChanged: (newOptions) => + // // scanOptions = newOptions, + // // ), + // // ); + // }, + // icon: const Icon(Icons.contact_emergency_sharp), + // ), + // ) + ], + ), + const SizedBox( + height: 10, + ), + const MyCreditCardWidget(), + const Spacer(), + GetBuilder( + builder: (controller) => Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + MyElevatedButton( + title: 'Add Credit Card'.tr, + onPressed: () async { + if (controller.formKey.currentState! + .validate()) { + SecureStorage().saveData( + BoxName.cardNumber, + controller + .cardNumberController.text); + SecureStorage().saveData( + BoxName.cardHolderName, + controller + .cardHolderNameController.text); + SecureStorage().saveData( + BoxName.cvvCode, + controller.cvvCodeController.text); + SecureStorage().saveData( + BoxName.expiryDate, + controller + .expiryDateController.text); + } + }, + ), + ], + )) + ], + ), + ), + ), + )); + } +} + +class MyCreditCardWidget extends StatelessWidget { + const MyCreditCardWidget({ + super.key, + }); + + @override + Widget build(BuildContext context) { + Get.put(CreditCardController()); + return GetBuilder( + builder: (controller) => Container( + height: Get.height * .4, + width: Get.width * .9, + decoration: const BoxDecoration( + color: AppColor.secondaryColor, + borderRadius: BorderRadius.all(Radius.circular(15)), + gradient: LinearGradient(colors: [ + AppColor.secondaryColor, + // AppColor.blueColor, + // AppColor.greenColor, + AppColor.accentColor, + // AppColor.primaryColor, + // AppColor.redColor, + // AppColor.yellowColor + ]), + boxShadow: [ + BoxShadow( + spreadRadius: 3, + offset: Offset(3, 3), + blurRadius: 3, + color: AppColor.redColor), + BoxShadow( + offset: Offset(-3, -3), + blurRadius: 3, + spreadRadius: 3, + color: AppColor.redColor), + ], + ), + child: Form( + key: controller.formKey, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + SizedBox( + child: Row( + children: [ + getCardIcon(controller.cardNumberController + .text), // Dynamic credit card icon + SizedBox( + width: Get.width * .03, + ), + SizedBox( + width: Get.width * .25, + child: Text( + 'Card Number'.tr, + style: AppStyle.title, + ), + ), + SizedBox( + width: Get.width * .03, + ), + SizedBox( + width: Get.width * .4, + height: 70, + child: TextFormField( + maxLength: 16, + keyboardType: TextInputType.number, + controller: controller.cardNumberController, + style: const TextStyle( + color: AppColor.blueColor, + fontFamily: 'digital-counter-7', + fontWeight: FontWeight.bold), + decoration: const InputDecoration( + helperStyle: TextStyle( + fontFamily: 'digital-counter-7'), + // labelText: 'Card Number', + ), + // inputFormatters: [DigitObscuringFormatter()], + validator: (value) { + if (value!.isEmpty || value.length != 16) { + return 'Please enter a valid 16-digit card number' + .tr; + } + return null; + }, + ), + ), + ], + ), + ), + Row( + children: [ + const Icon(Icons.person), + SizedBox( + width: Get.width * .03, + ), + SizedBox( + width: Get.width * .25, + child: Text( + 'Holder Name', + style: AppStyle.title, + ), + ), + SizedBox( + width: Get.width * .03, + ), + SizedBox( + width: Get.width * .3, + child: SizedBox( + // height: 50, + child: TextFormField( + style: AppStyle.title, + keyboardType: TextInputType.text, + // maxLength: 16, + controller: controller.cardHolderNameController, + decoration: const InputDecoration( + // labelText: 'Cardholder Name', + ), + validator: (value) { + if (value!.isEmpty) { + return 'Please enter the cardholder name' + .tr; + } + return null; + }, + ), + ), + ) + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + SizedBox( + width: Get.width * .4, + child: Row( + children: [ + const Icon(Icons.date_range_outlined), + SizedBox( + width: Get.width * .03, + ), + Column( + children: [ + SizedBox( + width: Get.width * .2, + child: Text( + 'Expiry Date', + style: AppStyle.subtitle, + ), + ), + SizedBox( + width: Get.width * .1, + child: SizedBox( + height: 60, + child: TextFormField( + maxLength: 4, + keyboardType: TextInputType.datetime, + controller: + controller.expiryDateController, + style: AppStyle.title, + decoration: const InputDecoration(), + validator: (value) { + if (value!.isEmpty) { + return 'Please enter the expiry date' + .tr; + } + return null; + }, + ), + ), + ) + ], + ), + ], + ), + ), + SizedBox( + width: Get.width * .4, + child: Row( + children: [ + const Icon(Icons.security), + SizedBox( + width: Get.width * .021, + ), + Column( + children: [ + SizedBox( + width: Get.width * .2, + child: Text( + 'CVV Code', + style: AppStyle.subtitle, + ), + ), + SizedBox( + width: Get.width * .2, + child: SizedBox( + height: 60, + child: TextFormField( + obscureText: true, + keyboardType: TextInputType.number, + style: const TextStyle( + color: AppColor.primaryColor, + fontFamily: 'digital-counter-7'), + maxLength: 3, + controller: + controller.cvvCodeController, + decoration: const InputDecoration( + // labelText: 'CVV Code', + ), + validator: (value) { + if (value!.isEmpty && + value.length != 3) { + return 'Please enter the CVV code' + .tr; + } + return null; + }, + ), + ), + ), + ], + ) + ], + ), + ), + ], + ), + // const SizedBox( + // height: 20, + // ), + MyElevatedButton( + title: 'Save'.tr, + onPressed: () { + if (controller.formKey.currentState!.validate()) { + // final creditCard = CreditCardModel( + // cardNumber: controller.cardNumberController.text, + // cardHolderName: + // controller.cardHolderNameController.text, + // expiryDate: controller.expiryDateController.text, + // cvvCode: controller.cvvCodeController.text, + // ); + // Process the credit card details + // You can use GetX to handle the logic here + + if (controller.formKey.currentState!.validate()) { + SecureStorage().saveData(BoxName.cardNumber, + controller.cardNumberController.text); + SecureStorage().saveData(BoxName.cardHolderName, + controller.cardHolderNameController.text); + SecureStorage().saveData(BoxName.cvvCode, + controller.cvvCodeController.text); + SecureStorage().saveData(BoxName.expiryDate, + controller.expiryDateController.text); + } + } + }, + ), + ], + ), + )))); + } + + Widget getCardIcon(String cardNumber) { + String cardType = detectCardType( + cardNumber); // Function to detect card type based on the first digit + + IconData iconData; + Color iconColor; + + switch (cardType) { + case 'Visa': + iconData = Icons.credit_card_rounded; + iconColor = Colors.blue; // Change color for Visa cards + break; + case 'Mastercard': + iconData = Icons.credit_card_rounded; + iconColor = Colors.red; // Change color for Mastercard cards + break; + default: + iconData = Icons.credit_card_rounded; + iconColor = Colors.black; // Default color for other card types + break; + } + + return Icon( + iconData, + color: iconColor, + ); + } + + String detectCardType(String cardNumber) { + if (cardNumber.startsWith('4')) { + return 'Visa'; + } else if (cardNumber.startsWith('5')) { + return 'Mastercard'; + } else { + return 'Other'; + } + } +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/call_passenger_page.dart +================================================== + +// import 'dart:async'; +// import 'package:SEFER/constant/box_name.dart'; +// import 'package:SEFER/controller/home/map_passenger_controller.dart'; +// import 'package:SEFER/main.dart'; +// import 'package:SEFER/views/widgets/my_scafold.dart'; +// import 'package:flutter/material.dart'; +// import 'package:get/get.dart'; +// import 'package:permission_handler/permission_handler.dart'; + +// import 'package:agora_rtc_engine/agora_rtc_engine.dart'; + +// import '../../../../constant/api_key.dart'; +// import '../../../constant/colors.dart'; +// import '../../../constant/style.dart'; +// import '../../../controller/firebase/firbase_messge.dart'; + +// String appId = AK.agoraAppId; + +// class PassengerCallPage extends StatefulWidget { +// const PassengerCallPage({ +// super.key, +// required this.channelName, +// required this.token, +// required this.remoteID, +// }); +// final String channelName, token, remoteID; +// @override +// State createState() => _PassengerCallPageState(); +// } + +// class _PassengerCallPageState extends State { +// int uid = 0; +// int? _remoteUid = 0; // uid of the remote user +// bool _isJoined = false; // Indicates if the local user has joined the channel +// late RtcEngine agoraEngine; // Agora engine instance +// String status = ''; +// final GlobalKey scaffoldMessengerKey = +// GlobalKey(); // Global key to access the scaffold + +// showMessage(String message) { +// scaffoldMessengerKey.currentState?.showSnackBar(SnackBar( +// content: Text(message), +// )); +// } + +// initAgora() async { +// await setupVoiceSDKEngine(); +// } + +// @override +// void initState() { +// super.initState(); +// _remoteUid = int.parse(widget.remoteID); +// uid = int.parse(box.read(BoxName.phone)); +// // Set up an instance of Agora engine +// initAgora(); +// } + +// Future setupVoiceSDKEngine() async { +// // retrieve or request microphone permission +// await [Permission.microphone].request(); + +// //create an instance of the Agora engine +// agoraEngine = createAgoraRtcEngine(); +// await agoraEngine.initialize(RtcEngineContext(appId: AK.agoraAppId)); +// // Register the event handler +// agoraEngine.registerEventHandler( +// RtcEngineEventHandler( +// onJoinChannelSuccess: (RtcConnection connection, int elapsed) { +// showMessage( +// "Local user uid:${connection.localUid} joined the channel"); +// setState(() { +// _isJoined = true; +// status = 'joined'.tr; +// }); +// }, +// onUserJoined: (RtcConnection connection, int remoteUid, int elapsed) { +// showMessage("Driver joined the channel".tr); +// setState(() { +// status = "Driver joined the channel".tr; +// _remoteUid = remoteUid; +// }); +// }, +// onUserOffline: (RtcConnection connection, int? remoteUid, +// UserOfflineReasonType reason) { +// showMessage("Driver left the channel".tr); +// setState(() { +// status = "Driver left the channel".tr; +// _remoteUid = null; +// }); +// }, +// ), +// ); +// } + +// void join() async { +// // Set channel options including the client role and channel profile +// ChannelMediaOptions options = const ChannelMediaOptions( +// clientRoleType: ClientRoleType.clientRoleBroadcaster, +// channelProfile: ChannelProfileType.channelProfileCommunication, +// ); + +// await agoraEngine.joinChannel( +// token: widget.token, +// channelId: widget.channelName, +// options: options, +// uid: uid, +// ); +// } +// //https://console.agora.io/invite?sign=5e9e22d06f22caeeada9954c9e908572%253A5ba8aed978a35eab5a5113742502ded2a41478b2a81cb19c71a30776e125b58a + +// void leave() { +// setState(() { +// _isJoined = false; +// _remoteUid = null; +// }); +// agoraEngine.leaveChannel(); +// } + +// // Clean up the resources when you leave +// @override +// void dispose() async { +// await agoraEngine.leaveChannel(); +// super.dispose(); +// } + +// // Build UI +// @override +// Widget build(BuildContext context) { +// return MaterialApp( +// scaffoldMessengerKey: scaffoldMessengerKey, +// home: MyScafolld( +// // appBar: AppBar( +// // title: const Text('Get started with Voice Calling'), +// // ), +// title: 'Call Page'.tr, +// isleading: true, +// body: [ +// Positioned( +// top: Get.height * .2, +// child: Container( +// height: 100, width: Get.width, +// decoration: AppStyle.boxDecoration, +// child: Row( +// mainAxisAlignment: MainAxisAlignment.spaceEvenly, +// children: [ +// GestureDetector( +// onTap: () async { +// // await callController.initAgoraFull(); +// // callController.join(); +// // FirebaseMessagesController().sendNotificationToPassengerToken( +// // 'Call Income', +// // '${'You have call from driver'.tr} ${box.read(BoxName.nameDriver)}', +// // Get.find().tokenPassenger, +// // [ +// // callController.token, +// // callController.channelName, +// // callController.uid.toString(), +// // callController.remoteUid.toString(), +// // ], +// // ); +// join(); +// // callController.fetchToken(); +// }, +// child: Container( +// width: 50, +// height: 50, +// decoration: const BoxDecoration( +// shape: BoxShape.circle, +// color: AppColor.greenColor), +// child: const Icon( +// Icons.phone, +// size: 35, +// color: AppColor.secondaryColor, +// )), +// ), +// Column( +// children: [ +// Text( +// status, +// style: AppStyle.title, +// ), +// Text('Driver Name'), +// ], +// ), +// GestureDetector( +// onTap: () async { +// FirebaseMessagesController() +// .sendNotificationToPassengerToken( +// 'Call End'.tr, +// 'Call End', +// Get.find().driverToken, +// [], +// 'iphone_ringtone.wav', +// ); +// leave(); +// Get.back(); +// // }, +// child: Container( +// width: 50, +// height: 50, +// decoration: const BoxDecoration( +// shape: BoxShape.circle, color: AppColor.redColor), +// child: const Icon( +// Icons.phone_disabled_sharp, +// size: 35, +// color: AppColor.secondaryColor, +// )), +// ) +// ], +// ), +// // ignore: prefer_const_constructors +// ), +// ), +// // ListView( +// // padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 4), +// // children: [ +// // // Status text +// // Container(height: 40, child: Center(child: _status())), +// // // Button Row +// // Row( +// // children: [ +// // Expanded( +// // child: ElevatedButton( +// // child: Text("Join".tr), +// // onPressed: () => {join()}, +// // ), +// // ), +// // const SizedBox(width: 10), +// // Expanded( +// // child: ElevatedButton( +// // child: Text("Leave".tr), +// // onPressed: () => {leave()}, +// // ), +// // ), +// // ], +// // ), +// // ], +// // ), +// ]), +// ); +// } + +// // Widget _status() { +// // String statusText; +// // +// // if (!_isJoined) { +// // statusText = 'Join a channel'.tr; +// // } else if (_remoteUid == null) +// // statusText = 'Waiting for a remote user to join...'; +// // else +// // statusText = 'Connected to remote user, uid:$_remoteUid'; +// // +// // return Text( +// // statusText, +// // ); +// // } +// } + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/left_main_menu_icons.dart +================================================== + +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/controller/firebase/firbase_messge.dart'; +import 'package:Intaleq/controller/firebase/notification_service.dart'; +import 'package:Intaleq/main.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_font_icons/flutter_font_icons.dart'; +import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'dart:ui'; // مهم لإضافة تأثير الضبابية + +import '../../../constant/colors.dart'; +import '../../../controller/functions/encrypt_decrypt.dart'; +import '../../../controller/functions/tts.dart'; +import '../../../controller/home/map_passenger_controller.dart'; +import '../../../controller/home/vip_waitting_page.dart'; +import '../../../env/env.dart'; +import '../../../print.dart'; +import '../../auth/otp_page.dart'; + +// --- الدالة الرئيسية بالتصميم الجديد --- +GetBuilder leftMainMenuIcons() { + Get.put(TextToSpeechController()); + return GetBuilder( + builder: (controller) => Positioned( + // تم تعديل الموضع ليتناسب مع التصميم الجديد + top: Get.height * .01, + left: 0, + right: 0, + child: Center( + child: ClipRRect( + borderRadius: BorderRadius.circular(50.0), // لإنشاء شكل الكبسولة + child: BackdropFilter( + filter: ImageFilter.blur( + sigmaX: 8.0, sigmaY: 8.0), // تأثير الزجاج المصنفر + child: AnimatedContainer( + duration: const Duration(milliseconds: 300), + padding: const EdgeInsets.symmetric(horizontal: 8), + decoration: BoxDecoration( + color: AppColor.secondaryColor.withOpacity(0.4), // لون شبه شفاف + borderRadius: BorderRadius.circular(50.0), + border: Border.all(color: AppColor.secondaryColor), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.min, // ليأخذ الشريط حجم الأزرار فقط + children: [ + // --- تم استخدام دالة مساعدة جديدة للزر --- + _buildMapActionButton( + icon: Icons.satellite_alt_outlined, + tooltip: 'Toggle Map Type', + onPressed: () => controller.changeMapType(), + ), + // _buildVerticalDivider(), + // _buildMapActionButton( + // icon: Icons.traffic_outlined, + // tooltip: 'Toggle Traffic', + // onPressed: () => controller.changeMapTraffic(), + // ), + _buildVerticalDivider(), + _buildMapActionButton( + icon: Icons.my_location_rounded, + tooltip: 'Go to My Location', + onPressed: () { + controller.mapController?.animateCamera( + CameraUpdate.newLatLng( + LatLng( + controller.passengerLocation.latitude, + controller.passengerLocation.longitude, + ), + ), + ); + }, + ), + _buildVerticalDivider(), + _buildMapActionButton( + icon: Octicons.watch, + tooltip: 'VIP Waiting Page', + onPressed: () => Get.to(() => VipWaittingPage()), + ), + // _buildMapActionButton( + // icon: Octicons.ellipsis, + // tooltip: 'test', + // onPressed: () => Get.to(() => TestPage()), + // ), + ], + ), + ), + ), + ), + ), + ), + ); +} + +// --- دالة مساعدة جديدة لإنشاء الأزرار بشكل أنيق --- +Widget _buildMapActionButton({ + required IconData icon, + required String tooltip, + required VoidCallback onPressed, +}) { + return IconButton( + onPressed: onPressed, + icon: Icon(icon, color: AppColor.writeColor, size: 22), + tooltip: tooltip, + splashRadius: 22, + padding: const EdgeInsets.all(12), + constraints: const BoxConstraints(), // لإزالة المساحات الافتراضية + ); +} + +// --- ويدجت للفاصل الرأسي بين الأزرار --- +Widget _buildVerticalDivider() { + return Container( + height: 20, + width: 1, + color: AppColor.writeColor.withOpacity(0.2), + ); +} + +// --- باقي الكود الخاص بك يبقى كما هو بدون تغيير --- +class TestPage extends StatelessWidget { + const TestPage({ + super.key, + }); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(), + body: Center( + child: TextButton( + onPressed: () async { + // print(box.read(BoxName.lowEndMode)); + // box.read(BoxName.lowEndMode) + Get.to(PhoneNumberScreen()); + }, + child: Text( + "Text Button", + ), + ), + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/new_main_bottom_sheet.dart +================================================== + +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/colors.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/main.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +class NewMainBottomSheet extends StatelessWidget { + const NewMainBottomSheet({super.key}); + + @override + Widget build(BuildContext context) { + return Positioned( + bottom: 0, + left: 5, + right: 5, + child: Container( + decoration: AppStyle.boxDecoration, + width: Get.width, + height: Get.height * .15, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Container( + decoration: BoxDecoration( + border: Border.all(), + borderRadius: BorderRadius.circular(15)), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + children: [ + Text('Home'.tr), + const Icon(Icons.home), + ], + ), + ), + ), + Container( + decoration: BoxDecoration( + border: Border.all(), + borderRadius: BorderRadius.circular(15)), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + children: [ + Text('Work'.tr), + const Icon(Icons.work_outline), + ], + ), + ), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + decoration: BoxDecoration( + border: Border.all(), + borderRadius: BorderRadius.circular(15), + color: AppColor.blueColor.withOpacity(.5), + ), + child: Padding( + padding: const EdgeInsets.all(12), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Icon(Icons.search), + Text( + "${"Where you want go ".tr}${(box.read(BoxName.name).toString().split(' ')[0]).toString()} ?", + ), + ], + ), + ), + ) + ], + ) + ], + ), + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/driver_card_from_passenger.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../../constant/style.dart'; +import '../../../controller/home/map_passenger_controller.dart'; +import 'hexegone_clipper.dart'; + +GetBuilder hexagonClipper() { + return GetBuilder( + builder: ((controller) => controller.rideConfirm + ? Positioned( + top: Get.height * .1, + left: Get.width * .1, + right: Get.width * .1, + child: ClipPath( + clipper: + HexagonClipper(), // CustomClipper to create a hexagon shape + child: AnimatedContainer( + duration: const Duration(microseconds: 300), + height: 250, + width: 250, + // decoration: AppStyle.boxDecoration, + // gradient: const LinearGradient( + // colors: [AppColor.greenColor, AppColor.secondaryColor], + // begin: Alignment.topLeft, + // end: Alignment.bottomCenter, + // ), + // border: Border.all(), + // color: AppColor.secondaryColor, + // borderRadius: BorderRadius.circular(15)), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text( + 'Waiting for Driver ...'.tr, + style: AppStyle.title, + ), + // IconButton( + // onPressed: () { + // }, + // icon: const Icon(Icons.add), + // ), + // Text( + // controller.dataCarsLocationByPassenger['message'] + // [controller.carsOrder]['phone'] + // .toString(), + // style: AppStyle.title, + // ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Text( + '${controller.dataCarsLocationByPassenger['message'][controller.carsOrder]['first_name']} ${controller.dataCarsLocationByPassenger['message'][controller.carsOrder]['last_name']}', + style: AppStyle.title, + ), + Text( + 'Age is '.tr + + controller + .dataCarsLocationByPassenger['message'] + [controller.carsOrder]['age'] + .toString(), + style: AppStyle.title, + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Text( + controller.dataCarsLocationByPassenger['message'] + [controller.carsOrder]['make'] + .toString(), + style: AppStyle.title, + ), + Text( + controller.dataCarsLocationByPassenger['message'] + [controller.carsOrder]['model'] + .toString(), + style: AppStyle.title, + ), + ], + ), + Text( + 'Rating is '.tr + + controller.dataCarsLocationByPassenger['message'] + [controller.carsOrder]['ratingDriver'] + .toString(), + style: AppStyle.title, + ), + Container( + decoration: BoxDecoration(border: Border.all(width: 2)), + child: Text( + controller.dataCarsLocationByPassenger['message'] + [controller.carsOrder]['car_plate'] + .toString(), + style: AppStyle.title, + ), + ), + ], + ), + ), + ), + ) + : const SizedBox())); +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/timer_for_cancell_trip_from_passenger.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../../constant/style.dart'; +import '../../../controller/home/map_passenger_controller.dart'; + +GetBuilder timerForCancelTripFromPassenger() { + return GetBuilder( + builder: (controller) { + final isNearEnd = + controller.remainingTime <= 5; // Define a threshold for "near end" + + return controller.remainingTime > 0 && controller.remainingTime != 25 + ? Positioned( + bottom: 5, + left: 10, + right: 10, + child: Container( + height: 180, + decoration: AppStyle.boxDecoration, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Stack( + alignment: Alignment.center, + children: [ + CircularProgressIndicator( + value: controller.progress, + // Set the color based on the "isNearEnd" condition + color: isNearEnd ? Colors.red : Colors.blue, + ), + Text( + '${controller.remainingTime}', + style: AppStyle.number, + ), + ], + ), + const SizedBox( + width: 30, + ), + Text( + 'You can cancel Ride now'.tr, + style: AppStyle.title, + ) + ], + ), + Text( + 'After this period\nYou can\'t cancel!'.tr, + style: AppStyle.title, + ) + ], + ), + ), + ), + ) + : const SizedBox(); + }, + ); +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/google_map_passenger_widget.dart +================================================== + +import 'dart:io'; + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:Intaleq/controller/home/points_for_rider_controller.dart'; + +import '../../../constant/colors.dart'; +import '../../../constant/style.dart'; +// import '../../../controller/functions/location_controller.dart'; // Un-comment if needed +// import '../../../controller/home/device_tier.dart'; // Removed to rely on Controller logic +import '../../../controller/home/map_passenger_controller.dart'; +import '../../widgets/mycircular.dart'; +import '../../widgets/mydialoug.dart'; + +class GoogleMapPassengerWidget extends StatelessWidget { + GoogleMapPassengerWidget({super.key}); + + final WayPointController wayPointController = Get.put(WayPointController()); + + @override + Widget build(BuildContext context) { + return GetBuilder( + builder: (controller) => controller.isLoading + ? const MyCircularProgressIndicator() + : Positioned( + bottom: Get.height * .2, + top: 0, + left: 0, + right: 0, + child: GoogleMap( + onMapCreated: controller.onMapCreated, + + // ✅ Camera Bounds + cameraTargetBounds: CameraTargetBounds(controller.boundsdata), + + // ✅ Performance: Smoother zoom limits for low-end devices + minMaxZoomPreference: controller.lowPerf + ? const MinMaxZoomPreference(6, 17) + : const MinMaxZoomPreference(6, 18), + + // ✅ Destination Selection on Long Press + onLongPress: (LatLng argument) { + MyDialog().getDialog('Are you want to go to this site'.tr, '', + () async { + controller.clearPolyline(); + // Ensure we have car data available before routing + if (controller.dataCarsLocationByPassenger != null) { + await controller.getDirectionMap( + '${controller.passengerLocation.latitude},${controller.passengerLocation.longitude}', + '${argument.latitude},${argument.longitude}', + ); + Get.back(); // Close Dialog + await controller.bottomSheet(); + controller.showBottomSheet1(); + } else { + Get.back(); + Get.snackbar( + 'We Are Sorry That we dont have cars in your Location!' + .tr, + '', + colorText: AppColor.redColor, + duration: const Duration(seconds: 5), + backgroundColor: AppColor.secondaryColor, + icon: const Icon(Icons.error, color: AppColor.redColor), + titleText: Text('Error'.tr, + style: const TextStyle(color: AppColor.redColor)), + messageText: Text( + 'We Are Sorry That we dont have cars in your Location!' + .tr, + style: AppStyle.title), + ); + } + }); + }, + + // ✅ Hide UI elements on tap + onTap: (argument) { + controller.hidePlaces(); + }, + + initialCameraPosition: CameraPosition( + target: controller.passengerLocation, + zoom: controller.lowPerf ? 14.5 : 15, + ), + + // ✅ Markers + markers: controller.markers.toSet(), + + // ✅ Polygons (e.g., University/Country borders) + polygons: controller.polygons, + + // ✅ Polylines: Switch to lighter version if lowPerf is detected + polylines: controller.lowPerf + ? controller.polyLinesLight.toSet() + : controller.polyLines.toSet(), + + // ✅ Map Type: Switch to Normal map on low-end devices to save RAM + mapType: controller.lowPerf + ? MapType.normal + : (controller.mapType + ? MapType.satellite + : MapType + .normal), // Changed terrain default to normal for better performance + + // ✅ UI Settings for Performance + myLocationButtonEnabled: false, + mapToolbarEnabled: false, + tiltGesturesEnabled: + false, // Disable tilt to save GPU resources + + // Lite Mode (Static image) only on very low-end Androids if needed, + // but usually handled by lowPerf logic in mapType/Traffic + liteModeEnabled: Platform.isAndroid && controller.lowPerf, + + trafficEnabled: controller.mapTrafficON && !controller.lowPerf, + buildingsEnabled: !controller.lowPerf, + rotateGesturesEnabled: + !controller.lowPerf, // Disable rotation on low-end + + // ✅ Camera Movement Logic + onCameraMove: (CameraPosition position) { + // 1. Always update current view target (for pickers) + controller.newMyLocation = position.target; + + // 2. Handle Drag-to-Select for specific states + if (controller.startLocationFromMap == true) { + controller.newStartPointLocation = position.target; + } else if (controller.passengerStartLocationFromMap == true) { + controller.newStartPointLocation = position.target; + } + + // 3. Handle Waypoints Dragging + int waypointsLength = + Get.find().wayPoints.length; + if (waypointsLength > 0 && + controller.wayPointIndex >= 0 && + controller.wayPointIndex < + controller.placesCoordinate.length) { + controller.placesCoordinate[controller.wayPointIndex] = + '${position.target.latitude},${position.target.longitude}'; + } + + // 4. Throttle heavy calculations (Reverse Geocoding / API calls) + if (controller.lowPerf) { + controller.onCameraMoveThrottled(position); + } + }, + + myLocationEnabled: false, + ), + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/picker_animation_container.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/table_names.dart'; + +import '../../../constant/colors.dart'; +import '../../../constant/style.dart'; +import '../../../controller/home/map_passenger_controller.dart'; +import '../../../main.dart'; +import '../../widgets/elevated_btn.dart'; +import 'form_search_places_destenation.dart'; + +class PickerAnimtionContainerFormPlaces extends StatelessWidget { + PickerAnimtionContainerFormPlaces({ + super.key, + }); + final controller = MapPassengerController(); + @override + Widget build(BuildContext context) { + // DbSql sql = DbSql.instance; + return GetBuilder( + builder: (controller) => Positioned( + bottom: 0, + left: 0, + right: 5, + child: AnimatedContainer( + duration: const Duration(milliseconds: 300), + height: controller.heightPickerContainer, + decoration: const BoxDecoration( + boxShadow: [ + BoxShadow( + color: AppColor.accentColor, offset: Offset(2, 2)), + BoxShadow( + color: AppColor.accentColor, offset: Offset(-2, -2)) + ], + color: AppColor.secondaryColor, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(15), + topRight: Radius.circular(15), + )), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + controller.isPickerShown + ? const SizedBox() + : Text( + 'Hi, Where to '.tr, + style: AppStyle.title, + ), + Column( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + const SizedBox( + height: 5, + ), + controller.isPickerShown + ? InkWell( + onTapDown: (details) { + controller.changePickerShown(); + controller.changeHeightPlaces(); + }, + child: Container( + height: 7, + width: Get.width * .3, + decoration: BoxDecoration( + color: AppColor.accentColor, + borderRadius: BorderRadius.circular(10), + border: Border.all( + color: AppColor.accentColor, + )), + ), + ) + : const SizedBox(), + controller.isPickerShown + ? InkWell( + onTap: () {}, + child: formSearchPlacesDestenation(), + ) + : Row( + mainAxisAlignment: + MainAxisAlignment.spaceEvenly, + children: [ + TextButton( + onPressed: () { + controller.changePickerShown(); + }, + child: Text( + "Pick your destination from Map".tr, + style: AppStyle.subtitle, + ), + ), + TextButton( + onPressed: () async { + List favoritePlaces = await sql + .getAllData(TableName.placesFavorite); + Get.defaultDialog( + title: 'Favorite Places'.tr, + content: SizedBox( + width: Get.width * .8, + height: 300, + child: favoritePlaces.isEmpty + ? Center( + child: Column( + mainAxisAlignment: + MainAxisAlignment + .center, + children: [ + const Icon( + Icons + .hourglass_empty_rounded, + size: 99, + color: AppColor + .primaryColor, + ), + Text( + 'You Dont Have Any places yet !' + .tr, + style: AppStyle.title, + ), + ], + ), + ) + : ListView.builder( + itemCount: + favoritePlaces.length, + itemBuilder: + (BuildContext context, + int index) { + return Row( + mainAxisAlignment: + MainAxisAlignment + .spaceBetween, + children: [ + TextButton( + onPressed: () async { + await controller + .getDirectionMap( + '${controller.passengerLocation.latitude},${controller.passengerLocation.longitude}', + '${favoritePlaces[index]['latitude']},${favoritePlaces[index]['longitude']}', + ); + controller + .changePickerShown(); + controller + .changeBottomSheetShown(); + controller + .bottomSheet(); + Get.back(); + }, + child: Text( + favoritePlaces[ + index]['name'], + style: + AppStyle.title, + ), + ), + IconButton( + onPressed: () async { + await sql.deleteData( + TableName + .placesFavorite, + favoritePlaces[ + index] + ['id']); + Get.back(); + Get.snackbar( + 'Deleted ', + '${'You are Delete'.tr} ${favoritePlaces[index]['name']} from your list', + backgroundColor: + AppColor + .accentColor); + }, + icon: const Icon(Icons + .favorite_outlined), + ), + ], + ); + }, + ), + ), + onCancel: () {}, + ); + }, + child: Text( + "Go To Favorite Places".tr, + style: AppStyle.subtitle, + ), + ), + ], + ), + if (controller.isPickerShown && + controller.placesDestination.isEmpty) + MyElevatedButton( + title: 'Go to this Target'.tr, + onPressed: () async { + await controller.getDirectionMap( + '${controller.passengerLocation.latitude},${controller.passengerLocation.longitude}', + '${controller.newMyLocation.latitude},${controller.newMyLocation.longitude}', + ); + controller.changePickerShown(); + controller.changeBottomSheetShown(); + controller.bottomSheet(); + // await sql + // .getAllData(TableName.placesFavorite) + }, + ), + if (controller.isPickerShown && + controller.placesDestination.isEmpty) + const SizedBox(), + ], + ), + ], + ), + ), + )); + } +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/driver_time_arrive_passenger.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:intl/intl.dart'; +// import 'package:intl/intl.dart'; + +import '../../../constant/style.dart'; +import '../../../controller/home/map_passenger_controller.dart'; + +class DriverTimeArrivePassengerPage extends StatelessWidget { + const DriverTimeArrivePassengerPage({super.key}); + + @override + Widget build(BuildContext context) { + return GetBuilder( + builder: (controller) { + return controller.remainingTime == 0 + ? Positioned( + bottom: Get.height * .35, + right: Get.width * .05, + child: Stack( + alignment: Alignment.center, + children: [ + Container( + decoration: AppStyle.boxDecoration, + // width: 50, + // height: 50, + child: Padding( + padding: const EdgeInsetsDirectional.only( + start: 5, end: 5), + child: Column( + children: [ + Text( + controller.durationByPassenger.toString() + + ' to arrive you.'.tr, + style: AppStyle.title, + ), + Text( + " ${DateFormat('h:mm a').format(controller.newTime)}", + style: AppStyle.title, + ), + ], + ), + )) + ], + ), + ) + : const SizedBox(); + }, + ); + } +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/ride_from_start_app.dart +================================================== + +import 'package:Intaleq/controller/functions/launch.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_font_icons/flutter_font_icons.dart'; +import 'package:get/get.dart'; + +// ... استيراد ملفاتك الأخرى ... +import '../../../constant/box_name.dart'; +import '../../../constant/colors.dart'; +import '../../../constant/links.dart'; +import '../../../constant/style.dart'; +import '../../../controller/home/map_passenger_controller.dart'; +import '../../../controller/profile/profile_controller.dart'; +import '../../../main.dart'; + +class RideFromStartApp extends StatelessWidget { + const RideFromStartApp({super.key}); + + @override + Widget build(BuildContext context) { + final profileController = Get.put(ProfileController()); + final MapPassengerController controller = + Get.find(); + + return Obx(() { + final bool isRideActive = + controller.currentRideState.value == RideState.inProgress && + controller.isStartAppHasRide == true; + + if (!isRideActive) return const SizedBox(); + + // قراءة البيانات + final rideData = controller.rideStatusFromStartApp['data'] ?? {}; + final driverId = rideData['driver_id']; + final driverName = rideData['driverName'] ?? 'Captain'.tr; + final driverRate = controller.driverRate; + final carType = rideData['carType'] ?? 'Car'.tr; + final carModel = controller.model ?? ''; + final arrivalTime = box.read(BoxName.arrivalTime) ?? '--:--'; + + // تحديد البيانات للعرض + final displayTime = controller.stringRemainingTimeRideBegin.isNotEmpty + ? controller.stringRemainingTimeRideBegin + : arrivalTime; + final displayDistance = rideData['distance']?.toStringAsFixed(1) ?? 'N/A'; + final displayPrice = rideData['price']?.toString() ?? 'N/A'; + + return Positioned( + left: 0, + right: 0, + bottom: 0, // ملتصق بالأسفل تماماً + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 15), + decoration: const BoxDecoration( + color: Colors.white, // خلفية بيضاء نظيفة + borderRadius: BorderRadius.only( + topLeft: Radius.circular(25), + topRight: Radius.circular(25), + ), + boxShadow: [ + BoxShadow( + color: Colors.black12, + blurRadius: 15.0, + spreadRadius: 5.0, + offset: Offset(0, -5), + ), + ], + ), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // 1. مقبض صغير للدلالة على السحب (تصميم جمالي) + Center( + child: Container( + width: 40, + height: 4, + margin: const EdgeInsets.only(bottom: 15), + decoration: BoxDecoration( + color: Colors.grey[300], + borderRadius: BorderRadius.circular(10), + ), + ), + ), + + // 2. حالة الرحلة + معلومات السائق + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // صورة السائق + Container( + padding: const EdgeInsets.all(2), + decoration: BoxDecoration( + shape: BoxShape.circle, + border: + Border.all(color: AppColor.primaryColor, width: 2), + ), + child: CircleAvatar( + radius: 28, + backgroundImage: NetworkImage( + '${AppLink.server}/portrate_captain_image/$driverId.jpg'), + ), + ), + const SizedBox(width: 12), + + // الاسم والسيارة + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + driverName, + style: AppStyle.title.copyWith( + fontSize: 16, + fontWeight: FontWeight.bold, + color: Colors.black87, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + const SizedBox(height: 4), + Row( + children: [ + Icon(Icons.star, + color: AppColor.yellowColor, size: 16), + const SizedBox(width: 4), + Text( + driverRate, + style: AppStyle.title.copyWith( + fontSize: 13, fontWeight: FontWeight.bold), + ), + const SizedBox(width: 8), + Container(width: 1, height: 12, color: Colors.grey), + const SizedBox(width: 8), + Text( + "$carType - $carModel", + style: AppStyle.title.copyWith( + fontSize: 13, color: Colors.grey[600]), + ), + ], + ), + ], + ), + ), + + // حالة الرحلة (نص ملون) + _buildStatusBadge(controller.currentRideState.value), + ], + ), + + const SizedBox(height: 20), + + // 3. شريط المعلومات (وقت، مسافة، سعر) + Container( + padding: + const EdgeInsets.symmetric(vertical: 12, horizontal: 10), + decoration: BoxDecoration( + color: AppColor.grayColor + .withOpacity(0.1), // خلفية رمادية خفيفة جداً + borderRadius: BorderRadius.circular(15), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + _buildInfoColumn( + Icons.access_time_filled, displayTime, "Time".tr), + _buildVerticalDivider(), + _buildInfoColumn(Icons.location_on, "$displayDistance KM", + "Distance".tr), + _buildVerticalDivider(), + _buildInfoColumn( + Icons.attach_money, "$displayPrice SYP", "Price".tr), + ], + ), + ), + + const SizedBox(height: 20), + + // 4. أزرار التحكم (SOS & Share) + Row( + children: [ + // زر المشاركة (يأخذ مساحة أكبر) + Expanded( + flex: 2, + child: ElevatedButton.icon( + onPressed: () => _checkAndCall( + controller.sendWhatsapp, profileController), + icon: + const Icon(FontAwesome.whatsapp, color: Colors.white), + label: Text("Share Trip".tr, + style: const TextStyle(color: Colors.white)), + style: ElevatedButton.styleFrom( + backgroundColor: AppColor.greenColor, + padding: const EdgeInsets.symmetric(vertical: 12), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + elevation: 0, + ), + ), + ), + const SizedBox(width: 10), + // زر الاستغاثة SOS + Expanded( + flex: 1, + child: ElevatedButton.icon( + onPressed: () => + makePhoneCall(box.read(BoxName.sosPhonePassenger)), + icon: const Icon(Icons.sos, color: Colors.white), + label: Text("SOS".tr, + style: const TextStyle(color: Colors.white)), + style: ElevatedButton.styleFrom( + backgroundColor: AppColor.redColor, + padding: const EdgeInsets.symmetric(vertical: 12), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + elevation: 0, + ), + ), + ), + ], + ), + ], + ), + ), + ); + }); + } + + // ------------------------- Widgets Helper Methods ------------------------- + + Widget _buildStatusBadge(RideState status) { + String text; + Color color; + + if (status == RideState.inProgress) { + text = 'On Trip'.tr; + color = AppColor.primaryColor; + } else if (status == RideState.driverArrived) { + text = 'Arrived'.tr; + color = AppColor.greenColor; + } else { + text = 'Coming'.tr; + color = AppColor.yellowColor; + } + + return Container( + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 5), + decoration: BoxDecoration( + color: color.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + border: Border.all(color: color.withOpacity(0.5)), + ), + child: Text( + text, + style: TextStyle( + color: color, + fontWeight: FontWeight.bold, + fontSize: 12, + ), + ), + ); + } + + Widget _buildInfoColumn(IconData icon, String value, String label) { + return Column( + children: [ + Icon(icon, + color: AppColor.secondaryColor, + size: 22), // افترضت أن السكندري لون داكن، أو استخدم Primary + const SizedBox(height: 4), + Text( + value, + style: const TextStyle( + fontWeight: FontWeight.w800, + fontSize: 15, + color: Colors.black87, + ), + ), + Text( + label, + style: TextStyle( + fontSize: 11, + color: Colors.grey[600], + ), + ), + ], + ); + } + + Widget _buildVerticalDivider() { + return Container( + height: 30, + width: 1, + color: Colors.grey[300], + ); + } + + // دالة المساعدة للمنطق (بقيت كما هي ولكن تم تمرير البروفايل كونترولر) + Future _checkAndCall( + Function(String) action, ProfileController profileController) async { + String? sosPhone = box.read(BoxName.sosPhonePassenger); + if (sosPhone == null || sosPhone == 'sos') { + await profileController.updatField('sosPhone', TextInputType.phone); + sosPhone = profileController.prfoileData['sosPhone']; + } + + if (sosPhone != null && sosPhone != 'sos') { + action(sosPhone); + } else { + Get.snackbar('Warning'.tr, 'Please set a valid SOS phone number.'.tr, + backgroundColor: AppColor.redColor, colorText: Colors.white); + } + } +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/form_search_places_destenation.dart +================================================== + +import 'dart:async'; + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/table_names.dart'; +import 'package:Intaleq/views/widgets/elevated_btn.dart'; + +import '../../../constant/colors.dart'; +import '../../../constant/style.dart'; +import '../../../controller/functions/toast.dart'; +import '../../../controller/home/map_passenger_controller.dart'; +import '../../../main.dart'; + +// --------------------------------------------------- +// -- Widget for Destination Point Search (Optimized) -- +// --------------------------------------------------- + +/// A more optimized and cleaner implementation of the destination search form. +/// +/// Improvements: +/// 1. **Widget Refactoring**: The UI is broken down into smaller, focused widgets +/// (_SearchField, _QuickActions, _SearchResults) to prevent unnecessary rebuilds. +/// 2. **State Management Scoping**: `GetBuilder` is used only on widgets that +/// actually need to update, not the entire form. +/// 3. **Reduced Build Logic**: Logic like reading from `box` is done once. +/// 4. **Readability**: Code is cleaner and easier to follow. +GetBuilder formSearchPlacesDestenation() { + // --- [تحسين] قراءة القيم مرة واحدة في بداية البناء --- + // Store box values in local variables to avoid repeated calls inside the build method. + final String addWorkValue = + box.read(BoxName.addWork)?.toString() ?? 'addWork'; + final String addHomeValue = + box.read(BoxName.addHome)?.toString() ?? 'addHome'; + + // --- [ملاحظة] تأكد من أن القيم الأولية موجودة --- + // This initialization can be moved to your app's startup logic or a splash screen controller. + if (addWorkValue.isEmpty || addHomeValue.isEmpty) { + box.write(BoxName.addWork, 'addWork'); + box.write(BoxName.addHome, 'addHome'); + } + + return GetBuilder( + id: 'destination_form', // Use an ID to allow targeted updates + builder: (controller) { + return Column( + children: [ + // --- Widget for the search text field --- + _SearchField(controller: controller), + + // --- Widget for "Add Work" and "Add Home" buttons --- + _QuickActions( + controller: controller, + addWorkValue: addWorkValue, + addHomeValue: addHomeValue, + ), + + // --- Widget for displaying search results, wrapped in its own GetBuilder --- + _SearchResults(), + ], + ); + }, + ); +} + +// --------------------------------------------------- +// -- Private Helper Widgets for Cleaner Code -- +// --------------------------------------------------- + +/// A dedicated widget for the search input field. +class _SearchField extends StatefulWidget { + final MapPassengerController controller; + + const _SearchField({required this.controller}); + + @override + State<_SearchField> createState() => _SearchFieldState(); +} + +class _SearchFieldState extends State<_SearchField> { + Timer? _debounce; + + // --- [إصلاح] Listener لتحديث الواجهة عند تغيير النص لإظهار/إخفاء زر المسح --- + void _onTextChanged() { + if (mounted) { + setState(() {}); + } + } + + @override + void initState() { + super.initState(); + // Add listener to update the suffix icon when text changes + widget.controller.placeDestinationController.addListener(_onTextChanged); + } + + // --- [تحسين] إضافة Debouncer لتأخير البحث أثناء الكتابة --- + void _onSearchChanged(String query) { + if (_debounce?.isActive ?? false) _debounce!.cancel(); + _debounce = Timer(const Duration(milliseconds: 500), () { + if (query.length > 2) { + widget.controller.getPlaces(); + widget.controller.changeHeightPlaces(); + } else if (query.isEmpty) { + widget.controller.clearPlacesDestination(); + widget.controller.changeHeightPlaces(); + } + }); + } + + @override + void dispose() { + _debounce?.cancel(); + // Remove the listener to prevent memory leaks + widget.controller.placeDestinationController.removeListener(_onTextChanged); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0), + child: Row( + children: [ + Expanded( + child: TextFormField( + controller: widget.controller.placeDestinationController, + onChanged: _onSearchChanged, + decoration: InputDecoration( + hintText: widget.controller.hintTextDestinationPoint, + hintStyle: AppStyle.subtitle.copyWith(color: Colors.grey[600]), + prefixIcon: + const Icon(Icons.search, color: AppColor.primaryColor), + // --- [إصلاح] تم استبدال Obx بشرط بسيط لأن `setState` يعيد بناء الواجهة الآن --- + suffixIcon: widget + .controller.placeDestinationController.text.isNotEmpty + ? IconButton( + icon: Icon(Icons.clear, color: Colors.grey[400]), + onPressed: () { + widget.controller.placeDestinationController.clear(); + // The listener will automatically handle the UI update + // And _onSearchChanged will handle clearing the results + }, + ) + : null, // Use null instead of SizedBox for better practice + contentPadding: const EdgeInsets.symmetric( + horizontal: 16.0, vertical: 10.0), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(8.0), + borderSide: BorderSide.none, + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(8.0), + borderSide: BorderSide(color: AppColor.primaryColor), + ), + filled: true, + fillColor: Colors.grey[50], + ), + ), + ), + const SizedBox(width: 8.0), + IconButton( + onPressed: () { + widget.controller.changeMainBottomMenuMap(); + widget.controller.changePickerShown(); + }, + icon: Icon(Icons.location_on_outlined, + color: AppColor.accentColor, size: 30), + tooltip: widget.controller.isAnotherOreder + ? 'Pick destination on map'.tr + : 'Pick on map'.tr, + ), + ], + ), + ); + } +} + +/// A dedicated widget for the quick action buttons (Work/Home). +class _QuickActions extends StatelessWidget { + final MapPassengerController controller; + final String addWorkValue; + final String addHomeValue; + + const _QuickActions({ + required this.controller, + required this.addWorkValue, + required this.addHomeValue, + }); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + _buildQuickActionButton( + icon: Icons.work_outline, + text: addWorkValue == 'addWork' ? 'Add Work'.tr : 'To Work'.tr, + onTap: () { + if (addWorkValue == 'addWork') { + controller.workLocationFromMap = true; + controller.changeMainBottomMenuMap(); + controller.changePickerShown(); + } else { + _handleQuickAction(controller, BoxName.addWork, 'To Work'); + } + }, + onLongPress: () => _showChangeLocationDialog(controller, 'Work'), + ), + _buildQuickActionButton( + icon: Icons.home_outlined, + text: addHomeValue == 'addHome' ? 'Add Home'.tr : 'To Home'.tr, + onTap: () { + if (addHomeValue == 'addHome') { + controller.homeLocationFromMap = true; + controller.changeMainBottomMenuMap(); + controller.changePickerShown(); + } else { + _handleQuickAction(controller, BoxName.addHome, 'To Home'); + } + }, + onLongPress: () => _showChangeLocationDialog(controller, 'Home'), + ), + ], + ), + ); + } +} + +/// A dedicated widget for the search results list. +/// It uses its own `GetBuilder` to only rebuild when the list of places changes. +class _SearchResults extends StatelessWidget { + @override + Widget build(BuildContext context) { + return GetBuilder( + id: 'places_list', // Use a specific ID for targeted updates + builder: (controller) { + return AnimatedContainer( + duration: const Duration(milliseconds: 200), + height: controller.placesDestination.isNotEmpty ? 300 : 0, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(8.0), + ), + margin: const EdgeInsets.symmetric(horizontal: 16.0), + child: ListView.separated( + shrinkWrap: true, + physics: const ClampingScrollPhysics(), + itemCount: controller.placesDestination.length, + separatorBuilder: (context, index) => + const Divider(height: 1, color: Colors.grey), + itemBuilder: (BuildContext context, int index) { + final res = controller.placesDestination[index]; + final title = res['name_ar'] ?? res['name'] ?? 'Unknown Place'; + final address = res['address'] ?? 'Details not available'; + final latitude = res['latitude']; + final longitude = res['longitude']; + + return ListTile( + leading: const Icon(Icons.place, size: 30, color: Colors.grey), + title: Text( + title, + style: + AppStyle.subtitle.copyWith(fontWeight: FontWeight.w500), + ), + subtitle: Text( + address, + style: TextStyle(color: Colors.grey[600], fontSize: 12), + ), + trailing: IconButton( + icon: const Icon(Icons.favorite_border, color: Colors.grey), + onPressed: () => _handleAddToFavorites( + context, latitude, longitude, title), + ), + onTap: () => _handlePlaceSelection( + controller, latitude, longitude, title, index), + ); + }, + ), + ); + }, + ); + } + + // --- [تحسين] استخراج المنطق المعقد إلى دوال مساعدة --- + Future _handleAddToFavorites(BuildContext context, dynamic latitude, + dynamic longitude, String title) async { + if (latitude != null && longitude != null) { + await sql.insertMapLocation({ + 'latitude': latitude, + 'longitude': longitude, + 'name': title, + 'rate': 'N/A', + }, TableName.placesFavorite); + + Toast.show( + context, + '$title ${'Saved Successfully'.tr}', + AppColor.primaryColor, + ); + } else { + Toast.show( + context, + 'Invalid location data', + AppColor.redColor, + ); + } + } + + Future _handlePlaceSelection(MapPassengerController controller, + dynamic latitude, dynamic longitude, String title, int index) async { + if (latitude == null || longitude == null) { + Toast.show(Get.context!, 'Invalid location data', AppColor.redColor); + return; + } + + // Save to recent locations + await sql.insertMapLocation({ + 'latitude': latitude, + 'longitude': longitude, + 'name': title, + 'rate': 'N/A', + 'createdAt': DateTime.now().toIso8601String(), + }, TableName.recentLocations); + + final destLatLng = LatLng( + double.parse(latitude.toString()), double.parse(longitude.toString())); + + if (controller.isAnotherOreder) { + // **Another Order Flow** + await _handleAnotherOrderSelection(controller, destLatLng); + } else { + // **Regular Order Flow** + _handleRegularOrderSelection(controller, destLatLng, index); + } + } + + Future _handleAnotherOrderSelection( + MapPassengerController controller, LatLng destination) async { + controller.myDestination = destination; + controller.clearPlacesDestination(); // Helper method in controller + + await controller.getDirectionMap( + '${controller.passengerLocation.latitude},${controller.passengerLocation.longitude}', + '${controller.myDestination.latitude},${controller.myDestination.longitude}'); + + controller.isPickerShown = false; + controller.passengerStartLocationFromMap = false; + controller.changeMainBottomMenuMap(); + controller.showBottomSheet1(); + } + + void _handleRegularOrderSelection( + MapPassengerController controller, LatLng destination, int index) { + controller.passengerLocation = controller.newMyLocation; + controller.myDestination = destination; + controller.convertHintTextDestinationNewPlaces(index); + + controller.clearPlacesDestination(); // Helper method in controller + + controller.changeMainBottomMenuMap(); + controller.passengerStartLocationFromMap = true; + controller.isPickerShown = true; + } +} + +// --------------------------------------------------- +// -- Helper Functions (kept from original code) -- +// --------------------------------------------------- + +Widget _buildQuickActionButton({ + required IconData icon, + required String text, + VoidCallback? onTap, + VoidCallback? onLongPress, +}) { + return InkWell( + onTap: onTap, + onLongPress: onLongPress, + child: Container( + padding: const EdgeInsets.all(8.0), + decoration: BoxDecoration( + color: AppColor.blueColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(8.0), + border: Border.all(color: AppColor.blueColor.withOpacity(0.3)), + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(icon, color: AppColor.blueColor), + const SizedBox(height: 4.0), + Text( + text, + textAlign: TextAlign.center, + style: AppStyle.title.copyWith( + color: AppColor.blueColor, fontWeight: FontWeight.w500), + ), + ], + ), + ), + ); +} + +void _showChangeLocationDialog( + MapPassengerController controller, String locationType) { + Get.defaultDialog( + title: 'Change $locationType location?'.tr, + middleText: '', + confirm: MyElevatedButton( + title: 'Yes'.tr, + onPressed: () { + Get.back(); + if (locationType == 'Work') { + controller.workLocationFromMap = true; + } else { + controller.homeLocationFromMap = true; + } + controller.changeMainBottomMenuMap(); + controller.changePickerShown(); + }, + ), + ); +} + +void _handleQuickAction( + MapPassengerController controller, String boxName, String hintText) async { + // --- [تحسين] قراءة وتحويل الإحداثيات بأمان أكبر --- + try { + final locationString = box.read(boxName).toString(); + final parts = locationString.split(','); + final latLng = LatLng( + double.parse(parts[0]), + double.parse(parts[1]), + ); + + controller.hintTextDestinationPoint = hintText; + controller.changeMainBottomMenuMap(); + + await controller.getDirectionMap( + '${controller.passengerLocation.latitude},${controller.passengerLocation.longitude}', + '${latLng.latitude},${latLng.longitude}', + ); + + controller.currentLocationToFormPlaces = false; + controller.clearPlacesDestination(); // Helper method in controller + controller.passengerStartLocationFromMap = false; + controller.isPickerShown = false; + controller.showBottomSheet1(); + } catch (e) { + // Handle error if parsing fails + print("Error handling quick action: $e"); + Toast.show(Get.context!, "Failed to get location".tr, AppColor.redColor); + } +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/points_page_for_rider.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/style.dart'; + +import '../../../constant/colors.dart'; +import '../../../controller/home/map_passenger_controller.dart'; +import '../../../controller/home/points_for_rider_controller.dart'; + +class PointsPageForRider extends StatelessWidget { + PointsPageForRider({ + super.key, + }); + MapPassengerController mapPassengerController = + Get.put(MapPassengerController()); + + @override + Widget build(BuildContext context) { + Get.put(WayPointController()); + + return GetBuilder(builder: (controller) { + return Positioned( + bottom: 2, + left: 2, + right: 2, + child: AnimatedContainer( + duration: const Duration(milliseconds: 300), + height: controller.wayPointSheetHeight, + decoration: AppStyle.boxDecoration, + child: ListView( + children: [ + // const AppBarPointsPageForRider(), + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + IconButton( + onPressed: () { + mapPassengerController.downPoints(); + }, + icon: const Icon(Icons.arrow_drop_down_circle_outlined), + ), + GetBuilder(builder: (wayPointController) { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + ElevatedButton( + onPressed: () { + wayPointController.addWayPoints(); + controller.isWayPointStopsSheetUtilGetMap = true; + }, + child: const Text('Add Stops'), + ), + wayPointController.wayPoints.length > 1 + ? ElevatedButton( + onPressed: () async { + mapPassengerController + .getMapPointsForAllMethods(); + }, + child: const Text('Get Direction'), + ) + : const SizedBox() + ], + ); + }), + ], + ), + SizedBox( + height: Get.height * .36, + child: GetBuilder( + builder: (wayPointController) { + return ReorderableListView( + // The children of the list are the text fields + children: wayPointController.wayPoints + .asMap() + .entries + .map((entry) { + final index = entry.key; + final wayPoint = entry.value; + return Padding( + key: ValueKey(index), + padding: const EdgeInsets.all(1), + child: ListTile( + leading: Container( + decoration: BoxDecoration( + color: AppColor.deepPurpleAccent, + border: Border.all(), + shape: BoxShape.rectangle), + child: Padding( + padding: const EdgeInsets.all(2), + child: Text( + index.toString(), + style: AppStyle.title, + ), + )), + title: InkWell( + onTap: () { + // showAddLocationDialog(context); + Get.defaultDialog( + content: SizedBox( + width: Get.width, + height: 400, + child: mapPassengerController + .placeListResponse[index]), + ); + }, + child: Container( + decoration: BoxDecoration( + border: Border.all(), + color: + AppColor.accentColor.withOpacity(.5)), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text(index > 0 + ? mapPassengerController + .currentLocationStringAll[index] + .toString() + : ''), + const Icon( + Icons.reorder, + size: 20, + ), + ], + ), + ), + ), + trailing: index > 0 + ? IconButton( + icon: const Icon(Icons.close), + onPressed: () { + wayPointController.removeTextField(index); + }, + ) + : IconButton( + icon: const Icon( + Icons.close, + color: AppColor.secondaryColor, + ), + onPressed: () {}, + )), + ); + }).toList(), + + // The callback when the user reorders the text fields + onReorder: (int oldIndex, int newIndex) { + wayPointController.reorderTextFields(oldIndex, newIndex); + }, + ); + }), + ), + ], + ), + ), + ); + }); + } + + // GetBuilder( + // builder: (controller) => Container( + // decoration: AppStyle.boxDecoration, + // height: Get.height * + // .5, // height: controller.heightPointsPageForRider, + // width: Get.width, + // child: Column( + // children: [ + // SizedBox( + // height: 300, + // child: ReorderableListView( + // onReorder: (oldIndex, newIndex) { + // if (oldIndex < newIndex) { + // newIndex -= 1; + // } + // pointsForRiderController.locations.insert( + // newIndex, + // pointsForRiderController.locations + // .removeAt(oldIndex)); + // }, + // children: [ + // for (int i = 0; + // i < pointsForRiderController.locations.length; + // i++) + // ListTile( + // key: Key('$i'), + // title: DragTarget( + // onAccept: (int data) { + // pointsForRiderController.locations + // .insert(i, 'New Text Field'); + // }, + // builder: (context, candidateData, rejectedData) { + // return Row( + // children: [ + // SizedBox( + // width: 300, + // child: TextField( + // controller: TextEditingController( + // text: pointsForRiderController + // .locations[i]), + // onChanged: (value) { + // pointsForRiderController + // .locations[i] = value; + // }, + // decoration: InputDecoration( + // prefixIcon: IconButton( + // onPressed: () { + // pointsForRiderController + // .removeLocation(i); + // }, + // icon: const Icon(Icons.delete), + // ), + // labelText: 'Text Field ${i + 1}', + // border: const OutlineInputBorder(), + // ), + // ), + // ), + // IconButton( + // onPressed: () { + // // pointsForRiderController.onReorder( + // // index, newIndex); + // }, + // icon: const Icon(Icons.reorder), + // ), + // ], + // ); + // }, + // ), + // ), + // ], + // ), + // ), + // ElevatedButton( + // onPressed: () { + // pointsForRiderController.addLocation('location'); + // }, + // child: const Text('Add Text Field'), + // ), + // ], + // ), + // )); +} + +void showAddLocationDialog(BuildContext context, int index) { + final TextEditingController locationController = TextEditingController(); + // Get.put(WayPointController()); + showDialog( + context: context, + builder: (context) { + return Dialog.fullscreen( + // title: const Text('Add Location'), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + IconButton( + onPressed: () { + Get.back(); + }, + icon: const Icon( + Icons.close, + size: 40, + ), + ), + Text( + 'Add Location'.tr, + style: AppStyle.title, + ), + const Icon( + Icons.clear, + color: AppColor.secondaryColor, + ) + ], + ), + // SizedBox( + // width: Get.width, + // child: formSearchCaptain(), + // ), + ], + ), + ); + }, + ); +} + +class AppBarPointsPageForRider extends StatelessWidget { + const AppBarPointsPageForRider({ + super.key, + }); + + @override + Widget build(BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + IconButton( + onPressed: () {}, + icon: const Icon( + Icons.arrow_back_ios_new_rounded, + color: AppColor.primaryColor, + ), + ), + Container( + child: Row( + children: [ + const CircleAvatar( + backgroundColor: AppColor.primaryColor, + maxRadius: 15, + child: Icon( + Icons.person, + color: AppColor.secondaryColor, + ), + ), + TextButton( + onPressed: () {}, + child: Text( + "Switch Rider".tr, + style: AppStyle.title, + ), + ), + ], + ), + ), + const Icon( + Icons.clear, + color: AppColor.secondaryColor, + ) + ], + ); + } +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/buttom_sheet_map_show.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/controller/payment/payment_controller.dart'; + +import '../../../constant/style.dart'; +import '../../../controller/home/map_passenger_controller.dart'; + +GetBuilder buttomSheetMapPage() { + Get.put(PaymentController()); + return GetBuilder( + builder: (controller) => + controller.isBottomSheetShown && controller.rideConfirm == false + ? const Positioned( + left: 5, + bottom: 0, + right: 5, + child: Column( + // children: [ + // Row( + // mainAxisAlignment: MainAxisAlignment.end, + // children: [ + // double.parse(box.read(BoxName.passengerWalletTotal)) < + // 0 && + // controller.data.isNotEmpty + // ? Container( + // decoration: AppStyle.boxDecoration + // .copyWith(color: AppColor.redColor), + // height: 50, + // width: Get.width * .94, + // child: Padding( + // padding: + // const EdgeInsets.symmetric(horizontal: 8), + // child: Text( + // 'Your trip cost is'.tr + + // ' ${controller.totalCostPassenger.toStringAsFixed(2)} ' + // 'But you have a negative salary of' + // .tr + + // '${double.parse(box.read(BoxName.passengerWalletTotal)).toStringAsFixed(2)}' + // ' in your' + // .tr + + // ' ${AppInformation.appName}' + // ' wallet due to a previous trip.' + // .tr, + // style: AppStyle.subtitle, + // ), + // )) + // : const SizedBox(), + // ], + // ), + // const SizedBox( + // height: 5, + // ), + // AnimatedContainer( + // // clipBehavior: Clip.antiAliasWithSaveLayer, + // curve: Curves.easeInCirc, + // onEnd: () { + // controller.height = 250; + // }, + // height: controller.heightBottomSheetShown, + // duration: const Duration(seconds: 2), + // child: Column( + // children: [ + // controller.data.isEmpty + // ? const SizedBox() + // : Container( + // // width: Get.width * .9, + // height: 100, + // decoration: BoxDecoration( + // color: AppColor.secondaryColor, + // boxShadow: [ + // const BoxShadow( + // color: AppColor.accentColor, + // offset: Offset(2, 2)), + // BoxShadow( + // color: AppColor.accentColor + // .withOpacity(.4), + // offset: const Offset(-2, -2)) + // ], + // borderRadius: const BorderRadius.all( + // Radius.circular(15))), + // child: ListView.builder( + // scrollDirection: Axis.horizontal, + // itemCount: controller + // .dataCarsLocationByPassenger.length - + // 1, + // itemBuilder: + // (BuildContext context, int index) { + // return Container( + // color: controller.gender == 'Female' + // ? const Color.fromARGB( + // 255, 246, 52, 181) + // : AppColor.secondaryColor, + // width: Get.width, + // child: Row( + // mainAxisAlignment: + // MainAxisAlignment.spaceBetween, + // children: [ + // SizedBox( + // width: Get.width * .15, + // child: Padding( + // padding: + // const EdgeInsets.all(8.0), + // child: Image.asset( + // 'assets/images/jeep.png', + // width: 50, + // fit: BoxFit.fill, + // repeat: ImageRepeat.repeatX, + // ), + // ), + // ), + // SizedBox( + // width: Get.width * .55, + // child: Column( + // crossAxisAlignment: + // CrossAxisAlignment.start, + // mainAxisAlignment: + // MainAxisAlignment.spaceEvenly, + // children: [ + // Text( + // controller.hours > 0 + // ? '${'Your Ride Duration is '.tr}${controller.hours} ${'H and'.tr} ${controller.minutes} ${'m'.tr}' + // : '${'Your Ride Duration is '.tr} ${controller.minutes} m', + // style: AppStyle.subtitle, + // ), + // // Text( + // // '${'You will be thier in'.tr} ${DateFormat('h:mm a').format(controller.newTime)}', + // // style: AppStyle.subtitle, + // // ), + // Text( + // '${'Your trip distance is'.tr} ${controller.distance.toStringAsFixed(2)} ${'KM'.tr}', + // style: AppStyle.subtitle, + // ) + // ], + // ), + // ), + // SizedBox( + // width: Get.width * .2, + // child: Padding( + // padding: const EdgeInsets.only( + // right: 5, left: 5), + // child: Column( + // crossAxisAlignment: + // CrossAxisAlignment.center, + // children: [ + // Container( + // width: Get.width * .14, + // height: Get.height * .06, + // decoration: BoxDecoration( + // color: AppColor + // .secondaryColor, + // shape: + // BoxShape.rectangle, + // border: Border.all( + // width: 2, + // color: AppColor + // .greenColor)), + // child: Center( + // child: Text( + // '${'Fee is'.tr} \n${controller.totalPassenger.toStringAsFixed(2)}', + // style: + // AppStyle.subtitle, + // ), + // ), + // ), + // controller.promoTaken + // ? const Icon( + // Icons + // .filter_vintage_rounded, + // color: + // AppColor.redColor, + // ) + // : const SizedBox( + // height: 0, + // ) + // ], + // ), + // ), + // ), + // ], + // ), + // ); + // }, + // ), + // ), + // const SizedBox( + // height: 5, + // ), + // Container( + // // height: 130, + // decoration: BoxDecoration( + // color: AppColor.secondaryColor, + // boxShadow: [ + // const BoxShadow( + // color: AppColor.accentColor, + // offset: Offset(2, 2)), + // BoxShadow( + // color: AppColor.accentColor.withOpacity(.4), + // offset: const Offset(-2, -2)) + // ], + // borderRadius: + // const BorderRadius.all(Radius.circular(15))), + // child: controller.data.isEmpty + // ? const SizedBox() + // : Center( + // child: Padding( + // padding: const EdgeInsets.symmetric( + // horizontal: 5), + // child: Column( + // children: [ + // Row( + // children: [ + // const Icon( + // Icons.location_on, + // color: AppColor.redColor, + // ), + // const SizedBox( + // width: 10, + // ), + // Text( + // 'From : '.tr, + // style: AppStyle.subtitle, + // ), + // Text( + // controller.data[0] + // ['start_address'] + // .toString(), + // style: AppStyle.subtitle, + // ) + // ], + // ), + // Row( + // children: [ + // const Icon(Icons + // .location_searching_rounded), + // const SizedBox( + // width: 10, + // ), + // Text( + // 'To : '.tr, + // style: AppStyle.subtitle, + // ), + // Text( + // controller.data[0]['end_address'], + // style: AppStyle.subtitle, + // ), + // ], + // ), + // const Divider( + // color: AppColor.accentColor, + // thickness: 1, + // height: 2, + // indent: 1, + // ), + // SizedBox( + // height: 40, + // child: Row( + // mainAxisAlignment: + // MainAxisAlignment.center, + // children: [ + // Container( + // decoration: BoxDecoration( + // color: + // AppColor.secondaryColor, + // borderRadius: + // BorderRadius.circular(12), + // // border: Border.all(), + // ), + // child: Row( + // children: [ + // Icon( + // Icons.monetization_on, + // color: Colors.green[400], + // ), + // InkWell( + // onTap: () async { + // controller + // .changeCashConfirmPageShown(); + // Get.find< + // PaymentController>() + // .getPassengerWallet(); + // }, + // child: GetBuilder< + // PaymentController>( + // builder: (paymentController) => + // paymentController + // .isCashChecked + // ? Text( + // 'CASH', + // style: AppStyle + // .title, + // ) + // : Text( + // '${AppInformation.appName} Wallet', + // style: AppStyle + // .title, + // ), + // ), + // ), + // ], + // ), + // ), + // const SizedBox( + // width: 40, + // ), + // GetBuilder( + // builder: + // (paymentController) => + // Container( + // decoration: + // BoxDecoration( + // color: AppColor + // .secondaryColor, + // borderRadius: + // BorderRadius + // .circular( + // 12), + // ), + // child: Row( + // children: [ + // Icon( + // Icons + // .qr_code_2_rounded, + // color: Colors + // .green[ + // 400], + // ), + // InkWell( + // onTap: () { + // if (controller + // .promoTaken == + // false) { + // Get.defaultDialog( + // title: 'Add Promo'.tr, + // titleStyle: AppStyle.title, + // content: Column( + // children: [ + // SizedBox( + // width: Get.width * .7, + // child: TextFormField( + // controller: controller.promo, + // decoration: InputDecoration( + // labelText: 'Promo Code'.tr, + // hintText: 'Enter promo code'.tr, + // labelStyle: AppStyle.subtitle, + // hintStyle: AppStyle.subtitle, + // border: OutlineInputBorder( + // borderRadius: BorderRadius.circular(10), + // ), + // filled: true, + // fillColor: Colors.grey[200], + // focusedBorder: OutlineInputBorder( + // borderSide: const BorderSide( + // color: AppColor.primaryColor, + // width: 2.0, + // ), + // borderRadius: BorderRadius.circular(10), + // ), + // errorBorder: OutlineInputBorder( + // borderSide: const BorderSide( + // color: Colors.red, + // width: 2.0, + // ), + // borderRadius: BorderRadius.circular(10), + // ), + // enabledBorder: OutlineInputBorder( + // borderSide: const BorderSide( + // color: Colors.grey, + // width: 1.0, + // ), + // borderRadius: BorderRadius.circular(10), + // ), + // ), + // ), + // ), + // MyElevatedButton( + // title: 'Add Promo'.tr, + // onPressed: () async { + // controller.applyPromoCodeToPassenger(); + // }, + // ) + // ], + // )); + // } else { + // Get.snackbar( + // 'You have promo!' + // .tr, + // '', + // backgroundColor: + // AppColor.redColor); + // } + // }, + // child: Text( + // 'Add Promo' + // .tr, + // style: AppStyle + // .title, + // ), + // ), + // ], + // ), + // )), + // ], + // ), + // ), + // SizedBox( + // width: Get.width * .95, + // child: Row( + // mainAxisAlignment: + // MainAxisAlignment.center, + // children: [ + // controller.isCashSelectedBeforeConfirmRide == + // false + // ? MyElevatedButton( + // title: 'Next'.tr, + // onPressed: () { + // controller + // .changeCashConfirmPageShown(); + // }, + // ) + // : + // // controller.isPassengerChosen == + // // false + // // ? MyElevatedButton( + // // title: 'Next'.tr, + // // onPressed: () { + // // controller + // // .onChangedPassengersChoose(); + // // Get.defaultDialog( + // // barrierDismissible: + // // false, + // // title: + // // 'How Many Passengers?' + // // .tr, + // // titleStyle: + // // AppStyle + // // .title, + // // content: + // // Column( + // // children: [ + // // Text( + // // 'Allowed up to 4 Passengers.' + // // .tr, + // // style: AppStyle + // // .title, + // // ), + // // SizedBox( + // // height: + // // 200, // Set the desired height here + // // child: + // // CupertinoPicker( + // // itemExtent: + // // 32, + // // onSelectedItemChanged: + // // (index) { + // // controller.onChangedPassengerCount(index + + // // 1); + // // }, + // // children: [ + // // Text('1 Passenger'.tr), + // // Text('2 Passengers'.tr), + // // Text('3 Passengers'.tr), + // // Text('4 Passengers'.tr), + // // ], + // // ), + // // ), + // // MyElevatedButton( + // // title: + // // 'Back', + // // onPressed: + // // () => + // // Get.back(), + // // ) + // // ], + // // ), + // // ); + // // }, + // // ) + // // : + // MyElevatedButton( + // title: 'Confirm Selection' + // .tr, + // onPressed: () { + // controller + // .confirmRideForFirstDriver(); + // }, + // ), + // ], + // ), + // ) + // ], + // ), + // ), + // ), + // ), + // ], + // ), + // ), + // ], + ), + ) + : const SizedBox()); +} + +class Details extends StatelessWidget { + const Details({ + super.key, + }); + + @override + Widget build(BuildContext context) { + return GetBuilder( + builder: (controller) => Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Text( + '${'Distance is'.tr} ${controller.distance.toStringAsFixed(2)} KM', + style: AppStyle.title, + ), + Text( + '${'Duration is'.tr} ${controller.data[0]['duration']['text']}', + style: AppStyle.title, + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Text( + 'Cost for .21/km ${controller.costDistance.toStringAsFixed(2)} ', + style: AppStyle.title, + ), + Text( + '${'Cost Duration'.tr} ${controller.averageDuration.toStringAsFixed(2)} is ${controller.costDuration.toStringAsFixed(2)} ', + style: AppStyle.title, + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Text( + 'Total Driver ${controller.totalDriver.toStringAsFixed(2)}', + style: AppStyle.title, + ), + Text( + 'totaME ${controller.totalME.toStringAsFixed(2)} ', + style: AppStyle.title, + ), + ], + ), + Text( + 'Cost for passenger ${controller.totalPassenger.toStringAsFixed(2)} ', + style: AppStyle.title, + ), + ], + )); + } +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/searching_captain_window.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/colors.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/controller/home/map_passenger_controller.dart'; + +// --- الويدجت الرئيسية بالتصميم الجديد --- +class SearchingCaptainWindow extends StatefulWidget { + const SearchingCaptainWindow({super.key}); + + @override + State createState() => _SearchingCaptainWindowState(); +} + +class _SearchingCaptainWindowState extends State + with SingleTickerProviderStateMixin { + late AnimationController _animationController; + + @override + void initState() { + super.initState(); + _animationController = AnimationController( + vsync: this, + duration: const Duration(seconds: 2), + )..repeat(); + } + + @override + void dispose() { + _animationController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + // [تعديل 1] نستخدم Obx للاستماع إلى التغييرات في حالة الرحلة + return Obx(() { + // ابحث عن الكنترولر مرة واحدة + final controller = Get.find(); + + // [تعديل 2] شرط الإظهار يعتمد الآن على حالة الرحلة مباشرة + final bool isVisible = + controller.currentRideState.value == RideState.searching; + + return AnimatedPositioned( + duration: const Duration(milliseconds: 300), + curve: Curves.easeInOut, + bottom: isVisible ? 0 : -Get.height * 0.45, // زيادة الارتفاع قليلاً + left: 0, + right: 0, + child: Container( + padding: const EdgeInsets.fromLTRB(20, 20, 20, 16), + decoration: BoxDecoration( + color: AppColor.secondaryColor, + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(24), + topRight: Radius.circular(24), + ), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.2), + blurRadius: 20, + offset: const Offset(0, -5), + ), + ], + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + // --- 1. أنيميشن الرادار --- + _buildRadarAnimation(controller), + const SizedBox(height: 20), + + // --- 2. زر الإلغاء --- + SizedBox( + width: double.infinity, + child: OutlinedButton( + onPressed: () { + // [تعديل 3] استدعاء دالة الإلغاء الموحدة + controller.cancelRide(); + }, + style: OutlinedButton.styleFrom( + foregroundColor: AppColor.writeColor, + side: + BorderSide(color: AppColor.writeColor.withOpacity(0.3)), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12)), + padding: const EdgeInsets.symmetric(vertical: 12), + ), + child: Text('Cancel Search'.tr), + ), + ), + ], + ), + ), + ); + }); + } + + // --- ويدجت بناء أنيميشن الرادار --- + Widget _buildRadarAnimation(MapPassengerController controller) { + return SizedBox( + height: 180, // ارتفاع ثابت لمنطقة الأنيميشن + child: Stack( + alignment: Alignment.center, + children: [ + // --- دوائر الرادار المتحركة (تبقى كما هي) --- + ...List.generate(3, (index) { + return FadeTransition( + opacity: Tween(begin: 1.0, end: 0.0).animate( + CurvedAnimation( + parent: _animationController, + curve: Interval((index) / 3, 1.0, curve: Curves.easeInOut), + ), + ), + child: ScaleTransition( + scale: Tween(begin: 0.3, end: 1.0).animate( + CurvedAnimation( + parent: _animationController, + curve: Interval((index) / 3, 1.0, curve: Curves.easeInOut), + ), + ), + child: Container( + decoration: BoxDecoration( + shape: BoxShape.circle, + border: Border.all( + color: AppColor.primaryColor.withOpacity(0.7), + width: 2, + ), + ), + ), + ), + ); + }), + // --- المحتوى في المنتصف --- + Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + // [تعديل 4] النص يأتي مباشرة من الكنترولر + controller.driversStatusForSearchWindow, + style: AppStyle.headTitle.copyWith(fontSize: 20), + textAlign: TextAlign.center, + ), + const SizedBox(height: 8), + Text( + 'Searching for the nearest captain...'.tr, + style: AppStyle.subtitle + .copyWith(color: AppColor.writeColor.withOpacity(0.7)), + textAlign: TextAlign.center, + ), + const SizedBox(height: 16), + + // --- [!! تعديل جوهري !!] --- + // لم نعد بحاجة لـ buildTimerForIncrease + // المؤقت الرئيسي في الكنترولر هو من يقرر متى يعرض الحوار + // وهذا الجزء من الواجهة أصبح "غبياً" (لا يحتوي على منطق) + // الكنترولر سيستدعي _showIncreaseFeeDialog مباشرة + SizedBox( + height: 40, + width: 40, + child: Stack( + fit: StackFit.expand, + children: [ + CircularProgressIndicator( + strokeWidth: 3, + color: AppColor.primaryColor, + backgroundColor: AppColor.primaryColor.withOpacity(0.2), + ), + Center( + child: Icon( + Icons.search, + color: AppColor.writeColor.withOpacity(0.8), + ), + ), + ], + ), + ), + ], + ), + ], + ), + ); + } +} + +// --- [!! تعديل جوهري !!] --- +// تم حذف دالة `buildTimerForIncrease` بالكامل. +// تم حذف دالة `_showIncreaseFeeDialog` من هذا الملف. +// لماذا؟ لأن الكنترولر الآن هو المسؤول الوحيد عن إظهار الحوار. +// دالة `_showIncreaseFeeDialog` موجودة بالفعل داخل `map_passenger_controller.dart` +// وسيتم استدعاؤها من `_handleRideState` عند انتهاء مهلة الـ 90 ثانية. + +// // --- الويدجت الرئيسية بالتصميم الجديد --- +// class SearchingCaptainWindow extends StatefulWidget { +// const SearchingCaptainWindow({super.key}); + +// @override +// State createState() => _SearchingCaptainWindowState(); +// } + +// class _SearchingCaptainWindowState extends State +// with SingleTickerProviderStateMixin { +// late AnimationController _animationController; + +// @override +// void initState() { +// super.initState(); +// _animationController = AnimationController( +// vsync: this, +// duration: const Duration(seconds: 2), +// )..repeat(); +// } + +// @override +// void dispose() { +// _animationController.dispose(); +// super.dispose(); +// } + +// @override +// Widget build(BuildContext context) { +// return GetBuilder( +// builder: (controller) { +// return AnimatedPositioned( +// duration: const Duration(milliseconds: 300), +// curve: Curves.easeInOut, +// bottom: controller.isSearchingWindow ? 0 : -Get.height * 0.4, +// left: 0, +// right: 0, +// child: Container( +// padding: const EdgeInsets.fromLTRB(20, 20, 20, 16), +// decoration: BoxDecoration( +// color: AppColor.secondaryColor, +// borderRadius: const BorderRadius.only( +// topLeft: Radius.circular(24), +// topRight: Radius.circular(24), +// ), +// boxShadow: [ +// BoxShadow( +// color: Colors.black.withOpacity(0.2), +// blurRadius: 20, +// offset: const Offset(0, -5), +// ), +// ], +// ), +// child: Column( +// mainAxisSize: MainAxisSize.min, +// children: [ +// // --- 1. أنيميشن الرادار --- +// _buildRadarAnimation(controller), +// const SizedBox(height: 20), + +// // --- 2. زر الإلغاء --- +// SizedBox( +// width: double.infinity, +// child: OutlinedButton( +// onPressed: () { +// // --- نفس منطقك للإلغاء --- +// controller.changeCancelRidePageShow(); +// }, +// style: OutlinedButton.styleFrom( +// foregroundColor: AppColor.writeColor, +// side: BorderSide( +// color: AppColor.writeColor.withOpacity(0.3)), +// shape: RoundedRectangleBorder( +// borderRadius: BorderRadius.circular(12)), +// padding: const EdgeInsets.symmetric(vertical: 12), +// ), +// child: Text('Cancel Search'.tr), +// ), +// ), +// ], +// ), +// ), +// ); +// }, +// ); +// } + +// // --- ويدجت بناء أنيميشن الرادار --- +// Widget _buildRadarAnimation(MapPassengerController controller) { +// return SizedBox( +// height: 180, // ارتفاع ثابت لمنطقة الأنيميشن +// child: Stack( +// alignment: Alignment.center, +// children: [ +// // --- دوائر الرادار المتحركة --- +// ...List.generate(3, (index) { +// return FadeTransition( +// opacity: Tween(begin: 1.0, end: 0.0).animate( +// CurvedAnimation( +// parent: _animationController, +// curve: Interval((index) / 3, 1.0, curve: Curves.easeInOut), +// ), +// ), +// child: ScaleTransition( +// scale: Tween(begin: 0.3, end: 1.0).animate( +// CurvedAnimation( +// parent: _animationController, +// curve: Interval((index) / 3, 1.0, curve: Curves.easeInOut), +// ), +// ), +// child: Container( +// decoration: BoxDecoration( +// shape: BoxShape.circle, +// border: Border.all( +// color: AppColor.primaryColor.withOpacity(0.7), +// width: 2, +// ), +// ), +// ), +// ), +// ); +// }), +// // --- المحتوى في المنتصف --- +// Column( +// mainAxisAlignment: MainAxisAlignment.center, +// children: [ +// Text( +// controller.driversStatusForSearchWindow, +// style: AppStyle.headTitle.copyWith(fontSize: 20), +// textAlign: TextAlign.center, +// ), +// const SizedBox(height: 8), +// Text( +// 'Searching for the nearest captain...'.tr, +// style: AppStyle.subtitle +// .copyWith(color: AppColor.writeColor.withOpacity(0.7)), +// textAlign: TextAlign.center, +// ), +// const SizedBox(height: 16), +// // --- استدعاء نفس دالة المؤقت الخاصة بك --- +// buildTimerForIncrease(controller), +// ], +// ), +// ], +// ), +// ); +// } +// } + +// // --- نفس دالة المؤقت الخاصة بك مع تعديلات شكلية بسيطة --- +// Widget buildTimerForIncrease(MapPassengerController mapPassengerController) { +// return StreamBuilder( +// stream: Stream.periodic(const Duration(seconds: 1)) +// .map((_) => ++mapPassengerController.currentTimeSearchingCaptainWindow), +// initialData: 0, +// builder: (context, snapshot) { +// if (snapshot.hasData && snapshot.data! > 45) { +// // --- عرض زر زيادة الأجرة بنفس منطقك القديم --- +// return TextButton( +// onPressed: () => +// _showIncreaseFeeDialog(context, mapPassengerController), +// child: Text( +// "No one accepted? Try increasing the fare.".tr, +// style: AppStyle.title.copyWith( +// color: AppColor.primaryColor, +// decoration: TextDecoration.underline), +// textAlign: TextAlign.center, +// ), +// ); +// } + +// final double progress = (snapshot.data ?? 0).toDouble() / 30.0; + +// return SizedBox( +// height: 40, +// width: 40, +// child: Stack( +// fit: StackFit.expand, +// children: [ +// CircularProgressIndicator( +// value: progress, +// strokeWidth: 3, +// color: AppColor.primaryColor, +// backgroundColor: AppColor.primaryColor.withOpacity(0.2), +// ), +// Center( +// child: Text( +// '${snapshot.data ?? 0}', +// style: AppStyle.title.copyWith( +// color: AppColor.writeColor, fontWeight: FontWeight.bold), +// ), +// ), +// ], +// ), +// ); +// }, +// ); +// } + +// // --- دالة لعرض نافذة زيادة الأجرة (مأخوذة من منطقك القديم) --- +// void _showIncreaseFeeDialog( +// BuildContext context, MapPassengerController mapPassengerController) { +// Get.defaultDialog( +// barrierDismissible: false, +// title: "Increase Your Trip Fee (Optional)".tr, +// titleStyle: AppStyle.title, +// content: Column( +// children: [ +// Text( +// "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers." +// .tr, +// style: AppStyle.subtitle, +// textAlign: TextAlign.center, +// ), +// const SizedBox(height: 16), +// Row( +// mainAxisAlignment: MainAxisAlignment.center, +// children: [ +// IconButton( +// onPressed: () { +// mapPassengerController.increasFeeFromPassenger.text = +// (mapPassengerController.totalPassenger + 3) +// .toStringAsFixed(1); +// mapPassengerController.update(); +// }, +// icon: const Icon(Icons.add_circle, +// size: 40, color: AppColor.greenColor), +// ), +// SizedBox( +// width: 100, +// child: Form( +// key: mapPassengerController.increaseFeeFormKey, +// child: MyTextForm( +// controller: mapPassengerController.increasFeeFromPassenger, +// label: +// mapPassengerController.totalPassenger.toStringAsFixed(2), +// hint: +// mapPassengerController.totalPassenger.toStringAsFixed(2), +// type: TextInputType.number, +// ), +// ), +// ), +// IconButton( +// onPressed: () { +// mapPassengerController.increasFeeFromPassenger.text = +// (mapPassengerController.totalPassenger - 3) +// .toStringAsFixed(1); +// mapPassengerController.update(); +// }, +// icon: const Icon(Icons.remove_circle, +// size: 40, color: AppColor.redColor), +// ), +// ], +// ), +// ], +// ), +// actions: [ +// TextButton( +// child: Text("No, thanks".tr, +// style: const TextStyle(color: AppColor.redColor)), +// onPressed: () { +// Get.back(); +// // mapPassengerController.cancelRide(); +// mapPassengerController.changeCancelRidePageShow(); +// }, +// ), +// ElevatedButton( +// style: ElevatedButton.styleFrom(backgroundColor: AppColor.greenColor), +// child: Text("Increase Fee".tr), +// onPressed: () => +// mapPassengerController.increaseFeeByPassengerAndReOrder(), +// ), +// ], +// ); +// } + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/passengerRideLoctionWidget.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'dart:ui'; // مهم لإضافة تأثير الضبابية + +import '../../../constant/colors.dart'; +import '../../../constant/style.dart'; +import '../../../controller/home/map_passenger_controller.dart'; + +// --- الويدجت الرئيسية بالتصميم الجديد --- +class PassengerRideLocationWidget extends StatefulWidget { + const PassengerRideLocationWidget({super.key}); + + @override + State createState() => + _PassengerRideLocationWidgetState(); +} + +class _PassengerRideLocationWidgetState + extends State + with SingleTickerProviderStateMixin { + late AnimationController _animationController; + late Animation _animation; + + @override + void initState() { + super.initState(); + // --- إعداد الأنيميشن للأيقونة --- + _animationController = AnimationController( + vsync: this, + duration: const Duration(milliseconds: 1200), + )..repeat(reverse: true); // التكرار بشكل عكسي لإنشاء تأثير النبض + + _animation = Tween(begin: 0.9, end: 1.1).animate( + CurvedAnimation(parent: _animationController, curve: Curves.easeInOut), + ); + } + + @override + void dispose() { + _animationController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return GetBuilder(builder: (controller) { + // --- نفس شرط الإظهار الخاص بك --- + return AnimatedPositioned( + duration: const Duration(milliseconds: 300), + curve: Curves.easeOut, + bottom: controller.isPassengerRideLocationWidget + ? 20 + : -100, // حركة دخول وخروج ناعمة + left: 20, + right: 20, + child: ClipRRect( + borderRadius: BorderRadius.circular(50.0), // حواف دائرية بالكامل + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 8.0, sigmaY: 8.0), // تأثير زجاجي + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 14), + decoration: BoxDecoration( + color: AppColor.secondaryColor.withOpacity(0.85), + borderRadius: BorderRadius.circular(50.0), + border: Border.all(color: AppColor.writeColor.withOpacity(0.2)), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + // --- أيقونة متحركة لجذب الانتباه --- + ScaleTransition( + scale: _animation, + child: Icon( + Icons.location_on, + color: AppColor.primaryColor, + size: 28, + ), + ), + const SizedBox(width: 12), + // --- نص إرشادي واضح --- + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "Set pickup location".tr, + style: AppStyle.title + .copyWith(fontWeight: FontWeight.bold), + ), + Text( + "Move the map to adjust the pin".tr, + style: AppStyle.subtitle.copyWith( + color: AppColor.writeColor.withOpacity(0.7), + ), + ), + ], + ), + ], + ), + ), + ), + ), + ); + }); + } +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/menu_map_page.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../../constant/box_name.dart'; +import '../../../constant/colors.dart'; +import '../../../controller/home/map_passenger_controller.dart'; +import '../../../main.dart'; + +class MenuIconMapPageWidget extends StatelessWidget { + const MenuIconMapPageWidget({ + super.key, + }); + + @override + Widget build(BuildContext context) { + return GetBuilder( + builder: (controller) => Positioned( + top: Get.height * .008, + left: box.read(BoxName.lang) != 'ar' ? 5 : null, + right: box.read(BoxName.lang) == 'ar' ? 5 : null, + child: Container( + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.secondaryColor, + border: Border.all(color: AppColor.accentColor)), + child: AnimatedCrossFade( + sizeCurve: Curves.bounceOut, + duration: const Duration( + milliseconds: 300), // Adjust the duration as needed + crossFadeState: controller.heightMenuBool + ? CrossFadeState.showFirst + : CrossFadeState.showSecond, + firstChild: IconButton( + onPressed: () { + controller.getDrawerMenu(); + }, + icon: const Icon( + Icons.close, + color: AppColor.primaryColor, + ), + ), + secondChild: IconButton( + onPressed: () { + controller.getDrawerMenu(); + }, + icon: const Icon( + Icons.menu, + color: AppColor.accentColor, + ), + ), + ), + ), + )); + } +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/car_details_widget_to_go.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/colors.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/main.dart'; +import 'package:Intaleq/views/home/profile/passenger_profile_page.dart'; +import 'package:Intaleq/views/widgets/elevated_btn.dart'; +import 'package:Intaleq/views/widgets/my_textField.dart'; +import 'package:intl/intl.dart'; +import 'dart:ui'; + +import '../../../constant/info.dart'; +import '../../../controller/functions/tts.dart'; +import '../../../controller/home/map_passenger_controller.dart'; +import '../../../print.dart'; +import '../../widgets/mydialoug.dart'; + +// --- CarType class (Unchanged) --- +class CarType { + final String carType; + final String carDetail; + final String image; + bool isSelected = false; + + CarType( + {required this.carType, required this.carDetail, required this.image}); +} + +// --- List of Car Types (Unchanged) --- +List carTypes = [ + CarType( + carType: 'Fixed Price', + carDetail: 'Closest & Cheapest'.tr, + image: 'assets/images/carspeed.png'), + CarType( + carType: 'Comfort', + carDetail: 'Comfort choice'.tr, + image: 'assets/images/blob.png'), + CarType( + carType: 'Electric', + carDetail: 'Quiet & Eco-Friendly'.tr, + image: 'assets/images/electric.png'), + CarType( + carType: 'Lady', + carDetail: 'Lady Captain for girls'.tr, + image: 'assets/images/lady.png'), + CarType( + carType: 'Van', + carDetail: 'Van for familly'.tr, + image: 'assets/images/bus.png'), + CarType( + carType: 'Rayeh Gai', + carDetail: "Best choice for cities".tr, + image: 'assets/images/roundtrip.png'), +]; + +// --- Main Widget --- +class CarDetailsTypeToChoose extends StatelessWidget { + CarDetailsTypeToChoose({super.key}); + final textToSpeechController = Get.put(TextToSpeechController()); + + void _prepareCarTypes(MapPassengerController controller) { + if (controller.distance > 23) { + if (!carTypes.any((car) => car.carType == 'Rayeh Gai')) { + carTypes.add(CarType( + carType: 'Rayeh Gai', + carDetail: "Best choice for cities".tr, + image: 'assets/images/roundtrip.png')); + } + } else { + carTypes.removeWhere((car) => car.carType == 'Rayeh Gai'); + } + } + + @override + Widget build(BuildContext context) { + return GetBuilder(builder: (controller) { + _prepareCarTypes(controller); + + if (!(controller.isBottomSheetShown) && controller.rideConfirm == false) { + return const SizedBox.shrink(); + } + + // Main Bottom Sheet Design + return Positioned( + bottom: 0, + left: 0, + right: 0, + child: Container( + decoration: BoxDecoration( + color: AppColor + .secondaryColor, // Solid background for better performance + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(30), + topRight: Radius.circular(30), + ), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.15), + blurRadius: 20, + spreadRadius: 5, + offset: const Offset(0, -5), + ), + ], + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + // Drag Handle + Center( + child: Container( + width: 50, + height: 5, + margin: const EdgeInsets.symmetric(vertical: 12), + decoration: BoxDecoration( + color: Colors.grey.withOpacity(0.3), + borderRadius: BorderRadius.circular(10), + ), + ), + ), + + // Header (Title + Trip Info) + _buildModernHeader(controller), + + // Warning Message (if any) + _buildNegativeBalanceWarning(controller), + + // Car List + SizedBox( + height: 165, // Fixed height for consistency + child: ListView.separated( + physics: const BouncingScrollPhysics(), + scrollDirection: Axis.horizontal, + padding: + const EdgeInsets.symmetric(horizontal: 20, vertical: 10), + itemCount: carTypes.length, + separatorBuilder: (context, index) => + const SizedBox(width: 12), + itemBuilder: (context, index) { + final carType = carTypes[index]; + final isSelected = controller.selectedIndex == index; + return _buildVerticalCarCard( + context, controller, carType, isSelected, index); + }, + ), + ), + + // Promo Code Button + _buildPromoButton(context, controller), + + // Safe Area spacing + SizedBox(height: MediaQuery.of(context).padding.bottom + 10), + ], + ), + ), + ); + }); + } + + // --- UI Components --- + + Widget _buildModernHeader(MapPassengerController controller) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 5), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Text( + 'Choose your ride'.tr, + style: AppStyle.headTitle.copyWith( + fontSize: 20, + fontWeight: FontWeight.w800, + letterSpacing: 0.5), + ), + ), + + // Trip Info Pill + Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + decoration: BoxDecoration( + color: AppColor.primaryColor.withOpacity(0.08), + borderRadius: BorderRadius.circular(20), + border: Border.all(color: AppColor.primaryColor.withOpacity(0.2)), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(Icons.directions_car_filled_outlined, + size: 16, color: AppColor.primaryColor), + const SizedBox(width: 6), + Text( + '${controller.distance.toStringAsFixed(1)} ${'KM'.tr}', + style: AppStyle.subtitle.copyWith( + fontSize: 13, + fontWeight: FontWeight.bold, + color: AppColor.primaryColor), + ), + Container( + margin: const EdgeInsets.symmetric(horizontal: 8), + height: 12, + width: 1, + color: Colors.grey.shade400), + Icon(Icons.access_time_filled_rounded, + size: 16, color: AppColor.primaryColor), + const SizedBox(width: 6), + Text( + controller.hours > 0 + ? '${controller.hours}h ${controller.minutes}m' + : '${controller.minutes} min', + style: AppStyle.subtitle.copyWith( + fontSize: 13, + fontWeight: FontWeight.bold, + color: AppColor.primaryColor), + ), + ], + ), + ) + ], + ), + ); + } + + Widget _buildVerticalCarCard( + BuildContext context, + MapPassengerController controller, + CarType carType, + bool isSelected, + int index) { + return GestureDetector( + onTap: () { + controller.selectCarFromList(index); + _showCarDetailsDialog( + context, controller, carType, textToSpeechController); + }, + child: AnimatedContainer( + duration: const Duration(milliseconds: 250), + curve: Curves.easeInOut, + width: 110, + decoration: BoxDecoration( + color: isSelected + ? AppColor.primaryColor.withOpacity(0.05) + : Colors.white, + borderRadius: BorderRadius.circular(18), + border: Border.all( + color: isSelected + ? AppColor.primaryColor + : Colors.grey.withOpacity(0.2), + width: isSelected ? 2.0 : 1.0, + ), + boxShadow: isSelected + ? [ + BoxShadow( + color: AppColor.primaryColor.withOpacity(0.2), + blurRadius: 8, + offset: const Offset(0, 4), + ) + ] + : [ + BoxShadow( + color: Colors.grey.withOpacity(0.1), + blurRadius: 4, + offset: const Offset(0, 2), + ) + ], + ), + child: Stack( + alignment: Alignment.center, + children: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + // Image with subtle scaling if selected + AnimatedScale( + scale: isSelected ? 1.1 : 1.0, + duration: const Duration(milliseconds: 250), + child: Image.asset( + carType.image, + height: 50, + fit: BoxFit.contain, + ), + ), + const SizedBox(height: 12), + + // Car Type Text + FittedBox( + fit: BoxFit.scaleDown, + child: Text( + carType.carType.tr, + style: AppStyle.subtitle.copyWith( + fontWeight: + isSelected ? FontWeight.w800 : FontWeight.w600, + fontSize: 14, + color: + isSelected ? AppColor.primaryColor : Colors.black87, + ), + maxLines: 1, + ), + ), + + const SizedBox(height: 6), + + // Price Tag + Container( + padding: + const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + decoration: BoxDecoration( + color: isSelected + ? AppColor.primaryColor + : Colors.grey.shade100, + borderRadius: BorderRadius.circular(12), + ), + child: FittedBox( + child: Text( + '${_getPassengerPriceText(carType, controller)} ${'SYP'.tr}', + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.bold, + color: isSelected ? Colors.white : Colors.black87, + ), + ), + ), + ), + ], + ), + ), + + // Checkmark Badge for Selected Item + if (isSelected) + Positioned( + top: 8, + right: 8, + child: Container( + padding: const EdgeInsets.all(2), + decoration: const BoxDecoration( + color: AppColor.primaryColor, + shape: BoxShape.circle, + ), + child: const Icon(Icons.check, size: 12, color: Colors.white), + ), + ), + ], + ), + ), + ); + } + + Widget _buildPromoButton( + BuildContext context, MapPassengerController controller) { + if (controller.promoTaken) return const SizedBox.shrink(); + + return Padding( + padding: const EdgeInsets.fromLTRB(20, 10, 20, 5), + child: Material( + color: Colors.transparent, + child: InkWell( + onTap: () => _showPromoCodeDialog(context, controller), + borderRadius: BorderRadius.circular(14), + child: Container( + padding: const EdgeInsets.symmetric(vertical: 14, horizontal: 16), + decoration: BoxDecoration( + color: Colors.grey.withOpacity(0.05), + borderRadius: BorderRadius.circular(14), + border: Border.all(color: Colors.grey.withOpacity(0.2)), + ), + child: Row( + children: [ + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: AppColor.primaryColor.withOpacity(0.1), + shape: BoxShape.circle), + child: Icon(Icons.confirmation_number_outlined, + color: AppColor.primaryColor, size: 20), + ), + const SizedBox(width: 14), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Promo Code'.tr, + style: AppStyle.subtitle.copyWith( + fontSize: 14, fontWeight: FontWeight.bold), + ), + Text( + 'Have a promo code?'.tr, + style: AppStyle.subtitle.copyWith( + fontSize: 12, color: Colors.grey.shade600), + ), + ], + ), + ), + Icon(Icons.arrow_forward_ios_rounded, + size: 16, color: Colors.grey.shade400) + ], + ), + ), + ), + ), + ); + } + + Widget _buildNegativeBalanceWarning(MapPassengerController controller) { + final passengerWallet = + double.tryParse(box.read(BoxName.passengerWalletTotal) ?? '0.0') ?? 0.0; + if (passengerWallet < 0.0) { + return Container( + margin: const EdgeInsets.symmetric(horizontal: 20, vertical: 8), + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: AppColor.redColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + border: Border.all(color: AppColor.redColor.withOpacity(0.3)), + ), + child: Row( + children: [ + Icon(Icons.info_outline_rounded, + color: AppColor.redColor, size: 24), + const SizedBox(width: 12), + Expanded( + child: Text( + '${'You have a negative balance of'.tr} ${passengerWallet.toStringAsFixed(2)} ${'SYP'.tr}.', + style: AppStyle.subtitle.copyWith( + color: AppColor.redColor, + fontWeight: FontWeight.w600, + fontSize: 13), + ), + ), + ], + ), + ); + } + return const SizedBox.shrink(); + } + + // --- Logic Helpers (Copied from your previous code to ensure functionality) --- + + String _getPassengerPriceText( + CarType carType, MapPassengerController mapPassengerController) { + double rawPrice; + switch (carType.carType) { + case 'Comfort': + rawPrice = mapPassengerController.totalPassengerComfort; + break; + case 'Fixed Price': + rawPrice = mapPassengerController.totalPassengerSpeed; + break; + case 'Electric': + rawPrice = mapPassengerController.totalPassengerElectric; + break; + case 'Awfar Car': + rawPrice = mapPassengerController.totalPassengerBalash; + break; + case 'Scooter': + case 'Pink Bike': + rawPrice = mapPassengerController.totalPassengerScooter; + break; + case 'Van': + rawPrice = mapPassengerController.totalPassengerVan; + break; + case 'Lady': + rawPrice = mapPassengerController.totalPassengerLady; + break; + case 'Rayeh Gai': + rawPrice = mapPassengerController.totalPassengerRayehGai; + break; + default: + return '...'; + } + final int roundedPrice = rawPrice.round(); + final formatter = NumberFormat.decimalPattern(); + return formatter.format(roundedPrice); + } + + // --- Dialogs (Styled consistently) --- + + void _showPromoCodeDialog( + BuildContext context, MapPassengerController controller) { + Get.dialog( + Dialog( + shape: + RoundedRectangleBorder(borderRadius: BorderRadius.circular(20.0)), + backgroundColor: AppColor.secondaryColor, + elevation: 10, + child: Padding( + padding: const EdgeInsets.all(24.0), + child: Form( + key: controller.promoFormKey, + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Icon(Icons.local_activity_outlined, + size: 40, color: AppColor.primaryColor), + const SizedBox(height: 16), + Text( + 'Apply Promo Code'.tr, + textAlign: TextAlign.center, + style: AppStyle.headTitle.copyWith(fontSize: 20), + ), + const SizedBox(height: 8), + Text( + 'Enter your code below to apply the discount.'.tr, + textAlign: TextAlign.center, + style: AppStyle.subtitle + .copyWith(color: Colors.grey.shade600, fontSize: 14), + ), + const SizedBox(height: 24), + MyTextForm( + controller: controller.promo, + label: 'Promo Code'.tr, + hint: 'Enter your promo code'.tr, + type: TextInputType.text, + ), + const SizedBox(height: 24), + Row( + children: [ + Expanded( + child: TextButton( + onPressed: () => Get.back(), + style: TextButton.styleFrom( + foregroundColor: Colors.grey, + ), + child: Text('Cancel'.tr), + ), + ), + const SizedBox(width: 16), + Expanded( + child: MyElevatedButton( + title: 'Apply'.tr, + onPressed: () { + if (controller.promoFormKey.currentState! + .validate()) { + controller.applyPromoCodeToPassenger(context); + Get.back(); + } + }, + ), + ), + ], + ), + ], + ), + ), + ), + ), + barrierColor: Colors.black.withOpacity(0.5), + ); + } + + void _showCarDetailsDialog( + BuildContext context, + MapPassengerController mapPassengerController, + CarType carType, + TextToSpeechController textToSpeechController) { + Get.dialog( + Dialog( + shape: + RoundedRectangleBorder(borderRadius: BorderRadius.circular(28.0)), + backgroundColor: Colors.transparent, + child: Stack( + clipBehavior: Clip.none, + alignment: Alignment.topCenter, + children: [ + Container( + margin: const EdgeInsets.only(top: 60), + padding: const EdgeInsets.fromLTRB(24, 70, 24, 24), + decoration: BoxDecoration( + color: AppColor.secondaryColor, + borderRadius: BorderRadius.circular(28.0), + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + carType.carType.tr, + style: AppStyle.headTitle.copyWith(fontSize: 22), + ), + const SizedBox(width: 8), + InkWell( + onTap: () => textToSpeechController.speakText( + _getCarDescription( + mapPassengerController, carType)), + borderRadius: BorderRadius.circular(20), + child: Padding( + padding: const EdgeInsets.all(4.0), + child: Icon(Icons.volume_up_rounded, + color: AppColor.primaryColor, size: 24), + ), + ) + ], + ), + const SizedBox(height: 16), + Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: Colors.grey.withOpacity(0.05), + borderRadius: BorderRadius.circular(16)), + child: Text( + _getCarDescription(mapPassengerController, carType), + textAlign: TextAlign.center, + style: AppStyle.subtitle.copyWith( + color: Colors.black87, + fontSize: 15, + height: 1.4, + ), + ), + ), + const SizedBox(height: 24), + Row( + children: [ + Expanded( + child: TextButton( + onPressed: () => Get.back(), + child: Text('Back'.tr, + style: TextStyle(color: Colors.grey.shade600)), + ), + ), + const SizedBox(width: 12), + Expanded( + flex: 2, + child: MyElevatedButton( + kolor: AppColor.greenColor, + title: 'Select This Ride'.tr, + onPressed: () { + Get.back(); + _handleCarSelection( + context, mapPassengerController, carType); + }, + ), + ), + ], + ), + ], + ), + ), + Positioned( + top: 0, + child: Hero( + tag: 'car_${carType.carType}', + child: Image.asset(carType.image, height: 130), + ), + ), + ], + ), + ), + barrierColor: Colors.black.withOpacity(0.6), + ); + } + + // --- Logic Helpers (Keep unchanged) --- + + String _getCarDescription( + MapPassengerController mapPassengerController, CarType carType) { + switch (carType.carType) { + case 'Comfort': + return mapPassengerController.endNameAddress + .toLowerCase() + .contains("airport".tr) + ? "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price." + .tr + : 'Best choice for comfort car and flexible route and stops point' + .tr; + case 'Fixed Price': + return 'This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route' + .tr; + case 'Electric': + return 'Travel in a modern, silent electric car. A premium, eco-friendly choice for a smooth ride.' + .tr; + case 'Scooter': + case 'Van': + return "Spacious van service ideal for families and groups. Comfortable, safe, and cost-effective travel together." + .tr; + case 'Pink Bike': + return 'This is for delivery or a motorcycle.'.tr; + case 'Mishwar Vip': + return "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire" + .tr; + case 'Awfar Car': + return "Old and affordable, perfect for budget rides.".tr; + case 'Lady': + return "This trip is for women only".tr; + case 'Rayeh Gai': + return "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable." + .tr; + default: + return ''; + } + } + + void _handleCarSelection(BuildContext context, + MapPassengerController mapPassengerController, CarType carType) { + box.write(BoxName.carType, carType.carType); + mapPassengerController.totalPassenger = + _getOriginalPrice(carType, mapPassengerController); + if (carType.carType == 'Mishwar Vip') { + Get.back(); + mapPassengerController.mishwariOption(); + } else if (carType.carType == 'Lady') { + if (box.read(BoxName.gender).toString() != '') { + mapPassengerController.isBottomSheetShown = false; + mapPassengerController.update(); + mapPassengerController.changeCashConfirmPageShown(); + } else { + MyDialog().getDialog('Idintify gender', + 'You should ideintify your gender for this type of trip!'.tr, () { + Get.to(() => PassengerProfilePage()); + }); + } + } else if (carType.carType == 'Rayeh Gai') { + Get.defaultDialog( + barrierDismissible: false, + title: "Select betweeen types".tr, + content: + Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ + _buildRayehGaiOption(mapPassengerController, 'Awfar Car', + mapPassengerController.totalPassengerRayehGaiBalash), + _buildRayehGaiOption(mapPassengerController, 'Fixed Price', + mapPassengerController.totalPassengerRayehGai), + _buildRayehGaiOption(mapPassengerController, 'Comfort', + mapPassengerController.totalPassengerRayehGaiComfort) + ]), + cancel: MyElevatedButton( + kolor: AppColor.redColor, + title: 'Cancel'.tr, + onPressed: () => Get.back()), + confirm: MyElevatedButton( + kolor: AppColor.greenColor, + title: 'Next'.tr, + onPressed: () { + mapPassengerController.isBottomSheetShown = false; + mapPassengerController.update(); + mapPassengerController.changeCashConfirmPageShown(); + })); + } else { + mapPassengerController.isBottomSheetShown = false; + mapPassengerController.update(); + mapPassengerController.changeCashConfirmPageShown(); + } + } + + double _getOriginalPrice( + CarType carType, MapPassengerController mapPassengerController) { + switch (carType.carType) { + case 'Comfort': + return mapPassengerController.totalPassengerComfort; + case 'Fixed Price': + return mapPassengerController.totalPassengerSpeed; + case 'Electric': + return mapPassengerController.totalPassengerElectric; + case 'Awfar Car': + return mapPassengerController.totalPassengerBalash; + case 'Van': + return mapPassengerController.totalPassengerVan; + case 'Lady': + return mapPassengerController.totalPassengerLady; + default: + return 0.0; + } + } + + Widget _buildRayehGaiOption(MapPassengerController mapPassengerController, + String carTypeName, double price) { + return GestureDetector( + onTap: () { + Get.back(); + mapPassengerController.totalPassenger = price; + mapPassengerController.isBottomSheetShown = false; + mapPassengerController.update(); + mapPassengerController.changeCashConfirmPageShown(); + }, + child: Container( + decoration: AppStyle.boxDecoration1, + padding: const EdgeInsets.all(8.0), + child: Column(children: [ + Text(carTypeName.tr), + Text(price.toStringAsFixed(0)) + ])), + ); + } +} + +// --- BurcMoney Widget (Unchanged) --- +class BurcMoney extends StatelessWidget { + const BurcMoney({super.key}); + + @override + Widget build(BuildContext context) { + return GetBuilder( + builder: (mapPassengerController) { + final passengerWallet = + double.tryParse(box.read(BoxName.passengerWalletTotal) ?? '0.0') ?? + 0.0; + + return mapPassengerController.data.isNotEmpty && + mapPassengerController.isBottomSheetShown && + !mapPassengerController.rideConfirm && + passengerWallet < 0.0 + ? Positioned( + bottom: Get.height * .41, + left: 16, + right: 16, + child: Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: AppColor.redColor.withOpacity(0.8), + borderRadius: BorderRadius.circular(8), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.1), + blurRadius: 4, + offset: const Offset(0, 2), + ), + ], + ), + child: Row( + children: [ + const Icon( + Icons.warning_amber_rounded, + color: Colors.white, + size: 24, + ), + const SizedBox(width: 8), + Expanded( + child: Text.rich( + TextSpan( + children: [ + TextSpan( + text: '${'Negative Balance:'.tr} ', + style: AppStyle.subtitle.copyWith( + color: Colors.white, + fontWeight: FontWeight.bold, + ), + ), + TextSpan( + text: + '${'You have a balance of'.tr} ${passengerWallet.toStringAsFixed(2)} ${box.read(BoxName.countryCode) == 'Egypt' ? 'LE'.tr : 'SYP'.tr} ${'due to a previous trip.'.tr}', + style: AppStyle.subtitle.copyWith( + color: Colors.white, + ), + ), + ], + ), + textAlign: TextAlign.start, + ), + ), + const SizedBox(width: 8), + GestureDetector( + onTap: () async => + await Get.find().speakText( + '${'you have a negative balance of'.tr}${passengerWallet.toStringAsFixed(2)}${' in your'.tr} ${AppInformation.appName}${' wallet due to a previous trip.'.tr}'), + child: const Icon( + Icons.headphones, + color: Colors.white, + ), + ), + ], + ), + ), + ) + : const SizedBox(); + }, + ); + } +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/form_serch_multiy_point.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/table_names.dart'; + +import '../../../constant/colors.dart'; +import '../../../constant/style.dart'; +import '../../../controller/functions/toast.dart'; +import '../../../controller/home/map_passenger_controller.dart'; +import '../../../main.dart'; + +GetBuilder formSearchPlaces(int index) { + // DbSql sql = DbSql.instance; + return GetBuilder( + builder: (controller) => Column( + children: [ + Padding( + padding: const EdgeInsets.all(16), + child: Container( + decoration: + const BoxDecoration(color: AppColor.secondaryColor), + child: TextField( + decoration: InputDecoration( + border: const OutlineInputBorder( + borderRadius: BorderRadius.only(), + gapPadding: 4, + borderSide: BorderSide( + color: AppColor.redColor, + width: 2, + )), + suffixIcon: const Icon(Icons.search), + hintText: controller.hintTextwayPoint0.tr, + hintStyle: AppStyle.title, + hintMaxLines: 1, + prefixIcon: IconButton( + onPressed: () { + controller.allTextEditingPlaces[index].clear(); + controller.clearPlaces(index); + }, + icon: Icon( + Icons.clear, + color: Colors.red[300], + ), + ), + ), + controller: controller.allTextEditingPlaces[index], + onChanged: (value) { + if (controller.allTextEditingPlaces[index].text.length > + 5) { + controller.getPlacesListsWayPoint(index); + controller.changeHeightPlacesAll(index); + } + }, + // onEditingComplete: () => controller.changeHeight(), + ), + ), + ), + controller.placeListResponseAll[index].isEmpty + ? InkWell( + onTap: () { + controller.startLocationFromMapAll[index] = true; + controller.wayPointIndex = index; + Get.back(); + // controller.changeMainBottomMenuMap(); + controller.changeWayPointStopsSheet(); + controller.changePickerShown(); + }, + child: Text( + 'Choose from Map'.tr + ' $index'.tr, + style: + AppStyle.title.copyWith(color: AppColor.blueColor), + ), + ) + : const SizedBox(), + Container( + height: controller.placeListResponseAll[index].isNotEmpty + ? controller.height + : 0, + color: AppColor.secondaryColor, + child: ListView.builder( + itemCount: controller.placeListResponseAll[index].length, + itemBuilder: (BuildContext context, int i) { + var res = controller.placeListResponseAll[index][i]; + return InkWell( + onTap: () async { + controller.changeHeightPlaces(); + if (controller.currentLocationToFormPlacesAll[index] == + true) { + controller.newStartPointLocation = + controller.passengerLocation; + } else { + controller.passengerLocation = + controller.newStartPointLocation; + } + + controller.convertHintTextPlaces(index, res); + }, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 10), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + children: [ + Image.network( + res['icon'], + width: 20, + ), + IconButton( + onPressed: () async { + await sql.insertMapLocation({ + 'latitude': res['geometry'] + ['location']['lat'], + 'longitude': res['geometry'] + ['location']['lng'], + 'name': res['name'].toString(), + 'rate': res['rating'].toString(), + }, TableName.placesFavorite); + Toast.show( + context, + '${res['name']} ${'Saved Sucssefully'.tr}', + AppColor.primaryColor); + }, + icon: const Icon(Icons.favorite_border), + ), + ], + ), + Column( + children: [ + Text( + res['name'].toString(), + style: AppStyle.title, + ), + Text( + res['vicinity'].toString(), + style: AppStyle.subtitle, + ), + ], + ), + Column( + children: [ + Text( + 'rate', + style: AppStyle.subtitle, + ), + Text( + res['rating'].toString(), + style: AppStyle.subtitle, + ), + ], + ), + ], + ), + const Divider( + thickness: 1, + ) + ], + ), + ), + ); + }, + ), + ) + ], + )); +} + + +================================================== +FILE PATH: ./lib/views/home/map_widget.dart/cancel_raide_page.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/colors.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/controller/home/map_passenger_controller.dart'; +import '../../widgets/elevated_btn.dart'; + +void showCancelRideBottomSheet() { + Get.bottomSheet( + cancelRidePage(), + backgroundColor: Colors.transparent, + isScrollControlled: true, + ); +} + +GetBuilder cancelRidePage() { + Get.put(MapPassengerController()); + + final List reasons = [ + "I don't need a ride anymore".tr, + "I was just trying the application".tr, + "No driver accepted my request".tr, + "I added the wrong pick-up/drop-off location".tr, + "I don't have a reason".tr, + "Other".tr, + ]; + + return GetBuilder( + builder: (controller) => controller.isCancelRidePageShown + ? Container( + height: Get.height * 0.6, + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: Colors.white, + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.2), + offset: const Offset(0, 8), + blurRadius: 16, + ), + ], + borderRadius: BorderRadius.circular(20), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Can we know why you want to cancel Ride ?'.tr, + style: AppStyle.title + .copyWith(fontSize: 18, fontWeight: FontWeight.bold), + textAlign: TextAlign.center, + ), + const SizedBox(height: 20), + Expanded( + child: ListView.separated( + itemCount: reasons.length, + separatorBuilder: (context, index) => const Divider(), + itemBuilder: (context, index) { + return ListTile( + title: Text( + reasons[index], + style: AppStyle.title.copyWith(fontSize: 16), + ), + leading: Radio( + value: index, + groupValue: controller.selectedReason, + onChanged: (int? value) { + controller.selectReason(value!, reasons[index]); + }, + activeColor: AppColor.primaryColor, + ), + onTap: () { + controller.selectReason(index, reasons[index]); + }, + ); + }, + ), + ), + const SizedBox(height: 20), + MyElevatedButton( + title: 'Cancel Ride'.tr, + onPressed: () { + if (controller.selectedReason == -1) { + Get.snackbar( + 'You Should be select reason.'.tr, + '', + snackPosition: SnackPosition.BOTTOM, + backgroundColor: AppColor.redColor, + colorText: Colors.white, + ); + } else { + controller.cancelRide(); + } + }, + ), + ], + ), + ) + : const SizedBox(), + ); +} + + +================================================== +FILE PATH: ./lib/views/home/profile/complaint_page.dart +================================================== + +import 'dart:io'; + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/controller/home/profile/complaint_controller.dart'; +import 'package:Intaleq/views/widgets/my_scafold.dart'; // سنستخدم السكافولد الخاص بك +import 'package:Intaleq/views/widgets/mycircular.dart'; +import 'package:Intaleq/views/widgets/mydialoug.dart'; +import 'package:Intaleq/views/widgets/elevated_btn.dart'; // سنستخدم الزر الخاص بك + +import '../../../constant/colors.dart'; +import '../../../controller/functions/audio_record1.dart'; + +// --- الويدجت الرئيسية بالتصميم الجديد --- +class ComplaintPage extends StatelessWidget { + ComplaintPage({super.key}); + + final ComplaintController complaintController = + Get.put(ComplaintController()); + final AudioRecorderController audioRecorderController = + Get.put(AudioRecorderController()); + + @override + Widget build(BuildContext context) { + return MyScafolld( + title: 'Submit a Complaint'.tr, + isleading: true, + body: [ + GetBuilder( + builder: (controller) { + if (controller.isLoading && controller.feedBack.isEmpty) { + // عرض التحميل المبدئي فقط + return const MyCircularProgressIndicator(); + } + return Stack( + children: [ + Form( + key: controller.formKey, + child: ListView( + padding: const EdgeInsets.all(16.0), + children: [ + // --- 1. بطاقة إدخال نص الشكوى --- + _buildSectionCard( + title: '1. Describe Your Issue'.tr, + child: TextFormField( + controller: controller.complaintController, + decoration: InputDecoration( + hintText: 'Enter your complaint here...'.tr, + filled: true, + fillColor: AppColor.secondaryColor.withOpacity(0.5), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide.none, + ), + contentPadding: const EdgeInsets.all(16), + ), + maxLines: 6, + style: AppStyle.subtitle, + validator: (value) { + if (value == null || value.isEmpty) { + return 'Please enter a description of the issue.' + .tr; + } + return null; + }, + ), + ), + + // --- 2. بطاقة إرفاق التسجيل الصوتي --- + _buildSectionCard( + title: '2. Attach Recorded Audio (Optional)'.tr, + child: FutureBuilder>( + future: audioRecorderController.getRecordedFiles(), + builder: (context, snapshot) { + if (snapshot.connectionState == + ConnectionState.waiting) { + return const Center( + child: CircularProgressIndicator()); + } + if (snapshot.hasError || + !snapshot.hasData || + snapshot.data!.isEmpty) { + return Center( + child: Text('No audio files found.'.tr, + style: AppStyle.subtitle)); + } + return Column( + children: snapshot.data!.map((audioFilePath) { + final audioFile = File(audioFilePath); + final isUploaded = + controller.audioLink.isNotEmpty && + controller.audioLink.contains( + audioFilePath.split('/').last); + + return ListTile( + leading: Icon( + isUploaded + ? Icons.check_circle + : Icons.mic, + color: isUploaded + ? AppColor.greenColor + : AppColor.redColor), + title: Text(audioFilePath.split('/').last, + style: AppStyle.subtitle, + overflow: TextOverflow.ellipsis), + subtitle: isUploaded + ? Text('Uploaded'.tr, + style: const TextStyle( + color: AppColor.greenColor)) + : null, + onTap: isUploaded + ? null + : () { + MyDialogContent().getDialog( + 'Confirm Attachment'.tr, + Text( + 'Attach this audio file?'.tr), + () async { + await controller + .uploadAudioFile(audioFile); + }); + }, + ); + }).toList(), + ); + }, + ), + ), + + // --- 3. بطاقة تفاصيل الرحلة والرد --- + _buildSectionCard( + title: '3. Review Details & Response'.tr, + child: Column( + children: [ + if (controller.feedBack.isNotEmpty) ...[ + _buildDetailRow(Icons.calendar_today_outlined, + 'Date'.tr, controller.feedBack[0]['date']), + _buildDetailRow( + Icons.monetization_on_outlined, + 'Price'.tr, + '${controller.feedBack[0]['price']}'), + ], + const Divider(height: 24), + ListTile( + leading: const Icon(Icons.support_agent_outlined, + color: AppColor.primaryColor), + title: Text("Intaleq's Response".tr, + style: AppStyle.title), + subtitle: Text( + // --- تعديل هنا لعرض الرد من الخادم --- + controller.passengerReport?['body'] + ?.toString() ?? + 'Awaiting response...'.tr, + style: AppStyle.subtitle.copyWith(height: 1.5), + ), + ), + ], + ), + ), + + // --- 4. زر الإرسال --- + const SizedBox(height: 24), + MyElevatedButton( + kolor: AppColor.blueColor, + title: 'Submit Complaint'.tr, + onPressed: () async { + // --- تعديل: استدعاء الدالة الجديدة فقط --- + await controller.submitComplaintToServer(); + }, + ), + const SizedBox(height: 24), // مسافة إضافية بالأسفل + ], + ), + ), + // --- عرض مؤشر التحميل فوق كل شيء --- + if (controller.isLoading) + Container( + color: Colors.black.withOpacity(0.5), + child: const MyCircularProgressIndicator(), + ), + ], + ); + }, + ), + ], + ); + } + + // --- ويدجت مساعدة لبناء البطاقات --- + Widget _buildSectionCard({required String title, required Widget child}) { + return Card( + margin: const EdgeInsets.only(bottom: 20), + elevation: 4, + shadowColor: Colors.black.withOpacity(0.1), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(title, style: AppStyle.headTitle.copyWith(fontSize: 18)), + const SizedBox(height: 12), + child, + ], + ), + ), + ); + } + + // --- ويدجت مساعدة لعرض صفوف التفاصيل --- + Widget _buildDetailRow(IconData icon, String label, String value) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 4.0), + child: Row( + children: [ + Icon(icon, color: AppColor.writeColor.withOpacity(0.6), size: 20), + const SizedBox(width: 12), + Text('${label.tr}:', + style: AppStyle.subtitle + .copyWith(color: AppColor.writeColor.withOpacity(0.7))), + const Spacer(), + Text(value, + style: AppStyle.title.copyWith(fontWeight: FontWeight.bold)), + ], + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/views/home/profile/profile_captain.dart +================================================== + +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/controller/profile/captain_profile_controller.dart'; +import 'package:Intaleq/main.dart'; +import 'package:Intaleq/views/widgets/elevated_btn.dart'; +import 'package:Intaleq/views/widgets/my_scafold.dart'; + +import '../../../constant/api_key.dart'; +import '../../widgets/my_textField.dart'; + +class ProfileCaptain extends StatelessWidget { + const ProfileCaptain({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(CaptainProfileController()); + return MyScafolld( + title: 'My Profile'.tr, + body: [ + GetBuilder( + builder: (controller) => Padding( + padding: const EdgeInsets.all(16.0), + child: SingleChildScrollView( + child: Center( + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + CircleAvatar( + radius: Get.width * 0.26, + backgroundColor: Colors.white, + backgroundImage: CachedNetworkImageProvider( + '${AK.serverPHP}/portrate_captain_image/${box.read(BoxName.driverID)}.jpg', + ), + ), + const SizedBox(height: 8.0), + Text( + box.read(BoxName.nameDriver) + + ' ' + + box.read(BoxName.lastNameDriver).toString(), + style: AppStyle.title), + const SizedBox(height: 8.0), + Text('${'Email is'.tr} :${box.read(BoxName.emailDriver)}', + style: AppStyle.title), + const SizedBox(height: 8.0), + Text( + '${'Phone Number is'.tr} :${box.read(BoxName.phoneDriver)}', + style: AppStyle.title), + const SizedBox(height: 8.0), + Text( + '${'Date of Birth is'.tr} :${box.read(BoxName.dobDriver)}', + style: AppStyle.title), + const SizedBox(height: 8.0), + Text('${'Sex is '.tr}:${box.read(BoxName.sexDriver)}', + style: AppStyle.title), + const SizedBox(height: 8.0), + const Divider( + // height: 2, + endIndent: 1, + indent: 2, + thickness: 2, + ), + const SizedBox(height: 8.0), + Text('Car Details'.tr, style: AppStyle.headTitle2), + const SizedBox(height: 8.0), + Text('${'VIN is'.tr} :${box.read(BoxName.vin)}', + style: AppStyle.title), + const SizedBox(height: 8.0), + Text('${'Color is '.tr} :${box.read(BoxName.color)}', + style: AppStyle.title), + const SizedBox(height: 8.0), + Text( + '${'Car Plate is '.tr} :${box.read(BoxName.carPlate)}', + style: AppStyle.title), + const SizedBox(height: 8.0), + Text('${'Make is '.tr}:${box.read(BoxName.make)}', + style: AppStyle.title), + const SizedBox(height: 8.0), + Text('${'Model is'.tr} :${box.read(BoxName.model)}', + style: AppStyle.title), + const SizedBox(height: 8.0), + Text('${'Year is'.tr} :${box.read(BoxName.year)}', + style: AppStyle.title), + const SizedBox(height: 8.0), + Text( + '${'Expiration Date '.tr} :${box.read(BoxName.expirationDate)}', + style: AppStyle.title), + const SizedBox(height: 8.0), + ], + ), + ), + ), + ), + ) + ], + isleading: true, + action: GetBuilder( + builder: (controller) => IconButton( + onPressed: () { + Get.defaultDialog( + title: 'Edit Your data'.tr, + titleStyle: AppStyle.title, + content: SizedBox( + height: Get.height * .4, + child: SingleChildScrollView( + child: Column( + children: [ + MyTextForm( + controller: controller.vin, + hint: 'write vin for your car'.tr, + label: 'VIN'.tr, + type: TextInputType.emailAddress, + ), + MyTextForm( + controller: controller.color, + hint: 'write Color for your car'.tr, + label: 'Color'.tr, + type: TextInputType.emailAddress, + ), + MyTextForm( + controller: controller.make, + hint: 'write Make for your car'.tr, + label: 'Make'.tr, + type: TextInputType.emailAddress, + ), + MyTextForm( + controller: controller.model, + hint: 'write Model for your car'.tr, + label: 'Model'.tr, + type: TextInputType.emailAddress, + ), + MyTextForm( + controller: controller.year, + hint: 'write Year for your car'.tr, + label: 'Year'.tr, + type: TextInputType.number, + ), + MyTextForm( + controller: controller.expirationDate, + hint: 'write Expiration Date for your car'.tr, + label: 'Expiration Date'.tr, + type: TextInputType.datetime), + MyElevatedButton( + title: 'Update'.tr, + onPressed: () => controller.updateFields()) + ], + ), + ), + )); + }, + icon: const Icon(Icons.edit), + ), + )); + } +} + + +================================================== +FILE PATH: ./lib/views/home/profile/taarif_page.dart +================================================== + +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/main.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/views/widgets/my_scafold.dart'; + +class TaarifPage extends StatelessWidget { + const TaarifPage({super.key}); + + @override + Widget build(BuildContext context) { + return MyScafolld(isleading: true, title: 'Tariffs'.tr, body: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 4), + child: ListView( + // mainAxisAlignment: MainAxisAlignment.start, + // crossAxisAlignment: CrossAxisAlignment.stretch, + clipBehavior: Clip.hardEdge, + children: [ + Table( + defaultVerticalAlignment: TableCellVerticalAlignment.middle, + border: TableBorder.symmetric(), + textBaseline: TextBaseline.alphabetic, + children: [ + TableRow( + // decoration: AppStyle.boxDecoration, + children: [ + Text('Minimum fare'.tr, style: AppStyle.title), + box.read(BoxName.countryCode) == 'Jordan' + ? Text('1 ${'JOD'.tr}', style: AppStyle.title) + : Text('20 ${'LE'.tr}', style: AppStyle.title), + ], + ), + TableRow( + children: [ + Text('Maximum fare'.tr, style: AppStyle.title), + box.read(BoxName.countryCode) == 'Jordan' + ? Text('200 ${'JOD'.tr}', style: AppStyle.title) + : Text('15000 ${'LE'.tr}', style: AppStyle.title), + ], + ), + TableRow( + children: [ + Text('Flag-down fee'.tr, style: AppStyle.title), + box.read(BoxName.countryCode) == 'Jordan' + ? Text('0.47 ${'JOD'.tr}', style: AppStyle.title) + : Text('15 ${'LE'.tr}', style: AppStyle.title), + ], + ), + TableRow( + children: [ + box.read(BoxName.countryCode) == 'Jordan' + ? Text('0.05 ${'JOD'.tr}/min and 0.21 ${'JOD'.tr}/km', + style: AppStyle.title) + : Text('1 ${'LE'.tr}/min and 4 ${'LE'.tr}/km', + style: AppStyle.title), + Text('Including Tax'.tr, style: AppStyle.title), + ], + ), + ], + ), + const SizedBox(height: 10), + Text('BookingFee'.tr, style: AppStyle.headTitle2), + const SizedBox(height: 10), + Text('10%', style: AppStyle.title), + const SizedBox(height: 20), + Text('Morning'.tr, style: AppStyle.headTitle2), + const SizedBox(height: 10), + Text( + 'from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)'.tr, + style: AppStyle.title), + const SizedBox(height: 20), + Text('Evening'.tr, style: AppStyle.headTitle2), + const SizedBox(height: 10), + Text( + 'from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)'.tr, + style: AppStyle.title), + const SizedBox(height: 20), + Text('Night'.tr, style: AppStyle.headTitle2), + const SizedBox(height: 10), + Text('from 23:59 till 05:30'.tr, style: AppStyle.title), + ], + ), + ), + ]); + } +} + + +================================================== +FILE PATH: ./lib/views/home/profile/promos_passenger_page.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/controller/home/profile/promos_controller.dart'; +import 'package:Intaleq/views/widgets/my_scafold.dart'; +import 'dart:ui'; // لاستخدامه في الفاصل + +import '../../../constant/colors.dart'; +import '../../../constant/style.dart'; +import '../../widgets/mycircular.dart'; +import 'package:dotted_line/dotted_line.dart'; // ستحتاج لإضافة هذا الباكج + +// ملاحظة: ستحتاج لإضافة هذا الباكج إلى ملف pubspec.yaml الخاص بك +// flutter pub add dotted_line + +// --- الويدجت الرئيسية بالتصميم الجديد --- +class PromosPassengerPage extends StatelessWidget { + const PromosPassengerPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(PromosController()); // نفس منطقك القديم + return MyScafolld( + title: "Today's Promos".tr, // عنوان أكثر جاذبية + isleading: true, + body: [ + GetBuilder( + builder: (controller) { + if (controller.isLoading) { + return const MyCircularProgressIndicator(); + } + if (controller.promoList.isEmpty) { + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.local_offer_outlined, + size: 80, color: Colors.grey), + const SizedBox(height: 16), + Text("No promos available right now.".tr, + style: AppStyle.headTitle2), + Text("Check back later for new offers!".tr, + style: AppStyle.subtitle), + ], + ), + ); + } + return ListView.builder( + padding: const EdgeInsets.all(16.0), + itemCount: controller.promoList.length, + itemBuilder: (BuildContext context, int index) { + final promo = controller.promoList[index]; + // --- استدعاء ويدجت الكوبون الجديدة --- + return _buildPromoTicket(context, promo); + }, + ); + }, + ) + ], + ); + } + + // --- ويدجت بناء كوبون الخصم --- + Widget _buildPromoTicket(BuildContext context, Map promo) { + return Padding( + padding: const EdgeInsets.only(bottom: 20.0), + child: Container( + height: 140, // ارتفاع ثابت للكوبون + decoration: BoxDecoration( + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.15), + blurRadius: 12, + offset: const Offset(0, 6), + ), + ], + ), + child: ClipPath( + clipper: TicketClipper(), // Clipper مخصص لرسم شكل التذكرة + child: Container( + color: AppColor.secondaryColor, + child: Row( + children: [ + // --- الجزء الأيسر: تفاصيل العرض --- + Expanded( + flex: 3, + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + promo['description'], + style: AppStyle.headTitle.copyWith(fontSize: 18), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + const Spacer(), + Row( + children: [ + const Icon(Icons.calendar_today_outlined, + size: 14, color: Colors.grey), + const SizedBox(width: 6), + Text( + '${'Valid Until:'.tr} ${promo['validity_end_date']}', + style: AppStyle.subtitle + .copyWith(fontSize: 12, color: Colors.grey), + ), + ], + ), + ], + ), + ), + ), + // --- الفاصل المنقط --- + SizedBox( + height: 110, + child: DottedLine( + direction: Axis.vertical, + lineThickness: 2.0, + dashLength: 8.0, + dashColor: AppColor.writeColor.withOpacity(0.2), + dashGapLength: 4.0, + ), + ), + // --- الجزء الأيمن: كود الخصم وزر النسخ --- + Expanded( + flex: 2, + child: GestureDetector( + onTap: () { + // --- نفس منطقك القديم للنسخ --- + Clipboard.setData( + ClipboardData(text: promo['promo_code'])); + Get.snackbar( + 'Promo Copied!'.tr, + '${'Code'.tr} ${promo['promo_code']} ${'copied to clipboard'.tr}', + snackPosition: SnackPosition.BOTTOM, + backgroundColor: AppColor.greenColor, + colorText: Colors.white, + ); + }, + child: Container( + color: AppColor.primaryColor.withOpacity(0.1), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + 'CODE'.tr, + style: AppStyle.subtitle.copyWith( + color: AppColor.primaryColor, letterSpacing: 2), + ), + const SizedBox(height: 8), + Text( + promo['promo_code'], + style: AppStyle.headTitle.copyWith( + fontSize: 24, color: AppColor.primaryColor), + ), + const SizedBox(height: 12), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.copy, + size: 14, color: AppColor.primaryColor), + const SizedBox(width: 4), + Text('Copy'.tr, + style: AppStyle.subtitle + .copyWith(color: AppColor.primaryColor)), + ], + ), + ], + ), + ), + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +// --- كلاس مخصص لرسم شكل التذكرة --- +class TicketClipper extends CustomClipper { + @override + Path getClip(Size size) { + Path path = Path(); + + path.lineTo(0.0, size.height); + path.lineTo(size.width, size.height); + path.lineTo(size.width, 0.0); + + double radius = 10; + path.addOval( + Rect.fromCircle(center: Offset(0, size.height / 2), radius: radius)); + path.addOval(Rect.fromCircle( + center: Offset(size.width, size.height / 2), radius: radius)); + + return path; + } + + @override + bool shouldReclip(CustomClipper oldClipper) => false; +} + + +================================================== +FILE PATH: ./lib/views/home/profile/passenger_profile_page.dart +================================================== + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/colors.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/controller/profile/profile_controller.dart'; +import 'package:Intaleq/main.dart'; +import 'package:Intaleq/views/auth/login_page.dart'; +import 'package:Intaleq/views/widgets/elevated_btn.dart'; +import 'package:Intaleq/views/widgets/my_textField.dart'; +import 'package:Intaleq/views/widgets/mycircular.dart'; + +import '../../../controller/auth/login_controller.dart'; +import '../../../controller/functions/log_out.dart'; + +class PassengerProfilePage extends StatelessWidget { + PassengerProfilePage({super.key}); + + final LogOutController logOutController = Get.put(LogOutController()); + + @override + Widget build(BuildContext context) { + Get.put(ProfileController()); + + return Scaffold( + backgroundColor: Colors.grey[100], + appBar: AppBar( + title: Text('My Profile'.tr, + style: const TextStyle(fontWeight: FontWeight.bold)), + backgroundColor: Colors.grey[100], + elevation: 0, + centerTitle: true, + ), + body: GetBuilder( + builder: (controller) { + if (controller.isloading) { + return const MyCircularProgressIndicator(); + } + return ListView( + padding: + const EdgeInsets.symmetric(horizontal: 16.0, vertical: 10.0), + children: [ + _buildProfileHeader(controller), + const SizedBox(height: 24), + _buildSectionCard( + 'Personal Information'.tr, + [ + _buildProfileTile( + icon: Icons.person_outline, + color: Colors.blue, + title: 'Name'.tr, + subtitle: + '${controller.prfoileData['first_name'] ?? ''} ${controller.prfoileData['last_name'] ?? ''}', + onTap: () => + controller.updatField('first_name', TextInputType.name), + ), + _buildProfileTile( + icon: Icons.wc_outlined, + color: Colors.pink, + title: 'Gender'.tr, + subtitle: controller.prfoileData['gender']?.toString() ?? + 'Not set'.tr, + onTap: () => _showGenderDialog(controller), + ), + _buildProfileTile( + icon: Icons.school_outlined, + color: Colors.orange, + title: 'Education'.tr, + subtitle: controller.prfoileData['education']?.toString() ?? + 'Not set'.tr, + onTap: () => _showEducationDialog(controller), + ), + ], + ), + const SizedBox(height: 24), + _buildSectionCard( + 'Work & Contact'.tr, + [ + _buildProfileTile( + icon: Icons.work_outline, + color: Colors.green, + title: 'Employment Type'.tr, + subtitle: + controller.prfoileData['employmentType']?.toString() ?? + 'Not set'.tr, + onTap: () => controller.updatField( + 'employmentType', TextInputType.name), + ), + _buildProfileTile( + icon: Icons.favorite_border, + color: Colors.purple, + title: 'Marital Status'.tr, + subtitle: + controller.prfoileData['maritalStatus']?.toString() ?? + 'Not set'.tr, + onTap: () => controller.updatField( + 'maritalStatus', TextInputType.name), + ), + _buildProfileTile( + icon: Icons.sos_outlined, + color: Colors.red, + title: 'SOS Phone'.tr, + subtitle: controller.prfoileData['sosPhone']?.toString() ?? + 'Not set'.tr, + onTap: () async { + await controller.updatField( + 'sosPhone', TextInputType.phone); + box.write(BoxName.sosPhonePassenger, + controller.prfoileData['sosPhone']); + }, + ), + ], + ), + const SizedBox(height: 32), + _buildAccountActions(context, logOutController), + ], + ); + }, + ), + ); + } + + Widget _buildProfileHeader(ProfileController controller) { + String fullName = + '${controller.prfoileData['first_name'] ?? ''} ${controller.prfoileData['last_name'] ?? ''}'; + String initials = (fullName.isNotEmpty && fullName.contains(" ")) + ? fullName.split(" ").map((e) => e.isNotEmpty ? e[0] : "").join() + : (fullName.isNotEmpty ? fullName[0] : ""); + + // Logic to hide email if it contains 'intaleqapp.com' + String email = box.read(BoxName.email) ?? ''; + if (email.contains('intaleqapp.com')) { + email = ''; // Clear the email if it contains the domain + } + + return Center( + child: Column( + children: [ + CircleAvatar( + radius: 50, + backgroundColor: AppColor.primaryColor.withOpacity(0.2), + child: Text( + initials, + style: + const TextStyle(fontSize: 40, color: AppColor.primaryColor), + ), + ), + const SizedBox(height: 12), + Text( + fullName, + style: const TextStyle(fontSize: 22, fontWeight: FontWeight.bold), + ), + if (email + .isNotEmpty) // Only show the Text widget if the email is not empty + Text( + email, + style: TextStyle(fontSize: 16, color: Colors.grey[600]), + ), + ], + ), + ); + } + + Widget _buildSectionCard(String title, List children) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.only(left: 8.0, bottom: 8.0), + child: Text( + title, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: Colors.grey[700]), + ), + ), + Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + ), + child: Column( + children: children, + ), + ), + ], + ); + } + + Widget _buildProfileTile({ + required IconData icon, + required Color color, + required String title, + required String subtitle, + required VoidCallback onTap, + }) { + return ListTile( + onTap: onTap, + leading: Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: color.withOpacity(0.1), + borderRadius: BorderRadius.circular(10), + ), + child: Icon(icon, color: color, size: 24), + ), + title: Text(title, style: const TextStyle(fontWeight: FontWeight.w500)), + subtitle: Text(subtitle, style: TextStyle(color: Colors.grey[600])), + trailing: + Icon(Icons.arrow_forward_ios, size: 16, color: Colors.grey[400]), + ); + } + + Widget _buildAccountActions( + BuildContext context, LogOutController logOutController) { + return Column( + children: [ + SizedBox( + width: double.infinity, + child: TextButton.icon( + icon: const Icon(Icons.logout), + label: Text('Sign Out'.tr), + style: TextButton.styleFrom( + foregroundColor: Colors.blueGrey, + padding: const EdgeInsets.symmetric(vertical: 12), + ), + onPressed: () { + logOutController.logOutPassenger(); + }, + ), + ), + const SizedBox(height: 8), + SizedBox( + width: double.infinity, + child: TextButton.icon( + icon: const Icon(Icons.delete_forever_outlined), + label: Text('Delete My Account'.tr), + style: TextButton.styleFrom( + foregroundColor: Colors.red, + padding: const EdgeInsets.symmetric(vertical: 12), + ), + onPressed: () => + _showDeleteAccountDialog(context, logOutController), + ), + ), + ], + ); + } + + void _showGenderDialog(ProfileController controller) { + Get.defaultDialog( + title: 'Update Gender'.tr, + content: Column( + children: [ + GenderPicker(), + const SizedBox(height: 16), + MyElevatedButton( + title: 'Update'.tr, + onPressed: () { + controller.updateColumn({ + 'id': controller.prfoileData['id'].toString(), + 'gender': controller.gender, + }); + Get.back(); + }, + ) + ], + ), + ); + } + + void _showEducationDialog(ProfileController controller) { + Get.defaultDialog( + title: 'Update Education'.tr, + content: Column( + children: [ + EducationDegreePicker(), + const SizedBox(height: 16), + MyElevatedButton( + title: 'Update'.tr, + onPressed: () { + controller.updateColumn({ + 'id': controller.prfoileData['id'].toString(), + 'education': controller.selectedDegree, + }); + Get.back(); + }, + ), + ], + ), + ); + } + + void _showDeleteAccountDialog( + BuildContext context, LogOutController logOutController) { + Get.defaultDialog( + title: 'Delete My Account'.tr, + middleText: 'Are you sure? This action cannot be undone.'.tr, + content: Form( + key: logOutController.formKey1, + child: MyTextForm( + controller: logOutController.emailTextController, + label: 'Confirm your Email'.tr, + hint: 'Type your Email'.tr, + type: TextInputType.emailAddress, + ), + ), + confirm: MyElevatedButton( + title: 'Delete Permanently'.tr, + kolor: AppColor.redColor, + onPressed: () async { + await logOutController.deletePassengerAccount(); + }, + ), + cancel: TextButton( + child: Text('Cancel'.tr), + onPressed: () { + logOutController.emailTextController.clear(); + Get.back(); + }, + ), + ); + } +} + +// --- Helper Widgets for Pickers --- + +class GenderPicker extends StatelessWidget { + final ProfileController controller = Get.find(); + final List genderOptions = ['Male'.tr, 'Female'.tr, 'Other'.tr]; + + GenderPicker({super.key}); + + @override + Widget build(BuildContext context) { + return SizedBox( + height: 150, + child: CupertinoPicker( + itemExtent: 40.0, + onSelectedItemChanged: (int index) { + controller.setGender(genderOptions[index]); + }, + children: genderOptions.map((String value) { + return Center(child: Text(value)); + }).toList(), + ), + ); + } +} + +class EducationDegreePicker extends StatelessWidget { + final ProfileController controller = Get.find(); + final List degreeOptions = [ + 'High School Diploma'.tr, + 'Associate Degree'.tr, + "Bachelor's Degree".tr, + "Master's Degree".tr, + 'Doctoral Degree'.tr, + ]; + + EducationDegreePicker({super.key}); + + @override + Widget build(BuildContext context) { + return SizedBox( + height: 180, + child: CupertinoPicker( + itemExtent: 40.0, + onSelectedItemChanged: (int index) { + controller.setDegree(degreeOptions[index]); + }, + children: degreeOptions.map((String value) { + return Center(child: Text(value)); + }).toList(), + ), + ); + } +} + +// NOTE: The CountryPicker and CountryPickerFromSetting widgets were not part of the main +// profile page UI, so they are excluded here to keep the file focused. +// If they are needed elsewhere, they should be moved to their own files. + + +================================================== +FILE PATH: ./lib/views/home/profile/order_history.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/views/widgets/my_scafold.dart'; +import 'package:Intaleq/views/widgets/mycircular.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; + +import '../../../constant/colors.dart'; +import '../../../controller/functions/launch.dart'; +import '../../../controller/home/profile/order_history_controller.dart'; + +// --- الويدجت الرئيسية بالتصميم الجديد --- +class OrderHistory extends StatelessWidget { + const OrderHistory({super.key}); + + @override + Widget build(BuildContext context) { + // نفس منطق استدعاء الكنترولر + Get.put(OrderHistoryController()); + + return MyScafolld( + title: 'Order History'.tr, + isleading: true, + body: [ + GetBuilder( + builder: (controller) { + // --- نفس منطق التحميل والحالة الفارغة --- + if (controller.isloading) { + return const MyCircularProgressIndicator(); + } + if (controller.orderHistoryListPassenger.isEmpty) { + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.map_outlined, + size: 80, color: AppColor.writeColor.withOpacity(0.4)), + const SizedBox(height: 16), + Text('No trip history found'.tr, + style: AppStyle.headTitle2), + Text("Your past trips will appear here.".tr, + style: AppStyle.subtitle), + ], + ), + ); + } + // --- استخدام ListView.separated لفصل البطاقات --- + return ListView.separated( + padding: const EdgeInsets.all(16.0), + itemCount: controller.orderHistoryListPassenger.length, + separatorBuilder: (context, index) => const SizedBox(height: 16), + itemBuilder: (BuildContext context, int index) { + final ride = controller.orderHistoryListPassenger[index]; + // --- استدعاء ويدجت البطاقة الجديدة --- + return _buildHistoryCard(context, ride); + }, + ); + }, + ) + ], + ); + } + + // --- ويدجت بناء بطاقة الرحلة --- + Widget _buildHistoryCard(BuildContext context, Map ride) { + // --- نفس منطق حساب إحداثيات الخريطة --- + final LatLng startLocation = LatLng( + double.parse(ride['start_location'].toString().split(',')[0]), + double.parse(ride['start_location'].toString().split(',')[1]), + ); + final LatLng endLocation = LatLng( + double.parse(ride['end_location'].toString().split(',')[0]), + double.parse(ride['end_location'].toString().split(',')[1]), + ); + final LatLngBounds bounds = LatLngBounds( + northeast: LatLng( + startLocation.latitude > endLocation.latitude + ? startLocation.latitude + : endLocation.latitude, + startLocation.longitude > endLocation.longitude + ? startLocation.longitude + : endLocation.longitude, + ), + southwest: LatLng( + startLocation.latitude < endLocation.latitude + ? startLocation.latitude + : endLocation.latitude, + startLocation.longitude < endLocation.longitude + ? startLocation.longitude + : endLocation.longitude, + ), + ); + + return InkWell( + // --- نفس دالة onTap القديمة --- + onTap: () { + String mapUrl = + 'https://www.google.com/maps/dir/${ride['start_location']}/${ride['end_location']}/'; + showInBrowser(mapUrl); + }, + borderRadius: BorderRadius.circular(16), + child: Container( + decoration: BoxDecoration( + color: AppColor.secondaryColor, + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.15), + blurRadius: 8, + offset: const Offset(0, 4), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // --- 1. قسم الخريطة --- + ClipRRect( + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(16), + topRight: Radius.circular(16), + ), + child: SizedBox( + height: 150, // ارتفاع ثابت للخريطة + child: AbsorbPointer( + // لمنع التفاعل المباشر مع الخريطة داخل القائمة + child: GoogleMap( + initialCameraPosition: + CameraPosition(target: startLocation, zoom: 12), + // --- نفس منطق الخريطة والخطوط --- + onMapCreated: (GoogleMapController controller) { + controller.animateCamera( + CameraUpdate.newLatLngBounds(bounds, 60)); + }, + polylines: { + Polyline( + polylineId: const PolylineId('route'), + points: [startLocation, endLocation], + color: AppColor.primaryColor, + width: 4, + ), + }, + markers: { + Marker( + markerId: const MarkerId('start'), + position: startLocation), + Marker( + markerId: const MarkerId('end'), + position: endLocation), + }, + mapToolbarEnabled: false, + zoomControlsEnabled: false, + ), + ), + ), + ), + // --- 2. قسم تفاصيل الرحلة --- + Padding( + padding: const EdgeInsets.all(12.0), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + '${ride['date']} - ${ride['time']}', + style: AppStyle.subtitle.copyWith( + color: AppColor.writeColor.withOpacity(0.7)), + ), + // --- ويدجت جديدة لعرض حالة الرحلة --- + _buildStatusChip(ride['status']), + ], + ), + const Divider(height: 20), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('Total Price'.tr, + style: AppStyle.title.copyWith(fontSize: 16)), + Text( + '${ride['price']} ${'SYP'.tr}', + style: AppStyle.headTitle.copyWith( + fontSize: 20, color: AppColor.primaryColor), + ), + ], + ), + ], + ), + ), + ], + ), + ), + ); + } + + // --- ويدجت مساعدة لعرض حالة الرحلة بشكل أنيق --- + Widget _buildStatusChip(String status) { + Color chipColor; + IconData chipIcon; + + // --- نفس منطق تحديد اللون --- + if (status == 'Canceled'.tr) { + chipColor = AppColor.redColor; + chipIcon = Icons.cancel_outlined; + } else if (status == 'Finished'.tr) { + chipColor = AppColor.greenColor; + chipIcon = Icons.check_circle_outline; + } else { + chipColor = AppColor.yellowColor; + chipIcon = Icons.hourglass_empty_rounded; + } + + return Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + decoration: BoxDecoration( + color: chipColor.withOpacity(0.15), + borderRadius: BorderRadius.circular(20), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(chipIcon, color: chipColor, size: 16), + const SizedBox(width: 6), + Text( + status, + style: AppStyle.subtitle.copyWith( + color: chipColor, fontWeight: FontWeight.bold, fontSize: 12), + ), + ], + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/views/home/profile/budgets_ads.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/colors.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/controller/payment/payment_controller.dart'; + +import '../../../constant/box_name.dart'; +import '../../../main.dart'; +import '../my_wallet/passenger_wallet.dart'; + +class PointsCaptain extends StatelessWidget { + PaymentController paymentController = Get.put(PaymentController()); + + PointsCaptain({ + super.key, + required this.kolor, + required this.countPoint, + required this.pricePoint, + }); + final Color kolor; + final String countPoint; + double pricePoint; + + @override + Widget build(BuildContext context) { + return InkWell( + onTap: () async { + Get.to(() => const PassengerWallet()); + paymentController.changePromoSheetDialogue(); + }, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 3, vertical: 8), + child: Container( + width: Get.width * .21, + height: Get.width * .29, + margin: const EdgeInsets.all(4), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + kolor.withOpacity(0.3), + kolor, + kolor.withOpacity(0.7), + kolor, + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + border: Border.all(color: AppColor.accentColor), + borderRadius: BorderRadius.circular(12), + shape: BoxShape.rectangle, + ), + child: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Text( + '$countPoint ${'LE'.tr}', + style: AppStyle.subtitle, + ), + Text( + '$pricePoint ${box.read(BoxName.countryCode) == 'Jordan' ? 'JOD'.tr : 'LE'.tr}', + style: AppStyle.title, + textAlign: TextAlign.center, + ), + ], + ), + )), + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/views/home/my_wallet/payment_history_passenger_page.dart +================================================== + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/colors.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/controller/payment/passenger_wallet_history_controller.dart'; +import 'package:Intaleq/views/widgets/my_scafold.dart'; +import 'package:Intaleq/views/widgets/mycircular.dart'; + +class PaymentHistoryPassengerPage extends StatelessWidget { + const PaymentHistoryPassengerPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(PassengerWalletHistoryController()); + return MyScafolld( + title: 'Payment History'.tr, + body: [ + GetBuilder( + builder: (controller) => controller.isLoading + ? const MyCircularProgressIndicator() // iOS-style loading indicator + : controller.archive.isEmpty + ? Center( + child: Text( + 'No wallet record found'.tr, + style: AppStyle.title, + ), + ) + : CupertinoListSection.insetGrouped( + children: List.generate( + controller.archive.length, + (index) { + var list = controller.archive[index]; + return CupertinoListTile( + backgroundColor: double.parse(list['balance']) < 0 + ? AppColor.redColor.withOpacity(.2) + : AppColor.greenColor.withOpacity(.2), + title: Text( + list['balance'], + style: AppStyle.title.copyWith( + color: CupertinoColors.black, + ), + ), + additionalInfo: Text( + list['created_at'], + style: AppStyle.title.copyWith( + fontSize: 12, + color: CupertinoColors.systemGrey, + ), + ), + padding: const EdgeInsets.symmetric( + vertical: 8, horizontal: 16), + ); + }, + ), + ), + ) + ], + isleading: true); + } +} + + +================================================== +FILE PATH: ./lib/views/home/my_wallet/payment_screen_sham.dart +================================================== + +import 'dart:async'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:get/get.dart'; +import 'package:intl/intl.dart'; +import '../../../constant/box_name.dart'; +import '../../../constant/links.dart'; +import '../../../controller/functions/crud.dart'; +import '../../../main.dart'; + +// --- خدمة الدفع (نفس المنطق السابق) --- +class PaymentService { + final String _baseUrl = "${AppLink.paymentServer}/ride/shamcash/passenger"; + + Future createInvoice({required double amount}) async { + final url = "$_baseUrl/create_invoice.php"; + try { + final response = await CRUD().postWallet( + link: url, + payload: { + 'passengerID': box.read(BoxName.passengerID), + 'amount': amount.toString(), + }, + ).timeout(const Duration(seconds: 15)); + + if (response != 'failure') { + final data = response; + if (data['status'] == 'success' && data['invoice_number'] != null) { + return data['invoice_number'].toString(); + } + } + return null; + } catch (e) { + debugPrint("Create Invoice Error: $e"); + return null; + } + } + + Future checkInvoiceStatus(String invoiceNumber) async { + final url = "$_baseUrl/check_status.php"; + try { + final response = await CRUD().postWallet(link: url, payload: { + 'invoice_number': invoiceNumber, + }).timeout(const Duration(seconds: 10)); + + if (response != 'failure') { + final data = response; + return data['status'] == 'success' && + data['invoice_status'] == 'completed'; + } + return false; + } catch (e) { + return false; + } + } +} + +enum PaymentStatus { + creatingInvoice, + waitingForPayment, + paymentSuccess, + paymentTimeout, + paymentError +} + +class PaymentScreenSmsProvider extends StatefulWidget { + final double amount; + final String providerName; + final String providerLogo; + final String qrImagePath; + + const PaymentScreenSmsProvider({ + super.key, + required this.amount, + this.providerName = 'شام كاش', + this.providerLogo = 'assets/images/shamCash.png', + this.qrImagePath = 'assets/images/shamcashsend.png', + }); + + @override + _PaymentScreenSmsProviderState createState() => + _PaymentScreenSmsProviderState(); +} + +class _PaymentScreenSmsProviderState extends State + with SingleTickerProviderStateMixin { + final PaymentService _paymentService = PaymentService(); + Timer? _pollingTimer; + PaymentStatus _status = PaymentStatus.creatingInvoice; + String? _invoiceNumber; + + // العنوان الثابت للدفع (المستخرج من الصورة) + final String _paymentAddress = "80f23afe40499b02f49966c3340ae0fc"; + + // متحكم الأنيميشن للوميض + late AnimationController _blinkController; + late Animation _colorAnimation; + late Animation _shadowAnimation; + + @override + void initState() { + super.initState(); + // إعداد الأنيميشن (وميض أحمر) + _blinkController = AnimationController( + duration: const Duration(milliseconds: 800), + vsync: this, + )..repeat(reverse: true); // يكرر الحركة ذهاباً وإياباً + + _colorAnimation = ColorTween( + begin: Colors.red.shade700, + end: Colors.red.shade100, + ).animate(_blinkController); + + _shadowAnimation = Tween(begin: 2.0, end: 15.0).animate( + CurvedAnimation(parent: _blinkController, curve: Curves.easeInOut), + ); + + _createAndPollInvoice(); + } + + @override + void dispose() { + _pollingTimer?.cancel(); + _blinkController.dispose(); + super.dispose(); + } + + void _createAndPollInvoice() async { + setState(() => _status = PaymentStatus.creatingInvoice); + final invoiceNumber = + await _paymentService.createInvoice(amount: widget.amount); + + if (invoiceNumber != null && mounted) { + setState(() { + _invoiceNumber = invoiceNumber; + _status = PaymentStatus.waitingForPayment; + }); + _startPolling(invoiceNumber); + } else if (mounted) { + setState(() => _status = PaymentStatus.paymentError); + } + } + + void _startPolling(String invoiceNumber) { + const timeoutDuration = Duration(minutes: 5); + var elapsed = Duration.zero; + + _pollingTimer = Timer.periodic(const Duration(seconds: 5), (timer) async { + elapsed += const Duration(seconds: 5); + if (elapsed >= timeoutDuration) { + timer.cancel(); + if (mounted) setState(() => _status = PaymentStatus.paymentTimeout); + return; + } + final isCompleted = + await _paymentService.checkInvoiceStatus(invoiceNumber); + if (isCompleted && mounted) { + timer.cancel(); + setState(() => _status = PaymentStatus.paymentSuccess); + } + }); + } + + Future _onPopInvoked() async { + if (_status == PaymentStatus.waitingForPayment) { + final shouldPop = await showDialog( + context: context, + builder: (context) => AlertDialog( + title: const Text('إلغاء العملية؟', textAlign: TextAlign.right), + content: const Text('الخروج الآن سيؤدي لإلغاء متابعة عملية الدفع.', + textAlign: TextAlign.right), + actions: [ + TextButton( + onPressed: () => Navigator.of(context).pop(false), + child: const Text('البقاء')), + TextButton( + onPressed: () => Navigator.of(context).pop(true), + child: const Text('خروج', style: TextStyle(color: Colors.red))), + ], + ), + ); + return shouldPop ?? false; + } + return true; + } + + @override + Widget build(BuildContext context) { + return WillPopScope( + onWillPop: _onPopInvoked, + child: Scaffold( + backgroundColor: Colors.grey[50], + appBar: AppBar( + title: Text("دفع عبر ${widget.providerName}"), + centerTitle: true, + elevation: 0, + backgroundColor: Colors.white, + foregroundColor: Colors.black, + ), + body: SafeArea( + child: Padding( + padding: const EdgeInsets.all(20.0), + child: Center(child: _buildContentByStatus()), + ), + ), + ), + ); + } + + Widget _buildContentByStatus() { + switch (_status) { + case PaymentStatus.creatingInvoice: + return const Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + CircularProgressIndicator(), + SizedBox(height: 20), + Text("جاري إنشاء رقم البيان...", style: TextStyle(fontSize: 16)), + ], + ); + case PaymentStatus.waitingForPayment: + return _buildWaitingForPaymentUI(); + case PaymentStatus.paymentSuccess: + return _buildSuccessUI(); + case PaymentStatus.paymentTimeout: + case PaymentStatus.paymentError: + return _buildErrorUI(); + } + } + + Widget _buildWaitingForPaymentUI() { + final currencyFormat = NumberFormat.decimalPattern('ar_SY'); + final invoiceText = _invoiceNumber ?? '---'; + + return SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + // 1. المبلغ + Container( + width: double.infinity, + padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 15), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [Colors.blue.shade800, Colors.blue.shade600]), + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: Colors.blue.withOpacity(0.25), + blurRadius: 10, + offset: const Offset(0, 5)) + ], + ), + child: Column( + children: [ + const Text("المبلغ المطلوب", + style: TextStyle(color: Colors.white70, fontSize: 14)), + const SizedBox(height: 5), + Text("${currencyFormat.format(widget.amount)} ل.س", + style: const TextStyle( + color: Colors.white, + fontSize: 28, + fontWeight: FontWeight.bold)), + ], + ), + ), + const SizedBox(height: 25), + + // 2. رقم البيان (هام جداً - وميض أحمر) + AnimatedBuilder( + animation: _blinkController, + builder: (context, child) { + return Container( + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(16), + border: Border.all( + color: _colorAnimation.value ?? Colors.red, + width: 3.0, // إطار سميك + ), + boxShadow: [ + BoxShadow( + color: (_colorAnimation.value ?? Colors.red) + .withOpacity(0.4), + blurRadius: _shadowAnimation.value, + spreadRadius: 2, + ) + ], + ), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.warning_rounded, + color: Colors.red.shade800, size: 28), + const SizedBox(width: 8), + Text( + "هام جداً: لا تنسَ!", + style: TextStyle( + color: Colors.red.shade900, + fontWeight: FontWeight.bold, + fontSize: 18), + ), + ], + ), + const SizedBox(height: 10), + const Text( + "يجب نسخ (رقم البيان) هذا ووضعه في تطبيق شام كاش لضمان نجاح العملية.", + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 15, + color: Colors.black87, + fontWeight: FontWeight.w600, + ), + ), + const SizedBox(height: 15), + InkWell( + onTap: () { + Clipboard.setData(ClipboardData(text: invoiceText)); + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: const Text("تم نسخ رقم البيان ✅", + textAlign: TextAlign.center), + backgroundColor: Colors.red.shade700)); + }, + borderRadius: BorderRadius.circular(12), + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 15, vertical: 12), + decoration: BoxDecoration( + color: Colors.red.shade50, + borderRadius: BorderRadius.circular(12), + border: Border.all( + color: Colors.red.shade200, width: 1)), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text("رقم البيان (Invoice No)", + style: TextStyle( + fontSize: 12, color: Colors.grey)), + Text(invoiceText, + style: TextStyle( + fontSize: 24, + fontWeight: FontWeight.bold, + letterSpacing: 2.0, + color: Colors.red.shade900)), + ], + ), + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: Colors.red.shade100, + borderRadius: BorderRadius.circular(8), + ), + child: Icon(Icons.copy_rounded, + color: Colors.red.shade900, size: 24), + ), + ], + ), + ), + ), + ], + ), + ); + }, + ), + const SizedBox(height: 25), + + // 3. عنوان الدفع (اختياري / عادي) + Container( + padding: const EdgeInsets.symmetric(horizontal: 15, vertical: 15), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + border: Border.all(color: Colors.grey.shade300), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text("عنوان الدفع (Payment Address)", + style: TextStyle(fontSize: 12, color: Colors.grey)), + const SizedBox(height: 8), + InkWell( + onTap: () { + Clipboard.setData(ClipboardData(text: _paymentAddress)); + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: const Text("تم نسخ عنوان الدفع ✅", + textAlign: TextAlign.center), + backgroundColor: Colors.green.shade600)); + }, + child: Row( + children: [ + Expanded( + child: Text(_paymentAddress, + style: const TextStyle( + fontSize: 14, + fontWeight: FontWeight.bold, + fontFamily: 'Courier', + color: Colors.black87, + ), + overflow: TextOverflow.ellipsis), + ), + const SizedBox(width: 8), + const Icon(Icons.copy, size: 18, color: Colors.grey), + ], + ), + ), + ], + ), + ), + const SizedBox(height: 30), + + // 4. QR Code + const Text("أو امسح الرمز للدفع", + style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold)), + const SizedBox(height: 10), + GestureDetector( + onTap: () { + showDialog( + context: context, + builder: (ctx) => Dialog( + backgroundColor: Colors.transparent, + child: InteractiveViewer( + child: Image.asset(widget.qrImagePath)))); + }, + child: Container( + padding: const EdgeInsets.all(10), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(15), + border: Border.all(color: Colors.grey.shade300)), + child: Image.asset(widget.qrImagePath, + width: 150, + height: 150, + fit: BoxFit.contain, + errorBuilder: (c, o, s) => const Icon(Icons.qr_code_2, + size: 100, color: Colors.grey)), + ), + ), + const SizedBox(height: 30), + const LinearProgressIndicator(backgroundColor: Colors.white), + const SizedBox(height: 10), + const Text("جاري التحقق من الدفع تلقائياً...", + style: TextStyle(color: Colors.grey, fontSize: 12)), + const SizedBox(height: 20), + ], + ), + ); + } + + Widget _buildSuccessUI() { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.verified_rounded, color: Colors.green, size: 100), + const SizedBox(height: 20), + const Text("تم الدفع بنجاح!", + style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold)), + const SizedBox(height: 40), + SizedBox( + width: double.infinity, + child: ElevatedButton( + style: ElevatedButton.styleFrom( + backgroundColor: Colors.green, + foregroundColor: Colors.white, + padding: const EdgeInsets.symmetric(vertical: 16)), + onPressed: () => Navigator.of(context).pop(), + child: const Text("متابعة", style: TextStyle(fontSize: 18)), + ), + ), + ], + ); + } + + Widget _buildErrorUI() { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.error_outline_rounded, color: Colors.red.shade400, size: 80), + const SizedBox(height: 20), + Text( + _status == PaymentStatus.paymentTimeout + ? "انتهى الوقت" + : "لم يتم التحقق", + style: const TextStyle(fontSize: 22, fontWeight: FontWeight.bold)), + const SizedBox(height: 15), + const Padding( + padding: EdgeInsets.symmetric(horizontal: 30), + child: Text("لم يصلنا إشعار الدفع خلال الوقت المحدد.", + textAlign: TextAlign.center, + style: TextStyle(color: Colors.grey))), + const SizedBox(height: 40), + SizedBox( + width: double.infinity, + child: ElevatedButton.icon( + style: ElevatedButton.styleFrom( + padding: const EdgeInsets.symmetric(vertical: 15)), + onPressed: _createAndPollInvoice, + icon: const Icon(Icons.refresh), + label: const Text("حاول مرة أخرى"), + ), + ), + const SizedBox(height: 15), + TextButton( + onPressed: () => Navigator.of(context).pop(), + child: const Text("إلغاء", style: TextStyle(color: Colors.grey))) + ], + ); + } +} + + +================================================== +FILE PATH: ./lib/views/home/my_wallet/passenger_wallet.dart +================================================== + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/views/home/my_wallet/payment_history_passenger_page.dart'; +import 'dart:ui'; // لاستخدام تأثيرات متقدمة + +import '../../../constant/box_name.dart'; +import '../../../constant/colors.dart'; +import '../../../constant/info.dart'; +import '../../../constant/style.dart'; +import '../../../controller/functions/toast.dart'; +import '../../../controller/home/payment/credit_card_controller.dart'; +import '../../../controller/payment/payment_controller.dart'; +import '../../../main.dart'; +import '../../widgets/elevated_btn.dart'; +import '../../widgets/my_scafold.dart'; +import 'passenger_wallet_dialoge.dart'; + +// --- الويدجت الرئيسية بالتصميم الجديد --- +class PassengerWallet extends StatelessWidget { + const PassengerWallet({super.key}); + + @override + Widget build(BuildContext context) { + // نفس منطق استدعاء الكنترولرز + Get.put(PaymentController()); + Get.put(CreditCardController()); + + return MyScafolld( + title: 'My Balance'.tr, + isleading: true, + body: [ + // استخدام Stack فقط لعرض الـ Dialog فوق المحتوى عند الحاجة + Stack( + children: [ + // استخدام Column لتنظيم المحتوى بشكل أفضل + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + const SizedBox(height: 16), + + // --- 1. بطاقة المحفظة العصرية --- + _buildModernWalletCard(), + + const SizedBox(height: 32), + Text("Actions".tr, + style: AppStyle.title.copyWith( + color: AppColor.writeColor.withOpacity(0.6))), + const Divider(height: 24), + + // --- 2. قائمة الخيارات المنظمة --- + _buildActionTile( + icon: Icons.add_card_rounded, + title: 'Top up Balance'.tr, + subtitle: 'Add funds using our secure methods'.tr, + onTap: () => + showPaymentBottomSheet(context), // نفس دالتك القديمة + ), + _buildActionTile( + icon: Icons.history_rounded, + title: 'Payment History'.tr, + subtitle: 'View your past transactions'.tr, + onTap: () => Get.to( + () => const PaymentHistoryPassengerPage(), + transition: Transition.rightToLeftWithFade), + ), + _buildActionTile( + icon: Icons.phone_iphone_rounded, + title: 'Set Phone Number'.tr, + subtitle: 'Link a phone number for transfers'.tr, + onTap: () => _showWalletPhoneDialog(context, + Get.find()), // نفس دالتك القديمة + ), + ], + ), + ), + + // --- عرض الـ Dialog بنفس طريقتك القديمة --- + const PassengerWalletDialog(), + ], + ), + ], + ); + } + + // --- ويدجت مساعدة لبناء بطاقة المحفظة --- + Widget _buildModernWalletCard() { + return GetBuilder( + builder: (paymentController) { + return Container( + width: double.infinity, + height: Get.height * 0.25, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(20), + gradient: const LinearGradient( + colors: [ + AppColor.primaryColor, + Color(0xFF1E3A8A) + ], // تدرج لوني أنيق + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + boxShadow: [ + BoxShadow( + color: AppColor.primaryColor.withOpacity(0.3), + blurRadius: 25, + offset: const Offset(0, 10), + ), + ], + ), + child: Stack( + children: [ + // --- عنصر تزييني (شكل موجة) --- + Positioned( + right: -100, + bottom: -100, + child: Icon( + Icons.waves, + size: 250, + color: Colors.white.withOpacity(0.05), + ), + ), + Padding( + padding: const EdgeInsets.all(24.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + '${AppInformation.appName} ${'Balance'.tr}', + style: AppStyle.headTitle.copyWith( + color: Colors.white, + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + Icon(Icons.memory_rounded, + color: Colors.white.withOpacity(0.7), + size: 30), // أيقونة الشريحة + ], + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "Current Balance".tr, + style: AppStyle.subtitle + .copyWith(color: Colors.white.withOpacity(0.7)), + ), + Text( + '${box.read(BoxName.passengerWalletTotal) ?? '0.0'} ${'SYP'.tr}', + style: AppStyle.headTitle2.copyWith( + color: Colors.white, + fontSize: 28, + fontWeight: FontWeight.w600, + letterSpacing: 1.5, + ), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Text( + (box.read(BoxName.name) ?? "User Name").toString(), + style: AppStyle.title.copyWith( + color: Colors.white.withOpacity(0.8), + fontSize: 16, + ), + ), + ], + ), + ], + ), + ), + ], + ), + ); + }, + ); + } + + // --- ويدجت مساعدة لبناء عناصر القائمة --- + Widget _buildActionTile({ + required IconData icon, + required String title, + required String subtitle, + required VoidCallback onTap, + }) { + return ListTile( + onTap: onTap, + contentPadding: const EdgeInsets.symmetric(vertical: 8, horizontal: 8), + leading: Container( + padding: const EdgeInsets.all(10), + decoration: BoxDecoration( + color: AppColor.primaryColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + child: Icon(icon, color: AppColor.primaryColor, size: 24), + ), + title: Text(title.tr, style: AppStyle.title), + subtitle: Text(subtitle.tr, + style: AppStyle.subtitle + .copyWith(color: AppColor.writeColor.withOpacity(0.6))), + trailing: const Icon(Icons.arrow_forward_ios_rounded, + size: 16, color: AppColor.writeColor), + ); + } + + // --- نفس دالة الـ Dialog الخاصة بك --- + void _showWalletPhoneDialog( + BuildContext context, PaymentController controller) { + Get.dialog( + CupertinoAlertDialog( + title: Text('Insert Wallet phone number'.tr), + content: Column( + children: [ + const SizedBox(height: 10), + Form( + key: controller.formKey, + child: CupertinoTextField( + controller: controller.walletphoneController, + placeholder: 'Insert Wallet phone number'.tr, + keyboardType: TextInputType.phone, + padding: + const EdgeInsets.symmetric(vertical: 12, horizontal: 10), + ), + ), + ], + ), + actions: [ + CupertinoDialogAction( + child: Text('Cancel'.tr, + style: const TextStyle(color: CupertinoColors.destructiveRed)), + onPressed: () => Get.back(), + ), + CupertinoDialogAction( + child: Text('OK'.tr, + style: const TextStyle(color: CupertinoColors.activeGreen)), + onPressed: () { + Get.back(); + box.write( + BoxName.phoneWallet, (controller.walletphoneController.text)); + Toast.show(context, 'Phone Wallet Saved Successfully'.tr, + AppColor.greenColor); + }, + ), + ], + ), + barrierDismissible: false, + ); + } +} + +// الكلاس القديم CardIntaleqWallet لم نعد بحاجة إليه لأنه تم دمجه وتطويره + + +================================================== +FILE PATH: ./lib/views/home/my_wallet/passenger_wallet_dialoge.dart +================================================== + +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/controller/functions/encrypt_decrypt.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/colors.dart'; +import 'package:Intaleq/controller/functions/toast.dart'; +import 'package:Intaleq/controller/payment/payment_controller.dart'; +import 'package:local_auth/local_auth.dart'; + +import '../../../main.dart'; +import '../../widgets/elevated_btn.dart'; +import '../../widgets/my_textField.dart'; +import 'payment_screen_sham.dart'; + +class PassengerWalletDialog extends StatelessWidget { + const PassengerWalletDialog({ + super.key, + }); + + @override + Widget build(BuildContext context) { + return GetBuilder( + builder: (controller) => Positioned( + top: Get.height * .1, + right: Get.width * .15, + left: Get.width * .15, + bottom: Get.height * .1, + child: controller.isPromoSheetDialogue + ? CupertinoActionSheet( + title: Text('Select Payment Amount'.tr), + actions: [ + CupertinoActionSheetAction( + onPressed: () { + controller.updateSelectedAmount( + box.read(BoxName.countryCode) == 'Syria' ? 10000 : 10, + ); + showPaymentOptions(context, controller); + }, + child: Text( + box.read(BoxName.countryCode) == 'Syria' + ? '10000 ${'LE'.tr}' + : '10 ${'SYP'.tr}', + ), + ), + CupertinoActionSheetAction( + onPressed: () { + controller.updateSelectedAmount( + box.read(BoxName.countryCode) == 'Syria' ? 20000 : 20, + ); + showPaymentOptions(context, controller); + }, + child: Text( + box.read(BoxName.countryCode) == 'Syria' + ? '20000 ${'LE'.tr} = 2050 ${'LE'.tr}' + : '20 ${'SYP'.tr}', + ), + ), + CupertinoActionSheetAction( + onPressed: () { + controller.updateSelectedAmount( + box.read(BoxName.countryCode) == 'Syria' ? 40000 : 40, + ); + showPaymentOptions(context, controller); + }, + child: Text( + box.read(BoxName.countryCode) == 'Syria' + ? '40000 ${'LE'.tr} = 4150 ${'LE'.tr}' + : '40 ${'SYP'.tr}', + ), + ), + CupertinoActionSheetAction( + onPressed: () { + controller.updateSelectedAmount( + box.read(BoxName.countryCode) == 'Syria' ? 100000 : 50, + ); + showPaymentOptions(context, controller); + }, + child: Text( + box.read(BoxName.countryCode) == 'Syria' + ? '100000 ${'LE'.tr} = 11000 ${'LE'.tr}' + : '50 ${'SYP'.tr}', + ), + ), + ], + cancelButton: CupertinoActionSheetAction( + onPressed: () { + controller.changePromoSheetDialogue(); + }, + child: Text('Cancel'.tr), + ), + ) + : const SizedBox(), + ), + ); + } +} +// class PassengerWalletDialog extends StatelessWidget { +// const PassengerWalletDialog({ +// super.key, +// }); + +// @override +// Widget build(BuildContext context) { +// return GetBuilder( +// builder: (controller) { +// return Positioned( +// top: Get.height * .1, +// right: Get.width * .15, +// left: Get.width * .15, +// bottom: Get.height * .1, +// child: controller.isPromoSheetDialogue +// ? Container() +// : SizedBox +// .shrink(), // If condition is false, return an empty widget +// ); +// }, +// ); +// } +// } +void showPaymentBottomSheet(BuildContext context) { + final controller = Get.find(); + + showModalBottomSheet( + context: context, + isScrollControlled: true, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.vertical(top: Radius.circular(15.0)), + ), + builder: (BuildContext context) { + return WillPopScope( + onWillPop: () async { + Get.back(); + return false; + }, + child: Container( + padding: const EdgeInsets.all(16.0), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Text( + 'Select Payment Amount'.tr, + style: AppStyle.headTitle2, + textAlign: TextAlign.center, + ), + const SizedBox(height: 16.0), + + // Payment Options List + _buildPaymentOption( + context: context, + controller: controller, + amount: 500, + bonusAmount: 30, + currency: 'SYP'.tr, + ), + + const SizedBox(height: 8.0), + _buildPaymentOption( + context: context, + controller: controller, + amount: 1000, + bonusAmount: 70, + currency: 'SYP'.tr, + ), + + const SizedBox(height: 8.0), + _buildPaymentOption( + context: context, + controller: controller, + amount: 2000, + bonusAmount: 180, + currency: 'SYP'.tr, + ), + + const SizedBox(height: 8.0), + _buildPaymentOption( + context: context, + controller: controller, + amount: 5000, + bonusAmount: 700, + currency: 'SYP'.tr, + ), + + const SizedBox(height: 16.0), + TextButton( + onPressed: () => Get.back(), + child: Text('Cancel'.tr), + ), + ], + ), + ), + ); + }, + ); +} + +Widget _buildPaymentOption({ + required BuildContext context, + required PaymentController controller, + required int amount, + required double bonusAmount, + required String currency, +}) { + return Material( + color: Colors.transparent, + child: InkWell( + onTap: () { + controller.updateSelectedAmount(amount); + Get.back(); + showPaymentOptions(context, controller); + }, + child: Container( + padding: const EdgeInsets.symmetric(vertical: 12.0, horizontal: 16.0), + decoration: BoxDecoration( + border: Border.all(color: Colors.grey[300]!), + borderRadius: BorderRadius.circular(8.0), + ), + child: Text( + bonusAmount > 0 + ? '${'Pay'.tr} $amount $currency, ${'Get'.tr} ${amount + bonusAmount} $currency' + : '$amount $currency', + style: AppStyle.title, + textAlign: TextAlign.center, + ), + ), + ), + ); +} + +void showPaymentOptions(BuildContext context, PaymentController controller) { + showCupertinoModalPopup( + context: context, + builder: (context) => CupertinoActionSheet( + title: Text('Payment Options'.tr), + actions: [ + box.read(BoxName.countryCode) == 'Syria' + ? CupertinoActionSheetAction( + child: Text('💳 Pay with Credit Card'.tr), + onPressed: () async { + if (controller.selectedAmount != 0) { + controller.payWithEcash( + context, + controller.selectedAmount.toString(), + // () async { + // await controller.addPassengerWallet(); + // controller.changePromoSheetDialogue(); + ); + await controller.getPassengerWallet(); + } else { + Toast.show(context, '⚠️ You need to choose an amount!'.tr, + AppColor.redColor); + } + }, + ) + : const SizedBox(), + box.read(BoxName.countryCode) != 'Syria' + ? CupertinoActionSheetAction( + child: Text('Pay with PayPal'.tr), + onPressed: () { + if (controller.selectedAmount != 0) { + controller.makePaymentPayPal(context); + } else { + Toast.show(context, 'You will choose one of above!'.tr, + AppColor.redColor); + } + }, + ) + : const SizedBox(), + // box.read(BoxName.phoneWallet) != null + // ? CupertinoActionSheetAction( + // child: Text('💰 Pay with Wallet'.tr), + // onPressed: () async { + // if (controller.selectedAmount != 0) { + // controller.isLoading = true; + // controller.update(); + // controller.payWithMTNWallet( + // context, + // controller.selectedAmount.toString(), + // 'SYP', + // ); + // await controller.getPassengerWallet(); + // controller.isLoading = false; + // controller.update(); + // } else { + // Toast.show(context, '⚠️ You need to choose an amount!'.tr, + // AppColor.redColor); + // } + // }, + // ) + // : CupertinoActionSheetAction( + // child: Text('Add wallet phone you use'.tr), + // onPressed: () { + // Get.dialog( + // CupertinoAlertDialog( + // title: Text('Insert Wallet phone number'.tr), + // content: Column( + // children: [ + // const SizedBox(height: 10), + // CupertinoTextField( + // controller: controller.walletphoneController, + // placeholder: 'Insert Wallet phone number'.tr, + // keyboardType: TextInputType.phone, + // padding: const EdgeInsets.symmetric( + // vertical: 12, + // horizontal: 10, + // ), + // ), + // ], + // ), + // actions: [ + // CupertinoDialogAction( + // child: Text('Cancel'.tr, + // style: const TextStyle( + // color: CupertinoColors.destructiveRed)), + // onPressed: () { + // Get.back(); + // }, + // ), + // CupertinoDialogAction( + // child: Text('OK'.tr, + // style: const TextStyle( + // color: CupertinoColors.activeGreen)), + // onPressed: () async { + // Get.back(); + // box.write(BoxName.phoneWallet, + // (controller.walletphoneController.text)); + // Toast.show( + // context, + // 'Phone Wallet Saved Successfully'.tr, + // AppColor.greenColor); + // }, + // ), + // ], + // ), + // barrierDismissible: false, + // ); + // }, + // ), + // GestureDetector( + // onTap: () async { + // Get.back(); + // Get.defaultDialog( + // barrierDismissible: false, + // title: 'Insert Wallet phone number'.tr, + // content: Form( + // key: controller.formKey, + // child: MyTextForm( + // controller: controller.walletphoneController, + // label: 'Insert Wallet phone number'.tr, + // hint: '963941234567', + // type: TextInputType.phone)), + // confirm: MyElevatedButton( + // title: 'OK'.tr, + // onPressed: () async { + // Get.back(); + // if (controller.formKey.currentState!.validate()) { + // if (controller.selectedAmount != 0) { + // controller.isLoading = true; + // controller.update(); + // box.write(BoxName.phoneWallet, + // (controller.walletphoneController.text)); + // Get.back(); + // await controller.payWithMTNWallet( + // context, + // controller.selectedAmount.toString(), + // 'SYP', + // ); + // await controller.getPassengerWallet(); + + // controller.isLoading = false; + // controller.update(); + // } else { + // Toast.show( + // context, + // '⚠️ You need to choose an amount!'.tr, + // AppColor.redColor, + // ); + // } + // } + // })); + // }, + // child: Padding( + // padding: const EdgeInsets.all(8.0), + // child: Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // Text( + // 'Pay by MTN Wallet'.tr, + // style: AppStyle.title, + // ), + // const SizedBox(width: 10), + // Image.asset( + // 'assets/images/cashMTN.png', + // width: 70, + // height: 70, + // fit: BoxFit.contain, + // ), + // ], + // ), + // )), + + GestureDetector( + onTap: () async { + Get.back(); + Get.defaultDialog( + barrierDismissible: false, + title: 'Insert Wallet phone number'.tr, + content: Form( + key: controller.formKey, + child: MyTextForm( + controller: controller.walletphoneController, + label: 'Insert Wallet phone number'.tr, + hint: '963941234567', + type: TextInputType.phone)), + confirm: MyElevatedButton( + title: 'OK'.tr, + onPressed: () async { + Get.back(); + if (controller.formKey.currentState!.validate()) { + box.write(BoxName.phoneWallet, + controller.walletphoneController.text); + await controller.payWithSyriaTelWallet( + controller.selectedAmount.toString(), 'SYP'); + } + })); + }, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Pay by Syriatel Wallet'.tr, + style: AppStyle.title, + ), + const SizedBox(width: 10), + Image.asset( + 'assets/images/syriatel.png', + width: 70, + height: 70, + fit: BoxFit.fill, + ), + ], + ), + )), + GestureDetector( + onTap: () async { + // التحقق بالبصمة قبل أي شيء + bool isAuthSupported = + await LocalAuthentication().isDeviceSupported(); + + if (isAuthSupported) { + bool didAuthenticate = await LocalAuthentication().authenticate( + localizedReason: 'استخدم بصمة الإصبع أو الوجه لتأكيد الدفع', + ); + + if (!didAuthenticate) { + print("❌ User did not authenticate with biometrics"); + return; + } + } + + // الانتقال مباشرة لإنشاء الفاتورة بعد النجاح بالبصمة + Get.to(() => PaymentScreenSmsProvider( + amount: double.parse(controller.selectedAmount.toString()))); + }, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Pay by Sham Cash'.tr, + style: AppStyle.title, + ), + const SizedBox(width: 10), + Image.asset( + 'assets/images/shamCash.png', + width: 70, + height: 70, + fit: BoxFit.fill, + ), + ], + ), + )), + ], + cancelButton: CupertinoActionSheetAction( + child: Text('Cancel'.tr), + onPressed: () { + // controller.changePromoSheetDialogue(); + Get.back(); + }, + ), + ), + ); +} + + +================================================== +FILE PATH: ./lib/views/home/my_wallet/payment_history_driver_page.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/colors.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/views/widgets/my_scafold.dart'; +import 'package:Intaleq/views/widgets/mycircular.dart'; + +import '../../../controller/payment/driver_payment_controller.dart'; + +class PaymentHistoryDriverPage extends StatelessWidget { + const PaymentHistoryDriverPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(DriverWalletHistoryController()); + return MyScafolld( + title: 'Payment History'.tr, + body: [ + GetBuilder( + builder: (controller) => controller.isLoading + ? const MyCircularProgressIndicator() + : ListView.builder( + itemCount: controller.archive.length, + itemBuilder: (BuildContext context, int index) { + var list = controller.archive[index]; + return Padding( + padding: const EdgeInsets.all(4), + child: Container( + decoration: BoxDecoration( + color: double.parse(list['amount']) < 0 + ? AppColor.redColor.withOpacity(.4) + : AppColor.greenColor.withOpacity(.4)), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + list['amount'], + style: AppStyle.title, + ), + Text( + list['created_at'], + style: AppStyle.title, + ), + ], + ), + ), + ); + }, + ), + ) + ], + isleading: true); + } +} + + +================================================== +FILE PATH: ./lib/views/Rate/rating_driver_bottom.dart +================================================== + +import 'package:Intaleq/views/home/map_page_passenger.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_rating_bar/flutter_rating_bar.dart'; +import 'package:get/get.dart'; + +import '../../constant/colors.dart'; +import '../../constant/links.dart'; +import '../../constant/style.dart'; +import '../../controller/home/map_passenger_controller.dart'; +import '../../controller/rate/rate_conroller.dart'; +import '../widgets/elevated_btn.dart'; +import '../widgets/my_scafold.dart'; + +// ملاحظة: تم حذف جميع الأكواد المتعلقة بالسعر والإكرامية كما طُلِب. +// التركيز الآن على التقييم والملاحظات فقط. + +class RatingDriverBottomSheet extends StatelessWidget { + RatingDriverBottomSheet({super.key}); + final RateController controller = Get.put(RateController()); + + @override + Widget build(BuildContext context) { + // تم تبسيط استخدام MyScafolld لإزالة الـ Positioned واستخدام تصميم مركزي ونظيف. + return MyScafolld( + title: 'Rate Driver'.tr, + body: [ + Center( + child: Container( + width: Get.width * .85, + padding: const EdgeInsets.all(24), + // يفترض أن AppStyle.boxDecoration1 يوفر تصميمًا جميلاً مع حواف مدورة وظل. + decoration: AppStyle.boxDecoration1, + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + // 1. قسم معلومات السائق والترحيب + CircleAvatar( + radius: 30, + backgroundImage: NetworkImage( + '${AppLink.server}/portrate_captain_image/${controller.driverId}.jpg'), + onBackgroundImageError: (exception, stackTrace) => const Icon( + Icons.person, + size: 30, + color: AppColor.blueColor), + ), + const SizedBox(height: 16), + + // رسالة ترحيب مركزة على تجربة الرحلة + Text( + '${'How was your trip with'.tr} ${controller.driverName}?', + style: AppStyle.title + .copyWith(fontSize: 20, fontWeight: FontWeight.bold), + textAlign: TextAlign.center, + ), + const SizedBox(height: 12), + + // نص إرشادي يؤكد على أهمية التقييم لتحسين الجودة + Text( + 'Your valuable feedback helps us improve our service quality.' + .tr, + style: AppStyle.title + .copyWith(color: Colors.grey.shade600, fontSize: 14), + textAlign: TextAlign.center, + ), + + const SizedBox(height: 32), + + // 2. شريط التقييم (النجمي) + Center( + child: RatingBar.builder( + initialRating: 0, + itemCount: 5, + itemSize: 50, // حجم كبير لجعله النقطة البؤرية + glow: true, + glowColor: Colors.amber.shade200, + itemPadding: const EdgeInsets.symmetric(horizontal: 4), + itemBuilder: (context, index) { + // استخدام أيقونات المشاعر مع أيقونة النجمة للحصول على مظهر أكثر جاذبية + switch (index) { + case 0: + return const Icon(Icons.sentiment_very_dissatisfied, + color: Colors.red); + case 1: + return const Icon(Icons.sentiment_dissatisfied, + color: Colors.redAccent); + case 2: + return const Icon(Icons.sentiment_neutral, + color: Colors.amber); + case 3: + return const Icon(Icons.sentiment_satisfied, + color: Colors.lightGreen); + case 4: + return const Icon(Icons.sentiment_very_satisfied, + color: Colors.green); + default: + return const Icon(Icons.star_rounded, + color: Colors.amber); + } + }, + onRatingUpdate: (rating) { + controller.selectRateItem(rating); + }, + ), + ), + + const SizedBox(height: 32), + + // 3. قسم التعليقات (الملاحظات) + SizedBox( + width: Get.width * .75, + child: TextFormField( + maxLines: 4, + minLines: 1, + keyboardType: TextInputType.multiline, + controller: controller.comment, + decoration: InputDecoration( + labelText: 'Leave a detailed comment (Optional)'.tr, + hintText: + 'Share your experience to help us improve...'.tr, + prefixIcon: + const Icon(Icons.rate_review, color: Colors.blueGrey), + suffixIcon: IconButton( + icon: const Icon(Icons.clear, color: AppColor.redColor), + onPressed: () { + controller.comment.clear(); + }, + ), + // تحسين شكل الحدود لتكون أكثر جمالية + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(12)), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: + const BorderSide(color: Colors.blueGrey, width: 1), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide( + color: AppColor.greenColor, + width: 2), // لون جذاب عند التركيز + ), + ), + ), + ), + + const SizedBox(height: 32), + + // 4. زر الإرسال + MyElevatedButton( + title: 'Submit Rating'.tr, + onPressed: () async { + await controller.addRateToDriver(); + Get.offAll(() => MapPagePassenger()); + // Get.find() + // .getRideStatusFromStartApp(); + }) + ], + ), + ), + ), + ], + isleading: false, + ); + } +} + + +================================================== +FILE PATH: ./lib/views/Rate/rate_captain.dart +================================================== + +import 'package:Intaleq/controller/home/map_passenger_controller.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_rating_bar/flutter_rating_bar.dart'; +import 'package:get/get.dart'; + +import '../../constant/colors.dart'; +import '../../constant/style.dart'; +import '../../controller/firebase/firbase_messge.dart'; +import '../../controller/payment/payment_controller.dart'; +import '../../controller/rate/rate_conroller.dart'; +import '../widgets/elevated_btn.dart'; +import '../widgets/my_scafold.dart'; + +class RateDriverFromPassenger extends StatelessWidget { + RateDriverFromPassenger({super.key}); + final RateController controller = Get.put(RateController()); + @override + Widget build(BuildContext context) { + return MyScafolld( + title: 'Rate Driver'.tr, + body: [ + Positioned( + top: 10, + left: Get.width * .1, + right: Get.width * .1, + child: Container( + // height: Get.height * 6, + decoration: AppStyle.boxDecoration1, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Padding( + padding: const EdgeInsets.all(4), + child: Container( + height: Get.height * .5, + decoration: AppStyle.boxDecoration1, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Text( + '${'Total price to '.tr}${Get.find().driverName}', + style: AppStyle.title, + ), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceEvenly, + children: [ + Container( + decoration: BoxDecoration( + border: Border.all( + width: 2, + color: AppColor.redColor, + )), + child: Padding( + padding: const EdgeInsets.all(4), + child: Text( + (double.parse(controller.price + .toString()) * + .12 + + double.parse(controller.price + .toString())) + .toStringAsFixed(2), + style: AppStyle.number.copyWith( + color: AppColor.redColor, + textBaseline: + TextBaseline.ideographic, + decoration: + TextDecoration.lineThrough, + decorationColor: + AppColor.redColor), + ), + ), + ), + const SizedBox( + height: 10, + ), + Container( + decoration: BoxDecoration( + border: Border.all( + width: 2, + color: AppColor.greenColor, + )), + child: Padding( + padding: const EdgeInsets.all(4), + child: Text( + controller.price.toString(), + style: AppStyle.number, + ), + ), + ), + ], + ), + const SizedBox( + height: 10, + ), + Padding( + padding: const EdgeInsets.all(4.0), + child: Text( + 'Exclusive offers and discounts always with the Intaleq app' + .tr, + style: AppStyle.title.copyWith( + color: AppColor.redColor, + ), + textAlign: TextAlign.center, + ), + ), + (Get.find() + .isWalletChecked == + true) + ? const DriverTipWidget() + : const SizedBox(), + ], + ), + )), + ), + Center( + child: RatingBar.builder( + initialRating: 0, + itemCount: 5, + itemSize: 50, + itemPadding: const EdgeInsets.symmetric(horizontal: 2), + itemBuilder: (context, index) { + switch (index) { + case 0: + return const Icon( + Icons.sentiment_very_dissatisfied, + color: Colors.red, + ); + case 1: + return const Icon( + Icons.sentiment_dissatisfied, + color: Colors.redAccent, + ); + case 2: + return const Icon( + Icons.sentiment_neutral, + color: Colors.amber, + ); + case 3: + return const Icon( + Icons.sentiment_satisfied, + color: Colors.lightGreen, + ); + case 4: + return const Icon( + Icons.sentiment_very_satisfied, + color: Colors.green, + ); + default: + return const Icon( + Icons.sentiment_neutral, + color: Colors.amber, + ); + } // + }, + onRatingUpdate: (rating) { + controller.selectRateItem(rating); + }, + ), + ), + const SizedBox( + height: 20, + ), + SizedBox( + width: Get.width * .75, + child: TextFormField( + maxLines: 4, + minLines: 1, + keyboardType: TextInputType.multiline, + controller: controller.comment, + decoration: InputDecoration( + labelText: 'Enter your Note'.tr, + hintText: 'Type something...'.tr, + prefixIcon: const Icon( + Icons.rate_review), // Add an icon as a prefix + suffixIcon: IconButton( + icon: const Icon( + Icons.clear, + color: AppColor.redColor, + ), // Add an icon as a suffix + onPressed: () { + controller.comment.clear(); + }, + ), + border: + const OutlineInputBorder(), // Add a border around the input field + enabledBorder: const OutlineInputBorder( + borderSide: BorderSide( + color: + Colors.blue), // Customize the border color + ), + focusedBorder: const OutlineInputBorder( + borderSide: BorderSide( + color: Colors + .green), // Customize the border color when focused + ), + errorBorder: const OutlineInputBorder( + borderSide: BorderSide( + color: Colors + .red), // Customize the border color when there's an error + ), + ), + ), + ), + const SizedBox( + height: 20, + ), + MyElevatedButton( + title: 'Submit rating'.tr, + onPressed: () => controller.addRateToDriver()) + ], + ), + )), + ], + isleading: false); + } +} + + +================================================== +FILE PATH: ./lib/views/auth/register_page.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/controller/auth/register_controller.dart'; +import 'package:Intaleq/views/widgets/elevated_btn.dart'; +import 'package:Intaleq/views/widgets/my_scafold.dart'; + +import '../../constant/colors.dart'; + +class RegisterPage extends StatelessWidget { + const RegisterPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(RegisterController()); + return MyScafolld( + title: 'Register'.tr, + body: [ + GetBuilder( + builder: (controller) => Form( + key: controller.formKey, + child: Padding( + padding: const EdgeInsets.all(16.0), + child: SingleChildScrollView( + child: Container( + decoration: const BoxDecoration( + boxShadow: [ + BoxShadow( + offset: Offset(3, 3), + color: AppColor.accentColor, + blurRadius: 3) + ], + color: AppColor.secondaryColor, + ), + child: Padding( + padding: const EdgeInsets.all(16), + child: Column(children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + SizedBox( + width: Get.width * .4, + child: TextFormField( + keyboardType: TextInputType.text, + controller: controller.firstNameController, + decoration: InputDecoration( + focusedBorder: OutlineInputBorder( + borderSide: const BorderSide( + color: AppColor.primaryColor, + width: 2.0, + ), + borderRadius: BorderRadius.circular(10), + ), + fillColor: AppColor.accentColor, + hoverColor: AppColor.accentColor, + focusColor: AppColor.accentColor, + border: const OutlineInputBorder( + borderRadius: BorderRadius.all( + Radius.circular(12))), + labelText: 'First name'.tr, + hintText: 'Enter your first name'.tr, + ), + validator: (value) { + if (value!.isEmpty) { + return 'Please enter your first name.'.tr; + } + return null; + }, + ), + ), + SizedBox( + width: Get.width * .4, + child: TextFormField( + keyboardType: TextInputType.text, + controller: controller.lastNameController, + decoration: InputDecoration( + focusedBorder: OutlineInputBorder( + borderSide: const BorderSide( + color: AppColor.primaryColor, + width: 2.0, + ), + borderRadius: BorderRadius.circular(10), + ), + focusColor: AppColor.accentColor, + fillColor: AppColor.accentColor, + border: const OutlineInputBorder( + borderRadius: BorderRadius.all( + Radius.circular(12))), + labelText: 'Last name'.tr, + hintText: 'Enter your last name'.tr, + ), + validator: (value) { + if (value!.isEmpty) { + return 'Please enter your last name.'.tr; + } + return null; + }, + ), + ), + ], + ), + const SizedBox( + height: 15, + ), + TextFormField( + keyboardType: TextInputType.emailAddress, + controller: controller.emailController, + decoration: InputDecoration( + focusedBorder: OutlineInputBorder( + borderSide: const BorderSide( + color: AppColor.primaryColor, + width: 2.0, + ), + borderRadius: BorderRadius.circular(10), + ), + fillColor: AppColor.accentColor, + hoverColor: AppColor.accentColor, + focusColor: AppColor.accentColor, + border: const OutlineInputBorder( + borderRadius: + BorderRadius.all(Radius.circular(12))), + labelText: 'Email'.tr, + hintText: 'Enter your email address'.tr, + ), + validator: (value) { + if (value!.isEmpty || + (!value.contains('@') || + !value.contains('.'))) { + return 'Please enter Your Email.'.tr; + } + return null; + }, + ), + const SizedBox( + height: 15, + ), + TextFormField( + obscureText: true, + keyboardType: TextInputType.emailAddress, + controller: controller.passwordController, + decoration: InputDecoration( + focusedBorder: OutlineInputBorder( + borderSide: const BorderSide( + color: AppColor.primaryColor, + width: 2.0, + ), + borderRadius: BorderRadius.circular(10), + ), + fillColor: AppColor.accentColor, + hoverColor: AppColor.accentColor, + focusColor: AppColor.accentColor, + border: const OutlineInputBorder( + borderRadius: + BorderRadius.all(Radius.circular(12))), + labelText: 'Password'.tr, + hintText: 'Enter your Password'.tr, + ), + validator: (value) { + if (value!.isEmpty) { + return 'Please enter Your Password.'.tr; + } + if (value.length < 6) { + return 'Password must br at least 6 character.' + .tr; + } + return null; + }, + ), + const SizedBox( + height: 15, + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + SizedBox( + width: Get.width * .4, + child: TextFormField( + keyboardType: TextInputType.phone, + cursorColor: AppColor.accentColor, + controller: controller.phoneController, + decoration: InputDecoration( + focusedBorder: OutlineInputBorder( + borderSide: const BorderSide( + color: AppColor.primaryColor, + width: 2.0, + ), + borderRadius: BorderRadius.circular(10), + ), + focusColor: AppColor.accentColor, + fillColor: AppColor.accentColor, + border: const OutlineInputBorder( + borderRadius: BorderRadius.all( + Radius.circular(12))), + labelText: 'Phone'.tr, + hintText: 'Enter your phone number'.tr, + ), + validator: (value) { + if (value!.isEmpty || value.length != 10) { + return 'Please enter your phone number.'.tr; + } + return null; + }, + ), + ), + SizedBox( + width: Get.width * .4, + child: TextFormField( + keyboardType: TextInputType.text, + controller: controller.siteController, + decoration: InputDecoration( + focusedBorder: OutlineInputBorder( + borderSide: const BorderSide( + color: AppColor.primaryColor, + width: 2.0, + ), + borderRadius: BorderRadius.circular(10), + ), + focusColor: AppColor.accentColor, + fillColor: AppColor.accentColor, + border: const OutlineInputBorder( + borderRadius: BorderRadius.all( + Radius.circular(12))), + labelText: 'City'.tr, + hintText: 'Enter your City'.tr, + ), + validator: (value) { + if (value!.isEmpty) { + return 'Please enter your City.'.tr; + } + return null; + }, + ), + ), + ], + ), + const SizedBox( + height: 15, + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + InkWell( + onTap: () => controller.getBirthDate(), + child: Container( + height: 50, + width: Get.width * .4, + decoration: BoxDecoration( + border: Border.all(), + borderRadius: BorderRadius.circular(13)), + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 20), + child: Text( + controller.birthDate, + style: AppStyle.title, + ), + ), + ), + ), + // DropdownButton( + // value: controller.gender, + // items: [ + // DropdownMenuItem( + // value: 'Male'.tr, + // child: Text('Male'.tr), + // ), + // DropdownMenuItem( + // value: 'Female'.tr, + // child: Text('Female'.tr), + // ), + // DropdownMenuItem( + // value: '--'.tr, + // child: Text('--'.tr), + // ), + // ], + // onChanged: (value) { + // controller.changeGender(value!); + // }, + // ) + ], + ), + MyElevatedButton( + title: 'Register'.tr, + onPressed: () => controller.register()) + ]), + ), + ), + ), + ), + ), + ) + ], + isleading: true); + } +} + + +================================================== +FILE PATH: ./lib/views/auth/verify_email_page.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/colors.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/controller/auth/register_controller.dart'; +import 'package:Intaleq/views/widgets/elevated_btn.dart'; +import 'package:Intaleq/views/widgets/my_scafold.dart'; + +class VerifyEmailPage extends StatelessWidget { + const VerifyEmailPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(RegisterController()); + return MyScafolld( + title: 'Verify Email'.tr, + body: [ + Positioned( + top: 10, + left: 20, + right: 20, + child: Text( + 'We sent 5 digit to your Email provided'.tr, + style: AppStyle.title.copyWith(fontSize: 20), + )), + GetBuilder( + builder: (controller) => Positioned( + top: 100, + left: 80, + right: 80, + child: Padding( + padding: const EdgeInsets.all(10), + child: Column( + children: [ + SizedBox( + width: 100, + child: TextField( + controller: controller.verifyCode, + decoration: InputDecoration( + labelStyle: AppStyle.title, + border: const OutlineInputBorder(), + hintText: '5 digit'.tr, + counterStyle: AppStyle.number, + hintStyle: AppStyle.subtitle + .copyWith(color: AppColor.accentColor), + ), + maxLength: 5, + keyboardType: TextInputType.number, + ), + ), + const SizedBox( + height: 30, + ), + MyElevatedButton( + title: 'Send Verfication Code'.tr, + onPressed: () => controller.sendVerifications()) + ], + ), + ), + )), + ], + isleading: true, + ); + } + + Padding verifyEmail() { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 10), + child: Container( + decoration: BoxDecoration( + border: Border.all( + color: AppColor.accentColor, + width: 2, + ), + borderRadius: BorderRadius.circular(8), + ), + child: const Padding( + padding: EdgeInsets.all(10), + child: SizedBox( + width: 20, + child: TextField( + maxLength: 1, + keyboardType: TextInputType.number, + ), + ), + ), + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/views/auth/sms_verfy_page.dart +================================================== + +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/controller/auth/register_controller.dart'; +import 'package:Intaleq/views/widgets/elevated_btn.dart'; +import 'package:Intaleq/views/widgets/my_scafold.dart'; +import 'package:Intaleq/views/widgets/my_textField.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../controller/local/phone_intel/intl_phone_field.dart'; +import '../../print.dart'; +import '../widgets/mycircular.dart'; +// import 'package:intl_phone_field/intl_phone_field.dart'; + +class SmsSignupEgypt extends StatelessWidget { + SmsSignupEgypt({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(RegisterController()); + return MyScafolld( + title: "Phone Number Check".tr, + body: [ + GetBuilder(builder: (registerController) { + return ListView( + children: [ + // Logo at the top + Padding( + padding: const EdgeInsets.only(bottom: 20.0), + child: Image.asset( + 'assets/images/logo.png', // Make sure you have a logo image in your assets folder + height: 100, + ), + ), + // Message to the driver + Padding( + padding: + const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0), + child: Text( + 'We need your phone number to contact you and to help you.' + .tr, + textAlign: TextAlign.center, + style: AppStyle.title, + ), + ), + // Phone number input field with country code dropdown + Padding( + padding: const EdgeInsets.all(16.0), + child: IntlPhoneField( + decoration: InputDecoration( + labelText: 'Phone Number'.tr, + border: const OutlineInputBorder( + borderSide: BorderSide(), + ), + ), + initialCountryCode: 'EG', + onChanged: (phone) { + // Properly concatenate country code and number + registerController.phoneController.text = + phone.completeNumber.toString(); + Log.print(' phone.number: ${phone.number}'); + print( + "Formatted phone number: ${registerController.phoneController.text}"); + }, + validator: (phone) { + // Check if the phone number is not null and is valid + if (phone == null || phone.completeNumber.isEmpty) { + return 'Please enter your phone number'; + } + + // Extract the phone number (excluding the country code) + final number = phone.completeNumber.toString(); + + // Check if the number length is exactly 11 digits + if (number.length != 13) { + return 'Phone number must be exactly 11 digits long'; + } + + // If all validations pass, return null + return null; + }, + ), + ), + const SizedBox( + height: 10, + ), + if (registerController.isSent) + Padding( + padding: const EdgeInsets.all(16.0), + child: Form( + key: registerController.formKey3, + child: MyTextForm( + controller: registerController.verifyCode, + label: '5 digit'.tr, + hint: '5 digit'.tr, + type: TextInputType.number), + ), + ), + // Submit button + registerController.isLoading + ? const MyCircularProgressIndicator() + : Padding( + padding: const EdgeInsets.all(16.0), + child: MyElevatedButton( + onPressed: () async { + !registerController.isSent + ? await registerController.sendOtpMessage() + : await registerController.verifySMSCode(); + }, + title: 'Submit'.tr, + ), + ), + ], + ); + }), + ], + isleading: false, + ); + } +} + + +================================================== +FILE PATH: ./lib/views/auth/login_page.dart +================================================== + +import 'package:Intaleq/controller/functions/crud.dart'; +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_widget_from_html/flutter_widget_from_html.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/box_name.dart'; +import 'package:Intaleq/constant/colors.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/main.dart'; +import 'package:Intaleq/views/widgets/my_scafold.dart'; +import 'package:path/path.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import '../../constant/info.dart'; +import '../../controller/auth/apple_signin_controller.dart'; +import '../../controller/auth/login_controller.dart'; +import '../widgets/elevated_btn.dart'; +import 'otp_page.dart'; + +class LoginPage extends StatelessWidget { + final controller = Get.put(LoginController()); + final AuthController authController = Get.put(AuthController()); + + LoginPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(LoginController()); + Get.put(CRUD()); + return GetBuilder( + builder: (controller) => MyScafolld( + title: 'Login'.tr, + isleading: false, + body: [ + if (box.read(BoxName.agreeTerms) != 'agreed') + _buildAgreementPage(context, controller) + else if (box.read(BoxName.locationPermission) != 'true') + _buildLocationPermissionDialog(controller) + // else if (box.read(BoxName.isTest).toString() == '0') + // buildEmailPasswordForm(controller) + else + // _buildLoginContent(controller, authController), + PhoneNumberScreen() + ], + ), + ); + } + + Widget _buildAgreementPage(BuildContext context, LoginController controller) { + // This UI can be identical to the one in LoginPage for consistency. + // I am reusing the improved design from the previous request. + return Padding( + padding: const EdgeInsets.all(24.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.policy_outlined, + size: 80, color: AppColor.primaryColor), + const SizedBox(height: 20), + Text("passenger agreement".tr, + textAlign: TextAlign.center, style: AppStyle.headTitle2), + const SizedBox(height: 30), + RichText( + textAlign: TextAlign.center, + text: TextSpan( + style: AppStyle.title.copyWith(height: 1.5), + children: [ + TextSpan( + text: + "To become a passenger, you must review and agree to the " + .tr), + TextSpan( + text: 'Terms of Use'.tr, + style: const TextStyle( + decoration: TextDecoration.underline, + color: AppColor.blueColor, + fontWeight: FontWeight.bold), + recognizer: TapGestureRecognizer() + ..onTap = () { + launchUrl(Uri.parse( + 'https://intaleq.xyz/intaleq/privacy_policy.php')); + }), + TextSpan(text: " and acknowledge our Privacy Policy.".tr), + ], + ), + ), + Expanded( + child: Container( + decoration: BoxDecoration( + border: Border.all(color: Colors.grey.shade300), + borderRadius: BorderRadius.circular(8), + ), + child: SingleChildScrollView( + padding: const EdgeInsets.all(12), + child: HtmlWidget(box.read(BoxName.lang).toString() == 'ar' + ? AppInformation.privacyPolicyArabic + : AppInformation.privacyPolicy), + ), + ), + ), + CheckboxListTile( + title: Text('I Agree'.tr, style: AppStyle.title), + value: controller.isAgreeTerms, + onChanged: (value) => controller.changeAgreeTerm(), + activeColor: AppColor.primaryColor, + controlAffinity: ListTileControlAffinity.leading, + ), + const SizedBox(height: 16), + SizedBox( + width: double.infinity, + child: MyElevatedButton( + title: 'Continue'.tr, + onPressed: controller.isAgreeTerms + ? () => controller.saveAgreementTerms() + : () {}, + ), + ), + ], + ), + ); + } + + Widget buildEmailPasswordForm(LoginController controller) { + return Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.2), + spreadRadius: 2, + blurRadius: 5, + offset: const Offset(0, 3), + ), + ], + ), + child: Form( + key: controller.formKey, + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + TextFormField( + keyboardType: TextInputType.emailAddress, + controller: controller.emailController, + decoration: InputDecoration( + labelText: 'Email'.tr, + hintText: 'Your email address'.tr, + border: const OutlineInputBorder(), + ), + validator: (value) => value == null || + value.isEmpty || + !value.contains('@') || + !value.contains('.') + ? 'Enter a valid email'.tr + : null, + ), + const SizedBox(height: 16), + TextFormField( + obscureText: true, + controller: controller.passwordController, + decoration: InputDecoration( + labelText: 'Password'.tr, + hintText: 'Your password'.tr, + border: const OutlineInputBorder(), + ), + validator: (value) => value == null || value.isEmpty + ? 'Enter your password'.tr + : null, + ), + const SizedBox(height: 24), + GetBuilder( + builder: (controller) => controller.isloading + ? const Center(child: CircularProgressIndicator()) + : ElevatedButton( + onPressed: () { + if (controller.formKey.currentState!.validate()) { + controller.login(); + } + }, + child: Text('Submit'.tr), + ), + ), + ], + ), + ), + ); + } + + Widget _buildLocationPermissionDialog(LoginController controller) { + return Padding( + padding: const EdgeInsets.all(32), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.location_on, size: 60, color: AppColor.primaryColor), + const SizedBox(height: 20), + Text( + 'Enable Location Access'.tr, + style: AppStyle.headTitle2, + textAlign: TextAlign.center, + ), + const SizedBox(height: 10), + Text( + 'We need your location to find nearby drivers for pickups and drop-offs.' + .tr, + textAlign: TextAlign.center, + style: AppStyle.title, + ), + const SizedBox(height: 20), + ElevatedButton( + onPressed: () async => await controller.getLocationPermission(), + child: Text('Next'.tr), + // child: Text('Allow Location Access'.tr), + ), + // TextButton( + // onPressed: () => openAppSettings(), + // child: Text('Open Settings'.tr), + // ), + ], + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/views/auth/otp_page.dart +================================================== + +import 'dart:ui'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +// --- placeholder imports --- +// These are assumed to exist from your original code. +// Make sure to have these files and controllers properly set up in your project. +import 'package:Intaleq/controller/auth/login_controller.dart'; +import '../../controller/auth/otp_controller.dart'; // Assumed to be PhoneAuthHelper +import '../../controller/local/phone_intel/intl_phone_field.dart'; +// --- end of placeholder imports --- + +/// A visually revamped authentication screen with a glassmorphism effect. +/// It provides a consistent and beautiful UI for all authentication steps. +/// +/// A hidden feature for testers is included: a long-press on the logo +/// will open a dialog for email/password login, suitable for app reviews. +class AuthScreen extends StatelessWidget { + final String title; + final String subtitle; + final Widget form; + + const AuthScreen({ + super.key, + required this.title, + required this.subtitle, + required this.form, + }); + + /// Shows a dialog for testers to log in using email and password. + /// This is triggered by a long-press on the logo or the explicit tester button. + void _showTesterLoginDialog( + BuildContext context, LoginController controller) { + final testerEmailController = TextEditingController(); + final testerPasswordController = TextEditingController(); + final testerFormKey = GlobalKey(); + + // Brand Color for Logic (Cyan/Teal from the Arrow in the logo) + const Color brandColor = Color(0xFF00E5FF); + + showDialog( + context: context, + barrierDismissible: true, + builder: (BuildContext dialogContext) { + return BackdropFilter( + filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5), + child: AlertDialog( + // Updated background to match new theme (Dark Purple/Indigo) + backgroundColor: const Color(0xFF1A1A2E).withOpacity(0.90), + shape: + RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), + title: const Text( + 'App Tester Login', + textAlign: TextAlign.center, + style: + TextStyle(fontWeight: FontWeight.bold, color: Colors.white), + ), + content: Form( + key: testerFormKey, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + TextFormField( + controller: testerEmailController, + keyboardType: TextInputType.emailAddress, + style: const TextStyle(color: Colors.white), + decoration: InputDecoration( + labelText: 'Email', + labelStyle: + TextStyle(color: Colors.white.withOpacity(0.7)), + prefixIcon: Icon(Icons.email_outlined, + color: Colors.white.withOpacity(0.7)), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: + BorderSide(color: Colors.white.withOpacity(0.3)), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + // Changed to Brand Cyan + borderSide: const BorderSide(color: brandColor), + ), + ), + validator: (value) => value == null || !value.contains('@') + ? 'Enter a valid email' + : null, + ), + const SizedBox(height: 16), + TextFormField( + controller: testerPasswordController, + obscureText: true, + style: const TextStyle(color: Colors.white), + decoration: InputDecoration( + labelText: 'Password', + labelStyle: + TextStyle(color: Colors.white.withOpacity(0.7)), + prefixIcon: Icon(Icons.lock_outline, + color: Colors.white.withOpacity(0.7)), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: + BorderSide(color: Colors.white.withOpacity(0.3)), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + // Changed to Brand Cyan + borderSide: const BorderSide(color: brandColor), + ), + ), + validator: (value) => value == null || value.isEmpty + ? 'Enter a password' + : null, + ), + ], + ), + ), + actions: [ + TextButton( + child: const Text('Cancel', + style: TextStyle(color: Colors.white70)), + onPressed: () => Navigator.of(dialogContext).pop(), + ), + ElevatedButton( + style: ElevatedButton.styleFrom( + backgroundColor: brandColor, // Updated Button Color + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + ), + child: const Text('Login', + style: TextStyle( + color: Color(0xFF1A1A2E), fontWeight: FontWeight.bold)), + onPressed: () { + if (testerFormKey.currentState!.validate()) { + // Use the main controller to perform login + controller.emailController.text = + testerEmailController.text; + controller.passwordController.text = + testerPasswordController.text; + controller.login(); + Navigator.of(dialogContext).pop(); + } + }, + ), + ], + ), + ); + }, + ); + } + + @override + Widget build(BuildContext context) { + // We still need the controller for the hidden tester login + final loginController = Get.find(); + + return Scaffold( + body: Container( + // NEW DESIGN: Deep Purple/Indigo Gradient to match the "N" body + decoration: const BoxDecoration( + gradient: LinearGradient( + // Dark Indigo -> Deep Purple -> Dark Blue + colors: [Color(0xFF2E1C59), Color(0xFF1A237E), Color(0xFF0D1117)], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + ), + child: Stack( + children: [ + // Background shapes updated to match the Logo accents + + // Shape 1: The Orange/Red Swoosh color + Positioned( + top: -80, + left: -80, + child: Container( + width: 250, + height: 250, + decoration: BoxDecoration( + shape: BoxShape.circle, + // Orange/Red from the swoosh lines + color: const Color(0xFFFF5722).withOpacity(0.12), + boxShadow: [ + BoxShadow( + color: const Color(0xFFFF5722).withOpacity(0.2), + blurRadius: 50, + spreadRadius: 10, + ) + ]), + ), + ), + + // Shape 2: The Cyan/Teal Arrow color + Positioned( + bottom: -100, + right: -80, + child: Container( + width: 350, + height: 350, + decoration: BoxDecoration( + shape: BoxShape.circle, + // Cyan/Teal from the arrow tip + color: const Color(0xFF00E5FF).withOpacity(0.08), + boxShadow: [ + BoxShadow( + color: const Color(0xFF00E5FF).withOpacity(0.15), + blurRadius: 60, + spreadRadius: 5, + ) + ]), + ), + ), + Center( + child: SingleChildScrollView( + padding: const EdgeInsets.symmetric(horizontal: 24.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + // GestureDetector to handle long-press for tester login + GestureDetector( + onLongPress: () { + _showTesterLoginDialog(context, loginController); + }, + child: Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + shape: BoxShape.circle, + color: Colors.white.withOpacity(0.05), + border: Border.all( + // Gradient border for the logo container + color: Colors.white.withOpacity(0.1), + width: 1)), + child: ClipRRect( + borderRadius: BorderRadius.circular(50), + child: Image.asset('assets/images/logo.gif', + height: 100)), + ), + ), + const SizedBox(height: 20), + Text( + title, + textAlign: TextAlign.center, + style: const TextStyle( + fontSize: 28, + fontWeight: FontWeight.bold, + color: Colors.white, + shadows: [ + Shadow( + blurRadius: 15.0, + color: Color(0xFF000000), // Darker shadow + offset: Offset(0, 4)), + ]), + ), + const SizedBox(height: 10), + Text( + subtitle, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 16, + color: Colors.white.withOpacity(0.75), + ), + ), + const SizedBox(height: 30), + + // Glassmorphism Container for the form + ClipRRect( + borderRadius: BorderRadius.circular(25.0), + child: BackdropFilter( + filter: ImageFilter.blur( + sigmaX: 20, sigmaY: 20), // Increased blur + child: Container( + padding: const EdgeInsets.all(24.0), + decoration: BoxDecoration( + // Slightly darker tint for better contrast with Cyan inputs + color: const Color(0xFF1A237E).withOpacity(0.2), + borderRadius: BorderRadius.circular(25.0), + border: Border.all( + color: Colors.white.withOpacity(0.1), + width: 1.0, + ), + ), + child: + form, // The form from the specific screen is placed here + ), + ), + ), + const SizedBox(height: 20), + // A more distinct button for app testers + Material( + color: Colors.transparent, + child: InkWell( + onTap: () => + _showTesterLoginDialog(context, loginController), + borderRadius: BorderRadius.circular(12), + child: Padding( + padding: const EdgeInsets.symmetric( + vertical: 10, horizontal: 16), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(Icons.admin_panel_settings_outlined, + color: Colors.white.withOpacity(0.5)), + const SizedBox(width: 8), + Text( + 'For App Reviewers / Testers', + style: TextStyle( + color: Colors.white.withOpacity(0.5), + fontWeight: FontWeight.w400, + fontSize: 12), + ), + ], + ), + ), + ), + ), + ], + ), + ), + ), + ], + ), + ), + ); + } +} + +// --- UI Screens --- +// Note: These screens now use the new AuthScreen wrapper and have updated styling +// for their form elements to match the new design. + +class PhoneNumberScreen extends StatefulWidget { + const PhoneNumberScreen({super.key}); + @override + State createState() => _PhoneNumberScreenState(); +} + +class _PhoneNumberScreenState extends State { + final _phoneController = TextEditingController(); + final _formKey = GlobalKey(); + bool _isLoading = false; + + // Brand Color for Focus (Cyan/Teal) + final Color _focusColor = const Color(0xFF00E5FF); + + static String formatSyrianPhone(String phone) { + // Remove spaces, symbols, +, -, () + phone = phone.replaceAll(RegExp(r'[ \-\(\)\+]'), '').trim(); + + // Normalize 00963 → 963 + if (phone.startsWith('00963')) { + phone = phone.replaceFirst('00963', '963'); + } + + // Normalize 0963 → 963 + if (phone.startsWith('0963')) { + phone = phone.replaceFirst('0963', '963'); + } + + // NEW: Fix 96309xxxx → 9639xxxx + if (phone.startsWith('96309')) { + phone = '9639' + phone.substring(5); // remove the "0" after 963 + } + + // If starts with 9630 → correct to 9639 + if (phone.startsWith('9630')) { + phone = '9639' + phone.substring(4); + } + + // If already in correct format: 9639xxxxxxxx + if (phone.startsWith('9639') && phone.length == 12) { + return phone; + } + + // If starts with 963 but missing the 9 + if (phone.startsWith('963') && phone.length > 3) { + // Ensure it begins with 9639 + if (!phone.startsWith('9639')) { + phone = '9639' + phone.substring(3); + } + return phone; + } + + // If starts with 09xxxxxxxx → 9639xxxxxxxx + if (phone.startsWith('09')) { + return '963' + phone.substring(1); + } + + // If 9xxxxxxxx (9 digits) + if (phone.startsWith('9') && phone.length == 9) { + return '963' + phone; + } + + // If starts with incorrect 0xxxxxxx → assume Syrian and fix + if (phone.startsWith('0') && phone.length == 10) { + return '963' + phone.substring(1); + } + + return phone; + } + + void _submit() async { + if (_formKey.currentState!.validate()) { + setState(() => _isLoading = true); + // PRODUCTION READY: Using the actual PhoneAuthHelper + final rawPhone = _phoneController.text.trim().replaceFirst('+', ''); + final success = await PhoneAuthHelper.sendOtp(rawPhone); + if (success && mounted) { + // Get.to(() => OtpVerificationScreen(phoneNumber: rawPhone)); + await PhoneAuthHelper.verifyOtp( + rawPhone, + ); // For testing purposes, auto-verify with a dummy OTP + } + if (mounted) setState(() => _isLoading = false); + } + } + + @override + Widget build(BuildContext context) { + return AuthScreen( + title: 'welcome to intaleq'.tr, + subtitle: 'login or register subtitle'.tr, + form: Form( + key: _formKey, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + 'Enter your phone number'.tr, + style: + TextStyle(color: Colors.white.withOpacity(0.9), fontSize: 16), + textAlign: TextAlign.center, + ), + const SizedBox(height: 20), + IntlPhoneField( + showCountryFlag: false, + searchText: 'Search country'.tr, + languageCode: 'ar', + style: const TextStyle(color: Colors.white), + dropdownTextStyle: const TextStyle( + color: Colors + .white), // Changed to White for visibility on dark BG + decoration: InputDecoration( + labelText: 'Phone Number'.tr, + hintText: 'witout zero'.tr, + labelStyle: TextStyle(color: Colors.white.withOpacity(0.7)), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide(color: Colors.white.withOpacity(0.3)), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + // Updated to Logo Cyan + borderSide: BorderSide(color: _focusColor, width: 2), + ), + ), + initialCountryCode: 'SY', + onChanged: (phone) { + _phoneController.text = phone.completeNumber; + }, + validator: (phone) { + if (phone == null || phone.number.isEmpty) { + return 'Please enter your phone number'.tr; + } + if (phone.number.startsWith('0')) { + return 'Please enter the number without the leading 0'.tr; + } + if (phone.completeNumber.length < 10) { + // Example validation + return 'Phone number seems too short'.tr; + } + return null; + }, + ), + const SizedBox(height: 24), + _isLoading + ? const CircularProgressIndicator(color: Colors.white) + : SizedBox( + width: double.infinity, + child: ElevatedButton( + onPressed: _submit, + style: ElevatedButton.styleFrom( + // Updated to Logo Cyan + backgroundColor: _focusColor, + padding: const EdgeInsets.symmetric(vertical: 16), + elevation: 5, + shadowColor: _focusColor.withOpacity(0.5), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12)), + ), + child: Text( + 'send otp button'.tr, + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + // Text is dark to contrast with bright Cyan + color: Color(0xFF1A1A2E)), + ), + ), + ), + ], + ), + ), + ); + } +} + +class OtpVerificationScreen extends StatefulWidget { + final String phoneNumber; + const OtpVerificationScreen({super.key, required this.phoneNumber}); + @override + State createState() => _OtpVerificationScreenState(); +} + +class _OtpVerificationScreenState extends State { + final _formKey = GlobalKey(); + final _otpController = TextEditingController(); + bool _isLoading = false; + + // Brand Color + final Color _brandColor = const Color(0xFF00E5FF); + + void _submit() async { + if (_formKey.currentState!.validate()) { + setState(() => _isLoading = true); + // PRODUCTION READY: Using the actual PhoneAuthHelper + // await PhoneAuthHelper.verifyOtp(widget.phoneNumber, _otpController.text); + if (mounted) setState(() => _isLoading = false); + } + } + + @override + Widget build(BuildContext context) { + return AuthScreen( + title: 'verify your number title'.tr, + subtitle: + 'otp sent subtitle'.trParams({'phoneNumber': widget.phoneNumber}), + form: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + 'Enter the 5-digit code'.tr, + style: + TextStyle(color: Colors.white.withOpacity(0.9), fontSize: 16), + textAlign: TextAlign.center, + ), + const SizedBox(height: 20), + Form( + key: _formKey, + child: TextFormField( + controller: _otpController, + textAlign: TextAlign.center, + keyboardType: TextInputType.number, + maxLength: 5, + style: const TextStyle( + fontSize: 28, + fontWeight: FontWeight.bold, + color: Colors.white, + letterSpacing: 18, // Visually separates the digits + ), + decoration: InputDecoration( + counterText: "", + hintText: '-----', + hintStyle: TextStyle( + color: Colors.white.withOpacity(0.1), + letterSpacing: 18, + fontSize: 28), + border: InputBorder.none, + contentPadding: const EdgeInsets.symmetric(vertical: 10), + // Add a subtle underline for the OTP area using brand color + enabledBorder: UnderlineInputBorder( + borderSide: + BorderSide(color: Colors.white.withOpacity(0.2))), + focusedBorder: UnderlineInputBorder( + borderSide: BorderSide(color: _brandColor)), + ), + validator: (v) => v == null || v.length < 5 ? '' : null, + ), + ), + const SizedBox(height: 30), + _isLoading + ? const CircularProgressIndicator(color: Colors.white) + : SizedBox( + width: double.infinity, + child: ElevatedButton( + onPressed: _submit, + style: ElevatedButton.styleFrom( + backgroundColor: _brandColor, // Updated + padding: const EdgeInsets.symmetric(vertical: 16), + elevation: 5, + shadowColor: _brandColor.withOpacity(0.5), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12)), + ), + child: Text( + 'verify and continue button'.tr, + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: Color(0xFF1A1A2E)), + ), + ), + ), + ], + ), + ); + } +} + +class RegistrationScreen extends StatefulWidget { + final String phoneNumber; + const RegistrationScreen({super.key, required this.phoneNumber}); + @override + State createState() => _RegistrationScreenState(); +} + +class _RegistrationScreenState extends State { + final _formKey = GlobalKey(); + final _firstNameController = TextEditingController(); + final _lastNameController = TextEditingController(); + final _emailController = TextEditingController(); + bool _isLoading = false; + + // Brand Color + final Color _brandColor = const Color(0xFF00E5FF); + + void _submit() async { + if (_formKey.currentState!.validate()) { + setState(() => _isLoading = true); + // PRODUCTION READY: Using the actual PhoneAuthHelper + await PhoneAuthHelper.registerUser( + phoneNumber: widget.phoneNumber, + firstName: _firstNameController.text.trim(), + lastName: _lastNameController.text.trim(), + email: _emailController.text.trim(), + ); + if (mounted) setState(() => _isLoading = false); + } + } + + // Helper to create styled text form fields + Widget _buildTextFormField({ + required TextEditingController controller, + required String label, + TextInputType keyboardType = TextInputType.text, + String? Function(String?)? validator, + }) { + return TextFormField( + controller: controller, + style: const TextStyle(color: Colors.white), + decoration: InputDecoration( + labelText: label, + labelStyle: TextStyle(color: Colors.white.withOpacity(0.7)), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide(color: Colors.white.withOpacity(0.3)), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + // Updated to Logo Cyan + borderSide: BorderSide(color: _brandColor, width: 2), + ), + ), + keyboardType: keyboardType, + validator: validator, + ); + } + + @override + Widget build(BuildContext context) { + return AuthScreen( + title: 'one last step title'.tr, + subtitle: 'complete profile subtitle'.tr, + form: Form( + key: _formKey, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + _buildTextFormField( + controller: _firstNameController, + label: 'first name label'.tr, + validator: (v) => v!.isEmpty ? 'first name required'.tr : null, + ), + const SizedBox(height: 16), + _buildTextFormField( + controller: _lastNameController, + label: 'last name label'.tr, + validator: (v) => v!.isEmpty ? 'last name required'.tr : null, + ), + const SizedBox(height: 16), + _buildTextFormField( + controller: _emailController, + label: 'email optional label'.tr, + keyboardType: TextInputType.emailAddress, + ), + const SizedBox(height: 24), + _isLoading + ? const CircularProgressIndicator(color: Colors.white) + : SizedBox( + width: double.infinity, + child: ElevatedButton( + onPressed: _submit, + style: ElevatedButton.styleFrom( + backgroundColor: _brandColor, // Updated + padding: const EdgeInsets.symmetric(vertical: 16), + elevation: 5, + shadowColor: _brandColor.withOpacity(0.5), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12)), + ), + child: Text( + 'complete registration button'.tr, + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: Color(0xFF1A1A2E)), + ), + ), + ), + ], + ), + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/views/auth/otp_token_page.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../controller/auth/token_otp_change_controller.dart'; + +class OtpVerificationPage extends StatefulWidget { + final String phone; + final String deviceToken; + final String token; + final String ptoken; + + const OtpVerificationPage({ + super.key, + required this.phone, + required this.deviceToken, + required this.token, + required this.ptoken, + }); + + @override + State createState() => _OtpVerificationPageState(); +} + +class _OtpVerificationPageState extends State { + late final OtpVerificationController controller; + final List _focusNodes = List.generate(6, (index) => FocusNode()); + final List _textControllers = + List.generate(5, (index) => TextEditingController()); + + @override + void initState() { + super.initState(); + controller = Get.put(OtpVerificationController( + phone: widget.phone, + deviceToken: widget.deviceToken, + token: widget.token, + )); + } + + @override + void dispose() { + for (var node in _focusNodes) { + node.dispose(); + } + for (var controller in _textControllers) { + controller.dispose(); + } + super.dispose(); + } + + void _onOtpChanged(String value, int index) { + if (value.isNotEmpty) { + if (index < 5) { + _focusNodes[index + 1].requestFocus(); + } else { + _focusNodes[index].unfocus(); // إلغاء التركيز بعد آخر حقل + } + } else if (index > 0) { + _focusNodes[index - 1].requestFocus(); + } + // تجميع نصوص كل الحقول لتكوين الرمز النهائي + controller.otpCode.value = _textControllers.map((c) => c.text).join(); + } + + Widget _buildOtpInputFields() { + return Directionality( + textDirection: TextDirection.ltr, // لضمان ترتيب الحقول من اليسار لليمين + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: List.generate(5, (index) { + return SizedBox( + width: 45, + height: 55, + child: TextFormField( + controller: _textControllers[index], + focusNode: _focusNodes[index], + textAlign: TextAlign.center, + keyboardType: TextInputType.number, + maxLength: 1, + style: const TextStyle(fontSize: 22, fontWeight: FontWeight.bold), + decoration: InputDecoration( + counterText: "", + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide(color: Colors.grey.shade300), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide( + color: Theme.of(context).primaryColor, width: 2), + ), + ), + onChanged: (value) => _onOtpChanged(value, index), + ), + ); + }), + ), + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text('Verify OTP'.tr), + backgroundColor: Colors.transparent, + elevation: 0, + centerTitle: true, + ), + backgroundColor: Colors.grey[50], + body: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(24.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const SizedBox(height: 20), + Icon(Icons.phonelink_lock_rounded, + size: 80, color: Theme.of(context).primaryColor), + const SizedBox(height: 24), + Text( + 'Verification Code'.tr, + style: + const TextStyle(fontSize: 24, fontWeight: FontWeight.bold), + ), + const SizedBox(height: 12), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 20.0), + child: Text( + '${'We have sent a verification code to your mobile number:'.tr} ${widget.phone}', + textAlign: TextAlign.center, + style: TextStyle( + color: Colors.grey.shade600, fontSize: 16, height: 1.5), + ), + ), + const SizedBox(height: 40), + _buildOtpInputFields(), + const SizedBox(height: 40), + Obx(() => SizedBox( + width: double.infinity, + height: 50, + child: controller.isVerifying.value + ? const Center(child: CircularProgressIndicator()) + : ElevatedButton( + style: ElevatedButton.styleFrom( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12))), + onPressed: () => + controller.verifyOtp(widget.ptoken), + child: Text('Verify'.tr, + style: const TextStyle( + fontSize: 18, fontWeight: FontWeight.w600)), + ), + )), + const SizedBox(height: 24), + Obx( + () => controller.canResend.value + ? TextButton( + onPressed: controller.sendOtp, + child: Text('Resend Code'.tr), + ) + : Text( + '${'You can resend in'.tr} ${controller.countdown.value} ${'seconds'.tr}', + style: const TextStyle(color: Colors.grey), + ), + ) + ], + ), + ), + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/views/notification/notification_page.dart +================================================== + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/colors.dart'; +import 'package:Intaleq/constant/style.dart'; + +import '../../controller/notification/passenger_notification_controller.dart'; +import '../widgets/my_scafold.dart'; +import '../widgets/mycircular.dart'; + +class NotificationPage extends StatelessWidget { + const NotificationPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(PassengerNotificationController()); + return MyScafolld( + isleading: true, + title: 'Notifications', + body: [ + GetBuilder( + builder: (notificationCaptainController) => notificationCaptainController + .isloading + ? const MyCircularProgressIndicator() // iOS-style loading indicator + : SafeArea( + child: ListView.builder( + itemCount: notificationCaptainController + .notificationData['message'].length, + itemBuilder: (BuildContext context, int index) { + if (notificationCaptainController + .notificationData['message'] == + "No notification data found") { + Get.defaultDialog( + title: 'No Notifications'.tr, + content: Text( + 'No notification data found.'.tr, + ), + ); + } + var res = notificationCaptainController + .notificationData['message'][index]; + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8, vertical: 4), + child: CupertinoListTile( + backgroundColor: res['isShown'] == 'true' + ? AppColor.secondaryColor.withOpacity(.2) + : AppColor.secondaryColor.withOpacity(.8), + leading: res['isShown'] == 'true' + ? const Icon(CupertinoIcons.bell_slash_fill) + : const Icon(CupertinoIcons.bell_fill), + title: Text( + res['title'], + style: AppStyle.title.copyWith( + color: CupertinoColors.black, + ), + ), + subtitle: Text( + res['body'], + style: AppStyle.subtitle.copyWith( + color: CupertinoColors.systemGrey, + ), + ), + onTap: () { + showCupertinoDialog( + context: context, + builder: (BuildContext context) { + return CupertinoAlertDialog( + title: Text( + res['title'], + style: AppStyle.title, + ), + content: Text( + res['body'], + style: AppStyle.subtitle, + ), + actions: [ + CupertinoDialogAction( + child: const Text('Ok'), + onPressed: () { + notificationCaptainController + .updateNotification( + res['id'].toString()); + Get.back(); + }, + ), + ], + ); + }, + ); + }, + ), + ); + }, + ), + ), + ) + ], + ); + } +} + + +================================================== +FILE PATH: ./lib/views/notification/notification_captain.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:Intaleq/constant/style.dart'; +import 'package:Intaleq/controller/notification/notification_captain_controller.dart'; +import 'package:Intaleq/views/widgets/elevated_btn.dart'; +import 'package:Intaleq/views/widgets/my_scafold.dart'; +import 'package:Intaleq/views/widgets/mycircular.dart'; + +class NotificationCaptain extends StatelessWidget { + const NotificationCaptain({super.key}); + @override + Widget build(BuildContext context) { + Get.put(NotificationCaptainController()); + + return MyScafolld( + title: 'Notifications'.tr, + body: [ + GetBuilder( + builder: (notificationCaptainController) => + notificationCaptainController.isLoading + ? const MyCircularProgressIndicator() + : SafeArea( + child: ListView.builder( + itemCount: notificationCaptainController + .notificationData['message'].length, + itemBuilder: (BuildContext context, int index) { + if (notificationCaptainController + .notificationData['message'] == + "No notification data found") { + Get.defaultDialog(); + } + var res = notificationCaptainController + .notificationData['message'][index]; + return Card( + elevation: 4, + child: ListTile( + onTap: () { + Get.defaultDialog( + title: res['title'], + titleStyle: AppStyle.title, + content: SizedBox( + width: Get.width * .8, + height: Get.height * .4, + child: Text( + res['body'], + style: AppStyle.title, + ), + ), + confirm: MyElevatedButton( + title: 'Ok', + onPressed: () { + //todo sql readen + })); + }, + leading: + const Icon(Icons.notification_important), + title: Text( + res['title'], + style: AppStyle.title, + ), + subtitle: Text( + res['body'], + style: AppStyle.subtitle, + ), + ), + ); + }, + ), + )) + ], + isleading: true, + ); + } +} + + +================================================== +FILE PATH: ./lib/views/lang/languages.dart +================================================== + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../controller/local/local_controller.dart'; +import '../home/map_page_passenger.dart'; + +class Language extends StatelessWidget { + const Language({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return CupertinoPageScaffold( + navigationBar: CupertinoNavigationBar( + middle: Text('Choose Language'.tr), + border: null, + ), + child: Material( + // Wrap SafeArea with Material widget + child: SafeArea( + child: GetBuilder( + builder: (controller) => Center( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildHeader(), + const SizedBox(height: 20), + Expanded( + child: ListView( + physics: const BouncingScrollPhysics(), + children: [ + _buildLanguageButton( + 'العربية', 'ar', controller, context, '🇪🇬'), + _buildLanguageButton('العربية (الخليج)', 'ar-gulf', + controller, context, '🇸🇦'), + _buildLanguageButton('العربية (المغرب)', 'ar-ma', + controller, context, '🇲🇦'), + _buildLanguageButton( + 'English', 'en', controller, context, '🇺🇸'), + _buildLanguageButton( + 'Türkçe', 'tr', controller, context, '🇹🇷'), + _buildLanguageButton( + 'Français', 'fr', controller, context, '🇫🇷'), + _buildLanguageButton( + 'Italiano', 'it', controller, context, '🇮🇹'), + _buildLanguageButton( + 'Deutsch', 'de', controller, context, '🇩🇪'), + _buildLanguageButton( + 'Ελληνικά', 'el', controller, context, '🇬🇷'), + _buildLanguageButton( + 'Español', 'es', controller, context, '🇪🇸'), + _buildLanguageButton( + 'فارسی', 'fa', controller, context, '🇮🇷'), + _buildLanguageButton( + '中文', 'zh', controller, context, '🇨🇳'), + _buildLanguageButton( + 'Русский', 'ru', controller, context, '🇷🇺'), + _buildLanguageButton( + 'हिन्दी', 'hi', controller, context, '🇮🇳'), + ], + ), + ), + ], + ), + ), + ), + ), + ), + ), + ); + } + + Widget _buildHeader() { + return Padding( + padding: const EdgeInsets.only(top: 20, bottom: 10), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Language Options'.tr, + style: const TextStyle( + fontSize: 24, + fontWeight: FontWeight.bold, + color: CupertinoColors.black, // Or your theme primary color + ), + textAlign: TextAlign.start, + ), + const SizedBox(height: 8), + Text( + "Select your preferred language for the app interface.".tr, + style: TextStyle( + fontSize: 16, + color: CupertinoColors.secondaryLabel, + ), + textAlign: TextAlign.start, + ), + ], + ), + ); + } + + Widget _buildLanguageButton(String title, String langCode, + LocaleController controller, BuildContext context, String flagIcon) { + return Container( + decoration: BoxDecoration( + color: CupertinoColors.white, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: CupertinoColors.systemGrey5.withOpacity(0.5), + spreadRadius: 1, + blurRadius: 3, + offset: const Offset(0, 2), + ), + ], + ), + child: ListTile( + leading: Text(flagIcon, + style: const TextStyle(fontSize: 28)), // Using flag icon as leading + title: Text( + title, + style: const TextStyle( + fontWeight: FontWeight.w500, + ), + ), + trailing: const Icon(CupertinoIcons.chevron_forward, + color: CupertinoColors.inactiveGray), + onTap: () async { + controller.changeLang(langCode); + showCupertinoDialog( + context: context, + builder: (context) => CupertinoAlertDialog( + title: Text('You should restart app to change language'.tr), + actions: [ + CupertinoDialogAction( + child: Text('Ok'.tr), + onPressed: () { + Get.offAll(() => MapPagePassenger()); + }, + ), + ], + ), + ); + }, + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/views/widgets/elevated_btn.dart +================================================== + +import 'dart:io'; + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:vibration/vibration.dart'; + +import '../../constant/box_name.dart'; +import '../../constant/colors.dart'; +import '../../constant/style.dart'; +import '../../main.dart'; + +class MyElevatedButton extends StatelessWidget { + final String title; + final VoidCallback onPressed; + final Color kolor; + final int vibrateDuration; + const MyElevatedButton({ + Key? key, + required this.title, + required this.onPressed, + this.kolor = AppColor.primaryColor, + this.vibrateDuration = 100, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + bool vibrate = box.read(BoxName.isvibrate) ?? true; + return ElevatedButton( + style: ButtonStyle( + backgroundColor: WidgetStateProperty.all(kolor), + shadowColor: WidgetStateProperty.all(Colors.transparent), + shape: WidgetStateProperty.all( + RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + ), + ), + ), + onPressed: () async { + // Handle haptic feedback for both iOS and Android + if (vibrate == true) { + if (Platform.isIOS) { + HapticFeedback.selectionClick(); + } else if (Platform.isAndroid) { + await Vibration.vibrate(duration: vibrateDuration); + } else {} + } + + // Ensure the onPressed callback is called after haptic feedback + onPressed(); + }, + child: Text( + title, + textAlign: TextAlign.center, + style: AppStyle.title.copyWith(color: AppColor.secondaryColor), + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/views/widgets/my_textField.dart +================================================== + +import 'package:flutter/cupertino.dart'; +import 'package:get/get.dart'; +import 'package:get_storage/get_storage.dart'; + +import '../../constant/box_name.dart'; + +class MyTextForm extends StatelessWidget { + const MyTextForm({ + Key? key, + required this.controller, + required this.label, + required this.hint, + required this.type, + }) : super(key: key); + + final TextEditingController controller; + final String label, hint; + final TextInputType type; + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.only(bottom: 10), + child: SizedBox( + width: Get.width * .8, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + label.tr, + style: TextStyle( + color: CupertinoColors.label, + fontSize: 16, + fontWeight: FontWeight.w600, + ), + ), + const SizedBox(height: 8), + CupertinoTextField( + controller: controller, + keyboardType: type, + placeholder: hint.tr, + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + decoration: BoxDecoration( + color: CupertinoColors.systemBackground, + border: Border.all(color: CupertinoColors.systemGrey4), + borderRadius: BorderRadius.circular(8), + ), + style: const TextStyle(color: CupertinoColors.label), + placeholderStyle: + const TextStyle(color: CupertinoColors.placeholderText), + ), + const SizedBox(height: 4), + ValueListenableBuilder( + valueListenable: controller, + builder: (context, value, child) { + String? errorText = _getErrorText(value.text); + return errorText != null + ? Text( + errorText, + style: const TextStyle( + color: CupertinoColors.destructiveRed, + fontSize: 12), + ) + : const SizedBox.shrink(); + }, + ), + ], + ), + ), + ); + } + + String? _getErrorText(String value) { + if (value.isEmpty) { + return '${'Please enter'.tr} $label'.tr; + } + + if (type == TextInputType.emailAddress) { + if (!value.contains('@')) { + return 'Please enter a valid email.'.tr; + } + } else if (type == TextInputType.phone) { + final box = GetStorage(); + if (box.read(BoxName.countryCode) == 'Egypt') { + if (value.length != 11) { + return 'Please enter a valid phone number.'.tr; + } + } else if (value.length != 10) { + return 'Please enter a valid phone number.'.tr; + } + } + + return null; + } +} + + +================================================== +FILE PATH: ./lib/views/widgets/my_circular_indicator_timer.dart +================================================== + +import 'package:flutter/material.dart'; +import 'dart:async'; + +import '../../constant/style.dart'; + +class MyCircularProgressIndicatorWithTimer extends StatelessWidget { + final Color backgroundColor; + final bool isLoading; + + MyCircularProgressIndicatorWithTimer({ + Key? key, + this.backgroundColor = Colors.transparent, + required this.isLoading, + }) : super(key: key); + + final StreamController _streamController = StreamController(); + + void startTimer() { + int _timeLeft = 60; + Timer.periodic(const Duration(seconds: 1), (timer) { + if (_timeLeft > 0 && isLoading) { + _streamController.add(_timeLeft); + _timeLeft--; + } else { + timer.cancel(); + _streamController.close(); + } + }); + } + + @override + Widget build(BuildContext context) { + if (isLoading) { + startTimer(); + } + + return Center( + child: Container( + width: 200, + height: 200, + decoration: BoxDecoration( + color: backgroundColor, + shape: BoxShape.circle, + ), + child: Stack( + children: [ + const Center(child: CircularProgressIndicator()), + Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Align( + alignment: Alignment.center, + child: Image.asset( + 'assets/images/logo.gif', + width: 140, + height: 140, + ), + ), + const SizedBox(height: 10), + StreamBuilder( + stream: _streamController.stream, + initialData: 60, + builder: (context, snapshot) { + return Text('${snapshot.data}', style: AppStyle.title); + }, + ), + ], + ), + ], + ), + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/views/widgets/circle_container.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../constant/colors.dart'; +import 'mydialoug.dart'; + +class MyCircleContainer extends StatelessWidget { + final Widget child; + final Color backgroundColor; + final Color borderColor; + + MyCircleContainer({ + Key? key, + required this.child, + this.backgroundColor = AppColor.secondaryColor, + this.borderColor = AppColor.accentColor, + }) : super(key: key); + + final controller = Get.put(CircleController()); + + @override + Widget build(BuildContext context) { + return GetBuilder( + builder: ((controller) => GestureDetector( + onTap: () { + controller.changeColor(); + MyDialog().getDialog( + 'Rejected Orders Count'.tr, + 'This is the total number of rejected orders per day after accepting the orders' + .tr, () { + Get.back(); + }); + }, + child: AnimatedContainer( + onEnd: () { + controller.onEnd(); + }, + duration: const Duration(milliseconds: 300), + width: controller.size, + height: controller.size, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: controller.backgroundColor, + border: Border.all( + color: borderColor, + width: 1, + ), + ), + child: Center(child: child), + ), + ))); + } +} + +class CircleController extends GetxController { + Color backgroundColor = AppColor.secondaryColor; + double size = 40; + void changeColor() { + backgroundColor = backgroundColor == AppColor.secondaryColor + ? AppColor.accentColor + : AppColor.secondaryColor; + size = 60; + update(); + } + + void onEnd() { + size = 40; + update(); + } +} + + +================================================== +FILE PATH: ./lib/views/widgets/error_snakbar.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:get/get.dart'; +import 'dart:ui'; +import '../../constant/colors.dart'; + +class SnackbarConfig { + static const duration = Duration(seconds: 4); + static const animationDuration = Duration(milliseconds: 400); + static const margin = EdgeInsets.symmetric(horizontal: 16, vertical: 12); + static const borderRadius = 16.0; + static const elevation = 0.0; // تقليل الارتفاع لأننا سنستخدم تأثيرات زجاجية + + // تأثير زجاجي + static const double blurStrength = 15.0; + static const double opacity = 0.85; + + // حدود شفافة + static final Border glassBorder = Border.all( + color: Colors.white.withOpacity(0.25), + width: 1.5, + ); + + // ظل أكثر نعومة وانتشار + static final List shadows = [ + BoxShadow( + color: Colors.black.withOpacity(0.15), + blurRadius: 12, + spreadRadius: 1, + offset: const Offset(0, 4), + ), + BoxShadow( + color: Colors.black.withOpacity(0.08), + blurRadius: 20, + spreadRadius: 0, + offset: const Offset(0, 2), + ), + ]; +} + +// تطبيق تأثير زجاجي باستخدام Container مخصص +class GlassSnackbar extends StatelessWidget { + final Color baseColor; + final Widget child; + + const GlassSnackbar({ + required this.baseColor, + required this.child, + Key? key, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return ClipRRect( + borderRadius: BorderRadius.circular(SnackbarConfig.borderRadius), + child: BackdropFilter( + filter: ImageFilter.blur( + sigmaX: SnackbarConfig.blurStrength, + sigmaY: SnackbarConfig.blurStrength, + ), + child: Container( + decoration: BoxDecoration( + color: baseColor.withOpacity(SnackbarConfig.opacity), + borderRadius: BorderRadius.circular(SnackbarConfig.borderRadius), + border: SnackbarConfig.glassBorder, + boxShadow: SnackbarConfig.shadows, + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + baseColor.withOpacity(SnackbarConfig.opacity + 0.05), + baseColor.withOpacity(SnackbarConfig.opacity - 0.05), + ], + ), + ), + child: child, + ), + ), + ); + } +} + +SnackbarController mySnackeBarError(String message) { + // تأثير اهتزاز للأخطاء + HapticFeedback.mediumImpact(); + + final Color errorBaseColor = AppColor.redColor; + + return Get.snackbar( + '', + '', + snackPosition: SnackPosition.TOP, + margin: SnackbarConfig.margin, + duration: SnackbarConfig.duration, + animationDuration: SnackbarConfig.animationDuration, + borderRadius: SnackbarConfig.borderRadius, + backgroundColor: Colors.transparent, // شفاف لأننا سنستخدم حاوية مخصصة + barBlur: 0, // إيقاف تشويش الخلفية الافتراضي لأننا سنستخدم BlurFilter + overlayBlur: 1.5, + overlayColor: Colors.black12, + userInputForm: Form( + child: GlassSnackbar( + baseColor: errorBaseColor, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 14), + child: Row( + children: [ + // أيقونة متحركة + TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: const Duration(milliseconds: 500), + curve: Curves.elasticOut, + builder: (context, value, child) { + return Transform.scale( + scale: value, + child: child, + ); + }, + child: Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.25), + shape: BoxShape.circle, + ), + child: const Icon( + Icons.error_rounded, + color: Colors.white, + size: 26, + ), + ), + ), + const SizedBox(width: 16), + // محتوى النص + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + 'Error'.tr, + style: const TextStyle( + fontWeight: FontWeight.w700, + color: Colors.white, + fontSize: 16, + letterSpacing: 0.3, + shadows: [ + Shadow( + color: Colors.black26, + offset: Offset(0, 1), + blurRadius: 2, + ), + ], + ), + ), + const SizedBox(height: 4), + Text( + message, + style: const TextStyle( + color: Colors.white, + fontSize: 14, + height: 1.3, + fontWeight: FontWeight.w400, + ), + ), + ], + ), + ), + // زر الإغلاق + InkWell( + onTap: () { + HapticFeedback.lightImpact(); + Get.closeCurrentSnackbar(); + }, + child: Container( + padding: const EdgeInsets.all(4), + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.2), + shape: BoxShape.circle, + ), + child: const Icon( + Icons.close_rounded, + color: Colors.white, + size: 18, + ), + ), + ), + ], + ), + ), + ), + ), + isDismissible: true, + dismissDirection: DismissDirection.horizontal, + forwardAnimationCurve: Curves.easeOutBack, + reverseAnimationCurve: Curves.easeInCubic, + ); +} + +SnackbarController mySnackbarSuccess(String message) { + // تأثير اهتزاز للنجاح + HapticFeedback.lightImpact(); + + final Color successBaseColor = AppColor.greenColor; + + return Get.snackbar( + '', + '', + snackPosition: SnackPosition.TOP, + margin: SnackbarConfig.margin, + duration: SnackbarConfig.duration, + animationDuration: SnackbarConfig.animationDuration, + borderRadius: SnackbarConfig.borderRadius, + backgroundColor: Colors.transparent, // شفاف لأننا سنستخدم حاوية مخصصة + barBlur: 0, // إيقاف تشويش الخلفية الافتراضي لأننا سنستخدم BlurFilter + overlayBlur: 1.5, + overlayColor: Colors.black12, + userInputForm: Form( + child: GlassSnackbar( + baseColor: successBaseColor, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 14), + child: Row( + children: [ + // أيقونة متحركة + TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: const Duration(milliseconds: 600), + curve: Curves.elasticOut, + builder: (context, value, child) { + return Transform.scale( + scale: value, + child: child, + ); + }, + child: Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.25), + shape: BoxShape.circle, + ), + child: const Icon( + Icons.check_circle_rounded, + color: Colors.white, + size: 26, + ), + ), + ), + const SizedBox(width: 16), + // محتوى النص + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + 'Success'.tr, + style: const TextStyle( + fontWeight: FontWeight.w700, + color: Colors.white, + fontSize: 16, + letterSpacing: 0.3, + shadows: [ + Shadow( + color: Colors.black26, + offset: Offset(0, 1), + blurRadius: 2, + ), + ], + ), + ), + const SizedBox(height: 4), + Text( + message, + style: const TextStyle( + color: Colors.white, + fontSize: 14, + height: 1.3, + fontWeight: FontWeight.w400, + ), + ), + ], + ), + ), + // زر الإغلاق + InkWell( + onTap: () { + HapticFeedback.lightImpact(); + Get.closeCurrentSnackbar(); + }, + child: Container( + padding: const EdgeInsets.all(4), + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.2), + shape: BoxShape.circle, + ), + child: const Icon( + Icons.close_rounded, + color: Colors.white, + size: 18, + ), + ), + ), + ], + ), + ), + ), + ), + isDismissible: true, + dismissDirection: DismissDirection.horizontal, + forwardAnimationCurve: Curves.easeOutBack, + reverseAnimationCurve: Curves.easeInCubic, + ); +} + +// إضافة: دالة للمعلومات والتنبيهات +SnackbarController mySnackbarInfo(String message) { + // تأثير اهتزاز خفيف + HapticFeedback.selectionClick(); + + final Color infoBaseColor = Colors.blue; + + return Get.snackbar( + '', + '', + snackPosition: SnackPosition.TOP, + margin: SnackbarConfig.margin, + duration: SnackbarConfig.duration, + animationDuration: SnackbarConfig.animationDuration, + borderRadius: SnackbarConfig.borderRadius, + backgroundColor: Colors.transparent, // شفاف لأننا سنستخدم حاوية مخصصة + barBlur: 0, // إيقاف تشويش الخلفية الافتراضي لأننا سنستخدم BlurFilter + overlayBlur: 1.5, + overlayColor: Colors.black12, + userInputForm: Form( + child: GlassSnackbar( + baseColor: infoBaseColor, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 14), + child: Row( + children: [ + // أيقونة متحركة + TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: const Duration(milliseconds: 500), + curve: Curves.elasticOut, + builder: (context, value, child) { + return Transform.scale( + scale: value, + child: child, + ); + }, + child: Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.25), + shape: BoxShape.circle, + ), + child: const Icon( + Icons.info_rounded, + color: Colors.white, + size: 26, + ), + ), + ), + const SizedBox(width: 16), + // محتوى النص + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + 'Info'.tr, + style: const TextStyle( + fontWeight: FontWeight.w700, + color: Colors.white, + fontSize: 16, + letterSpacing: 0.3, + shadows: [ + Shadow( + color: Colors.black26, + offset: Offset(0, 1), + blurRadius: 2, + ), + ], + ), + ), + const SizedBox(height: 4), + Text( + message, + style: const TextStyle( + color: Colors.white, + fontSize: 14, + height: 1.3, + fontWeight: FontWeight.w400, + ), + ), + ], + ), + ), + // زر الإغلاق + InkWell( + onTap: () { + HapticFeedback.lightImpact(); + Get.closeCurrentSnackbar(); + }, + child: Container( + padding: const EdgeInsets.all(4), + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.2), + shape: BoxShape.circle, + ), + child: const Icon( + Icons.close_rounded, + color: Colors.white, + size: 18, + ), + ), + ), + ], + ), + ), + ), + ), + isDismissible: true, + dismissDirection: DismissDirection.horizontal, + forwardAnimationCurve: Curves.easeOutBack, + reverseAnimationCurve: Curves.easeInCubic, + ); +} + +// إضافة: دالة للتحذيرات +SnackbarController mySnackbarWarning(String message) { + // تأثير اهتزاز متوسط + HapticFeedback.mediumImpact(); + + final Color warningBaseColor = Colors.orange; + + return Get.snackbar( + '', + '', + snackPosition: SnackPosition.TOP, + margin: SnackbarConfig.margin, + duration: SnackbarConfig.duration, + animationDuration: SnackbarConfig.animationDuration, + borderRadius: SnackbarConfig.borderRadius, + backgroundColor: Colors.transparent, // شفاف لأننا سنستخدم حاوية مخصصة + barBlur: 0, // إيقاف تشويش الخلفية الافتراضي لأننا سنستخدم BlurFilter + overlayBlur: 1.5, + overlayColor: Colors.black12, + userInputForm: Form( + child: GlassSnackbar( + baseColor: warningBaseColor, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 14), + child: Row( + children: [ + // أيقونة متحركة + TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: const Duration(milliseconds: 500), + curve: Curves.elasticOut, + builder: (context, value, child) { + return Transform.scale( + scale: value, + child: child, + ); + }, + child: Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.25), + shape: BoxShape.circle, + ), + child: const Icon( + Icons.warning_rounded, + color: Colors.white, + size: 26, + ), + ), + ), + const SizedBox(width: 16), + // محتوى النص + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + 'Warning'.tr, + style: const TextStyle( + fontWeight: FontWeight.w700, + color: Colors.white, + fontSize: 16, + letterSpacing: 0.3, + shadows: [ + Shadow( + color: Colors.black26, + offset: Offset(0, 1), + blurRadius: 2, + ), + ], + ), + ), + const SizedBox(height: 4), + Text( + message, + style: const TextStyle( + color: Colors.white, + fontSize: 14, + height: 1.3, + fontWeight: FontWeight.w400, + ), + ), + ], + ), + ), + // زر الإغلاق + InkWell( + onTap: () { + HapticFeedback.lightImpact(); + Get.closeCurrentSnackbar(); + }, + child: Container( + padding: const EdgeInsets.all(4), + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.2), + shape: BoxShape.circle, + ), + child: const Icon( + Icons.close_rounded, + color: Colors.white, + size: 18, + ), + ), + ), + ], + ), + ), + ), + ), + isDismissible: true, + dismissDirection: DismissDirection.horizontal, + forwardAnimationCurve: Curves.easeOutBack, + reverseAnimationCurve: Curves.easeInCubic, + ); +} + + +================================================== +FILE PATH: ./lib/views/widgets/mydialoug.dart +================================================== + +import 'dart:ui'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:get/get.dart'; + +import '../../constant/colors.dart'; +import '../../constant/style.dart'; +import '../../controller/functions/tts.dart'; + +class DialogConfig { + static const Duration animationDuration = Duration(milliseconds: 200); + static const double blurStrength = 8.0; + static const double cornerRadius = 14.0; + static final BoxDecoration decoration = BoxDecoration( + borderRadius: BorderRadius.circular(cornerRadius), + boxShadow: [ + BoxShadow( + color: Colors.black.withAlpha(38), // 0.15 opacity + blurRadius: 16, + offset: const Offset(0, 8), + ), + ], + ); +} + +class MyDialog extends GetxController { + void getDialog(String title, String? midTitle, VoidCallback onPressed) { + final textToSpeechController = Get.put(TextToSpeechController()); + + HapticFeedback.mediumImpact(); + + Get.dialog( + TweenAnimationBuilder( + duration: DialogConfig.animationDuration, + tween: Tween(begin: 0.0, end: 1.0), + builder: (context, value, child) { + return Transform.scale( + scale: 0.95 + (0.05 * value), + child: Opacity(opacity: value, child: child), + ); + }, + child: BackdropFilter( + filter: ImageFilter.blur( + sigmaX: DialogConfig.blurStrength, + sigmaY: DialogConfig.blurStrength, + ), + child: Theme( + data: ThemeData.light().copyWith( + dialogBackgroundColor: CupertinoColors.systemBackground, + ), + child: CupertinoAlertDialog( + title: Column( + children: [ + Text( + title, + style: AppStyle.title.copyWith( + fontSize: 20, + fontWeight: FontWeight.w700, + letterSpacing: -0.5, + color: AppColor.primaryColor, + ), + ), + const SizedBox(height: 8), + ], + ), + content: Column( + children: [ + CupertinoButton( + padding: const EdgeInsets.all(8), + onPressed: () async { + HapticFeedback.selectionClick(); + await textToSpeechController.speakText(title); + await textToSpeechController.speakText(midTitle!); + }, + child: Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: + AppColor.primaryColor.withAlpha(26), // 0.1 opacity + borderRadius: BorderRadius.circular(8), + ), + child: Icon( + CupertinoIcons.speaker_2_fill, + color: AppColor.primaryColor, + size: 24, + ), + ), + ), + const SizedBox(height: 8), + Text( + midTitle!, + style: AppStyle.title.copyWith( + fontSize: 16, + height: 1.3, + color: Colors.black87, + ), + textAlign: TextAlign.center, + ), + ], + ), + actions: [ + CupertinoDialogAction( + onPressed: () { + HapticFeedback.lightImpact(); + Get.back(); + }, + child: Text( + 'Cancel'.tr, + style: TextStyle( + color: AppColor.redColor, + fontWeight: FontWeight.w600, + fontSize: 17, + ), + ), + ), + CupertinoDialogAction( + onPressed: () { + HapticFeedback.mediumImpact(); + onPressed(); + }, + child: Text( + 'OK'.tr, + style: TextStyle( + color: AppColor.greenColor, + fontWeight: FontWeight.w600, + fontSize: 17, + ), + ), + ), + ], + ), + ), + ), + ), + barrierDismissible: true, + barrierColor: Colors.black.withAlpha(102), // 0.4 opacity + ); + } +} + +class MyDialogContent extends GetxController { + void getDialog(String title, Widget? content, VoidCallback onPressed) { + final textToSpeechController = Get.put(TextToSpeechController()); + + HapticFeedback.mediumImpact(); + + Get.dialog( + TweenAnimationBuilder( + duration: DialogConfig.animationDuration, + tween: Tween(begin: 0.0, end: 1.0), + builder: (context, value, child) { + return Transform.scale( + scale: 0.95 + (0.05 * value), + child: Opacity(opacity: value, child: child), + ); + }, + child: BackdropFilter( + filter: ImageFilter.blur( + sigmaX: DialogConfig.blurStrength, + sigmaY: DialogConfig.blurStrength, + ), + child: Theme( + data: ThemeData.light().copyWith( + dialogBackgroundColor: CupertinoColors.systemBackground, + ), + child: CupertinoAlertDialog( + title: Column( + children: [ + Text( + title, + style: AppStyle.title.copyWith( + fontSize: 20, + fontWeight: FontWeight.w700, + letterSpacing: -0.5, + color: AppColor.primaryColor, + ), + ), + const SizedBox(height: 8), + ], + ), + content: Column( + children: [ + CupertinoButton( + padding: const EdgeInsets.all(8), + onPressed: () async { + HapticFeedback.selectionClick(); + await textToSpeechController.speakText(title); + }, + child: Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: + AppColor.primaryColor.withAlpha(26), // 0.1 opacity + borderRadius: BorderRadius.circular(8), + ), + child: Icon( + CupertinoIcons.headphones, + color: AppColor.primaryColor, + size: 24, + ), + ), + ), + const SizedBox(height: 12), + content!, + ], + ), + actions: [ + CupertinoDialogAction( + onPressed: () { + HapticFeedback.lightImpact(); + Get.back(); + }, + child: Text( + 'Cancel', + style: TextStyle( + color: AppColor.redColor, + fontWeight: FontWeight.w600, + fontSize: 17, + ), + ), + ), + CupertinoDialogAction( + onPressed: () { + HapticFeedback.mediumImpact(); + onPressed(); + }, + child: Text( + 'OK'.tr, + style: TextStyle( + color: AppColor.greenColor, + fontWeight: FontWeight.w600, + fontSize: 17, + ), + ), + ), + ], + ), + ), + ), + ), + barrierDismissible: true, + barrierColor: Colors.black.withAlpha(102), // 0.4 opacity + ); + } +} + + +================================================== +FILE PATH: ./lib/views/widgets/icon_widget_menu.dart +================================================== + +import 'package:flutter/material.dart'; + +import '../../constant/colors.dart'; +import '../../constant/style.dart'; + +class IconWidgetMenu extends StatelessWidget { + const IconWidgetMenu({ + Key? key, + required this.onpressed, + required this.icon, + required this.title, + }) : super(key: key); + + final VoidCallback onpressed; + final IconData icon; + final String title; + + @override + Widget build(BuildContext context) { + return InkWell( + onTap: onpressed, + child: Padding( + padding: const EdgeInsets.only(top: 25), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + width: 40, + decoration: const BoxDecoration( + color: AppColor.secondaryColor, + shape: BoxShape.circle, + boxShadow: [ + BoxShadow( + color: AppColor.secondaryColor, + offset: Offset(-2, -2), + blurRadius: 0, + spreadRadius: 0, + blurStyle: BlurStyle.outer, + ), + BoxShadow( + color: AppColor.accentColor, + offset: Offset(3, 3), + blurRadius: 0, + spreadRadius: 0, + blurStyle: BlurStyle.outer, + ), + ], + ), + child: Center( + child: Icon( + icon, + size: 30, + color: AppColor.primaryColor, + ), + ), + ), + Text( + title, + style: AppStyle.subtitle, + ) + ], + ), + ), + ); + } +} + + +================================================== +FILE PATH: ./lib/views/widgets/my_scafold.dart +================================================== + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../constant/colors.dart'; +import '../../constant/style.dart'; + +class MyScafolld extends StatelessWidget { + const MyScafolld({ + super.key, + required this.title, + required this.body, + this.action = const Icon( + Icons.clear, + color: AppColor.secondaryColor, + ), + required this.isleading, + }); + + final String title; + final List body; + final Widget action; + final bool isleading; + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColor.secondaryColor, + appBar: AppBar( + backgroundColor: AppColor.secondaryColor, + elevation: 0, + leading: isleading + ? IconButton( + onPressed: () { + Get.back(); + }, + icon: const Icon( + Icons.arrow_back_ios_new, + color: AppColor.primaryColor, + ), + ) + : const SizedBox(), + actions: [action], + title: Text( + title, + style: AppStyle.title.copyWith(fontSize: 30), + ), + ), + body: SafeArea(child: Stack(children: body))); + } +} + + +================================================== +FILE PATH: ./lib/views/widgets/mycircular.dart +================================================== + +import 'package:flutter/material.dart'; + +class MyCircularProgressIndicator extends StatefulWidget { + final Color backgroundColor; + final double size; + final Color progressColor; + final double strokeWidth; + + const MyCircularProgressIndicator({ + super.key, + this.backgroundColor = Colors.transparent, + this.size = 110, + this.progressColor = Colors.blue, + this.strokeWidth = 3.0, + }); + + @override + State createState() => + _MyCircularProgressIndicatorState(); +} + +class _MyCircularProgressIndicatorState + extends State + with SingleTickerProviderStateMixin { + late AnimationController _controller; + late Animation _scaleAnimation; + late Animation _rotationAnimation; + + @override + void initState() { + super.initState(); + _controller = AnimationController( + duration: const Duration(seconds: 2), + vsync: this, + )..repeat(reverse: true); + + _scaleAnimation = Tween( + begin: 0.95, + end: 1.05, + ).animate(CurvedAnimation( + parent: _controller, + curve: Curves.easeInOut, + )); + + _rotationAnimation = Tween( + begin: 0, + end: 2, + ).animate(CurvedAnimation( + parent: _controller, + curve: Curves.linear, + )); + } + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Center( + child: AnimatedBuilder( + animation: _controller, + builder: (context, child) { + return Transform.scale( + scale: _scaleAnimation.value, + child: Container( + width: widget.size, + height: widget.size, + decoration: BoxDecoration( + color: widget.backgroundColor, + shape: BoxShape.circle, + boxShadow: [ + BoxShadow( + color: widget.progressColor.withAlpha(30), + blurRadius: 12, + spreadRadius: 2, + ), + ], + ), + child: Stack( + alignment: Alignment.center, + children: [ + // Outer rotating progress indicator + Transform.rotate( + angle: _rotationAnimation.value * 3.14, + child: CircularProgressIndicator( + strokeWidth: widget.strokeWidth, + valueColor: AlwaysStoppedAnimation( + widget.progressColor, + ), + ), + ), + // Inner static progress indicator + CircularProgressIndicator( + strokeWidth: widget.strokeWidth * 0.7, + valueColor: AlwaysStoppedAnimation( + widget.progressColor.withAlpha(150), + ), + ), + // Logo container with scale animation + ScaleTransition( + scale: Tween( + begin: 0.9, + end: 1.0, + ).animate(CurvedAnimation( + parent: _controller, + curve: Curves.easeInOut, + )), + child: Container( + width: widget.size * 0.7, + height: widget.size * 0.7, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: widget.backgroundColor, + ), + child: Image.asset( + 'assets/images/logo.gif', + fit: BoxFit.contain, + ), + ), + ), + ], + ), + ), + ); + }, + ), + ); + } +} diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 296bab4..d16aa3d 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -33,11 +33,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 23 + 30 CFBundleSignature ???? CFBundleVersion - 1.0.23 + 1.1.30 FirebaseAppDelegateProxyEnabled NO GMSApiKey diff --git a/lib/README.md b/lib/README.md new file mode 100644 index 0000000..2aa43f8 --- /dev/null +++ b/lib/README.md @@ -0,0 +1,194 @@ +إليك التقرير الفني الشامل لمشروع **Intaleq Passenger App**، مكتوباً بصيغة توثيق تقني (Technical Documentation) موجهة لفريق التطوير، بناءً على تحليل الكود المصدري. + +--- + +# 📘 Intaleq Passenger App - Technical Documentation Report + +**Prepared by:** CTO Office +**Target Audience:** Mobile Engineering Team +**Version:** 1.0 + +--- + +## 1. 🚀 بداية التشغيل (Initialization & Startup) + +تعتمد مرحلة الإقلاع على تهيئة الخدمات الأساسية قبل عرض واجهة المستخدم لضمان استقرار التطبيق. + +### أ. نقطة الدخول (`main.dart`) + +- **المسار:** `lib/main.dart` +- **الوظيفة:** + - يستخدم `runZonedGuarded` لالتقاط الأخطاء العامة (Global Error Handling) وإرسالها للسيرفر عبر `CRUD.addError`. + - **تهيئة الخدمات:** يتم تهيئة `GetStorage` (للتخزين المحلي)، `WakelockPlus` (لمنع انطفاء الشاشة)، و `Firebase` (للإشعارات) قبل استدعاء `runApp`. + - **إعدادات التوجيه:** يتم تحديد الاتجاه العمودي فقط (`portraitUp`) للجهاز. + - **حقن التبعيات (DI):** يتم استدعاء `AppBindings` كـ `initialBinding` لتهيئة المتحكمات الأساسية. + +### ب. إدارة التبعيات (`AppBindings`) + +- **المسار:** `lib/app_bindings.dart` +- **الآلية:** + - يتم حقن `LocaleController` و `DeepLinkController` بشكل دائم (`permanent: true`) لضمان تواجدهم طوال دورة حياة التطبيق. + - يتم استخدام `Get.lazyPut` مع `fenix: true` للمتحكمات الأخرى (مثل `LoginController`) ليتم إنشاؤها عند الحاجة وإعادة إنشائها إذا تم التخلص منها. + +### ج. شاشة البداية (`Splash Screen`) + +- **المسار:** `lib/splash_screen_page.dart` و `lib/controller/home/splash_screen_controlle.dart` +- **المنطق:** + - يتم عرض انيميشن باستخدام `AnimatedTextKit` و `FadeTransition`. + - **العمليات الخلفية:** يقوم `SplashScreenController` بتنفيذ `_initializeBackgroundServices` لتهيئة خدمات التشفير (`EncryptionHelper`) والإشعارات. + - **التوجيه الذكي:** تتحقق الدالة `_performNavigationLogic` من وجود بيانات المستخدم في `BoxName`. إذا كان المستخدم مسجلاً ومفعلاً (`isVerified == '1'`)، يتم توجيهه تلقائياً للصفحة الرئيسية، وإلا يتم توجيهه لصفحة الدخول أو الترحيب (`OnBoarding`). + +--- + +## 2. 🔐 دورة المصادقة (Authentication Cycle) + +يعتمد النظام على مصادقة هجينة (Token-based + Social Auth) مع تخزين آمن. + +### أ. التسجيل والدخول (`Sign Up & Login`) + +- **المسار:** `lib/controller/auth/login_controller.dart` و `register_controller.dart` +- **الآلية:** + - **Social Login:** يتم استخدام `GoogleSignInHelper` أو `AuthController` (Apple). عند النجاح، يتم إرسال التوكن للسيرفر للتحقق. + - **Credentials:** في حالة الدخول التقليدي، يتم استدعاء `loginUsingCredentials` التي تتحقق من البيانات عبر API. + - **التحقق (Verification):** إذا رد السيرفر بأن الحساب غير مفعل، يتم تحويل المستخدم لصفحة `PhoneNumberScreen` للتحقق عبر OTP. + +### ب. التحقق عبر الهاتف (OTP) + +- **المسار:** `lib/controller/auth/otp_controller.dart` +- **المنطق:** يستخدم كلاس `PhoneAuthHelper` لإرسال OTP (غالباً عبر WhatsApp أو SMS حسب الدولة) ثم التحقق منه عبر الـ Endpoint `verifyOtp.php`. + +### ج. إدارة الجلسة والتوكن + +- **المخزن:** يتم تخزين الـ JWT في `GetStorage` تحت مفتاح `BoxName.jwt`. +- **التشفير:** يتم استخدام `EncryptionHelper` لتشفير البيانات الحساسة محلياً. +- **التجديد التلقائي:** في كلاس `CRUD`، إذا رد السيرفر بـ `401 Token expired`، يتم استدعاء `getJWT` تلقائياً لتجديد التوكن دون تسجيل خروج المستخدم. + +--- + +## 3. 🗺️ الشاشة الرئيسية والخريطة (Home & Map Logic) + +تعتبر `MapPagePassenger` هي الواجهة المركزية التي تديرها `MapPassengerController`. + +### أ. تحميل الخريطة والموقع + +- **المسار:** `lib/controller/home/map_passenger_controller.dart` +- **المتحكم:** `MapPassengerController` +- **المنطق:** + - يتم استخدام `location.getLocation()` لجلب موقع الراكب الحالي عند البدء. + - يتم تحديد المنطقة الجغرافية (سوريا، مصر، الأردن) عبر دالة `getLocationArea` التي تفحص وقوع الإحداثيات داخل مضلعات (Polygons) محددة مسبقاً. + +### ب. السيارات القريبة (Real-time Updates) + +- **الدالة:** `getCarsLocationByPassengerAndReloadMarker`. +- **الآلية:** تقوم بطلب API (مثل `getSpeed.php`) بناءً على نوع السيارة المختار (Speed, Comfort, Lady). يتم تحديث الـ `markers` على الخريطة، ويتم استخدام دالة `_smoothlyUpdateMarker` لتحريك أيقونة السيارة بسلاسة بدلاً من القفز المفاجئ. + +### ج. القائمة الجانبية (Drawer) + +- **المسار:** `lib/views/home/map_widget.dart/map_menu_widget.dart` +- **المتحكم:** `MyMenuController` +- **الوظيفة:** تدير حالة القائمة (مفتوحة/مغلقة) وتوفر روابط لصفحات الملف الشخصي، المحفظة، والسجل. + +--- + +## 4. 🚕 دورة طلب الرحلة (Ride Request Flow) + +هذا هو الجزء الأكثر تعقيداً في التطبيق، حيث يدار عبر آلة حالة (State Machine). + +### أ. اختيار الوجهة ورسم المسار + +- **المسار:** `lib/controller/home/map_passenger_controller.dart` +- **الوظيفة:** `getDirectionMap`. +- **المنطق:** + - يتم إرسال نقطة البداية والنهاية إلى خدمة التوجيه (OSRM/Google). + - يتم استلام نقاط المسار (Polyline Points) وفك تشفيرها في `Isolate` منفصل (`decodePolylineIsolate`) لتحسين الأداء. + - يتم رسم المسار على الخريطة وضبط الكاميرا لتشمل النقطتين. + +### ب. اختيار نوع السيارة والسعر + +- **المسار:** `lib/views/home/map_widget.dart/car_details_widget_to_go.dart` +- **الآلية:** يتم عرض قائمة أنواع السيارات (Fixed Price, Comfort, etc.). عند الاختيار، يتم حساب السعر المتوقع بناءً على المسافة والوقت والتعرفة الخاصة بكل نوع والمخزنة في المتحكم (`totalPassengerSpeed`, `totalPassengerComfort`). + +### ج. إرسال الطلب (البحث عن سائق) + +- **الدالة:** `startSearchingForDriver`. +- **العمليات:** + 1. تغيير الحالة إلى `RideState.searching`. + 2. استدعاء `postRideDetailsToServer` لإنشاء سجل الرحلة في قاعدة البيانات. + 3. تشغيل المؤقت `_startMasterTimer` الذي يدير دورة البحث. + 4. يتم توسيع نطاق البحث (Radius) تدريجياً (مراحل: 2400م -> 3000م -> 3100م) عبر `_findAndNotifyNearestDrivers`. + +### د. انتظار السائق + +- **الواجهة:** `SearchingCaptainWindow`. +- **المنطق:** يظهر رادار بحث. يتم التحقق دورياً (`Polling`) من حالة الرحلة في السيرفر. إذا مر الوقت المحدد (90 ثانية) دون قبول، يظهر خيار "زيادة السعر" (`_showIncreaseFeeDialog`). + +--- + +## 5. 🚘 أثناء الرحلة (Active Ride) + +يتم إدارة هذه المرحلة عبر تحديثات الحالة في `_handleRideState`. + +### أ. قبول السائق + +- **الحدث:** وصول إشعار FCM أو تغيير الحالة في السيرفر إلى `Apply`. +- **الإجراء:** يتم استدعاء `processRideAcceptance`. + - يتم جلب بيانات السائق وموقعه. + - يتم تفعيل تتبع السائق `startTimerFromDriverToPassengerAfterApplied`. + - تتغير الواجهة لعرض معلومات السائق والوقت المقدر للوصول. + +### ب. بدء الرحلة وميزات الأمان + +- **بدء الرحلة:** عند وصول حالة `Begin`، يتم استدعاء `processRideBegin`. +- **SOS:** زر الاستغاثة يستدعي `makePhoneCall` مع رقم الشرطة أو جهة اتصال الطوارئ المخزنة. +- **مشاركة الرحلة:** الدالة `shareTripWithFamily` تولد رابط تتبع مشفر وترسله عبر واتساب. +- **تسجيل الصوت:** يتم استخدام `AudioRecorderController` لتسجيل ما يدور في الرحلة لأغراض الأمان. + +### ج. إلغاء الرحلة + +- **الدالة:** `cancelRide`. +- **المنطق:** + - يتم إرسال طلب `cancel` للسيرفر لتحديث حالة الرحلة. + - يتم إرسال إشعار للسائق بالإلغاء. + - يتم تصفير الواجهة والعودة للخريطة. + +--- + +## 6. 🏁 ما بعد الرحلة (Post-Ride) + +### أ. شاشة الدفع + +- **المسار:** `lib/controller/payment/payment_controller.dart` +- **المنطق:** + - يتم الخصم من المحفظة (`addPassengerWallet`) أو الدفع النقدي. + - يتم التعامل مع بوابات الدفع الخارجية (مثل Paymob, Stripe) إذا اختار العميل الدفع الإلكتروني. + +### ب. التقييم + +- **المسار:** `lib/views/Rate/rate_captain.dart` و `RateController`. +- **الآلية:** يقوم الراكب باختيار عدد النجوم وإضافة تعليق. يتم إرسال البيانات عبر `addRateToDriver`. + +### ج. تقديم الشكاوى + +- **المسار:** `lib/views/home/profile/complaint_page.dart` +- **المتحكم:** `ComplaintController`. +- **الميزة:** يمكن للراكب تسجيل رسالة صوتية وإرفاقها مع الشكوى، ثم يتم إرسالها للسيرفر عبر `submitComplaintToServer`. + +--- + +## 7. ⚙️ الإعدادات والملف الشخصي + +### أ. تعديل البيانات + +- **المسار:** `lib/views/home/profile/passenger_profile_page.dart`. +- **المتحكم:** `ProfileController`. +- يسمح بتعديل الاسم، الجنس، ورقم الطوارئ. + +### ب. المحفظة + +- **المسار:** `lib/views/home/my_wallet/passenger_wallet.dart`. +- يعرض الرصيد الحالي وسجل المعاملات (`PassengerWalletHistoryController`). + +### ج. اللغة + +- **المتحكم:** `LocaleController`. +- يقوم بتغيير لغة التطبيق وتحديث `Get.updateLocale` وحفظ التفضيل في التخزين المحلي. diff --git a/lib/constant/links.dart b/lib/constant/links.dart index b7d9cf9..97890c6 100644 --- a/lib/constant/links.dart +++ b/lib/constant/links.dart @@ -6,13 +6,15 @@ class AppLink { static String paymentServer = 'https://walletintaleq.intaleq.xyz/v1/main'; static String location = 'https://api.intaleq.xyz/intaleq/ride/location'; - + static String locationServer = + 'https://location.intaleq.xyz/intaleq/ride/location'; static String seferPaymentServer0 = box.read('seferPaymentServer'); static final String endPoint = 'https://api.intaleq.xyz/intaleq'; static final String ride = 'https://rides.intaleq.xyz/intaleq'; // box.read(BoxName.serverChosen) ?? box.read(BoxName.basicLink); static final String server = 'https://api.intaleq.xyz/intaleq'; + static final String serverSocket = 'https://rides.intaleq.xyz'; static String IntaleqSyriaServer = endPoint; static String IntaleqGizaServer = box.read('Giza'); static String IntaleqAlexandriaServer = box.read('Alexandria'); @@ -244,7 +246,8 @@ class AppLink { static String getLocationAreaLinks = '$server/ride/location/get_location_area_links.php'; - static String addpassengerLocation = "$location/addpassengerLocation.php"; + static String addpassengerLocation = + "$locationServer/addpassengerLocation.php"; static String getCarsLocationByPassengerSpeed = "$location/getSpeed.php"; static String getCarsLocationByPassengerComfort = "$location/getComfort.php"; static String getCarsLocationByPassengerBalash = "$location/getBalash.php"; diff --git a/lib/controller/firebase/firbase_messge.dart b/lib/controller/firebase/firbase_messge.dart index 6f27a5d..77ebb82 100644 --- a/lib/controller/firebase/firbase_messge.dart +++ b/lib/controller/firebase/firbase_messge.dart @@ -105,6 +105,9 @@ class FirebaseMessagesController extends GetxController { // اقرأ "النوع" من حمولة البيانات، وليس من العنوان String category = message.data['category'] ?? ''; + final mapCtrl = Get.isRegistered() + ? Get.find() + : null; // اقرأ العنوان (للعرض) String title = message.notification?.title ?? ''; String body = message.notification?.body ?? ''; @@ -119,17 +122,25 @@ class FirebaseMessagesController extends GetxController { // ... داخل معالج الإشعارات في تطبيق الراكب ... else if (category == 'Accepted Ride') { - // <-- كان 'Accepted Ride' - var driverListJson = message.data['driverList']; - if (driverListJson != null) { - var myList = jsonDecode(driverListJson) as List; - final controller = Get.find(); - // controller.currentRideState.value = RideState.driverApplied; - await controller.processRideAcceptance( - driverIdFromFCM: myList[0].toString(), - rideIdFromFCM: myList[3].toString()); - } else { - Log.print('❌ خطأ: RIDE_ACCEPTED وصل بدون driverList'); + if (mapCtrl != null) { + Map? driverInfoMap; + + // 2. معالجة driver_info (تأتي كـ String JSON من PHP) + if (message.data['driver_info'] != null) { + try { + String rawJson = message.data['driver_info']; + // 🔥 فك التشفير: تحويل الـ String إلى Map + driverInfoMap = jsonDecode(rawJson); + } catch (e) { + print("❌ Error decoding FCM driver_info: $e"); + } + } + + // 3. تمرير البيانات الجاهزة للكنترولر + await mapCtrl.processRideAcceptance( + driverData: driverInfoMap, + source: "FCM", + ); } } else if (category == 'Promo') { // <-- كان 'Promo'.tr @@ -142,7 +153,7 @@ class FirebaseMessagesController extends GetxController { if (Platform.isAndroid) { notificationController.showNotification(title, body, 'iphone_ringtone'); } - var myListString = message.data['DriverList']; + var myListString = message.data['passengerList']; var myList = jsonDecode(myListString) as List; Get.to(() => TripMonitor(), arguments: { 'rideId': myList[0].toString(), @@ -161,7 +172,7 @@ class FirebaseMessagesController extends GetxController { if (Platform.isAndroid) { notificationController.showNotification(title, body, 'tone1'); } - } else if (category == 'message From passenger') { + } else if (category == 'MSG_FROM_PASSENGER') { // <-- كان 'message From passenger' if (Platform.isAndroid) { notificationController.showNotification(title, body, 'ding'); @@ -178,78 +189,33 @@ class FirebaseMessagesController extends GetxController { } else if (category == 'Trip is Begin') { // <-- كان 'Trip is Begin' Log.print('[FCM] استقبل إشعار "TRIP_BEGUN".'); - final controller = Get.find(); - controller.processRideBegin(); + // استدعاء الحارس + mapCtrl!.processRideBegin(source: "FCM"); } else if (category == 'Hi ,I will go now') { // <-- كان 'Hi ,I will go now'.tr if (Platform.isAndroid) { notificationController.showNotification(title, body, 'ding'); } update(); - } else if (category == 'Hi ,I Arrive your site') { - // <-- كان 'Hi ,I Arrive your site'.tr - final controller = Get.find(); - // if (controller.currentRideState.value == RideState.driverApplied) { - Log.print('[FCM] السائق وصل. تغيير الحالة إلى driverArrived'); - controller.currentRideState.value = RideState.driverArrived; - // } - } else if (category == 'Cancel Trip from driver') { - // <-- كان "Cancel Trip from driver" - Get.back(); - if (Platform.isAndroid) { - notificationController.showNotification(title, body, 'cancel'); - } - Get.defaultDialog( - title: "The driver canceled your ride.".tr, // العنوان المترجم للعرض - middleText: "We will look for a new driver.\nPlease wait.".tr, - confirm: MyElevatedButton( - kolor: AppColor.greenColor, - title: 'Ok'.tr, - onPressed: () async { - Get.back(); - await Get.find() - .reSearchAfterCanceledFromDriver(); - }, - ), - cancel: MyElevatedButton( - title: 'Cancel'.tr, - kolor: AppColor.redColor, - onPressed: () { - Get.offAll(() => const MapPagePassenger()); - }, - )); + } else if (category == "Arrive Ride") { + // استدعاء الحارس + mapCtrl!.processDriverArrival("FCM"); } else if (category == 'Driver Finish Trip') { - // <-- كان 'Driver Finish Trip'.tr - final rawData = message.data['DriverList']; List driverList = []; - if (rawData != null && rawData is String) { + + // ✅ معالجة آمنة للبيانات + var rawData = message.data['DriverList']; + if (rawData != null && rawData.isNotEmpty) { try { - driverList = jsonDecode(rawData); + driverList = jsonDecode(rawData) as List; } catch (e) { - Log.print('Error decoding DriverList JSON: $e'); + print("❌ Error decoding DriverList: $e"); } - } else { - Log.print('Error: DriverList data is null or not a String.'); } - if (driverList.length >= 3) { - if (Platform.isAndroid) { - notificationController.showNotification( - title, - '${'you will pay to Driver'.tr} ${driverList[3].toString()} \$', - 'tone1'); - } - Get.find().stopRecording(); - // ... (باقي كود المحفظة) ... - Get.find().tripFinishedFromDriver(); - // ... (إشعار "لا تنسى متعلقاتك") ... - Get.to(() => RateDriverFromPassenger(), arguments: { - 'driverId': driverList[0].toString(), - 'rideId': driverList[1].toString(), - 'price': driverList[3].toString() - }); - } else { - Log.print('Error: TRIP_FINISHED decoded list error.'); + if (driverList.isNotEmpty) { + Get.find() + .processRideFinished(driverList, source: "FCM"); } } else if (category == 'Finish Monitor') { // <-- كان "Finish Monitor".tr @@ -262,19 +228,21 @@ class FirebaseMessagesController extends GetxController { onPressed: () { Get.offAll(() => const MapPagePassenger()); })); - } else if (category == 'Driver Cancelled Your Trip') { + } else if (category == 'Cancel Trip from driver') { + Log.print("🔔 FCM: Ride Cancelled by Driver received."); + + // لا داعي لكتابة منطق التنظيف هنا، الكنترولر يتكفل بكل شيء + if (Get.isRegistered()) { + // استدعاء الحارس (سيتجاهل الأمر إذا كان السوكيت قد سبقه) + Get.find() + .processRideCancelledByDriver(message.data, source: "FCM"); + } + + // إشعار محلي (اختياري، لأن الديالوج سيظهر) if (Platform.isAndroid) { notificationController.showNotification( - 'Driver Cancelled Your Trip'.tr, - 'you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet' - .tr, - 'cancel'); + 'Trip Cancelled'.tr, 'The driver cancelled the trip.'.tr, 'cancel'); } - box.write(BoxName.parentTripSelected, false); - box.remove(BoxName.tokenParent); - - Get.find().restCounter(); - Get.offAll(() => const MapPagePassenger()); } // ... (باقي الحالات مثل Call Income, Call End, إلخ) ... // ... بنفس الطريقة ... @@ -617,7 +585,7 @@ class FirebaseMessagesController extends GetxController { Future passengerDialog(String message) { return Get.defaultDialog( barrierDismissible: false, - title: 'message From Driver'.tr, + title: message.tr, titleStyle: AppStyle.title, middleTextStyle: AppStyle.title, middleText: message.tr, diff --git a/lib/controller/firebase/notification_service.dart b/lib/controller/firebase/notification_service.dart index 233b7b2..9c8b340 100644 --- a/lib/controller/firebase/notification_service.dart +++ b/lib/controller/firebase/notification_service.dart @@ -1,41 +1,44 @@ -import 'package:Intaleq/print.dart'; -import 'package:http/http.dart' as http; import 'dart:convert'; +import 'package:http/http.dart' as http; +import 'package:get/get.dart'; // للترجمة .tr class NotificationService { - // استبدل هذا الرابط بالرابط الصحيح لملف PHP على السيرفر الخاص بك static const String _serverUrl = - 'https://syria.intaleq.xyz/intaleq/fcm/send_fcm.php'; - static const String _batchServerUrl = - 'https://syria.intaleq.xyz/intaleq/fcm/send_fcm_batch.php'; + 'https://api.intaleq.xyz/intaleq/ride/firebase/send_fcm.php'; + static Future sendNotification({ required String target, required String title, required String body, - required String? category, // <-- [الإضافة الأولى] + required String category, // إلزامي للتصنيف String? tone, - List? driverList, // <-- [تعديل 1] : إضافة المتغير الجديد + List? driverList, bool isTopic = false, }) async { try { - final Map payload = { + // 1. تجهيز البيانات المخصصة (Data Payload) + Map customData = {}; + + customData['category'] = category; + + // إذا كان هناك قائمة سائقين/ركاب، نضعها هنا + if (driverList != null && driverList.isNotEmpty) { + // نرسلها كـ JSON String لأن FCM v1 يدعم String Values فقط في الـ data + customData['driverList'] = jsonEncode(driverList); + } + + // 2. تجهيز الطلب الرئيسي للسيرفر + final Map requestPayload = { 'target': target, 'title': title, 'body': body, 'isTopic': isTopic, + 'data': + customData, // 🔥🔥 التغيير الجوهري: وضعنا البيانات داخل "data" 🔥🔥 }; - if (category != null) { - payload['category'] = - category; // <-- [الإضافة الثانية] (النص الثابت للتحكم) - } - // نضيف النغمة فقط إذا لم تكن فارغة - if (tone != null) { - payload['tone'] = tone; - } - // <-- [تعديل 2] : نضيف قائمة البيانات بعد تشفيرها إلى JSON - if (driverList != null) { - payload['driverList'] = jsonEncode(driverList); + if (tone != null) { + requestPayload['tone'] = tone; } final response = await http.post( @@ -43,71 +46,18 @@ class NotificationService { headers: { 'Content-Type': 'application/json; charset=UTF-8', }, - body: jsonEncode(payload), + body: jsonEncode(requestPayload), ); if (response.statusCode == 200) { print('✅ Notification sent successfully.'); - print('Server Response: ${response.body}'); + // print('Response: ${response.body}'); } else { - print( - '❌ Failed to send notification. Status code: ${response.statusCode}'); - print('Server Error: ${response.body}'); + print('❌ Failed to send notification. Code: ${response.statusCode}'); + print('Error Body: ${response.body}'); } } catch (e) { - print('❌ An error occurred while sending notification: $e'); - } - } - - /// [4] !! دالة جديدة مضافة !! - /// ترسل إشعاراً "مجمعاً" إلى قائمة من السائقين - static Future sendBatchNotification({ - required List targets, // <-- قائمة التوكينز - required String title, - required String body, - String? tone, - List? driverList, // <-- بيانات الرحلة (نفسها للجميع) - }) async { - // لا ترسل شيئاً إذا كانت القائمة فارغة - if (targets.isEmpty) { - Log.print('⚠️ [Batch] No targets to send to. Skipped.'); - return; - } - - try { - final Map payload = { - // "targets" بدلاً من "target" - 'targets': jsonEncode(targets), // تشفير قائمة التوكينز - 'title': title, - 'body': body, - }; - - if (tone != null) { - payload['tone'] = tone; - } - - // بيانات الرحلة (DriverList) - if (driverList != null) { - payload['driverList'] = jsonEncode(driverList); - } - - final response = await http.post( - Uri.parse(_batchServerUrl), // <-- !! تستخدم الرابط الجديد - headers: { - 'Content-Type': 'application/json; charset=UTF-8', - }, - body: jsonEncode(payload), - ); - - if (response.statusCode == 200) { - Log.print('✅ [Batch] Notifications sent successfully.'); - Log.print('Server Response: ${response.body}'); - } else { - Log.print('❌ [Batch] Failed to send. Status: ${response.statusCode}'); - Log.print('Server Error: ${response.body}'); - } - } catch (e) { - Log.print('❌ [Batch] An error occurred: $e'); + print('❌ Error sending notification: $e'); } } } diff --git a/lib/controller/functions/audio_record1.dart b/lib/controller/functions/audio_record1.dart index cd46ad7..3c70368 100644 --- a/lib/controller/functions/audio_record1.dart +++ b/lib/controller/functions/audio_record1.dart @@ -78,7 +78,7 @@ class AudioRecorderController extends GetxController { // Stop recording Future stopRecording() async { - await recorder.stop(); + recorder.stop(); isRecording = false; isPaused = false; update(); diff --git a/lib/controller/functions/crud.dart b/lib/controller/functions/crud.dart index 6e63ba5..5dd615f 100644 --- a/lib/controller/functions/crud.dart +++ b/lib/controller/functions/crud.dart @@ -100,9 +100,8 @@ class CRUD { } final sc = response.statusCode; - Log.print('sc: ${sc}'); - Log.print('request: ${response.request}'); final body = response.body; + Log.print('request: ${response.request}'); Log.print('body: ${body}'); // 2xx @@ -188,9 +187,9 @@ class CRUD { 'Bearer ${r(box.read(BoxName.jwt)).toString().split(Env.addd)[0]}' }, ); - Log.print('response.body: ${response.body}'); - Log.print('response.request: ${response.request}'); - Log.print('response.payload: ${payload}'); + Log.print('request: ${response.request}'); + Log.print('body: ${response.body}'); + Log.print('payload: ${payload}'); if (response.statusCode == 200) { var jsonData = jsonDecode(response.body); diff --git a/lib/controller/functions/launch.dart b/lib/controller/functions/launch.dart index e0c2a7e..dfd618d 100644 --- a/lib/controller/functions/launch.dart +++ b/lib/controller/functions/launch.dart @@ -11,19 +11,17 @@ Future makePhoneCall(String phoneNumber) async { // 1. تنظيف الرقم (إزالة المسافات والفواصل) String formattedNumber = phoneNumber.replaceAll(RegExp(r'\s+'), ''); - // 2. التحقق من طول الرقم لتحديد طريقة التنسيق + // 2. منطق التنسيق (مع الحفاظ على الأرقام القصيرة مثل 112 كما هي) if (formattedNumber.length > 6) { - // --- التعديل المطلوب --- if (formattedNumber.startsWith('09')) { - // إذا كان يبدأ بـ 09 (رقم موبايل سوري محلي) - // نحذف أول خانة (الصفر) ونضيف +963 + // إذا كان يبدأ بـ 09 (رقم موبايل سوري محلي) -> +963 formattedNumber = '+963${formattedNumber.substring(1)}'; } else if (!formattedNumber.startsWith('+')) { - // إذا لم يكن يبدأ بـ + (ولم يكن يبدأ بـ 09)، نضيف + في البداية - // هذا للحفاظ على منطقك القديم للأرقام الدولية الأخرى + // إذا لم يكن دولياً ولا محلياً معروفاً -> إضافة + فقط formattedNumber = '+$formattedNumber'; } } + // ملاحظة: الأرقام القصيرة (مثل 112) ستتجاوز الشرط أعلاه وتبقى "112" وهو الصحيح // 3. التنفيذ (Launch) final Uri launchUri = Uri( @@ -31,8 +29,19 @@ Future makePhoneCall(String phoneNumber) async { path: formattedNumber, ); - if (await canLaunchUrl(launchUri)) { - await launchUrl(launchUri); + try { + // استخدام LaunchMode.externalApplication هو الحل الجذري لمشاكل الـ Intent + // لأنه يجبر النظام على تسليم الرابط لتطبيق الهاتف بدلاً من محاولة فتحه داخل تطبيقك + if (await canLaunchUrl(launchUri)) { + await launchUrl(launchUri, mode: LaunchMode.externalApplication); + } else { + // في بعض الأجهزة canLaunchUrl تعود بـ false مع الـ tel ومع ذلك يعمل launchUrl + // لذا نجرب الإطلاق المباشر كاحتياط + await launchUrl(launchUri, mode: LaunchMode.externalApplication); + } + } catch (e) { + // طباعة الخطأ في حال الفشل التام + print("Error launching call: $e"); } } diff --git a/lib/controller/home/device_performance.dart b/lib/controller/home/device_performance.dart new file mode 100644 index 0000000..9bffc4b --- /dev/null +++ b/lib/controller/home/device_performance.dart @@ -0,0 +1,127 @@ +import 'dart:io'; +import 'package:device_info_plus/device_info_plus.dart'; + +class DevicePerformanceManager { + /// القائمة البيضاء لموديلات الهواتف القوية (Flagships Only) + /// أي هاتف يبدأ موديله بأحد هذه الرموز سيعتبر قوياً + static const List _highEndSamsungModels = [ + 'SM-S', // سلسلة Galaxy S21, S22, S23, S24 (S901, S908, S911...) + 'SM-F', // سلسلة Fold و Flip (Z Fold, Z Flip) + 'SM-N9', // سلسلة Note 9, Note 10, Note 20 + 'SM-G9', // سلسلة S10, S20 (G970, G980...) + ]; + + static const List _highEndGoogleModels = [ + 'Pixel 6', + 'Pixel 7', + 'Pixel 8', + 'Pixel 9', + 'Pixel Fold' + ]; + + static const List _highEndHuaweiModels = [ + 'ELS-', // P40 Pro + 'ANA-', // P40 + 'HMA-', // Mate 20 + 'LYA-', // Mate 20 Pro + 'VOG-', // P30 Pro + 'ELE-', // P30 + 'NOH-', // Mate 40 Pro + 'AL00', // Mate X series (some) + ]; + + static const List _highEndXiaomiModels = [ + '2201122', // Xiaomi 12 series patterns often look like this + '2210132', // Xiaomi 13 + '2304FPN', // Xiaomi 13 Ultra + 'M2007J1', // Mi 10 series + 'M2102K1', // Mi 11 Ultra + ]; + + static const List _highEndOnePlusModels = [ + 'GM19', // OnePlus 7 + 'HD19', // OnePlus 7T + 'IN20', // OnePlus 8 + 'KB20', // OnePlus 8T + 'LE21', // OnePlus 9 + 'NE22', // OnePlus 10 + 'PHB110', // OnePlus 11 + 'CPH', // Newer OnePlus models + ]; + + /// دالة الفحص الرئيسية + static Future isHighEndDevice() async { + // 1. الآيفون دائماً قوي (نظام الرسوميات فيه متفوق حتى في الموديلات القديمة) + if (Platform.isIOS) return true; + + if (Platform.isAndroid) { + try { + final androidInfo = await DeviceInfoPlugin().androidInfo; + + String manufacturer = androidInfo.manufacturer.toLowerCase(); + String model = + androidInfo.model.toUpperCase(); // نحوله لحروف كبيرة للمقارنة + String hardware = androidInfo.hardware.toLowerCase(); // المعالج + + // --- الفحص العكسي (الحظر المباشر) --- + // إذا كان المعالج من الفئات الضعيفة جداً المشهورة في الهواتف المقلدة + // mt65xx, mt6735, sc77xx هي معالجات رخيصة جداً + if (hardware.contains('mt65') || + hardware.contains('mt6735') || + hardware.contains('sc77')) { + return false; + } + + // --- فحص القائمة البيضاء (Whitelist) --- + + // 1. Samsung Flagships + if (manufacturer.contains('samsung')) { + for (var prefix in _highEndSamsungModels) { + if (model.startsWith(prefix)) return true; + } + } + + // 2. Google Pixel (6 and above) + if (manufacturer.contains('google')) { + for (var prefix in _highEndGoogleModels) { + if (model.contains(prefix.toUpperCase())) return true; + } + } + + // 3. Huawei Flagships + if (manufacturer.contains('huawei')) { + for (var prefix in _highEndHuaweiModels) { + if (model.startsWith(prefix)) return true; + } + } + + // 4. OnePlus Flagships + if (manufacturer.contains('oneplus')) { + for (var prefix in _highEndOnePlusModels) { + if (model.startsWith(prefix)) return true; + } + } + + // 5. Xiaomi Flagships + if (manufacturer.contains('xiaomi') || + manufacturer.contains('redmi') || + manufacturer.contains('poco')) { + // شاومي تسميتها معقدة، لذا سنعتمد على فحص الرام كعامل مساعد هنا فقط + // لأن هواتف شاومي القوية عادة لا تزور الرام + // الرام يجب أن يكون أكبر من 6 جيجا (بايت) + double ramGB = (androidInfo.availableRamSize) / (1024 * 1024 * 1024); + if (ramGB > 7.5) + return true; // 8GB RAM or more is usually safe for Xiaomi high-end + } + + // إذا لم يكن من ضمن القوائم أعلاه، نعتبره جهازاً متوسطاً/ضعيفاً ونعرض الرسم البسيط + return false; + } catch (e) { + // في حال حدوث خطأ في الفحص، نعود للوضع الآمن (الرسم البسيط) + return false; + } + } + + return false; + } +} diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart index 509eb98..7985c28 100644 --- a/lib/controller/home/map_passenger_controller.dart +++ b/lib/controller/home/map_passenger_controller.dart @@ -14,10 +14,10 @@ import 'package:http/http.dart' as http; import 'package:Intaleq/constant/univeries_polygon.dart'; import 'package:Intaleq/controller/firebase/local_notification.dart'; -import 'package:Intaleq/controller/functions/encrypt_decrypt.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter_confetti/flutter_confetti.dart'; -import 'package:vector_math/vector_math.dart' show radians, degrees; +import 'package:socket_io_client/socket_io_client.dart' as IO; +import 'package:vector_math/vector_math.dart' show radians; import 'package:Intaleq/controller/functions/tts.dart'; import 'package:Intaleq/views/home/map_page_passenger.dart'; @@ -46,7 +46,6 @@ import '../../models/model/painter_copoun.dart'; import '../../print.dart'; import '../../views/home/map_widget.dart/cancel_raide_page.dart'; import '../../views/home/map_widget.dart/car_details_widget_to_go.dart'; -import '../../views/home/map_widget.dart/searching_captain_window.dart'; import '../../views/home/map_widget.dart/select_driver_mishwari.dart'; import '../../views/widgets/elevated_btn.dart'; import '../../views/widgets/error_snakbar.dart'; @@ -59,10 +58,9 @@ import '../functions/launch.dart'; import '../functions/package_info.dart'; import '../functions/secure_storage.dart'; import '../payment/payment_controller.dart'; -import '../rate/rate_conroller.dart'; import 'decode_polyline_isolate.dart'; import 'deep_link_controller.dart'; -import 'device_tier.dart'; +import 'device_performance.dart'; import 'vip_waitting_page.dart'; enum RideState { @@ -295,13 +293,961 @@ class MapPassengerController extends GetxController { final int _searchTimeoutSeconds = 60; // مهلة البحث قبل عرض خيار زيادة السعر final int _notifyDriversIntervalSeconds = 25; // إرسال إشعار للسائقين كل 25 ثانية + // متغير لمنع أي عمليات تحديث أثناء التقييم + bool _isRatingScreenOpen = false; // --- إضافة جديدة: متغيرات لإدارة البحث المتوسع --- int _currentSearchPhase = 0; // لتتبع المرحلة الحالية للبحث + bool _isFetchingDriverLocation = false; // متغير لمنع تكرار الطلب + +// === استبدل initSocket بالكامل === + late IO.Socket socket; + bool isSocketConnected = false; + int _reconnectAttempts = 0; + final int _maxReconnectAttempts = 5; + Timer? _reconnectTimer; + var currentRideId; +// لتخزين نقاط مسار السائق الحالية للمقارنة + List _currentDriverRoutePoints = []; + + final Map _pollingIntervals = { + RideState.noRide: 6, + RideState.searching: 5, + RideState.driverApplied: 10, + RideState.driverArrived: 8, + RideState.inProgress: 6, + RideState.cancelled: 3600, + RideState.finished: 3600, + RideState.preCheckReview: 3600, + }; + // لمنع التكرار (عشان ما يعمل 100 طلب في نفس اللحظة) + bool _isRecalculatingRoute = false; +// متغير لمراقبة صحة السوكيت + DateTime? _lastSocketLocationTime; + // مسافة السماحية (مثلاً 150 متر) قبل اعتبار السائق "خارج المسار" + final double _deviationThresholdMeters = 150.0; +// ... (باقي الـ Imports) + +// متغيرات التحكم + Timer? _locationPollingTimer; // تايمر مخصص للموقع فقط + +// ============================================================================== +// 1. الدالة الرئيسية لتأسيس الاتصال (تستدعى عند بدء البحث startSearchingForDriver) +// ============================================================================== + void initConnectionWithSocket() { + if (isSocketConnected && socket != null) return; + + String passengerId = box.read(BoxName.passengerID).toString(); + Log.print("🔌 Initializing Socket for Passenger: $passengerId"); + + socket = IO.io( + AppLink.serverSocket, + IO.OptionBuilder() + .setTransports(['websocket']) + .disableAutoConnect() + .setQuery({'id': passengerId}) + .setReconnectionAttempts(5) + .setReconnectionDelay(2000) + .build(), + ); + + socket.connect(); + + // ✅ معالج الاتصال + socket.onConnect((_) { + Log.print("✅ Socket Connected Successfully"); + isSocketConnected = true; + _reconnectAttempts = 0; // إعادة تعيين عداد المحاولات + update(); + }); + + // ⚠️ معالج الانقطاع + socket.onDisconnect((_) { + Log.print("⚠️ Socket Disconnected"); + isSocketConnected = false; + + // تفعيل Polling أسرع كـ Fallback + if (_isActiveRideState()) { + Log.print("🔄 Switching to Fast Polling Mode (6s interval)"); + _startMasterTimerWithInterval(4); + } + update(); + }); + + // ❌ معالج الأخطاء + socket.onError((error) { + Log.print("❌ Socket Error: $error"); + isSocketConnected = false; + }); + + // 📩 معالج تحديثات الحالة + socket.on('ride_status_change', (data) { + Log.print("📩 Socket Event: ride_status_change -> $data"); + _handleRideStatusChangeWithSocket(data); + }); + + // 📍 معالج موقع السائق + socket.on('driver_location_update', (data) { + handleDriverLocationUpdate(data); + }); + } + +// دالة مساعدة + bool _isActiveRideState() { + return currentRideState.value == RideState.searching || + currentRideState.value == RideState.driverApplied || + currentRideState.value == RideState.driverArrived || + currentRideState.value == RideState.inProgress; + } + +// ============================================================================== +// 2. العقل المدبر: توجيه الحالات +// ============================================================================== + void _handleRideStatusChangeWithSocket(dynamic data) { + if (data == null || data['status'] == null) return; + + String newStatus = data['status'].toString().toLowerCase(); + Log.print("🔔 Socket Status Update: $newStatus"); +// استخراج بيانات السائق إذا توفرت (تأتي من acceptRide.php) + Map? driverInfo; + if (data['driver_info'] != null && data['driver_info'] is Map) { + driverInfo = Map.from(data['driver_info']); + } + switch (newStatus) { + case 'accepted': // أو apply/applied حسب تسمية السيرفر + _onDriverAcceptedWithSocket(data, driverData: driverInfo); + break; + + case 'arrived': + _onDriverArrivedWithSocket(); + break; + + case 'started': // أو begin + _onRideStartedWithSocket(); + break; + + case 'finished': // أو ended + _onRideFinishedWithSocket(data); + break; + + case 'cancelled': + _onRideCancelledWithSocket(data); + break; + + case 'no_drivers_found': + showNoDriverDialog(); + break; + } + } + +// ============================================================================== +// 3. دوال المعالجة التفصيلية (Actions) +// ============================================================================== + void showNoDriverDialog() { + Get.defaultDialog( + title: "No Drivers Found".tr, + middleText: + "Sorry, there are no cars available of this type right now.".tr, + textConfirm: "Refresh Map".tr, + textCancel: "Cancel".tr, + confirmTextColor: Colors.white, + onConfirm: () { + Get.back(); // إغلاق الديالوج + restCounter(); + stopAllTimers(); + Get.offAll(() => MapPagePassenger()); // إعادة تحميل صفحة الخريطة + }, + ); + } + +// أ) عند قبول السائق للرحلة + // أ) عند قبول السائق للرحلة (معدلة) + // دالة الاستقبال من السوكيت (تصبح مجرد محول) + void _onDriverAcceptedWithSocket(dynamic data, + {Map? driverData}) { + // استخراج البيانات وتمريرها للدالة الموحدة + Map? info = driverData; + + // دعم الهيكلية الجديدة + if (info == null && data['driver_info'] != null) { + info = Map.from(data['driver_info']); + } + // دعم الهيكلية القديمة (إن وجدت) + else if (info == null && data['driverList'] != null) { + // تحويل driverList إلى map إذا لزم الأمر + } + + processRideAcceptance(driverData: info, source: "Socket"); + } + + void _fillDriverDataLocally(Map data) { + try { + // تعبئة المتغيرات بناءً على أسماء الحقول في acceptRide.php + driverId = data['driver_id']?.toString() ?? ''; + driverPhone = data['phone']?.toString() ?? ''; + + String fName = data['first_name']?.toString() ?? ''; + String lName = data['last_name']?.toString() ?? ''; + passengerName = lName.isNotEmpty + ? "$fName $lName" + : fName; // (هنا المتغير اسمه passengerName لكنه يحمل اسم السائق في الكود لديك) + driverName = passengerName; + + make = data['make']?.toString() ?? ''; + model = data['model']?.toString() ?? ''; + carColor = data['color']?.toString() ?? ''; + colorHex = data['color_hex']?.toString() ?? ''; + licensePlate = data['car_plate']?.toString() ?? ''; + carYear = data['year']?.toString() ?? ''; + + driverRate = data['ratingDriver']?.toString() ?? '5.0'; + driverToken = data['token']?.toString() ?? ''; + + // إذا كان هناك أي بيانات أخرى تحتاجها الواجهة + update(); + } catch (e) { + Log.print("Error parsing socket driver data: $e"); + } + } + +// دالة موحدة: تجلب المسار + الوقت + المسافة + ترسم الخط + تضبط الكاميرا + Future calculateDriverToPassengerRoute( + LatLng driverPos, LatLng passengerPos) async { + // 1. تجهيز الرابط (نفس API الـ Direction) + // نستخدم overview=full للحصول على الرسمة، و steps=false لتخفيف البيانات + String dynamicApiUrl = + 'https://routesjo.intaleq.xyz/route/v1/driving/${driverPos.longitude},${driverPos.latitude};${passengerPos.longitude},${passengerPos.latitude}'; + + var uri = Uri.parse('$dynamicApiUrl?steps=false&overview=full'); + Log.print('📍 Calculating Driver Route: $uri'); + + try { + final response = await http.get(uri).timeout(const Duration(seconds: 20)); + + if (response.statusCode == 200) { + final responseData = json.decode(response.body); + + if (responseData['code'] == 'Ok' && + responseData['routes'] != null && + responseData['routes'].isNotEmpty) { + var routeData = responseData['routes'][0]; + + // 2. تحديث المتغيرات (المسافة والوقت) + // نستخدم المعامل kDurationScalar لضبط الوقت كما في getDirectionMap + double durationSecondsRaw = (routeData['duration'] as num).toDouble(); + int finalDurationSeconds = + (durationSecondsRaw * kDurationScalar).toInt(); + double distanceMeters = (routeData['distance'] as num).toDouble(); + + timeToPassengerFromDriverAfterApplied = finalDurationSeconds; + remainingTimeToPassengerFromDriverAfterApplied = finalDurationSeconds; + distanceByPassenger = distanceMeters.toStringAsFixed(0); + + // تحديث نصوص الواجهة + int minutes = (finalDurationSeconds / 60).floor(); + int seconds = finalDurationSeconds % 60; + stringRemainingTimeToPassenger = + '$minutes:${seconds.toString().padLeft(2, '0')}'; + + Log.print( + '✅ Driver Route Info: $minutes min, ${distanceMeters.toInt()} m'); + + // 3. معالجة الرسم (Polyline) + String pointsString = routeData['geometry'] ?? ""; + if (pointsString.isNotEmpty) { + List decodedPoints = + await compute(decodePolylineIsolate, pointsString); +// حفظ نسخة للمقارنة + _currentDriverRoutePoints = decodedPoints; + // إزالة خط مسار السائق القديم فقط + polyLines + .removeWhere((p) => p.polylineId.value == 'driver_track_line'); + + // إضافة الخط الجديد (بستايل مميز للسائق) + polyLines.add(Polyline( + polylineId: const PolylineId('driver_track_line'), + points: decodedPoints, + color: Colors.black87, // لون مختلف عن مسار الرحلة الأساسي + width: 5, + jointType: JointType.round, + startCap: Cap.roundCap, + endCap: Cap.roundCap, + patterns: [PatternItem.dash(10), PatternItem.gap(10)], // خط منقط + )); + } + + // 4. ضبط الكاميرا لتشمل السائق والراكب + _fitCameraToPoints(driverPos, passengerPos); + + update(); // تحديث واحد للكل + } + } + } catch (e) { + Log.print('❌ Error calculating driver route: $e'); + } + } + + Future _checkAndRecalculateIfDeviated(LatLng driverPos) async { + // 1. شروط الخروج السريع + if (_isRecalculatingRoute || _currentDriverRoutePoints.isEmpty) return; + + // 2. حساب المسافة لأقرب نقطة في المسار (خوارزمية سريعة) + // نستخدم مكتبة Geolocator أو حساب رياضي بسيط + double minDistance = 100000.0; + + // لتقليل الحمل، لا نفحص كل النقاط، نفحص عينة (كل 5 نقاط مثلاً) أو الكل إذا المسار قصير + for (var point in _currentDriverRoutePoints) { + double dist = Geolocator.distanceBetween(driverPos.latitude, + driverPos.longitude, point.latitude, point.longitude); + if (dist < minDistance) minDistance = dist; + } + + // 3. اتخاذ القرار + if (minDistance > _deviationThresholdMeters) { + Log.print("⚠️ Driver deviated ($minDistance m). Recalculating route..."); + + _isRecalculatingRoute = true; + + // إعادة حساب المسار من موقع السائق الجديد + await calculateDriverToPassengerRoute(driverPos, passengerLocation); + + _isRecalculatingRoute = false; + } + } + +// ب) عند وصول السائق + void _onDriverArrivedWithSocket() { + Log.print("🚖 Driver Arrived (Socket)"); + + processDriverArrival("Socket"); + } + +// ج) عند بدء الرحلة + void _onRideStartedWithSocket() { + Log.print("🚀 Ride Started (Socket)"); + processRideBegin(source: "Socket"); + } + +// ربط السوكيت + // د) عند انتهاء الرحلة (Socket Listener) + void _onRideFinishedWithSocket(dynamic data) { + Log.print("🏁 Ride Finished (Socket)"); + + // نحاول استخراج DriverList من البيلود القادم من PHP + // في finish_ride_updates.php أسميناه 'DriverList' + var rawList = data['DriverList']; + + List listToSend = []; + + if (rawList != null) { + if (rawList is List) { + listToSend = rawList; + } else if (rawList is String) { + // احتياطاً لو وصل كنص + try { + listToSend = jsonDecode(rawList); + } catch (_) {} + } + } + + // إذا كانت القائمة فارغة، نحاول بناءها من البيانات المتفرقة (Fallback) + if (listToSend.isEmpty && data['price'] != null) { + listToSend = [ + driverId, // 0 + rideId, // 1 + driverToken, // 2 + data['price'].toString() // 3 + ]; + } + + // استدعاء المعالج الموحد + processRideFinished(listToSend, source: "Socket"); + } + +// هـ) عند الإلغاء + void _onRideCancelledWithSocket(dynamic data) { + processRideCancelledByDriver(data, source: "Socket"); + } + +// ============================================================================== +// 4. إدارة تتبع الموقع (Polling) - مفصولة عن السوكيت +// ============================================================================== +// متغير لمنع التكرار (Race Condition Guard) + bool _isCancelProcessed = false; + + /// **معالجة إلغاء الرحلة الموحدة (Gatekeeper)** + /// + /// تستدعى من [Socket] أو [FCM] عند قيام السائق بإلغاء الرحلة. + /// تضمن عدم تضارب الإشعارات وتوحد تجربة المستخدم. + void processRideCancelledByDriver(dynamic data, {String source = "Unknown"}) { + if (_isCancelProcessed) return; + + _isCancelProcessed = true; + stopAllTimers(); + if (Get.isDialogOpen == true) Get.back(); + + Get.defaultDialog( + title: "Sorry 😔".tr, // استخدام المفتاح الإنجليزي + titleStyle: + const TextStyle(color: Colors.red, fontWeight: FontWeight.bold), + barrierDismissible: false, + content: Column( + children: [ + const Icon(Icons.cancel_presentation, + size: 50, color: Colors.redAccent), + const SizedBox(height: 10), + Text( + "The driver cancelled the trip for an emergency reason.\nDo you want to search for another driver immediately?" + .tr, + textAlign: TextAlign.center, + ), + ], + ), + actions: [ + TextButton( + onPressed: () { + Get.back(); + handleNoDriverFound(); + }, + child: Text("Cancel Trip".tr, + style: const TextStyle(color: Colors.grey)), + ), + ElevatedButton.icon( + style: + ElevatedButton.styleFrom(backgroundColor: AppColor.primaryColor), + icon: const Icon(Icons.refresh, color: Colors.white), + label: Text("Search for another driver".tr, + style: const TextStyle(color: Colors.white)), + onPressed: () { + Get.back(); + retrySearchForDrivers(); + }, + ), + ], + ); + } + + void handleNoDriverFound() { + stopAllTimers(); + _isCancelProcessed = false; + currentRideState.value = RideState.noRide; + Get.offAll(() => const MapPagePassenger()); + + Get.defaultDialog( + title: "We apologize 😔".tr, + middleText: "No drivers found at the moment.\nPlease try again later.".tr, + confirm: ElevatedButton( + onPressed: () => Get.back(), + child: Text("Ok".tr), + ), + ); + } + + /// **إعادة البحث عن سائقين (Retry Search)** + /// + /// تقوم باستدعاء السكربت لإعادة تفعيل الرحلة وبدء عداد البحث من جديد. + void retrySearchForDrivers() async { + _isCancelProcessed = false; + isSearchingWindow = true; + currentRideState.value = RideState.searching; + driversStatusForSearchWindow = 'Searching for nearby drivers...'.tr; + update(); + + try { + Log.print("🔄 Retrying search for ride ID: $rideId"); + + // تجهيز البيانات المخزنة للإرسال + var payload = { + "ride_id": rideId.toString(), + "passenger_id": box.read(BoxName.passengerID).toString(), + "passenger_name": box.read(BoxName.name).toString(), + "passenger_phone": box.read(BoxName.phone).toString(), + "passenger_email": box.read(BoxName.email).toString(), + "passenger_token": box.read(BoxName.tokenFCM).toString(), + "passenger_wallet": box.read(BoxName.passengerWalletTotal).toString(), + "passenger_rating": "5.0", // أو قراءة التقييم الحقيقي إن وجد + + // قراءة البيانات من المتغيرات المحفوظة في الكنترولر أو الـ Box + "start_lat": startLocation.latitude.toString(), + "start_lng": startLocation.longitude.toString(), + "end_lat": endLocation.latitude.toString(), + "end_lng": endLocation.longitude.toString(), + "start_name": startNameAddress, + "end_name": endNameAddress, + "distance": distance.toString(), + "distance_text": distanceByPassenger ?? "", + "duration_text": durationToPassenger.toString(), + "price": totalPassenger.toString(), + "price_for_driver": costForDriver.toString(), + "car_type": box.read(BoxName.carType).toString(), + "is_wallet": Get.find().isWalletChecked.toString(), + + // الخطوات (اختياري) + "has_steps": Get.find().wayPoints.length > 1 + ? "true" + : "false", + // يمكنك إضافة الخطوات إذا كانت لديك في مصفوفة + }; + + var response = await CRUD().post( + link: "${AppLink.ride}/rides/retry_search_drivers.php", + payload: payload, + ); + + if (response['status'] == 'success') { + Log.print("✅ Search reset successfully."); + startSearchingTimer(); + } else { + mySnackbarWarning("Failed to search, please try again later".tr); + handleNoDriverFound(); + } + } catch (e) { + Log.print("Error retrying search: $e"); + mySnackbarWarning("Please check your internet connection".tr); + handleNoDriverFound(); + } + } + + Timer? _searchTimer; + + /// **بدء مؤقت البحث (Search Timer)** + /// + /// يبدأ عداداً (مثلاً 90 ثانية). إذا لم يتم قبول الرحلة خلال هذه المدة، + /// يتم إنهاء البحث واستدعاء [handleNoDriverFound]. + void startSearchingTimer() { + _searchTimer?.cancel(); + int seconds = 0; + + Log.print("⏳ Search Timer Started (90s)..."); + + _searchTimer = Timer.periodic(const Duration(seconds: 1), (timer) { + seconds++; + + // إذا تغيرت الحالة (مثلاً سائق قبل الرحلة)، نوقف العداد + if (currentRideState.value != RideState.searching) { + timer.cancel(); + return; + } + + // انتهاء الوقت (90 ثانية) + if (seconds >= 90) { + timer.cancel(); + handleNoDriverFound(); // ⏳ انتهى الوقت ولم نجد سائقاً + } + }); + } + +// متغير لمنع التكرار (Race Condition Guard) + bool _isArrivalProcessed = false; + + /// **معالجة وصول السائق الموحدة (Unified Driver Arrival Handler)** + /// + /// تقوم هذه الدالة بإدارة حدث وصول السائق إلى موقع الراكب، وتعمل كـ "حارس بوابة" (Gatekeeper) + /// لتوحيد المصادر سواء كانت من **WebSocket** أو **Firebase Notification**. + /// + /// **المهام التي تقوم بها:** + /// 1. **منع التضارب (Race Condition Guard):** تتأكد أن الحدث لم يتم تنفيذه مسبقاً لتجنب تكرار الإشعارات أو إعادة ضبط العدادات. + /// 2. **تحديث الحالة:** تغير حالة الرحلة فوراً إلى [RideState.driverArrived]. + /// 3. **تفعيل الواجهة:** تظهر ديالوج "السائق وصل" وتبدأ عداد الانتظار المجاني (5 دقائق). + /// + /// * [source] : نص يوضح مصدر الاستدعاء (مثل "Socket" أو "FCM") لأغراض التتبع (Logging). + void processDriverArrival(String source) { + // 1. الحارس: إذا تم التنفيذ سابقاً، توقف + if (currentRideState.value == RideState.driverArrived || + _isArrivalProcessed) { + Log.print("✋ Ignored Arrival from $source. Already processed."); + return; + } + + _isArrivalProcessed = true; + Log.print("🚖 Driver Arrived via $source! Processing..."); + + // 2. تحديث الحالة + currentRideState.value = RideState.driverArrived; + statusRide = 'Arrived'; + + // 3. تشغيل واجهة الوصول والعداد + driverArrivePassengerDialoge(); + startTimerDriverWaitPassenger5Minute(); + + update(); + } + +// متغير لمنع التكرار + bool _isFinishProcessed = false; + + /// **معالجة إنهاء الرحلة الموحدة (Unified Ride Finish Handler)** + /// + /// تستدعى عند استلام حدث النهاية من السوكيت أو FCM. + /// تقوم بإغلاق السوكيت، إيقاف التتبع، والانتقال لشاشة التقييم والدفع. + /// + /// * [driverList]: قائمة البيانات [driverId, rideId, token, price]. + void processRideFinished(List driverList, + {String source = "Unknown"}) { + // 1. الحارس: منع التكرار + if (currentRideState.value == RideState.finished || _isFinishProcessed) { + Log.print("✋ Ignored Finish Request from $source. Already Finished."); + return; + } + + _isFinishProcessed = true; + Log.print( + "🏁 Ride Finished via $source. Price: ${driverList.length > 3 ? driverList[3] : 'N/A'}"); + + // 2. تحديث الحالة + currentRideState.value = RideState.finished; + + // 3. تنظيف الموارد + disposeRideSocket(); // إغلاق السوكيت + _stopDriverLocationPolling(); // إيقاف تتبع الموقع + if (Get.isRegistered()) { + Get.find().stopRecording(); + } + + // إغلاق أي ديالوج سابق + if (Get.isDialogOpen == true) Get.back(); + + // 4. إشعار "لا تنسى أغراضك" + NotificationController().showNotification( + 'Alert'.tr, + "Please make sure not to leave any personal belongings in the car.".tr, + 'tone1', + ); + + // 5. استخراج البيانات والانتقال + if (driverList.length >= 4) { + String price = driverList[3].toString(); + + // الانتقال لصفحة التقييم + Get.offAll(() => RateDriverFromPassenger(), arguments: { + 'driverId': driverList[0].toString(), + 'rideId': driverList[1].toString(), + 'price': price + }); + } + } + + void _startDriverLocationPollingWithTimer() { + Log.print("📍 Starting Driver Location Polling (6s interval)"); + + _locationPollingTimer?.cancel(); + + // استدعاء فوري لأول مرة + // getDriverCarsLocationToPassengerAfterApplied(); + + _locationPollingTimer = Timer.periodic(Duration(seconds: 6), (timer) { + // شرط التوقف: إذا انتهت الرحلة أو ألغيت + if (currentRideState.value == RideState.finished || + currentRideState.value == RideState.cancelled || + currentRideState.value == RideState.noRide) { + timer.cancel(); + return; + } + + // جلب الموقع وتحديث الماركر + getDriverCarsLocationToPassengerAfterApplied(); + }); + } + + void _stopDriverLocationPolling() { + Log.print("🛑 Stopping Location Polling"); + _locationPollingTimer?.cancel(); + _locationPollingTimer = null; + } + +// ============================================================================== +// 5. التنظيف والإغلاق +// ============================================================================== + void disposeRideSocket() { + if (socket != null) { + socket!.disconnect(); + socket!.dispose(); + // socket = null; + isSocketConnected = false; + Log.print("🔌 Socket Disposed"); + } + } + +// أضف هذا في دالة onClose الرئيسية للكنترولر +// override onClose() { +// disposeRideSocket(); +// _stopDriverLocationPolling(); +// super.onClose(); +// } +// === معالج جديد لموقع السائق === + void handleDriverLocationUpdate(dynamic data) { + if (!isSocketConnected || data == null) return; +// 🔥 1. تسجيل وقت استلام البيانات (تغذية الـ Watchdog) + _lastSocketLocationTime = DateTime.now(); + try { + double lat = double.tryParse(data['latitude']?.toString() ?? '0') ?? 0; + double lng = double.tryParse(data['longitude']?.toString() ?? '0') ?? 0; + double heading = double.tryParse(data['heading']?.toString() ?? '0') ?? 0; + + if (lat == 0 || lng == 0) return; + + LatLng newPos = LatLng(lat, lng); + + // تحديث القائمة (نفس المنطق القديم) + if (driverCarsLocationToPassengerAfterApplied.isEmpty) { + driverCarsLocationToPassengerAfterApplied.add(newPos); + } else { + driverCarsLocationToPassengerAfterApplied[0] = newPos; + } + + currentLocationOfDrivers = newPos; + + // تحديث الوقت المتبقي (إذا أرسله السيرفر) + if (data['eta_seconds'] != null) { + int etaSeconds = int.tryParse(data['eta_seconds'].toString()) ?? 0; + if (etaSeconds > 0) { + remainingTimeToPassengerFromDriverAfterApplied = etaSeconds; + int minutes = (etaSeconds / 60).floor(); + int seconds = etaSeconds % 60; + stringRemainingTimeToPassenger = + '$minutes:${seconds.toString().padLeft(2, '0')}'; + } + } + + // تحديث الماركر + _updateDriverMarker(newPos, heading); + + update(); + } catch (e) { + Log.print('Error in handleDriverLocationUpdate: $e'); + } + } + +// دالة مساعدة لتحديث ماركر السائق + void _updateDriverMarker(LatLng position, double heading) { + final markerId = MarkerId('driver_location'); + + int existingIndex = markers.indexWhere((m) => m.markerId == markerId); + + BitmapDescriptor icon = carIcon; // أو حسب نوع السيارة + + if (existingIndex != -1) { + markers[existingIndex] = markers[existingIndex].copyWith( + positionParam: position, + rotationParam: heading, + ); + } else { + markers.add(Marker( + markerId: markerId, + position: position, + rotation: heading, + icon: icon, + anchor: const Offset(0.5, 0.5), + infoWindow: InfoWindow(title: passengerName), + )); + } + } + +// === إضافة متغير للتحكم === + bool _isUsingFallback = false; + + void _startPollingFallback() { + if (_isUsingFallback) return; + + Log.print('🔄 Starting Polling Fallback Mode'); + _isUsingFallback = true; + + // استخدام _handleRideState الموجود (كما كان) + _startMasterTimer(); + } + + void handleActiveRideOnStartup(dynamic data) { + try { + if (data == null || data['has_active_ride'] != true) { + Log.print('[Startup] No active ride'); + currentRideState.value = RideState.noRide; + _startMasterTimer(); + return; + } + + Log.print('[Startup] ✅ Active ride found!'); + + var rideData = data['ride']; + rideId = rideData['ride_id'].toString(); + currentRideId = rideId; + driverId = rideData['driver_id']?.toString() ?? ''; + + String status = rideData['status']?.toString().toLowerCase() ?? ''; + + // تحديد الحالة + if (status == 'waiting' || status == 'searching') { + currentRideState.value = RideState.searching; + isSearchingWindow = true; + } else if (status == 'apply' || status == 'applied') { + currentRideState.value = RideState.driverApplied; + statusRide = 'Apply'; + + // الاشتراك في موقع السائق + socket.emit('subscribe_driver_location', { + 'ride_id': rideId, + 'driver_id': driverId, + }); + + // استعادة بيانات السائق + if (rideData['driver_info'] != null) { + var dInfo = rideData['driver_info']; + passengerName = dInfo['first_name']?.toString() ?? ''; + driverPhone = dInfo['phone']?.toString() ?? ''; + model = dInfo['model']?.toString() ?? ''; + licensePlate = dInfo['license_plate']?.toString() ?? ''; + } + } else if (status == 'arrived') { + currentRideState.value = RideState.driverArrived; + statusRide = 'Arrived'; + isDriverArrivePassenger = true; + } else if (status == 'begin' || status == 'started') { + currentRideState.value = RideState.inProgress; + statusRide = 'Begin'; + rideTimerBegin = true; + + // استعادة Polyline + if (rideData['polyline'] != null) { + _restorePolyline(rideData['polyline']); + } + + rideIsBeginPassengerTimer(); + } + + update(); + _startMasterTimer(); // للـ Safety Checks + } catch (e) { + Log.print('[Startup] Error: $e'); + currentRideState.value = RideState.noRide; + _startMasterTimer(); + } + } + + Future _restorePolyline(String polylineString) async { + try { + List points = + await compute(decodePolylineIsolate, polylineString); + + polylineCoordinates.clear(); + polylineCoordinates.addAll(points); + + polyLines.clear(); + polyLines.add(Polyline( + polylineId: PolylineId('restored_trip'), + points: polylineCoordinates, + width: 10, + color: Colors.blue, + )); + + update(); + } catch (e) { + Log.print('Error restoring polyline: $e'); + } + } + +// متغير لمنع التكرار (Race Condition Guard) + bool _isAcceptanceProcessed = false; + + // ============================================================================== + // الدالة الموحدة لمعالجة القبول (من السوكيت أو FCM) + // ============================================================================== + Future processRideAcceptance( + {Map? driverData, required String source}) async { + // 1. الحماية: إذا تم المعالجة مسبقاً، تجاهل + // نستثني حالة واحدة: إذا كنا في وضع البحث (Searching) نقبل الأمر + // إذا كنا في driverApplied، نتجاهل الأمر + if (currentRideState.value != RideState.searching && + _isAcceptanceProcessed) { + Log.print("✋ Ignored Acceptance from $source. Already processed."); + return; + } + + _isAcceptanceProcessed = true; // قفل الباب + Log.print("🚀 Winner: $source triggered acceptance! Processing..."); + + // 2. إيقاف جميع التايمرات القديمة فوراً + _masterTimer?.cancel(); + // stopSearchingTimer(); // إذا كان لديك تايمر للبحث + + // 3. تحديث الحالة في الواجهة + currentRideState.value = RideState.driverApplied; + statusRide = 'Apply'; + isSearchingWindow = false; + + // 4. معالجة البيانات (تعبئة المتغيرات) + if (driverData != null && driverData.isNotEmpty) { + Log.print("📥 Populating Data from $source payload..."); + _fillDriverDataLocally(driverData); + } else { + Log.print("⚠️ No Data in Payload. Fallback to API."); + await getUpdatedRideForDriverApply(rideId); + } + + // إشعارات (الأسعار، الأمان...) + _showRideStartNotifications(); + + update(); // تحديث الواجهة لإظهار بيانات السائق + + // 5. 🔥 العمليات الجغرافية (المسار والوقت) 🔥 + + // أ) جلب موقع السائق الأولي + // await getDriverCarsLocationToPassengerAfterApplied();// stop this to use socket update + _startSocketWatchdog(); + // ب) رسم المسار وحساب الوقت + if (driverCarsLocationToPassengerAfterApplied.isNotEmpty) { + LatLng driverPos = driverCarsLocationToPassengerAfterApplied.last; + + // نستخدم الدالة الموحدة الجديدة للحساب والرسم + await calculateDriverToPassengerRoute(driverPos, passengerLocation); + + // ج) تشغيل التايمر المحلي (للعد التنازلي فقط) + startTimerFromDriverToPassengerAfterApplied(); + } + + // 6. بدء تتبع الموقع الدوري (Polling Backup + Smart Rerouting) + // سيبدأ العمل بعد 6 ثواني + _startDriverLocationPollingWithTimer(); + } + + Timer? _watchdogTimer; + + void _startSocketWatchdog() { + _watchdogTimer?.cancel(); + + Log.print("👀 Starting Socket Watchdog (Hybrid Mode)..."); + + // نفحص كل 5 ثواني + _watchdogTimer = Timer.periodic(const Duration(seconds: 5), (timer) async { + // شروط إيقاف الحارس (إذا انتهت الرحلة) + if (currentRideState.value != RideState.driverApplied && + currentRideState.value != RideState.inProgress) { + timer.cancel(); + return; + } + + // 1. حساب الزمن المنقضي منذ آخر تحديث سوكيت + final lastTime = _lastSocketLocationTime ?? + DateTime.now().subtract(const Duration(minutes: 1)); + final difference = DateTime.now().difference(lastTime).inSeconds; + + // 2. القرار + if (difference < 15 && isSocketConnected) { + // ✅ الوضع ممتاز: وصلنا تحديث في آخر 10 ثواني والسوكيت متصل + // لا تفعل شيئاً (وفر السيرفر والبطارية) + // Log.print("✅ Socket is healthy. Skipping API poll."); + } else { + // ⚠️ الوضع حرج: السوكيت معلق أو مفصول لأكثر من 10 ثواني + Log.print("⚠️ Socket silent for ${difference}s. Forcing API Poll..."); + + // استدعاء دالة البولينغ (لمرة واحدة) + await getDriverCarsLocationToPassengerAfterApplied(); + } + }); + } + // قائمة بأنصاف الأقطار (بالأمتار) لكل مرحلة final List _searchRadii = [ + 2400, 3000, - 4500, - 6000 + 3100 ]; // 0 ثانية، 30 ثانية، 60 ثانية // المدة الزمنية لكل مرحلة بحث (بالثواني) final int _searchPhaseDurationSeconds = 30; @@ -317,7 +1263,7 @@ class MapPassengerController extends GetxController { // === 1. حالة الرحلة والمؤقت الرئيسي (Single Source of Truth) === Rx currentRideState = RideState.noRide.obs; Timer? _masterTimer; - final int _pollingIntervalSeconds = 4; // فاصل زمني موحد للاستعلام + final int _pollingIntervalSeconds = 13; // فاصل زمني موحد للاستعلام void _startMasterTimer() { // نضمن أن مؤقت واحد فقط يعمل في أي وقت @@ -329,10 +1275,37 @@ class MapPassengerController extends GetxController { } void stopAllTimers() { + Log.print('🛑 FORCE STOP: Stopping ALL Timers and Streams 🛑'); + + // 1. إيقاف الماكينة الرئيسية _masterTimer?.cancel(); - // إذا كان لديك مؤقتات زمنية (مثل عداد الـ 5 دقائق للانتظار) قم بإلغائها هنا أيضاً - cancelTimerToPassengerFromDriverAfterApplied(); - // ... + _masterTimer = null; + + // 2. إيقاف مؤقتات تتبع السائق + timerToPassengerFromDriverAfterApplied?.cancel(); + _timer?.cancel(); + _uiCountdownTimer?.cancel(); + + // 3. إيقاف مؤقتات الخريطة + markerReloadingTimer?.cancel(); + markerReloadingTimer1?.cancel(); + markerReloadingTimer2?.cancel(); + _animationTimers.forEach((key, timer) => timer.cancel()); + _animationTimers.clear(); + + // 4. إغلاق الستريمز + if (!_rideStatusStreamController.isClosed) + _rideStatusStreamController.close(); + if (!_beginRideStreamController.isClosed) + _beginRideStreamController.close(); + if (!timerController.isClosed) timerController.close(); + + // 5. تصفير العدادات لمنع إعادة الدخول + isTimerRunning = false; + isBeginRideFromDriverRunning = false; + _isFetchingDriverLocation = false; + + update(); } final int _maxNoRideSearch = 3; // عدد المرات القصوى @@ -342,11 +1315,21 @@ class MapPassengerController extends GetxController { // !!! يرجى استبدال الدالة القديمة بالكامل بهذه الدالة الجديدة !!! // // + bool _isStateProcessing = false; Future _handleRideState(RideState state) async { + if (_isRatingScreenOpen) { + Log.print('⛔ Rating Screen is Open. Skipping Logic.'); + stopAllTimers(); // تأكيد إضافي للإيقاف + return; + } Log.print('Handling state: $state'); - int effectivePollingInterval = _pollingIntervalSeconds; + // int effectivePollingInterval = _pollingIntervalSeconds; + + // الحصول على الفاصل الزمني من الخريطة + int effectivePollingInterval = + _pollingIntervals[state] ?? _pollingIntervalSeconds; switch (state) { case RideState.noRide: @@ -365,14 +1348,14 @@ class MapPassengerController extends GetxController { Log.print('_noRideSearchCount: ${_noRideSearchCount}'); _noRideNextAllowed = now.add(Duration(seconds: _noRideIntervalSec)); String currentCarType = box.read(BoxName.carType) ?? 'yet'; - getCarsLocationByPassengerAndReloadMarker(currentCarType, 3000); + getCarsLocationByPassengerAndReloadMarker(); getNearestDriverByPassengerLocation(); break; case RideState.cancelled: Log.print('[handleRideState] Ride cancelled. Stopping polling.'); stopAllTimers(); - effectivePollingInterval = 3600; + // effectivePollingInterval = 3600; break; case RideState.preCheckReview: @@ -381,13 +1364,13 @@ class MapPassengerController extends GetxController { break; case RideState.searching: - effectivePollingInterval = 5; + // effectivePollingInterval = 5; // 1. التحقق من حالة الطلب (هل قبله أحد؟) try { String statusFromServer = await getRideStatus(rideId); if (statusFromServer == 'Apply' || statusFromServer == 'Applied') { - await processRideAcceptance(); + await processRideAcceptance(source: "Polling"); break; } } catch (e) { @@ -429,7 +1412,7 @@ class MapPassengerController extends GetxController { Log.print( '[Search Logic] Scanning for drivers. Phase: $_currentSearchPhase, Radius: $currentRadius'); // استدعاء دالة الإشعار الذكية - _findAndNotifyNearestDrivers(currentRadius); + // _findAndNotifyNearestDrivers(currentRadius); } // تحديث نصوص الواجهة @@ -445,7 +1428,7 @@ class MapPassengerController extends GetxController { break; case RideState.driverApplied: - effectivePollingInterval = 10; + // effectivePollingInterval = 10; if (!_isDriverAppliedLogicExecuted) { Log.print('[handleRideState] Execution driverApplied logic.'); rideAppliedFromDriver(true); @@ -473,236 +1456,69 @@ class MapPassengerController extends GetxController { startTimerDriverWaitPassenger5Minute(); driverArrivePassengerDialoge(); } - effectivePollingInterval = 8; + // effectivePollingInterval = 8; break; case RideState.inProgress: - effectivePollingInterval = 11; + // effectivePollingInterval = 6; + try { String statusFromServer = await getRideStatus(rideId); + + // !!! هنا التغيير الجذري !!! if (statusFromServer == 'Finished' || statusFromServer == 'finished') { - if (currentRideState.value == RideState.inProgress) { - currentRideState.value = RideState.finished; - break; - } + Log.print( + '🏁 DETECTED FINISHED: Killing processes and forcing Review.'); + + // 1. قتل العمليات فوراً + stopAllTimers(); + + // 2. تغيير الحالة الداخلية لمنع أي كود آخر من العمل + currentRideState.value = RideState.preCheckReview; + + // 3. تنظيف الواجهة + tripFinishedFromDriver(); + + // 4. استدعاء شاشة التقييم فوراً + _checkLastRideForReview(); + + return; // خروج نهائي من الدالة لمنع أي كود بالأسفل من التنفيذ } } catch (e) { - Log.print('Error polling for Finished status: $e'); + Log.print('Error polling status: $e'); } + // بقية كود التتبع العادي (لن يتم الوصول إليه إذا انتهت الرحلة) if (!_isRideBeginLogicExecuted) { _isRideBeginLogicExecuted = true; _executeBeginRideLogic(); } getDriverCarsLocationToPassengerAfterApplied(); break; - case RideState.finished: tripFinishedFromDriver(); stopAllTimers(); effectivePollingInterval = 3600; break; } - - if (_masterTimer?.tick != effectivePollingInterval) { - _masterTimer?.cancel(); - _masterTimer = - Timer.periodic(Duration(seconds: effectivePollingInterval), (_) { - _handleRideState(currentRideState.value); - }); - } + // تحديث الماكينة الرئيسية إذا تغير الفاصل الزمني + _startMasterTimerWithInterval(effectivePollingInterval); } -// Future _handleRideState(RideState state) async { -// Log.print('Handling state: $state'); -// int effectivePollingInterval = _pollingIntervalSeconds; + int _masterIntervalSeconds = -1; -// switch (state) { -// // 1. تم فصل "noRide" عن "cancelled" -// case RideState.noRide: -// final now = DateTime.now(); -// if (_noRideSearchCount >= _noRideMaxTries) { -// if (!_noRideSearchCapped) { -// _noRideSearchCapped = true; -// Log.print('[noRide] search capped at $_noRideMaxTries attempts'); -// } -// break; -// } -// if (_noRideNextAllowed != null && now.isBefore(_noRideNextAllowed!)) { -// break; -// } -// _noRideSearchCount++; -// Log.print('_noRideSearchCount: ${_noRideSearchCount}'); -// _noRideNextAllowed = now.add(Duration(seconds: _noRideIntervalSec)); -// String currentCarType = box.read(BoxName.carType) ?? 'yet'; -// getCarsLocationByPassengerAndReloadMarker(currentCarType, 3000); -// getNearestDriverByPassengerLocation(); -// break; + void _startMasterTimerWithInterval(int seconds) { + // نفس الانترفَل؟ لا تعمل شيء + if (_masterTimer != null && _masterIntervalSeconds == seconds) return; -// // 2. "cancelled" أصبحت حالة منفصلة توقف كل شيء -// case RideState.cancelled: -// Log.print('[handleRideState] Ride cancelled. Stopping polling.'); -// stopAllTimers(); // أوقف المؤقت الرئيسي -// effectivePollingInterval = 3600; // إيقاف فعلي للمؤقت -// break; + _masterIntervalSeconds = seconds; + _masterTimer?.cancel(); -// case RideState.preCheckReview: -// stopAllTimers(); -// _checkLastRideForReview(); -// break; - -// case RideState.searching: -// // ... (منطق هذا الكيس سيبقى كما هو تماماً - لا تغيير هنا) -// effectivePollingInterval = 3; -// try { -// String statusFromServer = await getRideStatus(rideId); -// if (statusFromServer == 'Apply' || statusFromServer == 'Applied') { -// await processRideAcceptance(); -// break; -// } -// } catch (e) { -// Log.print('Error polling getRideStatus: $e'); -// } -// final now = DateTime.now(); -// final int elapsedSeconds = now.difference(_searchStartTime!).inSeconds; -// if (elapsedSeconds > _totalSearchTimeoutSeconds) { -// stopAllTimers(); -// currentRideState.value = RideState.noRide; -// isSearchingWindow = false; -// update(); -// _showIncreaseFeeDialog(); -// break; -// } -// int targetPhase = -// (elapsedSeconds / _searchPhaseDurationSeconds).floor(); -// if (targetPhase >= _searchRadii.length) { -// targetPhase = _searchRadii.length - 1; -// } -// bool needsNewSearch = false; -// if (targetPhase > _currentSearchPhase) { -// _currentSearchPhase = targetPhase; -// needsNewSearch = true; -// Log.print( -// '[Search] Expanding to Phase $_currentSearchPhase (Radius: ${_searchRadii[_currentSearchPhase]}m)'); -// } else if (elapsedSeconds < effectivePollingInterval) { -// needsNewSearch = true; -// Log.print('[Search] Starting Phase 0 (Radius: ${_searchRadii[0]}m)'); -// } -// // if (needsNewSearch) { -// int currentRadius = _searchRadii[_currentSearchPhase]; -// // _findAndNotifyNearestDrivers(currentRadius); -// // } -// // (3) [!! التعديل الجوهري !!] -// // احذف 'if (needsNewSearch)' وقم بالاستدعاء مباشرة -// // هذا سيضمن أنه في كل دورة (كل 4 ثوانٍ)، يتم إعادة جلب السائقين -// Log.print( -// '[Search Polling] Finding new drivers in Phase $_currentSearchPhase (Radius: ${currentRadius}m)'); -// _findAndNotifyNearestDrivers(currentRadius); -// if (elapsedSeconds < 5) { -// driversStatusForSearchWindow = 'Your order is being prepared'.tr; -// } else if (elapsedSeconds < 15) { -// driversStatusForSearchWindow = 'Your order sent to drivers'.tr; -// } else { -// driversStatusForSearchWindow = -// 'The drivers are reviewing your request'.tr; -// } -// update(); -// break; - -// // ... -// case RideState.driverApplied: -// effectivePollingInterval = 10; // فاصل زمني مناسب -// if (!_isDriverAppliedLogicExecuted) { -// Log.print('[handleRideState] تنفيذ منطق "driverApplied" لأول مرة.'); -// rideAppliedFromDriver(true); // هذا يشغل عداد وصول السائق -// _isDriverAppliedLogicExecuted = true; -// } - -// // [!! إضافة مهمة !!] -// // استمر في التحقق من حالة الرحلة (Status) -// try { -// String statusFromServer = await getRideStatus(rideId); -// if (statusFromServer == 'Arrived') { -// Log.print('[Polling] اكتشف "Arrived". تغيير الحالة.'); -// currentRideState.value = RideState.driverArrived; -// break; // اخرج (سيتم تفعيل case driverArrived في الدورة القادمة) -// } else if (statusFromServer == 'Begin' || -// statusFromServer == 'inProgress') { -// Log.print('[Polling] اكتشف "Begin" (تجاوز حالة الوصول).'); -// // استدعاء حارس البوابة الآمن -// processRideBegin(); // هذه الدالة ستغير الحالة إلى inProgress -// break; -// } -// } catch (e) { -// Log.print('Error polling for Arrived/Begin status: $e'); -// } -// // [!! نهاية الإضافة !!] - -// getDriverCarsLocationToPassengerAfterApplied(); // استمر بجلب الموقع أيضاً -// break; -// // ... - -// case RideState.driverArrived: -// if (!_isDriverArrivedLogicExecuted) { -// _isDriverArrivedLogicExecuted = true; -// Log.print( -// '[handleRideState] اكتشف "driverArrived". بدء عداد 5 دقائق.'); -// startTimerDriverWaitPassenger5Minute(); -// driverArrivePassengerDialoge(); -// } -// effectivePollingInterval = 8; // يبقى يعمل لاكتشاف "inProgress" -// break; - -// case RideState.inProgress: -// effectivePollingInterval = 11; - -// // 3. إضافة "بحث دوري" (Polling) لاكتشاف إنهاء الرحلة -// try { -// String statusFromServer = await getRideStatus(rideId); -// if (statusFromServer == 'Finished' || -// statusFromServer == 'finished') { -// if (currentRideState.value == RideState.inProgress) { -// Log.print('[Polling] اكتشف "Finished". تغيير الحالة.'); -// currentRideState.value = RideState.finished; // غيّر الحالة -// break; // اخرج (سيتم تفعيل case finished في الدورة القادمة) -// } -// } -// } catch (e) { -// Log.print('Error polling for Finished status: $e'); -// } -// // --- نهاية الإضافة --- - -// if (!_isRideBeginLogicExecuted) { -// _isRideBeginLogicExecuted = true; -// _executeBeginRideLogic(); -// } -// getDriverCarsLocationToPassengerAfterApplied(); // استمر في تتبع الموقع -// break; - -// // 4. "finished" أصبحت حالة نهائية آمنة -// case RideState.finished: -// // إشعار FCM (الذي يملك بيانات السعر) هو المسؤول عن الانتقال للتقييم -// // هذه الحالة هي مجرد "نقطة توقف" للمؤقت. -// Log.print('[handleRideState] Ride is Finished. Stopping all activity.'); - -// // نستدعي هذه لضمان تصفير الواجهة، حتى لو فاز البحث الدوري -// tripFinishedFromDriver(); // (سنقوم بتعديل هذه الدالة في الخطوة 3) - -// stopAllTimers(); -// effectivePollingInterval = 3600; // إيقاف فعلي -// break; -// } - -// if (_masterTimer?.tick != effectivePollingInterval) { -// _masterTimer?.cancel(); -// _masterTimer = -// Timer.periodic(Duration(seconds: effectivePollingInterval), (_) { -// _handleRideState(currentRideState.value); -// }); -// } -// } -// // === 4. المنطق الجديد: فحص الرحلة الأخيرة للتقييم === + _masterTimer = Timer.periodic(Duration(seconds: seconds), (_) { + _handleRideState(currentRideState.value); + }); + } Future _checkInitialRideStatus() async { // 1. جلب الحالة من السيرفر (باستخدام getRideStatusFromStartApp) @@ -739,155 +1555,83 @@ class MapPassengerController extends GetxController { } Future _checkLastRideForReview() async { - // (يتم استدعاؤها مرة واحدة عند الدخول لحالة preCheckReview) - // 1. استعلام السيرفر للتأكد من الحاجة للتقييم - getRideStatusFromStartApp(); + Log.print('⭐ FORCE OPEN RATING PAGE (Get.to mode)'); + + // جلب البيانات + await getRideStatusFromStartApp(); + + if (rideStatusFromStartApp['data'] == null) { + currentRideState.value = RideState.noRide; + _startMasterTimer(); + return; + } + String needsReview = rideStatusFromStartApp['data']['needsReview'].toString(); if (needsReview == '1') { - // 2. إظهار Bottom Sheet للتقييم (إجبار الراكب على التقييم) - Get.to(() => RatingDriverBottomSheet(), arguments: { + _isRatingScreenOpen = true; + // 1. تجهيز البيانات (Arguments) + var args = { 'driverId': rideStatusFromStartApp['data']['driver_id'].toString(), 'rideId': rideStatusFromStartApp['data']['rideId'].toString(), 'driverName': rideStatusFromStartApp['data']['driverName'], 'price': rideStatusFromStartApp['data']['price'], - }); - // showRatingScreen(); - print('>>> Showing forced Rating Bottom Sheet for ride: $rideId'); + }; - // بمجرد انتهاء التقييم، يتم تعيين الحالة إلى NO_RIDE - // onRatingSubmitted: () { - // currentRideState.value = RideState.noRide; - // _startMasterTimer(); // إعادة تشغيل المؤقت لحالة NO_RIDE - // } - } else { - // لا تحتاج تقييم، العودة لحالة لا رحلة + // 2. استخدام Get.to مع await (هذا هو الحل الجذري) + // الكود سيتوقف هنا ولن يكمل التنفيذ حتى يتم إغلاق صفحة التقييم + await Get.to( + () => RatingDriverBottomSheet(), + arguments: args, // تمرير البيانات بالطريقة التي تريدها + preventDuplicates: true, // لمنع فتح الصفحة مرتين + popGesture: false, // لمنع السحب للرجوع (في iOS) + ); + + // 3. هذا الكود لن يتنفذ إلا بعد أن يضغط المستخدم "تم" في التقييم ويغلق الصفحة + Log.print('✅ Rating Page Closed. Resetting App.'); + _isRatingScreenOpen = false; + restCounter(); currentRideState.value = RideState.noRide; - _startMasterTimer(); // إعادة تشغيل المؤقت لحالة NO_RIDE + _startMasterTimer(); // إعادة تشغيل البحث الآن فقط + } else { + currentRideState.value = RideState.noRide; + _startMasterTimer(); } } - // [داخل MapPassengerController] - -// (افترض وجود هذه الدالة لديك بالفعل) - // === 5. دوال التغيير في الحالة التي تستدعى من واجهة المستخدم === - - // void startSearchingForDriver() { - // confirmRideForAllDriverAvailable(); - // currentRideState.value = RideState.searching; - // _startMasterTimer(); - // } - - /// هذه هي الدالة التي يتم استدعاؤها من الواجهة عند ضغط المستخدم على زر تأكيد الطلب - void startSearchingForDriver() async { + // ✅ منع الضغط المزدوج + if (currentRideState.value == RideState.searching) { + return; + } + // 1. تحديث الحالة الأولية isSearchingWindow = true; + currentRideState.value = RideState.searching; + driversStatusForSearchWindow = 'Searching for nearby drivers...'.tr; update(); + // 2. إرسال الطلب للسيرفر (add_ride.php) bool rideCreated = await postRideDetailsToServer(); + if (!rideCreated) { + // فشل الإنشاء isSearchingWindow = false; + currentRideState.value = RideState.noRide; + mySnackbarWarning("Could not create ride. Please try again.".tr); update(); return; } - await _addRideToWaitingTable(); + // 3. نجاح الإنشاء: إضافة لجدول الانتظار المحلي (اختياري حسب منطقك) + _addRideToWaitingTable(); - Log.print('[startSearchingForDriver] Starting fresh search sequence.'); + // 4. 🔥 الاتصال بالسوكيت فوراً وانتظار الرد الحقيقي 🔥 + // نغلق أي اتصال سابق ونبدأ اتصالاً جديداً مخصصاً لهذه الرحلة + initConnectionWithSocket(); - // تصفير القائمة هنا ضروري لأنها رحلة جديدة - notifiedDrivers.clear(); - - _searchStartTime = DateTime.now(); - _lastDriversNotifyTime = null; - _currentSearchPhase = 0; - _isDriverAppliedLogicExecuted = false; - _isDriverArrivedLogicExecuted = false; - _isRideBeginLogicExecuted = false; - - // تنفيذ البحث الأولي فوراً - await _findAndNotifyNearestDrivers(_searchRadii[0]); - - currentRideState.value = RideState.searching; - isSearchingWindow = true; - update(); - _startMasterTimer(); - } - - /// دالة جديدة للبحث عن السائقين وإرسال الإشعارات لهم - // تم التعديل: الآن تقبل نصف القطر (radius) - /// [!! إصلاح خطأ البيلود !!] - /// تم التعديل: العودة إلى إرسال إشعارات فردية (لكل سائق) - /// لإرسال "البيلود" الصحيح الذي يتوقعه تطبيق السائق - Future _findAndNotifyNearestDrivers(int radius) async { - Log.print('[Notify Logic] Finding drivers within $radius meters...'); - - // 1. جلب السائقين وتحديث الماركر - // ملاحظة: تأكد أن هذه الدالة تعيد true/false لتدل على النجاح - await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), radius); - - // التأكد من صحة البيانات - if (dataCarsLocationByPassenger == null || - dataCarsLocationByPassenger == 'failure' || - dataCarsLocationByPassenger['message'] == null) { - Log.print('[Notify Logic] No drivers found or API failure.'); - return; - } - - int newDriversNotified = 0; - var driversList = dataCarsLocationByPassenger['message']; - - if (driversList is! List) { - Log.print('[Notify Logic] Drivers data is not a list.'); - return; - } - - // 2. المرور على كل سائق - for (var driverData in driversList) { - // حماية من البيانات الناقصة - if (driverData['driver_id'] == null || driverData['token'] == null) { - continue; - } - - String driverId = driverData['driver_id'].toString(); - String driverToken = driverData['token'].toString(); - - // تجاهل التوكن الفارغ أو غير الصالح - if (driverToken.isEmpty || driverToken == 'null') continue; - - // 3. التحقق من القائمة المرجعية (المنع الصارم للتكرار) - if (!notifiedDrivers.contains(driverId)) { - // إضافة السائق للقائمة فوراً لمنع تكرار الإرسال في الدورات القادمة - notifiedDrivers.add(driverId); - newDriversNotified++; - - // 4. بناء البيلود وإرسال الإشعار - try { - final body = constructNotificationBody(driverData); - - Log.print('[Notify Logic] Sending New Order to Driver ID: $driverId'); - - NotificationService.sendNotification( - target: driverToken, - title: 'Order', - body: endNameAddress, // عنوان الوجهة كنص مختصر - isTopic: false, - tone: 'tone1', - category: 'Order', - driverList: body); - } catch (e) { - Log.print('[Notify Logic] Error sending to driver $driverId: $e'); - // في حال فشل الإرسال، هل تريد حذفه من القائمة ليحاول مرة أخرى؟ - // يفضل عدم الحذف لتجنب الإزعاج، إلا إذا كان خطأ شبكة مؤقت. - } - } else { - // Log.print('[Notify Logic] Driver $driverId already notified. Skipping.'); - } - } - Log.print( - '[Notify Logic] Cycle finished. Sent to $newDriversNotified NEW drivers.'); + // تشغيل الماكينة الرئيسية للمراقبة (كحماية إضافية) + // _startMasterTimer(); } /// دالة لإظهار النافذة المنبثقة لزيادة السعر @@ -931,10 +1675,10 @@ class MapPassengerController extends GetxController { totalPassenger = newPrice; update(); - await CRUD().post(link: AppLink.updateRides, payload: { - "id": rideId, - "price": newPrice.toStringAsFixed(2), - }); + // await CRUD().post(link: AppLink.updateRides, payload: { + // "id": rideId, + // "price": newPrice.toStringAsFixed(2), + // }); CRUD().post(link: "${AppLink.server}/ride/rides/update.php", payload: { "id": rideId, "price": newPrice.toStringAsFixed(2), @@ -958,48 +1702,10 @@ class MapPassengerController extends GetxController { /// هذه هي الدالة الوحيدة المسؤولة عن بدء عملية قبول الرحلة. /// يتم استدعاؤها إما من إشعار Firebase أو من البحث الدوري (Polling). /// هي تحتوي على "حارس البوابة" لمنع تضارب السباق. - Future processRideAcceptance( - {String? driverIdFromFCM, String? rideIdFromFCM}) async { - // 1. حارس البوابة (منع السباق) - // هل ما زلنا في حالة البحث؟ - if (currentRideState.value != RideState.searching) { - Log.print( - '[processRideAcceptance] تم الحظر: الحالة ليست searching، تم قبول الرحلة مسبقاً.'); - return; // اخرج فوراً. العملية تمت بالفعل. - } - -// getDriverCarsLocationToPassengerAfterApplied(); - // 2. فزنا بالسباق! قم بتغيير الحالة فوراً - // هذا السطر يضمن أن أي استدعاء آخر (من الإشعار أو البحث) سيفشل في الشرط أعلاه - currentRideState.value = RideState.driverApplied; - Log.print('[processRideAcceptance] نجح: تغيير الحالة إلى driverApplied.'); - - // 3. تحديث البيانات (كما في كود الإشعار الخاص بك) - // إذا كان الاستدعاء من الإشعار، استخدم البيانات الممررة - if (driverIdFromFCM != null) { - driverId = driverIdFromFCM; - } - if (rideIdFromFCM != null) { - rideId = rideIdFromFCM; - } - // (ملاحظة: إذا كان الاستدعاء من البحث الدوري، فإن 'rideId' معروف مسبقاً) - await getUpdatedRideForDriverApply(rideId); - // 4. تحديث واجهة المستخدم (كما في كود الإشعار) - statusRide = 'Apply'; - isSearchingWindow = false; - update(); // إخفاء نافذة البحث وتحديث الواجهة - - // 5. إظهار الإشعار المحلي (توحيد المنطق) - // (نقلنا هذا من معالج الإشعارات إلى هنا) - if (Get.isRegistered()) { - Get.find().showNotification( - 'Accepted Ride'.tr, 'Driver Accepted the Ride for You'.tr, 'ding'); - } - - // 6. !! تم الحذف !! - // await rideAppliedFromDriver(true); <-- (تم حذف هذا السطر) - // الآن هذه الدالة آمنة ولا تشغل أي تايمرات. - } + /// (دالة موحدة وصارمة) + /// تستدعى من FCM أو من Polling عند اكتشاف قبول السائق + /// تمنع تضارب السباق وتضمن تنفيذ المنطق مرة واحدة فقط + /// متغير لمنع التكرار (Race Condition Guard) Future driverArrivePassengerDialoge() { return Get.defaultDialog( @@ -1029,8 +1735,35 @@ class MapPassengerController extends GetxController { /// (دالة خاصة جديدة) /// تحتوي على كل المنطق الفعلي لبدء الرحلة. + /// + Timer? _waitPassengerTimer; + static const int _waitPassengerTotalSeconds = 300; + int _waitPassengerElapsedSeconds = 0; + + /// **إيقاف عداد انتظار الراكب (Stop Wait Timer)** + /// + /// تقوم هذه الدالة بإلغاء التايمر النشط فوراً لتحرير الموارد ومنع تسريب الذاكرة. + /// + /// * [resetUI]: (اختياري) عند وضعه `true`، يتم تصفير العدادات وتحديث الواجهة لإخفاء التوقيت القديم. + void _stopWaitPassengerTimer({bool resetUI = false}) { + // 1. الإلغاء الآمن للتايمر (Safe Cancellation) + _waitPassengerTimer?.cancel(); + _waitPassengerTimer = null; + + // 2. تصفير قيم الواجهة (Reset State) + if (resetUI) { + progressTimerDriverWaitPassenger5Minute = 0.0; + remainingTimeDriverWaitPassenger5Minute = 0; + stringRemainingTimeDriverWaitPassenger5Minute = '00:00'; + + // ✅ تحديث الواجهة فوراً (GetX) + update(); + } + } + void _executeBeginRideLogic() { Log.print('[executeBeginRideLogic] تنفيذ منطق بدء الرحلة...'); + _stopWaitPassengerTimer(resetUI: true); // <-- إضافة // 1. تصفير كل عدادات ما قبل الرحلة timeToPassengerFromDriverAfterApplied = 0; @@ -1050,7 +1783,7 @@ class MapPassengerController extends GetxController { // 4. بدء مؤقتات الرحلة الفعلية rideIsBeginPassengerTimer(); // مؤقت عداد مدة الرحلة - runWhenRideIsBegin(); // مؤقت تتبع موقع السائق أثناء الرحلة + // runWhenRideIsBegin(); // مؤقت تتبع موقع السائق أثناء الرحلة // 5. إشعار الراكب (من كود الإشعار الخاص بك) NotificationController().showNotification( @@ -1060,37 +1793,48 @@ class MapPassengerController extends GetxController { 'start'); } - /// (دالة جديدة موحدة) - /// حارس البوابة الآمن لبدء الرحلة. تمنع تضارب السباق. - // - // - // !!! يرجى استبدال الدالة القديمة بالكامل بهذه الدالة الجديدة !!! - // - // + // متغير لمنع التكرار + bool _isRideStartedProcessed = false; - /// (دالة جديدة موحدة) - /// حارس البوابة الآمن لبدء الرحلة. تمنع تضارب السباق. - void processRideBegin() { - // [!! تعديل رقم 3: حل مشكلة "تم الحظر" !!] - // اقبل بدء الرحلة إذا كانت الحالة (وصل) أو (قَبِل) - // هذا يضمن أنه إذا فاتنا إشعار "الوصول" واستلمنا "البدء" مباشرة، فإنه سيعمل - if (currentRideState.value != RideState.driverArrived && - currentRideState.value != RideState.driverApplied) { - Log.print( - '[processRideBegin] تم الحظر: الحالة ليست driverArrived أو driverApplied.'); + /// **معالجة بدء الرحلة الموحدة (Unified Ride Start Handler)** + /// + /// تستدعى عند استلام حدث بدء الرحلة سواء من السوكيت أو FCM. + /// تضمن انتقال التطبيق لحالة [RideState.inProgress] مرة واحدة فقط. + void processRideBegin({String source = "Unknown"}) { + // 1. الحارس: إذا بدأت الرحلة مسبقاً، تجاهل + if (currentRideState.value == RideState.inProgress || + _isRideStartedProcessed) { + Log.print("✋ Ignored Start Request from $source. Already Started."); return; } - // تأكد من تغيير الحالة فقط إذا لم تكن كذلك بالفعل - if (currentRideState.value != RideState.inProgress) { - currentRideState.value = RideState.inProgress; - Log.print('[processRideBegin] نجح: تغيير الحالة إلى inProgress.'); + // شرط إضافي: يجب أن نكون في حالة "وصل السائق" أو "تم القبول" لبدء الرحلة + if (currentRideState.value != RideState.driverArrived && + currentRideState.value != RideState.driverApplied) { + Log.print( + "⚠️ Start Request ignored due to invalid previous state: ${currentRideState.value}"); + // يمكن السماح بها كحالة استثنائية (Fail-safe) إذا انقطع الاتصال سابقاً + // return; } - // لا تقم بتشغيل أي منطق هنا - // المنطق الفعلي (_executeBeginRideLogic) سيتم استدعاؤه بواسطة - // المؤقت الرئيسي (_handleRideState) عند اكتشاف حالة inProgress - // هذا يضمن أنه يعمل مرة واحدة فقط وبشكل آمن + _isRideStartedProcessed = true; + Log.print("🚀 Ride Started via $source! Processing..."); + + // 2. إغلاق أي ديالوج مفتوح (مثل ديالوج السائق وصل) + if (Get.isDialogOpen == true) Get.back(); + + // 3. تحديث الحالة + currentRideState.value = RideState.inProgress; + statusRide = 'Begin'; + + // 4. تصفير وإيقاف عدادات الانتظار + remainingTimeDriverWaitPassenger5Minute = 0; + _stopWaitPassengerTimer(); // دالة إيقاف تايمر الانتظار + + // 5. بدء عداد وقت الرحلة الفعلي + rideIsBeginPassengerTimer(); + + update(); } late Duration durationToAdd; @@ -1217,54 +1961,6 @@ class MapPassengerController extends GetxController { } } - increaseFeeByPassengerAndReOrder() async { - if (increaseFeeFormKey.currentState!.validate()) { - if (double.parse(increasFeeFromPassenger.text) > totalPassenger) { - totalPassenger = double.parse(increasFeeFromPassenger.text); - Get.back(); - if (rideId != 'yet') { - Log.print('rideId from increase: $rideId'); - notifyAvailableDriversAgain(); - await CRUD().post(link: AppLink.updateDriverOrder, payload: { - "order_id": rideId.toString(), // Convert to String - "status": 'waiting' - }); - - await CRUD().post(link: AppLink.updateRides, payload: { - "id": rideId.toString(), // Convert to String - "status": 'waiting' - }); - - CRUD().post(link: AppLink.updateWaitingTrip, payload: { - "id": rideId.toString(), // Convert to String - "status": 'wait' - }); - CRUD().post( - link: "${AppLink.endPoint}/ride/rides/update.php", - payload: { - "id": rideId.toString(), // Convert to String - "status": 'waiting' - }); - // if (AppLink.endPoint != AppLink.IntaleqSyriaServer) { - CRUD().post( - link: - "${AppLink.endPoint}/ride/notificationCaptain/updateWaitingTrip.php", - payload: { - "id": rideId.toString(), // Convert to String - "status": 'wait' - }); - } - tick = 0; - // } - await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), 4000); - // confirmRideForAllDriverAvailable(); - - increaseForSameRideAndDelay(); - } - } - } - void convertHintTextPlaces1(int index) { if (wayPoint1.isEmpty) { hintTextwayPoint1 = 'Search for your Start point'.tr; @@ -1486,21 +2182,31 @@ class MapPassengerController extends GetxController { Stream get timerStream => _timerStreamController.stream; bool isTimerFromDriverToPassengerAfterAppliedRunning = true; bool isTimerRunning = false; // Flag to track if the timer is running - int beginRideInterval = 4; // Interval in seconds for getBeginRideFromDriver + int beginRideInterval = 10; // Interval in seconds for getBeginRideFromDriver void startTimerFromDriverToPassengerAfterApplied() { + stopTimerFromDriverToPassengerAfterApplied(); if (isTimerRunning) return; isTimerRunning = true; + isTimerFromDriverToPassengerAfterAppliedRunning = true; int secondsElapsed = 0; // استدعاء فوري لأول مرة - getDriverCarsLocationToPassengerAfterApplied(); + // getDriverCarsLocationToPassengerAfterApplied(); Timer.periodic(const Duration(seconds: 1), (timer) { - // شروط الإيقاف - if (secondsElapsed > timeToPassengerFromDriverAfterApplied || - !isTimerFromDriverToPassengerAfterAppliedRunning) { + // --- التغيير الجوهري هنا --- + // شرط الإيقاف: نتوقف فقط إذا انتهت الرحلة أو ألغيت، أو تم إيقاف التايمر يدوياً + // لم نعد نعتمد على تجاوز الوقت المقدر (timeToPassenger) كشرط للإيقاف + bool isRideActive = (statusRide == 'Apply' || + statusRide == 'Arrived' || + statusRide == 'Begin' || + currentRideState.value == RideState.driverApplied || + currentRideState.value == RideState.driverArrived || + currentRideState.value == RideState.inProgress); + + if (!isRideActive || !isTimerFromDriverToPassengerAfterAppliedRunning) { timer.cancel(); isTimerRunning = false; if (!_timerStreamController.isClosed) { @@ -1514,13 +2220,14 @@ class MapPassengerController extends GetxController { _timerStreamController.add(secondsElapsed); } - // حسابات الوقت للواجهة + // تحديث الواجهة للوقت المتبقي (شكلياً فقط للراكب) + // حتى لو أصبح الوقت سالباً (تأخر السائق)، سنظهره كـ 00:00 أو نتركه سالباً remainingTimeToPassengerFromDriverAfterApplied = timeToPassengerFromDriverAfterApplied - secondsElapsed; - // حماية من القيم السالبة - if (remainingTimeToPassengerFromDriverAfterApplied < 0) + if (remainingTimeToPassengerFromDriverAfterApplied < 0) { remainingTimeToPassengerFromDriverAfterApplied = 0; + } int minutes = (remainingTimeToPassengerFromDriverAfterApplied / 60).floor(); @@ -1528,60 +2235,15 @@ class MapPassengerController extends GetxController { stringRemainingTimeToPassenger = '$minutes:${seconds.toString().padLeft(2, '0')}'; - // كل 4 ثواني، نحدث موقع السائق ونعيد الرسم + // جلب موقع السائق كل 4 ثواني (Polling) ما دامت الرحلة نشطة if (secondsElapsed % beginRideInterval == 0) { - // 1. تحقق من حالة الرحلة (هل بدأت؟) - getBeginRideFromDriver(); - - // 2. ارفع موقع الراكب + // 2. تحديث موقع الراكب للسائق uploadPassengerLocation(); - - // 3. الأهم: جلب موقع السائق وتحديث الخريطة والمسار - // لا نحتاج لعمل await هنا حتى لا نعطل عداد الثواني - getDriverCarsLocationToPassengerAfterApplied(); } else { - // تحديث الواجهة فقط للعداد في الثواني التي لا نطلب فيها الموقع update(); } }); - } // void startTimerFromDriverToPassengerAfterApplied() async { - // if (isTimerRunning) return; // Exit if timer is already running - // isTimerRunning = true; // Set the flag to true - - // int secondsElapsed = 0; - // while (secondsElapsed <= timeToPassengerFromDriverAfterApplied && - // isTimerFromDriverToPassengerAfterAppliedRunning) { - // await Future.delayed(const Duration(seconds: 1)); - // secondsElapsed++; - - // progressTimerToPassengerFromDriverAfterApplied = - // secondsElapsed / timeToPassengerFromDriverAfterApplied; - // remainingTimeToPassengerFromDriverAfterApplied = - // timeToPassengerFromDriverAfterApplied - secondsElapsed; - - // if (remainingTimeToPassengerFromDriverAfterApplied < 59) { - // if (rideTimerBegin == false) { - // rideTimerBegin = true; - // } - // } - - // // Call getBeginRideFromDriver every 4 seconds - // if (secondsElapsed % beginRideInterval == 0) { - // getBeginRideFromDriver(); - // uploadPassengerLocation(); - // } - - // int minutes = - // (remainingTimeToPassengerFromDriverAfterApplied / 60).floor(); - // int seconds = remainingTimeToPassengerFromDriverAfterApplied % 60; - // stringRemainingTimeToPassenger = - // '$minutes:${seconds.toString().padLeft(2, '0')}'; - - // update(); - // } - // isTimerRunning = false; // Reset the flag when timer completes - // } -// Remove the getBeginRideFromDriverForDuration function as it's no longer needed + } // Function to stop the timer void stopTimerFromDriverToPassengerAfterApplied() { @@ -1589,70 +2251,66 @@ class MapPassengerController extends GetxController { update(); } - void startTimerDriverWaitPassenger5Minute() async { - // 1. [مهم] إيقاف المؤقت السابق (مؤقت تتبع وصول السائق) - stopTimerFromDriverToPassengerAfterApplied(); - isTimerRunning = false; // (إذا كنت تستخدم فلاج للتحكم بالمؤقت السابق) + void startTimerDriverWaitPassenger5Minute() { + // لا تبدأ إلا إذا فعلاً وصلنا + if (currentRideState.value != RideState.driverArrived) return; - // 2. تحديث حالة الواجهة فوراً + // 1) أوقف أي عداد سابق (تتبع وصول السائق) + stopTimerFromDriverToPassengerAfterApplied(); + isTimerRunning = false; + + // 2) أوقف عداد الانتظار إن كان شغال من قبل (منع تكرار) + _stopWaitPassengerTimer(); + + // 3) جهّز UI الانتظار isDriverArrivePassenger = true; isDriverInPassengerWay = false; timeToPassengerFromDriverAfterApplied = 0; + + _waitPassengerElapsedSeconds = 0; + remainingTimeDriverWaitPassenger5Minute = _waitPassengerTotalSeconds; + progressTimerDriverWaitPassenger5Minute = 0; + + int m = (remainingTimeDriverWaitPassenger5Minute / 60).floor(); + int s = remainingTimeDriverWaitPassenger5Minute % 60; + stringRemainingTimeDriverWaitPassenger5Minute = + '$m:${s.toString().padLeft(2, '0')}'; + update(); - Log.print('[startTimerDriverWaitPassenger5Minute] بدأ عداد الـ 5 دقائق.'); - - // 3. بدء عداد الخمس دقائق (300 ثانية) - for (int i = 0; i <= 300; i++) { - // 4. [حارس السباق 1] التحقق من الحالة - // إذا فاز إشعار FCM (FCM Winner) وتغيرت الحالة، أوقف هذا العداد فوراً. + // 4) ابدأ Timer.periodic (يمكن إلغاؤه فوراً) + _waitPassengerTimer = Timer.periodic(const Duration(seconds: 1), (t) { + // أول ما تتحول إلى inProgress (أو أي حالة غير arrived) أوقف فوراً if (currentRideState.value != RideState.driverArrived) { - Log.print( - '[startTimerDriverWaitPassenger5Minute] إيقاف العد: الحالة تغيرت (FCM فاز).'); - break; // اخرج من loop الخمس دقائق - } - - // 5. [البحث الدوري 2] التحقق من السيرفر (كل 6 ثوانٍ) - if (i % 6 == 0 && i > 0) { - // (نتخطى الثانية صفر) - try { - var res = await CRUD().get( - link: AppLink.getRideStatusBegin, payload: {'ride_id': rideId}); - - if (res != 'failure') { - var decode = jsonDecode(res); - if (decode['data']['status'] == 'Begin') { - Log.print( - '[startTimerDriverWaitPassenger5Minute] اكتشف "Begin" (Polling فاز).'); - - // 6. استدعاء حارس البوابة الآمن - processRideBegin(); - - break; // اخرج من loop الخمس دقائق - } - } - } catch (e) { - Log.print('خطأ أثناء البحث الدوري عن بدء الرحلة: $e'); + _stopWaitPassengerTimer(resetUI: true); + // إخفاء واجهة "السائق وصل" إذا بدأت الرحلة + if (currentRideState.value == RideState.inProgress) { + isDriverArrivePassenger = false; } + update(); + return; } - // 7. تحديث واجهة المستخدم (العداد) - progressTimerDriverWaitPassenger5Minute = i / 300; - remainingTimeDriverWaitPassenger5Minute = 300 - i; + _waitPassengerElapsedSeconds++; + int remaining = _waitPassengerTotalSeconds - _waitPassengerElapsedSeconds; + if (remaining < 0) remaining = 0; - int minutes = (remainingTimeDriverWaitPassenger5Minute / 60).floor(); - int seconds = remainingTimeDriverWaitPassenger5Minute % 60; + remainingTimeDriverWaitPassenger5Minute = remaining; + progressTimerDriverWaitPassenger5Minute = + _waitPassengerElapsedSeconds / _waitPassengerTotalSeconds; + + int minutes = (remaining / 60).floor(); + int seconds = remaining % 60; stringRemainingTimeDriverWaitPassenger5Minute = '$minutes:${seconds.toString().padLeft(2, '0')}'; update(); - // 8. الانتظار ثانية واحدة - await Future.delayed(const Duration(seconds: 1)); - } - - Log.print( - '[startTimerDriverWaitPassenger5Minute] انتهى (إما بالوقت أو ببدء الرحلة).'); + if (remaining == 0) { + _stopWaitPassengerTimer(); + // هنا إذا بدك: طبّق غرامة انتظار / اعرض رسالة / إلخ + } + }); } // Create a StreamController to manage the timer values @@ -1674,90 +2332,161 @@ class MapPassengerController extends GetxController { update(); } - late String arrivalTime = ''; - void rideIsBeginPassengerTimer() async { - // Calculate arrival time considering current time and duration + Timer? _rideProgressTimer; + bool _hasShownSpeedWarning = false; // متغير لحالة التنبيه + + /// **بدء مؤقت الرحلة للراكب (Passenger Ride Timer)** + /// + /// تقوم هذه الدالة بإدارة العداد الزمني للرحلة بمجرد بدئها (حالة [RideState.inProgress]). + /// + /// **المهام الرئيسية:** + /// 1. **دقة التوقيت:** تعتمد على فرق الوقت الحقيقي (`DateTime.difference`) لضمان دقة العداد حتى لو خرج المستخدم من التطبيق وعاد. + /// 2. **مراقبة السرعة:** تفحص سرعة المركبة كل ثانية، وتطلق تحذيراً [_triggerSpeedWarning] إذا تجاوزت 100 كم/س. + /// 3. **تحديث الواجهة:** تقوم بتحديث شريط التقدم والوقت المتبقي لحظياً. + /// 4. **الإيقاف التلقائي:** تتوقف تلقائياً عند انتهاء الوقت أو تغير حالة الرحلة. + void rideIsBeginPassengerTimer() { + // 1. تنظيف أي تايمر سابق + _rideProgressTimer?.cancel(); + _hasShownSpeedWarning = false; // تصفير حالة التنبيه + + // 2. تحديد وقت الوصول المتوقع بدقة DateTime now = DateTime.now(); - DateTime arrivalTime1 = now.add(Duration(seconds: durationToRide)); - arrivalTime = DateFormat('hh:mm').format(arrivalTime1); + DateTime expectedArrivalTime = now.add(Duration(seconds: durationToRide)); + + // تنسيق وقت الوصول للعرض + var arrivalTime = DateFormat('hh:mm a').format(expectedArrivalTime); box.write(BoxName.arrivalTime, arrivalTime); - for (int i = 0; i <= durationToRide; i++) { - await Future.delayed(const Duration(seconds: 1)); - progressTimerRideBegin = i / durationToRide; - remainingTimeTimerRideBegin = durationToRide - i; - if (i == (durationToRide / 4).round() && (statusRide == 'Begin')) { - NotificationController().showNotification("Record Your Trip".tr, - "You can call or record audio during this trip.".tr, 'tone1'); + + Log.print("⏳ Ride Timer Started. Duration: $durationToRide sec"); + + // 3. بدء التايمر الدوري + _rideProgressTimer = Timer.periodic(const Duration(seconds: 1), (timer) { + // أ) شرط الإيقاف الحاسم: إذا انتهت الرحلة أو ألغيت + if (currentRideState.value != RideState.inProgress) { + timer.cancel(); + return; } - bool sendSOS = false; - if (speed > 100 && sendSOS == false) { - NotificationController().showNotification( - "Warning: Speeding detected!".tr, - 'You can call or record audio of this trip'.tr, - 'tone1'); - Get.defaultDialog( - barrierDismissible: false, - title: "Warning: Speeding detected!".tr, - titleStyle: AppStyle.title, - content: Text( - "We noticed the speed is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button." - .tr, - style: AppStyle.title, - ), - confirm: MyElevatedButton( - title: "Share Trip Details".tr, - onPressed: () { - Get.back(); - // Implement sharing trip details logic here - String message = "**Emergency SOS from Passenger:**\n"; -// Get trip details from GetX or relevant provider - String origin = passengerLocation.toString(); - String destination = myDestination.toString(); - String driverName = passengerName; - String driverCarPlate = licensePlate; + // ب) حساب الوقت المتبقي بناءً على الساعة الحالية (أدق من العد) + DateTime currentNow = DateTime.now(); + int remainingSeconds = + expectedArrivalTime.difference(currentNow).inSeconds; -// Add trip details to the message - message += "* ${'Origin'.tr}: $origin\n"; - message += "* ${'Destination'.tr}: $destination\n"; - message += "* ${'Driver Name'.tr}: $driverName\n"; - message += "* ${'Driver Car Plate'.tr}: $driverCarPlate\n\n"; - message += "* ${'Driver phone'.tr}:$driverPhone\n\n"; + if (remainingSeconds < 0) remainingSeconds = 0; -// Add any additional information you want to include (optional) -// - Example: current location (using GetX LocationController) - message += - "${'Current Location'.tr}:https://www.google.com/maps/place/${passengerLocation.latitude},${passengerLocation.longitude} \n"; + // تحديث المتغيرات + remainingTimeTimerRideBegin = remainingSeconds; -// Append a call to action - message += "Please help! Contact me as soon as possible.".tr; + // حساب النسبة المئوية (حماية من القسمة على صفر) + progressTimerRideBegin = + durationToRide > 0 ? 1 - (remainingSeconds / durationToRide) : 1.0; -// Launch WhatsApp communication with the constructed message - launchCommunication( - 'whatsapp', box.read(BoxName.sosPhonePassenger), message); - sendSOS = true; - }, - kolor: AppColor.redColor, - ), - cancel: MyElevatedButton( - title: "Cancel".tr, - onPressed: () { - Get.back(); - }, - kolor: AppColor.greenColor, - ), - ); - } - int minutes = (remainingTimeTimerRideBegin / 60).floor(); - int seconds = remainingTimeTimerRideBegin % 60; + // ج) تنسيق الوقت للعرض + int minutes = (remainingSeconds / 60).floor(); + int seconds = remainingSeconds % 60; stringRemainingTimeRideBegin = '$minutes:${seconds.toString().padLeft(2, '0')}'; + // د) منطق الإشعارات (ربع الوقت) + if (progressTimerRideBegin >= 0.25 && + progressTimerRideBegin < 0.26 && + !_hasShownSpeedWarning) { + // يمكن إضافة منطق إشعار منتصف الرحلة هنا + } + + // هـ) مراقبة السرعة (Speed Check) + // نستخدم المتغير _hasShownSpeedWarning لمنع تكرار الديالوج بشكل مزعج + if (speed > 100 && !_hasShownSpeedWarning) { + _hasShownSpeedWarning = true; // ✅ قفل التنبيه حتى لا يتكرر + _triggerSpeedWarning(); + } + + // إعادة تفعيل التنبيه إذا انخفضت السرعة (إعادة ضبط الأمان) + if (speed < 80 && _hasShownSpeedWarning) { + _hasShownSpeedWarning = false; + } + + // و) إنهاء التايمر إذا انتهى الوقت + if (remainingSeconds <= 0) { + timer.cancel(); + } + update(); - } - // rideTimerBegin = false; - // isRideFinished = true; - // update(); + }); + } + + /// **عرض تحذير السرعة الزائدة (Speed Warning Trigger)** + /// + /// تظهر نافذة منبثقة (Dialog) وإشعاراً محلياً لتحذير الراكب عند اكتشاف سرعة عالية (> 100 كم/س). + /// + /// **الخيارات المتاحة للمستخدم:** + /// * **مشاركة التفاصيل:** لإرسال رسالة استغاثة عبر واتساب. + /// * **أنا بخير:** لإغلاق التنبيه والاستمرار في الرحلة. + void _triggerSpeedWarning() { + NotificationController().showNotification("Warning: Speeding detected!".tr, + 'You can call or record audio of this trip'.tr, 'tone1'); + + Get.defaultDialog( + barrierDismissible: false, + title: "Warning: Speeding detected!".tr, + titleStyle: AppStyle.title.copyWith(color: AppColor.redColor), + content: Column( + children: [ + Icon(Icons.speed, size: 50, color: AppColor.redColor), + const SizedBox(height: 10), + Text( + "We noticed the speed is exceeding 100 km/h. Please slow down for your safety..." + .tr, + textAlign: TextAlign.center, + style: AppStyle.title, + ), + ], + ), + confirm: MyElevatedButton( + title: "Share Trip Details".tr, + kolor: AppColor.redColor, + onPressed: () { + Get.back(); + _shareTripDetailsSOS(); + }, + ), + cancel: MyElevatedButton( + title: "I'm Safe".tr, + kolor: AppColor.greenColor, + onPressed: () { + Get.back(); + }, + ), + ); + } + + /// **مشاركة تفاصيل الرحلة للطوارئ (SOS Share)** + /// + /// تقوم بتجهيز رسالة نصية مفصلة تحتوي على بيانات الرحلة الحالية وإرسالها + /// عبر تطبيق WhatsApp لرقم الطوارئ المحفوظ. + /// + /// **البيانات المرسلة:** + /// * موقع الانطلاق والوصول. + /// * اسم السائق، رقم الهاتف، ونوع السيارة. + /// * رابط مباشر للموقع الحالي على خرائط جوجل. + void _shareTripDetailsSOS() { + String message = "**Emergency SOS from Passenger:**\n"; + String origin = startNameAddress; + String destination = endNameAddress; + + message += "* ${'Origin'.tr}: $origin\n"; + message += "* ${'Destination'.tr}: $destination\n"; + message += "* ${'Driver Name'.tr}: $driverName\n"; + message += "* ${'Car'.tr}: $make - $model - $licensePlate\n"; + message += "* ${'Phone'.tr}: $driverPhone\n\n"; + + // رابط جوجل مابس صحيح + message += + "${'Location'.tr}: https://www.google.com/maps/search/?api=1&query=${passengerLocation.latitude},${passengerLocation.longitude}\n"; + message += "Please help! Contact me as soon as possible.".tr; + + launchCommunication( + 'whatsapp', box.read(BoxName.sosPhonePassenger), message); } int progressTimerRideBeginVip = 0; @@ -1841,44 +2570,29 @@ class MapPassengerController extends GetxController { } } - void tripFinishedFromDriver() { - // هذه الدالة الآن مسؤولة فقط عن تصفير الواجهة - // معالج الإشعار (FCM) هو المسؤول عن الانتقال لصفحة التقييم - Log.print('[tripFinishedFromDriver] Resetting UI flags for finished ride.'); + Future tripFinishedFromDriver() async { + Log.print('🧹 Cleaning UI for Finish'); - isRideFinished = true; + // إغلاق أي ديالوج مفتوح + if (Get.isDialogOpen == true) Get.back(); + if (Get.isBottomSheetOpen == true) Get.back(); + + statusRide = 'Finished'; + currentRideState.value = RideState.finished; // تثبيت الحالة + + // إيقاف البحث والعدادات + isSearchingWindow = false; rideTimerBegin = false; - statusRideVip = 'Finished'; - statusRide = 'Finished'; // لضمان التناسق - box.write(BoxName.arrivalTime, ''); - remainingTimeTimerRideBegin = 0; + shouldFetch = false; - // (ملاحظة: لقد أبقيت على منطق المحفظة في معالج الإشعار لأنه مرتبط بالسعر) - // box.write(BoxName.passengerWalletTotal, '0'); // تم نقله إلى FCM + // إيقاف التايمرات + stopAllTimers(); + + clearPolyline(); + clearMarkersExceptStartEnd(); + markers.clear(); update(); - - // إرسال إشعار للوالدين (إذا كان مفعلاً) - if (box.read(BoxName.parentTripSelected) == true) { - NotificationService.sendNotification( - category: "Finish Monitor", - target: box.read(BoxName.tokenParent), - title: "Finish Monitor".tr, - body: 'Finish Monitor'.tr, - isTopic: false, - tone: 'tone1', - ); - box.write(BoxName.parentTripSelected, false); - box.remove(BoxName.tokenParent); - } - - // ---!! تم حذف الانتقال من هنا لمنع الازدواجية !! --- - // Get.to(() => RateDriverFromPassenger(), arguments: { - // 'driverId': driverId.toString(), - // 'rideId': rideId.toString(), - // 'price': costForDriver.toString() - // }); - // --- نهاية الحذف --- } StreamController _beginRideStreamController = @@ -1887,53 +2601,6 @@ class MapPassengerController extends GetxController { bool isBeginRideFromDriverRunning = false; - void getBeginRideFromDriver() { - if (isBeginRideFromDriverRunning) return; // Prevent duplicate streams - isBeginRideFromDriverRunning = true; - - Timer.periodic(const Duration(seconds: 2), (timer) async { - try { - var res = await CRUD().get( - link: AppLink.getRideStatusBegin, payload: {'ride_id': rideId}); - print(res); - print('1002'); - if (res != 'failure') { - var decode = jsonDecode(res); - _beginRideStreamController - .add(decode['data']['status']); // Emit the status - - if (decode['data']['status'] == 'Begin') { - // Stop the periodic check - timer.cancel(); - isBeginRideFromDriverRunning = false; - - timeToPassengerFromDriverAfterApplied = 0; - remainingTime = 0; - remainingTimeToPassengerFromDriverAfterApplied = 0; - remainingTimeDriverWaitPassenger5Minute = 0; - rideTimerBegin = true; - statusRide = 'Begin'; - isDriverInPassengerWay = false; - isDriverArrivePassenger = false; - update(); - - // Trigger additional actions - rideIsBeginPassengerTimer(); - runWhenRideIsBegin(); - NotificationController().showNotification( - 'Trip is begin'.tr, - 'The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey' - .tr, - 'ding'); - } - } - } catch (e) { - // Handle errors - _beginRideStreamController.addError(e); - } - }); - } - // Call this method to listen to the stream void listenToBeginRideStream() { beginRideStream.listen((status) { @@ -2086,7 +2753,7 @@ class MapPassengerController extends GetxController { int selectedReason = -1; String? cancelNote; - void selectReason(int index, String note) { + void selectReason0(int index, String note) { selectedReason = index; cancelNote = note; update(); @@ -2240,10 +2907,6 @@ class MapPassengerController extends GetxController { "start_location": '${startLocation.latitude},${startLocation.longitude}', "end_location": '${endLocation.latitude},${endLocation.longitude}', - // 'start_location': - // '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - // 'end_location': - // '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', "date": DateTime.now().toString(), "time": DateTime.now().toString(), "price": totalPassenger.toStringAsFixed(2), @@ -2254,6 +2917,9 @@ class MapPassengerController extends GetxController { 'price_for_passenger': totalME.toStringAsFixed(2), 'distance': distance.toStringAsFixed(1), 'duration': duration.toStringAsFixed(1), + 'payment_method': + Get.find().isWalletChecked ? 'wallet' : 'cash', + "passenger_wallet": box.read(BoxName.passengerWalletTotal).toString(), }); Log.print('[WaitingTable] Ride $rideId added to waiting_ride table.'); } catch (e) { @@ -2261,467 +2927,10 @@ class MapPassengerController extends GetxController { } } - // Future confirmRideForAllDriverAvailable1() async { - // // Try to fetch car locations up to 4 times with a 2-second delay - // bool driversFound = false; - // for (int attempt = 0; attempt < 8; attempt++) { - // await getCarsLocationByPassengerAndReloadMarker( - // box.read(BoxName.carType), attempt > 5 ? 4500 : 3000); - - // // Check if dataCarsLocationByPassenger is valid and contains drivers - // if (dataCarsLocationByPassenger != 'failure' && - // dataCarsLocationByPassenger != null && - // dataCarsLocationByPassenger.containsKey('data') && - // dataCarsLocationByPassenger['message'] != null) { - // driversFound = true; - // break; // Exit loop if drivers are found - // } - - // // Wait 2 seconds before next attempt - // await Future.delayed(const Duration(seconds: 2)); - // } - - // // If no drivers were found after 4 attempts, show a dialog - // if (!driversFound) { - // Get.dialog( - // BackdropFilter( - // filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5), - // child: CupertinoAlertDialog( - // title: Text( - // "No Car or Driver Found in your area.".tr, - // style: AppStyle.title.copyWith( - // fontSize: 20, - // fontWeight: FontWeight.bold, - // ), - // ), - // content: Text( - // "No Car or Driver Found in your area.".tr, - // style: AppStyle.title.copyWith(fontSize: 16), - // ), - // actions: [ - // CupertinoDialogAction( - // onPressed: () { - // Get.back(); - // Get.offAll(() => const MapPagePassenger()); - // }, - // child: Text('OK'.tr, - // style: const TextStyle(color: AppColor.greenColor)), - // ), - // ], - // ), - // ), - // barrierDismissible: false, - // ); - - // return; - // } - - // // Proceed with the rest of the function if drivers are found - // PaymentController paymentController = Get.find(); - // rideConfirm = true; - // shouldFetch = true; - // isBottomSheetShown = false; - // timeToPassengerFromDriverAfterApplied = 60; - - // // Add ride to database - // await CRUD() - // .post(link: "${AppLink.IntaleqCairoServer}/ride/rides/add.php", payload: { - // "start_location": - // '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - // "end_location": - // '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - // "date": DateTime.now().toString(), - // "time": DateTime.now().toString(), - // "endtime": durationToAdd.toString(), - // "price": totalPassenger.toStringAsFixed(2), - // "passenger_id": box.read(BoxName.passengerID).toString(), - // "driver_id": dataCarsLocationByPassenger['message'][carsOrder]['driver_id'] - // .toString(), - // "status": "waiting", - // 'carType': box.read(BoxName.carType), - // "price_for_driver": totalPassenger.toString(), - // "price_for_passenger": totalME.toString(), - // "distance": distance.toString(), - // "paymentMethod": paymentController.isWalletChecked.toString(), - // }).then((value) { - // if (value is String) { - // final parsedValue = jsonDecode(value); - // rideId = parsedValue['message']; - // } else if (value is Map) { - // rideId = value['message']; - // } else { - // Log.print('Unexpected response type: ${value.runtimeType}'); - // } - - // // Timer to notify drivers every 2 seconds for 5 iterations - // int iteration = 0; - // Timer.periodic(const Duration(seconds: 2), (timer) async { - // if (iteration >= 5) { - // timer.cancel(); - // return; - // } - // iteration++; - - // // Reload driver locations and notify available drivers - // await getCarsLocationByPassengerAndReloadMarker( - // box.read(BoxName.carType), 3000); - // if (dataCarsLocationByPassenger != null && - // dataCarsLocationByPassenger.containsKey('data') && - // dataCarsLocationByPassenger['message'] != null) { - // for (var driverData in dataCarsLocationByPassenger['message']) { - // String driverId = driverData['driver_id'].toString(); - // if (!notifiedDrivers.contains(driverId)) { - // notifiedDrivers.add(driverId); - // List body = [ - // '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - // '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - // totalPassenger.toStringAsFixed(2), - // totalDriver.toStringAsFixed(2), - // durationToRide.toString(), - // distance.toStringAsFixed(2), - // driverId.toString(), - // box.read(BoxName.passengerID).toString(), - // box.read(BoxName.name).toString(), - // box.read(BoxName.tokenFCM).toString(), - // box.read(BoxName.phone).toString(), - // durationByPassenger.toString(), - // distanceByPassenger.toString(), - // paymentController.isWalletChecked.toString(), - // driverData['token'].toString(), - // durationToPassenger.toString(), - // rideId.toString(), - // rideTimerBegin.toString(), - // driverId.toString(), - // durationToRide.toString(), - // Get.find().wayPoints.length > 1 - // ? 'haveSteps' - // : 'startEnd', - // placesCoordinate[0], - // placesCoordinate[1], - // placesCoordinate[2], - // placesCoordinate[3], - // placesCoordinate[4], - // costForDriver.toStringAsFixed(2), - // (double.parse(box.read(BoxName.passengerWalletTotal)) < 0 - // ? double.parse(box.read(BoxName.passengerWalletTotal)) - // .toStringAsFixed(2) - // : '0'), - // box.read(BoxName.email).toString(), - // data[0]['start_address'], - // data[0]['end_address'], - // box.read(BoxName.carType), - // kazan.toStringAsFixed(0), - // passengerRate.toStringAsFixed(2), - // ]; - // Log.print('body: ${body}'); - // firebaseMessagesController.sendNotificationToDriverMAP( - // 'OrderSpeed', - // rideId, - // driverData['token'].toString(), - // body, - // 'order', - // ); - // } - // } - // } - // }); - // }); - - // // If an additional endpoint is available, post data there as well - // if (AppLink.endPoint != AppLink.IntaleqCairoServer) { - // CRUD().post(link: '${AppLink.endPoint}/ride/rides/add.php', payload: { - // "start_location": - // '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - // "end_location": - // '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - // "date": DateTime.now().toString(), - // "time": DateTime.now().toString(), - // "endtime": durationToAdd.toString(), - // "price": totalPassenger.toStringAsFixed(2), - // "passenger_id": box.read(BoxName.passengerID).toString(), - // "driver_id": dataCarsLocationByPassenger['message'][carsOrder]['driver_id'] - // .toString(), - // "status": "waiting", - // 'carType': box.read(BoxName.carType), - // "price_for_driver": totalPassenger.toString(), - // "price_for_passenger": totalME.toString(), - // "distance": distance.toString(), - // "paymentMethod": paymentController.isWalletChecked.toString(), - // }); - // } - // delayAndFetchRideStatusForAllDriverAvailable(rideId); - // update(); - // } - - increaseForSameRideAndDelay() async { - reSearchAfterCanceledFromDriver(); - // bool driversFound = false; - // for (int attempt = 0; attempt < 8; attempt++) { - // await getCarsLocationByPassengerAndReloadMarker( - // box.read(BoxName.carType), 4500); - - // // Check if dataCarsLocationByPassenger is valid and contains drivers - // if (dataCarsLocationByPassenger != 'failure' && - // dataCarsLocationByPassenger != null && - // dataCarsLocationByPassenger.containsKey('message') && - // dataCarsLocationByPassenger['message'] != null) { - // driversFound = true; - // break; // Exit loop if drivers are found - // } - - // // Wait 2 seconds before next attempt - // await Future.delayed(const Duration(seconds: 2)); - // } - - // // If no drivers were found after 4 attempts, show a dialog - // if (!driversFound) { - // Get.dialog( - // BackdropFilter( - // filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5), - // child: CupertinoAlertDialog( - // title: Text( - // "No Car or Driver Found in your area.".tr, - // style: AppStyle.title.copyWith( - // fontSize: 20, - // fontWeight: FontWeight.bold, - // ), - // ), - // content: Text( - // "No Car or Driver Found in your area.".tr, - // style: AppStyle.title.copyWith(fontSize: 16), - // ), - // actions: [ - // CupertinoDialogAction( - // onPressed: () { - // Get.back(); - // Get.offAll(() => const MapPagePassenger()); - // }, - // child: Text('OK'.tr, - // style: const TextStyle(color: AppColor.greenColor)), - // ), - // ], - // ), - // ), - // barrierDismissible: false, - // ); - - // return; - // } - // PaymentController paymentController = Get.find(); - // rideConfirm = true; - // shouldFetch = true; - // isBottomSheetShown = false; - // timeToPassengerFromDriverAfterApplied = 60; - // // confirmRideForAllDriverAvailable(); - // for (var i = 0; i < dataCarsLocationByPassenger['message'].length; i++) { - // List body = [ - // '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - // '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - // totalPassenger.toStringAsFixed(2), - // totalDriver.toStringAsFixed(2), - // durationToRide.toString(), - // distance.toStringAsFixed(2), - // dataCarsLocationByPassenger['message'][i]['driver_id'].toString(), - // box.read(BoxName.passengerID).toString(), - // box.read(BoxName.name).toString(), - // box.read(BoxName.tokenFCM).toString(), - // box.read(BoxName.phone).toString(), - // durationByPassenger.toString(), - // distanceByPassenger.toString(), - // paymentController.isWalletChecked.toString(), - // dataCarsLocationByPassenger['message'][i]['token'].toString(), - // durationToPassenger.toString(), - // rideId.toString(), - // rideTimerBegin.toString(), - // dataCarsLocationByPassenger['message'][i]['driver_id'].toString(), - // durationToRide.toString(), - // Get.find().wayPoints.length > 1 - // ? 'haveSteps' - // : 'startEnd', - // placesCoordinate[0], - // placesCoordinate[1], - // placesCoordinate[2], - // placesCoordinate[3], - // placesCoordinate[4], - // costForDriver.toStringAsFixed(2), - // double.parse(box.read(BoxName.passengerWalletTotal)) < 0 - // ? double.parse(box.read(BoxName.passengerWalletTotal)) - // .toStringAsFixed(2) - // : '0', - // box.read(BoxName.email).toString(), - // data[0]['start_address'], - // data[0]['end_address'], - // box.read(BoxName.carType), - // kazan.toStringAsFixed(0), - // passengerRate.toStringAsFixed(2), - // ]; - // // Log.print('body: ${body}'); - - // firebaseMessagesController.sendNotificationToDriverMAP( - // 'OrderSpeed', - // rideId.toString(), - // dataCarsLocationByPassenger['message'][i]['token'].toString(), - // body, - // 'order'); - // } - } - int tick = 0; // Move tick outside the function to maintain its state - // void delayAndFetchRideStatus(String rideId, carType) { - // Timer.periodic(const Duration(seconds: 1), (timer) async { - // if (shouldFetch) { - // if (remainingTimeToPassengerFromDriverAfterApplied > 0) { - // String res = await getRideStatus(rideId); - - // Log.print('tick: $tick'); - // String rideStatusDelayed = res.toString(); - // if ((rideStatusDelayed == 'waiting' || - // rideStatusDelayed == 'Refused') && - // tick >= 15) { - // timer.cancel(); // Stop the current timer - // showAndResearchForCaptain(); - // //TODO add to wait - // await getCarsLocationByPassengerAndReloadMarker(carType, 3000); - // // await getNearestDriverByPassengerLocationAPIGOOGLE(); - // // getCarForFirstConfirm(carType); - // confirmRideForAllDriverAvailable(); - // // delayAndFetchRideStatusForAllDriverAvailable(rideId); - // } else if (rideStatusDelayed == 'Apply' || statusRide == 'Apply') { - // Log.print('rideStatusDelayed == Apply: $rideStatusDelayed'); - // // todo play sound - // Get.find() - // .playSoundFromAssets('assets/start'); - // timer.cancel(); // Stop the current timer - // await getUpdatedRideForDriverApply(rideId); - // shouldFetch = false; // Stop further fetches - // statusRide = 'Apply'; - // rideConfirm = false; - // isSearchingWindow = false; - // update(); - // startTimerFromDriverToPassengerAfterApplied(); - // if (box.read(BoxName.carType) == 'Speed' || - // box.read(BoxName.carType) == 'Awfar Car') { - // NotificationController().showNotification( - // 'The captain is responsible for the route.'.tr, - // 'This price is fixed even if the route changes for the driver.' - // .tr, - // 'ding'); - // } else if (box.read(BoxName.carType) == 'Comfort' || - // box.read(BoxName.carType) == 'Lady') { - // NotificationController().showNotification('Attention'.tr, - // 'The price may increase if the route changes.'.tr, 'ding'); - // } - // } else if (rideStatusDelayed == 'Refused') { - // statusRide = 'Refused'; - // if (isDriversTokensSend == false) { - // confirmRideForAllDriverAvailable(); - // isDriversTokensSend = true; - // } // Start 15-second timer - // } - // //else if (isDriversTokensSend == false) { - // // No need to recall delayAndFetchRideStatus as Timer.periodic is already running - // update(); - // // } - // if (tick < 19) { - // tick++; - // } else { - // timer.cancel(); - // // Stop the timer if remainingTimeToPassengerFromDriverAfterApplied <= 0 - // } - // } else { - // timer.cancel(); - // // Stop the timer if remainingTimeToPassengerFromDriverAfterApplied <= 0 - // } - // } else { - // timer.cancel(); // Stop the timer if shouldFetch is false - // } - // }); - // } - - // showAndResearchForCaptain() { - // Get.snackbar( - // "No Captain Accepted Your Order".tr, - // "We are looking for a captain but the price may increase to let a captain accept" - // .tr, - // duration: const Duration(seconds: 5), - // backgroundColor: AppColor.yellowColor, - // ); - // isSearchingWindow == true; - // update(); - // } - String driversStatusForSearchWindow = ''; - // Future confirmRideForAllDriverAvailable() async { - // bool driversFound = false; - // const maxAttempts = 8; - // const attemptDelay = Duration(seconds: 3); - - // for (int attempt = 0; attempt < maxAttempts; attempt++) { - // final reloadDuration = attempt > 5 ? 4500 : 3000; - // await getCarsLocationByPassengerAndReloadMarker( - // box.read(BoxName.carType), reloadDuration); - // // await getNearestDriverByPassengerLocation(); - // currentTimeSearchingCaptainWindow = 0; - // driversStatusForSearchWindow = 'We are search for nearst driver'.tr; - // if (isDriversDataValid()) { - // driversFound = true; - // break; - // } - - // await Future.delayed(attemptDelay); - // } - - // if (!driversFound) { - // showNoDriversDialog(); - // return; - // } - // driversStatusForSearchWindow = 'Your order is being prepared'.tr; - // Log.print('driversStatusForSearchWindow: $driversStatusForSearchWindow'); - // update(); - // await postRideDetailsToServer(); - // driversStatusForSearchWindow = 'Your order sent to drivers'.tr; - - // await notifyAvailableDrivers(); - - // driversStatusForSearchWindow = 'The drivers are reviewing your request'.tr; - // Log.print('driversStatusForSearchWindow: $driversStatusForSearchWindow'); - // update(); - // delayAndFetchRideStatusForAllDriverAvailable(rideId); - // // update(); - // } - - Future updateConfirmRideForAllDriverAvailable() async { - bool driversFound = false; - const maxAttempts = 8; - const attemptDelay = Duration(seconds: 3); - - for (int attempt = 0; attempt < maxAttempts; attempt++) { - final reloadDuration = attempt > 5 ? 4500 : 3000; - await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), reloadDuration); - // await getNearestDriverByPassengerLocation(); - - if (isDriversDataValid()) { - driversFound = true; - break; - } - - await Future.delayed(attemptDelay); - } - - if (!driversFound) { - showNoDriversDialog(); - return; - } - - // await postRideDetailsToServer(); - // delayAndFetchRideStatusForAllDriverAvailable(rideId); - // update(); - await notifyAvailableDrivers(); - } - bool isDriversDataValid() { return dataCarsLocationByPassenger != 'failure' && dataCarsLocationByPassenger != null && @@ -2756,253 +2965,80 @@ class MapPassengerController extends GetxController { } Future postRideDetailsToServer() async { - final paymentController = Get.find(); + // التأكد من وجود مسار + if (polylineCoordinates.isEmpty) return false; + startLocation = polylineCoordinates.first; endLocation = polylineCoordinates.last; - // '${startLocation.latitude},${startLocation.longitude}', - // "end_location": '${endLocation.latitude},${endLocation.longitude}', - final payload = constructRidePayload(paymentController); - Log.print('constructRidePayload: ${payload}'); + + // تجهيز البيانات الكاملة (Data Enrichment) لإرسالها للـ PHP + Map payload = { + // 1. البيانات الأساسية + "start_location": '${startLocation.latitude},${startLocation.longitude}', + "end_location": '${endLocation.latitude},${endLocation.longitude}', + "date": DateTime.now().toString(), + "time": DateTime.now().toString(), + "endtime": "00:00:00", // أو حسب حساباتك + "price": totalPassenger.toStringAsFixed(2), + "passenger_id": box.read(BoxName.passengerID).toString(), + "driver_id": "0", // لم يحدد بعد + "status": "waiting", + "carType": box.read(BoxName.carType), + "price_for_driver": totalPassenger.toString(), // أو المعادلة الخاصة بك + "price_for_passenger": totalME.toString(), + "distance": distance.toString(), + + // 2. بيانات الراكب (ليستخدمها PHP لبناء الـ Payload دون استعلام) + "passenger_name": box.read(BoxName.name).toString(), + "passenger_phone": box.read(BoxName.phone).toString(), + "passenger_token": box.read(BoxName.tokenFCM).toString(), + "passenger_email": box.read(BoxName.email).toString(), + "passenger_wallet": box.read(BoxName.passengerWalletTotal).toString(), + "passenger_rating": (passengerRate ?? 5.0).toString(), + + // 3. بيانات الواجهة الإضافية + "start_name": startNameAddress, + "end_name": endNameAddress, + "duration_text": "${(durationToRide / 60).floor()}", // نص الوقت + "distance_text": "$distance", // نص المسافة + "is_wallet": Get.find().isWalletChecked.toString(), + "has_steps": Get.find().wayPoints.length > 1 + ? 'true' + : 'false', + + // نقاط التوقف (إذا وجدت) + "step0": placesCoordinate.length > 0 ? placesCoordinate[0] : "", + "step1": placesCoordinate.length > 1 ? placesCoordinate[1] : "", + "step2": placesCoordinate.length > 2 ? placesCoordinate[2] : "", + "step3": placesCoordinate.length > 3 ? placesCoordinate[3] : "", + "step4": placesCoordinate.length > 4 ? placesCoordinate[4] : "", + }; + Log.print('payload add_ride: ${payload}'); try { - final response = await CRUD() - .post(link: "${AppLink.ride}/ride/rides/add.php", payload: payload); - if (response is String) { - final parsedValue = jsonDecode(response); - rideId = parsedValue['message']; - return true; - } else if (response is Map) { - rideId = response['message']; - CRUD().post( - link: "${AppLink.server}/ride/rides/add.php", payload: payload); + // الاتصال بـ add_ride.php + var response = await CRUD().post( + link: "${AppLink.server}/ride/rides/add_ride.php", // تأكد من المسار + payload: payload); + + var jsonResponse = (response is String) ? jsonDecode(response) : response; + + if (jsonResponse['status'] == 'success') { + rideId = jsonResponse['message'].toString(); // حفظ ID الرحلة + Log.print("✅ Ride Created ID: $rideId"); return true; } else { - Log.print('Unexpected response type: ${response.runtimeType}'); + Log.print("❌ Ride Creation Failed: $response"); return false; } } catch (e) { - Log.print('Error posting ride details: $e'); + Log.print("❌ Exception in postRide: $e"); return false; } } late LatLng endLocation; -// polylineCoordinates.last; - // Log.print('endLocation: ${endLocation}'); late LatLng startLocation; - // polylineCoordinates.first; - // Log.print('startLocation: ${startLocation}'); - Map? constructRidePayload( - PaymentController paymentController) { - try { - final msg = dataCarsLocationByPassenger?['message']; - final hasDrivers = msg is List && - msg.isNotEmpty && - carsOrder >= 0 && - carsOrder < msg.length; - - if (!hasDrivers) { - // لا يوجد سائقين -> عرض دايلوغ وارجاع null - _showNoDriversDialog(); - return null; - } - - // الآن آمن القراءة - final driverId = msg[carsOrder]['driver_id'] ?? 'new_driver'; - - return { - "start_location": - '${startLocation.latitude},${startLocation.longitude}', - "end_location": '${endLocation.latitude},${endLocation.longitude}', - "date": DateTime.now().toString(), - "time": DateTime.now().toString(), - "endtime": durationToAdd.toString(), - "price": totalPassenger.toStringAsFixed(2), - "passenger_id": box.read(BoxName.passengerID).toString(), - "driver_id": driverId, - "status": "waiting", - 'carType': box.read(BoxName.carType), - "price_for_driver": totalPassenger.toString(), - "price_for_passenger": totalME.toString(), - "distance": distance.toString(), - "paymentMethod": paymentController.isWalletChecked.toString(), - }; - } catch (e, st) { - Log.print('Error in constructRidePayload: $e'); - Log.print(st.toString()); - // في حال أي استثناء، اعتبره كعدم وجود سائقين أو خطأ -> عرض دايلوغ - _showNoDriversDialog(); - return null; - } - } - - void _showNoDriversDialog() { - // اذا تستخدم GetX: - MyDialog().getDialog( - 'Sorry'.tr, - 'No cars are available at the moment. Please try again later.'.tr, - () { - Get.back(); // closes the dialog - cancelRide(); // cancels or resets the ride - }, - ); - } - - Future notifyAvailableDrivers() async { - int iteration = 0; - const maxIterations = 5; - const iterationDelay = Duration(seconds: 2); - - while (iteration < maxIterations) { - await Future.delayed(iterationDelay); - await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), 3000); - - if (dataCarsLocationByPassenger != null && - dataCarsLocationByPassenger.containsKey('message') && - dataCarsLocationByPassenger['message'] != null) { - for (var driverData in dataCarsLocationByPassenger['message']) { - String driverId = driverData['driver_id'].toString(); - if (!notifiedDrivers.contains(driverId)) { - notifiedDrivers.add(driverId); - double driverLat = double.parse(driverData['latitude']); - double driverLng = double.parse(driverData['longitude']); - double distanceToDriverInMeters = Geolocator.distanceBetween( - passengerLocation.latitude, - passengerLocation.longitude, - driverLat, - driverLng, - ); - - double distanceToDriverInKm = distanceToDriverInMeters * - 1.25 / //to approximate to stright distance - 1000; - double durationToDriverInHours = - distanceToDriverInKm / 25; // 25 km/h as default speed - double durationToDriverInSeconds = durationToDriverInHours * 3600; - durationToPassenger = durationToDriverInSeconds.toInt(); - distanceByPassenger = - (distanceToDriverInMeters * 1.25).toStringAsFixed(0); - Future.delayed(const Duration(microseconds: 10)); - final body = constructNotificationBody(driverData); - Log.print('body:ww $body'); - // firebaseMessagesController.sendNotificationToDriverMAP( - // 'Order', // without tr since background not valid - // endNameAddress, - // (driverData['token'].toString()), - // body, - // 'order'); - NotificationService.sendNotification( - category: 'Order', - target: (driverData['token'].toString()), - title: 'Order'.tr, - body: endNameAddress, - isTopic: false, // Important: this is a token - tone: 'tone1', - driverList: body); - } - } - } - iteration++; - } - } - - Future notifyAvailableDriversAgain() async { - Log.print('[DEBUG] Starting notifyAvailableDriversAgain()'); - await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), 3000); - Log.print( - '[DEBUG] Found drivers to notify: ${dataCarsLocationByPassenger['message']?.length}'); - if (dataCarsLocationByPassenger != null && - dataCarsLocationByPassenger.containsKey('message') && - dataCarsLocationByPassenger['message'] != null) { - for (var driverData in dataCarsLocationByPassenger['message']) { - String driverId = driverData['driver_id'].toString(); - if (!notifiedDrivers.contains(driverId)) { - notifiedDrivers.add(driverId); - double driverLat = double.parse(driverData['latitude']); - double driverLng = double.parse(driverData['longitude']); - double distanceToDriverInMeters = Geolocator.distanceBetween( - passengerLocation.latitude, - passengerLocation.longitude, - driverLat, - driverLng, - ); - - double distanceToDriverInKm = distanceToDriverInMeters * - 1.25 / //to approximate to stright distance - 1000; - double durationToDriverInHours = - distanceToDriverInKm / 25; // 25 km/h as default speed - double durationToDriverInSeconds = durationToDriverInHours * 3600; - durationToPassenger = durationToDriverInSeconds.toInt(); - distanceByPassenger = - (distanceToDriverInMeters * 1.25).toStringAsFixed(0); - Future.delayed(const Duration(microseconds: 10)); - final body = constructNotificationBody(driverData); - Log.print('body:ww ${body}'); - Log.print( - '[DEBUG] Sending to driver: ${driverData['driver_id']}, token: ${driverData['token']}'); - - NotificationService.sendNotification( - category: 'Order', - target: (driverData['token'].toString()), - title: 'Order'.tr, - body: endNameAddress, - isTopic: false, // Important: this is a token - tone: 'tone1', - driverList: body); - } - } - } - } - - List constructNotificationBody(var driverData) { - final paymentController = Get.find(); - return [ - // '${data[0]['start_location']['lat']},${data[0]['start_location']['lng']}', - // '${data[0]['end_location']['lat']},${data[0]['end_location']['lng']}', - '${startLocation.latitude},${startLocation.longitude}', - '${endLocation.latitude},${endLocation.longitude}', - totalPassenger.toStringAsFixed(2), - totalDriver.toStringAsFixed(2), - durationToRide.toString(), - distance.toStringAsFixed(2), - driverData?['driver_id']?.toString() ?? 'N/A', - box.read(BoxName.passengerID).toString(), - (box.read(BoxName.name).toString().split(' ')[0]).toString(), - (box.read(BoxName.tokenFCM).toString()), - (box.read(BoxName.phone).toString()), - durationToPassenger.toStringAsFixed(0) ?? '120', - distanceByPassenger.toString() ?? '2000', - paymentController.isWalletChecked.toString(), - driverData?['token']?.toString() ?? 'N/A', - durationToPassenger.toString(), - rideId.toString(), - rideTimerBegin.toString(), - driverData?['driver_id']?.toString() ?? 'N/A', - durationToRide.toString(), - Get.find().wayPoints.length > 1 - ? 'haveSteps' - : 'startEnd', - placesCoordinate[0], - placesCoordinate[1], - placesCoordinate[2], - placesCoordinate[3], - placesCoordinate[4], - costForDriver.toStringAsFixed(2), - (double.parse(box.read(BoxName.passengerWalletTotal)) < 0 - ? double.parse(box.read(BoxName.passengerWalletTotal)) - .toStringAsFixed(2) - : '0'), - box.read(BoxName.email).toString() ?? 'none', - startNameAddress, - endNameAddress, - box.read(BoxName.carType), - kazan.toStringAsFixed(0), - passengerRate.toStringAsFixed(2), - ]; - } StreamController _rideStatusStreamController = StreamController.broadcast(); @@ -3089,44 +3125,110 @@ class MapPassengerController extends GetxController { // } Future rideAppliedFromDriver(bool isApplied) async { + Log.print('[rideAppliedFromDriver] 🚀 Starting logic...'); + + // 1. جلب بيانات السائق والسيارة المحدثة من السيرفر await getUpdatedRideForDriverApply(rideId); - NotificationController().showNotification( - 'Accepted Ride'.tr, - '$driverName ${'accepted your order at price'.tr} ${totalPassenger.toStringAsFixed(1)} ${'with type'.tr} ${box.read(BoxName.carType)}', - 'ding'); - if (box.read(BoxName.carType) == 'Speed' || - box.read(BoxName.carType) == 'Awfar Car') { - NotificationController().showNotification( - 'The captain is responsible for the route.'.tr, - 'This price is fixed even if the route changes for the driver.'.tr, - 'ding'); - } else if (box.read(BoxName.carType) == 'Comfort' || - box.read(BoxName.carType) == 'Lady') { + + // تنبيهات الأسعار حسب نوع السيارة + if (['Speed', 'Awfar Car'].contains(box.read(BoxName.carType))) { + NotificationController().showNotification('Fixed Price'.tr, + 'The captain is responsible for the route.'.tr, 'ding'); + } else if (['Comfort', 'Lady'].contains(box.read(BoxName.carType))) { NotificationController().showNotification('Attention'.tr, 'The price may increase if the route changes.'.tr, 'ding'); } + isApplied = true; statusRide = 'Apply'; rideConfirm = false; isSearchingWindow = false; - update(); - // تشغيل التايمر لجلب موقع السائق بشكل دوري - startTimerFromDriverToPassengerAfterApplied(); - // 1. جلب موقع السائق الأولي فوراً + _isDriverAppliedLogicExecuted = true; // ضمان عدم التكرار + + update(); // تحديث أولي + + // 2. جلب موقع السائق الأولي فوراً (Blocking await) await getDriverCarsLocationToPassengerAfterApplied(); - // 2. رسم المسار مرة واحدة فقط هنا + // 3. إذا توفر الموقع: حساب المسافة/الزمن ورسم المسار if (driverCarsLocationToPassengerAfterApplied.isNotEmpty) { - await drawDriverPathOnly( - driverCarsLocationToPassengerAfterApplied.last, passengerLocation); + LatLng driverPos = driverCarsLocationToPassengerAfterApplied.last; - // ضبط الكاميرا لتشمل السائق والراكب مرة واحدة في البداية - _fitCameraToPoints( - driverCarsLocationToPassengerAfterApplied.last, passengerLocation); + Log.print( + '[rideAppliedFromDriver] 📍 Driver at: $driverPos, Passenger at: $passengerLocation'); + + // أ) استدعاء API لحساب المسافة والزمن الدقيق (بدون رسم) + await getInitialDriverDistanceAndDuration(driverPos, passengerLocation); + + // ب) رسم خط المسار (Visual only) + await drawDriverPathOnly(driverPos, passengerLocation); + + // ج) ضبط الكاميرا لتشمل السائق والراكب + _fitCameraToPoints(driverPos, passengerLocation); + } else { + Log.print( + '[rideAppliedFromDriver] ⚠️ Warning: Driver location not found yet.'); } - startUiCountdown(); - _rideStatusStreamController.close(); + // 4. تشغيل تايمر التتبع المستمر (الذي سيقوم بتناقص الوقت الذي جلبناه من API) + startTimerFromDriverToPassengerAfterApplied(); + + // إغلاق الستريم القديم + if (!_rideStatusStreamController.isClosed) + _rideStatusStreamController.close(); + } + + /// دالة لجلب المسافة والزمن بين السائق والراكب عند قبول الطلب + /// تستخدم API سريع (overview=false) + Future getInitialDriverDistanceAndDuration( + LatLng driverPos, LatLng passengerPos) async { + final String apiUrl = 'https://routec.intaleq.xyz/route'; + final String apiKey = Env.mapKeyOsm; + + final String origin = '${driverPos.latitude},${driverPos.longitude}'; + final String dest = '${passengerPos.latitude},${passengerPos.longitude}'; + + // الرابط المطلوب: steps=false&overview=false (سريع جداً للبيانات فقط) + final Uri uri = Uri.parse( + '$apiUrl?origin=$origin&destination=$dest&steps=false&overview=false'); + + try { + Log.print('[InitialCalc] Fetching distance/duration from: $uri'); + final response = await http.get(uri, headers: {'X-API-KEY': apiKey}); + + if (response.statusCode == 200) { + final data = jsonDecode(response.body); + + if (data['status'] == 'ok') { + // 1. استخراج الزمن (بالثواني) + // نستخدم المعامل 1.5348 أو 1.4 حسب منطقك السابق لتقدير الوقت الواقعي + double durationSecondsRaw = (data['duration_s'] as num).toDouble(); + int finalDurationSeconds = (durationSecondsRaw * kDurationScalar) + .toInt(); // kDurationScalar = 1.5348 + + // 2. استخراج المسافة (بالأمتار) + double distanceMeters = (data['distance_m'] as num).toDouble(); + + // 3. تحديث المتغيرات في الكنترولر + timeToPassengerFromDriverAfterApplied = finalDurationSeconds; + remainingTimeToPassengerFromDriverAfterApplied = finalDurationSeconds; + + distanceByPassenger = + (distanceMeters).toStringAsFixed(0); // المسافة نصاً + + // يمكنك أيضاً تحديث durationToPassenger إذا كنت تستخدمها + durationToPassenger = finalDurationSeconds; + + Log.print( + '[InitialCalc] ✅ Success: Duration=${finalDurationSeconds}s, Distance=${distanceMeters}m'); + update(); // تحديث الواجهة لعرض الوقت الجديد فوراً + } + } else { + Log.print('[InitialCalc] ❌ API Error: ${response.statusCode}'); + } + } catch (e) { + Log.print('[InitialCalc] 💥 Exception: $e'); + } } // دالة خفيفة وسريعة لرسم خط المسار فقط (بدون أسعار أو خطوات) @@ -3182,21 +3284,63 @@ class MapPassengerController extends GetxController { } // دالة مساعدة لضبط الكاميرا - void _fitCameraToPoints(LatLng p1, LatLng p2) { + // void _fitCameraToPoints(LatLng p1, LatLng p2) { + // double minLat = min(p1.latitude, p2.latitude); + // double maxLat = max(p1.latitude, p2.latitude); + // double minLng = min(p1.longitude, p2.longitude); + // double maxLng = max(p1.longitude, p2.longitude); + + // mapController?.animateCamera( + // CameraUpdate.newLatLngBounds( + // LatLngBounds( + // southwest: LatLng(minLat, minLng), + // northeast: LatLng(maxLat, maxLng), + // ), + // 100 // Padding + // ), + // ); + // } + void _fitCameraToPoints(LatLng p1, LatLng p2) async { + if (mapController == null) return; + + // 1. معالجة حالة النقاط المتطابقة (تمنع الكراش في Android) + if (p1.latitude == p2.latitude && p1.longitude == p2.longitude) { + try { + mapController?.animateCamera(CameraUpdate.newLatLngZoom(p1, 17)); + } catch (e) { + Log.print("Error animating to single point: $e"); + } + return; + } + + // 2. حساب الحدود double minLat = min(p1.latitude, p2.latitude); double maxLat = max(p1.latitude, p2.latitude); double minLng = min(p1.longitude, p2.longitude); double maxLng = max(p1.longitude, p2.longitude); - mapController?.animateCamera( - CameraUpdate.newLatLngBounds( + // 3. تقليل الهوامش لتجنب خطأ "View size too small" + // نستخدم 50 بدلاً من 100 ليكون آمناً مع الخرائط الصغيرة + double padding = 50.0; + + try { + await mapController?.animateCamera( + CameraUpdate.newLatLngBounds( LatLngBounds( southwest: LatLng(minLat, minLng), northeast: LatLng(maxLat, maxLng), ), - 100 // Padding - ), - ); + padding, + ), + ); + } catch (e) { + Log.print("Error animating bounds (Map might be resizing): $e"); + // محاولة بديلة آمنة: تحريك الكاميرا للمنتصف فقط دون Bounds + try { + LatLng center = LatLng((minLat + maxLat) / 2, (minLng + maxLng) / 2); + mapController?.animateCamera(CameraUpdate.newLatLngZoom(center, 14)); + } catch (_) {} + } } // Listening to the Stream @@ -3212,15 +3356,6 @@ class MapPassengerController extends GetxController { }); } - reSearchAfterCanceledFromDriver() async { - shouldFetch = true; // Stop further fetches - statusRide = 'wait'; - rideConfirm = true; - isSearchingWindow = true; - update(); - updateConfirmRideForAllDriverAvailable(); - } - void start15SecondTimer(String rideId) { Timer(const Duration(seconds: 15), () { // delayAndFetchRideStatusForAllDriverAvailable(rideId); @@ -3464,8 +3599,7 @@ class MapPassengerController extends GetxController { // Set up the periodic timer Timer? timer = Timer.periodic(const Duration(seconds: 4), (Timer t) async { // Attempt to get car location - foundCars = await getCarsLocationByPassengerAndReloadMarker( - carType, attempt * 2000); + foundCars = await getCarsLocationByPassengerAndReloadMarker(); Log.print('foundCars: $foundCars'); if (foundCars) { @@ -3519,8 +3653,7 @@ class MapPassengerController extends GetxController { // return; } else if (reloadStartApp == true) { Log.print('reloadStartApp: $reloadStartApp'); - foundCars = await getCarsLocationByPassengerAndReloadMarker( - carType, boundIncreaseStep); + foundCars = await getCarsLocationByPassengerAndReloadMarker(); Log.print('foundCars: $foundCars'); if (foundCars) { @@ -3616,169 +3749,73 @@ class MapPassengerController extends GetxController { return 'Unknown Location (Defaulting to Jordan)'; } - // if (latitude >= 29.918901 && - // latitude <= 30.198857 && - // longitude >= 31.215009 && - // longitude <= 31.532186) { - // box.write(BoxName.serverChosen, AppLink.IntaleqCairoServer); - - // return 'Cairo'; - // } else if (latitude >= 29.904975 && - // latitude <= 30.143372 && - // longitude >= 30.787030 && - // longitude <= 31.215009) { - // box.write(BoxName.serverChosen, AppLink.IntaleqGizaServer); - // return 'Giza'; - // } else if (latitude >= 30.396286 && - // latitude <= 31.654458 && - // longitude >= 29.041139 && - // longitude <= 32.626259) { - // box.write(BoxName.serverChosen, AppLink.IntaleqAlexandriaServer); - // return 'Alexandria'; - // } else { - // box.write(BoxName.serverChosen, AppLink.IntaleqCairoServer); - // return 'Cairo'; - // } - // } - - Future getCarsLocationByPassengerAndReloadMarker( - String carType, int boundIncreaseStep) async { - // if (statusRide == 'wait') { + Future getCarsLocationByPassengerAndReloadMarker() async { + // 1. تنظيف القائمة والماركرز carsLocationByPassenger = []; - LatLngBounds bounds = calculateBounds(passengerLocation.latitude, - passengerLocation.longitude, boundIncreaseStep.toDouble()); - var res; - // await getLocation(); - switch (carType) { - case 'Lady': - res = await CRUD() - .get(link: AppLink.getFemalDriverLocationByPassenger, payload: { - 'southwestLat': bounds.southwest.latitude.toString(), - 'southwestLon': bounds.southwest.longitude.toString(), - 'northeastLat': bounds.northeast.latitude.toString(), - 'northeastLon': bounds.northeast.longitude.toString(), - }); - break; - case 'Comfort': - res = await CRUD() - .get(link: AppLink.getCarsLocationByPassengerComfort, payload: { - 'southwestLat': bounds.southwest.latitude.toString(), - 'southwestLon': bounds.southwest.longitude.toString(), - 'northeastLat': bounds.northeast.latitude.toString(), - 'northeastLon': bounds.northeast.longitude.toString(), - }); - break; - case 'Speed': - res = await CRUD() - .get(link: AppLink.getCarsLocationByPassengerSpeed, payload: { - 'southwestLat': bounds.southwest.latitude.toString(), - 'southwestLon': bounds.southwest.longitude.toString(), - 'northeastLat': bounds.northeast.latitude.toString(), - 'northeastLon': bounds.northeast.longitude.toString(), - }); - break; - case 'Scooter': - res = await CRUD() - .get(link: AppLink.getCarsLocationByPassengerDelivery, payload: { - 'southwestLat': bounds.southwest.latitude.toString(), - 'southwestLon': bounds.southwest.longitude.toString(), - 'northeastLat': bounds.northeast.latitude.toString(), - 'northeastLon': bounds.northeast.longitude.toString(), - }); - break; - case 'Awfar Car': - res = await CRUD() - .get(link: AppLink.getCarsLocationByPassengerBalash, payload: { - 'southwestLat': bounds.southwest.latitude.toString(), - 'southwestLon': bounds.southwest.longitude.toString(), - 'northeastLat': bounds.northeast.latitude.toString(), - 'northeastLon': bounds.northeast.longitude.toString(), - }); - break; - case 'Electric': - res = await CRUD() - .get(link: AppLink.getCarsLocationByPassengerElectric, payload: { - 'southwestLat': bounds.southwest.latitude.toString(), - 'southwestLon': bounds.southwest.longitude.toString(), - 'northeastLat': bounds.northeast.latitude.toString(), - 'northeastLon': bounds.northeast.longitude.toString(), - }); - break; - case 'Pink Bike': - res = await CRUD() - .get(link: AppLink.getCarsLocationByPassengerPinkBike, payload: { - 'southwestLat': bounds.southwest.latitude.toString(), - 'southwestLon': bounds.southwest.longitude.toString(), - 'northeastLat': bounds.northeast.latitude.toString(), - 'northeastLon': bounds.northeast.longitude.toString(), - }); - break; - case 'Van': - res = await CRUD() - .get(link: AppLink.getCarsLocationByPassengerVan, payload: { - 'southwestLat': bounds.southwest.latitude.toString(), - 'southwestLon': bounds.southwest.longitude.toString(), - 'northeastLat': bounds.northeast.latitude.toString(), - 'northeastLon': bounds.northeast.longitude.toString(), - }); - break; - default: - res = await CRUD() - .get(link: AppLink.getCarsLocationByPassenger, payload: { - 'southwestLat': bounds.southwest.latitude.toString(), - 'southwestLon': bounds.southwest.longitude.toString(), - 'northeastLat': bounds.northeast.latitude.toString(), - 'northeastLon': bounds.northeast.longitude.toString(), - }); + if (passengerLocation.latitude == 0 && passengerLocation.longitude == 0) { + return false; // لا يوجد موقع للراكب } + // 2. طلب بسيط ومباشر (أنا هنا، أعطني السائقين حولي) + var res = await CRUD().get( + link: AppLink.getCarsLocationByPassenger, + payload: { + 'lat': passengerLocation.latitude.toString(), + 'lng': passengerLocation.longitude.toString(), + 'radius': '5', // نصف القطر ثابت (مثلاً 5 كم) أو يمكنك جعله ديناميكياً + 'limit': '50', // أقصى عدد سيارات للعرض + }, + ); + if (res == 'failure') { noCarString = true; - // dataCarsLocationByPassenger = 'failure'; update(); return false; - } else { - noCarString = false; - dataCarsLocationByPassenger = jsonDecode(res); - // Log.print( - // 'dataCarsLocationByPassenger:getCarsLocationByPassengerAndReloadMarker $dataCarsLocationByPassenger'); - - // Check if 'message' is present and not null - if (dataCarsLocationByPassenger != null && - dataCarsLocationByPassenger.isNotEmpty) { - print('carsOrder is in of bounds for message array'); - // return false; - // } - } else { - // Get.defaultDialog(title: 'No cars available '); - print('No cars available or message is null'); - return false; - } - - carsLocationByPassenger.clear(); // Clear existing markers - - for (var i = 0; i < dataCarsLocationByPassenger['message'].length; i++) { - var json = dataCarsLocationByPassenger['message'][i]; - _updateOrCreateMarker( - MarkerId(json['latitude']).toString(), - LatLng( - double.parse(json['latitude']), double.parse(json['longitude'])), - double.parse(json['heading']), - _getIconForCar(json), - ); - - driversToken.add((json['token'])); - } - - // Add fake car markers - _addFakeCarMarkers(passengerLocation, 1); - - update(); - return true; } - // } - // return false; + + // 3. معالجة البيانات + noCarString = false; + var responseData = jsonDecode(res); + + // دعم التنسيقين (data أو message) لضمان عدم حدوث كراش + List driversList = []; + if (responseData['status'] == true && responseData['data'] != null) { + driversList = responseData['data']; + } else if (responseData['message'] != null) { + driversList = responseData['message']; // للكود القديم احتياطاً + } + + if (driversList.isEmpty) { + carsLocationByPassenger.clear(); + update(); + return false; + } + + carsLocationByPassenger.clear(); // تنظيف الماركرز القديمة + + // 4. رسم السيارات على الخريطة + for (var i = 0; i < driversList.length; i++) { + var carData = driversList[i]; + + // التحقق من الإحداثيات لضمان عدم رسم سيارة في المحيط + double lat = double.tryParse(carData['latitude'].toString()) ?? 0.0; + double lng = double.tryParse(carData['longitude'].toString()) ?? 0.0; + double heading = double.tryParse(carData['heading'].toString()) ?? 0.0; + + if (lat == 0.0 || lng == 0.0) continue; + + _updateOrCreateMarker( + MarkerId(carData['id'].toString()).toString(), + LatLng(lat, lng), + heading, + // الدالة هذه تقرر شكل الأيقونة بناءً على نوع السيارة القادم من السيرفر + _getIconForCar(carData), + ); + } + + update(); + return true; } final List> fakeCarData = []; @@ -3896,7 +3933,7 @@ class MapPassengerController extends GetxController { String token = digest.toString(); // الرابط المباشر لصفحة التتبع - return "https://intaleqapp.com/track/index.html?id=$cleanRideId&token=$token"; + return "https://intaleqapp.com/track/index.php?id=$cleanRideId&token=$token"; } // 2. الدالة الرئيسية (تم تعديلها لإرسال واتساب بدلاً من الإشعارات) @@ -4244,46 +4281,68 @@ Intaleq Team'''; LatLng driverLocationToPassenger = const LatLng(32, 35); Future getDriverCarsLocationToPassengerAfterApplied() async { - // 1. جلب البيانات من السيرفر - var res = await CRUD().get( - link: AppLink.getDriverCarsLocationToPassengerAfterApplied, - payload: {'driver_id': driverId}); + // driverCarsLocationToPassengerAfterApplied + // 1. الشرط الأمني: تتبع فقط إذا كانت الرحلة نشطة + bool isRideActive = (statusRide == 'Apply' || + statusRide == 'Arrived' || + statusRide == 'Begin' || + currentRideState.value == RideState.driverApplied || + currentRideState.value == RideState.driverArrived || + currentRideState.value == RideState.inProgress); - if (res != 'failure') { - datadriverCarsLocationToPassengerAfterApplied = jsonDecode(res); - - if (datadriverCarsLocationToPassengerAfterApplied['message'] != null && - datadriverCarsLocationToPassengerAfterApplied['message'].isNotEmpty) { - var _data = datadriverCarsLocationToPassengerAfterApplied['message'][0]; - - // تحديث إحداثيات السائق الحالية - LatLng newDriverPos = LatLng( - double.parse(_data['latitude']), double.parse(_data['longitude'])); - - driverLocationToPassenger = newDriverPos; - driverCarsLocationToPassengerAfterApplied.add(newDriverPos); - - // 2. تنظيف الخريطة من السيارات الوهمية والقديمة (الإبقاء فقط على السائق والمسار) - clearMarkersExceptStartEndAndDriver(); - - // 3. تحديث ماركر السائق (تحريكه) - reloadMarkerDriverCarsLocationToPassengerAfterApplied(); - - // 4. رسم/تحديث خط المسار بين السائق والراكب - // نتحقق أننا في حالة تستدعي الرسم - // if (rideTimerBegin || - // statusRide == 'Apply' || - // currentRideState.value == RideState.driverApplied || - // currentRideState.value == RideState.inProgress) { - // await drawDriverPathOnly(newDriverPos, passengerLocation); - // } - - // // 5. تحديث الكاميرا لتشمل السائق والراكب (اختياري: يمكنك وضع شرط لعدم الازعاج اذا حرك المستخدم الخريطة) - // _fitCameraToPoints(newDriverPos, passengerLocation); - } + if (!isRideActive || + statusRide == 'Finished' || + statusRide == 'Cancel' || + currentRideState.value == RideState.finished || + currentRideState.value == RideState.noRide || + currentRideState.value == RideState.preCheckReview) { + return; + } + + // 2. منع التداخل (Blocking) + if (_isFetchingDriverLocation) return; + _isFetchingDriverLocation = true; + + try { + var res = await CRUD().get( + link: AppLink.getDriverCarsLocationToPassengerAfterApplied, + payload: {'driver_id': driverId}); + + if (res != 'failure') { + datadriverCarsLocationToPassengerAfterApplied = jsonDecode(res); + + if (datadriverCarsLocationToPassengerAfterApplied['message'] != null && + datadriverCarsLocationToPassengerAfterApplied['message'] + .isNotEmpty) { + var _data = + datadriverCarsLocationToPassengerAfterApplied['message'][0]; + + LatLng newDriverPos = LatLng( + double.parse(_data['latitude'].toString()), + double.parse(_data['longitude'].toString())); +// أضف هذا السطر لتقليل استهلاك الذاكرة + if (driverCarsLocationToPassengerAfterApplied.length > 10) { + driverCarsLocationToPassengerAfterApplied.removeAt(0); + } + driverLocationToPassenger = newDriverPos; + driverCarsLocationToPassengerAfterApplied.add(newDriverPos); +// 🔥 الإضافة هنا أيضاً 🔥 +// 🔥 تحديث التوقيت حتى لو جاءت من API لكي يهدأ الحارس قليلاً + _lastSocketLocationTime = DateTime.now(); + _checkAndRecalculateIfDeviated(newDriverPos); + // [تعديل هام] تنظيف آمن: لا نحذف ماركر السائق الحالي + clearMarkersExceptStartEndAndDriver(); + + // تحريك الماركر + reloadMarkerDriverCarsLocationToPassengerAfterApplied(); + } + } + update(); + } catch (e) { + Log.print('Error fetching driver location: $e'); + } finally { + _isFetchingDriverLocation = false; } - // 6. تحديث الواجهة بعد انتهاء كل العمليات - update(); } Future runEvery30SecondsUntilConditionMet() async { @@ -4510,6 +4569,13 @@ Intaleq Team'''; _masterTimer?.cancel(); // (أضف المؤقت الرئيسي) _camThrottle?.cancel(); // (أضف مؤقت الكاميرا) + if (isSocketConnected) { + socket.emit('unsubscribe_all', + {'passenger_id': box.read(BoxName.passengerID).toString()}); + socket.disconnect(); + socket.dispose(); + } + // 2. إلغاء جميع المؤقتات في الخريطة (للتحريكات السلسة) _animationTimers.forEach((key, timer) { timer.cancel(); @@ -4581,15 +4647,12 @@ Intaleq Team'''; clearPlacesDestination(); clearPolyline(); data = []; - await CRUD().post(link: AppLink.updateRides, payload: { - "id": rideId.toString(), // Convert to String - "status": 'notApplyFromAnyDriver' - }); - - CRUD().post(link: "${AppLink.endPoint}/ride/rides/update.php", payload: { - "id": rideId.toString(), // Convert to String - "status": 'notApplyFromAnyDriver' - }); + await CRUD().post( + link: "${AppLink.server}/ride/rides/cancel_ride_by_passenger.php", + payload: { + "ride_id": rideId.toString(), // Convert to String + "reason": 'notApplyFromAnyDriver' + }); rideConfirm = false; statusRide == 'Cancel'; @@ -4606,46 +4669,75 @@ Intaleq Team'''; update(); } - Future cancelRide() async { +// متغيرات أسباب الإلغاء + int selectedReasonIndex = -1; + String selectedReasonText = ""; + TextEditingController otherReasonController = TextEditingController(); + + /// تحديث السبب المختار + void selectReason(int index, String reason) { + selectedReasonIndex = index; + selectedReasonText = reason; + update(); + } + + /// **دالة إلغاء الرحلة (النهائية)** + Future cancelRide() async { + // 1. التحقق من اختيار سبب + if (selectedReasonIndex == -1) { + Get.snackbar( + 'Attention'.tr, + 'Please select a reason first'.tr, + snackPosition: SnackPosition.BOTTOM, + backgroundColor: Colors.orange, + colorText: Colors.white, + ); + return; + } + + // 2. تجهيز نص السبب النهائي + String finalReason = selectedReasonText; + if (finalReason == "Other".tr) { + if (otherReasonController.text.trim().isEmpty) { + Get.snackbar("Attention".tr, "Please write the reason...".tr, + backgroundColor: Colors.red, colorText: Colors.white); + return; + } + finalReason = otherReasonController.text.trim(); + } + + // 3. التنظيف المحلي الفوري (UX Optimization) + // نقوم بتنظيف الواجهة فوراً ليشعر المستخدم بالاستجابة السريعة + Get.back(); // إغلاق الـ BottomSheet + changeCancelRidePageShow(); // إخفاء زر الإلغاء إن وجد clearPlacesDestination(); clearPolyline(); data = []; - changeCancelRidePageShow(); - if (rideId != 'yet') { - Log.print('cancelRide: 1'); - await NotificationService.sendNotification( - category: 'Cancel Trip', - target: driverToken.toString(), - title: 'Cancel Trip'.tr, - body: 'Cancel Trip'.tr, - isTopic: false, - tone: 'tone1', - driverList: [], - ); - await Future.wait([ - CRUD().post( - link: AppLink.updateRides, - payload: {"id": rideId.toString(), "status": 'Cancel'}), - CRUD().post( - link: "${AppLink.server}/ride/rides/update.php", - payload: {"id": rideId.toString(), "status": 'Cancel'}), - CRUD().post( - link: AppLink.updateDriverOrder, - payload: {"order_id": rideId.toString(), "status": 'Cancel'}), - CRUD().post( - link: AppLink.updateWaitingTrip, - payload: {"id": rideId.toString(), "status": 'Cancel'}), - ]); + // إيقاف جميع التايمرات + stopAllTimers(); + currentRideState.value = RideState.cancelled; + + // 4. الاتصال بالسيرفر لإلغاء الرحلة وإبلاغ السائق + if (rideId != 'yet' && rideId != null) { + Log.print( + '📡 Sending Cancel Request to Server with Reason: $finalReason'); + + try { + await CRUD().post( + link: "${AppLink.server}/ride/rides/cancel_ride_by_passenger.php", + payload: { + "ride_id": rideId.toString(), + "reason": finalReason // ✅ إرسال السبب للسيرفر + }, + ); + // لا داعي لإرسال FCM أو Socket يدوياً من هنا، PHP يقوم بذلك + } catch (e) { + Log.print("Error cancelling on server: $e"); + } } - // ---!! الإضافة الحاسمة لحل مشكلة "cancelled" !! --- - Log.print( - '[cancelRide] User cancelled. Setting state and stopping timers.'); - currentRideState.value = RideState.cancelled; // 1. تعيين الحالة - stopAllTimers(); // 2. إيقاف المؤقت الرئيسي - // --- نهاية الإضافة --- - + // 5. العودة للصفحة الرئيسية Get.offAll(() => const MapPagePassenger()); } @@ -5663,8 +5755,7 @@ Intaleq Team'''; clearMarkersExceptStartEnd(); // _smoothlyUpdateMarker(); // startCarLocationSearch(box.read(BoxName.carType)); - await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), 5000); + await getCarsLocationByPassengerAndReloadMarker(); await getNearestDriverByPassengerLocation(); // Log.print('reloadMarkers: from startMarkerReloading'); } else { @@ -5954,39 +6045,6 @@ Intaleq Team'''; stopPoints.remove(stop); update(); // Trigger a rebuild of the UI } -// [تعديل] نحتاج هذه المكتبات لإرسال طلب HTTP مع هيدر - -// ... (باقي imports الخاصة بك) -// داخل MapPassengerController - // Future getReverseGeocoding(LatLng location) async { - // final lat = location.latitude; - // final lon = location.longitude; - - // // بناء رابط الـ Reverse Geocoding - // final url = - // 'https://geocode.intaleq.xyz/reverse_geocode.php?lat=$lat&lon=$lon'; - - // try { - // // استخدام دالة CRUD للطلب (نفترض أن CRUD تستخدم http.get أو ما شابه) - // final response = await CRUD().get(link: url, payload: {}); - - // if (response != 'failure') { - // final data = jsonDecode(response); - // // if (data['status'] == 'ok') { - // // نفضل استخدام display_name أو neighbourhood إذا كان متاحًا - // String name = data['display_name'] ?? - // data['neighbourhood'] ?? - // 'Unknown Location'.tr; - // return name; - // // } - // } - // } catch (e) { - // Log.print('Error in Reverse Geocoding: $e'); - // } - - // // العودة لقيمة افتراضية في حالة الفشل - // return 'Unknown Location'.tr; - // } Future getReverseGeocoding(LatLng location) async { final lat = location.latitude; @@ -6124,211 +6182,216 @@ Intaleq Team'''; // (b = 1.5348) هو المعامل الذي تم حسابه من مقارنة 60 رحلة بين Google و OSRM double kDurationScalar = 1.5348; //this from colab 60 random locations from google and routec -// LatLng endPoint=LatLng(33, 36); + +// ----------------------------------------------------------------------------------------- + // GET DIRECTION MAP (FULL) + // ----------------------------------------------------------------------------------------- + // ----------------------------------------------------------------------------------------- + // GET DIRECTION MAP (With Auto-Retry Logic) + // ----------------------------------------------------------------------------------------- + // أضفنا attemptCount لتتبع عدد المحاولات + // ----------------------------------------------------------------------------------------- + // GET DIRECTION MAP (Retry or Fail Strict Logic) + // ----------------------------------------------------------------------------------------- Future getDirectionMap(String origin, String destination, - [List waypoints = const []]) async { - isLoading = true; - isDrawingRoute = true; - update(); - if (isDrawingRoute) showDrawingBottomSheet(); - // --- هذا الجزء يبقى كما هو (تحميل السيارات، الخ) --- - remainingTime = 25; - await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), 5000); - var coordDestination = destination.split(','); - double latPassengerDestination = double.parse(coordDestination[0]); - double lngPassengerDestination = double.parse(coordDestination[1]); - myDestination = LatLng(latPassengerDestination, lngPassengerDestination); + [List waypoints = const [], int attemptCount = 0]) async { + // 1. إظهار التحميل فقط في المحاولة الأولى + if (attemptCount == 0) { + isLoading = true; + isDrawingRoute = true; + update(); + if (isDrawingRoute) showDrawingBottomSheet(); + + await getCarsLocationByPassengerAndReloadMarker(); + } + + // تجهيز الإحداثيات if (origin.isEmpty) { origin = '${passengerLocation.latitude.toString().split(',')[0]},${passengerLocation.longitude.toString().split(',')[1]}'; } - isLoading = false; - update(); + var coordDestination = destination.split(','); + double latDest = double.parse(coordDestination[0]); + double lngDest = double.parse(coordDestination[1]); + myDestination = LatLng(latDest, lngDest); - // --- [تعديل] بناء الرابط والاتصال بالـ API الجديد --- + // 2. الاتصال بالسيرفر - New OSRM format + var originCoords = origin.split(','); + String dynamicApiUrl = + 'https://routesjo.intaleq.xyz/route/v1/driving/${originCoords[1]},${originCoords[0]};${lngDest},${latDest}'; - // 1. تعريف الرابط والمفتاح - // final String countryCode = - // box.read(BoxName.countryCode)?.toString() ?? 'Jordan'; + var uri = Uri.parse('$dynamicApiUrl?steps=false&overview=full'); + Log.print('Requesting Route URI (Attempt: ${attemptCount + 1}): ${uri}'); - // تحديد رابط API المناسب - String dynamicApiUrl; - - dynamicApiUrl = 'https://routec.intaleq.xyz/route'; - - String apiKey = Env.mapKeyOsm; // مفتاح API الخاص بك - - // 2. بناء الرابط (URI) - // Waypoints غير مدعومة حالياً في OSRM، لذلك تم تجاهلها - var uri = Uri.parse( - '$dynamicApiUrl?origin=$origin&destination=$destination&steps=false&overview=full'); - Log.print('uri: ${uri}'); - - // 3. إرسال الطلب مع الهيدر http.Response response; Map responseData; try { - response = await http.get( - uri, - headers: { - 'X-API-KEY': apiKey, - }, - ).timeout(const Duration(seconds: 20)); // تايم آوت 20 ثانية - - if (response.statusCode != 200) { - print('Error from API: ${response.statusCode}'); - isLoading = false; - update(); - return; // خروج في حالة الخطأ - } + response = await http.get(uri).timeout(const Duration(seconds: 20)); + // تحقق من حالة الاستجابة - New format uses "code" instead of "status" responseData = json.decode(response.body); - Log.print('responseData: ${responseData}'); - if (responseData['status'] != 'ok') { - print('API returned an error: ${responseData['message']}'); - isLoading = false; - update(); - return; // خروج في حالة خطأ منطقي (مثل "no path") + if (response.statusCode != 200 || responseData['code'] != 'Ok') { + if (attemptCount < 2) { + await _retryProcess(origin, destination, waypoints, attemptCount); + return; + } + _handleFatalError( + "Server Error".tr, "Connection failed. Please try again.".tr); + return; } - } catch (e) { - print('Failed to get directions: $e'); + + // ============================================================ + // 🛑 الفحص الأمني (Sanity Check) - Updated for new format + // ============================================================ + + // البيانات الآن داخل routes[0] + if (responseData['routes'] == null || responseData['routes'].isEmpty) { + if (attemptCount < 2) { + await _retryProcess(origin, destination, waypoints, attemptCount); + return; + } + _handleFatalError("Route Not Found".tr, + "No routes available for this destination.".tr); + return; + } + + var routeData = responseData['routes'][0]; + double apiDistanceMeters = (routeData['distance'] as num).toDouble(); + + double startLat = double.parse(originCoords[0]); + double startLng = double.parse(originCoords[1]); + + // المسافة الجوية + double aerialDistance = + Geolocator.distanceBetween(startLat, startLng, latDest, lngDest); + + // الشرط: مسافة السيرفر صفرية أو صغيرة جداً بينما الحقيقية كبيرة + if (apiDistanceMeters < 50.0 && aerialDistance > 200.0) { + Log.print( + "⚠️ Suspicious Route detected! Server: $apiDistanceMeters m | Aerial: $aerialDistance m"); + + if (attemptCount < 2) { + Log.print("🔄 Retrying request (Attempt ${attemptCount + 2})..."); + await Future.delayed(const Duration(seconds: 1)); + await getDirectionMap( + origin, destination, waypoints, attemptCount + 1); + return; + } else { + Log.print("❌ All retries failed. Calculating Route is impossible."); + _handleFatalError( + "Route Not Found".tr, + "We couldn't find a valid route to this destination. Please try selecting a different point." + .tr); + return; + } + } + // ============================================================ + + // 3. معالجة البيانات (فقط في حال النجاح) - Updated field names + box.remove(BoxName.tripData); + box.write(BoxName.tripData, routeData); + + // duration and distance من routes[0] + durationToRide = + ((routeData['duration'] as num) * kDurationScalar).toInt(); + double distanceOfTrip = (routeData['distance'] as num) / 1000.0; + distance = distanceOfTrip; + + // steps الآن داخل legs[0].steps + data = routeData['legs'] != null && routeData['legs'].isNotEmpty + ? (routeData['legs'][0]['steps'] ?? []) + : []; + + // معالجة الرسم (Polyline) - الحقل الآن اسمه geometry بدلاً من polyline + String pointsString = routeData['geometry'] ?? ""; + List decodedPoints = []; + + if (pointsString.isNotEmpty) { + decodedPoints = await compute(decodePolylineIsolate, pointsString); + } + + // حماية إضافية: لو البولي لاين فارغ رغم أن المسافة سليمة + if (decodedPoints.isEmpty) { + _handleFatalError("Map Error".tr, "Received empty route data.".tr); + return; + } + + polylineCoordinates.clear(); + polylineCoordinates.addAll(decodedPoints); + + // 4. جلب العناوين (Reverse Geocoding) + final LatLng startLoc = polylineCoordinates.first; + final LatLng endLoc = polylineCoordinates.last; + + try { + final results = await Future.wait([ + getReverseGeocoding(startLoc), + getReverseGeocoding(endLoc), + ]); + startNameAddress = results[0]; + endNameAddress = results[1]; + } catch (e) { + startNameAddress = 'Start Point'.tr; + endNameAddress = 'Destination'.tr; + } + + // 5. تحديث الكاميرا + double? minLat, maxLat, minLng, maxLng; + for (LatLng point in polylineCoordinates) { + minLat = minLat == null ? point.latitude : min(minLat, point.latitude); + maxLat = maxLat == null ? point.latitude : max(maxLat, point.latitude); + minLng = + minLng == null ? point.longitude : min(minLng, point.longitude); + maxLng = + maxLng == null ? point.longitude : max(maxLng, point.longitude); + } + + // إغلاق شاشة التحميل بنجاح + if (Get.isBottomSheetOpen ?? false) Get.back(); + isDrawingRoute = false; isLoading = false; - update(); - return; // خروج عند فشل الاتصال - } - // --- نهاية جزء [تعديل] الاتصال --- - // --- [تعديل] قراءة البيانات من الـ API الجديد --- - // الـ API الجديد لا يرسل 'legs' أو 'routes'، البيانات مباشرة + if (minLat != null) { + LatLngBounds boundsData = LatLngBounds( + northeast: LatLng(maxLat!, maxLng!), + southwest: LatLng(minLat!, minLng!)); + mapController + ?.animateCamera(CameraUpdate.newLatLngBounds(boundsData, 100)); + } - box.remove(BoxName.tripData); - box.write( - BoxName.tripData, polylineCoordinate); // [تعديل] حفظ الاستجابة الجديدة + // 6. إضافة الماركرز + durationToAdd = Duration(seconds: durationToRide); + hours = durationToAdd.inHours; + minutes = (durationToAdd.inMinutes % 60).round(); - isBottomSheetShown = true; - - // [تعديل] قراءة البولي لاين والزمن والمسافة - // durationToRide = ((responseData['duration_s'] as num) * 1.4).toInt(); - durationToRide = - ((responseData['duration_s'] as num) * kDurationScalar).toInt(); - Log.print('durationToRide: ${durationToRide}'); - final String pointsString = responseData['polyline']; - double distanceOfTrip = (responseData['distance_m'] as num) / 1000.0; - Log.print('distanceOfTrip: ${distanceOfTrip}'); - distance = distanceOfTrip; - Log.print('distance: ${distance}'); - Log.print('distance: ${distance.toString()}'); -// ... داخل getDirectionMap, بعد التحقق من responseData['status'] == 'ok' ... - data = responseData['steps']; -// ... أكمل باقي الكود ... - List decodedPoints = - await compute(decodePolylineIsolate, pointsString); - - // مسح الإحداثيات القديمة وإضافة الجديدة - polylineCoordinates.clear(); - // box.remove(BoxName.tripData); - for (int i = 0; i < decodedPoints.length; i++) { - polylineCoordinates.add(decodedPoints[i]); - } - box.write(BoxName.tripData, responseData); - if (polylineCoordinates.isEmpty) { - print("Polyline is empty!"); - return; - } - final LatLng startLoc = decodedPoints.first; - final LatLng endLoc = decodedPoints.last; - - try { - final results = await Future.wait([ - getReverseGeocoding(startLoc), // الطلب الأول (index 0) - getReverseGeocoding(endLoc), // الطلب الثاني (index 1) - ]); - - startNameAddress = results[0]; - endNameAddress = results[1]; - } catch (e) { - // في حال حدث خطأ في Future.wait - print("Error in parallel reverse geocoding: $e"); - startNameAddress = 'Unknown Location'.tr; - endNameAddress = 'Unknown Location'.tr; - } - // [تعديل] الـ API الجديد لا يرسل 'start_location' أو 'bounds' - // لذلك سنقوم باشتقاقها مباشرة من البولي لاين - if (Get.isBottomSheetOpen ?? false) { - Get.back(); // لإغلاق شاشة "جاري الرسم" - } - isDrawingRoute = false; // Reset state - // 1. تحديد نقطة البداية والنهاية من البولي لاين - newStartPointLocation = polylineCoordinates.first; - LatLng endLocation = polylineCoordinates.last; - - // 2. إنشاء 'bounds' يدوياً ليناسب الكاميرا - // Find the northeast and southwest points from polyline coordinates - double? minLat, maxLat, minLng, maxLng; - for (LatLng point in polylineCoordinates) { - minLat = minLat == null ? point.latitude : min(minLat!, point.latitude); - maxLat = maxLat == null ? point.latitude : max(maxLat!, point.latitude); - minLng = minLng == null ? point.longitude : min(minLng!, point.longitude); - maxLng = maxLng == null ? point.longitude : max(maxLng!, point.longitude); - } - LatLngBounds boundsData = LatLngBounds( - northeast: LatLng(maxLat!, maxLng!), - southwest: LatLng(minLat!, minLng!)); - - // 3. تحديث الكاميرا (نفس الكود القديم، سيعمل الآن) - var cameraUpdate = CameraUpdate.newLatLngBounds(boundsData, 130); - mapController!.animateCamera(cameraUpdate); - - // --- باقي الكود (إضافة العلامات ورسم الخطوط) يبقى كما هو تقريباً --- - - durationToAdd = Duration(seconds: durationToRide); - hours = durationToAdd.inHours; - minutes = (durationToAdd.inMinutes % 60).round(); - - markers.clear(); - update(); - markers.add( - Marker( + markers.clear(); + markers.add(Marker( markerId: const MarkerId('start'), - position: newStartPointLocation, // [تعديل] نستخدم النقطة من البولي لاين + position: startLoc, icon: startIcon, - infoWindow: InfoWindow( - title: startNameAddress, - snippet: '', - ), - ), - ); + infoWindow: InfoWindow(title: startNameAddress), + )); - // Add end marker - markers.add( - Marker( + markers.add(Marker( markerId: const MarkerId('end'), - position: endLocation, // [تعديل] نستخدم النقطة من البولي لاين + position: endLoc, icon: endIcon, infoWindow: InfoWindow( title: endNameAddress, snippet: - '$distance ${'KM'.tr} ⌛ ${hours > 0 ? '${'Your Ride Duration is '.tr}$hours ${'H and'.tr} $minutes ${'m'.tr}' : '${'Your Ride Duration is '.tr} $minutes ${'m'.tr}'}'), - ), - ); + '$distance ${'KM'.tr} ⌛ ${hours > 0 ? '$hours H $minutes m' : '$minutes m'}'), + )); - if (polyLines.isNotEmpty) { - clearPolyline(); - } else { - bool lowEndMode = box.read(BoxName.lowEndMode) ?? false; + // 7. رسم الخط (فقط في حال النجاح) + if (polyLines.isNotEmpty) clearPolyline(); + bool isLowEndDevice = box.read(BoxName.lowEndMode) ?? true; - if (Platform.isIOS) { - animatePolylineLayered( - polylineCoordinates, - maxPoints: lowEndMode ? 30 : 150, - ); - } else { + if (isLowEndDevice) { polyLines.add(Polyline( - polylineId: const PolylineId('route'), + polylineId: const PolylineId('route_solid'), points: polylineCoordinates, width: 6, color: AppColor.primaryColor, @@ -6336,15 +6399,110 @@ Intaleq Team'''; startCap: Cap.roundCap, jointType: JointType.round, )); + } else { + polyLines.addAll(_createGradientPolylines(polylineCoordinates, + const Color(0xFF00E5FF), const Color(0xFFFF4081))); } rideConfirm = false; isMarkersShown = true; - update(); + + // إظهار الباتم شيت للسعر + bottomSheet(); + } catch (e) { + // محاولة أخيرة عند حدوث Exception + if (attemptCount < 2) { + await _retryProcess(origin, destination, waypoints, attemptCount); + } else { + _handleFatalError("Connection Error".tr, + "Please check your internet and try again.".tr); + } } } + // --- دالة المساعدة لإعادة المحاولة --- + Future _retryProcess(String origin, String dest, List waypoints, + int currentAttempt) async { + Log.print( + "🔄 Exception or Error caught. Retrying in 1s... (Attempt ${currentAttempt + 1})"); + await Future.delayed(const Duration(seconds: 1)); + getDirectionMap(origin, dest, waypoints, currentAttempt + 1); + } + + // ----------------------------------------------------------------------------------------- + // 🛑 دالة الخطأ القاتل (تغلق كل شيء وتعيد المستخدم للخريطة) + // ----------------------------------------------------------------------------------------- + void _handleFatalError(String title, String message) { + // 1. إغلاق شاشة التحميل (Drawing route...) + if (Get.isBottomSheetOpen ?? false) Get.back(); + + // 2. تصفير المتغيرات + isDrawingRoute = false; + isLoading = false; + update(); + + // 3. إظهار الديالوج الإجباري + Get.defaultDialog( + title: title, + titleStyle: AppStyle.title.copyWith(color: AppColor.redColor), + middleText: message, + middleTextStyle: AppStyle.subtitle, + barrierDismissible: false, // لا يمكن إغلاقه بالضغط خارجاً + confirm: MyElevatedButton( + title: "Close".tr, + kolor: AppColor.redColor, + onPressed: () { + Get.back(); // إغلاق الديالوج + + // 4. إعادة تحميل الصفحة بالكامل (تنظيف الحالة) + // تأكد من استيراد MapPagePassenger + Get.offAll(() => const MapPagePassenger()); + }, + ), + ); + } + + /// دالة لتقسيم المسار الطويل إلى قطع صغيرة ملونة بتدرج + Set _createGradientPolylines( + List points, Color startColor, Color endColor) { + Set lines = {}; + + // إذا كانت النقاط قليلة جداً، نرسم خطاً عادياً + if (points.length < 2) return lines; + + for (int i = 0; i < points.length - 1; i++) { + // حساب نسبة التقدم في المسار (من 0.0 إلى 1.0) + double t = i / points.length; + + // دمج اللونين بناءً على النسبة للحصول على اللون الحالي + // هذا يخلق التدرج من البداية للنهاية + Color segmentColor = Color.lerp(startColor, endColor, t) ?? startColor; + + lines.add(Polyline( + polylineId: PolylineId('route_segment_$i'), + points: [points[i], points[i + 1]], // وصل النقطة الحالية بالتالية فقط + width: 6, // سماكة الخط (اجعله سميكاً قليلاً ليظهر التدرج) + color: segmentColor, + startCap: Cap.roundCap, + endCap: Cap.roundCap, + jointType: JointType.round, + zIndex: 2, // لضمان ظهوره فوق أي طبقات أخرى + )); + } + + // (اختياري) إضافة "وهج" أو Glow أسفل الخط الرئيسي + // يتم ذلك برسم خط واحد شفاف وعريض أسفل الخطوط الملونة + lines.add(Polyline( + polylineId: const PolylineId('route_glow'), + points: points, + width: 10, // أعرض من الخط الرئيسي + color: startColor.withOpacity(0.3), // لون شفاف + zIndex: 1, // أسفل الخط الملون + )); + + return lines; + } // getDirectionMap(String origin, destination, // [List waypoints = const []]) async { // isLoading = true; @@ -6643,8 +6801,7 @@ Intaleq Team'''; isWayPointStopsSheetUtilGetMap = false; // haveSteps = true; // startCarLocationSearch(box.read(BoxName.carType)); - await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), 7000); + await getCarsLocationByPassengerAndReloadMarker(); // await getCarsLocationByPassengerAndReloadMarker(); // isLoading = true; update(); @@ -6752,8 +6909,8 @@ Intaleq Team'''; if (!promoFormKey.currentState!.validate()) return; // العتبات بالليرة السورية - const double minPromoLowSYP = 17200; // Speed / Balash - const double minPromoHighSYP = 20000; // Comfort / Electric / Lady + const double minPromoLowSYP = 172; // Speed / Balash + const double minPromoHighSYP = 200; // Comfort / Electric / Lady try { final value = await CRUD().get( @@ -6916,27 +7073,27 @@ Intaleq Team'''; // if (data.isEmpty) return; // === إعدادات عامة === - const double minFareSYP = 16000; // حد أدنى + const double minFareSYP = 160; // حد أدنى const double minBillableKm = 0.3; // حد أدنى للمسافة المفوترة - const double ladyFlatAddon = 2000; // إضافة ثابتة لـ Lady - const double airportAddonSYP = 20000; // إضافة المطار + const double ladyFlatAddon = 20; // إضافة ثابتة لـ Lady + const double airportAddonSYP = 200; // إضافة المطار // --- ⬇️ الإضافة الجديدة: إضافة حدود مطار دمشق ⬇️ --- - const double damascusAirportBoundAddon = 140000; // إضافة المطار (حدود) + const double damascusAirportBoundAddon = 1400; // إضافة المطار (حدود) // --- ⬆️ نهاية الإضافة ⬆️ --- // كهرباء - const double electricPerKmUplift = 400; // زيادة/كم - const double electricFlatAddon = 1000; // زيادة ثابتة + const double electricPerKmUplift = 4; // زيادة/كم + const double electricFlatAddon = 10; // زيادة ثابتة // Long Speed const double longSpeedThresholdKm = 40.0; - const double longSpeedPerKm = 2600.0; // Speed عند >40كم + const double longSpeedPerKm = 26.0; // Speed عند >40كم // قواعد الرحلات البعيدة للدقائق (تعمل لكل الأوقات) const double mediumDistThresholdKm = 25.0; // >25كم const double longDistThresholdKm = 35.0; // >35كم - const double longTripPerMin = 600.0; + const double longTripPerMin = 6.0; const int minuteCapMedium = 60; // سقف دقائق عند >25كم const int minuteCapLong = 80; // سقف دقائق عند >35كم const int freeMinutesLong = 10; // عفو 10 دقائق عند >35كم @@ -7076,7 +7233,7 @@ Intaleq Team'''; final double perKmComfortRaw = comfortPrice; final double perKmDelivery = deliveryPrice; final double perKmVanRaw = - (familyPrice > 0 ? familyPrice : (speedPrice + 1300)); + (familyPrice > 0 ? familyPrice : (speedPrice + 13)); final double perKmElectricRaw = perKmComfortRaw + electricPerKmUplift; // ====== تطبيق التخفيضات على الفئات (نفس نسبة Speed للبعيد) ====== @@ -7087,7 +7244,7 @@ Intaleq Team'''; perKmComfort = perKmComfort.clamp(0, double.infinity); perKmElectric = perKmElectric.clamp(0, double.infinity); perKmVan = perKmVan.clamp(0, double.infinity); - final double perKmBalash = (perKmSpeed - 500).clamp(0, double.infinity); + final double perKmBalash = (perKmSpeed - 5).clamp(0, double.infinity); // ====== دوال الاحتساب ====== double _oneWayFare({ @@ -7183,23 +7340,6 @@ Intaleq Team'''; update(); changeBottomSheetShown(); } - // addToken() async { - // String fingerPrint = await DeviceHelper.getDeviceFingerprint(); - - // await CRUD() - // .post(link: "${AppLink.server}/ride/firebase/add.php", payload: { - // 'token': (box.read(BoxName.tokenFCM.toString())), - // 'passengerID': box.read(BoxName.passengerID).toString(), - // "fingerPrint": fingerPrint - // }); - // CRUD().postWallet( - // link: "${AppLink.seferPaymentServer}/ride/firebase/add.php", - // payload: { - // 'token': (box.read(BoxName.tokenFCM.toString())), - // 'passengerID': box.read(BoxName.passengerID).toString(), - // "fingerPrint": fingerPrint - // }); - // } List polylineCoordinate = []; String? cardNumber; @@ -7266,9 +7406,9 @@ Intaleq Team'''; List driversForMishwari = []; Future selectDriverAndCarForMishwariTrip() async { - // Calculate the bounds for 20km - double latitudeOffset = 0.1795; // 20km range in latitude - double longitudeOffset = 0.2074; // 20km range in longitude + // Calculate the bounds for 12km range + double latitudeOffset = 0.1; // 20km range in latitude + double longitudeOffset = 0.12; // 20km range in longitude // Calculate bounding box based on passenger's location double southwestLat = passengerLocation.latitude - latitudeOffset; @@ -7379,27 +7519,25 @@ Intaleq Team'''; // Trip saved successfully // Get.snackbar('Success'.tr, 'Trip booked successfully'.tr); var id = response['message']['id'].toString(); - await CRUD().post( - link: '${AppLink.IntaleqSyriaServer}/ride/rides/add.php', - payload: { - "start_location": - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - "end_location": - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - "date": DateTime.now().toString(), - "time": DateTime.now().toString(), - "endtime": - DateTime.now().add(const Duration(hours: 2)).toString(), - "price": '50', - "passenger_id": box.read(BoxName.passengerID).toString(), - "driver_id": driver['driver_id'].toString(), - "status": "waiting", - 'carType': 'vip', - "price_for_driver": '50', - "price_for_passenger": '50', - "distance": '20', - "paymentMethod": 'cash', - }).then((value) { + await CRUD() + .post(link: '${AppLink.server}/ride/rides/add.php', payload: { + "start_location": + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + "end_location": + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + "date": DateTime.now().toString(), + "time": DateTime.now().toString(), + "endtime": DateTime.now().add(const Duration(hours: 2)).toString(), + "price": '50', + "passenger_id": box.read(BoxName.passengerID).toString(), + "driver_id": driver['driver_id'].toString(), + "status": "waiting", + 'carType': 'vip', + "price_for_driver": '50', + "price_for_passenger": '50', + "distance": '20', + "paymentMethod": 'cash', + }).then((value) { if (value is String) { final parsedValue = jsonDecode(value); rideId = parsedValue['message']; @@ -7409,29 +7547,7 @@ Intaleq Team'''; Log.print('Unexpected response type: ${value.runtimeType}'); } }); - if (AppLink.endPoint != AppLink.IntaleqSyriaServer) { - await CRUD().post( - link: "${AppLink.endPoint}/ride/mishwari/add.php", - payload: tripData); - CRUD().post(link: '${AppLink.endPoint}/ride/rides/add.php', payload: { - "start_location": - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - "end_location": - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - "date": DateTime.now().toString(), - "time": DateTime.now().toString(), - "endtime": DateTime.now().add(const Duration(hours: 2)).toString(), - "price": '50', - "passenger_id": box.read(BoxName.passengerID).toString(), - "driver_id": driver['driver_id'].toString(), - "status": "waiting", - 'carType': 'vip', - "price_for_driver": '50', - "price_for_passenger": '50', - "distance": '20', - "paymentMethod": 'cash', - }); - } + driverIdVip = driver['driver_id'].toString(); driverId = driver['driver_id'].toString(); @@ -7441,28 +7557,7 @@ Intaleq Team'''; "Don't forget your ride!".tr, "tone1", timeSelected); - // Optionally, set up local notification or send a push notification - // await firebaseMessagesController.sendNotificationToDriverMAP( - // 'OrderVIP', - // rideId.toString(), - // (driver['token'].toString()), - // [ - // id, - // rideId, - // driver['id'], - // passengerLocation.latitude.toString(), - // startNameAddress.toString(), - // passengerLocation.longitude.toString(), - // (box.read(BoxName.name).toString().split(' ')[0]).toString(), - // box.read(BoxName.passengerID).toString(), - // box.read(BoxName.phone).toString(), - // box.read(BoxName.email).toString(), - // box.read(BoxName.passengerPhotoUrl).toString(), - // box.read(BoxName.tokenFCM).toString(), - // (driver['token'].toString()), - // ], - // 'order'); await NotificationService.sendNotification( category: 'OrderVIP', target: driver['token'].toString(), @@ -7491,13 +7586,6 @@ Intaleq Team'''; Log.print( 'previous_driver_token: ${response['previous_driver_token']}'); - // firebaseMessagesController.sendNotificationToDriverMAP( - // 'Order VIP Canceld'.tr, - // 'Passenger cancel order'.tr, - // response['previous_driver_token'].toString(), - // [], - // 'cancel', - // ); await NotificationService.sendNotification( category: 'Order VIP Canceld', target: response['previous_driver_token'].toString(), @@ -7523,14 +7611,7 @@ Intaleq Team'''; } } - cancelVip(String token, tripId) async { - // firebaseMessagesController.sendNotificationToDriverMAP( - // 'Order VIP Canceld'.tr, - // 'Passenger cancel order'.tr, - // token, - // [], - // 'cancel', - // ); + Future cancelVip(String token, tripId) async { var res = await CRUD() .post(link: AppLink.cancelMishwari, payload: {'id': tripId}); if (res != 'failur') { @@ -7539,7 +7620,7 @@ Intaleq Team'''; } } - sendToDriverAgain(String token) { + void sendToDriverAgain(String token) { NotificationService.sendNotification( category: 'Order VIP Canceld', target: token.toString(), @@ -7551,6 +7632,20 @@ Intaleq Team'''; ); } +// دالة الفحص عند بدء التطبيق + Future detectAndCacheDeviceTier() async { + // 1. استخدام الكلاس الذي أنشأناه سابقاً للفحص + bool isHighEnd = await DevicePerformanceManager.isHighEndDevice(); + + // 2. طباعة النتيجة للتأكد + Log.print("Device Analysis - Is Flagship/HighEnd? $isHighEnd"); + + // 3. تخزين النتيجة بشكل منطقي صحيح + // إذا كان الجهاز قوياً (true)، فإن وضع الـ LowEnd يكون (false) + // والعكس صحيح + box.write(BoxName.lowEndMode, !isHighEnd); + } + initilizeGetStorage() async { if (box.read(BoxName.addWork) == null) { box.write(BoxName.addWork, 'addWork'); @@ -7558,6 +7653,9 @@ Intaleq Team'''; if (box.read(BoxName.addHome) == null) { box.write(BoxName.addHome, 'addHome'); } + if (box.read(BoxName.lowEndMode) == null) { + detectAndCacheDeviceTier(); + } } late List recentPlaces = []; @@ -7573,10 +7671,10 @@ Intaleq Team'''; } double passengerRate = 5; - double comfortPrice = 8; - double speedPrice = 4; - double mashwariPrice = 4; - double familyPrice = 4; + double comfortPrice = 45; + double speedPrice = 40; + double mashwariPrice = 40; + double familyPrice = 55; double deliveryPrice = 1.2; double minFareSYP = 16000; // حد أدنى للأجرة (سوريا) double minBillableKm = 1.0; // حد أدنى للمسافة المفوترة @@ -7712,10 +7810,11 @@ Intaleq Team'''; await _initMinimalIcons(); // start/end فقط // await addToken(); // لو لازم للمصادقة _listenForDeepLink(); + // initSocket(); await getLocation(); // لتحديد الكاميرا box.write(BoxName.carType, 'yet'); box.write(BoxName.tipPercentage, '0'); - await detectAndCacheDeviceTier(); + // await detectAndCacheDeviceTier(); // لا تُنشئ Controllers الثقيلة الآن: Get.lazyPut(() => TextToSpeechController(), @@ -7827,6 +7926,17 @@ Intaleq Team'''; "rideId": rideId.toString() }); } + + void _showRideStartNotifications() { + // تنبيهات الأسعار حسب نوع السيارة + if (['Speed', 'Awfar Car'].contains(box.read(BoxName.carType))) { + NotificationController().showNotification('Fixed Price'.tr, + 'The captain is responsible for the route.'.tr, 'ding'); + } else if (['Comfort', 'Lady'].contains(box.read(BoxName.carType))) { + NotificationController().showNotification('Attention'.tr, + 'The price may increase if the route changes.'.tr, 'ding'); + } + } } class CarLocation { diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart index d688007..a3603b4 100644 --- a/lib/controller/local/translations.dart +++ b/lib/controller/local/translations.dart @@ -18,10 +18,40 @@ class MyTranslation extends Translations { "Trip Cancelled. The cost of the trip will be added to your wallet.": "تم إلغاء الرحلة. سيتم إضافة تكلفة الرحلة إلى محفظتك.", "token change": "تغيير الرمز", + "Changed my mind": "غيرت رأيي", + 'Why do you want to cancel?': 'لماذا تريد الإلغاء؟', + "Please write the reason...": "يرجى كتابة السبب...", + "Found another transport": "وجدت وسيلة نقل أخرى", + "Driver is taking too long": "السائق يستغرق وقتًا طويلاً", + "Driver asked me to cancel": "طلب مني السائق الإلغاء", + "Wrong pickup location": "موقع الالتقاط خاطئ", + "Other": "أخرى", + 'Confirm Cancellation': 'تأكيد الإلغاء', + "Don't Cancel": "لا تلغي", + "No Drivers Found": "لم يتم العثور على سائقين", + "Sorry, there are no cars available of this type right now.": + "عذراً، لا توجد سيارات متاحة من هذا النوع حالياً.", + "Refresh Map": "تحديث الخريطة", + 'Attention': 'تنبيه', + 'Please select a reason first': 'يرجى اختيار سبب أولاً', "face detect": "كشف الوجه", "Face Detection Result": "نتيجة كشف الوجه", "similar": "مشابه", "not similar": "غير مشابه", + "Searching for nearby drivers...": "جاري البحث عن سائقين قريبين...", + "Error": "خطأ", + "Failed to search, please try again later": + "فشل البحث، يرجى المحاولة لاحقاً", + "Connection Error": "خطأ في الاتصال", + "Please check your internet connection": + "يرجى التحقق من اتصال الإنترنت", + "Sorry 😔": "عذراً 😔", + "The driver cancelled the trip for an emergency reason.\nDo you want to search for another driver immediately?": + "قام السائق بإلغاء الرحلة لسبب طارئ.\nهل ترغب بالبحث عن سائق آخر فوراً؟", + "Search for another driver": "بحث عن سائق آخر", + "We apologize 😔": "نعتذر 😔", + "No drivers found at the moment.\nPlease try again later.": + "لم يتم العثور على سائقين في الوقت الحالي.\nيرجى المحاولة في وقت لاحق.", "Hi ,I will go now": "مرحبًا، سأذهب الآن", "Passenger come to you": "الراكب قادم إليك", "Call Income": "مكالمة واردة", @@ -206,6 +236,26 @@ class MyTranslation extends Translations { 'Driver Accepted Request': 'الكابتن قبل الطلب', 'Message': 'رسالة', 'Call': 'اتصال', + 'Set Phone Number': 'تعيين رقم الهاتف', + 'Select This Ride': 'اختر هذه الرحلة', + 'Call Driver': 'اتصل بالكابتن', + "Increase Fare": "زيادة الأجرة", + 'Stop': 'إيقاف', + 'Record': 'تسجيل', + 'Share': 'مشاركة', + 'WhatsApp': 'واتساب', + 'SOS': 'الطوارئ', + "No drivers accepted your request yet": "لم يقبل أي كابتن طلبك بعد", + "Increasing the fare might attract more drivers. Would you like to increase the price?": + "زيادة الأجرة قد تجذب المزيد من الكباتن. هل ترغب في زيادة السعر؟", + "Please make sure not to leave any personal belongings in the car.": + "يرجى التأكد من عدم ترك أي أغراض شخصية في السيارة.", + "Cancel Ride": "إلغاء الرحلة", + "Route Not Found": "المسار غير موجود", + "We couldn't find a valid route to this destination. Please try selecting a different point.": + "لم نتمكن من العثور على مسار صالح إلى هذا الوجهة. يرجى محاولة اختيار نقطة مختلفة.", + // "Increase Fare": "زيادة الأجرة", + 'alert': 'تنبيه', "You can call or record audio during this trip.": "يمكنك الاتصال أو تسجيل صوت أثناء هذه الرحلة.", "Warning: Speeding detected!": "تحذير: تم الكشف عن تجاوز السرعة!", @@ -1514,6 +1564,1482 @@ class MyTranslation extends Translations { "يمكنك تغيير البلد للحصول على كل الميزات", "Change Country": "تغيير البلد" }, + "ar-eg": { + "EGP": "ج.م", + "Order": "طلب", + "OrderVIP": "طلب VIP", + "Cancel Trip": "إلغاء الرحلة", + "Passenger Cancel Trip": "الراكب لغى الرحلة", + "VIP Order": "طلب VIP", + "Hi ,I Arrive your site": "أهلاً، أنا وصلت مكانك", + "The driver accepted your trip": "الكابتن قبل رحلتك", + "message From passenger": "رسالة من الراكب", + "Cancel": "إلغاء", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "الرحلة اتلغت. تكلفة الرحلة هتضاف لمحفظتك.", + "token change": "تغيير التوكن", + "face detect": "كشف الوجه", + "Face Detection Result": "نتيجة كشف الوجه", + "similar": "مطابق", + "not similar": "غير مطابق", + "Hi ,I will go now": "أهلاً، أنا هتحرك دلوقتي", + "Passenger come to you": "الراكب جايلك", + "Call Income": "مكالمة واردة", + "Call Income from Passenger": "مكالمة واردة من الراكب", + "Criminal Document Required": "مطلوب الفيش والتشبيه", + "You should have upload it .": "لازم ترفع الملف ده.", + "Call End": "إنهاء المكالمة", + "The order has been accepted by another driver.": + "كابتن تاني قبل الطلب.", + "The order Accepted by another Driver": "الطلب اتقبل من كابتن تاني", + "We regret to inform you that another driver has accepted this order.": + "للأسف، كابتن تاني قبل الطلب ده.", + "Driver Applied the Ride for You": "الكابتن قدم الطلب ليك", + "Applied": "تم التقديم", + "Pay by Sham Cash": "دفع بـ كاش", + "Pay with Debit Card": "دفع ببطاقة الخصم", + "Please go to Car Driver": "يا ريت تروح للكابتن", + "Ok I will go now.": "تمام، أنا رايح دلوقتي.", + "Accepted Ride": "الرحلة اتقبلت", + "Driver Accepted the Ride for You": "الكابتن قبل الرحلة عشانك", + "Promo": "برومو كود", + "Show latest promo": "اظهر آخر العروض", + "Trip Monitoring": "متابعة الرحلة", + "Driver Is Going To Passenger": "الكابتن في الطريق ليك", + "Please stay on the picked point.": + "خليك واقف في النقطة اللي حددتها.", + "message From Driver": "رسالة من الكابتن", + "Trip is Begin": "الرحلة بدأت", + "Cancel Trip from driver": "إلغاء الرحلة من الكابتن", + "We will look for a new driver.\nPlease wait.": + "هنشوفلك كابتن تاني.\nثواني من فضلك.", + "The driver canceled your ride.": "الكابتن لغى رحلتك.", + "Driver Finish Trip": "الكابتن أنهى الرحلة", + "you will pay to Driver": "هتدفع للكابتن", + "Don’t forget your personal belongings.": + "اوعى تنسى متعلقاتك الشخصية.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "يا ريت تتأكد إن كل حاجتك معاك وإن أي باقي ليك اتضاف للمحفظة قبل ما تنزل. شكراً لاستخدامك انطلق.", + "Finish Monitor": "إنهاء المتابعة", + "Trip finished": "الرحلة خلصت", + "Call Income from Driver": "مكالمة من الكابتن", + "Driver Cancelled Your Trip": "الكابتن لغى رحلتك", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "هتدفع للكابتن تكلفة وقته، راجع محفظة انطلق بتاعتك", + "Order Applied": "تم تقديم الطلب", + "welcome to intaleq": "أهلاً بيك في انطلق", + "login or register subtitle": + "دخل رقم موبايلك للدخول أو لإنشاء حساب جديد", + "An application error occurred.": "حصل خطأ في التطبيق.", + "Submission Failed": "فشل الإرسال", + "Your complaint has been submitted.": "شكوتك وصلتنا.", + "Failed to connect to the server. Please try again.": + "في مشكلة في الاتصال بالسيرفر. جرب تاني.", + "Ride information not found. Please refresh the page.": + "معلومات الرحلة مش موجودة. اعمل تحديث للصفحة.", + "Please describe your issue before submitting.": + "يا ريت توصف المشكلة قبل ما تبعت.", + "An application error occurred during upload.": + "حصل خطأ أثناء الرفع.", + "Failed to upload audio file.": "فشل رفع الملف الصوتي.", + "Audio uploaded successfully.": "تم رفع الصوت بنجاح.", + "Complaint cannot be filed for this ride. It may not have been completed or started.": + "مينفعش تقدم شكوى للرحلة دي. ممكن تكون لسه مخلصتش أو مابدأتش.", + "2. Attach Recorded Audio (Optional)": "٢. ضيف تسجيل صوتي (اختياري)", + "Please enter a description of the issue.": "اكتب وصف للمشكلة.", + "phone number label": "رقم الموبايل", + "phone number required": "دخل رقم الموبايل", + "send otp button": "ابعت كود التحقق", + "verify your number title": "تأكيد رقمك", + "otp sent subtitle": "بعتنا كود من 5 أرقام لـ\n@phoneNumber", + "verify and continue button": "تأكيد ومتابعة", + "enter otp validation": "دخل كود التحقق المكون من 5 أرقام", + "one last step title": "آخر خطوة", + "complete profile subtitle": "كمل بياناتك عشان تبدأ", + "first name label": "الاسم الأول", + "first name required": "دخل الاسم الأول", + "last name label": "الاسم الأخير", + "Verify OTP": "تأكيد الكود", + "Verification Code": "كود التحقق", + "We have sent a verification code to your mobile number:": + "بعتنا كود التحقق على رقم موبايلك:", + "Verify": "تأكيد", + "Resend Code": "إعادة إرسال الكود", + "You can resend in": "ممكن تبعته تاني بعد", + "seconds": "ثانية", + "Error": "خطأ", + "Please enter the complete 6-digit code.": + "دخل الكود كامل (6 أرقام).", + "last name required": "دخل الاسم الأخير", + "email optional label": "الإيميل (اختياري)", + "complete registration button": "تمام التسجيل", + "User with this phone number or email already exists.": + "في حساب مسجل بنفس الرقم أو الإيميل ده.", + "otp sent success": "تم إرسال الكود على الواتساب.", + "failed to send otp": "فشل إرسال الكود.", + "server error try again": "خطأ في السيرفر، جرب تاني.", + "an error occurred": "حصل خطأ غير متوقع: @error", + "otp verification failed": "كود التحقق غلط.", + "registration failed": "التسجيل فشل.", + "welcome user": "أهلاً، @firstName!", + "Cancel Trip from driver": "إلغاء الرحلة من الكابتن", + "We will look for a new driver.\nPlease wait.": + "بنشوفلك كابتن تاني.\nثواني.", + "The driver canceled your ride.": "الكابتن لغى الرحلة.", + "Driver Finish Trip": "الكابتن خلص الرحلة", + "you will pay to Driver": "هتدفع للكابتن", + "Don't forget your personal belongings.": "متنساش متعلقاتك الشخصية.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "اتأكد إن كل حاجتك معاك وإن أي باقي اتضاف للمحفظة. شكراً لاختيارك انطلق.", + "Finish Monitor": "إنهاء المتابعة", + "Trip finished": "الرحلة انتهت", + "Call Income from Driver": "مكالمة من الكابتن", + "Driver Cancelled Your Trip": "الكابتن لغى رحلتك", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "هتدفع للكابتن تمن وقته، راجع محفظتك في انطلق", + "Order Applied": "تم تقديم الطلب", + "Share App": "شارك التطبيق", + "Wallet": "المحفظة", + "Balance": "الرصيد", + "Don’t forget your personal belongings.": "اوعى تنسى متعلقاتك.", + "Profile": "الملف الشخصي", + "Contact Support": "كلم الدعم", + "Session expired. Please log in again.": + "الجلسة انتهت. سجل دخول تاني.", + "Security Warning": "⚠️ تحذير أمني", + "Potential security risks detected. The application may not function correctly.": + "اكتشفنا مخاطر أمنية. التطبيق ممكن ميعملش صح.", + "please order now": "اطلب دلوقتي", + "Where to": "رايح فين؟", + "Where are you going?": "رايح فين؟", + "Quick Actions": "إجراءات سريعة", + "My Balance": "رصيدي", + "Order History": "سجل الطلبات", + "Contact Us": "تواصل معنا", + "Driver": "كابتن", + "Complaint": "شكوى", + "Promos": "العروض", + "Recent Places": "الأماكن الأخيرة", + "From": "من", + "WhatsApp Location Extractor": "استخراج الموقع من واتساب", + "Location Link": "رابط الموقع", + "Paste location link here": "حط رابط الموقع هنا", + "Go to this location": "روح للمكان ده", + "Paste WhatsApp location link": "الصق لوكيشن الواتساب", + "Select Order Type": "اختار نوع الطلب", + "Choose who this order is for": "الطلب ده لمين؟", + "I want to order for myself": "هطلب لنفسي", + "I want to order for someone else": "هطلب لحد تاني", + "Order for someone else": "اطلب لحد تاني", + "Order for myself": "اطلب لنفسي", + "Are you want to go this site": "عايز تروح المكان ده؟", + "No": "لأ", + "Pay by Sham Cash": "دفع كاش", + "Intaleq Wallet": "محفظة انطلق", + "Have a promo code?": "معاك برومو كود؟", + "Your Wallet balance is ": "رصيد محفظتك: ", + "Cash": "كاش", + "Phone Number": "رقم الموبايل", + "Search country": "دور على الدولة", + "Payment Successful!": "تم الدفع!", + "Your payment was successful.": "تم الدفع بنجاح.", + "Pay directly to the captain": "ادفع للكابتن علطول", + "Top up Wallet to continue": "اشحن المحفظة عشان تكمل", + "Or pay with Cash instead": "أو ادفع كاش بدل كده", + "Confirm & Find a Ride": "تأكيد وشوف رحلة", + "Balance:": "الرصيد:", + "Alerts": "تنبيهات", + "Welcome Back!": "نورتنا تاني!", + "Current Balance": "الرصيد الحالي", + "Set Wallet Phone Number": "حط رقم للمحفظة", + "Link a phone number for transfers": "اربط رقم موبايل للتحويلات", + "Payment History": "سجل المدفوعات", + "View your past transactions": "شوف معاملاتك اللي فاتت", + "Top up Wallet": "شحن المحفظة", + "Add funds using our secure methods": "ضيف رصيد بطرق آمنة", + "Driver is waiting": "الكابتن مستنيك", + "Type your message...": "اكتب رسالتك...", + "Driver Accepted Request": "الكابتن قبل الطلب", + "Message": "رسالة", + "Call": "اتصال", + "Set Phone Number": "حط رقم الموبايل", + "Select This Ride": "اختار الرحلة دي", + "Call Driver": "كلم الكابتن", + "Increase Fare": "زود الأجرة", + "Stop": "قف", + "Record": "سجل", + "Share": "شارك", + "WhatsApp": "واتساب", + "SOS": "طوارئ", + "No drivers accepted your request yet": "مفيش كباتن قبلوا طلبك لسه", + "Increasing the fare might attract more drivers. Would you like to increase the price?": + "لو زودت الأجرة ممكن تشجع الكباتن. تحب تزود السعر؟", + "Please make sure not to leave any personal belongings in the car.": + "اتأكد إنك منستش أي حاجة في العربية.", + "Cancel Ride": "إلغاء الرحلة", + "Route Not Found": "المسار مش موجود", + "We couldn't find a valid route to this destination. Please try selecting a different point.": + "مش لاقيين طريق للوجهة دي. جرب تختار نقطة تانية.", + "alert": "تنبيه", + "You can call or record audio during this trip.": + "تقدر تتصل أو تسجل صوت خلال الرحلة.", + "Warning: Speeding detected!": "تحذير: سرعة عالية!", + "Fixed Price": "سعر ثابت", + "Report": "إبلاغ", + "Comfort": "مريحة", + "Intaleq Balance": "رصيد انطلق", + "Search for a starting point": "دور على نقطة الانطلاق", + "Top up Balance to continue": "اشحن الرصيد عشان تكمل", + "Electric": "كهرباء", + "Lady": "للسيدات", + "Van": "عائلية (فان)", + "Rayeh Gai": "رايح جاي", + "Join Intaleq as a driver using my referral code!": + "انضم لـ 'انطلق' ككابتن واستخدم كود الدعوة بتاعي!", + "Use code:": "استخدم الكود:", + "Download the Intaleq Driver app now and earn rewards!": + "نزل تطبيق 'انطلق' للكباتن واكسب مكافآت!", + "Get a discount on your first Intaleq ride!": + "خد خصم على أول رحلة ليك مع انطلق!", + "Use my referral code:": "استخدم كود الدعوة بتاعي:", + "Download the Intaleq app now and enjoy your ride!": + "نزل أبلكيشن انطلق واستمتع بمشوارك!", + "Contacts Loaded": "تم تحميل الأسماء", + "Showing": "بيظهر", + "of": "من", + "Pay by MTN Wallet": "دفع بمحفظة كاش", + "Pay by Syriatel Wallet": "دفع بمحفظة كاش", + "Customer not found": "العميل مش موجود", + "Wallet is blocked": "المحفظة موقوفة", + "Customer phone is not active": "موبايل العميل مش شغال", + "Balance not enough": "الرصيد مش كفاية", + "Balance limit exceeded": "عديت حد الرصيد", + "Incorrect sms code": "⚠️ كود التحقق غلط. جرب تاني.", + "contacts. Others were hidden because they don't have a phone number.": + "اسم. الباقي مخفي عشان ملهوش أرقام.", + "No contacts found": "مفيش أسماء", + "No contacts with phone numbers were found on your device.": + "ملقيناش أسماء ليها أرقام على جهازك.", + "Permission denied": "مفيش إذن", + "Contact permission is required to pick contacts": + "محتاجين إذن الوصول للأسماء.", + "An error occurred while picking contacts:": + "حصل خطأ وإحنا بنختار الأسماء:", + "Please enter a correct phone": "دخل رقم موبايل صح", + "Success": "تمام", + "Invite sent successfully": "الدعوة اتبعتت بنجاح", + "Hello! I'm inviting you to try Intaleq.": + "أهلاً! بدعوك تجرب تطبيق انطلق.", + "Use my invitation code to get a special gift on your first ride!": + "استخدم كود الدعوة بتاعي عشان تاخد هدية في أول رحلة!", + "Your personal invitation code is:": "كود دعوتك هو:", + "Be sure to use it quickly! This code expires at": + "استخدمه بسرعة! الكود هينتهي في", + "Download the app now:": "نزل التطبيق دلوقتي:", + "See you on the road!": "نشوفك في المشوار!", + "This phone number has already been invited.": + "الرقم ده اتبعتتله دعوة قبل كده.", + "An unexpected error occurred. Please try again.": + "حصل خطأ غير متوقع. جرب تاني.", + "You deserve the gift": "تستاهل الهدية", + "Claim your 20 LE gift for inviting": + "اطلب هديتك (20 جنيه) عشان دعيت", + "You have got a gift for invitation": "جيلك هدية عشان الدعوة", + "You have earned 20": "كسبت 20", + "LE": "جنيه", + "Vibration feedback for all buttons": "هزة مع كل الأزرار", + "Share with friends and earn rewards": "شارك مع صحابك واكسب مكافآت", + "Gift Already Claimed": "خدت الهدية دي قبل كده", + "You have already received your gift for inviting": + "انت استلمت هدية الدعوة دي خلاص", + "Keep it up!": "كمل!", + "has completed": "كمّل", + "trips": "رحلات", + "Personal Information": "البيانات الشخصية", + "Name": "الاسم", + "Not set": "مش متحدد", + "Gender": "النوع", + "Education": "التعليم", + "Work & Contact": "العمل والتواصل", + "Employment Type": "نوع الشغل", + "Marital Status": "الحالة الاجتماعية", + "SOS Phone": "رقم الطوارئ", + "Sign Out": "خروج", + "Delete My Account": "امسح حسابي", + "Update Gender": "تحديث النوع", + "Update": "تحديث", + "Update Education": "تحديث التعليم", + "Are you sure? This action cannot be undone.": + "متأكد؟ مينفعش ترجع في الخطوة دي.", + "Confirm your Email": "أكد إيميلك", + "Type your Email": "اكتب إيميلك", + "Delete Permanently": "حذف نهائي", + "Male": "ذكر", + "Female": "أنثى", + "Other": "آخر", + "High School Diploma": "ثانوية عامة", + "Associate Degree": "دبلوم", + "Bachelor's Degree": "بكالوريوس / ليسانس", + "Master's Degree": "ماجستير", + "Doctoral Degree": "دكتوراه", + "Select your preferred language for the app interface.": + "اختار لغة التطبيق.", + "Language Options": "خيارات اللغة", + "You can claim your gift once they complete 2 trips.": + "تقدر تاخد هديتك لما يخلصوا رحلتين.", + "Closest & Cheapest": "الأقرب والأوفر", + "Comfort choice": "خيار الراحة", + "Travel in a modern, silent electric car. A premium, eco-friendly choice for a smooth ride.": + "سافر بعربية كهرباء حديثة وهادية. خيار مميز وصديق للبيئة لمشوار رايق.", + "Spacious van service ideal for families and groups. Comfortable, safe, and cost-effective travel together.": + "عربية فان واسعة للعيلات والمجموعات. سفر مريح وآمن وموفر.", + "Quiet & Eco-Friendly": "هادية وصديقة للبيئة", + "Lady Captain for girls": "كابتن سيدة للبنات", + "Van for familly": "فان للعيلة", + "Are you sure to delete this location?": + "متأكد إنك عايز تمسح المكان ده؟", + "Change Work location?": "تغيير مكان الشغل؟", + "Change Home location?": "تغيير مكان البيت؟", + "Submit a Complaint": "قدم شكوى", + "Submit Complaint": "إرسال الشكوى", + "No trip history found": "مفيش رحلات سابقة", + "Your past trips will appear here.": "رحلاتك اللي فاتت هتظهر هنا.", + "1. Describe Your Issue": "١. اوصف المشكلة", + "Enter your complaint here...": "اكتب شكوتك هنا...", + "2. Attach Recorded Audio": "٢. ضيف تسجيل صوتي", + "No audio files found.": "مفيش ملفات صوتية.", + "Confirm Attachment": "تأكيد الإرفاق", + "Attach this audio file?": "تبعت الملف الصوتي ده؟", + "Uploaded": "تم الرفع", + "3. Review Details & Response": "٣. مراجعة التفاصيل والرد", + "Date": "التاريخ", + "Today's Promos": "عروض النهاردة", + "No promos available right now.": "مفيش عروض دلوقتي.", + "Check back later for new offers!": + "شوف تاني بعدين عشان العروض الجديدة!", + "Valid Until:": "صالح لحد:", + "CODE": "الكود", + "Login": "دخول", + "Sign in for a seamless experience": "سجل دخولك لتجربة أسهل", + "Sign In with Google": "دخول بـ جوجل", + "Sign in with Apple": "دخول بـ أبل", + "User not found": "المستخدم مش موجود", + "Need assistance? Contact us": "محتاج مساعدة؟ كلمنا", + "Email": "الإيميل", + "Your email address": "عنوان بريدك الإلكتروني", + "Enter a valid email": "دخل إيميل صح", + "Password": "الباسورد", + "Your password": "كلمة السر بتاعتك", + "Enter your password": "دخل الباسورد", + "Submit": "إرسال", + "Terms of Use & Privacy Notice": "شروط الاستخدام والخصوصية", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the ": + "لما تختار \"أوافق\"، بتأكد إنك قريت ووافقت على ", + "Terms of Use": "شروط الاستخدام", + " and acknowledge the ": " وبتقر بـ ", + "Privacy Notice": "سياسة الخصوصية", + " . I am at least 18 years old.": " . وعمري 18 سنة على الأقل.", + "I Agree": "أوافق", + "Continue": "متابعة", + "Enable Location": "شغل اللوكيشن", + "To give you the best experience, we need to know where you are. Your location is used to find nearby captains and for pickups.": + "عشان نخدمك أحسن، محتاجين نعرف مكانك. اللوكيشن بيستخدم عشان نلاقي كباتن قريبين ليك.", + "Allow Location Access": "السماح بالوصول للموقع", + "Welcome to Intaleq!": "أهلاً بيك في انطلق!", + "Before we start, please review our terms.": + "قبل ما نبدأ، يا ريت تراجع شروطنا.", + "Your journey starts here": "مشوارك بيبدأ من هنا", + "Cancel Search": "إلغاء البحث", + "Set pickup location": "حدد مكان الركوب", + "Move the map to adjust the pin": "حرك الخريطة عشان تظبط الدبوس", + "Searching for the nearest captain...": "بندور على أقرب كابتن...", + "No one accepted? Try increasing the fare.": + "محدش قبل؟ جرب تزود الأجرة.", + "Increase Your Trip Fee (Optional)": "زود أجرة المشوار (اختياري)", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "مش لاقيين كباتن لسه. جرب تزود الأجرة عشان تشجع الكباتن يقبلوا.", + "No, thanks": "لأ، شكراً", + "Increase Fee": "زود الأجرة", + "Copy": "نسخ", + "Promo Copied!": "نسخت البرومو!", + "Code": "الكود", + "copied to clipboard": "تم النسخ", + "Price": "السعر", + "Intaleq's Response": "رد انطلق", + "Awaiting response...": "مستنيين الرد...", + "Audio file not attached": "الملف الصوتي ماترفقش", + "The audio file is not uploaded yet.\\nDo you want to submit without it?": + "الملف الصوتي لسه ماترفعش.\\nعايز تبعت من غيره؟", + "deleted": "اتمسح", + "To Work": "للشغل", + "Work Saved": "حفظنا مكان الشغل", + "To Home": "للبيت", + "Home Saved": "حفظنا مكان البيت", + "Destination selected": "اخترت الوجهة", + "Now select start pick": "دلوقتي حدد مكان الركوب", + "OK": "تمام", + "Confirm Pick-up Location": "أكد مكان الركوب", + "Set Location on Map": "حدد المكان على الخريطة", + "Leave a detailed comment (Optional)": "سيب تعليق بالتفصيل (اختياري)", + "Share your experience to help us improve...": + "شارك تجربتك عشان نتحسن...", + "Your valuable feedback helps us improve our service quality.": + "رأيك مهم عشان نحسن خدماتنا.", + "witout zero": "من غير صفر", + "Top up Balance": "شحن الرصيد", + "An error occurred": "حصل خطأ", + "Send WhatsApp Message": "ابعت رسالة واتساب", + "How was your trip with": "إيه أخبار رحلتك مع", + "Drawing route on map...": "بنرسم الطريق على الخريطة...", + "Please wait while we prepare your trip.": "لحظة بنجهزلك الرحلة.", + "Submit Rating": "ابعت التقييم", + "Call Support": "كلم الدعم", + "You can contact us during working hours from 10:00 - 16:00.": + "تقدر تكلمنا في مواعيد العمل من ١٠ ص لـ ٤ م.", + "Intaleq is the safest and most reliable ride-sharing app designed especially for passengers in Syria. We provide a comfortable, respectful, and affordable riding experience with features that prioritize your safety and convenience. Our trusted captains are verified, insured, and supported by regular car maintenance carried out by top engineers. We also offer on-road support services to make sure every trip is smooth and worry-free. With Intaleq, you enjoy quality, safety, and peace of mind—every time you ride.": + "انطلق هو أأمن تطبيق مشاوير مصمم مخصوص عشانك في مصر. بنوفرلك تجربة مريحة، محترمة، وبسعر على قد الإيد، مع مميزات بتهتم بسلامتك وراحتك. كل الكباتن عندنا متراجع ورقهم، وعربياتهم بتتصين بانتظام عشان نضمن الجودة. وكمان عندنا دعم على الطريق عشان نضمن إن كل مشوار يكون سلس ومن غير قلق. مع انطلق، هتستمتع بالجودة والأمان وراحة البال في كل مشوار.", + "Work time is from 10:00 AM to 16:00 PM.\nYou can send a WhatsApp message or email.": + "مواعيد العمل من ١٠ ص لـ ٤ م.\nممكن تبعت واتساب أو إيميل.", + "Sorry": "معلش", + "Customer MSISDN doesn’t have customer wallet": + "رقم العميل ملهوش محفظة", + "Please enter the number without the leading 0": + "دخل الرقم من غير الصفر اللي في الأول", + "Please enter your phone number": "دخل رقم موبايلك", + "Phone number seems too short": "رقم الموبايل شكله قصير", + "No cars are available at the moment. Please try again later.": + "مفيش عربيات متاحة دلوقتي. جرب تاني بعد شوية.", + "Nearest Car: ~": "أقرب عربية: ~", + "Nearest Car": "أقرب عربية", + "No cars nearby": "مفيش عربيات قريبة", + "Favorite Places": "الأماكن المفضلة", + "No favorite places yet!": "مفيش أماكن مفضلة لسه!", + "from your favorites": "من المفضلة", + "Back": "رجوع", + "Enter your code below to apply the discount.": + "دخل الكود تحت عشان تاخد الخصم.", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the": + "لما تختار \"أوافق\"، بتأكد إنك قريت ووافقت على", + "and acknowledge the": "وبتقر بـ", + "Enable Location Access": "شغل الوصول للموقع", + "We need your location to find nearby drivers for pickups and drop-offs.": + "محتاجين نعرف مكانك عشان نلاقي كباتن قريبين.", + "You should restart app to change language": + "لازم تعيد تشغيل التطبيق عشان اللغة تتغير", + "Home Page": "الرئيسية", + "To change Language the App": "عشان تغير لغة التطبيق", + "Learn more about our app and mission": "اعرف أكتر عننا", + "Promos For Today": "عروض النهاردة", + "Choose your ride": "اختار مشوارك", + "Your Journey Begins Here": "مشوارك بيبدأ هنا", + "Bonus gift": "هدية إضافية", + "Pay": "ادفع", + "Get": "احصل على", + "Send to Driver Again": "ابعت للكابتن تاني", + "Driver Name:": "اسم الكابتن:", + "No trip data available": "مفيش بيانات للرحلة", + "Car Plate:": "نمرة العربية:", + "remaining": "متبقي", + "Order Cancelled": "الطلب اتلغى", + "You canceled VIP trip": "أنت لغيت رحلة الـ VIP", + "Passenger cancelled order": "الراكب لغى الطلب", + "Your trip is scheduled": "رحلتك اتجدولت", + "Don't forget your ride!": "متنساش مشوارك!", + "Trip updated successfully": "الرحلة اتحدثت بنجاح", + "Car Make:": "نوع العربية:", + "Car Model:": "موديل العربية:", + "Car Color:": "لون العربية:", + "Driver Phone:": "رقم الكابتن:", + "Pre-booking": "حجز مسبق", + "Waiting VIP": "انتظار VIP", + "Driver List": "قائمة الكباتن", + "Confirm Trip": "تأكيد الرحلة", + "Select date and time of trip": "حدد تاريخ ووقت الرحلة", + "Date and Time Picker": "اختار الوقت والتاريخ", + "Trip Status:": "حالة الرحلة:", + "pending": "انتظار", + "accepted": "مقبولة", + "rejected": "مرفوضة", + "Apply": "تطبيق", + "Enter your promo code": "دخل البرومو كود", + "Apply Promo Code": "طبق الكود", + "Scheduled Time:": "الوقت المتحدد:", + "No drivers available": "مفيش كباتن متاحين", + "No drivers available at the moment. Please try again later.": + "مفيش كباتن دلوقتي. جرب تاني بعد شوية.", + "you have a negative balance of": "عندك رصيد بالسالب بقيمة", + "Please try again in a few moments": "جرب تاني بعد لحظات", + "Unknown Driver": "كابتن غير معروف", + "in your": "في محفظتك", + "The driver accepted your order for": "الكابتن قبل طلبك بـ", + "wallet due to a previous trip.": "من المحفظة عشان رحلة قديمة.", + "rides": "مشاوير", + "Add Work": "ضيف الشغل", + "The reason is": "السبب هو", + "User does not have a wallet #1652": "المستخدم ملهوش محفظة #1652", + "Price of trip": "سعر الرحلة", + "From:": "من:", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "لرحلات انطلق والتوصيل، السعر بيتحسب أوتوماتيك. لرحلات الراحة، السعر حسب الوقت والمسافة.", + "Phone Wallet Saved Successfully": "تم حفظ رقم المحفظة", + "Add wallet phone you use": "ضيف رقم المحفظة اللي بتستخدمه", + "Update Available": "في تحديث جديد", + "Phone number must be exactly 11 digits long": + "رقم الموبايل لازم يكون ١١ رقم", + "Insert Wallet phone number": "دخل رقم المحفظة", + "Phone number isn't an Egyptian phone number": "الرقم ده مش مصري", + "A new version of the app is available. Please update to the latest version.": + "في نسخة جديدة من التطبيق. يا ريت تحدث لآخر إصدار.", + "We use location to get accurate and nearest passengers for you": + "بنستخدم اللوكيشن عشان نجيبلك أقرب ركاب بدقة", + "This ride is already applied by another driver.": + "الرحلة دي أخدها كابتن تاني.", + "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": + "بنستخدم مكانك الدقيق عشان نلاقي أقرب كابتن ونحدد نقط الركوب والنزول بدقة. تقدر تظبط ده من الإعدادات.", + "Where are you, sir?": "أنت فين يا فندم؟", + "I've been trying to reach you but your phone is off.": + "بحاول أكلمك بس تليفونك مقفول.", + "Please don't be late": "من فضلك متتأخرش", + "Please don't be late, I'm waiting for you at the specified location.": + "يا ريت متتأخرش، أنا مستنيك في المكان المحدد.", + "My location is correct. You can search for me using the navigation app": + "موقعي صح. ممكن تدور عليا بالـ GPS", + "Hello, I'm at the agreed-upon location": + "أهلاً، أنا في المكان المتفق عليه", + "How much longer will you be?": "قدامك وقت قد إيه؟", + "Phone number is verified before": "الرقم ده متأكد قبل كده", + "Change Ride": "غير الرحلة", + "You can change the destination by long-pressing any point on the map": + "ممكن تغير الوجهة بالضغط الطويل على أي نقطة في الخريطة", + "Pick from map destination": "اختار الوجهة من الخريطة", + "Pick or Tap to confirm": "اختار أو اضغط للتأكيد", + "Accepted your order": "قبل طلبك", + "Order Accepted": "الطلب اتقبل", + "with type": "من نوع", + "accepted your order at price": "وافق على طلبك بسعر", + "you canceled order": "لغيت الطلب", + "If you want order to another person": "لو عايز تطلب لحد تاني", + "upgrade price": "علي السعر", + "airport": "المطار", + "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": + "أحسن اختيار لعربية مريحة مع خط سير مرن ووقوف متكرر.", + "You can upgrade price to may driver accept your order": + "ممكن تعلي السعر عشان الكابتن يقبل", + "Change Route": "غير الطريق", + "No Captain Accepted Your Order": "محدش قبل طلبك", + "We are looking for a captain but the price may increase to let a captain accept": + "بندور على كابتن بس ممكن السعر يزيد عشان حد يقبل", + "No, I want to cancel this trip": "لأ، عايز ألغي الرحلة", + "Attention": "انتباه", + "Trip Cancelled. The cost of the trip will be deducted from your wallet.": + "الرحلة اتلغت. وتكلفتها هتتخصم من محفظتك.", + "You will be charged for the cost of the driver coming to your location.": + "هتتحاسب على تكلفة مشوار الكابتن ليك.", + "reject your order.": "رفض طلبك.", + "Order Under Review": "الطلب بيتراجع", + "is reviewing your order. They may need more information or a higher price.": + "بيراجع طلبك. ممكن يحتاج معلومات أكتر أو سعر أعلى.", + "Vibration": "اهتزاز", + "Resend code": "ابعت الكود تاني", + "change device": "تغيير الجهاز", + "Device Change Detected": "تم تغيير الجهاز", + "You can only use one device at a time. This device will now be set as your active device.": + "ممكن تستخدم جهاز واحد بس. الجهاز ده بقى هو الأساسي دلوقتي.", + "Click here point": "دوس هنا", + "Are you want to change": "عايز تغير؟", + "by": "بواسطة", + "Enter your complaint here": "اكتب شكوتك هنا", + "Please enter your complaint.": "اكتب الشكوى من فضلك.", + "Complaint data saved successfully": "الشكوى اتحفظت", + "Trip Monitor": "مراقبة الرحلة", + "Insert SOS Phone": "دخل رقم الطوارئ", + "Add SOS Phone": "ضيف رقم الطوارئ", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "عزيزي،\n\n🚀 أنا بدأت رحلة وحابب أشاركك تفاصيلها ومكاني الحالي لحظة بلحظة! نزل تطبيق انطلق عشان تتابعني.\n\n👈 رابط التحميل:\nأندرويد [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\nآيفون [https://getapp.cc/app/6458734951]\n\nخليك متابعني!\n\nانطلق،", + "Send Intaleq app to him": "ابعتله تطبيق انطلق", + "No passenger found for the given phone number": + "مفيش راكب بالرقم ده", + "No user found for the given phone number": "مفيش مستخدم بالرقم ده", + "This price is": "السعر ده", + "Work": "الشغل", + "Add Home": "ضيف البيت", + "Notifications": "الإشعارات", + "💳 Pay with Credit Card": "💳 دفع بالفيزا", + "⚠️ You need to choose an amount!": "⚠️ لازم تختار مبلغ!", + "💰 Pay with Wallet": "💰 دفع بالمحفظة", + "You must restart the app to change the language.": + "لازم تعيد تشغيل التطبيق لتغيير اللغة.", + "joined": "انضم", + "Driver joined the channel": "الكابتن دخل الشات", + "Driver left the channel": "الكابتن خرج من الشات", + "Call Page": "صفحة الاتصال", + "Call Left": "مكالمات باقية", + " Next as Cash !": " اللي جاي كاش!", + "To use Wallet charge it": "عشان تستخدم المحفظة اشحنها", + "We are searching for the nearest driver to you": + "بندورلك على أقرب كابتن", + "Best choice for cities": "أحسن اختيار للمدن", + "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": + "رايح جاي: خدمة سفر مريحة بين المحافظات.", + "This trip is for women only": "الرحلة دي للسيدات فقط", + "Total budgets on month": "إجمالي ميزانية الشهر", + "You have call from driver": "مكالمة من الكابتن", + "Intaleq": "انطلق", + "passenger agreement": "اتفاقية الراكب", + "To become a passenger, you must review and agree to the ": + "عشان تبقى راكب، لازم تراجع وتوافق على ", + "agreement subtitle": "للمتابعة، لازم توافق على الشروط والخصوصية.", + "terms of use": "شروط الاستخدام", + " and acknowledge our Privacy Policy.": " وتقر بسياسة الخصوصية.", + "and acknowledge our": "وتقر بـ", + "privacy policy": "سياسة الخصوصية.", + "i agree": "موافق", + "Driver already has 2 trips within the specified period.": + "الكابتن عنده رحلتين في الوقت ده.", + "The invitation was sent successfully": "الدعوة اتبعتت", + "You should select your country": "اختار بلدك", + "Scooter": "سكوتر", + "A trip with a prior reservation, allowing you to choose the best captains and cars.": + "رحلة بحجز مسبق، اختار أحسن الكباتن والعربيات.", + "Mishwar Vip": "مشوار VIP", + "The driver waiting you in picked location .": + "الكابتن مستنيك في مكان الركوب.", + "About Us": "عننا", + "You can change the vibration feedback for all buttons": + "ممكن تغير الهزاز للأزرار", + "Most Secure Methods": "أأمن الطرق", + "In-App VOIP Calls": "مكالمات صوتية جوا التطبيق", + "Recorded Trips for Safety": "رحلات مسجلة للأمان", + "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": + "\nوكمان بنهتم بالأسعار، بنقدم أسعار تنافسية عشان تناسب الكل.", + "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": + "انطلق تطبيق مشاوير مصمم عشان أمانك وميزانيتك. بنوصلك بكباتن موثوقين في منطقتك، لتجربة مريحة.\n\nدي شوية مميزات بتميزنا:", + "Sign In by Apple": "دخول بـ أبل", + "Sign In by Google": "دخول بـ جوجل", + "How do I request a ride?": "ازاي أطلب رحلة؟", + "Step-by-step instructions on how to request a ride through the Intaleq app.": + "خطوات طلب رحلة عن طريق أبلكيشن انطلق.", + "What types of vehicles are available?": + "إيه أنواع العربيات المتاحة؟", + "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": + "انطلق بيوفر عربيات كتير تناسبك، زي الاقتصادية والمريحة والفاخرة. اختار اللي يناسب ميزانيتك.", + "How can I pay for my ride?": "ادفع ازاي؟", + "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": + "انطلق بيوفر طرق دفع كتير. اختار بين الكاش أو الفيزا وأنت بتأكد الرحلة.", + "Can I cancel my ride?": "ممكن ألغي الرحلة؟", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "أيوه، ممكن تلغي، بس خد بالك ممكن يكون في رسوم إلغاء حسب التوقيت.", + "Driver Registration & Requirements": "تسجيل الكباتن والشروط", + "How can I register as a driver?": "ازاي أسجل كابتن؟", + "What are the requirements to become a driver?": + "إيه شروط الانضمام ككابتن؟", + "Visit our website or contact Intaleq support for information on driver registration and requirements.": + "زور موقعنا أو كلم دعم انطلق عشان تعرف تفاصيل التسجيل.", + "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": + "انطلق بيوفر شات جوا التطبيق عشان تتكلم مع الكابتن أو الراكب.", + "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": + "أمانك أهم حاجة عندنا. بنقدم مميزات زي التحقق من الكابتن، وتتبع الرحلة، وأرقام الطوارئ.", + "Frequently Questions": "أسئلة شائعة", + "User does not exist.": "المستخدم مش موجود.", + "We need your phone number to contact you and to help you.": + "محتاجين رقمك عشان نتواصل معاك ونساعدك.", + "You will recieve code in sms message": "هيجيلك كود في رسالة", + "Please enter": "من فضلك دخل", + "We need your phone number to contact you and to help you receive orders.": + "محتاجين رقمك عشان نساعدك تستقبل طلبات.", + "The full name on your criminal record does not match the one on your driver's license. Please verify and provide the correct documents.": + "الاسم في الفيش مش مطابق للاسم في الرخصة. راجع الورق تاني.", + "The national number on your driver's license does not match the one on your ID document. Please verify and provide the correct documents.": + "الرقم القومي في الرخصة مش زي اللي في البطاقة. راجع الورق تاني.", + "Capture an Image of Your Criminal Record": "صور الفيش والتشبيه", + "IssueDate": "تاريخ الإصدار", + "Capture an Image of Your car license front": "صور وش رخصة العربية", + "Capture an Image of Your ID Document front": "صور وش البطاقة", + "NationalID": "الرقم القومي", + "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": + "شارك انطلق مع صحابك واكسب مكافآت لما يستخدموا الكود بتاعك.", + "FullName": "الاسم بالكامل", + "No invitation found yet!": "مفيش دعوات لسه!", + "InspectionResult": "نتيجة الفحص", + "Criminal Record": "الفيش والتشبيه", + "The email or phone number is already registered.": + "الإيميل أو الرقم ده متسجل قبل كده.", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "عشان تشتغل كابتن في انطلق، لازم ترفع رخصتك، وبطاقتك، ورخصة العربية. السيستم هيراجعهم في دقيقتين تلاتة. لو اتقبلوا، تقدر تبدأ شغل علطول. تزوير الورق هيعرضك للمساءلة القانونية وقفل الحساب.", + "Documents check": "فحص الورق", + "Driver's License": "رخصة القيادة", + "for your first registration!": "عشان أول تسجيل ليك!", + "Get it Now!": "خدها دلوقتي!", + "before": "قبل", + "Code not approved": "الكود مش مقبول", + "3000 LE": "3000 جنيه", + "Do you have an invitation code from another driver?": + "معاك كود دعوة من كابتن تاني؟", + "Paste the code here": "حط الكود هنا", + "No, I don't have a code": "لأ، معيش كود", + "Code approved": "الكود اتقبل", + "Install our app:": "نزل تطبيقنا:", + "Invite another driver and both get a gift after he completes 100 trips!": + "ادعي كابتن تاني وانتوا الاتنين تكسبوا هدية لما يخلص 100 رحلة!", + "Invite": "دعوة", + "Are you sure?": "أنت متأكد؟", + "This will delete all recorded files from your device.": + "ده هيمسح كل الملفات المتسجلة من جهازك.", + "Select a file": "اختار ملف", + "Select a File": "اختار ملف", + "Delete": "حذف", + "attach audio of complain": "ارفق صوت للشكوى", + "Phone Number Check": "فحص رقم الموبايل", + "Drivers received orders": "الكباتن استلموا الطلبات", + "No audio files recorded.": "مفيش تسجيلات.", + "This is for delivery or a motorcycle.": "ده للتوصيل أو الموتوسيكل.", + "Intaleq Reminder": "تذكير انطلق", + "It's time to check the Intaleq app!": "وقت تفقد تطبيق انطلق!", + "you must insert token code": "لازم تدخل الكود", + "Something went wrong. Please try again.": "حصلت مشكلة. جرب تاني.", + "Trip Details": "تفاصيل الرحلة", + "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": + "مفيش تفاصيل كفاية عن الشكوى. يا ريت توضح أكتر عشان نقدر نساعدك.", + "Submit Your Complaint": "قدم شكوتك", + "Status": "الحالة", + "Choose from contact": "اختار من الأسماء", + "attach correct audio": "ارفق صوت صح", + "be sure": "اتأكد", + "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": + "مثالي للي بيدور على أحدث عربيات مع حرية اختيار الطريق", + "Share this code with your friends and earn rewards when they use it!": + "شارك الكود مع صحابك واكسب لما يستخدموه!", + "Enter phone": "دخل الرقم", + "complete, you can claim your gift": "اكتمل، تقدر تاخد هديتك", + "When": "لما", + "Enter driver's phone": "دخل رقم الكابتن", + "Send Invite": "ابعت دعوة", + "Show Invitations": "اظهر الدعوات", + "License Type": "نوع الرخصة", + "National Number": "الرقم القومي", + "Name (Arabic)": "الاسم (عربي)", + "Name (English)": "الاسم (إنجليزي)", + "Address": "العنوان", + "Issue Date": "تاريخ الإصدار", + "Expiry Date": "تاريخ الانتهاء", + "License Categories": "فئات الرخصة", + "driver_license": "رخصة القيادة", + "Capture an Image of Your Driver License": "صور رخصتك", + "ID Documents Back": "ظهر البطاقة", + "National ID": "الرقم القومي", + "Occupation": "الوظيفة", + "Religion": "الديانة", + "Full Name (Marital)": "الاسم بالكامل", + "Expiration Date": "تاريخ الانتهاء", + "Capture an Image of Your ID Document Back": "صور ظهر البطاقة", + "ID Documents Front": "وش البطاقة", + "First Name": "الاسم الأول", + "CardID": "رقم البطاقة", + "Vehicle Details Front": "تفاصيل العربية (أمام)", + "Plate Number": "رقم اللوحة", + "Owner Name": "اسم المالك", + "Vehicle Details Back": "تفاصيل العربية (خلف)", + "Make": "الماركة", + "Model": "الموديل", + "Year": "السنة", + "Chassis": "رقم الشاسيه", + "Color": "اللون", + "Displacement": "السعة اللترية", + "Fuel": "بنزين/غاز", + "Tax Expiry Date": "انتهاء الضريبة", + "Inspection Date": "تاريخ الفحص", + "Capture an Image of Your car license back": "صور ظهر رخصة العربية", + "Capture an Image of Your Driver's License": "صور رخصة القيادة", + "Sign in with Google for easier email and name entry": + "ادخل بجوجل عشان أسهل", + "You will choose allow all the time to be ready receive orders": + "اختار 'السماح طوال الوقت' عشان تستقبل طلبات", + "Get to your destination quickly and easily.": + "وصل لوجهتك بسرعة وسهولة.", + "Enjoy a safe and comfortable ride.": "استمتع بمشوار آمن ومريح.", + "Choose Language": "اختار اللغة", + "Pay with Wallet": "دفع بالمحفظة", + "Invalid MPIN": "رمز MPIN غلط", + "Invalid OTP": "كود التحقق غلط", + "Enter your email address": "دخل إيميلك", + "Please enter Your Email.": "من فضلك دخل الإيميل.", + "Enter your phone number": "دخل رقمك", + "Please enter your phone number.": "دخل رقم موبايلك.", + "Please enter Your Password.": "دخل الباسورد.", + "if you dont have account": "لو معندكش حساب", + "Register": "تسجيل", + "Accept Ride's Terms & Review Privacy Notice": + "قبول الشروط والخصوصية", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "لما تختار 'أوافق'، بتأكد إنك وافقت على الشروط والخصوصية، وإن سنك ١٨ سنة أو أكتر.", + "First name": "الاسم الأول", + "Enter your first name": "دخل اسمك الأول", + "Please enter your first name.": "الاسم الأول مطلوب.", + "Last name": "الاسم الأخير", + "Enter your last name": "دخل اسمك الأخير", + "Please enter your last name.": "الاسم الأخير مطلوب.", + "City": "المدينة", + "Please enter your City.": "دخل مدينتك.", + "Verify Email": "تأكيد الإيميل", + "We sent 5 digit to your Email provided": "بعتنا ٥ أرقام لإيميلك", + "5 digit": "٥ أرقام", + "Send Verification Code": "ابعت كود التحقق", + "Your Ride Duration is ": "مدة المشوار: ", + "You will be thier in": "هتوصل خلال", + "You trip distance is": "مسافة المشوار:", + "Fee is": "الأجرة:", + "From : ": "من: ", + "To : ": "إلى: ", + "Add Promo": "ضيف برومو", + "Confirm Selection": "تأكيد الاختيار", + "distance is": "المسافة:", + "Privacy Policy": "سياسة الخصوصية", + "Intaleq LLC": "شركة انطلق", + "Syria's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "خدمة مشاركة الرحلات الرائدة في مصر، اتطورت بأيادي عربية ومحلية. أولويتنا نكون جنبك، ركابنا وكباتننا.", + "Intaleq is the first ride-sharing app in Syria, designed to connect you with the nearest drivers for a quick and convenient travel experience.": + "انطلق هو تطبيق المشاوير اللي بيوصلك بأقرب كباتن لتجربة سريعة ومريحة.", + "Why Choose Intaleq?": "ليه تختار انطلق؟", + "Closest to You": "الأقرب ليك", + "We connect you with the nearest drivers for faster pickups and quicker journeys.": + "بنوصلك بأقرب كباتن عشان منضيعش وقتك.", + "Uncompromising Security": "أمان تام", + "Lady Captains Available": "كباتن سيدات", + "Recorded Trips (Voice & AI Analysis)": + "رحلات مسجلة (تحليل صوتي وذكاء اصطناعي)", + "Fastest Complaint Response": "أسرع استجابة للشكاوى", + "Our dedicated customer service team ensures swift resolution of any issues.": + "فريق خدمة العملاء جاهز يحل أي مشكلة بسرعة.", + "Affordable for Everyone": "أسعار تناسب الكل", + "Frequently Asked Questions": "الأسئلة المتكررة", + "Getting Started": "ابدأ", + "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": + "افتح انطلق، حط واجهتك، ودوس \"اطلب رحلة\". التطبيق هيوصلك بأقرب كابتن.", + "Vehicle Options": "خيارات العربيات", + "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": + "انطلق بيقدملك خيارات كتير (اقتصادي، مريح، فاخر) عشان تناسبك.", + "Payments": "الدفع", + "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": + "تقدر تدفع كاش أو فيزا. اختار الطريقة اللي تريحك قبل ما تأكد الطلب.", + "Ride Management": "إدارة الرحلات", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "ممكن تلغي الرحلة، بس ممكن يتخصم رسوم لو لغيت متأخر.", + "For Drivers": "للكباتن", + "Driver Registration": "تسجيل الكابتن", + "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": + "للتسجيل ككابتن أو معرفة الشروط، زور موقعنا أو كلم الدعم.", + "Visit Website/Contact Support": "زور الموقع / كلم الدعم", + "Close": "قفل", + "We are searching for the nearest driver": "بندور على أقرب كابتن", + "Communication": "التواصل", + "How do I communicate with the other party (passenger/driver)?": + "ازاي أتواصل مع الطرف التاني؟", + "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": + "تقدر تتكلم شات مع الكابتن أو الراكب بعد تأكيد الرحلة.", + "Safety & Security": "الأمان", + "What safety measures does Intaleq offer?": + "إيه إجراءات الأمان في انطلق؟", + "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": + "انطلق بيقدم مميزات أمان زي التحقق من الكابتن، تتبع الرحلة، أرقام الطوارئ، ومشاركة تفاصيل الرحلة.", + "Enjoy competitive prices across all trip options, making travel accessible.": + "استمتع بأسعار تنافسية لكل الرحلات.", + "Variety of Trip Choices": "خيارات كتير للرحلة", + "Choose the trip option that perfectly suits your needs and preferences.": + "اختار الرحلة اللي تريحك.", + "Your Choice, Our Priority": "اختيارك يهمنا", + "Because we are near, you have the flexibility to choose the ride that works best for you.": + "عشان إحنا قريبين، عندك مرونة تختار اللي يناسبك.", + "duration is": "المدة:", + "Setting": "الإعدادات", + "Find answers to common questions": "لاقي إجابات لأسئلتك", + "I don't need a ride anymore": "مش محتاج رحلة خلاص", + "I was just trying the application": "بجرب التطبيق بس", + "No driver accepted my request": "مفيش كابتن قبل طلبي", + "I added the wrong pick-up/drop-off location": "حطيت مكان غلط", + "I don't have a reason": "مفيش سبب", + "Can we know why you want to cancel Ride ?": + "ممكن نعرف ليه عايز تلغي؟", + "Add Payment Method": "ضيف طريقة دفع", + "Ride Wallet": "محفظة الرحلة", + "Payment Method": "طريقة الدفع", + "Type here Place": "اكتب المكان هنا", + "Are You sure to ride to": "متأكد إنك رايح لـ", + "Confirm": "تأكيد", + "You are Delete": "أنت بتمسح", + "Deleted": "اتمسح", + "You Dont Have Any places yet !": "معندكش أماكن لسه!", + "From : Current Location": "من: مكاني الحالي", + "My Cared": "كروتي", + "Add Card": "ضيف كارت", + "Add Credit Card": "ضيف فيزا", + "Please enter the cardholder name": "دخل اسم صاحب الكارت", + "Please enter the expiry date": "دخل تاريخ الانتهاء", + "Please enter the CVV code": "دخل كود الـ CVV", + "Go To Favorite Places": "روح للأماكن المفضلة", + "Go to this Target": "روح للوجهة دي", + "My Profile": "بروفايلي", + "Are you want to go to this site": "عايز تروح المكان ده؟", + "MyLocation": "موقعي", + "my location": "موقعي", + "Target": "الهدف", + "You Should choose rate figure": "لازم تختار تقييم", + "Login Captin": "دخول الكابتن", + "Register Captin": "تسجيل كابتن", + "Send Verfication Code": "ابعت كود التحقق", + "KM": "كم", + "End Ride": "إنهاء الرحلة", + "Minute": "دقيقة", + "Go to passenger Location now": "روح لمكان الراكب دلوقتي", + "Duration of the Ride is ": "مدة الرحلة ", + "Distance of the Ride is ": "مسافة الرحلة ", + "Name of the Passenger is ": "اسم الراكب ", + "Hello this is Captain": "أهلاً، أنا الكابتن", + "Start the Ride": "ابدأ الرحلة", + "Please Wait If passenger want To Cancel!": + "استنى لو الراكب عايز يلغي!", + "Total Duration:": "المدة الكلية:", + "Active Duration:": "المدة الفعلية:", + "Waiting for Captin ...": "مستني الكابتن...", + "Age is ": "السن: ", + "Rating is ": "التقييم: ", + " to arrive you.": "عشان يوصلك.", + "Tariff": "التعريفة", + "Settings": "الإعدادات", + "Feed Back": "رأيك", + "Please enter a valid 16-digit card number": + "دخل رقم الكارت (١٦ رقم)", + "Add Phone": "ضيف رقم", + "You dont Add Emergency Phone Yet!": "مضفتش رقم طوارئ لسه!", + "You will arrive to your destination after ": "هتوصل بعد ", + "You can cancel Ride now": "تقدر تلغي الرحلة دلوقتي", + "You Can cancel Ride After Captain did not come in the time": + "تقدر تلغي لو الكابتن مجاش في ميعاده", + "If you in Car Now. Press Start The Ride": + "لو أنت في العربية، دوس ابدأ الرحلة", + "You Dont Have Any amount in": "معندكش رصيد في", + "Wallet!": "المحفظة!", + "You Have": "معاك", + "Save Credit Card": "حفظ الفيزا", + "Show Promos": "اظهر العروض", + "10 and get 4% discount": "١٠ وخد خصم ٤٪", + "20 and get 6% discount": "٢٠ وخد خصم ٦٪", + "40 and get 8% discount": "٤٠ وخد خصم ٨٪", + "100 and get 11% discount": "١٠٠ وخد خصم ١١٪", + "Pay with Your PayPal": "ادفع بـ PayPal", + "You will choose one of above !": "اختار واحد من اللي فوق!", + "Edit Profile": "تعديل الملف", + "Copy this Promo to use it in your Ride!": "انسخ البرومو واستخدمه!", + "To change some Settings": "لتغيير الإعدادات", + "Order Request Page": "صفحة الطلب", + "Rouats of Trip": "مسارات الرحلة", + "Passenger Name is ": "اسم الراكب: ", + "Total From Passenger is ": "المطلوب من الراكب: ", + "Duration To Passenger is ": "الوقت للوصول للراكب: ", + "Distance To Passenger is ": "المسافة للوصول للراكب: ", + "Total For You is ": "الإجمالي ليك: ", + "Distance is ": "المسافة: ", + " KM": " كم", + "Duration of Trip is ": "مدة الرحلة: ", + " Minutes": " دقائق", + "Apply Order": "اقبل الطلب", + "Refuse Order": "ارفض الطلب", + "Rate Captain": "قيم الكابتن", + "Enter your Note": "اكتب ملاحظة", + "Type something...": "اكتب حاجة...", + "Submit rating": "ابعت التقييم", + "Rate Passenger": "قيم الراكب", + "Ride Summary": "ملخص الرحلة", + "welcome_message": "أهلاً بيك في انطلق!", + "app_description": "انطلق تطبيق مشاوير أمين وموثوق.", + "get_to_destination": "وصل لوجهتك بسرعة.", + "get_a_ride": "مع انطلق، هتوصل في دقايق.", + "safe_and_comfortable": "استمتع برحلة آمنة ومريحة.", + "committed_to_safety": "بنهتم بسلامتك، وكل الكباتن متراجعين كويس.", + "your ride is Accepted": "رحلتك اتقبلت", + "Driver is waiting at pickup.": "الكابتن مستنيك.", + "Driver is on the way": "الكابتن في الطريق", + "Contact Options": "خيارات التواصل", + "Send a custom message": "ابعت رسالة", + "Type your message": "اكتب رسالتك", + "I will go now": "أنا هتحرك دلوقتي", + "You Have Tips": "عندك بقشيش", + " tips\nTotal is": " بقشيش\nالإجمالي", + "Your fee is ": "أجرتك: ", + "Do you want to pay Tips for this Driver": + "تحب تدفع بقشيش للكابتن ده؟", + "Tip is ": "البقشيش: ", + "Are you want to wait drivers to accept your order": + "عايز تستنى كباتن يقبلوا طلبك؟", + "This price is fixed even if the route changes for the driver.": + "السعر ده ثابت حتى لو الطريق اتغير.", + "The price may increase if the route changes.": + "السعر ممكن يزيد لو الطريق اتغير.", + "The captain is responsible for the route.": + "الكابتن مسؤول عن الطريق.", + "We are search for nearst driver": "بندور على أقرب كابتن", + "Your order is being prepared": "طلبك بيتجهز", + "The drivers are reviewing your request": "الكباتن بيشوفوا طلبك", + "Your order sent to drivers": "طلبك اتبعت للكباتن", + "You can call or record audio of this trip": "تقدر تتصل أو تسجل صوت", + "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": + "الرحلة بدأت! تقدر تكلم الطوارئ، تشارك رحلتك، أو تشغل التسجيل الصوتي.", + "Camera Access Denied.": "مفيش وصول للكاميرا.", + "Open Settings": "افتح الإعدادات", + "GPS Required Allow !.": "لازم تشغل الـ GPS!", + "Your Account is Deleted": "حسابك اتمسح", + "Are you sure to delete your account?": "متأكد إنك عايز تمسح حسابك؟", + "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": + "بياناتك هتتمسح بعد أسبوعين\nومش هتقدر تستخدم التطبيق تاني بعد شهر", + "Enter Your First Name": "دخل اسمك الأول", + "Are you Sure to LogOut?": "متأكد إنك عايز تخرج؟", + "Email Wrong": "الإيميل غلط", + "Email you inserted is Wrong.": "الإيميل اللي دخلته غلط.", + "You have finished all times ": "خلصت كل المحاولات", + "if you want help you can email us here": + "لو محتاج مساعدة ابعتلنا إيميل هنا", + "Thanks": "شكراً", + "Email Us": "راسلنا", + "I cant register in your app in face detection ": + "مش عارف أسجل بسبب مشكلة كشف الوجه", + "Hi": "أهلاً", + "No face detected": "مش لاقيين وجه", + "Image detecting result is ": "نتيجة فحص الصورة: ", + "from 3 times Take Attention": "من ٣ محاولات، خد بالك", + "Be sure for take accurate images please\nYou have": + "اتأكد إنك بتاخد صور واضحة\nفاضلك", + "image verified": "الصورة تمام", + "Next": "التالي", + "There is no help Question here": "مفيش أسئلة مساعدة هنا", + "You dont have Points": "معندكش نقاط", + "You Are Stopped For this Day !": "اتوقفت النهاردة!", + "You must be charge your Account": "لازم تشحن حسابك", + "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": + "رفضت ٣ رحلات النهاردة، وده السبب.\nنشوفك بكرة!", + "Recharge my Account": "شحن حسابي", + "Ok , See you Tomorrow": "تمام، أشوفك بكرة", + "You are Stopped": "أنت موقوف", + "Connected": "متصل", + "Not Connected": "غير متصل", + "Your are far from passenger location": "أنت بعيد عن الراكب", + "go to your passenger location before\nPassenger cancel trip": + "روح لمكان الراكب قبل ما يلغي", + "You will get cost of your work for this trip": "هتاخد حق مشوارك ده", + " in your wallet": "في محفظتك", + "you gain": "كسبت", + "Order Cancelled by Passenger": "الطلب اتلغى من الراكب", + "Feedback data saved successfully": "التقييم اتحفظ", + "No Promo for today .": "مفيش برومو النهاردة.", + "Select your destination": "اختار وجهتك", + "Search for your Start point": "ابحث عن نقطة البداية", + "Search for waypoint": "ابحث عن نقطة وقوف", + "Current Location": "الموقع الحالي", + "Add Location 1": "ضيف موقع ١", + "You must Verify email !.": "لازم تأكد الإيميل!", + "Cropper": "قص الصورة", + "Saved Sucssefully": "اتحفظ بنجاح", + "Select Date": "اختار التاريخ", + "Birth Date": "تاريخ الميلاد", + "Ok": "تمام", + "the 500 points equal 30 JOD": "الـ 500 نقطة بـ 30 جنيه", + "the 500 points equal 30 JOD for you \nSo go and gain your money": + "الـ 500 نقطة بـ 30 جنيه ليك\nيلا اكسب فلوسك", + "token updated": "التوكن اتحدث", + "Add Location 2": "ضيف موقع ٢", + "Add Location 3": "ضيف موقع ٣", + "Add Location 4": "ضيف موقع ٤", + "Waiting for your location": "مستنيين موقعك", + "Search for your destination": "ابحث عن وجهتك", + "Hi! This is": "أهلاً! ده", + " I am using": " أنا بستخدم", + " to ride with": " عشان أركب مع", + " as the driver.": " ككابتن.", + "is driving a ": "سايق ", + " with license plate ": " نمرتها ", + " I am currently located at ": " مكاني دلوقتي في ", + "Please go to Car now ": "روح للعربية دلوقتي", + "You will receive a code in WhatsApp Messenger": + "هيجيلك كود على الواتساب", + "If you need assistance, contact us": "لو محتاج مساعدة، كلمنا", + "Promo Ended": "العرض انتهى", + "Enter the promo code and get": "دخل الكود واحصل على", + "DISCOUNT": "خصم", + "No wallet record found": "مفيش سجل للمحفظة", + "for": "لـ", + "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": + "انطلق أأمن تطبيق مشاوير بمميزات كتير للكباتن والركاب. بنقدم أقل عمولة، ٨٪ بس. عندنا تأمين لأحسن الكباتن، وصيانة دورية، وخدمات على الطريق.", + "You can contact us during working hours from 12:00 - 19:00.": + "كلمنا من ١٢ لـ ٧.", + "Choose a contact option": "اختار طريقة تواصل", + "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": + "مواعيد العمل من ١٢ لـ ٧.\nابعت واتساب أو إيميل.", + "Promo code copied to clipboard!": "الكود اتنسخ!", + "Copy Code": "نسخ الكود", + "Your invite code was successfully applied!": "كود الدعوة اشتغل!", + "Payment Options": "خيارات الدفع", + "wait 1 minute to receive message": "استنى دقيقة عشان الرسالة توصل", + "You have copied the promo code.": "نسخت الكود.", + "Select Payment Amount": "اختار المبلغ", + "The promotion period has ended.": "فترة العرض خلصت.", + "Promo Code Accepted": "الكود اتقبل", + "Tap on the promo code to copy it!": "دوس على الكود عشان تنسخه!", + "Lowest Price Achieved": "أقل سعر", + "Cannot apply further discounts.": "مينفعش خصم أكتر من كده.", + "Promo Already Used": "الكود استخدمته قبل كده", + "Invitation Used": "الدعوة مستخدمة", + "You have already used this promo code.": "استخدمت الكود ده قبل كده.", + "Insert Your Promo Code": "دخل الكود بتاعك", + "Enter promo code here": "حط الكود هنا", + "Please enter a valid promo code": "دخل كود صالح", + "Awfar Car": "عربية أوفر", + "Old and affordable, perfect for budget rides.": + "قديمة وموفرة، مناسبة للمشاوير الاقتصادية.", + " If you need to reach me, please contact the driver directly at": + " لو محتاج تكلمني، اتصل بالكابتن على", + "No Car or Driver Found in your area.": + "مفيش عربيات أو كباتن في منطقتك.", + "Please Try anther time ": "جرب وقت تاني", + "There no Driver Aplly your order sorry for that ": + "مفيش كابتن قبل طلبك، بنعتذرلك", + "Trip Cancelled": "الرحلة اتلغت", + "The Driver Will be in your location soon .": "الكابتن هيوصلك قريب.", + "The distance less than 500 meter.": "المسافة أقل من ٥٠٠ متر.", + "Promo End !": "العرض انتهى!", + "There is no notification yet": "مفيش إشعارات", + "Use Touch ID or Face ID to confirm payment": + "استخدم البصمة لتأكيد الدفع", + "Contact us for any questions on your order.": + "كلمنا لو عندك سؤال عن طلبك.", + "Pyament Cancelled .": "الدفع اتلغى.", + "type here": "اكتب هنا", + "Scan Driver License": "امسح الرخصة", + "Please put your licence in these border": "حط الرخصة جوا الإطار", + "Camera not initialized yet": "الكاميرا لسه مجهزتش", + "Take Image": "خد صورة", + "AI Page": "صفحة الذكاء الاصطناعي", + "Take Picture Of ID Card": "صور البطاقة", + "Take Picture Of Driver License Card": "صور رخصة القيادة", + "We are process picture please wait ": "بنحمل الصورة، استنى...", + "There is no data yet.": "مفيش بيانات لسه.", + "Name :": "الاسم:", + "Drivers License Class: ": "درجة الرخصة:", + "Document Number: ": "رقم الوثيقة:", + "Address: ": "العنوان:", + "Height: ": "الطول:", + "Expiry Date: ": "تاريخ الانتهاء:", + "Date of Birth: ": "تاريخ الميلاد:", + "You can't continue with us .\nYou should renew Driver license": + "مش هينفع تكمل معانا.\nلازم تجدد الرخصة", + "Detect Your Face ": "افحص وجهك", + "Go to next step\nscan Car License.": + "الخطوة الجاية\nصور رخصة العربية.", + "Name in arabic": "الاسم بالعربي", + "Drivers License Class": "درجة الرخصة", + "Selected Date": "التاريخ المختار", + "Select Time": "اختار الوقت", + "Selected Time": "الوقت المختار", + "Selected Date and Time": "التاريخ والوقت المختارين", + "Lets check Car license ": "يلا نفحص رخصة العربية", + "Car": "عربية", + "Plate": "نمرة", + "Rides": "مشاوير", + "Selected driver": "الكابتن المختار", + "Lets check License Back Face": "يلا نفحص ظهر الرخصة", + "Car License Card": "رخصة العربية", + "No image selected yet": "مخترتش صورة لسه", + "Made :": "الصنع:", + "model :": "الموديل:", + "VIN :": "الشاسيه:", + "year :": "السنة:", + "ُExpire Date": "تاريخ الانتهاء", + "Login Driver": "دخول الكابتن", + "Password must br at least 6 character.": + "الباسورد لازم يكون ٦ حروف على الأقل.", + "if you don't have account": "لو معندكش حساب", + "Here recorded trips audio": "هنا تسجيلات الرحلات", + "Register as Driver": "سجل كابتن", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": + "لما تختار \"أوافق\"، بتأكد موافقتك على الشروط وإقرارك بـ ", + "Log Out Page": "صفحة الخروج", + "Log Off": "خروج", + "Register Driver": "تسجيل كابتن", + "Verify Email For Driver": "تأكيد إيميل الكابتن", + "Admin DashBoard": "لوحة الأدمن", + "Your name": "اسمك", + "your ride is applied": "رحلتك اتقدمت", + "H and": "س و", + "JOD": "جنيه", + "m": "د", + "We search nearst Driver to you": "بندورلك على أقرب كابتن", + "please wait till driver accept your order": + "استنى لحد ما الكابتن يقبل", + "No accepted orders? Try raising your trip fee to attract riders.": + "محدش قبل؟ جرب تعلي السعر.", + "You should select one": "لازم تختار واحد", + "The driver accept your order for": "الكابتن قبل طلبك بـ", + "The driver on your way": "الكابتن جاي", + "Total price from ": "السعر الكلي من ", + "Order Details Intaleq": "تفاصيل الطلب", + "Selected file:": "الملف المختار:", + "Your trip cost is": "تكلفة رحلتك:", + "this will delete all files from your device": + "ده هيمسح كل الملفات من جهازك", + "Exclusive offers and discounts always with the Intaleq app": + "عروض وخصومات حصرية دايماً مع انطلق", + "Submit Question": "ابعت سؤال", + "Please enter your Question.": "اكتب سؤالك.", + "Help Details": "تفاصيل المساعدة", + "No trip yet found": "ملقيناش رحلة", + "No Response yet.": "مفيش رد لسه.", + " You Earn today is ": " كسبت النهاردة ", + " You Have in": " معاك في", + "Total points is ": "مجموع النقاط ", + "Total Connection Duration:": "مدة الاتصال الكلية:", + "Passenger name : ": "اسم الراكب: ", + "Cost Of Trip IS ": "تكلفة الرحلة: ", + "Arrival time": "وقت الوصول", + "arrival time to reach your point": "وقت الوصول لنقطتك", + "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "لرحلات انطلق والسكوتر السعر متغير. للراحة السعر بالوقت والمسافة.", + "Hello this is Driver": "أهلاً، أنا الكابتن", + "Is the Passenger in your Car ?": "الراكب ركب معاك؟", + "Please wait for the passenger to enter the car before starting the trip.": + "استنى لما الراكب يركب قبل ما تبدأ.", + "No ,still Waiting.": "لأ، لسه مستني.", + "I arrive you": "وصلتلك", + "I Arrive your site": "أنا في موقعك", + "You are not in near to passenger location": "أنت مش قريب من الراكب", + "please go to picker location exactly": "روح لمكان الركوب بالضبط", + "You Can Cancel Trip And get Cost of Trip From": + "تقدر تلغي وتاخد تمن الرحلة من", + "Are you sure to cancel?": "متأكد إنك عايز تلغي؟", + "Insert Emergincy Number": "دخل رقم الطوارئ", + "Best choice for comfort car and flexible route and stops point": + "أحسن خيار لرحلة مريحة ومسار مرن", + "Insert": "إدخال", + "This is for scooter or a motorcycle.": "ده للسكوتر أو الموتوسيكل.", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "رحلة مباشرة بسعر ثابت. الكابتن لازم يمشي على الطريق المحدد.", + "You can decline a request without any cost": "تقدر ترفض الطلب ببلاش", + "Perfect for adventure seekers who want to experience something new and exciting": + "مثالي للي بيحب يجرب حاجة جديدة", + "My current location is:": "مكاني دلوقتي:", + "and I have a trip on": "وعندي رحلة على", + "App with Passenger": "التطبيق مع الراكب", + "You will be pay the cost to driver or we will get it from you on next trip": + "هتدفع للكابتن أو هناخدها منك المرة الجاية", + "Trip has Steps": "الرحلة فيها وقفات", + "Distance from Passenger to destination is ": + "المسافة من الراكب للوجهة: ", + "price is": "السعر:", + "This ride type does not allow changes to the destination or additional stops": + "النوع ده مبيسمحش بتغيير الوجهة أو الوقفات", + "This price may be changed": "السعر ده ممكن يتغير", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "مفيش شريحة؟ مفيش مشكلة! كلم الكابتن من التطبيق.", + "This ride type allows changes, but the price may increase": + "النوع ده بيسمح بالتغيير بس السعر ممكن يزيد", + "Select one message": "اختار رسالة", + "I'm waiting for you": "أنا مستنيك", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "لاحظنا السرعة عدت ١٠٠ كم/س. هدي السرعة عشان سلامتك. لو قلقان شارك رحلتك أو كلم الشرطة من زرار الطوارئ.", + "Warning: Intaleqing detected!": "تحذير: سرعة زايدة!", + "Please help! Contact me as soon as possible.": + "إلحقوني! كلموني بسرعة.", + "Share Trip Details": "شارك تفاصيل الرحلة", + "Car Plate is ": "نمرة العربية: ", + "the 300 points equal 300 L.E for you \nSo go and gain your money": + "الـ 300 نقطة بـ 300 جنيه ليك\nيلا اكسب فلوسك", + "the 300 points equal 300 L.E": "الـ 300 نقطة بـ 300 جنيه", + "The payment was not approved. Please try again.": + "الدفع ماتقبلش. جرب تاني.", + "Payment Failed": "فشل الدفع", + "This is a scheduled notification.": "ده إشعار مجدول.", + "An error occurred during the payment process.": "حصل خطأ وقت الدفع.", + "The payment was approved.": "تم الدفع.", + "Payment Successful": "تم الدفع بنجاح", + "No ride found yet": "ملقيناش رحلة لسه", + "Accept Order": "اقبل الطلب", + "Bottom Bar Example": "مثال الشريط السفلي", + "Driver phone": "رقم الكابتن", + "Statistics": "الإحصائيات", + "Origin": "الانطلاق", + "Destination": "الوصول", + "Driver Name": "اسم الكابتن", + "Driver Car Plate": "نمرة الكابتن", + "Available for rides": "متاح للرحلات", + "Scan Id": "امسح البطاقة", + "Camera not initilaized yet": "الكاميرا لسه", + "Scan ID MklGoogle": "مسح هوية MklGoogle", + "Language": "اللغة", + "Jordan": "الأردن", + "USA": "أمريكا", + "Egypt": "مصر", + "Turkey": "تركيا", + "Saudi Arabia": "السعودية", + "Qatar": "قطر", + "Bahrain": "البحرين", + "Kuwait": "الكويت", + "But you have a negative salary of": "بس عندك عجز بقيمة", + "Promo Code": "برومو كود", + "Your trip distance is": "مسافة رحلتك:", + "Enter promo code": "دخل الكود", + "You have promo!": "عندك برومو!", + "Cost Duration": "تكلفة الوقت", + "Duration is": "الوقت:", + "Leave": "مغادرة", + "Join": "انضمام", + "Heading your way now. Please be ready.": + "جايلك في السكة. خليك جاهز.", + "Approaching your area. Should be there in 3 minutes.": + "قربت من منطقتك. ٣ دقايق وأكون عندك.", + "There's heavy traffic here. Can you suggest an alternate pickup point?": + "الدنيا زحمة هنا. ممكن نقف في حتة تانية؟", + "This ride is already taken by another driver.": + "الرحلة دي راحت لكابتن تاني.", + "You Should be select reason.": "لازم تختار سبب.", + "Waiting for Driver ...": "مستني الكابتن...", + "Latest Recent Trip": "آخر رحلة", + "from your list": "من قائمتك", + "Do you want to change Work location": "تغير مكان الشغل؟", + "Do you want to change Home location": "تغير مكان البيت؟", + "We Are Sorry That we dont have cars in your Location!": + "آسفين، مفيش عربيات في مكانك!", + "Choose from Map": "اختار من الخريطة", + "Pick your ride location on the map - Tap to confirm": + "حدد مكانك على الخريطة - دوس للتأكيد", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "انطلق هو تطبيق المشاوير الآمن والموثوق.", + "With Intaleq, you can get a ride to your destination in minutes.": + "مع انطلق، هتوصل في دقايق.", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "بنهتم بسلامتك، وكل كباتننا متراجعين.", + "Pick from map": "اختار من الخريطة", + "No Car in your site. Sorry!": "مفيش عربية عندك. آسفين!", + "Nearest Car for you about ": "أقرب عربية ليك على بعد ", + "From :": "من:", + "Get Details of Trip": "تفاصيل الرحلة", + "If you want add stop click here": "لو عايز تضيف وقفة دوس هنا", + "Where you want go ": "رايح فين؟", + "My Card": "كارتي", + "Start Record": "ابدأ التسجيل", + "History of Trip": "سجل الرحلات", + "Helping Center": "مركز المساعدة", + "Record saved": "التسجيل اتحفظ", + "Trips recorded": "رحلات مسجلة", + "Select Your Country": "اختار بلدك", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "عشان نجبلك معلومات دقيقة، اختار بلدك تحت.", + "Are you sure to delete recorded files": "متأكد تمسح الملفات؟", + "Select recorded trip": "اختار رحلة مسجلة", + "Card Number": "رقم الكارت", + "Hi, Where to ": "أهلاً، رايح فين؟", + "Pick your destination from Map": "حدد وجهتك من الخريطة", + "Add Stops": "ضيف وقفات", + "Get Direction": "اعرف الطريق", + "Add Location": "ضيف مكان", + "Switch Rider": "بدل الراكب", + "You will arrive to your destination after timer end.": + "هتوصل لما الوقت يخلص.", + "You can cancel trip": "تقدر تلغي الرحلة", + "The driver waitting you in picked location .": "الكابتن مستنيك.", + "Pay with Your": "ادفع بـ", + "Pay with Credit Card": "ادفع بالفيزا", + "Show Promos to Charge": "اظهر عروض الشحن", + "Point": "نقطة", + "How many hours would you like to wait?": "عايز تستنى كام ساعة؟", + "Driver Wallet": "محفظة الكابتن", + "Choose between those Type Cars": "اختار نوع العربية", + "hour": "ساعة", + "Select Waiting Hours": "اختار ساعات الانتظار", + "Total Points is": "مجموع النقاط", + "You will receive a code in SMS message": "هيجيلك كود في رسالة", + "Done": "تمام", + "Total Budget from trips is ": "إجمالي الدخل من الرحلات: ", + "Total Amount:": "المبلغ الكلي:", + "Total Budget from trips by\nCredit card is ": + "إجمالي الدخل بالفيزا: ", + "This amount for all trip I get from Passengers": + "ده المبلغ من كل الركاب", + "Pay from my budget": "ادفع من رصيدي", + "This amount for all trip I get from Passengers and Collected For me in": + "ده المبلغ اللي جمعته وبيتحوشلي في", + "You can buy points from your budget": "ممكن تشتري نقاط من رصيدك", + "insert amount": "دخل المبلغ", + "You can buy Points to let you online\nby this list below": + "اشتري نقاط عشان تفضل أونلاين\nمن القائمة دي", + "Create Wallet to receive your money": "اعمل محفظة عشان تستلم فلوسك", + "Enter your feedback here": "اكتب رأيك هنا", + "Please enter your feedback.": "اكتب رأيك.", + "Feedback": "رأيك", + "Submit ": "إرسال ", + "Click here to Show it in Map": "دوس هنا عشان تشوفه في الخريطة", + "Canceled": "ملغي", + "No I want": "لأ أنا عايز", + "Email is": "الإيميل:", + "Phone Number is": "الموبايل:", + "Date of Birth is": "تاريخ الميلاد:", + "Sex is ": "النوع: ", + "Car Details": "تفاصيل العربية", + "VIN is": "الشاسيه:", + "Color is ": "اللون: ", + "Make is ": "الماركة: ", + "Model is": "الموديل:", + "Year is": "السنة:", + "Expiration Date ": "الانتهاء: ", + "Edit Your data": "تعديل بياناتك", + "write vin for your car": "اكتب الشاسيه", + "VIN": "الشاسيه", + "Device Change Detected": "الجهاز اتغير", + "Please verify your identity": "أكد هويتك", + "write Color for your car": "اكتب لون العربية", + "write Make for your car": "اكتب ماركة العربية", + "write Model for your car": "اكتب موديل العربية", + "write Year for your car": "اكتب سنة الصنع", + "write Expiration Date for your car": "اكتب تاريخ الانتهاء", + "Tariffs": "التعريفة", + "Minimum fare": "أقل أجرة", + "Maximum fare": "أقصى أجرة", + "Flag-down fee": "فتحة العداد", + "Including Tax": "شامل الضريبة", + "BookingFee": "رسوم الحجز", + "Morning": "صبح", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "من ٧:٣٠ لـ ١٠:٣٠ (خميس، جمعة، سبت، اثنين)", + "Evening": "ليل", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "من ١٢ لـ ٣ (خميس، جمعة، سبت، اثنين)", + "Night": "سهرة", + "You have in account": "معاك في الحساب", + "Select Country": "اختار الدولة", + "Ride Today : ": "رحلة اليوم: ", + "After this period\nYou can't cancel!": + "بعد الوقت ده\nمش هتعرف تلغي!", + "from 23:59 till 05:30": "من ١١:٥٩ م لـ ٥:٣٠ ص", + "Rate Driver": "قيم الكابتن", + "Total Cost is ": "التكلفة: ", + "Write note": "اكتب ملاحظة", + "Time to arrive": "وقت الوصول", + "Ride Summaries": "ملخص الرحلات", + "Total Cost": "التكلفة الكلية", + "Average of Hours of": "متوسط ساعات", + " is ON for this month": " متصل الشهر ده", + "Days": "أيام", + "Total Hours on month": "إجمالي ساعات الشهر", + "Counts of Hours on days": "عدد الساعات في الأيام", + "OrderId": "رقم الطلب", + "created time": "وقت الإنشاء", + "Intaleq Over": "انتهت رحلة انطلق", + "I will slow down": "هدي السرعة", + "Map Passenger": "خريطة الراكب", + "Be Slowly": "على مهلك", + "If you want to make Google Map App run directly when you apply order": + "لو عايز جوجل ماب يفتح علطول لما تقبل الطلب", + "You can change the language of the app": "تقدر تغير لغة التطبيق", + "Your Budget less than needed": "رصيدك أقل من المطلوب", + "You can change the Country to get all features": + "غير الدولة عشان كل المميزات تظهر", + "Change Country": "تغيير الدولة" + }, "ar-main": { "Syria": "‏سوريا", "Order": "طلب", @@ -2882,866 +4408,1171 @@ class MyTranslation extends Translations { "Cancel Trip": "Yolculuğu İptal Et", "Passenger Cancel Trip": "Yolcu Yolculuğu İptal Etti", "VIP Order": "VIP Sipariş", - "The driver accepted your trip": "Sürücü yolculuğunuzu kabul etti", - "message From passenger": "Yolcudan mesaj", + "Hi ,I Arrive your site": "Selam, konumuna ulaştım", + "The driver accepted your trip": "Sürücü yolculuğunu kabul etti", + "message From passenger": "Yolcumuzdan mesaj", "Cancel": "İptal", "Trip Cancelled. The cost of the trip will be added to your wallet.": - "Yolculuk İptal Edildi. Yolculuk ücreti cüzdanınıza eklenecektir.", - "token change": "token değişikliği", - "face detect": "yüz algılama", + "Yolculuk iptal edildi. Ücret cüzdanınıza eklenecektir.", + "token change": "Token değişikliği", + "face detect": "Yüz Algılama", "Face Detection Result": "Yüz Algılama Sonucu", - "similar": "benzer", - "not similar": "benzer değil", - "Hi ,I will go now": "Merhaba, şimdi gideceğim", + "similar": "Benzer", + "not similar": "Benzer Değil", + "Hi ,I will go now": "Selam, şimdi yola çıkıyorum", "Passenger come to you": "Yolcu size geliyor", "Call Income": "Gelen Arama", - "Call Income from Passenger": "Yolcudan Gelen Arama", - "Criminal Document Required": "Adli Belge Gerekli", - "You should have upload it .": "Yüklemeniz gerekiyor.", - "Call End": "Arama Sonu", + "Call Income from Passenger": "Yolcumuzdan Gelen Arama", + "Criminal Document Required": "Adli Sicil Kaydı Gerekli", + "You should have upload it .": "Bunu yüklemeniz gerekiyor.", + "Call End": "Arama Sonlandı", "The order has been accepted by another driver.": "Sipariş başka bir sürücü tarafından kabul edildi.", "The order Accepted by another Driver": - "Sipariş başka bir Sürücü tarafından Kabul Edildi", + "Sipariş Başka Sürücü Tarafından Kabul Edildi", "We regret to inform you that another driver has accepted this order.": - "Başka bir sürücünün bu siparişi kabul ettiğini bildirmekten üzgünüz.", + "Üzgünüz, bu siparişi başka bir sürücü kabul etti.", "Driver Applied the Ride for You": - "Sürücü Sizin İçin Yolculuğa Başvurdu", + "Sürücü Sizin İçin Yolculuk Başlattı", "Applied": "Başvuruldu", - "Hi ,I Arrive your site": "Merhaba, konumunuza geldim", - "Please go to Car Driver": "Lütfen Araç Sürücüsüne gidin", - "Ok I will go now.": "Tamam, şimdi gideceğim.", + "Pay by Sham Cash": "Sham Cash ile Öde", + "Pay with Debit Card": "Banka Kartı ile Öde", + "Please go to Car Driver": "Lütfen Sürücüye Gidin", + "Ok I will go now.": "Tamam, şimdi gidiyorum.", "Accepted Ride": "Kabul Edilen Yolculuk", "Driver Accepted the Ride for You": "Sürücü Sizin İçin Yolculuğu Kabul Etti", "Promo": "Promosyon", - "Show latest promo": "En son promosyonu göster", - "Trip Monitoring": "Yolculuk İzleme", + "Show latest promo": "Son promosyonları göster", + "Trip Monitoring": "Yolculuk Takibi", "Driver Is Going To Passenger": "Sürücü Yolcuya Gidiyor", - "Please stay on the picked point.": "Lütfen seçilen noktada kalın.", - "message From Driver": "Sürücüden mesaj", - "Trip is Begin": "Yolculuk Başladı", - "Cancel Trip from driver": "Sürücüden Yolculuk İptali", + "Please stay on the picked point.": + "Lütfen seçilen noktada bekleyin.", + "message From Driver": "Sürücüden Mesaj", + "Trip is Begin": "Yolculuk Başlıyor", + "Cancel Trip from driver": "Sürücü tarafından iptal", "We will look for a new driver.\nPlease wait.": - "Yeni bir sürücü arayacağız.\nLütfen bekleyin.", + "Yeni bir sürücü arıyoruz.\nLütfen bekleyin.", "The driver canceled your ride.": "Sürücü yolculuğunuzu iptal etti.", "Driver Finish Trip": "Sürücü Yolculuğu Bitirdi", - "you will pay to Driver": "Sürücüye ödeme yapacaksınız", + "you will pay to Driver": "Sürücüye ödeyeceksiniz", "Don’t forget your personal belongings.": "Kişisel eşyalarınızı unutmayın.", "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": - "Lütfen ayrılmadan önce tüm kişisel eşyalarınızın yanınızda olduğundan ve varsa kalan ücretin cüzdanınıza eklendiğinden emin olun. Intaleq uygulamasını seçtiğiniz için teşekkür ederiz", + "Lütfen tüm kişisel eşyalarınızı aldığınızdan ve kalan ücretin cüzdanınıza eklendiğinden emin olun. Intaleq'i seçtiğiniz için teşekkürler.", + "Finish Monitor": "İzlemeyi Bitir", + "Trip finished": "Yolculuk tamamlandı", + "Call Income from Driver": "Sürücüden Gelen Arama", + "Driver Cancelled Your Trip": "Sürücü Yolculuğunuzu İptal Etti", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "Sürücüye zaman maliyetini ödeyeceksiniz, Intaleq Cüzdanınıza bakın", + "Order Applied": "Sipariş Uygulandı", + "welcome to intaleq": "Intaleq'e Hoş Geldiniz", + "login or register subtitle": + "Giriş yapmak veya kayıt olmak için numaranızı girin", + "An application error occurred.": "Bir uygulama hatası oluştu.", + "Submission Failed": "Gönderim Başarısız", + "Your complaint has been submitted.": "Şikayetiniz gönderildi.", + "Failed to connect to the server. Please try again.": + "Sunucuya bağlanılamadı. Lütfen tekrar deneyin.", + "Ride information not found. Please refresh the page.": + "Yolculuk bilgisi bulunamadı. Lütfen sayfayı yenileyin.", + "Please describe your issue before submitting.": + "Lütfen göndermeden önce sorununuzu açıklayın.", + "An application error occurred during upload.": + "Yükleme sırasında bir hata oluştu.", + "Failed to upload audio file.": "Ses dosyası yüklenemedi.", + "Audio uploaded successfully.": "Ses başarıyla yüklendi.", + "Complaint cannot be filed for this ride. It may not have been completed or started.": + "Bu yolculuk için şikayet oluşturulamaz. Tamamlanmamış veya başlamamış olabilir.", + "2. Attach Recorded Audio (Optional)": + "2. Ses Kaydı Ekle (İsteğe Bağlı)", + "Please enter a description of the issue.": + "Lütfen sorunun tanımını girin.", + "phone number label": "Telefon Numarası", + "phone number required": "Telefon numarası gerekli", + "send otp button": "Doğrulama Kodu Gönder", + "verify your number title": "Numaranızı Doğrulayın", + "otp sent subtitle": "5 haneli kod şuraya gönderildi:\n@phoneNumber", + "verify and continue button": "Doğrula ve Devam Et", + "enter otp validation": "Lütfen 5 haneli doğrulama kodunu girin", + "one last step title": "Son bir adım", + "complete profile subtitle": "Başlamak için profilinizi tamamlayın", + "first name label": "Ad", + "first name required": "Ad gerekli", + "last name label": "Soyad", + "Verify OTP": "Kodu Doğrula", + "Verification Code": "Doğrulama Kodu", + "We have sent a verification code to your mobile number:": + "Cep telefonu numaranıza bir doğrulama kodu gönderdik:", + "Verify": "Doğrula", + "Resend Code": "Kodu Tekrar Gönder", + "You can resend in": "Tekrar gönderim süresi:", + "seconds": "saniye", + "Error": "Hata", + "Please enter the complete 6-digit code.": + "Lütfen 6 haneli kodu eksiksiz girin.", + "last name required": "Soyad gerekli", + "email optional label": "E-posta (İsteğe Bağlı)", + "complete registration button": "Kaydı Tamamla", + "User with this phone number or email already exists.": + "Bu telefon veya e-posta ile kayıtlı bir kullanıcı zaten var.", + "otp sent success": "Kod WhatsApp'a başarıyla gönderildi.", + "failed to send otp": "Kod gönderilemedi.", + "server error try again": "Sunucu hatası, tekrar deneyin.", + "an error occurred": "Bir hata oluştu: @error", + "otp verification failed": "Kod doğrulaması başarısız.", + "registration failed": "Kayıt başarısız.", + "welcome user": "Hoş geldin, @firstName!", + "Cancel Trip from driver": "Sürücü tarafından iptal", + "We will look for a new driver.\nPlease wait.": + "Yeni bir sürücü arıyoruz.\nLütfen bekleyin.", + "The driver canceled your ride.": "Sürücü yolculuğunuzu iptal etti.", + "Driver Finish Trip": "Sürücü Yolculuğu Bitirdi", + "you will pay to Driver": "Sürücüye ödeyeceksiniz", + "Don't forget your personal belongings.": + "Kişisel eşyalarınızı unutmayın.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "Lütfen eşyalarınızı kontrol edin ve kalan ücretin cüzdanınıza eklendiğinden emin olun. Teşekkürler.", "Finish Monitor": "İzlemeyi Bitir", "Trip finished": "Yolculuk bitti", "Call Income from Driver": "Sürücüden Gelen Arama", "Driver Cancelled Your Trip": "Sürücü Yolculuğunuzu İptal Etti", "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": - "Sürücüye ödeme yapacaksınız, sürücü zamanının maliyetini ödeyeceksiniz, Intaleq Cüzdanınıza bakın", - "Order Applied": "Sipariş Uygulandı", - //firbase - + "Sürücünün zaman maliyetini ödeyeceksiniz, Intaleq Cüzdanınıza bakın", + "Order Applied": "Sipariş Alındı", + "Share App": "Uygulamayı Paylaş", + "Wallet": "Cüzdan", + "Balance": "Bakiye", + "Don’t forget your personal belongings.": "Eşyalarınızı unutmayın.", + "Profile": "Profil", + "Contact Support": "Destekle İletişime Geç", + "Session expired. Please log in again.": + "Oturum süresi doldu. Lütfen tekrar giriş yapın.", + "Security Warning": "⚠️ Güvenlik Uyarısı", + "Potential security risks detected. The application may not function correctly.": + "Potansiyel güvenlik riski algılandı. Uygulama düzgün çalışmayabilir.", + "please order now": "Şimdi sipariş ver", "Where to": "Nereye?", - "Where are you going?": "Nereye gidiyorsun?", + "Where are you going?": "Nereye gidiyorsunuz?", "Quick Actions": "Hızlı İşlemler", - "My Wallet": "Cüzdanım", + "My Balance": "Bakiyem", "Order History": "Sipariş Geçmişi", "Contact Us": "Bize Ulaşın", "Driver": "Sürücü", "Complaint": "Şikayet", "Promos": "Promosyonlar", - "Recent Places": "Son Yerler", - "From": "Kimden", + "Recent Places": "Son Gidilen Yerler", + "From": "Nereden", "WhatsApp Location Extractor": "WhatsApp Konum Çıkarıcı", - "Location Link": "Konum Bağlantısı", - "Paste location link here": "Konum bağlantısını buraya yapıştırın", + "Location Link": "Konum Linki", + "Paste location link here": "Konum linkini buraya yapıştırın", "Go to this location": "Bu konuma git", - "Paste WhatsApp location link": - "WhatsApp konum bağlantısını yapıştırın", - "Select Order Type": "Sipariş Türünü Seçin", - "Choose who this order is for": - "Bu siparişin kimin için olduğunu seçin", - "I want to order for myself": "Kendime sipariş vermek istiyorum", - "I want to order for someone else": - "Başkası için sipariş vermek istiyorum", + "Paste WhatsApp location link": "WhatsApp konum linkini yapıştır", + "Select Order Type": "Sipariş Türünü Seç", + "Choose who this order is for": "Bu sipariş kimin için?", + "I want to order for myself": "Kendim için", + "I want to order for someone else": "Başka biri için", "Order for someone else": "Başkası için sipariş ver", "Order for myself": "Kendim için sipariş ver", - "Are you want to go this site": "Bu siteye gitmek ister misin?", + "Are you want to go this site": "Bu konuma gitmek istiyor musunuz?", "No": "Hayır", + "Pay by Sham Cash": "Sham Cash ile Öde", + "Intaleq Wallet": "Intaleq Cüzdan", + "Have a promo code?": "Promosyon kodunuz var mı?", + "Your Wallet balance is ": "Cüzdan bakiyeniz: ", + "Cash": "Nakit", + "Phone Number": "Telefon Numarası", + "Search country": "Ülke ara", + "Payment Successful!": "Ödeme Başarılı!", + "Your payment was successful.": "Ödemeniz başarıyla gerçekleşti.", + "Pay directly to the captain": "Doğrudan Kaptana öde", + "Top up Wallet to continue": "Devam etmek için Cüzdanı doldur", + "Or pay with Cash instead": "Veya Nakit öde", + "Confirm & Find a Ride": "Onayla & Araç Bul", + "Balance:": "Bakiye:", + "Alerts": "Uyarılar", + "Welcome Back!": "Tekrar Hoş Geldiniz!", + "Current Balance": "Güncel Bakiye", + "Set Wallet Phone Number": "Cüzdan Numarası Ayarla", + "Link a phone number for transfers": "Transferler için numara bağla", + "Payment History": "Ödeme Geçmişi", + "View your past transactions": "Geçmiş işlemleri görüntüle", + "Top up Wallet": "Cüzdanı Doldur", + "Add funds using our secure methods": + "Güvenli yöntemlerle bakiye ekle", + "Driver is waiting": "Sürücü bekliyor", + "Type your message...": "Mesajınızı yazın...", + "Driver Accepted Request": "Sürücü İsteği Kabul Etti", + "Message": "Mesaj", + "Call": "Ara", + "Set Phone Number": "Telefon Numarası Ayarla", + "Select This Ride": "Bu Yolculuğu Seç", + "Call Driver": "Sürücüyü Ara", + "Increase Fare": "Ücreti Artır", + "Stop": "Dur", + "Record": "Kaydet", + "Share": "Paylaş", + "WhatsApp": "WhatsApp", + "SOS": "SOS", + "No drivers accepted your request yet": + "Henüz hiçbir sürücü isteğinizi kabul etmedi", + "Increasing the fare might attract more drivers. Would you like to increase the price?": + "Ücreti artırmak daha fazla sürücü çekebilir. Fiyatı artırmak ister misiniz?", + "Please make sure not to leave any personal belongings in the car.": + "Lütfen araçta kişisel eşya bırakmadığınızdan emin olun.", + "Cancel Ride": "Yolculuğu İptal Et", + "Route Not Found": "Rota Bulunamadı", + "We couldn't find a valid route to this destination. Please try selecting a different point.": + "Bu hedefe geçerli bir rota bulamadık. Lütfen farklı bir nokta seçin.", + "alert": "Uyarı", + "You can call or record audio during this trip.": + "Bu yolculuk sırasında arama yapabilir veya ses kaydedebilirsiniz.", + "Warning: Speeding detected!": "Uyarı: Hız sınırı aşıldı!", + "Fixed Price": "Sabit Fiyat", + "Report": "Bildir", + "Comfort": "Konfor", + "Intaleq Balance": "Intaleq Bakiyesi", + "Search for a starting point": "Başlangıç noktası ara", + "Top up Balance to continue": "Devam etmek için Bakiye Yükle", + "Electric": "Elektrikli", + "Lady": "Kadın", + "Van": "Geniş Araç", + "Rayeh Gai": "Gidiş-Dönüş", + "Join Intaleq as a driver using my referral code!": + "Referans kodumla Intaleq sürücüsü ol!", + "Use code:": "Kodu kullan:", + "Download the Intaleq Driver app now and earn rewards!": + "Intaleq Sürücü uygulamasını indir ve kazan!", + "Get a discount on your first Intaleq ride!": + "İlk Intaleq yolculuğunda indirim kazan!", + "Use my referral code:": "Referans kodumu kullan:", + "Download the Intaleq app now and enjoy your ride!": + "Intaleq uygulamasını indir ve yolculuğun tadını çıkar!", + "Contacts Loaded": "Kişiler Yüklendi", + "Showing": "Gösteriliyor", + "of": "/", + "Pay by MTN Wallet": "MTN Cüzdan ile Öde", + "Pay by Syriatel Wallet": "Syriatel Cüzdan ile Öde", + "Customer not found": "Müşteri bulunamadı", + "Wallet is blocked": "Cüzdan bloke edildi", + "Customer phone is not active": "Müşteri telefonu aktif değil", + "Balance not enough": "Bakiye yetersiz", + "Balance limit exceeded": "Bakiye limiti aşıldı", + "Incorrect sms code": "⚠️ Hatalı SMS kodu. Lütfen tekrar deneyin.", + "contacts. Others were hidden because they don't have a phone number.": + "kişi. Diğerleri numarası olmadığı için gizlendi.", + "No contacts found": "Kişi bulunamadı", + "No contacts with phone numbers were found on your device.": + "Cihazınızda telefon numarası olan kişi bulunamadı.", + "Permission denied": "İzin reddedildi", + "Contact permission is required to pick contacts": + "Kişileri seçmek için rehber izni gerekli.", + "An error occurred while picking contacts:": + "Kişi seçilirken hata oluştu:", + "Please enter a correct phone": "Lütfen geçerli bir telefon girin", + "Success": "Başarılı", + "Invite sent successfully": "Davet başarıyla gönderildi", + "Hello! I'm inviting you to try Intaleq.": + "Merhaba! Seni Intaleq'i denemeye davet ediyorum.", + "Use my invitation code to get a special gift on your first ride!": + "İlk yolculuğunda özel hediye için davet kodumu kullan!", + "Your personal invitation code is:": "Kişisel davet kodun:", + "Be sure to use it quickly! This code expires at": + "Hızlı kullan! Kodun son kullanma tarihi:", + "Download the app now:": "Uygulamayı hemen indir:", + "See you on the road!": "Yollarda görüşmek üzere!", + "This phone number has already been invited.": + "Bu numara zaten davet edilmiş.", + "An unexpected error occurred. Please try again.": + "Beklenmedik bir hata oluştu. Lütfen tekrar deneyin.", + "You deserve the gift": "Hediyeyi hak ettiniz", + "Claim your 20 LE gift for inviting": "Davet için 20 TL hediyeni al", + "You have got a gift for invitation": "Davet için hediye kazandınız", + "You have earned 20": "20 kazandınız", + "LE": "TL", + "Vibration feedback for all buttons": + "Tüm butonlar için titreşim geri bildirimi", + "Share with friends and earn rewards": + "Arkadaşlarınla paylaş ve ödül kazan", + "Gift Already Claimed": "Hediye Zaten Alındı", + "You have already received your gift for inviting": + "Davet hediyenizi zaten aldınız", + "Keep it up!": "Böyle devam et!", + "has completed": "tamamladı", + "trips": "yolculuk", + "Personal Information": "Kişisel Bilgiler", + "Name": "Ad", + "Not set": "Ayarlanmadı", + "Gender": "Cinsiyet", + "Education": "Eğitim", + "Work & Contact": "İş & İletişim", + "Employment Type": "İstihdam Türü", + "Marital Status": "Medeni Durum", + "SOS Phone": "Acil Durum Telefonu", + "Sign Out": "Çıkış Yap", + "Delete My Account": "Hesabımı Sil", + "Update Gender": "Cinsiyeti Güncelle", + "Update": "Güncelle", + "Update Education": "Eğitimi Güncelle", + "Are you sure? This action cannot be undone.": + "Emin misiniz? Bu işlem geri alınamaz.", + "Confirm your Email": "E-postanızı Onaylayın", + "Type your Email": "E-postanızı Yazın", + "Delete Permanently": "Kalıcı Olarak Sil", + "Male": "Erkek", + "Female": "Kadın", + "Other": "Diğer", + "High School Diploma": "Lise Diploması", + "Associate Degree": "Önlisans", + "Bachelor's Degree": "Lisans", + "Master's Degree": "Yüksek Lisans", + "Doctoral Degree": "Doktora", + "Select your preferred language for the app interface.": + "Uygulama arayüzü için dil seçin.", + "Language Options": "Dil Seçenekleri", + "You can claim your gift once they complete 2 trips.": + "Onlar 2 yolculuk tamamlayınca hediyeni alabilirsin.", + "Closest & Cheapest": "En Yakın & En Ucuz", + "Comfort choice": "Konfor seçimi", + "Travel in a modern, silent electric car. A premium, eco-friendly choice for a smooth ride.": + "Modern, sessiz elektrikli araçla seyahat edin. Pürüzsüz bir yolculuk için premium, çevre dostu seçim.", + "Spacious van service ideal for families and groups. Comfortable, safe, and cost-effective travel together.": + "Aileler ve gruplar için ideal geniş araç hizmeti. Rahat, güvenli ve ekonomik.", + "Quiet & Eco-Friendly": "Sessiz & Çevre Dostu", + "Lady Captain for girls": "Kadınlar için Kadın Sürücü", + "Van for familly": "Aile için Geniş Araç", "Are you sure to delete this location?": - "Bu konumu silmek istediğinizden emin misiniz?", - "deleted": "Silindi", - "To Work": "İşe", - "Work Saved": "İş Kaydedildi", - "To Home": "Eve", - "Home Saved": "Ev Kaydedildi", - "Destination selected": "Hedef seçildi", - "Now select start pick": "Şimdi başlangıç seçimini seçin", - "OK": "Tamam", - "Confirm Pick-up Location": "Teslim Alma Konumunu Onayla", - "Set Location on Map": "Haritada Konum Ayarla", - "Nearest Car: ~": "En Yakın Araba: ~", - "Nearest Car": "En Yakın Araba", - "No cars nearby": "Yakınlarda araba yok", - "Favorite Places": "Favori Yerler", - "No favorite places yet!": "Henüz favori yer yok!", - "from your favorites": "Favorilerinizden", - "Back": "Geri", + "Bu konumu silmek istediğinize emin misiniz?", + "Change Work location?": "İş konumunu değiştir?", + "Change Home location?": "Ev konumunu değiştir?", + "Submit a Complaint": "Şikayet Gönder", + "Submit Complaint": "Şikayeti Gönder", + "No trip history found": "Yolculuk geçmişi bulunamadı", + "Your past trips will appear here.": + "Geçmiş yolculuklarınız burada görünecek.", + "1. Describe Your Issue": "1. Sorununuzu Açıklayın", + "Enter your complaint here...": "Şikayetinizi buraya girin...", + "2. Attach Recorded Audio": "2. Kayıtlı Ses Dosyası Ekle", + "No audio files found.": "Ses dosyası bulunamadı.", + "Confirm Attachment": "Eki Onayla", + "Attach this audio file?": "Bu ses dosyasını ekle?", + "Uploaded": "Yüklendi", + "3. Review Details & Response": "3. Detayları ve Yanıtı İncele", + "Date": "Tarih", + "Today's Promos": "Günün Fırsatları", + "No promos available right now.": "Şu an uygun promosyon yok.", + "Check back later for new offers!": + "Yeni teklifler için sonra tekrar kontrol et!", + "Valid Until:": "Son Geçerlilik:", + "CODE": "KOD", + "Login": "Giriş Yap", "Sign in for a seamless experience": - "Kusursuz bir deneyim için oturum açın", - "Sign In with Google": "Google ile Oturum Aç", + "Kusursuz bir deneyim için giriş yapın", + "Sign In with Google": "Google ile Giriş Yap", "Sign in with Apple": "Apple ile Giriş Yap", - "Need assistance? Contact us": - "Yardıma mı ihtiyacınız var? Bize ulaşın", "User not found": "Kullanıcı bulunamadı", + "Need assistance? Contact us": "Yardım mı lazım? Bize ulaşın", "Email": "E-posta", "Your email address": "E-posta adresiniz", "Enter a valid email": "Geçerli bir e-posta girin", "Password": "Şifre", + "Your password": "Şifreniz", "Enter your password": "Şifrenizi girin", "Submit": "Gönder", "Terms of Use & Privacy Notice": - "Kullanım Koşulları ve Gizlilik Bildirimi", + "Kullanım Şartları & Gizlilik Bildirimi", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the ": + "Aşağıdaki \"Kabul Ediyorum\" seçeneğini seçerek, şunları okuduğumu ve kabul ettiğimi onaylıyorum: ", "Terms of Use": "Kullanım Şartları", + " and acknowledge the ": " ve şunu kabul ediyorum: ", "Privacy Notice": "Gizlilik Bildirimi", + " . I am at least 18 years old.": " . En az 18 yaşındayım.", + "I Agree": "Kabul Ediyorum", + "Continue": "Devam Et", + "Enable Location": "Konumu Etkinleştir", + "To give you the best experience, we need to know where you are. Your location is used to find nearby captains and for pickups.": + "Size en iyi deneyimi sunmak için nerede olduğunuzu bilmemiz gerek. Konumunuz yakın sürücüleri bulmak için kullanılır.", + "Allow Location Access": "Konum Erişimine İzin Ver", + "Welcome to Intaleq!": "Intaleq'e Hoş Geldiniz!", + "Before we start, please review our terms.": + "Başlamadan önce lütfen şartlarımızı inceleyin.", + "Your journey starts here": "Yolculuğunuz burada başlıyor", + "Cancel Search": "Aramayı İptal Et", + "Set pickup location": "Alım noktasını ayarla", + "Move the map to adjust the pin": + "İğneyi ayarlamak için haritayı kaydırın", + "Searching for the nearest captain...": "En yakın kaptan aranıyor...", + "No one accepted? Try increasing the fare.": + "Kimse kabul etmedi mi? Ücreti artırmayı deneyin.", + "Increase Your Trip Fee (Optional)": + "Yolculuk Ücretini Artır (İsteğe Bağlı)", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "Henüz sürücü bulunamadı. Teklifinizi daha cazip hale getirmek için ücreti artırmayı düşünün.", + "No, thanks": "Hayır, teşekkürler", + "Increase Fee": "Ücreti Artır", + "Copy": "Kopyala", + "Promo Copied!": "Promosyon Kopyalandı!", + "Code": "Kod", + "copied to clipboard": "panoya kopyalandı", + "Price": "Fiyat", + "Intaleq's Response": "Intaleq'in Yanıtı", + "Awaiting response...": "Yanıt bekleniyor...", + "Audio file not attached": "Ses dosyası eklenmedi", + "The audio file is not uploaded yet.\\nDo you want to submit without it?": + "Ses dosyası henüz yüklenmedi.\\nOnsuz göndermek istiyor musunuz?", + "deleted": "silindi", + "To Work": "İşe", + "Work Saved": "İş Kaydedildi", + "To Home": "Eve", + "Home Saved": "Ev Kaydedildi", + "Destination selected": "Varış noktası seçildi", + "Now select start pick": "Şimdi başlangıç noktasını seç", + "OK": "TAMAM", + "Confirm Pick-up Location": "Alım Konumunu Onayla", + "Set Location on Map": "Konumu Haritada Belirle", + "Leave a detailed comment (Optional)": + "Detaylı yorum bırak (İsteğe Bağlı)", + "Share your experience to help us improve...": + "Gelişmemize yardımcı olmak için deneyimini paylaş...", + "Your valuable feedback helps us improve our service quality.": + "Değerli geri bildiriminiz hizmet kalitemizi artırmaya yardımcı olur.", + "witout zero": "sıfır olmadan", + "Top up Balance": "Bakiye Yükle", + "An error occurred": "Bir hata oluştu", + "Send WhatsApp Message": "WhatsApp Mesajı Gönder", + "How was your trip with": "Yolculuğun nasıldı:", + "Drawing route on map...": "Rota haritaya çiziliyor...", + "Please wait while we prepare your trip.": + "Lütfen yolculuğunuz hazırlanırken bekleyin.", + "Submit Rating": "Puanı Gönder", + "Call Support": "Desteği Ara", + "You can contact us during working hours from 10:00 - 16:00.": + "Çalışma saatleri (10:00 - 16:00) içinde bize ulaşabilirsiniz.", + "Intaleq is the safest and most reliable ride-sharing app designed especially for passengers in Syria. We provide a comfortable, respectful, and affordable riding experience with features that prioritize your safety and convenience. Our trusted captains are verified, insured, and supported by regular car maintenance carried out by top engineers. We also offer on-road support services to make sure every trip is smooth and worry-free. With Intaleq, you enjoy quality, safety, and peace of mind—every time you ride.": + "Intaleq, Türkiye'deki yolcular için tasarlanmış en güvenli ve güvenilir araç paylaşım uygulamasıdır. Güvenliğinizi ve rahatlığınızı ön planda tutarak konforlu, saygılı ve uygun fiyatlı bir yolculuk deneyimi sunuyoruz. Güvenilir kaptanlarımız doğrulanmış, sigortalıdır. Intaleq ile her yolculukta kalitenin ve güvenin tadını çıkarın.", + "Work time is from 10:00 AM to 16:00 PM.\nYou can send a WhatsApp message or email.": + "Çalışma saatleri 10:00 - 16:00 arasıdır.\nWhatsApp mesajı veya e-posta gönderebilirsiniz.", + "Sorry": "Üzgünüz", + "Customer MSISDN doesn’t have customer wallet": + "Müşteri numarasının cüzdanı yok", + "Please enter the number without the leading 0": + "Lütfen numarayı başında 0 olmadan girin", + "Please enter your phone number": "Lütfen telefon numaranızı girin", + "Phone number seems too short": "Telefon numarası çok kısa görünüyor", + "No cars are available at the moment. Please try again later.": + "Şu anda müsait araç yok. Lütfen daha sonra tekrar deneyin.", + "Nearest Car: ~": "En Yakın Araç: ~", + "Nearest Car": "En Yakın Araç", + "No cars nearby": "Yakında araç yok", + "Favorite Places": "Favori Yerler", + "No favorite places yet!": "Henüz favori yer yok!", + "from your favorites": "favorilerinizden", + "Back": "Geri", + "Enter your code below to apply the discount.": + "İndirimi uygulamak için kodu aşağıya girin.", "By selecting \"I Agree\" below, I confirm that I have read and agree to the": - "Aşağıdaki \"Kabul Ediyorum\" seçeneğini işaretleyerek okuduğumu ve kabul ettiğimi onaylıyorum.", - "and acknowledge the": "ve şunu onaylıyorum", - ". I am at least 18 years old.": ". En az 18 yaşındayım.", - "Continue": "Devam", + "Aşağıda \"Kabul Ediyorum\"u seçerek, şunları okuduğumu ve kabul ettiğimi onaylıyorum:", + "and acknowledge the": "ve şunu kabul ediyorum:", "Enable Location Access": "Konum Erişimini Etkinleştir", "We need your location to find nearby drivers for pickups and drop-offs.": - "Teslim alma ve bırakma için yakındaki sürücüleri bulmak için konumunuza ihtiyacımız var.", - "Allow Location Access": "Konum Erişimine İzin Ver", + "Alım ve bırakma işlemleri için yakındaki sürücüleri bulmak adına konumunuza ihtiyacımız var.", "You should restart app to change language": "Dili değiştirmek için uygulamayı yeniden başlatmalısınız", "Home Page": "Ana Sayfa", "To change Language the App": "Uygulama Dilini Değiştirmek İçin", "Learn more about our app and mission": "Uygulamamız ve misyonumuz hakkında daha fazla bilgi edinin", - "Promos For Today": "Bugünün Promosyonları", - "Choose your ride": "Yolculuğunuzu seçin", - "Your Journey Begins Here": "Yolculuğunuz Burada Başlıyor", + "Promos For Today": "Bugünün Fırsatları", + "Choose your ride": "Yolculuğunu seç", + "Your Journey Begins Here": "Yolculuğun Burada Başlıyor", "Bonus gift": "Bonus hediye", "Pay": "Öde", "Get": "Al", "Send to Driver Again": "Sürücüye Tekrar Gönder", "Driver Name:": "Sürücü Adı:", "No trip data available": "Yolculuk verisi yok", - "Car Plate:": "Araba Plakası:", + "Car Plate:": "Plaka:", "remaining": "kalan", "Order Cancelled": "Sipariş İptal Edildi", "You canceled VIP trip": "VIP yolculuğu iptal ettiniz", "Passenger cancelled order": "Yolcu siparişi iptal etti", "Your trip is scheduled": "Yolculuğunuz planlandı", - "Don't forget your ride!": "Yolculuğunuzu unutmayın!", + "Don't forget your ride!": "Yolculuğunu unutma!", "Trip updated successfully": "Yolculuk başarıyla güncellendi", - "Car Make:": "Araba Markası:", - "Car Model:": "Araba Modeli:", - "Car Color:": "Araba Rengi:", - "Driver Phone:": "Sürücü Telefonu:", - "Pre-booking": "Ön rezervasyon", + "Car Make:": "Marka:", + "Car Model:": "Model:", + "Car Color:": "Renk:", + "Driver Phone:": "Sürücü Tel:", + "Pre-booking": "Ön Rezervasyon", "Waiting VIP": "VIP Bekleniyor", "Driver List": "Sürücü Listesi", "Confirm Trip": "Yolculuğu Onayla", - "Select date and time of trip": "Yolculuk tarihini ve saatini seçin", + "Select date and time of trip": "Yolculuk tarihini ve saatini seç", "Date and Time Picker": "Tarih ve Saat Seçici", "Trip Status:": "Yolculuk Durumu:", - "pending": "beklemede", + "pending": "bekliyor", "accepted": "kabul edildi", "rejected": "reddedildi", "Apply": "Uygula", - "Enter your promo code": "Promosyon kodunuzu girin", + "Enter your promo code": "Promosyon kodunu gir", "Apply Promo Code": "Promosyon Kodunu Uygula", - "Scheduled Time:": "Planlanan Saat:", - "No drivers available": "Mevcut sürücü yok", + "Scheduled Time:": "Planlanan Zaman:", + "No drivers available": "Sürücü yok", "No drivers available at the moment. Please try again later.": - "Şu anda mevcut sürücü yok. Lütfen daha sonra tekrar deneyin.", - "you have a negative balance of": "Şurada negatif bir bakiyeniz var:", + "Şu anda müsait sürücü yok. Lütfen daha sonra tekrar deneyin.", + "you have a negative balance of": "negatif bakiyeniz var:", "Please try again in a few moments": - "Lütfen birkaç dakika sonra tekrar deneyin", + "Lütfen birkaç dakika içinde tekrar deneyin", "Unknown Driver": "Bilinmeyen Sürücü", - "in your": "Şurada", + "in your": "cüzdanınızda", "The driver accepted your order for": - "Sürücü siparişinizi şu fiyata kabul etti:", + "Sürücü siparişinizi şu tutara kabul etti:", "wallet due to a previous trip.": - "önceki bir yolculuktan dolayı cüzdanda.", + "önceki yolculuk nedeniyle cüzdandan.", "rides": "yolculuklar", "Add Work": "İş Ekle", - "The reason is": "Nedeni şudur", + "The reason is": "Sebep:", "User does not have a wallet #1652": "Kullanıcının cüzdanı yok #1652", "Price of trip": "Yolculuk ücreti", - "From:": "Kimden:", + "From:": "Nereden:", "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "Intaleq ve Teslimat yolculukları için fiyat dinamik olarak hesaplanır. Konfor yolculukları için fiyat, zamana ve mesafeye göre belirlenir", + "Intaleq ve Teslimat yolculukları için fiyat dinamik hesaplanır. Konfor yolculukları için fiyat zaman ve mesafeye dayalıdır.", "Phone Wallet Saved Successfully": "Telefon Cüzdanı Başarıyla Kaydedildi", "Add wallet phone you use": "Kullandığınız cüzdan telefonunu ekleyin", "Update Available": "Güncelleme Mevcut", "Phone number must be exactly 11 digits long": - "Telefon numarası tam olarak 11 haneli olmalıdır", + "Telefon numarası tam 11 haneli olmalıdır", "Insert Wallet phone number": "Cüzdan telefon numarasını girin", "Phone number isn't an Egyptian phone number": - "Telefon numarası Mısır telefon numarası değil", + "Telefon numarası Türkiye numarası değil", "A new version of the app is available. Please update to the latest version.": - "Uygulamanın yeni bir sürümü mevcut. Lütfen en son sürüme güncelleyin.", + "Uygulamanın yeni bir sürümü mevcut. Lütfen güncelleyin.", "We use location to get accurate and nearest passengers for you": - "Sizin için doğru ve en yakın yolcuları almak için konumu kullanıyoruz", + "Size en yakın ve doğru yolcuları bulmak için konumu kullanıyoruz", "This ride is already applied by another driver.": - "Bu yolculuk zaten başka bir sürücü tarafından uygulandı.", + "Bu yolculuk başka bir sürücü tarafından alınmış.", "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": - "Size en yakın uygun sürücüyü bulmak ve doğru teslim alma ve bırakma bilgileri sağlamak için kesin konumunuzu kullanıyoruz. Bunu Ayarlar'dan yönetebilirsiniz.", + "En yakın sürücüyü bulmak ve doğru konum bilgisi sağlamak için hassas konumunuzu kullanıyoruz. Ayarlardan yönetebilirsiniz.", "Where are you, sir?": "Neredesiniz efendim?", "I've been trying to reach you but your phone is off.": "Size ulaşmaya çalışıyorum ama telefonunuz kapalı.", - "Please don't be late": "Lütfen geç kalmayın", + "Please don't be late": "Lütfen gecikmeyin", "Please don't be late, I'm waiting for you at the specified location.": - "Lütfen geç kalmayın, belirtilen konumda sizi bekliyorum.", + "Lütfen gecikmeyin, belirtilen konumda sizi bekliyorum.", "My location is correct. You can search for me using the navigation app": - "Konumum doğru. Navigasyon uygulamasını kullanarak beni arayabilirsiniz", + "Konumum doğru. Navigasyon uygulamasıyla beni arayabilirsiniz.", "Hello, I'm at the agreed-upon location": - "Merhaba, kararlaştırılan konumdayım", - "How much longer will you be?": "Daha ne kadar sürer?", + "Merhaba, anlaşılan konumdayım", + "How much longer will you be?": "Ne kadar sürer?", "Phone number is verified before": - "Telefon numarası daha önce doğrulandı", + "Telefon numarası daha önce doğrulanmış", "Change Ride": "Yolculuğu Değiştir", "You can change the destination by long-pressing any point on the map": - "Haritadaki herhangi bir noktaya uzun basarak hedefi değiştirebilirsiniz", - "Pick from map destination": "Hedefi haritadan seçin", + "Haritada herhangi bir noktaya uzun basarak varış yerini değiştirebilirsiniz", + "Pick from map destination": "Haritadan varış yeri seç", "Pick or Tap to confirm": "Seç veya Onaylamak için Dokun", - "Accepted your order": "Siparişiniz kabul edildi", + "Accepted your order": "Siparişinizi kabul etti", "Order Accepted": "Sipariş Kabul Edildi", - "with type": "türüyle", - "accepted your order at price": "siparişinizi şu fiyata kabul etti", - "you canceled order": "Siparişi iptal ettiniz", + "with type": "türü ile", + "accepted your order at price": + "siparişinizi şu fiyattan kabul etti:", + "you canceled order": "siparişi iptal ettiniz", "If you want order to another person": "Başka birine sipariş vermek isterseniz", "upgrade price": "fiyatı yükselt", - "Please enter a correct phone": "Lütfen doğru bir telefon girin", - "airport": "havaalanı", + "airport": "havalimanı", "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": - "Esnek bir güzergahı ve durak noktaları olan konforlu bir araba için en iyi seçim. Bu havalimanı, bu fiyata vize girişi sunmaktadır.", + "Esnek rota ve durak noktaları ile konforlu bir araç için en iyi seçim.", "You can upgrade price to may driver accept your order": - "Sürücünün siparişinizi kabul etmesi için fiyatı yükseltebilirsiniz", + "Sürücünün kabul etmesi için fiyatı yükseltebilirsiniz", "Change Route": "Rotayı Değiştir", "No Captain Accepted Your Order": "Hiçbir Kaptan Siparişinizi Kabul Etmedi", "We are looking for a captain but the price may increase to let a captain accept": - "Bir kaptan arıyoruz ancak bir kaptanın kabul etmesi için fiyat artabilir", + "Kaptan arıyoruz ancak kabul edilmesi için fiyat artabilir", "No, I want to cancel this trip": "Hayır, bu yolculuğu iptal etmek istiyorum", "Attention": "Dikkat", "Trip Cancelled. The cost of the trip will be deducted from your wallet.": - "Yolculuk İptal Edildi. Yolculuk maliyeti cüzdanınızdan düşülecektir.", + "Yolculuk İptal Edildi. Yolculuk ücreti cüzdanınızdan düşülecektir.", "You will be charged for the cost of the driver coming to your location.": - "Sürücünün konumunuza gelme maliyeti size yansıtılacaktır.", - "reject your order.": "siparişinizi reddet.", - "Order Under Review": "Sipariş İncelemede", + "Sürücünün konumunuza gelme maliyeti tahsil edilecektir.", + "reject your order.": "siparişinizi reddetti.", + "Order Under Review": "Sipariş İnceleniyor", "is reviewing your order. They may need more information or a higher price.": - "siparişinizi inceliyor. Daha fazla bilgiye veya daha yüksek bir fiyata ihtiyaç duyabilirler.", - "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": - "Henüz herhangi bir sürücü bulamadık. Teklifinizi sürücüler için daha çekici hale getirmek için yolculuk ücretinizi artırmayı düşünün.", - "Increase Your Trip Fee (Optional)": - "Yolculuk Ücretinizi Artırın (İsteğe Bağlı)", + "siparişinizi inceliyor. Daha fazla bilgi veya yüksek fiyat gerekebilir.", "Vibration": "Titreşim", "Resend code": "Kodu tekrar gönder", - "change device": "cihazı değiştir", + "change device": "cihaz değiştir", "Device Change Detected": "Cihaz Değişikliği Algılandı", "You can only use one device at a time. This device will now be set as your active device.": - "Aynı anda yalnızca bir cihaz kullanabilirsiniz. Bu cihaz şimdi etkin cihazınız olarak ayarlanacaktır.", - "Click here point": "Buraya tıklayın", - "Are you want to change": "Değiştirmek ister misin?", + "Aynı anda sadece bir cihaz kullanabilirsiniz. Bu cihaz şimdi aktif cihazınız olarak ayarlanacak.", + "Click here point": "Buraya tıkla", + "Are you want to change": "Değiştirmek istiyor musunuz?", "by": "tarafından", "Enter your complaint here": "Şikayetinizi buraya girin", "Please enter your complaint.": "Lütfen şikayetinizi girin.", "Complaint data saved successfully": - "Şikayet verileri başarıyla kaydedildi", - "Trip Monitor": "Yolculuk Monitörü", - "Insert SOS Phone": "SOS Telefonu Ekle", - "Add SOS Phone": "SOS Telefonu Ekle", - "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": - "Sevgili,\n\n🚀 Heyecan verici bir yolculuğa başladım ve yolculuğumun ayrıntılarını ve şu anki konumumu sizinle gerçek zamanlı olarak paylaşmak istiyorum! Lütfen Intaleq uygulamasını indirin. Yolculuk ayrıntılarımı ve son konumumu görüntülemenize olanak sağlayacaktır.\n\n👉 İndirme bağlantısı:\nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nMaceram sırasında sizi yakın tutmayı dört gözle bekliyorum!\n\nIntaleq,", + "Şikayet verisi başarıyla kaydedildi", + "Trip Monitor": "Yolculuk İzleme", + "Insert SOS Phone": "Acil Durum Telefonu Gir", + "Add SOS Phone": "Acil Durum Telefonu Ekle", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "Sevgili ,\n\n🚀 Heyecanlı bir yolculuğa başladım ve detayları ile anlık konumumu seninle paylaşmak istiyorum! Lütfen Intaleq uygulamasını indir. Böylece yolculuk detaylarımı ve son konumumu görebilirsin.\n\n👉 İndirme linki: \nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nMaceram boyunca seni yakınımda hissetmek istiyorum!\n\nIntaleq ,", "Send Intaleq app to him": "Ona Intaleq uygulamasını gönder", "No passenger found for the given phone number": - "Verilen telefon numarası için yolcu bulunamadı", + "Verilen numara için yolcu bulunamadı", "No user found for the given phone number": - "Verilen telefon numarası için kullanıcı bulunamadı", - "This price is": "Bu fiyat", + "Verilen numara için kullanıcı bulunamadı", + "This price is": "Bu fiyat:", "Work": "İş", "Add Home": "Ev Ekle", "Notifications": "Bildirimler", - "💳 Pay with Credit Card": "Kredi Kartıyla Öde 💳", - "⚠️ You need to choose an amount!": - "⚠️ Bir miktar seçmeniz gerekiyor!", - "💰 Pay with Wallet": "Cüzdanla Öde", + "💳 Pay with Credit Card": "💳 Kredi Kartı ile Öde", + "⚠️ You need to choose an amount!": "⚠️ Bir tutar seçmelisiniz!", + "💰 Pay with Wallet": "💰 Cüzdan ile Öde", "You must restart the app to change the language.": "Dili değiştirmek için uygulamayı yeniden başlatmalısınız.", "joined": "katıldı", "Driver joined the channel": "Sürücü kanala katıldı", "Driver left the channel": "Sürücü kanaldan ayrıldı", - "Call Page": "Çağrı Sayfası", - "Call Left": "Kalan Çağrı", - r"$ Next as Cash $!": " Nakit olarak sonraki !", - "To use Wallet charge it": "Cüzdanı kullanmak için şarj edin", + "Call Page": "Arama Sayfası", + "Call Left": "Kalan Arama", + " Next as Cash !": " Sonraki Nakit!", + "To use Wallet charge it": "Cüzdanı kullanmak için yükleme yapın", "We are searching for the nearest driver to you": "Size en yakın sürücüyü arıyoruz", "Best choice for cities": "Şehirler için en iyi seçim", "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": - "Rayeh Gai: Şehirler arasında kolay ve güvenilir seyahat için gidiş-dönüş hizmeti.", - "Rayeh Gai": "Rayeh Gai", - "This trip is for women only": "Bu yolculuk sadece kadınlar için", - "Total budgets on month": "Aylık toplam bütçeler", + "Gidiş-Dönüş: Şehirler arası rahat seyahat için kolay ve güvenilir hizmet.", + "This trip is for women only": "Bu yolculuk sadece kadınlar içindir", + "Total budgets on month": "Aylık toplam bütçe", "You have call from driver": "Sürücüden aramanız var", - "Comfort": "Konfor", "Intaleq": "Intaleq", + "passenger agreement": "yolcu sözleşmesi", + "To become a passenger, you must review and agree to the ": + "Yolcu olmak için şunları inceleyip kabul etmelisiniz: ", + "agreement subtitle": + "Devam etmek için Kullanım Şartları ve Gizlilik Politikasını kabul etmelisiniz.", + "terms of use": "kullanım şartları", + " and acknowledge our Privacy Policy.": + " ve Gizlilik Politikamızı kabul edin.", + "and acknowledge our": "ve şunu kabul edin:", + "privacy policy": "gizlilik politikası.", + "i agree": "kabul ediyorum", "Driver already has 2 trips within the specified period.": - "Sürücünün belirtilen süre içinde zaten 2 yolculuğu var.", + "Sürücünün belirtilen sürede zaten 2 yolculuğu var.", "The invitation was sent successfully": "Davet başarıyla gönderildi", - "Lady": "Bayan", "You should select your country": "Ülkenizi seçmelisiniz", "Scooter": "Scooter", "A trip with a prior reservation, allowing you to choose the best captains and cars.": - "Önceden rezervasyonlu bir yolculuk, en iyi kaptanları ve arabaları seçmenizi sağlar.", + "Ön rezervasyonlu yolculuk, en iyi kaptanları ve araçları seçmenize olanak tanır.", "Mishwar Vip": "Mishwar VIP", "The driver waiting you in picked location .": "Sürücü sizi seçilen konumda bekliyor.", "About Us": "Hakkımızda", "You can change the vibration feedback for all buttons": - "Tüm düğmelerin titreşim geri bildirimini değiştirebilirsiniz", + "Tüm butonlar için titreşimi değiştirebilirsiniz", "Most Secure Methods": "En Güvenli Yöntemler", - "In-App VOIP Calls": "Uygulama İçi VOIP Aramaları", - "Recorded Trips for Safety": - "Güvenlik için Kayıt Edilmiş Yolculuklar", + "In-App VOIP Calls": "Uygulama İçi VOIP Aramalar", + "Recorded Trips for Safety": "Güvenlik İçin Kaydedilen Yolculuklar", "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": - "\nAyrıca, yolculuklarınızı erişilebilir hale getirmek için rekabetçi fiyatlar sunarak uygun fiyatı ön planda tutuyoruz.", + "\nAyrıca uygun fiyat önceliğimizdir, rekabetçi fiyatlarla yolculuğu erişilebilir kılıyoruz.", "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": - "Intaleq, güvenliğiniz ve uygun fiyatlılığınız düşünülerek tasarlanmış bir yolculuk paylaşım uygulamasıdır. Bölgenizdeki güvenilir sürücülerle sizi buluşturarak kullanışlı ve stressiz bir seyahat deneyimi sağlıyoruz.\n\nİşte bizi diğerlerinden ayıran temel özelliklerden bazıları:", + "Intaleq, güvenliğiniz ve bütçeniz düşünülerek tasarlanmış bir araç paylaşım uygulamasıdır. Sizi bölgenizdeki güvenilir sürücülerle buluşturuyoruz.", "Sign In by Apple": "Apple ile Giriş Yap", "Sign In by Google": "Google ile Giriş Yap", - "How do I request a ride?": "Nasıl yolculuk talep ederim?", + "How do I request a ride?": "Nasıl yolculuk isterim?", "Step-by-step instructions on how to request a ride through the Intaleq app.": - "Intaleq uygulaması aracılığıyla nasıl yolculuk talep edeceğinize dair adım adım talimatlar.", - "What types of vehicles are available?": "Hangi tür araçlar mevcut?", + "Intaleq uygulaması üzerinden yolculuk isteme adımları.", + "What types of vehicles are available?": "Hangi araç türleri mevcut?", "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": - "Intaleq, ekonomi, konfor ve lüks dahil olmak üzere ihtiyaçlarınıza uygun çeşitli araç seçenekleri sunar. Bütçenize ve yolcu sayınıza en uygun seçeneği seçin.", - "How can I pay for my ride?": - "Yolculuğum için nasıl ödeme yapabilirim?", + "Intaleq ihtiyaçlarınıza uygun ekonomi, konfor ve lüks dahil çeşitli araç seçenekleri sunar.", + "How can I pay for my ride?": "Yolculuğumu nasıl öderim?", "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": - "Intaleq, kolaylık sağlamak için birden fazla ödeme yöntemi sunar. Yolculuk onayı sırasında nakit ödeme veya kredi/banka kartı ödemesi arasında seçim yapın.", + "Intaleq nakit veya kredi/banka kartı ile ödeme seçenekleri sunar.", "Can I cancel my ride?": "Yolculuğumu iptal edebilir miyim?", - "Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.": - "Evet, yolculuğunuzu belirli koşullar altında iptal edebilirsiniz (örneğin, sürücü atanmadan önce). Ayrıntılar için Intaleq iptal politikasına bakın.", - "Driver Registration & Requirements": - "Sürücü Kaydı ve Gereksinimleri", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "Evet, iptal edebilirsiniz ancak iptal zamanlamasına göre ücret uygulanabilir.", + "Driver Registration & Requirements": "Sürücü Kaydı & Gereksinimler", "How can I register as a driver?": - "Nasıl sürücü olarak kaydolabilirim?", + "Sürücü olarak nasıl kayıt olurum?", "What are the requirements to become a driver?": - "Sürücü olmak için gerekenler nelerdir?", + "Sürücü olma şartları nelerdir?", "Visit our website or contact Intaleq support for information on driver registration and requirements.": - "Sürücü kaydı ve gereksinimleri hakkında bilgi için web sitemizi ziyaret edin veya Intaleq desteğiyle iletişime geçin.", + "Bilgi için web sitemizi ziyaret edin veya destek ile iletişime geçin.", "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": - "Intaleq, yolculuğunuz sırasında sürücünüzle veya yolcunuzla iletişim kurmanızı sağlamak için uygulama içi sohbet işlevselliği sağlar.", - "What safety measures does Intaleq offer?": - "Intaleq hangi güvenlik önlemlerini sunuyor?", + "Intaleq, yolculuk sırasında iletişim kurmanız için uygulama içi sohbet sunar.", "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": - "Intaleq güvenliğinize öncelik verir. Sürücü doğrulaması, uygulama içi yolculuk takibi ve acil durum irtibat seçenekleri gibi özellikler sunuyoruz.", + "Intaleq güvenliğinizi önceler. Sürücü doğrulama, takip ve acil durum seçenekleri sunar.", "Frequently Questions": "Sıkça Sorulan Sorular", "User does not exist.": "Kullanıcı mevcut değil.", "We need your phone number to contact you and to help you.": - "Sizinle iletişim kurmak ve size yardımcı olmak için telefon numaranıza ihtiyacımız var.", - "You will recieve code in sms message": - "Kodu sms mesajında alacaksınız", + "Size ulaşmak ve yardım etmek için numaranıza ihtiyacımız var.", + "You will recieve code in sms message": "Kodu SMS ile alacaksınız", "Please enter": "Lütfen girin", "We need your phone number to contact you and to help you receive orders.": - "Sizinle iletişim kurmak ve sipariş almanıza yardımcı olmak için telefon numaranıza ihtiyacımız var.", - "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": - "Sabıka kaydınızdaki tam ad, ehliyetinizdeki adla eşleşmiyor. Lütfen doğrulayın ve doğru belgeleri sağlayın.", - "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": - "Ehliyetinizdeki ulusal numara, kimlik belgenizdeki numarayla eşleşmiyor. Lütfen doğrulayın ve doğru belgeleri sağlayın.", + "Sipariş alabilmeniz ve iletişim için numaranıza ihtiyacımız var.", + "The full name on your criminal record does not match the one on your driver's license. Please verify and provide the correct documents.": + "Adli sicil kaydındaki isim ehliyetinizle eşleşmiyor. Lütfen doğrulayın.", + "The national number on your driver's license does not match the one on your ID document. Please verify and provide the correct documents.": + "Ehliyetinizdeki T.C. kimlik no kimliğinizle eşleşmiyor.", "Capture an Image of Your Criminal Record": - "Sabıka Kaydınızın Bir Resmini Çekin", + "Adli Sicil Kaydınızın Fotoğrafını Çekin", "IssueDate": "Veriliş Tarihi", - "Capture an Image of Your car license front ": - "Araç Ruhsatınızın Ön Yüzünün Bir Resmini Çekin", + "Capture an Image of Your car license front": + "Ruhsatınızın Ön Yüzünün Fotoğrafını Çekin", "Capture an Image of Your ID Document front": - "Kimlik Belgenizin Ön Yüzünün Bir Resmini Çekin", - "NationalID": "Ulusal Kimlik", + "Kimliğinizin Ön Yüzünün Fotoğrafını Çekin", + "NationalID": "T.C. Kimlik No", "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": - "Intaleq Uygulamasını arkadaşlarınızla paylaşabilir ve kodunuzu kullanarak yaptıkları yolculuklar için ödüller kazanabilirsiniz.", + "Uygulamayı paylaşın ve kodunuzla yapılan yolculuklardan ödül kazanın.", "FullName": "Tam Ad", - "No invitation found yet!": "Henüz davetiye bulunamadı!", - "InspectionResult": "İnceleme Sonucu", - "Criminal Record": "Sabıka Kaydı", - "Share App": "Uygulamayı Paylaş", + "No invitation found yet!": "Henüz davet bulunamadı!", + "InspectionResult": "Muayene Sonucu", + "Criminal Record": "Adli Sicil Kaydı", "The email or phone number is already registered.": "E-posta veya telefon numarası zaten kayıtlı.", "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": - "Intaleq uygulamasında araç paylaşım sürücüsü olmak için sürücü belgenizi, kimlik belgenizi ve araç tescil belgenizi yüklemeniz gerekir. Yapay zeka sistemimiz, orijinalliğini anında 2-3 dakika içinde inceleyecek ve doğrulayacaktır. Belgeleriniz onaylanırsa, Intaleq uygulamasında sürücü olarak çalışmaya başlayabilirsiniz. Lütfen sahte belge göndermenin ciddi bir suç olduğunu ve derhal fesih ve yasal sonuçlara yol açabileceğini unutmayın.", - "Documents check": "Belge kontrolü", - "Driver's License": "Sürücü Belgesi", + "Sürücü olmak için ehliyet, kimlik ve ruhsatınızı yüklemelisiniz. Yapay zekamız 2-3 dakikada doğrular. Sahte belge yüklemek yasal sonuçlar doğurur.", + "Documents check": "Belge Kontrolü", + "Driver's License": "Sürücü Belgesi (Ehliyet)", "for your first registration!": "ilk kaydınız için!", - "Get it Now!": "Hemen Alın!", + "Get it Now!": "Hemen Al!", "before": "önce", "Code not approved": "Kod onaylanmadı", - "3000 LE": "3000 Mısır Lirası", + "3000 LE": "3000 TL", "Do you have an invitation code from another driver?": - "Başka bir sürücüden davetiye kodunuz var mı?", - "Paste the code here": "Kodu buraya yapıştırın", + "Başka bir sürücüden davet kodunuz var mı?", + "Paste the code here": "Kodu buraya yapıştır", "No, I don't have a code": "Hayır, kodum yok", "Code approved": "Kod onaylandı", - "Install our app:": "Uygulamamızı yükleyin:", + "Install our app:": "Uygulamamızı yükle:", "Invite another driver and both get a gift after he completes 100 trips!": - "Başka bir sürücüyü davet edin ve her ikisi de 100 sürüş tamamladıktan sonra hediye kazanın!", - "Invite": "Davet et", - "Are you sure?": "Emin misin?", + "Başka bir sürücüyü davet et, 100 yolculuk tamamlayınca ikiniz de kazanın!", + "Invite": "Davet Et", + "Are you sure?": "Emin misiniz?", "This will delete all recorded files from your device.": - "Bu, cihazınızdaki tüm kayıtlı dosyaları silecektir.", - "Select a file": "Bir dosya seçin", - "Select a File": "Bir Dosya Seçin", + "Bu işlem cihazınızdaki tüm kayıtlı dosyaları silecek.", + "Select a file": "Dosya seç", + "Select a File": "Dosya Seç", "Delete": "Sil", - "attach audio of complain": "şikayet sesi ekle", + "attach audio of complain": "şikayet ses kaydını ekle", "Phone Number Check": "Telefon Numarası Kontrolü", - "Drivers received orders": "Sürücüler sipariş aldı", - "No audio files recorded.": "Kayıtlı ses dosyası yok.", + "Drivers received orders": "Sürücüler siparişleri aldı", + "No audio files recorded.": "Ses dosyası kaydedilmedi.", "This is for delivery or a motorcycle.": "Bu teslimat veya motosiklet içindir.", + "Intaleq Reminder": "Intaleq Hatırlatıcı", "It's time to check the Intaleq app!": "Intaleq uygulamasını kontrol etme zamanı!", - "you must insert token code": "jeton kodunu girmelisiniz.", + "you must insert token code": "token kodunu girmelisiniz", "Something went wrong. Please try again.": "Bir şeyler ters gitti. Lütfen tekrar deneyin.", "Trip Details": "Yolculuk Detayları", "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": - "Bağlam herhangi bir şikayet detayı sağlamadığından, bu soruna bir çözüm sağlayamıyorum. Lütfen gerekli bilgileri sağlayın, size yardımcı olmaktan memnuniyet duyarım", + "Şikayet detayı yok, çözüm sunamıyorum. Lütfen bilgi sağlayın.", "Submit Your Complaint": "Şikayetinizi Gönderin", - "Date": "Tarih", - "Price": "Fiyat", "Status": "Durum", - "Choose from contact": "Kişiden seç", - "attach correct audio": "doğru sesi ekleyin", - "be sure": "emin ol", - "Audio uploaded successfully.": "Ses başarıyla yüklendi", + "Choose from contact": "Rehberden seç", + "attach correct audio": "doğru sesi ekle", + "be sure": "emin olun", + "Audio uploaded successfully.": "Ses başarıyla yüklendi.", "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": - "İstedikleri rotayı seçme özgürlüğü ile en son araba modellerini arayan yolcular için mükemmel", + "En yeni model araçlar ve rota özgürlüğü isteyen yolcular için mükemmel", "Share this code with your friends and earn rewards when they use it!": - "Bu kodu arkadaşlarınızla paylaşın ve kullandıklarında ödüller kazanın!", - "Enter phone": "Telefon girin", - "You deserve the gift": "Hediyeyi hak ediyorsun", + "Bu kodu arkadaşlarınla paylaş ve kullandıklarında ödül kazan!", + "Enter phone": "Telefon gir", "complete, you can claim your gift": - "tamamla, hediyeni talep edebilirsin", + "tamamlandı, hediyeni alabilirsin", "When": "Ne zaman", - "Enter driver's phone": "Sürücünün telefonunu girin", - "Send Invite": "Davetiye Gönder", + "Enter driver's phone": "Sürücü telefonunu gir", + "Send Invite": "Davet Gönder", "Show Invitations": "Davetleri Göster", - "License Type": "Lisans Türü", - "National Number": "Ulusal Numara", + "License Type": "Ehliyet Sınıfı", + "National Number": "T.C. Kimlik No", "Name (Arabic)": "Ad (Arapça)", "Name (English)": "Ad (İngilizce)", "Address": "Adres", "Issue Date": "Veriliş Tarihi", - "Expiry Date": "Son Kullanma Tarihi", - "License Categories": "Lisans Kategorileri", - "driver_license": "sürücü belgesi", + "Expiry Date": "Geçerlilik Tarihi", + "License Categories": "Ehliyet Kategorileri", + "driver_license": "ehliyet", "Capture an Image of Your Driver License": - "Sürücü Belgenizin Bir Resmini Çekin", - "ID Documents Back": "Kimlik Belgeleri Arka Yüzü", - "National ID": "Ulusal Kimlik", + "Ehliyetinizin Fotoğrafını Çekin", + "ID Documents Back": "Kimlik Arka Yüzü", + "National ID": "T.C. Kimlik", "Occupation": "Meslek", - "Gender": "Cinsiyet", "Religion": "Din", - "Marital Status": "Medeni Durum", - "Full Name (Marital)": "Tam Ad (Evlilik)", + "Full Name (Marital)": "Tam Ad", "Expiration Date": "Son Kullanma Tarihi", "Capture an Image of Your ID Document Back": - "Kimlik Belgenizin Arka Yüzünün Bir Resmini Çekin", - "ID Documents Front": "Kimlik Belgeleri Ön Yüzü", + "Kimliğinizin Arka Yüzünün Fotoğrafını Çekin", + "ID Documents Front": "Kimlik Ön Yüzü", "First Name": "Ad", - "CardID": "Kart Kimliği", - "Vehicle Details Front": "Araç Detayları ‏Ön Yüzü", - "Plate Number": "Plaka Numarası", - "Owner Name": "Sahip Adı", - "Vehicle Details Back": "Araç Detayları ‏Arka Yüzü", + "CardID": "Kart No", + "Vehicle Details Front": "Araç Detayları Ön", + "Plate Number": "Plaka No", + "Owner Name": "Ruhsat Sahibi", + "Vehicle Details Back": "Araç Detayları Arka", "Make": "Marka", "Model": "Model", "Year": "Yıl", - "Chassis": "Şasi", + "Chassis": "Şasi No", "Color": "Renk", "Displacement": "Motor Hacmi", "Fuel": "Yakıt", "Tax Expiry Date": "Vergi Bitiş Tarihi", "Inspection Date": "Muayene Tarihi", "Capture an Image of Your car license back": - "Araç ruhsatınızın arka yüzünün bir resmini çekin", - "Capture an Image of Your Driver’s License": - "Sürücü belgenizin bir resmini çekin", + "Ruhsatınızın Arka Yüzünün Fotoğrafını Çekin", + "Capture an Image of Your Driver's License": + "Ehliyetinizin Fotoğrafını Çekin", "Sign in with Google for easier email and name entry": - "E-posta ve ad girişi için Google ile oturum açın", + "Daha kolay giriş için Google ile bağlanın", "You will choose allow all the time to be ready receive orders": - "Sipariş almaya hazır olmak için her zaman izin vermeyi seçeceksiniz", - "Welcome to Intaleq!": "Intaleq'e Hoş Geldiniz!", + "Sipariş almak için 'Her zaman izin ver'i seçmelisiniz", "Get to your destination quickly and easily.": - "Hızlı ve kolay bir şekilde hedefinize ulaşın.", + "Hedefinize hızlı ve kolayca ulaşın.", "Enjoy a safe and comfortable ride.": "Güvenli ve konforlu bir yolculuğun tadını çıkarın.", "Choose Language": "Dil Seçin", - "Login": "Giriş Yap", "Pay with Wallet": "Cüzdan ile Öde", "Invalid MPIN": "Geçersiz MPIN", - "Invalid OTP": "Geçersiz OTP", + "Invalid OTP": "Geçersiz Kod", "Enter your email address": "E-posta adresinizi girin", - "Please enter Your Email.": "Lütfen E-postanızı girin.", + "Please enter Your Email.": "Lütfen e-postanızı girin.", "Enter your phone number": "Telefon numaranızı girin", "Please enter your phone number.": "Lütfen telefon numaranızı girin.", - "Please enter Your Password.": "Lütfen Şifrenizi girin.", - "if you dont have account": "eğer hesabınız yoksa", - "Register": "Kaydol", + "Please enter Your Password.": "Lütfen şifrenizi girin.", + "if you dont have account": "hesabınız yoksa", + "Register": "Kayıt Ol", "Accept Ride's Terms & Review Privacy Notice": - "Yolculuk Şartlarını Kabul Edin ve Gizlilik Bildirimini Gözden Geçirin", + "Şartları Kabul Et & Gizliliği İncele", "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": - "Aşağıdaki 'Kabul Ediyorum'u seçerek, Kullanım Koşullarını okuduğumu ve kabul ettiğimi ve Gizlilik Bildirimini onayladığımı onaylarım. En az 18 yaşındayım.", - "I Agree": "Kabul Ediyorum", + "Aşağıdaki 'Kabul Ediyorum' seçeneği ile şartları kabul etmiş ve 18 yaşından büyük olduğumu onaylamış olurum.", "First name": "Ad", "Enter your first name": "Adınızı girin", "Please enter your first name.": "Lütfen adınızı girin.", - "Last name": "Soyadı", + "Last name": "Soyad", "Enter your last name": "Soyadınızı girin", "Please enter your last name.": "Lütfen soyadınızı girin.", "City": "Şehir", "Please enter your City.": "Lütfen Şehrinizi girin.", - "Male": "Erkek", - "Female": "Kadın", "Verify Email": "E-postayı Doğrula", "We sent 5 digit to your Email provided": - "Sağladığınız E-postanıza 5 haneli bir kod gönderdik", + "E-postanıza 5 haneli kod gönderdik", "5 digit": "5 haneli", - "Send Verification Code": "Doğrulama Kodunu Gönder", - "Your Ride Duration is ": "YOLCULUK SÜRENİZ", - "You will be thier in": "ŞURADA OLACAKSINIZ", - "You trip distance is": "YOLCULUK MESAFENİZ", - "Fee is": "ÜCRET", - "From : ": "DEN:", - "To : ": "İÇİN:", - "Add Promo": "PROMOSYON EKLE", - "Confirm Selection": "SEÇİMİ ONAYLA", - "distance is": "MESAFE", - "Intaleq LLC": "Intaleq LLC", - "Egypt's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": - "Intaleq, Mısır'ın öncü araç paylaşım hizmeti, gururla Arap ve yerel sahipleri tarafından geliştirildi. Hem değerli yolcularımıza hem de özverili kaptanlarımıza yakın olmaya öncelik veriyoruz.", - "Why Choose Intaleq?": "Neden Intaleq'i Seçmelisiniz?", + "Send Verification Code": "Doğrulama Kodu Gönder", + "Your Ride Duration is ": "Yolculuk Süreniz: ", + "You will be thier in": "Şu sürede orada olacaksınız:", + "You trip distance is": "Yolculuk mesafesi:", + "Fee is": "Ücret:", + "From : ": "Nereden: ", + "To : ": "Nereye: ", + "Add Promo": "Promosyon Ekle", + "Confirm Selection": "Seçimi Onayla", + "distance is": "mesafe:", + "Privacy Policy": "Gizlilik Politikası", + "Intaleq LLC": "Intaleq Ltd. Şti.", + "Syria's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "Türkiye'nin öncü araç paylaşım hizmeti.", + "Intaleq is the first ride-sharing app in Syria, designed to connect you with the nearest drivers for a quick and convenient travel experience.": + "Intaleq, sizi en yakın sürücülerle buluşturan ilk uygulamadır.", + "Why Choose Intaleq?": "Neden Intaleq?", "Closest to You": "Size En Yakın", "We connect you with the nearest drivers for faster pickups and quicker journeys.": - "Daha hızlı teslim alma ve daha hızlı yolculuklar için sizi en yakın sürücülerle buluşturuyoruz.", + "Daha hızlı alım ve yolculuk için sizi en yakın sürücülere bağlıyoruz.", "Uncompromising Security": "Tavizsiz Güvenlik", "Lady Captains Available": "Kadın Kaptanlar Mevcut", "Recorded Trips (Voice & AI Analysis)": - "Kayıt Edilmiş Yolculuklar (Ses ve AI Analizi)", + "Kaydedilen Yolculuklar (Ses & YZ Analizi)", "Fastest Complaint Response": "En Hızlı Şikayet Yanıtı", "Our dedicated customer service team ensures swift resolution of any issues.": - "Özel müşteri hizmetleri ekibimiz, herhangi bir sorunun hızlı bir şekilde çözülmesini sağlar.", + "Müşteri hizmetleri ekibimiz sorunları hızla çözer.", "Affordable for Everyone": "Herkes İçin Uygun Fiyatlı", "Frequently Asked Questions": "Sıkça Sorulan Sorular", - "Getting Started": "Başlamak", + "Getting Started": "Başlarken", "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": - "Sadece Intaleq uygulamasını açın, hedefinizi girin ve \"Yolculuk İste\"ye dokunun. Uygulama sizi yakındaki bir sürücüye bağlayacaktır.", + "Uygulamayı açın, hedefi girin ve \"Yolculuk İste\"ye dokunun.", "Vehicle Options": "Araç Seçenekleri", "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": - "Intaleq, ihtiyaçlarınıza ve bütçenize uygun Ekonomi, Konfor ve Lüks dahil olmak üzere çeşitli seçenekler sunar.", + "Intaleq; Ekonomi, Konfor ve Lüks gibi çeşitli seçenekler sunar.", "Payments": "Ödemeler", "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": - "Yolculuğunuz için nakit veya kredi/banka kartı kullanarak ödeme yapabilirsiniz. Yolculuğunuzu onaylamadan önce tercih ettiğiniz ödeme yöntemini seçebilirsiniz.", + "Nakit veya kartla ödeyebilirsiniz. Onaylamadan önce yöntemi seçin.", "Ride Management": "Yolculuk Yönetimi", "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": - "Evet, yolculuğunuzu iptal edebilirsiniz, ancak iptal ücretlerinin ne kadar önceden iptal ettiğinize bağlı olarak uygulanabileceğini lütfen unutmayın.", + "Evet, iptal edebilirsiniz ancak iptal ücreti uygulanabilir.", "For Drivers": "Sürücüler İçin", "Driver Registration": "Sürücü Kaydı", "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": - "Sürücü olarak kaydolmak veya gereksinimler hakkında bilgi edinmek için lütfen web sitemizi ziyaret edin veya doğrudan Intaleq desteğiyle iletişime geçin.", + "Sürücü olmak için web sitemizi ziyaret edin veya destekle görüşün.", "Visit Website/Contact Support": - "Web Sitesini Ziyaret Edin/Desteğe Başvurun", + "Web Sitesini Ziyaret Et/Desteğe Ulaş", "Close": "Kapat", "We are searching for the nearest driver": - "Size en yakın sürücüyü arıyoruz", + "En yakın sürücüyü arıyoruz", "Communication": "İletişim", "How do I communicate with the other party (passenger/driver)?": "Diğer taraf (yolcu/sürücü) ile nasıl iletişim kurarım?", "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": - "Bir yolculuk onaylandıktan sonra uygulama içi sohbet özelliği aracılığıyla sürücünüzle veya yolcunuzla iletişim kurabilirsiniz.", - "Safety & Security": "Güvenlik", + "Yolculuk onaylandığında uygulama içi sohbeti kullanabilirsiniz.", + "Safety & Security": "Güvenlik & Emniyet", "What safety measures does Intaleq offer?": "Intaleq hangi güvenlik önlemlerini sunuyor?", "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": - "Intaleq, sürücü doğrulama, uygulama içi yolculuk takibi, acil durum irtibat seçenekleri ve yolculuk durumunuzu güvenilir kişilerle paylaşma yeteneği dahil olmak üzere çeşitli güvenlik özellikleri sunar.", + "Sürücü doğrulama, yolculuk takibi ve acil durum kişileri gibi özellikler sunuyoruz.", "Enjoy competitive prices across all trip options, making travel accessible.": - "Seyahati erişilebilir hale getirerek tüm yolculuk seçeneklerinde rekabetçi fiyatların keyfini çıkarın.", - "Variety of Trip Choices": "Çeşitli Yolculuk Seçenekleri", + "Tüm seçeneklerde rekabetçi fiyatların tadını çıkarın.", + "Variety of Trip Choices": "Yolculuk Seçeneği Çeşitliliği", "Choose the trip option that perfectly suits your needs and preferences.": - "İhtiyaçlarınıza ve tercihlerinize mükemmel şekilde uyan yolculuk seçeneğini seçin.", + "İhtiyaçlarınıza mükemmel uyan seçeneği tercih edin.", "Your Choice, Our Priority": "Sizin Seçiminiz, Bizim Önceliğimiz", "Because we are near, you have the flexibility to choose the ride that works best for you.": - "Yakın olduğumuz için, sizin için en iyi çalışan yolculuğu seçme esnekliğine sahipsiniz.", - "duration is": "süre", + "Size yakın olduğumuz için en uygun yolculuğu seçme esnekliğine sahipsiniz.", + "duration is": "süre:", "Setting": "Ayar", "Find answers to common questions": - "Sıkça sorulan soruların yanıtlarını bulun", - "I don't need a ride anymore": "Artık bir yolculuğa ihtiyacım yok", + "Sık sorulan soruların cevaplarını bul", + "I don't need a ride anymore": "Artık yolculuğa ihtiyacım yok", "I was just trying the application": "Sadece uygulamayı deniyordum", "No driver accepted my request": "Hiçbir sürücü isteğimi kabul etmedi", - "I added the wrong pick-up/drop-off location": - "Yanlış teslim alma/bırakma konumu ekledim", - "I don't have a reason": "Bir nedenim yok", - "Other": "Diğer", + "I added the wrong pick-up/drop-off location": "Yanlış konum ekledim", + "I don't have a reason": "Bir sebebim yok", "Can we know why you want to cancel Ride ?": - "Yolculuğu neden iptal etmek istediğinizi öğrenebilir miyiz?", - "Cancel Ride": "Yolculuğu İptal Et", + "Neden iptal etmek istediğinizi öğrenebilir miyiz?", "Add Payment Method": "Ödeme Yöntemi Ekle", - "Your Wallet balance is ": "Cüzdan bakiyeniz", "Ride Wallet": "Yolculuk Cüzdanı", "Payment Method": "Ödeme Yöntemi", - "Type here Place": "Buraya Yer Yazın", - "Are You sure to ride to": - "Şuraya gitmek istediğinizden emin misiniz", + "Type here Place": "Yeri buraya yaz", + "Are You sure to ride to": "Şuraya gitmek istediğinize emin misiniz:", "Confirm": "Onayla", - "You are Delete": "Silmek üzeresiniz", + "You are Delete": "Siliyorsunuz", "Deleted": "Silindi", - "You Dont Have Any places yet !": "Henüz hiçbir yeriniz yok!", - "Favorite Places": "Favori Yerler", - "From : Current Location": "Kimden: Mevcut Konum", - "Profile": "Profil", - "Home": "Ana Sayfa", + "You Dont Have Any places yet !": "Henüz kayıtlı yeriniz yok!", + "From : Current Location": "Nereden: Mevcut Konum", "My Cared": "Kartlarım", "Add Card": "Kart Ekle", "Add Credit Card": "Kredi Kartı Ekle", - "Please enter the cardholder name": - "Lütfen kart sahibinin adını girin", - "Please enter the expiry date": "Lütfen son kullanma tarihini girin", - "Please enter the CVV code": "Lütfen CVV kodunu girin", + "Please enter the cardholder name": "Kart sahibinin adını girin", + "Please enter the expiry date": "Son kullanma tarihini girin", + "Please enter the CVV code": "CVV kodunu girin", "Go To Favorite Places": "Favori Yerlere Git", "Go to this Target": "Bu Hedefe Git", "My Profile": "Profilim", - "Sign Out": "Oturumu Kapat", - "Are you want to go to this site": "Bu siteye gitmek ister misiniz", + "Are you want to go to this site": + "Bu konuma gitmek istiyor musunuz?", "MyLocation": "Konumum", - "my location": "benim konumum", + "my location": "konumum", "Target": "Hedef", - "Update": "Güncelle", - "You Should choose rate figure": "Bir oran figürü seçmelisiniz", + "You Should choose rate figure": "Puan seçmelisiniz", "Login Captin": "Kaptan Girişi", "Register Captin": "Kaptan Kaydı", "Send Verfication Code": "Doğrulama Kodu Gönder", - "KM": "km", + "KM": "KM", "End Ride": "Yolculuğu Bitir", "Minute": "Dakika", - "Go to passenger Location now": "Şimdi yolcu Konumuna git", - "Duration of the Ride is ": "Yolculuk Süresi", - "Distance of the Ride is ": "Yolculuğun Mesafesi", - "Name of the Passenger is ": "Yolcunun Adı", - "Hello this is Captain": "Merhaba ben Kaptan", + "Go to passenger Location now": "Yolcu Konumuna Git", + "Duration of the Ride is ": "Yolculuk Süresi: ", + "Distance of the Ride is ": "Yolculuk Mesafesi: ", + "Name of the Passenger is ": "Yolcunun Adı: ", + "Hello this is Captain": "Merhaba, ben Kaptan", "Start the Ride": "Yolculuğu Başlat", "Please Wait If passenger want To Cancel!": - "Lütfen Yolcu İptal Etmek İsterse Bekleyin!", + "Lütfen Bekleyin, yolcu iptal etmek isteyebilir!", "Total Duration:": "Toplam Süre:", "Active Duration:": "Aktif Süre:", "Waiting for Captin ...": "Kaptan Bekleniyor...", - "Age is ": "Yaş", - "Rating is ": "Puanlama", - " to arrive you.": "size ulaşmak için.", + "Age is ": "Yaş: ", + "Rating is ": "Puan: ", + " to arrive you.": " size ulaşmak için.", "Tariff": "Tarife", "Settings": "Ayarlar", - "Feed Back": "Geri bildirim", + "Feed Back": "Geri Bildirim", "Please enter a valid 16-digit card number": - "Lütfen geçerli bir 16 haneli kart numarası girin", + "Lütfen geçerli 16 haneli kart numarasını girin", "Add Phone": "Telefon Ekle", - "Please enter a phone number": "Lütfen bir telefon numarası girin", "You dont Add Emergency Phone Yet!": "Henüz Acil Durum Telefonu Eklemediniz!", "You will arrive to your destination after ": - "Hedefinize ulaştığınızda", - "You can cancel Ride now": "Şimdi yolculuğu iptal edebilirsiniz", + "Hedefe varış süreniz: ", + "You can cancel Ride now": "Yolculuğu şimdi iptal edebilirsiniz", "You Can cancel Ride After Captain did not come in the time": - "Kaptan Zamanında Gelmedikten Sonra Yolculuğu İptal Edebilirsiniz", + "Kaptan zamanında gelmezse iptal edebilirsiniz", "If you in Car Now. Press Start The Ride": - "Şimdi Aradaysanız. Yolculuğu Başlat'a basın", - "You Dont Have Any amount in": "Şurada Herhangi Bir Miktarınız Yok", + "Şu an araçtaysanız, Yolculuğu Başlat'a basın", + "You Dont Have Any amount in": "Hiç bakiyeniz yok:", "Wallet!": "Cüzdan!", - "You Have": "Sen sahipsin", + "You Have": "Bakiyeniz:", "Save Credit Card": "Kredi Kartını Kaydet", "Show Promos": "Promosyonları Göster", - "10 and get 4% discount": "10 ve %4 indirim kazanın", - "20 and get 6% discount": "20 ve %6 indirim kazanın", - "40 and get 8% discount": "40 ve %8 indirim kazanın", - "100 and get 11% discount": "100 ve %11 indirim kazanın", - "Pay with Your PayPal": "PayPal'ınızla Ödeyin", + "10 and get 4% discount": "10 ve %4 indirim al", + "20 and get 6% discount": "20 ve %6 indirim al", + "40 and get 8% discount": "40 ve %8 indirim al", + "100 and get 11% discount": "100 ve %11 indirim al", + "Pay with Your PayPal": "PayPal ile Öde", "You will choose one of above !": - "Yukarıdakilerden birini seçeceksiniz!", - "Delete My Account": "Hesabımı Sil", + "Yukarıdakilerden birini seçmelisiniz!", "Edit Profile": "Profili Düzenle", - "Name": "Ad", - "Update Gender": "Cinsiyeti Güncelle", - "Education": "Eğitim", - "Update Education": "Eğitimi Güncelle", - "Employment Type": "İstihdam Türü", - "SOS Phone": "SOS Telefonu", - "High School Diploma": "Lise Diploması", - "Associate Degree": "Ön Lisans Derecesi", - "Bachelor's Degree": "Lisans Derecesi", - "Master's Degree": "Yüksek Lisans Derecesi", - "Doctoral Degree": "Doktora Derecesi", "Copy this Promo to use it in your Ride!": - "Yolculuğunuzda kullanmak için bu Promoyu kopyalayın!", + "Bu Promosyonu kopyalayıp kullanın!", "To change some Settings": "Bazı Ayarları değiştirmek için", - "To change Language the App": "Uygulamanın Dilini değiştirmek için", - "Order Request Page": "Sipariş İsteği Sayfası", + "Order Request Page": "Sipariş İstek Sayfası", "Rouats of Trip": "Yolculuk Rotaları", - "Passenger Name is ": "Yolcunun Adı ", - "Total From Passenger is ": "Yolcudan Toplam", - "Duration To Passenger is ": "Yolcuya Süre", - "Distance To Passenger is ": "Yolcuya Mesafesi", - "Total For You is ": "Sizin İçin Toplam", - "Distance is ": "Mesafe", - "KM": "KM", - "Duration of Trip is ": "Yolculuk Süresi", - "Minutes": "Dakika", - "Apply Order": "Siparişi Uygula", + "Passenger Name is ": "Yolcu Adı: ", + "Total From Passenger is ": "Yolcu Tutarı: ", + "Duration To Passenger is ": "Yolcuya Varış Süresi: ", + "Distance To Passenger is ": "Yolcuya Mesafe: ", + "Total For You is ": "Size Ödenecek: ", + "Distance is ": "Mesafe: ", + " KM": " KM", + "Duration of Trip is ": "Yolculuk Süresi: ", + " Minutes": " Dakika", + "Apply Order": "Siparişi Kabul Et", "Refuse Order": "Siparişi Reddet", - "Rate Captain": "Kaptanı Değerlendir", - "Enter your Note": "Notunuzu Girin", - "Type something...": "Bir şey yazın...", - "Submit rating": "Değerlendirmeyi Gönder", - "Rate Passenger": "Yolcu Değerlendir", + "Rate Captain": "Kaptanı Puanla", + "Enter your Note": "Notunu gir", + "Type something...": "Bir şeyler yaz...", + "Submit rating": "Puanı gönder", + "Rate Passenger": "Yolcuyu Puanla", "Ride Summary": "Yolculuk Özeti", - "welcome_message": "Intaleq'e hoş geldiniz!", + "welcome_message": "Intaleq'e Hoş Geldiniz!", "app_description": - "Intaleq, güvenilir, güvenli ve erişilebilir bir yolculuk paylaşım uygulamasıdır.", - "get_to_destination": "Hedefinize hızlı ve kolay bir şekilde gidin.", - "get_a_ride": - "Intaleq ile dakikalar içinde hedefinize bir yolculuk yapabilirsiniz.", + "Intaleq güvenli, güvenilir ve erişilebilir bir araç çağırma uygulamasıdır.", + "get_to_destination": "Hedefinize hızlı ve kolay ulaşın.", + "get_a_ride": "Intaleq ile dakikalar içinde araç bulun.", "safe_and_comfortable": - "Güvenli ve konforlu bir yolculuğun keyfini çıkarın.", + "Güvenli ve konforlu yolculuğun tadını çıkarın.", "committed_to_safety": - "Intaleq güvenliğe kendini adamıştır ve tüm kaptanlarımız dikkatlice taranmış ve geçmişleri kontrol edilmiştir.", + "Güvenliğe önem veriyoruz, tüm kaptanlarımız kontrolden geçer.", + "your ride is Accepted": "yolculuğunuz Kabul Edildi", "Driver is waiting at pickup.": "Sürücü alım noktasında bekliyor.", "Driver is on the way": "Sürücü yolda", "Contact Options": "İletişim Seçenekleri", - "Send a custom message": "Özel bir mesaj gönderin", - "Type your message": "Mesajınızı yazın", - "You Have Tips": "Bahşişleriniz Var", - " tips\nTotal is": "bahşiş\nToplam", - "Your fee is ": "Ücretiniz", - "Tip is ": "Bahşiş", + "Send a custom message": "Özel mesaj gönder", + "Type your message": "Mesajını yaz", + "I will go now": "Şimdi gidiyorum", + "You Have Tips": "Bahşişiniz var", + " tips\nTotal is": " bahşiş\nToplam:", + "Your fee is ": "Ücretiniz: ", + "Do you want to pay Tips for this Driver": + "Bu Sürücüye Bahşiş vermek ister misiniz?", + "Tip is ": "Bahşiş: ", "Are you want to wait drivers to accept your order": "Sürücülerin siparişinizi kabul etmesini beklemek ister misiniz?", "This price is fixed even if the route changes for the driver.": - "Sürücü için rota değişse bile bu fiyat sabittir.", + "Bu fiyat rota değişse bile sabittir.", "The price may increase if the route changes.": "Rota değişirse fiyat artabilir.", "The captain is responsible for the route.": - "Rotadan kaptan sorumludur", - "We are search for nearst driver": "Yakındaki sürücüyü arıyoruz", + "Rota sorumluluğu kaptandadır.", + "We are search for nearst driver": "En yakın sürücüyü arıyoruz", "Your order is being prepared": "Siparişiniz hazırlanıyor", "The drivers are reviewing your request": "Sürücüler isteğinizi inceliyor", "Your order sent to drivers": "Siparişiniz sürücülere gönderildi", "You can call or record audio of this trip": - "Bu yolculuğu arayabilir veya ses kaydı yapabilirsiniz", + "Arama yapabilir veya ses kaydedebilirsiniz", "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": - "Yolculuk başladı! Acil durum numaralarını aramaktan, yolculuğunuzu paylaşmaktan veya yolculuk için ses kaydını etkinleştirmekten çekinmeyin", + "Yolculuk başladı! Acil numaraları aramaktan, yolculuğu paylaşmaktan veya ses kaydı almaktan çekinmeyin.", "Camera Access Denied.": "Kamera Erişimi Reddedildi.", "Open Settings": "Ayarları Aç", - "GPS Required Allow !.": "GPS Gerekli İzin Ver !.", + "GPS Required Allow !.": "GPS Gerekli, İzin Ver!", "Your Account is Deleted": "Hesabınız Silindi", "Are you sure to delete your account?": - "Hesabınızı silmek istediğinizden emin misiniz?", + "Hesabınızı silmek istediğinize emin misiniz?", "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": - "Verileriniz 2 hafta sonra silinecek\nVe 1 ay sonra uygulamayı kullanmaya geri dönemezsiniz", + "Verileriniz 2 hafta sonra silinecek\nVe 1 ay sonra uygulamayı kullanamayacaksınız", "Enter Your First Name": "Adınızı Girin", - "Are you Sure to LogOut?": - "Oturumu Kapatmak İstediğinizden Emin misiniz?", + "Are you Sure to LogOut?": "Çıkış Yapmak İstediğinize Emin misiniz?", "Email Wrong": "E-posta Yanlış", - "Email you inserted is Wrong.": "Girdiğiniz E-posta Yanlış.", - "You have finished all times ": "Tüm zamanları bitirdiniz", + "Email you inserted is Wrong.": "Girdiğiniz e-posta yanlış.", + "You have finished all times ": "Tüm haklarınızı doldurdunuz ", "if you want help you can email us here": - "yardıma ihtiyacınız varsa bize buradan e-posta gönderebilirsiniz", + "yardım isterseniz bize e-posta atabilirsiniz", "Thanks": "Teşekkürler", - "Email Us": "Bize E-posta Gönderin", + "Email Us": "Bize E-posta Gönder", "I cant register in your app in face detection ": - "Yüz algılamada uygulamanıza kaydolamıyorum", - "Hi": "Merhaba", + "Yüz algılamada sorun yaşıyorum, kayıt olamıyorum", + "Hi": "Selam", "No face detected": "Yüz algılanmadı", - "Image detecting result is ": "Görüntü algılama sonucu", - "from 3 times Take Attention": "3 kez dikkat edin", + "Image detecting result is ": "Görüntü algılama sonucu: ", + "from 3 times Take Attention": "3 denemeden, Dikkat Edin", "Be sure for take accurate images please\nYou have": - "Lütfen doğru görüntüler aldığınızdan emin olun. Sahipsiniz", + "Lütfen net fotoğraflar çekin\nKalan hakkınız:", "image verified": "görüntü doğrulandı", "Next": "İleri", - "There is no help Question here": "Burada yardım Sorusu yok", - "You dont have Points": "Puanınız Yok", - "You Are Stopped For this Day !": "Bugün İçin Durdunuz!", - "You must be charge your Account": "Hesabınızı şarj etmelisiniz", + "There is no help Question here": "Burada yardım sorusu yok", + "You dont have Points": "Puanınız yok", + "You Are Stopped For this Day !": "Bugünlük durduruldunuz!", + "You must be charge your Account": "Hesabınıza yükleme yapmalısınız", "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": - "Bugün 3 Yolculuğu Reddetiniz bu yüzden\nYARIN GÖRÜŞÜRÜZ!", - "Recharge my Account": "Hesabımı şarj et", + "Bugün 3 yolculuğu reddettiniz, sebep bu \nYarın görüşürüz!", + "Recharge my Account": "Hesabımı Doldur", "Ok , See you Tomorrow": "Tamam, Yarın Görüşürüz", - "You are Stopped": "Durdunuz", - "Connected": "Bağlandı", - "Not Connected": "Bağlanmadı", - "Your are far from passenger location": - "Yolcu konumundan uzaktasınız", + "You are Stopped": "Durduruldunuz", + "Connected": "Bağlı", + "Not Connected": "Bağlı Değil", + "Your are far from passenger location": "Yolcu konumundan uzaksınız", "go to your passenger location before\nPassenger cancel trip": - "Yolcu\nYolculuğu iptal etmeden önce yolcu konumunuza gidin", + "yolcu iptal etmeden konumuna gidin", "You will get cost of your work for this trip": - "Bu yolculuk için çalışmalarınızın maliyetini alacaksınız", - " in your wallet": "Cüzdanınızda", - "you gain": "kazanırsınız", + "Bu yolculuk için emeğinizin karşılığını alacaksınız", + " in your wallet": " cüzdanınızda", + "you gain": "kazandınız", "Order Cancelled by Passenger": "Sipariş Yolcu Tarafından İptal Edildi", - "Success": "Başarı", "Feedback data saved successfully": - "Geri bildirim verileri başarıyla kaydedildi", - "No Promo for today .": "Bugün için promosyon yok.", - "Select your destination": "Hedefinizi seçin", - "Search for your Start point": "Başlangıç noktanızı arayın", - "Search for waypoint": "Ara noktayı arayın", + "Geri bildirim başarıyla kaydedildi", + "No Promo for today .": "Bugün için Promosyon yok.", + "Select your destination": "Varış noktasını seç", + "Search for your Start point": "Başlangıç noktasını ara", + "Search for waypoint": "Ara nokta ara", "Current Location": "Mevcut Konum", "Add Location 1": "Konum 1 Ekle", - "You must Verify email !.": "E-postayı Doğrulamalısınız!.", + "You must Verify email !.": "E-postayı doğrulamalısınız!", "Cropper": "Kırpıcı", "Saved Sucssefully": "Başarıyla Kaydedildi", - "Select Date": "Tarih Seçin", + "Select Date": "Tarih Seç", "Birth Date": "Doğum Tarihi", "Ok": "Tamam", - "the 500 points equal 30 JOD": "500 puan 30 Ürdün Dinarına eşit", + "the 500 points equal 30 JOD": "500 puan 30 TL eder", "the 500 points equal 30 JOD for you \nSo go and gain your money": - "500 puan sizin için 30 Ürdün Dinarına eşit\nÖyleyse gidin ve paranızı kazanın", - "token updated": "jeton güncellendi", + "500 puan senin için 30 TL eder \nHadi paranı kazan", + "token updated": "token güncellendi", "Add Location 2": "Konum 2 Ekle", "Add Location 3": "Konum 3 Ekle", "Add Location 4": "Konum 4 Ekle", "Waiting for your location": "Konumunuz bekleniyor", - "Search for your destination": "Hedefinizi arayın", + "Search for your destination": "Varış yerini ara", "Hi! This is": "Merhaba! Bu", - " I am using": "ben kullanıyorum", - " to ride with": "ile binmek için", - " as the driver.": "sürücü olarak.", - "is driving a ": "araba sürüyor", - " with license plate ": "plaka numarasıyla", - " I am currently located at ": "Şu anda şurada bulunuyorum", - "Please go to Car now ": "Lütfen şimdi Arabaya gidin", + " I am using": " kullanıyorum", + " to ride with": " şununla yolculuk yapmak için:", + " as the driver.": " sürücü olarak.", + "is driving a ": "bir araç kullanıyor: ", + " with license plate ": " plaka: ", + " I am currently located at ": " Şu anki konumum: ", + "Please go to Car now ": "Lütfen şimdi Araca gidin ", "You will receive a code in WhatsApp Messenger": - "WhatsApp Messenger'da bir kod alacaksınız", + "WhatsApp üzerinden bir kod alacaksınız", "If you need assistance, contact us": - "Yardıma ihtiyacınız varsa, bizimle iletişime geçin", - "Promo Ended": "Promosyon Sona Erdi!", - "Enter the promo code and get": "Promosyon kodunu girin ve alın", + "Yardıma ihtiyacınız varsa bize ulaşın", + "Promo Ended": "Promosyon Sona Erdi", + "Enter the promo code and get": "Promosyon kodunu gir ve kazan:", "DISCOUNT": "İNDİRİM", "No wallet record found": "Cüzdan kaydı bulunamadı", "for": "için", "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": - "Intaleq, hem kaptanlar hem de yolcular için birçok özelliği tanıtan en güvenli yolculuk paylaşım uygulamasıdır. Yolculuklarınızdan en iyi değeri almanızı sağlamak için yalnızca %8'lik en düşük komisyon oranını sunuyoruz. Uygulamamız, en iyi kaptanlar için sigorta, en iyi mühendislerle düzenli araba bakımı ve tüm kullanıcılar için saygılı ve yüksek kaliteli bir deneyim sağlamak için yol hizmetleri içerir.", + "Intaleq, kaptanlar ve yolcular için birçok özellik sunan en güvenli araç paylaşım uygulamasıdır. Sadece %8 komisyon oranıyla en iyi değeri almanızı sağlıyoruz. En iyi kaptanlar için sigorta, düzenli araç bakımı ve yol yardımı hizmetleri sunuyoruz.", "You can contact us during working hours from 12:00 - 19:00.": - "Çalışma saatleri içinde 12:00 - 19:00 saatleri arasında bizimle iletişime geçebilirsiniz.", - "Choose a contact option": "Bir iletişim seçeneği seçin", + "Bize 12:00 - 19:00 saatleri arasında ulaşabilirsiniz.", + "Choose a contact option": "İletişim seçeneği belirleyin", "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": - "Çalışma saati 12:00 - 19:00 arasındadır.\nBir WhatsApp mesajı veya e-posta gönderebilirsiniz.", + "Çalışma saatleri 12:00 - 19:00.\nWhatsApp mesajı veya e-posta gönderebilirsiniz.", "Promo code copied to clipboard!": "Promosyon kodu panoya kopyalandı!", "Copy Code": "Kodu Kopyala", @@ -3749,35 +5580,32 @@ class MyTranslation extends Translations { "Davet kodunuz başarıyla uygulandı!", "Payment Options": "Ödeme Seçenekleri", "wait 1 minute to receive message": - "mesaj almak için 1 dakika bekleyin", - "Promo Copied!": "Promosyon Kopyalandı!", + "mesajı almak için 1 dakika bekleyin", "You have copied the promo code.": "Promosyon kodunu kopyaladınız.", - "Valid Until:": "Geçerlilik Tarihi:", - "Select Payment Amount": "Ödeme Miktarını Seçin", - "The promotion period has ended.": "Promosyon süresi sona erdi.", + "Select Payment Amount": "Ödeme Tutarını Seç", + "The promotion period has ended.": "Promosyon süresi doldu.", "Promo Code Accepted": "Promosyon Kodu Kabul Edildi", - "Tap on the promo code to copy it!": - "Kopyalamak için promosyon koduna dokunun!", + "Tap on the promo code to copy it!": "Kopyalamak için koda dokunun!", "Lowest Price Achieved": "En Düşük Fiyata Ulaşıldı", - "Cannot apply further discounts.": "Başka indirim uygulanamaz.", + "Cannot apply further discounts.": "Daha fazla indirim uygulanamaz.", "Promo Already Used": "Promosyon Zaten Kullanıldı", - "Invitation Used": "Davetiye Kullanıldı", + "Invitation Used": "Davet Kullanıldı", "You have already used this promo code.": "Bu promosyon kodunu zaten kullandınız.", - "Insert Your Promo Code": "Promosyon Kodunuzu Girin", + "Insert Your Promo Code": "Promosyon Kodunu Gir", "Enter promo code here": "Promosyon kodunu buraya girin", "Please enter a valid promo code": "Lütfen geçerli bir promosyon kodu girin", - "Awfar Car": "Awfar Araba", + "Awfar Car": "Ekonomik Araç", "Old and affordable, perfect for budget rides.": - "Eski ve uygun fiyatlı, bütçe yolculukları için mükemmel.", + "Eski ve uygun fiyatlı, bütçe dostu yolculuklar için mükemmel.", " If you need to reach me, please contact the driver directly at": - "Bana ulaşmanız gerekirse, lütfen sürücüyle doğrudan iletişime geçin", + " Bana ulaşmanız gerekirse, lütfen sürücüyle şu numaradan iletişime geçin:", "No Car or Driver Found in your area.": - "Bölgenizde Araba veya Sürücü Bulunamadı.", - "Please Try anther time ": "Lütfen başka zaman deneyin", + "Bölgenizde Araç veya Sürücü Bulunamadı.", + "Please Try anther time ": "Lütfen başka zaman deneyin ", "There no Driver Aplly your order sorry for that ": - "Siparişinizi uygulayacak Sürücü yok üzgünüm", + "Siparişinize başvuran sürücü yok, üzgünüz ", "Trip Cancelled": "Yolculuk İptal Edildi", "The Driver Will be in your location soon .": "Sürücü yakında konumunuzda olacak.", @@ -3785,194 +5613,176 @@ class MyTranslation extends Translations { "Promo End !": "Promosyon Bitti!", "There is no notification yet": "Henüz bildirim yok", "Use Touch ID or Face ID to confirm payment": - "Ödemeyi onaylamak için Touch ID veya Face ID'yi kullanın", + "Ödemeyi onaylamak için Touch ID veya Face ID kullanın", "Contact us for any questions on your order.": - "Siparişinizle ilgili herhangi bir sorunuz için bizimle iletişime geçin.", + "Siparişinizle ilgili sorular için bize ulaşın.", "Pyament Cancelled .": "Ödeme İptal Edildi.", - "type here": "buraya yaz", - "Scan Driver License": "Sürücü Belgesini Tara", + "type here": "buraya yazın", + "Scan Driver License": "Ehliyeti Tara", "Please put your licence in these border": - "Lütfen ehliyetinizi bu sınırlara yerleştirin", + "Lütfen ehliyetinizi bu çerçeveye yerleştirin", "Camera not initialized yet": "Kamera henüz başlatılmadı", - "Take Image": "Resim Çek", - "AI Page": "AI Sayfası", - "Take Picture Of ID Card": "Kimlik Kartının Fotoğrafını Çek", - "Take Picture Of Driver License Card": - "Sürücü Belgesi Kartının Fotoğrafını Çek.", + "Take Image": "Fotoğraf Çek", + "AI Page": "YZ Sayfası", + "Take Picture Of ID Card": "Kimlik Kartı Fotoğrafı Çek", + "Take Picture Of Driver License Card": "Ehliyet Fotoğrafı Çek", "We are process picture please wait ": - "Resmi işliyoruz lütfen bekleyin", + "Fotoğrafı işliyoruz lütfen bekleyin ", "There is no data yet.": "Henüz veri yok.", "Name :": "Ad:", - "Drivers License Class: ": "Sürücü Belgesi Sınıfı:", - "Document Number: ": "Belge Numarası:", - "Address: ": "Adres:", - "Height: ": "Yükseklik:", - "Expiry Date: ": "Bitiş Tarihi:", - "Date of Birth: ": "Doğum Tarihi:", + "Drivers License Class: ": "Ehliyet Sınıfı: ", + "Document Number: ": "Belge No: ", + "Address: ": "Adres: ", + "Height: ": "Boy: ", + "Expiry Date: ": "Son Kullanma Tarihi: ", + "Date of Birth: ": "Doğum Tarihi: ", "You can't continue with us .\nYou should renew Driver license": - "Bizimle devam edemezsiniz.\nSürücü ehliyetini yenilemelisiniz", - "Detect Your Face ": "Yüzünüzü Algıla", + "Bizimle devam edemezsiniz.\nEhliyetinizi yenilemelisiniz", + "Detect Your Face ": "Yüzünüzü Algılayın ", "Go to next step\nscan Car License.": - "Bir sonraki adıma geç\nAraç Ruhsatını Tara.", - "Name in arabic": "Arapça adı", - "Drivers License Class": "Sürücü Belgesi Sınıfı", - "Date of Birth": "Doğum Tarihi", - "Age": "Yaş", - "Lets check Car license ": "Araba ruhsatını kontrol edelim", - "Car": "Araba", + "Sonraki adıma git\nRuhsatı tara.", + "Name in arabic": "Arapça Ad", + "Drivers License Class": "Ehliyet Sınıfı", + "Selected Date": "Seçilen Tarih", + "Select Time": "Zaman Seç", + "Selected Time": "Seçilen Zaman", + "Selected Date and Time": "Seçilen Tarih ve Saat", + "Lets check Car license ": "Hadi Ruhsatı kontrol edelim ", + "Car": "Araç", "Plate": "Plaka", - "N/A": "Yok", - "Rides": "Sürüşler", - "Age": "Yaş", + "Rides": "Yolculuklar", "Selected driver": "Seçilen sürücü", - "Lets check License Back Face": "Lisans Arka Yüzünü kontrol edelim", - "Car License Card": "Araç Ruhsat Kartı", + "Lets check License Back Face": + "Hadi Ehliyet Arka Yüzünü kontrol edelim", + "Car License Card": "Ruhsat Kartı", "No image selected yet": "Henüz resim seçilmedi", - "Made :": "Yapım:", - "model :": "model:", - "VIN :": "Şasi Numarası:", - "year :": "yıl:", - "ُExpire Date": "Bitiş Tarihi", + "Made :": "Marka:", + "model :": "Model:", + "VIN :": "Şasi No:", + "year :": "Yıl:", + "ُExpire Date": "Son Kullanma Tarihi", "Login Driver": "Sürücü Girişi", "Password must br at least 6 character.": "Şifre en az 6 karakter olmalıdır.", - "if you don't have account": "eğer hesabınız yoksa", - "Here recorded trips audio": "İşte kaydedilmiş yolculukların sesi", - "Register as Driver": "Sürücü olarak kaydolun", + "if you don't have account": "hesabınız yoksa", + "Here recorded trips audio": "Burada kaydedilen yolculuk sesleri", + "Register as Driver": "Sürücü olarak Kayıt Ol", "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": - "Aşağıdaki \"Kabul Ediyorum\" seçeneğini seçerek, Kullanım Koşullarını incelediğimi ve kabul ettiğimi onaylıyorum ve şunu kabul ediyorum:", - ". I am at least 18 years of age.": ". En az 18 yaşındayım.", - "Log Out Page": "Oturumu Kapat Sayfası", + "Aşağıdaki \"Kabul Ediyorum\" seçeneği ile Kullanım Şartlarını inceleyip kabul ettiğimi ve şunu onayladığımı beyan ederim: ", + "Log Out Page": "Çıkış Sayfası", "Log Off": "Oturumu Kapat", - "Register Driver": "Sürücü Kaydet", + "Register Driver": "Sürücü Kaydı", "Verify Email For Driver": "Sürücü İçin E-postayı Doğrula", - "Admin DashBoard": "Yönetici Panosu", + "Admin DashBoard": "Yönetici Paneli", "Your name": "Adınız", - "your ride is applied": "yolculuğunuz uygulandı", - "Your password": "Şifreniz", - "H and": "Saat ve", - "LE": "TL", - "JOD": "Ürdün Dinarı", - "m": "m", - "We search nearst Driver to you": "Size en yakın Sürücüyü arıyoruz", + "your ride is applied": "yolculuğunuz başvuruldu", + "H and": "S ve", + "JOD": "TL", + "m": "dk", + "We search nearst Driver to you": "Size en yakın sürücüyü arıyoruz", "please wait till driver accept your order": - "lütfen sürücü siparişinizi kabul edene kadar bekleyin", + "sürücü siparişinizi kabul edene kadar bekleyin", "No accepted orders? Try raising your trip fee to attract riders.": - "Kabul edilen sipariş yok mu? Yolcuları çekmek için yolculuk ücretinizi yükseltmeyi deneyin.", + "Kabul eden yok mu? Ücreti artırmayı deneyin.", "You should select one": "Birini seçmelisiniz", "The driver accept your order for": - "Sürücü siparişinizi şu fiyata kabul etti", - "Increase Fee": "Ücreti Artır", - "No, thanks": "Hayır, teşekkürler", + "Sürücü siparişinizi şu fiyata kabul etti:", "The driver on your way": "Sürücü yolda", - "Total price from ": "Toplam fiyat", + "Total price from ": "Toplam fiyat: ", "Order Details Intaleq": "Sipariş Detayları Intaleq", - - "accepted your order": "siparişinizi kabul etti", - "Selected file:": "Seçilen dosya:", - "Your trip cost is": "Yolculuğunuzun maliyeti", + "Your trip cost is": "Yolculuk maliyetiniz:", "this will delete all files from your device": - "bu, cihazınızdaki tüm dosyaları silecek", - " in your": "cüzdanınızda", + "bu işlem cihazınızdaki tüm dosyaları silecek", "Exclusive offers and discounts always with the Intaleq app": - "Intaleq uygulamasıyla her zaman özel teklifler ve indirimler", - - " wallet due to a previous trip.": - "önceki bir yolculuk nedeniyle cüzdan.", + "Özel teklifler ve indirimler her zaman Intaleq uygulamasında", "Submit Question": "Soru Gönder", - "Please enter your Question.": "Lütfen sorunuzu girin.", + "Please enter your Question.": "Lütfen Sorunuzu girin.", "Help Details": "Yardım Detayları", "No trip yet found": "Henüz yolculuk bulunamadı", - "No Response yet.": "Henüz yanıt yok.", - " You Earn today is ": "Bugün kazandığınız ", - " You Have in": "Sahipsiniz", - "Total points is ": "Toplam puan ", + "No Response yet.": "Henüz Yanıt yok.", + " You Earn today is ": " Bugün Kazandığınız: ", + " You Have in": " Hesabınızdaki:", + "Total points is ": "Toplam puan: ", "Total Connection Duration:": "Toplam Bağlantı Süresi:", - " H and": " Saat ve", - "Passenger name : ": "Yolcu adı : ", - "Cost Of Trip IS ": "Yolculuğun Maliyeti ", + "Passenger name : ": "Yolcu adı: ", + "Cost Of Trip IS ": "Yolculuk Maliyeti: ", "Arrival time": "Varış zamanı", - "arrival time to reach your point": - "noktanıza ulaşmak için varış zamanı", + "arrival time to reach your point": "noktanıza varış zamanı", "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "Hızlı ve scooter yolculukları için fiyat dinamik olarak hesaplanır. Konfor yolculukları için fiyat zaman ve mesafeye göre belirlenir.", - "Hello this is Driver": "Merhaba, bu Sürücü", - "Is the Passenger in your Car ?": "Yolcu arabanızda mı?", + "Intaleq ve scooter yolculukları için fiyat dinamiktir. Konfor için zaman ve mesafeye dayalıdır.", + "Hello this is Driver": "Merhaba ben Sürücü", + "Is the Passenger in your Car ?": "Yolcu Aracınızda mı?", "Please wait for the passenger to enter the car before starting the trip.": - "Yolculuğa başlamadan önce yolcunun arabaya binmesini bekleyin.", - "No ,still Waiting.": "Hayır, hala bekliyorum.", - "I arrive you": "Size ulaştım", - "I Arrive your site": "Yerinize ulaştım", + "Lütfen yolculuğu başlatmadan önce yolcunun araca binmesini bekleyin.", + "No ,still Waiting.": "Hayır, hâlâ bekliyorum.", + "I arrive you": "Sana ulaştım", + "I Arrive your site": "Konumunuza ulaştım", "You are not in near to passenger location": "Yolcu konumuna yakın değilsiniz", "please go to picker location exactly": - "lütfen tam olarak toplayıcı konumuna gidin", + "lütfen tam olarak alım noktasına gidin", "You Can Cancel Trip And get Cost of Trip From": - "Yolculuğu iptal edebilir ve yolculuk maliyetini alabilirsiniz", - "Are you sure to cancel?": "İptal etmek istediğinizden emin misiniz?", - "Insert Emergincy Number": "Acil Durum Numarasını Girin", + "Yolculuğu İptal Edip Ücretini Şuradan Alabilirsiniz:", + "Are you sure to cancel?": "İptal etmek istediğinize emin misiniz?", + "Insert Emergincy Number": "Acil Durum Numarası Gir", "Best choice for comfort car and flexible route and stops point": - "Konforlu araba ve esnek rota ve duraklar için en iyi seçim", + "Konforlu araç ve esnek rota için en iyi seçim", "Insert": "Ekle", "This is for scooter or a motorcycle.": "Bu scooter veya motosiklet içindir.", "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": - "Bu yolculuk, başlangıç noktanızdan hedefinize sabit bir fiyatla doğrudan gider. Sürücü planlanan rotayı takip etmelidir.", + "Sabit fiyatlı doğrudan yolculuk. Sürücü planlanan rotayı izlemelidir.", "You can decline a request without any cost": - "Herhangi bir maliyet olmadan bir isteği reddedebilirsiniz", + "Bir isteği ücretsiz reddedebilirsiniz", "Perfect for adventure seekers who want to experience something new and exciting": - "Yeni ve heyecan verici bir şeyler deneyimlemek isteyen macera arayanlar için mükemmel", + "Yeni ve heyecanlı bir şey denemek isteyen maceraperestler için mükemmel", "My current location is:": "Mevcut konumum:", - "and I have a trip on": "ve bir yolculuğum var", + "and I have a trip on": "ve şurada bir yolculuğum var:", "App with Passenger": "Yolcu ile Uygulama", "You will be pay the cost to driver or we will get it from you on next trip": - "Sürücüye maliyeti ödeyeceksiniz veya bir sonraki yolculukta sizden alacağız", + "Sürücüye ödeme yapacaksınız veya bir sonraki yolculukta sizden alacağız", "Trip has Steps": "Yolculuğun Adımları Var", "Distance from Passenger to destination is ": - "Yolcudan hedefe mesafe ", - "price is": "fiyat", + "Yolcudan hedefe mesafe: ", + "price is": "fiyat:", "This ride type does not allow changes to the destination or additional stops": - "Bu yolculuk türü, hedefte veya ek duraklarda değişikliklere izin vermez", + "Bu yolculuk türü hedef değişikliğine veya ek duraklara izin vermez", "This price may be changed": "Bu fiyat değişebilir", "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": - "SIM kart yok, sorun değil! Sürücünüzü doğrudan uygulamamız üzerinden arayın. Gizliliğinizi sağlamak için gelişmiş teknoloji kullanıyoruz.", + "SIM kart yok mu, sorun değil! Uygulamamız üzerinden sürücünüzü doğrudan arayın.", "This ride type allows changes, but the price may increase": - "Bu yolculuk türü değişikliklere izin verir, ancak fiyat artabilir", - "Select one message": "Bir mesaj seçin", + "Bu tür değişikliklere izin verir ancak fiyat artabilir", + "Select one message": "Bir mesaj seç", "I'm waiting for you": "Sizi bekliyorum", - "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": - "Intaleq'in hızının 100 km/s'yi aştığını fark ettik. Lütfen güvenliğiniz için yavaşlayın. Kendinizi güvende hissetmiyorsanız, yolculuk detaylarınızı bir kişiyle paylaşabilir veya kırmızı SOS butonunu kullanarak polisi arayabilirsiniz.", - "Warning: Intaleqing detected!": "Uyarı: Aşırı hız tespit edildi!", + "Intaleq aracının 100 km/s hızını aştığını fark ettik. Lütfen yavaşlayın.", + "Warning: Intaleqing detected!": "Uyarı: Hız tespit edildi!", "Please help! Contact me as soon as possible.": - "Lütfen yardım edin! En kısa sürede benimle iletişime geçin.", + "Lütfen yardım edin! Bana hemen ulaşın.", "Share Trip Details": "Yolculuk Detaylarını Paylaş", - "Car Plate is ": "Araç Plakası ", - "VIP Order": "VIP Sipariş", + "Car Plate is ": "Araç Plakası: ", "the 300 points equal 300 L.E for you \nSo go and gain your money": - "300 puan 300 L.E'ye eşittir \nHadi paranı kazan!", - "the 300 points equal 300 L.E": "300 puan 300 L.E'ye eşittir", + "300 puan senin için 300 TL eder \nHadi paranı kazan", + "the 300 points equal 300 L.E": "300 puan 300 TL eder", "The payment was not approved. Please try again.": "Ödeme onaylanmadı. Lütfen tekrar deneyin.", "Payment Failed": "Ödeme Başarısız", - "Error": "Hata", - "This is a scheduled notification.": - "Bu bir zamanlanmış bildirimdir.", + "This is a scheduled notification.": "Bu planlanmış bir bildirimdir.", "An error occurred during the payment process.": "Ödeme işlemi sırasında bir hata oluştu.", "The payment was approved.": "Ödeme onaylandı.", "Payment Successful": "Ödeme Başarılı", - "No ride found yet": "Henüz yolculuk bulunamadı", + "No ride found yet": "Henüz araç bulunamadı", "Accept Order": "Siparişi Kabul Et", "Bottom Bar Example": "Alt Çubuk Örneği", - "Driver phone": "Sürücü Telefonu", + "Driver phone": "Sürücü telefonu", "Statistics": "İstatistikler", "Origin": "Başlangıç", "Destination": "Varış", "Driver Name": "Sürücü Adı", - "Driver Car Plate": "Sürücü Araç Plakası", - "Available for rides": "Yolculuklar İçin Uygun", + "Driver Car Plate": "Sürücü Plakası", + "Available for rides": "Yolculuklar için müsait", "Scan Id": "Kimlik Tara", "Camera not initilaized yet": "Kamera henüz başlatılmadı", "Scan ID MklGoogle": "Kimlik Tara MklGoogle", @@ -3985,204 +5795,347 @@ class MyTranslation extends Translations { "Qatar": "Katar", "Bahrain": "Bahreyn", "Kuwait": "Kuveyt", - "But you have a negative salary of": "Ancak negatif bakiyeniz var:", + "But you have a negative salary of": "Ancak negatif maaşınız var:", "Promo Code": "Promosyon Kodu", - "Your trip distance is": "Yolculuk mesafeniz", - "Enter promo code": "Promosyon kodunu girin", - "You have promo!": "Promosyonunuz var!", + "Your trip distance is": "Yolculuk mesafeniz:", + "Enter promo code": "Promosyon kodu gir", + "You have promo!": "Promosyonun var!", "Cost Duration": "Maliyet Süresi", - "Duration is": "Süre", + "Duration is": "Süre:", "Leave": "Ayrıl", "Join": "Katıl", "Heading your way now. Please be ready.": - "Şimdi size doğru geliyorum. Lütfen hazır olun.", + "Sana doğru geliyorum. Lütfen hazır ol.", "Approaching your area. Should be there in 3 minutes.": - "Bölgenize yaklaşıyorum. 3 dakika içinde orada olmalıyım.", + "Bölgene yaklaşıyorum. 3 dakika içinde orada olmalıyım.", "There's heavy traffic here. Can you suggest an alternate pickup point?": - "Burada yoğun trafik var. Alternatif bir buluşma noktası önerebilir misiniz?", + "Burada trafik yoğun. Alternatif bir alım noktası önerebilir misin?", "This ride is already taken by another driver.": - "Bu yolculuk başka bir sürücü tarafından alındı.", + "Bu yolculuk başka bir sürücü tarafından alınmış.", "You Should be select reason.": "Bir sebep seçmelisiniz.", - - "Waiting for Driver ...": "Sürücü Bekleniyor ...", + "Waiting for Driver ...": "Sürücü Bekleniyor...", "Latest Recent Trip": "En Son Yolculuk", - "from your list": "listenizden", + "from your list": "listenden", "Do you want to change Work location": - "İş yerinizi değiştirmek istiyor musunuz?", + "İş konumunu değiştirmek istiyor musunuz?", "Do you want to change Home location": - "Ev adresinizi değiştirmek istiyor musunuz?", + "Ev konumunu değiştirmek istiyor musunuz?", "We Are Sorry That we dont have cars in your Location!": - "Konumunuzda araç bulunmadığı için üzgünüz!", - "Choose from Map": "Haritadan Seçin", + "Üzgünüz, konumunuzda aracımız yok!", + "Choose from Map": "Haritadan Seç", "Pick your ride location on the map - Tap to confirm": - "Haritada yolculuk yerinizi seçin - Onaylamak için dokunun", - "To Work": "İşe", - "Are you want to go this site": "Bu yere gitmek istiyor musunuz?", - "Closest & Cheapest": "En Yakın ve En Ucuz", - "Work Saved": "İş Yeri Kaydedildi", + "Haritada konumunu seç - Onaylamak için dokun", "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": - "Intaleq, güvenli, güvenilir ve erişilebilir bir yolculuk uygulamasıdır.", + "Intaleq güvenli, güvenilir ve erişilebilir araç çağırma uygulamasıdır.", "With Intaleq, you can get a ride to your destination in minutes.": - "Intaleq ile hedefinize dakikalar içinde ulaşabilirsiniz.", + "Intaleq ile dakikalar içinde hedefinize araç bulabilirsiniz.", "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": - "Intaleq, güvenliğe bağlıdır ve tüm kaptanlarımız dikkatlice incelenir ve arka plan kontrolleri yapılır.", - "To Home": "Eve", - "Home Saved": "Ev Kaydedildi", - "Destination selected": "Varış Yeri Seçildi", - "Now select start pick": "Şimdi başlangıç noktasını seçin", - "Pick from map": "Haritadan Seçin", - "Click here point": "Buraya tıklayın", + "Intaleq güvenliğe önem verir, tüm kaptanlarımız dikkatle incelenir.", + "Pick from map": "Haritadan seç", "No Car in your site. Sorry!": "Konumunuzda araç yok. Üzgünüz!", - "Nearest Car for you about ": "Size en yakın araç yaklaşık ", - "N/A": "Yok", - "From :": "Şuradan:", + "Nearest Car for you about ": "Size en yakın araç yaklaşık: ", + "From :": "Nereden:", "Get Details of Trip": "Yolculuk Detaylarını Al", "If you want add stop click here": "Durak eklemek istiyorsanız buraya tıklayın", - "Driver": "Sürücü", - "Where you want go ": "Nereye gitmek istiyorsunuz?", + "Where you want go ": "Nereye gitmek istiyorsunuz ", "My Card": "Kartım", "Start Record": "Kaydı Başlat", - "Wallet": "Cüzdan", "History of Trip": "Yolculuk Geçmişi", "Helping Center": "Yardım Merkezi", - "Record saved": "Kayıt Kaydedildi", + "Record saved": "Kayıt kaydedildi", "Trips recorded": "Kaydedilen Yolculuklar", "Select Your Country": "Ülkenizi Seçin", "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": - "Konumunuz için en doğru bilgileri alabilmeniz için lütfen aşağıdan ülkenizi seçin. Bu, uygulama deneyimini ve içeriği ülkenize göre uyarlamaya yardımcı olacaktır.", + "En doğru bilgiyi almak için lütfen ülkenizi seçin.", "Are you sure to delete recorded files": - "Kaydedilen dosyaları silmek istediğinizden emin misiniz?", - "Select recorded trip": "Kaydedilen yolculuğu seçin", + "Kayıtlı dosyaları silmek istediğinize emin misiniz?", + "Select recorded trip": "Kaydedilen yolculuğu seç", "Card Number": "Kart Numarası", - "Hi, Where to ": "Merhaba, Nereye?", - "Pick your destination from Map": "Hedefinizi haritadan seçin", - "Add Stops": "Duraklar Ekle", - "Get Direction": "Yön Tarifi Al", + "Hi, Where to ": "Selam, Nereye ", + "Pick your destination from Map": "Haritadan varış yerini seç", + "Add Stops": "Durak Ekle", + "Get Direction": "Yol Tarifi Al", "Add Location": "Konum Ekle", "Switch Rider": "Yolcuyu Değiştir", "You will arrive to your destination after timer end.": - "Zamanlayıcı bittikten sonra hedefinize varacaksınız.", + "Süre bittikten sonra hedefe varacaksınız.", "You can cancel trip": "Yolculuğu iptal edebilirsiniz", "The driver waitting you in picked location .": - "Sürücü sizi seçilen yerde bekliyor.", - "Pay with Your": "Ödeme Yönteminiz", + "Sürücü sizi seçilen konumda bekliyor.", + "Pay with Your": "Şununla Öde:", "Pay with Credit Card": "Kredi Kartı ile Öde", - "Payment History": "Ödeme Geçmişi", - "Show Promos to Charge": "Şarj İçin Promosyonları Göster", + "Show Promos to Charge": "Yükleme için Promosyonları Göster", "Point": "Puan", "How many hours would you like to wait?": "Kaç saat beklemek istersiniz?", "Driver Wallet": "Sürücü Cüzdanı", - "Choose between those Type Cars": - "Bu Araç Türleri Arasından Seçim Yapın", + "Choose between those Type Cars": "Bu Araç Tipleri Arasından Seçin", "hour": "saat", - "Select Waiting Hours": "Bekleme Saatlerini Seçin", - "Total Points is": "Toplam Puan", + "Select Waiting Hours": "Bekleme Süresini Seç", + "Total Points is": "Toplam Puan:", "You will receive a code in SMS message": - "SMS mesajıyla bir kod alacaksınız", - "Done": "Tamam", - "Total Budget from trips is ": "Yolculuklardan Toplam Bütçe ", + "SMS ile bir kod alacaksınız", + "Done": "Bitti", + "Total Budget from trips is ": "Yolculuklardan Toplam Bütçe: ", "Total Amount:": "Toplam Tutar:", "Total Budget from trips by\nCredit card is ": - "Kredi kartı ile yolculuklardan toplam bütçe ", + "Kredi kartı ile yolculuklardan\nToplam Bütçe: ", "This amount for all trip I get from Passengers": - "Yolculardan aldığım bu miktar tüm yolculuklar için", + "Yolculardan aldığım tüm yolculuk tutarı", "Pay from my budget": "Bütçemden öde", "This amount for all trip I get from Passengers and Collected For me in": - "Yolculardan aldığım ve benim için toplanan bu miktar tüm yolculuklar için", + "Bu tutar yolculardan aldığım ve benim için toplanan", "You can buy points from your budget": "Bütçenizden puan satın alabilirsiniz", - "insert amount": "miktarı girin", + "insert amount": "tutar girin", "You can buy Points to let you online\nby this list below": - "Çevrimiçi olmak için puan satın alabilirsiniz\naşağıdaki listeden", + "Çevrimiçi kalmak için Puan satın alabilirsiniz\naşağıdaki listeden", "Create Wallet to receive your money": - "Paranızı almak için cüzdan oluşturun", + "Paranızı almak için Cüzdan oluşturun", "Enter your feedback here": "Geri bildiriminizi buraya girin", "Please enter your feedback.": "Lütfen geri bildiriminizi girin.", "Feedback": "Geri Bildirim", "Submit ": "Gönder ", - "Click here to Show it in Map": - "Haritada göstermek için buraya tıklayın", + "Click here to Show it in Map": "Haritada Göstermek için Tıkla", "Canceled": "İptal Edildi", - "Type your Email": "E-postanızı yazın", - "No I want": "Hayır, istiyorum", - "Email is": "E-posta", - "Phone Number is": "Telefon Numarası", - "Date of Birth is": "Doğum Tarihi", - "Sex is ": "Cinsiyet ", + "No I want": "Hayır istiyorum", + "Email is": "E-posta:", + "Phone Number is": "Telefon:", + "Date of Birth is": "Doğum Tarihi:", + "Sex is ": "Cinsiyet: ", "Car Details": "Araç Detayları", - "VIN is": "Şasi Numarası", - "Color is ": "Renk ", - "Make is ": "Marka ", - "Model is": "Model", - "Year is": "Yıl", - "Expiration Date ": "Son Kullanma Tarihi ", - "Edit Your data": "Verilerinizi Düzenleyin", - "write vin for your car": "Arabanız için şasi numarasını yazın", - "VIN": "Şasi Numarası", - "write Color for your car": "Arabanız için rengi yazın", - "write Make for your car": "Arabanız için markayı yazın", - "write Model for your car": "Arabanız için modeli yazın", - "write Year for your car": "Arabanız için yılı yazın", + "VIN is": "Şasi No:", + "Color is ": "Renk: ", + "Make is ": "Marka: ", + "Model is": "Model:", + "Year is": "Yıl:", + "Expiration Date ": "Son Kullanma Tarihi: ", + "Edit Your data": "Verilerini Düzenle", + "write vin for your car": "aracın şasi numarasını yaz", + "VIN": "Şasi No", + "Device Change Detected": "Cihaz Değişikliği Algılandı", + "Please verify your identity": "Lütfen kimliğinizi doğrulayın", + "write Color for your car": "aracın rengini yaz", + "write Make for your car": "aracın markasını yaz", + "write Model for your car": "aracın modelini yaz", + "write Year for your car": "aracın yılını yaz", "write Expiration Date for your car": - "Arabanız için son kullanma tarihini yazın", + "aracın son kullanma tarihini yaz", "Tariffs": "Tarifeler", - "Minimum fare": "Minimum Ücret", - "Maximum fare": "Maksimum Ücret", - "Flag-down fee": "Açılış Ücreti", + "Minimum fare": "Minimum ücret", + "Maximum fare": "Maksimum ücret", + "Flag-down fee": "Açılış ücreti", "Including Tax": "Vergi Dahil", "BookingFee": "Rezervasyon Ücreti", "Morning": "Sabah", "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": - "07:30 - 10:30 (Perşembe, Cuma, Cumartesi, Pazartesi)", + "07:30'dan 10:30'a kadar", "Evening": "Akşam", "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": - "12:00 - 15:00 (Perşembe, Cuma, Cumartesi, Pazartesi)", + "12:00'den 15:00'e kadar", "Night": "Gece", "You have in account": "Hesabınızda var", - "Select Country": "Ülke Seçin", + "Select Country": "Ülke Seç", "Ride Today : ": "Bugünkü Yolculuk: ", - "After this period\nYou can\'t cancel!": + "After this period\nYou can't cancel!": "Bu süreden sonra\nİptal edemezsiniz!", - "from 23:59 till 05:30": "23:59 - 05:30", - "Rate Driver": "Sürücüyü Değerlendir", - "Total Cost is ": "Toplam Maliyet ", - "Write note": "Not yazın", - "Time to arrive": "Varış Süresi", + "from 23:59 till 05:30": "23:59'dan 05:30'a kadar", + "Rate Driver": "Sürücüyü Puanla", + "Total Cost is ": "Toplam Maliyet: ", + "Write note": "Not yaz", + "Time to arrive": "Varış zamanı", "Ride Summaries": "Yolculuk Özetleri", "Total Cost": "Toplam Maliyet", - "Average of Hours of": "Saat Ortalaması", - " is ON for this month": " bu ay açık", + "Average of Hours of": "Şu saatlerin ortalaması:", + " is ON for this month": " bu ay için AÇIK", "Days": "Günler", - "Total Hours on month": "Aylık Toplam Saat", - "Counts of Hours on days": "Günlük Saat Sayısı", + "Total Hours on month": "Aydaki Toplam Saat", + "Counts of Hours on days": "Günlerdeki Saat Sayısı", "OrderId": "Sipariş No", "created time": "oluşturulma zamanı", - "Intaleq Over": "Aşırı Hız", + "Intaleq Over": "Intaleq Bitti", "I will slow down": "Yavaşlayacağım", "Map Passenger": "Yolcu Haritası", "Be Slowly": "Yavaş Ol", "If you want to make Google Map App run directly when you apply order": - "Sipariş verirken Google Haritalar uygulamasının doğrudan çalışmasını istiyorsanız", + "Siparişi uyguladığınızda Google Haritalar'ın direkt açılmasını istiyorsanız", "You can change the language of the app": "Uygulamanın dilini değiştirebilirsiniz", "Your Budget less than needed": "Bütçeniz gerekenden az", "You can change the Country to get all features": - "Tüm özelliklere erişmek için ülkeyi değiştirebilirsiniz", - "Change Country": "Ülkeyi Değiştir", + "Tüm özellikleri almak için Ülkeyi değiştirebilirsiniz", + "Change Country": "Ülke Değiştir" }, "fr": { "Order": "Commande", - "Where to": "Où aller", + "OrderVIP": "Commande VIP", + "Cancel Trip": "Annuler le trajet", + "Passenger Cancel Trip": "Le passager a annulé le trajet", + "VIP Order": "Commande VIP", + "Hi ,I Arrive your site": "Bonjour, je suis arrivé à votre position", + "The driver accepted your trip": + "Le chauffeur a accepté votre trajet", + "message From passenger": "Message du passager", + "Cancel": "Annuler", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "Trajet annulé. Les frais seront crédités sur votre portefeuille.", + "token change": "Changement de jeton", + "face detect": "Détection de visage", + "Face Detection Result": "Résultat de la détection de visage", + "similar": "Similaire", + "not similar": "Non similaire", + "Hi ,I will go now": "Bonjour, je pars maintenant", + "Passenger come to you": "Le passager vient vers vous", + "Call Income": "Appel entrant", + "Call Income from Passenger": "Appel entrant du passager", + "Criminal Document Required": "Extrait de casier judiciaire requis", + "You should have upload it .": "Vous devez le télécharger.", + "Call End": "Fin de l'appel", + "The order has been accepted by another driver.": + "La commande a été acceptée par un autre chauffeur.", + "The order Accepted by another Driver": + "Commande acceptée par un autre chauffeur", + "We regret to inform you that another driver has accepted this order.": + "Nous regrettons de vous informer qu'un autre chauffeur a accepté cette commande.", + "Driver Applied the Ride for You": + "Le chauffeur a demandé le trajet pour vous", + "Applied": "Demandé", + "Pay by Sham Cash": "Payer via Sham Cash", + "Pay with Debit Card": "Payer par carte de débit", + "Please go to Car Driver": "Veuillez rejoindre le chauffeur", + "Ok I will go now.": "D'accord, j'y vais maintenant.", + "Accepted Ride": "Trajet accepté", + "Driver Accepted the Ride for You": + "Le chauffeur a accepté le trajet pour vous", + "Promo": "Promo", + "Show latest promo": "Voir les dernières promos", + "Trip Monitoring": "Suivi du trajet", + "Driver Is Going To Passenger": + "Le chauffeur se rend vers le passager", + "Please stay on the picked point.": + "Veuillez rester au point de prise en charge.", + "message From Driver": "Message du chauffeur", + "Trip is Begin": "Le trajet commence", + "Cancel Trip from driver": "Annulation du trajet par le chauffeur", + "We will look for a new driver.\nPlease wait.": + "Nous cherchons un nouveau chauffeur.\nVeuillez patienter.", + "The driver canceled your ride.": + "Le chauffeur a annulé votre course.", + "Driver Finish Trip": "Le chauffeur a terminé le trajet", + "you will pay to Driver": "Vous paierez au chauffeur", + "Don’t forget your personal belongings.": + "N'oubliez pas vos effets personnels.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "Veuillez vous assurer d'avoir tous vos effets personnels et que tout solde restant a été ajouté à votre portefeuille avant de partir. Merci d'avoir choisi Intaleq.", + "Finish Monitor": "Terminer le suivi", + "Trip finished": "Trajet terminé", + "Call Income from Driver": "Appel entrant du chauffeur", + "Driver Cancelled Your Trip": "Le chauffeur a annulé votre trajet", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "Vous paierez le chauffeur pour son temps, vérifiez votre portefeuille Intaleq", + "Order Applied": "Commande appliquée", + "welcome to intaleq": "Bienvenue chez Intaleq", + "login or register subtitle": + "Entrez votre numéro de mobile pour vous connecter ou vous inscrire", + "An application error occurred.": + "Une erreur d'application s'est produite.", + "Submission Failed": "Échec de l'envoi", + "Your complaint has been submitted.": + "Votre réclamation a été envoyée.", + "Failed to connect to the server. Please try again.": + "Échec de la connexion au serveur. Veuillez réessayer.", + "Ride information not found. Please refresh the page.": + "Informations sur le trajet introuvables. Veuillez actualiser la page.", + "Please describe your issue before submitting.": + "Veuillez décrire votre problème avant d'envoyer.", + "An application error occurred during upload.": + "Une erreur s'est produite lors du téléchargement.", + "Failed to upload audio file.": + "Échec du téléchargement du fichier audio.", + "Audio uploaded successfully.": "Audio téléchargé avec succès.", + "Complaint cannot be filed for this ride. It may not have been completed or started.": + "Impossible de déposer une plainte pour ce trajet. Il n'a peut-être pas été terminé ou commencé.", + "2. Attach Recorded Audio (Optional)": + "2. Joindre un enregistrement audio (Optionnel)", + "Please enter a description of the issue.": + "Veuillez entrer une description du problème.", + "phone number label": "Numéro de téléphone", + "phone number required": "Numéro de téléphone requis", + "send otp button": "Envoyer le code OTP", + "verify your number title": "Vérifiez votre numéro", + "otp sent subtitle": + "Un code à 5 chiffres a été envoyé au\n@phoneNumber", + "verify and continue button": "Vérifier et continuer", + "enter otp validation": "Veuillez entrer le code OTP à 5 chiffres", + "one last step title": "Une dernière étape", + "complete profile subtitle": "Complétez votre profil pour commencer", + "first name label": "Prénom", + "first name required": "Prénom requis", + "last name label": "Nom", + "Verify OTP": "Vérifier l'OTP", + "Verification Code": "Code de vérification", + "We have sent a verification code to your mobile number:": + "Nous avons envoyé un code de vérification à votre numéro de mobile :", + "Verify": "Vérifier", + "Resend Code": "Renvoyer le code", + "You can resend in": "Vous pouvez renvoyer dans", + "seconds": "secondes", + "Error": "Erreur", + "Please enter the complete 6-digit code.": + "Veuillez entrer le code complet à 6 chiffres.", + "last name required": "Nom requis", + "email optional label": "Email (Optionnel)", + "complete registration button": "Terminer l'inscription", + "User with this phone number or email already exists.": + "Un utilisateur avec ce numéro ou cet email existe déjà.", + "otp sent success": "Code OTP envoyé avec succès.", + "failed to send otp": "Échec de l'envoi du code OTP.", + "server error try again": "Erreur serveur, veuillez réessayer.", + "an error occurred": "Une erreur s'est produite : @error", + "otp verification failed": "Échec de la vérification OTP.", + "registration failed": "Échec de l'inscription.", + "welcome user": "Bienvenue, @firstName !", + "Cancel Trip from driver": "Annuler le trajet (Chauffeur)", + "We will look for a new driver.\nPlease wait.": + "Nous cherchons un nouveau chauffeur.\nVeuillez patienter.", + "The driver canceled your ride.": + "Le chauffeur a annulé votre course.", + "Driver Finish Trip": "Le chauffeur a terminé la course", + "you will pay to Driver": "Vous paierez au chauffeur", + "Don't forget your personal belongings.": + "N'oubliez pas vos effets personnels.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "Veuillez vérifier que vous avez tous vos effets personnels et que tout solde restant a été ajouté à votre portefeuille. Merci d'avoir choisi Intaleq.", + "Finish Monitor": "Terminer la surveillance", + "Trip finished": "Trajet terminé", + "Call Income from Driver": "Appel entrant du chauffeur", + "Driver Cancelled Your Trip": "Le chauffeur a annulé votre trajet", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "Vous paierez le temps du chauffeur, consultez votre portefeuille Intaleq", + "Order Applied": "Commande passée", + "Share App": "Partager l'application", + "Wallet": "Portefeuille", + "Balance": "Solde", + "Don’t forget your personal belongings.": + "N'oubliez pas vos effets personnels.", + "Profile": "Profil", + "Contact Support": "Contacter le support", + "Session expired. Please log in again.": + "Session expirée. Veuillez vous reconnecter.", + "Security Warning": "⚠️ Avertissement de sécurité", + "Potential security risks detected. The application may not function correctly.": + "Risques de sécurité potentiels détectés. L'application peut ne pas fonctionner correctement.", + "please order now": "Commandez maintenant", + "Where to": "Où allez-vous ?", "Where are you going?": "Où allez-vous ?", "Quick Actions": "Actions rapides", - "My Wallet": "Mon portefeuille", + "My Balance": "Mon solde", "Order History": "Historique des commandes", - "Contact Us": "Contactez-nous", + "Contact Us": "Nous contacter", "Driver": "Chauffeur", - "Complaint": "Plainte", - "Promos": "Promotions", + "Complaint": "Réclamation", + "Promos": "Promos", "Recent Places": "Lieux récents", "From": "De", "WhatsApp Location Extractor": "Extracteur de localisation WhatsApp", @@ -4190,81 +6143,344 @@ class MyTranslation extends Translations { "Paste location link here": "Collez le lien de localisation ici", "Go to this location": "Aller à cet endroit", "Paste WhatsApp location link": - "Collez le lien de localisation WhatsApp", + "Coller le lien de localisation WhatsApp", "Select Order Type": "Sélectionner le type de commande", - "Choose who this order is for": - "Choisissez pour qui est cette commande", - "I want to order for myself": "Je veux commander pour moi-même", + "Choose who this order is for": "Pour qui est cette commande ?", + "I want to order for myself": "Je commande pour moi-même", "I want to order for someone else": - "Je veux commander pour quelqu'un d'autre", - "Cancel": "Annuler", - "Order for someone else": "Commander pour quelqu'un d'autre", - "Order for myself": "Commander pour moi-même", + "Je commande pour quelqu'un d'autre", + "Order for someone else": "Commander pour autrui", + "Order for myself": "Commander pour moi", "Are you want to go this site": "Voulez-vous aller à cet endroit ?", - "Yes": "Oui", "No": "Non", + "Pay by Sham Cash": "Payer via Sham Cash", + "Intaleq Wallet": "Portefeuille Intaleq", + "Have a promo code?": "Avez-vous un code promo ?", + "Your Wallet balance is ": "Le solde de votre portefeuille est ", + "Cash": "Espèces", + "Phone Number": "Numéro de téléphone", + "Search country": "Rechercher un pays", + "Payment Successful!": "Paiement réussi !", + "Your payment was successful.": + "Votre paiement a été effectué avec succès.", + "Pay directly to the captain": "Payer directement au chauffeur", + "Top up Wallet to continue": + "Rechargez votre portefeuille pour continuer", + "Or pay with Cash instead": "Ou payez en espèces", + "Confirm & Find a Ride": "Confirmer et trouver un trajet", + "Balance:": "Solde :", + "Alerts": "Alertes", + "Welcome Back!": "Bon retour !", + "Current Balance": "Solde actuel", + "Set Wallet Phone Number": "Définir le numéro du portefeuille", + "Link a phone number for transfers": + "Lier un numéro pour les transferts", + "Payment History": "Historique des paiements", + "View your past transactions": "Voir vos transactions passées", + "Top up Wallet": "Recharger le portefeuille", + "Add funds using our secure methods": + "Ajouter des fonds via nos méthodes sécurisées", + "Driver is waiting": "Le chauffeur attend", + "Type your message...": "Tapez votre message...", + "Driver Accepted Request": "Le chauffeur a accepté la demande", + "Message": "Message", + "Call": "Appeler", + "Set Phone Number": "Définir le numéro de téléphone", + "Select This Ride": "Sélectionner ce trajet", + "Call Driver": "Appeler le chauffeur", + "Increase Fare": "Augmenter le tarif", + "Stop": "Arrêter", + "Record": "Enregistrer", + "Share": "Partager", + "WhatsApp": "WhatsApp", + "SOS": "SOS", + "No drivers accepted your request yet": + "Aucun chauffeur n'a encore accepté votre demande", + "Increasing the fare might attract more drivers. Would you like to increase the price?": + "Augmenter le tarif pourrait attirer plus de chauffeurs. Voulez-vous augmenter le prix ?", + "Please make sure not to leave any personal belongings in the car.": + "Veuillez vous assurer de ne rien laisser dans la voiture.", + "Cancel Ride": "Annuler la course", + "Route Not Found": "Itinéraire introuvable", + "We couldn't find a valid route to this destination. Please try selecting a different point.": + "Impossible de trouver un itinéraire valide vers cette destination. Veuillez sélectionner un autre point.", + "alert": "Alerte", + "You can call or record audio during this trip.": + "Vous pouvez appeler ou enregistrer l'audio pendant ce trajet.", + "Warning: Speeding detected!": + "Attention : Excès de vitesse détecté !", + "Fixed Price": "Prix fixe", + "Report": "Signaler", + "Comfort": "Confort", + "Intaleq Balance": "Solde Intaleq", + "Search for a starting point": "Rechercher un point de départ", + "Top up Balance to continue": "Rechargez le solde pour continuer", + "Electric": "Électrique", + "Lady": "Dame", + "Van": "Van", + "Rayeh Gai": "Aller-Retour", + "Join Intaleq as a driver using my referral code!": + "Rejoignez Intaleq comme chauffeur avec mon code de parrainage !", + "Use code:": "Utilisez le code :", + "Download the Intaleq Driver app now and earn rewards!": + "Téléchargez l'appli Chauffeur Intaleq et gagnez des récompenses !", + "Get a discount on your first Intaleq ride!": + "Obtenez une réduction sur votre premier trajet Intaleq !", + "Use my referral code:": "Utilisez mon code de parrainage :", + "Download the Intaleq app now and enjoy your ride!": + "Téléchargez Intaleq maintenant et profitez du trajet !", + "Contacts Loaded": "Contacts chargés", + "Showing": "Affichage de", + "of": "sur", + "Pay by MTN Wallet": "Payer via MTN Wallet", + "Pay by Syriatel Wallet": "Payer via Syriatel Wallet", + "Customer not found": "Client introuvable", + "Wallet is blocked": "Portefeuille bloqué", + "Customer phone is not active": + "Le téléphone du client n'est pas actif", + "Balance not enough": "Solde insuffisant", + "Balance limit exceeded": "Limite de solde dépassée", + "Incorrect sms code": "⚠️ Code SMS incorrect. Veuillez réessayer.", + "contacts. Others were hidden because they don't have a phone number.": + "contacts. Les autres sont masqués car ils n'ont pas de numéro.", + "No contacts found": "Aucun contact trouvé", + "No contacts with phone numbers were found on your device.": + "Aucun contact avec numéro de téléphone trouvé sur votre appareil.", + "Permission denied": "Permission refusée", + "Contact permission is required to pick contacts": + "La permission d'accès aux contacts est requise.", + "An error occurred while picking contacts:": + "Une erreur est survenue lors de la sélection des contacts :", + "Please enter a correct phone": "Veuillez entrer un numéro valide", + "Success": "Succès", + "Invite sent successfully": "Invitation envoyée avec succès", + "Hello! I'm inviting you to try Intaleq.": + "Bonjour ! Je vous invite à essayer Intaleq.", + "Use my invitation code to get a special gift on your first ride!": + "Utilisez mon code pour un cadeau spécial lors de votre premier trajet !", + "Your personal invitation code is:": + "Votre code d'invitation personnel est :", + "Be sure to use it quickly! This code expires at": + "Utilisez-le vite ! Ce code expire le", + "Download the app now:": "Téléchargez l'application :", + "See you on the road!": "À bientôt sur la route !", + "This phone number has already been invited.": + "Ce numéro a déjà été invité.", + "An unexpected error occurred. Please try again.": + "Une erreur inattendue s'est produite. Réessayez.", + "You deserve the gift": "Vous méritez le cadeau", + "Claim your 20 LE gift for inviting": + "Réclamez votre cadeau de 20 € pour l'invitation", + "You have got a gift for invitation": + "Vous avez reçu un cadeau pour l'invitation", + "You have earned 20": "Vous avez gagné 20", + "LE": "€", + "Vibration feedback for all buttons": + "Vibration pour tous les boutons", + "Share with friends and earn rewards": + "Partagez avec des amis et gagnez des récompenses", + "Gift Already Claimed": "Cadeau déjà réclamé", + "You have already received your gift for inviting": + "Vous avez déjà reçu votre cadeau pour cette invitation", + "Keep it up!": "Continuez comme ça !", + "has completed": "a terminé", + "trips": "trajets", + "Personal Information": "Informations personnelles", + "Name": "Nom", + "Not set": "Non défini", + "Gender": "Sexe", + "Education": "Éducation", + "Work & Contact": "Travail et Contact", + "Employment Type": "Type d'emploi", + "Marital Status": "État civil", + "SOS Phone": "Téléphone SOS", + "Sign Out": "Se déconnecter", + "Delete My Account": "Supprimer mon compte", + "Update Gender": "Mettre à jour le sexe", + "Update": "Mettre à jour", + "Update Education": "Mettre à jour l'éducation", + "Are you sure? This action cannot be undone.": + "Êtes-vous sûr ? Cette action est irréversible.", + "Confirm your Email": "Confirmez votre email", + "Type your Email": "Tapez votre email", + "Delete Permanently": "Supprimer définitivement", + "Male": "Homme", + "Female": "Femme", + "Other": "Autre", + "High School Diploma": "Baccalauréat", + "Associate Degree": "BTS / DUT", + "Bachelor's Degree": "Licence", + "Master's Degree": "Master", + "Doctoral Degree": "Doctorat", + "Select your preferred language for the app interface.": + "Sélectionnez votre langue préférée pour l'interface.", + "Language Options": "Options de langue", + "You can claim your gift once they complete 2 trips.": + "Vous pourrez réclamer votre cadeau après qu'ils aient terminé 2 trajets.", + "Closest & Cheapest": "Le plus proche et le moins cher", + "Comfort choice": "Choix confort", + "Travel in a modern, silent electric car. A premium, eco-friendly choice for a smooth ride.": + "Voyagez dans une voiture électrique moderne et silencieuse. Un choix premium et écologique.", + "Spacious van service ideal for families and groups. Comfortable, safe, and cost-effective travel together.": + "Service de van spacieux idéal pour les familles et groupes. Confortable, sûr et économique.", + "Quiet & Eco-Friendly": "Calme et Écologique", + "Lady Captain for girls": "Chauffeur femme pour dames", + "Van for familly": "Van pour la famille", "Are you sure to delete this location?": - "Êtes-vous sûr de vouloir supprimer cet endroit ?", - "deleted": "supprimé", - "To Work": "Au travail", - "Work Saved": "Lieu de travail enregistré", - "To Home": "À la maison", - "Home Saved": "Lieu de domicile enregistré", - "Destination selected": "Destination sélectionnée", - "Now select start pick": - "Maintenant, sélectionnez le point de départ", - "OK": "OK", - "Confirm Pick-up Location": "Confirmer le lieu de prise en charge", - "Set Location on Map": "Définir l'emplacement sur la carte", - "Nearest Car: ~": "Voiture la plus proche : ~", - "Nearest Car": "Voiture la plus proche", - "No cars nearby": "Aucune voiture à proximité", - "Favorite Places": "Lieux favoris", - "No favorite places yet!": "Aucun lieu favori pour le moment !", - "from your favorites": "de vos favoris", - "Back": "Retour", + "Voulez-vous vraiment supprimer ce lieu ?", + "Change Work location?": "Changer le lieu de travail ?", + "Change Home location?": "Changer le lieu de domicile ?", + "Submit a Complaint": "Déposer une réclamation", + "Submit Complaint": "Envoyer la réclamation", + "No trip history found": "Aucun historique de trajet", + "Your past trips will appear here.": + "Vos trajets passés apparaîtront ici.", + "1. Describe Your Issue": "1. Décrivez votre problème", + "Enter your complaint here...": "Entrez votre réclamation ici...", + "2. Attach Recorded Audio": "2. Joindre l'audio enregistré", + "No audio files found.": "Aucun fichier audio trouvé.", + "Confirm Attachment": "Confirmer la pièce jointe", + "Attach this audio file?": "Joindre ce fichier audio ?", + "Uploaded": "Téléchargé", + "3. Review Details & Response": "3. Revoir les détails et la réponse", + "Date": "Date", + "Today's Promos": "Promos du jour", + "No promos available right now.": + "Aucune promo disponible pour le moment.", + "Check back later for new offers!": + "Revenez plus tard pour de nouvelles offres !", + "Valid Until:": "Valable jusqu'au :", + "CODE": "CODE", + "Login": "Connexion", "Sign in for a seamless experience": "Connectez-vous pour une expérience fluide", "Sign In with Google": "Se connecter avec Google", "Sign in with Apple": "Se connecter avec Apple", + "User not found": "Utilisateur introuvable", "Need assistance? Contact us": "Besoin d'aide ? Contactez-nous", - "User not found": "Utilisateur non trouvé", - "Email": "E-mail", - "Your email address": "Votre adresse e-mail", - "Enter a valid email": "Entrez une adresse e-mail valide", + "Email": "Email", + "Your email address": "Votre adresse email", + "Enter a valid email": "Entrez un email valide", "Password": "Mot de passe", + "Your password": "Votre mot de passe", "Enter your password": "Entrez votre mot de passe", - "Submit": "Soumettre", + "Submit": "Envoyer", "Terms of Use & Privacy Notice": - "Conditions d'utilisation et politique de confidentialité", + "Conditions d'utilisation et Avis de confidentialité", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the ": + "En sélectionnant \"J'accepte\" ci-dessous, je confirme avoir lu et accepté les ", "Terms of Use": "Conditions d'utilisation", - "Privacy Notice": "Politique de confidentialité", + " and acknowledge the ": " et reconnais l' ", + "Privacy Notice": "Avis de confidentialité", + " . I am at least 18 years old.": " . J'ai au moins 18 ans.", + "I Agree": "J'accepte", + "Continue": "Continuer", + "Enable Location": "Activer la localisation", + "To give you the best experience, we need to know where you are. Your location is used to find nearby captains and for pickups.": + "Pour vous offrir la meilleure expérience, nous devons savoir où vous êtes. Votre position est utilisée pour trouver des chauffeurs à proximité.", + "Allow Location Access": "Autoriser l'accès à la localisation", + "Welcome to Intaleq!": "Bienvenue sur Intaleq !", + "Before we start, please review our terms.": + "Avant de commencer, veuillez consulter nos conditions.", + "Your journey starts here": "Votre voyage commence ici", + "Cancel Search": "Annuler la recherche", + "Set pickup location": "Définir le lieu de prise en charge", + "Move the map to adjust the pin": + "Déplacez la carte pour ajuster l'épingle", + "Searching for the nearest captain...": + "Recherche du chauffeur le plus proche...", + "No one accepted? Try increasing the fare.": + "Personne n'a accepté ? Essayez d'augmenter le tarif.", + "Increase Your Trip Fee (Optional)": + "Augmentez le prix de votre trajet (Optionnel)", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "Nous n'avons pas encore trouvé de chauffeurs. Pensez à augmenter votre tarif pour rendre votre offre plus attractive.", + "No, thanks": "Non, merci", + "Increase Fee": "Augmenter le tarif", + "Copy": "Copier", + "Promo Copied!": "Promo copiée !", + "Code": "Code", + "copied to clipboard": "copié dans le presse-papiers", + "Price": "Prix", + "Intaleq's Response": "Réponse d'Intaleq", + "Awaiting response...": "En attente de réponse...", + "Audio file not attached": "Fichier audio non joint", + "The audio file is not uploaded yet.\\nDo you want to submit without it?": + "Le fichier audio n'est pas encore téléchargé.\\nVoulez-vous envoyer sans ?", + "deleted": "supprimé", + "To Work": "Au Travail", + "Work Saved": "Lieu de travail enregistré", + "To Home": "À la Maison", + "Home Saved": "Domicile enregistré", + "Destination selected": "Destination sélectionnée", + "Now select start pick": "Sélectionnez maintenant le départ", + "OK": "OK", + "Confirm Pick-up Location": "Confirmer le lieu de prise en charge", + "Set Location on Map": "Définir le lieu sur la carte", + "Leave a detailed comment (Optional)": + "Laisser un commentaire détaillé (Optionnel)", + "Share your experience to help us improve...": + "Partagez votre expérience pour nous aider à nous améliorer...", + "Your valuable feedback helps us improve our service quality.": + "Vos commentaires nous aident à améliorer la qualité de notre service.", + "witout zero": "sans zéro", + "Top up Balance": "Recharger le solde", + "An error occurred": "Une erreur s'est produite", + "Send WhatsApp Message": "Envoyer un message WhatsApp", + "How was your trip with": "Comment s'est passé votre trajet avec", + "Drawing route on map...": "Traçage de l'itinéraire sur la carte...", + "Please wait while we prepare your trip.": + "Veuillez patienter pendant la préparation de votre trajet.", + "Submit Rating": "Envoyer la note", + "Call Support": "Appeler le support", + "You can contact us during working hours from 10:00 - 16:00.": + "Vous pouvez nous contacter pendant les heures de travail de 10h00 à 16h00.", + "Intaleq is the safest and most reliable ride-sharing app designed especially for passengers in Syria. We provide a comfortable, respectful, and affordable riding experience with features that prioritize your safety and convenience. Our trusted captains are verified, insured, and supported by regular car maintenance carried out by top engineers. We also offer on-road support services to make sure every trip is smooth and worry-free. With Intaleq, you enjoy quality, safety, and peace of mind—every time you ride.": + "Intaleq est l'application de covoiturage la plus sûre et la plus fiable conçue pour la France. Nous offrons une expérience confortable, respectueuse et abordable, avec la sécurité comme priorité. Nos chauffeurs de confiance sont vérifiés et assurés. Avec Intaleq, profitez de la qualité et de la tranquillité d'esprit à chaque trajet.", + "Work time is from 10:00 AM to 16:00 PM.\nYou can send a WhatsApp message or email.": + "Les heures de travail sont de 10h00 à 16h00.\nVous pouvez envoyer un message WhatsApp ou un email.", + "Sorry": "Désolé", + "Customer MSISDN doesn’t have customer wallet": + "Le numéro du client n'a pas de portefeuille client", + "Please enter the number without the leading 0": + "Veuillez entrer le numéro sans le 0 initial", + "Please enter your phone number": + "Veuillez entrer votre numéro de téléphone", + "Phone number seems too short": + "Le numéro de téléphone semble trop court", + "No cars are available at the moment. Please try again later.": + "Aucune voiture disponible pour le moment. Veuillez réessayer plus tard.", + "Nearest Car: ~": "Voiture la plus proche : ~", + "Nearest Car": "Voiture la plus proche", + "No cars nearby": "Aucune voiture à proximité", + "Favorite Places": "Lieux favoris", + "No favorite places yet!": "Pas encore de lieux favoris !", + "from your favorites": "de vos favoris", + "Back": "Retour", + "Enter your code below to apply the discount.": + "Entrez votre code ci-dessous pour appliquer la réduction.", "By selecting \"I Agree\" below, I confirm that I have read and agree to the": "En sélectionnant \"J'accepte\" ci-dessous, je confirme avoir lu et accepté les", - "and acknowledge the": "et reconnais la", - ". I am at least 18 years old.": ". J'ai au moins 18 ans.", - "Continue": "Continuer", + "and acknowledge the": "et reconnais le", "Enable Location Access": "Activer l'accès à la localisation", "We need your location to find nearby drivers for pickups and drop-offs.": - "Nous avons besoin de votre localisation pour trouver des chauffeurs à proximité pour les prises en charge et les déposes.", - "Allow Location Access": "Autoriser l'accès à la localisation", + "Nous avons besoin de votre position pour trouver des chauffeurs à proximité.", "You should restart app to change language": "Vous devez redémarrer l'application pour changer la langue", "Home Page": "Page d'accueil", - "To change Language the App": - "Pour changer la langue de l'application", + "To change Language the App": "Pour changer la langue de l'appli", "Learn more about our app and mission": - "En savoir plus sur notre application et notre mission", - "Promos For Today": "Promotions du jour", + "En savoir plus sur notre appli et notre mission", + "Promos For Today": "Promos du jour", "Choose your ride": "Choisissez votre trajet", "Your Journey Begins Here": "Votre voyage commence ici", "Bonus gift": "Cadeau bonus", "Pay": "Payer", "Get": "Obtenir", - "Send to Driver Again": "Envoyer à nouveau au chauffeur", + "Send to Driver Again": "Renvoyer au chauffeur", "Driver Name:": "Nom du chauffeur :", "No trip data available": "Aucune donnée de trajet disponible", - "Car Plate:": "Plaque d'immatriculation :", + "Car Plate:": "Immatriculation :", "remaining": "restant", "Order Cancelled": "Commande annulée", "You canceled VIP trip": "Vous avez annulé le trajet VIP", @@ -4272,17 +6488,16 @@ class MyTranslation extends Translations { "Your trip is scheduled": "Votre trajet est programmé", "Don't forget your ride!": "N'oubliez pas votre trajet !", "Trip updated successfully": "Trajet mis à jour avec succès", - "Car Make:": "Marque de la voiture :", - "Car Model:": "Modèle de la voiture :", - "Car Color:": "Couleur de la voiture :", - "Driver Phone:": "Téléphone du chauffeur :", + "Car Make:": "Marque :", + "Car Model:": "Modèle :", + "Car Color:": "Couleur :", + "Driver Phone:": "Tél. Chauffeur :", "Pre-booking": "Pré-réservation", - "Waiting VIP": "En attente VIP", + "Waiting VIP": "Attente VIP", "Driver List": "Liste des chauffeurs", "Confirm Trip": "Confirmer le trajet", - "Select date and time of trip": - "Sélectionnez la date et l'heure du trajet", - "Date and Time Picker": "Sélecteur de date et d'heure", + "Select date and time of trip": "Sélectionnez la date et l'heure", + "Date and Time Picker": "Sélecteur de date et heure", "Trip Status:": "Statut du trajet :", "pending": "en attente", "accepted": "accepté", @@ -4293,7 +6508,7 @@ class MyTranslation extends Translations { "Scheduled Time:": "Heure prévue :", "No drivers available": "Aucun chauffeur disponible", "No drivers available at the moment. Please try again later.": - "Aucun chauffeur disponible pour le moment. Veuillez réessayer plus tard.", + "Aucun chauffeur disponible pour le moment. Réessayez plus tard.", "you have a negative balance of": "vous avez un solde négatif de", "Please try again in a few moments": "Veuillez réessayer dans quelques instants", @@ -4302,324 +6517,301 @@ class MyTranslation extends Translations { "The driver accepted your order for": "Le chauffeur a accepté votre commande pour", "wallet due to a previous trip.": - "portefeuille en raison d'un trajet précédent.", + "portefeuille dû à un trajet précédent.", "rides": "trajets", - "Add Work": "Ajouter le travail", + "Add Work": "Ajouter Travail", "The reason is": "La raison est", "User does not have a wallet #1652": "L'utilisateur n'a pas de portefeuille #1652", "Price of trip": "Prix du trajet", "From:": "De :", "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "Pour les trajets rapides et de livraison, le prix est calculé dynamiquement. Pour les trajets confort, le prix est basé sur le temps et la distance.", + "Pour les trajets Intaleq et Livraison, le prix est dynamique. Pour Confort, le prix est basé sur le temps et la distance.", "Phone Wallet Saved Successfully": - "Portefeuille téléphone enregistré avec succès", + "Numéro de portefeuille enregistré avec succès", "Add wallet phone you use": - "Ajoutez le téléphone de portefeuille que vous utilisez", + "Ajoutez le numéro de portefeuille que vous utilisez", "Update Available": "Mise à jour disponible", "Phone number must be exactly 11 digits long": - "Le numéro de téléphone doit comporter exactement 11 chiffres", - "Insert Wallet phone number": - "Insérez le numéro de téléphone du portefeuille", + "Le numéro de téléphone doit comporter exactement 10 chiffres", + "Insert Wallet phone number": "Insérer le numéro de portefeuille", "Phone number isn't an Egyptian phone number": - "Le numéro de téléphone n'est pas un numéro égyptien", + "Ce n'est pas un numéro de téléphone français", "A new version of the app is available. Please update to the latest version.": - "Une nouvelle version de l'application est disponible. Veuillez mettre à jour vers la dernière version.", + "Une nouvelle version de l'application est disponible. Veuillez mettre à jour.", "We use location to get accurate and nearest passengers for you": - "Nous utilisons la localisation pour obtenir des passagers précis et les plus proches pour vous", + "Nous utilisons la localisation pour trouver les passagers les plus proches avec précision", "This ride is already applied by another driver.": - "Ce trajet est déjà pris par un autre chauffeur.", + "Ce trajet a déjà été pris par un autre chauffeur.", "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": - "Nous utilisons votre localisation précise pour trouver le chauffeur disponible le plus proche et fournir des informations précises sur la prise en charge et la dépose. Vous pouvez gérer cela dans les paramètres.", - "message From Driver": "Message du chauffeur", - "message From passenger": "Message du passager", + "Nous utilisons votre position précise pour trouver le chauffeur le plus proche et fournir des infos exactes. Vous pouvez gérer cela dans les Paramètres.", "Where are you, sir?": "Où êtes-vous, monsieur ?", "I've been trying to reach you but your phone is off.": - "J'ai essayé de vous joindre mais votre téléphone est éteint.", + "J'essaie de vous joindre mais votre téléphone est éteint.", "Please don't be late": "S'il vous plaît, ne soyez pas en retard", "Please don't be late, I'm waiting for you at the specified location.": - "S'il vous plaît, ne soyez pas en retard, je vous attends à l'endroit spécifié.", + "Ne soyez pas en retard, je vous attends à l'endroit indiqué.", "My location is correct. You can search for me using the navigation app": - "Ma localisation est correcte. Vous pouvez me chercher en utilisant l'application de navigation.", + "Ma position est correcte. Vous pouvez me chercher via le GPS", "Hello, I'm at the agreed-upon location": - "Bonjour, je suis à l'endroit convenu", - "How much longer will you be?": - "Combien de temps encore serez-vous ?", + "Bonjour, je suis au lieu convenu", + "How much longer will you be?": "Combien de temps encore ?", "Phone number is verified before": "Le numéro de téléphone a déjà été vérifié", "Change Ride": "Changer de trajet", "You can change the destination by long-pressing any point on the map": - "Vous pouvez changer la destination en appuyant longuement sur n'importe quel point de la carte", + "Vous pouvez changer la destination par un appui long sur la carte", "Pick from map destination": "Choisir la destination sur la carte", "Pick or Tap to confirm": "Choisir ou appuyer pour confirmer", - "Accepted your order": "Votre commande a été acceptée", + "Accepted your order": "A accepté votre commande", "Order Accepted": "Commande acceptée", "with type": "avec le type", "accepted your order at price": "a accepté votre commande au prix de", - "Cancel Trip from driver": "Annuler le trajet par le chauffeur", "you canceled order": "vous avez annulé la commande", "If you want order to another person": "Si vous voulez commander pour une autre personne", - "Ok I will go now.": "Ok, je vais y aller maintenant.", - "Hi, I will go now": "Bonjour, je vais y aller maintenant", - "upgrade price": "mettre à niveau le prix", - "Please enter a correct phone": - "Veuillez entrer un numéro de téléphone correct", + "upgrade price": "augmenter le prix", "airport": "aéroport", "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": - "Meilleur choix pour une voiture confortable avec un itinéraire flexible et des points d'arrêt. Cet aéroport offre l'entrée avec visa à ce prix.", + "Le meilleur choix pour une voiture confortable avec itinéraire flexible.", "You can upgrade price to may driver accept your order": - "Vous pouvez augmenter le prix pour que le chauffeur accepte votre commande", + "Vous pouvez augmenter le prix pour qu'un chauffeur accepte", "Change Route": "Changer l'itinéraire", "No Captain Accepted Your Order": - "Aucun capitaine n'a accepté votre commande", + "Aucun chauffeur n'a accepté votre commande", "We are looking for a captain but the price may increase to let a captain accept": - "Nous recherchons un capitaine mais le prix peut augmenter pour qu'un capitaine accepte", + "Nous cherchons un chauffeur mais le prix peut augmenter pour faciliter l'acceptation", "No, I want to cancel this trip": "Non, je veux annuler ce trajet", - "Trip Cancelled. The cost of the trip will be added to your wallet.": - "Trajet annulé. Le coût du trajet sera ajouté à votre portefeuille.", "Attention": "Attention", "Trip Cancelled. The cost of the trip will be deducted from your wallet.": - "Trajet annulé. Le coût du trajet sera déduit de votre portefeuille.", + "Trajet annulé. Le coût sera déduit de votre portefeuille.", "You will be charged for the cost of the driver coming to your location.": - "Vous serez facturé pour le coût du chauffeur venant à votre emplacement.", - "reject your order.": "a rejeté votre commande.", + "Les frais d'approche du chauffeur vous seront facturés.", + "reject your order.": "rejeter votre commande.", "Order Under Review": "Commande en cours d'examen", "is reviewing your order. They may need more information or a higher price.": - "examine votre commande. Ils pourraient avoir besoin de plus d'informations ou d'un prix plus élevé.", - "The driver canceled your ride.": - "Le chauffeur a annulé votre trajet.", - "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": - "Nous n'avons pas encore trouvé de chauffeurs. Envisagez d'augmenter le prix de votre trajet pour rendre votre offre plus attractive pour les chauffeurs.", - "Increase Your Trip Fee (Optional)": - "Augmentez le prix de votre trajet (optionnel)", + "examine votre commande. Il peut avoir besoin de plus d'infos ou d'un meilleur prix.", "Vibration": "Vibration", "Resend code": "Renvoyer le code", - "token change": "changement de token", "change device": "changer d'appareil", "Device Change Detected": "Changement d'appareil détecté", "You can only use one device at a time. This device will now be set as your active device.": - "Vous ne pouvez utiliser qu'un seul appareil à la fois. Cet appareil sera maintenant défini comme votre appareil actif.", - "Click here point": "Cliquez ici", + "Vous ne pouvez utiliser qu'un seul appareil à la fois. Cet appareil est maintenant actif.", + "Click here point": "Cliquez ici point", "Are you want to change": "Voulez-vous changer", "by": "par", - "Enter your complaint here": "Entrez votre plainte ici", - "Please enter your complaint.": "Veuillez entrer votre plainte.", + "Enter your complaint here": "Entrez votre réclamation ici", + "Please enter your complaint.": "Veuillez entrer votre réclamation.", "Complaint data saved successfully": - "Données de plainte enregistrées avec succès", + "Données de réclamation enregistrées avec succès", "Trip Monitor": "Moniteur de trajet", - "Insert SOS Phone": "Insérer le téléphone SOS", - "Add SOS Phone": "Ajouter un téléphone SOS", - "Trip Monitoring": "Surveillance du trajet", - "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": - "Cher ,\n\n 🚀 Je viens de commencer un voyage passionnant et j'aimerais partager avec vous en temps réel les détails de mon voyage et ma localisation actuelle ! Veuillez télécharger l'application Intaleq. Elle vous permettra de voir les détails de mon voyage et ma dernière localisation.\n\n 👉 Lien de téléchargement : \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n J'ai hâte de vous garder proche pendant mon aventure !\n\n Intaleq ,", - "Send Intaleq app to him": "Envoyez-lui l'application Intaleq", + "Insert SOS Phone": "Insérer téléphone SOS", + "Add SOS Phone": "Ajouter téléphone SOS", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "Cher(e),\n\n🚀 Je viens de commencer un trajet et je voudrais partager ma position en temps réel avec toi ! Télécharge l'application Intaleq pour voir les détails de mon trajet.\n\n👉 Lien de téléchargement :\nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nÀ bientôt !\n\nIntaleq ,", + "Send Intaleq app to him": "Lui envoyer l'appli Intaleq", "No passenger found for the given phone number": - "Aucun passager trouvé pour le numéro de téléphone donné", + "Aucun passager trouvé pour ce numéro", "No user found for the given phone number": - "Aucun utilisateur trouvé pour le numéro de téléphone donné", + "Aucun utilisateur trouvé pour ce numéro", "This price is": "Ce prix est", "Work": "Travail", - "Add Home": "Ajouter le domicile", + "Add Home": "Ajouter Maison", "Notifications": "Notifications", - "💳 Pay with Credit Card": "💳 Payer avec une carte de crédit", + "💳 Pay with Credit Card": "💳 Payer par carte de crédit", "⚠️ You need to choose an amount!": "⚠️ Vous devez choisir un montant !", - "💰 Pay with Wallet": "Payer avec le portefeuille", + "💰 Pay with Wallet": "💰 Payer avec le portefeuille", "You must restart the app to change the language.": "Vous devez redémarrer l'application pour changer la langue.", - "joined": "rejoint", + "joined": "a rejoint", "Driver joined the channel": "Le chauffeur a rejoint le canal", "Driver left the channel": "Le chauffeur a quitté le canal", "Call Page": "Page d'appel", - "Call End": "Fin d'appel", - "Call Left": "Appel restant", - r"$ Next as Cash $!": " Suivant en espèces !", + "Call Left": "Appels restants", + " Next as Cash !": " Suivant en espèces !", "To use Wallet charge it": - "Pour utiliser le portefeuille, chargez-le", + "Pour utiliser le portefeuille, rechargez-le", "We are searching for the nearest driver to you": - "Nous recherchons le chauffeur le plus proche de vous", - "Best choice for cities": "Meilleur choix pour les villes", + "Nous cherchons le chauffeur le plus proche", + "Best choice for cities": "Meilleur choix pour la ville", "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": - "Rayeh Gai : Service aller-retour pour un voyage pratique entre les villes, facile et fiable.", - "Rayeh Gai": "Rayeh Gai", + "Rayeh Gai : Service aller-retour pratique pour voyager entre les villes.", "This trip is for women only": "Ce trajet est réservé aux femmes", "Total budgets on month": "Budgets totaux du mois", "You have call from driver": "Vous avez un appel du chauffeur", - "Comfort": "Confort", - "Intaleq": "Vitesse", + "Intaleq": "Intaleq", + "passenger agreement": "accord passager", + "To become a passenger, you must review and agree to the ": + "Pour devenir passager, vous devez accepter les ", + "agreement subtitle": + "Pour continuer, vous devez accepter les conditions d'utilisation et la politique de confidentialité.", + "terms of use": "conditions d'utilisation", + " and acknowledge our Privacy Policy.": + " et reconnaître notre Politique de Confidentialité.", + "and acknowledge our": "et reconnaître notre", + "privacy policy": "politique de confidentialité.", + "i agree": "j'accepte", "Driver already has 2 trips within the specified period.": "Le chauffeur a déjà 2 trajets dans la période spécifiée.", "The invitation was sent successfully": "L'invitation a été envoyée avec succès", - "Lady": "Dame", "You should select your country": "Vous devez sélectionner votre pays", "Scooter": "Scooter", "A trip with a prior reservation, allowing you to choose the best captains and cars.": - "Un trajet avec une réservation préalable, vous permettant de choisir les meilleurs capitaines et voitures.", - "Mishwar Vip": "Mishwar Vip", + "Un trajet avec réservation préalable, vous permettant de choisir les meilleurs chauffeurs et voitures.", + "Mishwar Vip": "Trajet VIP", "The driver waiting you in picked location .": - "Le chauffeur vous attend à l'endroit choisi.", + "Le chauffeur vous attend au lieu de prise en charge.", "About Us": "À propos de nous", "You can change the vibration feedback for all buttons": "Vous pouvez changer le retour de vibration pour tous les boutons", "Most Secure Methods": "Méthodes les plus sécurisées", - "In-App VOIP Calls": "Appels VOIP dans l'application", + "In-App VOIP Calls": "Appels VOIP intégrés", "Recorded Trips for Safety": "Trajets enregistrés pour la sécurité", "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": - "\nNous donnons également la priorité à l'accessibilité, en offrant des prix compétitifs pour rendre vos trajets accessibles.", + "\nNous privilégions aussi l'accessibilité, offrant des prix compétitifs.", "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": - "Intaleq est une application de covoiturage conçue en pensant à votre sécurité et à votre budget. Nous vous connectons avec des chauffeurs fiables dans votre région, garantissant une expérience de voyage pratique et sans stress.\n\nVoici quelques-unes des principales fonctionnalités qui nous distinguent :", - "Sign In by Apple": "Se connecter avec Apple", - "Sign In by Google": "Se connecter avec Google", + "Intaleq est une application de covoiturage conçue pour votre sécurité et votre budget. Nous vous connectons avec des chauffeurs fiables dans votre région.", + "Sign In by Apple": "Connexion via Apple", + "Sign In by Google": "Connexion via Google", "How do I request a ride?": "Comment demander un trajet ?", "Step-by-step instructions on how to request a ride through the Intaleq app.": - "Instructions étape par étape pour demander un trajet via l'application Intaleq.", + "Instructions étape par étape pour demander un trajet.", "What types of vehicles are available?": "Quels types de véhicules sont disponibles ?", "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": - "Intaleq propose une variété d'options de véhicules pour répondre à vos besoins, y compris économique, confort et luxe. Choisissez l'option qui correspond le mieux à votre budget et au nombre de passagers.", - "How can I pay for my ride?": "Comment puis-je payer mon trajet ?", + "Intaleq offre diverses options de véhicules incluant éco, confort et luxe.", + "How can I pay for my ride?": "Comment payer mon trajet ?", "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": - "Intaleq propose plusieurs méthodes de paiement pour votre commodité. Choisissez entre le paiement en espèces ou par carte de crédit/débit lors de la confirmation du trajet.", + "Intaleq offre plusieurs méthodes de paiement. Choisissez entre espèces ou carte lors de la confirmation.", "Can I cancel my ride?": "Puis-je annuler mon trajet ?", - "Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.": - "Oui, vous pouvez annuler votre trajet sous certaines conditions (par exemple, avant l'assignation du chauffeur). Consultez la politique d'annulation de Intaleq pour plus de détails.", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "Oui, vous pouvez annuler, mais des frais d'annulation peuvent s'appliquer.", "Driver Registration & Requirements": - "Inscription et exigences pour les chauffeurs", + "Inscription Chauffeur & Requis", "How can I register as a driver?": - "Comment puis-je m'inscrire comme chauffeur ?", + "Comment s'inscrire comme chauffeur ?", "What are the requirements to become a driver?": - "Quelles sont les exigences pour devenir chauffeur ?", + "Quelles sont les conditions pour devenir chauffeur ?", "Visit our website or contact Intaleq support for information on driver registration and requirements.": - "Visitez notre site web ou contactez le support Intaleq pour des informations sur l'inscription et les exigences pour les chauffeurs.", + "Visitez notre site web ou contactez le support pour plus d'infos.", "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": - "Intaleq propose une fonction de chat dans l'application pour vous permettre de communiquer avec votre chauffeur ou passager pendant votre trajet.", - "What safety measures does Intaleq offer?": - "Quelles mesures de sécurité offre Intaleq ?", + "Intaleq fournit une fonction de chat pour communiquer avec votre chauffeur ou passager.", "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": - "Intaleq donne la priorité à votre sécurité. Nous offrons des fonctionnalités comme la vérification des chauffeurs, le suivi des trajets dans l'application et des options de contact d'urgence.", - "Frequently Questions": "Questions fréquentes", + "Intaleq priorise votre sécurité avec la vérification des chauffeurs et le suivi des trajets.", + "Frequently Questions": "Questions Fréquentes", "User does not exist.": "L'utilisateur n'existe pas.", "We need your phone number to contact you and to help you.": - "Nous avons besoin de votre numéro de téléphone pour vous contacter et vous aider.", + "Nous avons besoin de votre numéro pour vous contacter et vous aider.", "You will recieve code in sms message": "Vous recevrez un code par SMS", "Please enter": "Veuillez entrer", "We need your phone number to contact you and to help you receive orders.": - "Nous avons besoin de votre numéro de téléphone pour vous contacter et vous aider à recevoir des commandes.", - "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": - "Le nom complet sur votre casier judiciaire ne correspond pas à celui sur votre permis de conduire. Veuillez vérifier et fournir les documents corrects.", - "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": - "Le numéro national sur votre permis de conduire ne correspond pas à celui sur votre document d'identité. Veuillez vérifier et fournir les documents corrects.", + "Nous avons besoin de votre numéro pour vous aider à recevoir des commandes.", + "The full name on your criminal record does not match the one on your driver's license. Please verify and provide the correct documents.": + "Le nom sur le casier judiciaire ne correspond pas à celui du permis. Veuillez vérifier.", + "The national number on your driver's license does not match the one on your ID document. Please verify and provide the correct documents.": + "Le numéro national sur votre permis ne correspond pas à votre pièce d'identité.", "Capture an Image of Your Criminal Record": - "Capturez une image de votre casier judiciaire", + "Prendre une photo de votre casier judiciaire", "IssueDate": "Date d'émission", - "Capture an Image of Your car license front ": - "Capturez une image de l'avant de votre carte grise", + "Capture an Image of Your car license front": + "Photo recto de la carte grise", "Capture an Image of Your ID Document front": - "Capturez une image de l'avant de votre document d'identité", - "NationalID": "Identifiant national", + "Photo recto de la pièce d'identité", + "NationalID": "Numéro National / CNI", "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": - "Vous pouvez partager l'application Intaleq avec vos amis et gagner des récompenses pour les trajets qu'ils effectuent en utilisant votre code", + "Partagez Intaleq avec vos amis et gagnez des récompenses.", "FullName": "Nom complet", - "No invitation found yet!": - "Aucune invitation trouvée pour le moment !", + "No invitation found yet!": "Aucune invitation trouvée !", "InspectionResult": "Résultat de l'inspection", "Criminal Record": "Casier judiciaire", - "Share App": "Partager l'application", "The email or phone number is already registered.": - "L'e-mail ou le numéro de téléphone est déjà enregistré.", + "L'email ou le numéro de téléphone est déjà enregistré.", "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": - "Pour devenir un chauffeur de covoiturage sur l'application Intaleq, vous devez télécharger votre permis de conduire, votre document d'identité et votre document d'immatriculation de voiture. Notre système d'IA examinera et vérifiera instantanément leur authenticité en seulement 2-3 minutes. Si vos documents sont approuvés, vous pouvez commencer à travailler comme chauffeur sur l'application Intaleq. Veuillez noter que la soumission de documents frauduleux est une infraction grave et peut entraîner une résiliation immédiate et des conséquences juridiques.", + "Pour devenir chauffeur sur Intaleq, téléchargez votre permis, pièce d'identité et carte grise. Notre IA vérifiera leur authenticité en quelques minutes. La soumission de faux documents entraînera une résiliation immédiate.", "Documents check": "Vérification des documents", "Driver's License": "Permis de conduire", "for your first registration!": "pour votre première inscription !", "Get it Now!": "Obtenez-le maintenant !", "before": "avant", "Code not approved": "Code non approuvé", - "3000 LE": "3000 LE", + "3000 LE": "30 €", "Do you have an invitation code from another driver?": "Avez-vous un code d'invitation d'un autre chauffeur ?", "Paste the code here": "Collez le code ici", "No, I don't have a code": "Non, je n'ai pas de code", "Code approved": "Code approuvé", - "Install our app:": "Installez notre application :", + "Install our app:": "Installez notre appli :", "Invite another driver and both get a gift after he completes 100 trips!": - "Invitez un autre chauffeur et recevez tous les deux un cadeau après qu'il ait effectué 100 trajets !", + "Invitez un autre chauffeur et recevez un cadeau après ses 100 trajets !", "Invite": "Inviter", "Are you sure?": "Êtes-vous sûr ?", "This will delete all recorded files from your device.": "Cela supprimera tous les fichiers enregistrés de votre appareil.", "Select a file": "Sélectionner un fichier", - "Select a File": "Sélectionner un fichier", + "Select a File": "Sélectionner un Fichier", "Delete": "Supprimer", - "attach audio of complain": "joindre un audio de plainte", + "attach audio of complain": "joindre audio de plainte", "Phone Number Check": "Vérification du numéro de téléphone", - "Drivers received orders": "Les chauffeurs ont reçu des commandes", + "Drivers received orders": "Les chauffeurs ont reçu les commandes", "No audio files recorded.": "Aucun fichier audio enregistré.", "This is for delivery or a motorcycle.": "Ceci est pour la livraison ou une moto.", - "We will look for a new driver.\nPlease wait.": - "Nous chercherons un nouveau chauffeur.\nVeuillez patienter.", "Intaleq Reminder": "Rappel Intaleq", "It's time to check the Intaleq app!": - "Il est temps de vérifier l'application Intaleq !", - "you must insert token code": "vous devez insérer le code token", + "Il est temps de vérifier l'appli Intaleq !", + "you must insert token code": "vous devez insérer le code jeton", "Something went wrong. Please try again.": - "Quelque chose s'est mal passé. Veuillez réessayer.", + "Un problème est survenu. Veuillez réessayer.", "Trip Details": "Détails du trajet", "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": - "Le contexte ne fournit aucun détail de plainte, donc je ne peux pas fournir de solution à ce problème. Veuillez fournir les informations nécessaires, et je serai heureux de vous aider.", - "Submit Your Complaint": "Soumettre votre plainte", - "Date": "Date", - "Price": "Prix", + "Le contexte ne fournit pas de détails sur la plainte. Veuillez fournir les informations nécessaires.", + "Submit Your Complaint": "Soumettre votre réclamation", "Status": "Statut", - "Choose from contact": "Choisir parmi les contacts", - "attach correct audio": "joindre un audio correct", - "be sure": "soyez sûr", + "Choose from contact": "Choisir dans les contacts", + "attach correct audio": "joindre l'audio correct", + "be sure": "assurez-vous", "Audio uploaded successfully.": "Audio téléchargé avec succès.", "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": - "Parfait pour les passagers recherchant les derniers modèles de voitures avec la liberté de choisir n'importe quel itinéraire qu'ils désirent", + "Parfait pour les passagers cherchant des voitures récentes avec liberté d'itinéraire", "Share this code with your friends and earn rewards when they use it!": - "Partagez ce code avec vos amis et gagnez des récompenses lorsqu'ils l'utilisent !", - "Enter phone": "Entrez le téléphone", - "You deserve the gift": "Vous méritez le cadeau", + "Partagez ce code et gagnez des récompenses !", + "Enter phone": "Entrer téléphone", "complete, you can claim your gift": "terminé, vous pouvez réclamer votre cadeau", "When": "Quand", - "Enter driver's phone": "Entrez le téléphone du chauffeur", + "Enter driver's phone": "Entrer tél. du chauffeur", "Send Invite": "Envoyer l'invitation", "Show Invitations": "Afficher les invitations", - "License Type": "Type de licence", - "National Number": "Numéro national", - "Name (Arabic)": "Nom (arabe)", - "Name (English)": "Nom (anglais)", + "License Type": "Type de permis", + "National Number": "Numéro National", + "Name (Arabic)": "Nom (Arabe)", + "Name (English)": "Nom (Français/Anglais)", "Address": "Adresse", - "Issue Date": "Date d'émission", + "Issue Date": "Date de délivrance", "Expiry Date": "Date d'expiration", - "License Categories": "Catégories de licence", - "driver_license": "permis de conduire", + "License Categories": "Catégories de permis", + "driver_license": "permis_de_conduire", "Capture an Image of Your Driver License": - "Capturez une image de votre permis de conduire", - "ID Documents Back": "Documents d'identité arrière", - "National ID": "Identifiant national", + "Prendre une photo de votre permis", + "ID Documents Back": "Verso de la pièce d'identité", + "National ID": "CNI / Numéro National", "Occupation": "Profession", - "Gender": "Genre", "Religion": "Religion", - "Marital Status": "Statut matrimonial", - "Full Name (Marital)": "Nom complet (matrimonial)", + "Full Name (Marital)": "Nom complet", "Expiration Date": "Date d'expiration", "Capture an Image of Your ID Document Back": - "Capturez une image de l'arrière de votre document d'identité", - "ID Documents Front": "Documents d'identité avant", + "Photo verso de la pièce d'identité", + "ID Documents Front": "Recto de la pièce d'identité", "First Name": "Prénom", - "CardID": "ID de carte", - "Vehicle Details Front": "Détails du véhicule avant", - "Plate Number": "Numéro de plaque", + "CardID": "Numéro de Carte", + "Vehicle Details Front": "Détails du véhicule (Avant)", + "Plate Number": "Numéro d'immatriculation", "Owner Name": "Nom du propriétaire", - "Vehicle Details Back": "Détails du véhicule arrière", + "Vehicle Details Back": "Détails du véhicule (Arrière)", "Make": "Marque", "Model": "Modèle", "Year": "Année", @@ -4630,27 +6822,23 @@ class MyTranslation extends Translations { "Tax Expiry Date": "Date d'expiration de la taxe", "Inspection Date": "Date d'inspection", "Capture an Image of Your car license back": - "Capturez une image de l'arrière de votre carte grise", - "Capture an Image of Your Driver’s License": - "Capturez une image de votre permis de conduire", + "Photo verso de la carte grise", + "Capture an Image of Your Driver's License": + "Photo de votre permis de conduire", "Sign in with Google for easier email and name entry": - "Connectez-vous avec Google pour une saisie plus facile de l'e-mail et du nom", + "Connectez-vous avec Google pour faciliter la saisie", "You will choose allow all the time to be ready receive orders": - "Vous choisirez d'autoriser tout le temps pour être prêt à recevoir des commandes", - "Welcome to Intaleq!": "Bienvenue sur Intaleq !", + "Choisissez 'Toujours autoriser' pour recevoir des commandes", "Get to your destination quickly and easily.": - "Rendez-vous à votre destination rapidement et facilement.", + "Arrivez à destination rapidement et facilement.", "Enjoy a safe and comfortable ride.": "Profitez d'un trajet sûr et confortable.", "Choose Language": "Choisir la langue", - "Login": "Connexion", "Pay with Wallet": "Payer avec le portefeuille", "Invalid MPIN": "MPIN invalide", "Invalid OTP": "OTP invalide", - "Driver Accepted the Ride for You": - "Le chauffeur a accepté le trajet pour vous", - "Enter your email address": "Entrez votre adresse e-mail", - "Please enter Your Email.": "Veuillez entrer votre e-mail.", + "Enter your email address": "Entrez votre adresse email", + "Please enter Your Email.": "Veuillez entrer votre email.", "Enter your phone number": "Entrez votre numéro de téléphone", "Please enter your phone number.": "Veuillez entrer votre numéro de téléphone.", @@ -4658,318 +6846,268 @@ class MyTranslation extends Translations { "if you dont have account": "si vous n'avez pas de compte", "Register": "S'inscrire", "Accept Ride's Terms & Review Privacy Notice": - "Accepter les conditions du trajet et consulter la politique de confidentialité", + "Accepter les conditions et la confidentialité", "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": - "En sélectionnant 'J'accepte' ci-dessous, j'ai lu et accepté les conditions d'utilisation et j'ai pris connaissance de la politique de confidentialité. J'ai au moins 18 ans.", - "I Agree": "J'accepte", - "Finish Monitor": "Terminer le moniteur", + "En sélectionnant 'J'accepte', je reconnais avoir lu et accepté les conditions d'utilisation et la politique de confidentialité. J'ai au moins 18 ans.", "First name": "Prénom", "Enter your first name": "Entrez votre prénom", "Please enter your first name.": "Veuillez entrer votre prénom.", - "Last name": "Nom de famille", - "Enter your last name": "Entrez votre nom de famille", - "Please enter your last name.": - "Veuillez entrer votre nom de famille.", + "Last name": "Nom", + "Enter your last name": "Entrez votre nom", + "Please enter your last name.": "Veuillez entrer votre nom.", "City": "Ville", "Please enter your City.": "Veuillez entrer votre ville.", - "Male": "Homme", - "Female": "Femme", - "Verify Email": "Vérifier l'e-mail", + "Verify Email": "Vérifier l'email", "We sent 5 digit to your Email provided": - "Nous avons envoyé un code à 5 chiffres à l'e-mail fourni", + "Nous avons envoyé 5 chiffres à votre email", "5 digit": "5 chiffres", "Send Verification Code": "Envoyer le code de vérification", "Your Ride Duration is ": "La durée de votre trajet est ", - "You will be thier in": "Vous serez là dans", + "You will be thier in": "Vous y serez dans", "You trip distance is": "La distance de votre trajet est", - "Fee is": "Le frais est", + "Fee is": "Les frais sont", "From : ": "De : ", "To : ": "À : ", - "Add Promo": "Ajouter une promotion", + "Add Promo": "Ajouter Promo", "Confirm Selection": "Confirmer la sélection", "distance is": "la distance est", + "Privacy Policy": "Politique de confidentialité", "Intaleq LLC": "Intaleq LLC", - "Egypt's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": - "Le service de covoiturage pionnier de l'Égypte, fièrement développé par des propriétaires arabes et locaux. Nous donnons la priorité à être près de vous – à la fois nos précieux passagers et nos capitaines dévoués.", + "Syria's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "Service de covoiturage pionnier en France. Nous priorisons la proximité avec vous.", + "Intaleq is the first ride-sharing app in Syria, designed to connect you with the nearest drivers for a quick and convenient travel experience.": + "Intaleq est la première appli de covoiturage en France, conçue pour vous connecter aux chauffeurs les plus proches.", "Why Choose Intaleq?": "Pourquoi choisir Intaleq ?", "Closest to You": "Le plus proche de vous", "We connect you with the nearest drivers for faster pickups and quicker journeys.": - "Nous vous connectons avec les chauffeurs les plus proches pour des prises en charge plus rapides et des trajets plus courts.", + "Nous vous connectons aux chauffeurs les plus proches pour des trajets plus rapides.", "Uncompromising Security": "Sécurité sans compromis", - "Lady Captains Available": "Capitaines femmes disponibles", + "Lady Captains Available": "Chauffeurs femmes disponibles", "Recorded Trips (Voice & AI Analysis)": - "Trajets enregistrés (analyse vocale et IA)", - "Fastest Complaint Response": "Réponse aux plaintes la plus rapide", + "Trajets enregistrés (Analyse vocale & IA)", + "Fastest Complaint Response": "Réponse rapide aux plaintes", "Our dedicated customer service team ensures swift resolution of any issues.": - "Notre équipe de service client dédiée assure une résolution rapide de tout problème.", + "Notre service client assure une résolution rapide des problèmes.", "Affordable for Everyone": "Abordable pour tous", - "Frequently Asked Questions": "Questions fréquemment posées", - "Getting Started": "Pour commencer", + "Frequently Asked Questions": "Questions Fréquemment Posées", + "Getting Started": "Commencer", "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": - "Ouvrez simplement l'application Intaleq, entrez votre destination et appuyez sur \"Demander un trajet\". L'application vous connectera avec un chauffeur à proximité.", - "Vehicle Options": "Options de véhicules", + "Ouvrez simplement l'appli Intaleq, entrez votre destination et appuyez sur \"Commander\".", + "Vehicle Options": "Options de véhicule", "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": - "Intaleq propose une variété d'options, y compris Économique, Confort et Luxe, pour répondre à vos besoins et à votre budget.", + "Intaleq offre diverses options incluant Éco, Confort et Luxe pour s'adapter à vos besoins.", "Payments": "Paiements", "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": - "Vous pouvez payer votre trajet en espèces ou par carte de crédit/débit. Vous pouvez sélectionner votre méthode de paiement préférée avant de confirmer votre trajet.", + "Vous pouvez payer en espèces ou par carte. Sélectionnez votre méthode préférée avant de confirmer.", "Ride Management": "Gestion des trajets", "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": - "Oui, vous pouvez annuler votre trajet, mais veuillez noter que des frais d'annulation peuvent s'appliquer selon le moment où vous annulez.", + "Oui, vous pouvez annuler, mais des frais peuvent s'appliquer.", "For Drivers": "Pour les chauffeurs", - "Driver Registration": "Inscription des chauffeurs", + "Driver Registration": "Inscription Chauffeur", "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": - "Pour vous inscrire comme chauffeur ou en savoir plus sur les exigences, veuillez visiter notre site web ou contacter directement le support Intaleq.", + "Pour s'inscrire comme chauffeur, visitez notre site ou contactez le support.", "Visit Website/Contact Support": - "Visitez le site web/Contactez le support", + "Visiter le site / Contacter le support", "Close": "Fermer", "We are searching for the nearest driver": - "Nous recherchons le chauffeur le plus proche", + "Nous cherchons le chauffeur le plus proche", "Communication": "Communication", "How do I communicate with the other party (passenger/driver)?": - "Comment puis-je communiquer avec l'autre partie (passager/chauffeur) ?", + "Comment communiquer avec l'autre partie ?", "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": - "Vous pouvez communiquer avec votre chauffeur ou passager via la fonction de chat dans l'application une fois le trajet confirmé.", - "Safety & Security": "Sécurité et sûreté", + "Vous pouvez communiquer via le chat intégré une fois le trajet confirmé.", + "Safety & Security": "Sûreté et Sécurité", "What safety measures does Intaleq offer?": "Quelles mesures de sécurité offre Intaleq ?", "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": - "Intaleq propose diverses fonctionnalités de sécurité, y compris la vérification des chauffeurs, le suivi des trajets dans l'application, les options de contact d'urgence et la possibilité de partager l'état de votre trajet avec des contacts de confiance.", + "Intaleq offre la vérification des chauffeurs, le suivi des trajets et les contacts d'urgence.", "Enjoy competitive prices across all trip options, making travel accessible.": - "Profitez de prix compétitifs pour toutes les options de trajet, rendant les voyages accessibles.", + "Profitez de prix compétitifs sur tous les trajets.", "Variety of Trip Choices": "Variété de choix de trajets", "Choose the trip option that perfectly suits your needs and preferences.": - "Choisissez l'option de trajet qui correspond parfaitement à vos besoins et préférences.", - "Your Choice, Our Priority": "Votre choix, notre priorité", + "Choisissez l'option de trajet qui vous convient parfaitement.", + "Your Choice, Our Priority": "Votre Choix, Notre Priorité", "Because we are near, you have the flexibility to choose the ride that works best for you.": - "Parce que nous sommes proches, vous avez la flexibilité de choisir le trajet qui vous convient le mieux.", + "Parce que nous sommes proches, vous avez la flexibilité de choisir le meilleur trajet.", "duration is": "la durée est", "Setting": "Paramètre", "Find answers to common questions": - "Trouvez des réponses aux questions courantes", + "Trouver des réponses aux questions courantes", "I don't need a ride anymore": "Je n'ai plus besoin de trajet", - "I was just trying the application": - "Je testais simplement l'application", + "I was just trying the application": "J'essayais juste l'application", "No driver accepted my request": "Aucun chauffeur n'a accepté ma demande", "I added the wrong pick-up/drop-off location": - "J'ai ajouté le mauvais lieu de prise en charge/dépose", + "J'ai mis le mauvais lieu de prise en charge/dépose", "I don't have a reason": "Je n'ai pas de raison", - "Other": "Autre", "Can we know why you want to cancel Ride ?": - "Pouvons-nous savoir pourquoi vous voulez annuler le trajet ?", - "Cancel Ride": "Annuler le trajet", + "Pouvons-nous savoir pourquoi vous voulez annuler ?", + "Cancel Ride": "Annuler la course", "Add Payment Method": "Ajouter une méthode de paiement", - "Your Wallet balance is ": "Le solde de votre portefeuille est ", - "Ride Wallet": "Portefeuille de trajet", + "Ride Wallet": "Portefeuille Trajet", "Payment Method": "Méthode de paiement", - "Type here Place": "Tapez ici le lieu", - "Are You sure to ride to": "Êtes-vous sûr de vouloir aller à", + "Type here Place": "Tapez le lieu ici", + "Are You sure to ride to": "Êtes-vous sûr d'aller à", "Confirm": "Confirmer", "You are Delete": "Vous supprimez", "Deleted": "Supprimé", - "You Dont Have Any places yet !": "Vous n'avez encore aucun lieu !", - "From : Current Location": "De : Localisation actuelle", - "Profile": "Profil", - "Home": "Accueil", - "My Cared": "Mes cartes", + "You Dont Have Any places yet !": "Vous n'avez pas encore de lieux !", + "From : Current Location": "De : Position actuelle", + "My Cared": "Mes Cartes", "Add Card": "Ajouter une carte", "Add Credit Card": "Ajouter une carte de crédit", "Please enter the cardholder name": - "Veuillez entrer le nom du titulaire de la carte", + "Veuillez entrer le nom du titulaire", "Please enter the expiry date": "Veuillez entrer la date d'expiration", "Please enter the CVV code": "Veuillez entrer le code CVV", "Go To Favorite Places": "Aller aux lieux favoris", "Go to this Target": "Aller à cette destination", - "My Profile": "Mon profil", - "Sign Out": "Déconnexion", - "Are you want to go to this site": - "Voulez-vous aller à cet endroit ?", - "MyLocation": "Ma localisation", - "my location": "ma localisation", + "My Profile": "Mon Profil", + "Are you want to go to this site": "Voulez-vous aller à ce site", + "MyLocation": "MaPosition", + "my location": "ma position", "Target": "Destination", - "Update": "Mettre à jour", "You Should choose rate figure": "Vous devez choisir une note", - "Login Captin": "Connexion capitaine", - "Register Captin": "Inscription capitaine", + "Login Captin": "Connexion Chauffeur", + "Register Captin": "Inscription Chauffeur", "Send Verfication Code": "Envoyer le code de vérification", "KM": "KM", - "End Ride": "Terminer le trajet", + "End Ride": "Fin du trajet", "Minute": "Minute", "Go to passenger Location now": - "Aller à la localisation du passager maintenant", + "Allez à la position du passager maintenant", "Duration of the Ride is ": "La durée du trajet est ", "Distance of the Ride is ": "La distance du trajet est ", "Name of the Passenger is ": "Le nom du passager est ", - "Hello this is Captain": "Bonjour, c'est le capitaine", - "Start the Ride": "Commencer le trajet", + "Hello this is Captain": "Bonjour c'est le Chauffeur", + "Start the Ride": "Démarrer la course", "Please Wait If passenger want To Cancel!": "Veuillez patienter si le passager veut annuler !", "Total Duration:": "Durée totale :", "Active Duration:": "Durée active :", - "Waiting for Captin ...": "En attente du capitaine ...", + "Waiting for Captin ...": "En attente du chauffeur...", "Age is ": "L'âge est ", "Rating is ": "La note est ", - " to arrive you.": "pour vous arriver.", + " to arrive you.": " pour arriver à vous.", "Tariff": "Tarif", "Settings": "Paramètres", - "Feed Back": "Retour d'information", + "Feed Back": "Avis", "Please enter a valid 16-digit card number": "Veuillez entrer un numéro de carte valide à 16 chiffres", - "Add Phone": "Ajouter un téléphone", + "Add Phone": "Ajouter téléphone", "Please enter a phone number": "Veuillez entrer un numéro de téléphone", "You dont Add Emergency Phone Yet!": "Vous n'avez pas encore ajouté de téléphone d'urgence !", "You will arrive to your destination after ": - "Vous arriverez à votre destination après ", + "Vous arriverez à destination après ", "You can cancel Ride now": "Vous pouvez annuler le trajet maintenant", "You Can cancel Ride After Captain did not come in the time": - "Vous pouvez annuler le trajet si le capitaine n'est pas arrivé à temps", + "Vous pouvez annuler si le chauffeur ne vient pas à temps", "If you in Car Now. Press Start The Ride": - "Si vous êtes dans la voiture maintenant. Appuyez sur Commencer le trajet", + "Si vous êtes en voiture, appuyez sur Démarrer", "You Dont Have Any amount in": "Vous n'avez aucun montant dans", "Wallet!": "Portefeuille !", "You Have": "Vous avez", - "Save Credit Card": "Enregistrer la carte de crédit", - "Show Promos": "Afficher les promotions", + "Save Credit Card": "Enregistrer la carte", + "Show Promos": "Voir les Promos", "10 and get 4% discount": "10 et obtenez 4% de réduction", "20 and get 6% discount": "20 et obtenez 6% de réduction", "40 and get 8% discount": "40 et obtenez 8% de réduction", "100 and get 11% discount": "100 et obtenez 11% de réduction", - "Pay with Your PayPal": "Payer avec votre PayPal", + "Pay with Your PayPal": "Payer avec PayPal", "You will choose one of above !": - "Vous choisirez l'un des ci-dessus !", - "Delete My Account": "Supprimer mon compte", + "Vous devez choisir l'un des choix ci-dessus !", "Edit Profile": "Modifier le profil", - "Name": "Nom", - "Update Gender": "Mettre à jour le genre", - "Education": "Éducation", - "Update Education": "Mettre à jour l'éducation", - "Employment Type": "Type d'emploi", - "SOS Phone": "Téléphone SOS", - "High School Diploma": "Diplôme d'études secondaires", - "Associate Degree": "Diplôme d'associé", - "Bachelor's Degree": "Licence", - "Master's Degree": "Master", - "Doctoral Degree": "Doctorat", "Copy this Promo to use it in your Ride!": - "Copiez cette promotion pour l'utiliser dans votre trajet !", + "Copiez cette promo pour l'utiliser !", "To change some Settings": "Pour changer certains paramètres", "Order Request Page": "Page de demande de commande", "Rouats of Trip": "Itinéraires du trajet", "Passenger Name is ": "Le nom du passager est ", - "Total From Passenger is ": "Le total du passager est ", - "Duration To Passenger is ": "La durée jusqu'au passager est ", - "Distance To Passenger is ": "La distance jusqu'au passager est ", - "Total For You is ": "Le total pour vous est ", - "Distance is ": "La distance est ", + "Total From Passenger is ": "Total du passager est ", + "Duration To Passenger is ": "Durée vers le passager est ", + "Distance To Passenger is ": "Distance vers le passager est ", + "Total For You is ": "Total pour vous est ", + "Distance is ": "Distance est ", " KM": " KM", - "Duration of Trip is ": "La durée du trajet est ", + "Duration of Trip is ": "Durée du trajet est ", " Minutes": " Minutes", - "Apply Order": "Appliquer la commande", + "Apply Order": "Accepter la commande", "Refuse Order": "Refuser la commande", - "Rate Captain": "Noter le capitaine", + "Rate Captain": "Noter le chauffeur", "Enter your Note": "Entrez votre note", "Type something...": "Tapez quelque chose...", - "Submit rating": "Soumettre la note", + "Submit rating": "Envoyer la note", "Rate Passenger": "Noter le passager", "Ride Summary": "Résumé du trajet", "welcome_message": "Bienvenue sur Intaleq !", "app_description": - "Intaleq est une application de covoiturage fiable, sûre et accessible.", - "get_to_destination": - "Rendez-vous à votre destination rapidement et facilement.", - "get_a_ride": - "Avec Intaleq, vous pouvez atteindre votre destination en quelques minutes.", + "Intaleq est une appli de covoiturage fiable et sûre.", + "get_to_destination": "Arrivez à destination rapidement.", + "get_a_ride": "Avec Intaleq, obtenez un trajet en quelques minutes.", "safe_and_comfortable": "Profitez d'un trajet sûr et confortable.", - "committed_to_safety": - "Intaleq s'engage pour la sécurité et tous nos capitaines sont soigneusement vérifiés et contrôlés.", - "Driver Applied the Ride for You": - "Le chauffeur a appliqué le trajet pour vous", - "Show latest promo": "Afficher la dernière promotion", - "Cancel Trip": "Annuler le trajet", - "Passenger Cancel Trip": "Le passager a annulé le trajet", - "Accepted Ride": "Trajet accepté", - "your ride is Accepted": "votre trajet est accepté", - "Please stay on the picked point.": - "Veuillez rester sur le point choisi.", - "Trip is Begin": "Le trajet commence", + "committed_to_safety": "Intaleq s'engage pour la sécurité.", + "your ride is Accepted": "votre trajet est Accepté", "Driver is waiting at pickup.": - "Le chauffeur attend au point de prise en charge.", + "Le chauffeur attend au point de rendez-vous.", "Driver is on the way": "Le chauffeur est en route", "Contact Options": "Options de contact", "Send a custom message": "Envoyer un message personnalisé", "Type your message": "Tapez votre message", - "Hi ,I will go now": "Bonjour, je vais y aller maintenant", - "Passenger come to you": "Le passager vient à vous", - "Hi ,I Arrive your site": - "Bonjour, je suis arrivé à votre emplacement", - "Driver Finish Trip": "Le chauffeur a terminé le trajet", - "you will pay to Driver": "vous paierez le chauffeur", - "Driver Cancel Your Trip": "Le chauffeur a annulé votre trajet", - "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": - "vous paierez le chauffeur, vous paierez le coût du temps du chauffeur, consultez votre portefeuille Intaleq", - "I will go now": "Je vais y aller maintenant", + "I will go now": "J'y vais maintenant", "You Have Tips": "Vous avez des pourboires", " tips\nTotal is": " pourboires\nLe total est", - "No,I want": "Non, je veux", - "Your fee is ": "Votre frais est ", + "Your fee is ": "Vos frais sont ", "Do you want to pay Tips for this Driver": - "Voulez-vous payer des pourboires pour ce chauffeur ?", + "Voulez-vous donner un pourboire ?", "Tip is ": "Le pourboire est ", "Are you want to wait drivers to accept your order": - "Voulez-vous attendre que les chauffeurs acceptent votre commande ?", + "Voulez-vous attendre que les chauffeurs acceptent ?", "This price is fixed even if the route changes for the driver.": - "Ce prix est fixe même si l'itinéraire change pour le chauffeur.", + "Ce prix est fixe même si l'itinéraire change.", "The price may increase if the route changes.": "Le prix peut augmenter si l'itinéraire change.", "The captain is responsible for the route.": - "Le capitaine est responsable de l'itinéraire.", + "Le chauffeur est responsable de l'itinéraire.", "We are search for nearst driver": - "Nous recherchons le chauffeur le plus proche", + "Nous cherchons le chauffeur le plus proche", "Your order is being prepared": "Votre commande est en préparation", "The drivers are reviewing your request": "Les chauffeurs examinent votre demande", "Your order sent to drivers": "Votre commande a été envoyée aux chauffeurs", "You can call or record audio of this trip": - "Vous pouvez appeler ou enregistrer l'audio de ce trajet", + "Vous pouvez appeler ou enregistrer l'audio", "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": - "Le trajet a commencé ! N'hésitez pas à contacter les numéros d'urgence, partager votre trajet ou activer l'enregistrement vocal pour le voyage", - "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": - "Assurez-vous d'avoir tous vos effets personnels et que tout montant restant, le cas échéant, a été ajouté à votre portefeuille avant de partir. Merci d'avoir choisi l'application Intaleq", - "Don’t forget your personal belongings.": - "N'oubliez pas vos effets personnels.", - "Camera Access Denied.": "Accès à la caméra refusé.", + "Le trajet a commencé ! N'hésitez pas à contacter les urgences ou partager votre trajet.", + "Camera Access Denied.": "Accès caméra refusé.", "Open Settings": "Ouvrir les paramètres", - "GPS Required Allow !.": "GPS requis, autorisez !.", + "GPS Required Allow !.": "GPS requis, autorisez-le !", "Your Account is Deleted": "Votre compte est supprimé", "Are you sure to delete your account?": - "Êtes-vous sûr de vouloir supprimer votre compte ?", + "Êtes-vous sûr de supprimer votre compte ?", "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": - "Vos données seront effacées après 2 semaines\nEt vous ne pourrez plus utiliser l'application après 1 mois ", + "Vos données seront effacées après 2 semaines\nVous ne pourrez plus utiliser l'appli après 1 mois ", "Enter Your First Name": "Entrez votre prénom", - "Are you Sure to LogOut?": - "Êtes-vous sûr de vouloir vous déconnecter ?", - "Email Wrong": "E-mail incorrect", - "Email you inserted is Wrong.": - "L'e-mail que vous avez inséré est incorrect.", - "You have finished all times ": "Vous avez terminé toutes les fois ", + "Are you Sure to LogOut?": "Êtes-vous sûr de vous déconnecter ?", + "Email Wrong": "Email incorrect", + "Email you inserted is Wrong.": "L'email inséré est incorrect.", + "You have finished all times ": + "Vous avez épuisé toutes les tentatives ", "if you want help you can email us here": - "si vous avez besoin d'aide, vous pouvez nous envoyer un e-mail ici", + "si vous voulez de l'aide, écrivez-nous ici", "Thanks": "Merci", - "Email Us": "Envoyez-nous un e-mail", + "Email Us": "Envoyez-nous un email", "I cant register in your app in face detection ": - "Je ne peux pas m'inscrire dans votre application avec la détection faciale ", + "Je ne peux pas m'inscrire à cause de la détection faciale ", "Hi": "Bonjour", "No face detected": "Aucun visage détecté", - "Image detecting result is ": - "Le résultat de la détection d'image est ", + "Image detecting result is ": "Le résultat de détection d'image est ", "from 3 times Take Attention": "sur 3 fois, faites attention", "Be sure for take accurate images please\nYou have": - "Assurez-vous de prendre des images précises s'il vous plaît\nVous avez", + "Assurez-vous de prendre des images précises svp\nVous avez", "image verified": "image vérifiée", "Next": "Suivant", "There is no help Question here": @@ -4977,84 +7115,80 @@ class MyTranslation extends Translations { "You dont have Points": "Vous n'avez pas de points", "You Are Stopped For this Day !": "Vous êtes arrêté pour aujourd'hui !", - "You must be charge your Account": "Vous devez charger votre compte", + "You must be charge your Account": + "Vous devez recharger votre compte", "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": - "Vous avez refusé 3 trajets aujourd'hui, c'est la raison \nÀ demain !", + "Vous avez refusé 3 trajets aujourd'hui \nÀ demain !", "Recharge my Account": "Recharger mon compte", "Ok , See you Tomorrow": "Ok, à demain", "You are Stopped": "Vous êtes arrêté", "Connected": "Connecté", "Not Connected": "Non connecté", - "Your are far from passenger location": - "Vous êtes loin de l'emplacement du passager", + "Your are far from passenger location": "Vous êtes loin du passager", "go to your passenger location before\nPassenger cancel trip": - "allez à l'emplacement de votre passager avant\nque le passager annule le trajet", + "allez vers le passager avant qu'il n'annule", "You will get cost of your work for this trip": - "Vous obtiendrez le coût de votre travail pour ce trajet", - " in your wallet": "dans votre portefeuille", + "Vous serez payé pour ce trajet", + " in your wallet": " dans votre portefeuille", "you gain": "vous gagnez", "Order Cancelled by Passenger": "Commande annulée par le passager", - "Success": "Succès", "Feedback data saved successfully": - "Données de retour d'information enregistrées avec succès", - "No Promo for today .": "Pas de promotion pour aujourd'hui.", + "Données d'avis enregistrées avec succès", + "No Promo for today .": "Pas de promo pour aujourd'hui.", "Select your destination": "Sélectionnez votre destination", "Search for your Start point": "Recherchez votre point de départ", - "Search for waypoint": "Rechercher un point de passage", - "Current Location": "Localisation actuelle", - "Add Location 1": "Ajouter l'emplacement 1", - "You must Verify email !.": "Vous devez vérifier l'e-mail !.", - "Cropper": "Recadreur", + "Search for waypoint": "Recherchez un point de passage", + "Current Location": "Position actuelle", + "Add Location 1": "Ajouter Lieu 1", + "You must Verify email !.": "Vous devez vérifier l'email !", + "Cropper": "Recadrer", "Saved Sucssefully": "Enregistré avec succès", "Select Date": "Sélectionner la date", "Birth Date": "Date de naissance", "Ok": "Ok", - "the 500 points equal 30 JOD": "500 points équivalent à 30 JOD", + "the 500 points equal 30 JOD": "les 500 points égalent 30 €", "the 500 points equal 30 JOD for you \nSo go and gain your money": - "500 points équivalent à 30 JOD pour vous \nAlors allez et gagnez votre argent", - "token updated": "token mis à jour", - "Add Location 2": "Ajouter l'emplacement 2", - "Add Location 3": "Ajouter l'emplacement 3", - "Add Location 4": "Ajouter l'emplacement 4", - "Waiting for your location": "En attente de votre localisation", + "les 500 points égalent 30 € pour vous \nAlors allez gagner votre argent", + "token updated": "jeton mis à jour", + "Add Location 2": "Ajouter Lieu 2", + "Add Location 3": "Ajouter Lieu 3", + "Add Location 4": "Ajouter Lieu 4", + "Waiting for your location": "En attente de votre position", "Search for your destination": "Recherchez votre destination", - "Hi! This is": "Bonjour ! C'est", - " I am using": " j'utilise", - " to ride with": " pour faire un trajet avec", + "Hi! This is": "Salut ! C'est", + " I am using": " J'utilise", + " to ride with": " pour rouler avec", " as the driver.": " comme chauffeur.", - "is driving a ": "conduit un ", - " with license plate ": " avec la plaque d'immatriculation ", - " I am currently located at ": "Je suis actuellement situé à ", + "is driving a ": "conduit une ", + " with license plate ": " immatriculée ", + " I am currently located at ": " Je suis actuellement à ", "Please go to Car now ": "Veuillez aller à la voiture maintenant ", "You will receive a code in WhatsApp Messenger": - "Vous recevrez un code dans WhatsApp Messenger", + "Vous recevrez un code sur WhatsApp", "If you need assistance, contact us": "Si vous avez besoin d'aide, contactez-nous", - "Promo Ended": "Promotion terminée", + "Promo Ended": "Promo terminée", "Enter the promo code and get": "Entrez le code promo et obtenez", - "DISCOUNT": "RÉDUCTION", + "DISCOUNT": "REMISE", "No wallet record found": "Aucun enregistrement de portefeuille trouvé", "for": "pour", "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": - "Intaleq est l'application de covoiturage la plus sûre qui propose de nombreuses fonctionnalités pour les capitaines et les passagers. Nous offrons le taux de commission le plus bas, seulement 8%, vous garantissant la meilleure valeur pour vos trajets. Notre application inclut une assurance pour les meilleurs capitaines, une maintenance régulière des voitures avec les meilleurs ingénieurs et des services sur route pour garantir une expérience respectueuse et de haute qualité pour tous les utilisateurs.", + "Intaleq est l'appli de covoiturage la plus sûre avec de nombreuses fonctionnalités. Nous offrons le taux de commission le plus bas de seulement 8%.", "You can contact us during working hours from 12:00 - 19:00.": - "Vous pouvez nous contacter pendant les heures de travail de 12h00 à 19h00.", + "Vous pouvez nous contacter de 12h00 à 19h00.", "Choose a contact option": "Choisissez une option de contact", "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": - "Les heures de travail sont de 12h00 à 19h00.\nVous pouvez envoyer un message WhatsApp ou un e-mail.", - "Promo code copied to clipboard!": - "Code promo copié dans le presse-papiers !", + "Heures de travail de 12h00 à 19h00.\nVous pouvez envoyer un WhatsApp ou email.", + "Promo code copied to clipboard!": "Code promo copié !", "Copy Code": "Copier le code", "Your invite code was successfully applied!": - "Votre code d'invitation a été appliqué avec succès !", + "Votre code d'invitation a été appliqué !", "Payment Options": "Options de paiement", "wait 1 minute to receive message": "attendez 1 minute pour recevoir le message", - "Promo Copied!": "Promotion copiée !", "You have copied the promo code.": "Vous avez copié le code promo.", - "Valid Until:": "Valable jusqu'au :", - "Select Payment Amount": "Sélectionnez le montant du paiement", + "Select Payment Amount": "Sélectionner le montant du paiement", "The promotion period has ended.": "La période de promotion est terminée.", "Promo Code Accepted": "Code promo accepté", @@ -5062,8 +7196,8 @@ class MyTranslation extends Translations { "Appuyez sur le code promo pour le copier !", "Lowest Price Achieved": "Prix le plus bas atteint", "Cannot apply further discounts.": - "Impossible d'appliquer d'autres réductions.", - "Promo Already Used": "Promotion déjà utilisée", + "Impossible d'appliquer plus de remises.", + "Promo Already Used": "Promo déjà utilisée", "Invitation Used": "Invitation utilisée", "You have already used this promo code.": "Vous avez déjà utilisé ce code promo.", @@ -5071,57 +7205,54 @@ class MyTranslation extends Translations { "Enter promo code here": "Entrez le code promo ici", "Please enter a valid promo code": "Veuillez entrer un code promo valide", - "Awfar Car": "Voiture Awfar", + "Awfar Car": "Voiture Éco", "Old and affordable, perfect for budget rides.": - "Ancienne et abordable, parfaite pour les trajets économiques.", + "Abordable, parfait pour les petits budgets.", " If you need to reach me, please contact the driver directly at": - " Si vous avez besoin de me joindre, veuillez contacter directement le chauffeur au", + " Si vous devez me joindre, contactez le chauffeur au", "No Car or Driver Found in your area.": - "Aucune voiture ou chauffeur trouvé dans votre région.", + "Aucune voiture ou chauffeur trouvé dans votre zone.", "Please Try anther time ": "Veuillez réessayer une autre fois ", "There no Driver Aplly your order sorry for that ": - "Aucun chauffeur n'a accepté votre commande, désolé pour cela ", + "Aucun chauffeur n'a pris votre commande, désolé ", "Trip Cancelled": "Trajet annulé", "The Driver Will be in your location soon .": - "Le chauffeur sera bientôt à votre emplacement .", + "Le chauffeur sera bientôt là.", "The distance less than 500 meter.": "La distance est inférieure à 500 mètres.", - "Promo End !": "Fin de la promotion !", + "Promo End !": "Fin de la promo !", "There is no notification yet": "Il n'y a pas encore de notification", "Use Touch ID or Face ID to confirm payment": - "Utilisez Touch ID ou Face ID pour confirmer le paiement", + "Utilisez Touch ID ou Face ID pour confirmer", "Contact us for any questions on your order.": - "Contactez-nous pour toute question concernant votre commande.", - "Pyament Cancelled .": "Paiement annulé .", + "Contactez-nous pour toute question.", + "Pyament Cancelled .": "Paiement annulé.", "type here": "tapez ici", - "Scan Driver License": "Scanner le permis de conduire", + "Scan Driver License": "Scanner le permis", "Please put your licence in these border": - "Veuillez placer votre permis dans ces bordures", - "Camera not initialized yet": - "La caméra n'est pas encore initialisée", - "Take Image": "Prendre une image", + "Veuillez mettre votre permis dans ce cadre", + "Camera not initialized yet": "Caméra non initialisée", + "Take Image": "Prendre une photo", "AI Page": "Page IA", - "Take Picture Of ID Card": "Prendre une photo de la carte d'identité", - "Take Picture Of Driver License Card": - "Prendre une photo de la carte de permis de conduire", + "Take Picture Of ID Card": "Photo de la pièce d'identité", + "Take Picture Of Driver License Card": "Photo du permis de conduire", "We are process picture please wait ": - "Nous traitons l'image, veuillez patienter ", + "Traitement de l'image en cours, veuillez patienter ", "There is no data yet.": "Il n'y a pas encore de données.", "Name :": "Nom :", - "Drivers License Class: ": "Classe de permis de conduire : ", - "Document Number: ": "Numéro de document : ", - "Address: ": "Adresse : ", - "Height: ": "Taille : ", - "Expiry Date: ": "Date d'expiration : ", - "Date of Birth: ": "Date de naissance : ", - "You can\'t continue with us .\nYou should renew Driver license": - "Vous ne pouvez pas continuer avec nous .\nVous devez renouveler votre permis de conduire", - "Detect Your Face ": "Détectez votre visage ", + "Drivers License Class: ": "Classe de permis :", + "Document Number: ": "Numéro de document :", + "Address: ": "Adresse :", + "Height: ": "Taille :", + "Expiry Date: ": "Date d'expiration :", + "Date of Birth: ": "Date de naissance :", + "You can't continue with us .\nYou should renew Driver license": + "Vous ne pouvez pas continuer.\nVous devez renouveler votre permis", + "Detect Your Face ": "Détecter votre visage ", "Go to next step\nscan Car License.": - "Passez à l'étape suivante\nscannez la carte grise.", + "Étape suivante\nscanner la carte grise.", "Name in arabic": "Nom en arabe", - "Drivers License Class": "Classe de permis de conduire", - "Date of Birth": "Date de naissance", + "Drivers License Class": "Classe de permis", "Selected Date": "Date sélectionnée", "Select Time": "Sélectionner l'heure", "Selected Time": "Heure sélectionnée", @@ -5129,169 +7260,148 @@ class MyTranslation extends Translations { "Lets check Car license ": "Vérifions la carte grise ", "Car": "Voiture", "Plate": "Plaque", - "N/A": "N/A", "Rides": "Trajets", - "Age": "Âge", "Selected driver": "Chauffeur sélectionné", - "Lets check License Back Face": "Vérifions le dos du permis", - "Car License Card": "Carte grise", - "No image selected yet": "Aucune image sélectionnée pour le moment", - "Made :": "Fabriqué :", - "model :": "modèle :", - "VIN :": "N° de série :", - "year :": "année :", + "Lets check License Back Face": "Vérifions le verso du permis", + "Car License Card": "Carte Grise", + "No image selected yet": "Aucune image sélectionnée", + "Made :": "Marque :", + "model :": "Modèle :", + "VIN :": "VIN :", + "year :": "Année :", "ُExpire Date": "Date d'expiration", - "Login Driver": "Connexion chauffeur", + "Login Driver": "Connexion Chauffeur", "Password must br at least 6 character.": - "Le mot de passe doit comporter au moins 6 caractères.", - "if you don\'t have account": "si vous n'avez pas de compte", - "Here recorded trips audio": - "Voici les enregistrements audio des trajets", + "Le mot de passe doit avoir au moins 6 caractères.", + "if you don't have account": "si vous n'avez pas de compte", + "Here recorded trips audio": "Ici l'audio des trajets enregistrés", "Register as Driver": "S'inscrire comme chauffeur", "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": - "En sélectionnant \"J'accepte\" ci-dessous, j'ai lu et accepté les conditions d'utilisation et j'ai pris connaissance de la ", - ". I am at least 18 years of age.": ". J'ai au moins 18 ans.", + "En sélectionnant \"J'accepte\", j'accepte les conditions d'utilisation et reconnais ", "Log Out Page": "Page de déconnexion", "Log Off": "Déconnexion", - "Register Driver": "Inscription chauffeur", - "Verify Email For Driver": "Vérifier l'e-mail pour le chauffeur", - "Admin DashBoard": "Tableau de bord administrateur", + "Register Driver": "Inscrire Chauffeur", + "Verify Email For Driver": "Vérifier l'email pour le chauffeur", + "Admin DashBoard": "Tableau de bord Admin", "Your name": "Votre nom", - "your ride is applied": "votre trajet est appliqué", - "Your password": "Votre mot de passe", - "H and": "Heures et", - "LE": "LE", - "JOD": "JOD", - "m": "minutes", + "your ride is applied": "votre trajet est demandé", + "H and": "H et", + "JOD": "€", + "m": "m", "We search nearst Driver to you": - "Nous recherchons le chauffeur le plus proche de vous", + "Nous cherchons le chauffeur le plus proche", "please wait till driver accept your order": - "veuillez patienter jusqu'à ce que le chauffeur accepte votre commande", + "veuillez attendre que le chauffeur accepte", "No accepted orders? Try raising your trip fee to attract riders.": - "Aucune commande acceptée ? Essayez d'augmenter le prix de votre trajet pour attirer les chauffeurs.", + "Pas de commande acceptée ? Essayez d'augmenter votre tarif.", "You should select one": "Vous devez en sélectionner un", "The driver accept your order for": - "Le chauffeur a accepté votre commande pour", - "Increase Fee": "Augmenter le prix", - "No, thanks": "Non, merci", + "Le chauffeur accepte votre commande pour", "The driver on your way": "Le chauffeur est en route", - "Total price from ": "Prix total à partir de ", - "Order Details Intaleq": "Détails de la commande vitesse", - "Order Applied": "Commande appliquée", - "accepted your order": "a accepté votre commande", - "We regret to inform you that another driver has accepted this order.": - "Nous regrettons de vous informer qu'un autre chauffeur a accepté cette commande.", + "Total price from ": "Prix total de ", + "Order Details Intaleq": "Détails Commande Intaleq", "Selected file:": "Fichier sélectionné :", "Your trip cost is": "Le coût de votre trajet est", "this will delete all files from your device": "cela supprimera tous les fichiers de votre appareil", - " in your": "dans votre", "Exclusive offers and discounts always with the Intaleq app": - "Offres et réductions exclusives toujours avec l'application Intaleq", - "Please go to Car Driver": "Veuillez aller au chauffeur de voiture", - " wallet due to a previous trip.": - "portefeuille en raison d'un trajet précédent.", + "Offres exclusives et remises toujours avec l'appli Intaleq", "Submit Question": "Soumettre une question", "Please enter your Question.": "Veuillez entrer votre question.", "Help Details": "Détails de l'aide", - "No trip yet found": "Aucun trajet trouvé pour le moment", + "No trip yet found": "Aucun trajet trouvé", "No Response yet.": "Pas encore de réponse.", " You Earn today is ": " Vous avez gagné aujourd'hui ", " You Have in": " Vous avez dans", - "Total points is ": "Le total des points est ", + "Total points is ": "Total des points est ", "Total Connection Duration:": "Durée totale de connexion :", - " H and": " Heures et", "Passenger name : ": "Nom du passager : ", "Cost Of Trip IS ": "Le coût du trajet est ", "Arrival time": "Heure d'arrivée", "arrival time to reach your point": "heure d'arrivée pour atteindre votre point", "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "Pour les trajets rapides et en scooter, le prix est calculé dynamiquement. Pour les trajets confort, le prix est basé sur le temps et la distance.", - "Hello this is Driver": "Bonjour, c'est le chauffeur", + "Pour Intaleq et scooter, le prix est dynamique. Pour Confort, basé sur le temps et la distance.", + "Hello this is Driver": "Bonjour c'est le chauffeur", "Is the Passenger in your Car ?": "Le passager est-il dans votre voiture ?", "Please wait for the passenger to enter the car before starting the trip.": - "Veuillez attendre que le passager entre dans la voiture avant de commencer le trajet.", - "No ,still Waiting.": "Non, toujours en attente.", - "I arrive you": "Je vous arrive", + "Veuillez attendre que le passager monte avant de démarrer.", + "No ,still Waiting.": "Non, j'attends toujours.", + "I arrive you": "Je suis arrivé", "I Arrive your site": "Je suis arrivé à votre emplacement", "You are not in near to passenger location": - "Vous n'êtes pas près de l'emplacement du passager", + "Vous n'êtes pas proche du passager", "please go to picker location exactly": - "veuillez aller exactement à l'emplacement de prise en charge", + "veuillez aller exactement au lieu de prise en charge", "You Can Cancel Trip And get Cost of Trip From": - "Vous pouvez annuler le trajet et obtenir le coût du trajet de", - "Are you sure to cancel?": "Êtes-vous sûr de vouloir annuler ?", - "Insert Emergincy Number": "Insérer le numéro d'urgence", + "Vous pouvez annuler et obtenir le coût de", + "Are you sure to cancel?": "Êtes-vous sûr d'annuler ?", + "Insert Emergincy Number": "Insérer numéro d'urgence", "Best choice for comfort car and flexible route and stops point": - "Meilleur choix pour une voiture confortable et un itinéraire flexible avec des points d'arrêt", + "Meilleur choix pour voiture confort et itinéraire flexible", "Insert": "Insérer", "This is for scooter or a motorcycle.": "Ceci est pour un scooter ou une moto.", "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": - "Ce trajet va directement de votre point de départ à votre destination pour un prix fixe. Le chauffeur doit suivre l'itinéraire planifié.", + "Trajet direct à prix fixe. Le chauffeur doit suivre l'itinéraire.", "You can decline a request without any cost": - "Vous pouvez refuser une demande sans aucun coût", + "Vous pouvez refuser une demande sans frais", "Perfect for adventure seekers who want to experience something new and exciting": - "Parfait pour les aventuriers qui veulent vivre quelque chose de nouveau et d'excitant", - "My current location is:": "Ma localisation actuelle est :", + "Parfait pour les amateurs d'aventure", + "My current location is:": "Ma position actuelle est :", "and I have a trip on": "et j'ai un trajet sur", - "App with Passenger": "Application avec passager", + "App with Passenger": "Appli avec Passager", "You will be pay the cost to driver or we will get it from you on next trip": - "Vous paierez le coût au chauffeur ou nous le récupérerons de vous lors du prochain trajet", + "Vous paierez le chauffeur ou nous le récupérerons au prochain trajet", "Trip has Steps": "Le trajet a des étapes", "Distance from Passenger to destination is ": "La distance du passager à la destination est ", "price is": "le prix est", "This ride type does not allow changes to the destination or additional stops": - "Ce type de trajet ne permet pas de changer la destination ou d'ajouter des arrêts", - "This price may be changed": "Ce prix peut être changé", + "Ce type de trajet ne permet pas de changements", + "This price may be changed": "Ce prix peut changer", "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": - "Pas de carte SIM, pas de problème ! Appelez directement votre chauffeur via notre application. Nous utilisons une technologie avancée pour garantir votre confidentialité.", + "Pas de SIM ? Appelez votre chauffeur via l'appli.", "This ride type allows changes, but the price may increase": - "Ce type de trajet permet des changements, mais le prix peut augmenter", + "Ce type permet des changements, mais le prix peut augmenter", "Select one message": "Sélectionnez un message", "I'm waiting for you": "Je vous attends", "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": - "Nous avons remarqué que la vitesse dépasse 100 km/h. Veuillez ralentir pour votre sécurité. Si vous ne vous sentez pas en sécurité, vous pouvez partager les détails de votre trajet avec un contact ou appeler la police en utilisant le bouton SOS rouge.", - "Warning: Intaleqing detected!": - "Avertissement : Excès de vitesse détecté !", + "Nous avons remarqué une vitesse excessive (>100 km/h). Ralentissez svp.", + "Warning: Intaleqing detected!": "Attention : Intaleqing détecté !", "Please help! Contact me as soon as possible.": - "Aidez-moi, s'il vous plaît ! Contactez-moi dès que possible.", + "Aidez-moi ! Contactez-moi dès que possible.", "Share Trip Details": "Partager les détails du trajet", - "Car Plate is ": "La plaque d'immatriculation est ", - "VIP Order": "Commande VIP", + "Car Plate is ": "La plaque est ", "the 300 points equal 300 L.E for you \nSo go and gain your money": - "300 points équivalent à 300 L.E pour vous \nAlors allez et gagnez votre argent", - "the 300 points equal 300 L.E": "300 points équivalent à 300 L.E", + "les 300 points égalent 300 € pour vous \nAlors allez gagner votre argent", + "the 300 points equal 300 L.E": "les 300 points égalent 300 €", "The payment was not approved. Please try again.": - "Le paiement n'a pas été approuvé. Veuillez réessayer.", + "Le paiement n'a pas été approuvé. Réessayez.", "Payment Failed": "Paiement échoué", - "Error": "Erreur", "This is a scheduled notification.": - "Ceci est une notification planifiée.", + "Ceci est une notification programmée.", "An error occurred during the payment process.": - "Une erreur s'est produite lors du processus de paiement.", + "Une erreur est survenue durant le paiement.", "The payment was approved.": "Le paiement a été approuvé.", "Payment Successful": "Paiement réussi", - "No ride found yet": "Aucun trajet trouvé pour le moment", + "No ride found yet": "Aucun trajet trouvé", "Accept Order": "Accepter la commande", "Bottom Bar Example": "Exemple de barre inférieure", - "Driver phone": "Téléphone du chauffeur", + "Driver phone": "Tél. du chauffeur", "Statistics": "Statistiques", "Origin": "Origine", "Destination": "Destination", "Driver Name": "Nom du chauffeur", - "Driver Car Plate": "Plaque d'immatriculation du chauffeur", - "Available for rides": "Disponible pour les trajets", - "Scan Id": "Scanner l'identifiant", - "Camera not initilaized yet": - "La caméra n'est pas encore initialisée", - "Scan ID MklGoogle": "Scanner l'identifiant MklGoogle", + "Driver Car Plate": "Plaque du chauffeur", + "Available for rides": "Disponible pour des trajets", + "Scan Id": "Scanner ID", + "Camera not initilaized yet": "Caméra non initialisée", + "Scan ID MklGoogle": "Scan ID MklGoogle", "Language": "Langue", "Jordan": "Jordanie", - "USA": "États-Unis", + "USA": "USA", "Egypt": "Égypte", "Turkey": "Turquie", "Saudi Arabia": "Arabie Saoudite", @@ -5300,190 +7410,176 @@ class MyTranslation extends Translations { "Kuwait": "Koweït", "But you have a negative salary of": "Mais vous avez un salaire négatif de", - "Promo Code": "Code promo", - "Your trip distance is": "La distance de votre trajet est", - "Enter promo code": "Entrez le code promo", - "You have promo!": "Vous avez une promotion !", - "Cost Duration": "Durée du coût", + "Promo Code": "Code Promo", + "Your trip distance is": "Votre distance de trajet est", + "Enter promo code": "Entrer code promo", + "You have promo!": "Vous avez une promo !", + "Cost Duration": "Coût Durée", "Duration is": "La durée est", "Leave": "Quitter", "Join": "Rejoindre", - "Heading your way now. Please be ready.": - "En route vers vous maintenant. Veuillez être prêt.", + "Heading your way now. Please be ready.": "J'arrive. Soyez prêt svp.", "Approaching your area. Should be there in 3 minutes.": - "Approche de votre zone. Devrait être là dans 3 minutes.", + "J'approche. Là dans 3 minutes.", "There's heavy traffic here. Can you suggest an alternate pickup point?": - "Il y a un trafic dense ici. Pouvez-vous suggérer un autre point de prise en charge ?", + "Trafic dense ici. Pouvez-vous suggérer un autre point ?", "This ride is already taken by another driver.": - "Ce trajet est déjà pris par un autre chauffeur.", + "Ce trajet est déjà pris.", "You Should be select reason.": "Vous devez sélectionner une raison.", - " \$": " \$", - "Waiting for Driver ...": "En attente du chauffeur ...", + "Waiting for Driver ...": "En attente du chauffeur...", "Latest Recent Trip": "Dernier trajet récent", "from your list": "de votre liste", "Do you want to change Work location": - "Voulez-vous changer l'emplacement du travail ?", + "Voulez-vous changer le lieu de travail", "Do you want to change Home location": - "Voulez-vous changer l'emplacement du domicile ?", + "Voulez-vous changer le domicile", "We Are Sorry That we dont have cars in your Location!": - "Nous sommes désolés de ne pas avoir de voitures dans votre région !", + "Désolé, pas de voitures dans votre zone !", "Choose from Map": "Choisir sur la carte", "Pick your ride location on the map - Tap to confirm": - "Choisissez l'emplacement de votre trajet sur la carte - Appuyez pour confirmer", - "Closest & Cheapest": "Le plus proche et le moins cher", + "Choisissez votre lieu sur la carte - Appuyez pour confirmer", "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": - "Intaleq est l'application de réservation de trajet qui est sûre, fiable et accessible.", + "Intaleq est l'appli de transport sûre et fiable.", "With Intaleq, you can get a ride to your destination in minutes.": - "Avec Intaleq, vous pouvez obtenir un trajet vers votre destination en quelques minutes.", + "Avec Intaleq, obtenez un trajet en quelques minutes.", "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": - "Intaleq s'engage pour la sécurité, et tous nos capitaines sont soigneusement vérifiés et contrôlés.", + "Intaleq s'engage pour la sécurité, tous nos chauffeurs sont vérifiés.", "Pick from map": "Choisir sur la carte", "No Car in your site. Sorry!": - "Aucune voiture dans votre région. Désolé !", - "Nearest Car for you about ": - "La voiture la plus proche de vous est à environ ", + "Pas de voiture à votre emplacement. Désolé !", + "Nearest Car for you about ": "Voiture la plus proche à environ ", "From :": "De :", "Get Details of Trip": "Obtenir les détails du trajet", "If you want add stop click here": - "Si vous voulez ajouter un arrêt, cliquez ici", + "Si vous voulez ajouter un arrêt cliquez ici", "Where you want go ": "Où voulez-vous aller ", - "My Card": "Ma carte", - "Start Record": "Commencer l'enregistrement", - "Wallet": "Portefeuille", + "My Card": "Ma Carte", + "Start Record": "Démarrer l'enregistrement", "History of Trip": "Historique du trajet", "Helping Center": "Centre d'aide", "Record saved": "Enregistrement sauvegardé", "Trips recorded": "Trajets enregistrés", "Select Your Country": "Sélectionnez votre pays", "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": - "Pour vous assurer de recevoir les informations les plus précises pour votre localisation, veuillez sélectionner votre pays ci-dessous. Cela aidera à adapter l'expérience de l'application et le contenu à votre pays.", + "Pour assurer des infos précises, sélectionnez votre pays.", "Are you sure to delete recorded files": - "Êtes-vous sûr de vouloir supprimer les fichiers enregistrés ?", + "Êtes-vous sûr de supprimer les fichiers ?", "Select recorded trip": "Sélectionner le trajet enregistré", "Card Number": "Numéro de carte", - "Hi, Where to ": "Bonjour, où aller ", + "Hi, Where to ": "Salut, on va où ", "Pick your destination from Map": "Choisissez votre destination sur la carte", "Add Stops": "Ajouter des arrêts", "Get Direction": "Obtenir l'itinéraire", - "Add Location": "Ajouter un emplacement", + "Add Location": "Ajouter un lieu", "Switch Rider": "Changer de passager", "You will arrive to your destination after timer end.": - "Vous arriverez à votre destination après la fin du minuteur.", + "Vous arriverez après la fin du minuteur.", "You can cancel trip": "Vous pouvez annuler le trajet", "The driver waitting you in picked location .": - "Le chauffeur vous attend à l'emplacement choisi .", - "10\$ and get 3% discount": "10\$ et obtenez 3% de réduction", - "20\$ and get 4% discount": "20\$ et obtenez 4% de réduction", - "40\$ and get 6% discount": "40\$ et obtenez 6% de réduction", - "100\$ and get 9% discount": "100\$ et obtenez 9% de réduction", + "Le chauffeur vous attend au lieu choisi.", "Pay with Your": "Payer avec votre", - "Pay with Credit Card": "Payer avec une carte de crédit", - "Payment History": "Historique des paiements", - "Show Promos to Charge": "Afficher les promotions pour charger", + "Pay with Credit Card": "Payer par carte de crédit", + "Show Promos to Charge": "Afficher les promos pour recharger", "Point": "Point", "How many hours would you like to wait?": - "Combien d'heures souhaitez-vous attendre ?", - "Driver Wallet": "Portefeuille du chauffeur", + "Combien d'heures voulez-vous attendre ?", + "Driver Wallet": "Portefeuille Chauffeur", "Choose between those Type Cars": "Choisissez parmi ces types de voitures", "hour": "heure", "Select Waiting Hours": "Sélectionner les heures d'attente", - "Total Points is": "Le total des points est", + "Total Points is": "Total des points est", "You will receive a code in SMS message": "Vous recevrez un code par SMS", - "Done": "Terminé", - "Total Budget from trips is ": "Le budget total des trajets est ", + "Done": "Fait", + "Total Budget from trips is ": "Budget total des trajets est ", "Total Amount:": "Montant total :", "Total Budget from trips by\nCredit card is ": - "Le budget total des trajets par\ncarte de crédit est ", + "Budget total par\nCarte de crédit est ", "This amount for all trip I get from Passengers": - "Ce montant pour tous les trajets que je reçois des passagers", - "Pay from my budget": "Payer à partir de mon budget", + "Ce montant pour tous les trajets des passagers", + "Pay from my budget": "Payer de mon budget", "This amount for all trip I get from Passengers and Collected For me in": - "Ce montant pour tous les trajets que je reçois des passagers et collecté pour moi dans", + "Ce montant collecté pour moi dans", "You can buy points from your budget": - "Vous pouvez acheter des points à partir de votre budget", + "Vous pouvez acheter des points de votre budget", "insert amount": "insérer le montant", "You can buy Points to let you online\nby this list below": - "Vous pouvez acheter des points pour vous mettre en ligne\navec cette liste ci-dessous", + "Vous pouvez acheter des points pour rester en ligne\nvia cette liste", "Create Wallet to receive your money": - "Créez un portefeuille pour recevoir votre argent", - "Enter your feedback here": "Entrez votre retour d'information ici", - "Please enter your feedback.": - "Veuillez entrer votre retour d'information.", - "Feedback": "Retour d'information", - "Submit ": "Soumettre ", - "Click here to Show it in Map": - "Cliquez ici pour l'afficher sur la carte", + "Créer un portefeuille pour recevoir votre argent", + "Enter your feedback here": "Entrez votre avis ici", + "Please enter your feedback.": "Veuillez entrer votre avis.", + "Feedback": "Avis", + "Submit ": "Envoyer ", + "Click here to Show it in Map": "Cliquez ici pour voir sur la carte", "Canceled": "Annulé", - "Type your Email": "Tapez votre e-mail", - "No I want": "Non, je veux", - "Email is": "L'e-mail est", - "Phone Number is": "Le numéro de téléphone est", - "Date of Birth is": "La date de naissance est", - "Sex is ": "Le sexe est ", + "No I want": "Non je veux", + "Email is": "L'email est :", + "Phone Number is": "Le numéro est :", + "Date of Birth is": "Date de naissance :", + "Sex is ": "Le sexe est : ", "Car Details": "Détails de la voiture", - "VIN is": "Le numéro de série est", - "Color is ": "La couleur est ", - "Make is ": "La marque est ", - "Model is": "Le modèle est", - "Year is": "L'année est", - "Expiration Date ": "Date d'expiration ", - "Edit Your data": "Modifiez vos données", - "write vin for your car": - "écrivez le numéro de série de votre voiture", - "VIN": "Numéro de série", - "write Color for your car": "écrivez la couleur de votre voiture", - "write Make for your car": "écrivez la marque de votre voiture", - "write Model for your car": "écrivez le modèle de votre voiture", - "write Year for your car": "écrivez l'année de votre voiture", - "write Expiration Date for your car": - "écrivez la date d'expiration de votre voiture", + "VIN is": "VIN est :", + "Color is ": "La couleur est : ", + "Make is ": "La marque est : ", + "Model is": "Le modèle est :", + "Year is": "L'année est :", + "Expiration Date ": "Date d'expiration : ", + "Edit Your data": "Modifier vos données", + "write vin for your car": "écrire le VIN de votre voiture", + "VIN": "VIN", + "Device Change Detected": "Changement d'appareil détecté", + "Please verify your identity": "Veuillez vérifier votre identité", + "write Color for your car": "écrire la couleur de votre voiture", + "write Make for your car": "écrire la marque de votre voiture", + "write Model for your car": "écrire le modèle de votre voiture", + "write Year for your car": "écrire l'année de votre voiture", + "write Expiration Date for your car": "écrire la date d'expiration", "Tariffs": "Tarifs", "Minimum fare": "Tarif minimum", "Maximum fare": "Tarif maximum", - "Flag-down fee": "Frais de prise en charge", - "Including Tax": "Taxe incluse", + "Flag-down fee": "Prise en charge", + "Including Tax": "Taxes incluses", "BookingFee": "Frais de réservation", "Morning": "Matin", "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": - "de 07h30 à 10h30 (jeudi, vendredi, samedi, lundi)", + "de 07:30 à 10:30", "Evening": "Soir", "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": - "de 12h00 à 15h00 (jeudi, vendredi, samedi, lundi)", + "de 12:00 à 15:00", "Night": "Nuit", - "You have in account": "Vous avez en compte", - "Select Country": "Sélectionnez le pays", - "Ride Today : ": "Trajet aujourd'hui : ", - "After this period\nYou can\'t cancel!": - "Après cette période\nVous ne pouvez pas annuler !", - "from 23:59 till 05:30": "de 23h59 à 05h30", + "You have in account": "Vous avez sur le compte", + "Select Country": "Sélectionner le pays", + "Ride Today : ": "Trajet Aujourd'hui : ", + "After this period\nYou can't cancel!": + "Après cette période\nVous ne pouvez plus annuler !", + "from 23:59 till 05:30": "de 23:59 à 05:30", "Rate Driver": "Noter le chauffeur", - "Total Cost is ": "Le coût total est ", + "Total Cost is ": "Coût total est ", "Write note": "Écrire une note", "Time to arrive": "Heure d'arrivée", "Ride Summaries": "Résumés des trajets", - "Total Cost": "Coût total", + "Total Cost": "Coût Total", "Average of Hours of": "Moyenne des heures de", - " is ON for this month": " est activé pour ce mois", + " is ON for this month": " est ON pour ce mois", "Days": "Jours", - "Total Hours on month": "Total des heures du mois", - "Counts of Hours on days": "Nombre d'heures par jour", - "OrderId": "ID de commande", + "Total Hours on month": "Heures totales sur le mois", + "Counts of Hours on days": "Comptes des heures sur les jours", + "OrderId": "ID Commande", "created time": "heure de création", - "Intaleq Over": "Excès de vitesse", + "Intaleq Over": "Intaleq Terminé", "I will slow down": "Je vais ralentir", - "Map Passenger": "Carte du passager", - "Be Slowly": "Être lent", + "Map Passenger": "Carte Passager", + "Be Slowly": "Doucement", "If you want to make Google Map App run directly when you apply order": - "Si vous voulez que l'application Google Map s'exécute directement lorsque vous passez une commande", + "Si vous voulez lancer Google Maps directement", "You can change the language of the app": - "Vous pouvez changer la langue de l'application", - "Your Budget less than needed": - "Votre budget est inférieur au nécessaire", + "Vous pouvez changer la langue de l'appli", + "Your Budget less than needed": "Votre budget est insuffisant", "You can change the Country to get all features": - "Vous pouvez changer le pays pour obtenir toutes les fonctionnalités", + "Changez de pays pour toutes les fonctionnalités", "Change Country": "Changer de pays" }, "de": { @@ -8103,464 +10199,835 @@ class MyTranslation extends Translations { "Change Country": "Cambiar país" }, "fa": { - "Order": "سفارش", - "Where to": "به کجا", - "Where are you going?": "کجا می‌روی؟", - "Quick Actions": "اقدامات سریع", - "My Wallet": "کیف پول من", - "Order History": "تاریخچه سفارشات", + "Order": "درخواست", + "OrderVIP": "درخواست VIP", + "Cancel Trip": "لغو سفر", + "Passenger Cancel Trip": "مسافر سفر را لغو کرد", + "VIP Order": "سفارش VIP", + "Hi ,I Arrive your site": "سلام، من به موقعیت شما رسیدم", + "The driver accepted your trip": "راننده سفر شما را پذیرفت", + "message From passenger": "پیام از مسافر", + "Cancel": "لغو", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "سفر لغو شد. هزینه سفر به کیف پول شما اضافه خواهد شد.", + "token change": "تغییر توکن", + "face detect": "تشخیص چهره", + "Face Detection Result": "نتیجه تشخیص چهره", + "similar": "مشابه", + "not similar": "غیر مشابه", + "Hi ,I will go now": "سلام، من الان حرکت می‌کنم", + "Passenger come to you": "مسافر به سمت شما می‌آید", + "Call Income": "تماس ورودی", + "Call Income from Passenger": "تماس ورودی از مسافر", + "Criminal Document Required": "گواهی عدم سوءپیشینه الزامی است", + "You should have upload it .": "شما باید آن را آپلود کنید.", + "Call End": "پایان تماس", + "The order has been accepted by another driver.": + "درخواست توسط راننده دیگری پذیرفته شد.", + "The order Accepted by another Driver": + "درخواست توسط راننده دیگری پذیرفته شد", + "We regret to inform you that another driver has accepted this order.": + "متاسفیم، راننده دیگری این درخواست را پذیرفته است.", + "Driver Applied the Ride for You": + "راننده درخواست سفر را برای شما ثبت کرد", + "Applied": "ثبت شد", + "Pay by Sham Cash": "پرداخت با Sham Cash", + "Pay with Debit Card": "پرداخت با کارت بانکی", + "Please go to Car Driver": "لطفاً به سمت خودروی راننده بروید", + "Ok I will go now.": "باشه، الان می‌روم.", + "Accepted Ride": "سفر پذیرفته شد", + "Driver Accepted the Ride for You": "راننده سفر را برای شما پذیرفت", + "Promo": "کد تخفیف", + "Show latest promo": "نمایش آخرین تخفیف‌ها", + "Trip Monitoring": "نظارت بر سفر", + "Driver Is Going To Passenger": "راننده در حال حرکت به سمت مسافر است", + "Please stay on the picked point.": + "لطفاً در نقطه انتخاب شده بمانید.", + "message From Driver": "پیام از راننده", + "Trip is Begin": "سفر آغاز شد", + "Cancel Trip from driver": "لغو سفر توسط راننده", + "We will look for a new driver.\nPlease wait.": + "ما به دنبال راننده جدید می‌گردیم.\nلطفاً صبر کنید.", + "The driver canceled your ride.": "راننده سفر شما را لغو کرد.", + "Driver Finish Trip": "راننده سفر را پایان داد", + "you will pay to Driver": "شما به راننده پرداخت خواهید کرد", + "Don’t forget your personal belongings.": + "وسایل شخصی خود را فراموش نکنید.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "لطفاً قبل از خروج مطمئن شوید که تمام وسایل شخصی خود را برداشته‌اید و باقی‌مانده کرایه (در صورت وجود) به کیف پول شما اضافه شده است. از انتخاب Intaleq سپاسگزاریم.", + "Finish Monitor": "پایان نظارت", + "Trip finished": "سفر پایان یافت", + "Call Income from Driver": "تماس ورودی از راننده", + "Driver Cancelled Your Trip": "راننده سفر شما را لغو کرد", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "هزینه زمان راننده را پرداخت خواهید کرد، کیف پول Intaleq خود را چک کنید", + "Order Applied": "سفارش اعمال شد", + "welcome to intaleq": "به Intaleq خوش آمدید", + "login or register subtitle": + "برای ورود یا ثبت نام شماره موبایل خود را وارد کنید", + "An application error occurred.": "خطای برنامه رخ داد.", + "Submission Failed": "ارسال ناموفق", + "Your complaint has been submitted.": "شکایت شما ثبت شد.", + "Failed to connect to the server. Please try again.": + "اتصال به سرور برقرار نشد. لطفاً دوباره تلاش کنید.", + "Ride information not found. Please refresh the page.": + "اطلاعات سفر یافت نشد. لطفاً صفحه را رفرش کنید.", + "Please describe your issue before submitting.": + "لطفاً قبل از ارسال، مشکل خود را توضیح دهید.", + "An application error occurred during upload.": + "هنگام آپلود خطایی رخ داد.", + "Failed to upload audio file.": "آپلود فایل صوتی ناموفق بود.", + "Audio uploaded successfully.": "فایل صوتی با موفقیت آپلود شد.", + "Complaint cannot be filed for this ride. It may not have been completed or started.": + "برای این سفر نمی‌توان شکایت ثبت کرد. ممکن است تکمیل یا شروع نشده باشد.", + "2. Attach Recorded Audio (Optional)": + "۲. ضمیمه کردن صدای ضبط شده (اختیاری)", + "Please enter a description of the issue.": + "لطفاً توضیحی در مورد مشکل وارد کنید.", + "phone number label": "شماره تلفن", + "phone number required": "شماره تلفن الزامی است", + "send otp button": "ارسال کد تأیید", + "verify your number title": "تأیید شماره", + "otp sent subtitle": "یک کد ۵ رقمی به شماره\n@phoneNumber ارسال شد", + "verify and continue button": "تأیید و ادامه", + "enter otp validation": "لطفاً کد تأیید ۵ رقمی را وارد کنید", + "one last step title": "یک قدم دیگر", + "complete profile subtitle": "برای شروع پروفایل خود را تکمیل کنید", + "first name label": "نام", + "first name required": "نام الزامی است", + "last name label": "نام خانوادگی", + "Verify OTP": "تأیید کد", + "Verification Code": "کد تأیید", + "We have sent a verification code to your mobile number:": + "ما یک کد تأیید به شماره موبایل شما ارسال کردیم:", + "Verify": "تأیید", + "Resend Code": "ارسال مجدد کد", + "You can resend in": "ارسال مجدد در", + "seconds": "ثانیه", + "Error": "خطا", + "Please enter the complete 6-digit code.": + "لطفاً کد کامل ۶ رقمی را وارد کنید.", + "last name required": "نام خانوادگی الزامی است", + "email optional label": "ایمیل (اختیاری)", + "complete registration button": "تکمیل ثبت نام", + "User with this phone number or email already exists.": + "کاربری با این شماره تلفن یا ایمیل قبلاً ثبت نام کرده است.", + "otp sent success": "کد تأیید به واتس‌اپ ارسال شد.", + "failed to send otp": "ارسال کد تأیید ناموفق بود.", + "server error try again": "خطای سرور، لطفاً دوباره تلاش کنید.", + "an error occurred": "خطایی رخ داد: @error", + "otp verification failed": "تأیید کد ناموفق بود.", + "registration failed": "ثبت نام ناموفق بود.", + "welcome user": "خوش آمدید، @firstName!", + "Cancel Trip from driver": "لغو سفر توسط راننده", + "We will look for a new driver.\nPlease wait.": + "ما به دنبال راننده جدید می‌گردیم.\nلطفاً صبر کنید.", + "The driver canceled your ride.": "راننده سفر شما را لغو کرد.", + "Driver Finish Trip": "راننده سفر را تمام کرد", + "you will pay to Driver": "شما به راننده پرداخت می‌کنید", + "Don't forget your personal belongings.": + "وسایل شخصی خود را فراموش نکنید.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "لطفاً مطمئن شوید که تمام وسایل شخصی خود را برداشته‌اید و باقی‌مانده کرایه به کیف پول شما اضافه شده است. از انتخاب اپلیکیشن Intaleq متشکریم.", + "Finish Monitor": "پایان نظارت", + "Trip finished": "سفر پایان یافت", + "Call Income from Driver": "تماس از راننده", + "Driver Cancelled Your Trip": "راننده سفر شما را لغو کرد", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "هزینه زمان راننده را پرداخت خواهید کرد، کیف پول Intaleq را ببینید", + "Order Applied": "درخواست ثبت شد", + "Share App": "اشتراک‌گذاری برنامه", + "Wallet": "کیف پول", + "Balance": "موجودی", + "Don’t forget your personal belongings.": + "وسایل شخصی خود را جا نگذارید.", + "Profile": "پروفایل", + "Contact Support": "تماس با پشتیبانی", + "Session expired. Please log in again.": + "نشست منقضی شد. لطفاً دوباره وارد شوید.", + "Security Warning": "⚠️ هشدار امنیتی", + "Potential security risks detected. The application may not function correctly.": + "خطرات امنیتی احتمالی شناسایی شد. ممکن است برنامه به درستی کار نکند.", + "please order now": "اکنون سفارش دهید", + "Where to": "کجا می‌روید؟", + "Where are you going?": "به کجا می‌روید؟", + "Quick Actions": "دسترسی سریع", + "My Balance": "موجودی من", + "Order History": "تاریخچه سفارش‌ها", "Contact Us": "تماس با ما", "Driver": "راننده", "Complaint": "شکایت", - "Promos": "پیشنهادات", + "Promos": "تخفیف‌ها", "Recent Places": "مکان‌های اخیر", "From": "از", - "WhatsApp Location Extractor": "استخراج موقعیت از واتس‌اپ", + "WhatsApp Location Extractor": "استخراج موقعیت واتس‌اپ", "Location Link": "لینک موقعیت", - "Paste location link here": "لینک موقعیت را اینجا بچسبانید", - "Go to this location": "به این مکان بروید", - "Paste WhatsApp location link": "لینک موقعیت واتس‌اپ را بچسبانید", - "Select Order Type": "نوع سفارش را انتخاب کنید", - "Choose who this order is for": - "انتخاب کنید این سفارش برای چه کسی است", - "I want to order for myself": "می‌خواهم برای خودم سفارش دهم", - "I want to order for someone else": - "می‌خواهم برای شخص دیگری سفارش دهم", - "Cancel": "لغو", - "Order for someone else": "سفارش برای شخص دیگر", - "Order for myself": "سفارش برای خودم", - "Are you want to go this site": "آیا می‌خواهید به این سایت بروید؟", - "Yes": "بله", + "Paste location link here": "لینک موقعیت را اینجا پیست کنید", + "Go to this location": "برو به این موقعیت", + "Paste WhatsApp location link": "لینک موقعیت واتس‌اپ را پیست کنید", + "Select Order Type": "انتخاب نوع درخواست", + "Choose who this order is for": "این درخواست برای چه کسی است", + "I want to order for myself": "برای خودم درخواست می‌دهم", + "I want to order for someone else": "برای شخص دیگری درخواست می‌دهم", + "Order for someone else": "درخواست برای دیگری", + "Order for myself": "درخواست برای خودم", + "Are you want to go this site": "آیا می‌خواهید به این مکان بروید", "No": "خیر", + "Pay by Sham Cash": "پرداخت با Sham Cash", + "Intaleq Wallet": "کیف پول Intaleq", + "Have a promo code?": "کد تخفیف دارید؟", + "Your Wallet balance is ": "موجودی کیف پول شما: ", + "Cash": "نقدی", + "Phone Number": "شماره تلفن", + "Search country": "جستجوی کشور", + "Payment Successful!": "پرداخت موفق!", + "Your payment was successful.": "پرداخت شما با موفقیت انجام شد.", + "Pay directly to the captain": "پرداخت مستقیم به سفیر (راننده)", + "Top up Wallet to continue": "برای ادامه کیف پول را شارژ کنید", + "Or pay with Cash instead": "یا به صورت نقدی پرداخت کنید", + "Confirm & Find a Ride": "تأیید و یافتن خودرو", + "Balance:": "موجودی:", + "Alerts": "هشدارها", + "Welcome Back!": "خوش آمدید!", + "Current Balance": "موجودی فعلی", + "Set Wallet Phone Number": "تنظیم شماره تلفن کیف پول", + "Link a phone number for transfers": "اتصال شماره تلفن برای انتقال", + "Payment History": "تاریخچه پرداخت", + "View your past transactions": "مشاهده تراکنش‌های قبلی", + "Top up Wallet": "شارژ کیف پول", + "Add funds using our secure methods": "افزایش اعتبار با روش‌های امن", + "Driver is waiting": "راننده منتظر است", + "Type your message...": "پیام خود را بنویسید...", + "Driver Accepted Request": "راننده درخواست را پذیرفت", + "Message": "پیام", + "Call": "تماس", + "Set Phone Number": "تنظیم شماره تلفن", + "Select This Ride": "انتخاب این سفر", + "Call Driver": "تماس با راننده", + "Increase Fare": "افزایش کرایه", + "Stop": "توقف", + "Record": "ضبط", + "Share": "اشتراک‌گذاری", + "WhatsApp": "واتس‌اپ", + "SOS": "SOS", + "No drivers accepted your request yet": + "هنوز هیچ راننده‌ای درخواست شما را نپذیرفته است", + "Increasing the fare might attract more drivers. Would you like to increase the price?": + "افزایش کرایه ممکن است رانندگان بیشتری را جذب کند. آیا مایل به افزایش قیمت هستید؟", + "Please make sure not to leave any personal belongings in the car.": + "لطفاً مطمئن شوید هیچ وسیله شخصی در خودرو جا نماند.", + "Cancel Ride": "لغو سفر", + "Route Not Found": "مسیر یافت نشد", + "We couldn't find a valid route to this destination. Please try selecting a different point.": + "مسیر معتبری به این مقصد پیدا نکردیم. لطفاً نقطه دیگری را انتخاب کنید.", + "alert": "هشدار", + "You can call or record audio during this trip.": + "شما می‌توانید در طول این سفر تماس بگیرید یا صدا ضبط کنید.", + "Warning: Speeding detected!": "هشدار: سرعت غیرمجاز تشخیص داده شد!", + "Fixed Price": "قیمت مقطوع", + "Report": "گزارش", + "Comfort": "آسایش (Comfort)", + "Intaleq Balance": "اعتبار Intaleq", + "Search for a starting point": "جستجو برای نقطه مبدأ", + "Top up Balance to continue": "برای ادامه موجودی را افزایش دهید", + "Electric": "الکتریکی", + "Lady": "بانوان", + "Van": "ون", + "Rayeh Gai": "رفت و برگشت", + "Join Intaleq as a driver using my referral code!": + "با کد معرف من به عنوان راننده به Intaleq بپیوندید!", + "Use code:": "استفاده از کد:", + "Download the Intaleq Driver app now and earn rewards!": + "اپلیکیشن رانندگان Intaleq را دانلود کنید و پاداش بگیرید!", + "Get a discount on your first Intaleq ride!": + "برای اولین سفر خود در Intaleq تخفیف بگیرید!", + "Use my referral code:": "از کد معرف من استفاده کنید:", + "Download the Intaleq app now and enjoy your ride!": + "اپلیکیشن Intaleq را دانلود کنید و از سفر خود لذت ببرید!", + "Contacts Loaded": "مخاطبین بارگذاری شدند", + "Showing": "نمایش", + "of": "از", + "Pay by MTN Wallet": "پرداخت با کیف پول MTN", + "Pay by Syriatel Wallet": "پرداخت با کیف پول Syriatel", + "Customer not found": "مشتری یافت نشد", + "Wallet is blocked": "کیف پول مسدود شده است", + "Customer phone is not active": "تلفن مشتری فعال نیست", + "Balance not enough": "موجودی کافی نیست", + "Balance limit exceeded": "موجودی بیش از حد مجاز است", + "Incorrect sms code": + "⚠️ کد پیامک اشتباه است. لطفاً دوباره تلاش کنید.", + "contacts. Others were hidden because they don't have a phone number.": + "مخاطب. بقیه پنهان شدند چون شماره تلفن ندارند.", + "No contacts found": "مخاطبی یافت نشد", + "No contacts with phone numbers were found on your device.": + "هیچ مخاطبی با شماره تلفن در دستگاه شما یافت نشد.", + "Permission denied": "دسترسی رد شد", + "Contact permission is required to pick contacts": + "برای انتخاب مخاطبین دسترسی به دفترچه تلفن الزامی است.", + "An error occurred while picking contacts:": + "هنگام انتخاب مخاطبین خطایی رخ داد:", + "Please enter a correct phone": "لطفاً یک شماره تلفن صحیح وارد کنید", + "Success": "موفقیت", + "Invite sent successfully": "دعوت‌نامه با موفقیت ارسال شد", + "Hello! I'm inviting you to try Intaleq.": + "سلام! شما را به امتحان کردن Intaleq دعوت می‌کنم.", + "Use my invitation code to get a special gift on your first ride!": + "از کد دعوت من استفاده کنید تا در اولین سفر هدیه ویژه بگیرید!", + "Your personal invitation code is:": "کد دعوت شخصی شما:", + "Be sure to use it quickly! This code expires at": + "سریع استفاده کنید! این کد منقضی می‌شود در", + "Download the app now:": "اپلیکیشن را دانلود کنید:", + "See you on the road!": "به امید دیدار در جاده!", + "This phone number has already been invited.": + "این شماره قبلاً دعوت شده است.", + "An unexpected error occurred. Please try again.": + "خطای غیرمنتظره‌ای رخ داد. لطفاً دوباره تلاش کنید.", + "You deserve the gift": "شما شایسته این هدیه هستید", + "Claim your 20 LE gift for inviting": + "هدیه ۲۰ تومانی خود را برای دعوت دریافت کنید", + "You have got a gift for invitation": + "شما یک هدیه برای دعوت دریافت کردید", + "You have earned 20": "شما ۲۰ امتیاز کسب کردید", + "LE": "تومان", + "Vibration feedback for all buttons": + "بازخورد لرزشی برای همه دکمه‌ها", + "Share with friends and earn rewards": + "با دوستان به اشتراک بگذارید و پاداش بگیرید", + "Gift Already Claimed": "هدیه قبلاً دریافت شده است", + "You have already received your gift for inviting": + "شما قبلاً هدیه خود را برای این دعوت دریافت کرده‌اید", + "Keep it up!": "ادامه بده!", + "has completed": "تکمیل کرد", + "trips": "سفرها", + "Personal Information": "اطلاعات شخصی", + "Name": "نام", + "Not set": "تنظیم نشده", + "Gender": "جنسیت", + "Education": "تحصیلات", + "Work & Contact": "کار و تماس", + "Employment Type": "نوع شغل", + "Marital Status": "وضعیت تاهل", + "SOS Phone": "تلفن اضطراری", + "Sign Out": "خروج از حساب", + "Delete My Account": "حذف حساب من", + "Update Gender": "بروزرسانی جنسیت", + "Update": "بروزرسانی", + "Update Education": "بروزرسانی تحصیلات", + "Are you sure? This action cannot be undone.": + "آیا مطمئن هستید؟ این عملیات قابل بازگشت نیست.", + "Confirm your Email": "ایمیل خود را تأیید کنید", + "Type your Email": "ایمیل خود را وارد کنید", + "Delete Permanently": "حذف دائمی", + "Male": "مرد", + "Female": "زن", + "Other": "سایر", + "High School Diploma": "دیپلم", + "Associate Degree": "کاردانی", + "Bachelor's Degree": "کارشناسی", + "Master's Degree": "کارشناسی ارشد", + "Doctoral Degree": "دکترا", + "Select your preferred language for the app interface.": + "زبان مورد نظر خود را برای برنامه انتخاب کنید.", + "Language Options": "گزینه‌های زبان", + "You can claim your gift once they complete 2 trips.": + "پس از انجام ۲ سفر توسط آنها، می‌توانید هدیه خود را دریافت کنید.", + "Closest & Cheapest": "نزدیک‌ترین و ارزان‌ترین", + "Comfort choice": "انتخاب راحت", + "Travel in a modern, silent electric car. A premium, eco-friendly choice for a smooth ride.": + "با خودروی الکتریکی مدرن و بی‌صدا سفر کنید. انتخابی ممتاز و دوستدار محیط زیست.", + "Spacious van service ideal for families and groups. Comfortable, safe, and cost-effective travel together.": + "سرویس ون جادار، ایده‌آل برای خانواده‌ها و گروه‌ها. سفر راحت، امن و مقرون‌به‌صرفه.", + "Quiet & Eco-Friendly": "بی‌صدا و دوستدار محیط زیست", + "Lady Captain for girls": "راننده خانم برای بانوان", + "Van for familly": "ون برای خانواده", "Are you sure to delete this location?": - "آیا مطمئن هستید که این مکان را حذف کنید؟", + "آیا از حذف این مکان مطمئن هستید؟", + "Change Work location?": "تغییر محل کار؟", + "Change Home location?": "تغییر محل خانه؟", + "Submit a Complaint": "ثبت شکایت", + "Submit Complaint": "ارسال شکایت", + "No trip history found": "تاریخچه سفری یافت نشد", + "Your past trips will appear here.": + "سفرهای قبلی شما در اینجا نمایش داده می‌شود.", + "1. Describe Your Issue": "۱. مشکل خود را شرح دهید", + "Enter your complaint here...": "شکایت خود را اینجا بنویسید...", + "2. Attach Recorded Audio": "۲. ضمیمه کردن فایل صوتی", + "No audio files found.": "فایل صوتی یافت نشد.", + "Confirm Attachment": "تأیید پیوست", + "Attach this audio file?": "آیا این فایل صوتی پیوست شود؟", + "Uploaded": "آپلود شد", + "3. Review Details & Response": "۳. بررسی جزئیات و پاسخ", + "Date": "تاریخ", + "Today's Promos": "تخفیف‌های امروز", + "No promos available right now.": "در حال حاضر تخفیفی موجود نیست.", + "Check back later for new offers!": + "بعداً برای پیشنهادات جدید سر بزنید!", + "Valid Until:": "معتبر تا:", + "CODE": "کد", + "Login": "ورود", + "Sign in for a seamless experience": "برای تجربه بهتر وارد شوید", + "Sign In with Google": "ورود با گوگل", + "Sign in with Apple": "ورود با اپل", + "User not found": "کاربر یافت نشد", + "Need assistance? Contact us": "نیاز به کمک دارید؟ تماس بگیرید", + "Email": "ایمیل", + "Your email address": "آدرس ایمیل شما", + "Enter a valid email": "یک ایمیل معتبر وارد کنید", + "Password": "رمز عبور", + "Your password": "رمز عبور شما", + "Enter your password": "رمز عبور را وارد کنید", + "Submit": "ارسال", + "Terms of Use & Privacy Notice": "شرایط استفاده و حریم خصوصی", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the ": + "با انتخاب \"موافقم\" در زیر، تأیید می‌کنم که خوانده‌ام و موافقم با ", + "Terms of Use": "شرایط استفاده", + " and acknowledge the ": " و تأیید می‌کنم ", + "Privacy Notice": "سیاست حریم خصوصی", + " . I am at least 18 years old.": " . من حداقل ۱۸ سال دارم.", + "I Agree": "موافقم", + "Continue": "ادامه", + "Enable Location": "فعال‌سازی موقعیت", + "To give you the best experience, we need to know where you are. Your location is used to find nearby captains and for pickups.": + "برای ارائه بهترین خدمات، باید بدانیم کجا هستید. موقعیت شما برای یافتن رانندگان نزدیک استفاده می‌شود.", + "Allow Location Access": "اجازه دسترسی به موقعیت", + "Welcome to Intaleq!": "به Intaleq خوش آمدید!", + "Before we start, please review our terms.": + "قبل از شروع، لطفاً شرایط ما را مرور کنید.", + "Your journey starts here": "سفر شما از اینجا شروع می‌شود", + "Cancel Search": "لغو جستجو", + "Set pickup location": "تنظیم محل سوار شدن", + "Move the map to adjust the pin": "نقشه را برای تنظیم پین جابجا کنید", + "Searching for the nearest captain...": + "در حال جستجوی نزدیک‌ترین سفیر...", + "No one accepted? Try increasing the fare.": + "کسی قبول نکرد؟ افزایش کرایه را امتحان کنید.", + "Increase Your Trip Fee (Optional)": "افزایش هزینه سفر (اختیاری)", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "هنوز راننده‌ای پیدا نکرده‌ایم. برای جذاب‌تر کردن پیشنهاد، کرایه را افزایش دهید.", + "No, thanks": "نه، ممنون", + "Increase Fee": "افزایش کرایه", + "Copy": "کپی", + "Promo Copied!": "کد تخفیف کپی شد!", + "Code": "کد", + "copied to clipboard": "در کلیپ‌بورد کپی شد", + "Price": "قیمت", + "Intaleq's Response": "پاسخ Intaleq", + "Awaiting response...": "در انتظار پاسخ...", + "Audio file not attached": "فایل صوتی پیوست نشد", + "The audio file is not uploaded yet.\\nDo you want to submit without it?": + "فایل صوتی هنوز آپلود نشده است.\\nآیا می‌خواهید بدون آن ارسال کنید؟", "deleted": "حذف شد", "To Work": "به محل کار", "Work Saved": "محل کار ذخیره شد", "To Home": "به خانه", "Home Saved": "خانه ذخیره شد", "Destination selected": "مقصد انتخاب شد", - "Now select start pick": "حالا نقطه شروع را انتخاب کنید", - "OK": "تایید", - "Confirm Pick-up Location": "تایید محل سوار شدن", + "Now select start pick": "حالا نقطه مبدأ را انتخاب کنید", + "OK": "تأیید", + "Confirm Pick-up Location": "تأیید محل سوار شدن", "Set Location on Map": "تنظیم موقعیت روی نقشه", - "Nearest Car: ~": "نزدیک‌ترین ماشین: ~", - "Nearest Car": "نزدیک‌ترین ماشین", - "No cars nearby": "هیچ ماشینی در نزدیکی نیست", + "Leave a detailed comment (Optional)": "نظر دقیق بنویسید (اختیاری)", + "Share your experience to help us improve...": + "تجربه خود را برای بهبود ما به اشتراک بگذارید...", + "Your valuable feedback helps us improve our service quality.": + "بازخورد ارزشمند شما به بهبود کیفیت خدمات ما کمک می‌کند.", + "witout zero": "بدون صفر", + "Top up Balance": "افزایش موجودی", + "An error occurred": "خطایی رخ داد", + "Send WhatsApp Message": "ارسال پیام واتس‌اپ", + "How was your trip with": "سفر شما با ... چطور بود", + "Drawing route on map...": "رسم مسیر روی نقشه...", + "Please wait while we prepare your trip.": + "لطفاً صبر کنید تا سفر شما را آماده کنیم.", + "Submit Rating": "ثبت امتیاز", + "Call Support": "تماس با پشتیبانی", + "You can contact us during working hours from 10:00 - 16:00.": + "می‌توانید در ساعات کاری ۱۰:۰۰ تا ۱۶:۰۰ با ما تماس بگیرید.", + "Intaleq is the safest and most reliable ride-sharing app designed especially for passengers in Syria. We provide a comfortable, respectful, and affordable riding experience with features that prioritize your safety and convenience. Our trusted captains are verified, insured, and supported by regular car maintenance carried out by top engineers. We also offer on-road support services to make sure every trip is smooth and worry-free. With Intaleq, you enjoy quality, safety, and peace of mind—every time you ride.": + "Intaleq امن‌ترین و مطمئن‌ترین اپلیکیشن درخواست خودرو است که برای ایران طراحی شده است. ما تجربه‌ای راحت، محترمانه و مقرون‌به‌صرفه را با ویژگی‌هایی که ایمنی شما را در اولویت قرار می‌دهند، فراهم می‌کنیم. رانندگان ما تأیید شده و بیمه هستند.", + "Work time is from 10:00 AM to 16:00 PM.\nYou can send a WhatsApp message or email.": + "ساعات کاری از ۱۰ صبح تا ۴ عصر است.\nمی‌توانید پیام واتس‌اپ یا ایمیل بفرستید.", + "Sorry": "متأسفیم", + "Customer MSISDN doesn’t have customer wallet": + "شماره مشتری کیف پول ندارد", + "Please enter the number without the leading 0": + "لطفاً شماره را بدون صفر اول وارد کنید", + "Please enter your phone number": "لطفاً شماره تلفن خود را وارد کنید", + "Phone number seems too short": "شماره تلفن خیلی کوتاه به نظر می‌رسد", + "No cars are available at the moment. Please try again later.": + "در حال حاضر خودرویی موجود نیست. لطفاً بعداً تلاش کنید.", + "Nearest Car: ~": "نزدیک‌ترین خودرو: ~", + "Nearest Car": "نزدیک‌ترین خودرو", + "No cars nearby": "خودرویی در نزدیکی نیست", "Favorite Places": "مکان‌های مورد علاقه", - "No favorite places yet!": "هنوز هیچ مکان مورد علاقه‌ای ندارید!", - "from your favorites": "از مورد علاقه‌های شما", + "No favorite places yet!": "هنوز مکان مورد علاقه‌ای ندارید!", + "from your favorites": "از علاقه‌مندی‌های شما", "Back": "بازگشت", - "Sign in for a seamless experience": - "وارد شوید برای تجربه‌ای بی‌دردسر", - "Sign In with Google": "ورود با گوگل", - "Sign in with Apple": "ورود با اپل", - "Need assistance? Contact us": "نیاز به کمک دارید؟ با ما تماس بگیرید", - "User not found": "کاربر یافت نشد", - "Email": "ایمیل", - "Your email address": "آدرس ایمیل شما", - "Enter a valid email": "یک ایمیل معتبر وارد کنید", - "Password": "رمز عبور", - "Enter your password": "رمز عبور خود را وارد کنید", - "Submit": "ارسال", - "Terms of Use & Privacy Notice": - "قوانین استفاده و اطلاعیه حریم خصوصی", - "Terms of Use": "قوانین استفاده", - "Privacy Notice": "اطلاعیه حریم خصوصی", + "Enter your code below to apply the discount.": + "کد خود را برای اعمال تخفیف وارد کنید.", "By selecting \"I Agree\" below, I confirm that I have read and agree to the": - "با انتخاب \"موافقم\" در زیر، تأیید می‌کنم که قوانین استفاده را خوانده‌ام و با آن موافقم", - "and acknowledge the": "و اطلاعیه حریم خصوصی را تأیید می‌کنم", - ". I am at least 18 years old.": ". من حداقل 18 سال دارم.", - "Continue": "ادامه", - "Enable Location Access": "فعال‌سازی دسترسی به موقعیت", + "با انتخاب \"موافقم\"، تأیید می‌کنم که خوانده‌ام و قبول دارم", + "and acknowledge the": "و تأیید می‌کنم", + "Enable Location Access": "فعال‌سازی دسترسی موقعیت", "We need your location to find nearby drivers for pickups and drop-offs.": - "ما به موقعیت شما نیاز داریم تا رانندگان نزدیک را برای سوار و پیاده کردن پیدا کنیم.", - "Allow Location Access": "اجازه دسترسی به موقعیت", + "ما برای یافتن رانندگان نزدیک به موقعیت شما نیاز داریم.", "You should restart app to change language": - "برای تغییر زبان باید برنامه را مجددا راه‌اندازی کنید", + "برای تغییر زبان باید برنامه را مجدداً راه اندازی کنید", "Home Page": "صفحه اصلی", "To change Language the App": "برای تغییر زبان برنامه", "Learn more about our app and mission": - "بیشتر درباره برنامه و مأموریت ما بدانید", - "Promos For Today": "پیشنهادات امروز", - "Choose your ride": "Intaleq خود را انتخاب کنید", - "Your Journey Begins Here": "Intaleq شما از اینجا شروع می‌شود", - "Bonus gift": "هدیه ویژه", + "درباره برنامه و مأموریت ما بیشتر بدانید", + "Promos For Today": "تخفیف‌های امروز", + "Choose your ride": "سفر خود را انتخاب کنید", + "Your Journey Begins Here": "سفر شما از اینجا آغاز می‌شود", + "Bonus gift": "هدیه تشویقی", "Pay": "پرداخت", "Get": "دریافت", - "Send to Driver Again": "دوباره به راننده ارسال کنید", + "Send to Driver Again": "ارسال مجدد به راننده", "Driver Name:": "نام راننده:", - "No trip data available": "هیچ داده‌ای از Intaleq موجود نیست", - "Car Plate:": "پلاک ماشین:", + "No trip data available": "اطلاعات سفر موجود نیست", + "Car Plate:": "پلاک خودرو:", "remaining": "باقی‌مانده", "Order Cancelled": "سفارش لغو شد", - "You canceled VIP trip": "شما Intaleq VIP را لغو کردید", + "You canceled VIP trip": "شما سفر VIP را لغو کردید", "Passenger cancelled order": "مسافر سفارش را لغو کرد", - "Your trip is scheduled": "Intaleq شما برنامه‌ریزی شده است", - "Don't forget your ride!": "Intaleq خود را فراموش نکنید!", - "Trip updated successfully": "Intaleq با موفقیت به‌روزرسانی شد", - "Car Make:": "سازنده ماشین:", - "Car Model:": "مدل ماشین:", - "Car Color:": "رنگ ماشین:", + "Your trip is scheduled": "سفر شما زمان‌بندی شد", + "Don't forget your ride!": "سفر خود را فراموش نکنید!", + "Trip updated successfully": "سفر با موفقیت بروزرسانی شد", + "Car Make:": "سازنده خودرو:", + "Car Model:": "مدل خودرو:", + "Car Color:": "رنگ خودرو:", "Driver Phone:": "تلفن راننده:", - "Pre-booking": "رزرو قبلی", + "Pre-booking": "رزرو پیش‌ازوقت", "Waiting VIP": "در انتظار VIP", "Driver List": "لیست رانندگان", - "Confirm Trip": "تایید Intaleq", - "Select date and time of trip": "تاریخ و زمان Intaleq را انتخاب کنید", + "Confirm Trip": "تأیید سفر", + "Select date and time of trip": "تاریخ و زمان سفر را انتخاب کنید", "Date and Time Picker": "انتخاب تاریخ و زمان", - "Trip Status:": "وضعیت Intaleq:", + "Trip Status:": "وضعیت سفر:", "pending": "در انتظار", - "accepted": "تایید شده", + "accepted": "پذیرفته شده", "rejected": "رد شده", "Apply": "اعمال", - "Enter your promo code": "کد تخفیف خود را وارد کنید", + "Enter your promo code": "کد تخفیف را وارد کنید", "Apply Promo Code": "اعمال کد تخفیف", "Scheduled Time:": "زمان برنامه‌ریزی شده:", - "No drivers available": "هیچ راننده‌ای موجود نیست", + "No drivers available": "راننده‌ای موجود نیست", "No drivers available at the moment. Please try again later.": - "در حال حاضر هیچ راننده‌ای موجود نیست. لطفاً بعداً دوباره تلاش کنید.", - "you have a negative balance of": "شما موجودی منفی دارید به میزان", - "Please try again in a few moments": - "لطفاً چند لحظه دیگر دوباره تلاش کنید", + "در حال حاضر راننده‌ای موجود نیست. لطفاً بعداً تلاش کنید.", + "you have a negative balance of": "شما بدهی دارید به مبلغ", + "Please try again in a few moments": "لطفاً چند لحظه دیگر تلاش کنید", "Unknown Driver": "راننده ناشناس", - "in your": "در", + "in your": "در شما", "The driver accepted your order for": - "راننده سفارش شما را برای پذیرفت", - "wallet due to a previous trip.": "کیف پول به دلیل Intaleq قبلی.", - "rides": "Intaleqها", - "Add Work": "اضافه کردن محل کار", + "راننده سفارش شما را پذیرفت به مبلغ", + "wallet due to a previous trip.": "بدهی کیف پول بابت سفر قبلی.", + "rides": "سفرها", + "Add Work": "افزودن محل کار", "The reason is": "دلیل این است", "User does not have a wallet #1652": "کاربر کیف پول ندارد #1652", - "Price of trip": "قیمت Intaleq", + "Price of trip": "قیمت سفر", "From:": "از:", "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "برای Intaleqهای سریع و تحویل، قیمت به صورت پویا محاسبه می‌شود. برای Intaleqهای راحت، قیمت بر اساس زمان و مسافت است.", - "Phone Wallet Saved Successfully": "کیف پول تلفن با موفقیت ذخیره شد", - "Add wallet phone you use": "شماره تلفن کیف پول خود را اضافه کنید", - "Update Available": "به‌روزرسانی موجود است", + "برای سفرهای عادی و پیک، قیمت پویا محاسبه می‌شود. برای سفرهای راحت، قیمت بر اساس زمان و مسافت است.", + "Phone Wallet Saved Successfully": "شماره کیف پول با موفقیت ذخیره شد", + "Add wallet phone you use": "شماره موبایل کیف پول خود را وارد کنید", + "Update Available": "بروزرسانی موجود است", "Phone number must be exactly 11 digits long": - "شماره تلفن باید دقیقاً 11 رقم باشد", - "Insert Wallet phone number": "شماره تلفن کیف پول را وارد کنید", + "شماره تلفن باید دقیقاً ۱۱ رقم باشد", + "Insert Wallet phone number": "شماره موبایل کیف پول را وارد کنید", "Phone number isn't an Egyptian phone number": - "شماره تلفن یک شماره مصری نیست", + "شماره تلفن معتبر نیست", "A new version of the app is available. Please update to the latest version.": - "نسخه جدید برنامه موجود است. لطفاً به آخرین نسخه به‌روزرسانی کنید.", + "نسخه جدید برنامه موجود است. لطفاً بروزرسانی کنید.", "We use location to get accurate and nearest passengers for you": - "ما از موقعیت استفاده می‌کنیم تا مسافران دقیق و نزدیک را برای شما پیدا کنیم", + "ما از موقعیت مکانی برای یافتن دقیق‌ترین و نزدیک‌ترین مسافران استفاده می‌کنیم", "This ride is already applied by another driver.": - "این Intaleq قبلاً توسط راننده دیگری اعمال شده است.", + "این سفر قبلاً توسط راننده دیگری گرفته شده است.", "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": - "ما از موقعیت دقیق شما استفاده می‌کنیم تا نزدیک‌ترین راننده موجود را پیدا کنیم و اطلاعات دقیق سوار و پیاده کردن را ارائه دهیم. شما می‌توانید این را در تنظیمات مدیریت کنید.", - "message From Driver": "پیام از راننده", - "message From passenger": "پیام از مسافر", - "Where are you, sir?": "کجا هستید، آقا؟", + "ما از موقعیت دقیق شما برای یافتن نزدیک‌ترین راننده و ارائه اطلاعات دقیق مبدأ و مقصد استفاده می‌کنیم. می‌توانید این را در تنظیمات مدیریت کنید.", + "Where are you, sir?": "کجایید قربان؟", "I've been trying to reach you but your phone is off.": - "سعی کردم با شما تماس بگیرم اما تلفن شما خاموش است.", + "سعی کردم تماس بگیرم اما گوشی شما خاموش است.", "Please don't be late": "لطفاً دیر نکنید", "Please don't be late, I'm waiting for you at the specified location.": - "لطفاً دیر نکنید، من در محل مشخص شده منتظر شما هستم.", + "لطفاً دیر نکنید، من در موقعیت مشخص شده منتظر شما هستم.", "My location is correct. You can search for me using the navigation app": - "موقعیت من درست است. شما می‌توانید با استفاده از برنامه ناوبری من را پیدا کنید.", + "موقعیت من صحیح است. می‌توانید با مسیریاب مرا پیدا کنید", "Hello, I'm at the agreed-upon location": "سلام، من در محل توافق شده هستم", "How much longer will you be?": "چقدر دیگر طول می‌کشد؟", "Phone number is verified before": "شماره تلفن قبلاً تأیید شده است", - "Change Ride": "تغییر Intaleq", + "Change Ride": "تغییر سفر", "You can change the destination by long-pressing any point on the map": - "می‌توانید مقصد را با فشار طولانی روی هر نقطه از نقشه تغییر دهید", - "Pick from map destination": "انتخاب مقصد از نقشه", + "می‌توانید با لمس طولانی روی نقشه مقصد را تغییر دهید", + "Pick from map destination": "انتخاب مقصد از روی نقشه", "Pick or Tap to confirm": "انتخاب یا ضربه برای تأیید", - "Accepted your order": "سفارش شما پذیرفته شد", + "Accepted your order": "سفارش شما را پذیرفت", "Order Accepted": "سفارش پذیرفته شد", "with type": "با نوع", - "accepted your order at price": "سفارش شما را با قیمت پذیرفت", - "Cancel Trip from driver": "لغو Intaleq توسط راننده", + "accepted your order at price": "سفارش شما را با قیمت ... پذیرفت", "you canceled order": "شما سفارش را لغو کردید", "If you want order to another person": "اگر می‌خواهید برای شخص دیگری سفارش دهید", - "Ok I will go now.": "باشه، الان می‌روم.", - "Hi, I will go now": "سلام، الان می‌روم", "upgrade price": "افزایش قیمت", - "Please enter a correct phone": "لطفاً یک شماره تلفن صحیح وارد کنید", "airport": "فرودگاه", "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": - "بهترین انتخاب برای ماشین راحت با مسیر و نقاط توقف انعطاف‌پذیر. این فرودگاه ورود ویزا را با این قیمت ارائه می‌دهد.", + "بهترین انتخاب برای خودروی راحت با مسیر منعطف و توقف.", "You can upgrade price to may driver accept your order": - "می‌توانید قیمت را افزایش دهید تا راننده سفارش شما را بپذیرد", + "می‌توانید قیمت را افزایش دهید تا راننده قبول کند", "Change Route": "تغییر مسیر", - "No Captain Accepted Your Order": "هیچ کاپیتانی سفارش شما را نپذیرفت", + "No Captain Accepted Your Order": "هیچ سفیری سفارش شما را نپذیرفت", "We are looking for a captain but the price may increase to let a captain accept": - "ما در حال جستجو برای یک کاپیتان هستیم اما قیمت ممکن است افزایش یابد تا کاپیتان بپذیرد", - "No, I want to cancel this trip": - "نه، می‌خواهم این Intaleq را لغو کنم", - "Trip Cancelled. The cost of the trip will be added to your wallet.": - "Intaleq لغو شد. هزینه Intaleq به کیف پول شما اضافه می‌شود.", + "ما به دنبال سفیر هستیم اما ممکن است قیمت افزایش یابد", + "No, I want to cancel this trip": "نه، می‌خواهم سفر را لغو کنم", "Attention": "توجه", "Trip Cancelled. The cost of the trip will be deducted from your wallet.": - "Intaleq لغو شد. هزینه Intaleq از کیف پول شما کسر می‌شود.", + "سفر لغو شد. هزینه سفر از کیف پول شما کسر خواهد شد.", "You will be charged for the cost of the driver coming to your location.": - "شما برای هزینه آمدن راننده به محل شما شارژ خواهید شد.", + "هزینه آمدن راننده به محل شما محاسبه خواهد شد.", "reject your order.": "سفارش شما را رد کرد.", "Order Under Review": "سفارش در حال بررسی", "is reviewing your order. They may need more information or a higher price.": - "در حال بررسی سفارش شما است. ممکن است به اطلاعات بیشتر یا قیمت بالاتری نیاز داشته باشند.", - "The driver canceled your ride.": "راننده Intaleq شما را لغو کرد.", - "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": - "ما هنوز هیچ راننده‌ای پیدا نکرده‌ایم. در نظر بگیرید هزینه Intaleq خود را افزایش دهید تا پیشنهاد شما برای رانندگان جذاب‌تر شود.", - "Increase Your Trip Fee (Optional)": "افزایش هزینه Intaleq (اختیاری)", + "سفارش شما را بررسی می‌کند. ممکن است اطلاعات بیشتر یا قیمت بالاتری بخواهد.", "Vibration": "لرزش", "Resend code": "ارسال مجدد کد", - "token change": "تغییر توکن", "change device": "تغییر دستگاه", - "Device Change Detected": "تغییر دستگاه تشخیص داده شد", + "Device Change Detected": "تغییر دستگاه شناسایی شد", "You can only use one device at a time. This device will now be set as your active device.": - "شما فقط می‌توانید از یک دستگاه در یک زمان استفاده کنید. این دستگاه اکنون به عنوان دستگاه فعال شما تنظیم می‌شود.", + "شما فقط می‌توانید از یک دستگاه در آن واحد استفاده کنید. این دستگاه اکنون فعال شد.", "Click here point": "اینجا کلیک کنید", - "Are you want to change": "آیا می‌خواهید تغییر دهید؟", + "Are you want to change": "آیا می‌خواهید تغییر دهید", "by": "توسط", "Enter your complaint here": "شکایت خود را اینجا وارد کنید", "Please enter your complaint.": "لطفاً شکایت خود را وارد کنید.", "Complaint data saved successfully": - "داده‌های شکایت با موفقیت ذخیره شد", - "Trip Monitor": "مانیتور Intaleq", - "Insert SOS Phone": "وارد کردن شماره تلفن SOS", - "Add SOS Phone": "اضافه کردن شماره تلفن SOS", - "Trip Monitoring": "مانیتورینگ Intaleq", - "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": - "عزیز ،\n\n 🚀 من به تازگی یک Intaleq هیجان‌انگیز را شروع کرده‌ام و می‌خواهم جزئیات Intaleq و موقعیت فعلی خود را با شما به اشتراک بگذارم! لطفاً برنامه Intaleq را دانلود کنید. این برنامه به شما امکان می‌دهد جزئیات Intaleq و آخرین موقعیت من را مشاهده کنید.\n\n 👉 لینک دانلود: \n اندروید [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n منتظر هستم تا شما را در طول ماجراجویی خود نزدیک نگه دارم!\n\n Intaleq ،", - "Send Intaleq app to him": "برنامه Intaleq را برای او ارسال کنید", + "اطلاعات شکایت با موفقیت ذخیره شد", + "Trip Monitor": "نظارت سفر", + "Insert SOS Phone": "درج تلفن اضطراری", + "Add SOS Phone": "افزودن تلفن اضطراری", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "عزیز،\n\n🚀 من همین الان یک سفر هیجان‌انگیز را شروع کردم و می‌خواهم جزئیات سفر و موقعیتم را با تو به اشتراک بگذارم! لطفاً اپلیکیشن Intaleq را دانلود کن.\n\n👉 لینک دانلود:\nاندروید [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nمنتظرم که در طول مسیر همراهم باشی!\n\nIntaleq ,", + "Send Intaleq app to him": "ارسال برنامه Intaleq برای او", "No passenger found for the given phone number": - "هیچ مسافری برای شماره تلفن داده شده یافت نشد", + "مسافری با این شماره تلفن یافت نشد", "No user found for the given phone number": - "هیچ کاربری برای شماره تلفن داده شده یافت نشد", + "کاربری با این شماره تلفن یافت نشد", "This price is": "این قیمت است", - "Work": "کار", - "Add Home": "اضافه کردن خانه", + "Work": "محل کار", + "Add Home": "افزودن خانه", "Notifications": "اعلان‌ها", "💳 Pay with Credit Card": "💳 پرداخت با کارت اعتباری", - "⚠️ You need to choose an amount!": - "⚠️ شما باید یک مبلغ انتخاب کنید!", - "💰 Pay with Wallet": "پرداخت با کیف پول", + "⚠️ You need to choose an amount!": "⚠️ باید مبلغی را انتخاب کنید!", + "💰 Pay with Wallet": "💰 پرداخت با کیف پول", "You must restart the app to change the language.": - "برای تغییر زبان باید برنامه را مجددا راه‌اندازی کنید.", - "joined": "عضویت", + "برای تغییر زبان باید برنامه را دوباره راه‌اندازی کنید.", + "joined": "پیوست", "Driver joined the channel": "راننده به کانال پیوست", "Driver left the channel": "راننده کانال را ترک کرد", "Call Page": "صفحه تماس", - "Call End": "پایان تماس", - "Call Left": "تماس باقی‌مانده", - r"$ Next as Cash $!": "بعدی به صورت نقدی!", + "Call Left": "تماس‌های باقی‌مانده", + " Next as Cash !": " بعدی به صورت نقدی!", "To use Wallet charge it": "برای استفاده از کیف پول آن را شارژ کنید", "We are searching for the nearest driver to you": - "ما در حال جستجو برای نزدیک‌ترین راننده به شما هستیم", + "در حال جستجو برای نزدیک‌ترین راننده به شما", "Best choice for cities": "بهترین انتخاب برای شهرها", "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": - "رایه‌گای: سرویس Intaleq رفت و برگشت برای Intaleq راحت بین شهرها، آسان و قابل اعتماد.", - "Rayeh Gai": "رایه‌گای", - "This trip is for women only": "این Intaleq فقط برای زنان است", - "Total budgets on month": "بودجه‌های کل در ماه", + "رفت و برگشت: سرویس سفر دوطرفه برای راحتی سفر بین شهری.", + "This trip is for women only": "این سفر فقط برای بانوان است", + "Total budgets on month": "مجموع بودجه در ماه", "You have call from driver": "شما تماس از راننده دارید", - "Comfort": "راحتی", - "Intaleq": "سرعت", + "Intaleq": "Intaleq", + "passenger agreement": "توافق‌نامه مسافر", + "To become a passenger, you must review and agree to the ": + "برای مسافر شدن، باید بررسی کنید و موافقت کنید با ", + "agreement subtitle": + "برای ادامه، باید شرایط استفاده و سیاست حریم خصوصی را بپذیرید.", + "terms of use": "شرایط استفاده", + " and acknowledge our Privacy Policy.": + " و سیاست حریم خصوصی ما را تأیید کنید.", + "and acknowledge our": "و تأیید کنید", + "privacy policy": "سیاست حریم خصوصی.", + "i agree": "موافقم", "Driver already has 2 trips within the specified period.": - "راننده قبلاً 2 Intaleq در دوره مشخص شده دارد.", - "The invitation was sent successfully": "دعوت با موفقیت ارسال شد", - "Lady": "خانم", - "You should select your country": "شما باید کشور خود را انتخاب کنید", + "راننده در حال حاضر ۲ سفر در بازه زمانی مشخص دارد.", + "The invitation was sent successfully": + "دعوت‌نامه با موفقیت ارسال شد", + "You should select your country": "باید کشور خود را انتخاب کنید", "Scooter": "اسکوتر", "A trip with a prior reservation, allowing you to choose the best captains and cars.": - "یک Intaleq با رزرو قبلی، که به شما امکان می‌دهد بهترین کاپیتان‌ها و ماشین‌ها را انتخاب کنید.", + "سفری با رزرو قبلی، که به شما امکان انتخاب بهترین سفیران و خودروها را می‌دهد.", "Mishwar Vip": "مشوار VIP", "The driver waiting you in picked location .": - "راننده در محل انتخاب شده منتظر شما است.", + "راننده در محل انتخاب شده منتظر شماست.", "About Us": "درباره ما", "You can change the vibration feedback for all buttons": - "شما می‌توانید بازخورد لرزش را برای همه دکمه‌ها تغییر دهید", + "می‌توانید بازخورد لرزشی دکمه‌ها را تغییر دهید", "Most Secure Methods": "امن‌ترین روش‌ها", - "In-App VOIP Calls": "تماس‌های VOIP درون برنامه", - "Recorded Trips for Safety": "Intaleqهای ضبط شده برای ایمنی", + "In-App VOIP Calls": "تماس اینترنتی درون‌برنامه‌ای", + "Recorded Trips for Safety": "سفرهای ضبط شده برای امنیت", "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": - "\nما همچنین مقرون به صرفه بودن را در اولویت قرار می‌دهیم و قیمت‌های رقابتی ارائه می‌دهیم تا Intaleqهای شما در دسترس باشند.", + "\nما همچنین اولویت را بر مقرون‌به‌صرفه بودن می‌گذاریم.", "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": - "Intaleq یک برنامه اشتراک‌گذاری Intaleq است که با توجه به ایمنی و مقرون به صرفه بودن شما طراحی شده است. ما شما را با رانندگان قابل اعتماد در منطقه خود ارتباط می‌دهیم و یک تجربه Intaleq راحت و بدون استرس را تضمین می‌کنیم.\n\nدر اینجا برخی از ویژگی‌های کلیدی که ما را متمایز می‌کند آورده شده است:", + "Intaleq یک برنامه درخواست خودرو است که با در نظر گرفتن امنیت و بودجه شما طراحی شده است.", "Sign In by Apple": "ورود با اپل", "Sign In by Google": "ورود با گوگل", - "How do I request a ride?": "چگونه یک Intaleq درخواست دهم؟", + "How do I request a ride?": "چگونه درخواست سفر دهم؟", "Step-by-step instructions on how to request a ride through the Intaleq app.": - "دستورالعمل‌های گام به گام درباره نحوه درخواست Intaleq از طریق برنامه Intaleq.", + "دستورالعمل‌های گام‌به‌گام برای درخواست سفر.", "What types of vehicles are available?": - "چه نوع وسایل نقلیه‌ای موجود است؟", + "چه نوع خودروهایی موجود است؟", "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": - "Intaleq انواع گزینه‌های وسایل نقلیه را برای رفع نیازهای شما ارائه می‌دهد، از جمله اقتصادی، راحت و لوکس. گزینه‌ای را انتخاب کنید که بهترین تناسب با بودجه و تعداد مسافران شما دارد.", - "How can I pay for my ride?": - "چگونه می‌توانم برای Intaleq خود پرداخت کنم؟", + "Intaleq گزینه‌های مختلفی از جمله اقتصادی، راحت و لوکس ارائه می‌دهد.", + "How can I pay for my ride?": "چگونه هزینه سفر را پرداخت کنم؟", "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": - "Intaleq روش‌های پرداخت متعددی را برای راحتی شما ارائه می‌دهد. بین پرداخت نقدی یا پرداخت با کارت اعتباری/دبیت در زمان تأیید Intaleq انتخاب کنید.", - "Can I cancel my ride?": "آیا می‌توانم Intaleq خود را لغو کنم؟", - "Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.": - "بله، شما می‌توانید Intaleq خود را تحت شرایط خاصی (مثلاً قبل از اختصاص راننده) لغو کنید. برای جزئیات بیشتر به سیاست لغو Intaleq مراجعه کنید.", - "Driver Registration & Requirements": "ثبت‌نام و شرایط راننده", + "Intaleq روش‌های پرداخت متعددی ارائه می‌دهد.", + "Can I cancel my ride?": "آیا می‌توانم سفرم را لغو کنم؟", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "بله، می‌توانید لغو کنید، اما ممکن است هزینه لغو اعمال شود.", + "Driver Registration & Requirements": "ثبت نام راننده و الزامات", "How can I register as a driver?": - "چگونه می‌توانم به عنوان راننده ثبت‌نام کنم؟", + "چگونه به عنوان راننده ثبت نام کنم؟", "What are the requirements to become a driver?": - "شرایط لازم برای تبدیل شدن به راننده چیست؟", + "شرایط راننده شدن چیست؟", "Visit our website or contact Intaleq support for information on driver registration and requirements.": - "برای اطلاعات درباره ثبت‌نام و شرایط راننده به وب‌سایت ما مراجعه کنید یا با پشتیبانی Intaleq تماس بگیرید.", + "برای اطلاعات بیشتر به وب‌سایت ما مراجعه کنید یا با پشتیبانی تماس بگیرید.", "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": - "Intaleq قابلیت چت درون برنامه را ارائه می‌دهد تا بتوانید در طول Intaleq با راننده یا مسافر خود ارتباط برقرار کنید.", - "What safety measures does Intaleq offer?": - "Intaleq چه اقدامات ایمنی ارائه می‌دهد؟", + "Intaleq امکان چت درون‌برنامه‌ای را فراهم می‌کند.", "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": - "Intaleq ایمنی شما را در اولویت قرار می‌دهد. ما ویژگی‌هایی مانند تأیید راننده، ردیابی Intaleq درون برنامه و گزینه‌های تماس اضطراری ارائه می‌دهیم.", + "Intaleq امنیت شما را در اولویت قرار می‌دهد.", "Frequently Questions": "سوالات متداول", "User does not exist.": "کاربر وجود ندارد.", "We need your phone number to contact you and to help you.": - "ما به شماره تلفن شما نیاز داریم تا با شما تماس بگیریم و به شما کمک کنیم.", + "برای تماس و کمک به شما به شماره تلفن نیاز داریم.", "You will recieve code in sms message": "کد را در پیامک دریافت خواهید کرد", "Please enter": "لطفاً وارد کنید", "We need your phone number to contact you and to help you receive orders.": - "ما به شماره تلفن شما نیاز داریم تا با شما تماس بگیریم و به شما در دریافت سفارشات کمک کنیم.", - "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": - "نام کامل در سوابق کیفری شما با نام موجود در گواهینامه رانندگی شما مطابقت ندارد. لطفاً تأیید کنید و اسناد صحیح را ارائه دهید.", - "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": - "شماره ملی در گواهینامه رانندگی شما با شماره موجود در سند شناسایی شما مطابقت ندارد. لطفاً تأیید کنید و اسناد صحیح را ارائه دهید.", + "برای دریافت سفارشات به شماره تلفن نیاز داریم.", + "The full name on your criminal record does not match the one on your driver's license. Please verify and provide the correct documents.": + "نام کامل در گواهی عدم سوءپیشینه با گواهینامه مطابقت ندارد.", + "The national number on your driver's license does not match the one on your ID document. Please verify and provide the correct documents.": + "کد ملی در گواهینامه با کارت ملی مطابقت ندارد.", "Capture an Image of Your Criminal Record": - "عکس سوابق کیفری خود را بگیرید", + "از گواهی عدم سوءپیشینه عکس بگیرید", "IssueDate": "تاریخ صدور", - "Capture an Image of Your car license front ": - "عکس جلوی گواهینامه ماشین خود را بگیرید", + "Capture an Image of Your car license front": + "از روی کارت ماشین عکس بگیرید", "Capture an Image of Your ID Document front": - "عکس جلوی سند شناسایی خود را بگیرید", - "NationalID": "شناسه ملی", + "از روی کارت ملی عکس بگیرید", + "NationalID": "کد ملی", "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": - "شما می‌توانید برنامه Intaleq را با دوستان خود به اشتراک بگذارید و برای Intaleqهایی که با استفاده از کد شما انجام می‌دهند پاداش دریافت کنید", + "برنامه را با دوستان به اشتراک بگذارید و پاداش بگیرید.", "FullName": "نام کامل", - "No invitation found yet!": "هنوز هیچ دعوتی یافت نشده است!", - "InspectionResult": "نتیجه بازرسی", - "Criminal Record": "سوابق کیفری", - "Share App": "اشتراک‌گذاری برنامه", + "No invitation found yet!": "هنوز دعوتی پیدا نشد!", + "InspectionResult": "نتیجه معاینه", + "Criminal Record": "گواهی عدم سوءپیشینه", "The email or phone number is already registered.": - "ایمیل یا شماره تلفن قبلاً ثبت‌نام شده است.", + "ایمیل یا شماره تلفن قبلاً ثبت شده است.", "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": - "برای تبدیل شدن به یک راننده اشتراک‌گذاری Intaleq در برنامه Intaleq، شما باید گواهینامه رانندگی، سند شناسایی و سند ثبت ماشین خود را آپلود کنید. سیستم هوش مصنوعی ما به سرعت اصالت آن‌ها را بررسی و تأیید می‌کند. اگر اسناد شما تأیید شوند، می‌توانید به عنوان راننده در برنامه Intaleq شروع به کار کنید. لطفاً توجه داشته باشید که ارسال اسناد جعلی یک جرم جدی است و ممکن است منجر به اخراج فوری و پیگرد قانونی شود.", - "Documents check": "بررسی اسناد", + "برای راننده شدن باید مدارک خود را آپلود کنید. هوش مصنوعی ما در ۲-۳ دقیقه بررسی می‌کند.", + "Documents check": "بررسی مدارک", "Driver's License": "گواهینامه رانندگی", - "for your first registration!": "برای اولین ثبت‌نام شما!", - "Get it Now!": "همین الان دریافت کنید!", + "for your first registration!": "برای اولین ثبت نام شما!", + "Get it Now!": "همین الان بگیر!", "before": "قبل از", "Code not approved": "کد تأیید نشد", - "3000 LE": "3000 لیر", + "3000 LE": "۳۰۰۰ تومان", "Do you have an invitation code from another driver?": "آیا کد دعوت از راننده دیگری دارید؟", - "Paste the code here": "کد را اینجا بچسبانید", - "No, I don't have a code": "نه، من کدی ندارم", + "Paste the code here": "کد را اینجا پیست کنید", + "No, I don't have a code": "خیر، کد ندارم", "Code approved": "کد تأیید شد", "Install our app:": "برنامه ما را نصب کنید:", "Invite another driver and both get a gift after he completes 100 trips!": - "راننده دیگری را دعوت کنید و هر دو پس از تکمیل 100 Intaleq هدیه دریافت کنید!", + "راننده دیگری را دعوت کنید و بعد از ۱۰۰ سفر هدیه بگیرید!", "Invite": "دعوت", - "Are you sure?": "آیا مطمئن هستید؟", + "Are you sure?": "مطمئن هستید؟", "This will delete all recorded files from your device.": - "این کار تمام فایل‌های ضبط شده از دستگاه شما را حذف می‌کند.", - "Select a file": "یک فایل انتخاب کنید", - "Select a File": "یک فایل انتخاب کنید", + "این کار تمام فایل‌های ضبط شده را حذف می‌کند.", + "Select a file": "انتخاب فایل", + "Select a File": "انتخاب یک فایل", "Delete": "حذف", - "attach audio of complain": "پیوست کردن صدای شکایت", + "attach audio of complain": "ضمیمه صدای شکایت", "Phone Number Check": "بررسی شماره تلفن", "Drivers received orders": "رانندگان سفارشات را دریافت کردند", - "No audio files recorded.": "هیچ فایل صوتی ضبط نشده است.", + "No audio files recorded.": "هیچ فایل صوتی ضبط نشده.", "This is for delivery or a motorcycle.": - "این برای تحویل یا موتورسیکلت است.", - "We will look for a new driver.\nPlease wait.": - "ما به دنبال یک راننده جدید خواهیم بود.\nلطفاً منتظر بمانید.", - "Intaleq Reminder": "یادآوری Intaleq", + "این برای پیک یا موتورسیکلت است.", + "Intaleq Reminder": "یادآور Intaleq", "It's time to check the Intaleq app!": - "زمان آن است که برنامه Intaleq را بررسی کنید!", - "you must insert token code": "شما باید کد توکن را وارد کنید", + "وقت چک کردن برنامه Intaleq است!", + "you must insert token code": "باید کد توکن را وارد کنید", "Something went wrong. Please try again.": "مشکلی پیش آمد. لطفاً دوباره تلاش کنید.", - "Trip Details": "جزئیات Intaleq", + "Trip Details": "جزئیات سفر", "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": - "متن هیچ جزئیاتی درباره شکایت ارائه نمی‌دهد، بنابراین نمی‌توانم راه‌حلی برای این مشکل ارائه دهم. لطفاً اطلاعات لازم را ارائه دهید و من خوشحال خواهم شد که به شما کمک کنم.", - "Submit Your Complaint": "شکایت خود را ارسال کنید", - "Date": "تاریخ", - "Price": "قیمت", + "جزئیات شکایت موجود نیست.", + "Submit Your Complaint": "ارسال شکایت", "Status": "وضعیت", - "Choose from contact": "از مخاطبین انتخاب کنید", - "attach correct audio": "پیوست کردن صدای صحیح", - "be sure": "مطمئن شوید", - "Audio uploaded successfully.": "صدا با موفقیت آپلود شد.", + "Choose from contact": "انتخاب از مخاطبین", + "attach correct audio": "صدای صحیح را ضمیمه کنید", + "be sure": "مطمئن باشید", + "Audio uploaded successfully.": "فایل صوتی با موفقیت آپلود شد.", "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": - "مناسب برای مسافران که به دنبال جدیدترین مدل‌های ماشین با آزادی انتخاب هر مسیری که می‌خواهند هستند", + "عالی برای مسافرانی که دنبال خودروهای جدید و آزادی انتخاب مسیر هستند", "Share this code with your friends and earn rewards when they use it!": - "این کد را با دوستان خود به اشتراک بگذارید و وقتی از آن استفاده می‌کنند پاداش دریافت کنید!", + "این کد را به اشتراک بگذارید و پاداش بگیرید!", "Enter phone": "وارد کردن تلفن", - "You deserve the gift": "شما مستحق هدیه هستید", "complete, you can claim your gift": - "کامل، شما می‌توانید هدیه خود را دریافت کنید", - "When": "چه زمانی", - "Enter driver's phone": "وارد کردن تلفن راننده", - "Send Invite": "ارسال دعوت", + "تکمیل شد، می‌توانید هدیه را دریافت کنید", + "When": "وقتی", + "Enter driver's phone": "تلفن راننده را وارد کنید", + "Send Invite": "ارسال دعوت‌نامه", "Show Invitations": "نمایش دعوت‌ها", "License Type": "نوع گواهینامه", - "National Number": "شماره ملی", - "Name (Arabic)": "نام (عربی)", + "National Number": "کد ملی", + "Name (Arabic)": "نام (فارسی/عربی)", "Name (English)": "نام (انگلیسی)", "Address": "آدرس", "Issue Date": "تاریخ صدور", "Expiry Date": "تاریخ انقضا", - "License Categories": "دسته‌بندی‌های گواهینامه", - "driver_license": "گواهینامه رانندگی", + "License Categories": "دسته‌های گواهینامه", + "driver_license": "گواهینامه", "Capture an Image of Your Driver License": - "عکس گواهینامه رانندگی خود را بگیرید", - "ID Documents Back": "پشت اسناد شناسایی", - "National ID": "شناسه ملی", + "عکس گواهینامه خود را بگیرید", + "ID Documents Back": "پشت کارت ملی", + "National ID": "کارت ملی", "Occupation": "شغل", - "Gender": "جنسیت", - "Religion": "دین", - "Marital Status": "وضعیت تأهل", - "Full Name (Marital)": "نام کامل (وضعیت تأهل)", + "Religion": "مذهب", + "Full Name (Marital)": "نام کامل", "Expiration Date": "تاریخ انقضا", - "Capture an Image of Your ID Document Back": - "عکس پشت سند شناسایی خود را بگیرید", - "ID Documents Front": "جلوی اسناد شناسایی", + "Capture an Image of Your ID Document Back": "عکس پشت کارت ملی", + "ID Documents Front": "روی کارت ملی", "First Name": "نام", - "CardID": "شناسه کارت", - "Vehicle Details Front": "جزئیات جلوی وسیله نقلیه", + "CardID": "شماره کارت", + "Vehicle Details Front": "جزئیات خودرو (جلو)", "Plate Number": "شماره پلاک", "Owner Name": "نام مالک", - "Vehicle Details Back": "جزئیات پشت وسیله نقلیه", + "Vehicle Details Back": "جزئیات خودرو (پشت)", "Make": "سازنده", "Model": "مدل", "Year": "سال", - "Chassis": "شاسی", + "Chassis": "شماره شاسی", "Color": "رنگ", - "Displacement": "جابجایی", + "Displacement": "حجم موتور", "Fuel": "سوخت", "Tax Expiry Date": "تاریخ انقضای مالیات", - "Inspection Date": "تاریخ بازرسی", - "Capture an Image of Your car license back": - "عکس پشت گواهینامه ماشین خود را بگیرید", - "Capture an Image of Your Driver’s License": - "عکس گواهینامه رانندگی خود را بگیرید", + "Inspection Date": "تاریخ معاینه فنی", + "Capture an Image of Your car license back": "عکس پشت کارت ماشین", + "Capture an Image of Your Driver's License": "عکس گواهینامه رانندگی", "Sign in with Google for easier email and name entry": - "برای ورود آسان‌تر ایمیل و نام، با گوگل وارد شوید", + "ورود با گوگل برای سهولت", "You will choose allow all the time to be ready receive orders": - "شما اجازه همیشه را انتخاب خواهید کرد تا آماده دریافت سفارشات باشید", - "Welcome to Intaleq!": "به Intaleq خوش آمدید!", + "گزینه 'همیشه اجازه داده شود' را انتخاب کنید", "Get to your destination quickly and easily.": - "به مقصد خود سریع و آسان برسید.", - "Enjoy a safe and comfortable ride.": - "از یک Intaleq ایمن و راحت لذت ببرید.", - "Choose Language": "زبان را انتخاب کنید", - "Login": "ورود", + "سریع و آسان به مقصد برسید.", + "Enjoy a safe and comfortable ride.": "از سفری امن و راحت لذت ببرید.", + "Choose Language": "انتخاب زبان", "Pay with Wallet": "پرداخت با کیف پول", "Invalid MPIN": "MPIN نامعتبر", - "Invalid OTP": "OTP نامعتبر", - "Driver Accepted the Ride for You": - "راننده Intaleq را برای شما پذیرفت", + "Invalid OTP": "کد تأیید نامعتبر", "Enter your email address": "آدرس ایمیل خود را وارد کنید", "Please enter Your Email.": "لطفاً ایمیل خود را وارد کنید.", "Enter your phone number": "شماره تلفن خود را وارد کنید", @@ -8568,13 +11035,11 @@ class MyTranslation extends Translations { "لطفاً شماره تلفن خود را وارد کنید.", "Please enter Your Password.": "لطفاً رمز عبور خود را وارد کنید.", "if you dont have account": "اگر حساب کاربری ندارید", - "Register": "ثبت‌نام", + "Register": "ثبت نام", "Accept Ride's Terms & Review Privacy Notice": - "قوانین Intaleq را بپذیرید و اطلاعیه حریم خصوصی را مرور کنید", - "By selecting 'I Agree' below, I confirm that I have read and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": - "با انتخاب 'موافقم' در زیر، تأیید می‌کنم که قوانین استفاده را خوانده‌ام و با آن موافقم و اطلاعیه حریم خصوصی را تأیید می‌کنم. من حداقل 18 سال دارم.", - "I Agree": "موافقم", - "Finish Monitor": "پایان مانیتور", + "پذیرش شرایط و مرور حریم خصوصی", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "با انتخاب 'موافقم'، شرایط و حریم خصوصی را پذیرفته‌ام. من حداقل ۱۸ سال دارم.", "First name": "نام", "Enter your first name": "نام خود را وارد کنید", "Please enter your first name.": "لطفاً نام خود را وارد کنید.", @@ -8584,588 +11049,499 @@ class MyTranslation extends Translations { "لطفاً نام خانوادگی خود را وارد کنید.", "City": "شهر", "Please enter your City.": "لطفاً شهر خود را وارد کنید.", - "Male": "مرد", - "Female": "زن", "Verify Email": "تأیید ایمیل", "We sent 5 digit to your Email provided": - "ما یک کد 5 رقمی به ایمیل شما ارسال کردیم", - "5 digit": "5 رقم", + "کد ۵ رقمی به ایمیل شما ارسال شد", + "5 digit": "۵ رقم", "Send Verification Code": "ارسال کد تأیید", - "Your Ride Duration is ": "مدت زمان Intaleq شما ", - "You will be thier in": "شما در آنجا خواهید بود در", - "You trip distance is": "مسافت Intaleq شما است", - "Fee is": "هزینه است", - "From : ": "از : ", - "To : ": "به : ", - "Add Promo": "اضافه کردن پیشنهاد", + "Your Ride Duration is ": "مدت زمان سفر شما: ", + "You will be thier in": "شما در ... آنجا خواهید بود", + "You trip distance is": "مسافت سفر شما:", + "Fee is": "هزینه:", + "From : ": "از: ", + "To : ": "به: ", + "Add Promo": "افزودن کد تخفیف", "Confirm Selection": "تأیید انتخاب", - "distance is": "مسافت است", - "Intaleq LLC": "Intaleq LLC", - "Egypt's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": - "سرویس پیشگام اشتراک‌گذاری Intaleq مصر، با افتخار توسط مالکان عرب و محلی توسعه یافته است. ما اولویت خود را نزدیکی به شما قرار داده‌ایم – هم مسافران عزیز ما و هم کاپیتان‌های اختصاصی ما.", - "Why Choose Intaleq?": "چرا Intaleq را انتخاب کنیم؟", + "distance is": "مسافت:", + "Privacy Policy": "سیاست حریم خصوصی", + "Intaleq LLC": "شرکت Intaleq", + "Syria's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "سرویس پیشرو اشتراک سفر در ایران.", + "Intaleq is the first ride-sharing app in Syria, designed to connect you with the nearest drivers for a quick and convenient travel experience.": + "Intaleq اولین برنامه اشتراک سفر است.", + "Why Choose Intaleq?": "چرا Intaleq؟", "Closest to You": "نزدیک‌ترین به شما", "We connect you with the nearest drivers for faster pickups and quicker journeys.": - "ما شما را با نزدیک‌ترین رانندگان ارتباط می‌دهیم تا سوار شدن سریع‌تر و Intaleqهای کوتاه‌تر داشته باشید.", - "Uncompromising Security": "امنیت بدون مصالحه", - "Lady Captains Available": "کاپیتان‌های خانم موجود", + "ما شما را به نزدیک‌ترین رانندگان متصل می‌کنیم.", + "Uncompromising Security": "امنیت بی چون و چرا", + "Lady Captains Available": "رانندگان خانم موجود است", "Recorded Trips (Voice & AI Analysis)": - "Intaleqهای ضبط شده (تجزیه و تحلیل صدا و هوش مصنوعی)", + "سفرهای ضبط شده (صدا و تحلیل هوش مصنوعی)", "Fastest Complaint Response": "سریع‌ترین پاسخ به شکایات", "Our dedicated customer service team ensures swift resolution of any issues.": - "تیم پشتیبانی مشتریان ما تضمین می‌کند که هر مشکلی به سرعت حل شود.", - "Affordable for Everyone": "مقرون به صرفه برای همه", + "تیم پشتیبانی ما مشکلات را سریع حل می‌کند.", + "Affordable for Everyone": "مقرون‌به‌صرفه برای همه", "Frequently Asked Questions": "سوالات متداول", "Getting Started": "شروع کار", "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": - "به سادگی برنامه Intaleq را باز کنید، مقصد خود را وارد کنید و روی \"درخواست Intaleq\" ضربه بزنید. برنامه شما را با یک راننده نزدیک ارتباط می‌دهد.", - "Vehicle Options": "گزینه‌های وسیله نقلیه", + "اپلیکیشن را باز کنید، مقصد را وارد کنید و درخواست خودرو دهید.", + "Vehicle Options": "گزینه‌های خودرو", "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": - "Intaleq انواع گزینه‌ها از جمله اقتصادی، راحت و لوکس را ارائه می‌دهد تا با نیازها و بودجه شما سازگار باشد.", + "Intaleq گزینه‌های متنوعی ارائه می‌دهد.", "Payments": "پرداخت‌ها", "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": - "شما می‌توانید Intaleq خود را با پول نقد یا کارت اعتباری/دبیت پرداخت کنید. می‌توانید روش پرداخت مورد نظر خود را قبل از تأیید Intaleq انتخاب کنید.", - "Ride Management": "مدیریت Intaleq", + "می‌توانید نقدی یا با کارت پرداخت کنید.", + "Ride Management": "مدیریت سفر", "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": - "بله، شما می‌توانید Intaleq خود را لغو کنید، اما لطفاً توجه داشته باشید که هزینه‌های لغو ممکن است بسته به اینکه چقدر زود لغو می‌کنید اعمال شود.", + "بله، می‌توانید سفر را لغو کنید (ممکن است هزینه داشته باشد).", "For Drivers": "برای رانندگان", - "Driver Registration": "ثبت‌نام راننده", + "Driver Registration": "ثبت نام راننده", "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": - "برای ثبت‌نام به عنوان راننده یا یادگیری درباره شرایط، لطفاً به وب‌سایت ما مراجعه کنید یا مستقیماً با پشتیبانی Intaleq تماس بگیرید.", - "Visit Website/Contact Support": "مراجعه به وب‌سایت/تماس با پشتیبانی", + "برای ثبت نام راننده به سایت مراجعه کنید.", + "Visit Website/Contact Support": "مشاهده وب‌سایت / تماس با پشتیبانی", "Close": "بستن", - "We are searching for the nearest driver": - "ما در حال جستجو برای نزدیک‌ترین راننده هستیم", + "We are searching for the nearest driver": "جستجوی نزدیک‌ترین راننده", "Communication": "ارتباطات", "How do I communicate with the other party (passenger/driver)?": - "چگونه با طرف دیگر (مسافر/راننده) ارتباط برقرار کنم؟", + "چگونه ارتباط برقرار کنم؟", "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": - "شما می‌توانید با راننده یا مسافر خود از طریق ویژگی چت درون برنامه پس از تأیید Intaleq ارتباط برقرار کنید.", + "از طریق چت درون برنامه‌ای.", "Safety & Security": "ایمنی و امنیت", "What safety measures does Intaleq offer?": - "Intaleq چه اقدامات ایمنی ارائه می‌دهد؟", + "چه اقدامات امنیتی ارائه می‌دهید؟", "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": - "Intaleq ویژگی‌های ایمنی مختلفی از جمله تأیید راننده، ردیابی Intaleq درون برنامه، گزینه‌های تماس اضطراری و امکان اشتراک وضعیت Intaleq با مخاطبین مورد اعتماد ارائه می‌دهد.", + "تأیید راننده، ردیابی سفر، تماس اضطراری.", "Enjoy competitive prices across all trip options, making travel accessible.": - "از قیمت‌های رقابتی در تمام گزینه‌های Intaleq لذت ببرید و Intaleq را در دسترس قرار دهید.", - "Variety of Trip Choices": "تنوع گزینه‌های Intaleq", + "از قیمت‌های رقابتی لذت ببرید.", + "Variety of Trip Choices": "تنوع انتخاب سفر", "Choose the trip option that perfectly suits your needs and preferences.": - "گزینه Intaleq را انتخاب کنید که کاملاً با نیازها و ترجیحات شما سازگار باشد.", + "گزینه مناسب خود را انتخاب کنید.", "Your Choice, Our Priority": "انتخاب شما، اولویت ما", "Because we are near, you have the flexibility to choose the ride that works best for you.": - "چون ما نزدیک هستیم، شما انعطاف‌پذیری دارید تا Intaleq را انتخاب کنید که بهترین کارایی را برای شما دارد.", - "duration is": "مدت زمان است", + "چون ما نزدیکیم، حق انتخاب دارید.", + "duration is": "مدت زمان:", "Setting": "تنظیمات", - "Find answers to common questions": - "پاسخ به سوالات متداول را پیدا کنید", - "I don't need a ride anymore": "من دیگر نیازی به Intaleq ندارم", + "Find answers to common questions": "پاسخ سوالات متداول", + "I don't need a ride anymore": "دیگر نیازی به سفر ندارم", "I was just trying the application": - "من فقط برنامه را امتحان می‌کردم", - "No driver accepted my request": - "هیچ راننده‌ای درخواست من را نپذیرفت", + "فقط داشتم برنامه را تست می‌کردم", + "No driver accepted my request": "هیچ راننده‌ای قبول نکرد", "I added the wrong pick-up/drop-off location": - "من محل سوار/پیاده شدن اشتباه را اضافه کردم", - "I don't have a reason": "من دلیلی ندارم", - "Other": "سایر", + "مبدأ/مقصد را اشتباه وارد کردم", + "I don't have a reason": "دلیلی ندارم", "Can we know why you want to cancel Ride ?": - "می‌توانیم بدانیم چرا می‌خواهید Intaleq را لغو کنید؟", - "Cancel Ride": "لغو Intaleq", - "Add Payment Method": "اضافه کردن روش پرداخت", - "Your Wallet balance is ": "موجودی کیف پول شما ", - "Ride Wallet": "کیف پول Intaleq", + "چرا می‌خواهید لغو کنید؟", + "Cancel Ride": "لغو سفر", + "Add Payment Method": "افزودن روش پرداخت", + "Ride Wallet": "کیف پول سفر", "Payment Method": "روش پرداخت", - "Type here Place": "اینجا مکان را تایپ کنید", - "Are You sure to ride to": - "آیا مطمئن هستید که به این مکان Intaleq کنید؟", + "Type here Place": "مکان را اینجا بنویسید", + "Are You sure to ride to": "مطمئنید می‌خواهید بروید به", "Confirm": "تأیید", - "You are Delete": "شما حذف می‌کنید", + "You are Delete": "شما در حال حذف هستید", "Deleted": "حذف شد", - "You Dont Have Any places yet !": "شما هنوز هیچ مکانی ندارید!", - "From : Current Location": "از : موقعیت فعلی", - "Profile": "پروفایل", - "Home": "خانه", + "You Dont Have Any places yet !": "هنوز مکانی ندارید!", + "From : Current Location": "از: موقعیت فعلی", "My Cared": "کارت‌های من", - "Add Card": "اضافه کردن کارت", - "Add Credit Card": "اضافه کردن کارت اعتباری", - "Please enter the cardholder name": - "لطفاً نام دارنده کارت را وارد کنید", - "Please enter the expiry date": "لطفاً تاریخ انقضا را وارد کنید", - "Please enter the CVV code": "لطفاً کد CVV را وارد کنید", - "Go To Favorite Places": "به مکان‌های مورد علاقه بروید", - "Go to this Target": "به این هدف بروید", + "Add Card": "افزودن کارت", + "Add Credit Card": "افزودن کارت اعتباری", + "Please enter the cardholder name": "نام دارنده کارت", + "Please enter the expiry date": "تاریخ انقضا", + "Please enter the CVV code": "کد CVV", + "Go To Favorite Places": "رفتن به مکان‌های مورد علاقه", + "Go to this Target": "رفتن به این مقصد", "My Profile": "پروفایل من", - "Sign Out": "خروج", - "Are you want to go to this site": "آیا می‌خواهید به این سایت بروید؟", + "Are you want to go to this site": "می‌خواهید به این مکان بروید", "MyLocation": "موقعیت من", "my location": "موقعیت من", "Target": "هدف", - "Update": "به‌روزرسانی", - "You Should choose rate figure": - "شما باید یک عدد برای امتیاز انتخاب کنید", - "Login Captin": "ورود به عنوان کاپیتان", - "Register Captin": "ثبت‌نام به عنوان کاپیتان", + "You Should choose rate figure": "باید امتیاز انتخاب کنید", + "Login Captin": "ورود سفیر", + "Register Captin": "ثبت نام سفیر", "Send Verfication Code": "ارسال کد تأیید", "KM": "کیلومتر", - "End Ride": "پایان Intaleq", + "End Ride": "پایان سفر", "Minute": "دقیقه", "Go to passenger Location now": "الان به موقعیت مسافر بروید", - "Duration of the Ride is ": "مدت زمان Intaleq است ", - "Distance of the Ride is ": "مسافت Intaleq است ", - "Name of the Passenger is ": "نام مسافر است ", - "Hello this is Captain": "سلام، این کاپیتان است", - "Start the Ride": "شروع Intaleq", + "Duration of the Ride is ": "مدت سفر: ", + "Distance of the Ride is ": "مسافت سفر: ", + "Name of the Passenger is ": "نام مسافر: ", + "Hello this is Captain": "سلام، من سفیر هستم", + "Start the Ride": "شروع سفر", "Please Wait If passenger want To Cancel!": - "لطفاً منتظر بمانید اگر مسافر بخواهد لغو کند!", - "Total Duration:": "مدت زمان کل:", - "Active Duration:": "مدت زمان فعال:", - "Waiting for Captin ...": "در انتظار کاپیتان ...", - "Age is ": "سن است ", - "Rating is ": "امتیاز است ", - " to arrive you.": "تا به شما برسد.", + "لطفاً صبر کنید شاید مسافر لغو کند!", + "Total Duration:": "مدت کل:", + "Active Duration:": "مدت فعال:", + "Waiting for Captin ...": "در انتظار سفیر...", + "Age is ": "سن: ", + "Rating is ": "امتیاز: ", + " to arrive you.": " تا رسیدن به شما.", "Tariff": "تعرفه", "Settings": "تنظیمات", "Feed Back": "بازخورد", "Please enter a valid 16-digit card number": - "لطفاً یک شماره کارت معتبر 16 رقمی وارد کنید", - "Add Phone": "اضافه کردن تلفن", - "Please enter a phone number": "لطفاً یک شماره تلفن وارد کنید", + "لطفاً شماره کارت ۱۶ رقمی معتبر وارد کنید", + "Add Phone": "افزودن تلفن", + "Please enter a phone number": "لطفاً شماره تلفن وارد کنید", "You dont Add Emergency Phone Yet!": - "شما هنوز شماره تلفن اضطراری اضافه نکرده‌اید!", + "هنوز تلفن اضطراری اضافه نکرده‌اید!", "You will arrive to your destination after ": - "شما پس از رسیدن به مقصد خود خواهید رسید ", - "You can cancel Ride now": "شما می‌توانید Intaleq را الان لغو کنید", + "شما به مقصد می‌رسید بعد از ", + "You can cancel Ride now": "الان می‌توانید سفر را لغو کنید", "You Can cancel Ride After Captain did not come in the time": - "شما می‌توانید Intaleq را لغو کنید اگر کاپیتان در زمان مشخص شده نیامد", + "اگر سفیر به موقع نیامد می‌توانید لغو کنید", "If you in Car Now. Press Start The Ride": - "اگر الان در ماشین هستید. دکمه شروع Intaleq را فشار دهید", - "You Dont Have Any amount in": "شما هیچ مبلغی در", - "Wallet!": "کیف پول ندارید!", + "اگر در ماشین هستید، شروع سفر را بزنید", + "You Dont Have Any amount in": "موجودی ندارید در", + "Wallet!": "کیف پول!", "You Have": "شما دارید", "Save Credit Card": "ذخیره کارت اعتباری", - "Show Promos": "نمایش پیشنهادات", - "10 and get 4% discount": "10 و 4% تخفیف دریافت کنید", - "20 and get 6% discount": "20 و 6% تخفیف دریافت کنید", - "40 and get 8% discount": "40 و 8% تخفیف دریافت کنید", - "100 and get 11% discount": "100 و 11% تخفیف دریافت کنید", - "Pay with Your PayPal": "با PayPal خود پرداخت کنید", - "You will choose one of above !": - "شما یکی از موارد بالا را انتخاب خواهید کرد!", - "Delete My Account": "حذف حساب کاربری من", + "Show Promos": "نمایش تخفیف‌ها", + "10 and get 4% discount": "۱۰ و ۴٪ تخفیف بگیرید", + "20 and get 6% discount": "۲۰ و ۶٪ تخفیف بگیرید", + "40 and get 8% discount": "۴۰ و ۸٪ تخفیف بگیرید", + "100 and get 11% discount": "۱۰۰ و ۱۱٪ تخفیف بگیرید", + "Pay with Your PayPal": "پرداخت با PayPal", + "You will choose one of above !": "یکی از موارد بالا را انتخاب کنید!", "Edit Profile": "ویرایش پروفایل", - "Name": "نام", - "Update Gender": "به‌روزرسانی جنسیت", - "Education": "تحصیلات", - "Update Education": "به‌روزرسانی تحصیلات", - "Employment Type": "نوع اشتغال", - "SOS Phone": "تلفن SOS", - "High School Diploma": "دیپلم دبیرستان", - "Associate Degree": "مدرک کاردانی", - "Bachelor's Degree": "مدرک کارشناسی", - "Master's Degree": "مدرک کارشناسی ارشد", - "Doctoral Degree": "مدرک دکترا", "Copy this Promo to use it in your Ride!": - "این پیشنهاد را کپی کنید تا در Intaleq خود استفاده کنید!", + "این کد تخفیف را کپی و استفاده کنید!", "To change some Settings": "برای تغییر برخی تنظیمات", - "Order Request Page": "صفحه درخواست سفارش", - "Rouats of Trip": "مسیرهای Intaleq", - "Passenger name : ": "نام مسافر : ", - "Total From Passenger is ": "مجموع از مسافر است ", - "Duration To Passenger is ": "مدت زمان تا مسافر است ", - "Distance To Passenger is ": "مسافت تا مسافر است ", - "Total For You is ": "مجموع برای شما است ", - "Distance is ": "مسافت است ", + "Order Request Page": "صفحه درخواست سفر", + "Rouats of Trip": "مسیرهای سفر", + "Passenger Name is ": "نام مسافر: ", + "Total From Passenger is ": "کل مبلغ از مسافر: ", + "Duration To Passenger is ": "زمان تا مسافر: ", + "Distance To Passenger is ": "مسافت تا مسافر: ", + "Total For You is ": "مجموع برای شما: ", + "Distance is ": "مسافت: ", " KM": " کیلومتر", - "Duration of Trip is ": "مدت زمان Intaleq است ", + "Duration of Trip is ": "مدت سفر: ", " Minutes": " دقیقه", - "Apply Order": "اعمال سفارش", - "Refuse Order": "رد سفارش", - "Rate Captain": "امتیاز دادن به کاپیتان", + "Apply Order": "پذیرش درخواست", + "Refuse Order": "رد درخواست", + "Rate Captain": "امتیاز به سفیر", "Enter your Note": "یادداشت خود را وارد کنید", - "Type something...": "چیزی تایپ کنید...", - "Submit rating": "ارسال امتیاز", - "Rate Passenger": "امتیاز دادن به مسافر", - "Ride Summary": "خلاصه Intaleq", + "Type something...": "چیزی بنویسید...", + "Submit rating": "ثبت امتیاز", + "Rate Passenger": "امتیاز به مسافر", + "Ride Summary": "خلاصه سفر", "welcome_message": "به Intaleq خوش آمدید!", - "app_description": - "Intaleq یک برنامه اشتراک‌گذاری Intaleq ایمن، قابل اعتماد و در دسترس است.", - "get_to_destination": "به مقصد خود سریع و آسان برسید.", - "get_a_ride": - "با Intaleq می‌توانید در عرض چند دقیقه به مقصد خود برسید.", - "safe_and_comfortable": "از یک Intaleq ایمن و راحت لذت ببرید.", - "committed_to_safety": - "Intaleq به ایمنی متعهد است و همه کاپیتان‌های ما به دقت بررسی و تأیید می‌شوند.", - "Driver Applied the Ride for You": - "راننده Intaleq را برای شما اعمال کرد", - "Show latest promo": "نمایش آخرین پیشنهاد", - "Cancel Trip": "لغو Intaleq", - "Passenger Cancel Trip": "مسافر Intaleq را لغو کرد", - "Accepted Ride": "Intaleq پذیرفته شد", - "your ride is Accepted": "Intaleq شما پذیرفته شد", - "Please stay on the picked point.": - "لطفاً در نقطه انتخاب شده بمانید.", - "Trip is Begin": "Intaleq شروع شد", - "Driver is waiting at pickup.": "راننده در محل سوار شدن منتظر است.", + "app_description": "Intaleq امن و قابل اعتماد است.", + "get_to_destination": "سریع به مقصد برسید.", + "get_a_ride": "در چند دقیقه خودرو بگیرید.", + "safe_and_comfortable": "از سفری امن و راحت لذت ببرید.", + "committed_to_safety": "متعهد به ایمنی.", + "your ride is Accepted": "سفر شما پذیرفته شد", + "Driver is waiting at pickup.": "راننده در مبدأ منتظر است.", "Driver is on the way": "راننده در راه است", "Contact Options": "گزینه‌های تماس", - "Send a custom message": "ارسال یک پیام سفارشی", - "Type your message": "پیام خود را تایپ کنید", - "Hi ,I will go now": "سلام، الان می‌روم", - "Passenger come to you": "مسافر به سمت شما می‌آید", - "Hi ,I Arrive your site": "سلام، به محل شما رسیدم", - "Driver Finish Trip": "راننده Intaleq را به پایان رساند", - "you will pay to Driver": "شما به راننده پرداخت خواهید کرد", - "Driver Cancel Your Trip": "راننده Intaleq شما را لغو کرد", - "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": - "شما به راننده پرداخت خواهید کرد و هزینه زمان راننده از کیف پول Intaleq شما کسر می‌شود", - "I will go now": "الان می‌روم", - "You Have Tips": "شما انعام دارید", - " tips\nTotal is": " انعام\nمجموع است", - "No,I want": "نه، من می‌خواهم", - "Your fee is ": "هزینه شما است ", - "Do you want to pay Tips for this Driver": - "آیا می‌خواهید به این راننده انعام بدهید؟", - "Tip is ": "انعام است ", + "Send a custom message": "ارسال پیام سفارشی", + "Type your message": "پیام خود را بنویسید", + "I will go now": "من الان می‌روم", + "You Have Tips": "انعام دارید", + " tips\nTotal is": " انعام\nمجموع:", + "Your fee is ": "هزینه شما: ", + "Do you want to pay Tips for this Driver": "می‌خواهید انعام دهید؟", + "Tip is ": "انعام: ", "Are you want to wait drivers to accept your order": - "آیا می‌خواهید منتظر بمانید تا رانندگان سفارش شما را بپذیرند؟", + "می‌خواهید منتظر پذیرش بمانید؟", "This price is fixed even if the route changes for the driver.": - "این قیمت ثابت است حتی اگر مسیر برای راننده تغییر کند.", + "قیمت ثابت است.", "The price may increase if the route changes.": - "قیمت ممکن است در صورت تغییر مسیر افزایش یابد.", + "قیمت ممکن است تغییر کند.", "The captain is responsible for the route.": - "کاپیتان مسئول مسیر است.", - "We are search for nearst driver": - "ما در حال جستجو برای نزدیک‌ترین راننده هستیم", - "Your order is being prepared": "سفارش شما در حال آماده‌سازی است", - "The drivers are reviewing your request": - "رانندگان در حال بررسی درخواست شما هستند", - "Your order sent to drivers": "سفارش شما به رانندگان ارسال شد", + "مسئولیت مسیر با سفیر است.", + "We are search for nearst driver": "جستجوی نزدیک‌ترین راننده", + "Your order is being prepared": "سفارش در حال آماده‌سازی", + "The drivers are reviewing your request": "رانندگان در حال بررسی", + "Your order sent to drivers": "به رانندگان ارسال شد", "You can call or record audio of this trip": - "شما می‌توانید تماس بگیرید یا صدای این Intaleq را ضبط کنید", + "می‌توانید تماس بگیرید یا ضبط کنید", "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": - "Intaleq شروع شده است! در صورت نیاز با شماره‌های اضطراری تماس بگیرید، Intaleq خود را به اشتراک بگذارید یا ضبط صدا را برای Intaleq فعال کنید", - "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": - "لطفاً مطمئن شوید که تمام وسایل شخصی خود را دارید و هرگونه هزینه باقی‌مانده، در صورت وجود، قبل از ترک به کیف پول شما اضافه شده است. از اینکه برنامه Intaleq را انتخاب کرده‌اید متشکریم", - "Don’t forget your personal belongings.": - "وسایل شخصی خود را فراموش نکنید.", - "Camera Access Denied.": "دسترسی به دوربین رد شد.", + "سفر شروع شد! می‌توانید تماس اضطراری بگیرید یا سفر را اشتراک بگذارید.", + "Camera Access Denied.": "دسترسی دوربین رد شد.", "Open Settings": "باز کردن تنظیمات", - "GPS Required Allow !.": "GPS مورد نیاز است، اجازه دهید!.", - "Your Account is Deleted": "حساب کاربری شما حذف شد", - "Are you sure to delete your account?": - "آیا مطمئن هستید که حساب کاربری خود را حذف کنید؟", + "GPS Required Allow !.": "GPS لازم است!", + "Your Account is Deleted": "حساب شما حذف شد", + "Are you sure to delete your account?": "آیا مطمئنید؟", "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": - "داده‌های شما پس از 2 هفته پاک می‌شوند\nو پس از 1 ماه نمی‌توانید به استفاده از برنامه بازگردید ", + "داده‌ها بعد از ۲ هفته پاک می‌شوند.", "Enter Your First Name": "نام خود را وارد کنید", - "Are you Sure to LogOut?": "آیا مطمئن هستید که خارج شوید؟", + "Are you Sure to LogOut?": "آیا برای خروج مطمئنید؟", "Email Wrong": "ایمیل اشتباه", - "Email you inserted is Wrong.": "ایمیلی که وارد کرده‌اید اشتباه است.", - "You have finished all times ": - "شما تمام زمان‌ها را به پایان رسانده‌اید ", - "if you want help you can email us here": - "اگر نیاز به کمک دارید می‌توانید به ما ایمیل بزنید", - "Thanks": "متشکرم", + "Email you inserted is Wrong.": "ایمیل وارد شده اشتباه است.", + "You have finished all times ": "تمام دفعات را استفاده کردید", + "if you want help you can email us here": "برای کمک ایمیل بزنید", + "Thanks": "ممنون", "Email Us": "به ما ایمیل بزنید", "I cant register in your app in face detection ": - "من نمی‌توانم در برنامه شما با تشخیص چهره ثبت‌نام کنم ", + "نمی‌توانم با تشخیص چهره ثبت نام کنم", "Hi": "سلام", - "No face detected": "هیچ چهره‌ای تشخیص داده نشد", - "Image detecting result is ": "نتیجه تشخیص تصویر است ", - "from 3 times Take Attention": "از 3 بار توجه کنید", + "No face detected": "چهره‌ای تشخیص داده نشد", + "Image detecting result is ": "نتیجه تشخیص تصویر: ", + "from 3 times Take Attention": "از ۳ بار، دقت کنید", "Be sure for take accurate images please\nYou have": - "لطفاً مطمئن شوید که تصاویر دقیق بگیرید\nشما دارید", + "لطفاً عکس دقیق بگیرید\nشما دارید", "image verified": "تصویر تأیید شد", "Next": "بعدی", - "There is no help Question here": "هیچ سوال کمکی اینجا وجود ندارد", - "You dont have Points": "شما امتیازی ندارید", - "You Are Stopped For this Day !": "شما برای امروز متوقف شده‌اید!", - "You must be charge your Account": "شما باید حساب خود را شارژ کنید", + "There is no help Question here": "سوال کمکی اینجا نیست", + "You dont have Points": "امتیاز ندارید", + "You Are Stopped For this Day !": "برای امروز متوقف شدید!", + "You must be charge your Account": "باید حساب را شارژ کنید", "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": - "شما امروز 3 Intaleq را رد کردید و این دلیل است \nفردا می‌بینمتان!", - "Recharge my Account": "حساب من را شارژ کنید", - "Ok , See you Tomorrow": "باشه، فردا می‌بینمت", - "You are Stopped": "شما متوقف شده‌اید", + "۳ سفر را رد کردید.\nفردا می‌بینیمتان!", + "Recharge my Account": "شارژ حساب من", + "Ok , See you Tomorrow": "باشه، تا فردا", + "You are Stopped": "متوقف شدید", "Connected": "متصل", "Not Connected": "متصل نیست", - "Your are far from passenger location": "شما از محل مسافر دور هستید", + "Your are far from passenger location": "از مسافر دور هستید", "go to your passenger location before\nPassenger cancel trip": - "قبل از اینکه مسافر Intaleq را لغو کند به محل مسافر بروید", + "قبل از لغو مسافر به موقعیت او بروید", "You will get cost of your work for this trip": - "شما هزینه کار خود را برای این Intaleq دریافت خواهید کرد", - " in your wallet": "در کیف پول شما", - "you gain": "شما به دست می‌آورید", - "Order Cancelled by Passenger": "سفارش توسط مسافر لغو شد", - "Success": "موفقیت", - "Feedback data saved successfully": - "داده‌های بازخورد با موفقیت ذخیره شد", - "No Promo for today .": "هیچ پیشنهادی برای امروز وجود ندارد.", - "Select your destination": "مقصد خود را انتخاب کنید", - "Search for your Start point": "نقطه شروع خود را جستجو کنید", - "Search for waypoint": "جستجوی نقطه راه", + "هزینه این سفر را دریافت خواهید کرد", + " in your wallet": " در کیف پول", + "you gain": "کسب کردید", + "Order Cancelled by Passenger": "لغو توسط مسافر", + "Feedback data saved successfully": "با موفقیت ذخیره شد", + "No Promo for today .": "امروز تخفیفی نیست.", + "Select your destination": "انتخاب مقصد", + "Search for your Start point": "جستجوی نقطه شروع", + "Search for waypoint": "جستجوی نقطه توقف", "Current Location": "موقعیت فعلی", - "Add Location 1": "اضافه کردن مکان 1", - "You must Verify email !.": "شما باید ایمیل را تأیید کنید!.", + "Add Location 1": "افزودن مکان ۱", + "You must Verify email !.": "باید ایمیل را تأیید کنید!", "Cropper": "برش دهنده", "Saved Sucssefully": "با موفقیت ذخیره شد", "Select Date": "انتخاب تاریخ", "Birth Date": "تاریخ تولد", - "Ok": "تایید", - "the 500 points equal 30 JOD": - "500 امتیاز برابر با 30 دینار اردن است", + "Ok": "باشه", + "the 500 points equal 30 JOD": "۵۰۰ امتیاز برابر ۳۰ تومان", "the 500 points equal 30 JOD for you \nSo go and gain your money": - "500 امتیاز برابر با 30 دینار اردن برای شما است \nپس بروید و پول خود را به دست آورید", - "token updated": "توکن به‌روزرسانی شد", - "Add Location 2": "اضافه کردن مکان 2", - "Add Location 3": "اضافه کردن مکان 3", - "Add Location 4": "اضافه کردن مکان 4", + "۵۰۰ امتیاز برای شما ۳۰ تومان است\nبروید و پول درآورید", + "token updated": "توکن بروز شد", + "Add Location 2": "افزودن مکان ۲", + "Add Location 3": "افزودن مکان ۳", + "Add Location 4": "افزودن مکان ۴", "Waiting for your location": "در انتظار موقعیت شما", - "Search for your destination": "مقصد خود را جستجو کنید", - "Hi! This is": "سلام! این است", + "Search for your destination": "جستجوی مقصد", + "Hi! This is": "سلام! این", " I am using": " من استفاده می‌کنم", - " to ride with": " برای Intaleq با", + " to ride with": " برای سفر با", " as the driver.": " به عنوان راننده.", - "is driving a ": "در حال رانندگی است ", + "is driving a ": "در حال راندن ", " with license plate ": " با پلاک ", - " I am currently located at ": "من در حال حاضر در ", - "Please go to Car now ": "لطفاً الان به ماشین بروید ", + " I am currently located at ": " من الان در ... هستم ", + "Please go to Car now ": "لطفاً الان به سمت ماشین بروید ", "You will receive a code in WhatsApp Messenger": - "شما یک کد در WhatsApp Messenger دریافت خواهید کرد", + "کد را در واتس‌اپ دریافت خواهید کرد", "If you need assistance, contact us": - "اگر نیاز به کمک دارید، با ما تماس بگیرید", - "Promo Ended": "پیشنهاد به پایان رسید", - "Enter the promo code and get": - "کد پیشنهاد را وارد کنید و دریافت کنید", + "اگر کمک نیاز دارید تماس بگیرید", + "Promo Ended": "تخفیف تمام شد", + "Enter the promo code and get": "کد تخفیف را وارد کنید و بگیرید", "DISCOUNT": "تخفیف", - "No wallet record found": "هیچ رکوردی از کیف پول یافت نشد", + "No wallet record found": "رکورد کیف پول یافت نشد", "for": "برای", "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": - "Intaleq امن‌ترین برنامه اشتراک‌گذاری Intaleq است که ویژگی‌های زیادی را برای کاپیتان‌ها و مسافران ارائه می‌دهد. ما کمترین نرخ کمیسیون را فقط 8% ارائه می‌دهیم تا بهترین ارزش را برای Intaleqهای خود دریافت کنید. برنامه ما شامل بیمه برای بهترین کاپیتان‌ها، نگهداری منظم ماشین‌ها با بهترین مهندسان و خدمات جاده‌ای برای تضمین تجربه‌ای محترمانه و با کیفیت برای همه کاربران است.", + "Intaleq امن‌ترین برنامه است. کمیسیون پایین ۸٪. بیمه و تعمیر و نگهداری.", "You can contact us during working hours from 12:00 - 19:00.": - "شما می‌توانید در ساعات کاری از 12:00 تا 19:00 با ما تماس بگیرید.", - "Choose a contact option": "یک گزینه تماس را انتخاب کنید", + "تماس در ساعات ۱۲ تا ۱۹.", + "Choose a contact option": "یک گزینه تماس انتخاب کنید", "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": - "ساعات کاری از 12:00 تا 19:00 است.\nشما می‌توانید یک پیام WhatsApp یا ایمیل ارسال کنید.", - "Promo code copied to clipboard!": "کد پیشنهاد به کلیپ‌بورد کپی شد!", + "ساعات کاری ۱۲ تا ۱۹.\nواتس‌اپ یا ایمیل بزنید.", + "Promo code copied to clipboard!": "کد تخفیف کپی شد!", "Copy Code": "کپی کد", - "Your invite code was successfully applied!": - "کد دعوت شما با موفقیت اعمال شد!", + "Your invite code was successfully applied!": "کد دعوت اعمال شد!", "Payment Options": "گزینه‌های پرداخت", - "wait 1 minute to receive message": - "1 دقیقه صبر کنید تا پیام دریافت کنید", - "Promo Copied!": "پیشنهاد کپی شد!", - "You have copied the promo code.": "شما کد پیشنهاد را کپی کرده‌اید.", - "Valid Until:": "معتبر تا:", - "Select Payment Amount": "مبلغ پرداخت را انتخاب کنید", - "The promotion period has ended.": "دوره پیشنهاد به پایان رسیده است.", - "Promo Code Accepted": "کد پیشنهاد پذیرفته شد", - "Tap on the promo code to copy it!": - "روی کد پیشنهاد ضربه بزنید تا آن را کپی کنید!", - "Lowest Price Achieved": "کمترین قیمت به دست آمده", - "Cannot apply further discounts.": "نمی‌توان تخفیف بیشتری اعمال کرد.", - "Promo Already Used": "پیشنهاد قبلاً استفاده شده است", - "Invitation Used": "دعوت استفاده شده است", + "wait 1 minute to receive message": "۱ دقیقه صبر کنید", + "You have copied the promo code.": "کد تخفیف را کپی کردید.", + "Select Payment Amount": "انتخاب مبلغ پرداخت", + "The promotion period has ended.": "دوره تخفیف تمام شده.", + "Promo Code Accepted": "کد تخفیف پذیرفته شد", + "Tap on the promo code to copy it!": "برای کپی ضربه بزنید!", + "Lowest Price Achieved": "کمترین قیمت حاصل شد", + "Cannot apply further discounts.": "تخفیف بیشتر ممکن نیست.", + "Promo Already Used": "تخفیف قبلاً استفاده شده", + "Invitation Used": "دعوت استفاده شده", "You have already used this promo code.": - "شما قبلاً از این کد پیشنهاد استفاده کرده‌اید.", - "Insert Your Promo Code": "کد پیشنهاد خود را وارد کنید", - "Enter promo code here": "کد پیشنهاد را اینجا وارد کنید", - "Please enter a valid promo code": - "لطفاً یک کد پیشنهاد معتبر وارد کنید", - "Awfar Car": "ماشین آوفار", + "شما قبلاً از این کد استفاده کرده‌اید.", + "Insert Your Promo Code": "کد تخفیف را وارد کنید", + "Enter promo code here": "کد تخفیف اینجا", + "Please enter a valid promo code": "لطفاً کد معتبر وارد کنید", + "Awfar Car": "خودروی اقتصادی", "Old and affordable, perfect for budget rides.": - "قدیمی و مقرون به صرفه، مناسب برای Intaleqهای اقتصادی.", + "قدیمی و مقرون‌به‌صرفه.", " If you need to reach me, please contact the driver directly at": - " اگر نیاز دارید با من تماس بگیرید، لطفاً مستقیماً با راننده تماس بگیرید", + " اگر کاری دارید با راننده تماس بگیرید در", "No Car or Driver Found in your area.": - "هیچ ماشین یا راننده‌ای در منطقه شما یافت نشد.", - "Please Try anther time ": "لطفاً زمان دیگری را امتحان کنید ", + "خودرو یا راننده‌ای یافت نشد.", + "Please Try anther time ": "لطفاً زمان دیگری امتحان کنید ", "There no Driver Aplly your order sorry for that ": - "هیچ راننده‌ای سفارش شما را اعمال نکرد، متأسفیم ", - "Trip Cancelled": "Intaleq لغو شد", + "هیچ راننده‌ای درخواست شما را نگرفت، متأسفیم ", + "Trip Cancelled": "سفر لغو شد", "The Driver Will be in your location soon .": - "راننده به زودی در محل شما خواهد بود .", - "The distance less than 500 meter.": "فاصله کمتر از 500 متر است.", - "Promo End !": "پایان پیشنهاد!", - "There is no notification yet": "هنوز هیچ اعلانی وجود ندارد", + "راننده به‌زودی می‌رسد.", + "The distance less than 500 meter.": "فاصله کمتر از ۵۰۰ متر.", + "Promo End !": "تخفیف تمام شد!", + "There is no notification yet": "اعلانی وجود ندارد", "Use Touch ID or Face ID to confirm payment": - "از Touch ID یا Face ID برای تأیید پرداخت استفاده کنید", + "از اثر انگشت یا چهره استفاده کنید", "Contact us for any questions on your order.": - "برای هر سوالی درباره سفارش خود با ما تماس بگیرید.", - "Pyament Cancelled .": "پرداخت لغو شد .", - "type here": "اینجا تایپ کنید", - "Scan Driver License": "اسکن گواهینامه رانندگی", + "برای هر سوالی تماس بگیرید.", + "Pyament Cancelled .": "پرداخت لغو شد.", + "type here": "اینجا بنویسید", + "Scan Driver License": "اسکن گواهینامه", "Please put your licence in these border": - "لطفاً گواهینامه خود را در این قاب قرار دهید", - "Camera not initialized yet": "دوربین هنوز راه‌اندازی نشده است", - "Take Image": "عکس بگیرید", + "گواهینامه را در کادر قرار دهید", + "Camera not initialized yet": "دوربین آماده نیست", + "Take Image": "عکس گرفتن", "AI Page": "صفحه هوش مصنوعی", - "Take Picture Of ID Card": "عکس کارت شناسایی بگیرید", - "Take Picture Of Driver License Card": - "عکس کارت گواهینامه رانندگی بگیرید", - "We are process picture please wait ": - "ما در حال پردازش تصویر هستیم لطفاً منتظر بمانید ", - "There is no data yet.": "هنوز هیچ داده‌ای وجود ندارد.", - "Name :": "نام :", - "Drivers License Class: ": "کلاس گواهینامه رانندگی: ", + "Take Picture Of ID Card": "عکس از کارت ملی", + "Take Picture Of Driver License Card": "عکس از گواهینامه", + "We are process picture please wait ": "در حال پردازش عکس، صبر کنید ", + "There is no data yet.": "هنوز داده‌ای نیست.", + "Name :": "نام:", + "Drivers License Class: ": "کلاس گواهینامه: ", "Document Number: ": "شماره سند: ", "Address: ": "آدرس: ", "Height: ": "قد: ", "Expiry Date: ": "تاریخ انقضا: ", "Date of Birth: ": "تاریخ تولد: ", - "You can\'t continue with us .\nYou should renew Driver license": - "شما نمی‌توانید با ما ادامه دهید .\nشما باید گواهینامه رانندگی خود را تمدید کنید", - "Detect Your Face ": "چهره شما را تشخیص دهید ", - "Go to next step\nscan Car License.": - "به مرحله بعد بروید\nاسکن گواهینامه ماشین.", - "Name in arabic": "نام به عربی", - "Drivers License Class": "کلاس گواهینامه رانندگی", - "Date of Birth": "تاریخ تولد", + "You can't continue with us .\nYou should renew Driver license": + "باید گواهینامه را تمدید کنید", + "Detect Your Face ": "تشخیص چهره ", + "Go to next step\nscan Car License.": "مرحله بعد\nاسکن کارت ماشین.", + "Name in arabic": "نام به فارسی", + "Drivers License Class": "کلاس گواهینامه", "Selected Date": "تاریخ انتخاب شده", "Select Time": "انتخاب زمان", "Selected Time": "زمان انتخاب شده", "Selected Date and Time": "تاریخ و زمان انتخاب شده", - "Lets check Car license ": "بیایید گواهینامه ماشین را بررسی کنیم ", - "Car": "ماشین", + "Lets check Car license ": "بررسی کارت ماشین ", + "Car": "خودرو", "Plate": "پلاک", - "N/A": "N/A", - "Rides": "Intaleqها", - "Age": "سن", + "Rides": "سفرها", "Selected driver": "راننده انتخاب شده", - "Lets check License Back Face": "بیایید پشت گواهینامه را بررسی کنیم", - "Car License Card": "کارت گواهینامه ماشین", - "No image selected yet": "هنوز هیچ تصویری انتخاب نشده است", - "Made :": "ساخته شده :", - "model :": "مدل :", - "VIN :": "شماره شاسی :", - "year :": "سال :", + "Lets check License Back Face": "بررسی پشت گواهینامه", + "Car License Card": "کارت ماشین", + "No image selected yet": "عکسی انتخاب نشده", + "Made :": "سازنده:", + "model :": "مدل:", + "VIN :": "شماره شاسی:", + "year :": "سال:", "ُExpire Date": "تاریخ انقضا", "Login Driver": "ورود راننده", "Password must br at least 6 character.": - "رمز عبور باید حداقل 6 کاراکتر باشد.", - "if you don\'t have account": "اگر حساب کاربری ندارید", - "Here recorded trips audio": "اینجا صدای Intaleqهای ضبط شده است", - "Register as Driver": "ثبت‌نام به عنوان راننده", + "رمز باید حداقل ۶ کاراکتر باشد.", + "if you don't have account": "اگر حساب ندارید", + "Here recorded trips audio": "صدای ضبط شده سفرها", + "Register as Driver": "ثبت نام به عنوان راننده", "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": - "با انتخاب \"موافقم\" در زیر، من قوانین استفاده را بررسی کرده‌ام و با آن موافقم و ", - ". I am at least 18 years of age.": ". من حداقل 18 سال دارم.", + "با انتخاب \"موافقم\"، شرایط استفاده را پذیرفته‌ام و ", "Log Out Page": "صفحه خروج", "Log Off": "خروج", - "Register Driver": "ثبت‌نام راننده", + "Register Driver": "ثبت نام راننده", "Verify Email For Driver": "تأیید ایمیل برای راننده", "Admin DashBoard": "داشبورد مدیریت", "Your name": "نام شما", - "your ride is applied": "Intaleq شما اعمال شد", - "Your password": "رمز عبور شما", - "H and": "ساعت و", - "LE": "لیر", - "JOD": "دینار اردن", - "m": "دقیقه", - "We search nearst Driver to you": - "ما نزدیک‌ترین راننده را برای شما جستجو می‌کنیم", + "your ride is applied": "سفر شما ثبت شد", + "H and": "س و", + "JOD": "تومان", + "m": "د", + "We search nearst Driver to you": "جستجوی نزدیک‌ترین راننده", "please wait till driver accept your order": - "لطفاً منتظر بمانید تا راننده سفارش شما را بپذیرد", + "لطفاً منتظر پذیرش راننده بمانید", "No accepted orders? Try raising your trip fee to attract riders.": - "هیچ سفارشی پذیرفته نشد؟ سعی کنید هزینه Intaleq خود را افزایش دهید تا رانندگان جذب شوند.", - "You should select one": "شما باید یکی را انتخاب کنید", - "The driver accept your order for": "راننده سفارش شما را برای پذیرفت", - "Increase Fee": "افزایش هزینه", - "No, thanks": "نه، متشکرم", - "The driver on your way": "راننده در راه شما است", + "سفارشی پذیرفته نشد؟ مبلغ را افزایش دهید.", + "You should select one": "باید یکی را انتخاب کنید", + "The driver accept your order for": "راننده سفارش شما را پذیرفت برای", + "The driver on your way": "راننده در راه است", "Total price from ": "قیمت کل از ", - "Order Details Intaleq": "جزئیات سفارش سرعت", - "Order Applied": "سفارش اعمال شد", - "accepted your order": "سفارش شما را پذیرفت", - "We regret to inform you that another driver has accepted this order.": - "متأسفیم که به شما اطلاع دهیم راننده دیگری این سفارش را پذیرفته است.", + "Order Details Intaleq": "جزئیات سفارش Intaleq", "Selected file:": "فایل انتخاب شده:", - "Your trip cost is": "هزینه Intaleq شما است", + "Your trip cost is": "هزینه سفر شما", "this will delete all files from your device": - "این کار تمام فایل‌ها را از دستگاه شما حذف می‌کند", - " in your": "در", + "این کار تمام فایل‌ها را حذف می‌کند", "Exclusive offers and discounts always with the Intaleq app": - "پیشنهادات و تخفیف‌های انحصاری همیشه با برنامه Intaleq", - "Please go to Car Driver": "لطفاً به راننده ماشین بروید", - " wallet due to a previous trip.": "کیف پول به دلیل Intaleq قبلی.", + "تخفیف‌های ویژه همیشه با Intaleq", "Submit Question": "ارسال سوال", "Please enter your Question.": "لطفاً سوال خود را وارد کنید.", - "Help Details": "جزئیات کمک", - "No trip yet found": "هنوز هیچ Intaleqی یافت نشده است", - "No Response yet.": "هنوز هیچ پاسخی وجود ندارد.", - " You Earn today is ": " امروز به دست آورده‌اید ", + "Help Details": "جزئیات راهنما", + "No trip yet found": "سفری یافت نشد", + "No Response yet.": "هنوز پاسخی نیست.", + " You Earn today is ": " درآمد امروز شما: ", " You Have in": " شما دارید در", - "Total points is ": "مجموع امتیازات است ", - "Total Connection Duration:": "مدت زمان اتصال کل:", - " H and": " ساعت و", - "Passenger name : ": "نام مسافر : ", - "Cost Of Trip IS ": "هزینه Intaleq است ", + "Total points is ": "مجموع امتیازات: ", + "Total Connection Duration:": "مجموع مدت اتصال:", + "Passenger name : ": "نام مسافر: ", + "Cost Of Trip IS ": "هزینه سفر: ", "Arrival time": "زمان رسیدن", "arrival time to reach your point": "زمان رسیدن به نقطه شما", "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "برای Intaleqهای سریع و اسکوتر، قیمت به صورت پویا محاسبه می‌شود. برای Intaleqهای راحت، قیمت بر اساس زمان و مسافت است.", - "Hello this is Driver": "سلام، این راننده است", - "Is the Passenger in your Car ?": "آیا مسافر در ماشین شما است؟", + "قیمت‌گذاری پویا برای Intaleq و اسکوتر. زمانی و مسافتی برای Comfort.", + "Hello this is Driver": "سلام من راننده هستم", + "Is the Passenger in your Car ?": "آیا مسافر در خودرو است؟", "Please wait for the passenger to enter the car before starting the trip.": - "لطفاً منتظر بمانید تا مسافر وارد ماشین شود قبل از شروع Intaleq.", - "No ,still Waiting.": "نه، هنوز منتظر هستم.", - "I arrive you": "من به شما رسیدم", - "I Arrive your site": "من به محل شما رسیدم", - "You are not in near to passenger location": - "شما نزدیک به محل مسافر نیستید", + "لطفاً صبر کنید تا مسافر سوار شود.", + "No ,still Waiting.": "نه، هنوز منتظرم.", + "I arrive you": "رسیدم", + "I Arrive your site": "به موقعیت شما رسیدم", + "You are not in near to passenger location": "نزدیک مسافر نیستید", "please go to picker location exactly": "لطفاً دقیقاً به محل سوار شدن بروید", "You Can Cancel Trip And get Cost of Trip From": - "شما می‌توانید Intaleq را لغو کنید و هزینه Intaleq را از دریافت کنید", - "Are you sure to cancel?": "آیا مطمئن هستید که لغو کنید؟", - "Insert Emergincy Number": "وارد کردن شماره اضطراری", + "می‌توانید لغو کنید و هزینه را دریافت کنید از", + "Are you sure to cancel?": "مطمئنید لغو می‌کنید؟", + "Insert Emergincy Number": "درج شماره اضطراری", "Best choice for comfort car and flexible route and stops point": - "بهترین انتخاب برای ماشین راحت و مسیر و نقاط توقف انعطاف‌پذیر", - "Insert": "وارد کردن", + "بهترین انتخاب برای راحتی و مسیر منعطف", + "Insert": "درج", "This is for scooter or a motorcycle.": "این برای اسکوتر یا موتورسیکلت است.", "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": - "این Intaleq مستقیماً از نقطه شروع شما به مقصد شما با قیمت ثابت می‌رود. راننده باید مسیر برنامه‌ریزی شده را دنبال کند.", + "سفر مستقیم با قیمت ثابت.", "You can decline a request without any cost": - "شما می‌توانید یک درخواست را بدون هیچ هزینه‌ای رد کنید", + "می‌توانید بدون هزینه رد کنید", "Perfect for adventure seekers who want to experience something new and exciting": - "مناسب برای جویندگان ماجراجویی که می‌خواهند چیزی جدید و هیجان‌انگیز را تجربه کنند", - "My current location is:": "موقعیت فعلی من است:", - "and I have a trip on": "و من یک Intaleq در", + "عالی برای ماجراجویان", + "My current location is:": "موقعیت فعلی من:", + "and I have a trip on": "و سفری دارم در", "App with Passenger": "برنامه با مسافر", "You will be pay the cost to driver or we will get it from you on next trip": - "شما هزینه را به راننده پرداخت خواهید کرد یا ما آن را در Intaleq بعدی از شما دریافت خواهیم کرد", - "Trip has Steps": "Intaleq مراحلی دارد", - "Distance from Passenger to destination is ": - "فاصله از مسافر تا مقصد است ", - "price is": "قیمت است", + "هزینه را به راننده پرداخت می‌کنید یا در سفر بعد از شما می‌گیریم", + "Trip has Steps": "سفر مراحلی دارد", + "Distance from Passenger to destination is ": "فاصله مسافر تا مقصد: ", + "price is": "قیمت:", "This ride type does not allow changes to the destination or additional stops": - "این نوع Intaleq اجازه تغییر مقصد یا توقف‌های اضافی را نمی‌دهد", + "امکان تغییر مقصد یا توقف وجود ندارد", "This price may be changed": "این قیمت ممکن است تغییر کند", "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": - "بدون سیم‌کارت، مشکلی نیست! مستقیماً با راننده خود از طریق برنامه ما تماس بگیرید. ما از فناوری پیشرفته برای تضمین حریم خصوصی شما استفاده می‌کنیم.", + "سیم‌کارت ندارید؟ مشکلی نیست! از طریق برنامه تماس بگیرید.", "This ride type allows changes, but the price may increase": - "این نوع Intaleq اجازه تغییرات را می‌دهد، اما قیمت ممکن است افزایش یابد", - "Select one message": "یک پیام را انتخاب کنید", - "I'm waiting for you": "من منتظر شما هستم", + "امکان تغییر دارد اما قیمت ممکن است افزایش یابد", + "Select one message": "یک پیام انتخاب کنید", + "I'm waiting for you": "منتظر شما هستم", "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": - "متوجه شدیم سرعت از 100 کیلومتر در ساعت بیشتر است. لطفاً برای ایمنی خود سرعت را کاهش دهید. اگر احساس ناامنی می‌کنید، می‌توانید جزئیات Intaleq خود را با یک مخاطب به اشتراک بگذارید یا با استفاده از دکمه قرمز SOS با پلیس تماس بگیرید.", - "Warning: Intaleqing detected!": "هشدار: سرعت بالا تشخیص داده شد!", + "سرعت بالای ۱۰۰ کیلومتر تشخیص داده شد. لطفاً آهسته‌تر برانید.", + "Warning: Intaleqing detected!": "هشدار: سرعت غیرمجاز!", "Please help! Contact me as soon as possible.": - "لطفاً کمک کنید! در اسرع وقت با من تماس بگیرید.", - "Share Trip Details": "جزئیات Intaleq را به اشتراک بگذارید", - "Car Plate is ": "پلاک ماشین است ", - "VIP Order": "سفارش VIP", + "کمک! سریعاً تماس بگیرید.", + "Share Trip Details": "اشتراک جزئیات سفر", + "Car Plate is ": "پلاک خودرو: ", "the 300 points equal 300 L.E for you \nSo go and gain your money": - "300 امتیاز برابر با 300 لیر مصر برای شما است \nپس بروید و پول خود را به دست آورید", - "the 300 points equal 300 L.E": "300 امتیاز برابر با 300 لیر مصر است", + "۳۰۰ امتیاز برابر ۳۰۰ تومان برای شماست\nبروید و پول درآورید", + "the 300 points equal 300 L.E": "۳۰۰ امتیاز برابر ۳۰۰ تومان", "The payment was not approved. Please try again.": - "پرداخت تأیید نشد. لطفاً دوباره تلاش کنید.", + "پرداخت تأیید نشد. دوباره تلاش کنید.", "Payment Failed": "پرداخت ناموفق", - "Error": "خطا", "This is a scheduled notification.": - "این یک اعلان برنامه‌ریزی شده است.", + "این یک اعلان زمان‌بندی شده است.", "An error occurred during the payment process.": - "در طول فرآیند پرداخت خطایی رخ داد.", + "خطایی در پرداخت رخ داد.", "The payment was approved.": "پرداخت تأیید شد.", "Payment Successful": "پرداخت موفق", - "No ride found yet": "هنوز هیچ Intaleqی یافت نشده است", + "No ride found yet": "هنوز سفری یافت نشد", "Accept Order": "پذیرش سفارش", "Bottom Bar Example": "مثال نوار پایین", "Driver phone": "تلفن راننده", @@ -9173,1399 +11549,1526 @@ class MyTranslation extends Translations { "Origin": "مبدأ", "Destination": "مقصد", "Driver Name": "نام راننده", - "Driver Car Plate": "پلاک ماشین راننده", - "Available for rides": "برای Intaleqها در دسترس", - "Scan Id": "اسکن شناسه", - "Camera not initilaized yet": "دوربین هنوز راه‌اندازی نشده است", - "Scan ID MklGoogle": "اسکن شناسه MklGoogle", + "Driver Car Plate": "پلاک راننده", + "Available for rides": "آماده برای سفر", + "Scan Id": "اسکن کارت ملی", + "Camera not initilaized yet": "دوربین هنوز آماده نیست", + "Scan ID MklGoogle": "اسکن ID MklGoogle", "Language": "زبان", "Jordan": "اردن", - "USA": "ایالات متحده", + "USA": "آمریکا", "Egypt": "مصر", "Turkey": "ترکیه", "Saudi Arabia": "عربستان سعودی", "Qatar": "قطر", "Bahrain": "بحرین", "Kuwait": "کویت", - "But you have a negative salary of": - "اما شما یک حقوق منفی دارید به میزان", - "Promo Code": "کد پیشنهاد", - "Your trip distance is": "فاصله Intaleq شما است", - "Enter promo code": "کد پیشنهاد را وارد کنید", - "You have promo!": "شما پیشنهاد دارید!", - "Cost Duration": "مدت زمان هزینه", - "Duration is": "مدت زمان است", - "Leave": "ترک", - "Join": "عضویت", + "But you have a negative salary of": "اما موجودی منفی دارید به مبلغ", + "Promo Code": "کد تخفیف", + "Your trip distance is": "مسافت سفر شما:", + "Enter promo code": "کد تخفیف را وارد کنید", + "You have promo!": "تخفیف دارید!", + "Cost Duration": "هزینه مدت زمان", + "Duration is": "مدت زمان:", + "Leave": "ترک کردن", + "Join": "پیوستن", "Heading your way now. Please be ready.": - "در حال حرکت به سمت شما هستم. لطفاً آماده باشید.", + "دارم می‌آیم. لطفاً آماده باشید.", "Approaching your area. Should be there in 3 minutes.": - "در حال نزدیک شدن به منطقه شما هستم. باید در 3 دقیقه دیگر آنجا باشم.", + "نزدیک منطقه شما هستم. ۳ دقیقه دیگر می‌رسم.", "There's heavy traffic here. Can you suggest an alternate pickup point?": - "اینجا ترافیک سنگین است. می‌توانید یک نقطه سوار شدن جایگزین پیشنهاد دهید؟", + "ترافیک سنگین است. نقطه دیگری پیشنهاد می‌کنید؟", "This ride is already taken by another driver.": - "این Intaleq قبلاً توسط راننده دیگری گرفته شده است.", - "You Should be select reason.": "شما باید یک دلیل انتخاب کنید.", - " \$": " \$", - "Waiting for Driver ...": "در انتظار راننده ...", - "Latest Recent Trip": "آخرین Intaleq اخیر", + "این سفر توسط راننده دیگری گرفته شد.", + "You Should be select reason.": "باید دلیلی را انتخاب کنید.", + "Waiting for Driver ...": "در انتظار راننده...", + "Latest Recent Trip": "آخرین سفر اخیر", "from your list": "از لیست شما", "Do you want to change Work location": - "آیا می‌خواهید محل کار را تغییر دهید؟", - "Do you want to change Home location": - "آیا می‌خواهید محل خانه را تغییر دهید؟", + "می‌خواهید محل کار را تغییر دهید", + "Do you want to change Home location": "می‌خواهید خانه را تغییر دهید", "We Are Sorry That we dont have cars in your Location!": - "متأسفیم که در محل شما ماشینی نداریم!", - "Choose from Map": "از نقشه انتخاب کنید", + "متاسفیم، در موقعیت شما خودرویی نداریم!", + "Choose from Map": "انتخاب از روی نقشه", "Pick your ride location on the map - Tap to confirm": - "محل Intaleq خود را روی نقشه انتخاب کنید - برای تأیید ضربه بزنید", - "Closest & Cheapest": "نزدیک‌ترین و ارزان‌ترین", + "محل سفر را روی نقشه انتخاب کنید - برای تأیید ضربه بزنید", "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": - "Intaleq برنامه درخواست Intaleq است که ایمن، قابل اعتماد و در دسترس است.", + "Intaleq امن و قابل اعتماد است.", "With Intaleq, you can get a ride to your destination in minutes.": - "با Intaleq می‌توانید در عرض چند دقیقه به مقصد خود برسید.", + "با Intaleq در چند دقیقه به مقصد برسید.", "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": - "Intaleq به ایمنی متعهد است و همه کاپیتان‌های ما به دقت بررسی و تأیید می‌شوند.", - "Pick from map": "از نقشه انتخاب کنید", - "No Car in your site. Sorry!": - "هیچ ماشینی در محل شما وجود ندارد. متأسفیم!", - "Nearest Car for you about ": "نزدیک‌ترین ماشین برای شما در حدود ", - "From :": "از :", - "Get Details of Trip": "جزئیات Intaleq را دریافت کنید", - "If you want add stop click here": - "اگر می‌خواهید توقف اضافه کنید اینجا کلیک کنید", + "Intaleq متعهد به ایمنی است.", + "Pick from map": "انتخاب از نقشه", + "No Car in your site. Sorry!": "خودرویی در محل شما نیست. متاسفیم!", + "Nearest Car for you about ": "نزدیک‌ترین خودرو حدود ", + "From :": "از:", + "Get Details of Trip": "دریافت جزئیات سفر", + "If you want add stop click here": "برای افزودن توقف اینجا کلیک کنید", "Where you want go ": "کجا می‌خواهید بروید ", "My Card": "کارت من", "Start Record": "شروع ضبط", - "Wallet": "کیف پول", - "History of Trip": "تاریخچه Intaleq", - "Helping Center": "مرکز کمک", + "History of Trip": "تاریخچه سفر", + "Helping Center": "مرکز راهنما", "Record saved": "ضبط ذخیره شد", - "Trips recorded": "Intaleqهای ضبط شده", + "Trips recorded": "سفرهای ضبط شده", "Select Your Country": "کشور خود را انتخاب کنید", "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": - "برای اطمینان از دریافت دقیق‌ترین اطلاعات برای موقعیت شما، لطفاً کشور خود را در زیر انتخاب کنید. این به شخصی‌سازی تجربه و محتوای برنامه برای کشور شما کمک می‌کند.", + "لطفاً کشور خود را انتخاب کنید تا اطلاعات دقیق دریافت کنید.", "Are you sure to delete recorded files": - "آیا مطمئن هستید که فایل‌های ضبط شده را حذف کنید؟", - "Select recorded trip": "Intaleq ضبط شده را انتخاب کنید", + "آیا از حذف فایل‌های ضبط شده مطمئنید", + "Select recorded trip": "انتخاب سفر ضبط شده", "Card Number": "شماره کارت", "Hi, Where to ": "سلام، به کجا ", - "Pick your destination from Map": "مقصد خود را از نقشه انتخاب کنید", - "Add Stops": "اضافه کردن توقف‌ها", - "Get Direction": "دریافت مسیر", - "Add Location": "اضافه کردن مکان", + "Pick your destination from Map": "مقصد را از نقشه انتخاب کنید", + "Add Stops": "افزودن توقف", + "Get Direction": "مسیریابی", + "Add Location": "افزودن مکان", "Switch Rider": "تغییر مسافر", "You will arrive to your destination after timer end.": - "شما پس از پایان تایمر به مقصد خود خواهید رسید.", - "You can cancel trip": "شما می‌توانید Intaleq را لغو کنید", + "پس از پایان تایمر به مقصد خواهید رسید.", + "You can cancel trip": "می‌توانید سفر را لغو کنید", "The driver waitting you in picked location .": - "راننده در محل انتخاب شده منتظر شما است .", - "10\$ and get 3% discount": "10\$ و 3% تخفیف دریافت کنید", - "20\$ and get 4% discount": "20\$ و 4% تخفیف دریافت کنید", - "40\$ and get 6% discount": "40\$ و 6% تخفیف دریافت کنید", - "100\$ and get 9% discount": "100\$ و 9% تخفیف دریافت کنید", - "Pay with Your": "با", + "راننده در محل انتخاب شده منتظر شماست.", + "Pay with Your": "پرداخت با", "Pay with Credit Card": "پرداخت با کارت اعتباری", - "Payment History": "تاریخچه پرداخت", - "Show Promos to Charge": "نمایش پیشنهادات برای شارژ", - "Point": "نقطه", + "Show Promos to Charge": "نمایش تخفیف‌ها برای شارژ", + "Point": "امتیاز", "How many hours would you like to wait?": "چند ساعت می‌خواهید منتظر بمانید؟", "Driver Wallet": "کیف پول راننده", - "Choose between those Type Cars": "بین این نوع ماشین‌ها انتخاب کنید", + "Choose between those Type Cars": + "از بین این نوع خودروها انتخاب کنید", "hour": "ساعت", "Select Waiting Hours": "انتخاب ساعات انتظار", - "Total Points is": "مجموع امتیازات است", + "Total Points is": "مجموع امتیازات:", "You will receive a code in SMS message": - "شما یک کد در پیامک دریافت خواهید کرد", + "کدی در پیامک دریافت خواهید کرد", "Done": "انجام شد", - "Total Budget from trips is ": "بودجه کل از Intaleqها است ", + "Total Budget from trips is ": "مجموع درآمد از سفرها: ", "Total Amount:": "مبلغ کل:", "Total Budget from trips by\nCredit card is ": - "بودجه کل از Intaleqها توسط\nکارت اعتباری است ", + "مجموع درآمد از کارت اعتباری: ", "This amount for all trip I get from Passengers": - "این مبلغ برای همه Intaleqهایی است که از مسافران دریافت می‌کنم", - "Pay from my budget": "از بودجه من پرداخت کنید", + "این مبلغ برای تمام سفرهایی که از مسافران گرفتم", + "Pay from my budget": "پرداخت از اعتبار من", "This amount for all trip I get from Passengers and Collected For me in": - "این مبلغ برای همه Intaleqهایی است که از مسافران دریافت می‌کنم و برای من جمع‌آوری شده است در", + "این مبلغ جمع‌آوری شده برای من در", "You can buy points from your budget": - "شما می‌توانید امتیازها را از بودجه خود خریداری کنید", + "می‌توانید از اعتبار خود امتیاز بخرید", "insert amount": "مبلغ را وارد کنید", "You can buy Points to let you online\nby this list below": - "شما می‌توانید امتیازها را خریداری کنید تا آنلاین شوید\nبا این لیست زیر", + "می‌توانید امتیاز بخرید تا آنلاین شوید\nاز لیست زیر", "Create Wallet to receive your money": - "کیف پول ایجاد کنید تا پول خود را دریافت کنید", + "برای دریافت پول کیف پول بسازید", "Enter your feedback here": "بازخورد خود را اینجا وارد کنید", "Please enter your feedback.": "لطفاً بازخورد خود را وارد کنید.", "Feedback": "بازخورد", "Submit ": "ارسال ", - "Click here to Show it in Map": - "اینجا کلیک کنید تا آن را در نقشه نشان دهید", + "Click here to Show it in Map": "برای نمایش روی نقشه کلیک کنید", "Canceled": "لغو شد", - "Type your Email": "ایمیل خود را تایپ کنید", - "No I want": "نه، من می‌خواهم", - "Email is": "ایمیل است", - "Phone Number is": "شماره تلفن است", - "Date of Birth is": "تاریخ تولد است", - "Sex is ": "جنسیت است ", - "Car Details": "جزئیات ماشین", - "VIN is": "شماره شاسی است", - "Color is ": "رنگ است ", - "Make is ": "سازنده است ", - "Model is": "مدل است", - "Year is": "سال است", - "Expiration Date ": "تاریخ انقضا ", - "Edit Your data": "داده‌های خود را ویرایش کنید", - "write vin for your car": "شماره شاسی ماشین خود را بنویسید", + "No I want": "نه من می‌خواهم", + "Email is": "ایمیل:", + "Phone Number is": "شماره تلفن:", + "Date of Birth is": "تاریخ تولد:", + "Sex is ": "جنسیت: ", + "Car Details": "جزئیات خودرو", + "VIN is": "شماره شاسی:", + "Color is ": "رنگ: ", + "Make is ": "سازنده: ", + "Model is": "مدل:", + "Year is": "سال:", + "Expiration Date ": "تاریخ انقضا: ", + "Edit Your data": "ویرایش اطلاعات", + "write vin for your car": "شماره شاسی خودرو را بنویسید", "VIN": "شماره شاسی", - "write Color for your car": "رنگ ماشین خود را بنویسید", - "write Make for your car": "سازنده ماشین خود را بنویسید", - "write Model for your car": "مدل ماشین خود را بنویسید", - "write Year for your car": "سال ماشین خود را بنویسید", - "write Expiration Date for your car": - "تاریخ انقضای ماشین خود را بنویسید", + "Device Change Detected": "تغییر دستگاه شناسایی شد", + "Please verify your identity": "لطفاً هویت خود را تأیید کنید", + "write Color for your car": "رنگ خودرو را بنویسید", + "write Make for your car": "سازنده خودرو را بنویسید", + "write Model for your car": "مدل خودرو را بنویسید", + "write Year for your car": "سال خودرو را بنویسید", + "write Expiration Date for your car": "تاریخ انقضای خودرو را بنویسید", "Tariffs": "تعرفه‌ها", "Minimum fare": "حداقل کرایه", "Maximum fare": "حداکثر کرایه", - "Flag-down fee": "هزینه پایه", + "Flag-down fee": "ورودی", "Including Tax": "شامل مالیات", "BookingFee": "هزینه رزرو", "Morning": "صبح", "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": - "از 07:30 تا 10:30 (پنجشنبه، جمعه، شنبه، دوشنبه)", + "از ۰۷:۳۰ تا ۱۰:۳۰", "Evening": "عصر", "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": - "از 12:00 تا 15:00 (پنجشنبه، جمعه، شنبه، دوشنبه)", + "از ۱۲:۰۰ تا ۱۵:۰۰", "Night": "شب", - "You have in account": "شما در حساب دارید", - "Select Country": "کشور را انتخاب کنید", - "Ride Today : ": "Intaleq امروز : ", - "After this period\nYou can\'t cancel!": - "پس از این دوره\nشما نمی‌توانید لغو کنید!", - "from 23:59 till 05:30": "از 23:59 تا 05:30", - "Rate Driver": "امتیاز دادن به راننده", - "Total Cost is ": "هزینه کل است ", - "Write note": "یادداشت بنویسید", + "You have in account": "در حساب دارید", + "Select Country": "انتخاب کشور", + "Ride Today : ": "سفر امروز: ", + "After this period\nYou can't cancel!": + "بعد از این مدت\nنمی‌توانید لغو کنید!", + "from 23:59 till 05:30": "از ۲۳:۵۹ تا ۰۵:۳۰", + "Rate Driver": "امتیاز به راننده", + "Total Cost is ": "هزینه کل: ", + "Write note": "نوشتن یادداشت", "Time to arrive": "زمان رسیدن", - "Ride Summaries": "خلاصه‌های Intaleq", + "Ride Summaries": "خلاصه سفرها", "Total Cost": "هزینه کل", "Average of Hours of": "میانگین ساعات", - " is ON for this month": " برای این ماه فعال است", + " is ON for this month": " در این ماه روشن است", "Days": "روزها", - "Total Hours on month": "ساعات کل در ماه", + "Total Hours on month": "مجموع ساعات در ماه", "Counts of Hours on days": "تعداد ساعات در روزها", "OrderId": "شناسه سفارش", "created time": "زمان ایجاد", - "Intaleq Over": "سرعت بیش از حد", - "I will slow down": "سرعت را کاهش می‌دهم", + "Intaleq Over": "Intaleq تمام شد", + "I will slow down": "من سرعتم را کم می‌کنم", "Map Passenger": "نقشه مسافر", - "Be Slowly": "آرام باشید", + "Be Slowly": "آهسته باش", "If you want to make Google Map App run directly when you apply order": - "اگر می‌خواهید برنامه Google Map مستقیماً هنگام اعمال سفارش اجرا شود", + "اگر می‌خواهید گوگل مپ مستقیماً اجرا شود", "You can change the language of the app": - "شما می‌توانید زبان برنامه را تغییر دهید", - "Your Budget less than needed": "بودجه شما کمتر از نیاز است", + "می‌توانید زبان برنامه را تغییر دهید", + "Your Budget less than needed": "بودجه شما کمتر از حد نیاز است", "You can change the Country to get all features": - "شما می‌توانید کشور را تغییر دهید تا همه ویژگی‌ها را دریافت کنید", + "برای دسترسی به تمام ویژگی‌ها کشور را تغییر دهید", "Change Country": "تغییر کشور" }, "el": { - "Order": "Παραγγελία", - "OrderVIP": "Παραγγελία VIP", - "Cancel Trip": "Ακύρωση Ταξιδιού", - "Passenger Cancel Trip": "Ο Επιβάτης Ακύρωσε το Ταξίδι", - "VIP Order": "Παραγγελία VIP", - "The driver accepted your trip": "Ο Οδηγός Δέχτηκε το Ταξίδι Σας", - "message From passenger": "Μήνυμα από τον Επιβάτη", + "Order": "Αίτημα", + "OrderVIP": "VIP Αίτημα", + "Cancel Trip": "Ακύρωση Διαδρομής", + "Passenger Cancel Trip": "Ο επιβάτης ακύρωσε τη διαδρομή", + "VIP Order": "VIP Αίτημα", + "Hi ,I Arrive your site": "Γεια, έφτασα στο σημείο σας", + "The driver accepted your trip": + "Ο οδηγός αποδέχτηκε τη διαδρομή σας", + "message From passenger": "Μήνυμα από τον επιβάτη", "Cancel": "Ακύρωση", "Trip Cancelled. The cost of the trip will be added to your wallet.": - "Το Ταξίδι Ακυρώθηκε. Το κόστος του ταξιδιού θα προστεθεί στο πορτοφόλι σας.", + "Η διαδρομή ακυρώθηκε. Το κόστος θα προστεθεί στο πορτοφόλι σας.", "token change": "Αλλαγή Token", "face detect": "Ανίχνευση Προσώπου", "Face Detection Result": "Αποτέλεσμα Ανίχνευσης Προσώπου", "similar": "Παρόμοιο", - "not similar": "Όχι Παρόμοιο", - "Hi ,I will go now": "Γεια, Θα φύγω τώρα", - "Passenger come to you": "Ο Επιβάτης Έρχεται σε Σας", + "not similar": "Μη παρόμοιο", + "Hi ,I will go now": "Γεια, ξεκινάω τώρα", + "Passenger come to you": "Ο επιβάτης έρχεται σε εσάς", "Call Income": "Εισερχόμενη Κλήση", - "Call Income from Passenger": "Εισερχόμενη Κλήση από τον Επιβάτη", - "Criminal Document Required": "Απαιτείται Έγγραφο Ποινικού Μητρώου", - "You should have upload it .": "Θα έπρεπε να το έχετε ανεβάσει.", + "Call Income from Passenger": "Κλήση από Επιβάτη", + "Criminal Document Required": "Απαιτείται Ποινικό Μητρώο", + "You should have upload it .": "Πρέπει να το ανεβάσετε.", "Call End": "Τέλος Κλήσης", "The order has been accepted by another driver.": - "Η παραγγελία έχει γίνει αποδεκτή από άλλο οδηγό.", + "Το αίτημα έγινε αποδεκτό από άλλον οδηγό.", "The order Accepted by another Driver": - "Η παραγγελία έγινε αποδεκτή από άλλο οδηγό", + "Το αίτημα έγινε δεκτό από άλλον Οδηγό", "We regret to inform you that another driver has accepted this order.": - "Λυπούμαστε που σας ενημερώνουμε ότι άλλος οδηγός έχει δεχτεί αυτήν την παραγγελία.", + "Λυπούμαστε, ένας άλλος οδηγός αποδέχτηκε αυτό το αίτημα.", "Driver Applied the Ride for You": - "Ο Οδηγός Έκανε Αίτηση για το Ταξίδι Σας", - "Applied": "Εφαρμοσμένο", - "Hi ,I Arrive your site": "Γεια, Έφτασα στη τοποθεσία σας", - "Please go to Car Driver": - "Παρακαλώ πηγαίνετε στον Οδηγό του Αυτοκινήτου", - "Ok I will go now.": "Εντάξει, θα πάω τώρα.", - "Accepted Ride": "Αποδεκτό Ταξίδι", + "Ο οδηγός καταχώρησε τη διαδρομή για εσάς", + "Applied": "Καταχωρήθηκε", + "Pay by Sham Cash": "Πληρωμή με Sham Cash", + "Pay with Debit Card": "Πληρωμή με Χρεωστική Κάρτα", + "Please go to Car Driver": "Παρακαλώ πηγαίνετε στον Οδηγό", + "Ok I will go now.": "Εντάξει, πηγαίνω τώρα.", + "Accepted Ride": "Αποδεκτή Διαδρομή", "Driver Accepted the Ride for You": - "Ο Οδηγός Δέχτηκε το Ταξίδι για Σας", - "Promo": "Προώθηση", - "Show latest promo": "Εμφάνιση Τελευταίας Προώθησης", - "Trip Monitoring": "Παρακολούθηση Ταξιδιού", - "Driver Is Going To Passenger": "Ο Οδηγός Πηγαίνει στον Επιβάτη", + "Ο οδηγός αποδέχτηκε τη διαδρομή για εσάς", + "Promo": "Προσφορά", + "Show latest promo": "Εμφάνιση τελευταίων προσφορών", + "Trip Monitoring": "Παρακολούθηση Διαδρομής", + "Driver Is Going To Passenger": "Ο οδηγός πηγαίνει στον Επιβάτη", "Please stay on the picked point.": "Παρακαλώ μείνετε στο επιλεγμένο σημείο.", "message From Driver": "Μήνυμα από τον Οδηγό", - "Trip is Begin": "Το Ταξίδι Ξεκίνησε", - "Cancel Trip from driver": "Ακύρωση Ταξιδιού από τον Οδηγό", + "Trip is Begin": "Η διαδρομή ξεκινά", + "Cancel Trip from driver": "Ακύρωση διαδρομής από τον οδηγό", "We will look for a new driver.\nPlease wait.": - "Θα ψάξουμε για νέο οδηγό.\nΠαρακαλώ περιμένετε.", - "The driver canceled your ride.": "Ο οδηγός ακύρωσε το ταξίδι σας.", - "Driver Finish Trip": "Ο Οδηγός Τελείωσε το Ταξίδι", - "you will pay to Driver": "θα πληρώσετε στον Οδηγό", + "Αναζητούμε νέο οδηγό.\nΠαρακαλώ περιμένετε.", + "The driver canceled your ride.": "Ο οδηγός ακύρωσε τη διαδρομή σας.", + "Driver Finish Trip": "Ο οδηγός ολοκλήρωσε τη διαδρομή", + "you will pay to Driver": "Θα πληρώσετε στον Οδηγό", "Don’t forget your personal belongings.": "Μην ξεχάσετε τα προσωπικά σας αντικείμενα.", "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": - "Παρακαλώ βεβαιωθείτε ότι έχετε όλα τα προσωπικά σας αντικείμενα και ότι οποιαδήποτε υπόλοιπη χρέωση, εάν ισχύει, έχει προστεθεί στο πορτοφόλι σας πριν φύγετε. Ευχαριστούμε που επιλέξατε την εφαρμογή Intaleq", + "Βεβαιωθείτε ότι έχετε πάρει όλα τα προσωπικά σας αντικείμενα και ότι τυχόν ρέστα έχουν προστεθεί στο πορτοφόλι σας πριν αποχωρήσετε. Ευχαριστούμε που επιλέξατε το Intaleq.", "Finish Monitor": "Τέλος Παρακολούθησης", - "Trip finished": "Το Ταξίδι Ολοκληρώθηκε", - "Call Income from Driver": "Εισερχόμενη Κλήση από τον Οδηγό", - "Driver Cancelled Your Trip": "Ο Οδηγός Ακύρωσε το Ταξίδι Σας", + "Trip finished": "Η διαδρομή ολοκληρώθηκε", + "Call Income from Driver": "Κλήση από τον Οδηγό", + "Driver Cancelled Your Trip": "Ο Οδηγός Ακύρωσε τη Διαδρομή σας", "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": - "θα πληρώσετε στον Οδηγό, θα πληρώσετε το κόστος του χρόνου του οδηγού, κοιτάξτε στο Intaleq Wallet σας", - "Order Applied": "Η Παραγγελία Εφαρμόστηκε", - - //firebase above - -// - "Where to": "Πού να πάω", + "Θα πληρώσετε το κόστος χρόνου του οδηγού, δείτε το Πορτοφόλι Intaleq", + "Order Applied": "Το αίτημα καταχωρήθηκε", + "welcome to intaleq": "Καλώς ήρθατε στο Intaleq", + "login or register subtitle": + "Εισάγετε τον αριθμό κινητού για είσοδο ή εγγραφή", + "An application error occurred.": "Προέκυψε σφάλμα εφαρμογής.", + "Submission Failed": "Η υποβολή απέτυχε", + "Your complaint has been submitted.": "Η καταγγελία σας υποβλήθηκε.", + "Failed to connect to the server. Please try again.": + "Αποτυχία σύνδεσης στον διακομιστή. Προσπαθήστε ξανά.", + "Ride information not found. Please refresh the page.": + "Δεν βρέθηκαν πληροφορίες διαδρομής. Ανανεώστε τη σελίδα.", + "Please describe your issue before submitting.": + "Περιγράψτε το πρόβλημά σας πριν την υποβολή.", + "An application error occurred during upload.": + "Προέκυψε σφάλμα κατά τη μεταφόρτωση.", + "Failed to upload audio file.": "Αποτυχία μεταφόρτωσης αρχείου ήχου.", + "Audio uploaded successfully.": "Ο ήχος μεταφορτώθηκε επιτυχώς.", + "Complaint cannot be filed for this ride. It may not have been completed or started.": + "Δεν μπορεί να υποβληθεί καταγγελία για αυτή τη διαδρομή. Ίσως δεν ολοκληρώθηκε ή δεν ξεκίνησε.", + "2. Attach Recorded Audio (Optional)": + "2. Επισύναψη Ηχογράφησης (Προαιρετικό)", + "Please enter a description of the issue.": + "Παρακαλώ εισάγετε περιγραφή του θέματος.", + "phone number label": "Αριθμός Τηλεφώνου", + "phone number required": "Απαιτείται αριθμός τηλεφώνου", + "send otp button": "Αποστολή Κωδικού OTP", + "verify your number title": "Επαληθεύστε τον αριθμό σας", + "otp sent subtitle": + "Ένας 5ψήφιος κωδικός στάλθηκε στο\n@phoneNumber", + "verify and continue button": "Επαλήθευση και Συνέχεια", + "enter otp validation": "Εισάγετε τον 5ψήφιο κωδικό OTP", + "one last step title": "Ένα τελευταίο βήμα", + "complete profile subtitle": + "Ολοκληρώστε το προφίλ σας για να ξεκινήσετε", + "first name label": "Όνομα", + "first name required": "Απαιτείται όνομα", + "last name label": "Επώνυμο", + "Verify OTP": "Επαλήθευση OTP", + "Verification Code": "Κωδικός Επαλήθευσης", + "We have sent a verification code to your mobile number:": + "Στείλαμε έναν κωδικό επαλήθευσης στο κινητό σας:", + "Verify": "Επαλήθευση", + "Resend Code": "Επαναποστολή Κωδικού", + "You can resend in": "Επαναποστολή σε", + "seconds": "δευτερόλεπτα", + "Error": "Σφάλμα", + "Please enter the complete 6-digit code.": + "Παρακαλώ εισάγετε τον πλήρη 6ψήφιο κωδικό.", + "last name required": "Απαιτείται επώνυμο", + "email optional label": "Email (Προαιρετικό)", + "complete registration button": "Ολοκλήρωση Εγγραφής", + "User with this phone number or email already exists.": + "Υπάρχει ήδη χρήστης με αυτό το τηλέφωνο ή email.", + "otp sent success": "Ο κωδικός στάλθηκε στο WhatsApp.", + "failed to send otp": "Αποτυχία αποστολής OTP.", + "server error try again": "Σφάλμα διακομιστή, προσπαθήστε ξανά.", + "an error occurred": "Προέκυψε σφάλμα: @error", + "otp verification failed": "Η επαλήθευση OTP απέτυχε.", + "registration failed": "Η εγγραφή απέτυχε.", + "welcome user": "Καλώς ήρθες, @firstName!", + "Cancel Trip from driver": "Ακύρωση από τον οδηγό", + "We will look for a new driver.\nPlease wait.": + "Αναζητούμε νέο οδηγό.\nΠαρακαλώ περιμένετε.", + "The driver canceled your ride.": "Ο οδηγός ακύρωσε τη διαδρομή σας.", + "Driver Finish Trip": "Ο Οδηγός Ολοκλήρωσε τη Διαδρομή", + "you will pay to Driver": "Θα πληρώσετε στον Οδηγό", + "Don't forget your personal belongings.": + "Μην ξεχάσετε τα προσωπικά σας αντικείμενα.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "Βεβαιωθείτε ότι πήρατε τα πράγματά σας και ότι τυχόν ρέστα προστέθηκαν στο πορτοφόλι σας. Ευχαριστούμε που επιλέξατε το Intaleq.", + "Finish Monitor": "Τέλος Παρακολούθησης", + "Trip finished": "Η διαδρομή έληξε", + "Call Income from Driver": "Κλήση από τον Οδηγό", + "Driver Cancelled Your Trip": "Ο Οδηγός Ακύρωσε τη Διαδρομή", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "Θα πληρώσετε για τον χρόνο του οδηγού, δείτε το Πορτοφόλι Intaleq", + "Order Applied": "Το αίτημα υποβλήθηκε", + "Share App": "Κοινοποίηση Εφαρμογής", + "Wallet": "Πορτοφόλι", + "Balance": "Υπόλοιπο", + "Don’t forget your personal belongings.": + "Μην ξεχάσετε τα αντικείμενά σας.", + "Profile": "Προφίλ", + "Contact Support": "Επικοινωνία με Υποστήριξη", + "Session expired. Please log in again.": + "Η συνεδρία έληξε. Συνδεθείτε ξανά.", + "Security Warning": "⚠️ Προειδοποίηση Ασφαλείας", + "Potential security risks detected. The application may not function correctly.": + "Εντοπίστηκαν πιθανοί κίνδυνοι ασφαλείας. Η εφαρμογή ενδέχεται να μην λειτουργεί σωστά.", + "please order now": "Κάντε αίτημα τώρα", + "Where to": "Πού πάτε;", "Where are you going?": "Πού πηγαίνετε;", "Quick Actions": "Γρήγορες Ενέργειες", - "My Wallet": "Το Πορτοφόλι Μου", - "Order History": "Ιστορικό Παραγγελιών", + "My Balance": "Το Υπόλοιπό μου", + "Order History": "Ιστορικό Διαδρομών", "Contact Us": "Επικοινωνία", "Driver": "Οδηγός", - "Complaint": "Παράπονο", - "Promos": "Προωθήσεις", - "Recent Places": "Πρόσφατες Τοποθεσίες", + "Complaint": "Καταγγελία", + "Promos": "Προσφορές", + "Recent Places": "Πρόσφατα Μέρη", "From": "Από", "WhatsApp Location Extractor": "Εξαγωγή Τοποθεσίας WhatsApp", "Location Link": "Σύνδεσμος Τοποθεσίας", - "Paste location link here": "Επικολλήστε τον σύνδεσμο τοποθεσίας εδώ", - "Go to this location": "Πηγαίνετε σε αυτήν την τοποθεσία", - "Paste WhatsApp location link": - "Επικολλήστε τον σύνδεσμο τοποθεσίας WhatsApp", - "Select Order Type": "Επιλέξτε Τύπο Παραγγελίας", - "Choose who this order is for": - "Επιλέξτε για ποιον είναι αυτή η παραγγελία", - "I want to order for myself": "Θέλω να παραγγείλω για τον εαυτό μου", - "I want to order for someone else": - "Θέλω να παραγγείλω για κάποιον άλλο", - // "Cancel": "Ακύρωση", - "Order for someone else": "Παραγγελία για κάποιον άλλο", - "Order for myself": "Παραγγελία για τον εαυτό μου", - "Are you want to go this site": - "Θέλετε να πάτε σε αυτήν την τοποθεσία;", - // "Yes": "Ναι", + "Paste location link here": "Επικολλήστε τον σύνδεσμο εδώ", + "Go to this location": "Μετάβαση σε αυτή την τοποθεσία", + "Paste WhatsApp location link": "Επικολλήστε σύνδεσμο WhatsApp", + "Select Order Type": "Επιλογή Τύπου Διαδρομής", + "Choose who this order is for": "Για ποιον είναι η διαδρομή;", + "I want to order for myself": "Για εμένα", + "I want to order for someone else": "Για κάποιον άλλον", + "Order for someone else": "Διαδρομή για άλλον", + "Order for myself": "Διαδρομή για εμένα", + "Are you want to go this site": "Θέλετε να πάτε σε αυτό το σημείο;", "No": "Όχι", + "Pay by Sham Cash": "Πληρωμή με Sham Cash", + "Intaleq Wallet": "Πορτοφόλι Intaleq", + "Have a promo code?": "Έχετε κωδικό προσφοράς;", + "Your Wallet balance is ": "Το υπόλοιπο του πορτοφολιού είναι ", + "Cash": "Μετρητά", + "Phone Number": "Αριθμός Τηλεφώνου", + "Search country": "Αναζήτηση χώρας", + "Payment Successful!": "Πληρωμή Επιτυχής!", + "Your payment was successful.": "Η πληρωμή σας ήταν επιτυχής.", + "Pay directly to the captain": "Πληρωμή απευθείας στον οδηγό", + "Top up Wallet to continue": "Φορτίστε το Πορτοφόλι για συνέχεια", + "Or pay with Cash instead": "Ή πληρώστε με Μετρητά", + "Confirm & Find a Ride": "Επιβεβαίωση & Εύρεση", + "Balance:": "Υπόλοιπο:", + "Alerts": "Ειδοποιήσεις", + "Welcome Back!": "Καλώς ήρθατε ξανά!", + "Current Balance": "Τρέχον Υπόλοιπο", + "Set Wallet Phone Number": "Ορισμός Τηλεφώνου Πορτοφολιού", + "Link a phone number for transfers": + "Σύνδεση τηλεφώνου για μεταφορές", + "Payment History": "Ιστορικό Πληρωμών", + "View your past transactions": "Δείτε τις προηγούμενες συναλλαγές", + "Top up Wallet": "Φόρτιση Πορτοφολιού", + "Add funds using our secure methods": "Προσθήκη χρημάτων με ασφάλεια", + "Driver is waiting": "Ο οδηγός περιμένει", + "Type your message...": "Γράψτε το μήνυμά σας...", + "Driver Accepted Request": "Ο Οδηγός Αποδέχτηκε", + "Message": "Μήνυμα", + "Call": "Κλήση", + "Set Phone Number": "Ορισμός Τηλεφώνου", + "Select This Ride": "Επιλογή Διαδρομής", + "Call Driver": "Κλήση Οδηγού", + "Increase Fare": "Αύξηση Ναύλου", + "Stop": "Στάση", + "Record": "Εγγραφή", + "Share": "Κοινοποίηση", + "WhatsApp": "WhatsApp", + "SOS": "SOS", + "No drivers accepted your request yet": + "Κανένας οδηγός δεν αποδέχτηκε ακόμα", + "Increasing the fare might attract more drivers. Would you like to increase the price?": + "Η αύξηση του ναύλου μπορεί να προσελκύσει περισσότερους οδηγούς. Θέλετε να αυξήσετε την τιμή;", + "Please make sure not to leave any personal belongings in the car.": + "Βεβαιωθείτε ότι δεν αφήσατε προσωπικά αντικείμενα στο αμάξι.", + "Cancel Ride": "Ακύρωση Διαδρομής", + "Route Not Found": "Η διαδρομή δεν βρέθηκε", + "We couldn't find a valid route to this destination. Please try selecting a different point.": + "Δεν βρέθηκε έγκυρη διαδρομή. Παρακαλώ επιλέξτε άλλο σημείο.", + "alert": "Ειδοποίηση", + "You can call or record audio during this trip.": + "Μπορείτε να καλέσετε ή να ηχογραφήσετε κατά τη διαδρομή.", + "Warning: Speeding detected!": + "Προειδοποίηση: Εντοπίστηκε υπερβολική ταχύτητα!", + "Fixed Price": "Σταθερή Τιμή", + "Report": "Αναφορά", + "Comfort": "Comfort", + "Intaleq Balance": "Υπόλοιπο Intaleq", + "Search for a starting point": "Αναζήτηση σημείου εκκίνησης", + "Top up Balance to continue": "Φορτίστε το Υπόλοιπο για συνέχεια", + "Electric": "Ηλεκτρικό", + "Lady": "Lady (Γυναίκες)", + "Van": "Van", + "Rayeh Gai": "Μετ' επιστροφής", + "Join Intaleq as a driver using my referral code!": + "Γίνε οδηγός στο Intaleq με τον κωδικό μου!", + "Use code:": "Χρήση κωδικού:", + "Download the Intaleq Driver app now and earn rewards!": + "Κατεβάστε την εφαρμογή Οδηγού Intaleq και κερδίστε!", + "Get a discount on your first Intaleq ride!": + "Έκπτωση στην πρώτη διαδρομή Intaleq!", + "Use my referral code:": "Χρησιμοποιήστε τον κωδικό μου:", + "Download the Intaleq app now and enjoy your ride!": + "Κατεβάστε το Intaleq και απολαύστε τη διαδρομή!", + "Contacts Loaded": "Οι επαφές φορτώθηκαν", + "Showing": "Εμφάνιση", + "of": "από", + "Pay by MTN Wallet": "Πληρωμή με MTN Wallet", + "Pay by Syriatel Wallet": "Πληρωμή με Syriatel Wallet", + "Customer not found": "Ο πελάτης δεν βρέθηκε", + "Wallet is blocked": "Το πορτοφόλι έχει αποκλειστεί", + "Customer phone is not active": "Το τηλέφωνο δεν είναι ενεργό", + "Balance not enough": "Ανεπαρκές υπόλοιπο", + "Balance limit exceeded": "Υπέρβαση ορίου υπολοίπου", + "Incorrect sms code": "⚠️ Λάθος κωδικός SMS. Προσπαθήστε ξανά.", + "contacts. Others were hidden because they don't have a phone number.": + "επαφές. Οι άλλες αποκρύφθηκαν γιατί δεν έχουν αριθμό.", + "No contacts found": "Δεν βρέθηκαν επαφές", + "No contacts with phone numbers were found on your device.": + "Δεν βρέθηκαν επαφές με αριθμούς στη συσκευή.", + "Permission denied": "Άρνηση πρόσβασης", + "Contact permission is required to pick contacts": + "Απαιτείται άδεια επαφών.", + "An error occurred while picking contacts:": + "Σφάλμα κατά την επιλογή επαφών:", + "Please enter a correct phone": "Εισάγετε σωστό τηλέφωνο", + "Success": "Επιτυχία", + "Invite sent successfully": "Η πρόσκληση στάλθηκε", + "Hello! I'm inviting you to try Intaleq.": + "Γεια! Σε προσκαλώ να δοκιμάσεις το Intaleq.", + "Use my invitation code to get a special gift on your first ride!": + "Χρησιμοποίησε τον κωδικό μου για δώρο στην πρώτη διαδρομή!", + "Your personal invitation code is:": "Ο κωδικός πρόσκλησής σου:", + "Be sure to use it quickly! This code expires at": + "Χρησιμοποίησέ το γρήγορα! Λήγει στις", + "Download the app now:": "Κατέβασε την εφαρμογή:", + "See you on the road!": "Τα λέμε στον δρόμο!", + "This phone number has already been invited.": + "Αυτός ο αριθμός έχει ήδη προσκληθεί.", + "An unexpected error occurred. Please try again.": + "Προέκυψε απροσδόκητο σφάλμα. Προσπαθήστε ξανά.", + "You deserve the gift": "Αξίζετε το δώρο", + "Claim your 20 LE gift for inviting": + "Διεκδικήστε το δώρο 20 € για την πρόσκληση", + "You have got a gift for invitation": "Έχετε ένα δώρο πρόσκλησης", + "You have earned 20": "Κερδίσατε 20", + "LE": "€", + "Vibration feedback for all buttons": "Δόνηση για όλα τα κουμπιά", + "Share with friends and earn rewards": + "Μοιραστείτε με φίλους και κερδίστε", + "Gift Already Claimed": "Το δώρο έχει ήδη ληφθεί", + "You have already received your gift for inviting": + "Έχετε ήδη λάβει το δώρο σας", + "Keep it up!": "Συνεχίστε έτσι!", + "has completed": "ολοκλήρωσε", + "trips": "διαδρομές", + "Personal Information": "Προσωπικά Στοιχεία", + "Name": "Όνομα", + "Not set": "Δεν ορίστηκε", + "Gender": "Φύλο", + "Education": "Εκπαίδευση", + "Work & Contact": "Εργασία & Επικοινωνία", + "Employment Type": "Τύπος Απασχόλησης", + "Marital Status": "Οικογενειακή Κατάσταση", + "SOS Phone": "Τηλέφωνο SOS", + "Sign Out": "Αποσύνδεση", + "Delete My Account": "Διαγραφή Λογαριασμού", + "Update Gender": "Ενημέρωση Φύλου", + "Update": "Ενημέρωση", + "Update Education": "Ενημέρωση Εκπαίδευσης", + "Are you sure? This action cannot be undone.": + "Είστε σίγουροι; Αυτή η ενέργεια δεν αναιρείται.", + "Confirm your Email": "Επιβεβαίωση Email", + "Type your Email": "Πληκτρολογήστε το Email", + "Delete Permanently": "Οριστική Διαγραφή", + "Male": "Άνδρας", + "Female": "Γυναίκα", + "Other": "Άλλο", + "High School Diploma": "Απολυτήριο Λυκείου", + "Associate Degree": "Πτυχίο ΙΕΚ/Κολεγίου", + "Bachelor's Degree": "Πτυχίο ΑΕΙ", + "Master's Degree": "Μεταπτυχιακό", + "Doctoral Degree": "Διδακτορικό", + "Select your preferred language for the app interface.": + "Επιλέξτε γλώσσα εφαρμογής.", + "Language Options": "Επιλογές Γλώσσας", + "You can claim your gift once they complete 2 trips.": + "Μπορείτε να πάρετε το δώρο αφού ολοκληρώσουν 2 διαδρομές.", + "Closest & Cheapest": "Κοντινότερο & Φθηνότερο", + "Comfort choice": "Επιλογή Comfort", + "Travel in a modern, silent electric car. A premium, eco-friendly choice for a smooth ride.": + "Ταξιδέψτε με σύγχρονο, αθόρυβο ηλεκτρικό αυτοκίνητο. Premium και οικολογική επιλογή.", + "Spacious van service ideal for families and groups. Comfortable, safe, and cost-effective travel together.": + "Ευρύχωρο βαν, ιδανικό για οικογένειες. Άνετο, ασφαλές και οικονομικό.", + "Quiet & Eco-Friendly": "Ήσυχο & Οικολογικό", + "Lady Captain for girls": "Γυναίκα Οδηγός για γυναίκες", + "Van for familly": "Βαν για οικογένεια", "Are you sure to delete this location?": - "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την τοποθεσία;", - "deleted": "Διαγράφηκε", - "To Work": "Στην Εργασία", - "Work Saved": "Η Τοποθεσία Εργασίας Αποθηκεύτηκε", - "To Home": "Στο Σπίτι", - "Home Saved": "Η Τοποθεσία Σπιτιού Αποθηκεύτηκε", - "Destination selected": "Επιλέχθηκε Προορισμός", - "Now select start pick": "Τώρα επιλέξτε το σημείο έναρξης", - "OK": "Εντάξει", - "Confirm Pick-up Location": "Επιβεβαίωση Τοποθεσίας Παραλαβής", - "Set Location on Map": "Ορίστε Τοποθεσία στο Χάρτη", - "Nearest Car: ~": "Πλησιέστερο Αυτοκίνητο: ~", - "Nearest Car": "Πλησιέστερο Αυτοκίνητο", - "No cars nearby": "Δεν υπάρχουν αυτοκίνητα κοντά", - "Favorite Places": "Αγαπημένες Τοποθεσίες", - "No favorite places yet!": - "Δεν υπάρχουν ακόμα αγαπημένες τοποθεσίες!", - "from your favorites": "από τις αγαπημένες σας", - "Back": "Πίσω", + "Σίγουρα θέλετε να διαγράψετε την τοποθεσία;", + "Change Work location?": "Αλλαγή τοποθεσίας Εργασίας;", + "Change Home location?": "Αλλαγή τοποθεσίας Σπιτιού;", + "Submit a Complaint": "Υποβολή Καταγγελίας", + "Submit Complaint": "Υποβολή", + "No trip history found": "Δεν βρέθηκε ιστορικό", + "Your past trips will appear here.": + "Οι προηγούμενες διαδρομές θα εμφανιστούν εδώ.", + "1. Describe Your Issue": "1. Περιγράψτε το θέμα", + "Enter your complaint here...": "Γράψτε την καταγγελία εδώ...", + "2. Attach Recorded Audio": "2. Επισύναψη Ήχου", + "No audio files found.": "Δεν βρέθηκαν αρχεία ήχου.", + "Confirm Attachment": "Επιβεβαίωση Επισύναψης", + "Attach this audio file?": "Επισύναψη αυτού του αρχείου;", + "Uploaded": "Μεταφορτώθηκε", + "3. Review Details & Response": "3. Έλεγχος Λεπτομερειών", + "Date": "Ημερομηνία", + "Today's Promos": "Σημερινές Προσφορές", + "No promos available right now.": "Δεν υπάρχουν προσφορές τώρα.", + "Check back later for new offers!": "Ελέγξτε ξανά αργότερα!", + "Valid Until:": "Ισχύει έως:", + "CODE": "ΚΩΔΙΚΟΣ", + "Login": "Είσοδος", "Sign in for a seamless experience": - "Συνδεθείτε για μια απρόσκοπτη εμπειρία", + "Συνδεθείτε για καλύτερη εμπειρία", "Sign In with Google": "Σύνδεση με Google", "Sign in with Apple": "Σύνδεση με Apple", - "Need assistance? Contact us": - "Χρειάζεστε βοήθεια; Επικοινωνήστε μαζί μας", "User not found": "Ο χρήστης δεν βρέθηκε", - "Email": "Ηλεκτρονικό Ταχυδρομείο", - "Your email address": "Η διεύθυνση ηλεκτρονικού ταχυδρομείου σας", - "Enter a valid email": - "Εισάγετε μια έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου", - "Password": "Κωδικός Πρόσβασης", - // "Your password": "Ο κωδικός πρόσβασής σας", - "Enter your password": "Εισάγετε τον κωδικό πρόσβασής σας", + "Need assistance? Contact us": "Χρειάζεστε βοήθεια; Επικοινωνήστε", + "Email": "Email", + "Your email address": "Η διεύθυνση email σας", + "Enter a valid email": "Εισάγετε έγκυρο email", + "Password": "Κωδικός", + "Your password": "Ο κωδικός σας", + "Enter your password": "Εισάγετε κωδικό πρόσβασης", "Submit": "Υποβολή", - "Terms of Use & Privacy Notice": "Όροι Χρήσης και Σημείωση Απορρήτου", - "Terms of Use": "Όροι Χρήσης", - "Privacy Notice": "Σημείωση Απορρήτου", - "By selecting \"I Agree\" below, I confirm that I have read and agree to the": - "Επιλέγοντας \"Συμφωνώ\" παρακάτω, επιβεβαιώνω ότι έχω διαβάσει και συμφωνώ με τους", - "and acknowledge the": "και αναγνωρίζω την", - ". I am at least 18 years old.": ". Είμαι τουλάχιστον 18 ετών.", - + "Terms of Use & Privacy Notice": "Όροι Χρήσης & Πολιτική Απορρήτου", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the ": + "Επιλέγοντας \"Συμφωνώ\", επιβεβαιώνω ότι διάβασα και αποδέχομαι τους ", + "Terms of Use": "Όρους Χρήσης", + " and acknowledge the ": " και αναγνωρίζω την ", + "Privacy Notice": "Πολιτική Απορρήτου", + " . I am at least 18 years old.": " . Είμαι τουλάχιστον 18 ετών.", + "I Agree": "Συμφωνώ", "Continue": "Συνέχεια", - "Enable Location Access": "Ενεργοποίηση Πρόσβασης Τοποθεσίας", + "Enable Location": "Ενεργοποίηση Τοποθεσίας", + "To give you the best experience, we need to know where you are. Your location is used to find nearby captains and for pickups.": + "Για την καλύτερη εμπειρία, χρειαζόμαστε την τοποθεσία σας για να βρούμε κοντινούς οδηγούς.", + "Allow Location Access": "Να επιτρέπεται η πρόσβαση", + "Welcome to Intaleq!": "Καλώς ήρθατε στο Intaleq!", + "Before we start, please review our terms.": + "Πριν ξεκινήσουμε, δείτε τους όρους μας.", + "Your journey starts here": "Το ταξίδι ξεκινά εδώ", + "Cancel Search": "Ακύρωση Αναζήτησης", + "Set pickup location": "Ορισμός παραλαβής", + "Move the map to adjust the pin": "Μετακινήστε τον χάρτη", + "Searching for the nearest captain...": + "Αναζήτηση κοντινότερου οδηγού...", + "No one accepted? Try increasing the fare.": + "Κανείς δεν δέχτηκε; Αυξήστε την προσφορά.", + "Increase Your Trip Fee (Optional)": "Αύξηση Ναύλου (Προαιρετικό)", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "Δεν βρέθηκαν οδηγοί. Σκεφτείτε να αυξήσετε την τιμή για να γίνει πιο ελκυστική η προσφορά.", + "No, thanks": "Όχι, ευχαριστώ", + "Increase Fee": "Αύξηση Τιμής", + "Copy": "Αντιγραφή", + "Promo Copied!": "Αντιγράφηκε!", + "Code": "Κωδικός", + "copied to clipboard": "αντιγράφηκε στο πρόχειρο", + "Price": "Τιμή", + "Intaleq's Response": "Απάντηση Intaleq", + "Awaiting response...": "Αναμονή απάντησης...", + "Audio file not attached": "Δεν επισυνάφθηκε ήχος", + "The audio file is not uploaded yet.\\nDo you want to submit without it?": + "Ο ήχος δεν ανέβηκε ακόμα.\\nΝα γίνει υποβολή χωρίς αυτόν;", + "deleted": "διαγράφηκε", + "To Work": "Προς Εργασία", + "Work Saved": "Εργασία Αποθηκεύτηκε", + "To Home": "Προς Σπίτι", + "Home Saved": "Σπίτι Αποθηκεύτηκε", + "Destination selected": "Προορισμός επιλέχθηκε", + "Now select start pick": "Επιλέξτε σημείο παραλαβής", + "OK": "ΟΚ", + "Confirm Pick-up Location": "Επιβεβαίωση Παραλαβής", + "Set Location on Map": "Ορισμός στον Χάρτη", + "Leave a detailed comment (Optional)": "Αφήστε σχόλιο (Προαιρετικό)", + "Share your experience to help us improve...": + "Μοιραστείτε την εμπειρία σας...", + "Your valuable feedback helps us improve our service quality.": + "Η γνώμη σας μας βοηθά να βελτιωθούμε.", + "witout zero": "χωρίς μηδενικό", + "Top up Balance": "Φόρτιση Υπολοίπου", + "An error occurred": "Προέκυψε σφάλμα", + "Send WhatsApp Message": "Αποστολή WhatsApp", + "How was your trip with": "Πώς ήταν η διαδρομή με", + "Drawing route on map...": "Σχεδίαση διαδρομής...", + "Please wait while we prepare your trip.": + "Περιμένετε όσο ετοιμάζουμε τη διαδρομή.", + "Submit Rating": "Υποβολή Βαθμολογίας", + "Call Support": "Κλήση Υποστήριξης", + "You can contact us during working hours from 10:00 - 16:00.": + "Επικοινωνήστε μαζί μας 10:00 - 16:00.", + "Intaleq is the safest and most reliable ride-sharing app designed especially for passengers in Syria. We provide a comfortable, respectful, and affordable riding experience with features that prioritize your safety and convenience. Our trusted captains are verified, insured, and supported by regular car maintenance carried out by top engineers. We also offer on-road support services to make sure every trip is smooth and worry-free. With Intaleq, you enjoy quality, safety, and peace of mind—every time you ride.": + "Το Intaleq είναι η ασφαλέστερη εφαρμογή μεταφοράς στην Ελλάδα. Παρέχουμε άνετη και οικονομική εμπειρία. Οι οδηγοί μας είναι ελεγμένοι και ασφαλισμένοι. Απολαύστε ποιότητα και ασφάλεια.", + "Work time is from 10:00 AM to 16:00 PM.\nYou can send a WhatsApp message or email.": + "Ώρες εργασίας 10:00 - 16:00.\nΣτείλτε WhatsApp ή email.", + "Sorry": "Συγγνώμη", + "Customer MSISDN doesn’t have customer wallet": + "Ο αριθμός δεν έχει πορτοφόλι πελάτη", + "Please enter the number without the leading 0": + "Εισάγετε τον αριθμό χωρίς το αρχικό 0", + "Please enter your phone number": "Εισάγετε τον αριθμό τηλεφώνου", + "Phone number seems too short": "Ο αριθμός φαίνεται πολύ μικρός", + "No cars are available at the moment. Please try again later.": + "Δεν υπάρχουν οχήματα. Προσπαθήστε αργότερα.", + "Nearest Car: ~": "Κοντινότερο Όχημα: ~", + "Nearest Car": "Κοντινότερο Όχημα", + "No cars nearby": "Κανένα όχημα κοντά", + "Favorite Places": "Αγαπημένα Μέρη", + "No favorite places yet!": "Κανένα αγαπημένο μέρος ακόμα!", + "from your favorites": "από τα αγαπημένα", + "Back": "Πίσω", + "Enter your code below to apply the discount.": + "Εισάγετε τον κωδικό για έκπτωση.", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the": + "Επιλέγοντας \"Συμφωνώ\", αποδέχομαι τα", + "and acknowledge the": "και αναγνωρίζω την", + "Enable Location Access": "Ενεργοποίηση Τοποθεσίας", "We need your location to find nearby drivers for pickups and drop-offs.": - "Χρειαζόμαστε την τοποθεσία σας για να βρούμε κοντινούς οδηγούς για παραλαβές και αποστολές.", - "Allow Location Access": "Επιτρέψτε Πρόσβαση Τοποθεσίας", + "Χρειαζόμαστε την τοποθεσία σας για εύρεση οδηγών.", "You should restart app to change language": - "Θα πρέπει να επανεκκινήσετε την εφαρμογή για να αλλάξετε γλώσσα", + "Επανεκκινήστε την εφαρμογή για αλλαγή γλώσσας", "Home Page": "Αρχική Σελίδα", - "To change Language the App": - "Για να αλλάξετε τη γλώσσα της εφαρμογής", - "Learn more about our app and mission": - "Μάθετε περισσότερα για την εφαρμογή και την αποστολή μας", - "Promos For Today": "Προωθήσεις για Σήμερα", - "Choose your ride": "Επιλέξτε το ταξίδι σας", - "Your Journey Begins Here": "Το Ταξίδι Σας Ξεκινά Εδώ", - "Bonus gift": "Δώρο", + "To change Language the App": "Αλλαγή Γλώσσας Εφαρμογής", + "Learn more about our app and mission": "Μάθετε περισσότερα για εμάς", + "Promos For Today": "Σημερινές Προσφορές", + "Choose your ride": "Επιλέξτε διαδρομή", + "Your Journey Begins Here": "Το ταξίδι ξεκινά εδώ", + "Bonus gift": "Δώρο Bonus", "Pay": "Πληρωμή", "Get": "Λήψη", - "Send to Driver Again": "Αποστολή στον Οδηγό Ξανά", + "Send to Driver Again": "Αποστολή ξανά στον Οδηγό", "Driver Name:": "Όνομα Οδηγού:", - "No trip data available": "Δεν υπάρχουν διαθέσιμα δεδομένα ταξιδιού", - "Car Plate:": "Πινακίδα Αυτοκινήτου:", + "No trip data available": "Μη διαθέσιμα δεδομένα", + "Car Plate:": "Πινακίδα:", "remaining": "απομένουν", - "Order Cancelled": "Η Παραγγελία Ακυρώθηκε", - "You canceled VIP trip": "Ακυρώσατε το ταξίδι VIP", - "Passenger cancelled order": "Ο Επιβάτης Ακύρωσε την Παραγγελία", - "Your trip is scheduled": "Το ταξίδι σας έχει προγραμματιστεί", - "Don't forget your ride!": "Μην ξεχάσετε το ταξίδι σας!", - "Trip updated successfully": "Το ταξίδι ενημερώθηκε με επιτυχία", - "Car Make:": "Μάρκα Αυτοκινήτου:", - "Car Model:": "Μοντέλο Αυτοκινήτου:", - "Car Color:": "Χρώμα Αυτοκινήτου:", - "Driver Phone:": "Τηλέφωνο Οδηγού:", - "Pre-booking": "Προκαταβολική Κράτηση", + "Order Cancelled": "Ακυρώθηκε", + "You canceled VIP trip": "Ακυρώσατε τη VIP διαδρομή", + "Passenger cancelled order": "Ο επιβάτης ακύρωσε", + "Your trip is scheduled": "Η διαδρομή προγραμματίστηκε", + "Don't forget your ride!": "Μην ξεχάσετε τη διαδρομή!", + "Trip updated successfully": "Η διαδρομή ενημερώθηκε", + "Car Make:": "Μάρκα:", + "Car Model:": "Μοντέλο:", + "Car Color:": "Χρώμα:", + "Driver Phone:": "Τηλ. Οδηγού:", + "Pre-booking": "Προκράτηση", "Waiting VIP": "Αναμονή VIP", "Driver List": "Λίστα Οδηγών", - "Confirm Trip": "Επιβεβαίωση Ταξιδιού", - "Select date and time of trip": - "Επιλέξτε ημερομηνία και ώρα ταξιδιού", - "Date and Time Picker": "Επιλογή Ημερομηνίας και Ώρας", - "Trip Status:": "Κατάσταση Ταξιδιού:", + "Confirm Trip": "Επιβεβαίωση", + "Select date and time of trip": "Επιλογή ημερομηνίας και ώρας", + "Date and Time Picker": "Επιλογή Ημερομηνίας/Ώρας", + "Trip Status:": "Κατάσταση:", "pending": "εκκρεμεί", - "accepted": "έγινε αποδεκτό", + "accepted": "εγκρίθηκε", "rejected": "απορρίφθηκε", "Apply": "Εφαρμογή", - "Enter your promo code": "Εισάγετε τον κωδικό προώθησής σας", - "Apply Promo Code": "Εφαρμογή Κωδικού Προώθησης", + "Enter your promo code": "Εισάγετε κωδικό", + "Apply Promo Code": "Χρήση Κωδικού", "Scheduled Time:": "Προγραμματισμένη Ώρα:", - "No drivers available": "Δεν υπάρχουν διαθέσιμοι οδηγοί", + "No drivers available": "Κανένας οδηγός διαθέσιμος", "No drivers available at the moment. Please try again later.": - "Δεν υπάρχουν διαθέσιμοι οδηγοί αυτή τη στιγμή. Παρακαλώ δοκιμάστε ξανά αργότερα.", + "Κανένας οδηγός τώρα. Προσπαθήστε αργότερα.", "you have a negative balance of": "έχετε αρνητικό υπόλοιπο", - "Please try again in a few moments": - "Παρακαλώ δοκιμάστε ξανά σε λίγα λεπτά", + "Please try again in a few moments": "Προσπαθήστε ξανά σε λίγο", "Unknown Driver": "Άγνωστος Οδηγός", "in your": "στο", - "The driver accepted your order for": - "Ο οδηγός δέχτηκε την παραγγελία σας για", + "The driver accepted your order for": "Ο οδηγός αποδέχτηκε για", "wallet due to a previous trip.": - "πορτοφόλι λόγω προηγούμενου ταξιδιού.", - "rides": "ταξίδια", + "πορτοφόλι λόγω προηγούμενης διαδρομής.", + "rides": "διαδρομές", "Add Work": "Προσθήκη Εργασίας", "The reason is": "Ο λόγος είναι", - "User does not have a wallet #1652": "Ο χρήστης δεν έχει πορτοφόλι", - "Price of trip": "Τιμή ταξιδιού", + "User does not have a wallet #1652": + "Ο χρήστης δεν έχει πορτοφόλι #1652", + "Price of trip": "Τιμή διαδρομής", "From:": "Από:", "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "Για ταξίδια ταχύτητας και παράδοσης, η τιμή υπολογίζεται δυναμικά. Για ταξίδια άνεσης, η τιμή βασίζεται στον χρόνο και την απόσταση.", + "Για Intaleq και Delivery, η τιμή είναι δυναμική. Για Comfort, βασίζεται σε χρόνο και απόσταση.", "Phone Wallet Saved Successfully": - "Το Τηλέφωνο Πορτοφολιού Αποθηκεύτηκε με Επιτυχία", - "Add wallet phone you use": - "Προσθέστε το τηλέφωνο πορτοφολιού που χρησιμοποιείτε", + "Το τηλέφωνο πορτοφολιού αποθηκεύτηκε", + "Add wallet phone you use": "Προσθήκη τηλεφώνου πορτοφολιού", "Update Available": "Διαθέσιμη Ενημέρωση", "Phone number must be exactly 11 digits long": - "Ο αριθμός τηλεφώνου πρέπει να είναι ακριβώς 11 ψηφία", - "Insert Wallet phone number": - "Εισαγωγή Αριθμού Τηλεφώνου Πορτοφολιού", + "Ο αριθμός πρέπει να έχει 10 ψηφία", + "Insert Wallet phone number": "Εισαγωγή τηλεφώνου πορτοφολιού", "Phone number isn't an Egyptian phone number": - "Ο αριθμός τηλεφώνου δεν είναι αιγυπτιακός", + "Δεν είναι ελληνικός αριθμός", "A new version of the app is available. Please update to the latest version.": - "Μια νέα έκδοση της εφαρμογής είναι διαθέσιμη. Παρακαλώ ενημερώστε στην τελευταία έκδοση.", + "Νέα έκδοση διαθέσιμη. Παρακαλώ ενημερώστε.", "We use location to get accurate and nearest passengers for you": - "Χρησιμοποιούμε την τοποθεσία για να βρούμε ακριβείς και κοντινούς επιβάτες για εσάς", + "Χρησιμοποιούμε την τοποθεσία για εύρεση επιβατών", "This ride is already applied by another driver.": - "Αυτό το ταξίδι έχει ήδη εφαρμοστεί από άλλο οδηγό.", + "Αυτή η διαδρομή αναλήφθηκε από άλλον οδηγό.", "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": - "Χρησιμοποιούμε την ακριβή τοποθεσία σας για να βρούμε τον πλησιέστερο διαθέσιμο οδηγό και να παρέχουμε ακριβείς πληροφορίες παραλαβής και απόθεσης. Μπορείτε να διαχειριστείτε αυτό στις Ρυθμίσεις.", - - "Where are you, sir?": "Πού είστε, κύριε;", + "Χρησιμοποιούμε την ακριβή τοποθεσία για εύρεση οδηγού. Διαχείριση στις Ρυθμίσεις.", + "Where are you, sir?": "Πού είστε;", "I've been trying to reach you but your phone is off.": - "Προσπαθούσα να σας επικοινωνήσω αλλά το τηλέφωνό σας είναι κλειστό.", + "Προσπαθώ να σας βρω αλλά το κινητό είναι κλειστό.", "Please don't be late": "Παρακαλώ μην αργήσετε", "Please don't be late, I'm waiting for you at the specified location.": - "Παρακαλώ μην αργήσετε, σας περιμένω στην καθορισμένη τοποθεσία.", + "Μην αργήσετε, περιμένω στο σημείο.", "My location is correct. You can search for me using the navigation app": - "Η τοποθεσία μου είναι σωστή. Μπορείτε να με αναζητήσετε χρησιμοποιώντας την εφαρμογή πλοήγησης.", + "Η τοποθεσία είναι σωστή. Βρείτε με μέσω GPS.", "Hello, I'm at the agreed-upon location": - "Γεια σας, είμαι στην συμφωνημένη τοποθεσία", - "How much longer will you be?": "Πόσο ακόμα θα κάνετε;", - "Phone number is verified before": - "Ο αριθμός τηλεφώνου έχει επαληθευτεί προηγουμένως", - "Change Ride": "Αλλαγή Ταξιδιού", + "Γεια, είμαι στο συμφωνημένο σημείο", + "How much longer will you be?": "Πόση ώρα ακόμα;", + "Phone number is verified before": "Ο αριθμός έχει επαληθευτεί", + "Change Ride": "Αλλαγή Διαδρομής", "You can change the destination by long-pressing any point on the map": - "Μπορείτε να αλλάξετε τον προορισμό πατώντας παρατεταμένα οποιοδήποτε σημείο στο χάρτη", - "Pick from map destination": "Επιλέξτε τον προορισμό από τον χάρτη", - "Pick or Tap to confirm": "Επιλέξτε ή πατήστε για επιβεβαίωση", - "Accepted your order": "Δέχτηκε την παραγγελία σας", - "Order Accepted": "Η Παραγγελία Έγινε Αποδεκτή", - "with type": "με τύπο", - "accepted your order at price": - "δέχτηκε την παραγγελία σας στην τιμή", - - "you canceled order": "ακυρώσατε την παραγγελία", - "If you want order to another person": - "Αν θέλετε να παραγγείλετε για άλλο άτομο", - // "Ok I will go now.": "Εντάξει, θα πάω τώρα.", - // "Hi, I will go now": "Γεια, θα φύγω τώρα", - "upgrade price": "αναβάθμιση τιμής", - "Please enter a correct phone": - "Παρακαλώ εισάγετε ένα σωστό τηλέφωνο", + "Αλλάξτε προορισμό πατώντας παρατεταμένα στον χάρτη", + "Pick from map destination": "Επιλογή προορισμού στον χάρτη", + "Pick or Tap to confirm": "Επιλέξτε ή Πατήστε για επιβεβαίωση", + "Accepted your order": "Αποδέχτηκε το αίτημα", + "Order Accepted": "Αίτημα Εγκρίθηκε", + "with type": "τύπου", + "accepted your order at price": "αποδέχτηκε στην τιμή", + "you canceled order": "ακυρώσατε", + "If you want order to another person": "Αν θέλετε διαδρομή για άλλον", + "upgrade price": "αύξηση τιμής", "airport": "αεροδρόμιο", "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": - "Καλύτερη επιλογή για ένα άνετο αυτοκίνητο με ευέλικτη διαδρομή και σημεία στάσης. Αυτό το αεροδρόμιο προσφέρει είσοδο βίζας σε αυτήν την τιμή.", + "Καλύτερη επιλογή για άνετο αμάξι με ευέλικτη διαδρομή.", "You can upgrade price to may driver accept your order": - "Μπορείτε να αναβαθμίσετε την τιμή για να δεχτεί ο οδηγός την παραγγελία σας", + "Μπορείτε να αυξήσετε την τιμή για να αποδεχτεί οδηγός", "Change Route": "Αλλαγή Διαδρομής", - "No Captain Accepted Your Order": - "Κανένας Καπετάνιος Δεν Δέχτηκε την Παραγγελία Σας", + "No Captain Accepted Your Order": "Κανένας Οδηγός δεν αποδέχτηκε", "We are looking for a captain but the price may increase to let a captain accept": - "Ψάχνουμε για καπετάνιο αλλά η τιμή μπορεί να αυξηθεί για να δεχτεί ένας καπετάνιος", - "No, I want to cancel this trip": - "Όχι, θέλω να ακυρώσω αυτό το ταξίδι", - // "Trip Cancelled. The cost of the trip will be added to your wallet.": "Το ταξίδι ακυρώθηκε. Το κόστος του ταξιδιού θα προστεθεί στο πορτοφόλι σας.", + "Ψάχνουμε οδηγό αλλά η τιμή ίσως αυξηθεί", + "No, I want to cancel this trip": "Όχι, θέλω ακύρωση", "Attention": "Προσοχή", "Trip Cancelled. The cost of the trip will be deducted from your wallet.": - "Το ταξίδι ακυρώθηκε. Το κόστος του ταξιδιού θα αφαιρεθεί από το πορτοφόλι σας.", + "Ακυρώθηκε. Το κόστος θα αφαιρεθεί από το πορτοφόλι.", "You will be charged for the cost of the driver coming to your location.": - "Θα χρεωθείτε για το κόστος του οδηγού που έρχεται στην τοποθεσία σας.", - "reject your order.": "απορρίπτει την παραγγελία σας.", - "Order Under Review": "Η Παραγγελία Εξετάζεται", + "Θα χρεωθείτε το κόστος μετάβασης του οδηγού.", + "reject your order.": "απέρριψε το αίτημα.", + "Order Under Review": "Υπό Εξέταση", "is reviewing your order. They may need more information or a higher price.": - "εξετάζει την παραγγελία σας. Μπορεί να χρειαστούν περισσότερες πληροφορίες ή υψηλότερη τιμή.", - // "The driver canceled your ride.": "Ο οδηγός ακύρωσε το ταξίδι σας.", - "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": - "Δεν έχουμε βρει ακόμα οδηγούς. Σκεφτείτε να αυξήσετε την χρέωση του ταξιδιού σας για να κάνετε την προσφορά σας πιο ελκυστική για τους οδηγούς.", - "Increase Your Trip Fee (Optional)": - "Αυξήστε την Χρέωση του Ταξιδιού Σας (Προαιρετικά)", + "εξετάζει το αίτημα. Ίσως χρειάζεται υψηλότερη τιμή.", "Vibration": "Δόνηση", - "Resend code": "Επανάληψη Αποστολής Κωδικού", - // "token change": "αλλαγή token", + "Resend code": "Επαναποστολή", "change device": "αλλαγή συσκευής", - "Device Change Detected": "Εντοπίστηκε Αλλαγή Συσκευής", + "Device Change Detected": "Ανιχνεύτηκε Αλλαγή Συσκευής", "You can only use one device at a time. This device will now be set as your active device.": - "Μπορείτε να χρησιμοποιείτε μόνο μία συσκευή κάθε φορά. Αυτή η συσκευή θα οριστεί τώρα ως η ενεργή συσκευή σας.", - "Click here point": "Κάντε κλικ εδώ", - "Are you want to change": "Θέλετε να αλλάξετε;", + "Μόνο μία συσκευή ταυτόχρονα. Αυτή ορίζεται ως ενεργή.", + "Click here point": "Πατήστε εδώ", + "Are you want to change": "Θέλετε να αλλάξετε", "by": "από", - "Enter your complaint here": "Εισάγετε το παράπονό σας εδώ", - "Please enter your complaint.": "Παρακαλώ εισάγετε το παράπονό σας.", - "Complaint data saved successfully": - "Τα δεδομένα του παραπόνου αποθηκεύτηκαν με επιτυχία", - "Trip Monitor": "Παρακολούθηση Ταξιδιού", + "Enter your complaint here": "Εισάγετε καταγγελία", + "Please enter your complaint.": "Παρακαλώ εισάγετε καταγγελία.", + "Complaint data saved successfully": "Αποθηκεύτηκε επιτυχώς", + "Trip Monitor": "Παρακολούθηση", "Insert SOS Phone": "Εισαγωγή Τηλεφώνου SOS", - "Add SOS Phone": "Προσθήκη Τηλεφώνου SOS", - // "Trip Monitoring": "Παρακολούθηση Ταξιδιού", - "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": - "Αγαπητέ ,\n\n🚀 Μόλις ξεκίνησα ένα συναρπαστικό ταξίδι και θα ήθελα να μοιραστώ τις λεπτομέρειες του ταξιδιού μου και την τρέχουσα τοποθεσία μου μαζί σας σε πραγματικό χρόνο! Παρακαλώ κατεβάστε την εφαρμογή Intaleq. Θα σας επιτρέψει να δείτε τις λεπτομέρειες του ταξιδιού μου και την τελευταία μου τοποθεσία.\n\n👈 Σύνδεσμος λήψης:\nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nΑνυπομονώ να σας κρατήσω κοντά κατά τη διάρκεια της περιπέτειας μου!\n\nIntaleq ,", - "Send Intaleq app to him": "Στείλτε την εφαρμογή Intaleq σε αυτόν", + "Add SOS Phone": "Προσθήκη SOS", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "Αγαπητέ,\n\n🚀 Ξεκίνησα μια διαδρομή και μοιράζομαι την τοποθεσία μου! Κατέβασε το Intaleq για να με παρακολουθείς.\n\n👉 Σύνδεσμος: \nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nIntaleq ,", + "Send Intaleq app to him": "Αποστολή εφαρμογής", "No passenger found for the given phone number": - "Δεν βρέθηκε επιβάτης για τον συγκεκριμένο αριθμό τηλεφώνου", - "No user found for the given phone number": - "Δεν βρέθηκε χρήστης για τον συγκεκριμένο αριθμό τηλεφώνου", - "This price is": "Αυτή η τιμή είναι", + "Δεν βρέθηκε επιβάτης", + "No user found for the given phone number": "Δεν βρέθηκε χρήστης", + "This price is": "Η τιμή είναι", "Work": "Εργασία", "Add Home": "Προσθήκη Σπιτιού", "Notifications": "Ειδοποιήσεις", - "💳 Pay with Credit Card": "💳 Πληρωμή με Πιστωτική Κάρτα", - "⚠️ You need to choose an amount!": - "⚠️ Πρέπει να επιλέξετε ένα ποσό!", + "💳 Pay with Credit Card": "💳 Πληρωμή με Κάρτα", + "⚠️ You need to choose an amount!": "⚠️ Επιλέξτε ποσό!", "💰 Pay with Wallet": "💰 Πληρωμή με Πορτοφόλι", "You must restart the app to change the language.": - "Πρέπει να επανεκκινήσετε την εφαρμογή για να αλλάξετε τη γλώσσα.", - "joined": "έγινε μέλος", - "Driver joined the channel": "Ο οδηγός έγινε μέλος του καναλιού", - "Driver left the channel": "Ο οδηγός άφησε το κανάλι", + "Επανεκκίνηση για αλλαγή γλώσσας.", + "joined": "μπήκε", + "Driver joined the channel": "Ο οδηγός μπήκε στο κανάλι", + "Driver left the channel": "Ο οδηγός βγήκε από το κανάλι", "Call Page": "Σελίδα Κλήσης", - // "Call End": "Τέλος Κλήσης", - "Call Left": "Απομένουν Κλήσεις", - r"$ Next as Cash $!": "Επόμενο ως Μετρητά!", - "To use Wallet charge it": - "Για να χρησιμοποιήσετε το πορτοφόλι, φορτίστε το", + "Call Left": "Κλήσεις που απομένουν", + " Next as Cash !": " Επόμενο με Μετρητά!", + "To use Wallet charge it": "Φορτίστε το πορτοφόλι", "We are searching for the nearest driver to you": - "Ψάχνουμε τον πλησιέστερο οδηγό σε εσάς", - "Best choice for cities": "Καλύτερη επιλογή για πόλεις", + "Ψάχνουμε τον κοντινότερο οδηγό", + "Best choice for cities": "Καλύτερη επιλογή για πόλη", "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": - "Rayeh Gai: Υπηρεσία μετ' επιστροφής για εύκολο και αξιόπιστο ταξίδι μεταξύ πόλεων.", - "Rayeh Gai": "Rayeh Gai", - "This trip is for women only": - "Αυτό το ταξίδι είναι μόνο για γυναίκες", - "Total budgets on month": "Συνολικοί προϋπολογισμοί ανά μήνα", - "You have call from driver": "Έχετε κλήση από τον οδηγό", - "Comfort": "Άνεση", - "Intaleq": "Ταχύτητα", + "Μετ' επιστροφής: Άνετο ταξίδι μεταξύ πόλεων.", + "This trip is for women only": "Μόνο για γυναίκες", + "Total budgets on month": "Σύνολο μήνα", + "You have call from driver": "Κλήση από οδηγό", + "Intaleq": "Intaleq", + "passenger agreement": "συμφωνία επιβάτη", + "To become a passenger, you must review and agree to the ": + "Πρέπει να συμφωνήσετε με τους ", + "agreement subtitle": "Αποδοχή Όρων Χρήσης και Πολιτικής Απορρήτου.", + "terms of use": "όρους χρήσης", + " and acknowledge our Privacy Policy.": + " και την Πολιτική Απορρήτου.", + "and acknowledge our": "και την", + "privacy policy": "πολιτική απορρήτου.", + "i agree": "συμφωνώ", "Driver already has 2 trips within the specified period.": - "Ο οδηγός έχει ήδη 2 ταξίδια μέσα στην καθορισμένη περίοδο.", - "The invitation was sent successfully": - "Η πρόσκληση στάλθηκε με επιτυχία", - "Lady": "Κυρία", - "You should select your country": "Πρέπει να επιλέξετε τη χώρα σας", + "Ο οδηγός έχει ήδη 2 διαδρομές.", + "The invitation was sent successfully": "Η πρόσκληση στάλθηκε", + "You should select your country": "Επιλέξτε χώρα", "Scooter": "Σκούτερ", "A trip with a prior reservation, allowing you to choose the best captains and cars.": - "Ένα ταξίδι με προκαταβολική κράτηση, που σας επιτρέπει να επιλέξετε τους καλύτερους καπετάνιους και αυτοκίνητα.", - "Mishwar Vip": "Mishwar Vip", + "Διαδρομή με κράτηση, επιλογή οδηγών και οχημάτων.", + "Mishwar Vip": "VIP Διαδρομή", "The driver waiting you in picked location .": - "Ο οδηγός σας περιμένει στην επιλεγμένη τοποθεσία.", - "About Us": "Σχετικά με εμάς", + "Ο οδηγός περιμένει στο σημείο.", + "About Us": "Σχετικά", "You can change the vibration feedback for all buttons": - "Μπορείτε να αλλάξετε την ανατροφοδότηση δόνησης για όλα τα κουμπιά", - "Most Secure Methods": "Οι Πιο Ασφαλείς Μέθοδοι", - "In-App VOIP Calls": "Κλήσεις VOIP μέσα στην εφαρμογή", - "Recorded Trips for Safety": "Καταγεγραμμένα Ταξίδια για Ασφάλεια", + "Αλλαγή δόνησης κουμπιών", + "Most Secure Methods": "Ασφαλείς Μέθοδοι", + "In-App VOIP Calls": "Κλήσεις VOIP", + "Recorded Trips for Safety": "Καταγεγραμμένες Διαδρομές", "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": - "\nΔίνουμε επίσης προτεραιότητα στην προσιτή τιμή, προσφέροντας ανταγωνιστικές τιμές για να κάνουμε τα ταξίδια σας προσιτά.", + "\nΠροσιτές τιμές για όλους.", "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": - "Η Intaleq είναι μια εφαρμογή κοινής χρήσης ταξιδιών που σχεδιάστηκε με γνώμονα την ασφάλεια και την προσιτή τιμή. Σας συνδέουμε με αξιόπιστους οδηγούς στην περιοχή σας, διασφαλίζοντας μια βολική και χωρίς άγχος εμπειρία ταξιδιού.\n\nΕδώ είναι μερικά από τα βασικά χαρακτηριστικά που μας ξεχωρίζουν:", - "Sign In by Apple": "Σύνδεση με Apple", - "Sign In by Google": "Σύνδεση με Google", - "How do I request a ride?": "Πώς μπορώ να ζητήσω ένα ταξίδι;", + "Το Intaleq είναι εφαρμογή μετακίνησης με έμφαση στην ασφάλεια.", + "Sign In by Apple": "Είσοδος με Apple", + "Sign In by Google": "Είσοδος με Google", + "How do I request a ride?": "Πώς ζητάω διαδρομή;", "Step-by-step instructions on how to request a ride through the Intaleq app.": - "Οδηγίες βήμα προς βήμα για το πώς να ζητήσετε ένα ταξίδι μέσω της εφαρμογής Intaleq.", - "What types of vehicles are available?": - "Τι τύποι οχημάτων είναι διαθέσιμοι;", + "Οδηγίες για αίτημα διαδρομής.", + "What types of vehicles are available?": "Τι οχήματα υπάρχουν;", "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": - "Η Intaleq προσφέρει μια ποικιλία επιλογών οχημάτων για να καλύψει τις ανάγκες σας, συμπεριλαμβανομένων οικονομικών, άνετων και πολυτελών. Επιλέξτε την επιλογή που ταιριάζει καλύτερα στον προϋπολογισμό σας και τον αριθμό των επιβατών.", - "How can I pay for my ride?": - "Πώς μπορώ να πληρώσω για το ταξίδι μου;", + "Economy, Comfort, Luxury.", + "How can I pay for my ride?": "Πώς πληρώνω;", "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": - "Η Intaleq προσφέρει πολλαπλούς τρόπους πληρωμής για τη διευκόλυνσή σας. Επιλέξτε μεταξύ πληρωμής μετρητών ή πληρωμής με πιστωτική/χρεωστική κάρτα κατά την επιβεβαίωση του ταξιδιού.", - "Can I cancel my ride?": "Μπορώ να ακυρώσω το ταξίδι μου;", - "Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.": - "Ναι, μπορείτε να ακυρώσετε το ταξίδι σας υπό ορισμένες προϋποθέσεις (π.χ., πριν ο οδηγός ανατεθεί). Δείτε την πολιτική ακύρωσης της Intaleq για λεπτομέρειες.", - "Driver Registration & Requirements": "Εγγραφή και Απαιτήσεις Οδηγού", - "How can I register as a driver?": "Πώς μπορώ να εγγραφώ ως οδηγός;", - "What are the requirements to become a driver?": - "Ποιες είναι οι απαιτήσεις για να γίνω οδηγός;", + "Μετρητά ή Κάρτα.", + "Can I cancel my ride?": "Μπορώ να ακυρώσω;", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "Ναι, ενδέχεται να υπάρξει χρέωση ακύρωσης.", + "Driver Registration & Requirements": "Εγγραφή Οδηγού", + "How can I register as a driver?": "Πώς γίνομαι οδηγός;", + "What are the requirements to become a driver?": "Απαιτήσεις οδηγού;", "Visit our website or contact Intaleq support for information on driver registration and requirements.": - "Επισκεφτείτε την ιστοσελίδα μας ή επικοινωνήστε με την υποστήριξη της Intaleq για πληροφορίες σχετικά με την εγγραφή και τις απαιτήσεις των οδηγών.", - + "Επισκεφτείτε την ιστοσελίδα ή επικοινωνήστε.", "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": - "Η Intaleq παρέχει λειτουργικότητα συνομιλίας μέσα στην εφαρμογή για να σας επιτρέψει να επικοινωνείτε με τον οδηγό ή τον επιβάτη κατά τη διάρκεια του ταξιδιού σας.", - + "Chat εντός εφαρμογής.", "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": - "Η Intaleq δίνει προτεραιότητα στην ασφάλεια σας. Προσφέρουμε χαρακτηριστικά όπως επαλήθευση οδηγού, παρακολούθηση ταξιδιού μέσα στην εφαρμογή και επιλογές επικοινωνίας σε περίπτωση έκτακτης ανάγκης.", + "Επαλήθευση οδηγού, παρακολούθηση, SOS.", "Frequently Questions": "Συχνές Ερωτήσεις", "User does not exist.": "Ο χρήστης δεν υπάρχει.", "We need your phone number to contact you and to help you.": - "Χρειαζόμαστε τον αριθμό τηλεφώνου σας για να επικοινωνήσουμε μαζί σας και να σας βοηθήσουμε.", - "You will recieve code in sms message": - "Θα λάβετε κωδικό σε μήνυμα SMS", - "Please enter": "Παρακαλώ εισάγετε", + "Χρειαζόμαστε το τηλέφωνο για επικοινωνία.", + "You will recieve code in sms message": "Θα λάβετε SMS με κωδικό", + "Please enter": "Εισάγετε", "We need your phone number to contact you and to help you receive orders.": - "Χρειαζόμαστε τον αριθμό τηλεφώνου σας για να επικοινωνήσουμε μαζί σας και να σας βοηθήσουμε να λαμβάνετε παραγγελίες.", - "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": - "Το πλήρες όνομα στο ποινικό σας μητρώο δεν ταιριάζει με αυτό στην άδεια οδήγησής σας. Παρακαλώ επαληθεύστε και παράσχετε τα σωστά έγγραφα.", - "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": - "Ο εθνικός αριθμός στην άδεια οδήγησής σας δεν ταιριάζει με αυτό στο έγγραφο ταυτότητάς σας. Παρακαλώ επαληθεύστε και παράσχετε τα σωστά έγγραφα.", + "Χρειαζόμαστε το τηλέφωνο για λήψη παραγγελιών.", + "The full name on your criminal record does not match the one on your driver's license. Please verify and provide the correct documents.": + "Το όνομα στο Ποινικό Μητρώο δεν ταιριάζει με το δίπλωμα.", + "The national number on your driver's license does not match the one on your ID document. Please verify and provide the correct documents.": + "Ο αριθμός ταυτότητας δεν ταιριάζει.", "Capture an Image of Your Criminal Record": - "Καταγράψτε μια εικόνα του ποινικού σας μητρώου", - "IssueDate": "Ημερομηνία Έκδοσης", - "Capture an Image of Your car license front ": - "Καταγράψτε μια εικόνα της μπροστινής πλευράς της άδειας αυτοκινήτου σας", + "Φωτογραφία Ποινικού Μητρώου", + "IssueDate": "Ημ. Έκδοσης", + "Capture an Image of Your car license front": + "Φωτογραφία Άδειας Κυκλοφορίας (Μπροστά)", "Capture an Image of Your ID Document front": - "Καταγράψτε μια εικόνα της μπροστινής πλευράς του εγγράφου ταυτότητάς σας", - "NationalID": "Εθνική Ταυτότητα", + "Φωτογραφία Ταυτότητας (Μπροστά)", + "NationalID": "Αριθμός Ταυτότητας", "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": - "Μπορείτε να μοιραστείτε την εφαρμογή Intaleq με τους φίλους σας και να κερδίσετε ανταμοιβές για τα ταξίδια που κάνουν χρησιμοποιώντας τον κωδικό σας.", - "FullName": "Πλήρες Όνομα", - "No invitation found yet!": "Δεν βρέθηκε πρόσκληση ακόμα!", - "InspectionResult": "Αποτέλεσμα Επιθεώρησης", + "Μοιραστείτε και κερδίστε.", + "FullName": "Ονοματεπώνυμο", + "No invitation found yet!": "Καμία πρόσκληση!", + "InspectionResult": "Αποτέλεσμα Ελέγχου", "Criminal Record": "Ποινικό Μητρώο", - "Share App": "Κοινοποίηση Εφαρμογής", "The email or phone number is already registered.": - "Το email ή ο αριθμός τηλεφώνου είναι ήδη καταχωρημένος.", + "Το email ή τηλέφωνο χρησιμοποιείται.", "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": - "Για να γίνετε οδηγός κοινής χρήσης ταξιδιών στην εφαρμογή Intaleq, πρέπει να ανεβάσετε την άδεια οδήγησής σας, το έγγραφο ταυτότητάς σας και το έγγραφο εγγραφής του αυτοκινήτου σας. Το σύστημα AI μας θα ελέγξει και θα επαληθεύσει την αυθεντικότητά τους σε μόλις 2-3 λεπτά. Εάν τα έγγραφά σας εγκριθούν, μπορείτε να αρχίσετε να εργάζεστε ως οδηγός στην εφαρμογή Intaleq. Παρακαλώ σημειώστε, η υποβολή πλαστών εγγράφων είναι σοβαρό αδίκημα και μπορεί να οδηγήσει σε άμεση διακοπή και νομικές συνέπειες.", + "Ανεβάστε δίπλωμα, ταυτότητα, άδεια κυκλοφορίας. Έλεγχος σε 2-3 λεπτά.", "Documents check": "Έλεγχος Εγγράφων", - "Driver's License": "Άδεια Οδήγησης", - "for your first registration!": "για την πρώτη σας εγγραφή!", - "Get it Now!": "Πάρτε το Τώρα!", + "Driver's License": "Δίπλωμα Οδήγησης", + "for your first registration!": "για την πρώτη εγγραφή!", + "Get it Now!": "Πάρτε το!", "before": "πριν", - "Code not approved": "Ο κωδικός δεν εγκρίθηκε", - "3000 LE": "3000 ΛΕ", + "Code not approved": "Κωδικός μη αποδεκτός", + "3000 LE": "30 €", "Do you have an invitation code from another driver?": - "Έχετε κωδικό πρόσκλησης από άλλο οδηγό;", - "Paste the code here": "Επικολλήστε τον κωδικό εδώ", - "No, I don't have a code": "Όχι, δεν έχω κωδικό", - "Code approved": "Ο κωδικός εγκρίθηκε", - "Install our app:": "Εγκαταστήστε την εφαρμογή μας:", + "Έχετε κωδικό πρόσκλησης;", + "Paste the code here": "Επικόλληση κωδικού", + "No, I don't have a code": "Όχι", + "Code approved": "Κωδικός εγκρίθηκε", + "Install our app:": "Εγκατάσταση:", "Invite another driver and both get a gift after he completes 100 trips!": - "Προσκαλέστε έναν άλλο οδηγό και και οι δύο θα λάβετε ένα δώρο αφού ολοκληρώσει 100 ταξίδια!", + "Προσκαλέστε οδηγό και κερδίστε δώρο μετά από 100 διαδρομές!", "Invite": "Πρόσκληση", - "Are you sure?": "Είστε βέβαιοι;", + "Are you sure?": "Είστε σίγουροι;", "This will delete all recorded files from your device.": - "Αυτό θα διαγράψει όλα τα καταγεγραμμένα αρχεία από τη συσκευή σας.", - "Select a file": "Επιλέξτε ένα αρχείο", - "Select a File": "Επιλέξτε ένα Αρχείο", + "Διαγραφή όλων των αρχείων.", + "Select a file": "Επιλογή αρχείου", + "Select a File": "Επιλογή Αρχείου", "Delete": "Διαγραφή", - "attach audio of complain": "επισυνάψτε ήχο παράπονου", - "Phone Number Check": "Έλεγχος Αριθμού Τηλεφώνου", - "Drivers received orders": "Οι οδηγοί έλαβαν παραγγελίες", - "No audio files recorded.": - "Δεν υπάρχουν καταγεγραμμένα αρχεία ήχου.", - "This is for delivery or a motorcycle.": - "Αυτό είναι για παράδοση ή μοτοσικλέτα.", - // "We will look for a new driver.\nPlease wait.": "Θα ψάξουμε για νέο οδηγό.\nΠαρακαλώ περιμένετε.", + "attach audio of complain": "επισύναψη ήχου καταγγελίας", + "Phone Number Check": "Έλεγχος Τηλεφώνου", + "Drivers received orders": "Οι οδηγοί έλαβαν αιτήματα", + "No audio files recorded.": "Κανένα ηχητικό αρχείο.", + "This is for delivery or a motorcycle.": "Για διανομή ή μοτοσυκλέτα.", "Intaleq Reminder": "Υπενθύμιση Intaleq", - "It's time to check the Intaleq app!": - "Είναι ώρα να ελέγξετε την εφαρμογή Intaleq!", - "you must insert token code": "Πρέπει να εισάγετε κωδικό token", - "Something went wrong. Please try again.": - "Κάτι πήγε στραβά. Παρακαλώ δοκιμάστε ξανά.", - "Trip Details": "Λεπτομέρειες Ταξιδιού", + "It's time to check the Intaleq app!": "Ώρα να ελέγξετε το Intaleq!", + "you must insert token code": "εισάγετε κωδικό token", + "Something went wrong. Please try again.": "Κάτι πήγε στραβά.", + "Trip Details": "Λεπτομέρειες", "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": - "Το περιεχόμενο δεν παρέχει λεπτομέρειες για το παράπονο, οπότε δεν μπορώ να παρέχω μια λύση σε αυτό το ζήτημα. Παρακαλώ δώστε τις απαραίτητες πληροφορίες και θα χαρώ να σας βοηθήσω.", - "Submit Your Complaint": "Υποβάλετε το Παράπονό Σας", - "Date": "Ημερομηνία", - "Price": "Τιμή", + "Δεν υπάρχουν λεπτομέρειες.", + "Submit Your Complaint": "Υποβολή", "Status": "Κατάσταση", - "Choose from contact": "Επιλέξτε από τις επαφές", - "attach correct audio": "επισυνάψτε σωστό ήχο", - "be sure": "να είστε βέβαιοι", - "Audio uploaded successfully.": "Ο ήχος ανέβηκε με επιτυχία.", + "Choose from contact": "Επιλογή από επαφές", + "attach correct audio": "σωστός ήχος", + "be sure": "βεβαιωθείτε", + "Audio uploaded successfully.": "Επιτυχής μεταφόρτωση.", "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": - "Ιδανικό για επιβάτες που αναζητούν τα τελευταία μοντέλα αυτοκινήτων με την ελευθερία να επιλέγουν οποιαδήποτε διαδρομή επιθυμούν.", + "Ιδανικό για νέα μοντέλα και ελευθερία διαδρομής", "Share this code with your friends and earn rewards when they use it!": - "Μοιραστείτε αυτόν τον κωδικό με τους φίλους σας και κερδίστε ανταμοιβές όταν τον χρησιμοποιούν!", - "Enter phone": "Εισάγετε τηλέφωνο", - "You deserve the gift": "Αξίζετε το δώρο", - "complete, you can claim your gift": - "ολοκληρώστε, μπορείτε να διεκδικήσετε το δώρο σας", + "Μοιραστείτε και κερδίστε!", + "Enter phone": "Εισαγωγή τηλεφώνου", + "complete, you can claim your gift": "ολοκληρώθηκε, λάβετε το δώρο", "When": "Όταν", - "Enter driver's phone": "Εισάγετε το τηλέφωνο του οδηγού", + "Enter driver's phone": "Τηλέφωνο οδηγού", "Send Invite": "Αποστολή Πρόσκλησης", - "Show Invitations": "Εμφάνιση Προσκλήσεων", - "License Type": "Τύπος Άδειας", - "National Number": "Εθνικός Αριθμός", + "Show Invitations": "Προβολή Προσκλήσεων", + "License Type": "Τύπος Διπλώματος", + "National Number": "Αριθμός Ταυτότητας", "Name (Arabic)": "Όνομα (Αραβικά)", "Name (English)": "Όνομα (Αγγλικά)", "Address": "Διεύθυνση", - "Issue Date": "Ημερομηνία Έκδοσης", - "Expiry Date": "Ημερομηνία Λήξης", - "License Categories": "Κατηγορίες Άδειας", - "driver_license": "άδεια οδήγησης", - "Capture an Image of Your Driver License": - "Καταγράψτε μια εικόνα της άδειας οδήγησής σας", - "ID Documents Back": "Πίσω Έγγραφα Ταυτότητας", - "National ID": "Εθνική Ταυτότητα", + "Issue Date": "Ημ. Έκδοσης", + "Expiry Date": "Ημ. Λήξης", + "License Categories": "Κατηγορίες", + "driver_license": "δίπλωμα_οδήγησης", + "Capture an Image of Your Driver License": "Φωτογραφία Διπλώματος", + "ID Documents Back": "Ταυτότητα (Πίσω)", + "National ID": "Ταυτότητα", "Occupation": "Επάγγελμα", - "Gender": "Φύλο", - "Religion": "Θρησκεία", - "Marital Status": "Οικογενειακή Κατάσταση", - "Full Name (Marital)": "Πλήρες Όνομα (Οικογενειακή Κατάσταση)", + "Religion": "Θρήσκευμα", + "Full Name (Marital)": "Ονοματεπώνυμο", "Expiration Date": "Ημερομηνία Λήξης", "Capture an Image of Your ID Document Back": - "Καταγράψτε μια εικόνα της πίσω πλευράς του εγγράφου ταυτότητάς σας", - "ID Documents Front": "Μπροστινά Έγγραφα Ταυτότητας", + "Φωτογραφία Ταυτότητας (Πίσω)", + "ID Documents Front": "Ταυτότητα (Μπροστά)", "First Name": "Όνομα", - "CardID": "Αριθμός Κάρτας", - "Vehicle Details Front": "Μπροστινές Λεπτομέρειες Οχήματος", + "CardID": "Αρ. Κάρτας", + "Vehicle Details Front": "Στοιχεία Οχήματος (Μπροστά)", "Plate Number": "Αριθμός Πινακίδας", - "Owner Name": "Όνομα Ιδιοκτήτη", - "Vehicle Details Back": "Πίσω Λεπτομέρειες Οχήματος", + "Owner Name": "Ιδιοκτήτης", + "Vehicle Details Back": "Στοιχεία Οχήματος (Πίσω)", "Make": "Μάρκα", "Model": "Μοντέλο", "Year": "Έτος", - "Chassis": "Σασί", + "Chassis": "Αριθμός Πλαισίου", "Color": "Χρώμα", "Displacement": "Κυβισμός", "Fuel": "Καύσιμο", - "Tax Expiry Date": "Ημερομηνία Λήξης Φόρου", - "Inspection Date": "Ημερομηνία Επιθεώρησης", + "Tax Expiry Date": "Λήξη Τελών", + "Inspection Date": "Ημ. ΚΤΕΟ", "Capture an Image of Your car license back": - "Καταγράψτε μια εικόνα της πίσω πλευράς της άδειας αυτοκινήτου σας", - "Capture an Image of Your Driver’s License": - "Καταγράψτε μια εικόνα της άδειας οδήγησής σας", + "Φωτογραφία Άδειας (Πίσω)", + "Capture an Image of Your Driver's License": "Φωτογραφία Διπλώματος", "Sign in with Google for easier email and name entry": - "Συνδεθείτε με Google για ευκολότερη εισαγωγή email και ονόματος", + "Είσοδος με Google", "You will choose allow all the time to be ready receive orders": - "Θα επιλέξετε να επιτρέπετε συνεχώς για να είστε έτοιμοι να λαμβάνετε παραγγελίες", - "Welcome to Intaleq!": "Καλώς ήρθατε στην Intaleq!", + "Επιλέξτε 'Πάντα' για λήψη παραγγελιών", "Get to your destination quickly and easily.": - "Φτάστε στον προορισμό σας γρήγορα και εύκολα.", - "Enjoy a safe and comfortable ride.": - "Απολαύστε ένα ασφαλές και άνετο ταξίδι.", - "Choose Language": "Επιλέξτε Γλώσσα", - "Login": "Σύνδεση", + "Φτάστε γρήγορα στον προορισμό.", + "Enjoy a safe and comfortable ride.": "Απολαύστε ασφαλή διαδρομή.", + "Choose Language": "Επιλογή Γλώσσας", "Pay with Wallet": "Πληρωμή με Πορτοφόλι", - "Invalid MPIN": "Μη έγκυρο MPIN", - "Invalid OTP": "Μη έγκυρο OTP", - // "Driver Accepted the Ride for You": "Ο Οδηγός Δέχτηκε το Ταξίδι για Σας", - "Enter your email address": "Εισάγετε τη διεύθυνση email σας", - "Please enter Your Email.": "Παρακαλώ εισάγετε το email σας.", - "Enter your phone number": "Εισάγετε τον αριθμό τηλεφώνου σας", - "Please enter your phone number.": - "Παρακαλώ εισάγετε τον αριθμό τηλεφώνου σας.", - "Please enter Your Password.": - "Παρακαλώ εισάγετε τον κωδικό πρόσβασής σας.", + "Invalid MPIN": "Άκυρο MPIN", + "Invalid OTP": "Άκυρο OTP", + "Enter your email address": "Εισάγετε email", + "Please enter Your Email.": "Παρακαλώ εισάγετε Email.", + "Enter your phone number": "Εισάγετε τηλέφωνο", + "Please enter your phone number.": "Παρακαλώ εισάγετε τηλέφωνο.", + "Please enter Your Password.": "Εισάγετε Κωδικό.", "if you dont have account": "αν δεν έχετε λογαριασμό", "Register": "Εγγραφή", - "Accept Ride's Terms & Review Privacy Notice": - "Αποδοχή Όρων Ταξιδιού & Επιθεώρηση Σημείωσης Απορρήτου", + "Accept Ride's Terms & Review Privacy Notice": "Αποδοχή Όρων", "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": - "Επιλέγοντας 'Συμφωνώ' παρακάτω, έχω εξετάσει και συμφωνώ με τους Όρους Χρήσης και αναγνωρίζω την Σημείωση Απορρήτου. Είμαι τουλάχιστον 18 ετών.", - "I Agree": "Συμφωνώ", - // "Finish Monitor": "Τέλος Παρακολούθησης", + "Επιλέγοντας 'Συμφωνώ', αποδέχομαι τους Όρους. Είμαι άνω των 18.", "First name": "Όνομα", - "Enter your first name": "Εισάγετε το όνομά σας", - "Please enter your first name.": "Παρακαλώ εισάγετε το όνομά σας.", + "Enter your first name": "Εισάγετε όνομα", + "Please enter your first name.": "Παρακαλώ εισάγετε όνομα.", "Last name": "Επώνυμο", - "Enter your last name": "Εισάγετε το επώνυμό σας", - "Please enter your last name.": "Παρακαλώ εισάγετε το επώνυμό σας.", + "Enter your last name": "Εισάγετε επώνυμο", + "Please enter your last name.": "Παρακαλώ εισάγετε επώνυμο.", "City": "Πόλη", - "Please enter your City.": "Παρακαλώ εισάγετε την πόλη σας.", - "Male": "Άνδρας", - "Female": "Γυναίκα", + "Please enter your City.": "Εισάγετε Πόλη.", "Verify Email": "Επαλήθευση Email", - "We sent 5 digit to your Email provided": - "Στείλαμε 5 ψηφία στο email σας", + "We sent 5 digit to your Email provided": "Στείλαμε 5ψήφιο κωδικό", "5 digit": "5 ψηφία", - "Send Verification Code": "Αποστολή Κωδικού Επαλήθευσης", - "Your Ride Duration is ": "Η Διάρκεια του Ταξιδιού σας είναι ", + "Send Verification Code": "Αποστολή Κωδικού", + "Your Ride Duration is ": "Διάρκεια: ", "You will be thier in": "Θα είστε εκεί σε", - "You trip distance is": "Η απόσταση του ταξιδιού σας είναι", - "Fee is": "Η χρέωση είναι", + "You trip distance is": "Απόσταση: ", + "Fee is": "Κόστος: ", "From : ": "Από: ", "To : ": "Προς: ", - "Add Promo": "Προσθήκη Προώθησης", - "Confirm Selection": "Επιβεβαίωση Επιλογής", - "distance is": "η απόσταση είναι", - + "Add Promo": "Προσθήκη Προσφοράς", + "Confirm Selection": "Επιβεβαίωση", + "distance is": "απόσταση είναι", + "Privacy Policy": "Πολιτική Απορρήτου", "Intaleq LLC": "Intaleq LLC", - "Egypt's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": - "Η πρωτοποριακή υπηρεσία κοινής χρήσης ταξιδιών της Αιγύπτου, που αναπτύχθηκε με υπερηφάνεια από Αραβικούς και τοπικούς ιδιοκτήτες. Δίνουμε προτεραιότητα στο να είμαστε κοντά σας – τόσο στους πολύτιμους επιβάτες μας όσο και στους αφοσιωμένους καπετάνιους μας.", - "Why Choose Intaleq?": "Γιατί να επιλέξετε την Intaleq;", - "Closest to You": "Πιο Κοντά σε Σας", + "Syria's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "Πρωτοποριακή υπηρεσία στην Ελλάδα.", + "Intaleq is the first ride-sharing app in Syria, designed to connect you with the nearest drivers for a quick and convenient travel experience.": + "Το Intaleq συνδέει με τους κοντινότερους οδηγούς.", + "Why Choose Intaleq?": "Γιατί Intaleq;", + "Closest to You": "Δίπλα σας", "We connect you with the nearest drivers for faster pickups and quicker journeys.": - "Σας συνδέουμε με τους πλησιέστερους οδηγούς για γρηγορότερες παραλαβές και ταχύτερα ταξίδια.", - "Uncompromising Security": "Ανεπιφύλακτη Ασφάλεια", - "Lady Captains Available": "Διαθέσιμες Κυρίες Καπετάνιοι", - "Recorded Trips (Voice & AI Analysis)": - "Καταγεγραμμένα Ταξίδια (Φωνή & Ανάλυση AI)", - "Fastest Complaint Response": "Ταχύτερη Απόκριση σε Παράπονα", + "Γρηγορότερη εξυπηρέτηση.", + "Uncompromising Security": "Ασφάλεια", + "Lady Captains Available": "Γυναίκες Οδηγοί", + "Recorded Trips (Voice & AI Analysis)": "Καταγεγραμμένες Διαδρομές", + "Fastest Complaint Response": "Άμεση Ανταπόκριση", "Our dedicated customer service team ensures swift resolution of any issues.": - "Η αφοσιωμένη ομάδα εξυπηρέτησης πελατών μας διασφαλίζει γρήγορη επίλυση οποιουδήποτε ζητήματος.", - "Affordable for Everyone": "Προσιτό για Όλους", + "Επίλυση θεμάτων άμεσα.", + "Affordable for Everyone": "Οικονομικό", "Frequently Asked Questions": "Συχνές Ερωτήσεις", "Getting Started": "Ξεκινώντας", - "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": - "Απλά ανοίξτε την εφαρμογή Intaleq, εισάγετε τον προορισμό σας και πατήστε \"Αίτηση Ταξιδιού\". Η εφαρμογή θα σας συνδέσει με έναν κοντινό οδηγό.", - "Vehicle Options": "Επιλογές Οχημάτων", - + "Ανοίξτε την εφαρμογή, εισάγετε προορισμό, πατήστε Αίτημα.", + "Vehicle Options": "Επιλογές Οχήματος", "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": - "Η Intaleq προσφέρει μια ποικιλία επιλογών, συμπεριλαμβανομένων των Economy, Comfort και Luxury, για να καλύψει τις ανάγκες και τον προϋπολογισμό σας.", + "Economy, Comfort, Luxury.", "Payments": "Πληρωμές", - "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": - "Μπορείτε να πληρώσετε για το ταξίδι σας με μετρητά ή πιστωτική/χρεωστική κάρτα. Μπορείτε να επιλέξετε την προτιμώμενη μέθοδο πληρωμής σας πριν επιβεβαιώσετε το ταξίδι σας.", - "Ride Management": "Διαχείριση Ταξιδιού", - + "Μετρητά ή Κάρτα.", + "Ride Management": "Διαχείριση", "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": - "Ναι, μπορείτε να ακυρώσετε το ταξίδι σας, αλλά παρακαλώ σημειώστε ότι μπορεί να ισχύουν χρεώσεις ακύρωσης ανάλογα με το πόσο νωρίς ακυρώνετε.", + "Ναι, μπορείτε να ακυρώσετε (ενδέχεται να υπάρξει χρέωση).", "For Drivers": "Για Οδηγούς", - // "Driver Registration & Requirements": "Εγγραφή και Απαιτήσεις Οδηγού", - "Driver Registration": "Εγγραφή Οδηγού", + "Driver Registration": "Εγγραφή", "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": - "Για να εγγραφείτε ως οδηγός ή για να μάθετε για τις απαιτήσεις, παρακαλώ επισκεφτείτε την ιστοσελίδα μας ή επικοινωνήστε απευθείας με την υποστήριξη της Intaleq.", - "Visit Website/Contact Support": - "Επισκεφτείτε την Ιστοσελίδα/Επικοινωνήστε με την Υποστήριξη", + "Επικοινωνήστε για εγγραφή.", + "Visit Website/Contact Support": "Ιστοσελίδα/Υποστήριξη", "Close": "Κλείσιμο", - "We are searching for the nearest driver": - "Ψάχνουμε τον πλησιέστερο οδηγό", + "We are searching for the nearest driver": "Αναζήτηση οδηγού", "Communication": "Επικοινωνία", "How do I communicate with the other party (passenger/driver)?": - "Πώς μπορώ να επικοινωνήσω με τον άλλο μέρος (επιβάτη/οδηγό);", + "Πώς επικοινωνώ;", "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": - "Μπορείτε να επικοινωνήσετε με τον οδηγό ή τον επιβάτη σας μέσω της λειτουργίας συνομιλίας μέσα στην εφαρμογή μόλις επιβεβαιωθεί το ταξίδι.", - "Safety & Security": "Ασφάλεια και Προστασία", - "What safety measures does Intaleq offer?": - "Ποιες μέτρα ασφαλείας προσφέρει η Intaleq;", + "Μέσω chat.", + "Safety & Security": "Ασφάλεια", + "What safety measures does Intaleq offer?": "Μέτρα ασφαλείας;", "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": - "Η Intaleq προσφέρει διάφορα χαρακτηριστικά ασφαλείας, συμπεριλαμβανομένων της επαλήθευσης οδηγού, παρακολούθησης ταξιδιού μέσα στην εφαρμογή, επιλογών επικοινωνίας σε περίπτωση έκτακτης ανάγκης και τη δυνατότητα να μοιράζεστε την κατάσταση του ταξιδιού σας με αξιόπιστες επαφές.", + "Επαλήθευση, παρακολούθηση, επαφές έκτακτης ανάγκης.", "Enjoy competitive prices across all trip options, making travel accessible.": - "Απολαύστε ανταγωνιστικές τιμές σε όλες τις επιλογές ταξιδιών, καθιστώντας τα ταξίδια προσιτά.", - "Variety of Trip Choices": "Ποικιλία Επιλογών Ταξιδιών", + "Ανταγωνιστικές τιμές.", + "Variety of Trip Choices": "Ποικιλία", "Choose the trip option that perfectly suits your needs and preferences.": - "Επιλέξτε την επιλογή ταξιδιού που ταιριάζει απόλυτα στις ανάγκες και τις προτιμήσεις σας.", - "Your Choice, Our Priority": "Η Επιλογή Σας, Η Προτεραιότητά Μας", + "Επιλέξτε ό,τι σας ταιριάζει.", + "Your Choice, Our Priority": "Προτεραιότητά μας", "Because we are near, you have the flexibility to choose the ride that works best for you.": - "Επειδή είμαστε κοντά, έχετε την ευελιξία να επιλέξετε το ταξίδι που λειτουργεί καλύτερα για εσάς.", - "duration is": "η διάρκεια είναι", - "Setting": "Ρυθμίσεις", - "Find answers to common questions": - "Βρείτε απαντήσεις σε συχνές ερωτήσεις", - "I don't need a ride anymore": "Δεν χρειάζομαι πλέον ταξίδι", - "I was just trying the application": "Απλώς δοκίμαζα την εφαρμογή", - "No driver accepted my request": - "Κανένας οδηγός δεν δέχτηκε το αίτημά μου", - "I added the wrong pick-up/drop-off location": - "Πρόσθεσα λάθος τοποθεσία παραλαβής/απόθεσης", - "I don't have a reason": "Δεν έχω λόγο", - "Other": "Άλλο", - "Can we know why you want to cancel Ride ?": - "Μπορούμε να μάθουμε γιατί θέλετε να ακυρώσετε το Ταξίδι;", - "Cancel Ride": "Ακύρωση Ταξιδιού", - "Add Payment Method": "Προσθήκη Μεθόδου Πληρωμής", - "Your Wallet balance is ": "Το υπόλοιπο του Πορτοφολιού σας είναι ", - "Ride Wallet": "Πορτοφόλι Ταξιδιού", - "Payment Method": "Μέθοδος Πληρωμής", - "Type here Place": "Πληκτρολογήστε εδώ Τοποθεσία", - "Are You sure to ride to": - "Είστε βέβαιοι ότι θέλετε να ταξιδέψετε στο", + "Ευελιξία επιλογής.", + "duration is": "διάρκεια είναι", + "Setting": "Ρύθμιση", + "Find answers to common questions": "Απαντήσεις", + "I don't need a ride anymore": "Δεν χρειάζομαι διαδρομή", + "I was just trying the application": "Δοκίμαζα την εφαρμογή", + "No driver accepted my request": "Κανείς δεν αποδέχτηκε", + "I added the wrong pick-up/drop-off location": "Λάθος τοποθεσία", + "I don't have a reason": "Κανένας λόγος", + "Can we know why you want to cancel Ride ?": "Γιατί ακυρώνετε;", + "Cancel Ride": "Ακύρωση", + "Add Payment Method": "Προσθήκη Τρόπου Πληρωμής", + "Ride Wallet": "Πορτοφόλι", + "Payment Method": "Τρόπος Πληρωμής", + "Type here Place": "Πληκτρολογήστε μέρος", + "Are You sure to ride to": "Σίγουρα προς", "Confirm": "Επιβεβαίωση", - // "Back": "Πίσω", - "You are Delete": "Είστε στη Διαγραφή", + "You are Delete": "Διαγραφή", "Deleted": "Διαγράφηκε", - "You Dont Have Any places yet !": "Δεν έχετε ακόμα καμία τοποθεσία!", - // "Favorite Places": "Αγαπημένες Τοποθεσίες", + "You Dont Have Any places yet !": "Κανένα μέρος ακόμα!", "From : Current Location": "Από: Τρέχουσα Τοποθεσία", - // "Where to": "Πού να πάω", - "Profile": "Προφίλ", - "Home": "Αρχική", "My Cared": "Οι Κάρτες Μου", "Add Card": "Προσθήκη Κάρτας", - "Add Credit Card": "Προσθήκη Πιστωτικής Κάρτας", - "Please enter the cardholder name": - "Παρακαλώ εισάγετε το όνομα του κατόχου της κάρτας", - "Please enter the expiry date": - "Παρακαλώ εισάγετε την ημερομηνία λήξης", - "Please enter the CVV code": "Παρακαλώ εισάγετε τον κωδικό CVV", - "Go To Favorite Places": "Πηγαίνετε στις Αγαπημένες Τοποθεσίες", - "Go to this Target": "Πηγαίνετε σε αυτόν τον Στόχο", - "My Profile": "Το Προφίλ Μου", - "Sign Out": "Αποσύνδεση", - "Are you want to go to this site": - "Θέλετε να πάτε σε αυτήν την τοποθεσία", + "Add Credit Card": "Προσθήκη Πιστωτικής", + "Please enter the cardholder name": "Όνομα κατόχου", + "Please enter the expiry date": "Ημερομηνία λήξης", + "Please enter the CVV code": "Κωδικός CVV", + "Go To Favorite Places": "Μετάβαση στα Αγαπημένα", + "Go to this Target": "Μετάβαση στον Προορισμό", + "My Profile": "Το Προφίλ μου", + "Are you want to go to this site": "Θέλετε να πάτε εδώ;", "MyLocation": "Η Τοποθεσία Μου", - "my location": "η τοποθεσία μου", + "my location": "τοποθεσία μου", "Target": "Στόχος", - "Update": "Ενημέρωση", - "You Should choose rate figure": - "Πρέπει να επιλέξετε έναν αριθμό βαθμολογίας", - "Login Captin": "Σύνδεση Καπετάνιου", - "Register Captin": "Εγγραφή Καπετάνιου", - "Send Verfication Code": "Αποστολή Κωδικού Επαλήθευσης", + "You Should choose rate figure": "Επιλέξτε βαθμολογία", + "Login Captin": "Είσοδος Οδηγού", + "Register Captin": "Εγγραφή Οδηγού", + "Send Verfication Code": "Αποστολή Κωδικού", "KM": "Χλμ", - "End Ride": "Τέλος Ταξιδιού", + "End Ride": "Τέλος Διαδρομής", "Minute": "Λεπτό", - "Go to passenger Location now": - "Πηγαίνετε τώρα στην τοποθεσία του επιβάτη", - "Duration of the Ride is ": "Η Διάρκεια του Ταξιδιού είναι ", - "Distance of the Ride is ": "Η Απόσταση του Ταξιδιού είναι", - "Name of the Passenger is ": "Το Όνομα του Επιβάτη είναι", - "Hello this is Captain": "Γεια σας, είμαι ο Καπετάνιος", - "Start the Ride": "Ξεκινήστε το Ταξίδι", + "Go to passenger Location now": "Πηγαίνετε στον Επιβάτη", + "Duration of the Ride is ": "Διάρκεια: ", + "Distance of the Ride is ": "Απόσταση: ", + "Name of the Passenger is ": "Όνομα Επιβάτη: ", + "Hello this is Captain": "Γεια σας, ο Οδηγός", + "Start the Ride": "Έναρξη", "Please Wait If passenger want To Cancel!": - "Παρακαλώ Περιμένετε Αν ο Επιβάτης Θέλει να Ακυρώσει!", + "Περιμένετε μήπως ακυρώσει ο επιβάτης!", "Total Duration:": "Συνολική Διάρκεια:", "Active Duration:": "Ενεργή Διάρκεια:", - "Waiting for Captin ...": "Αναμονή για Καπετάνιο ...", - "Age is ": "Η Ηλικία είναι ", - "Rating is ": "Η Βαθμολογία είναι ", - " to arrive you.": "για να φτάσετε σε εσάς.", - - "Tariff": "Τιμολόγιο", + "Waiting for Captin ...": "Αναμονή Οδηγού...", + "Age is ": "Ηλικία: ", + "Rating is ": "Βαθμολογία: ", + " to arrive you.": " για να φτάσει.", + "Tariff": "Τιμοκατάλογος", "Settings": "Ρυθμίσεις", - "Feed Back": "Ανατροφοδότηση", - + "Feed Back": "Σχόλια", "Please enter a valid 16-digit card number": - "Παρακαλώ εισάγετε έναν έγκυρο 16ψήφιο αριθμό κάρτας", + "Εισάγετε έγκυρο αριθμό κάρτας", "Add Phone": "Προσθήκη Τηλεφώνου", - "Please enter a phone number": - "Παρακαλώ εισάγετε έναν αριθμό τηλεφώνου", + "Please enter a phone number": "Εισάγετε τηλέφωνο", "You dont Add Emergency Phone Yet!": - "Δεν έχετε προσθέσει ακόμα τηλέφωνο έκτακτης ανάγκης!", - "You will arrive to your destination after ": - "Θα φτάσετε στον προορισμό σας μετά ", - "You can cancel Ride now": "Μπορείτε να ακυρώσετε το Ταξίδι τώρα", + "Δεν προσθέσατε τηλέφωνο έκτακτης ανάγκης!", + "You will arrive to your destination after ": "Άφιξη σε ", + "You can cancel Ride now": "Μπορείτε να ακυρώσετε", "You Can cancel Ride After Captain did not come in the time": - "Μπορείτε να ακυρώσετε το Ταξίδι μετά από τον Καπετάνιο που δεν ήρθε στην ώρα του", + "Ακύρωση αν ο οδηγός αργήσει", "If you in Car Now. Press Start The Ride": - "Αν είστε στο Αυτοκίνητο Τώρα. Πατήστε Ξεκινήστε το Ταξίδι", - "You Dont Have Any amount in": "Δεν έχετε κανένα ποσό στο", + "Αν είστε στο όχημα, πατήστε Έναρξη", + "You Dont Have Any amount in": "Δεν έχετε υπόλοιπο στο", "Wallet!": "Πορτοφόλι!", "You Have": "Έχετε", - "Save Credit Card": "Αποθήκευση Πιστωτικής Κάρτας", - "Show Promos": "Εμφάνιση Προωθήσεων", - "10 and get 4% discount": "10 και λάβετε 4% έκπτωση", - "20 and get 6% discount": "20 και λάβετε 6% έκπτωση", - "40 and get 8% discount": "40 και λάβετε 8% έκπτωση", - "100 and get 11% discount": "100 και λάβετε 11% έκπτωση", - "Pay with Your PayPal": "Πληρωμή με το PayPal σας", - "You will choose one of above !": "Θα επιλέξετε ένα από τα παραπάνω!", - "Delete My Account": "Διαγραφή του Λογαριασμού Μου", - "Edit Profile": "Επεξεργασία Προφίλ", - "Name": "Όνομα", - "Update Gender": "Ενημέρωση Φύλου", - "Education": "Εκπαίδευση", - "Update Education": "Ενημέρωση Εκπαίδευσης", - "Employment Type": "Τύπος Απασχόλησης", - "SOS Phone": "Τηλέφωνο SOS", - "High School Diploma": "Απολυτήριο Λυκείου", - "Associate Degree": "Πτυχίο Συνεργάτη", - "Bachelor's Degree": "Πτυχίο Πανεπιστημίου", - "Master's Degree": "Μεταπτυχιακό Δίπλωμα", - "Doctoral Degree": "Διδακτορικό Δίπλωμα", - "Copy this Promo to use it in your Ride!": - "Αντιγράψτε αυτήν την Προώθηση για να τη χρησιμοποιήσετε στο Ταξίδι σας!", - "To change some Settings": "Για να αλλάξετε μερικές Ρυθμίσεις", - "Order Request Page": "Σελίδα Αίτησης Παραγγελίας", - "Rouats of Trip": "Διαδρομές Ταξιδιού", - "Passenger Name is ": "Το Όνομα του Επιβάτη είναι ", - "Total From Passenger is ": "Το Σύνολο από τον Επιβάτη είναι ", - "Duration To Passenger is ": "Η Διάρκεια στον Επιβάτη είναι ", - "Distance To Passenger is ": "Η Απόσταση στον Επιβάτη είναι ", - "Total For You is ": "Το Σύνολο για Εσάς είναι ", - "Distance is ": "Η Απόσταση είναι ", + "Save Credit Card": "Αποθήκευση Κάρτας", + "Show Promos": "Εμφάνιση Προσφορών", + "10 and get 4% discount": "10 και κερδίστε 4% έκπτωση", + "20 and get 6% discount": "20 και κερδίστε 6% έκπτωση", + "40 and get 8% discount": "40 και κερδίστε 8% έκπτωση", + "100 and get 11% discount": "100 και κερδίστε 11% έκπτωση", + "Pay with Your PayPal": "Πληρωμή με PayPal", + "You will choose one of above !": "Επιλέξτε ένα!", + "Edit Profile": "Επεξεργασία", + "Copy this Promo to use it in your Ride!": "Αντιγράψτε τον κωδικό!", + "To change some Settings": "Αλλαγή Ρυθμίσεων", + "Order Request Page": "Σελίδα Αιτήματος", + "Rouats of Trip": "Διαδρομές", + "Passenger Name is ": "Όνομα Επιβάτη: ", + "Total From Passenger is ": "Σύνολο από Επιβάτη: ", + "Duration To Passenger is ": "Διάρκεια προς Επιβάτη: ", + "Distance To Passenger is ": "Απόσταση προς Επιβάτη: ", + "Total For You is ": "Σύνολο για Εσάς: ", + "Distance is ": "Απόσταση: ", " KM": " Χλμ", - "Duration of Trip is ": "Η Διάρκεια του Ταξιδιού είναι ", + "Duration of Trip is ": "Διάρκεια: ", " Minutes": " Λεπτά", - "Apply Order": "Εφαρμογή Παραγγελίας", - "Refuse Order": "Απόρριψη Παραγγελίας", - "Rate Captain": "Βαθμολόγηση Καπετάνιου", - "Enter your Note": "Εισάγετε τη Σημείωσή σας", - "Type something...": "Πληκτρολογήστε κάτι...", - "Submit rating": "Υποβολή Βαθμολογίας", - "Rate Passenger": "Βαθμολόγηση Επιβάτη", - "Ride Summary": "Σύνοψη Ταξιδιού", - "welcome_message": "Καλώς ήρθατε στην Intaleq!", - "app_description": - "Η Intaleq είναι μια αξιόπιστη, ασφαλής και προσιτή εφαρμογή κοινής χρήσης ταξιδιών.", - "get_to_destination": "Φτάστε στον προορισμό σας γρήγορα και εύκολα.", - "get_a_ride": - "Με την Intaleq, μπορείτε να πάρετε ένα ταξίδι στον προορισμό σας σε λίγα λεπτά.", - "safe_and_comfortable": "Απολαύστε ένα ασφαλές και άνετο ταξίδι.", - "committed_to_safety": - "Η Intaleq δεσμεύεται για την ασφάλεια, και όλοι οι καπετάνιοι μας ελέγχονται προσεκτικά και ελέγχονται το ιστορικό τους.", - // "Driver Applied the Ride for You": "Ο Οδηγός Έκανε Αίτηση για το Ταξίδι Σας", - // "Show latest promo": "Εμφάνιση Τελευταίας Προώθησης", - // "Cancel Trip": "Ακύρωση Ταξιδιού", - // "Passenger Cancel Trip": "Ο Επιβάτης Ακύρωσε το Ταξίδι", - // "Accepted Ride": "Αποδεκτό Ταξίδι", - "your ride is Accepted": "Το ταξίδι σας έγινε αποδεκτό", - - // "Trip is Begin": "Το Ταξίδι Ξεκίνησε", - "Driver is waiting at pickup.": - "Ο οδηγός περιμένει στο σημείο παραλαβής.", - "Driver is on the way": "Ο οδηγός είναι στο δρόμο", - "Contact Options": "Επιλογές Επικοινωνίας", - "Send a custom message": "Αποστολή Προσαρμοσμένου Μηνύματος", - "Type your message": "Πληκτρολογήστε το μήνυμά σας", - // "Hi ,I will go now": "Γεια, Θα φύγω τώρα", - // "Passenger come to you": "Ο Επιβάτης Έρχεται σε Σας", - // "Hi ,I Arrive your site": "Γεια, Έφτασα στη τοποθεσία σας", - // "Driver Finish Trip": "Ο Οδηγός Τελείωσε το Ταξίδι", - // "you will pay to Driver": "θα πληρώσετε στον Οδηγό", - // "Driver Cancel Your Trip": "Ο Οδηγός Ακύρωσε το Ταξίδι Σας", - // "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": "θα πληρώσετε στον Οδηγό, θα πληρώσετε το κόστος του χρόνου του οδηγού, κοιτάξτε στο Intaleq Wallet σας", - // "I will go now": "Θα φύγω τώρα", - "You Have Tips": "Έχετε Συμβουλές", - " tips\nTotal is": " συμβουλές\nΤο Σύνολο είναι", - // "No,I want": "Όχι, θέλω", - "Your fee is ": "Η χρέωσή σας είναι ", - // "Do you want to pay Tips for this Driver": "Θέλετε να πληρώσετε Συμβουλές για αυτόν τον Οδηγό;", - "Tip is ": "Η Συμβουλή είναι ", - + "Apply Order": "Αποδοχή", + "Refuse Order": "Απόρριψη", + "Rate Captain": "Βαθμολογία Οδηγού", + "Enter your Note": "Σχόλιο", + "Type something...": "Γράψτε κάτι...", + "Submit rating": "Υποβολή", + "Rate Passenger": "Βαθμολογία Επιβάτη", + "Ride Summary": "Σύνοψη", + "welcome_message": "Καλώς ήρθατε στο Intaleq!", + "app_description": "Ασφαλής μετακίνηση.", + "get_to_destination": "Φτάστε στον προορισμό.", + "get_a_ride": "Βρείτε διαδρομή.", + "safe_and_comfortable": "Ασφάλεια και άνεση.", + "committed_to_safety": "Δέσμευση στην ασφάλεια.", + "your ride is Accepted": "Η διαδρομή έγινε δεκτή", + "Driver is waiting at pickup.": "Ο οδηγός περιμένει.", + "Driver is on the way": "Ο οδηγός έρχεται", + "Contact Options": "Επικοινωνία", + "Send a custom message": "Προσαρμοσμένο μήνυμα", + "Type your message": "Γράψτε μήνυμα", + "I will go now": "Πηγαίνω τώρα", + "You Have Tips": "Έχετε φιλοδώρημα", + " tips\nTotal is": " φιλοδώρημα\nΣύνολο", + "Your fee is ": "Η χρέωση είναι ", + "Do you want to pay Tips for this Driver": + "Θέλετε να δώσετε φιλοδώρημα;", + "Tip is ": "Φιλοδώρημα: ", "Are you want to wait drivers to accept your order": - "Θέλετε να περιμένετε τους οδηγούς να δεχτούν την παραγγελία σας;", - + "Θέλετε να περιμένετε;", "This price is fixed even if the route changes for the driver.": - "Αυτή η τιμή είναι σταθερή ακόμα και αν αλλάξει η διαδρομή για τον οδηγό.", + "Σταθερή τιμή.", "The price may increase if the route changes.": - "Η τιμή μπορεί να αυξηθεί αν αλλάξει η διαδρομή.", + "Η τιμή μπορεί να αυξηθεί.", "The captain is responsible for the route.": - "Ο καπετάνιος είναι υπεύθυνος για τη διαδρομή.", - "We are search for nearst driver": "Ψάχνουμε τον πλησιέστερο οδηγό", - "Your order is being prepared": "Η παραγγελία σας προετοιμάζεται", - "The drivers are reviewing your request": - "Οι οδηγοί εξετάζουν το αίτημά σας", - "Your order sent to drivers": - "Η παραγγελία σας στάλθηκε στους οδηγούς", + "Ο οδηγός είναι υπεύθυνος για τη διαδρομή.", + "We are search for nearst driver": "Αναζήτηση οδηγού", + "Your order is being prepared": "Προετοιμασία", + "The drivers are reviewing your request": "Εξέταση αιτήματος", + "Your order sent to drivers": "Απεστάλη στους οδηγούς", "You can call or record audio of this trip": - "Μπορείτε να καλέσετε ή να ηχογραφήσετε αυτό το ταξίδι", + "Μπορείτε να καλέσετε ή να ηχογραφήσετε", "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": - "Το ταξίδι έχει ξεκινήσει! Μη διστάσετε να επικοινωνήσετε με αριθμούς έκτακτης ανάγκης, να μοιραστείτε το ταξίδι σας ή να ενεργοποιήσετε την ηχογράφηση φωνής για το ταξίδι", - // "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": "Παρακαλώ βεβαιωθείτε ότι έχετε όλα τα προσωπικά σας αντικείμενα και ότι οποιαδήποτε υπόλοιπη χρέωση, εάν ισχύει, έχει προστεθεί στο πορτοφόλι σας πριν φύγετε. Ευχαριστούμε που επιλέξατε την εφαρμογή Intaleq", - // "Don’t forget your personal belongings.": "Μην ξεχάσετε τα προσωπικά σας αντικείμενα.", - "Camera Access Denied.": "Απορρίφθηκε η Πρόσβαση στην Κάμερα.", - "Open Settings": "Άνοιγμα Ρυθμίσεων", - "GPS Required Allow !.": "Απαιτείται Ενεργοποίηση GPS!", - "Your Account is Deleted": "Ο Λογαριασμός σας Διαγράφηκε", - "Are you sure to delete your account?": - "Είστε βέβαιοι ότι θέλετε να διαγράψετε τον λογαριασμό σας;", + "Η διαδρομή ξεκίνησε! Μοιραστείτε την ή ηχογραφήστε.", + "Camera Access Denied.": "Άρνηση Πρόσβασης Κάμερας.", + "Open Settings": "Ρυθμίσεις", + "GPS Required Allow !.": "Απαιτείται GPS!", + "Your Account is Deleted": "Ο Λογαριασμός Διαγράφηκε", + "Are you sure to delete your account?": "Σίγουρα διαγραφή;", "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": - "Τα δεδομένα σας θα διαγραφούν μετά από 2 εβδομάδες\nΚαι δεν θα μπορείτε να επιστρέψετε για να χρησιμοποιήσετε την εφαρμογή μετά από 1 μήνα", - "Enter Your First Name": "Εισάγετε το Όνομά σας", - "Are you Sure to LogOut?": - "Είστε βέβαιοι ότι θέλετε να αποσυνδεθείτε;", + "Τα δεδομένα θα διαγραφούν σε 2 εβδομάδες.", + "Enter Your First Name": "Εισάγετε Όνομα", + "Are you Sure to LogOut?": "Σίγουρα Αποσύνδεση;", "Email Wrong": "Λάθος Email", - "Email you inserted is Wrong.": "Το email που εισάγατε είναι λάθος.", - "You have finished all times ": "Έχετε τελειώσει όλες τις φορές", + "Email you inserted is Wrong.": "Το email είναι λάθος.", + "You have finished all times ": "Τέλος προσπαθειών", "if you want help you can email us here": - "αν θέλετε βοήθεια μπορείτε να μας στείλετε email εδώ", - "Thanks": "Ευχαριστούμε", - "Email Us": "Στείλτε μας Email", + "Στείλτε μας email για βοήθεια", + "Thanks": "Ευχαριστώ", + "Email Us": "Στείλτε Email", "I cant register in your app in face detection ": - "Δεν μπορώ να εγγραφώ στην εφαρμογή σας στην ανίχνευση προσώπου", + "Πρόβλημα με ανίχνευση προσώπου", "Hi": "Γεια", - "No face detected": "Δεν εντοπίστηκε πρόσωπο", - "Image detecting result is ": - "Το αποτέλεσμα ανίχνευσης εικόνας είναι ", - "from 3 times Take Attention": "από 3 φορές Προσοχή", + "No face detected": "Δεν ανιχνεύτηκε πρόσωπο", + "Image detecting result is ": "Αποτέλεσμα: ", + "from 3 times Take Attention": "από 3 φορές, Προσοχή", "Be sure for take accurate images please\nYou have": - "Βεβαιωθείτε ότι παίρνετε ακριβείς εικόνες παρακαλώ\nΈχετε", - "image verified": "η εικόνα επαληθεύτηκε", + "Βγάλτε καθαρές φωτογραφίες\nΈχετε", + "image verified": "επαληθεύτηκε", "Next": "Επόμενο", - "There is no help Question here": "Δεν υπάρχει ερώτηση βοήθειας εδώ", - - "You dont have Points": "Δεν έχετε Πόντοους", - "You Are Stopped For this Day !": - "Έχετε σταματήσει για αυτήν την Ημέρα!", - "You must be charge your Account": - "Πρέπει να φορτίσετε τον Λογαριασμό σας", + "There is no help Question here": "Δεν υπάρχει ερώτηση βοήθειας", + "You dont have Points": "Δεν έχετε Πόντους", + "You Are Stopped For this Day !": "Αποκλεισμός για σήμερα!", + "You must be charge your Account": "Φορτίστε τον λογαριασμό", "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": - "Αρνηθήκατε 3 Ταξίδια αυτήν την Ημέρα και αυτός είναι ο λόγος\nΤα λέμε Αύριο!", - "Recharge my Account": "Φόρτιση του Λογαριασμού μου", - "Ok , See you Tomorrow": "Εντάξει, Τα λέμε Αύριο", - "You are Stopped": "Έχετε σταματήσει", - "Connected": "Συνδεδεμένο", - "Not Connected": "Μη Συνδεδεμένο", + "Απορρίψατε 3 διαδρομές.\nΤα λέμε αύριο!", + "Recharge my Account": "Φόρτιση", + "Ok , See you Tomorrow": "ΟΚ, τα λέμε αύριο", + "You are Stopped": "Αποκλεισμός", + "Connected": "Συνδέθηκε", + "Not Connected": "Δεν συνδέθηκε", "Your are far from passenger location": - "Είστε μακριά από την τοποθεσία του επιβάτη", + "Είστε μακριά από τον επιβάτη", "go to your passenger location before\nPassenger cancel trip": - "πηγαίνετε στην τοποθεσία του επιβάτη πριν\nο Επιβάτης ακυρώσει το ταξίδι", + "Πηγαίνετε στον επιβάτη πριν ακυρώσει", "You will get cost of your work for this trip": - "Θα λάβετε το κόστος της εργασίας σας για αυτό το ταξίδι", - " in your wallet": "στο πορτοφόλι σας", - "you gain": "κερδίζετε", - - "Order Cancelled by Passenger": - "Η Παραγγελία Ακυρώθηκε από τον Επιβάτη", - "Success": "Επιτυχία", - "Feedback data saved successfully": - "Τα δεδομένα ανατροφοδότησης αποθηκεύτηκαν με επιτυχία", - "No Promo for today .": "Δεν υπάρχει Προώθηση για σήμερα.", - "Select your destination": "Επιλέξτε τον προορισμό σας", - "Search for your Start point": "Αναζήτηση για το σημείο εκκίνησης", - "Search for waypoint": "Αναζήτηση για ενδιάμεσο σημείο", + "Θα πληρωθείτε για τη διαδρομή", + " in your wallet": " στο πορτοφόλι", + "you gain": "κερδίσατε", + "Order Cancelled by Passenger": "Ακύρωση από Επιβάτη", + "Feedback data saved successfully": "Αποθηκεύτηκε", + "No Promo for today .": "Καμία Προσφορά σήμερα.", + "Select your destination": "Επιλογή προορισμού", + "Search for your Start point": "Σημείο εκκίνησης", + "Search for waypoint": "Στάση", "Current Location": "Τρέχουσα Τοποθεσία", "Add Location 1": "Προσθήκη Τοποθεσίας 1", - "You must Verify email !.": "Πρέπει να Επαληθεύσετε το email!", - "Cropper": "Κόπτης", - "Saved Sucssefully": "Αποθηκεύτηκε με Επιτυχία", - "Select Date": "Επιλέξτε Ημερομηνία", - "Birth Date": "Ημερομηνία Γέννησης", - "Ok": "Εντάξει", - "the 500 points equal 30 JOD": "οι 500 πόντοι ισούνται με 30 JOD", + "You must Verify email !.": "Επαληθεύστε το email!", + "Cropper": "Περικοπή", + "Saved Sucssefully": "Αποθηκεύτηκε Επιτυχώς", + "Select Date": "Επιλογή Ημερομηνίας", + "Birth Date": "Ημ. Γέννησης", + "Ok": "ΟΚ", + "the 500 points equal 30 JOD": "500 πόντοι ισούνται με 30 €", "the 500 points equal 30 JOD for you \nSo go and gain your money": - "οι 500 πόντοι ισούνται με 30 JOD για εσάς\nΟπότε πηγαίνετε και κερδίστε τα χρήματά σας", - "token updated": "το token ενημερώθηκε", + "500 πόντοι = 30 €\nΚερδίστε χρήματα", + "token updated": "token ενημερώθηκε", "Add Location 2": "Προσθήκη Τοποθεσίας 2", "Add Location 3": "Προσθήκη Τοποθεσίας 3", "Add Location 4": "Προσθήκη Τοποθεσίας 4", - "Waiting for your location": "Αναμονή για την τοποθεσία σας", - "Search for your destination": "Αναζήτηση για τον προορισμό σας", - "Hi! This is": "Γεια! Αυτός είναι", - " I am using": " Χρησιμοποιώ", - " to ride with": " για να ταξιδέψω με", - " as the driver.": " ως οδηγός.", - "is driving a ": "οδηγάει ένα ", + "Waiting for your location": "Αναμονή τοποθεσίας", + "Search for your destination": "Αναζήτηση προορισμού", + "Hi! This is": "Γεια! Είμαι", + " I am using": " χρησιμοποιώ", + " to ride with": " για διαδρομή με", + " as the driver.": " ως οδηγό.", + "is driving a ": "οδηγεί ", " with license plate ": " με πινακίδα ", - " I am currently located at ": " Είμαι τώρα στην τοποθεσία ", - "Please go to Car now ": "Παρακαλώ πηγαίνετε στο Αυτοκίνητο τώρα ", + " I am currently located at ": " Βρίσκομαι στο ", + "Please go to Car now ": "Πηγαίνετε στο όχημα τώρα ", "You will receive a code in WhatsApp Messenger": - "Θα λάβετε έναν κωδικό στο WhatsApp Messenger", - "If you need assistance, contact us": - "Αν χρειάζεστε βοήθεια, επικοινωνήστε μαζί μας", - "Promo Ended": "Η Προώθηση Τελείωσε", - "Enter the promo code and get": - "Εισάγετε τον κωδικό προώθησης και λάβετε", - "DISCOUNT": "ΈΚΠΤΩΣΗ", - "No wallet record found": "Δεν βρέθηκε εγγραφή πορτοφολιού", + "Θα λάβετε κωδικό στο WhatsApp", + "If you need assistance, contact us": "Επικοινωνήστε για βοήθεια", + "Promo Ended": "Η Προσφορά Έληξε", + "Enter the promo code and get": "Εισάγετε κωδικό και κερδίστε", + "DISCOUNT": "ΕΚΠΤΩΣΗ", + "No wallet record found": "Δεν βρέθηκε πορτοφόλι", "for": "για", "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": - "Η Intaleq είναι η πιο ασφαλής εφαρμογή κοινής χρήσης ταξιδιών που παρουσιάζει πολλές λειτουργίες τόσο για τους καπετάνιους όσο και για τους επιβάτες. Προσφέρουμε το χαμηλότερο ποσοστό προμήθειας μόνο 8%, διασφαλίζοντας ότι λαμβάνετε την καλύτερη αξία για τα ταξίδια σας. Η εφαρμογή μας περιλαμβάνει ασφάλεια για τους καλύτερους καπετάνιους, τακτική συντήρηση αυτοκινήτων με κορυφαίους μηχανικούς και υπηρεσίες στο δρόμο για να διασφαλίσουμε μια σεβαστική και υψηλής ποιότητας εμπειρία για όλους τους χρήστες.", + "Το Intaleq είναι η ασφαλέστερη εφαρμογή. Χαμηλή προμήθεια 8%. Ασφάλεια και συντήρηση.", "You can contact us during working hours from 12:00 - 19:00.": - "Μπορείτε να επικοινωνήσετε μαζί μας κατά τις ώρες εργασίας από τις 12:00 - 19:00.", - - "Choose a contact option": "Επιλέξτε μια επιλογή επικοινωνίας", + "Επικοινωνήστε 12:00 - 19:00.", + "Choose a contact option": "Επιλογή επικοινωνίας", "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": - "Οι ώρες εργασίας είναι από τις 12:00 - 19:00.\nΜπορείτε να στείλετε ένα μήνυμα WhatsApp ή email.", - "Promo code copied to clipboard!": - "Ο κωδικός προώθησης αντιγράφηκε στο πρόχειρο!", - "Copy Code": "Αντιγραφή Κωδικού", - "Your invite code was successfully applied!": - "Ο κωδικός πρόσκλησής σας εφαρμόστηκε με επιτυχία!", + "Ώρες 12:00 - 19:00.\nΣτείλτε WhatsApp ή email.", + "Promo code copied to clipboard!": "Αντιγράφηκε!", + "Copy Code": "Αντιγραφή", + "Your invite code was successfully applied!": "Εφαρμόστηκε επιτυχώς!", "Payment Options": "Επιλογές Πληρωμής", - "wait 1 minute to receive message": - "περιμένετε 1 λεπτό για να λάβετε το μήνυμα", - "Promo Copied!": "Η Προώθηση Αντιγράφηκε!", - "You have copied the promo code.": - "Έχετε αντιγράψει τον κωδικό προώθησης.", - "Valid Until:": "Έγκυρο Μέχρι:", - "Select Payment Amount": "Επιλέξτε Ποσό Πληρωμής", - "The promotion period has ended.": - "Η περίοδος προώθησης έχει τελειώσει.", - "Promo Code Accepted": "Ο Κωδικός Προώθησης Έγινε Αποδεκτός", - "Tap on the promo code to copy it!": - "Πατήστε τον κωδικό προώθησης για να τον αντιγράψετε!", - "Lowest Price Achieved": "Επιτεύχθηκε η Χαμηλότερη Τιμή", - "Cannot apply further discounts.": - "Δεν μπορούν να εφαρμοστούν περαιτέρω εκπτώσεις.", - "Promo Already Used": "Η Προώθηση Έχει Ήδη Χρησιμοποιηθεί", - "Invitation Used": "Η Πρόσκληση Έχει Χρησιμοποιηθεί", + "wait 1 minute to receive message": "περιμένετε 1 λεπτό", + "You have copied the promo code.": "Αντιγράψατε τον κωδικό.", + "Select Payment Amount": "Επιλογή Ποσού", + "The promotion period has ended.": "Η προσφορά έληξε.", + "Promo Code Accepted": "Κωδικός Δεκτός", + "Tap on the promo code to copy it!": "Πατήστε για αντιγραφή!", + "Lowest Price Achieved": "Χαμηλότερη Τιμή", + "Cannot apply further discounts.": "Δεν υπάρχουν άλλες εκπτώσεις.", + "Promo Already Used": "Χρησιμοποιήθηκε ήδη", + "Invitation Used": "Πρόσκληση Χρησιμοποιήθηκε", "You have already used this promo code.": - "Έχετε ήδη χρησιμοποιήσει αυτόν τον κωδικό προώθησης.", - "Insert Your Promo Code": "Εισάγετε τον Κωδικό Προώθησής Σας", - "Enter promo code here": "Εισάγετε τον κωδικό προώθησης εδώ", - "Please enter a valid promo code": - "Παρακαλώ εισάγετε έναν έγκυρο κωδικό προώθησης", - "Awfar Car": "Awfar Car", + "Χρησιμοποιήσατε τον κωδικό.", + "Insert Your Promo Code": "Εισαγωγή Κωδικού", + "Enter promo code here": "Εισάγετε κωδικό εδώ", + "Please enter a valid promo code": "Εισάγετε έγκυρο κωδικό", + "Awfar Car": "Οικονομικό Όχημα", "Old and affordable, perfect for budget rides.": - "Παλιό και προσιτό, ιδανικό για οικονομικά ταξίδια.", + "Οικονομικό και προσιτό.", " If you need to reach me, please contact the driver directly at": - " Αν χρειάζεστε να επικοινωνήσετε μαζί μου, παρακαλώ επικοινωνήστε απευθείας με τον οδηγό στο", - "No Car or Driver Found in your area.": - "Δεν βρέθηκε Αυτοκίνητο ή Οδηγός στην περιοχή σας.", - "Please Try anther time ": "Παρακαλώ Δοκιμάστε άλλη φορά ", + " Επικοινωνήστε με τον οδηγό στο", + "No Car or Driver Found in your area.": "Δεν βρέθηκε όχημα ή οδηγός.", + "Please Try anther time ": "Προσπαθήστε ξανά ", "There no Driver Aplly your order sorry for that ": - "Δεν υπάρχει Οδηγός που να Εφαρμόσει την Παραγγελία σας, συγγνώμη γι' αυτό ", - "Trip Cancelled": "Το Ταξίδι Ακυρώθηκε", + "Κανείς δεν δέχτηκε, συγγνώμη ", + "Trip Cancelled": "Διαδρομή Ακυρώθηκε", "The Driver Will be in your location soon .": - "Ο Οδηγός θα είναι στην τοποθεσία σας σύντομα.", - "The distance less than 500 meter.": - "Η απόσταση είναι λιγότερο από 500 μέτρα.", - "Promo End !": "Τέλος Προώθησης!", - "There is no notification yet": "Δεν υπάρχει ειδοποίηση ακόμα", + "Ο Οδηγός φτάνει σύντομα.", + "The distance less than 500 meter.": "Απόσταση κάτω από 500μ.", + "Promo End !": "Τέλος Προσφοράς!", + "There is no notification yet": "Καμία ειδοποίηση", "Use Touch ID or Face ID to confirm payment": - "Χρησιμοποιήστε Touch ID ή Face ID για να επιβεβαιώσετε την πληρωμή", + "Χρήση Touch ID ή Face ID", "Contact us for any questions on your order.": - "Επικοινωνήστε μαζί μας για οποιεσδήποτε ερωτήσεις σχετικά με την παραγγελία σας.", - "Pyament Cancelled .": "Η Πληρωμή Ακυρώθηκε.", - "type here": "πληκτρολογήστε εδώ", - "Scan Driver License": "Σάρωση Άδειας Οδήγησης", + "Επικοινωνήστε για ερωτήσεις.", + "Pyament Cancelled .": "Πληρωμή Ακυρώθηκε.", + "type here": "γράψτε εδώ", + "Scan Driver License": "Σάρωση Διπλώματος", "Please put your licence in these border": - "Παρακαλώ τοποθετήστε την άδειά σας σε αυτά τα όρια", - "Camera not initialized yet": "Η κάμερα δεν έχει αρχικοποιηθεί ακόμα", - "Take Image": "Λήψη Εικόνας", + "Τοποθετήστε το δίπλωμα στο πλαίσιο", + "Camera not initialized yet": "Η κάμερα δεν άνοιξε", + "Take Image": "Λήψη Φωτογραφίας", "AI Page": "Σελίδα AI", - "Take Picture Of ID Card": "Λήψη Εικόνας Ταυτότητας", - "Take Picture Of Driver License Card": - "Λήψη Εικόνας Κάρτας Άδειας Οδήγησης", + "Take Picture Of ID Card": "Φωτογραφία Ταυτότητας", + "Take Picture Of Driver License Card": "Φωτογραφία Διπλώματος", "We are process picture please wait ": - "Επεξεργαζόμαστε την εικόνα, παρακαλώ περιμένετε ", - "There is no data yet.": "Δεν υπάρχουν δεδομένα ακόμα.", - "Name :": "Όνομα:", - "Drivers License Class: ": "Κατηγορία Άδειας Οδήγησης:", - "Document Number: ": "Αριθμός Εγγράφου:", - "Address: ": "Διεύθυνση:", - "Height: ": "Ύψος:", - "Expiry Date: ": "Ημερομηνία Λήξης:", - "Date of Birth: ": "Ημερομηνία Γέννησης:", - "You can\'t continue with us .\nYou should renew Driver license": - "Δεν μπορείτε να συνεχίσετε μαζί μας.\nΠρέπει να ανανεώσετε την άδεια οδήγησης", - "Detect Your Face ": "Ανίχνευση του Προσώπου Σας", - "Go to next step\nscan Car License.": - "Πηγαίνετε στο επόμενο βήμα\nσάρωση Άδειας Αυτοκινήτου.", - "Name in arabic": "Όνομα στα Αραβικά", - "Drivers License Class": "Κατηγορία Άδειας Οδήγησης", - "Date of Birth": "Ημερομηνία Γέννησης", - // "Select date and time of trip": "Επιλέξτε ημερομηνία και ώρα ταξιδιού", + "Επεξεργασία εικόνας, περιμένετε ", + "There is no data yet.": "Δεν υπάρχουν δεδομένα.", + "Name :": "Όνομα :", + "Drivers License Class: ": "Κατηγορία Διπλώματος: ", + "Document Number: ": "Αριθμός Εγγράφου: ", + "Address: ": "Διεύθυνση: ", + "Height: ": "Ύψος: ", + "Expiry Date: ": "Λήξη: ", + "Date of Birth: ": "Ημ. Γέννησης: ", + "You can't continue with us .\nYou should renew Driver license": + "Πρέπει να ανανεώσετε το δίπλωμα", + "Detect Your Face ": "Ανίχνευση Προσώπου ", + "Go to next step\nscan Car License.": "Επόμενο βήμα\nσάρωση Άδειας.", + "Name in arabic": "Όνομα (Τοπικό)", + "Drivers License Class": "Κατηγορία", "Selected Date": "Επιλεγμένη Ημερομηνία", - "Select Time": "Επιλέξτε Ώρα", + "Select Time": "Επιλογή Ώρας", "Selected Time": "Επιλεγμένη Ώρα", - // "OK": "Εντάξει", - // "Cancel": "Ακύρωση", - "Selected Date and Time": "Επιλεγμένη Ημερομηνία και Ώρα", - "Lets check Car license ": "Ας ελέγξουμε την Άδεια Αυτοκινήτου", - "Car": "Αυτοκίνητο", + "Selected Date and Time": "Επιλογή", + "Lets check Car license ": "Έλεγχος Άδειας ", + "Car": "Όχημα", "Plate": "Πινακίδα", - "N/A": "Δ/Υ", - "Rides": "Ταξίδια", - "Age": "Ηλικία", - // "Education": "Εκπαίδευση", - // "Color": "Χρώμα", - // "Displacement": "Κυβισμός", - // "Fuel": "Καύσιμο", - "Selected driver": "Επιλεγμένος Οδηγός", - "Lets check License Back Face": - "Ας ελέγξουμε την Πίσω Πλευρά της Άδειας", - "Car License Card": "Κάρτα Άδειας Αυτοκινήτου", - "No image selected yet": "Δεν έχει επιλεγεί εικόνα ακόμα", - "Made :": "Κατασκευαστής:", - "model :": "μοντέλο:", - "VIN :": "VIN:", - "year :": "έτος:", - "ُExpire Date": "Ημερομηνία Λήξης", - "Login Driver": "Σύνδεση Οδηγού", - "Password must br at least 6 character.": - "Ο κωδικός πρόσβασης πρέπει να είναι τουλάχιστον 6 χαρακτήρες.", - "if you don\'t have account": "αν δεν έχετε λογαριασμό", - "Here recorded trips audio": "Εδώ είναι οι ηχογραφήσεις των ταξιδιών", + "Rides": "Διαδρομές", + "Selected driver": "Επιλεγμένος οδηγός", + "Lets check License Back Face": "Έλεγχος Πίσω Όψης", + "Car License Card": "Άδεια Κυκλοφορίας", + "No image selected yet": "Δεν επιλέχθηκε εικόνα", + "Made :": "Κατασκευαστής :", + "model :": "Μοντέλο :", + "VIN :": "Πλαίσιο :", + "year :": "Έτος :", + "ُExpire Date": "Ημ. Λήξης", + "Login Driver": "Είσοδος Οδηγού", + "Password must br at least 6 character.": "Τουλάχιστον 6 χαρακτήρες.", + "if you don't have account": "αν δεν έχετε λογαριασμό", + "Here recorded trips audio": "Ηχογραφήσεις διαδρομών", "Register as Driver": "Εγγραφή ως Οδηγός", - // "Privacy Notice": "Σημείωση Απορρήτου", "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": - "Επιλέγοντας \"Συμφωνώ\" παρακάτω, έχω εξετάσει και συμφωνώ με τους Όρους Χρήσης και αναγνωρίζω την ", - ". I am at least 18 years of age.": ". Είμαι τουλάχιστον 18 ετών.", - "Log Out Page": "Σελίδα Αποσύνδεσης", + "Επιλέγοντας \"Συμφωνώ\", αποδέχομαι τους Όρους Χρήσης και ", + "Log Out Page": "Αποσύνδεση", "Log Off": "Αποσύνδεση", "Register Driver": "Εγγραφή Οδηγού", - "Verify Email For Driver": "Επαλήθευση Email για Οδηγό", - "Admin DashBoard": "Πίνακας Ελέγχου Διαχειριστή", + "Verify Email For Driver": "Επαλήθευση Email Οδηγού", + "Admin DashBoard": "Πίνακας Ελέγχου", "Your name": "Το όνομά σας", - "your ride is applied": "το ταξίδι σας εφαρμόστηκε", - "Your password": "Ο κωδικός πρόσβασής σας", - "H and": "Ώρα και", - "LE": "ΛΕ", - "JOD": "JOD", + "your ride is applied": "η διαδρομή καταχωρήθηκε", + "H and": "H και", + "JOD": "€", "m": "λ", - "We search nearst Driver to you": - "Ψάχνουμε τον πλησιέστερο Οδηγό σε εσάς", - "please wait till driver accept your order": - "παρακαλώ περιμένετε μέχρι ο οδηγός να δεχτεί την παραγγελία σας", + "We search nearst Driver to you": "Αναζήτηση κοντινού οδηγού", + "please wait till driver accept your order": "περιμένετε την αποδοχή", "No accepted orders? Try raising your trip fee to attract riders.": - "Καμία αποδεκτή παραγγελία; Δοκιμάστε να αυξήσετε την χρέωση του ταξιδιού σας για να προσελκύσετε επιβάτες.", - "You should select one": "Πρέπει να επιλέξετε ένα", - "The driver accept your order for": - "Ο οδηγός δέχτηκε την παραγγελία σας για", - "Increase Fee": "Αύξηση Χρέωσης", - "No, thanks": "Όχι, ευχαριστώ", - "The driver on your way": "Ο οδηγός είναι στο δρόμο σας", + "Αυξήστε την προσφορά σας.", + "You should select one": "Επιλέξτε ένα", + "The driver accept your order for": "Ο οδηγός δέχτηκε για", + "The driver on your way": "Ο οδηγός έρχεται", "Total price from ": "Συνολική τιμή από ", - "Order Details Intaleq": "Λεπτομέρειες Παραγγελίας Ταχύτητα", - // "Order Applied": "Η Παραγγελία Εφαρμόστηκε", - "accepted your order": "δέχτηκε την παραγγελία σας", - // "We regret to inform you that another driver has accepted this order.": "Λυπούμαστε που σας ενημερώνουμε ότι άλλος οδηγός έχει δεχτεί αυτήν την παραγγελία", + "Order Details Intaleq": "Λεπτομέρειες", "Selected file:": "Επιλεγμένο αρχείο:", - "Your trip cost is": "Το κόστος του ταξιδιού σας είναι", + "Your trip cost is": "Κόστος διαδρομής", "this will delete all files from your device": - "αυτό θα διαγράψει όλα τα αρχεία από τη συσκευή σας", - " in your": "στο", + "διαγραφή όλων των αρχείων", "Exclusive offers and discounts always with the Intaleq app": - "Αποκλειστικές προσφορές και εκπτώσεις πάντα με την εφαρμογή Intaleq", - // "Please go to Car Driver": "Παρακαλώ πηγαίνετε στον Οδηγό του Αυτοκινήτου", - " wallet due to a previous trip.": - "πορτοφόλι λόγω προηγούμενου ταξιδιού.", + "Αποκλειστικές προσφορές", "Submit Question": "Υποβολή Ερώτησης", - "Please enter your Question.": "Παρακαλώ εισάγετε την ερώτησή σας.", + "Please enter your Question.": "Εισάγετε Ερώτηση.", "Help Details": "Λεπτομέρειες Βοήθειας", - "No trip yet found": "Δεν βρέθηκε ακόμα ταξίδι", - "No Response yet.": "Καμία απάντηση ακόμα.", - " You Earn today is ": " Κερδίζετε σήμερα ", + "No trip yet found": "Δεν βρέθηκε διαδρομή", + "No Response yet.": "Καμία απάντηση.", + " You Earn today is ": " Κέρδος σήμερα: ", " You Have in": " Έχετε στο", - "Total points is ": "Οι συνολικοί πόντοι είναι ", - "Total Connection Duration:": "Συνολική Διάρκεια Σύνδεσης:", - " H and": " Ώρα και", + "Total points is ": "Σύνολο πόντων: ", + "Total Connection Duration:": "Διάρκεια Σύνδεσης:", "Passenger name : ": "Όνομα Επιβάτη: ", - "Cost Of Trip IS ": "Το Κόστος του Ταξιδιού ΕΙΝΑΙ ", - "Arrival time": "Ώρα Άφιξης", - "arrival time to reach your point": - "ώρα άφιξης για να φτάσετε στο σημείο σας", + "Cost Of Trip IS ": "Κόστος Διαδρομής: ", + "Arrival time": "Ώρα άφιξης", + "arrival time to reach your point": "ώρα άφιξης στο σημείο", "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "Για ταξίδια ταχύτητας και σκούτερ, η τιμή υπολογίζεται δυναμικά. Για ταξίδια άνεσης, η τιμή βασίζεται στον χρόνο και την απόσταση.", - "Hello this is Driver": "Γεια σας, είμαι ο Οδηγός", - "Is the Passenger in your Car ?": - "Είναι ο Επιβάτης στο Αυτοκίνητό σας;", + "Τιμή βάσει χρόνου και απόστασης.", + "Hello this is Driver": "Γεια σας, ο Οδηγός", + "Is the Passenger in your Car ?": "Είναι ο Επιβάτης στο Όχημα;", "Please wait for the passenger to enter the car before starting the trip.": - "Παρακαλώ περιμένετε τον επιβάτη να μπει στο αυτοκίνητο πριν ξεκινήσετε το ταξίδι.", - "No ,still Waiting.": "Όχι, ακόμα περιμένω.", - "I arrive you": "Φτάνω σε εσάς", - "I Arrive your site": "Φτάνω στην τοποθεσία σας", + "Περιμένετε να μπει ο επιβάτης.", + "No ,still Waiting.": "Όχι, αναμονή.", + "I arrive you": "Έφτασα", + "I Arrive your site": "Έφτασα στο σημείο", "You are not in near to passenger location": - "Δεν είστε κοντά στην τοποθεσία του επιβάτη", + "Δεν είστε κοντά στον επιβάτη", "please go to picker location exactly": - "παρακαλώ πηγαίνετε ακριβώς στην τοποθεσία του επιβάτη", + "πηγαίνετε ακριβώς στο σημείο παραλαβής", "You Can Cancel Trip And get Cost of Trip From": - "Μπορείτε να Ακυρώσετε το Ταξίδι και να Λάβετε το Κόστος του Ταξιδιού από", - "Are you sure to cancel?": "Είστε βέβαιοι ότι θέλετε να ακυρώσετε;", - // "Yes": "Ναι", - "Insert Emergincy Number": "Εισαγωγή Αριθμού Έκτακτης Ανάγκης", + "Ακύρωση και λήψη κόστους από", + "Are you sure to cancel?": "Σίγουρα ακύρωση;", + "Insert Emergincy Number": "Εισαγωγή SOS Αριθμού", "Best choice for comfort car and flexible route and stops point": - "Καλύτερη επιλογή για άνετο αυτοκίνητο και ευέλικτη διαδρομή και σημεία στάσης", + "Άνετο αμάξι, ευέλικτη διαδρομή", "Insert": "Εισαγωγή", - "This is for scooter or a motorcycle.": - "Αυτό είναι για σκούτερ ή μοτοσικλέτα.", + "This is for scooter or a motorcycle.": "Για σκούτερ ή μοτοσυκλέτα.", "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": - "Αυτό το ταξίδι πηγαίνει απευθείας από το σημείο εκκίνησης σας στον προορισμό σας για μια σταθερή τιμή. Ο οδηγός πρέπει να ακολουθήσει την προγραμματισμένη διαδρομή.", - "You can decline a request without any cost": - "Μπορείτε να απορρίψετε ένα αίτημα χωρίς κανένα κόστος", + "Απευθείας διαδρομή, σταθερή τιμή.", + "You can decline a request without any cost": "Απόρριψη χωρίς χρέωση", "Perfect for adventure seekers who want to experience something new and exciting": - "Ιδανικό για τους αναζητητές περιπέτειας που θέλουν να βιώσουν κάτι νέο και συναρπαστικό", - "My current location is:": "Η τρέχουσα τοποθεσία μου είναι:", - "and I have a trip on": "και έχω ένα ταξίδι στις", + "Για όσους ψάχνουν περιπέτεια", + "My current location is:": "Η τοποθεσία μου:", + "and I have a trip on": "και έχω διαδρομή στο", "App with Passenger": "Εφαρμογή με Επιβάτη", "You will be pay the cost to driver or we will get it from you on next trip": - "Θα πληρώσετε το κόστος στον οδηγό ή θα το πάρουμε από εσάς στο επόμενο ταξίδι", - "Trip has Steps": "Το Ταξίδι έχει Βήματα", + "Πληρωμή στον οδηγό ή στην επόμενη διαδρομή", + "Trip has Steps": "Διαδρομή με Στάσεις", "Distance from Passenger to destination is ": - "Η απόσταση από τον Επιβάτη στον προορισμό είναι ", - "price is": "η τιμή είναι", + "Απόσταση Επιβάτη από προορισμό: ", + "price is": "τιμή είναι", "This ride type does not allow changes to the destination or additional stops": - "Αυτός ο τύπος ταξιδιού δεν επιτρέπει αλλαγές στον προορισμό ή πρόσθετες στάσεις.", - "This price may be changed": "Αυτή η τιμή μπορεί να αλλάξει", + "Χωρίς αλλαγές/στάσεις", + "This price may be changed": "Η τιμή μπορεί να αλλάξει", "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": - "Χωρίς κάρτα SIM, κανένα πρόβλημα! Καλέστε τον οδηγό σας απευθείας μέσω της εφαρμογής μας. Χρησιμοποιούμε προηγμένη τεχνολογία για να διασφαλίσουμε την ιδιωτικότητά σας.", + "Χωρίς SIM; Καλέστε μέσω εφαρμογής.", "This ride type allows changes, but the price may increase": - "Αυτός ο τύπος ταξιδιού επιτρέπει αλλαγές, αλλά η τιμή μπορεί να αυξηθεί", - "Select one message": "Επιλέξτε ένα μήνυμα", - + "Αλλαγές επιτρέπονται, η τιμή ίσως αυξηθεί", + "Select one message": "Επιλογή μηνύματος", "I'm waiting for you": "Σας περιμένω", "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": - "Παρατηρήσαμε ότι η ταχύτητα υπερβαίνει τα 100 km/h. Παρακαλώ μειώστε την ταχύτητα για την ασφάλειά σας. Αν νιώθετε ανασφάλεια, μπορείτε να μοιραστείτε τις λεπτομέρειες του ταξιδιού σας με μια επαφή ή να καλέσετε την αστυνομία χρησιμοποιώντας το κόκκινο κουμπί SOS.", + "Υπερβολική ταχύτητα (>100 χλμ/ώ). Παρακαλώ επιβραδύνετε.", "Warning: Intaleqing detected!": - "Προειδοποίηση: Ανίχνευση υπερβολικής ταχύτητας!", + "Προειδοποίηση: Υπερβολική ταχύτητα!", "Please help! Contact me as soon as possible.": - "Παρακαλώ βοηθήστε! Επικοινωνήστε μαζί μου το συντομότερο δυνατό.", - "Share Trip Details": "Κοινοποίηση Λεπτομερειών Ταξιδιού", - "Car Plate is ": "Η Πινακίδα του Αυτοκινήτου είναι ", - "VIP Order": "Παραγγελία VIP", + "Βοήθεια! Επικοινωνήστε άμεσα.", + "Share Trip Details": "Κοινοποίηση Λεπτομερειών", + "Car Plate is ": "Πινακίδα: ", "the 300 points equal 300 L.E for you \nSo go and gain your money": - "οι 300 πόντοι ισούνται με 300 Λ.Ε. για εσάς\nΟπότε πηγαίνετε και κερδίστε τα χρήματά σας", - "the 300 points equal 300 L.E": "οι 300 πόντοι ισούνται με 300 Λ.Ε.", + "300 πόντοι = 300 €\nΚερδίστε χρήματα", + "the 300 points equal 300 L.E": "300 πόντοι = 300 €", "The payment was not approved. Please try again.": - "Η πληρωμή δεν εγκρίθηκε. Παρακαλώ δοκιμάστε ξανά.", - "Payment Failed": "Η Πληρωμή Απέτυχε", - "Error": "Σφάλμα", - "This is a scheduled notification.": - "Αυτή είναι μια προγραμματισμένη ειδοποίηση.", - "An error occurred during the payment process.": - "Παρουσιάστηκε σφάλμα κατά τη διαδικασία πληρωμής.", - "The payment was approved.": "Η πληρωμή εγκρίθηκε.", + "Η πληρωμή δεν εγκρίθηκε. Προσπαθήστε ξανά.", + "Payment Failed": "Αποτυχία Πληρωμής", + "This is a scheduled notification.": "Προγραμματισμένη ειδοποίηση.", + "An error occurred during the payment process.": "Σφάλμα πληρωμής.", + "The payment was approved.": "Εγκρίθηκε.", "Payment Successful": "Επιτυχής Πληρωμή", - "No ride found yet": "Δεν βρέθηκε ακόμα ταξίδι", - "Accept Order": "Αποδοχή Παραγγελίας", - // "reject your order.": "απόρριψη της παραγγελίας σας.", - "Bottom Bar Example": "Παράδειγμα Κάτω Μπάρρας", + "No ride found yet": "Δεν βρέθηκε διαδρομή", + "Accept Order": "Αποδοχή", + "Bottom Bar Example": "Παράδειγμα", "Driver phone": "Τηλέφωνο Οδηγού", "Statistics": "Στατιστικά", - "Origin": "Αρχή", + "Origin": "Αφετηρία", "Destination": "Προορισμός", "Driver Name": "Όνομα Οδηγού", - "Driver Car Plate": "Πινακίδα Αυτοκινήτου Οδηγού", - "Available for rides": "Διαθέσιμο για ταξίδια", + "Driver Car Plate": "Πινακίδα Οδηγού", + "Available for rides": "Διαθέσιμος", "Scan Id": "Σάρωση Ταυτότητας", - "Camera not initilaized yet": "Η κάμερα δεν έχει αρχικοποιηθεί ακόμα", - "Scan ID MklGoogle": "Σάρωση Ταυτότητας MklGoogle", + "Camera not initilaized yet": "Κάμερα μη έτοιμη", + "Scan ID MklGoogle": "Σάρωση Ταυτότητας", "Language": "Γλώσσα", "Jordan": "Ιορδανία", "USA": "ΗΠΑ", @@ -10575,984 +13078,1705 @@ class MyTranslation extends Translations { "Qatar": "Κατάρ", "Bahrain": "Μπαχρέιν", "Kuwait": "Κουβέιτ", - "But you have a negative salary of": "Αλλά έχετε αρνητικό μισθό", - "Promo Code": "Κωδικός Προώθησης", - "Your trip distance is": "Η απόσταση του ταξιδιού σας είναι", - "Enter promo code": "Εισάγετε κωδικό προώθησης", - "You have promo!": "Έχετε προώθηση!", + "But you have a negative salary of": "Αρνητικό υπόλοιπο:", + "Promo Code": "Κωδικός Προσφοράς", + "Your trip distance is": "Απόσταση διαδρομής:", + "Enter promo code": "Εισάγετε κωδικό", + "You have promo!": "Έχετε προσφορά!", "Cost Duration": "Κόστος Διάρκειας", - "Duration is": "Η Διάρκεια είναι", + "Duration is": "Διάρκεια:", "Leave": "Αποχώρηση", "Join": "Συμμετοχή", "Heading your way now. Please be ready.": - "Έρχομαι προς εσάς τώρα. Παρακαλώ να είστε έτοιμοι.", + "Έρχομαι. Να είστε έτοιμοι.", "Approaching your area. Should be there in 3 minutes.": - "Πλησιάζω στην περιοχή σας. Θα πρέπει να είμαι εκεί σε 3 λεπτά.", + "Πλησιάζω. Εκεί σε 3 λεπτά.", "There's heavy traffic here. Can you suggest an alternate pickup point?": - "Υπάρχει πολλή κίνηση εδώ. Μπορείτε να προτείνετε ένα εναλλακτικό σημείο παραλαβής;", + "Κίνηση. Άλλο σημείο παραλαβής;", "This ride is already taken by another driver.": - "Αυτό το ταξίδι έχει ήδη αναληφθεί από άλλο οδηγό.", - "You Should be select reason.": "Πρέπει να επιλέξετε λόγο.", - " \$": " \$", - "Waiting for Driver ...": "Αναμονή για Οδηγό ...", - "Latest Recent Trip": "Τελευταίο Πρόσφατο Ταξίδι", - "from your list": "από τη λίστα σας", - "Do you want to change Work location": - "Θέλετε να αλλάξετε την τοποθεσία εργασίας;", - "Do you want to change Home location": - "Θέλετε να αλλάξετε την τοποθεσία σπιτιού;", + "Η διαδρομή αναλήφθηκε.", + "You Should be select reason.": "Επιλέξτε λόγο.", + "Waiting for Driver ...": "Αναμονή Οδηγού...", + "Latest Recent Trip": "Τελευταία Διαδρομή", + "from your list": "από τη λίστα", + "Do you want to change Work location": "Αλλαγή τοποθεσίας Εργασίας;", + "Do you want to change Home location": "Αλλαγή τοποθεσίας Σπιτιού;", "We Are Sorry That we dont have cars in your Location!": - "Λυπούμαστε που δεν έχουμε αυτοκίνητα στην τοποθεσία σας!", - "Choose from Map": "Επιλέξτε από τον Χάρτη", + "Λυπούμαστε, κανένα όχημα στην περιοχή!", + "Choose from Map": "Επιλογή από Χάρτη", "Pick your ride location on the map - Tap to confirm": - "Επιλέξτε την τοποθεσία του ταξιδιού σας στον χάρτη - Πατήστε για επιβεβαίωση", - // "To Work": "Στην Εργασία", - // "Are you want to go this site": "Θέλετε να πάτε σε αυτήν την τοποθεσία;", - "Closest & Cheapest": "Πιο Κοντά & Πιο Φθηνά", - // "Work Saved": "Η Τοποθεσία Εργασίας Αποθηκεύτηκε", + "Επιλέξτε σημείο στον χάρτη - Πατήστε για επιβεβαίωση", "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": - "Η Intaleq είναι η εφαρμογή κλήσης ταξιδιών που είναι ασφαλής, αξιόπιστη και προσιτή.", + "Το Intaleq είναι ασφαλές και αξιόπιστο.", "With Intaleq, you can get a ride to your destination in minutes.": - "Με την Intaleq, μπορείτε να πάρετε ένα ταξίδι στον προορισμό σας σε λίγα λεπτά.", + "Βρείτε διαδρομή σε λεπτά.", "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": - "Η Intaleq δεσμεύεται για την ασφάλεια, και όλοι οι καπετάνιοι μας ελέγχονται προσεκτικά και ελέγχονται το ιστορικό τους.", - // "To Home": "Στο Σπίτι", - // "Home Saved": "Η Τοποθεσία Σπιτιού Αποθηκεύτηκε", - // "Destination selected": "Επιλέχθηκε Προορισμός:", - // "Now select start pick": "Τώρα επιλέξτε το σημείο εκκίνησης:", - "Pick from map": "Επιλέξτε από τον χάρτη", - // "Click here point": "Κάντε κλικ εδώ", - "No Car in your site. Sorry!": - "Δεν υπάρχει αυτοκίνητο στην τοποθεσία σας. Συγγνώμη!", - "Nearest Car for you about ": - "Το πλησιέστερο αυτοκίνητο για εσάς περίπου ", - // "N/A": "Δ/Υ", + "Δέσμευση στην ασφάλεια, ελεγμένοι οδηγοί.", + "Pick from map": "Επιλογή από χάρτη", + "No Car in your site. Sorry!": "Κανένα όχημα. Συγγνώμη!", + "Nearest Car for you about ": "Κοντινότερο όχημα σε περίπου ", "From :": "Από:", - "Get Details of Trip": "Λάβετε Λεπτομέρειες Ταξιδιού", - "If you want add stop click here": - "Αν θέλετε να προσθέσετε στάση, κάντε κλικ εδώ", - // "Driver": "Οδηγός", + "Get Details of Trip": "Λεπτομέρειες", + "If you want add stop click here": "Για προσθήκη στάσης πατήστε εδώ", "Where you want go ": "Πού θέλετε να πάτε ", "My Card": "Η Κάρτα Μου", "Start Record": "Έναρξη Εγγραφής", - "Wallet": "Πορτοφόλι", - "History of Trip": "Ιστορικό Ταξιδιού", + "History of Trip": "Ιστορικό", "Helping Center": "Κέντρο Βοήθειας", - "Record saved": "Η εγγραφή αποθηκεύτηκε", - "Trips recorded": "Ταξίδια που έχουν εγγραφεί", - "Select Your Country": "Επιλέξτε τη Χώρα σας", + "Record saved": "Αποθηκεύτηκε", + "Trips recorded": "Καταγεγραμμένες", + "Select Your Country": "Επιλογή Χώρας", "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": - "Για να διασφαλίσετε ότι λαμβάνετε τις πιο ακριβείς πληροφορίες για την τοποθεσία σας, παρακαλώ επιλέξτε τη χώρα σας παρακάτω. Αυτό θα βοηθήσει να προσαρμόσουμε την εμπειρία και το περιεχόμενο της εφαρμογής στη χώρα σας.", - "Are you sure to delete recorded files": - "Είστε βέβαιοι ότι θέλετε να διαγράψετε τα εγγεγραμμένα αρχεία;", - "Select recorded trip": "Επιλέξτε το εγγεγραμμένο ταξίδι", + "Επιλέξτε χώρα για ακριβείς πληροφορίες.", + "Are you sure to delete recorded files": "Διαγραφή αρχείων;", + "Select recorded trip": "Επιλογή διαδρομής", "Card Number": "Αριθμός Κάρτας", - "Hi, Where to ": "Γεια, Πού να πάω ", - "Pick your destination from Map": - "Επιλέξτε τον προορισμό σας από τον Χάρτη", - "Add Stops": "Προσθήκη Σταθμών", - "Get Direction": "Λάβετε Κατεύθυνση", + "Hi, Where to ": "Γεια, Πού πάτε ", + "Pick your destination from Map": "Προορισμός από Χάρτη", + "Add Stops": "Προσθήκη Στάσεων", + "Get Direction": "Οδηγίες", "Add Location": "Προσθήκη Τοποθεσίας", "Switch Rider": "Αλλαγή Επιβάτη", "You will arrive to your destination after timer end.": - "Θα φτάσετε στον προορισμό σας μετά το τέλος του χρονομέτρου.", - "You can cancel trip": "Μπορείτε να ακυρώσετε το ταξίδι", - "The driver waitting you in picked location .": - "Ο οδηγός σας περιμένει στην επιλεγμένη τοποθεσία.", - "10\$ and get 3% discount": "10\$ και λάβετε 3% έκπτωση", - "20\$ and get 4% discount": "20\$ και λάβετε 4% έκπτωση", - "40\$ and get 6% discount": "40\$ και λάβετε 6% έκπτωση", - "100\$ and get 9% discount": "100\$ και λάβετε 9% έκπτωση", - "Pay with Your": "Πληρωμή με το", - "Pay with Credit Card": "Πληρωμή με Πιστωτική Κάρτα", - "Payment History": "Ιστορικό Πληρωμών", - "Show Promos to Charge": "Εμφάνιση Προωθήσεων για Φόρτιση", + "Άφιξη μετά το πέρας του χρόνου.", + "You can cancel trip": "Μπορείτε να ακυρώσετε", + "The driver waitting you in picked location .": "Ο οδηγός περιμένει.", + "Pay with Your": "Πληρωμή με", + "Pay with Credit Card": "Πληρωμή με Κάρτα", + "Show Promos to Charge": "Προσφορές Φόρτισης", "Point": "Πόντος", - "How many hours would you like to wait?": - "Πόσες ώρες θα θέλατε να περιμένετε;", + "How many hours would you like to wait?": "Πόσες ώρες αναμονής;", "Driver Wallet": "Πορτοφόλι Οδηγού", - "Choose between those Type Cars": - "Επιλέξτε μεταξύ αυτών των Τύπων Αυτοκινήτων", + "Choose between those Type Cars": "Επιλογή Τύπου Οχήματος", "hour": "ώρα", - "Select Waiting Hours": "Επιλέξτε Ώρες Αναμονής", - "Total Points is": "Οι Συνολικοί Πόντοι είναι", - "You will receive a code in SMS message": - "Θα λάβετε έναν κωδικό σε μήνυμα SMS", - "Done": "Ολοκληρώθηκε", - "Total Budget from trips is ": - "Ο Συνολικός Προϋπολογισμός από τα ταξίδια είναι ", + "Select Waiting Hours": "Ώρες Αναμονής", + "Total Points is": "Σύνολο Πόντων", + "You will receive a code in SMS message": "Θα λάβετε SMS", + "Done": "Τέλος", + "Total Budget from trips is ": "Σύνολο εσόδων: ", "Total Amount:": "Συνολικό Ποσό:", "Total Budget from trips by\nCredit card is ": - "Ο Συνολικός Προϋπολογισμός από τα ταξίδια με\nΠιστωτική κάρτα είναι ", - "This amount for all trip I get from Passengers": - "Αυτό το ποσό για όλα τα ταξίδια που λαμβάνω από τους Επιβάτες", - "Pay from my budget": "Πληρωμή από τον προϋπολογισμό μου", + "Σύνολο εσόδων (Κάρτα): ", + "This amount for all trip I get from Passengers": "Ποσό από Επιβάτες", + "Pay from my budget": "Πληρωμή από υπόλοιπο", "This amount for all trip I get from Passengers and Collected For me in": - "Αυτό το ποσό για όλα τα ταξίδια που λαμβάνω από τους Επιβάτες και Συλλέγεται για μένα σε", - "You can buy points from your budget": - "Μπορείτε να αγοράσετε πόντους από τον προϋπολογισμό σας", + "Ποσό που εισπράχθηκε", + "You can buy points from your budget": "Αγορά πόντων από υπόλοιπο", "insert amount": "εισαγωγή ποσού", "You can buy Points to let you online\nby this list below": - "Μπορείτε να αγοράσετε Πόντοους για να μείνετε συνδεδεμένοι\nαπό την παρακάτω λίστα", - "Create Wallet to receive your money": - "Δημιουργήστε Πορτοφόλι για να λάβετε τα χρήματά σας", - "Enter your feedback here": "Εισάγετε την ανατροφοδότησή σας εδώ", - "Please enter your feedback.": - "Παρακαλώ εισάγετε την ανατροφοδότησή σας.", - "Feedback": "Ανατροφοδότηση", + "Αγορά Πόντων για online", + "Create Wallet to receive your money": "Δημιουργία Πορτοφολιού", + "Enter your feedback here": "Εισάγετε σχόλια", + "Please enter your feedback.": "Παρακαλώ εισάγετε σχόλια.", + "Feedback": "Σχόλια", "Submit ": "Υποβολή ", - "Click here to Show it in Map": - "Κάντε κλικ εδώ για να το εμφανίσετε στον Χάρτη", + "Click here to Show it in Map": "Προβολή στον Χάρτη", "Canceled": "Ακυρώθηκε", - "Type your Email": "Πληκτρολογήστε το Email σας", "No I want": "Όχι θέλω", - "Email is": "Το Email είναι", - "Phone Number is": "Ο Αριθμός Τηλεφώνου είναι", - "Date of Birth is": "Η Ημερομηνία Γέννησης είναι", - "Sex is ": "Το Φύλο είναι ", - "Car Details": "Λεπτομέρειες Αυτοκινήτου", - "VIN is": "Το VIN είναι", - "Color is ": "Το Χρώμα είναι ", - "Make is ": "Η Μάρκα είναι ", - "Model is": "Το Μοντέλο είναι", - "Year is": "Το Έτος είναι", - "Expiration Date ": "Η Ημερομηνία Λήξης ", - "Edit Your data": "Επεξεργαστείτε τα Δεδομένα σας", - "write vin for your car": "γράψτε το VIN για το αυτοκίνητό σας", - "VIN": "VIN", - "write Color for your car": "γράψτε το Χρώμα για το αυτοκίνητό σας", - "write Make for your car": "γράψτε την Μάρκα για το αυτοκίνητό σας", - // "Make": "Μάρκα", - "write Model for your car": "γράψτε το Μοντέλο για το αυτοκίνητό σας", - // "Model": "Μοντέλο", - "write Year for your car": "γράψτε το Έτος για το αυτοκίνητό σας", - // "Expiration Date": "Ημερομηνία Λήξης", - "write Expiration Date for your car": - "γράψτε την Ημερομηνία Λήξης για το αυτοκίνητό σας", - "Tariffs": "Τιμολόγια", - "Minimum fare": "Ελάχιστη Χρέωση", - "Maximum fare": "Μέγιστη Χρέωση", - "Flag-down fee": "Χρέωση Εκκίνησης", - "Including Tax": "Συμπεριλαμβανομένου Φόρου", - "BookingFee": "Χρέωση Κράτησης", + "Email is": "Email:", + "Phone Number is": "Τηλέφωνο:", + "Date of Birth is": "Ημ. Γέννησης:", + "Sex is ": "Φύλο: ", + "Car Details": "Στοιχεία Οχήματος", + "VIN is": "Πλαίσιο:", + "Color is ": "Χρώμα: ", + "Make is ": "Μάρκα: ", + "Model is": "Μοντέλο:", + "Year is": "Έτος:", + "Expiration Date ": "Λήξη: ", + "Edit Your data": "Επεξεργασία", + "write vin for your car": "εισάγετε πλαίσιο", + "VIN": "Πλαίσιο", + "Device Change Detected": "Αλλαγή Συσκευής", + "Please verify your identity": "Επαλήθευση ταυτότητας", + "write Color for your car": "εισάγετε χρώμα", + "write Make for your car": "εισάγετε μάρκα", + "write Model for your car": "εισάγετε μοντέλο", + "write Year for your car": "εισάγετε έτος", + "write Expiration Date for your car": "εισάγετε ημερομηνία λήξης", + "Tariffs": "Χρεώσεις", + "Minimum fare": "Ελάχιστη χρέωση", + "Maximum fare": "Μέγιστη χρέωση", + "Flag-down fee": "Σημαία", + "Including Tax": "Με ΦΠΑ", + "BookingFee": "Κόστος Κράτησης", "Morning": "Πρωί", "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": - "από 07:30 έως 10:30 (Πέμπτη, Παρασκευή, Σάββατο, Δευτέρα)", + "07:30 - 10:30", "Evening": "Απόγευμα", "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": - "από 12:00 έως 15:00 (Πέμπτη, Παρασκευή, Σάββατο, Δευτέρα)", - "Night": "Νύχτα", - "You have in account": "Έχετε στο λογαριασμό", - "Select Country": "Επιλέξτε Χώρα", - "Ride Today : ": "Ταξίδι Σήμερα: ", - "After this period\nYou can\'t cancel!": - "Μετά από αυτήν την περίοδο\nΔεν μπορείτε να ακυρώσετε!", - "from 23:59 till 05:30": "από 23:59 έως 05:30", - "Rate Driver": "Βαθμολόγηση Οδηγού", - "Total Cost is ": "Το Συνολικό Κόστος είναι ", - "Write note": "Γράψτε σημείωση", - "Time to arrive": "Ώρα Άφιξης", - "Ride Summaries": "Συνοψίσεις Ταξιδιών", + "12:00 - 15:00", + "Night": "Βράδυ", + "You have in account": "Έχετε στον λογαριασμό", + "Select Country": "Επιλογή Χώρας", + "Ride Today : ": "Διαδρομή Σήμερα: ", + "After this period\nYou can't cancel!": + "Μετά από αυτό\nΔεν μπορείτε να ακυρώσετε!", + "from 23:59 till 05:30": "23:59 - 05:30", + "Rate Driver": "Βαθμολογία Οδηγού", + "Total Cost is ": "Συνολικό Κόστος: ", + "Write note": "Σημείωση", + "Time to arrive": "Ώρα άφιξης", + "Ride Summaries": "Συνόψεις", "Total Cost": "Συνολικό Κόστος", - "Average of Hours of": "Μέσος Όρος Ωρών", - " is ON for this month": " είναι ενεργό για αυτόν τον μήνα", + "Average of Hours of": "Μέσος όρος ωρών", + " is ON for this month": " είναι ON αυτόν τον μήνα", "Days": "Ημέρες", - "Total Hours on month": "Συνολικές Ώρες τον Μήνα", - "Counts of Hours on days": "Αριθμός Ωρών στις Ημέρες", - "OrderId": "Αριθμός Παραγγελίας", - "created time": "χρόνος δημιουργίας", - "Intaleq Over": "Υπερβολική Ταχύτητα", - "I will slow down": "Θα μειώσω την ταχύτητα", + "Total Hours on month": "Σύνολο Ωρών μήνα", + "Counts of Hours on days": "Ώρες ανά ημέρα", + "OrderId": "ID Παραγγελίας", + "created time": "ώρα δημιουργίας", + "Intaleq Over": "Τέλος Intaleq", + "I will slow down": "Θα επιβραδύνω", "Map Passenger": "Χάρτης Επιβάτη", - "Be Slowly": "Να είστε Αργά", + "Be Slowly": "Πιο αργά", "If you want to make Google Map App run directly when you apply order": - "Αν θέλετε να εκτελείτε την εφαρμογή Google Map απευθείας όταν κάνετε αίτηση παραγγελίας", - "You can change the language of the app": - "Μπορείτε να αλλάξετε τη γλώσσα της εφαρμογής", + "Άμεσο άνοιγμα Google Maps", + "You can change the language of the app": "Αλλαγή γλώσσας εφαρμογής", "Your Budget less than needed": - "Ο προϋπολογισμός σας είναι λιγότερος από το απαιτούμενο", + "Υπόλοιπο χαμηλότερο του απαιτούμενου", "You can change the Country to get all features": - "Μπορείτε να αλλάξετε τη Χώρα για να λάβετε όλες τις λειτουργίες", + "Αλλάξτε Χώρα για όλα τα χαρακτηριστικά", "Change Country": "Αλλαγή Χώρας" }, "ur": { - "Sign In by Apple": "ایپل کے ذریعے سائن ان کریں۔", - "Sign In by Google": "گوگل کے ذریعے سائن ان کریں۔", - "How do I request a ride?": "میں سواری کی درخواست کیسے کروں؟", - "Step-by-step instructions on how to request a ride through the Intaleq app.": - "سیفر ایپ کے ذریعے سواری کی درخواست کرنے کے طریقہ سے متعلق مرحلہ وار ہدایات۔", - "What types of vehicles are available?": - "کس قسم کی گاڑیاں دستیاب ہیں؟", - "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": - "سیفر آپ کی ضروریات کو پورا کرنے کے لیے گاڑیوں کے متعدد اختیارات پیش کرتا ہے، بشمول معیشت، سکون اور عیش و آرام۔ وہ اختیار منتخب کریں جو آپ کے بجٹ اور مسافروں کی تعداد کے مطابق ہو۔", - "How can I pay for my ride?": - "میں اپنی سواری کی ادائیگی کیسے کر سکتا ہوں؟", - "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": - "سیفر آپ کی سہولت کے لیے ادائیگی کے متعدد طریقے پیش کرتا ہے۔ سواری کی تصدیق کے دوران نقد ادائیگی یا کریڈٹ/ڈیبٹ کارڈ کی ادائیگی کے درمیان انتخاب کریں۔", - "Can I cancel my ride?": "کیا میں اپنی سواری منسوخ کر سکتا ہوں؟", - "Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.": - "ہاں، آپ اپنی سواری کو کچھ شرائط کے تحت منسوخ کر سکتے ہیں (جیسے، ڈرائیور کو تفویض کرنے سے پہلے)۔ تفصیلات کے لیے سیفر کینسلیشن پالیسی دیکھیں۔", - "Driver Registration & Requirements": "ڈرائیور کی رجسٹریشن اور تقاضے", - "How can I register as a driver?": - "میں ڈرائیور کے طور پر کیسے رجسٹر ہو سکتا ہوں؟", - "What are the requirements to become a driver?": - "ڈرائیور بننے کے لیے کیا تقاضے ہیں؟", - "Visit our website or contact Intaleq support for information on driver registration and requirements.": - "ہماری ویب سائٹ ملاحظہ کریں یا ڈرائیور کی رجسٹریشن اور ضروریات کے بارے میں معلومات کے لیے سیفر سپورٹ سے رابطہ کریں۔", - "How do I communicate with the other party (passenger/driver)?": - "میں دوسری پارٹی (مسافر/ڈرائیور) کے ساتھ کیسے بات چیت کروں؟", - "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": - "سیفر آپ کو اپنی سواری کے دوران اپنے ڈرائیور یا مسافر سے بات چیت کرنے کی اجازت دینے کے لیے ایپ میں چیٹ کی فعالیت فراہم کرتا ہے۔", - "What safety measures does Intaleq offer?": - "سیفر کیا حفاظتی اقدامات پیش کرتا ہے؟", - "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": - "سیفر آپ کی حفاظت کو ترجیح دیتا ہے۔ ہم ڈرائیور کی تصدیق، درون ایپ ٹرپ ٹریکنگ، اور ہنگامی رابطہ کے اختیارات جیسی خصوصیات پیش کرتے ہیں۔", - "Frequently Questions": "اکثر سوالات", - "User does not exist.": "صارف موجود نہیں.", - "We need your phone number to contact you and to help you.": - "ہمیں آپ سے رابطہ کرنے اور آپ کی مدد کرنے کے لیے آپ کے فون نمبر کی ضرورت ہے۔", - "You will recieve code in sms message": - "آپ کو ایس ایم ایس پیغام میں کوڈ موصول ہوگا۔", - "Please enter": "درج کریں", - "We need your phone number to contact you and to help you receive orders.": - "ہمیں آپ سے رابطہ کرنے اور آرڈرز وصول کرنے میں مدد کے لیے آپ کے فون نمبر کی ضرورت ہے۔", - "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": - "آپ کے مجرمانہ ریکارڈ پر موجود پورا نام آپ کے ڈرائیور کے لائسنس پر موجود نام سے مماثل نہیں ہے۔ براہ کرم تصدیق کریں اور درست دستاویزات فراہم کریں۔", - "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": - "آپ کے ڈرائیور کے لائسنس پر موجود قومی نمبر آپ کی شناختی دستاویز پر موجود قومی نمبر سے مماثل نہیں ہے۔ براہ کرم تصدیق کریں اور درست دستاویزات فراہم کریں۔", - "Capture an Image of Your Criminal Record": - "اپنے مجرمانہ ریکارڈ کی تصویر حاصل کریں۔", - "IssueDate": "تاریخ اجراء", - "Capture an Image of Your car license front": - "اپنے کار لائسنس کے سامنے کی تصویر کھینچیں۔", - "Capture an Image of Your ID Document front": - "اپنی شناختی دستاویز کے سامنے کی تصویر کھینچیں۔", - "NationalID": "قومی شناختی", - "FullName": "پورا نام", - "InspectionResult": "معائنہ کا نتیجہ", - "Criminal Record": "مجرمانہ ریکارڈ", - "The email or phone number is already registered.": - "ای میل یا فون نمبر پہلے ہی رجسٹرڈ ہے۔", - "To become a ride-sharing driver on the Intaleq app, you need to upload your driver\"s license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": - "سیفر ایپ پر رائیڈ شیئرنگ ڈرائیور بننے کے لیے، آپ کو اپنے ڈرائیور کا لائسنس، شناختی دستاویز، اور کار کی رجسٹریشن کی دستاویز اپ لوڈ کرنے کی ضرورت ہے۔ ہمارا AI سسٹم فوری طور پر صرف 2-3 منٹ میں ان کی صداقت کا جائزہ لے کر تصدیق کرے گا۔ اگر آپ کی دستاویزات منظور شدہ ہیں، آپ سیفر ایپ پر بطور ڈرائیور کام کرنا شروع کر سکتے ہیں، براہ کرم نوٹ کریں، جعلی دستاویزات جمع کروانا ایک سنگین جرم ہے اور اس کے نتیجے میں فوری طور پر برطرفی اور قانونی نتائج برآمد ہو سکتے ہیں۔", - "Documents check": "دستاویزات کی جانچ پڑتال", - "Driver's License": "ڈرائیور کا لائسنس", - "License Type": "لائسنس کی قسم", - "National Number": "قومی نمبر", - "Name (Arabic)": "نام (عربی)", - "Name (English)": "نام (انگریزی)", - "Address": "پتہ", - "Issue Date": "تاریخ اجراء", - "Expiry Date": "خاتمے کی تاریخ", - "License Categories": "لائسنس کے زمرے", - "driver_license": "ڈرائیور لائسنس", - "Capture an Image of Your Driver License": - "اپنے ڈرائیور لائسنس کی تصویر کھینچیں۔", - "ID Documents Back": "شناختی دستاویزات واپس", - "National ID": "قومی شناختی", - "Occupation": "پیشہ", - "Gender": "صنف", - "Religion": "مذہب", + "Order": "آرڈر", + "OrderVIP": "VIP آرڈر", + "Cancel Trip": "سفر منسوخ کریں", + "Passenger Cancel Trip": "مسافر نے سفر منسوخ کر دیا", + "VIP Order": "VIP آرڈر", + "Hi ,I Arrive your site": "سلام، میں آپ کی لوکیشن پر پہنچ گیا ہوں", + "The driver accepted your trip": + "ڈرائیور نے آپ کا سفر قبول کر لیا ہے", + "message From passenger": "مسافر کا پیغام", + "Cancel": "منسوخ کریں", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "سفر منسوخ ہو گیا۔ سفر کی لاگت آپ کے والٹ میں شامل کر دی جائے گی۔", + "token change": "ٹوکن کی تبدیلی", + "face detect": "چہرے کی شناخت", + "Face Detection Result": "چہرے کی شناخت کا نتیجہ", + "similar": "ملتا جلتا", + "not similar": "مختلف", + "Hi ,I will go now": "سلام، میں اب جا رہا ہوں", + "Passenger come to you": "مسافر آپ کی طرف آ رہا ہے", + "Call Income": "آنے والی کال", + "Call Income from Passenger": "مسافر کی طرف سے کال", + "Criminal Document Required": "پولیس کلیئرنس درکار ہے", + "You should have upload it .": "آپ کو اسے اپ لوڈ کرنا چاہیے۔", + "Call End": "کال ختم", + "The order has been accepted by another driver.": + "آرڈر دوسرے ڈرائیور نے قبول کر لیا ہے۔", + "The order Accepted by another Driver": + "آرڈر دوسرے ڈرائیور نے قبول کر لیا", + "We regret to inform you that another driver has accepted this order.": + "ہمیں افسوس ہے کہ کسی اور ڈرائیور نے یہ آرڈر قبول کر لیا ہے۔", + "Driver Applied the Ride for You": + "ڈرائیور نے آپ کے لیے سفر کی درخواست دی", + "Applied": "درخواست دی گئی", + "Pay by Sham Cash": "Sham Cash کے ذریعے ادائیگی", + "Pay with Debit Card": "ڈیبٹ کارڈ سے ادائیگی", + "Please go to Car Driver": "براہ کرم ڈرائیور کے پاس جائیں", + "Ok I will go now.": "ٹھیک ہے، میں اب جا رہا ہوں۔", + "Accepted Ride": "قبول شدہ سفر", + "Driver Accepted the Ride for You": + "ڈرائیور نے آپ کے لیے سفر قبول کر لیا", + "Promo": "پرومو", + "Show latest promo": "تازہ ترین پرومو دکھائیں", + "Trip Monitoring": "سفر کی نگرانی", + "Driver Is Going To Passenger": "ڈرائیور مسافر کی طرف جا رہا ہے", + "Please stay on the picked point.": + "براہ کرم منتخب کردہ مقام پر رہیں۔", + "message From Driver": "ڈرائیور کا پیغام", + "Trip is Begin": "سفر شروع ہو گیا", + "Cancel Trip from driver": "ڈرائیور کی طرف سے منسوخی", + "We will look for a new driver.\nPlease wait.": + "ہم نئے ڈرائیور کی تلاش کر رہے ہیں۔\nبراہ کرم انتظار کریں۔", + "The driver canceled your ride.": + "ڈرائیور نے آپ کا سفر منسوخ کر دیا۔", + "Driver Finish Trip": "ڈرائیور نے سفر مکمل کر لیا", + "you will pay to Driver": "آپ ڈرائیور کو ادا کریں گے", + "Don’t forget your personal belongings.": + "اپنا ذاتی سامان نہ بھولیں۔", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "براہ کرم یقینی بنائیں کہ آپ کے پاس اپنا تمام سامان موجود ہے اور اگر کوئی بقایا رقم ہے تو وہ آپ کے والٹ میں شامل کر دی گئی ہے۔ Intaleq ایپ منتخب کرنے کا شکریہ۔", + "Finish Monitor": "نگرانی ختم کریں", + "Trip finished": "سفر مکمل ہو گیا", + "Call Income from Driver": "ڈرائیور کی طرف سے کال", + "Driver Cancelled Your Trip": "ڈرائیور نے آپ کا سفر منسوخ کر دیا", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "آپ ڈرائیور کے وقت کی قیمت ادا کریں گے، اپنا Intaleq والٹ دیکھیں", + "Order Applied": "آرڈر لاگو ہو گیا", + "welcome to intaleq": "Intaleq میں خوش آمدید", + "login or register subtitle": + "لاگ ان یا رجسٹر کرنے کے لیے اپنا موبائل نمبر درج کریں", + "An application error occurred.": "ایپلیکیشن میں خرابی پیش آ گئی۔", + "Submission Failed": "جمع کرانا ناکام ہو گیا", + "Your complaint has been submitted.": "آپ کی شکایت جمع کر دی گئی ہے۔", + "Failed to connect to the server. Please try again.": + "سرور سے رابطہ کرنے میں ناکامی۔ براہ کرم دوبارہ کوشش کریں۔", + "Ride information not found. Please refresh the page.": + "سفر کی معلومات نہیں ملیں۔ براہ کرم صفحہ ریفریش کریں۔", + "Please describe your issue before submitting.": + "جمع کرانے سے پہلے براہ کرم اپنا مسئلہ بیان کریں۔", + "An application error occurred during upload.": + "اپ لوڈ کے دوران ایپلیکیشن میں خرابی پیش آ گئی۔", + "Failed to upload audio file.": "آڈیو فائل اپ لوڈ کرنے میں ناکامی۔", + "Audio uploaded successfully.": "آڈیو کامیابی سے اپ لوڈ ہو گئی۔", + "Complaint cannot be filed for this ride. It may not have been completed or started.": + "اس سفر کے لیے شکایت درج نہیں کی جا سکتی۔ ہو سکتا ہے یہ مکمل یا شروع نہ ہوا ہو۔", + "2. Attach Recorded Audio (Optional)": + "2. ریکارڈ شدہ آڈیو منسلک کریں (اختیاری)", + "Please enter a description of the issue.": + "براہ کرم مسئلے کی تفصیل درج کریں۔", + "phone number label": "فون نمبر", + "phone number required": "فون نمبر درکار ہے", + "send otp button": "او ٹی پی (OTP) بھیجیں", + "verify your number title": "اپنے نمبر کی تصدیق کریں", + "otp sent subtitle": "ایک 5 ہندسوں کا کوڈ بھیجا گیا\n@phoneNumber", + "verify and continue button": "تصدیق کریں اور جاری رکھیں", + "enter otp validation": "براہ کرم 5 ہندسوں کا او ٹی پی درج کریں", + "one last step title": "ایک آخری قدم", + "complete profile subtitle": "شروع کرنے کے لیے پروفایل مکمل کریں", + "first name label": "پہلا نام", + "first name required": "پہلا نام درکار ہے", + "last name label": "آخری نام", + "Verify OTP": "او ٹی پی کی تصدیق کریں", + "Verification Code": "تصدیقی کوڈ", + "We have sent a verification code to your mobile number:": + "ہم نے آپ کے موبائل نمبر پر تصدیقی کوڈ بھیج دیا ہے:", + "Verify": "تصدیق کریں", + "Resend Code": "کوڈ دوبارہ بھیجیں", + "You can resend in": "دوبارہ بھیج سکتے ہیں", + "seconds": "سیکنڈز", + "Error": "خرابی", + "Please enter the complete 6-digit code.": + "براہ کرم مکمل 6 ہندسوں کا کوڈ درج کریں۔", + "last name required": "آخری نام درکار ہے", + "email optional label": "ای میل (اختیاری)", + "complete registration button": "رجسٹریشن مکمل کریں", + "User with this phone number or email already exists.": + "اس فون نمبر یا ای میل کے ساتھ صارف پہلے سے موجود ہے۔", + "otp sent success": "او ٹی پی کامیابی سے واٹس ایپ پر بھیج دیا گیا۔", + "failed to send otp": "او ٹی پی بھیجنے میں ناکامی۔", + "server error try again": "سرور کی خرابی، دوبارہ کوشش کریں۔", + "an error occurred": "ایک خرابی پیش آ گئی: @error", + "otp verification failed": "او ٹی پی کی تصدیق ناکام ہو گئی۔", + "registration failed": "رجسٹریشن ناکام ہو گئی۔", + "welcome user": "خوش آمدید، @firstName!", + "Cancel Trip from driver": "ڈرائیور کی طرف سے سفر منسوخ", + "We will look for a new driver.\nPlease wait.": + "ہم نئے ڈرائیور کی تلاش کریں گے۔\nبراہ کرم انتظار کریں۔", + "The driver canceled your ride.": + "ڈرائیور نے آپ کی سواری منسوخ کر دی۔", + "Driver Finish Trip": "ڈرائیور نے سفر ختم کر دیا", + "you will pay to Driver": "آپ ڈرائیور کو ادا کریں گے", + "Don't forget your personal belongings.": + "اپنا ذاتی سامان نہ بھولیں۔", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "براہ کرم یقینی بنائیں کہ آپ کے پاس اپنا تمام سامان موجود ہے اور اگر کوئی بقایا کرایہ ہے تو وہ آپ کے والٹ میں شامل کر دیا گیا ہے۔ Intaleq ایپ منتخب کرنے کا شکریہ۔", + "Finish Monitor": "نگرانی ختم کریں", + "Trip finished": "سفر ختم ہو گیا", + "Call Income from Driver": "ڈرائیور کی طرف سے کال", + "Driver Cancelled Your Trip": "ڈرائیور نے آپ کا سفر منسوخ کر دیا", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "آپ ڈرائیور کے وقت کی قیمت ادا کریں گے، اپنا Intaleq والٹ دیکھیں", + "Order Applied": "آرڈر لاگو ہو گیا", + "Share App": "ایپ شیئر کریں", + "Wallet": "والٹ", + "Balance": "بیلنس", + "Don’t forget your personal belongings.": + "اپنا ذاتی سامان نہ بھولیں۔", + "Profile": "پروفائل", + "Contact Support": "سپورٹ سے رابطہ کریں", + "Session expired. Please log in again.": + "سیشن ختم ہو گیا۔ براہ کرم دوبارہ لاگ ان کریں۔", + "Security Warning": "⚠️ سیکیورٹی وارننگ", + "Potential security risks detected. The application may not function correctly.": + "ممکنہ سیکیورٹی خطرات کا پتہ چلا۔ ہو سکتا ہے ایپلیکیشن صحیح کام نہ کرے۔", + "please order now": "ابھی آرڈر کریں", + "Where to": "کہاں جانا ہے؟", + "Where are you going?": "آپ کہاں جا رہے ہیں؟", + "Quick Actions": "فوری اقدامات", + "My Balance": "میرا بیلنس", + "Order History": "آرڈر ہسٹری", + "Contact Us": "ہم سے رابطہ کریں", + "Driver": "ڈرائیور", + "Complaint": "شکایت", + "Promos": "پروموز", + "Recent Places": "حالیہ مقامات", + "From": "سے", + "WhatsApp Location Extractor": "واٹس ایپ لوکیشن ایکسٹریکٹر", + "Location Link": "لوکیشن لنک", + "Paste location link here": "لوکیشن لنک یہاں پیسٹ کریں", + "Go to this location": "اس لوکیشن پر جائیں", + "Paste WhatsApp location link": "واٹس ایپ لوکیشن لنک پیسٹ کریں", + "Select Order Type": "آرڈر کی قسم منتخب کریں", + "Choose who this order is for": "منتخب کریں کہ یہ آرڈر کس کے لیے ہے", + "I want to order for myself": "میں اپنے لیے آرڈر کرنا چاہتا ہوں", + "I want to order for someone else": + "میں کسی اور کے لیے آرڈر کرنا چاہتا ہوں", + "Order for someone else": "کسی اور کے لیے آرڈر", + "Order for myself": "اپنے لیے آرڈر", + "Are you want to go this site": "کیا آپ اس جگہ جانا چاہتے ہیں", + "No": "نہیں", + "Pay by Sham Cash": "Sham Cash کے ذریعے ادائیگی", + "Intaleq Wallet": "Intaleq والٹ", + "Have a promo code?": "کیا آپ کے پاس پرومو کوڈ ہے؟", + "Your Wallet balance is ": "آپ کا والٹ بیلنس ہے: ", + "Cash": "نقد", + "Phone Number": "فون نمبر", + "Search country": "ملک تلاش کریں", + "Payment Successful!": "ادائیگی کامیاب!", + "Your payment was successful.": "آپ کی ادائیگی کامیاب رہی۔", + "Pay directly to the captain": "کپتان کو براہ راست ادائیگی کریں", + "Top up Wallet to continue": "جاری رکھنے کے لیے والٹ ٹاپ اپ کریں", + "Or pay with Cash instead": "یا اس کے بجائے نقد ادائیگی کریں", + "Confirm & Find a Ride": "تصدیق کریں اور سواری تلاش کریں", + "Balance:": "بیلنس:", + "Alerts": "الرٹس", + "Welcome Back!": "خوش آمدید!", + "Current Balance": "موجودہ بیلنس", + "Set Wallet Phone Number": "والٹ فون نمبر سیٹ کریں", + "Link a phone number for transfers": + "ٹرانسفر کے لیے فون نمبر لنک کریں", + "Payment History": "ادائیگی کی تاریخ", + "View your past transactions": "اپنی پرانی ٹرانزیکشنز دیکھیں", + "Top up Wallet": "والٹ ٹاپ اپ کریں", + "Add funds using our secure methods": + "ہمارے محفوظ طریقوں سے فنڈز شامل کریں", + "Driver is waiting": "ڈرائیور انتظار کر رہا ہے", + "Type your message...": "اپنا پیغام لکھیں...", + "Driver Accepted Request": "ڈرائیور نے درخواست قبول کر لی", + "Message": "پیغام", + "Call": "کال", + "Set Phone Number": "فون نمبر سیٹ کریں", + "Select This Ride": "یہ سواری منتخب کریں", + "Call Driver": "ڈرائیور کو کال کریں", + "Increase Fare": "کرایہ بڑھائیں", + "Stop": "رکیں", + "Record": "ریکارڈ", + "Share": "شیئر", + "WhatsApp": "واٹس ایپ", + "SOS": "SOS", + "No drivers accepted your request yet": + "ابھی تک کسی ڈرائیور نے آپ کی درخواست قبول نہیں کی", + "Increasing the fare might attract more drivers. Would you like to increase the price?": + "کرایہ بڑھانے سے مزید ڈرائیور متوجہ ہو سکتے ہیں۔ کیا آپ قیمت بڑھانا چاہیں گے؟", + "Please make sure not to leave any personal belongings in the car.": + "براہ کرم یقینی بنائیں کہ گاڑی میں کوئی ذاتی سامان نہ چھوڑیں۔", + "Cancel Ride": "سفر منسوخ کریں", + "Route Not Found": "روٹ نہیں ملا", + "We couldn't find a valid route to this destination. Please try selecting a different point.": + "ہمیں اس منزل کے لیے کوئی درست راستہ نہیں ملا۔ براہ کرم کوئی اور پوائنٹ منتخب کریں۔", + "alert": "انتباہ", + "You can call or record audio during this trip.": + "آپ اس سفر کے دوران کال یا آڈیو ریکارڈ کر سکتے ہیں۔", + "Warning: Speeding detected!": "انتباہ: تیز رفتاری کا پتہ چلا!", + "Fixed Price": "فکسڈ قیمت", + "Report": "رپورٹ", + "Comfort": "آرام دہ (Comfort)", + "Intaleq Balance": "Intaleq بیلنس", + "Search for a starting point": "نقطہ آغاز تلاش کریں", + "Top up Balance to continue": "جاری رکھنے کے لیے بیلنس ٹاپ اپ کریں", + "Electric": "الیکٹرک", + "Lady": "خواتین", + "Van": "وین", + "Rayeh Gai": "آنا جانا (Round Trip)", + "Join Intaleq as a driver using my referral code!": + "میرے ریفرل کوڈ کا استعمال کرتے ہوئے بطور ڈرائیور Intaleq میں شامل ہوں!", + "Use code:": "کوڈ استعمال کریں:", + "Download the Intaleq Driver app now and earn rewards!": + "ابھی Intaleq ڈرائیور ایپ ڈاؤن لوڈ کریں اور انعامات حاصل کریں!", + "Get a discount on your first Intaleq ride!": + "اپنی پہلی Intaleq سواری پر رعایت حاصل کریں!", + "Use my referral code:": "میرا ریفرل کوڈ استعمال کریں:", + "Download the Intaleq app now and enjoy your ride!": + "ابھی Intaleq ایپ ڈاؤن لوڈ کریں اور اپنی سواری کا لطف اٹھائیں!", + "Contacts Loaded": "رابطے لوڈ ہو گئے", + "Showing": "دکھا رہا ہے", + "of": "میں سے", + "Pay by MTN Wallet": "MTN والٹ سے ادائیگی کریں", + "Pay by Syriatel Wallet": "Syriatel والٹ سے ادائیگی کریں", + "Customer not found": "کسٹمر نہیں ملا", + "Wallet is blocked": "والٹ بلاک ہے", + "Customer phone is not active": "کسٹمر کا فون ایکٹو نہیں ہے", + "Balance not enough": "بیلنس کافی نہیں ہے", + "Balance limit exceeded": "بیلنس کی حد سے تجاوز", + "Incorrect sms code": "⚠️ غلط SMS کوڈ۔ براہ کرم دوبارہ کوشش کریں۔", + "contacts. Others were hidden because they don't have a phone number.": + "رابطے۔ دیگر چھپا دیے گئے کیونکہ ان کا فون نمبر نہیں ہے۔", + "No contacts found": "کوئی رابطہ نہیں ملا", + "No contacts with phone numbers were found on your device.": + "آپ کے آلے پر فون نمبرز کے ساتھ کوئی رابطہ نہیں ملا۔", + "Permission denied": "اجازت مسترد کر دی گئی", + "Contact permission is required to pick contacts": + "رابطے منتخب کرنے کے لیے رابطے کی اجازت درکار ہے۔", + "An error occurred while picking contacts:": + "رابطے منتخب کرتے وقت ایک خرابی پیش آ گئی:", + "Please enter a correct phone": "براہ کرم درست فون نمبر درج کریں", + "Success": "کامیابی", + "Invite sent successfully": "دعوت نامہ کامیابی سے بھیج دیا گیا", + "Hello! I'm inviting you to try Intaleq.": + "ہیلو! میں آپ کو Intaleq آزمانے کی دعوت دے رہا ہوں۔", + "Use my invitation code to get a special gift on your first ride!": + "اپنی پہلی سواری پر خصوصی تحفہ حاصل کرنے کے لیے میرا دعوتی کوڈ استعمال کریں!", + "Your personal invitation code is:": "آپ کا ذاتی دعوتی کوڈ ہے:", + "Be sure to use it quickly! This code expires at": + "اسے جلدی استعمال کرنا یقینی بنائیں! یہ کوڈ ختم ہو جائے گا", + "Download the app now:": "ابھی ایپ ڈاؤن لوڈ کریں:", + "See you on the road!": "راستے میں ملتے ہیں!", + "This phone number has already been invited.": + "اس فون نمبر کو پہلے ہی مدعو کیا جا چکا ہے۔", + "An unexpected error occurred. Please try again.": + "ایک غیر متوقع خرابی پیش آ گئی۔ براہ کرم دوبارہ کوشش کریں۔", + "You deserve the gift": "آپ تحفے کے مستحق ہیں", + "Claim your 20 LE gift for inviting": + "دعوت دینے پر اپنا 20 روپے کا تحفہ حاصل کریں", + "You have got a gift for invitation": + "آپ کو دعوت دینے پر تحفہ ملا ہے", + "You have earned 20": "آپ نے 20 کمائے ہیں", + "LE": "روپیہ", + "Vibration feedback for all buttons": + "تمام بٹنوں کے لیے وائبریشن فیڈبیک", + "Share with friends and earn rewards": + "دوستوں کے ساتھ شیئر کریں اور انعامات حاصل کریں", + "Gift Already Claimed": "تحفہ پہلے ہی حاصل کیا جا چکا ہے", + "You have already received your gift for inviting": + "آپ دعوت دینے کے لیے اپنا تحفہ پہلے ہی وصول کر چکے ہیں", + "Keep it up!": "جاری رکھیں!", + "has completed": "مکمل کر لیا ہے", + "trips": "سفر", + "Personal Information": "ذاتی معلومات", + "Name": "نام", + "Not set": "سیٹ نہیں", + "Gender": "جنس", + "Education": "تعلیم", + "Work & Contact": "کام اور رابطہ", + "Employment Type": "روزگار کی قسم", "Marital Status": "ازدواجی حیثیت", - "Full Name (Marital)": "پورا نام (ازدواجی)", - "Expiration Date": "میعاد ختم ہونے کی تاریخ", - "Capture an Image of Your ID Document Back": - "اپنی شناختی دستاویز کی تصویر واپس لیں۔", - "ID Documents Front": "شناختی دستاویزات سامنے", - "First Name": "پہلا نام", - "CardID": "کارڈ آئی ڈی", - "Full Name": "پورا نام", - "Vehicle Details Front": "گاڑی کی تفصیلات سامنے", - "Plate Number": "پلیٹ نمبر", - "Owner Name": "مالک کا نام", - "Vehicle Details Back": "گاڑی کی تفصیلات واپس", - "Make": "بنائیں", - "Model": "ماڈل", - "Year": "سال", - "Chassis": "چیسس", - "Color": "رنگ", - "Displacement": "نقل مکانی", - "Fuel": "ایندھن", - "Tax Expiry Date": "ٹیکس ختم ہونے کی تاریخ", - "Inspection Date": "معائنہ کی تاریخ", - "Capture an Image of Your car license back": - "اپنے کار لائسنس کی تصویر واپس کیپچر کریں۔", - "Capture an Image of Your Driver’s License": - "اپنے ڈرائیور کے لائسنس کی تصویر کھینچیں۔", - "Sign in with Google for easier email and name entry": - "آسان ای میل اور نام کے اندراج کے لیے گوگل کے ساتھ سائن ان کریں۔", - "You will choose allow all the time to be ready receive orders": - "آپ آرڈر وصول کرنے کے لیے ہر وقت تیار رہنے کا انتخاب کریں گے۔", - "Welcome to Intaleq!": "Intaleq میں خوش آمدید!", - "Get to your destination quickly and easily.": - "جلدی اور آسانی سے اپنی منزل تک پہنچیں۔", - "Enjoy a safe and comfortable ride.": - "ایک محفوظ اور آرام دہ سواری کا لطف اٹھائیں۔", - "Choose Language": "زبان کا انتخاب کریں۔", - "Login": "لاگ ان کریں", - "Pay with Wallet": "Wallet کے ساتھ ادائیگی کریں۔", - "Invalid MPIN": "غلط MPIN", - "Invalid OTP": "غلط OTP", - "Enter your email address": "اپنا ای میل کا پتا لکھو", - "Please enter Your Email.": "براہ کرم اپنا ای میل درج کریں۔", - "Enter your phone number": "اپنا فون نمبر درج کریں۔", - "Please enter your phone number.": "براہ کرم اپنا فون نمبر درج کریں۔", - "Please enter Your Password.": - "برائے مہربانی اپنا پاس ورڈ داخل کریں.", - "Submit": "جمع کرائیں", - "if you dont have account": "اگر آپ کے پاس اکاؤنٹ نہیں ہے۔", - "Register": "رجسٹر کریں۔", - "Accept Ride's Terms & Review Privacy Notice": - "سواری کی شرائط قبول کریں اور پرائیویسی نوٹس کا جائزہ لیں۔", - "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": - "ذیل میں 'میں اتفاق کرتا ہوں' کو منتخب کرکے، میں نے استعمال کی شرائط کا جائزہ لیا اور اس سے اتفاق کیا اور رازداری کے نوٹس کو تسلیم کیا۔ میری عمر کم از کم 18 سال ہے۔", - "I Agree": "میں راضی ہوں", - "First name": "پہلا نام", - "Enter your first name": "اپنا پہلا نام درج کریں۔", - "Please enter your first name.": "براہ کرم اپنا پہلا نام درج کریں۔", - "Last name": "آخری نام", - "Enter your last name": "اپنا آخری نام درج کریں۔", - "Please enter your last name.": "براہ کرم اپنا آخری نام درج کریں۔", - "City": "شہر", - "Please enter your City.": "براہ کرم اپنا شہر درج کریں۔", + "SOS Phone": "SOS فون", + "Sign Out": "سائن آؤٹ", + "Delete My Account": "میرا اکاؤنٹ ڈیلیٹ کریں", + "Update Gender": "جنس اپ ڈیٹ کریں", + "Update": "اپ ڈیٹ", + "Update Education": "تعلیم اپ ڈیٹ کریں", + "Are you sure? This action cannot be undone.": + "کیا آپ کو یقین ہے؟ یہ عمل واپس نہیں کیا جا سکتا۔", + "Confirm your Email": "اپنے ای میل کی تصدیق کریں", + "Type your Email": "اپنا ای میل لکھیں", + "Delete Permanently": "مستقل طور پر ڈیلیٹ کریں", "Male": "مرد", "Female": "عورت", - "Verify Email": "ای میل کی تصدیق کریں۔", - "We sent 5 digit to your Email provided": - "ہم نے آپ کے فراہم کردہ ای میل پر 5 ہندسے بھیجے ہیں۔", - "5 digit": "5 ہندسہ", - "Send Verification Code": "تصدیقی کوڈ بھیجیں۔", - "Your Ride Duration is": "آپ کی سواری کا دورانیہ ہے۔", - "You will be thier in": "آپ اس میں شامل ہوں گے۔", - "You trip distance is": "آپ کے Intaleq کا فاصلہ ہے۔", - "Fee is": "فیس ہے۔", - "From :": "منجانب:", - "To :": "کو:", - "Add Promo": "پرومو شامل کریں۔", - "Confirm Selection": "انتخاب کی تصدیق کریں۔", - "distance is": "فاصلہ ہے", - "duration is": "مدت ہے", - "I don't need a ride anymore": "مجھے اب سواری کی ضرورت نہیں ہے۔", - "I was just trying the application": - "میں صرف درخواست کی کوشش کر رہا تھا", - "No driver accepted my request": - "کسی ڈرائیور نے میری درخواست قبول نہیں کی۔", - "I added the wrong pick-up/drop-off location": - "میں نے غلط پک اپ/ڈراپ آف مقام شامل کیا۔", - "I don't have a reason": "میرے پاس کوئی وجہ نہیں ہے۔", "Other": "دیگر", - "Can we know why you want to cancel Ride ?": - "کیا ہم جان سکتے ہیں کہ آپ سواری کیوں منسوخ کرنا چاہتے ہیں؟", - "Cancel Ride": "سواری منسوخ کریں۔", - "Add Payment Method": "ادائیگی کا طریقہ شامل کریں۔", - "Your Wallet balance is": "آپ کا والیٹ بیلنس ہے۔", - "Ride Wallet": "والیٹ کی سواری کریں۔", - "Payment Method": "ادائیگی کا طریقہ", - "Type here Place": "یہاں جگہ ٹائپ کریں۔", - "Are You sure to ride to": "کیا آپ کو یقینی طور پر سوار ہونا ہے۔", - "Confirm": "تصدیق کریں۔", - "Back": "پیچھے", - "You are Delete": "آپ ڈیلیٹ ہیں۔", - "Deleted": "حذف کر دیا گیا۔", - "You Dont Have Any places yet !": - "آپ کے پاس ابھی تک کوئی جگہ نہیں ہے!", - "Favorite Places": "پسندیدہ مقامات", - "From : Current Location": "منجانب: موجودہ مقام", - "Where to": "کہاں سے", - "Notifications": "اطلاعات", - "Profile": "پروفائل", - "Home": "گھر", - "My Cared": "میری دیکھ بھال", - "Add Card": "کارڈ شامل کریں۔", - "Add Credit Card": "کریڈٹ کارڈ شامل کریں۔", - "Please enter the cardholder name": - "براہ کرم کارڈ ہولڈر کا نام درج کریں۔", - "Please enter the expiry date": - "براہ کرم میعاد ختم ہونے کی تاریخ درج کریں۔", - "Please enter the CVV code": "براہ کرم CVV کوڈ درج کریں۔", - "Go To Favorite Places": "پسندیدہ مقامات پر جائیں۔", - "Go to this Target": "اس ٹارگٹ پر جائیں۔", - "My Profile": "میری پروفائل", - "Sign Out": "باہر جائیں", - "Home Page": "ہوم پیج", - "Are you want to go to this site": - "کیا آپ اس سائٹ پر جانا چاہتے ہیں؟", - "MyLocation": "میرا مقام", - "my location": "میرا مقام", - "Target": "ہدف", - "Update": "اپ ڈیٹ", - "You Should choose rate figure": - "آپ کو شرح کے اعداد و شمار کا انتخاب کرنا چاہئے۔", - "Login Captin": "کیپٹن لاگ ان کریں۔", - "Register Captin": "کیپٹن کو رجسٹر کریں۔", - "Send Verfication Code": "تصدیقی کوڈ بھیجیں۔", - "KM": "KM", - "End Ride": "سواری ختم کریں۔", - "Minute": "منٹ", - "Go to passenger Location now": "ابھی مسافر کے مقام پر جائیں۔", - "Duration of the Ride is": "سواری کا دورانیہ ہے۔", - "Distance of the Ride is": "سواری کا فاصلہ ہے۔", - "Name of the Passenger is": "مسافر کا نام ہے۔", - "Hello this is Captain": "ہیلو یہ کیپٹن ہے۔", - "Start the Ride": "سواری شروع کریں۔", - "Please Wait If passenger want To Cancel!": - "اگر مسافر منسوخ کرنا چاہتے ہیں تو براہ کرم انتظار کریں!", - "Total Duration:": "کل دورانیہ:", - "Active Duration:": "فعال دورانیہ:", - "Waiting for Captin ...": "کپتان کا انتظار ہے...", - "Age is": "عمر ہے۔", - "Rating is": "درجہ بندی ہے۔", - "to arrive you.": "آپ تک پہنچنے کے لیے", - "Order History": "آرڈر کی تاریخ", - "My Wallet": "میرا بٹوہ", - "Tariff": "ٹیرف", - "Settings": "ترتیبات", - "Feed Back": "فیڈ بیک", - "Promos": "پروموز", - "Please enter a valid 16-digit card number": - "براہ کرم ایک درست 16 ہندسوں والا کارڈ نمبر درج کریں۔", - "Add Phone": "فون شامل کریں۔", - "Please enter a phone number": "براہ کرم ایک فون نمبر درج کریں۔", - "You dont Add Emergency Phone Yet!": - "آپ نے ابھی تک ایمرجنسی فون شامل نہیں کیا!", - "You will arrive to your destination after": - "اس کے بعد آپ اپنی منزل پر پہنچ جائیں گے۔", - "You can cancel Ride now": "آپ ابھی سواری منسوخ کر سکتے ہیں۔", - "You Can cancel Ride After Captain did not come in the time": - "کپتان کے وقت پر نہ آنے کے بعد آپ سواری منسوخ کر سکتے ہیں۔", - "If you in Car Now. Press Start The Ride": - "اگر آپ ابھی کار میں ہیں۔ سٹارٹ دی رائڈ کو دبائیں۔", - "You Dont Have Any amount in": "آپ کے پاس کوئی رقم نہیں ہے۔", - "Wallet!": "پرس!", - "You Have": "آپ کے پاس ہے", - "Save Credit Card": "کریڈٹ کارڈ محفوظ کریں۔", - "Show Promos": "پروموز دکھائیں۔", - "10 and get 4% discount": "10 اور 4% ڈسکاؤنٹ حاصل کریں۔", - "20 and get 6% discount": "20 اور 6% ڈسکاؤنٹ حاصل کریں۔", - "40 and get 8% discount": "40 اور 8% ڈسکاؤنٹ حاصل کریں۔", - "100 and get 11% discount": "100 اور 11% ڈسکاؤنٹ حاصل کریں۔", - "Pay with Your PayPal": "اپنے پے پال سے ادائیگی کریں۔", - "You will choose one of above !": - "آپ اوپر میں سے ایک کا انتخاب کریں گے!", - "Cancel": "منسوخ کریں۔", - "Delete My Account": "میرا اکاؤنٹ حذف کریں۔", - "Edit Profile": "پروفائل میں ترمیم کریں", - "Name": "نام", - "Update Gender": "جنس کو اپ ڈیٹ کریں۔", - "Education": "تعلیم", - "Update Education": "تعلیم کو اپ ڈیٹ کریں۔", - "Employment Type": "ملازمت کی قسم", - "SOS Phone": "SOS فون", "High School Diploma": "ہائی اسکول ڈپلومہ", "Associate Degree": "ایسوسی ایٹ ڈگری", "Bachelor's Degree": "بیچلر ڈگری", "Master's Degree": "ماسٹر ڈگری", - "Doctoral Degree": "ڈاکٹریٹ کی ڈگری", - "Promos For today": "آج کے لیے پروموز", + "Doctoral Degree": "ڈاکٹریٹ ڈگری", + "Select your preferred language for the app interface.": + "ایپ انٹرفیس کے لیے اپنی پسندیدہ زبان منتخب کریں۔", + "Language Options": "زبان کے اختیارات", + "You can claim your gift once they complete 2 trips.": + "جب وہ 2 سفر مکمل کر لیں تو آپ اپنا تحفہ حاصل کر سکتے ہیں۔", + "Closest & Cheapest": "سب سے قریب اور سستا", + "Comfort choice": "آرام دہ انتخاب", + "Travel in a modern, silent electric car. A premium, eco-friendly choice for a smooth ride.": + "جدید، خاموش الیکٹرک کار میں سفر کریں۔ ایک پریمیم، ماحول دوست انتخاب۔", + "Spacious van service ideal for families and groups. Comfortable, safe, and cost-effective travel together.": + "خاندانوں اور گروپوں کے لیے کشادہ وین سروس۔ آرام دہ، محفوظ اور کم خرچ۔", + "Quiet & Eco-Friendly": "خاموش اور ماحول دوست", + "Lady Captain for girls": "خواتین کے لیے لیڈی کیپٹن", + "Van for familly": "فیملی کے لیے وین", + "Are you sure to delete this location?": + "کیا آپ واقعی اس لوکیشن کو ڈیلیٹ کرنا چاہتے ہیں؟", + "Change Work location?": "کام کی جگہ تبدیل کریں؟", + "Change Home location?": "گھر کی لوکیشن تبدیل کریں؟", + "Submit a Complaint": "شکایت درج کریں", + "Submit Complaint": "شکایت جمع کرائیں", + "No trip history found": "کوئی سفری تاریخ نہیں ملی", + "Your past trips will appear here.": + "آپ کے پچھلے سفر یہاں ظاہر ہوں گے۔", + "1. Describe Your Issue": "1. اپنا مسئلہ بیان کریں", + "Enter your complaint here...": "اپنی شکایت یہاں لکھیں...", + "2. Attach Recorded Audio": "2. ریکارڈ شدہ آڈیو منسلک کریں", + "No audio files found.": "کوئی آڈیو فائل نہیں ملی۔", + "Confirm Attachment": "منسلک کرنے کی تصدیق کریں", + "Attach this audio file?": "کیا یہ آڈیو فائل منسلک کریں؟", + "Uploaded": "اپ لوڈ ہو گیا", + "3. Review Details & Response": "3. تفصیلات اور جواب کا جائزہ لیں", + "Date": "تاریخ", + "Today's Promos": "آج کے پروموز", + "No promos available right now.": "ابھی کوئی پرومو دستیاب نہیں ہے۔", + "Check back later for new offers!": + "نئی پیشکشوں کے لیے بعد میں دوبارہ چیک کریں!", + "Valid Until:": "تک درست:", + "CODE": "کوڈ", + "Login": "لاگ ان", + "Sign in for a seamless experience": + "بہترین تجربے کے لیے سائن ان کریں", + "Sign In with Google": "گوگل کے ساتھ سائن ان کریں", + "Sign in with Apple": "ایپل کے ساتھ سائن ان کریں", + "User not found": "صارف نہیں ملا", + "Need assistance? Contact us": "مدد چاہیے؟ ہم سے رابطہ کریں", + "Email": "ای میل", + "Your email address": "آپ کا ای میل ایڈریس", + "Enter a valid email": "ایک درست ای میل درج کریں", + "Password": "پاس ورڈ", + "Your password": "آپ کا پاس ورڈ", + "Enter your password": "اپنا پاس ورڈ درج کریں", + "Submit": "جمع کرائیں", + "Terms of Use & Privacy Notice": + "استعمال کی شرائط اور رازداری کا نوٹس", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the ": + "نیچے \"میں متفق ہوں\" کو منتخب کر کے، میں تصدیق کرتا ہوں کہ میں نے پڑھ لیا ہے اور اتفاق کرتا ہوں ", + "Terms of Use": "استعمال کی شرائط", + " and acknowledge the ": " اور تسلیم کرتا ہوں ", + "Privacy Notice": "رازداری کا نوٹس", + " . I am at least 18 years old.": " ۔ میری عمر کم از کم 18 سال ہے۔", + "I Agree": "میں متفق ہوں", + "Continue": "جاری رکھیں", + "Enable Location": "لوکیشن آن کریں", + "To give you the best experience, we need to know where you are. Your location is used to find nearby captains and for pickups.": + "بہترین تجربہ دینے کے لیے ہمیں آپ کی لوکیشن جاننے کی ضرورت ہے۔ آپ کی لوکیشن قریبی کپتانوں کو تلاش کرنے کے لیے استعمال ہوتی ہے۔", + "Allow Location Access": "لوکیشن تک رسائی کی اجازت دیں", + "Welcome to Intaleq!": "Intaleq میں خوش آمدید!", + "Before we start, please review our terms.": + "شروع کرنے سے پہلے، براہ کرم ہماری شرائط کا جائزہ لیں۔", + "Your journey starts here": "آپ کا سفر یہاں سے شروع ہوتا ہے", + "Cancel Search": "تلاش منسوخ کریں", + "Set pickup location": "پک اپ لوکیشن سیٹ کریں", + "Move the map to adjust the pin": + "پن کو ایڈجسٹ کرنے کے لیے نقشہ منتقل کریں", + "Searching for the nearest captain...": + "قریب ترین کپتان کی تلاش جاری ہے...", + "No one accepted? Try increasing the fare.": + "کسی نے قبول نہیں کیا؟ کرایہ بڑھانے کی کوشش کریں۔", + "Increase Your Trip Fee (Optional)": "اپنی ٹرپ فیس بڑھائیں (اختیاری)", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "ہمیں ابھی تک کوئی ڈرائیور نہیں ملا۔ اپنی پیشکش کو ڈرائیوروں کے لیے پرکشش بنانے کے لیے ٹرپ فیس بڑھانے پر غور کریں۔", + "No, thanks": "نہیں، شکریہ", + "Increase Fee": "فیس بڑھائیں", + "Copy": "کاپی", + "Promo Copied!": "پرمو کاپی ہو گیا!", + "Code": "کوڈ", + "copied to clipboard": "کلپ بورڈ پر کاپی ہو گیا", + "Price": "قیمت", + "Intaleq's Response": "Intaleq کا جواب", + "Awaiting response...": "جواب کا انتظار ہے...", + "Audio file not attached": "آڈیو فائل منسلک نہیں ہے", + "The audio file is not uploaded yet.\\nDo you want to submit without it?": + "آڈیو فائل ابھی تک اپ لوڈ نہیں ہوئی ہے۔\\nکیا آپ اس کے بغیر جمع کرانا چاہتے ہیں؟", + "deleted": "حذف کر دیا گیا", + "To Work": "کام پر", + "Work Saved": "کام محفوظ ہو گیا", + "To Home": "گھر پر", + "Home Saved": "گھر محفوظ ہو گیا", + "Destination selected": "منزل منتخب ہو گئی", + "Now select start pick": "اب پک اپ پوائنٹ منتخب کریں", + "OK": "ٹھیک ہے", + "Confirm Pick-up Location": "پک اپ لوکیشن کی تصدیق کریں", + "Set Location on Map": "نقشے پر لوکیشن سیٹ کریں", + "Leave a detailed comment (Optional)": + "تفصیلی تبصرہ چھوڑیں (اختیاری)", + "Share your experience to help us improve...": + "بہتر بنانے میں ہماری مدد کے لیے اپنا تجربہ شیئر کریں...", + "Your valuable feedback helps us improve our service quality.": + "آپ کی قیمتی رائے ہماری سروس کے معیار کو بہتر بنانے میں مدد کرتی ہے۔", + "witout zero": "صفر کے بغیر", + "Top up Balance": "بیلنس ٹاپ اپ کریں", + "An error occurred": "ایک خرابی پیش آ گئی", + "Send WhatsApp Message": "واٹس ایپ پیغام بھیجیں", + "How was your trip with": "آپ کا سفر کیسا رہا", + "Drawing route on map...": "نقشے پر راستہ بنایا جا رہا ہے...", + "Please wait while we prepare your trip.": + "براہ کرم انتظار کریں جب تک ہم آپ کا سفر تیار کرتے ہیں۔", + "Submit Rating": "ریٹنگ جمع کرائیں", + "Call Support": "سپورٹ کو کال کریں", + "You can contact us during working hours from 10:00 - 16:00.": + "آپ ہم سے دفتری اوقات 10:00 - 16:00 کے دوران رابطہ کر سکتے ہیں۔", + "Intaleq is the safest and most reliable ride-sharing app designed especially for passengers in Syria. We provide a comfortable, respectful, and affordable riding experience with features that prioritize your safety and convenience. Our trusted captains are verified, insured, and supported by regular car maintenance carried out by top engineers. We also offer on-road support services to make sure every trip is smooth and worry-free. With Intaleq, you enjoy quality, safety, and peace of mind—every time you ride.": + "Intaleq سب سے محفوظ اور قابل اعتماد رائیڈ شیئرنگ ایپ ہے جو خاص طور پر مسافروں کے لیے بنائی گئی ہے۔ ہم ایک آرام دہ، باوقار اور سستا سفر فراہم کرتے ہیں۔ ہمارے قابل اعتماد کپتان تصدیق شدہ ہیں۔ Intaleq کے ساتھ، آپ ہر بار معیار، حفاظت اور ذہنی سکون کا لطف اٹھاتے ہیں۔", + "Work time is from 10:00 AM to 16:00 PM.\nYou can send a WhatsApp message or email.": + "کام کا وقت صبح 10:00 بجے سے شام 4:00 بجے تک ہے۔\nآپ واٹس ایپ پیغام یا ای میل بھیج سکتے ہیں۔", + "Sorry": "معذرت", + "Customer MSISDN doesn’t have customer wallet": + "کسٹمر نمبر کا والٹ نہیں ہے", + "Please enter the number without the leading 0": + "براہ کرم شروع میں 0 کے بغیر نمبر درج کریں", + "Please enter your phone number": "براہ کرم اپنا فون نمبر درج کریں", + "Phone number seems too short": "فون نمبر بہت چھوٹا معلوم ہوتا ہے", + "No cars are available at the moment. Please try again later.": + "اس وقت کوئی کار دستیاب نہیں ہے۔ براہ کرم بعد میں کوشش کریں۔", + "Nearest Car: ~": "قریب ترین کار: ~", + "Nearest Car": "قریب ترین کار", + "No cars nearby": "قریب میں کوئی کار نہیں", + "Favorite Places": "پسندیدہ مقامات", + "No favorite places yet!": "ابھی تک کوئی پسندیدہ مقام نہیں!", + "from your favorites": "آپ کے پسندیدہ سے", + "Back": "واپس", + "Enter your code below to apply the discount.": + "رعایت حاصل کرنے کے لیے اپنا کوڈ نیچے درج کریں۔", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the": + "نیچے \"میں متفق ہوں\" کو منتخب کر کے، میں تصدیق کرتا ہوں کہ میں نے پڑھ لیا ہے اور اتفاق کرتا ہوں", + "and acknowledge the": "اور تسلیم کرتا ہوں", + "Enable Location Access": "لوکیشن تک رسائی فعال کریں", + "We need your location to find nearby drivers for pickups and drop-offs.": + "پک اپ اور ڈراپ آف کے لیے قریبی ڈرائیوروں کو تلاش کرنے کے لیے ہمیں آپ کی لوکیشن کی ضرورت ہے۔", + "You should restart app to change language": + "زبان تبدیل کرنے کے لیے آپ کو ایپ کو دوبارہ شروع کرنا چاہیے", + "Home Page": "ہوم پیج", + "To change Language the App": "ایپ کی زبان تبدیل کرنے کے لیے", + "Learn more about our app and mission": + "ہماری ایپ اور مشن کے بارے میں مزید جانیں", + "Promos For Today": "آج کے پروموز", + "Choose your ride": "اپنی سواری کا انتخاب کریں", + "Your Journey Begins Here": "آپ کا سفر یہاں سے شروع ہوتا ہے", + "Bonus gift": "بونس تحفہ", + "Pay": "ادائیگی", + "Get": "حاصل کریں", + "Send to Driver Again": "ڈرائیور کو دوبارہ بھیجیں", + "Driver Name:": "ڈرائیور کا نام:", + "No trip data available": "کوئی ٹرپ ڈیٹا دستیاب نہیں", + "Car Plate:": "کار کی پلیٹ:", + "remaining": "باقی", + "Order Cancelled": "آرڈر منسوخ", + "You canceled VIP trip": "آپ نے VIP ٹرپ منسوخ کر دیا", + "Passenger cancelled order": "مسافر نے آرڈر منسوخ کر دیا", + "Your trip is scheduled": "آپ کا سفر شیڈول ہے", + "Don't forget your ride!": "اپنی سواری نہ بھولیں!", + "Trip updated successfully": "سفر کامیابی سے اپ ڈیٹ ہو گیا", + "Car Make:": "کار کی ساخت:", + "Car Model:": "کار کا ماڈل:", + "Car Color:": "کار کا رنگ:", + "Driver Phone:": "ڈرائیور کا فون:", + "Pre-booking": "پری بکنگ", + "Waiting VIP": "VIP کا انتظار", + "Driver List": "ڈرائیور لسٹ", + "Confirm Trip": "سفر کی تصدیق کریں", + "Select date and time of trip": "سفر کی تاریخ اور وقت منتخب کریں", + "Date and Time Picker": "تاریخ اور وقت چننے والا", + "Trip Status:": "سفر کی حیثیت:", + "pending": "زیر التواء", + "accepted": "قبول شدہ", + "rejected": "مسترد", + "Apply": "لاگو کریں", + "Enter your promo code": "اپنا پرومو کوڈ درج کریں", + "Apply Promo Code": "پرومو کوڈ لاگو کریں", + "Scheduled Time:": "شیڈول ٹائم:", + "No drivers available": "کوئی ڈرائیور دستیاب نہیں", + "No drivers available at the moment. Please try again later.": + "اس وقت کوئی ڈرائیور دستیاب نہیں ہے۔ براہ کرم بعد میں کوشش کریں۔", + "you have a negative balance of": "آپ کا منفی بیلنس ہے", + "Please try again in a few moments": + "براہ کرم کچھ لمحوں میں دوبارہ کوشش کریں", + "Unknown Driver": "نامعلوم ڈرائیور", + "in your": "آپ کے میں", + "The driver accepted your order for": + "ڈرائیور نے آپ کا آرڈر قبول کر لیا برائے", + "wallet due to a previous trip.": "پچھلے سفر کی وجہ سے والٹ۔", + "rides": "سواریاں", + "Add Work": "کام شامل کریں", + "The reason is": "وجہ یہ ہے", + "User does not have a wallet #1652": "صارف کے پاس والٹ نہیں ہے #1652", + "Price of trip": "سفر کی قیمت", + "From:": "سے:", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Intaleq اور ڈیلیوری ٹرپس کے لیے، قیمت کا حساب متحرک طور پر لگایا جاتا ہے۔ کمفرٹ ٹرپس کے لیے، قیمت وقت اور فاصلے پر مبنی ہوتی ہے۔", + "Phone Wallet Saved Successfully": "فون والٹ کامیابی سے محفوظ ہو گیا", + "Add wallet phone you use": "اپنا استعمال شدہ والٹ فون شامل کریں", + "Update Available": "اپ ڈیٹ دستیاب ہے", + "Phone number must be exactly 11 digits long": + "فون نمبر بالکل 11 ہندسوں کا ہونا چاہیے", + "Insert Wallet phone number": "والٹ فون نمبر درج کریں", + "Phone number isn't an Egyptian phone number": + "فون نمبر درست نہیں ہے", + "A new version of the app is available. Please update to the latest version.": + "ایپ کا نیا ورژن دستیاب ہے۔ براہ کرم تازہ ترین ورژن پر اپ ڈیٹ کریں۔", + "We use location to get accurate and nearest passengers for you": + "ہم آپ کے لیے درست اور قریبی مسافروں کو حاصل کرنے کے لیے لوکیشن کا استعمال کرتے ہیں", + "This ride is already applied by another driver.": + "یہ سواری پہلے ہی کسی اور ڈرائیور نے لے لی ہے۔", + "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": + "ہم قریبی دستیاب ڈرائیور کو تلاش کرنے اور درست پک اپ اور ڈراپ آف معلومات فراہم کرنے کے لیے آپ کی دقیق لوکیشن کا استعمال کرتے ہیں۔ آپ ترتیبات میں اس کا انتظام کر سکتے ہیں۔", + "Where are you, sir?": "جناب آپ کہاں ہیں؟", + "I've been trying to reach you but your phone is off.": + "میں آپ سے رابطہ کرنے کی کوشش کر رہا ہوں لیکن آپ کا فون بند ہے۔", + "Please don't be late": "براہ کرم دیر نہ کریں", + "Please don't be late, I'm waiting for you at the specified location.": + "براہ کرم دیر نہ کریں، میں مقررہ جگہ پر آپ کا انتظار کر رہا ہوں۔", + "My location is correct. You can search for me using the navigation app": + "میری لوکیشن درست ہے۔ آپ نیویگیشن ایپ کا استعمال کرتے ہوئے مجھے تلاش کر سکتے ہیں", + "Hello, I'm at the agreed-upon location": + "ہیلو، میں طے شدہ جگہ پر ہوں", + "How much longer will you be?": "آپ کو اور کتنا وقت لگے گا؟", + "Phone number is verified before": "فون نمبر پہلے ہی تصدیق شدہ ہے", + "Change Ride": "سواری تبدیل کریں", + "You can change the destination by long-pressing any point on the map": + "آپ نقشے پر کسی بھی نقطہ کو طویل دبا کر منزل تبدیل کر سکتے ہیں", + "Pick from map destination": "نقشے سے منزل کا انتخاب کریں", + "Pick or Tap to confirm": "منتخب کریں یا تصدیق کے لیے ٹیپ کریں", + "Accepted your order": "آپ کا آرڈر قبول کر لیا", + "Order Accepted": "آرڈر قبول ہو گیا", + "with type": "قسم کے ساتھ", + "accepted your order at price": "اس قیمت پر آپ کا آرڈر قبول کیا", + "you canceled order": "آپ نے آرڈر منسوخ کر دیا", + "If you want order to another person": + "اگر آپ کسی اور شخص کو آرڈر کرنا چاہتے ہیں", + "upgrade price": "قیمت بڑھائیں", + "airport": "ایئرپورٹ", + "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": + "لچکدار راستے اور اسٹاپ پوائنٹس والی آرام دہ کار کے لیے بہترین انتخاب۔", + "You can upgrade price to may driver accept your order": + "آپ قیمت بڑھا سکتے ہیں تاکہ ڈرائیور آپ کا آرڈر قبول کر لے", + "Change Route": "راستہ تبدیل کریں", + "No Captain Accepted Your Order": + "کسی کپتان نے آپ کا آرڈر قبول نہیں کیا", + "We are looking for a captain but the price may increase to let a captain accept": + "ہم کپتان کی تلاش کر رہے ہیں لیکن قیمت بڑھ سکتی ہے", + "No, I want to cancel this trip": + "نہیں، میں یہ سفر منسوخ کرنا چاہتا ہوں", + "Attention": "توجہ", + "Trip Cancelled. The cost of the trip will be deducted from your wallet.": + "سفر منسوخ ہو گیا۔ سفر کی قیمت آپ کے والٹ سے کاٹ لی جائے گی۔", + "You will be charged for the cost of the driver coming to your location.": + "ڈرائیور کے آپ کی لوکیشن پر آنے کی قیمت آپ سے وصول کی جائے گی۔", + "reject your order.": "آپ کا آرڈر مسترد کریں۔", + "Order Under Review": "آرڈر زیر جائزہ", + "is reviewing your order. They may need more information or a higher price.": + "آپ کے آرڈر کا جائزہ لے رہا ہے۔ انہیں مزید معلومات یا زیادہ قیمت کی ضرورت ہو سکتی ہے۔", + "Vibration": "وائبریشن", + "Resend code": "کوڈ دوبارہ بھیجیں", + "change device": "ڈیوائس تبدیل کریں", + "Device Change Detected": "ڈیوائس کی تبدیلی کا پتہ چلا", + "You can only use one device at a time. This device will now be set as your active device.": + "آپ ایک وقت میں صرف ایک ڈیوائس استعمال کر سکتے ہیں۔ اب یہ ڈیوائس آپ کی فعال ڈیوائس کے طور پر سیٹ ہو جائے گی۔", + "Click here point": "یہاں کلک کریں", + "Are you want to change": "کیا آپ تبدیل کرنا چاہتے ہیں", + "by": "بذریعہ", + "Enter your complaint here": "اپنی شکایت یہاں درج کریں", + "Please enter your complaint.": "براہ کرم اپنی شکایت درج کریں۔", + "Complaint data saved successfully": + "شکایت کا ڈیٹا کامیابی سے محفوظ ہو گیا", + "Trip Monitor": "سفر مانیٹر", + "Insert SOS Phone": "SOS فون درج کریں", + "Add SOS Phone": "SOS فون شامل کریں", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "پیارے ،\n\n🚀 میں نے ابھی ایک دلچسپ سفر شروع کیا ہے اور میں اپنے سفر کی تفصیلات اور اپنی موجودہ لوکیشن آپ کے ساتھ ریئل ٹائم میں شیئر کرنا چاہتا ہوں! براہ کرم Intaleq ایپ ڈاؤن لوڈ کریں۔ یہ آپ کو میرے سفر کی تفصیلات اور میری تازہ ترین لوکیشن دیکھنے کی اجازت دے گی۔\n\n👉 ڈاؤن لوڈ لنک: \nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nمیں اپنے ایڈونچر کے دوران آپ کو قریب رکھنے کا منتظر ہوں!\n\nIntaleq ،", + "Send Intaleq app to him": "اسے Intaleq ایپ بھیجیں", + "No passenger found for the given phone number": + "دیے گئے فون نمبر کے لیے کوئی مسافر نہیں ملا", + "No user found for the given phone number": + "دیے گئے فون نمبر کے لیے کوئی صارف نہیں ملا", + "This price is": "یہ قیمت ہے", + "Work": "کام", + "Add Home": "گھر شامل کریں", + "Notifications": "اطلاعات", + "💳 Pay with Credit Card": "💳 کریڈٹ کارڈ سے ادائیگی کریں", + "⚠️ You need to choose an amount!": + "⚠️ آپ کو ایک رقم منتخب کرنے کی ضرورت ہے!", + "💰 Pay with Wallet": "💰 والٹ سے ادائیگی کریں", + "You must restart the app to change the language.": + "زبان تبدیل کرنے کے لیے آپ کو ایپ دوبارہ شروع کرنی چاہیے۔", + "joined": "شامل ہوا", + "Driver joined the channel": "ڈرائیور چینل میں شامل ہو گیا", + "Driver left the channel": "ڈرائیور نے چینل چھوڑ دیا", + "Call Page": "کال پیج", + "Call Left": "بقیہ کالز", + " Next as Cash !": " اگلا نقد کے طور پر!", + "To use Wallet charge it": "والٹ استعمال کرنے کے لیے اسے چارج کریں", + "We are searching for the nearest driver to you": + "ہم آپ کے قریب ترین ڈرائیور کو تلاش کر رہے ہیں", + "Best choice for cities": "شہروں کے لیے بہترین انتخاب", + "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": + "آنا جانا: شہروں کے درمیان آسان سفر کے لیے راؤنڈ ٹرپ سروس، آسان اور قابل اعتماد۔", + "This trip is for women only": "یہ سفر صرف خواتین کے لیے ہے", + "Total budgets on month": "مہینے کا کل بجٹ", + "You have call from driver": "ڈرائیور کی کال ہے", + "Intaleq": "Intaleq", + "passenger agreement": "مسافر معاہدہ", + "To become a passenger, you must review and agree to the ": + "مسافر بننے کے لیے، آپ کو جائزہ لینا ہوگا اور اتفاق کرنا ہوگا ", + "agreement subtitle": + "جاری رکھنے کے لیے، آپ کو استعمال کی شرائط اور رازداری کی پالیسی کا جائزہ لینا اور اتفاق کرنا چاہیے۔", + "terms of use": "استعمال کی شرائط", + " and acknowledge our Privacy Policy.": + " اور ہماری رازداری کی پالیسی کو تسلیم کریں۔", + "and acknowledge our": "اور تسلیم کریں ہماری", + "privacy policy": "رازداری کی پالیسی۔", + "i agree": "میں متفق ہوں", + "Driver already has 2 trips within the specified period.": + "مقررہ مدت میں ڈرائیور کے پاس پہلے ہی 2 سفر ہیں۔", + "The invitation was sent successfully": + "دعوت نامہ کامیابی سے بھیج دیا گیا", + "You should select your country": "آپ کو اپنا ملک منتخب کرنا چاہیے", + "Scooter": "سکوٹر", + "A trip with a prior reservation, allowing you to choose the best captains and cars.": + "پیشگی ریزرویشن کے ساتھ سفر، جو آپ کو بہترین کپتانوں اور کاروں کا انتخاب کرنے کی اجازت دیتا ہے۔", + "Mishwar Vip": "مشوار VIP", + "The driver waiting you in picked location .": + "ڈرائیور منتخب جگہ پر آپ کا انتظار کر رہا ہے۔", + "About Us": "ہمارے بارے میں", + "You can change the vibration feedback for all buttons": + "آپ تمام بٹنوں کے لیے وائبریشن فیڈبیک تبدیل کر سکتے ہیں", + "Most Secure Methods": "انتہائی محفوظ طریقے", + "In-App VOIP Calls": "ان-ایپ VOIP کالز", + "Recorded Trips for Safety": "حفاظت کے لیے ریکارڈ شدہ سفر", + "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": + "\nہم سستی کو بھی ترجیح دیتے ہیں، مسابقتی قیمتوں کی پیشکش کرتے ہیں تاکہ آپ کی سواریوں کو قابل رسائی بنایا جا سکے۔", + "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": + "Intaleq ایک رائیڈ شیئرنگ ایپ ہے جو آپ کی حفاظت اور سستی کو مدنظر رکھتے ہوئے ڈیزائن کی گئی ہے۔ ہم آپ کو آپ کے علاقے میں قابل اعتماد ڈرائیوروں سے جوڑتے ہیں۔", + "Sign In by Apple": "ایپل کے ذریعے سائن ان کریں", + "Sign In by Google": "گوگل کے ذریعے سائن ان کریں", + "How do I request a ride?": "میں سواری کی درخواست کیسے کروں؟", + "Step-by-step instructions on how to request a ride through the Intaleq app.": + "Intaleq ایپ کے ذریعے سواری کی درخواست کرنے کے طریقے پر مرحلہ وار ہدایات۔", + "What types of vehicles are available?": + "کس قسم کی گاڑیاں دستیاب ہیں؟", + "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": + "Intaleq آپ کی ضروریات کے مطابق گاڑیوں کے مختلف آپشنز پیش کرتا ہے۔", + "How can I pay for my ride?": + "میں اپنی سواری کے لیے ادائیگی کیسے کر سکتا ہوں؟", + "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": + "Intaleq آپ کی سہولت کے لیے ادائیگی کے متعدد طریقے پیش کرتا ہے۔", + "Can I cancel my ride?": "کیا میں اپنی سواری منسوخ کر سکتا ہوں؟", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "ہاں، آپ اپنی سواری منسوخ کر سکتے ہیں، لیکن براہ کرم نوٹ کریں کہ منسوخی کی فیس لاگو ہو سکتی ہے۔", + "Driver Registration & Requirements": "ڈرائیور رجسٹریشن اور تقاضے", + "How can I register as a driver?": + "میں بطور ڈرائیور کیسے رجسٹر ہو سکتا ہوں؟", + "What are the requirements to become a driver?": + "ڈرائیور بننے کے لیے کیا تقاضے ہیں؟", + "Visit our website or contact Intaleq support for information on driver registration and requirements.": + "ڈرائیور رجسٹریشن اور تقاضوں کے بارے میں معلومات کے لیے ہماری ویب سائٹ ملاحظہ کریں یا سپورٹ سے رابطہ کریں۔", + "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": + "Intaleq ان-ایپ چیٹ کی فعالیت فراہم کرتا ہے۔", + "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": + "Intaleq آپ کی حفاظت کو ترجیح دیتا ہے۔", + "Frequently Questions": "اکثر پوچھے گئے سوالات", + "User does not exist.": "صارف موجود نہیں ہے۔", + "We need your phone number to contact you and to help you.": + "ہمیں آپ سے رابطہ کرنے اور آپ کی مدد کرنے کے لیے آپ کے فون نمبر کی ضرورت ہے۔", + "You will recieve code in sms message": + "آپ کو SMS پیغام میں کوڈ موصول ہوگا", + "Please enter": "براہ کرم درج کریں", + "We need your phone number to contact you and to help you receive orders.": + "ہمیں آپ سے رابطہ کرنے اور آرڈرز وصول کرنے میں آپ کی مدد کرنے کے لیے آپ کے فون نمبر کی ضرورت ہے۔", + "The full name on your criminal record does not match the one on your driver's license. Please verify and provide the correct documents.": + "آپ کے پولیس ریکارڈ پر موجود پورا نام آپ کے ڈرائیونگ لائسنس سے میل نہیں کھاتا۔", + "The national number on your driver's license does not match the one on your ID document. Please verify and provide the correct documents.": + "آپ کے ڈرائیونگ لائسنس پر قومی نمبر آپ کے شناختی کارڈ سے میل نہیں کھاتا۔", + "Capture an Image of Your Criminal Record": + "اپنے پولیس کلیئرنس کی تصویر لیں", + "IssueDate": "اجراء کی تاریخ", + "Capture an Image of Your car license front": + "اپنی گاڑی کی رجسٹریشن کے سامنے کی تصویر لیں", + "Capture an Image of Your ID Document front": + "اپنے شناختی کارڈ کے سامنے کی تصویر لیں", + "NationalID": "شناختی کارڈ نمبر", + "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": + "آپ Intaleq ایپ کو اپنے دوستوں کے ساتھ شیئر کر سکتے ہیں اور انعامات حاصل کر سکتے ہیں", + "FullName": "پورا نام", + "No invitation found yet!": "ابھی تک کوئی دعوت نامہ نہیں ملا!", + "InspectionResult": "معائنے کا نتیجہ", + "Criminal Record": "پولیس کلیئرنس", + "The email or phone number is already registered.": + "ای میل یا فون نمبر پہلے سے رجسٹرڈ ہے۔", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "ڈرائیور بننے کے لیے، آپ کو اپنا ڈرائیونگ لائسنس، شناختی دستاویز، اور گاڑی کی رجسٹریشن دستاویز اپ لوڈ کرنے کی ضرورت ہے۔", + "Documents check": "دستاویزات کی جانچ", + "Driver's License": "ڈرائیونگ لائسنس", + "for your first registration!": "آپ کی پہلی رجسٹریشن کے لیے!", + "Get it Now!": "ابھی حاصل کریں!", + "before": "پہلے", + "Code not approved": "کوڈ منظور نہیں ہوا", + "3000 LE": "3000 روپیہ", + "Do you have an invitation code from another driver?": + "کیا آپ کے پاس کسی دوسرے ڈرائیور کا دعوتی کوڈ ہے؟", + "Paste the code here": "کوڈ یہاں پیسٹ کریں", + "No, I don't have a code": "نہیں، میرے پاس کوڈ نہیں ہے", + "Code approved": "کوڈ منظور ہو گیا", + "Install our app:": "ہماری ایپ انسٹال کریں:", + "Invite another driver and both get a gift after he completes 100 trips!": + "دوسرے ڈرائیور کو مدعو کریں اور اس کے 100 سفر مکمل کرنے کے بعد دونوں تحفہ حاصل کریں!", + "Invite": "دعوت دیں", + "Are you sure?": "کیا آپ کو یقین ہے؟", + "This will delete all recorded files from your device.": + "یہ آپ کے آلے سے تمام ریکارڈ شدہ فائلیں حذف کر دے گا۔", + "Select a file": "فائل منتخب کریں", + "Select a File": "ایک فائل منتخب کریں", + "Delete": "حذف کریں", + "attach audio of complain": "شکایت کی آڈیو منسلک کریں", + "Phone Number Check": "فون نمبر چیک", + "Drivers received orders": "ڈرائیوروں کو آرڈر موصول ہوئے", + "No audio files recorded.": "کوئی آڈیو فائل ریکارڈ نہیں ہوئی۔", + "This is for delivery or a motorcycle.": + "یہ ڈیلیوری یا موٹر سائیکل کے لیے ہے۔", + "Intaleq Reminder": "Intaleq یاد دہانی", + "It's time to check the Intaleq app!": + "Intaleq ایپ چیک کرنے کا وقت ہے!", + "you must insert token code": "آپ کو ٹوکن کوڈ داخل کرنا ہوگا", + "Something went wrong. Please try again.": + "کچھ غلط ہو گیا۔ براہ کرم دوبارہ کوشش کریں۔", + "Trip Details": "سفر کی تفصیلات", + "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": + "سیاق و سباق کوئی شکایت کی تفصیلات فراہم نہیں کرتا۔", + "Submit Your Complaint": "اپنی شکایت جمع کرائیں", + "Status": "حیثیت", + "Choose from contact": "رابطے سے منتخب کریں", + "attach correct audio": "درست آڈیو منسلک کریں", + "be sure": "یقینی بنائیں", + "Audio uploaded successfully.": "آڈیو کامیابی سے اپ لوڈ ہو گئی۔", + "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": + "جدید ترین کار ماڈلز کے متلاشی مسافروں کے لیے بہترین", + "Share this code with your friends and earn rewards when they use it!": + "اس کوڈ کو اپنے دوستوں کے ساتھ شیئر کریں اور انعامات حاصل کریں!", + "Enter phone": "فون درج کریں", + "complete, you can claim your gift": + "مکمل، آپ اپنا تحفہ حاصل کر سکتے ہیں", + "When": "جب", + "Enter driver's phone": "ڈرائیور کا فون درج کریں", + "Send Invite": "دعوت نامہ بھیجیں", + "Show Invitations": "دعوت نامے دکھائیں", + "License Type": "لائسنس کی قسم", + "National Number": "قومی نمبر", + "Name (Arabic)": "نام (اردو)", + "Name (English)": "نام (انگریزی)", + "Address": "پتہ", + "Issue Date": "اجراء کی تاریخ", + "Expiry Date": "میعاد ختم ہونے کی تاریخ", + "License Categories": "لائسنس کے زمرے", + "driver_license": "ڈرائیونگ لائسنس", + "Capture an Image of Your Driver License": + "اپنے ڈرائیونگ لائسنس کی تصویر لیں", + "ID Documents Back": "شناختی دستاویزات کی پشت", + "National ID": "شناختی کارڈ", + "Occupation": "پیشہ", + "Religion": "مذہب", + "Full Name (Marital)": "پورا نام", + "Expiration Date": "میعاد ختم ہونے کی تاریخ", + "Capture an Image of Your ID Document Back": + "اپنے شناختی کارڈ کی پشت کی تصویر لیں", + "ID Documents Front": "شناختی دستاویزات کا سامنے کا حصہ", + "First Name": "پہلا نام", + "CardID": "کارڈ آئی ڈی", + "Vehicle Details Front": "گاڑی کی تفصیلات سامنے", + "Plate Number": "پلیٹ نمبر", + "Owner Name": "مالک کا نام", + "Vehicle Details Back": "گاڑی کی تفصیلات پیچھے", + "Make": "میک", + "Model": "ماڈل", + "Year": "سال", + "Chassis": "چیسس", + "Color": "رنگ", + "Displacement": "ڈسپلیسمنٹ", + "Fuel": "ایندھن", + "Tax Expiry Date": "ٹیکس کی میعاد ختم ہونے کی تاریخ", + "Inspection Date": "معائنے کی تاریخ", + "Capture an Image of Your car license back": + "اپنی گاڑی کے لائسنس کی پشت کی تصویر لیں", + "Capture an Image of Your Driver's License": + "اپنے ڈرائیونگ لائسنس کی تصویر لیں", + "Sign in with Google for easier email and name entry": + "آسان ای میل اور نام کے اندراج کے لیے گوگل کے ساتھ سائن ان کریں", + "You will choose allow all the time to be ready receive orders": + "آپ آرڈرز وصول کرنے کے لیے ہر وقت اجازت کا انتخاب کریں گے", + "Get to your destination quickly and easily.": + "اپنی منزل پر تیزی اور آسانی سے پہنچیں۔", + "Enjoy a safe and comfortable ride.": + "محفوظ اور آرام دہ سواری کا لطف اٹھائیں۔", + "Choose Language": "زبان منتخب کریں", + "Pay with Wallet": "والٹ سے ادائیگی کریں", + "Invalid MPIN": "غلط MPIN", + "Invalid OTP": "غلط OTP", + "Enter your email address": "اپنا ای میل ایڈریس درج کریں", + "Please enter Your Email.": "براہ کرم اپنا ای میل درج کریں۔", + "Enter your phone number": "اپنا فون نمبر درج کریں", + "Please enter your phone number.": "براہ کرم اپنا فون نمبر درج کریں۔", + "Please enter Your Password.": "براہ کرم اپنا پاس ورڈ درج کریں۔", + "if you dont have account": "اگر آپ کا اکاؤنٹ نہیں ہے", + "Register": "رجسٹر کریں", + "Accept Ride's Terms & Review Privacy Notice": + "سفر کی شرائط قبول کریں اور رازداری کا نوٹس دیکھیں", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "نیچے 'میں متفق ہوں' کو منتخب کر کے، میں نے استعمال کی شرائط کا جائزہ لیا ہے اور ان سے اتفاق کرتا ہوں۔", + "First name": "پہلا نام", + "Enter your first name": "اپنا پہلا نام درج کریں", + "Please enter your first name.": "براہ کرم اپنا پہلا نام درج کریں۔", + "Last name": "آخری نام", + "Enter your last name": "اپنا آخری نام درج کریں", + "Please enter your last name.": "براہ کرم اپنا آخری نام درج کریں۔", + "City": "شہر", + "Please enter your City.": "براہ کرم اپنا شہر درج کریں۔", + "Verify Email": "ای میل کی تصدیق کریں", + "We sent 5 digit to your Email provided": + "ہم نے آپ کے فراہم کردہ ای میل پر 5 ہندسے بھیجے ہیں", + "5 digit": "5 ہندسے", + "Send Verification Code": "تصدیقی کوڈ بھیجیں", + "Your Ride Duration is ": "آپ کی سواری کا دورانیہ ہے ", + "You will be thier in": "آپ وہاں ہوں گے میں", + "You trip distance is": "آپ کے سفر کا فاصلہ ہے", + "Fee is": "فیس ہے", + "From : ": "سے: ", + "To : ": "تک: ", + "Add Promo": "پرومو شامل کریں", + "Confirm Selection": "انتخاب کی تصدیق کریں", + "distance is": "فاصلہ ہے", + "Privacy Policy": "رازداری کی پالیسی", + "Intaleq LLC": "Intaleq LLC", + "Syria's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "پاکستان کی صف اول کی رائیڈ شیئرنگ سروس۔", + "Intaleq is the first ride-sharing app in Syria, designed to connect you with the nearest drivers for a quick and convenient travel experience.": + "Intaleq پہلی رائیڈ شیئرنگ ایپ ہے جو آپ کو قریب ترین ڈرائیوروں سے جوڑتی ہے۔", + "Why Choose Intaleq?": "Intaleq کا انتخاب کیوں کریں؟", + "Closest to You": "آپ کے قریب ترین", + "We connect you with the nearest drivers for faster pickups and quicker journeys.": + "ہم آپ کو تیز تر پک اپ کے لیے قریب ترین ڈرائیوروں سے جوڑتے ہیں۔", + "Uncompromising Security": "غیر متزلزل سیکیورٹی", + "Lady Captains Available": "خواتین کپتان دستیاب ہیں", + "Recorded Trips (Voice & AI Analysis)": + "ریکارڈ شدہ سفر (آواز اور AI تجزیہ)", + "Fastest Complaint Response": "تیز ترین شکایت کا جواب", + "Our dedicated customer service team ensures swift resolution of any issues.": + "ہماری کسٹمر سروس ٹیم مسائل کے فوری حل کو یقینی بناتی ہے۔", + "Affordable for Everyone": "ہر ایک کے لیے سستا", + "Frequently Asked Questions": "اکثر پوچھے گئے سوالات", + "Getting Started": "شروع کرنا", + "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": + "بس ایپ کھولیں، منزل درج کریں اور 'سواری کی درخواست کریں' پر ٹیپ کریں۔", + "Vehicle Options": "گاڑی کے اختیارات", + "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": + "Intaleq اکانومی، کمفرٹ اور لگژری سمیت مختلف آپشنز پیش کرتا ہے۔", + "Payments": "ادائیگیاں", + "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": + "آپ نقد یا کارڈ کے ذریعے ادائیگی کر سکتے ہیں۔", + "Ride Management": "سفر کا انتظام", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "جی ہاں، آپ منسوخ کر سکتے ہیں، لیکن منسوخی کی فیس لاگو ہو سکتی ہے۔", + "For Drivers": "ڈرائیوروں کے لیے", + "Driver Registration": "ڈرائیور رجسٹریشن", + "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": + "رجسٹر کرنے کے لیے ویب سائٹ ملاحظہ کریں یا سپورٹ سے رابطہ کریں۔", + "Visit Website/Contact Support": + "ویب سائٹ ملاحظہ کریں / سپورٹ سے رابطہ کریں", + "Close": "بند کریں", + "We are searching for the nearest driver": + "ہم قریب ترین ڈرائیور تلاش کر رہے ہیں", + "Communication": "مواصلات", + "How do I communicate with the other party (passenger/driver)?": + "میں دوسرے فریق سے کیسے بات کروں؟", + "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": + "سفر کی تصدیق ہونے پر آپ ایپ میں چیٹ کر سکتے ہیں۔", + "Safety & Security": "حفاظت اور سیکیورٹی", + "What safety measures does Intaleq offer?": + "Intaleq کون سے حفاظتی اقدامات پیش کرتا ہے؟", + "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": + "Intaleq ڈرائیور کی تصدیق اور ٹرپ ٹریکنگ پیش کرتا ہے۔", + "Enjoy competitive prices across all trip options, making travel accessible.": + "مسابقتی قیمتوں کا لطف اٹھائیں۔", + "Variety of Trip Choices": "سفر کے انتخاب کی اقسام", + "Choose the trip option that perfectly suits your needs and preferences.": + "وہ آپشن منتخب کریں جو آپ کے لیے موزوں ہو۔", + "Your Choice, Our Priority": "آپ کا انتخاب، ہماری ترجیح", + "Because we are near, you have the flexibility to choose the ride that works best for you.": + "چونکہ ہم قریب ہیں، آپ کے پاس انتخاب کی لچک ہے۔", + "duration is": "دورانیہ ہے", + "Setting": "سیٹنگ", + "Find answers to common questions": "عام سوالات کے جوابات تلاش کریں", + "I don't need a ride anymore": "مجھے اب سواری کی ضرورت نہیں ہے", + "I was just trying the application": "میں صرف ایپلیکیشن آزما رہا تھا", + "No driver accepted my request": + "کسی ڈرائیور نے میری درخواست قبول نہیں کی", + "I added the wrong pick-up/drop-off location": + "میں نے غلط لوکیشن شامل کی", + "I don't have a reason": "میرے پاس کوئی وجہ نہیں ہے", + "Can we know why you want to cancel Ride ?": + "کیا ہم جان سکتے ہیں کہ آپ کیوں منسوخ کرنا چاہتے ہیں؟", + "Add Payment Method": "ادائیگی کا طریقہ شامل کریں", + "Ride Wallet": "سفر والٹ", + "Payment Method": "ادائیگی کا طریقہ", + "Type here Place": "یہاں جگہ لکھیں", + "Are You sure to ride to": "کیا آپ واقعی جانا چاہتے ہیں", + "Confirm": "تصدیق کریں", + "You are Delete": "آپ حذف کر رہے ہیں", + "Deleted": "حذف کر دیا گیا", + "You Dont Have Any places yet !": + "ابھی تک آپ کے پاس کوئی جگہ نہیں ہے!", + "From : Current Location": "سے: موجودہ لوکیشن", + "My Cared": "میرے کارڈز", + "Add Card": "کارڈ شامل کریں", + "Add Credit Card": "کریڈٹ کارڈ شامل کریں", + "Please enter the cardholder name": + "براہ کرم کارڈ ہولڈر کا نام درج کریں", + "Please enter the expiry date": + "براہ کرم میعاد ختم ہونے کی تاریخ درج کریں", + "Please enter the CVV code": "براہ کرم CVV کوڈ درج کریں", + "Go To Favorite Places": "پسندیدہ مقامات پر جائیں", + "Go to this Target": "اس ہدف پر جائیں", + "My Profile": "میرا پروفائل", + "Are you want to go to this site": "کیا آپ اس جگہ جانا چاہتے ہیں", + "MyLocation": "میری لوکیشن", + "my location": "میری لوکیشن", + "Target": "ہدف", + "You Should choose rate figure": "آپ کو ریٹنگ کا انتخاب کرنا چاہیے", + "Login Captin": "کپتان لاگ ان", + "Register Captin": "کپتان رجسٹر", + "Send Verfication Code": "تصدیقی کوڈ بھیجیں", + "KM": "کلو میٹر", + "End Ride": "سفر ختم کریں", + "Minute": "منٹ", + "Go to passenger Location now": "اب مسافر کی لوکیشن پر جائیں", + "Duration of the Ride is ": "سفر کا دورانیہ ہے ", + "Distance of the Ride is ": "سفر کا فاصلہ ہے ", + "Name of the Passenger is ": "مسافر کا نام ہے ", + "Hello this is Captain": "ہیلو یہ کپتان ہے", + "Start the Ride": "سفر شروع کریں", + "Please Wait If passenger want To Cancel!": + "براہ کرم انتظار کریں اگر مسافر منسوخ کرنا چاہے!", + "Total Duration:": "کل دورانیہ:", + "Active Duration:": "فعال دورانیہ:", + "Waiting for Captin ...": "کپتان کا انتظار...", + "Age is ": "عمر ہے ", + "Rating is ": "ریٹنگ ہے ", + " to arrive you.": " آپ تک پہنچنے کے لیے۔", + "Tariff": "ٹیرف", + "Settings": "ترتیبات", + "Feed Back": "فیڈ بیک", + "Please enter a valid 16-digit card number": + "براہ کرم درست 16 ہندسوں کا کارڈ نمبر درج کریں", + "Add Phone": "فون شامل کریں", + "Please enter a phone number": "براہ کرم فون نمبر درج کریں", + "You dont Add Emergency Phone Yet!": + "آپ نے ابھی تک ایمرجنسی فون شامل نہیں کیا!", + "You will arrive to your destination after ": + "آپ اپنی منزل پر پہنچیں گے بعد از ", + "You can cancel Ride now": "آپ اب سواری منسوخ کر سکتے ہیں", + "You Can cancel Ride After Captain did not come in the time": + "اگر کپتان وقت پر نہیں آیا تو آپ سواری منسوخ کر سکتے ہیں", + "If you in Car Now. Press Start The Ride": + "اگر آپ کار میں ہیں تو سفر شروع کریں دبائیں", + "You Dont Have Any amount in": "آپ کے پاس کوئی رقم نہیں ہے میں", + "Wallet!": "والٹ!", + "You Have": "آپ کے پاس ہے", + "Save Credit Card": "کریڈٹ کارڈ محفوظ کریں", + "Show Promos": "پروموز دکھائیں", + "10 and get 4% discount": "10 اور 4% ڈسکاؤنٹ حاصل کریں", + "20 and get 6% discount": "20 اور 6% ڈسکاؤنٹ حاصل کریں", + "40 and get 8% discount": "40 اور 8% ڈسکاؤنٹ حاصل کریں", + "100 and get 11% discount": "100 اور 11% ڈسکاؤنٹ حاصل کریں", + "Pay with Your PayPal": "اپنے پے پال سے ادائیگی کریں", + "You will choose one of above !": + "آپ کو اوپر والوں میں سے ایک کا انتخاب کرنا ہوگا!", + "Edit Profile": "پروفائل میں ترمیم کریں", "Copy this Promo to use it in your Ride!": - "اس پرومو کو اپنی سواری میں استعمال کرنے کے لیے اسے کاپی کریں!", - "To change some Settings": "کچھ ترتیبات کو تبدیل کرنے کے لیے", - "To change Language the App": "ایپ کی زبان کو تبدیل کرنے کے لیے", + "اپنی سواری میں استعمال کرنے کے لیے اس پرومو کو کاپی کریں!", + "To change some Settings": "کچھ ترتیبات تبدیل کرنے کے لیے", "Order Request Page": "آرڈر کی درخواست کا صفحہ", - "Rouats of Trip": "Intaleq کے راستے", - "Passenger Name is": "مسافر کا نام ہے۔", - "Total From Passenger is": "مسافر سے ٹوٹل ہے۔", - "Duration To Passenger is": "مسافر کا دورانیہ ہے۔", - "Distance To Passenger is": "مسافر سے فاصلہ ہے۔", - "Total For You is": "آپ کے لیے ٹوٹل ہے۔", - "Distance is": "فاصلہ ہے۔", - "KM": "KM", - "Duration of Trip is": "Intaleq کا دورانیہ ہے۔", - "Minutes": "منٹس", - "Apply Order": "آرڈر اپلائی کریں۔", - "Refuse Order": "حکم سے انکار", - "Rate Captain": "کیپٹن کو ریٹ کریں۔", - "Enter your Note": "اپنا نوٹ درج کریں۔", - "Type something...": "کچھ ٹائپ کریں...", - "Submit rating": "درجہ بندی جمع کروائیں۔", - "Rate Passenger": "مسافر کو ریٹ کریں۔", + "Rouats of Trip": "سفر کے راستے", + "Passenger Name is ": "مسافر کا نام ہے ", + "Total From Passenger is ": "مسافر سے کل: ", + "Duration To Passenger is ": "مسافر تک دورانیہ ہے ", + "Distance To Passenger is ": "مسافر تک فاصلہ ہے ", + "Total For You is ": "آپ کے لیے کل: ", + "Distance is ": "فاصلہ ہے ", + " KM": " کلو میٹر", + "Duration of Trip is ": "سفر کا دورانیہ ہے ", + " Minutes": " منٹ", + "Apply Order": "آرڈر لاگو کریں", + "Refuse Order": "آرڈر مسترد کریں", + "Rate Captain": "کپتان کو ریٹ کریں", + "Enter your Note": "اپنا نوٹ درج کریں", + "Type something...": "کچھ لکھیں...", + "Submit rating": "ریٹنگ جمع کرائیں", + "Rate Passenger": "مسافر کو ریٹ کریں", "Ride Summary": "سواری کا خلاصہ", - "welcome_message": "خوش آمدید_پیغام", - "app_description": "app_description", - "get_to_destination": "منزل_تک_جائیں", - "get_a_ride": "ایک_سوار حاصل کریں۔", - "safe_and_comfortable": "محفوظ_اور_آرام دہ", - "committed_to_safety": "حفاظت_کے_لئے عزم", - "Driver Applied the Ride for You": - "ڈرائیور نے آپ کے لیے سواری کا اطلاق کیا۔", - "Show latest promo": "تازہ ترین پرومو دکھائیں۔", - "Cancel Trip": "دورہ منسوخ کریں۔", - "Passenger Cancel Trip": "مسافر Intaleq منسوخ کر دیں۔", - "Please stay on the picked point.": - "براہ کرم منتخب کردہ نقطہ پر رہیں۔", - "Trip is Begin": "Intaleq شروع ہے۔", - "Hi ,I will go now": "ہیلو، میں اب جاؤں گا۔", - "Passenger come to you": "مسافر تیرے پاس آئے", - "Hi ,I Arrive your site": "ہیلو، میں آپ کی سائٹ پر پہنچ گیا ہوں۔", - "Driver Finish Trip": "ڈرائیور کا Intaleq ختم", - "you will pay to Driver": "آپ ڈرائیور کو ادائیگی کریں گے۔", - "Driver Cancel Your Trip": "ڈرائیور آپ کا Intaleq منسوخ کر دیں۔", - "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": - "آپ ڈرائیور کو ادائیگی کریں گے آپ کو ڈرائیور کے وقت کی قیمت آپ کے Intaleq والیٹ کو ادا کی جائے گی۔", - "I will go now": "میں اب چلوں گا", - "You Have Tips": "آپ کے پاس تجاویز ہیں۔", - "tips": "تجاویز", - "Total is": "کل ہے۔", - "الْمَجْمُوع هُوَ": "الْمَجْمُوع هُوَ", - "No,I want": "نہیں، میں چاہتا ہوں۔", - "Your fee is": "آپ کی فیس ہے۔", + "welcome_message": "Intaleq میں خوش آمدید!", + "app_description": + "Intaleq ایک محفوظ، قابل اعتماد، اور قابل رسائی رائیڈ ہیلنگ ایپ ہے۔", + "get_to_destination": "اپنی منزل پر تیزی اور آسانی سے پہنچیں۔", + "get_a_ride": + "Intaleq کے ساتھ، آپ منٹوں میں منزل تک سواری حاصل کر سکتے ہیں۔", + "safe_and_comfortable": "محفوظ اور آرام دہ سواری کا لطف اٹھائیں۔", + "committed_to_safety": "Intaleq حفاظت کے لیے پرعزم ہے۔", + "your ride is Accepted": "آپ کی سواری قبول کر لی گئی ہے", + "Driver is waiting at pickup.": "ڈرائیور پک اپ پر انتظار کر رہا ہے۔", + "Driver is on the way": "ڈرائیور راستے میں ہے", + "Contact Options": "رابطے کے اختیارات", + "Send a custom message": "حسب ضرورت پیغام بھیجیں", + "Type your message": "اپنا پیغام ٹائپ کریں", + "I will go now": "میں اب جاؤں گا", + "You Have Tips": "آپ کے پاس ٹپس ہیں", + " tips\nTotal is": " ٹپس\nکل ہے", + "Your fee is ": "آپ کی فیس ہے ", "Do you want to pay Tips for this Driver": - "کیا آپ اس ڈرائیور کے لیے ٹپس ادا کرنا چاہتے ہیں؟", - "Tip is": "ٹپ ہے۔", - "Tip is": "ٹپ ہے۔", - "Camera Access Denied.": "کیمرے تک رسائی سے انکار کر دیا گیا۔", - "Open Settings": "ترتیبات کھولیں۔", - "GPS Required Allow !.": "GPS کی اجازت کی ضرورت ہے!", - "Your Account is Deleted": "آپ کا اکاؤنٹ حذف ہو گیا ہے۔", + "کیا آپ اس ڈرائیور کے لیے ٹپ ادا کرنا چاہتے ہیں", + "Tip is ": "ٹپ ہے ", + "Are you want to wait drivers to accept your order": + "کیا آپ چاہتے ہیں کہ ڈرائیورز آپ کا آرڈر قبول کرنے کا انتظار کریں", + "This price is fixed even if the route changes for the driver.": + "یہ قیمت مقررہ ہے چاہے ڈرائیور کا راستہ بدل جائے۔", + "The price may increase if the route changes.": + "اگر راستہ بدل گیا تو قیمت بڑھ سکتی ہے۔", + "The captain is responsible for the route.": + "کپتان راستے کا ذمہ دار ہے۔", + "We are search for nearst driver": "ہم قریبی ڈرائیور تلاش کر رہے ہیں", + "Your order is being prepared": "آپ کا آرڈر تیار ہو رہا ہے", + "The drivers are reviewing your request": + "ڈرائیورز آپ کی درخواست کا جائزہ لے رہے ہیں", + "Your order sent to drivers": "آپ کا آرڈر ڈرائیورز کو بھیج دیا گیا", + "You can call or record audio of this trip": + "آپ اس سفر کی کال یا آڈیو ریکارڈ کر سکتے ہیں", + "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": + "سفر شروع ہو گیا ہے! بلا جھجھک ایمرجنسی نمبرز سے رابطہ کریں، اپنا سفر شیئر کریں، یا سفر کے لیے وائس ریکارڈنگ فعال کریں۔", + "Camera Access Denied.": "کیمرے تک رسائی مسترد کر دی گئی۔", + "Open Settings": "ترتیبات کھولیں", + "GPS Required Allow !.": "GPS کی اجازت درکار ہے!.", + "Your Account is Deleted": "آپ کا اکاؤنٹ حذف کر دیا گیا ہے", "Are you sure to delete your account?": "کیا آپ واقعی اپنا اکاؤنٹ حذف کرنا چاہتے ہیں؟", - "Your data will be erased after 2 weeks": - "آپ کا ڈیٹا 2 ہفتوں کے بعد مٹا دیا جائے گا۔", - "And you will can't return to use app after 1 month": - "اور آپ 1 ماہ کے بعد ایپ استعمال کرنے پر واپس نہیں آسکیں گے۔", - "وَلَن تَسْتَطِيع اسْتِخْدَام التَّطْبِيق مَرَّة أُخْرَى بَعْد شَهْر": - "وَلَن تَسْتَطِيع اسْتِخْدَام التَّطْبِيق مَرَّة أُخْرَى بَعْد شَهْر", - "Enter Your First Name": "اپنا پہلا نام درج کریں۔", - "Are you Sure to LogOut?": "کیا آپ کو لاگ آؤٹ کرنے کا یقین ہے؟", - "Email Wrong": "ای میل غلط", + "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": + "آپ کا ڈیٹا 2 ہفتوں بعد مٹا دیا جائے گا\nاور آپ 1 ماہ بعد ایپ استعمال کرنے کے لیے واپس نہیں آ سکیں گے ", + "Enter Your First Name": "اپنا پہلا نام درج کریں", + "Are you Sure to LogOut?": "کیا آپ واقعی لاگ آؤٹ کرنا چاہتے ہیں؟", + "Email Wrong": "ای میل غلط ہے", "Email you inserted is Wrong.": - "آپ نے جو ای میل داخل کی ہے وہ غلط ہے۔", - "You have finished all times": "آپ نے ہر وقت ختم کر دیا ہے۔", + "جو ای میل آپ نے درج کیا ہے وہ غلط ہے۔", + "You have finished all times ": "آپ نے تمام اوقات ختم کر دیے ہیں ", "if you want help you can email us here": - "اگر آپ مدد چاہتے ہیں تو آپ ہمیں یہاں ای میل کر سکتے ہیں۔", + "اگر آپ مدد چاہتے ہیں تو آپ ہمیں یہاں ای میل کر سکتے ہیں", "Thanks": "شکریہ", "Email Us": "ہمیں ای میل کریں", - "I cant register in your app in face detection": - "میں چہرے کا پتہ لگانے میں آپ کی ایپ میں اندراج نہیں کر سکتا", - "Hi": "ہائے", - "No face detected": "کسی چہرے کا پتہ نہیں چلا", - "Image detecting result is": "تصویر کا پتہ لگانے کا نتیجہ ہے۔", - "from 3 times Take Attention": "3 بار توجہ دیں۔", - "Be sure for take accurate images please": - "براہ کرم درست تصاویر لینے کا یقین رکھیں", - "You have": "آپ کے پاس ہے", - "لَدَيْك": "لَدَيْك", - "image verified": "تصویر کی تصدیق", - "Next": "اگلے", - "There is no help Question here": "یہاں کوئی مدد کا سوال نہیں ہے۔", - "Call End": "کال اینڈ", - "You dont have Points": "آپ کے پاس پوائنٹس نہیں ہیں۔", - "You Are Stopped For this Day !": - "آپ کو اس دن کے لیے روک دیا گیا ہے!", - "You must be charge your Account": - "آپ کو اپنے اکاؤنٹ سے چارج کرنا ہوگا۔", - "You Refused 3 Rides this Day that is the reason": - "آپ نے اس دن 3 سواریوں سے انکار کیا یہی وجہ ہے۔", - "See you Tomorrow!": "کل ملیں گے!", - "لِقَائِنَا غَدًا!": "لِقَائِنَا غَدًا!", - "Recharge my Account": "میرا اکاؤنٹ ری چارج کریں۔", - "Ok , See you Tomorrow": "ٹھیک ہے کل ملیں گے", - "You are Stopped": "آپ کو روک دیا گیا ہے۔", - "Connected": "جڑا ہوا", + "I cant register in your app in face detection ": + "میں چہرے کی شناخت میں آپ کی ایپ میں رجسٹر نہیں ہو سکتا ", + "Hi": "ہیلو", + "No face detected": "کوئی چہرہ شناخت نہیں ہوا", + "Image detecting result is ": "تصویر کی شناخت کا نتیجہ ہے ", + "from 3 times Take Attention": "3 بار سے توجہ دیں", + "Be sure for take accurate images please\nYou have": + "براہ کرم درست تصاویر لینے کا یقین کریں\nآپ کے پاس ہے", + "image verified": "تصویر کی تصدیق ہو گئی", + "Next": "اگلا", + "There is no help Question here": "یہاں کوئی مدد کا سوال نہیں ہے", + "You dont have Points": "آپ کے پاس پوائنٹس نہیں ہیں", + "You Are Stopped For this Day !": "آپ اس دن کے لیے روک دیے گئے ہیں!", + "You must be charge your Account": "آپ کو اپنا اکاؤنٹ چارج کرنا ہوگا", + "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": + "آپ نے اس دن 3 سواریوں سے انکار کر دیا یہی وجہ ہے \nکل ملتے ہیں!", + "Recharge my Account": "میرا اکاؤنٹ ریچارج کریں", + "Ok , See you Tomorrow": "ٹھیک ہے، کل ملتے ہیں", + "You are Stopped": "آپ رکے ہوئے ہیں", + "Connected": "منسلک", "Not Connected": "منسلک نہیں", "Your are far from passenger location": - "آپ مسافروں کے مقام سے بہت دور ہیں۔", - "go to your passenger location before": - "پہلے اپنے مسافر کے مقام پر جائیں۔", - "Passenger cancel trip": "مسافر نے Intaleq منسوخ کر دیا۔", - "يُلْغِي الرَّاكِب الرِّحْلَة": "يُلْغِي الرَّاكِب الرِّحْلَة", + "آپ مسافر کی لوکیشن سے دور ہیں", + "go to your passenger location before\nPassenger cancel trip": + "مسافر کے سفر منسوخ کرنے سے پہلے\nاپنی مسافر کی لوکیشن پر جائیں", "You will get cost of your work for this trip": - "اس Intaleq کے لیے آپ کو اپنے کام کی قیمت ملے گی۔", - "in your wallet": "آپ کے بٹوے میں", - "you gain": "تم حاصل کرو", - "Order Cancelled": "آرڈر منسوخ کر دیا گیا۔", + "آپ کو اس سفر کے لیے اپنے کام کی قیمت ملے گی", + " in your wallet": " آپ کے والٹ میں", + "you gain": "آپ نے حاصل کیا", "Order Cancelled by Passenger": - "مسافر کے ذریعے آرڈر منسوخ کر دیا گیا۔", - "Success": "کامیابی", + "آرڈر مسافر کی طرف سے منسوخ کر دیا گیا", "Feedback data saved successfully": - "تاثرات کا ڈیٹا کامیابی سے محفوظ ہو گیا۔", + "فیڈ بیک ڈیٹا کامیابی سے محفوظ ہو گیا", "No Promo for today .": "آج کے لیے کوئی پرومو نہیں ہے۔", - "Select your destination": "اپنی منزل کا انتخاب کریں۔", - "Search for your Start point": "اپنے نقطہ آغاز کی تلاش کریں۔", - "Search for waypoint": "راستہ تلاش کریں۔", - "Current Location": "موجودہ مقام", - "Add Location 1": "مقام 1 شامل کریں۔", + "Select your destination": "اپنی منزل منتخب کریں", + "Search for your Start point": "اپنا نقطہ آغاز تلاش کریں", + "Search for waypoint": "راستے کا نقطہ تلاش کریں", + "Current Location": "موجودہ لوکیشن", + "Add Location 1": "لوکیشن 1 شامل کریں", "You must Verify email !.": "آپ کو ای میل کی تصدیق کرنی ہوگی!", - "Cropper": "فصل کاٹنے والا", - "Saved Sucssefully": "کامیابی سے محفوظ کیا گیا۔", - "Select Date": "تاریخ منتخب کریں۔", - "Birth Date": "تاریخ پیدائش", + "Cropper": "کروپر", + "Saved Sucssefully": "کامیابی سے محفوظ ہو گیا", + "Select Date": "تاریخ منتخب کریں", + "Birth Date": "پیدائش کی تاریخ", "Ok": "ٹھیک ہے", - "the 500 points equal 30 JOD": "500 پوائنٹس 30 JOD کے برابر ہیں۔", - "the 500 points equal 30 JOD for you": - "500 پوائنٹس آپ کے لیے 30 JOD کے برابر ہیں۔", - "So go and gain your money": "تو جاؤ اور اپنا پیسہ کماؤ", - "فَاسْتَحِقَّ فُلُوسَك وَاكْسِب النِّقَاط": - "فَاسْتَحِقَّ فُلُوسَك وَاكْسِب النِّقَاط", - "token updated": "ٹوکن اپ ڈیٹ", - "Add Location 2": "مقام 2 شامل کریں۔", - "Add Location 3": "مقام 3 شامل کریں۔", - "Add Location 4": "مقام 4 شامل کریں۔", - "Waiting for your location": "آپ کے مقام کا انتظار ہے۔", - "Search for your destination": "اپنی منزل تلاش کریں۔", - "Hi! This is": "ہائے! یہ وہ جگہ ہے", - "I am using": "میں استعمال کر رہا ہوں", - "to ride with": "کے ساتھ سواری کرنا", - "as the driver.": "ڈرائیور کے طور پر.", - "is driving a": "گاڑی چلا رہا ہے", - "with license plate": "لائسنس پلیٹ کے ساتھ", - "I am currently located at": "میں اس وقت واقع ہوں۔", - "Please go to Car now": "براہ کرم ابھی کار پر جائیں۔", - "If you need to reach me, please contact the driver directly at": - "اگر آپ کو مجھ تک پہنچنے کی ضرورت ہے تو براہ کرم ڈرائیور سے براہ راست رابطہ کریں۔", + "the 500 points equal 30 JOD": "500 پوائنٹس 30 روپے کے برابر ہیں", + "the 500 points equal 30 JOD for you \nSo go and gain your money": + "500 پوائنٹس آپ کے لیے 30 روپے کے برابر ہیں \nتو جائیں اور اپنے پیسے کمائیں", + "token updated": "ٹوکن اپ ڈیٹ ہو گیا", + "Add Location 2": "لوکیشن 2 شامل کریں", + "Add Location 3": "لوکیشن 3 شامل کریں", + "Add Location 4": "لوکیشن 4 شامل کریں", + "Waiting for your location": "آپ کی لوکیشن کا انتظار ہے", + "Search for your destination": "اپنی منزل تلاش کریں", + "Hi! This is": "ہیلو! یہ ہے", + " I am using": " میں استعمال کر رہا ہوں", + " to ride with": " سواری کرنے کے لیے ساتھ", + " as the driver.": " بطور ڈرائیور۔", + "is driving a ": "چلا رہا ہے ایک ", + " with license plate ": " لائسنس پلیٹ کے ساتھ ", + " I am currently located at ": " میں فی الحال یہاں واقع ہوں ", + "Please go to Car now ": "براہ کرم اب کار کے پاس جائیں ", + "You will receive a code in WhatsApp Messenger": + "آپ کو واٹس ایپ میسنجر میں ایک کوڈ موصول ہوگا", + "If you need assistance, contact us": + "اگر آپ کو مدد کی ضرورت ہو تو ہم سے رابطہ کریں", + "Promo Ended": "پرومو ختم ہو گیا", + "Enter the promo code and get": "پرومو کوڈ درج کریں اور حاصل کریں", + "DISCOUNT": "ڈسکاؤنٹ", + "No wallet record found": "کوئی والٹ ریکارڈ نہیں ملا", + "for": "کے لیے", + "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": + "Intaleq سب سے محفوظ رائیڈ شیئرنگ ایپ ہے جو کپتانوں اور مسافروں دونوں کے لیے بہت سی خصوصیات متعارف کراتی ہے۔", + "You can contact us during working hours from 12:00 - 19:00.": + "آپ ہم سے دفتری اوقات 12:00 - 19:00 کے دوران رابطہ کر سکتے ہیں۔", + "Choose a contact option": "رابطے کا اختیار منتخب کریں", + "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": + "کام کا وقت 12:00 - 19:00 ہے۔\nآپ واٹس ایپ پیغام یا ای میل بھیج سکتے ہیں۔", + "Promo code copied to clipboard!": + "پرومو کوڈ کلپ بورڈ پر کاپی ہو گیا!", + "Copy Code": "کوڈ کاپی کریں", + "Your invite code was successfully applied!": + "آپ کا دعوتی کوڈ کامیابی سے لاگو ہو گیا!", + "Payment Options": "ادائیگی کے اختیارات", + "wait 1 minute to receive message": + "پیغام موصول ہونے کے لیے 1 منٹ انتظار کریں", + "You have copied the promo code.": "آپ نے پرومو کوڈ کاپی کر لیا ہے۔", + "Select Payment Amount": "ادائیگی کی رقم منتخب کریں", + "The promotion period has ended.": "پروموشن کی مدت ختم ہو گئی ہے۔", + "Promo Code Accepted": "پرومو کوڈ قبول ہو گیا", + "Tap on the promo code to copy it!": + "اسے کاپی کرنے کے لیے پرومو کوڈ پر ٹیپ کریں!", + "Lowest Price Achieved": "کم ترین قیمت حاصل کی گئی", + "Cannot apply further discounts.": "مزید چھوٹ لاگو نہیں کی جا سکتی۔", + "Promo Already Used": "پرومو پہلے ہی استعمال ہو چکا ہے", + "Invitation Used": "دعوت نامہ استعمال ہو چکا ہے", + "You have already used this promo code.": + "آپ پہلے ہی یہ پرومو کوڈ استعمال کر چکے ہیں۔", + "Insert Your Promo Code": "اپنا پرومو کوڈ درج کریں", + "Enter promo code here": "پرومو کوڈ یہاں درج کریں", + "Please enter a valid promo code": + "براہ کرم ایک درست پرومو کوڈ درج کریں", + "Awfar Car": "سستی کار", + "Old and affordable, perfect for budget rides.": + "پرانی اور سستی، بجٹ سواریوں کے لیے بہترین۔", + " If you need to reach me, please contact the driver directly at": + " اگر آپ کو مجھ تک پہنچنے کی ضرورت ہو تو براہ کرم ڈرائیور سے براہ راست رابطہ کریں", "No Car or Driver Found in your area.": "آپ کے علاقے میں کوئی کار یا ڈرائیور نہیں ملا۔", - "Please Try anther time": "براہ کرم دوسرے وقت کی کوشش کریں۔", - "There no Driver Aplly your order sorry for that": - "اس کے لیے کوئی ڈرائیور آپ کے آرڈر کو لاگو نہیں کرتا", - "Trip Cancelled": "دورہ منسوخ ہو گیا۔", + "Please Try anther time ": "براہ کرم کسی اور وقت کوشش کریں ", + "There no Driver Aplly your order sorry for that ": + "کوئی ڈرائیور آپ کا آرڈر اپلائی نہیں کر رہا اس کے لیے معذرت ", + "Trip Cancelled": "سفر منسوخ ہو گیا", "The Driver Will be in your location soon .": - "ڈرائیور جلد ہی آپ کے مقام پر آجائے گا۔", + "ڈرائیور جلد ہی آپ کی لوکیشن پر ہوگا۔", "The distance less than 500 meter.": "فاصلہ 500 میٹر سے کم ہے۔", "Promo End !": "پرومو ختم!", - "There is no notification yet": "ابھی تک کوئی اطلاع نہیں ہے۔", + "There is no notification yet": "ابھی تک کوئی اطلاع نہیں ہے", "Use Touch ID or Face ID to confirm payment": - "ادائیگی کی تصدیق کے لیے ٹچ آئی ڈی یا فیس آئی ڈی استعمال کریں۔", + "ادائیگی کی تصدیق کے لیے ٹچ آئی ڈی یا فیس آئی ڈی استعمال کریں", "Contact us for any questions on your order.": "اپنے آرڈر پر کسی بھی سوال کے لیے ہم سے رابطہ کریں۔", - "Pyament Cancelled .": "پیمنٹ منسوخ کر دیا گیا۔", + "Pyament Cancelled .": "ادائیگی منسوخ ہو گئی۔", "type here": "یہاں ٹائپ کریں", - "Scan Driver License": "اسکین ڈرائیور لائسنس", + "Scan Driver License": "ڈرائیونگ لائسنس اسکین کریں", "Please put your licence in these border": - "براہ کرم اپنا لائسنس ان بارڈر میں لگائیں۔", - "Camera not initialized yet": "کیمرہ ابھی شروع نہیں ہوا ہے۔", - "Take Image": "تصویر لیں۔", + "براہ کرم اپنا لائسنس ان حدود میں رکھیں", + "Camera not initialized yet": "کیمرہ ابھی تک شروع نہیں ہوا", + "Take Image": "تصویر لیں", "AI Page": "AI صفحہ", - "Take Picture Of ID Card": "شناختی کارڈ کی تصویر لیں۔", + "Take Picture Of ID Card": "شناختی کارڈ کی تصویر لیں", "Take Picture Of Driver License Card": - "ڈرائیور لائسنس کارڈ کی تصویر لیں۔", - "We are process picture please wait": - "ہم پروسیسنگ تصویر ہیں براہ کرم انتظار کریں۔", + "ڈرائیونگ لائسنس کارڈ کی تصویر لیں", + "We are process picture please wait ": + "ہم تصویر پر کارروائی کر رہے ہیں براہ کرم انتظار کریں ", "There is no data yet.": "ابھی تک کوئی ڈیٹا نہیں ہے۔", - "Name :": "نام:", - "Drivers License Class:": "ڈرائیور لائسنس کی کلاس:", - "Document Number:": "دستاویز نمبر:", - "Address:": "پتہ:", - "Height:": "اونچائی:", - "Expiry Date:": "خاتمے کی تاریخ:", - "Date of Birth:": "پیدائش کی تاریخ:", - "You can\"t continue with us .": "آپ ہمارے ساتھ جاری نہیں رکھ سکتے۔", - "You should renew Driver license": - "آپ کو ڈرائیور لائسنس کی تجدید کرنی چاہیے۔", - "Detect Your Face": "اپنے چہرے کا پتہ لگائیں۔", - "Go to next step": "اگلے مرحلے پر جائیں۔", - "scan Car License.": "کار لائسنس اسکین کریں۔", - "aاسْتِخْرَاج رُخْصَة السَّيَّارَة.": - "ااسْتِخْرَاج رُخْصَة السَّيَّارَة.", + "Name :": "نام :", + "Drivers License Class: ": "ڈرائیونگ لائسنس کلاس: ", + "Document Number: ": "دستاویز نمبر: ", + "Address: ": "پتہ: ", + "Height: ": "اونچائی: ", + "Expiry Date: ": "میعاد ختم ہونے کی تاریخ: ", + "Date of Birth: ": "پیدائش کی تاریخ: ", + "You can't continue with us .\nYou should renew Driver license": + "آپ ہمارے ساتھ جاری نہیں رہ سکتے ۔\nآپ کو ڈرائیور لائسنس کی تجدید کرنی چاہیے", + "Detect Your Face ": "اپنا چہرہ شناخت کریں ", + "Go to next step\nscan Car License.": + "اگلے قدم پر جائیں\nکار لائسنس اسکین کریں۔", "Name in arabic": "عربی میں نام", - "Drivers License Class": "ڈرائیور لائسنس کلاس", - "Date of Birth": "پیدائش کی تاریخ", - "Age": "عمر", - "Lets check Car license": "آئیے کار لائسنس چیک کریں۔", - "Car Kind": "کار کی قسم", - "Car Plate": "کار پلیٹ", - "Lets check License Back Face": "آئیے لائسنس بیک فیس چیک کریں۔", + "Drivers License Class": "ڈرائیونگ لائسنس کلاس", + "Selected Date": "منتخب کردہ تاریخ", + "Select Time": "وقت منتخب کریں", + "Selected Time": "منتخب کردہ وقت", + "Selected Date and Time": "منتخب کردہ تاریخ اور وقت", + "Lets check Car license ": "آئیے کار لائسنس چیک کریں ", + "Car": "کار", + "Plate": "پلیٹ", + "Rides": "سواریاں", + "Selected driver": "منتخب ڈرائیور", + "Lets check License Back Face": + "آئیے لائسنس کے پچھلے حصے کو چیک کریں", "Car License Card": "کار لائسنس کارڈ", - "No image selected yet": "ابھی تک کوئی تصویر منتخب نہیں کی گئی۔", - "Made :": "بنایا:", - "model :": "ماڈل:", - "VIN :": "VIN:", - "year :": "سال:", - "ُExpire Date": "ختم ہونے کی تاریخ", + "No image selected yet": "ابھی تک کوئی تصویر منتخب نہیں کی گئی", + "Made :": "بنایا گیا :", + "model :": "ماڈل :", + "VIN :": "VIN :", + "year :": "سال :", + "ُExpire Date": "میعاد ختم ہونے کی تاریخ", "Login Driver": "لاگ ان ڈرائیور", "Password must br at least 6 character.": "پاس ورڈ کم از کم 6 حروف کا ہونا چاہیے۔", - "if you don\"t have account": "اگر آپ کے پاس اکاؤنٹ نہیں ہے۔", - "Here recorded trips audio": "یہاں ریکارڈ شدہ ٹرپس آڈیو", - "Register as Driver": "بطور ڈرائیور رجسٹر کریں۔", - "Privacy Notice": "رازداری کا نوٹس", - "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the": - "ذیل میں 'میں متفق ہوں' کو منتخب کرکے، میں نے استعمال کی شرائط کا جائزہ لیا اور ان سے اتفاق کیا اور تسلیم کیا", - ". I am at least 18 years of age.": ". میری عمر کم از کم 18 سال ہے۔", + "if you don't have account": "اگر آپ کا اکاؤنٹ نہیں ہے", + "Here recorded trips audio": "یہاں ریکارڈ شدہ دوروں کی آڈیو", + "Register as Driver": "بطور ڈرائیور رجسٹر کریں", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": + "نیچے \"میں متفق ہوں\" کو منتخب کر کے، میں نے جائزہ لیا ہے اور استعمال کی شرائط سے اتفاق کرتا ہوں اور تسلیم کرتا ہوں ", "Log Out Page": "لاگ آؤٹ صفحہ", - "Log Off": "لاگ آف کریں", - "Register Driver": "ڈرائیور رجسٹر کریں۔", - "Verify Email For Driver": "ڈرائیور کے لیے ای میل کی تصدیق کریں۔", + "Log Off": "لاگ آف", + "Register Driver": "ڈرائیور رجسٹر کریں", + "Verify Email For Driver": "ڈرائیور کے لیے ای میل کی تصدیق کریں", "Admin DashBoard": "ایڈمن ڈیش بورڈ", - "Your name": "تمھارا نام", - "your ride is applied": "آپ کی سواری کا اطلاق ہوتا ہے۔", - "Your password": "آپ کا پاس ورڈ", - "H and": "ایچ اور", - "LE": "ایل ای", - "JOD": "JOD", - "m": "m", + "Your name": "آپ کا نام", + "your ride is applied": "آپ کی سواری لاگو ہو گئی ہے", + "H and": "H اور", + "JOD": "روپیہ", + "m": "منٹ", "We search nearst Driver to you": - "ہم آپ کے قریب ترین ڈرائیور تلاش کرتے ہیں۔", + "ہم آپ کے قریب ترین ڈرائیور کو تلاش کرتے ہیں", "please wait till driver accept your order": - "ڈرائیور آپ کا آرڈر قبول کرنے تک انتظار کریں۔", + "براہ کرم انتظار کریں جب تک ڈرائیور آپ کا آرڈر قبول نہ کرے", "No accepted orders? Try raising your trip fee to attract riders.": - "کوئی منظور شدہ احکامات؟ سواروں کو راغب کرنے کے لیے اپنی ٹرپ فیس میں اضافہ کرنے کی کوشش کریں۔", - "You should select one": "آپ کو ایک کا انتخاب کرنا چاہئے۔", + "کوئی قبول شدہ آرڈر نہیں؟ سواروں کو راغب کرنے کے لیے اپنی ٹرپ فیس بڑھانے کی کوشش کریں۔", + "You should select one": "آپ کو ایک منتخب کرنا چاہیے", "The driver accept your order for": - "ڈرائیور آپ کا آرڈر قبول کرتا ہے۔", - "Increase Fee": "فیس میں اضافہ", - "No, thanks": "نہیں شکریہ", - "The driver on your way": "ڈرائیور آپ کے راستے میں ہے۔", - "Total price from": "سے کل قیمت", - "Order Details Intaleq": "آرڈر کی تفصیلات کی رفتار", - "Order Applied": "آرڈر لاگو", - "accepted your order": "آپ کا حکم قبول کیا", - "We regret to inform you that another driver has accepted this order.": - "ہمیں آپ کو یہ بتاتے ہوئے افسوس ہے کہ ایک اور ڈرائیور نے اس آرڈر کو قبول کر لیا ہے۔", - "Selected file:": "منتخب فائل:", - "Your trip cost is": "آپ کے Intaleq کی قیمت ہے۔", + "ڈرائیور آپ کا آرڈر قبول کرتا ہے برائے", + "The driver on your way": "ڈرائیور آپ کے راستے میں ہے", + "Total price from ": "سے کل قیمت ", + "Order Details Intaleq": "آرڈر کی تفصیلات Intaleq", + "Selected file:": "منتخب کردہ فائل:", + "Your trip cost is": "آپ کے سفر کی قیمت ہے", "this will delete all files from your device": - "یہ آپ کے آلے سے تمام فائلوں کو حذف کر دے گا۔", - "you have a negative balance of": "آپ کے پاس منفی توازن ہے۔", - "in your": "آپ میں", + "یہ آپ کے آلے سے تمام فائلیں حذف کر دے گا", "Exclusive offers and discounts always with the Intaleq app": - "سیفر ایپ کے ساتھ ہمیشہ خصوصی آفرز اور چھوٹ", - "Please go to Car Driver": "براہ کرم کار ڈرائیور کے پاس جائیں۔", - "wallet due to a previous trip.": "پچھلے Intaleq کی وجہ سے پرس۔", - "Submit Question": "سوال جمع کروائیں۔", + "Intaleq ایپ کے ساتھ ہمیشہ خصوصی پیشکشیں اور چھوٹ", + "Submit Question": "سوال جمع کرائیں", "Please enter your Question.": "براہ کرم اپنا سوال درج کریں۔", "Help Details": "مدد کی تفصیلات", - "No trip yet found": "ابھی تک کوئی Intaleq نہیں ملا", - "No Response yet.": "ابھی تک کوئی جواب نہیں۔", - "You Earn today is": "آپ آج کماتے ہیں۔", - "You Have in": "آپ کے پاس ہے", - "Total points is": "کل پوائنٹس ہیں۔", - "Total Connection Duration:": "کنکشن کی کل مدت:", - "H and": "ایچ اور", - "Passenger name :": "مسافر کا نام:", - "Cost Of Trip IS": "Intaleq کی لاگت IS", - "Arrival time": "آمد کے وقت", - "arrival time to reach your point": - "آپ کے نقطہ تک پہنچنے کے لئے آمد کا وقت", + "No trip yet found": "ابھی تک کوئی سفر نہیں ملا", + "No Response yet.": "ابھی تک کوئی جواب نہیں ملا۔", + " You Earn today is ": " آپ کی آج کی کمائی ہے ", + " You Have in": " آپ کے پاس ہے میں", + "Total points is ": "کل پوائنٹس ہیں ", + "Total Connection Duration:": "کل کنکشن کا دورانیہ:", + "Passenger name : ": "مسافر کا نام : ", + "Cost Of Trip IS ": "سفر کی قیمت ہے ", + "Arrival time": "پہنچنے کا وقت", + "arrival time to reach your point": "آپ کے پوائنٹ تک پہنچنے کا وقت", "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "سپیڈ اور ڈیلیوری ٹرپس کے لیے، قیمت کا حساب متحرک طور پر کیا جاتا ہے۔ آرام دہ دوروں کے لیے، قیمت وقت اور فاصلے پر مبنی ہے۔", - "Hello this is Driver": "ہیلو یہ ڈرائیور ہے۔", - "Is the Passenger in your Car ?": "کیا مسافر آپ کی گاڑی میں ہے؟", + "Intaleq اور سکوٹر کے دوروں کے لیے، قیمت کا حساب متحرک طور پر لگایا جاتا ہے۔ کمفرٹ ٹرپس کے لیے، قیمت وقت اور فاصلے پر مبنی ہوتی ہے۔", + "Hello this is Driver": "ہیلو یہ ڈرائیور ہے", + "Is the Passenger in your Car ?": "کیا مسافر آپ کی کار میں ہے؟", "Please wait for the passenger to enter the car before starting the trip.": - "براہ کرم Intaleq شروع کرنے سے پہلے مسافر کے گاڑی میں داخل ہونے کا انتظار کریں۔", - "No ,still Waiting.": "نہیں، ابھی تک انتظار ہے۔", - "I arrive you": "میں آپ کے پاس پہنچتا ہوں۔", - "I Arrive your site": "میں آپ کی سائٹ پر پہنچ گیا ہوں۔", + "براہ کرم سفر شروع کرنے سے پہلے مسافر کے کار میں داخل ہونے کا انتظار کریں۔", + "No ,still Waiting.": "نہیں، ابھی بھی انتظار کر رہا ہوں۔", + "I arrive you": "میں آپ کے پاس پہنچ گیا", + "I Arrive your site": "میں آپ کی لوکیشن پر پہنچ گیا", "You are not in near to passenger location": - "آپ مسافر کے مقام کے قریب نہیں ہیں۔", + "آپ مسافر کی لوکیشن کے قریب نہیں ہیں", "please go to picker location exactly": - "براہ کرم بالکل چننے والے مقام پر جائیں۔", + "براہ کرم بالکل اسی لوکیشن پر جائیں جہاں سے اٹھانا ہے", "You Can Cancel Trip And get Cost of Trip From": - "آپ ٹرپ منسوخ کر سکتے ہیں اور اس سے Intaleq کی لاگت حاصل کر سکتے ہیں۔", - "Are you sure to cancel?": "کیا آپ کو یقینی طور پر منسوخ کرنا ہے؟", - "Yes": "جی ہاں", - "Insert Emergincy Number": "ایمرجنسی نمبر داخل کریں۔", + "آپ سفر منسوخ کر سکتے ہیں اور سفر کی قیمت حاصل کر سکتے ہیں سے", + "Are you sure to cancel?": "کیا آپ منسوخ کرنے کے لیے یقینی ہیں؟", + "Insert Emergincy Number": "ایمرجنسی نمبر درج کریں", "Best choice for comfort car and flexible route and stops point": - "آرام دہ کار اور لچکدار روٹ اور اسٹاپ پوائنٹ کے لیے بہترین انتخاب", - "Insert": "داخل کریں", + "آرام دہ کار اور لچکدار راستے اور اسٹاپس پوائنٹ کے لیے بہترین انتخاب", + "Insert": "درج کریں", "This is for scooter or a motorcycle.": - "یہ ڈیلیوری یا موٹرسائیکل کے لیے ہے۔", + "یہ سکوٹر یا موٹر سائیکل کے لیے ہے۔", "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": - "یہ Intaleq ایک مقررہ قیمت پر آپ کے نقطہ آغاز سے براہ راست آپ کی منزل تک جاتا ہے۔ ڈرائیور کو منصوبہ بند راستے پر چلنا چاہیے۔", + "یہ سفر آپ کے نقطہ آغاز سے سیدھا آپ کی منزل تک ایک مقررہ قیمت پر جاتا ہے۔ ڈرائیور کو منصوبہ بند راستے کی پیروی کرنی چاہیے۔", "You can decline a request without any cost": - "آپ بغیر کسی قیمت کے درخواست مسترد کر سکتے ہیں۔", + "آپ بغیر کسی قیمت کے درخواست مسترد کر سکتے ہیں", "Perfect for adventure seekers who want to experience something new and exciting": - "ایڈونچر کے متلاشیوں کے لیے بہترین ہے جو کچھ نیا اور دلچسپ تجربہ کرنا چاہتے ہیں۔", - "My current location is:": "میرا موجودہ مقام ہے:", - "and I have a trip on": "اور میرا ایک Intaleq ہے۔", + "ان مہم جوئی کرنے والوں کے لیے بہترین جو کچھ نیا اور دلچسپ تجربہ کرنا چاہتے ہیں", + "My current location is:": "میری موجودہ لوکیشن ہے:", + "and I have a trip on": "اور میرے پاس ایک سفر ہے پر", "App with Passenger": "مسافر کے ساتھ ایپ", - "مع الراكب": "مع الراكب", "You will be pay the cost to driver or we will get it from you on next trip": - "آپ ڈرائیور کو قیمت ادا کریں گے یا ہم اگلے Intaleq پر آپ سے وصول کریں گے۔", - "Trip has Steps": "Intaleq کے مراحل ہوتے ہیں۔", - "Distance from Passenger to destination is": - "مسافر سے منزل تک کا فاصلہ ہے۔", + "آپ ڈرائیور کو قیمت ادا کریں گے یا ہم اگلے سفر پر آپ سے لے لیں گے", + "Trip has Steps": "سفر کے مراحل ہیں", + "Distance from Passenger to destination is ": + "مسافر سے منزل تک کا فاصلہ ہے ", "price is": "قیمت ہے", "This ride type does not allow changes to the destination or additional stops": - "سواری کی یہ قسم منزل میں تبدیلی یا اضافی اسٹاپس کی اجازت نہیں دیتی ہے۔", - "This price may be changed": "یہ قیمت تبدیل ہو سکتی ہے۔", + "اس قسم کی سواری منزل میں تبدیلیوں یا اضافی اسٹاپس کی اجازت نہیں دیتی", + "This price may be changed": "یہ قیمت تبدیل ہو سکتی ہے", "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": - "کوئی سم کارڈ نہیں، کوئی مسئلہ نہیں! ہماری ایپ کے ذریعے اپنے ڈرائیور کو براہ راست کال کریں۔ ہم آپ کی رازداری کو یقینی بنانے کے لیے جدید ٹیکنالوجی کا استعمال کرتے ہیں۔", + "کوئی سم کارڈ نہیں، کوئی مسئلہ نہیں! ہماری ایپ کے ذریعے براہ راست اپنے ڈرائیور کو کال کریں۔", "This ride type allows changes, but the price may increase": - "سواری کی یہ قسم تبدیلیوں کی اجازت دیتی ہے، لیکن قیمت بڑھ سکتی ہے۔", - "message From passenger": "مسافر کا پیغام", - "Select one message": "ایک پیغام منتخب کریں۔", - "My location is correct. You can search for me using the navigation app": - "میرا مقام درست ہے۔ آپ نیویگیشن ایپ کا استعمال کر کے مجھے تلاش کر سکتے ہیں۔", + "اس قسم کی سواری تبدیلیوں کی اجازت دیتی ہے، لیکن قیمت بڑھ سکتی ہے", + "Select one message": "ایک پیغام منتخب کریں", "I'm waiting for you": "میں آپ کا انتظار کر رہا ہوں", - "Hello, I'm at the agreed-upon location": - "ہیلو، میں متفقہ مقام پر ہوں۔", "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": - "ہم نے دیکھا کہ رفتار 100 کلومیٹر فی گھنٹہ سے زیادہ ہے۔ براہ کرم اپنی حفاظت کے لیے آہستہ کریں۔ اگر آپ غیر محفوظ محسوس کرتے ہیں، تو آپ اپنے Intaleq کی تفصیلات کسی رابطہ کے ساتھ شیئر کر سکتے ہیں یا سرخ SOS بٹن کا استعمال کر کے پولیس کو کال کر سکتے ہیں۔", - "Warning: Intaleqing detected!": "انتباہ: رفتار کا پتہ چلا!", + "ہم نے محسوس کیا کہ Intaleq 100 کلومیٹر فی گھنٹہ سے تجاوز کر رہا ہے۔ براہ کرم اپنی حفاظت کے لیے رفتار کم کریں۔", + "Warning: Intaleqing detected!": "انتباہ: تیز رفتاری کا پتہ چلا!", "Please help! Contact me as soon as possible.": - "مدد کریں! جتنی جلدی ہو سکے مجھ سے رابطہ کریں۔", - "Share Trip Details": "Intaleq کی تفصیلات شیئر کریں۔", - "Car Plate is": "کار پلیٹ ہے۔", - "the 300 points equal 300 L.E for you": - "300 پوائنٹس آپ کے لیے 300 L.E کے برابر ہیں۔", - "So go and gain your money": "تو جاؤ اور اپنا پیسہ کماؤ", - "the 300 points equal 300 L.E": "300 پوائنٹس 300 L.E کے برابر ہیں۔", + "براہ کرم مدد کریں! جتنی جلدی ہو سکے مجھ سے رابطہ کریں۔", + "Share Trip Details": "سفر کی تفصیلات شیئر کریں", + "Car Plate is ": "کار پلیٹ ہے ", + "the 300 points equal 300 L.E for you \nSo go and gain your money": + "300 پوائنٹس آپ کے لیے 300 روپے کے برابر ہیں \nتو جائیں اور اپنے پیسے کمائیں", + "the 300 points equal 300 L.E": "300 پوائنٹس 300 روپے کے برابر ہیں", "The payment was not approved. Please try again.": - "ادائیگی منظور نہیں ہوئی۔ دوبارہ کوشش کریں.", - "Payment Failed": "ادائیگی ناکام ہو گئی۔", - "Error": "خرابی", + "ادائیگی منظور نہیں ہوئی۔ براہ کرم دوبارہ کوشش کریں۔", + "Payment Failed": "ادائیگی ناکام ہو گئی", + "This is a scheduled notification.": "یہ ایک طے شدہ اطلاع ہے۔", "An error occurred during the payment process.": - "ادائیگی کے عمل کے دوران ایک خرابی پیش آگئی۔", - "The payment was approved.": "ادائیگی کی منظوری دی گئی۔", + "ادائیگی کے عمل کے دوران ایک خرابی پیش آ گئی۔", + "The payment was approved.": "ادائیگی منظور ہو گئی۔", "Payment Successful": "ادائیگی کامیاب", "No ride found yet": "ابھی تک کوئی سواری نہیں ملی", - "Accept Order": "آرڈر قبول کریں۔", - "reject your order.": "آپ کے حکم کو مسترد کریں.", - "Bottom Bar Example": "نیچے بار کی مثال", + "Accept Order": "آرڈر قبول کریں", + "Bottom Bar Example": "باٹم بار مثال", "Driver phone": "ڈرائیور کا فون", "Statistics": "شماریات", "Origin": "اصل", "Destination": "منزل", "Driver Name": "ڈرائیور کا نام", "Driver Car Plate": "ڈرائیور کار پلیٹ", - "Available for rides": "سواریوں کے لیے دستیاب ہے۔", - "Scan Id": "اسکین آئی ڈی", - "Camera not initilaized yet": "کیمرہ ابھی شروع نہیں ہوا۔", - "Scan ID MklGoogle": "اسکین ID MklGoogle", + "Available for rides": "سواریوں کے لیے دستیاب", + "Scan Id": "آئی ڈی اسکین کریں", + "Camera not initilaized yet": "کیمرہ ابھی تک شروع نہیں ہوا", + "Scan ID MklGoogle": "آئی ڈی MklGoogle اسکین کریں", "Language": "زبان", "Jordan": "اردن", - "USA": "امریکا", + "USA": "امریکہ", "Egypt": "مصر", "Turkey": "ترکی", "Saudi Arabia": "سعودی عرب", "Qatar": "قطر", "Bahrain": "بحرین", "Kuwait": "کویت", - "But you have a negative salary of": "لیکن آپ کی تنخواہ منفی ہے۔", + "But you have a negative salary of": "لیکن آپ کی منفی تنخواہ ہے", "Promo Code": "پرومو کوڈ", - "Your trip distance is": "آپ کے Intaleq کا فاصلہ ہے۔", - "Enter promo code": "پرومو کوڈ درج کریں۔", + "Your trip distance is": "آپ کے سفر کا فاصلہ ہے", + "Enter promo code": "پرومو کوڈ درج کریں", "You have promo!": "آپ کے پاس پرومو ہے!", "Cost Duration": "لاگت کا دورانیہ", - "Duration is": "دورانیہ ہے۔", - "Leave": "چھوڑو", - "Join": "شمولیت", - "You Should be select reason.": "آپ کو وجہ منتخب کرنی چاہئے۔", - "\$": "\$", + "Duration is": "دورانیہ ہے", + "Leave": "چھوڑیں", + "Join": "شامل ہوں", + "Heading your way now. Please be ready.": + "اب آپ کے راستے کی طرف بڑھ رہا ہوں۔ براہ کرم تیار رہیں۔", + "Approaching your area. Should be there in 3 minutes.": + "آپ کے علاقے کے قریب پہنچ رہا ہوں۔ 3 منٹ میں وہاں ہونا چاہیے۔", + "There's heavy traffic here. Can you suggest an alternate pickup point?": + "یہاں ٹریفک بہت زیادہ ہے۔ کیا آپ متبادل پک اپ پوائنٹ تجویز کر سکتے ہیں؟", + "This ride is already taken by another driver.": + "یہ سواری پہلے ہی کسی اور ڈرائیور نے لے لی ہے۔", + "You Should be select reason.": "آپ کو وجہ منتخب کرنی چاہیے۔", "Waiting for Driver ...": "ڈرائیور کا انتظار...", - "Latest Recent Trip": "تازہ ترین حالیہ دورہ", + "Latest Recent Trip": "تازہ ترین حالیہ سفر", "from your list": "آپ کی فہرست سے", "Do you want to change Work location": - "کیا آپ کام کا مقام تبدیل کرنا چاہتے ہیں؟", + "کیا آپ کام کی جگہ تبدیل کرنا چاہتے ہیں", "Do you want to change Home location": - "کیا آپ گھر کا مقام تبدیل کرنا چاہتے ہیں؟", + "کیا آپ گھر کی لوکیشن تبدیل کرنا چاہتے ہیں", "We Are Sorry That we dont have cars in your Location!": - "ہمیں افسوس ہے کہ ہمارے پاس آپ کے مقام پر کاریں نہیں ہیں!", - "Choose from Map": "نقشہ سے انتخاب کریں۔", + "ہم معذرت خواہ ہیں کہ ہمارے پاس آپ کی لوکیشن میں کاریں نہیں ہیں!", + "Choose from Map": "نقشے سے منتخب کریں", "Pick your ride location on the map - Tap to confirm": - "نقشے پر اپنی سواری کا مقام منتخب کریں - تصدیق کرنے کے لیے تھپتھپائیں۔", - "To Work": "کام کرنا", - "Are you want to go this site": "کیا آپ اس سائٹ پر جانا چاہتے ہیں؟", - "Closest & Cheapest": "قریب ترین اور سستا ترین", - "Work Saved": "کام محفوظ ہو گیا۔", + "نقشے پر اپنی سواری کی لوکیشن منتخب کریں - تصدیق کے لیے ٹیپ کریں", "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": - "سیفر رائیڈ ہیلنگ ایپ ہے جو محفوظ، قابل اعتماد اور قابل رسائی ہے۔", + "Intaleq ایک رائیڈ ہیلنگ ایپ ہے جو محفوظ، قابل اعتماد اور قابل رسائی ہے۔", "With Intaleq, you can get a ride to your destination in minutes.": "Intaleq کے ساتھ، آپ منٹوں میں اپنی منزل تک سواری حاصل کر سکتے ہیں۔", "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": - "سیفر حفاظت کے لیے پرعزم ہے، اور ہمارے تمام کپتانوں کی احتیاط سے اسکریننگ اور پس منظر کی جانچ پڑتال کی جاتی ہے۔", - "To Home": "گھر تک", - "Home Saved": "گھر محفوظ ہو گیا۔", - "Destination selected": "منزل منتخب کر لی گئی۔", - "Now select start pick": "اب اسٹارٹ پک کو منتخب کریں۔", - "Pick from map": "نقشے سے چنیں۔", - "Click here point": "یہاں پوائنٹ پر کلک کریں۔", - "No Car in your site. Sorry!": - "آپ کی سائٹ پر کوئی کار نہیں ہے۔ معذرت!", - "Nearest Car for you about": "آپ کے لیے قریب ترین کار", - "N/A": "N / A", - "From :": "منجانب:", - "Get Details of Trip": "Intaleq کی تفصیلات حاصل کریں۔", + "Intaleq حفاظت کے لیے پرعزم ہے، اور ہمارے تمام کپتانوں کی احتیاط سے جانچ پڑتال کی جاتی ہے اور پس منظر کی جانچ کی جاتی ہے۔", + "Pick from map": "نقشے سے منتخب کریں", + "No Car in your site. Sorry!": "آپ کی جگہ پر کوئی کار نہیں۔ معذرت!", + "Nearest Car for you about ": "آپ کے لیے قریب ترین کار تقریباً ", + "From :": "سے :", + "Get Details of Trip": "سفر کی تفصیلات حاصل کریں", "If you want add stop click here": - "اگر آپ اسٹاپ شامل کرنا چاہتے ہیں تو یہاں کلک کریں۔", - "Driver": "ڈرائیور", - "Where you want go": "جہاں آپ جانا چاہتے ہیں۔", + "اگر آپ اسٹاپ شامل کرنا چاہتے ہیں تو یہاں کلک کریں", + "Where you want go ": "آپ کہاں جانا چاہتے ہیں ", "My Card": "میرا کارڈ", - "Start Record": "ریکارڈ شروع کریں۔", - "Wallet": "پرس", - "History of Trip": "Intaleq کی تاریخ", - "Helping Center": "امدادی مرکز", - "Record saved": "ریکارڈ محفوظ ہو گیا۔", - "Trips recorded": "دوروں کو ریکارڈ کیا گیا۔", - "Select Your Country": "اپنے ملک کا انتخاب کریں", + "Start Record": "ریکارڈ شروع کریں", + "History of Trip": "سفر کی تاریخ", + "Helping Center": "ہیلپنگ سینٹر", + "Record saved": "ریکارڈ محفوظ ہو گیا", + "Trips recorded": "دورے ریکارڈ کیے گئے", + "Select Your Country": "اپنا ملک منتخب کریں", "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": - "اس بات کو یقینی بنانے کے لیے کہ آپ اپنے مقام کی درست ترین معلومات حاصل کریں، براہ کرم نیچے اپنا ملک منتخب کریں۔ اس سے ایپ کے تجربے اور مواد کو آپ کے ملک کے مطابق بنانے میں مدد ملے گی۔", + "یہ یقینی بنانے کے لیے کہ آپ کو اپنی لوکیشن کے لیے درست ترین معلومات ملیں، براہ کرم نیچے اپنا ملک منتخب کریں۔", "Are you sure to delete recorded files": - "کیا آپ یقینی طور پر ریکارڈ شدہ فائلوں کو حذف کرنا چاہتے ہیں؟", - "Select recorded trip": "ریکارڈ شدہ Intaleq کو منتخب کریں۔", + "کیا آپ واقعی ریکارڈ شدہ فائلیں حذف کرنا چاہتے ہیں", + "Select recorded trip": "ریکارڈ شدہ سفر منتخب کریں", "Card Number": "کارڈ نمبر", - "Hi, Where to": "ہیلو، کہاں؟", - "Pick your destination from Map": "نقشہ سے اپنی منزل کا انتخاب کریں۔", - "Add Stops": "اسٹاپس شامل کریں۔", - "Get Direction": "سمت حاصل کریں۔", - "Add Location": "مقام شامل کریں", - "Switch Rider": "سوئچ رائڈر", + "Hi, Where to ": "ہیلو، کہاں جانا ہے ", + "Pick your destination from Map": "نقشے سے اپنی منزل منتخب کریں", + "Add Stops": "اسٹاپس شامل کریں", + "Get Direction": "سمت حاصل کریں", + "Add Location": "لوکیشن شامل کریں", + "Switch Rider": "رائیڈر تبدیل کریں", "You will arrive to your destination after timer end.": "ٹائمر ختم ہونے کے بعد آپ اپنی منزل پر پہنچ جائیں گے۔", - "You can cancel trip": "آپ Intaleq منسوخ کر سکتے ہیں۔", + "You can cancel trip": "آپ سفر منسوخ کر سکتے ہیں", "The driver waitting you in picked location .": "ڈرائیور منتخب جگہ پر آپ کا انتظار کر رہا ہے۔", - "Pay with Your": "اپنے ساتھ ادائیگی کریں۔", - "Pay with Credit Card": "کریڈٹ کارڈ سے ادائیگی کریں۔", - "Payment History": "ادائیگی کی تاریخ", - "Show Promos to Charge": "چارج کرنے کے لیے پروموز دکھائیں۔", - "Point": "نقطہ", - "Driver Wallet": "ڈرائیور والیٹ", - "Total Points is": "کل پوائنٹس ہیں۔", - "Total Budget from trips is": "دوروں سے کل بجٹ ہے۔", + "Pay with Your": "اپنے ساتھ ادا کریں", + "Pay with Credit Card": "کریڈٹ کارڈ سے ادائیگی کریں", + "Show Promos to Charge": "چارج کرنے کے لیے پروموز دکھائیں", + "Point": "پوائنٹ", + "How many hours would you like to wait?": + "آپ کتنے گھنٹے انتظار کرنا چاہیں گے؟", + "Driver Wallet": "ڈرائیور والٹ", + "Choose between those Type Cars": + "ان قسم کی کاروں کے درمیان انتخاب کریں", + "hour": "گھنٹہ", + "Select Waiting Hours": "انتظار کے اوقات منتخب کریں", + "Total Points is": "کل پوائنٹس ہیں", + "You will receive a code in SMS message": + "آپ کو ایس ایم ایس پیغام میں ایک کوڈ موصول ہوگا", + "Done": "ہو گیا", + "Total Budget from trips is ": "سفروں سے کل بجٹ ہے ", "Total Amount:": "کل رقم:", - "Total Budget from trips by": "بذریعہ دوروں سے کل بجٹ", - "Credit card is": "کریڈٹ کارڈ ہے۔", - "بطاقة الائتمان هي": "بطاقة الاطمان هي", + "Total Budget from trips by\nCredit card is ": + "کریڈٹ کارڈ کے ذریعے سفروں سے\nکل بجٹ ہے ", "This amount for all trip I get from Passengers": - "یہ رقم تمام ٹرپ کے لیے مجھے مسافروں سے ملتی ہے۔", - "Pay from my budget": "میرے بجٹ سے ادائیگی کریں۔", + "یہ رقم تمام سفر کے لیے جو مجھے مسافروں سے ملتی ہے", + "Pay from my budget": "میرے بجٹ سے ادا کریں", "This amount for all trip I get from Passengers and Collected For me in": - "تمام ٹرپ کے لیے یہ رقم مجھے مسافروں سے ملتی ہے اور میرے لیے جمع کی جاتی ہے۔", + "یہ رقم تمام سفر کے لیے جو مجھے مسافروں سے ملتی ہے اور میرے لیے جمع کی گئی ہے", "You can buy points from your budget": - "آپ اپنے بجٹ سے پوائنٹس خرید سکتے ہیں۔", - "insert amount": "رقم ڈالیں", - "You can buy Points to let you online": - "آپ آن لائن ہونے کے لیے پوائنٹس خرید سکتے ہیں۔", - "by this list below": "ذیل میں اس فہرست کی طرف سے", - "من خلال القائمة أدناه": "من خلال القائمة أدنا", + "آپ اپنے بجٹ سے پوائنٹس خرید سکتے ہیں", + "insert amount": "رقم درج کریں", + "You can buy Points to let you online\nby this list below": + "آپ آن لائن رہنے کے لیے پوائنٹس خرید سکتے ہیں\nنیچے دی گئی اس فہرست کے ذریعے", "Create Wallet to receive your money": - "اپنی رقم وصول کرنے کے لیے والٹ بنائیں", - "Enter your feedback here": "اپنی رائے یہاں درج کریں۔", - "Please enter your feedback.": "براہ کرم اپنی رائے درج کریں۔", - "Feedback": "تاثرات", - "Submit": "جمع کرائیں", + "اپنے پیسے وصول کرنے کے لیے والٹ بنائیں", + "Enter your feedback here": "اپنا فیڈ بیک یہاں درج کریں", + "Please enter your feedback.": "براہ کرم اپنا فیڈ بیک درج کریں۔", + "Feedback": "فیڈ بیک", + "Submit ": "جمع کرائیں ", "Click here to Show it in Map": - "اسے نقشے میں دکھانے کے لیے یہاں کلک کریں۔", + "اسے نقشے میں دکھانے کے لیے یہاں کلک کریں", "Canceled": "منسوخ", - "Type your Email": "اپنا ای میل ٹائپ کریں۔", - "No I want": "نہیں میں چاہتا ہوں۔", - "Email is": "ای میل ہے۔", - "Phone Number is": "فون نمبر ہے۔", - "Date of Birth is": "تاریخ پیدائش ہے۔", - "Sex is": "جنس ہے۔", + "No I want": "نہیں میں چاہتا ہوں", + "Email is": "ای میل ہے:", + "Phone Number is": "فون نمبر ہے:", + "Date of Birth is": "پیدائش کی تاریخ ہے:", + "Sex is ": "جنس ہے: ", "Car Details": "کار کی تفصیلات", - "VIN is": "VIN ہے۔", - "Color is": "رنگ ہے۔", - "Make is": "بنانا ہے", - "Model is": "ماڈل ہے۔", - "Year is": "سال ہے۔", - "Expiration Date": "میعاد ختم ہونے کی تاریخ", - "Edit Your data": "اپنے ڈیٹا میں ترمیم کریں۔", - "write vin for your car": "اپنی گاڑی کے لیے vin لکھیں۔", + "VIN is": "VIN ہے:", + "Color is ": "رنگ ہے: ", + "Make is ": "میک ہے: ", + "Model is": "ماڈل ہے:", + "Year is": "سال ہے:", + "Expiration Date ": "میعاد ختم ہونے کی تاریخ: ", + "Edit Your data": "اپنے ڈیٹا میں ترمیم کریں", + "write vin for your car": "اپنی کار کے لیے vin لکھیں", "VIN": "VIN", - "write Color for your car": "اپنی گاڑی کا رنگ لکھیں۔", - "write Make for your car": "اپنی کار کے لیے بنائیں لکھیں۔", - "write Model for your car": "اپنی گاڑی کا ماڈل لکھیں۔", - "write Year for your car": "اپنی گاڑی کے لیے سال لکھیں۔", + "Device Change Detected": "ڈیوائس کی تبدیلی کا پتہ چلا", + "Please verify your identity": "براہ کرم اپنی شناخت کی تصدیق کریں", + "write Color for your car": "اپنی کار کے لیے رنگ لکھیں", + "write Make for your car": "اپنی کار کے لیے میک لکھیں", + "write Model for your car": "اپنی کار کے لیے ماڈل لکھیں", + "write Year for your car": "اپنی کار کے لیے سال لکھیں", "write Expiration Date for your car": - "اپنی کار کی میعاد ختم ہونے کی تاریخ لکھیں۔", + "اپنی کار کے لیے میعاد ختم ہونے کی تاریخ لکھیں", "Tariffs": "ٹیرف", "Minimum fare": "کم از کم کرایہ", "Maximum fare": "زیادہ سے زیادہ کرایہ", @@ -11561,216 +14785,557 @@ class MyTranslation extends Translations { "BookingFee": "بکنگ فیس", "Morning": "صبح", "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": - "07:30 سے ​​10:30 تک (جمعرات، جمعہ، ہفتہ، پیر)", + "07:30 سے 10:30 تک (جمعرات، جمعہ، ہفتہ، پیر)", "Evening": "شام", "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": "12:00 سے 15:00 تک (جمعرات، جمعہ، ہفتہ، پیر)", "Night": "رات", - "You have in account": "آپ کے پاس اکاؤنٹ ہے۔", - "Select Country": "ملک کا انتخاب کیجئے", - "Ride Today :": "آج ہی سواری کریں:", - "After this period": "اس مدت کے بعد", - "You can\"t cancel!": "آپ منسوخ نہیں کر سکتے!", - "لا تستطيع الغاء الرحله": "لا استطيع الغاء الرحله", + "You have in account": "آپ کے اکاؤنٹ میں ہے", + "Select Country": "ملک منتخب کریں", + "Ride Today : ": "آج کی سواری: ", + "After this period\nYou can't cancel!": + "اس مدت کے بعد\nآپ منسوخ نہیں کر سکتے!", "from 23:59 till 05:30": "23:59 سے 05:30 تک", - "Rate Driver": "ڈرائیور کو ریٹ کریں۔", - "Total Cost is": "کل لاگت ہے۔", - "Write note": "نوٹ لکھیں۔", + "Rate Driver": "ڈرائیور کو ریٹ کریں", + "Total Cost is ": "کل قیمت ہے ", + "Write note": "نوٹ لکھیں", "Time to arrive": "پہنچنے کا وقت", "Ride Summaries": "سواری کے خلاصے", - "Total Cost": "کل لاگت", - "Average of Hours of": "کے گھنٹوں کی اوسط", - "is ON for this month": "اس مہینے کے لیے آن ہے۔", + "Total Cost": "کل قیمت", + "Average of Hours of": "گھنٹوں کی اوسط", + " is ON for this month": " اس مہینے کے لیے آن ہے", "Days": "دن", - "Total Hours on month": "مہینے پر کل گھنٹے", + "Total Hours on month": "مہینے میں کل گھنٹے", "Counts of Hours on days": "دنوں میں گھنٹوں کی گنتی", - "OrderId": "آرڈر کی شناخت", - "created time": "وقت پیدا کیا", - "Intaleq Over": "سپیڈ اوور", - "I will slow down": "میں سست ہو جاؤں گا۔", + "OrderId": "آرڈر آئی ڈی", + "created time": "تخلیق کا وقت", + "Intaleq Over": "Intaleq ختم", + "I will slow down": "میں رفتار کم کروں گا", "Map Passenger": "نقشہ مسافر", - "Be Slowly": "آہستہ ہو جاؤ", + "Be Slowly": "آہستہ رہیں", "If you want to make Google Map App run directly when you apply order": - "اگر آپ آرڈر اپلائی کرتے وقت گوگل میپ ایپ کو براہ راست چلانا چاہتے ہیں۔", + "اگر آپ چاہتے ہیں کہ جب آپ آرڈر لاگو کریں تو گوگل میپ ایپ براہ راست چلے", "You can change the language of the app": - "آپ ایپ کی زبان تبدیل کر سکتے ہیں۔", - "Your Budget less than needed": "آپ کا بجٹ ضرورت سے کم ہے۔", + "آپ ایپ کی زبان تبدیل کر سکتے ہیں", + "Your Budget less than needed": "آپ کا بجٹ ضرورت سے کم ہے", "You can change the Country to get all features": - "تمام خصوصیات حاصل کرنے کے لیے آپ ملک کو تبدیل کر سکتے ہیں۔", - "Change Country": "ملک تبدیل کیجئے" + "آپ تمام خصوصیات حاصل کرنے کے لیے ملک تبدیل کر سکتے ہیں", + "Change Country": "ملک تبدیل کریں" }, "hi": { - "Order": "आदेश", - "OrderVIP": "वीआईपी आदेश", - "Cancel Trip": "यात्रा रद्द करें", - "Passenger Cancel Trip": "यात्री ने यात्रा रद्द कर दी", - "VIP Order": "वीआईपी आदेश", + "Syria": "भारत", + "SYP": "₹", + "Order": "ऑर्डर", + "OrderVIP": "VIP ऑर्डर", + "Cancel Trip": "ट्रिप रद्द करें", + "Passenger Cancel Trip": "यात्री ने ट्रिप रद्द कर दी", + "VIP Order": "VIP ऑर्डर", + "Hi ,I Arrive your site": "नमस्ते, मैं आपकी लोकेशन पर पहुँच गया हूँ", "The driver accepted your trip": - "ड्राइवर ने आपकी यात्रा स्वीकार कर ली", - "message From passenger": "यात्री से संदेश", + "ड्राइवर ने आपकी ट्रिप स्वीकार कर ली है", + "message From passenger": "यात्री का संदेश", "Cancel": "रद्द करें", "Trip Cancelled. The cost of the trip will be added to your wallet.": - "यात्रा रद्द कर दी गई। यात्रा की लागत आपके वॉलेट में जोड़ दी जाएगी।", - "token change": "टोकन बदलें", - "face detect": "चेहरा पहचान", - "Face Detection Result": "चेहरा पहचान परिणाम", - "similar": "समान", + "ट्रिप रद्द हो गई। ट्रिप की लागत आपके वॉलेट में जोड़ दी जाएगी।", + "token change": "टोकन परिवर्तन", + "face detect": "चेहरा पहचान (Face Detect)", + "Face Detection Result": "चेहरा पहचान का परिणाम", + "similar": "ملتا جلتا (Similar)", "not similar": "समान नहीं", - "Hi ,I will go now": "हाय, मैं अब जाऊंगा", + "Hi ,I will go now": "नमस्ते, मैं अब निकल रहा हूँ", "Passenger come to you": "यात्री आपके पास आ रहा है", - "Call Income": "कॉल आय", - "Call Income from Passenger": "यात्री से कॉल आय", - "Criminal Document Required": "आपराधिक दस्तावेज़ आवश्यक", - "You should have upload it .": "आपको इसे अपलोड करना चाहिए था।", + "Call Income": "आने वाली कॉल", + "Call Income from Passenger": "यात्री की कॉल", + "Criminal Document Required": "पुलिस वेरिफिकेशन दस्तावेज़ आवश्यक है", + "You should have upload it .": "आपको इसे अपलोड करना होगा।", "Call End": "कॉल समाप्त", "The order has been accepted by another driver.": - "आदेश को एक अन्य ड्राइवर ने स्वीकार कर लिया है।", + "ऑर्डर किसी अन्य ड्राइवर द्वारा स्वीकार कर लिया गया है।", "The order Accepted by another Driver": - "आदेश को एक अन्य ड्राइवर ने स्वीकार कर लिया", + "ऑर्डर दूसरे ड्राइवर ने स्वीकार कर लिया", "We regret to inform you that another driver has accepted this order.": - "हमें खेद है कि एक अन्य ड्राइवर ने इस आदेश को स्वीकार कर लिया है।", + "हमें खेद है कि किसी अन्य ड्राइवर ने यह ऑर्डर स्वीकार कर लिया है।", "Driver Applied the Ride for You": - "ड्राइवर ने आपके लिए यात्रा लागू की", - "Applied": "लागू", - "Hi ,I Arrive your site": "हाय, मैं आपकी साइट पर पहुंच गया हूं", - "Please go to Car Driver": "कृपया कार ड्राइवर के पास जाएं", - "Ok I will go now.": "ठीक है, मैं अब जाऊंगा।", - "Accepted Ride": "स्वीकृत यात्रा", + "ड्राइवर ने आपके लिए राइड अप्लाई की", + "Applied": "अप्लाई किया गया", + "Pay by Sham Cash": "Sham Cash से भुगतान करें", + "Pay with Debit Card": "डेबिट कार्ड से भुगतान करें", + "Please go to Car Driver": "कृपया ड्राइवर के पास जाएं", + "Ok I will go now.": "ठीक है, मैं अब जा रहा हूँ।", + "Accepted Ride": "स्वीकृत राइड", "Driver Accepted the Ride for You": - "ड्राइवर ने आपके लिए यात्रा स्वीकार कर ली", + "ड्राइवर ने आपके लिए राइड स्वीकार कर ली", "Promo": "प्रोमो", "Show latest promo": "नवीनतम प्रोमो दिखाएं", - "Trip Monitoring": "यात्रा निगरानी", + "Trip Monitoring": "ट्रिप की निगरानी", "Driver Is Going To Passenger": "ड्राइवर यात्री के पास जा रहा है", - "Please stay on the picked point.": "कृपया चुने हुए बिंदु पर रहें।", - "message From Driver": "ड्राइवर से संदेश", - "Trip is Begin": "यात्रा शुरू हो गई है", - "Cancel Trip from driver": "ड्राइवर से यात्रा रद्द करें", + "Please stay on the picked point.": "कृपया पिक-अप पॉइंट पर बने रहें।", + "message From Driver": "ड्राइवर का संदेश", + "Trip is Begin": "ट्रिप शुरू हो गई", + "Cancel Trip from driver": "ड्राइवर द्वारा ट्रिप रद्द", "We will look for a new driver.\nPlease wait.": - "हम एक नए ड्राइवर की तलाश करेंगे।\nकृपया प्रतीक्षा करें।", - "The driver canceled your ride.": - "ड्राइवर ने आपकी यात्रा रद्द कर दी।", - "Driver Finish Trip": "ड्राइवर ने यात्रा समाप्त की", + "हम नए ड्राइवर की तलाश कर रहे हैं।\nकृपया प्रतीक्षा करें।", + "The driver canceled your ride.": "ड्राइवर ने आपकी राइड रद्द कर दी।", + "Driver Finish Trip": "ड्राइवर ने ट्रिप समाप्त की", "you will pay to Driver": "आप ड्राइवर को भुगतान करेंगे", - "Don’t forget your personal belongings.": - "अपने निजी सामान को न भूलें।", + "Don’t forget your personal belongings.": "अपना निजी सामान न भूलें।", "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": - "कृपया सुनिश्चित करें कि आपके पास आपका सारा निजी सामान है और कोई भी शेष किराया, यदि लागू हो, आपके वॉलेट में जोड़ दिया गया है। Intaleq ऐप चुनने के लिए धन्यवाद।", - "Finish Monitor": "निगरानी समाप्त", - "Trip finished": "यात्रा समाप्त", - "Call Income from Driver": "ड्राइवर से कॉल आय", - "Driver Cancelled Your Trip": "ड्राइवर ने आपकी यात्रा रद्द कर दी", + "कृपया सुनिश्चित करें कि आपके पास आपका सारा सामान है और यदि कोई शेष किराया है, तो वह आपके वॉलेट में जोड़ दिया गया है। Intaleq चुनने के लिए धन्यवाद।", + "Finish Monitor": "निगरानी समाप्त करें", + "Trip finished": "ट्रिप समाप्त", + "Call Income from Driver": "ड्राइवर की कॉल", + "Driver Cancelled Your Trip": "ड्राइवर ने आपकी ट्रिप रद्द कर दी", "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": - "आप ड्राइवर को भुगतान करेंगे, आप ड्राइवर के समय की लागत का भुगतान करेंगे, अपने Intaleq वॉलेट को देखें", - "Order Applied": "आदेश लागू", - //firebase above - -// - "Where to": "कहां जाना है", - "Where are you going?": "आप कहां जा रहे हैं?", - "Quick Actions": "त्वरित कार्रवाई", - "My Wallet": "मेरा वॉलेट", - "Order History": "आदेश इतिहास", - "Contact Us": "हमसे संपर्क करें", + "आप ड्राइवर के समय की लागत का भुगतान करेंगे, अपना Intaleq वॉलेट देखें", + "Order Applied": "ऑर्डर लागू किया गया", + "welcome to intaleq": "Intaleq में आपका स्वागत है", + "login or register subtitle": + "लॉगिन या रजिस्टर करने के लिए अपना मोबाइल नंबर दर्ज करें", + "An application error occurred.": "एक एप्लिकेश त्रुटि हुई।", + "Submission Failed": "सबमिशन विफल", + "Your complaint has been submitted.": "आपकी शिकायत दर्ज कर ली गई है।", + "Failed to connect to the server. Please try again.": + "सर्वर से कनेक्ट करने में विफल। कृपया पुन: प्रयास करें।", + "Ride information not found. Please refresh the page.": + "राइड की जानकारी नहीं मिली। कृपया पेज रिफ्रेश करें।", + "Please describe your issue before submitting.": + "कृपया सबमिट करने से पहले अपनी समस्या का वर्णन करें।", + "An application error occurred during upload.": + "अपलोड के दौरान एक त्रुटि हुई।", + "Failed to upload audio file.": "ऑडियो फ़ाइल अपलोड करने में विफल।", + "Audio uploaded successfully.": "ऑडियो सफलतापूर्वक अपलोड हो गया।", + "Complaint cannot be filed for this ride. It may not have been completed or started.": + "इस राइड के लिए शिकायत दर्ज नहीं की जा सकती। हो सकता है यह पूरी या शुरू न हुई हो।", + "2. Attach Recorded Audio (Optional)": + "2. रिकॉर्ड किया गया ऑडियो जोड़ें (वैकल्पिक)", + "Please enter a description of the issue.": + "कृपया समस्या का विवरण दर्ज करें।", + "phone number label": "फ़ोन नंबर", + "phone number required": "फ़ोन नंबर आवश्यक है", + "send otp button": "OTP भेजें", + "verify your number title": "अपना नंबर सत्यापित करें", + "otp sent subtitle": "एक 5 अंकों का कोड भेजा गया\n@phoneNumber", + "verify and continue button": "सत्यापित करें और जारी रखें", + "enter otp validation": "कृपया 5 अंकों का OTP दर्ज करें", + "one last step title": "एक आखिरी कदम", + "complete profile subtitle": "शुरू करने के लिए प्रोफाइल पूरा करें", + "first name label": "पहला नाम", + "first name required": "पहला नाम आवश्यक है", + "last name label": "अंतिम नाम", + "Verify OTP": "OTP सत्यापित करें", + "Verification Code": "सत्यापन कोड", + "We have sent a verification code to your mobile number:": + "हमने आपके मोबाइल नंबर पर एक सत्यापन कोड भेजा है:", + "Verify": "सत्यापित करें", + "Resend Code": "कोड पुनः भेजें", + "You can resend in": "पुनः भेज सकते हैं", + "seconds": "सेकंड", + "Error": "त्रुटि", + "Please enter the complete 6-digit code.": + "कृपया पूरा 6 अंकों का कोड दर्ज करें।", + "last name required": "अंतिम नाम आवश्यक है", + "email optional label": "ईमेल (वैकल्पिक)", + "complete registration button": "पंजीकरण पूरा करें", + "User with this phone number or email already exists.": + "इस फ़ोन नंबर या ईमेल वाला उपयोगकर्ता पहले से मौजूद है।", + "otp sent success": "OTP व्हाट्सएप पर सफलतापूर्वक भेजा गया।", + "failed to send otp": "OTP भेजने में विफल।", + "server error try again": "सर्वर त्रुटि, पुनः प्रयास करें।", + "an error occurred": "एक त्रुटि हुई: @error", + "otp verification failed": "OTP सत्यापन विफल रहा।", + "registration failed": "पंजीकरण विफल रहा।", + "welcome user": "स्वागत है, @firstName!", + "Cancel Trip from driver": "ड्राइवर द्वारा ट्रिप रद्द", + "We will look for a new driver.\nPlease wait.": + "हम नए ड्राइवर की तलाश करेंगे।\nकृपया प्रतीक्षा करें।", + "The driver canceled your ride.": "ड्राइवर ने आपकी राइड रद्द कर दी।", + "Driver Finish Trip": "ड्राइवर ने ट्रिप समाप्त की", + "you will pay to Driver": "आप ड्राइवर को भुगतान करेंगे", + "Don't forget your personal belongings.": "अपना निजी सामान न भूलें।", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "कृपया सुनिश्चित करें कि आपके पास आपका सारा सामान है और शेष किराया वॉलेट में जोड़ दिया गया है। Intaleq चुनने के लिए धन्यवाद।", + "Finish Monitor": "निगरानी समाप्त करें", + "Trip finished": "ट्रिप समाप्त", + "Call Income from Driver": "ड्राइवर से कॉल", + "Driver Cancelled Your Trip": "ड्राइवर ने आपकी ट्रिप रद्द कर दी", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "आप ड्राइवर के समय की कीमत चुकाएंगे, अपना Intaleq वॉलेट देखें", + "Order Applied": "ऑर्डर लागू किया गया", + "Share App": "ऐप शेयर करें", + "Wallet": "वॉलेट", + "Balance": "बैलेंस", + "Don’t forget your personal belongings.": "अपना निजी सामान न भूलें।", + "Profile": "प्रोफ़ाइल", + "Contact Support": "सपोर्ट से संपर्क करें", + "Session expired. Please log in again.": + "सत्र समाप्त हो गया। कृपया पुन: लॉगिन करें।", + "Security Warning": "⚠️ सुरक्षा चेतावनी", + "Potential security risks detected. The application may not function correctly.": + "संभावित सुरक्षा जोखिमों का पता चला। एप्लिकेशन सही ढंग से काम नहीं कर सकता है।", + "please order now": "अभी ऑर्डर करें", + "Where to": "कहाँ जाना है?", + "Where are you going?": "आप कहाँ जा रहे हैं?", + "Quick Actions": "त्वरित क्रियाएं", + "My Balance": "मेरा बैलेंस", + "Order History": "ऑर्डर इतिहास", + "Contact Us": "संपर्क करें", "Driver": "ड्राइवर", "Complaint": "शिकायत", "Promos": "प्रोमो", "Recent Places": "हाल के स्थान", "From": "से", - "WhatsApp Location Extractor": "WhatsApp स्थान निकालने वाला", - "Location Link": "स्थान लिंक", - "Paste location link here": "स्थान लिंक यहां पेस्ट करें", - "Go to this location": "इस स्थान पर जाएं", - "Paste WhatsApp location link": "WhatsApp स्थान लिंक पेस्ट करें", - "Select Order Type": "आदेश प्रकार चुनें", - "Choose who this order is for": "चुनें कि यह आदेश किसके लिए है", - "I want to order for myself": "मैं अपने लिए आदेश देना चाहता हूं", + "WhatsApp Location Extractor": "व्हाट्सएप लोकेशन एक्सट्रैक्टर", + "Location Link": "लोकेशन लिंक", + "Paste location link here": "लोकेशन लिंक यहाँ पेस्ट करें", + "Go to this location": "इस लोकेशन पर जाएं", + "Paste WhatsApp location link": "व्हाट्सएप लोकेशन लिंक पेस्ट करें", + "Select Order Type": "ऑर्डर प्रकार चुनें", + "Choose who this order is for": "यह ऑर्डर किसके लिए है चुनें", + "I want to order for myself": "मैं अपने लिए ऑर्डर करना चाहता हूँ", "I want to order for someone else": - "मैं किसी और के लिए आदेश देना चाहता हूं", - // "Cancel": "रद्द करें", - "Order for someone else": "किसी और के लिए आदेश", - "Order for myself": "अपने लिए आदेश", - "Are you want to go this site": "क्या आप इस साइट पर जाना चाहते हैं?", - // "Yes": "हां", + "मैं किसी और के लिए ऑर्डर करना चाहता हूँ", + "Order for someone else": "किसी और के लिए ऑर्डर", + "Order for myself": "स्वयं के लिए ऑर्डर", + "Are you want to go this site": "क्या आप इस जगह जाना चाहते हैं", "No": "नहीं", + "Pay by Sham Cash": "Sham Cash से भुगतान करें", + "Intaleq Wallet": "Intaleq वॉलेट", + "Have a promo code?": "क्या आपके पास प्रोमो कोड है?", + "Your Wallet balance is ": "आपका वॉलेट बैलेंस है: ", + "Cash": "नकद", + "Phone Number": "फ़ोन नंबर", + "Search country": "देश खोजें", + "Payment Successful!": "भुगतान सफल!", + "Your payment was successful.": "आपका भुगतान सफल रहा।", + "Pay directly to the captain": "सीधे कैप्टन को भुगतान करें", + "Top up Wallet to continue": "जारी रखने के लिए वॉलेट रिचार्ज करें", + "Or pay with Cash instead": "या नकद भुगतान करें", + "Confirm & Find a Ride": "पुष्टि करें और राइड खोजें", + "Balance:": "बैलेंस:", + "Alerts": "अलर्ट", + "Welcome Back!": "वापसी पर स्वागत है!", + "Current Balance": "वर्तमान बैलेंस", + "Set Wallet Phone Number": "वॉलेट फ़ोन नंबर सेट करें", + "Link a phone number for transfers": + "ट्रांसफर के लिए फ़ोन नंबर लिंक करें", + "Payment History": "भुगतान इतिहास", + "View your past transactions": "अपने पिछले लेनदेन देखें", + "Top up Wallet": "वॉलेट रिचार्ज करें", + "Add funds using our secure methods": + "हमारी सुरक्षित विधियों से पैसे जोड़ें", + "Driver is waiting": "ड्राइवर इंतज़ार कर रहा है", + "Type your message...": "अपना संदेश लिखें...", + "Driver Accepted Request": "ड्राइवर ने अनुरोध स्वीकार किया", + "Message": "संदेश", + "Call": "कॉल", + "Set Phone Number": "फ़ोन नंबर सेट करें", + "Select This Ride": "यह राइड चुनें", + "Call Driver": "ड्राइवर को कॉल करें", + "Increase Fare": "किराया बढ़ाएं", + "Stop": "रुकें", + "Record": "रिकॉर्ड", + "Share": "शेयर", + "WhatsApp": "व्हाट्सएप", + "SOS": "SOS", + "No drivers accepted your request yet": + "अभी तक किसी ड्राइवर ने आपका अनुरोध स्वीकार नहीं किया", + "Increasing the fare might attract more drivers. Would you like to increase the price?": + "किराया बढ़ाने से अधिक ड्राइवर आकर्षित हो सकते हैं। क्या आप कीमत बढ़ाना चाहेंगे?", + "Please make sure not to leave any personal belongings in the car.": + "कृपया सुनिश्चित करें कि कार में कोई निजी सामान न छोड़ें।", + "Cancel Ride": "राइड रद्द करें", + "Route Not Found": "रूट नहीं मिला", + "We couldn't find a valid route to this destination. Please try selecting a different point.": + "हमें इस गंतव्य के लिए कोई मान्य मार्ग नहीं मिला। कृपया कोई अन्य बिंदु चुनें।", + "alert": "चेतावनी", + "You can call or record audio during this trip.": + "आप इस ट्रिप के दौरान कॉल या ऑडियो रिकॉर्ड कर सकते हैं।", + "Warning: Speeding detected!": "चेतावनी: तेज गति का पता चला!", + "Fixed Price": "फिक्स्ड प्राइस", + "Report": "रिपोर्ट", + "Comfort": "आराम (Comfort)", + "Intaleq Balance": "Intaleq बैलेंस", + "Search for a starting point": "प्रारंभिक बिंदु खोजें", + "Top up Balance to continue": "जारी रखने के लिए बैलेंस रिचार्ज करें", + "Electric": "इलेक्ट्रिक", + "Lady": "महिला", + "Van": "वैन", + "Rayeh Gai": "आना-जाना (Round Trip)", + "Join Intaleq as a driver using my referral code!": + "मेरे रेफरल कोड का उपयोग करके ड्राइवर के रूप में Intaleq से जुड़ें!", + "Use code:": "कोड का उपयोग करें:", + "Download the Intaleq Driver app now and earn rewards!": + "अभी Intaleq ड्राइवर ऐप डाउनलोड करें और पुरस्कार अर्जित करें!", + "Get a discount on your first Intaleq ride!": + "अपनी पहली Intaleq राइड पर छूट प्राप्त करें!", + "Use my referral code:": "मेरा रेफरल कोड उपयोग करें:", + "Download the Intaleq app now and enjoy your ride!": + "अभी Intaleq ऐप डाउनलोड करें और अपनी राइड का आनंद लें!", + "Contacts Loaded": "संपर्क लोड हो गए", + "Showing": "दिखा रहा है", + "of": "में से", + "Pay by MTN Wallet": "MTN वॉलेट से भुगतान करें", + "Pay by Syriatel Wallet": "Syriatel वॉलेट से भुगतान करें", + "Customer not found": "ग्राहक नहीं मिला", + "Wallet is blocked": "वॉलेट ब्लॉक है", + "Customer phone is not active": "ग्राहक का फोन सक्रिय नहीं है", + "Balance not enough": "बैलेंस पर्याप्त नहीं है", + "Balance limit exceeded": "बैलेंस सीमा पार हो गई", + "Incorrect sms code": "⚠️ गलत SMS कोड। कृपया पुनः प्रयास करें।", + "contacts. Others were hidden because they don't have a phone number.": + "संपर्क। अन्य छिपा दिए गए क्योंकि उनके पास फ़ोन नंबर नहीं है।", + "No contacts found": "कोई संपर्क नहीं मिला", + "No contacts with phone numbers were found on your device.": + "आपके डिवाइस पर फ़ोन नंबर वाले कोई संपर्क नहीं मिले।", + "Permission denied": "अनुमति अस्वीकृत", + "Contact permission is required to pick contacts": + "संपर्क चुनने के लिए संपर्क अनुमति आवश्यक है।", + "An error occurred while picking contacts:": + "संपर्क चुनते समय एक त्रुटि हुई:", + "Please enter a correct phone": "कृपया सही फ़ोन नंबर दर्ज करें", + "Success": "सफलता", + "Invite sent successfully": "निमंत्रण सफलतापूर्वक भेजा गया", + "Hello! I'm inviting you to try Intaleq.": + "नमस्ते! मैं आपको Intaleq आज़माने के लिए आमंत्रित कर रहा हूँ।", + "Use my invitation code to get a special gift on your first ride!": + "अपनी पहली राइड पर विशेष उपहार पाने के लिए मेरा आमंत्रण कोड उपयोग करें!", + "Your personal invitation code is:": "आपका व्यक्तिगत आमंत्रण कोड है:", + "Be sure to use it quickly! This code expires at": + "जल्दी इस्तेमाल करें! यह कोड समाप्त हो जाएगा", + "Download the app now:": "अभी ऐप डाउनलोड करें:", + "See you on the road!": "रास्ते में मिलते हैं!", + "This phone number has already been invited.": + "इस फ़ोन नंबर को पहले ही आमंत्रित किया जा चुका है।", + "An unexpected error occurred. Please try again.": + "एक अप्रत्याशित त्रुटि हुई। कृपया पुन: प्रयास करें।", + "You deserve the gift": "आप उपहार के हकदार हैं", + "Claim your 20 LE gift for inviting": + "आमंत्रित करने के लिए अपना ₹20 का उपहार प्राप्त करें", + "You have got a gift for invitation": + "आपको आमंत्रण के लिए एक उपहार मिला है", + "You have earned 20": "आपने 20 अर्जित किए हैं", + "LE": "₹", + "Vibration feedback for all buttons": + "सभी बटनों के लिए वाइब्रेशन फीडबैक", + "Share with friends and earn rewards": + "दोस्तों के साथ साझा करें और पुरस्कार अर्जित करें", + "Gift Already Claimed": "उपहार पहले ही लिया जा चुका है", + "You have already received your gift for inviting": + "आप आमंत्रित करने के लिए अपना उपहार पहले ही प्राप्त कर चुके हैं", + "Keep it up!": "लगे रहो!", + "has completed": "पूरा कर लिया है", + "trips": "ट्रिप्स", + "Personal Information": "व्यक्तिगत जानकारी", + "Name": "नाम", + "Not set": "सेट नहीं", + "Gender": "लिंग", + "Education": "शिक्षा", + "Work & Contact": "काम और संपर्क", + "Employment Type": "रोज़गार का प्रकार", + "Marital Status": "वैवाहिक स्थिति", + "SOS Phone": "SOS फ़ोन", + "Sign Out": "साइन आउट", + "Delete My Account": "मेरा खाता हटाएं", + "Update Gender": "लिंग अपडेट करें", + "Update": "अपडेट", + "Update Education": "शिक्षा अपडेट करें", + "Are you sure? This action cannot be undone.": + "क्या आप सुनिश्चित हैं? यह कार्रवाई पूर्ववत नहीं की जा सकती।", + "Confirm your Email": "अपना ईमेल सत्यापित करें", + "Type your Email": "अपना ईमेल टाइप करें", + "Delete Permanently": "स्थायी रूप से हटाएं", + "Male": "पुरुष", + "Female": "महिला", + "Other": "अन्य", + "High School Diploma": "हाई स्कूल डिप्लोमा", + "Associate Degree": "एसोसिएट डिग्री", + "Bachelor's Degree": "स्नातक की डिग्री (Bachelor's)", + "Master's Degree": "मास्टर डिग्री", + "Doctoral Degree": "डॉ डॉक्टरेट डिग्री", + "Select your preferred language for the app interface.": + "ऐप इंटरफेस के लिए अपनी पसंदीदा भाषा चुनें।", + "Language Options": "भाषा विकल्प", + "You can claim your gift once they complete 2 trips.": + "जब वे 2 ट्रिप पूरे कर लें तो आप अपना उपहार प्राप्त कर सकते हैं।", + "Closest & Cheapest": "सबसे नज़दीकी और सस्ता", + "Comfort choice": "आरामदायक विकल्प", + "Travel in a modern, silent electric car. A premium, eco-friendly choice for a smooth ride.": + "आधुनिक, शांत इलेक्ट्रिक कार में यात्रा करें। एक प्रीमियम, पर्यावरण के अनुकूल विकल्प।", + "Spacious van service ideal for families and groups. Comfortable, safe, and cost-effective travel together.": + "परिवारों और समूहों के लिए विशाल वैन सेवा। आरामदायक, सुरक्षित और किफायती।", + "Quiet & Eco-Friendly": "शांत और पर्यावरण अनुकूल", + "Lady Captain for girls": "महिलाओं के लिए लेडी कैप्टन", + "Van for familly": "परिवार के लिए वैन", "Are you sure to delete this location?": "क्या आप वाकई इस स्थान को हटाना चाहते हैं?", - "deleted": "हटाया गया", + "Change Work location?": "काम की लोकेशन बदलें?", + "Change Home location?": "घर की लोकेशन बदलें?", + "Submit a Complaint": "शिकायत दर्ज करें", + "Submit Complaint": "शिकायत जमा करें", + "No trip history found": "कोई ट्रिप इतिहास नहीं मिला", + "Your past trips will appear here.": + "आपकी पिछली ट्रिप्स यहाँ दिखाई देंगी।", + "1. Describe Your Issue": "1. अपनी समस्या का वर्णन करें", + "Enter your complaint here...": "अपनी शिकायत यहाँ लिखें...", + "2. Attach Recorded Audio": "2. रिकॉर्ड किया गया ऑडियो जोड़ें", + "No audio files found.": "कोई ऑडियो फ़ाइल नहीं मिली।", + "Confirm Attachment": "अटैचमेंट की पुष्टि करें", + "Attach this audio file?": "क्या यह ऑडियो फ़ाइल अटैच करें?", + "Uploaded": "अपलोड हो गया", + "3. Review Details & Response": + "3. विवरण और प्रतिक्रिया की समीक्षा करें", + "Date": "तारीख", + "Today's Promos": "आज के प्रोमो", + "No promos available right now.": "अभी कोई प्रोमो उपलब्ध नहीं है।", + "Check back later for new offers!": + "नए ऑफ़र के लिए बाद में दोबारा चेक करें!", + "Valid Until:": "तक वैध:", + "CODE": "कोड", + "Login": "लॉगिन", + "Sign in for a seamless experience": + "बेहतर अनुभव के लिए साइन इन करें", + "Sign In with Google": "Google के साथ साइन इन करें", + "Sign in with Apple": "Apple के साथ साइन इन करें", + "User not found": "उपयोगकर्ता नहीं मिला", + "Need assistance? Contact us": "सहायता चाहिए? हमसे संपर्क करें", + "Email": "ईमेल", + "Your email address": "आपका ईमेल पता", + "Enter a valid email": "एक वैध ईमेल दर्ज करें", + "Password": "पासवर्ड", + "Your password": "आपका पासवर्ड", + "Enter your password": "अपना पासवर्ड दर्ज करें", + "Submit": "जमा करें", + "Terms of Use & Privacy Notice": "उपयोग की शर्तें और गोपनीयता नोटिस", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the ": + "नीचे \"मैं सहमत हूँ\" का चयन करके, मैं पुष्टि करता हूँ कि मैंने पढ़ा है और सहमत हूँ ", + "Terms of Use": "उपयोग की शर्तें", + " and acknowledge the ": " और स्वीकार करता हूँ ", + "Privacy Notice": "गोपनीयता नोटिस", + " . I am at least 18 years old.": " । मेरी आयु कम से कम 18 वर्ष है।", + "I Agree": "मैं सहमत हूँ", + "Continue": "जारी रखें", + "Enable Location": "लोकेशन चालू करें", + "To give you the best experience, we need to know where you are. Your location is used to find nearby captains and for pickups.": + "आपको सबसे अच्छा अनुभव देने के लिए हमें यह जानने की जरूरत है कि आप कहां हैं। आपकी लोकेशन का उपयोग नजदीकी कैप्टन को खोजने के लिए किया जाता है।", + "Allow Location Access": "लोकेशन एक्सेस की अनुमति दें", + "Welcome to Intaleq!": "Intaleq में आपका स्वागत है!", + "Before we start, please review our terms.": + "शुरू करने से पहले, कृपया हमारी शर्तों की समीक्षा करें।", + "Your journey starts here": "आपकी यात्रा यहाँ से शुरू होती है", + "Cancel Search": "खोज रद्द करें", + "Set pickup location": "पिकअप लोकेशन सेट करें", + "Move the map to adjust the pin": + "पिन को समायोजित करने के लिए मैप को खिसकाएं", + "Searching for the nearest captain...": + "निकटतम कैप्टन की खोज की जा रही है...", + "No one accepted? Try increasing the fare.": + "किसी ने स्वीकार नहीं किया? किराया बढ़ाने का प्रयास करें।", + "Increase Your Trip Fee (Optional)": + "अपनी ट्रिप फीस बढ़ाएं (वैकल्पिक)", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "हमें अभी तक कोई ड्राइवर नहीं मिला है। अपनी पेशकश को ड्राइवरों के लिए अधिक आकर्षक बनाने के लिए ट्रिप फीस बढ़ाने पर विचार करें।", + "No, thanks": "नहीं, धन्यवाद", + "Increase Fee": "फीस बढ़ाएं", + "Copy": "कॉपी", + "Promo Copied!": "प्रोमो कॉपी हो गया!", + "Code": "कोड", + "copied to clipboard": "क्लिपबोर्ड पर कॉपी किया गया", + "Price": "कीमत", + "Intaleq's Response": "Intaleq की प्रतिक्रिया", + "Awaiting response...": "प्रतिक्रिया की प्रतीक्षा है...", + "Audio file not attached": "ऑडियो फ़ाइल संलग्न नहीं है", + "The audio file is not uploaded yet.\\nDo you want to submit without it?": + "ऑडियो फ़ाइल अभी तक अपलोड नहीं हुई है।\\nक्या आप इसके बिना सबमिट करना चाहते हैं?", + "deleted": "हटा दिया गया", "To Work": "काम पर", - "Work Saved": "काम की जगह सहेजी गई", + "Work Saved": "काम सहेजा गया", "To Home": "घर पर", - "Home Saved": "घर की जगह सहेजी गई", + "Home Saved": "घर सहेजा गया", "Destination selected": "गंतव्य चुना गया", - "Now select start pick": "अब शुरुआती स्थान चुनें", + "Now select start pick": "अब पिकअप चुनें", "OK": "ठीक है", - "Confirm Pick-up Location": "पिक-अप स्थान की पुष्टि करें", - "Set Location on Map": "मानचित्र पर स्थान सेट करें", + "Confirm Pick-up Location": "पिक-अप लोकेशन की पुष्टि करें", + "Set Location on Map": "मैप पर लोकेशन सेट करें", + "Leave a detailed comment (Optional)": + "विस्तृत टिप्पणी छोड़ें (वैकल्पिक)", + "Share your experience to help us improve...": + "हमें बेहतर बनाने में मदद के लिए अपना अनुभव साझा करें...", + "Your valuable feedback helps us improve our service quality.": + "आपकी बहुमूल्य प्रतिक्रिया हमारी सेवा की गुणवत्ता को बेहतर बनाने में मदद करती है।", + "witout zero": "शून्य के बिना", + "Top up Balance": "बैलेंस रिचार्ज करें", + "An error occurred": "एक त्रुटि हुई", + "Send WhatsApp Message": "व्हाट्सएप संदेश भेजें", + "How was your trip with": "आपकी ट्रिप कैसी रही", + "Drawing route on map...": "मैप पर रूट बनाया जा रहा है...", + "Please wait while we prepare your trip.": + "कृपया प्रतीक्षा करें जब तक हम आपकी ट्रिप तैयार करते हैं।", + "Submit Rating": "रेटिंग सबमिट करें", + "Call Support": "सपोर्ट को कॉल करें", + "You can contact us during working hours from 10:00 - 16:00.": + "आप हमसे कार्यालय समय 10:00 - 16:00 के दौरान संपर्क कर सकते हैं।", + "Intaleq is the safest and most reliable ride-sharing app designed especially for passengers in Syria. We provide a comfortable, respectful, and affordable riding experience with features that prioritize your safety and convenience. Our trusted captains are verified, insured, and supported by regular car maintenance carried out by top engineers. We also offer on-road support services to make sure every trip is smooth and worry-free. With Intaleq, you enjoy quality, safety, and peace of mind—every time you ride.": + "Intaleq सबसे सुरक्षित और विश्वसनीय राइड-शेयरिंग ऐप है जिसे विशेष रूप से भारत के लिए डिज़ाइन किया गया है। हम एक आरामदायक, सम्मानजनक और किफायती यात्रा प्रदान करते हैं।", + "Work time is from 10:00 AM to 16:00 PM.\nYou can send a WhatsApp message or email.": + "काम का समय सुबह 10:00 बजे से शाम 4:00 बजे तक है।\nआप व्हाट्सएप संदेश या ईमेल भेज सकते हैं।", + "Sorry": "क्षमा करें", + "Customer MSISDN doesn’t have customer wallet": + "ग्राहक नंबर का वॉलेट नहीं है", + "Please enter the number without the leading 0": + "कृपया शुरुआत में 0 के बिना नंबर दर्ज करें", + "Please enter your phone number": "कृपया अपना फ़ोन नंबर दर्ज करें", + "Phone number seems too short": "फ़ोन नंबर बहुत छोटा लग रहा है", + "No cars are available at the moment. Please try again later.": + "इस समय कोई कार उपलब्ध नहीं है। कृपया बाद में पुनः प्रयास करें।", "Nearest Car: ~": "निकटतम कार: ~", "Nearest Car": "निकटतम कार", "No cars nearby": "आस-पास कोई कार नहीं", "Favorite Places": "पसंदीदा स्थान", "No favorite places yet!": "अभी तक कोई पसंदीदा स्थान नहीं!", "from your favorites": "आपके पसंदीदा से", - "Back": "पीछे", - "Sign in for a seamless experience": - "एक सहज अनुभव के लिए साइन इन करें", - "Sign In with Google": "Google के साथ साइन इन करें", - "Sign in with Apple": "Apple के साथ साइन इन करें", - "Need assistance? Contact us": "सहायता चाहिए? हमसे संपर्क करें", - "User not found": "उपयोगकर्ता नहीं मिला", - "Email": "ईमेल", - "Your email address": "आपका ईमेल पता", - "Enter a valid email": "एक वैध ईमेल दर्ज करें", - "Password": "पासवर्ड", - // "Your password": "आपका पासवर्ड", - "Enter your password": "अपना पासवर्ड दर्ज करें", - "Submit": "जमा करें", - "Terms of Use & Privacy Notice": "उपयोग की शर्तें और गोपनीयता नीति", - "Terms of Use": "उपयोग की शर्तें", - "Privacy Notice": "गोपनीयता नीति", + "Back": "वापस", + "Enter your code below to apply the discount.": + "छूट प्राप्त करने के लिए अपना कोड नीचे दर्ज करें।", "By selecting \"I Agree\" below, I confirm that I have read and agree to the": - "नीचे \"मैं सहमत हूं\" चुनकर, मैं पुष्टि करता हूं कि मैंने पढ़ लिया है और सहमत हूं", - "and acknowledge the": "और स्वीकार करता हूं", - ". I am at least 18 years old.": ". मैं कम से कम 18 वर्ष का हूं।", - "Continue": "जारी रखें", - "Enable Location Access": "स्थान पहुंच सक्षम करें", + "नीचे \"मैं सहमत हूँ\" का चयन करके, मैं पुष्टि करता हूँ कि मैंने पढ़ा है और सहमत हूँ", + "and acknowledge the": "और स्वीकार करता हूँ", + "Enable Location Access": "लोकेशन एक्सेस सक्षम करें", "We need your location to find nearby drivers for pickups and drop-offs.": - "हमें पिकअप और ड्रॉप-ऑफ के लिए निकटतम ड्राइवर खोजने के लिए आपका स्थान चाहिए।", - "Allow Location Access": "स्थान पहुंच की अनुमति दें", + "पिकअप और ड्रॉप-ऑफ के लिए आस-पास के ड्राइवरों को खोजने के लिए हमें आपकी लोकेशन की आवश्यकता है।", "You should restart app to change language": - "भाषा बदलने के लिए आपको ऐप को पुनः आरंभ करना चाहिए", - "Home Page": "मुखपृष्ठ", + "भाषा बदलने के लिए आपको ऐप को रीस्टार्ट करना चाहिए", + "Home Page": "होम पेज", "To change Language the App": "ऐप की भाषा बदलने के लिए", "Learn more about our app and mission": - "हमारे ऐप और मिशन के बारे में अधिक जानें", - "Promos For Today": "आज के लिए प्रोमो", - "Choose your ride": "अपनी यात्रा चुनें", - "Your Journey Begins Here": "आपकी यात्रा यहां से शुरू होती है", + "हमारे ऐप और मिशन के बारे में और जानें", + "Promos For Today": "आज के प्रोमो", + "Choose your ride": "अपनी सवारी चुनें", + "Your Journey Begins Here": "आपकी यात्रा यहाँ से शुरू होती है", "Bonus gift": "बोनस उपहार", "Pay": "भुगतान", "Get": "प्राप्त करें", "Send to Driver Again": "ड्राइवर को फिर से भेजें", "Driver Name:": "ड्राइवर का नाम:", - "No trip data available": "कोई यात्रा डेटा उपलब्ध नहीं", - "Car Plate:": "कार नंबर:", + "No trip data available": "कोई ट्रिप डेटा उपलब्ध नहीं", + "Car Plate:": "कार प्लेट:", "remaining": "शेष", - "Order Cancelled": "आदेश रद्द", - "You canceled VIP trip": "आपने वीआईपी यात्रा रद्द कर दी", - "Passenger cancelled order": "यात्री ने आदेश रद्द कर दिया", - "Your trip is scheduled": "आपकी यात्रा निर्धारित है", - "Don't forget your ride!": "अपनी यात्रा न भूलें!", - "Trip updated successfully": "यात्रा सफलतापूर्वक अद्यतन", - "Car Make:": "कार निर्माता:", - "Car Model:": "कार मॉडल:", + "Order Cancelled": "ऑर्डर रद्द", + "You canceled VIP trip": "आपने VIP ट्रिप रद्द कर दी", + "Passenger cancelled order": "यात्री ने ऑर्डर रद्द कर दिया", + "Your trip is scheduled": "आपकी ट्रिप शेड्यूल है", + "Don't forget your ride!": "अपनी सवारी न भूलें!", + "Trip updated successfully": "ट्रिप सफलतापूर्वक अपडेट हो गई", + "Car Make:": "कार की कंपनी:", + "Car Model:": "कार का मॉडल:", "Car Color:": "कार का रंग:", - "Driver Phone:": "ड्राइवर का फोन:", - "Pre-booking": "पूर्व बुकिंग", - "Waiting VIP": "वीआईपी की प्रतीक्षा", + "Driver Phone:": "ड्राइवर का फ़ोन:", + "Pre-booking": "प्री-बुकिंग", + "Waiting VIP": "VIP का इंतज़ार", "Driver List": "ड्राइवर सूची", - "Confirm Trip": "यात्रा की पुष्टि करें", - "Select date and time of trip": "यात्रा की तारीख और समय चुनें", + "Confirm Trip": "ट्रिप की पुष्टि करें", + "Select date and time of trip": "ट्रिप की तारीख और समय चुनें", "Date and Time Picker": "तारीख और समय चयनकर्ता", - "Trip Status:": "यात्रा स्थिति:", + "Trip Status:": "ट्रिप की स्थिति:", "pending": "लंबित", "accepted": "स्वीकृत", "rejected": "अस्वीकृत", @@ -11780,122 +15345,108 @@ class MyTranslation extends Translations { "Scheduled Time:": "निर्धारित समय:", "No drivers available": "कोई ड्राइवर उपलब्ध नहीं", "No drivers available at the moment. Please try again later.": - "फिलहाल कोई ड्राइवर उपलब्ध नहीं है। कृपया बाद में पुनः प्रयास करें।", - "you have a negative balance of": "आपका नकारात्मक शेष है", + "इस समय कोई ड्राइवर उपलब्ध नहीं है। कृपया बाद में पुनः प्रयास करें।", + "you have a negative balance of": "आपका बैलेंस ऋणात्मक (negative) है", "Please try again in a few moments": "कृपया कुछ क्षणों में पुनः प्रयास करें", "Unknown Driver": "अज्ञात ड्राइवर", - "in your": "आपके", + "in your": "आपके में", "The driver accepted your order for": - "ड्राइवर ने आपका आदेश स्वीकार कर लिया", - "wallet due to a previous trip.": "पिछली यात्रा के कारण वॉलेट।", - "rides": "यात्राएं", + "ड्राइवर ने आपका ऑर्डर स्वीकार कर लिया है", + "wallet due to a previous trip.": "पिछली ट्रिप के कारण वॉलेट।", + "rides": "सवारियां", "Add Work": "काम जोड़ें", - "The reason is": "कारण है", + "The reason is": "कारण यह है", "User does not have a wallet #1652": - "उपयोगकर्ता के पास वॉलेट नहीं है", - "Price of trip": "यात्रा की कीमत", + "उपयोगकर्ता के पास वॉलेट नहीं है #1652", + "Price of trip": "ट्रिप की कीमत", "From:": "से:", "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "स्पीड और डिलीवरी यात्राओं के लिए, कीमत गतिशील रूप से गणना की जाती है। कम्फर्ट यात्राओं के लिए, कीमत समय और दूरी पर आधारित है।", - "Phone Wallet Saved Successfully": "फोन वॉलेट सफलतापूर्वक सहेजा गया", - "Add wallet phone you use": - "जो फोन वॉलेट आप उपयोग करते हैं उसे जोड़ें", - "Update Available": "अद्यतन उपलब्ध", + "Intaleq और डिलीवरी ट्रिप्स के लिए, कीमत की गणना गतिशील रूप से की जाती है। कम्फर्ट ट्रिप्स के लिए, कीमत समय और दूरी पर आधारित होती है।", + "Phone Wallet Saved Successfully": "फ़ोन वॉलेट सफलतापूर्वक सहेजा गया", + "Add wallet phone you use": "अपना वॉलेट फ़ोन जोड़ें", + "Update Available": "अपडेट उपलब्ध है", "Phone number must be exactly 11 digits long": - "फोन नंबर ठीक 11 अंकों का होना चाहिए", - "Insert Wallet phone number": "वॉलेट फोन नंबर डालें", - "Phone number isn't an Egyptian phone number": - "फोन नंबर मिस्र का फोन नंबर नहीं है", + "फ़ोन नंबर बिल्कुल 10 अंकों का होना चाहिए", + "Insert Wallet phone number": "वॉलेट फ़ोन नंबर डालें", + "Phone number isn't an Egyptian phone number": "फ़ोन नंबर अमान्य है", "A new version of the app is available. Please update to the latest version.": - "ऐप का एक नया संस्करण उपलब्ध है। कृपया नवीनतम संस्करण पर अपडेट करें।", + "ऐप का नया संस्करण उपलब्ध है। कृपया नवीनतम संस्करण में अपडेट करें।", "We use location to get accurate and nearest passengers for you": - "हम सटीक और निकटतम यात्रियों को प्राप्त करने के लिए स्थान का उपयोग करते हैं", + "हम आपके लिए सटीक और निकटतम यात्री प्राप्त करने के लिए लोकेशन का उपयोग करते हैं", "This ride is already applied by another driver.": - "यह यात्रा पहले से ही एक अन्य ड्राइवर द्वारा लागू की गई है।", + "यह राइड पहले ही किसी अन्य ड्राइवर ने ले ली है।", "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": - "हम निकटतम उपलब्ध ड्राइवर खोजने और सटीक पिकअप और ड्रॉपऑफ जानकारी प्रदान करने के लिए आपके सटीक स्थान का उपयोग करते हैं। आप इसे सेटिंग्स में प्रबंधित कर सकते हैं।", - "Where are you, sir?": "आप कहां हैं, सर?", + "हम निकटतम उपलब्ध ड्राइवर को खोजने और सटीक पिकअप और ड्रॉपऑफ जानकारी प्रदान करने के लिए आपकी सटीक लोकेशन का उपयोग करते हैं। आप सेटिंग्स में इसका प्रबंधन कर सकते हैं।", + "Where are you, sir?": "सर आप कहाँ हैं?", "I've been trying to reach you but your phone is off.": - "मैं आपसे संपर्क करने की कोशिश कर रहा था लेकिन आपका फोन बंद है।", + "मैं आपसे संपर्क करने की कोशिश कर रहा हूँ लेकिन आपका फ़ोन बंद है।", "Please don't be late": "कृपया देर न करें", "Please don't be late, I'm waiting for you at the specified location.": - "कृपया देर न करें, मैं आपका निर्दिष्ट स्थान पर इंतज़ार कर रहा हूं।", + "कृपया देर न करें, मैं निर्धारित स्थान पर आपका इंतज़ार कर रहा हूँ।", "My location is correct. You can search for me using the navigation app": - "मेरा स्थान सही है। आप नेविगेशन ऐप का उपयोग करके मुझे खोज सकते हैं", + "मेरी लोकेशन सही है। आप नेविगेशन ऐप का उपयोग करके मुझे खोज सकते हैं", "Hello, I'm at the agreed-upon location": - "हैलो, मैं सहमत स्थान पर हूं", + "नमस्ते, मैं तय स्थान पर हूँ", "How much longer will you be?": "आपको और कितना समय लगेगा?", - "Phone number is verified before": - "फोन नंबर पहले सत्यापित किया गया है", - "Change Ride": "यात्रा बदलें", + "Phone number is verified before": "फ़ोन नंबर पहले ही सत्यापित है", + "Change Ride": "सवारी बदलें", "You can change the destination by long-pressing any point on the map": - "आप मानचित्र पर किसी भी बिंदु को लंबे समय तक दबाकर गंतव्य बदल सकते हैं", - "Pick from map destination": "मानचित्र से गंतव्य चुनें", - "Pick or Tap to confirm": "पुष्टि करने के लिए चुनें या टैप करें", - "Accepted your order": "आपका आदेश स्वीकार कर लिया गया", - "Order Accepted": "आदेश स्वीकृत", - "with type": "प्रकार के साथ", - "accepted your order at price": "कीमत पर आपका आदेश स्वीकार कर लिया", - "you canceled order": "आपने आदेश रद्द कर दिया", + "आप मैप पर किसी भी बिंदु को लंबे समय तक दबाकर गंतव्य बदल सकते हैं", + "Pick from map destination": "मैप से गंतव्य चुनें", + "Pick or Tap to confirm": "चुनें या पुष्टि करने के लिए टैप करें", + "Accepted your order": "ने आपका ऑर्डर स्वीकार कर लिया", + "Order Accepted": "ऑर्डर स्वीकार हो गया", + "with type": "टाइप के साथ", + "accepted your order at price": "इस कीमत पर आपका ऑर्डर स्वीकार किया", + "you canceled order": "आपने ऑर्डर रद्द कर दिया", "If you want order to another person": - "यदि आप किसी अन्य व्यक्ति के लिए आदेश देना चाहते हैं", - // "Ok I will go now.": "ठीक है, मैं अब जाऊंगा।", - // "Hi, I will go now": "हाय, मैं अब जाऊंगा", - "upgrade price": "मूल्य उन्नयन", - "Please enter a correct phone": "कृपया एक सही फोन दर्ज करें", + "यदि आप किसी और व्यक्ति के लिए ऑर्डर करना चाहते हैं", + "upgrade price": "कीमत बढ़ाएं", "airport": "हवाई अड्डा", "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": - "लचीले मार्ग और स्टॉप पॉइंट्स के साथ आरामदायक कार के लिए सबसे अच्छा विकल्प। यह हवाई अड्डा इस कीमत पर वीजा प्रवेश प्रदान करता है।", + "लचीले मार्ग और स्टॉप पॉइंट वाली आरामदायक कार के लिए सबसे अच्छा विकल्प।", "You can upgrade price to may driver accept your order": - "आप कीमत बढ़ाकर ड्राइवर को अपना आदेश स्वीकार करने के लिए प्रेरित कर सकते हैं", - "Change Route": "मार्ग बदलें", + "आप कीमत बढ़ा सकते हैं ताकि ड्राइवर आपका ऑर्डर स्वीकार कर ले", + "Change Route": "रूट बदलें", "No Captain Accepted Your Order": - "किसी कप्तान ने आपका आदेश स्वीकार नहीं किया", + "किसी कैप्टन ने आपका ऑर्डर स्वीकार नहीं किया", "We are looking for a captain but the price may increase to let a captain accept": - "हम एक कप्तान की तलाश कर रहे हैं लेकिन कीमत बढ़ सकती है ताकि एक कप्तान स्वीकार कर सके", + "हम कैप्टन की तलाश कर रहे हैं लेकिन कीमत बढ़ सकती है", "No, I want to cancel this trip": - "नहीं, मैं इस यात्रा को रद्द करना चाहता हूं", - // "Trip Cancelled. The cost of the trip will be added to your wallet.": "यात्रा रद्द कर दी गई। यात्रा की लागत आपके वॉलेट में जोड़ दी जाएगी।", - "Attention": "ध्यान", + "नहीं, मैं यह ट्रिप रद्द करना चाहता हूँ", + "Attention": "ध्यान दें", "Trip Cancelled. The cost of the trip will be deducted from your wallet.": - "यात्रा रद्द कर दी गई। यात्रा की लागत आपके वॉलेट से काट ली जाएगी।", + "ट्रिप रद्द हो गई। ट्रिप की लागत आपके वॉलेट से काट ली जाएगी।", "You will be charged for the cost of the driver coming to your location.": - "आपसे ड्राइवर के आपके स्थान पर आने की लागत ली जाएगी।", - "reject your order.": "आपका आदेश अस्वीकार करें।", - "Order Under Review": "आदेश समीक्षा के अधीन", + "ड्राइवर के आपकी लोकेशन पर आने की लागत आपसे ली जाएगी।", + "reject your order.": "आपका ऑर्डर अस्वीकार करें।", + "Order Under Review": "ऑर्डर समीक्षाधीन", "is reviewing your order. They may need more information or a higher price.": - "आपके आदेश की समीक्षा कर रहा है। उन्हें अधिक जानकारी या उच्च कीमत की आवश्यकता हो सकती है।", - // "The driver canceled your ride.": "ड्राइवर ने आपकी यात्रा रद्द कर दी।", - "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": - "हमें अभी तक कोई ड्राइवर नहीं मिला है। अपने प्रस्ताव को ड्राइवरों के लिए अधिक आकर्षक बनाने के लिए अपनी यात्रा शुल्क बढ़ाने पर विचार करें।", - "Increase Your Trip Fee (Optional)": - "अपना यात्रा शुल्क बढ़ाएं (वैकल्पिक)", - "Vibration": "कंपन", - "Resend code": "कोड फिर से भेजें", - // "token change": "टोकन बदलें", + "आपके ऑर्डर की समीक्षा कर रहा है। उन्हें अधिक जानकारी या अधिक कीमत की आवश्यकता हो सकती है।", + "Vibration": "वाइब्रेशन", + "Resend code": "कोड पुनः भेजें", "change device": "डिवाइस बदलें", "Device Change Detected": "डिवाइस परिवर्तन का पता चला", "You can only use one device at a time. This device will now be set as your active device.": - "आप एक समय में केवल एक डिवाइस का उपयोग कर सकते हैं। यह डिवाइस अब आपके सक्रिय डिवाइस के रूप में सेट हो जाएगी।", - "Click here point": "यहां क्लिक करें", + "आप एक समय में केवल एक डिवाइस का उपयोग कर सकते हैं। अब यह डिवाइस आपके सक्रिय डिवाइस के रूप में सेट हो जाएगा।", + "Click here point": "यहाँ क्लिक करें", "Are you want to change": "क्या आप बदलना चाहते हैं", "by": "द्वारा", - "Enter your complaint here": "अपनी शिकायत यहां दर्ज करें", + "Enter your complaint here": "अपनी शिकायत यहाँ दर्ज करें", "Please enter your complaint.": "कृपया अपनी शिकायत दर्ज करें।", "Complaint data saved successfully": "शिकायत डेटा सफलतापूर्वक सहेजा गया", - "Trip Monitor": "यात्रा निगरानी", - "Insert SOS Phone": "SOS फोन डालें", - "Add SOS Phone": "SOS फोन जोड़ें", - // "Trip Monitoring": "यात्रा निगरानी", - "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": - "प्रिय ,\n\n🚀 मैंने अभी एक रोमांचक यात्रा शुरू की है और मैं अपनी यात्रा के विवरण और अपनी वर्तमान स्थिति को आपके साथ वास्तविक समय में साझा करना चाहता हूं! कृपया Intaleq ऐप डाउनलोड करें। यह आपको मेरी यात्रा के विवरण और मेरी नवीनतम स्थिति देखने की अनुमति देगा।\n\n👈 डाउनलोड लिंक:\nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nमैं अपनी यात्रा के दौरान आपको करीब रखने की आशा करता हूं!\n\nIntaleq ,", + "Trip Monitor": "ट्रिप मॉनिटर", + "Insert SOS Phone": "SOS फ़ोन डालें", + "Add SOS Phone": "SOS फ़ोन जोड़ें", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "प्रिय ,\n\n🚀 मैंने अभी एक रोमांचक यात्रा शुरू की है और मैं अपनी यात्रा का विवरण और अपनी वर्तमान लोकेशन आपके साथ रीयल-टाइम में साझा करना चाहता हूँ! कृपया Intaleq ऐप डाउनलोड करें। यह आपको मेरी ट्रिप विवरण और मेरी नवीनतम लोकेशन देखने की अनुमति देगा।\n\n👉 डाउनलोड लिंक: \nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nIntaleq ,", "Send Intaleq app to him": "उसे Intaleq ऐप भेजें", "No passenger found for the given phone number": - "दिए गए फोन नंबर के लिए कोई यात्री नहीं मिला", + "दिए गए फ़ोन नंबर के लिए कोई यात्री नहीं मिला", "No user found for the given phone number": - "दिए गए फोन नंबर के लिए कोई उपयोगकर्ता नहीं मिला", + "दिए गए फ़ोन नंबर के लिए कोई उपयोगकर्ता नहीं मिला", "This price is": "यह कीमत है", "Work": "काम", "Add Home": "घर जोड़ें", @@ -11905,235 +15456,230 @@ class MyTranslation extends Translations { "⚠️ आपको एक राशि चुनने की आवश्यकता है!", "💰 Pay with Wallet": "💰 वॉलेट से भुगतान करें", "You must restart the app to change the language.": - "भाषा बदलने के लिए आपको ऐप को पुनः आरंभ करना होगा।", - "joined": "शामिल हो गए", + "भाषा बदलने के लिए आपको ऐप को रीस्टार्ट करना होगा।", + "joined": "शामिल हुआ", "Driver joined the channel": "ड्राइवर चैनल में शामिल हो गया", "Driver left the channel": "ड्राइवर ने चैनल छोड़ दिया", "Call Page": "कॉल पेज", - // "Call End": "कॉल समाप्त", - "Call Left": "कॉल शेष", - r"$ Next as Cash $!": "अगला नकद के रूप में!", + "Call Left": "बची हुई कॉल्स", + " Next as Cash !": " अगला नकद के रूप में!", "To use Wallet charge it": - "वॉलेट का उपयोग करने के लिए इसे चार्ज करें", + "वॉलेट का उपयोग करने के लिए इसे रिचार्ज करें", "We are searching for the nearest driver to you": - "हम आपके निकटतम ड्राइवर की तलाश कर रहे हैं", + "हम आपके निकटतम ड्राइवर को खोज रहे हैं", "Best choice for cities": "शहरों के लिए सबसे अच्छा विकल्प", "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": - "राये गई: शहरों के बीच सुविधाजनक यात्रा के लिए राउंड ट्रिप सेवा, आसान और विश्वसनीय।", - "Rayeh Gai": "राये गई", - "This trip is for women only": "यह यात्रा केवल महिलाओं के लिए है", - "Total budgets on month": "महीने पर कुल बजट", - "You have call from driver": "आपको ड्राइवर से कॉल आई है", - "Comfort": "आराम", - "Intaleq": "गति", + "आना-जाना: शहरों के बीच आसान यात्रा के लिए राउंड ट्रिप सेवा।", + "This trip is for women only": "यह ट्रिप केवल महिलाओं के लिए है", + "Total budgets on month": "महीने का कुल बजट", + "You have call from driver": "ड्राइवर की कॉल है", + "Intaleq": "Intaleq", + "passenger agreement": "यात्री समझौता", + "To become a passenger, you must review and agree to the ": + "यात्री बनने के लिए, आपको समीक्षा करनी होगी और सहमत होना होगा ", + "agreement subtitle": + "जारी रखने के लिए, आपको उपयोग की शर्तों और गोपनीयता नीति की समीक्षा करनी चाहिए और सहमत होना चाहिए।", + "terms of use": "उपयोग की शर्तें", + " and acknowledge our Privacy Policy.": + " और हमारी गोपनीयता नीति को स्वीकार करें।", + "and acknowledge our": "और स्वीकार करें हमारी", + "privacy policy": "गोपनीयता नीति।", + "i agree": "मैं सहमत हूँ", "Driver already has 2 trips within the specified period.": - "ड्राइवर के पास निर्दिष्ट अवधि के भीतर पहले से ही 2 यात्राएं हैं।", + "निर्दिष्ट अवधि में ड्राइवर के पास पहले से ही 2 ट्रिप हैं।", "The invitation was sent successfully": - "आमंत्रण सफलतापूर्वक भेजा गया", - "Lady": "महिला", + "निमंत्रण सफलतापूर्वक भेजा गया", "You should select your country": "आपको अपना देश चुनना चाहिए", "Scooter": "स्कूटर", "A trip with a prior reservation, allowing you to choose the best captains and cars.": - "पूर्व आरक्षण के साथ एक यात्रा, जो आपको सर्वश्रेष्ठ कप्तान और कार चुनने की अनुमति देती है।", - "Mishwar Vip": "मिश्वर वीआईपी", + "पूर्व आरक्षण के साथ यात्रा, जो आपको सर्वश्रेष्ठ कैप्टन और कारों को चुनने की अनुमति देती है।", + "Mishwar Vip": "Mishwar VIP", "The driver waiting you in picked location .": - "ड्राइवर आपका चुने हुए स्थान पर इंतज़ार कर रहा है।", + "ड्राइवर पिक लोकेशन पर आपका इंतज़ार कर रहा है।", "About Us": "हमारे बारे में", "You can change the vibration feedback for all buttons": - "आप सभी बटनों के लिए कंपन प्रतिक्रिया बदल सकते हैं", + "आप सभी बटनों के लिए वाइब्रेशन फीडबैक बदल सकते हैं", "Most Secure Methods": "सबसे सुरक्षित तरीके", - "In-App VOIP Calls": "इन-ऐप VOIP कॉल", - "Recorded Trips for Safety": "सुरक्षा के लिए रिकॉर्ड की गई यात्राएं", + "In-App VOIP Calls": "इन-ऐप VOIP कॉल्स", + "Recorded Trips for Safety": "सुरक्षा के लिए रिकॉर्ड की गई ट्रिप्स", "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": - "\nहम सस्ती कीमत को प्राथमिकता देते हैं, आपकी यात्राओं को सुलभ बनाने के लिए प्रतिस्पर्धी मूल्य प्रदान करते हैं।", + "\nहम किफायत को भी प्राथमिकता देते हैं, प्रतिस्पर्धी मूल्य निर्धारण की पेशकश करते हैं।", "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": - "Intaleq एक राइड-शेयरिंग ऐप है जो आपकी सुरक्षा और सस्ती कीमत को ध्यान में रखकर डिज़ाइन किया गया है। हम आपको आपके क्षेत्र में विश्वसनीय ड्राइवरों से जोड़ते हैं, एक सुविधाजनक और तनावमुक्त यात्रा अनुभव सुनिश्चित करते हैं।\n\nयहां कुछ प्रमुख विशेषताएं हैं जो हमें अलग बनाती हैं:", - "Sign In by Apple": "Apple के साथ साइन इन करें", - "Sign In by Google": "Google के साथ साइन इन करें", - "How do I request a ride?": "मैं यात्रा कैसे अनुरोध करूं?", + "Intaleq एक राइड-शेयरिंग ऐप है जिसे आपकी सुरक्षा और किफायत को ध्यान में रखकर डिज़ाइन किया गया है। हम आपको आपके क्षेत्र में विश्वसनीय ड्राइवरों से जोड़ते हैं।", + "Sign In by Apple": "Apple द्वारा साइन इन करें", + "Sign In by Google": "Google द्वारा साइन इन करें", + "How do I request a ride?": "मैं राइड का अनुरोध कैसे करूँ?", "Step-by-step instructions on how to request a ride through the Intaleq app.": - "Intaleq ऐप के माध्यम से यात्रा अनुरोध करने के लिए चरण-दर-चरण निर्देश।", + "Intaleq ऐप के माध्यम से राइड का अनुरोध करने के तरीके पर चरण-दर-चरण निर्देश।", "What types of vehicles are available?": "किस प्रकार के वाहन उपलब्ध हैं?", "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": - "Intaleq आपकी आवश्यकताओं के अनुरूप विभिन्न प्रकार के वाहन विकल्प प्रदान करता है, जिसमें इकोनॉमी, कम्फर्ट और लग्ज़री शामिल हैं। वह विकल्प चुनें जो आपके बजट और यात्री संख्या के लिए सबसे उपयुक्त हो।", + "Intaleq आपकी आवश्यकताओं के अनुरूप विभिन्न प्रकार के वाहन विकल्प प्रदान करता है।", "How can I pay for my ride?": - "मैं अपनी यात्रा के लिए भुगतान कैसे कर सकता हूं?", + "मैं अपनी राइड के लिए भुगतान कैसे कर सकता हूँ?", "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": - "Intaleq आपकी सुविधा के लिए कई भुगतान विधियां प्रदान करता है। यात्रा की पुष्टि के दौरान नकद भुगतान या क्रेडिट/डेबिट कार्ड भुगतान के बीच चुनें।", - "Can I cancel my ride?": "क्या मैं अपनी यात्रा रद्द कर सकता हूं?", - "Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.": - "हां, आप कुछ शर्तों के तहत अपनी यात्रा रद्द कर सकते हैं (जैसे, ड्राइवर नियुक्त होने से पहले)। विवरण के लिए Intaleq रद्दीकरण नीति देखें।", + "Intaleq आपकी सुविधा के लिए भुगतान के कई तरीके प्रदान करता है।", + "Can I cancel my ride?": "क्या मैं अपनी राइड रद्द कर सकता हूँ?", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "हाँ, आप अपनी राइड रद्द कर सकते हैं, लेकिन कृपया ध्यान दें कि रद्दीकरण शुल्क लागू हो सकता है।", "Driver Registration & Requirements": "ड्राइवर पंजीकरण और आवश्यकताएं", "How can I register as a driver?": - "मैं ड्राइवर के रूप में कैसे पंजीकृत कर सकता हूं?", + "मैं ड्राइवर के रूप में कैसे पंजीकरण कर सकता हूँ?", "What are the requirements to become a driver?": "ड्राइवर बनने के लिए क्या आवश्यकताएं हैं?", "Visit our website or contact Intaleq support for information on driver registration and requirements.": - "ड्राइवर पंजीकरण और आवश्यकताओं के बारे में जानकारी के लिए हमारी वेबसाइट पर जाएं या Intaleq समर्थन से संपर्क करें।", + "ड्राइवर पंजीकरण और आवश्यकताओं के बारे में जानकारी के लिए हमारी वेबसाइट पर जाएँ या समर्थन से संपर्क करें।", "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": - "Intaleq आपको अपनी यात्रा के दौरान ड्राइवर या यात्री के साथ संवाद करने की अनुमति देने के लिए इन-ऐप चैट कार्यक्षमता प्रदान करता है।", + "Intaleq इन-ऐप चैट की कार्यक्षमता प्रदान करता है।", "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": - "Intaleq आपकी सुरक्षा को प्राथमिकता देता है। हम ड्राइवर सत्यापन, इन-ऐप यात्रा ट्रैकिंग और आपातकालीन संपर्क विकल्प जैसी सुविधाएं प्रदान करते हैं।", + "Intaleq आपकी सुरक्षा को प्राथमिकता देता है।", "Frequently Questions": "अक्सर पूछे जाने वाले प्रश्न", "User does not exist.": "उपयोगकर्ता मौजूद नहीं है।", "We need your phone number to contact you and to help you.": - "हमें आपसे संपर्क करने और आपकी मदद करने के लिए आपका फोन नंबर चाहिए।", + "हमें आपसे संपर्क करने और आपकी मदद करने के लिए आपके फ़ोन नंबर की आवश्यकता है।", "You will recieve code in sms message": - "आपको एसएमएस संदेश में कोड प्राप्त होगा", + "आपको SMS संदेश में कोड प्राप्त होगा", "Please enter": "कृपया दर्ज करें", "We need your phone number to contact you and to help you receive orders.": - "हमें आपसे संपर्क करने और आपको आदेश प्राप्त करने में मदद करने के लिए आपका फोन नंबर चाहिए।", - "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": - "आपके आपराधिक रिकॉर्ड पर पूरा नाम आपके ड्राइविंग लाइसेंस पर नाम से मेल नहीं खाता है। कृपया सत्यापित करें और सही दस्तावेज़ प्रदान करें।", - "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": - "आपके ड्राइविंग लाइसेंस पर राष्ट्रीय संख्या आपके पहचान दस्तावेज़ पर संख्या से मेल नहीं खाती है। कृपया सत्यापित करें और सही दस्तावेज़ प्रदान करें।", + "हमें आपसे संपर्क करने और ऑर्डर प्राप्त करने में आपकी सहायता करने के लिए आपके फ़ोन नंबर की आवश्यकता है।", + "The full name on your criminal record does not match the one on your driver's license. Please verify and provide the correct documents.": + "आपके पुलिस रिकॉर्ड पर पूरा नाम आपके ड्राइविंग लाइसेंस से मेल नहीं खाता।", + "The national number on your driver's license does not match the one on your ID document. Please verify and provide the correct documents.": + "आपके ड्राइविंग लाइसेंस पर आधार नंबर आपके आईडी दस्तावेज़ से मेल नहीं खाता है।", "Capture an Image of Your Criminal Record": - "अपने आपराधिक रिकॉर्ड की एक छवि कैप्चर करें", - "IssueDate": "जारी करने की तारीख", - "Capture an Image of Your car license front ": - "अपने कार लाइसेंस के सामने की एक छवि कैप्चर करें", + "अपने पुलिस वेरिफिकेशन की तस्वीर लें", + "IssueDate": "जारी करने की तिथि", + "Capture an Image of Your car license front": + "अपनी गाड़ी के कागज (RC) के सामने की तस्वीर लें", "Capture an Image of Your ID Document front": - "अपने पहचान दस्तावेज़ के सामने की एक छवि कैप्चर करें", - "NationalID": "राष्ट्रीय पहचान", + "अपने पहचान पत्र (Aadhaar) के सामने की तस्वीर लें", + "NationalID": "आधार नंबर", "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": - "आप Intaleq ऐप को अपने दोस्तों के साथ साझा कर सकते हैं और उनके द्वारा आपके कोड का उपयोग करके की गई यात्राओं के लिए पुरस्कार अर्जित कर सकते हैं।", + "आप Intaleq ऐप को अपने दोस्तों के साथ साझा कर सकते हैं और पुरस्कार अर्जित कर सकते हैं", "FullName": "पूरा नाम", "No invitation found yet!": "अभी तक कोई आमंत्रण नहीं मिला!", "InspectionResult": "निरीक्षण परिणाम", - "Criminal Record": "आपराधिक रिकॉर्ड", - "Share App": "ऐप साझा करें", + "Criminal Record": "पुलिस वेरिफिकेशन", "The email or phone number is already registered.": - "ईमेल या फोन नंबर पहले से ही पंजीकृत है।", + "ईमेल या फ़ोन नंबर पहले से पंजीकृत है।", "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": - "Intaleq ऐप पर राइड-शेयरिंग ड्राइवर बनने के लिए, आपको अपना ड्राइविंग लाइसेंस, पहचान दस्तावेज़ और कार पंजीकरण दस्तावेज़ अपलोड करने की आवश्यकता है। हमारी AI प्रणाली उनकी प्रामाणिकता की तुरंत समीक्षा और सत्यापन करेगी। यदि आपके दस्तावेज़ स्वीकृत होते हैं, तो आप Intaleq ऐप पर ड्राइवर के रूप में काम शुरू कर सकते हैं। कृपया ध्यान दें, जाली दस्तावेज़ जमा करना एक गंभीर अपराध है और इसके परिणामस्वरूप तत्काल समाप्ति और कानूनी परिणाम हो सकते हैं।", - "Documents check": "दस्तावेज़ जांच", + "ड्राइवर बनने के लिए, आपको अपना ड्राइविंग लाइसेंस, आईडी दस्तावेज़, और गाड़ी के कागज (RC) अपलोड करने की आवश्यकता है।", + "Documents check": "दस्तावेज़ जाँच", "Driver's License": "ड्राइविंग लाइसेंस", "for your first registration!": "आपके पहले पंजीकरण के लिए!", "Get it Now!": "अभी प्राप्त करें!", "before": "पहले", - "Code not approved": "कोड स्वीकृत नहीं", - "3000 LE": "3000 एलई", + "Code not approved": "कोड स्वीकृत नहीं हुआ", + "3000 LE": "₹3000", "Do you have an invitation code from another driver?": - "क्या आपके पास किसी अन्य ड्राइवर से आमंत्रण कोड है?", - "Paste the code here": "कोड यहां पेस्ट करें", + "क्या आपके पास किसी अन्य ड्राइवर का आमंत्रण कोड है?", + "Paste the code here": "कोड यहाँ पेस्ट करें", "No, I don't have a code": "नहीं, मेरे पास कोड नहीं है", - "Code approved": "कोड स्वीकृत", + "Code approved": "कोड स्वीकृत हो गया", "Install our app:": "हमारा ऐप इंस्टॉल करें:", "Invite another driver and both get a gift after he completes 100 trips!": - "एक अन्य ड्राइवर को आमंत्रित करें और जब वह 100 यात्राएं पूरी करे तो दोनों को उपहार मिलेगा!", + "दूसरे ड्राइवर को आमंत्रित करें और उसके 100 ट्रिप पूरे करने के बाद दोनों उपहार पाएं!", "Invite": "आमंत्रित करें", - "Are you sure?": "क्या आप सुनिश्चित हैं?", + "Are you sure?": "क्या आप निश्चित हैं?", "This will delete all recorded files from your device.": - "यह आपके डिवाइस से सभी रिकॉर्ड की गई फ़ाइलों को हटा देगा।", - "Select a file": "एक फ़ाइल चुनें", + "यह आपके डिवाइस से सभी रिकॉर्ड की गई फ़ाइलें हटा देगा।", + "Select a file": "फ़ाइल चुनें", "Select a File": "एक फ़ाइल चुनें", "Delete": "हटाएं", "attach audio of complain": "शिकायत का ऑडियो संलग्न करें", - "Phone Number Check": "फोन नंबर जांच", - "Drivers received orders": "ड्राइवरों को आदेश प्राप्त हुए", - "No audio files recorded.": "कोई ऑडियो फ़ाइल रिकॉर्ड नहीं की गई।", + "Phone Number Check": "फ़ोन नंबर जाँच", + "Drivers received orders": "ड्राइवरों को ऑर्डर प्राप्त हुए", + "No audio files recorded.": "कोई ऑडियो फ़ाइल रिकॉर्ड नहीं हुई।", "This is for delivery or a motorcycle.": "यह डिलीवरी या मोटरसाइकिल के लिए है।", - // "We will look for a new driver.\nPlease wait.": "हम एक नए ड्राइवर की तलाश करेंगे।\nकृपया प्रतीक्षा करें।", "Intaleq Reminder": "Intaleq अनुस्मारक", "It's time to check the Intaleq app!": - "Intaleq ऐप की जांच करने का समय आ गया है!", + "Intaleq ऐप चेक करने का समय है!", "you must insert token code": "आपको टोकन कोड डालना होगा", "Something went wrong. Please try again.": - "कुछ गलत हो गया। कृपया पुनः प्रयास करें।", - "Trip Details": "यात्रा विवरण", + "कुछ गलत हो गया। कृपया पुन: प्रयास करें।", + "Trip Details": "ट्रिप विवरण", "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": - "संदर्भ में कोई शिकायत विवरण नहीं है, इसलिए मैं इस मुद्दे का समाधान प्रदान नहीं कर सकता। कृपया आवश्यक जानकारी प्रदान करें, और मैं आपकी सहायता करने में प्रसन्न हूंगा।", + "संदर्भ कोई शिकायत विवरण प्रदान नहीं करता है।", "Submit Your Complaint": "अपनी शिकायत जमा करें", - "Date": "तारीख", - "Price": "कीमत", "Status": "स्थिति", "Choose from contact": "संपर्क से चुनें", "attach correct audio": "सही ऑडियो संलग्न करें", "be sure": "सुनिश्चित करें", - "Audio uploaded successfully.": "ऑडियो सफलतापूर्वक अपलोड किया गया।", + "Audio uploaded successfully.": "ऑडियो सफलतापूर्वक अपलोड हो गया।", "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": - "नवीनतम कार मॉडल की तलाश करने वाले यात्रियों के लिए आदर्श, जो किसी भी मार्ग को चुनने की स्वतंत्रता चाहते हैं।", + "नवीनतम कार मॉडल चाहने वाले यात्रियों के लिए उत्तम", "Share this code with your friends and earn rewards when they use it!": - "इस कोड को अपने दोस्तों के साथ साझा करें और जब वे इसका उपयोग करें तो पुरस्कार अर्जित करें!", - "Enter phone": "फोन दर्ज करें", - "You deserve the gift": "आप उपहार के हकदार हैं", + "इस कोड को अपने दोस्तों के साथ साझा करें और पुरस्कार अर्जित करें!", + "Enter phone": "फ़ोन दर्ज करें", "complete, you can claim your gift": - "पूरा करें, आप अपना उपहार दावा कर सकते हैं", - "When": "कब", - "Enter driver's phone": "ड्राइवर का फोन दर्ज करें", + "पूरा, आप अपना उपहार प्राप्त कर सकते हैं", + "When": "जब", + "Enter driver's phone": "ड्राइवर का फ़ोन दर्ज करें", "Send Invite": "आमंत्रण भेजें", "Show Invitations": "आमंत्रण दिखाएं", - "License Type": "लाइसेंस प्रकार", - "National Number": "राष्ट्रीय संख्या", - "Name (Arabic)": "नाम (अरबी)", - "Name (English)": "नाम (अंग्रेजी)", + "License Type": "लाइसेंस का प्रकार", + "National Number": "आधार नंबर", + "Name (Arabic)": "नाम (स्थानीय)", + "Name (English)": "नाम (अंग्रेज़ी)", "Address": "पता", - "Issue Date": "जारी करने की तारीख", + "Issue Date": "जारी करने की तिथि", "Expiry Date": "समाप्ति तिथि", - "License Categories": "लाइसेंस श्रेणियां", + "License Categories": "लाइसेंस श्रेणियाँ", "driver_license": "ड्राइविंग लाइसेंस", "Capture an Image of Your Driver License": - "अपने ड्राइविंग लाइसेंस की एक छवि कैप्चर करें", - "ID Documents Back": "पहचान दस्तावेज़ पीछे", - "National ID": "राष्ट्रीय पहचान", + "अपने ड्राइविंग लाइसेंस की तस्वीर लें", + "ID Documents Back": "आईडी दस्तावेज़ का पिछला हिस्सा", + "National ID": "आधार कार्ड", "Occupation": "पेशा", - "Gender": "लिंग", "Religion": "धर्म", - "Marital Status": "वैवाहिक स्थिति", - "Full Name (Marital)": "पूरा नाम (वैवाहिक)", + "Full Name (Marital)": "पूरा नाम", "Expiration Date": "समाप्ति तिथि", "Capture an Image of Your ID Document Back": - "अपने पहचान दस्तावेज़ के पीछे की एक छवि कैप्चर करें", - "ID Documents Front": "पहचान दस्तावेज़ सामने", + "अपने आईडी कार्ड के पीछे की तस्वीर लें", + "ID Documents Front": "आईडी दस्तावेज़ का सामने का हिस्सा", "First Name": "पहला नाम", "CardID": "कार्ड आईडी", "Vehicle Details Front": "वाहन विवरण सामने", "Plate Number": "प्लेट नंबर", "Owner Name": "मालिक का नाम", "Vehicle Details Back": "वाहन विवरण पीछे", - "Make": "निर्माता", + "Make": "मेक", "Model": "मॉडल", "Year": "वर्ष", "Chassis": "चेसिस", "Color": "रंग", - "Displacement": "विस्थापन", + "Displacement": "डिस्प्लेसमेंट", "Fuel": "ईंधन", - "Tax Expiry Date": "कर समाप्ति तिथि", + "Tax Expiry Date": "टैक्स समाप्ति तिथि", "Inspection Date": "निरीक्षण तिथि", "Capture an Image of Your car license back": - "अपने कार लाइसेंस के पीछे की एक छवि कैप्चर करें", - "Capture an Image of Your Driver’s License": - "अपने ड्राइविंग लाइसेंस की एक छवि कैप्चर करें", + "अपने आरसी (RC) के पीछे की तस्वीर लें", + "Capture an Image of Your Driver's License": + "अपने ड्राइविंग लाइसेंस की तस्वीर लें", "Sign in with Google for easier email and name entry": - "ईमेल और नाम प्रविष्टि को आसान बनाने के लिए Google के साथ साइन इन करें", + "आसान ईमेल और नाम प्रविष्टि के लिए Google के साथ साइन इन करें", "You will choose allow all the time to be ready receive orders": - "आप हर समय आदेश प्राप्त करने के लिए तैयार रहने की अनुमति चुनेंगे", - "Welcome to Intaleq!": "Intaleq में आपका स्वागत है!", + "आप ऑर्डर प्राप्त करने के लिए हर समय अनुमति चुनें", "Get to your destination quickly and easily.": - "अपने गंतव्य तक तेजी से और आसानी से पहुंचें।", + "अपनी मंजिल पर जल्दी और आसानी से पहुंचें।", "Enjoy a safe and comfortable ride.": - "एक सुरक्षित और आरामदायक यात्रा का आनंद लें।", + "सुरक्षित और आरामदायक सवारी का आनंद लें।", "Choose Language": "भाषा चुनें", - "Login": "लॉगिन", "Pay with Wallet": "वॉलेट से भुगतान करें", "Invalid MPIN": "अमान्य MPIN", "Invalid OTP": "अमान्य OTP", - // "Driver Accepted the Ride for You": "ड्राइवर ने आपके लिए यात्रा स्वीकार कर ली", "Enter your email address": "अपना ईमेल पता दर्ज करें", "Please enter Your Email.": "कृपया अपना ईमेल दर्ज करें।", - "Enter your phone number": "अपना फोन नंबर दर्ज करें", - "Please enter your phone number.": "कृपया अपना फोन नंबर दर्ज करें।", + "Enter your phone number": "अपना फ़ोन नंबर दर्ज करें", + "Please enter your phone number.": "कृपया अपना फ़ोन नंबर दर्ज करें।", "Please enter Your Password.": "कृपया अपना पासवर्ड दर्ज करें।", "if you dont have account": "यदि आपके पास खाता नहीं है", - "Register": "पंजीकरण", + "Register": "रजिस्टर करें", "Accept Ride's Terms & Review Privacy Notice": - "यात्रा की शर्तें स्वीकार करें और गोपनीयता नीति की समीक्षा करें", + "शर्तें स्वीकार करें और गोपनीयता नोटिस देखें", "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": - "नीचे 'मैं सहमत हूं' चुनकर, मैंने उपयोग की शर्तों की समीक्षा की है और उनसे सहमत हूं और गोपनीयता नीति को स्वीकार करता हूं। मैं कम से कम 18 वर्ष का हूं।", - "I Agree": "मैं सहमत हूं", - // "Finish Monitor": "निगरानी समाप्त", + "नीचे 'मैं सहमत हूँ' चुनकर, मैंने उपयोग की शर्तों की समीक्षा की है और उनसे सहमत हूँ।", "First name": "पहला नाम", "Enter your first name": "अपना पहला नाम दर्ज करें", "Please enter your first name.": "कृपया अपना पहला नाम दर्ज करें।", @@ -12142,111 +15688,102 @@ class MyTranslation extends Translations { "Please enter your last name.": "कृपया अपना अंतिम नाम दर्ज करें।", "City": "शहर", "Please enter your City.": "कृपया अपना शहर दर्ज करें।", - "Male": "पुरुष", - "Female": "महिला", "Verify Email": "ईमेल सत्यापित करें", "We sent 5 digit to your Email provided": "हमने आपके प्रदान किए गए ईमेल पर 5 अंक भेजे हैं", "5 digit": "5 अंक", "Send Verification Code": "सत्यापन कोड भेजें", - "Your Ride Duration is ": "आपकी यात्रा की अवधि है ", + "Your Ride Duration is ": "आपकी सवारी की अवधि है ", "You will be thier in": "आप वहां होंगे", "You trip distance is": "आपकी यात्रा की दूरी है", - "Fee is": "शुल्क है", + "Fee is": "फीस है", "From : ": "से: ", - "To : ": "को: ", + "To : ": "तक: ", "Add Promo": "प्रोमो जोड़ें", "Confirm Selection": "चयन की पुष्टि करें", "distance is": "दूरी है", + "Privacy Policy": "गोपनीयता नीति", "Intaleq LLC": "Intaleq LLC", - "Egypt's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": - "मिस्र की अग्रणी राइड-शेयरिंग सेवा, जिसे अरब और स्थानीय मालिकों द्वारा गर्व से विकसित किया गया है। हम आपके निकट होने को प्राथमिकता देते हैं – हमारे मूल्यवान यात्रियों और समर्पित कप्तानों दोनों के लिए।", + "Syria's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "भारत की अग्रणी राइड-शेयरिंग सेवा।", + "Intaleq is the first ride-sharing app in Syria, designed to connect you with the nearest drivers for a quick and convenient travel experience.": + "Intaleq पहली राइड-शेयरिंग ऐप है जो आपको निकटतम ड्राइवरों से जोड़ती है।", "Why Choose Intaleq?": "Intaleq क्यों चुनें?", - "Closest to You": "आपके निकटतम", + "Closest to You": "आपके सबसे करीब", "We connect you with the nearest drivers for faster pickups and quicker journeys.": - "हम आपको तेज पिकअप और तेज यात्राओं के लिए निकटतम ड्राइवरों से जोड़ते हैं।", + "हम आपको तेज़ पिकअप के लिए निकटतम ड्राइवरों से जोड़ते हैं।", "Uncompromising Security": "अटल सुरक्षा", - "Lady Captains Available": "महिला कप्तान उपलब्ध", + "Lady Captains Available": "लेडी कैप्टन उपलब्ध हैं", "Recorded Trips (Voice & AI Analysis)": "रिकॉर्ड की गई यात्राएं (वॉयस और AI विश्लेषण)", - "Fastest Complaint Response": "सबसे तेज शिकायत प्रतिक्रिया", + "Fastest Complaint Response": "सबसे तेज़ शिकायत प्रतिक्रिया", "Our dedicated customer service team ensures swift resolution of any issues.": - "हमारी समर्पित ग्राहक सेवा टीम किसी भी मुद्दे का त्वरित समाधान सुनिश्चित करती है।", - "Affordable for Everyone": "सभी के लिए सस्ती", + "हमारी समर्पित ग्राहक सेवा टीम मुद्दों का त्वरित समाधान सुनिश्चित करती है।", + "Affordable for Everyone": "सभी के लिए किफायती", "Frequently Asked Questions": "अक्सर पूछे जाने वाले प्रश्न", "Getting Started": "शुरुआत करना", "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": - "बस Intaleq ऐप खोलें, अपना गंतव्य दर्ज करें और \"यात्रा अनुरोध\" टैप करें। ऐप आपको निकटतम ड्राइवर से जोड़ देगा।", + "बस ऐप खोलें, गंतव्य दर्ज करें और 'राइड का अनुरोध करें' पर टैप करें।", "Vehicle Options": "वाहन विकल्प", "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": - "Intaleq आपकी आवश्यकताओं और बजट के अनुरूप इकोनॉमी, कम्फर्ट और लग्ज़री सहित विभिन्न विकल्प प्रदान करता है।", + "Intaleq इकोनॉमी, कम्फर्ट और लग्जरी सहित कई विकल्प प्रदान करता है।", "Payments": "भुगतान", "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": - "आप नकद या क्रेडिट/डेबिट कार्ड का उपयोग करके अपनी यात्रा के लिए भुगतान कर सकते हैं। आप अपनी यात्रा की पुष्टि करने से पहले अपनी पसंदीदा भुगतान विधि चुन सकते हैं।", - "Ride Management": "यात्रा प्रबंधन", + "आप नकद या कार्ड का उपयोग करके भुगतान कर सकते हैं।", + "Ride Management": "राइड प्रबंधन", "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": - "हां, आप अपनी यात्रा रद्द कर सकते हैं, लेकिन कृपया ध्यान दें कि रद्दीकरण शुल्क लागू हो सकता है, यह इस बात पर निर्भर करता है कि आप कितने समय पहले रद्द करते हैं।", + "हाँ, आप अपनी राइड रद्द कर सकते हैं, लेकिन रद्दीकरण शुल्क लागू हो सकता है।", "For Drivers": "ड्राइवरों के लिए", - // "Driver Registration & Requirements": "ड्राइवर पंजीकरण और आवश्यकताएं", "Driver Registration": "ड्राइवर पंजीकरण", "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": - "ड्राइवर के रूप में पंजीकृत करने या आवश्यकताओं के बारे में जानने के लिए, कृपया हमारी वेबसाइट पर जाएं या सीधे Intaleq समर्थन से संपर्क करें।", + "रजिस्टर करने के लिए हमारी वेबसाइट पर जाएँ या समर्थन से संपर्क करें।", "Visit Website/Contact Support": - "वेबसाइट पर जाएं/समर्थन से संपर्क करें", + "वेबसाइट पर जाएँ / समर्थन से संपर्क करें", "Close": "बंद करें", "We are searching for the nearest driver": - "हम निकटतम ड्राइवर की तलाश कर रहे हैं", + "हम निकटतम ड्राइवर खोज रहे हैं", "Communication": "संचार", "How do I communicate with the other party (passenger/driver)?": - "मैं दूसरे पक्ष (यात्री/ड्राइवर) के साथ कैसे संवाद करूं?", + "मैं दूसरे पक्ष से कैसे संवाद करूँ?", "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": - "एक बार यात्रा की पुष्टि हो जाने पर आप इन-ऐप चैट सुविधा के माध्यम से अपने ड्राइवर या यात्री के साथ संवाद कर सकते हैं।", - "Safety & Security": "सुरक्षा और सुरक्षा", + "राइड की पुष्टि होने पर आप ऐप में चैट कर सकते हैं।", + "Safety & Security": "सुरक्षा", "What safety measures does Intaleq offer?": "Intaleq कौन से सुरक्षा उपाय प्रदान करता है?", "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": - "Intaleq ड्राइवर सत्यापन, इन-ऐप यात्रा ट्रैकिंग, आपातकालीन संपर्क विकल्प और विश्वसनीय संपर्कों के साथ अपनी यात्रा स्थिति साझा करने की क्षमता सहित विभिन्न सुरक्षा सुविधाएं प्रदान करता है।", + "Intaleq ड्राइवर सत्यापन और ट्रिप ट्रैकिंग प्रदान करता है।", "Enjoy competitive prices across all trip options, making travel accessible.": - "सभी यात्रा विकल्पों में प्रतिस्पर्धी कीमतों का आनंद लें, यात्रा को सुलभ बनाएं।", - "Variety of Trip Choices": "यात्रा विकल्पों की विविधता", + "प्रतिस्पर्धी कीमतों का आनंद लें।", + "Variety of Trip Choices": "ट्रिप विकल्पों की विविधता", "Choose the trip option that perfectly suits your needs and preferences.": - "वह यात्रा विकल्प चुनें जो आपकी आवश्यकताओं और प्राथमिकताओं के अनुरूप हो।", + "वह विकल्प चुनें जो आपकी आवश्यकताओं के अनुरूप हो।", "Your Choice, Our Priority": "आपकी पसंद, हमारी प्राथमिकता", "Because we are near, you have the flexibility to choose the ride that works best for you.": - "क्योंकि हम निकट हैं, आपके पास उस यात्रा को चुनने की लचीलापन है जो आपके लिए सबसे अच्छा काम करती है।", + "चूंकि हम पास हैं, आपके पास चुनने की सुविधा है।", "duration is": "अवधि है", "Setting": "सेटिंग", "Find answers to common questions": "सामान्य प्रश्नों के उत्तर खोजें", - "I don't need a ride anymore": "मुझे अब यात्रा की आवश्यकता नहीं है", - "I was just trying the application": - "मैं सिर्फ एप्लिकेशन आज़मा रहा था", + "I don't need a ride anymore": "मुझे अब राइड की आवश्यकता नहीं है", + "I was just trying the application": "मैं बस एप्लिकेशन आज़मा रहा था", "No driver accepted my request": "किसी ड्राइवर ने मेरा अनुरोध स्वीकार नहीं किया", "I added the wrong pick-up/drop-off location": - "मैंने गलत पिक-अप/ड्रॉप-ऑफ स्थान जोड़ा", + "मैंने गलत स्थान जोड़ा", "I don't have a reason": "मेरे पास कोई कारण नहीं है", - "Other": "अन्य", "Can we know why you want to cancel Ride ?": - "क्या हम जान सकते हैं कि आप यात्रा क्यों रद्द करना चाहते हैं?", - "Cancel Ride": "यात्रा रद्द करें", + "क्या हम जान सकते हैं कि आप क्यों रद्द करना चाहते हैं?", "Add Payment Method": "भुगतान विधि जोड़ें", - "Your Wallet balance is ": "आपके वॉलेट का शेष है ", - "Ride Wallet": "यात्रा वॉलेट", + "Ride Wallet": "राइड वॉलेट", "Payment Method": "भुगतान विधि", - "Type here Place": "यहां स्थान टाइप करें", - "Are You sure to ride to": "क्या आप वाकई यात्रा करना चाहते हैं", + "Type here Place": "यहाँ स्थान टाइप करें", + "Are You sure to ride to": "क्या आप वाकई जाना चाहते हैं", "Confirm": "पुष्टि करें", - // "Back": "पीछे", "You are Delete": "आप हटा रहे हैं", - "Deleted": "हटाया गया", + "Deleted": "हटा दिया गया", "You Dont Have Any places yet !": "आपके पास अभी तक कोई स्थान नहीं है!", - // "Favorite Places": "पसंदीदा स्थान", "From : Current Location": "से: वर्तमान स्थान", - // "Where to": "कहां जाना है", - "Profile": "प्रोफ़ाइल", - "Home": "घर", - "My Cared": "मेरी देखभाल", + "My Cared": "मेरे कार्ड", "Add Card": "कार्ड जोड़ें", "Add Credit Card": "क्रेडिट कार्ड जोड़ें", "Please enter the cardholder name": @@ -12256,236 +15793,205 @@ class MyTranslation extends Translations { "Go To Favorite Places": "पसंदीदा स्थानों पर जाएं", "Go to this Target": "इस लक्ष्य पर जाएं", "My Profile": "मेरी प्रोफ़ाइल", - "Sign Out": "साइन आउट", "Are you want to go to this site": "क्या आप इस साइट पर जाना चाहते हैं", - "MyLocation": "मेरा स्थान", - "my location": "मेरा स्थान", + "MyLocation": "मेरी लोकेशन", + "my location": "मेरी लोकेशन", "Target": "लक्ष्य", - "Update": "अद्यतन", - "You Should choose rate figure": "आपको रेट फिगर चुनना चाहिए", - "Login Captin": "कप्तान लॉगिन", - "Register Captin": "कप्तान पंजीकरण", + "You Should choose rate figure": "आपको रेटिंग चुननी चाहिए", + "Login Captin": "कैप्टन लॉगिन", + "Register Captin": "कैप्टन रजिस्टर", "Send Verfication Code": "सत्यापन कोड भेजें", "KM": "किमी", - "End Ride": "यात्रा समाप्त", + "End Ride": "राइड समाप्त करें", "Minute": "मिनट", - "Go to passenger Location now": "अब यात्री के स्थान पर जाएं", - "Duration of the Ride is ": "यात्रा की अवधि है ", - "Distance of the Ride is ": "यात्रा की दूरी है", - "Name of the Passenger is ": "यात्री का नाम है", - "Hello this is Captain": "हैलो, यह कप्तान है", - "Start the Ride": "यात्रा शुरू करें", + "Go to passenger Location now": "अब यात्री की लोकेशन पर जाएं", + "Duration of the Ride is ": "राइड की अवधि है ", + "Distance of the Ride is ": "राइड की दूरी है ", + "Name of the Passenger is ": "यात्री का नाम है ", + "Hello this is Captain": "नमस्ते यह कैप्टन है", + "Start the Ride": "राइड शुरू करें", "Please Wait If passenger want To Cancel!": - "कृपया प्रतीक्षा करें यदि यात्री रद्द करना चाहता है!", + "कृपया प्रतीक्षा करें यदि यात्री रद्द करना चाहे!", "Total Duration:": "कुल अवधि:", "Active Duration:": "सक्रिय अवधि:", - "Waiting for Captin ...": "कप्तान की प्रतीक्षा ...", - "Age is ": "उम्र है ", + "Waiting for Captin ...": "कैप्टन का इंतज़ार...", + "Age is ": "आयु है ", "Rating is ": "रेटिंग है ", - " to arrive you.": "आप तक पहुंचने के लिए।", + " to arrive you.": " आप तक पहुँचने के लिए।", "Tariff": "टैरिफ", "Settings": "सेटिंग्स", "Feed Back": "प्रतिक्रिया", "Please enter a valid 16-digit card number": - "कृपया एक वैध 16-अंकीय कार्ड नंबर दर्ज करें", - "Add Phone": "फोन जोड़ें", - "Please enter a phone number": "कृपया एक फोन नंबर दर्ज करें", + "कृपया एक वैध 16 अंकों का कार्ड नंबर दर्ज करें", + "Add Phone": "फ़ोन जोड़ें", + "Please enter a phone number": "कृपया एक फ़ोन नंबर दर्ज करें", "You dont Add Emergency Phone Yet!": - "आपने अभी तक आपातकालीन फोन नहीं जोड़ा है!", + "आपने अभी तक आपातकालीन फ़ोन नहीं जोड़ा है!", "You will arrive to your destination after ": - "आप अपने गंतव्य पर पहुंचेंगे", - "You can cancel Ride now": "आप अब यात्रा रद्द कर सकते हैं", + "आप अपनी मंजिल पर पहुंचेंगे बाद ", + "You can cancel Ride now": "आप अब राइड रद्द कर सकते हैं", "You Can cancel Ride After Captain did not come in the time": - "आप यात्रा रद्द कर सकते हैं यदि कप्तान समय पर नहीं आया", + "यदि कैप्टन समय पर नहीं आया तो आप राइड रद्द कर सकते हैं", "If you in Car Now. Press Start The Ride": - "यदि आप अब कार में हैं। यात्रा शुरू करें दबाएं", - "You Dont Have Any amount in": "आपके पास कोई राशि नहीं है", + "यदि आप कार में हैं तो राइड शुरू करें दबाएं", + "You Dont Have Any amount in": "आपके पास कोई राशि नहीं है में", "Wallet!": "वॉलेट!", "You Have": "आपके पास है", "Save Credit Card": "क्रेडिट कार्ड सहेजें", "Show Promos": "प्रोमो दिखाएं", - "10 and get 4% discount": "10 और 4% छूट प्राप्त करें", - "20 and get 6% discount": "20 और 6% छूट प्राप्त करें", - "40 and get 8% discount": "40 और 8% छूट प्राप्त करें", - "100 and get 11% discount": "100 और 11% छूट प्राप्त करें", + "10 and get 4% discount": "10 और 4% छूट पाएं", + "20 and get 6% discount": "20 और 6% छूट पाएं", + "40 and get 8% discount": "40 और 8% छूट पाएं", + "100 and get 11% discount": "100 और 11% छूट पाएं", "Pay with Your PayPal": "अपने PayPal से भुगतान करें", - "You will choose one of above !": "आप ऊपर में से एक चुनेंगे!", - "Delete My Account": "मेरा खाता हटाएं", + "You will choose one of above !": + "आपको ऊपर वालों में से एक को चुनना होगा!", "Edit Profile": "प्रोफ़ाइल संपादित करें", - "Name": "नाम", - "Update Gender": "लिंग अद्यतन करें", - "Education": "शिक्षा", - "Update Education": "शिक्षा अद्यतन करें", - "Employment Type": "रोजगार प्रकार", - "SOS Phone": "SOS फोन", - "High School Diploma": "हाई स्कूल डिप्लोमा", - "Associate Degree": "एसोसिएट डिग्री", - "Bachelor's Degree": "स्नातक डिग्री", - "Master's Degree": "मास्टर डिग्री", - "Doctoral Degree": "डॉक्टरेट डिग्री", "Copy this Promo to use it in your Ride!": - "इस प्रोमो को कॉपी करें और अपनी यात्रा में उपयोग करें!", + "अपनी राइड में उपयोग करने के लिए इस प्रोमो को कॉपी करें!", "To change some Settings": "कुछ सेटिंग्स बदलने के लिए", - "Order Request Page": "आदेश अनुरोध पृष्ठ", - "Rouats of Trip": "यात्रा के मार्ग", + "Order Request Page": "ऑर्डर अनुरोध पृष्ठ", + "Rouats of Trip": "ट्रिप के रास्ते", "Passenger Name is ": "यात्री का नाम है ", - "Total From Passenger is ": "यात्री से कुल है ", - "Duration To Passenger is ": "यात्री तक की अवधि है ", - "Distance To Passenger is ": "यात्री तक की दूरी है ", - "Total For You is ": "आपके लिए कुल है ", + "Total From Passenger is ": "यात्री से कुल: ", + "Duration To Passenger is ": "यात्री तक अवधि है ", + "Distance To Passenger is ": "यात्री तक दूरी है ", + "Total For You is ": "आपके लिए कुल: ", "Distance is ": "दूरी है ", " KM": " किमी", - "Duration of Trip is ": "यात्रा की अवधि है ", + "Duration of Trip is ": "ट्रिप की अवधि है ", " Minutes": " मिनट", - "Apply Order": "आदेश लागू करें", - "Refuse Order": "आदेश अस्वीकार करें", - "Rate Captain": "कप्तान को रेट करें", - "Enter your Note": "अपनी नोट दर्ज करें", - "Type something...": "कुछ टाइप करें...", - "Submit rating": "रेटिंग जमा करें", + "Apply Order": "ऑर्डर लागू करें", + "Refuse Order": "ऑर्डर अस्वीकार करें", + "Rate Captain": "कैप्टन को रेट करें", + "Enter your Note": "अपना नोट दर्ज करें", + "Type something...": "कुछ लिखें...", + "Submit rating": "रेटिंग सबमिट करें", "Rate Passenger": "यात्री को रेट करें", - "Ride Summary": "यात्रा सारांश", + "Ride Summary": "राइड सारांश", "welcome_message": "Intaleq में आपका स्वागत है!", "app_description": - "Intaleq एक विश्वसनीय, सुरक्षित और सस्ती राइड-शेयरिंग एप्लिकेशन है।", - "get_to_destination": "अपने गंतव्य तक तेजी से और आसानी से पहुंचें।", + "Intaleq एक सुरक्षित, विश्वसनीय और सुलभ राइड-हेलिंग ऐप है।", + "get_to_destination": "जल्दी और आसानी से अपनी मंजिल पर पहुंचें।", "get_a_ride": - "Intaleq के साथ, आप अपने गंतव्य तक कुछ ही मिनटों में यात्रा कर सकते हैं।", - "safe_and_comfortable": "एक सुरक्षित और आरामदायक यात्रा का आनंद लें।", - "committed_to_safety": - "Intaleq सुरक्षा के लिए प्रतिबद्ध है, और हमारे सभी कप्तानों की सावधानीपूर्वक जांच और पृष्ठभूमि जांच की जाती है।", - // "Driver Applied the Ride for You": "ड्राइवर ने आपके लिए यात्रा लागू की", - // "Show latest promo": "नवीनतम प्रोमो दिखाएं", - // "Cancel Trip": "यात्रा रद्द करें", - // "Passenger Cancel Trip": "यात्री ने यात्रा रद्द कर दी", - // "Accepted Ride": "स्वीकृत यात्रा", - "your ride is Accepted": "आपकी यात्रा स्वीकृत हो गई है", - // "Trip is Begin": "यात्रा शुरू हो गई है", + "Intaleq के साथ, आप मिनटों में राइड प्राप्त कर सकते हैं।", + "safe_and_comfortable": "एक सुरक्षित और आरामदायक राइड का आनंद लें।", + "committed_to_safety": "Intaleq सुरक्षा के लिए प्रतिबद्ध है।", + "your ride is Accepted": "आपकी राइड स्वीकार कर ली गई है", "Driver is waiting at pickup.": "ड्राइवर पिकअप पर इंतज़ार कर रहा है।", "Driver is on the way": "ड्राइवर रास्ते में है", "Contact Options": "संपर्क विकल्प", - "Send a custom message": "एक कस्टम संदेश भेजें", + "Send a custom message": "कस्टम संदेश भेजें", "Type your message": "अपना संदेश टाइप करें", - // "Hi ,I will go now": "हाय, मैं अब जाऊंगा", - // "Passenger come to you": "यात्री आपके पास आ रहा है", - // "Hi ,I Arrive your site": "हाय, मैं आपकी साइट पर पहुंच गया हूं", - // "Driver Finish Trip": "ड्राइवर ने यात्रा समाप्त की", - // "you will pay to Driver": "आप ड्राइवर को भुगतान करेंगे", - // "Driver Cancel Your Trip": "ड्राइवर ने आपकी यात्रा रद्द कर दी", - // "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": "आप ड्राइवर को भुगतान करेंगे, आप ड्राइवर के समय की लागत का भुगतान करेंगे, अपने Intaleq वॉलेट को देखें", - // "I will go now": "मैं अब जाऊंगा", + "I will go now": "मैं अब जाऊंगा", "You Have Tips": "आपके पास टिप्स हैं", " tips\nTotal is": " टिप्स\nकुल है", - // "No,I want": "नहीं, मैं चाहता हूं", - "Your fee is ": "आपका शुल्क है ", - // "Do you want to pay Tips for this Driver": "क्या आप इस ड्राइवर के लिए टिप्स देना चाहते हैं?", + "Your fee is ": "आपकी फीस है ", + "Do you want to pay Tips for this Driver": + "क्या आप इस ड्राइवर के लिए टिप देना चाहते हैं", "Tip is ": "टिप है ", "Are you want to wait drivers to accept your order": - "क्या आप ड्राइवरों के आदेश स्वीकार करने की प्रतीक्षा करना चाहते हैं?", + "क्या आप चाहते हैं कि ड्राइवर आपका ऑर्डर स्वीकार करने का इंतज़ार करें", "This price is fixed even if the route changes for the driver.": - "यह कीमत निश्चित है भले ही ड्राइवर के लिए मार्ग बदल जाए।", + "यह कीमत तय है चाहे ड्राइवर का रास्ता बदल जाए।", "The price may increase if the route changes.": - "यदि मार्ग बदलता है तो कीमत बढ़ सकती है।", + "अगर रास्ता बदल गया तो कीमत बढ़ सकती है।", "The captain is responsible for the route.": - "कप्तान मार्ग के लिए जिम्मेदार है।", - "We are search for nearst driver": - "हम निकटतम ड्राइवर की तलाश कर रहे हैं", - "Your order is being prepared": "आपका आदेश तैयार किया जा रहा है", + "कैप्टन रास्ते के लिए जिम्मेदार है।", + "We are search for nearst driver": "हम निकटतम ड्राइवर खोज रहे हैं", + "Your order is being prepared": "आपका ऑर्डर तैयार हो रहा है", "The drivers are reviewing your request": "ड्राइवर आपके अनुरोध की समीक्षा कर रहे हैं", - "Your order sent to drivers": - "आपका आदेश ड्राइवरों को भेज दिया गया है", + "Your order sent to drivers": "आपका ऑर्डर ड्राइवरों को भेज दिया गया", "You can call or record audio of this trip": - "आप इस यात्रा का ऑडियो कॉल या रिकॉर्ड कर सकते हैं", + "आप इस ट्रिप की कॉल या ऑडियो रिकॉर्ड कर सकते हैं", "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": - "यात्रा शुरू हो गई है! आपातकालीन नंबरों से संपर्क करने, अपनी यात्रा साझा करने या यात्रा के लिए वॉयस रिकॉर्डिंग सक्रिय करने के लिए स्वतंत्र महसूस करें", - // "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": "कृपया सुनिश्चित करें कि आपके पास आपका सारा निजी सामान है और कोई भी शेष किराया, यदि लागू हो, आपके वॉलेट में जोड़ दिया गया है। Intaleq ऐप चुनने के लिए धन्यवाद।", - // "Don’t forget your personal belongings.": "अपने निजी सामान को न भूलें।", - "Camera Access Denied.": "कैमरा पहुंच अस्वीकृत।", + "ट्रिप शुरू हो गई है! आपातकालीन नंबरों से संपर्क करें, अपनी ट्रिप साझा करें।", + "Camera Access Denied.": "कैमरा एक्सेस अस्वीकार कर दिया गया।", "Open Settings": "सेटिंग्स खोलें", - "GPS Required Allow !.": "GPS की आवश्यकता है!", + "GPS Required Allow !.": "GPS की अनुमति आवश्यक है!", "Your Account is Deleted": "आपका खाता हटा दिया गया है", "Are you sure to delete your account?": "क्या आप वाकई अपना खाता हटाना चाहते हैं?", "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": - "आपका डेटा 2 सप्ताह के बाद मिटा दिया जाएगा\nऔर आप 1 महीने के बाद ऐप का उपयोग करने के लिए वापस नहीं आ सकते हैं", + "आपका डेटा 2 सप्ताह बाद मिटा दिया जाएगा\nऔर आप 1 महीने बाद ऐप का उपयोग नहीं कर पाएंगे", "Enter Your First Name": "अपना पहला नाम दर्ज करें", - "Are you Sure to LogOut?": "क्या आप वाकई लॉगआउट करना चाहते हैं?", - "Email Wrong": "ईमेल गलत", + "Are you Sure to LogOut?": "क्या आप वाकई लॉग आउट करना चाहते हैं?", + "Email Wrong": "ईमेल गलत है", "Email you inserted is Wrong.": "आपके द्वारा दर्ज किया गया ईमेल गलत है।", - "You have finished all times ": "आपने सभी बार समाप्त कर दिया है", + "You have finished all times ": "आपने सभी बार समाप्त कर दिए हैं ", "if you want help you can email us here": "यदि आप मदद चाहते हैं तो आप हमें यहां ईमेल कर सकते हैं", "Thanks": "धन्यवाद", "Email Us": "हमें ईमेल करें", "I cant register in your app in face detection ": - "मैं आपके ऐप में चेहरा पहचान में पंजीकृत नहीं कर सकता", - "Hi": "हाय", - "No face detected": "कोई चेहरा पहचाना नहीं गया", - "Image detecting result is ": "छवि पहचान परिणाम है ", + "मैं चेहरा पहचान में आपके ऐप में रजिस्टर नहीं हो सकता ", + "Hi": "नमस्ते", + "No face detected": "कोई चेहरा पता नहीं चला", + "Image detecting result is ": "छवि पहचान का परिणाम है ", "from 3 times Take Attention": "3 बार से ध्यान दें", "Be sure for take accurate images please\nYou have": - "कृपया सटीक छवियां लेने के लिए सुनिश्चित करें\nआपके पास है", + "कृपया सटीक चित्र लेने का ध्यान रखें\nआपके पास है", "image verified": "छवि सत्यापित", "Next": "अगला", - "There is no help Question here": "यहां कोई मदद प्रश्न नहीं है", - "You dont have Points": "आपके पास पॉइंट्स नहीं हैं", + "There is no help Question here": "यहाँ कोई मदद प्रश्न नहीं है", + "You dont have Points": "आपके पास अंक नहीं हैं", "You Are Stopped For this Day !": "आप इस दिन के लिए रोक दिए गए हैं!", "You must be charge your Account": "आपको अपना खाता चार्ज करना होगा", "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": - "आपने इस दिन 3 यात्राओं को अस्वीकार कर दिया है, यही कारण है\nकल मिलते हैं!", + "आपने इस दिन 3 राइड्स को अस्वीकार कर दिया यही कारण है \nकल मिलते हैं!", "Recharge my Account": "मेरा खाता रिचार्ज करें", "Ok , See you Tomorrow": "ठीक है, कल मिलते हैं", - "You are Stopped": "आप रोक दिए गए हैं", + "You are Stopped": "आप रुके हुए हैं", "Connected": "जुड़ा हुआ", - "Not Connected": "जुड़ा नहीं है", + "Not Connected": "जुड़ा हुआ नहीं", "Your are far from passenger location": - "आप यात्री के स्थान से दूर हैं", + "आप यात्री की लोकेशन से दूर हैं", "go to your passenger location before\nPassenger cancel trip": - "यात्री के स्थान पर जाएं इससे पहले कि\nयात्री यात्रा रद्द कर दे", + "यात्री के ट्रिप रद्द करने से पहले\nअपनी यात्री की लोकेशन पर जाएं", "You will get cost of your work for this trip": - "आपको इस यात्रा के लिए अपने काम की लागत मिलेगी", - " in your wallet": "आपके वॉलेट में", - "you gain": "आप कमाते हैं", - "Order Cancelled by Passenger": "यात्री द्वारा आदेश रद्द", - "Success": "सफलता", + "आपको इस ट्रिप के लिए अपने काम की कीमत मिलेगी", + " in your wallet": " आपके वॉलेट में", + "you gain": "आपने प्राप्त किया", + "Order Cancelled by Passenger": + "यात्री द्वारा ऑर्डर रद्द कर दिया गया", "Feedback data saved successfully": - "प्रतिक्रिया डेटा सफलतापूर्वक सहेजा गया", - "No Promo for today .": "आज के लिए कोई प्रोमो नहीं।", - "Select your destination": "अपना गंतव्य चुनें", - "Search for your Start point": "अपने शुरुआती बिंदु की खोज करें", - "Search for waypoint": "वेपॉइंट की खोज करें", - "Current Location": "वर्तमान स्थान", - "Add Location 1": "स्थान 1 जोड़ें", + "फीडबैक डेटा सफलतापूर्वक सहेजा गया", + "No Promo for today .": "आज के लिए कोई प्रोमो नहीं है।", + "Select your destination": "अपनी मंजिल चुनें", + "Search for your Start point": "अपना प्रारंभिक बिंदु खोजें", + "Search for waypoint": "वेपॉइंट खोजें", + "Current Location": "वर्तमान लोकेशन", + "Add Location 1": "लोकेशन 1 जोड़ें", "You must Verify email !.": "आपको ईमेल सत्यापित करना होगा!", "Cropper": "क्रॉपर", "Saved Sucssefully": "सफलतापूर्वक सहेजा गया", "Select Date": "तारीख चुनें", "Birth Date": "जन्म तिथि", "Ok": "ठीक है", - "the 500 points equal 30 JOD": "500 पॉइंट्स 30 JOD के बराबर हैं", + "the 500 points equal 30 JOD": "500 पॉइंट 30 रुपये के बराबर हैं", "the 500 points equal 30 JOD for you \nSo go and gain your money": - "500 पॉइंट्स आपके लिए 30 JOD के बराबर हैं\nतो जाएं और अपना पैसा कमाएं", - "token updated": "टोकन अद्यतन", - "Add Location 2": "स्थान 2 जोड़ें", - "Add Location 3": "स्थान 3 जोड़ें", - "Add Location 4": "स्थान 4 जोड़ें", - "Waiting for your location": "आपके स्थान की प्रतीक्षा", - "Search for your destination": "अपने गंतव्य की खोज करें", - "Hi! This is": "हाय! यह है", - " I am using": " मैं उपयोग कर रहा हूं", - " to ride with": " के साथ यात्रा करने के लिए", - " as the driver.": " ड्राइवर के रूप में।", - "is driving a ": "ड्राइविंग कर रहा है ", + "500 पॉइंट आपके लिए 30 रुपये के बराबर हैं \nतो जाएं और अपने पैसे कमाएं", + "token updated": "टोकन अपडेट हो गया", + "Add Location 2": "लोकेशन 2 जोड़ें", + "Add Location 3": "लोकेशन 3 जोड़ें", + "Add Location 4": "लोकेशन 4 जोड़ें", + "Waiting for your location": "आपकी लोकेशन का इंतज़ार है", + "Search for your destination": "अपनी मंजिल खोजें", + "Hi! This is": "नमस्ते! यह है", + " I am using": " मैं उपयोग कर रहा हूँ", + " to ride with": " सवारी करने के लिए साथ", + " as the driver.": " बतौर ड्राइवर।", + "is driving a ": "चला रहा है एक ", " with license plate ": " लाइसेंस प्लेट के साथ ", - " I am currently located at ": " मैं वर्तमान में स्थित हूं ", - "Please go to Car now ": "कृपया अब कार पर जाएं ", + " I am currently located at ": " मैं वर्तमान में यहाँ स्थित हूँ ", + "Please go to Car now ": "कृपया अब कार के पास जाएं ", "You will receive a code in WhatsApp Messenger": - "आपको WhatsApp Messenger में एक कोड प्राप्त होगा", + "आपको व्हाट्सएप मैसेंजर में एक कोड प्राप्त होगा", "If you need assistance, contact us": - "यदि आपको सहायता की आवश्यकता है, तो हमसे संपर्क करें", + "यदि आपको सहायता की आवश्यकता हो, तो हमसे संपर्क करें", "Promo Ended": "प्रोमो समाप्त", "Enter the promo code and get": "प्रोमो कोड दर्ज करें और प्राप्त करें", @@ -12493,270 +15999,239 @@ class MyTranslation extends Translations { "No wallet record found": "कोई वॉलेट रिकॉर्ड नहीं मिला", "for": "के लिए", "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": - "Intaleq सबसे सुरक्षित राइड-शेयरिंग ऐप है जो कप्तानों और यात्रियों दोनों के लिए कई सुविधाएं प्रदान करता है। हम सिर्फ 8% की सबसे कम कमीशन दर प्रदान करते हैं, यह सुनिश्चित करते हुए कि आपको अपनी यात्राओं के लिए सर्वोत्तम मूल्य मिले। हमारा ऐप सर्वश्रेष्ठ कप्तानों के लिए बीमा, शीर्ष इंजीनियरों के साथ कारों का नियमित रखरखाव और सभी उपयोगकर्ताओं के लिए सम्मानजनक और उच्च गुणवत्ता वाले अनुभव सुनिश्चित करने के लिए सड़क सेवाएं शामिल करता है।", + "Intaleq सबसे सुरक्षित राइड-शेयरिंग ऐप है।", "You can contact us during working hours from 12:00 - 19:00.": - "आप काम के घंटों के दौरान 12:00 - 19:00 बजे के बीच हमसे संपर्क कर सकते हैं।", + "आप हमसे कार्यालय समय 12:00 - 19:00 के दौरान संपर्क कर सकते हैं।", "Choose a contact option": "संपर्क विकल्प चुनें", "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": - "काम का समय 12:00 - 19:00 बजे के बीच है।\nआप WhatsApp संदेश या ईमेल भेज सकते हैं।", + "काम का समय 12:00 - 19:00 है।\nआप व्हाट्सएप संदेश या ईमेल भेज सकते हैं।", "Promo code copied to clipboard!": - "प्रोमो कोड क्लिपबोर्ड पर कॉपी किया गया!", + "प्रोमो कोड क्लिपबोर्ड पर कॉपी हो गया!", "Copy Code": "कोड कॉपी करें", "Your invite code was successfully applied!": - "आपका आमंत्रण कोड सफलतापूर्वक लागू किया गया!", + "आपका आमंत्रण कोड सफलतापूर्वक लागू हो गया!", "Payment Options": "भुगतान विकल्प", "wait 1 minute to receive message": "संदेश प्राप्त करने के लिए 1 मिनट प्रतीक्षा करें", - "Promo Copied!": "प्रोमो कॉपी किया गया!", "You have copied the promo code.": "आपने प्रोमो कोड कॉपी कर लिया है।", - "Valid Until:": "मान्य है:", "Select Payment Amount": "भुगतान राशि चुनें", - "The promotion period has ended.": "प्रोमोशन अवधि समाप्त हो गई है।", - "Promo Code Accepted": "प्रोमो कोड स्वीकृत", + "The promotion period has ended.": "प्रचार अवधि समाप्त हो गई है।", + "Promo Code Accepted": "प्रोमो कोड स्वीकार कर लिया गया", "Tap on the promo code to copy it!": - "प्रोमो कोड को कॉपी करने के लिए उस पर टैप करें!", - "Lowest Price Achieved": "सबसे कम कीमत प्राप्त", - "Cannot apply further discounts.": "आगे की छूट लागू नहीं की जा सकती।", - "Promo Already Used": "प्रोमो पहले से ही उपयोग किया गया", - "Invitation Used": "आमंत्रण उपयोग किया गया", + "इसे कॉपी करने के लिए प्रोमो कोड पर टैप करें!", + "Lowest Price Achieved": "सबसे कम कीमत हासिल की गई", + "Cannot apply further discounts.": "अधिक छूट लागू नहीं की जा सकती।", + "Promo Already Used": "प्रोमो पहले ही इस्तेमाल हो चुका है", + "Invitation Used": "आमंत्रण इस्तेमाल हो चुका है", "You have already used this promo code.": - "आपने पहले से ही इस प्रोमो कोड का उपयोग कर लिया है।", + "आप पहले ही यह प्रोमो कोड इस्तेमाल कर चुके हैं।", "Insert Your Promo Code": "अपना प्रोमो कोड डालें", - "Enter promo code here": "प्रोमो कोड यहां दर्ज करें", - "Please enter a valid promo code": - "कृपया एक वैध प्रोमो कोड दर्ज करें", - "Awfar Car": "अवफार कार", + "Enter promo code here": "प्रोमो कोड यहाँ डालें", + "Please enter a valid promo code": "कृपया एक मान्य प्रोमो कोड डालें", + "Awfar Car": "किफायती कार", "Old and affordable, perfect for budget rides.": - "पुरानी और सस्ती, बजट यात्राओं के लिए आदर्श।", + "पुरानी और सस्ती, बजट सवारी के लिए उत्तम।", " If you need to reach me, please contact the driver directly at": - " यदि आपको मुझसे संपर्क करने की आवश्यकता है, तो कृपया सीधे ड्राइवर से संपर्क करें", + " यदि आपको मुझ तक पहुँचने की आवश्यकता हो, तो कृपया ड्राइवर से सीधे संपर्क करें", "No Car or Driver Found in your area.": "आपके क्षेत्र में कोई कार या ड्राइवर नहीं मिला।", - "Please Try anther time ": "कृपया किसी अन्य समय प्रयास करें ", + "Please Try anther time ": "कृपया किसी और समय प्रयास करें ", "There no Driver Aplly your order sorry for that ": - "कोई ड्राइवर आपके आदेश को लागू नहीं करता है, इसके लिए खेद है ", - "Trip Cancelled": "यात्रा रद्द", + "कोई ड्राइवर आपका ऑर्डर अप्लाई नहीं कर रहा इसके लिए खेद है ", + "Trip Cancelled": "ट्रिप रद्द हो गई", "The Driver Will be in your location soon .": - "ड्राइवर जल्द ही आपके स्थान पर होगा।", + "ड्राइवर जल्द ही आपकी लोकेशन पर होगा।", "The distance less than 500 meter.": "दूरी 500 मीटर से कम है।", "Promo End !": "प्रोमो समाप्त!", "There is no notification yet": "अभी तक कोई सूचना नहीं है", "Use Touch ID or Face ID to confirm payment": - "भुगतान की पुष्टि करने के लिए Touch ID या Face ID का उपयोग करें", + "भुगतान की पुष्टि के लिए टच आईडी या फेस आईडी का उपयोग करें", "Contact us for any questions on your order.": - "अपने आदेश पर किसी भी प्रश्न के लिए हमसे संपर्क करें।", - "Pyament Cancelled .": "भुगतान रद्द।", - "type here": "यहां टाइप करें", - "Scan Driver License": "ड्राइवर लाइसेंस स्कैन करें", + "अपने ऑर्डर पर किसी भी प्रश्न के लिए हमसे संपर्क करें।", + "Pyament Cancelled .": "भुगतान रद्द हो गया।", + "type here": "यहाँ टाइप करें", + "Scan Driver License": "ड्राइविंग लाइसेंस स्कैन करें", "Please put your licence in these border": "कृपया अपना लाइसेंस इन सीमाओं में रखें", - "Camera not initialized yet": "कैमरा अभी तक आरंभ नहीं किया गया है", - "Take Image": "छवि लें", + "Camera not initialized yet": "कैमरा अभी तक शुरू नहीं हुआ", + "Take Image": "तस्वीर लें", "AI Page": "AI पेज", - "Take Picture Of ID Card": "पहचान पत्र की तस्वीर लें", + "Take Picture Of ID Card": "आईडी कार्ड की तस्वीर लें", "Take Picture Of Driver License Card": - "ड्राइवर लाइसेंस कार्ड की तस्वीर लें", + "ड्राइविंग लाइसेंस कार्ड की तस्वीर लें", "We are process picture please wait ": - "हम छवि प्रसंस्करण कर रहे हैं कृपया प्रतीक्षा करें ", + "हम तस्वीर प्रोसेस कर रहे हैं कृपया प्रतीक्षा करें ", "There is no data yet.": "अभी तक कोई डेटा नहीं है।", - "Name :": "नाम:", - "Drivers License Class: ": "ड्राइवर लाइसेंस वर्ग:", - "Document Number: ": "दस्तावेज़ संख्या:", - "Address: ": "पता:", - "Height: ": "ऊंचाई:", - "Expiry Date: ": "समाप्ति तिथि:", - "Date of Birth: ": "जन्म तिथि:", - "You can\'t continue with us .\nYou should renew Driver license": - "आप हमारे साथ जारी नहीं रख सकते हैं।\nआपको ड्राइवर लाइसेंस नवीनीकृत करना चाहिए", - "Detect Your Face ": "अपना चेहरा पहचानें", + "Name :": "नाम :", + "Drivers License Class: ": "ड्राइविंग लाइसेंस क्लास: ", + "Document Number: ": "दस्तावेज़ नंबर: ", + "Address: ": "पता: ", + "Height: ": "ऊंचाई: ", + "Expiry Date: ": "समाप्ति तिथि: ", + "Date of Birth: ": "जन्म तिथि: ", + "You can't continue with us .\nYou should renew Driver license": + "आप हमारे साथ जारी नहीं रख सकते।\nआपको ड्राइवर लाइसेंस का नवीनीकरण करना चाहिए", + "Detect Your Face ": "अपना चेहरा पहचानें ", "Go to next step\nscan Car License.": - "अगले चरण पर जाएं\nकार लाइसेंस स्कैन करें।", - "Name in arabic": "अरबी में नाम", - "Drivers License Class": "ड्राइवर लाइसेंस वर्ग", - "Date of Birth": "जन्म तिथि", - // "Select date and time of trip": "यात्रा की तारीख और समय चुनें", - "Selected Date": "चयनित तारीख", + "अगले कदम पर जाएं\nकार लाइसेंस स्कैन करें।", + "Name in arabic": "स्थानीय नाम", + "Drivers License Class": "ड्राइविंग लाइसेंस क्लास", + "Selected Date": "चयनित तिथि", "Select Time": "समय चुनें", "Selected Time": "चयनित समय", - // "OK": "ठीक है", - // "Cancel": "रद्द करें", - "Selected Date and Time": "चयनित तारीख और समय", - "Lets check Car license ": "कार लाइसेंस की जांच करें", + "Selected Date and Time": "चयनित तिथि और समय", + "Lets check Car license ": "आइए कार लाइसेंस (RC) चेक करें ", "Car": "कार", "Plate": "प्लेट", - "N/A": "N/A", - "Rides": "यात्राएं", - "Age": "उम्र", - // "Education": "शिक्षा", - // "Color": "रंग", - // "Displacement": "विस्थापन", - // "Fuel": "ईंधन", + "Rides": "सवारियां", "Selected driver": "चयनित ड्राइवर", - "Lets check License Back Face": "लाइसेंस की पीठ की जांच करें", - "Car License Card": "कार लाइसेंस कार्ड", - "No image selected yet": "अभी तक कोई छवि चयनित नहीं है", - "Made :": "निर्माता:", - "model :": "मॉडल:", - "VIN :": "VIN:", - "year :": "वर्ष:", + "Lets check License Back Face": + "आइए लाइसेंस के पिछले हिस्से को चेक करें", + "Car License Card": "कार लाइसेंस कार्ड (RC)", + "No image selected yet": "अभी तक कोई छवि नहीं चुनी गई", + "Made :": "बनाया गया :", + "model :": "मॉडल :", + "VIN :": "VIN :", + "year :": "वर्ष :", "ُExpire Date": "समाप्ति तिथि", - "Login Driver": "ड्राइवर लॉगिन", + "Login Driver": "लॉगिन ड्राइवर", "Password must br at least 6 character.": "पासवर्ड कम से कम 6 अक्षरों का होना चाहिए।", - "if you don\'t have account": "यदि आपके पास खाता नहीं है", - "Here recorded trips audio": - "यहां रिकॉर्ड की गई यात्राओं का ऑडियो है", - "Register as Driver": "ड्राइवर के रूप में पंजीकरण", - // "Privacy Notice": "गोपनीयता नीति", + "if you don't have account": "अगर आपके पास खाता नहीं है", + "Here recorded trips audio": "यहाँ रिकॉर्ड किए गए ट्रिप्स का ऑडियो", + "Register as Driver": "बतौर ड्राइवर रजिस्टर करें", "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": - "नीचे \"मैं सहमत हूं\" चुनकर, मैंने उपयोग की शर्तों की समीक्षा की है और उनसे सहमत हूं और स्वीकार करता हूं ", - ". I am at least 18 years of age.": ". मैं कम से कम 18 वर्ष का हूं।", + "नीचे \"मैं सहमत हूँ\" को चुनकर, मैंने समीक्षा की है और उपयोग की शर्तों से सहमत हूँ और स्वीकार करता हूँ ", "Log Out Page": "लॉग आउट पेज", "Log Off": "लॉग ऑफ", - "Register Driver": "ड्राइवर पंजीकरण", + "Register Driver": "ड्राइवर रजिस्टर करें", "Verify Email For Driver": "ड्राइवर के लिए ईमेल सत्यापित करें", - "Admin DashBoard": "व्यवस्थापक डैशबोर्ड", + "Admin DashBoard": "एडमिन डैशबोर्ड", "Your name": "आपका नाम", - "your ride is applied": "आपकी यात्रा लागू हो गई है", - "Your password": "आपका पासवर्ड", - "H and": "घंटे और", - "LE": "एलई", - "JOD": "JOD", - "m": "मी", + "your ride is applied": "आपकी राइड लागू हो गई है", + "H and": "H और", + "JOD": "₹", + "m": "मिनट", "We search nearst Driver to you": - "हम आपके निकटतम ड्राइवर की तलाश करते हैं", + "हम आपके निकटतम ड्राइवर को खोजते हैं", "please wait till driver accept your order": - "कृपया प्रतीक्षा करें जब तक ड्राइवर आपका आदेश स्वीकार नहीं करता", + "कृपया प्रतीक्षा करें जब तक ड्राइवर आपका ऑर्डर स्वीकार न करे", "No accepted orders? Try raising your trip fee to attract riders.": - "कोई स्वीकृत आदेश नहीं? सवारों को आकर्षित करने के लिए अपनी यात्रा शुल्क बढ़ाने का प्रयास करें।", + "कोई स्वीकृत ऑर्डर नहीं? सवारों को आकर्षित करने के लिए अपनी ट्रिप फीस बढ़ाने की कोशिश करें।", "You should select one": "आपको एक चुनना चाहिए", "The driver accept your order for": - "ड्राइवर ने आपका आदेश स्वीकार कर लिया", - "Increase Fee": "शुल्क बढ़ाएं", - "No, thanks": "नहीं, धन्यवाद", + "ड्राइवर आपका ऑर्डर स्वीकार करता है के लिए", "The driver on your way": "ड्राइवर आपके रास्ते में है", "Total price from ": "से कुल कीमत ", - "Order Details Intaleq": "आदेश विवरण गति", - // "Order Applied": "आदेश लागू", - "accepted your order": "आपका आदेश स्वीकार कर लिया", - // "We regret to inform you that another driver has accepted this order.": "हमें खेद है कि एक अन्य ड्राइवर ने इस आदेश को स्वीकार कर लिया है", + "Order Details Intaleq": "ऑर्डर विवरण Intaleq", "Selected file:": "चयनित फ़ाइल:", - "Your trip cost is": "आपकी यात्रा की लागत है", + "Your trip cost is": "आपकी ट्रिप की कीमत है", "this will delete all files from your device": - "यह आपके डिवाइस से सभी फ़ाइलों को हटा देगा", - " in your": "आपके", + "यह आपके डिवाइस से सभी फ़ाइलें हटा देगा", "Exclusive offers and discounts always with the Intaleq app": "Intaleq ऐप के साथ हमेशा विशेष ऑफ़र और छूट", - // "Please go to Car Driver": "कृपया कार ड्राइवर के पास जाएं", - " wallet due to a previous trip.": "पिछली यात्रा के कारण वॉलेट।", "Submit Question": "प्रश्न जमा करें", "Please enter your Question.": "कृपया अपना प्रश्न दर्ज करें।", "Help Details": "मदद विवरण", - "No trip yet found": "अभी तक कोई यात्रा नहीं मिली", - "No Response yet.": "अभी तक कोई प्रतिक्रिया नहीं।", - " You Earn today is ": " आप आज कमाते हैं ", - " You Have in": " आपके पास है", - "Total points is ": "कुल पॉइंट्स हैं ", + "No trip yet found": "अभी तक कोई ट्रिप नहीं मिला", + "No Response yet.": "अभी तक कोई जवाब नहीं मिला।", + " You Earn today is ": " आपकी आज की कमाई है ", + " You Have in": " आपके पास है में", + "Total points is ": "कुल अंक हैं ", "Total Connection Duration:": "कुल कनेक्शन अवधि:", - " H and": " घंटे और", - "Passenger name : ": "यात्री का नाम: ", - "Cost Of Trip IS ": "यात्रा की लागत है ", - "Arrival time": "आगमन समय", - "arrival time to reach your point": - "आपके बिंदु तक पहुंचने का आगमन समय", + "Passenger name : ": "यात्री का नाम : ", + "Cost Of Trip IS ": "ट्रिप की कीमत है ", + "Arrival time": "पहुंचने का समय", + "arrival time to reach your point": "आपके पॉइंट तक पहुंचने का समय", "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "स्पीड और स्कूटर यात्राओं के लिए, कीमत गतिशील रूप से गणना की जाती है। कम्फर्ट यात्राओं के लिए, कीमत समय और दूरी पर आधारित है।", - "Hello this is Driver": "हैलो, यह ड्राइवर है", + "कीमत गतिशील रूप से की जाती है। कम्फर्ट ट्रिप्स के लिए, कीमत समय और दूरी पर आधारित होती है।", + "Hello this is Driver": "नमस्ते यह ड्राइवर है", "Is the Passenger in your Car ?": "क्या यात्री आपकी कार में है?", "Please wait for the passenger to enter the car before starting the trip.": - "यात्रा शुरू करने से पहले यात्री के कार में प्रवेश करने की प्रतीक्षा करें।", - "No ,still Waiting.": "नहीं, अभी भी प्रतीक्षा कर रहा हूं।", - "I arrive you": "मैं आप तक पहुंच गया हूं", - "I Arrive your site": "मैं आपकी साइट पर पहुंच गया हूं", + "कृपया ट्रिप शुरू करने से पहले यात्री के कार में प्रवेश करने का इंतज़ार करें।", + "No ,still Waiting.": "नहीं, अभी भी इंतज़ार कर रहा हूँ।", + "I arrive you": "मैं आपके पास पहुंच गया", + "I Arrive your site": "मैं आपकी लोकेशन पर पहुंच गया", "You are not in near to passenger location": - "आप यात्री के स्थान के निकट नहीं हैं", + "आप यात्री की लोकेशन के करीब नहीं हैं", "please go to picker location exactly": - "कृपया पिकर स्थान पर ठीक से जाएं", + "कृपया बिल्कुल उसी लोकेशन पर जाएं जहां से उठाना है", "You Can Cancel Trip And get Cost of Trip From": - "आप यात्रा रद्द कर सकते हैं और यात्रा की लागत प्राप्त कर सकते हैं", - "Are you sure to cancel?": "क्या आप रद्द करना चाहते हैं?", - // "Yes": "हां", - "Insert Emergincy Number": "आपातकालीन नंबर डालें", + "आप ट्रिप रद्द कर सकते हैं और ट्रिप की कीमत प्राप्त कर सकते हैं से", + "Are you sure to cancel?": "क्या आप रद्द करने के लिए निश्चित हैं?", + "Insert Emergincy Number": "आपातकालीन नंबर दर्ज करें", "Best choice for comfort car and flexible route and stops point": - "आरामदायक कार और लचीले मार्ग और स्टॉप पॉइंट के लिए सबसे अच्छा विकल्प", - "Insert": "डालें", + "आरामदायक कार और लचीले रास्ते और स्टॉप पॉइंट के लिए सबसे अच्छा विकल्प", + "Insert": "दर्ज करें", "This is for scooter or a motorcycle.": "यह स्कूटर या मोटरसाइकिल के लिए है।", "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": - "यह यात्रा सीधे आपके शुरुआती बिंदु से आपके गंतव्य तक एक निश्चित कीमत पर जाती है। ड्राइवर को नियोजित मार्ग का पालन करना चाहिए", + "यह ट्रिप आपके शुरुआती बिंदु से सीधे आपकी मंजिल तक एक निश्चित कीमत पर जाती है।", "You can decline a request without any cost": - "आप बिना किसी लागत के अनुरोध को अस्वीकार कर सकते हैं", + "आप बिना किसी लागत के अनुरोध अस्वीकार कर सकते हैं", "Perfect for adventure seekers who want to experience something new and exciting": - "उन साहसिक खोजकर्ताओं के लिए आदर्श जो कुछ नया और रोमांचक अनुभव करना चाहते हैं", - "My current location is:": "मेरा वर्तमान स्थान है:", - "and I have a trip on": "और मेरी यात्रा है", + "उन साहसी लोगों के लिए उत्तम जो कुछ नया अनुभव करना चाहते हैं", + "My current location is:": "मेरी वर्तमान लोकेशन है:", + "and I have a trip on": "और मेरे पास एक ट्रिप है पर", "App with Passenger": "यात्री के साथ ऐप", "You will be pay the cost to driver or we will get it from you on next trip": - "आप ड्राइवर को लागत का भुगतान करेंगे या हम इसे अगली यात्रा में आपसे प्राप्त करेंगे", - "Trip has Steps": "यात्रा में कदम हैं", + "आप ड्राइवर को कीमत चुकाएंगे या हम अगली ट्रिप पर आपसे ले लेंगे", + "Trip has Steps": "ट्रिप के चरण हैं", "Distance from Passenger to destination is ": "यात्री से गंतव्य तक की दूरी है ", "price is": "कीमत है", "This ride type does not allow changes to the destination or additional stops": - "इस यात्रा प्रकार में गंतव्य या अतिरिक्त स्टॉप में परिवर्तन की अनुमति नहीं है", + "इस प्रकार की सवारी गंतव्य में परिवर्तन या अतिरिक्त स्टॉप की अनुमति नहीं देती", "This price may be changed": "यह कीमत बदल सकती है", "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": - "कोई SIM कार्ड नहीं, कोई समस्या नहीं! हमारे ऐप के माध्यम से सीधे अपने ड्राइवर को कॉल करें। हम आपकी गोपनीयता सुनिश्चित करने के लिए उन्नत तकनीक का उपयोग करते हैं।", + "कोई सिम कार्ड नहीं, कोई समस्या नहीं! हमारे ऐप के माध्यम से सीधे अपने ड्राइवर को कॉल करें।", "This ride type allows changes, but the price may increase": - "इस यात्रा प्रकार में परिवर्तन की अनुमति है, लेकिन कीमत बढ़ सकती है", + "इस प्रकार की सवारी परिवर्तनों की अनुमति देती है, लेकिन कीमत बढ़ सकती है", "Select one message": "एक संदेश चुनें", - "I'm waiting for you": "मैं आपका इंतज़ार कर रहा हूं", + "I'm waiting for you": "मैं आपका इंतज़ार कर रहा हूँ", "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": - "हमने देखा कि गति 100 किमी/घंटा से अधिक है। कृपया अपनी सुरक्षा के लिए गति कम करें। यदि आप असुरक्षित महसूस करते हैं, तो आप अपनी यात्रा विवरण एक संपर्क के साथ साझा कर सकते हैं या लाल SOS बटन का उपयोग करके पुलिस को कॉल कर सकते हैं।", - "Warning: Intaleqing detected!": "चेतावनी: अत्यधिक गति का पता चला!", + "हमने देखा कि Intaleq 100 किमी/घंटा से अधिक हो रहा है। कृपया अपनी सुरक्षा के लिए धीमा करें।", + "Warning: Intaleqing detected!": "चेतावनी: तेज गति का पता चला!", "Please help! Contact me as soon as possible.": "कृपया मदद करें! जितनी जल्दी हो सके मुझसे संपर्क करें।", - "Share Trip Details": "यात्रा विवरण साझा करें", + "Share Trip Details": "ट्रिप विवरण साझा करें", "Car Plate is ": "कार प्लेट है ", - "VIP Order": "वीआईपी आदेश", "the 300 points equal 300 L.E for you \nSo go and gain your money": - "300 पॉइंट्स आपके लिए 300 एल.ई. के बराबर हैं\nतो जाएं और अपना पैसा कमाएं", - "the 300 points equal 300 L.E": "300 पॉइंट्स 300 एल.ई. के बराबर हैं", + "300 अंक आपके लिए 300 रुपये के बराबर हैं \nतो जाएं और अपने पैसे कमाएं", + "the 300 points equal 300 L.E": "300 अंक 300 रुपये के बराबर हैं", "The payment was not approved. Please try again.": "भुगतान स्वीकृत नहीं हुआ। कृपया पुनः प्रयास करें।", - "Payment Failed": "भुगतान विफल", - "Error": "त्रुटि", + "Payment Failed": "भुगतान विफल हो गया", "This is a scheduled notification.": "यह एक निर्धारित सूचना है।", "An error occurred during the payment process.": "भुगतान प्रक्रिया के दौरान एक त्रुटि हुई।", "The payment was approved.": "भुगतान स्वीकृत हो गया।", "Payment Successful": "भुगतान सफल", - "No ride found yet": "अभी तक कोई यात्रा नहीं मिली", - "Accept Order": "आदेश स्वीकार करें", - // "reject your order.": "आपका आदेश अस्वीकार करें।", + "No ride found yet": "अभी तक कोई सवारी नहीं मिली", + "Accept Order": "ऑर्डर स्वीकार करें", "Bottom Bar Example": "बॉटम बार उदाहरण", - "Driver phone": "ड्राइवर फोन", + "Driver phone": "ड्राइवर का फ़ोन", "Statistics": "सांख्यिकी", "Origin": "मूल", "Destination": "गंतव्य", "Driver Name": "ड्राइवर का नाम", "Driver Car Plate": "ड्राइवर कार प्लेट", - "Available for rides": "यात्राओं के लिए उपलब्ध", + "Available for rides": "सवारियों के लिए उपलब्ध", "Scan Id": "आईडी स्कैन करें", - "Camera not initilaized yet": "कैमरा अभी तक आरंभ नहीं किया गया है", - "Scan ID MklGoogle": "आईडी स्कैन MklGoogle", + "Camera not initilaized yet": "कैमरा अभी तक शुरू नहीं हुआ", + "Scan ID MklGoogle": "आईडी MklGoogle स्कैन करें", "Language": "भाषा", "Jordan": "जॉर्डन", - "USA": "यूएसए", + "USA": "अमेरीका", "Egypt": "मिस्र", "Turkey": "तुर्की", "Saudi Arabia": "सऊदी अरब", "Qatar": "कतर", "Bahrain": "बहरीन", "Kuwait": "कुवैत", - "But you have a negative salary of": "लेकिन आपका नकारात्मक वेतन है", + "But you have a negative salary of": "लेकिन आपकी नकारात्मक आय है", "Promo Code": "प्रोमो कोड", - "Your trip distance is": "आपकी यात्रा की दूरी है", + "Your trip distance is": "आपकी ट्रिप की दूरी है", "Enter promo code": "प्रोमो कोड दर्ज करें", "You have promo!": "आपके पास प्रोमो है!", "Cost Duration": "लागत अवधि", @@ -12764,191 +16239,170 @@ class MyTranslation extends Translations { "Leave": "छोड़ें", "Join": "शामिल हों", "Heading your way now. Please be ready.": - "अब आपके रास्ते में। कृपया तैयार रहें।", + "अब आपके रास्ते की ओर बढ़ रहा हूँ। कृपया तैयार रहें।", "Approaching your area. Should be there in 3 minutes.": - "आपके क्षेत्र के निकट। 3 मिनट में वहां होना चाहिए।", + "आपके क्षेत्र के करीब पहुँच रहा हूँ। 3 मिनट में वहां होना चाहिए।", "There's heavy traffic here. Can you suggest an alternate pickup point?": - "यहां भारी यातायात है। क्या आप एक वैकल्पिक पिकअप बिंदु सुझा सकते हैं?", + "यहाँ ट्रैफ़िक बहुत है। क्या आप वैकल्पिक पिकअप पॉइंट सुझा सकते हैं?", "This ride is already taken by another driver.": - "यह यात्रा पहले से ही एक अन्य ड्राइवर द्वारा ली जा चुकी है।", + "यह सवारी पहले ही किसी अन्य ड्राइवर ने ले ली है।", "You Should be select reason.": "आपको कारण चुनना चाहिए।", - " \$": " \$", - "Waiting for Driver ...": "ड्राइवर की प्रतीक्षा ...", - "Latest Recent Trip": "नवीनतम हाल की यात्रा", + "Waiting for Driver ...": "ड्राइवर का इंतज़ार...", + "Latest Recent Trip": "नवीनतम हाल की ट्रिप", "from your list": "आपकी सूची से", "Do you want to change Work location": - "क्या आप कार्य स्थान बदलना चाहते हैं?", + "क्या आप काम की लोकेशन बदलना चाहते हैं", "Do you want to change Home location": - "क्या आप घर का स्थान बदलना चाहते हैं?", + "क्या आप घर की लोकेशन बदलना चाहते हैं", "We Are Sorry That we dont have cars in your Location!": - "हमें खेद है कि हमारे पास आपके स्थान पर कारें नहीं हैं!", - "Choose from Map": "मानचित्र से चुनें", + "हम क्षमा चाहते हैं कि हमारे पास आपकी लोकेशन में कारें नहीं हैं!", + "Choose from Map": "मैप से चुनें", "Pick your ride location on the map - Tap to confirm": - "मानचित्र पर अपनी यात्रा स्थान चुनें - पुष्टि करने के लिए टैप करें", - // "To Work": "काम पर", - // "Are you want to go this site": "क्या आप इस साइट पर जाना चाहते हैं?", - "Closest & Cheapest": "निकटतम और सबसे सस्ता", - // "Work Saved": "काम की जगह सहेजी गई", + "मैप पर अपनी सवारी की लोकेशन चुनें - पुष्टि के लिए टैप करें", "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": "Intaleq एक राइड-हेलिंग ऐप है जो सुरक्षित, विश्वसनीय और सुलभ है।", "With Intaleq, you can get a ride to your destination in minutes.": - "Intaleq के साथ, आप अपने गंतव्य तक कुछ ही मिनटों में यात्रा कर सकते हैं।", + "Intaleq के साथ, आप मिनटों में अपनी मंजिल तक सवारी प्राप्त कर सकते हैं।", "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": - "Intaleq सुरक्षा के लिए प्रतिबद्ध है, और हमारे सभी कप्तानों की सावधानीपूर्वक जांच और पृष्ठभूमि जांच की जाती है।", - // "To Home": "घर पर", - // "Home Saved": "घर की जगह सहेजी गई", - // "Destination selected": "गंतव्य चुना गया:", - // "Now select start pick": "अब शुरुआती स्थान चुनें:", - "Pick from map": "मानचित्र से चुनें", - // "Click here point": "यहां क्लिक करें", + "Intaleq सुरक्षा के लिए प्रतिबद्ध है।", + "Pick from map": "मैप से चुनें", "No Car in your site. Sorry!": - "आपके स्थान पर कोई कार नहीं है। खेद है!", + "आपकी जगह पर कोई कार नहीं। क्षमा करें!", "Nearest Car for you about ": "आपके लिए निकटतम कार लगभग ", - // "N/A": "N/A", - "From :": "से:", - "Get Details of Trip": "यात्रा का विवरण प्राप्त करें", + "From :": "से :", + "Get Details of Trip": "ट्रिप का विवरण प्राप्त करें", "If you want add stop click here": "यदि आप स्टॉप जोड़ना चाहते हैं तो यहां क्लिक करें", - // "Driver": "ड्राइवर", - "Where you want go ": "आप कहां जाना चाहते हैं ", - "My Card": "मेरी कार्ड", + "Where you want go ": "आप कहाँ जाना चाहते हैं ", + "My Card": "मेरा कार्ड", "Start Record": "रिकॉर्ड शुरू करें", - "Wallet": "वॉलेट", - "History of Trip": "यात्रा का इतिहास", + "History of Trip": "ट्रिप का इतिहास", "Helping Center": "सहायता केंद्र", "Record saved": "रिकॉर्ड सहेजा गया", - "Trips recorded": "यात्राएं रिकॉर्ड की गईं", + "Trips recorded": "ट्रिप्स रिकॉर्ड की गईं", "Select Your Country": "अपना देश चुनें", "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": - "यह सुनिश्चित करने के लिए कि आप अपने स्थान के लिए सबसे सटीक जानकारी प्राप्त करें, कृपया नीचे अपना देश चुनें। यह ऐप अनुभव और सामग्री को आपके देश के अनुरूप बनाने में मदद करेगा।", + "यह सुनिश्चित करने के लिए कि आपको अपनी लोकेशन के लिए सबसे सटीक जानकारी मिले, कृपया अपना देश चुनें।", "Are you sure to delete recorded files": - "क्या आप वाकई रिकॉर्ड की गई फ़ाइलों को हटाना चाहते हैं?", - "Select recorded trip": "रिकॉर्ड की गई यात्रा चुनें", + "क्या आप वाकई रिकॉर्ड की गई फ़ाइलें हटाना चाहते हैं", + "Select recorded trip": "रिकॉर्ड की गई ट्रिप चुनें", "Card Number": "कार्ड नंबर", - "Hi, Where to ": "हाय, कहां जाना है ", - "Pick your destination from Map": "मानचित्र से अपना गंतव्य चुनें", - "Add Stops": "स्टॉप जोड़ें", + "Hi, Where to ": "नमस्ते, कहाँ जाना है ", + "Pick your destination from Map": "मैप से अपनी मंजिल चुनें", + "Add Stops": "स्टॉप्स जोड़ें", "Get Direction": "दिशा प्राप्त करें", - "Add Location": "स्थान जोड़ें", - "Switch Rider": "सवार बदलें", + "Add Location": "लोकेशन जोड़ें", + "Switch Rider": "राइडर बदलें", "You will arrive to your destination after timer end.": - "टाइमर समाप्त होने के बाद आप अपने गंतव्य पर पहुंचेंगे।", - "You can cancel trip": "आप यात्रा रद्द कर सकते हैं", + "टाइमर समाप्त होने के बाद आप अपनी मंजिल पर पहुंच जाएंगे।", + "You can cancel trip": "आप ट्रिप रद्द कर सकते हैं", "The driver waitting you in picked location .": - "ड्राइवर आपका चुने हुए स्थान पर इंतज़ार कर रहा है।", - "10\$ and get 3% discount": "10\$ और 3% छूट प्राप्त करें", - "20\$ and get 4% discount": "20\$ और 4% छूट प्राप्त करें", - "40\$ and get 6% discount": "40\$ और 6% छूट प्राप्त करें", - "100\$ and get 9% discount": "100\$ और 9% छूट प्राप्त करें", + "ड्राइवर पिक की गई लोकेशन पर आपका इंतज़ार कर रहा है।", "Pay with Your": "अपने साथ भुगतान करें", "Pay with Credit Card": "क्रेडिट कार्ड से भुगतान करें", - "Payment History": "भुगतान इतिहास", "Show Promos to Charge": "चार्ज करने के लिए प्रोमो दिखाएं", - "Point": "पॉइंट", + "Point": "अंक", "How many hours would you like to wait?": - "आप कितने घंटे प्रतीक्षा करना चाहेंगे?", + "आप कितने घंटे इंतज़ार करना चाहेंगे?", "Driver Wallet": "ड्राइवर वॉलेट", "Choose between those Type Cars": "उन प्रकार की कारों के बीच चुनें", "hour": "घंटा", - "Select Waiting Hours": "प्रतीक्षा घंटे चुनें", - "Total Points is": "कुल पॉइंट्स हैं", + "Select Waiting Hours": "प्रतीक्षा के घंटे चुनें", + "Total Points is": "कुल अंक हैं", "You will receive a code in SMS message": - "आपको एसएमएस संदेश में एक कोड प्राप्त होगा", + "आपको SMS संदेश में एक कोड प्राप्त होगा", "Done": "हो गया", - "Total Budget from trips is ": "यात्राओं से कुल बजट है ", + "Total Budget from trips is ": "ट्रिप्स से कुल बजट है ", "Total Amount:": "कुल राशि:", "Total Budget from trips by\nCredit card is ": - "क्रेडिट कार्ड द्वारा यात्राओं से कुल बजट है ", + "क्रेडिट कार्ड द्वारा ट्रिप्स से\nकुल बजट है ", "This amount for all trip I get from Passengers": - "यह राशि सभी यात्राओं के लिए है जो मुझे यात्रियों से मिलती है", + "यह राशि सभी ट्रिप के लिए जो मुझे यात्रियों से मिलती है", "Pay from my budget": "मेरे बजट से भुगतान करें", "This amount for all trip I get from Passengers and Collected For me in": - "यह राशि सभी यात्राओं के लिए है जो मुझे यात्रियों से मिलती है और मेरे लिए एकत्र की जाती है", + "यह राशि सभी ट्रिप के लिए जो मुझे यात्रियों से मिलती है और मेरे लिए एकत्र की गई है", "You can buy points from your budget": - "आप अपने बजट से पॉइंट्स खरीद सकते हैं", + "आप अपने बजट से अंक खरीद सकते हैं", "insert amount": "राशि डालें", "You can buy Points to let you online\nby this list below": - "आप पॉइंट्स खरीद सकते हैं ताकि आप ऑनलाइन रह सकें\nनीचे दी गई सूची से", + "आप ऑनलाइन रहने के लिए अंक खरीद सकते हैं\nनीचे दी गई इस सूची द्वारा", "Create Wallet to receive your money": "अपना पैसा प्राप्त करने के लिए वॉलेट बनाएं", - "Enter your feedback here": "अपनी प्रतिक्रिया यहां दर्ज करें", - "Please enter your feedback.": "कृपया अपनी प्रतिक्रिया दर्ज करें।", - "Feedback": "प्रतिक्रिया", + "Enter your feedback here": "अपना फीडबैक यहाँ दर्ज करें", + "Please enter your feedback.": "कृपया अपना फीडबैक दर्ज करें।", + "Feedback": "फीडबैक", "Submit ": "जमा करें ", "Click here to Show it in Map": - "इसे मानचित्र में दिखाने के लिए यहां क्लिक करें", + "इसे मैप में दिखाने के लिए यहां क्लिक करें", "Canceled": "रद्द", - "Type your Email": "अपना ईमेल टाइप करें", - "No I want": "नहीं मैं चाहता हूं", - "Email is": "ईमेल है", - "Phone Number is": "फोन नंबर है", - "Date of Birth is": "जन्म तिथि है", - "Sex is ": "लिंग है ", + "No I want": "नहीं मैं चाहता हूँ", + "Email is": "ईमेल है:", + "Phone Number is": "फ़ोन नंबर है:", + "Date of Birth is": "जन्म तिथि है:", + "Sex is ": "लिंग है: ", "Car Details": "कार विवरण", - "VIN is": "VIN है", - "Color is ": "रंग है ", - "Make is ": "निर्माता है ", - "Model is": "मॉडल है", - "Year is": "वर्ष है", - "Expiration Date ": "समाप्ति तिथि ", + "VIN is": "VIN है:", + "Color is ": "रंग है: ", + "Make is ": "मेक है: ", + "Model is": "मॉडल है:", + "Year is": "वर्ष है:", + "Expiration Date ": "समाप्ति तिथि: ", "Edit Your data": "अपना डेटा संपादित करें", - "write vin for your car": "अपनी कार के लिए VIN लिखें", + "write vin for your car": "अपनी कार के लिए vin लिखें", "VIN": "VIN", + "Device Change Detected": "डिवाइस परिवर्तन का पता चला", + "Please verify your identity": "कृपया अपनी पहचान सत्यापित करें", "write Color for your car": "अपनी कार के लिए रंग लिखें", - "write Make for your car": "अपनी कार के लिए निर्माता लिखें", - // "Make": "निर्माता", + "write Make for your car": "अपनी कार के लिए मेक लिखें", "write Model for your car": "अपनी कार के लिए मॉडल लिखें", - // "Model": "मॉडल", "write Year for your car": "अपनी कार के लिए वर्ष लिखें", - // "Expiration Date": "समाप्ति तिथि", "write Expiration Date for your car": "अपनी कार के लिए समाप्ति तिथि लिखें", "Tariffs": "टैरिफ", "Minimum fare": "न्यूनतम किराया", "Maximum fare": "अधिकतम किराया", - "Flag-down fee": "फ्लैग-डाउन शुल्क", - "Including Tax": "कर सहित", - "BookingFee": "बुकिंग शुल्क", + "Flag-down fee": "फ्लैग-डाउन फीस", + "Including Tax": "टैक्स सहित", + "BookingFee": "बुकिंग फीस", "Morning": "सुबह", "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": - "07:30 से 10:30 तक (गुरुवार, शुक्रवार, शनिवार, सोमवार)", + "07:30 से 10:30 तक", "Evening": "शाम", "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": - "12:00 से 15:00 तक (गुरुवार, शुक्रवार, शनिवार, सोमवार)", + "12:00 से 15:00 तक", "Night": "रात", "You have in account": "आपके खाते में है", "Select Country": "देश चुनें", - "Ride Today : ": "आज की यात्रा: ", - "After this period\nYou can\'t cancel!": + "Ride Today : ": "आज की सवारी: ", + "After this period\nYou can't cancel!": "इस अवधि के बाद\nआप रद्द नहीं कर सकते!", "from 23:59 till 05:30": "23:59 से 05:30 तक", "Rate Driver": "ड्राइवर को रेट करें", - "Total Cost is ": "कुल लागत है ", + "Total Cost is ": "कुल कीमत है ", "Write note": "नोट लिखें", - "Time to arrive": "आगमन समय", - "Ride Summaries": "यात्रा सारांश", - "Total Cost": "कुल लागत", + "Time to arrive": "पहुंचने का समय", + "Ride Summaries": "सवारी के सारांश", + "Total Cost": "कुल कीमत", "Average of Hours of": "घंटों का औसत", - " is ON for this month": " इस महीने के लिए चालू है", + " is ON for this month": " इस महीने के लिए ऑन है", "Days": "दिन", - "Total Hours on month": "महीने पर कुल घंटे", - "Counts of Hours on days": "दिनों पर घंटों की संख्या", - "OrderId": "आदेश आईडी", - "created time": "बनाया गया समय", - "Intaleq Over": "अत्यधिक गति", - "I will slow down": "मैं गति कम करूंगा", + "Total Hours on month": "महीने में कुल घंटे", + "Counts of Hours on days": "दिनों में घंटों की गिनती", + "OrderId": "ऑर्डर आईडी", + "created time": "बनाने का समय", + "Intaleq Over": "Intaleq समाप्त", + "I will slow down": "मैं धीमा हो जाऊंगा", "Map Passenger": "मानचित्र यात्री", - "Be Slowly": "धीरे-धीरे", + "Be Slowly": "धीरे रहें", "If you want to make Google Map App run directly when you apply order": - "यदि आप Google Map ऐप को सीधे चलाना चाहते हैं जब आप आदेश लागू करते हैं", + "यदि आप चाहते हैं कि जब आप ऑर्डर लागू करें तो गूगल मैप ऐप सीधे चले", "You can change the language of the app": "आप ऐप की भाषा बदल सकते हैं", "Your Budget less than needed": "आपका बजट आवश्यकता से कम है", "You can change the Country to get all features": - "सभी सुविधाएं प्राप्त करने के लिए आप देश बदल सकते हैं", + "आप सभी सुविधाएँ प्राप्त करने के लिए देश बदल सकते हैं", "Change Country": "देश बदलें" }, - // "ru": { "Order": "Заказ", @@ -12956,1154 +16410,1311 @@ class MyTranslation extends Translations { "Cancel Trip": "Отменить поездку", "Passenger Cancel Trip": "Пассажир отменил поездку", "VIP Order": "VIP Заказ", - "The driver accepted your trip": "Водитель принял вашу поездку", + "Hi ,I Arrive your site": "Здравствуйте, я прибыл на место", + "The driver accepted your trip": "Водитель принял ваш заказ", "message From passenger": "Сообщение от пассажира", - "Cancel": "Отменить", + "Cancel": "Отмена", "Trip Cancelled. The cost of the trip will be added to your wallet.": - "Поездка отменена. Стоимость поездки будет добавлена на ваш кошелек.", + "Поездка отменена. Стоимость возвращена на ваш кошелек.", "token change": "Смена токена", - "face detect": "Обнаружение лица", - "Face Detection Result": "Результат обнаружения лица", - "similar": "похоже", - "not similar": "не похоже", - "Hi ,I will go now": "Привет, я пойду сейчас", + "face detect": "Распознавание лица", + "Face Detection Result": "Результат распознавания", + "similar": "Похож", + "not similar": "Не похож", + "Hi ,I will go now": "Здравствуйте, я выезжаю", "Passenger come to you": "Пассажир идет к вам", - "Call Income": "Доход от звонка", - "Call Income from Passenger": "Доход от звонка от пассажира", - "Criminal Document Required": "Требуется криминальный документ", - "You should have upload it .": "Вы должны были загрузить его.", - "Call End": "Звонок завершен", + "Call Income": "Входящий вызов", + "Call Income from Passenger": "Вызов от пассажира", + "Criminal Document Required": "Требуется справка о несудимости", + "You should have upload it .": "Вы должны загрузить её.", + "Call End": "Вызов завершен", "The order has been accepted by another driver.": - "Заказ был принят другим водителем.", + "Заказ принят другим водителем.", "The order Accepted by another Driver": "Заказ принят другим водителем", "We regret to inform you that another driver has accepted this order.": - "С сожалением сообщаем, что другой водитель принял этот заказ.", - "Driver Applied the Ride for You": - "Водитель применил поездку для вас", - "Applied": "Применено", - "Hi ,I Arrive your site": "Привет, я прибыл на ваше место", - "Please go to Car Driver": "Пожалуйста, подойдите к водителю машины", - "Ok I will go now.": "Хорошо, я пойду сейчас.", + "К сожалению, этот заказ принял другой водитель.", + "Driver Applied the Ride for You": "Водитель создал поездку для вас", + "Applied": "Создан", + "Pay by Sham Cash": "Оплата через Sham Cash", + "Pay with Debit Card": "Оплата банковской картой", + "Please go to Car Driver": "Пожалуйста, пройдите к водителю", + "Ok I will go now.": "Хорошо, иду.", "Accepted Ride": "Принятая поездка", "Driver Accepted the Ride for You": "Водитель принял поездку для вас", - "Promo": "Промо", - "Show latest promo": "Показать последние промо", + "Promo": "Промокод", + "Show latest promo": "Показать промокоды", "Trip Monitoring": "Мониторинг поездки", "Driver Is Going To Passenger": "Водитель едет к пассажиру", "Please stay on the picked point.": - "Пожалуйста, оставайтесь на выбранной точке.", + "Пожалуйста, оставайтесь в точке посадки.", "message From Driver": "Сообщение от водителя", "Trip is Begin": "Поездка началась", - "Cancel Trip from driver": "Отменить поездку от водителя", + "Cancel Trip from driver": "Отмена водителем", "We will look for a new driver.\nPlease wait.": - "Мы найдем нового водителя.\nПожалуйста, подождите.", + "Мы ищем нового водителя.\nПожалуйста, подождите.", "The driver canceled your ride.": "Водитель отменил вашу поездку.", "Driver Finish Trip": "Водитель завершил поездку", - "you will pay to Driver": "вы заплатите водителю", + "you will pay to Driver": "К оплате водителю", "Don’t forget your personal belongings.": "Не забудьте свои личные вещи.", "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": - "Пожалуйста, убедитесь, что у вас есть все ваши личные вещи и что любой оставшийся тариф, если применимо, был добавлен на ваш кошелек перед уходом. Спасибо за выбор приложения Intaleq.", + "Пожалуйста, проверьте наличие личных вещей и убедитесь, что сдача зачислена на ваш кошелек. Спасибо, что выбрали Intaleq.", "Finish Monitor": "Завершить мониторинг", "Trip finished": "Поездка завершена", - "Call Income from Driver": "Доход от звонка от водителя", + "Call Income from Driver": "Звонок от водителя", + "Driver Cancelled Your Trip": "Водитель отменил поездку", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "Вы оплатите время водителя, проверьте кошелек Intaleq", + "Order Applied": "Заказ оформлен", + "welcome to intaleq": "Добро пожаловать в Intaleq", + "login or register subtitle": + "Введите номер телефона для входа или регистрации", + "An application error occurred.": "Произошла ошибка приложения.", + "Submission Failed": "Ошибка отправки", + "Your complaint has been submitted.": "Ваша жалоба отправлена.", + "Failed to connect to the server. Please try again.": + "Ошибка соединения с сервером. Попробуйте снова.", + "Ride information not found. Please refresh the page.": + "Информация о поездке не найдена. Обновите страницу.", + "Please describe your issue before submitting.": + "Опишите проблему перед отправкой.", + "An application error occurred during upload.": + "Ошибка при загрузке.", + "Failed to upload audio file.": "Не удалось загрузить аудиофайл.", + "Audio uploaded successfully.": "Аудио успешно загружено.", + "Complaint cannot be filed for this ride. It may not have been completed or started.": + "Нельзя подать жалобу на эту поездку. Возможно, она не завершена или не начата.", + "2. Attach Recorded Audio (Optional)": + "2. Прикрепить аудиозапись (опционально)", + "Please enter a description of the issue.": + "Пожалуйста, опишите проблему.", + "phone number label": "Номер телефона", + "phone number required": "Требуется номер телефона", + "send otp button": "Отправить код", + "verify your number title": "Подтверждение номера", + "otp sent subtitle": "5-значный код отправлен на\n@phoneNumber", + "verify and continue button": "Подтвердить и продолжить", + "enter otp validation": "Введите 5-значный код", + "one last step title": "Последний шаг", + "complete profile subtitle": "Заполните профиль для начала", + "first name label": "Имя", + "first name required": "Имя обязательно", + "last name label": "Фамилия", + "Verify OTP": "Проверка кода", + "Verification Code": "Код подтверждения", + "We have sent a verification code to your mobile number:": + "Мы отправили код подтверждения на ваш номер:", + "Verify": "Подтвердить", + "Resend Code": "Отправить снова", + "You can resend in": "Отправить снова через", + "seconds": "сек", + "Error": "Ошибка", + "Please enter the complete 6-digit code.": + "Введите полный 6-значный код.", + "last name required": "Фамилия обязательна", + "email optional label": "Email (необязательно)", + "complete registration button": "Завершить регистрацию", + "User with this phone number or email already exists.": + "Пользователь с таким номером или email уже существует.", + "otp sent success": "Код отправлен в WhatsApp.", + "failed to send otp": "Не удалось отправить код.", + "server error try again": "Ошибка сервера, попробуйте снова.", + "an error occurred": "Произошла ошибка: @error", + "otp verification failed": "Неверный код.", + "registration failed": "Ошибка регистрации.", + "welcome user": "Добро пожаловать, @firstName!", + "Cancel Trip from driver": "Отмена поездки водителем", + "We will look for a new driver.\nPlease wait.": + "Ищем нового водителя.\nПодождите.", + "The driver canceled your ride.": "Водитель отменил поездку.", + "Driver Finish Trip": "Водитель завершил поездку", + "you will pay to Driver": "К оплате водителю", + "Don't forget your personal belongings.": "Не забудьте личные вещи.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "Проверьте вещи и баланс кошелька перед выходом. Спасибо за выбор Intaleq.", + "Finish Monitor": "Завершить", + "Trip finished": "Поездка завершена", + "Call Income from Driver": "Звонок от водителя", "Driver Cancelled Your Trip": "Водитель отменил вашу поездку", "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": - "вы заплатите водителю, вы заплатите стоимость времени водителя, посмотрите на ваш кошелек Intaleq", - "Order Applied": "Заказ применен", - //firebase above - -// - "Where to": "Куда", + "Оплата за время водителя, см. кошелек Intaleq", + "Order Applied": "Заказ принят", + "Share App": "Поделиться приложением", + "Wallet": "Кошелек", + "Balance": "Баланс", + "Don’t forget your personal belongings.": "Не забудьте личные вещи.", + "Profile": "Профиль", + "Contact Support": "Поддержка", + "Session expired. Please log in again.": + "Сессия истекла. Войдите снова.", + "Security Warning": "⚠️ Угроза безопасности", + "Potential security risks detected. The application may not function correctly.": + "Обнаружены риски безопасности. Приложение может работать некорректно.", + "please order now": "Заказать сейчас", + "Where to": "Куда едем?", "Where are you going?": "Куда вы направляетесь?", "Quick Actions": "Быстрые действия", - "My Wallet": "Мой кошелек", + "My Balance": "Мой баланс", "Order History": "История заказов", - "Contact Us": "Свяжитесь с нами", + "Contact Us": "Связаться с нами", "Driver": "Водитель", "Complaint": "Жалоба", - "Promos": "Промо", + "Promos": "Промоакции", "Recent Places": "Недавние места", - "From": "От", - "WhatsApp Location Extractor": "Извлечение местоположения WhatsApp", - "Location Link": "Ссылка на местоположение", - "Paste location link here": "Вставьте ссылку на местоположение здесь", - "Go to this location": "Перейти к этому местоположению", - "Paste WhatsApp location link": - "Вставьте ссылку на местоположение WhatsApp", - "Select Order Type": "Выберите тип заказа", - "Choose who this order is for": "Выберите, для кого этот заказ", - "I want to order for myself": "Я хочу заказать для себя", - "I want to order for someone else": - "Я хочу заказать для кого-то другого", - // "Cancel": "Отменить", - "Order for someone else": "Заказ для кого-то другого", - "Order for myself": "Заказ для себя", - "Are you want to go this site": "Вы хотите перейти на этот сайт?", - // "Yes": "Да", + "From": "Откуда", + "WhatsApp Location Extractor": "Локация из WhatsApp", + "Location Link": "Ссылка на локацию", + "Paste location link here": "Вставьте ссылку здесь", + "Go to this location": "Перейти к локации", + "Paste WhatsApp location link": "Вставьте ссылку WhatsApp", + "Select Order Type": "Тип заказа", + "Choose who this order is for": "Для кого этот заказ", + "I want to order for myself": "Заказать для себя", + "I want to order for someone else": "Заказать другому человеку", + "Order for someone else": "Заказ другому", + "Order for myself": "Заказ себе", + "Are you want to go this site": "Вы хотите поехать сюда?", "No": "Нет", + "Pay by Sham Cash": "Оплата Sham Cash", + "Intaleq Wallet": "Кошелек Intaleq", + "Have a promo code?": "Есть промокод?", + "Your Wallet balance is ": "Ваш баланс: ", + "Cash": "Наличные", + "Phone Number": "Номер телефона", + "Search country": "Поиск страны", + "Payment Successful!": "Оплата успешна!", + "Your payment was successful.": "Платеж прошел успешно.", + "Pay directly to the captain": "Оплата водителю напрямую", + "Top up Wallet to continue": "Пополните кошелек для продолжения", + "Or pay with Cash instead": "Или оплатите наличными", + "Confirm & Find a Ride": "Подтвердить и найти", + "Balance:": "Баланс:", + "Alerts": "Уведомления", + "Welcome Back!": "С возвращением!", + "Current Balance": "Текущий баланс", + "Set Wallet Phone Number": "Номер для кошелька", + "Link a phone number for transfers": "Привязать номер для переводов", + "Payment History": "История платежей", + "View your past transactions": "Просмотр транзакций", + "Top up Wallet": "Пополнить кошелек", + "Add funds using our secure methods": "Пополнить безопасным способом", + "Driver is waiting": "Водитель ожидает", + "Type your message...": "Введите сообщение...", + "Driver Accepted Request": "Водитель принял заказ", + "Message": "Сообщение", + "Call": "Позвонить", + "Set Phone Number": "Установить номер", + "Select This Ride": "Выбрать эту поездку", + "Call Driver": "Позвонить водителю", + "Increase Fare": "Повысить цену", + "Stop": "Стоп", + "Record": "Запись", + "Share": "Поделиться", + "WhatsApp": "WhatsApp", + "SOS": "SOS", + "No drivers accepted your request yet": "Никто еще не принял заказ", + "Increasing the fare might attract more drivers. Would you like to increase the price?": + "Повышение цены привлечет водителей. Повысить?", + "Please make sure not to leave any personal belongings in the car.": + "Убедитесь, что не оставили вещи в машине.", + "Cancel Ride": "Отменить поездку", + "Route Not Found": "Маршрут не найден", + "We couldn't find a valid route to this destination. Please try selecting a different point.": + "Не удалось построить маршрут. Выберите другую точку.", + "alert": "Внимание", + "You can call or record audio during this trip.": + "Вы можете звонить или вести запись во время поездки.", + "Warning: Speeding detected!": "Внимание: Превышение скорости!", + "Fixed Price": "Фикс. цена", + "Report": "Пожаловаться", + "Comfort": "Комфорт", + "Intaleq Balance": "Баланс Intaleq", + "Search for a starting point": "Поиск точки отправления", + "Top up Balance to continue": "Пополните баланс", + "Electric": "Электро", + "Lady": "Женский", + "Van": "Минивэн", + "Rayeh Gai": "Туда-обратно", + "Join Intaleq as a driver using my referral code!": + "Стань водителем Intaleq с моим кодом!", + "Use code:": "Код:", + "Download the Intaleq Driver app now and earn rewards!": + "Скачай Intaleq Driver и получай бонусы!", + "Get a discount on your first Intaleq ride!": + "Скидка на первую поездку в Intaleq!", + "Use my referral code:": "Используй мой код:", + "Download the Intaleq app now and enjoy your ride!": + "Скачай Intaleq и наслаждайся поездкой!", + "Contacts Loaded": "Контакты загружены", + "Showing": "Показано", + "of": "из", + "Pay by MTN Wallet": "Кошелек MTN", + "Pay by Syriatel Wallet": "Кошелек Syriatel", + "Customer not found": "Клиент не найден", + "Wallet is blocked": "Кошелек заблокирован", + "Customer phone is not active": "Телефон клиента не активен", + "Balance not enough": "Недостаточно средств", + "Balance limit exceeded": "Лимит баланса превышен", + "Incorrect sms code": "⚠️ Неверный СМС код.", + "contacts. Others were hidden because they don't have a phone number.": + "контактов. Остальные скрыты (нет номера).", + "No contacts found": "Контакты не найдены", + "No contacts with phone numbers were found on your device.": + "На устройстве нет контактов с номерами.", + "Permission denied": "Доступ запрещен", + "Contact permission is required to pick contacts": + "Нужен доступ к контактам.", + "An error occurred while picking contacts:": + "Ошибка при выборе контактов:", + "Please enter a correct phone": "Введите корректный номер", + "Success": "Успешно", + "Invite sent successfully": "Приглашение отправлено", + "Hello! I'm inviting you to try Intaleq.": + "Привет! Приглашаю попробовать Intaleq.", + "Use my invitation code to get a special gift on your first ride!": + "Используй мой код для подарка на первую поездку!", + "Your personal invitation code is:": "Твой код приглашения:", + "Be sure to use it quickly! This code expires at": + "Используй быстрее! Код истекает", + "Download the app now:": "Скачай приложение:", + "See you on the road!": "До встречи в пути!", + "This phone number has already been invited.": + "Этот номер уже приглашен.", + "An unexpected error occurred. Please try again.": + "Неожиданная ошибка. Попробуйте снова.", + "You deserve the gift": "Вы заслужили подарок", + "Claim your 20 LE gift for inviting": "Заберите 20 ₽ за приглашение", + "You have got a gift for invitation": + "Вы получили подарок за приглашение", + "You have earned 20": "Вы заработали 20", + "LE": "₽", + "Vibration feedback for all buttons": "Вибрация кнопок", + "Share with friends and earn rewards": + "Делись с друзьями и получай бонусы", + "Gift Already Claimed": "Подарок уже получен", + "You have already received your gift for inviting": + "Вы уже получили подарок за это приглашение", + "Keep it up!": "Так держать!", + "has completed": "завершил", + "trips": "поездок", + "Personal Information": "Личная информация", + "Name": "Имя", + "Not set": "Не задано", + "Gender": "Пол", + "Education": "Образование", + "Work & Contact": "Работа и Контакты", + "Employment Type": "Тип занятости", + "Marital Status": "Семейное положение", + "SOS Phone": "SOS номер", + "Sign Out": "Выйти", + "Delete My Account": "Удалить аккаунт", + "Update Gender": "Обновить пол", + "Update": "Обновить", + "Update Education": "Обновить образование", + "Are you sure? This action cannot be undone.": + "Вы уверены? Это действие необратимо.", + "Confirm your Email": "Подтвердите Email", + "Type your Email": "Введите Email", + "Delete Permanently": "Удалить навсегда", + "Male": "Мужской", + "Female": "Женский", + "Other": "Другой", + "High School Diploma": "Среднее образование", + "Associate Degree": "Среднее специальное", + "Bachelor's Degree": "Бакалавр", + "Master's Degree": "Магистр", + "Doctoral Degree": "Доктор наук", + "Select your preferred language for the app interface.": + "Выберите язык интерфейса.", + "Language Options": "Языки", + "You can claim your gift once they complete 2 trips.": + "Вы получите подарок, когда они совершат 2 поездки.", + "Closest & Cheapest": "Ближайший и Дешевый", + "Comfort choice": "Комфорт", + "Travel in a modern, silent electric car. A premium, eco-friendly choice for a smooth ride.": + "Современный, тихий электромобиль. Премиальный и экологичный выбор.", + "Spacious van service ideal for families and groups. Comfortable, safe, and cost-effective travel together.": + "Просторный минивэн для семей и групп. Комфортно, безопасно и выгодно.", + "Quiet & Eco-Friendly": "Тихий и Экологичный", + "Lady Captain for girls": "Женский тариф для девушек", + "Van for familly": "Минивэн для семьи", "Are you sure to delete this location?": - "Вы уверены, что хотите удалить это местоположение?", + "Удалить это местоположение?", + "Change Work location?": "Изменить адрес работы?", + "Change Home location?": "Изменить адрес дома?", + "Submit a Complaint": "Подать жалобу", + "Submit Complaint": "Отправить жалобу", + "No trip history found": "История пуста", + "Your past trips will appear here.": + "Здесь будут ваши прошлые поездки.", + "1. Describe Your Issue": "1. Опишите проблему", + "Enter your complaint here...": "Введите текст жалобы...", + "2. Attach Recorded Audio": "2. Прикрепить аудио", + "No audio files found.": "Аудиофайлы не найдены.", + "Confirm Attachment": "Подтвердить вложение", + "Attach this audio file?": "Прикрепить этот файл?", + "Uploaded": "Загружено", + "3. Review Details & Response": "3. Просмотр деталей", + "Date": "Дата", + "Today's Promos": "Промоакции сегодня", + "No promos available right now.": "Нет доступных акций.", + "Check back later for new offers!": "Заходите позже!", + "Valid Until:": "Действует до:", + "CODE": "КОД", + "Login": "Вход", + "Sign in for a seamless experience": "Войдите для удобства", + "Sign In with Google": "Вход через Google", + "Sign in with Apple": "Вход через Apple", + "User not found": "Пользователь не найден", + "Need assistance? Contact us": "Нужна помощь? Свяжитесь с нами", + "Email": "Email", + "Your email address": "Ваш адрес email", + "Enter a valid email": "Введите корректный email", + "Password": "Пароль", + "Your password": "Ваш пароль", + "Enter your password": "Введите пароль", + "Submit": "Отправить", + "Terms of Use & Privacy Notice": "Условия и Политика", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the ": + "Нажимая \"Согласен\", я подтверждаю, что прочитал и принимаю ", + "Terms of Use": "Условия использования", + " and acknowledge the ": " и принимаю ", + "Privacy Notice": "Политику конфиденциальности", + " . I am at least 18 years old.": " . Мне есть 18 лет.", + "I Agree": "Согласен", + "Continue": "Продолжить", + "Enable Location": "Включить геолокацию", + "To give you the best experience, we need to know where you are. Your location is used to find nearby captains and for pickups.": + "Нам нужно знать ваше местоположение, чтобы найти ближайших водителей.", + "Allow Location Access": "Разрешить доступ", + "Welcome to Intaleq!": "Добро пожаловать в Intaleq!", + "Before we start, please review our terms.": + "Пожалуйста, ознакомьтесь с условиями.", + "Your journey starts here": "Ваша поездка начинается здесь", + "Cancel Search": "Отменить поиск", + "Set pickup location": "Указать место посадки", + "Move the map to adjust the pin": + "Двигайте карту, чтобы установить метку", + "Searching for the nearest captain...": + "Поиск ближайшего водителя...", + "No one accepted? Try increasing the fare.": + "Никто не принял? Попробуйте повысить цену.", + "Increase Your Trip Fee (Optional)": + "Повысить стоимость (Опционально)", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "Водители не найдены. Попробуйте повысить цену, чтобы привлечь их.", + "No, thanks": "Нет, спасибо", + "Increase Fee": "Повысить цену", + "Copy": "Копировать", + "Promo Copied!": "Промокод скопирован!", + "Code": "Код", + "copied to clipboard": "скопировано в буфер", + "Price": "Цена", + "Intaleq's Response": "Ответ Intaleq", + "Awaiting response...": "Ожидание ответа...", + "Audio file not attached": "Аудио не прикреплено", + "The audio file is not uploaded yet.\\nDo you want to submit without it?": + "Аудио еще не загружено.\\nОтправить без него?", "deleted": "удалено", "To Work": "На работу", - "Work Saved": "Место работы сохранено", + "Work Saved": "Работа сохранена", "To Home": "Домой", - "Home Saved": "Домашнее местоположение сохранено", - "Destination selected": "Место назначения выбрано", - "Now select start pick": "Теперь выберите начальную точку", + "Home Saved": "Дом сохранен", + "Destination selected": "Назначение выбрано", + "Now select start pick": "Выберите точку посадки", "OK": "ОК", - "Confirm Pick-up Location": "Подтвердите место встречи", - "Set Location on Map": "Установить местоположение на карте", + "Confirm Pick-up Location": "Подтвердить посадку", + "Set Location on Map": "Указать на карте", + "Leave a detailed comment (Optional)": + "Оставить комментарий (Опционально)", + "Share your experience to help us improve...": "Поделитесь опытом...", + "Your valuable feedback helps us improve our service quality.": + "Ваш отзыв помогает нам стать лучше.", + "witout zero": "без нуля", + "Top up Balance": "Пополнить баланс", + "An error occurred": "Произошла ошибка", + "Send WhatsApp Message": "Написать в WhatsApp", + "How was your trip with": "Как прошла поездка с", + "Drawing route on map...": "Построение маршрута...", + "Please wait while we prepare your trip.": + "Пожалуйста, подождите, готовим поездку.", + "Submit Rating": "Отправить оценку", + "Call Support": "Позвонить в поддержку", + "You can contact us during working hours from 10:00 - 16:00.": + "Мы работаем с 10:00 до 16:00.", + "Intaleq is the safest and most reliable ride-sharing app designed especially for passengers in Syria. We provide a comfortable, respectful, and affordable riding experience with features that prioritize your safety and convenience. Our trusted captains are verified, insured, and supported by regular car maintenance carried out by top engineers. We also offer on-road support services to make sure every trip is smooth and worry-free. With Intaleq, you enjoy quality, safety, and peace of mind—every time you ride.": + "Intaleq — самое безопасное приложение для поездок в России. Мы предлагаем комфорт, уважение и доступность. Наши водители проверены и застрахованы.", + "Work time is from 10:00 AM to 16:00 PM.\nYou can send a WhatsApp message or email.": + "Время работы: 10:00 - 16:00.\nПишите в WhatsApp или на email.", + "Sorry": "Извините", + "Customer MSISDN doesn’t have customer wallet": + "У номера клиента нет кошелька", + "Please enter the number without the leading 0": + "Введите номер без начального 0", + "Please enter your phone number": "Введите номер телефона", + "Phone number seems too short": "Номер слишком короткий", + "No cars are available at the moment. Please try again later.": + "Нет свободных машин. Попробуйте позже.", "Nearest Car: ~": "Ближайшая машина: ~", "Nearest Car": "Ближайшая машина", - "No cars nearby": "Поблизости нет машин", + "No cars nearby": "Нет машин поблизости", "Favorite Places": "Избранные места", "No favorite places yet!": "Пока нет избранных мест!", - "from your favorites": "из ваших избранных", + "from your favorites": "из избранного", "Back": "Назад", - "Sign in for a seamless experience": - "Войдите для бесперебойного опыта", - "Sign In with Google": "Войти через Google", - "Sign in with Apple": "Войти через Apple", - "Need assistance? Contact us": "Нужна помощь? Свяжитесь с нами", - "User not found": "Пользователь не найден", - "Email": "Электронная почта", - "Your email address": "Ваш адрес электронной почты", - "Enter a valid email": - "Введите действительный адрес электронной почты", - "Password": "Пароль", - // "Your password": "Ваш пароль", - "Enter your password": "Введите ваш пароль", - "Submit": "Отправить", - "Terms of Use & Privacy Notice": - "Условия использования и уведомление о конфиденциальности", - "Terms of Use": "Условия использования", - "Privacy Notice": "Уведомление о конфиденциальности", + "Enter your code below to apply the discount.": + "Введите код ниже для скидки.", "By selecting \"I Agree\" below, I confirm that I have read and agree to the": - "Выбирая \"Я согласен\" ниже, я подтверждаю, что прочитал и согласен с", - "and acknowledge the": "и признаю", - ". I am at least 18 years old.": ". Мне не менее 18 лет.", - "Continue": "Продолжить", - "Enable Location Access": "Включить доступ к местоположению", + "Нажимая \"Согласен\", я подтверждаю прочтение и согласие с", + "and acknowledge the": "и принимаю", + "Enable Location Access": "Разрешить геолокацию", "We need your location to find nearby drivers for pickups and drop-offs.": - "Нам нужно ваше местоположение, чтобы найти ближайших водителей для посадки и высадки.", - "Allow Location Access": "Разрешить доступ к местоположению", + "Нам нужна локация для поиска водителей.", "You should restart app to change language": - "Вы должны перезапустить приложение, чтобы изменить язык", - "Home Page": "Главная страница", - "To change Language the App": "Чтобы изменить язык приложения", - "Learn more about our app and mission": - "Узнайте больше о нашем приложении и миссии", + "Перезапустите приложение для смены языка", + "Home Page": "Главная", + "To change Language the App": "Для смены языка приложения", + "Learn more about our app and mission": "Узнайте больше о нас", "Promos For Today": "Промо на сегодня", - "Choose your ride": "Выберите свою поездку", - "Your Journey Begins Here": "Ваше путешествие начинается здесь", - "Bonus gift": "Бонусный подарок", + "Choose your ride": "Выберите поездку", + "Your Journey Begins Here": "Ваше путешествие начинается", + "Bonus gift": "Бонус", "Pay": "Оплатить", "Get": "Получить", "Send to Driver Again": "Отправить водителю снова", "Driver Name:": "Имя водителя:", - "No trip data available": "Нет данных о поездках", - "Car Plate:": "Номер машины:", + "No trip data available": "Нет данных о поездке", + "Car Plate:": "Госномер:", "remaining": "осталось", "Order Cancelled": "Заказ отменен", "You canceled VIP trip": "Вы отменили VIP поездку", "Passenger cancelled order": "Пассажир отменил заказ", - "Your trip is scheduled": "Ваша поездка запланирована", - "Don't forget your ride!": "Не забудьте о своей поездке!", - "Trip updated successfully": "Поездка успешно обновлена", - "Car Make:": "Марка машины:", - "Car Model:": "Модель машины:", - "Car Color:": "Цвет машины:", + "Your trip is scheduled": "Поездка запланирована", + "Don't forget your ride!": "Не забудьте о поездке!", + "Trip updated successfully": "Поездка обновлена", + "Car Make:": "Марка:", + "Car Model:": "Модель:", + "Car Color:": "Цвет:", "Driver Phone:": "Телефон водителя:", - "Pre-booking": "Предварительное бронирование", + "Pre-booking": "Предзаказ", "Waiting VIP": "Ожидание VIP", "Driver List": "Список водителей", "Confirm Trip": "Подтвердить поездку", - "Select date and time of trip": "Выберите дату и время поездки", + "Select date and time of trip": "Выберите дату и время", "Date and Time Picker": "Выбор даты и времени", "Trip Status:": "Статус поездки:", - "pending": "в ожидании", - "accepted": "принято", - "rejected": "отклонено", + "pending": "ожидание", + "accepted": "принят", + "rejected": "отклонен", "Apply": "Применить", - "Enter your promo code": "Введите ваш промо-код", - "Apply Promo Code": "Применить промо-код", + "Enter your promo code": "Введите промокод", + "Apply Promo Code": "Применить код", "Scheduled Time:": "Запланированное время:", - "No drivers available": "Нет доступных водителей", + "No drivers available": "Нет водителей", "No drivers available at the moment. Please try again later.": - "В данный момент нет доступных водителей. Пожалуйста, попробуйте позже.", + "Нет водителей. Попробуйте позже.", "you have a negative balance of": "у вас отрицательный баланс", - "Please try again in a few moments": - "Пожалуйста, попробуйте снова через несколько мгновений", + "Please try again in a few moments": "Попробуйте через пару минут", "Unknown Driver": "Неизвестный водитель", "in your": "в вашем", - "The driver accepted your order for": "Водитель принял ваш заказ на", - "wallet due to a previous trip.": "кошелек из-за предыдущей поездки.", + "The driver accepted your order for": "Водитель принял заказ за", + "wallet due to a previous trip.": + "кошелек (долг за прошлую поездку).", "rides": "поездки", - "Add Work": "Добавить работу", - "The reason is": "Причина в", + "Add Work": "Добавить Работу", + "The reason is": "Причина:", "User does not have a wallet #1652": "У пользователя нет кошелька #1652", "Price of trip": "Стоимость поездки", - "From:": "От:", + "From:": "Откуда:", "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "Для поездок Intaleq и Delivery цена рассчитывается динамически. Для поездок Comfort цена основана на времени и расстоянии.", - "Phone Wallet Saved Successfully": - "Телефонный кошелек успешно сохранен", - "Add wallet phone you use": - "Добавьте телефонный кошелек, который вы используете", + "Для Intaleq и доставки цена динамическая. Для Комфорта - по времени и расстоянию.", + "Phone Wallet Saved Successfully": "Телефон кошелька сохранен", + "Add wallet phone you use": "Добавьте телефон кошелька", "Update Available": "Доступно обновление", "Phone number must be exactly 11 digits long": - "Номер телефона должен состоять ровно из 11 цифр", - "Insert Wallet phone number": "Введите номер телефона кошелька", + "Номер должен содержать 11 цифр", + "Insert Wallet phone number": "Введите номер кошелька", "Phone number isn't an Egyptian phone number": - "Номер телефона не является египетским номером", + "Номер не является российским", "A new version of the app is available. Please update to the latest version.": - "Доступна новая версия приложения. Пожалуйста, обновитесь до последней версии.", + "Доступна новая версия. Пожалуйста, обновите.", "We use location to get accurate and nearest passengers for you": - "Мы используем местоположение, чтобы найти точных и ближайших пассажиров для вас", + "Мы используем локацию для поиска ближайших пассажиров", "This ride is already applied by another driver.": - "Эта поездка уже применена другим водителем.", + "Этот заказ уже взял другой водитель.", "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": - "Мы используем ваше точное местоположение, чтобы найти ближайшего доступного водителя и предоставить точную информацию о посадке и высадке. Вы можете управлять этим в настройках.", + "Мы используем точную локацию для поиска водителей и точных маршрутов. Настройте это в Параметрах.", "Where are you, sir?": "Где вы, сэр?", "I've been trying to reach you but your phone is off.": - "Я пытался связаться с вами, но ваш телефон выключен.", + "Пытался дозвониться, телефон выключен.", "Please don't be late": "Пожалуйста, не опаздывайте", "Please don't be late, I'm waiting for you at the specified location.": - "Пожалуйста, не опаздывайте, я жду вас в указанном месте.", + "Не опаздывайте, я жду вас в указанном месте.", "My location is correct. You can search for me using the navigation app": - "Мое местоположение верно. Вы можете найти меня с помощью навигационного приложения", - "Hello, I'm at the agreed-upon location": - "Привет, я на согласованном месте", - "How much longer will you be?": "Сколько еще вам потребуется?", - "Phone number is verified before": "Номер телефона уже проверен", + "Локация верна. Найдите меня по навигатору", + "Hello, I'm at the agreed-upon location": "Привет, я на месте", + "How much longer will you be?": "Сколько еще ждать?", + "Phone number is verified before": "Номер уже подтвержден", "Change Ride": "Изменить поездку", "You can change the destination by long-pressing any point on the map": - "Вы можете изменить место назначения, долго нажимая на любую точку на карте", - "Pick from map destination": "Выбрать место назначения на карте", - "Pick or Tap to confirm": "Выберите или нажмите, чтобы подтвердить", - "Accepted your order": "Ваш заказ принят", + "Поменяйте место назначения долгим нажатием на карте", + "Pick from map destination": "Выбрать назначение на карте", + "Pick or Tap to confirm": "Выберите или нажмите для подтверждения", + "Accepted your order": "принял ваш заказ", "Order Accepted": "Заказ принят", - "with type": "с типом", - "accepted your order at price": "принял ваш заказ по цене", + "with type": "тип", + "accepted your order at price": "принял заказ по цене", "you canceled order": "вы отменили заказ", - "If you want order to another person": - "Если вы хотите заказать для другого человека", - // "Ok I will go now.": "Хорошо, я пойду сейчас.", - // "Hi, I will go now": "Привет, я пойду сейчас", - "upgrade price": "повышение цены", - "Please enter a correct phone": - "Пожалуйста, введите правильный телефон", + "If you want order to another person": "Заказ для другого человека", + "upgrade price": "повысить цену", "airport": "аэропорт", "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": - "Лучший выбор для комфортной машины с гибким маршрутом и остановками. Этот аэропорт предлагает визовый въезд по этой цене.", + "Лучший выбор для комфортной поездки с гибким маршрутом.", "You can upgrade price to may driver accept your order": - "Вы можете повысить цену, чтобы водитель принял ваш заказ", + "Повысьте цену, чтобы водитель принял заказ", "Change Route": "Изменить маршрут", - "No Captain Accepted Your Order": - "Ни один капитан не принял ваш заказ", + "No Captain Accepted Your Order": "Водитель не найден", "We are looking for a captain but the price may increase to let a captain accept": - "Мы ищем капитана, но цена может увеличиться, чтобы капитан принял", - "No, I want to cancel this trip": "Нет, я хочу отменить эту поездку", - // "Trip Cancelled. The cost of the trip will be added to your wallet.": "Поездка отменена. Стоимость поездки будет добавлена на ваш кошелек.", + "Ищем водителя, цена может вырасти", + "No, I want to cancel this trip": "Нет, хочу отменить", "Attention": "Внимание", "Trip Cancelled. The cost of the trip will be deducted from your wallet.": - "Поездка отменена. Стоимость поездки будет вычтена из вашего кошелька.", + "Отмена. Стоимость списана с кошелька.", "You will be charged for the cost of the driver coming to your location.": - "С вас будет взиматься плата за стоимость прибытия водителя к вашему местоположению.", - "reject your order.": "отклонить ваш заказ.", - "Order Under Review": "Заказ на рассмотрении", + "С вас будет списана стоимость подачи.", + "reject your order.": "отклонил заказ.", + "Order Under Review": "Заказ на проверке", "is reviewing your order. They may need more information or a higher price.": - "рассматривает ваш заказ. Им может потребоваться дополнительная информация или более высокая цена.", - // "The driver canceled your ride.": "Водитель отменил вашу поездку.", - "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": - "Мы еще не нашли водителей. Подумайте о повышении стоимости поездки, чтобы сделать ваше предложение более привлекательным для водителей.", - "Increase Your Trip Fee (Optional)": - "Увеличьте стоимость поездки (по желанию)", + "проверяет заказ. Может потребоваться выше цена.", "Vibration": "Вибрация", "Resend code": "Отправить код снова", - // "token change": "Смена токена", - "change device": "Сменить устройство", - "Device Change Detected": "Обнаружена смена устройства", + "change device": "сменить устройство", + "Device Change Detected": "Смена устройства обнаружена", "You can only use one device at a time. This device will now be set as your active device.": - "Вы можете использовать только одно устройство одновременно. Это устройство теперь будет установлено как ваше активное устройство.", + "Можно использовать только одно устройство. Это устройство теперь активно.", "Click here point": "Нажмите здесь", - "Are you want to change": "Вы хотите изменить", - "by": "на", - "Enter your complaint here": "Введите вашу жалобу здесь", - "Please enter your complaint.": "Пожалуйста, введите вашу жалобу.", - "Complaint data saved successfully": - "Данные жалобы успешно сохранены", + "Are you want to change": "Хотите изменить", + "by": "кем", + "Enter your complaint here": "Введите жалобу здесь", + "Please enter your complaint.": "Пожалуйста, введите жалобу.", + "Complaint data saved successfully": "Жалоба сохранена", "Trip Monitor": "Мониторинг поездки", - "Insert SOS Phone": "Введите телефон SOS", - "Add SOS Phone": "Добавить телефон SOS", - // "Trip Monitoring": "Мониторинг поездки", - "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": - "Уважаемый ,\n\n🚀 Я только что начал увлекательное путешествие и хотел бы поделиться с вами деталями моей поездки и моим текущим местоположением в реальном времени! Пожалуйста, скачайте приложение Intaleq. Оно позволит вам просматривать детали моей поездки и мое последнее местоположение.\n\n👈 Ссылка для скачивания:\nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nЯ с нетерпением жду возможности держать вас рядом во время моего приключения!\n\nIntaleq ,", + "Insert SOS Phone": "Введите SOS номер", + "Add SOS Phone": "Добавить SOS номер", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "Привет,\n\n🚀 Я начал поездку и хочу поделиться локацией! Скачай Intaleq, чтобы следить за мной.\n\n👉 Скачать: \nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nДо связи!\n\nIntaleq ,", "Send Intaleq app to him": "Отправить ему приложение Intaleq", - "No passenger found for the given phone number": - "Для указанного номера телефона пассажир не найден", - "No user found for the given phone number": - "Для указанного номера телефона пользователь не найден", - "This price is": "Эта цена", + "No passenger found for the given phone number": "Пассажир не найден", + "No user found for the given phone number": "Пользователь не найден", + "This price is": "Цена:", "Work": "Работа", - "Add Home": "Добавить дом", + "Add Home": "Добавить Дом", "Notifications": "Уведомления", - "💳 Pay with Credit Card": "💳 Оплатить кредитной картой", - "⚠️ You need to choose an amount!": "⚠️ Вам нужно выбрать сумму!", - "💰 Pay with Wallet": "💰 Оплатить с кошелька", + "💳 Pay with Credit Card": "💳 Оплата картой", + "⚠️ You need to choose an amount!": "⚠️ Выберите сумму!", + "💰 Pay with Wallet": "💰 Оплата кошельком", "You must restart the app to change the language.": - "Вы должны перезапустить приложение, чтобы изменить язык.", + "Перезапустите приложение для смены языка.", "joined": "присоединился", - "Driver joined the channel": "Водитель присоединился к каналу", - "Driver left the channel": "Водитель покинул канал", - "Call Page": "Страница звонка", - // "Call End": "Звонок завершен", - "Call Left": "Оставшийся звонок", - r"$ Next as Cash $!": "Следующий как наличные!", - "To use Wallet charge it": - "Чтобы использовать кошелек, пополните его", + "Driver joined the channel": "Водитель в чате", + "Driver left the channel": "Водитель покинул чат", + "Call Page": "Звонок", + "Call Left": "Осталось звонков", + " Next as Cash !": " Далее наличными!", + "To use Wallet charge it": "Пополните кошелек", "We are searching for the nearest driver to you": - "Мы ищем ближайшего к вам водителя", - "Best choice for cities": "Лучший выбор для городов", + "Ищем ближайшего водителя", + "Best choice for cities": "Лучший выбор для города", "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": - "Rayeh Gai: Услуга круглосуточного путешествия между городами, удобно и надежно.", - "Rayeh Gai": "Rayeh Gai", - "This trip is for women only": "Эта поездка только для женщин", - "Total budgets on month": "Общий бюджет за месяц", - "You have call from driver": "У вас звонок от водителя", - "Comfort": "Комфорт", - "Intaleq": "Скорость", + "Туда-обратно: Удобные поездки между городами.", + "This trip is for women only": "Только для женщин", + "Total budgets on month": "Бюджет за месяц", + "You have call from driver": "Звонок от водителя", + "Intaleq": "Intaleq", + "passenger agreement": "соглашение пассажира", + "To become a passenger, you must review and agree to the ": + "Чтобы стать пассажиром, примите ", + "agreement subtitle": "Для продолжения примите Условия и Политику.", + "terms of use": "условия использования", + " and acknowledge our Privacy Policy.": + " и Политику конфиденциальности.", + "and acknowledge our": "и принять", + "privacy policy": "политику конфиденциальности.", + "i agree": "согласен", "Driver already has 2 trips within the specified period.": - "У водителя уже есть 2 поездки в указанный период.", - "The invitation was sent successfully": - "Приглашение успешно отправлено", - "Lady": "Леди", - "You should select your country": "Вы должны выбрать свою страну", - "Scooter": "Скутер", + "У водителя уже 2 поездки в этот период.", + "The invitation was sent successfully": "Приглашение отправлено", + "You should select your country": "Выберите страну", + "Scooter": "Самокат", "A trip with a prior reservation, allowing you to choose the best captains and cars.": - "Поездка с предварительным бронированием, позволяющая выбрать лучших капитанов и машины.", - "Mishwar Vip": "Mishwar Vip", - "The driver waiting you in picked location .": - "Водитель ждет вас в выбранном месте.", + "Поездка по предзаказу, выбор лучших водителей и авто.", + "Mishwar Vip": "Mishwar VIP", + "The driver waiting you in picked location .": "Водитель ждет вас.", "About Us": "О нас", "You can change the vibration feedback for all buttons": - "Вы можете изменить вибрацию для всех кнопок", - "Most Secure Methods": "Самые безопасные методы", - "In-App VOIP Calls": "Внутриприложенные VOIP звонки", - "Recorded Trips for Safety": "Записанные поездки для безопасности", + "Настройка вибрации кнопок", + "Most Secure Methods": "Безопасные методы", + "In-App VOIP Calls": "Звонки в приложении", + "Recorded Trips for Safety": "Запись поездок для безопасности", "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": - "\nМы также уделяем внимание доступности, предлагая конкурентоспособные цены, чтобы сделать ваши поездки доступными.", + "\nМы предлагаем доступные цены.", "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": - "Intaleq — это приложение для совместных поездок, разработанное с учетом вашей безопасности и доступности. Мы связываем вас с надежными водителями в вашем районе, обеспечивая удобный и беззаботный опыт путешествий.\n\nВот некоторые ключевые особенности, которые выделяют нас:", + "Intaleq — безопасное и доступное такси.", "Sign In by Apple": "Войти через Apple", "Sign In by Google": "Войти через Google", "How do I request a ride?": "Как заказать поездку?", "Step-by-step instructions on how to request a ride through the Intaleq app.": - "Пошаговые инструкции по заказу поездки через приложение Intaleq.", - "What types of vehicles are available?": - "Какие типы транспортных средств доступны?", + "Инструкция по заказу поездки.", + "What types of vehicles are available?": "Какие авто доступны?", "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": - "Intaleq предлагает различные варианты транспортных средств, включая эконом, комфорт и люкс. Выберите вариант, который лучше всего соответствует вашему бюджету и количеству пассажиров.", - "How can I pay for my ride?": "Как я могу оплатить поездку?", + "Эконом, Комфорт и Люкс.", + "How can I pay for my ride?": "Как платить?", "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": - "Intaleq предлагает несколько способов оплаты для вашего удобства. Выберите между оплатой наличными или кредитной/дебетовой картой при подтверждении поездки.", - "Can I cancel my ride?": "Могу ли я отменить поездку?", - "Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.": - "Да, вы можете отменить поездку при определенных условиях (например, до назначения водителя). Подробности см. в политике отмены Intaleq.", - "Driver Registration & Requirements": - "Регистрация и требования для водителей", - "How can I register as a driver?": - "Как я могу зарегистрироваться как водитель?", + "Наличные или карта.", + "Can I cancel my ride?": "Могу я отменить?", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "Да, возможна комиссия за отмену.", + "Driver Registration & Requirements": "Регистрация водителя", + "How can I register as a driver?": "Как стать водителем?", "What are the requirements to become a driver?": - "Каковы требования для того, чтобы стать водителем?", + "Требования к водителю?", "Visit our website or contact Intaleq support for information on driver registration and requirements.": - "Посетите наш сайт или свяжитесь с поддержкой Intaleq для получения информации о регистрации и требованиях для водителей.", + "Посетите сайт или напишите в поддержку.", "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": - "Intaleq предоставляет функцию чата в приложении, чтобы вы могли общаться с водителем или пассажиром во время поездки.", + "Чат в приложении.", "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": - "Intaleq уделяет приоритетное внимание вашей безопасности. Мы предлагаем такие функции, как проверка водителя, отслеживание поездок в приложении и варианты экстренного контакта.", - "Frequently Questions": "Часто задаваемые вопросы", + "Мы ценим безопасность: проверка водителей, трекинг.", + "Frequently Questions": "Частые вопросы", "User does not exist.": "Пользователь не существует.", "We need your phone number to contact you and to help you.": - "Нам нужен ваш номер телефона, чтобы связаться с вами и помочь вам.", - "You will recieve code in sms message": - "Вы получите код в SMS-сообщении", - "Please enter": "Пожалуйста, введите", + "Нам нужен ваш номер для связи.", + "You will recieve code in sms message": "Вы получите код по СМС", + "Please enter": "Введите", "We need your phone number to contact you and to help you receive orders.": - "Нам нужен ваш номер телефона, чтобы связаться с вами и помочь вам получать заказы.", - "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": - "Полное имя в вашем криминальном досье не совпадает с именем в вашем водительском удостоверении. Пожалуйста, проверьте и предоставьте правильные документы.", - "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": - "Национальный номер в вашем водительском удостоверении не совпадает с номером в вашем документе, удостоверяющем личность. Пожалуйста, проверьте и предоставьте правильные документы.", + "Нам нужен номер для заказов.", + "The full name on your criminal record does not match the one on your driver's license. Please verify and provide the correct documents.": + "ФИО в справке не совпадает с правами.", + "The national number on your driver's license does not match the one on your ID document. Please verify and provide the correct documents.": + "Номер паспорта не совпадает.", "Capture an Image of Your Criminal Record": - "Сделайте снимок вашего криминального досье", + "Сфотографируйте справку о несудимости", "IssueDate": "Дата выдачи", - "Capture an Image of Your car license front ": - "Сделайте снимок передней части вашего автомобильного удостоверения", + "Capture an Image of Your car license front": + "Сфотографируйте СТС (лицевая)", "Capture an Image of Your ID Document front": - "Сделайте снимок передней части вашего документа, удостоверяющего личность", - "NationalID": "Национальный идентификатор", + "Сфотографируйте паспорт (лицевая)", + "NationalID": "Серия и номер паспорта", "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": - "Вы можете поделиться приложением Intaleq с друзьями и зарабатывать вознаграждения за поездки, которые они совершают, используя ваш код.", - "FullName": "Полное имя", - "No invitation found yet!": "Приглашений пока не найдено!", - "InspectionResult": "Результат проверки", - "Criminal Record": "Криминальное досье", - "Share App": "Поделиться приложением", + "Делись и зарабатывай.", + "FullName": "ФИО", + "No invitation found yet!": "Приглашения не найдены!", + "InspectionResult": "Результат осмотра", + "Criminal Record": "Справка о несудимости", "The email or phone number is already registered.": - "Электронная почта или номер телефона уже зарегистрированы.", + "Email или телефон уже зарегистрирован.", "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": - "Чтобы стать водителем совместных поездок в приложении Intaleq, вам нужно загрузить ваше водительское удостоверение, документ, удостоверяющий личность, и документ о регистрации автомобиля. Наша система ИИ мгновенно проверит и подтвердит их подлинность всего за 2-3 минуты. Если ваши документы будут одобрены, вы сможете начать работать водителем в приложении Intaleq. Обратите внимание, что предоставление поддельных документов является серьезным правонарушением и может привести к немедленному прекращению и юридическим последствиям.", + "Загрузите права, паспорт и СТС. Проверка займет 2-3 минуты.", "Documents check": "Проверка документов", "Driver's License": "Водительское удостоверение", - "for your first registration!": "для вашей первой регистрации!", - "Get it Now!": "Получите это сейчас!", + "for your first registration!": "за первую регистрацию!", + "Get it Now!": "Получить!", "before": "до", - "Code not approved": "Код не одобрен", - "3000 LE": "3000 LE", + "Code not approved": "Код не принят", + "3000 LE": "3000 ₽", "Do you have an invitation code from another driver?": - "У вас есть пригласительный код от другого водителя?", - "Paste the code here": "Вставьте код здесь", - "No, I don't have a code": "Нет, у меня нет кода", - "Code approved": "Код одобрен", - "Install our app:": "Установите наше приложение:", + "У вас есть код приглашения?", + "Paste the code here": "Вставьте код", + "No, I don't have a code": "Нет кода", + "Code approved": "Код принят", + "Install our app:": "Установите приложение:", "Invite another driver and both get a gift after he completes 100 trips!": - "Пригласите другого водителя, и оба получите подарок после того, как он завершит 100 поездок!", + "Пригласи водителя и получи бонус после 100 поездок!", "Invite": "Пригласить", "Are you sure?": "Вы уверены?", "This will delete all recorded files from your device.": - "Это удалит все записанные файлы с вашего устройства.", - "Select a file": "Выберите файл", - "Select a File": "Выберите файл", + "Это удалит все файлы с устройства.", + "Select a file": "Выбрать файл", + "Select a File": "Выбрать Файл", "Delete": "Удалить", "attach audio of complain": "прикрепить аудио жалобы", - "Phone Number Check": "Проверка номера телефона", + "Phone Number Check": "Проверка номера", "Drivers received orders": "Водители получили заказы", - "No audio files recorded.": "Нет записанных аудиофайлов.", + "No audio files recorded.": "Нет записей.", "This is for delivery or a motorcycle.": - "Это для доставки или мотоцикла.", - // "We will look for a new driver.\nPlease wait.": "Мы найдем нового водителя.\nПожалуйста, подождите.", + "Для доставки или мотоцикла.", "Intaleq Reminder": "Напоминание Intaleq", "It's time to check the Intaleq app!": - "Время проверить приложение Intaleq!", - "you must insert token code": "вы должны вставить токен-код", - "Something went wrong. Please try again.": - "Что-то пошло не так. Пожалуйста, попробуйте снова.", - "Trip Details": "Детали поездки", + "Проверьте приложение Intaleq!", + "you must insert token code": "введите токен", + "Something went wrong. Please try again.": "Что-то пошло не так.", + "Trip Details": "Детали", "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": - "Контекст не предоставляет никаких деталей жалобы, поэтому я не могу предложить решение этой проблемы. Пожалуйста, предоставьте необходимую информацию, и я с радостью помогу вам.", - "Submit Your Complaint": "Отправить вашу жалобу", - "Date": "Дата", - "Price": "Цена", + "Нет деталей жалобы.", + "Submit Your Complaint": "Отправить жалобу", "Status": "Статус", "Choose from contact": "Выбрать из контактов", - "attach correct audio": "прикрепить правильное аудио", - "be sure": "будьте уверены", - "Audio uploaded successfully.": "Аудио успешно загружено.", + "attach correct audio": "прикрепите верное аудио", + "be sure": "убедитесь", + "Audio uploaded successfully.": "Аудио загружено.", "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": - "Идеально для пассажиров, ищущих последние модели автомобилей с возможностью выбора любого маршрута по своему желанию.", + "Идеально для новых авто и свободы маршрута", "Share this code with your friends and earn rewards when they use it!": - "Поделитесь этим кодом с друзьями и зарабатывайте вознаграждения, когда они его используют!", + "Поделись кодом и заработай!", "Enter phone": "Введите телефон", - "You deserve the gift": "Вы заслуживаете подарок", - "complete, you can claim your gift": - "завершено, вы можете получить свой подарок", + "complete, you can claim your gift": "готово, заберите подарок", "When": "Когда", "Enter driver's phone": "Введите телефон водителя", - "Send Invite": "Отправить приглашение", + "Send Invite": "Отправить", "Show Invitations": "Показать приглашения", - "License Type": "Тип лицензии", - "National Number": "Национальный номер", - "Name (Arabic)": "Имя (арабское)", - "Name (English)": "Имя (английское)", + "License Type": "Тип прав", + "National Number": "Номер паспорта", + "Name (Arabic)": "Имя (Местное)", + "Name (English)": "Имя (Англ)", "Address": "Адрес", "Issue Date": "Дата выдачи", - "Expiry Date": "Срок действия", - "License Categories": "Категории лицензии", - "driver_license": "водительское удостоверение", - "Capture an Image of Your Driver License": - "Сделайте снимок вашего водительского удостоверения", - "ID Documents Back": - "Обратная сторона документа, удостоверяющего личность", - "National ID": "Национальный идентификатор", - "Occupation": "Род занятий", - "Gender": "Пол", + "Expiry Date": "Действует до", + "License Categories": "Категории", + "driver_license": "права", + "Capture an Image of Your Driver License": "Сфотографируйте права", + "ID Documents Back": "Оборотная сторона паспорта", + "National ID": "Паспорт", + "Occupation": "Профессия", "Religion": "Религия", - "Marital Status": "Семейное положение", - "Full Name (Marital)": "Полное имя (семейное)", - "Expiration Date": "Срок действия", + "Full Name (Marital)": "ФИО", + "Expiration Date": "Дата окончания", "Capture an Image of Your ID Document Back": - "Сделайте снимок обратной стороны вашего документа, удостоверяющего личность", - "ID Documents Front": - "Лицевая сторона документа, удостоверяющего личность", + "Сфотографируйте оборот паспорта", + "ID Documents Front": "Лицевая сторона паспорта", "First Name": "Имя", - "CardID": "Идентификатор карты", - "Vehicle Details Front": - "Лицевая сторона деталей транспортного средства", - "Plate Number": "Номерной знак", - "Owner Name": "Имя владельца", - "Vehicle Details Back": - "Обратная сторона деталей транспортного средства", + "CardID": "ID карты", + "Vehicle Details Front": "Авто спереди", + "Plate Number": "Госномер", + "Owner Name": "Владелец", + "Vehicle Details Back": "Авто сзади", "Make": "Марка", "Model": "Модель", "Year": "Год", - "Chassis": "Шасси", + "Chassis": "VIN/Шасси", "Color": "Цвет", - "Displacement": "Объем двигателя", + "Displacement": "Объем", "Fuel": "Топливо", - "Tax Expiry Date": "Срок действия налога", - "Inspection Date": "Дата проверки", + "Tax Expiry Date": "Окончание налога", + "Inspection Date": "Техосмотр", "Capture an Image of Your car license back": - "Сделайте снимок обратной стороны вашего автомобильного удостоверения", - "Capture an Image of Your Driver’s License": - "Сделайте снимок вашего водительского удостоверения", + "Сфотографируйте СТС (оборот)", + "Capture an Image of Your Driver's License": "Сфотографируйте права", "Sign in with Google for easier email and name entry": - "Войдите через Google для более простого ввода электронной почты и имени", + "Вход через Google", "You will choose allow all the time to be ready receive orders": - "Вы будете выбирать разрешение все время, чтобы быть готовым получать заказы", - "Welcome to Intaleq!": "Добро пожаловать в Intaleq!", + "Выберите 'Всегда разрешать' для приема заказов", "Get to your destination quickly and easily.": - "Доберитесь до места назначения быстро и легко.", - "Enjoy a safe and comfortable ride.": - "Наслаждайтесь безопасной и комфортной поездкой.", - "Choose Language": "Выберите язык", - "Login": "Войти", - "Pay with Wallet": "Оплатить с кошелька", + "Доберитесь быстро и легко.", + "Enjoy a safe and comfortable ride.": "Наслаждайтесь безопасностью.", + "Choose Language": "Язык", + "Pay with Wallet": "Кошельком", "Invalid MPIN": "Неверный MPIN", - "Invalid OTP": "Неверный OTP", - // "Driver Accepted the Ride for You": "Водитель принял поездку для вас", - "Enter your email address": "Введите ваш адрес электронной почты", - "Please enter Your Email.": - "Пожалуйста, введите вашу электронную почту.", - "Enter your phone number": "Введите ваш номер телефона", - "Please enter your phone number.": - "Пожалуйста, введите ваш номер телефона.", - "Please enter Your Password.": "Пожалуйста, введите ваш пароль.", - "if you dont have account": "если у вас нет аккаунта", - "Register": "Зарегистрироваться", - "Accept Ride's Terms & Review Privacy Notice": - "Примите условия поездки и ознакомьтесь с уведомлением о конфиденциальности", + "Invalid OTP": "Неверный код", + "Enter your email address": "Введите email", + "Please enter Your Email.": "Пожалуйста, введите email.", + "Enter your phone number": "Введите номер", + "Please enter your phone number.": "Пожалуйста, введите номер.", + "Please enter Your Password.": "Введите пароль.", + "if you dont have account": "нет аккаунта?", + "Register": "Регистрация", + "Accept Ride's Terms & Review Privacy Notice": "Принять условия", "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": - "Выбирая \"Я согласен\" ниже, я подтверждаю, что прочитал и согласен с Условиями использования и признаю Уведомление о конфиденциальности. Мне не менее 18 лет.", - "I Agree": "Я согласен", - // "Finish Monitor": "Завершить мониторинг", + "Нажимая 'Согласен', я принимаю условия. Мне 18+.", "First name": "Имя", - "Enter your first name": "Введите ваше имя", - "Please enter your first name.": "Пожалуйста, введите ваше имя.", + "Enter your first name": "Введите имя", + "Please enter your first name.": "Введите имя.", "Last name": "Фамилия", - "Enter your last name": "Введите вашу фамилию", - "Please enter your last name.": "Пожалуйста, введите вашу фамилию.", + "Enter your last name": "Введите фамилию", + "Please enter your last name.": "Введите фамилию.", "City": "Город", - "Please enter your City.": "Пожалуйста, введите ваш город.", - "Male": "Мужчина", - "Female": "Женщина", - "Verify Email": "Подтвердите электронную почту", - "We sent 5 digit to your Email provided": - "Мы отправили 5 цифр на вашу электронную почту", + "Please enter your City.": "Введите город.", + "Verify Email": "Подтвердить Email", + "We sent 5 digit to your Email provided": "Отправили 5 цифр на email", "5 digit": "5 цифр", - "Send Verification Code": "Отправить код подтверждения", - "Your Ride Duration is ": "Продолжительность вашей поездки ", - "You will be thier in": "Вы будете там через", - "You trip distance is": "Расстояние вашей поездки", - "Fee is": "Плата составляет", + "Send Verification Code": "Отправить код", + "Your Ride Duration is ": "Длительность: ", + "You will be thier in": "Прибытие через", + "You trip distance is": "Дистанция:", + "Fee is": "Сбор:", "From : ": "От: ", - "To : ": "До: ", + "To : ": "Куда: ", "Add Promo": "Добавить промо", - "Confirm Selection": "Подтвердить выбор", - "distance is": "расстояние составляет", + "Confirm Selection": "Подтвердить", + "distance is": "дистанция", + "Privacy Policy": "Политика конфиденциальности", "Intaleq LLC": "Intaleq LLC", - "Egypt's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": - "Пионерский сервис совместных поездок в Египте, с гордостью разработанный арабскими и местными владельцами. Мы уделяем приоритетное внимание близости к вам — как к нашим ценным пассажирам, так и к нашим преданным капитанам.", - "Why Choose Intaleq?": "Почему выбирают Intaleq?", - "Closest to You": "Ближе всего к вам", + "Syria's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "Сервис такси в России.", + "Intaleq is the first ride-sharing app in Syria, designed to connect you with the nearest drivers for a quick and convenient travel experience.": + "Intaleq соединяет вас с ближайшими водителями.", + "Why Choose Intaleq?": "Почему Intaleq?", + "Closest to You": "Ближе всего", "We connect you with the nearest drivers for faster pickups and quicker journeys.": - "Мы связываем вас с ближайшими водителями для более быстрой посадки и более быстрых поездок.", - "Uncompromising Security": "Непреклонная безопасность", - "Lady Captains Available": "Доступны женщины-капитаны", - "Recorded Trips (Voice & AI Analysis)": - "Записанные поездки (голосовой и AI анализ)", - "Fastest Complaint Response": "Самый быстрый ответ на жалобы", + "Быстрая подача.", + "Uncompromising Security": "Безопасность", + "Lady Captains Available": "Женщины-водители", + "Recorded Trips (Voice & AI Analysis)": "Запись поездок", + "Fastest Complaint Response": "Быстрая поддержка", "Our dedicated customer service team ensures swift resolution of any issues.": - "Наша преданная команда обслуживания клиентов обеспечивает быстрое решение любых проблем.", - "Affordable for Everyone": "Доступно для всех", - "Frequently Asked Questions": "Часто задаваемые вопросы", - "Getting Started": "Начало работы", + "Быстрое решение проблем.", + "Affordable for Everyone": "Доступно всем", + "Frequently Asked Questions": "Частые вопросы", + "Getting Started": "Начало", "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": - "Просто откройте приложение Intaleq, введите место назначения и нажмите \"Заказать поездку\". Приложение свяжет вас с ближайшим водителем.", - "Vehicle Options": "Варианты транспортных средств", + "Откройте приложение, введите адрес и закажите.", + "Vehicle Options": "Автомобили", "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": - "Intaleq предлагает различные варианты, включая Эконом, Комфорт и Люкс, чтобы соответствовать вашим потребностям и бюджету.", - "Payments": "Платежи", + "Эконом, Комфорт, Люкс.", + "Payments": "Оплата", "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": - "Вы можете оплатить поездку наличными или кредитной/дебетовой картой. Вы можете выбрать предпочтительный способ оплаты перед подтверждением поездки.", - "Ride Management": "Управление поездками", + "Наличные или карта.", + "Ride Management": "Управление", "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": - "Да, вы можете отменить поездку, но обратите внимание, что могут применяться сборы за отмену в зависимости от того, насколько заранее вы отменяете.", - "For Drivers": "Для водителей", - // "Driver Registration & Requirements": "Регистрация и требования для водителей", - "Driver Registration": "Регистрация водителя", + "Да, возможна комиссия за отмену.", + "For Drivers": "Водителям", + "Driver Registration": "Регистрация", "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": - "Чтобы зарегистрироваться в качестве водителя или узнать о требованиях, посетите наш сайт или свяжитесь напрямую с поддержкой Intaleq.", - "Visit Website/Contact Support": - "Посетите сайт/Свяжитесь с поддержкой", + "Посетите сайт.", + "Visit Website/Contact Support": "Сайт/Поддержка", "Close": "Закрыть", - "We are searching for the nearest driver": - "Мы ищем ближайшего водителя", + "We are searching for the nearest driver": "Поиск водителя", "Communication": "Связь", "How do I communicate with the other party (passenger/driver)?": - "Как я могу связаться с другой стороной (пассажир/водитель)?", + "Как связаться?", "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": - "Вы можете общаться с вашим водителем или пассажиром через функцию чата в приложении после подтверждения поездки.", - "Safety & Security": "Безопасность и защита", + "Через чат.", + "Safety & Security": "Безопасность", "What safety measures does Intaleq offer?": - "Какие меры безопасности предлагает Intaleq?", + "Какие меры безопасности?", "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": - "Intaleq предлагает различные функции безопасности, включая проверку водителя, отслеживание поездок в приложении, варианты экстренного контакта и возможность делиться статусом поездки с доверенными контактами.", + "Проверка водителей, трекинг.", "Enjoy competitive prices across all trip options, making travel accessible.": - "Наслаждайтесь конкурентоспособными ценами на все варианты поездок, делая путешествия доступными.", - "Variety of Trip Choices": "Разнообразие вариантов поездок", + "Выгодные цены.", + "Variety of Trip Choices": "Выбор поездок", "Choose the trip option that perfectly suits your needs and preferences.": - "Выберите вариант поездки, который идеально соответствует вашим потребностям и предпочтениям.", - "Your Choice, Our Priority": "Ваш выбор, наш приоритет", + "Выберите подходящий вариант.", + "Your Choice, Our Priority": "Ваш выбор - приоритет", "Because we are near, you have the flexibility to choose the ride that works best for you.": - "Поскольку мы рядом, у вас есть гибкость в выборе поездки, которая лучше всего подходит для вас.", - "duration is": "продолжительность составляет", + "Гибкий выбор.", + "duration is": "длительность", "Setting": "Настройка", - "Find answers to common questions": - "Найдите ответы на распространенные вопросы", - "I don't need a ride anymore": "Мне больше не нужна поездка", - "I was just trying the application": "Я просто пробовал приложение", - "No driver accepted my request": - "Ни один водитель не принял мой запрос", - "I added the wrong pick-up/drop-off location": - "Я добавил неправильное место посадки/высадки", - "I don't have a reason": "У меня нет причины", - "Other": "Другое", - "Can we know why you want to cancel Ride ?": - "Можем ли мы узнать, почему вы хотите отменить поездку?", - "Cancel Ride": "Отменить поездку", - "Add Payment Method": "Добавить способ оплаты", - "Your Wallet balance is ": "Баланс вашего кошелька ", - "Ride Wallet": "Кошелек поездок", - "Payment Method": "Способ оплаты", - "Type here Place": "Введите место здесь", - "Are You sure to ride to": "Вы уверены, что хотите поехать в", + "Find answers to common questions": "Ответы на вопросы", + "I don't need a ride anymore": "Больше не нужно", + "I was just trying the application": "Я просто пробовал", + "No driver accepted my request": "Никто не принял заказ", + "I added the wrong pick-up/drop-off location": "Неверный адрес", + "I don't have a reason": "Нет причины", + "Can we know why you want to cancel Ride ?": "Почему отменяете?", + "Cancel Ride": "Отмена", + "Add Payment Method": "Добавить метод оплаты", + "Ride Wallet": "Кошелек", + "Payment Method": "Метод оплаты", + "Type here Place": "Введите место", + "Are You sure to ride to": "Едем сюда?", "Confirm": "Подтвердить", - // "Back": "Назад", - "You are Delete": "Вы удаляете", + "You are Delete": "Удаление", "Deleted": "Удалено", - "You Dont Have Any places yet !": "У вас пока нет мест!", - // "Favorite Places": "Избранные места", - "From : Current Location": "От: Текущее местоположение", - // "Where to": "Куда", - "Profile": "Профиль", - "Home": "Дом", - "My Cared": "Моя забота", + "You Dont Have Any places yet !": "Нет сохраненных мест!", + "From : Current Location": "От: Текущее место", + "My Cared": "Мои карты", "Add Card": "Добавить карту", - "Add Credit Card": "Добавить кредитную карту", - "Please enter the cardholder name": - "Пожалуйста, введите имя владельца карты", - "Please enter the expiry date": "Пожалуйста, введите срок действия", - "Please enter the CVV code": "Пожалуйста, введите CVV-код", - "Go To Favorite Places": "Перейти к избранным местам", - "Go to this Target": "Перейти к этой цели", - "My Profile": "Мой профиль", - "Sign Out": "Выйти", - "Are you want to go to this site": "Вы хотите перейти на этот сайт", - "MyLocation": "Мое местоположение", - "my location": "мое местоположение", + "Add Credit Card": "Добавить кредитку", + "Please enter the cardholder name": "Имя владельца", + "Please enter the expiry date": "Срок действия", + "Please enter the CVV code": "CVV код", + "Go To Favorite Places": "В избранное", + "Go to this Target": "К этой цели", + "My Profile": "Профиль", + "Are you want to go to this site": "Хотите поехать сюда?", + "MyLocation": "Моя локация", + "my location": "моя локация", "Target": "Цель", - "Update": "Обновить", - "You Should choose rate figure": "Вы должны выбрать рейтинг", - "Login Captin": "Войти как капитан", - "Register Captin": "Зарегистрироваться как капитан", - "Send Verfication Code": "Отправить код подтверждения", - "KM": "Км", - "End Ride": "Завершить поездку", - "Minute": "Минута", - "Go to passenger Location now": - "Перейти к местоположению пассажира сейчас", - "Duration of the Ride is ": "Продолжительность поездки ", - "Distance of the Ride is ": "Расстояние поездки ", - "Name of the Passenger is ": "Имя пассажира ", - "Hello this is Captain": "Привет, это капитан", - "Start the Ride": "Начать поездку", - "Please Wait If passenger want To Cancel!": - "Пожалуйста, подождите, если пассажир хочет отменить!", - "Total Duration:": "Общая продолжительность:", - "Active Duration:": "Активная продолжительность:", - "Waiting for Captin ...": "Ожидание капитана ...", - "Age is ": "Возраст ", - "Rating is ": "Рейтинг ", - " to arrive you.": "чтобы прибыть к вам.", + "You Should choose rate figure": "Поставьте оценку", + "Login Captin": "Вход для водителя", + "Register Captin": "Регистрация водителя", + "Send Verfication Code": "Отправить код", + "KM": "КМ", + "End Ride": "Завершить", + "Minute": "Мин", + "Go to passenger Location now": "К пассажиру", + "Duration of the Ride is ": "Длительность: ", + "Distance of the Ride is ": "Дистанция: ", + "Name of the Passenger is ": "Имя пассажира: ", + "Hello this is Captain": "Привет, это водитель", + "Start the Ride": "Начать", + "Please Wait If passenger want To Cancel!": "Ждите, вдруг отмена!", + "Total Duration:": "Всего времени:", + "Active Duration:": "Активное время:", + "Waiting for Captin ...": "Ждем водителя...", + "Age is ": "Возраст: ", + "Rating is ": "Рейтинг: ", + " to arrive you.": " чтобы прибыть.", "Tariff": "Тариф", "Settings": "Настройки", - "Feed Back": "Обратная связь", - "Please enter a valid 16-digit card number": - "Пожалуйста, введите действительный 16-значный номер карты", + "Feed Back": "Отзыв", + "Please enter a valid 16-digit card number": "Введите 16 цифр карты", "Add Phone": "Добавить телефон", - "Please enter a phone number": "Пожалуйста, введите номер телефона", - "You dont Add Emergency Phone Yet!": - "Вы еще не добавили экстренный телефон!", - "You will arrive to your destination after ": - "Вы прибудете к месту назначения через ", - "You can cancel Ride now": "Вы можете отменить поездку сейчас", + "Please enter a phone number": "Введите номер", + "You dont Add Emergency Phone Yet!": "Нет экстренного номера!", + "You will arrive to your destination after ": "Прибытие через ", + "You can cancel Ride now": "Можно отменить", "You Can cancel Ride After Captain did not come in the time": - "Вы можете отменить поездку, если капитан не пришел вовремя", + "Можно отменить при опоздании водителя", "If you in Car Now. Press Start The Ride": - "Если вы в машине сейчас. Нажмите \"Начать поездку\"", - "You Dont Have Any amount in": "У вас нет суммы в", + "Если вы в машине, нажмите Начать", + "You Dont Have Any amount in": "Нет средств в", "Wallet!": "Кошелек!", "You Have": "У вас есть", - "Save Credit Card": "Сохранить кредитную карту", + "Save Credit Card": "Сохранить карту", "Show Promos": "Показать промо", - "10 and get 4% discount": "10 и получите 4% скидку", - "20 and get 6% discount": "20 и получите 6% скидку", - "40 and get 8% discount": "40 и получите 8% скидку", - "100 and get 11% discount": "100 и получите 11% скидку", - "Pay with Your PayPal": "Оплатите с помощью PayPal", - "You will choose one of above !": - "Вы выберете один из вышеперечисленных!", - "Delete My Account": "Удалить мой аккаунт", - "Edit Profile": "Редактировать профиль", - "Name": "Имя", - "Update Gender": "Обновить пол", - "Education": "Образование", - "Update Education": "Обновить образование", - "Employment Type": "Тип занятости", - "SOS Phone": "Телефон SOS", - "High School Diploma": "Диплом средней школы", - "Associate Degree": "Диплом младшего специалиста", - "Bachelor's Degree": "Степень бакалавра", - "Master's Degree": "Степень магистра", - "Doctoral Degree": "Докторская степень", - "Copy this Promo to use it in your Ride!": - "Скопируйте этот промо, чтобы использовать его в вашей поездке!", - "To change some Settings": "Чтобы изменить некоторые настройки", - "Order Request Page": "Страница запроса заказа", - "Rouats of Trip": "Маршруты поездки", - "Passenger Name is ": "Имя пассажира ", - "Total From Passenger is ": "Всего от пассажира ", - "Duration To Passenger is ": "Продолжительность до пассажира ", - "Distance To Passenger is ": "Расстояние до пассажира ", - "Total For You is ": "Всего для вас ", - "Distance is ": "Расстояние ", - " KM": " Км", - "Duration of Trip is ": "Продолжительность поездки ", - " Minutes": " Минут", - "Apply Order": "Применить заказ", - "Refuse Order": "Отклонить заказ", - "Rate Captain": "Оценить капитана", - "Enter your Note": "Введите вашу заметку", - "Type something...": "Введите что-нибудь...", - "Submit rating": "Отправить рейтинг", + "10 and get 4% discount": "10 и скидка 4%", + "20 and get 6% discount": "20 и скидка 6%", + "40 and get 8% discount": "40 и скидка 8%", + "100 and get 11% discount": "100 и скидка 11%", + "Pay with Your PayPal": "Оплата PayPal", + "You will choose one of above !": "Выберите вариант!", + "Edit Profile": "Редактировать", + "Copy this Promo to use it in your Ride!": "Скопируйте промокод!", + "To change some Settings": "Изменить настройки", + "Order Request Page": "Страница заказа", + "Rouats of Trip": "Маршруты", + "Passenger Name is ": "Пассажир: ", + "Total From Passenger is ": "Сумма от пассажира: ", + "Duration To Passenger is ": "Время до пассажира: ", + "Distance To Passenger is ": "Расстояние до пассажира: ", + "Total For You is ": "Всего вам: ", + "Distance is ": "Дистанция: ", + " KM": " КМ", + "Duration of Trip is ": "Длительность: ", + " Minutes": " Мин", + "Apply Order": "Принять", + "Refuse Order": "Отклонить", + "Rate Captain": "Оценить водителя", + "Enter your Note": "Заметка", + "Type something...": "Напишите...", + "Submit rating": "Отправить", "Rate Passenger": "Оценить пассажира", - "Ride Summary": "Сводка поездки", + "Ride Summary": "Итог", "welcome_message": "Добро пожаловать в Intaleq!", - "app_description": - "Intaleq — это надежное, безопасное и доступное приложение для совместных поездок.", - "get_to_destination": - "Доберитесь до места назначения быстро и легко.", - "get_a_ride": - "С Intaleq вы можете добраться до места назначения за считанные минуты.", - "safe_and_comfortable": - "Наслаждайтесь безопасной и комфортной поездкой.", - "committed_to_safety": - "Intaleq уделяет приоритетное внимание безопасности, и все наши капитаны тщательно проверяются и проверяются на благонадежность.", - // "Driver Applied the Ride for You": "Водитель применил поездку для вас", - // "Show latest promo": "Показать последние промо", - // "Cancel Trip": "Отменить поездку", - // "Passenger Cancel Trip": "Пассажир отменил поездку", - // "Accepted Ride": "Принятая поездка", - "your ride is Accepted": "ваша поездка принята", - // "Trip is Begin": "Поездка началась", - "Driver is waiting at pickup.": "Водитель ждет на месте посадки.", + "app_description": "Безопасное такси.", + "get_to_destination": "Быстро добраться.", + "get_a_ride": "Машина за минуты.", + "safe_and_comfortable": "Безопасно и комфортно.", + "committed_to_safety": "Мы за безопасность.", + "your ride is Accepted": "Заказ принят", + "Driver is waiting at pickup.": "Водитель ждет.", "Driver is on the way": "Водитель в пути", - "Contact Options": "Варианты связи", - "Send a custom message": "Отправить пользовательское сообщение", - "Type your message": "Введите ваше сообщение", - // "Hi ,I will go now": "Привет, я пойду сейчас", - // "Passenger come to you": "Пассажир идет к вам", - // "Hi ,I Arrive your site": "Привет, я прибыл на ваше место", - // "Driver Finish Trip": "Водитель завершил поездку", - // "you will pay to Driver": "вы заплатите водителю", - // "Driver Cancel Your Trip": "Водитель отменил вашу поездку", - // "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": "вы заплатите водителю, вы заплатите стоимость времени водителя, посмотрите на ваш кошелек Intaleq", - // "I will go now": "Я пойду сейчас", - "You Have Tips": "У вас есть чаевые", + "Contact Options": "Контакты", + "Send a custom message": "Свое сообщение", + "Type your message": "Введите сообщение", + "I will go now": "Выезжаю", + "You Have Tips": "Есть чаевые", " tips\nTotal is": " чаевые\nВсего", - // "No,I want": "Нет, я хочу", - "Your fee is ": "Ваша плата ", - // "Do you want to pay Tips for this Driver": "Вы хотите дать чаевые этому водителю?", - "Tip is ": "Чаевые ", + "Your fee is ": "Сбор: ", + "Do you want to pay Tips for this Driver": "Оставить чаевые?", + "Tip is ": "Чаевые: ", "Are you want to wait drivers to accept your order": - "Вы хотите подождать, пока водители примут ваш заказ?", + "Ждать принятия заказа?", "This price is fixed even if the route changes for the driver.": - "Эта цена фиксирована, даже если маршрут изменится для водителя.", + "Фиксированная цена.", "The price may increase if the route changes.": - "Цена может увеличиться, если маршрут изменится.", + "Цена может измениться.", "The captain is responsible for the route.": - "Капитан отвечает за маршрут.", - "We are search for nearst Driver": "Мы ищем ближайшего водителя", - "Your order is being prepared": "Ваш заказ готовится", - "The drivers are reviewing your request": - "Водители рассматривают ваш запрос", - "Your order sent to drivers": "Ваш заказ отправлен водителям", - "You can call or record audio of this trip": - "Вы можете позвонить или записать аудио этой поездки", + "Водитель отвечает за маршрут.", + "We are search for nearst driver": "Ищем водителя", + "Your order is being prepared": "Подготовка заказа", + "The drivers are reviewing your request": "Водители смотрят заказ", + "Your order sent to drivers": "Отправлено водителям", + "You can call or record audio of this trip": "Звонок или запись", "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": - "Поездка началась! Не стесняйтесь связываться с экстренными номерами, делиться своей поездкой или активировать запись голоса для путешествия", - // "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": "Пожалуйста, убедитесь, что у вас есть все ваши личные вещи и что любой оставшийся тариф, если применимо, был добавлен на ваш кошелек перед уходом. Спасибо за выбор приложения Intaleq.", - // "Don’t forget your personal belongings.": "Не забудьте свои личные вещи.", - "Camera Access Denied.": "Доступ к камере запрещен.", - "Open Settings": "Открыть настройки", - "GPS Required Allow !.": "Требуется GPS!", - "Your Account is Deleted": "Ваш аккаунт удален", - "Are you sure to delete your account?": - "Вы уверены, что хотите удалить свой аккаунт?", + "Поездка началась! Делитесь маршрутом, пишите аудио.", + "Camera Access Denied.": "Нет доступа к камере.", + "Open Settings": "Настройки", + "GPS Required Allow !.": "Включите GPS!", + "Your Account is Deleted": "Аккаунт удален", + "Are you sure to delete your account?": "Удалить аккаунт?", "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": - "Ваши данные будут удалены через 2 недели\nИ вы не сможете вернуться к использованию приложения через 1 месяц", - "Enter Your First Name": "Введите ваше имя", - "Are you Sure to LogOut?": "Вы уверены, что хотите выйти?", - "Email Wrong": "Неверная электронная почта", - "Email you inserted is Wrong.": - "Введенная вами электронная почта неверна.", - "You have finished all times ": "Вы завершили все времена", - "if you want help you can email us here": - "если вам нужна помощь, вы можете написать нам здесь", + "Данные удалятся через 2 недели.", + "Enter Your First Name": "Введите имя", + "Are you Sure to LogOut?": "Выйти?", + "Email Wrong": "Неверный Email", + "Email you inserted is Wrong.": "Email введен неверно.", + "You have finished all times ": "Попытки исчерпаны", + "if you want help you can email us here": "Напишите нам для помощи", "Thanks": "Спасибо", - "Email Us": "Напишите нам", + "Email Us": "Написать нам", "I cant register in your app in face detection ": - "Я не могу зарегистрироваться в вашем приложении с обнаружением лица", + "Не могу пройти проверку лица", "Hi": "Привет", - "No face detected": "Лицо не обнаружено", - "Image detecting result is ": "Результат обнаружения изображения ", - "from 3 times Take Attention": "с 3 раз обратите внимание", + "No face detected": "Лицо не найдено", + "Image detecting result is ": "Результат: ", + "from 3 times Take Attention": "из 3 раз, Внимание", "Be sure for take accurate images please\nYou have": - "Убедитесь, что вы делаете точные изображения, пожалуйста\nУ вас есть", - "image verified": "изображение проверено", + "Делайте четкие фото\nУ вас есть", + "image verified": "подтверждено", "Next": "Далее", - "There is no help Question here": "Здесь нет вопроса о помощи", - "You dont have Points": "У вас нет очков", - "You Are Stopped For this Day !": "Вы остановлены на этот день!", - "You must be charge your Account": "Вы должны пополнить свой аккаунт", + "There is no help Question here": "Нет вопроса", + "You dont have Points": "Нет баллов", + "You Are Stopped For this Day !": "Блокировка на сегодня!", + "You must be charge your Account": "Пополните счет", "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": - "Вы отказались от 3 поездок в этот день, это причина\nУвидимся завтра!", - "Recharge my Account": "Пополнить мой аккаунт", - "Ok , See you Tomorrow": "Хорошо, увидимся завтра", - "You are Stopped": "Вы остановлены", + "Вы отказались от 3 поездок.\nДо завтра!", + "Recharge my Account": "Пополнить", + "Ok , See you Tomorrow": "Ок, до завтра", + "You are Stopped": "Вы заблокированы", "Connected": "Подключено", "Not Connected": "Не подключено", - "Your are far from passenger location": - "Вы далеко от местоположения пассажира", + "Your are far from passenger location": "Вы далеко от пассажира", "go to your passenger location before\nPassenger cancel trip": - "перейдите к местоположению пассажира до того, как\nпассажир отменит поездку", - "You will get cost of your work for this trip": - "Вы получите стоимость вашей работы за эту поездку", - " in your wallet": "в вашем кошельке", - "you gain": "вы получаете", - "Order Cancelled by Passenger": "Заказ отменен пассажиром", - "Success": "Успех", - "Feedback data saved successfully": - "Данные обратной связи успешно сохранены", - "No Promo for today .": "Сегодня нет промо.", - "Select your destination": "Выберите место назначения", - "Search for your Start point": "Найдите вашу начальную точку", - "Search for waypoint": "Найдите промежуточную точку", - "Current Location": "Текущее местоположение", - "Add Location 1": "Добавить местоположение 1", - "You must Verify email !.": - "Вы должны подтвердить электронную почту!", + "Едьте к пассажиру, пока не отменил", + "You will get cost of your work for this trip": "Вы получите оплату", + " in your wallet": " в кошелек", + "you gain": "вы получили", + "Order Cancelled by Passenger": "Отмена пассажиром", + "Feedback data saved successfully": "Сохранено", + "No Promo for today .": "Нет промокодов.", + "Select your destination": "Выберите назначение", + "Search for your Start point": "Точка старта", + "Search for waypoint": "Точка маршрута", + "Current Location": "Текущее место", + "Add Location 1": "Добавить место 1", + "You must Verify email !.": "Подтвердите email!", "Cropper": "Обрезка", "Saved Sucssefully": "Успешно сохранено", - "Select Date": "Выберите дату", + "Select Date": "Выбрать дату", "Birth Date": "Дата рождения", - "Ok": "ОК", - "the 500 points equal 30 JOD": "500 очков равны 30 JOD", + "Ok": "Ок", + "the 500 points equal 30 JOD": "500 баллов = 30 ₽", "the 500 points equal 30 JOD for you \nSo go and gain your money": - "500 очков равны 30 JOD для вас\nТак что идите и зарабатывайте свои деньги", + "500 баллов = 30 ₽ для вас\nЗарабатывайте", "token updated": "токен обновлен", - "Add Location 2": "Добавить местоположение 2", - "Add Location 3": "Добавить местоположение 3", - "Add Location 4": "Добавить местоположение 4", - "Waiting for your location": "Ожидание вашего местоположения", - "Search for your destination": "Найдите ваше место назначения", + "Add Location 2": "Добавить место 2", + "Add Location 3": "Добавить место 3", + "Add Location 4": "Добавить место 4", + "Waiting for your location": "Ожидание локации", + "Search for your destination": "Поиск назначения", "Hi! This is": "Привет! Это", " I am using": " Я использую", - " to ride with": " чтобы поехать с", + " to ride with": " чтобы ехать с", " as the driver.": " как водитель.", "is driving a ": "ведет ", - " with license plate ": " с номерным знаком ", - " I am currently located at ": " Я сейчас нахожусь в ", - "Please go to Car now ": "Пожалуйста, перейдите к машине сейчас ", + " with license plate ": " госномер ", + " I am currently located at ": " Я нахожусь в ", + "Please go to Car now ": "Идите к машине ", "You will receive a code in WhatsApp Messenger": - "Вы получите код в WhatsApp Messenger", - "If you need assistance, contact us": - "Если вам нужна помощь, свяжитесь с нами", + "Код придет в WhatsApp", + "If you need assistance, contact us": "Свяжитесь для помощи", "Promo Ended": "Промо завершено", - "Enter the promo code and get": "Введите промо-код и получите", + "Enter the promo code and get": "Введи промокод и получи", "DISCOUNT": "СКИДКА", - "No wallet record found": "Запись кошелька не найдена", + "No wallet record found": "Кошелек не найден", "for": "для", "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": - "Intaleq — самое безопасное приложение для совместных поездок, которое предлагает множество функций как для капитанов, так и для пассажиров. Мы предлагаем самую низкую комиссию в размере всего 8%, гарантируя, что вы получите лучшее соотношение цены и качества для ваших поездок. Наше приложение включает страховку для лучших капитанов, регулярное техническое обслуживание автомобилей с лучшими инженерами и услуги на дороге, чтобы обеспечить уважительный и качественный опыт для всех пользователей.", + "Intaleq - безопасное такси. Комиссия 8%. Страховка и сервис.", "You can contact us during working hours from 12:00 - 19:00.": - "Вы можете связаться с нами в рабочее время с 12:00 до 19:00.", - "Choose a contact option": "Выберите вариант связи", + "Связь с 12:00 до 19:00.", + "Choose a contact option": "Выберите способ связи", "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": - "Рабочее время с 12:00 до 19:00.\nВы можете отправить сообщение WhatsApp или электронную почту.", - "Promo code copied to clipboard!": - "Промо-код скопирован в буфер обмена!", - "Copy Code": "Скопировать код", - "Your invite code was successfully applied!": - "Ваш пригласительный код успешно применен!", - "Payment Options": "Варианты оплаты", - "wait 1 minute to receive message": - "подождите 1 минуту, чтобы получить сообщение", - "Promo Copied!": "Промо скопировано!", - "You have copied the promo code.": "Вы скопировали промо-код.", - "Valid Until:": "Действителен до:", - "Select Payment Amount": "Выберите сумму оплаты", - "The promotion period has ended.": "Период акции завершен.", - "Promo Code Accepted": "Промо-код принят", - "Tap on the promo code to copy it!": - "Нажмите на промо-код, чтобы скопировать его!", - "Lowest Price Achieved": "Самая низкая цена достигнута", - "Cannot apply further discounts.": - "Нельзя применить дополнительные скидки.", - "Promo Already Used": "Промо уже использовано", + "Время 12:00 - 19:00.\nWhatsApp или email.", + "Promo code copied to clipboard!": "Скопировано!", + "Copy Code": "Копировать код", + "Your invite code was successfully applied!": "Код применен!", + "Payment Options": "Оплата", + "wait 1 minute to receive message": "подождите 1 минуту", + "You have copied the promo code.": "Код скопирован.", + "Select Payment Amount": "Сумма оплаты", + "The promotion period has ended.": "Акция закончилась.", + "Promo Code Accepted": "Код принят", + "Tap on the promo code to copy it!": "Нажми для копирования!", + "Lowest Price Achieved": "Минимальная цена", + "Cannot apply further discounts.": "Скидок больше нет.", + "Promo Already Used": "Уже использован", "Invitation Used": "Приглашение использовано", "You have already used this promo code.": - "Вы уже использовали этот промо-код.", - "Insert Your Promo Code": "Введите ваш промо-код", - "Enter promo code here": "Введите промо-код здесь", - "Please enter a valid promo code": - "Пожалуйста, введите действительный промо-код", - "Awfar Car": "Awfar Car", + "Вы уже использовали этот код.", + "Insert Your Promo Code": "Вставьте промокод", + "Enter promo code here": "Введите код здесь", + "Please enter a valid promo code": "Введите верный код", + "Awfar Car": "Эконом", "Old and affordable, perfect for budget rides.": - "Старый и доступный, идеально подходит для бюджетных поездок.", + "Недорогой и доступный.", " If you need to reach me, please contact the driver directly at": - " Если вам нужно связаться со мной, пожалуйста, свяжитесь с водителем напрямую по", - "No Car or Driver Found in your area.": - "В вашем районе не найдено ни одной машины или водителя.", - "Please Try anther time ": "Пожалуйста, попробуйте в другое время ", + " Свяжитесь с водителем по номеру", + "No Car or Driver Found in your area.": "Нет машин в вашем районе.", + "Please Try anther time ": "Попробуйте позже ", "There no Driver Aplly your order sorry for that ": - "Нет водителя, который применил бы ваш заказ, извините за это ", + "Никто не взял заказ, извините ", "Trip Cancelled": "Поездка отменена", - "The Driver Will be in your location soon .": - "Водитель скоро будет на вашем месте.", - "The distance less than 500 meter.": "Расстояние менее 500 метров.", - "Promo End !": "Промо завершено!", - "There is no notification yet": "Пока нет уведомлений", + "The Driver Will be in your location soon .": "Водитель скоро будет.", + "The distance less than 500 meter.": "Дистанция < 500 м.", + "Promo End !": "Промо всё!", + "There is no notification yet": "Нет уведомлений", "Use Touch ID or Face ID to confirm payment": - "Используйте Touch ID или Face ID для подтверждения оплаты", + "Используйте Touch ID или Face ID", "Contact us for any questions on your order.": - "Свяжитесь с нами по любым вопросам о вашем заказе.", + "Свяжитесь с нами по вопросам заказа.", "Pyament Cancelled .": "Оплата отменена.", "type here": "введите здесь", - "Scan Driver License": "Сканировать водительское удостоверение", - "Please put your licence in these border": - "Пожалуйста, поместите ваше удостоверение в эти границы", - "Camera not initialized yet": "Камера еще не инициализирована", - "Take Image": "Сделать снимок", - "AI Page": "Страница ИИ", - "Take Picture Of ID Card": "Сделать снимок удостоверения личности", - "Take Picture Of Driver License Card": - "Сделать снимок водительского удостоверения", - "We are process picture please wait ": - "Мы обрабатываем изображение, пожалуйста, подождите ", - "There is no data yet.": "Пока нет данных.", + "Scan Driver License": "Скан прав", + "Please put your licence in these border": "Поместите права в рамку", + "Camera not initialized yet": "Камера не готова", + "Take Image": "Сделать фото", + "AI Page": "AI Страница", + "Take Picture Of ID Card": "Фото паспорта", + "Take Picture Of Driver License Card": "Фото прав", + "We are process picture please wait ": "Обработка фото... ", + "There is no data yet.": "Нет данных.", "Name :": "Имя:", - "Drivers License Class: ": "Класс водительского удостоверения:", - "Document Number: ": "Номер документа:", - "Address: ": "Адрес:", - "Height: ": "Рост:", - "Expiry Date: ": "Срок действия:", - "Date of Birth: ": "Дата рождения:", - "You can\'t continue with us .\nYou should renew Driver license": - "Вы не можете продолжать с нами.\nВам следует обновить водительское удостоверение", - "Detect Your Face ": "Обнаружьте ваше лицо", - "Go to next step\nscan Car License.": - "Перейдите к следующему шагу\nсканируйте автомобильное удостоверение.", - "Name in arabic": "Имя на арабском", - "Drivers License Class": "Класс водительского удостоверения", - "Date of Birth": "Дата рождения", - // "Select date and time of trip": "Выберите дату и время поездки", - "Selected Date": "Выбранная дата", - "Select Time": "Выберите время", - "Selected Time": "Выбранное время", - // "OK": "ОК", - // "Cancel": "Отменить", - "Selected Date and Time": "Выбранная дата и время", - "Lets check Car license ": - "Давайте проверим автомобильное удостоверение", - "Car": "Машина", - "Plate": "Номерной знак", - "N/A": "N/A", + "Drivers License Class: ": "Категория: ", + "Document Number: ": "Номер документа: ", + "Address: ": "Адрес: ", + "Height: ": "Рост: ", + "Expiry Date: ": "Истекает: ", + "Date of Birth: ": "Дата рождения: ", + "You can't continue with us .\nYou should renew Driver license": + "Нужно обновить права", + "Detect Your Face ": "Проверка лица ", + "Go to next step\nscan Car License.": "Далее\nскан СТС.", + "Name in arabic": "Имя (местное)", + "Drivers License Class": "Категория", + "Selected Date": "Выбрана дата", + "Select Time": "Выбрать время", + "Selected Time": "Выбрано время", + "Selected Date and Time": "Дата и Время", + "Lets check Car license ": "Проверим СТС ", + "Car": "Авто", + "Plate": "Номер", "Rides": "Поездки", - "Age": "Возраст", - // "Education": "Образование", - // "Color": "Цвет", - // "Displacement": "Объем двигателя", - // "Fuel": "Топливо", "Selected driver": "Выбранный водитель", - "Lets check License Back Face": - "Давайте проверим обратную сторону удостоверения", - "Car License Card": "Автомобильное удостоверение", - "No image selected yet": "Изображение еще не выбрано", - "Made :": "Сделано:", - "model :": "модель:", - "VIN :": "VIN:", - "year :": "год:", - "ُExpire Date": "Срок действия", - "Login Driver": "Войти как водитель", - "Password must br at least 6 character.": - "Пароль должен состоять не менее чем из 6 символов.", - "if you don\'t have account": "если у вас нет аккаунта", - "Here recorded trips audio": "Здесь записано аудио поездок", - "Register as Driver": "Зарегистрироваться как водитель", - // "Privacy Notice": "Уведомление о конфиденциальности", + "Lets check License Back Face": "Проверим оборот", + "Car License Card": "СТС", + "No image selected yet": "Нет изображения", + "Made :": "Марка :", + "model :": "Модель :", + "VIN :": "VIN :", + "year :": "Год :", + "ُExpire Date": "Дата окончания", + "Login Driver": "Вход водителя", + "Password must br at least 6 character.": "Пароль мин. 6 символов.", + "if you don't have account": "нет аккаунта", + "Here recorded trips audio": "Аудио поездок", + "Register as Driver": "Стать водителем", "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": - "Выбирая \"Я согласен\" ниже, я подтверждаю, что прочитал и согласен с Условиями использования и признаю ", - ". I am at least 18 years of age.": ". Мне не менее 18 лет.", + "Выбирая \"Согласен\", я принимаю Условия и ", "Log Out Page": "Страница выхода", "Log Off": "Выйти", - "Register Driver": "Зарегистрировать водителя", - "Verify Email For Driver": - "Подтвердить электронную почту для водителя", - "Admin DashBoard": "Панель администратора", + "Register Driver": "Регистрация водителя", + "Verify Email For Driver": "Email водителя", + "Admin DashBoard": "Панель админа", "Your name": "Ваше имя", - "your ride is applied": "ваша поездка применена", - "Your password": "Ваш пароль", + "your ride is applied": "поездка оформлена", "H and": "Ч и", - "LE": "LE", - "JOD": "JOD", + "JOD": "₽", "m": "м", - "We search nearst Driver to you": "Мы ищем ближайшего к вам водителя", - "please wait till driver accept your order": - "пожалуйста, подождите, пока водитель примет ваш заказ", + "We search nearst Driver to you": "Ищем водителя", + "please wait till driver accept your order": "ждите принятия заказа", "No accepted orders? Try raising your trip fee to attract riders.": - "Нет принятых заказов? Попробуйте повысить стоимость поездки, чтобы привлечь водителей.", - "You should select one": "Вы должны выбрать один", - "The driver accept your order for": "Водитель принимает ваш заказ на", - "Increase Fee": "Увеличить плату", - "No, thanks": "Нет, спасибо", - "The driver on your way": "Водитель в пути", - "Total price from ": "Общая цена от ", - "Order Details Intaleq": "Детали заказа Скорость", - // "Order Applied": "Заказ применен", - "accepted your order": "принял ваш заказ", - // "We regret to inform you that another driver has accepted this order.": "С сожалением сообщаем, что другой водитель принял этот заказ", - "Selected file:": "Выбранный файл:", - "Your trip cost is": "Стоимость вашей поездки", - "this will delete all files from your device": - "это удалит все файлы с вашего устройства", - " in your": "в вашем", + "Поднимите цену для привлечения.", + "You should select one": "Выберите одно", + "The driver accept your order for": "Водитель принял заказ за", + "The driver on your way": "Водитель едет", + "Total price from ": "Всего от ", + "Order Details Intaleq": "Детали заказа", + "Selected file:": "Файл:", + "Your trip cost is": "Стоимость:", + "this will delete all files from your device": "удалит все файлы", "Exclusive offers and discounts always with the Intaleq app": - "Эксклюзивные предложения и скидки всегда с приложением Intaleq", - // "Please go to Car Driver": "Пожалуйста, подойдите к водителю машины", - " wallet due to a previous trip.": - "кошелек из-за предыдущей поездки.", - "Submit Question": "Отправить вопрос", - "Please enter your Question.": "Пожалуйста, введите ваш вопрос.", - "Help Details": "Детали помощи", - "No trip yet found": "Пока не найдено поездок", - "No Response yet.": "Пока нет ответа.", - " You Earn today is ": " Вы заработали сегодня ", + "Эксклюзивные предложения", + "Submit Question": "Задать вопрос", + "Please enter your Question.": "Введите вопрос.", + "Help Details": "Помощь", + "No trip yet found": "Нет поездок", + "No Response yet.": "Нет ответа.", + " You Earn today is ": " Заработано сегодня: ", " You Have in": " У вас есть в", - "Total points is ": "Всего очков ", - "Total Connection Duration:": "Общая продолжительность соединения:", - " H and": " Ч и", - "Passenger name : ": "Имя пассажира: ", - "Cost Of Trip IS ": "Стоимость поездки ", + "Total points is ": "Всего баллов: ", + "Total Connection Duration:": "Время соединения:", + "Passenger name : ": "Пассажир: ", + "Cost Of Trip IS ": "Стоимость: ", "Arrival time": "Время прибытия", - "arrival time to reach your point": "время прибытия до вашей точки", + "arrival time to reach your point": "время прибытия в точку", "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "Для поездок на скутере и скорости цена рассчитывается динамически. Для комфортных поездок цена основана на времени и расстоянии.", - "Hello this is Driver": "Привет, это водитель", - "Is the Passenger in your Car ?": "Пассажир в вашей машине?", + "Цена динамическая или по времени/расстоянию.", + "Hello this is Driver": "Привет, я водитель", + "Is the Passenger in your Car ?": "Пассажир в машине?", "Please wait for the passenger to enter the car before starting the trip.": - "Пожалуйста, подождите, пока пассажир войдет в машину, прежде чем начать поездку.", - "No ,still Waiting.": "Нет, все еще жду.", - "I arrive you": "Я прибыл к вам", - "I Arrive your site": "Я прибыл на ваше место", - "You are not in near to passenger location": - "Вы не близко к местоположению пассажира", - "please go to picker location exactly": - "пожалуйста, точно перейдите к месту выбора", + "Ждите пассажира.", + "No ,still Waiting.": "Нет, жду.", + "I arrive you": "Я на месте", + "I Arrive your site": "Я на месте", + "You are not in near to passenger location": "Вы далеко", + "please go to picker location exactly": "езжайте точно к точке", "You Can Cancel Trip And get Cost of Trip From": - "Вы можете отменить поездку и получить стоимость поездки от", - "Are you sure to cancel?": "Вы уверены, что хотите отменить?", - // "Yes": "Да", - "Insert Emergincy Number": "Введите номер экстренной службы", + "Можно отменить и получить стоимость с", + "Are you sure to cancel?": "Отменить?", + "Insert Emergincy Number": "Ввести SOS номер", "Best choice for comfort car and flexible route and stops point": - "Лучший выбор для комфортной машины и гибкого маршрута с остановками", + "Комфорт и гибкий маршрут", "Insert": "Вставить", - "This is for scooter or a motorcycle.": - "Это для скутера или мотоцикла.", + "This is for scooter or a motorcycle.": "Для скутера или мотоцикла.", "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": - "Эта поездка идет напрямую от вашей начальной точки до места назначения по фиксированной цене. Водитель должен следовать запланированному маршруту", - "You can decline a request without any cost": - "Вы можете отклонить запрос без каких-либо затрат", + "Прямая поездка, фикс. цена.", + "You can decline a request without any cost": "Отказ бесплатный", "Perfect for adventure seekers who want to experience something new and exciting": - "Идеально для искателей приключений, которые хотят испытать что-то новое и захватывающее", - "My current location is:": "Мое текущее местоположение:", + "Для искателей приключений", + "My current location is:": "Я здесь:", "and I have a trip on": "и у меня поездка на", - "App with Passenger": "Приложение с пассажиром", + "App with Passenger": "Приложение с Пассажиром", "You will be pay the cost to driver or we will get it from you on next trip": - "Вы заплатите стоимость водителю, или мы получим ее от вас в следующей поездке", - "Trip has Steps": "Поездка имеет шаги", - "Distance from Passenger to destination is ": - "Расстояние от пассажира до места назначения ", + "Оплата водителю или в след. раз", + "Trip has Steps": "Поездка с этапами", + "Distance from Passenger to destination is ": "Дистанция до цели: ", "price is": "цена", "This ride type does not allow changes to the destination or additional stops": - "Этот тип поездки не позволяет изменять место назначения или добавлять остановки", - "This price may be changed": "Эта цена может быть изменена", + "Без изменений маршрута", + "This price may be changed": "Цена может измениться", "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": - "Нет SIM-карты? Не проблема! Звоните своему водителю напрямую через наше приложение. Мы используем передовые технологии, чтобы обеспечить вашу конфиденциальность.", + "Звоните через приложение без SIM.", "This ride type allows changes, but the price may increase": - "Этот тип поездки позволяет изменения, но цена может увеличиться", - "Select one message": "Выберите одно сообщение", - "I'm waiting for you": "Я жду вас", + "Изменения возможны, цена может вырасти", + "Select one message": "Выберите сообщение", + "I'm waiting for you": "Я вас жду", "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": - "Мы заметили, что скорость превышает 100 км/ч. Пожалуйста, снизьте скорость для вашей безопасности. Если вы чувствуете себя небезопасно, вы можете поделиться деталями поездки с контактом или вызвать полицию, используя красную кнопку SOS.", - "Warning: Intaleqing detected!": - "Предупреждение: Обнаружено превышение скорости!", + "Скорость > 100 км/ч. Притормозите.", + "Warning: Intaleqing detected!": "Внимание: Скорость!", "Please help! Contact me as soon as possible.": - "Пожалуйста, помогите! Свяжитесь со мной как можно скорее.", - "Share Trip Details": "Поделиться деталями поездки", - "Car Plate is ": "Номерной знак машины ", - "VIP Order": "VIP Заказ", + "Помогите! Свяжитесь со мной.", + "Share Trip Details": "Поделиться деталями", + "Car Plate is ": "Номер: ", "the 300 points equal 300 L.E for you \nSo go and gain your money": - "300 очков равны 300 L.E для вас\nТак что идите и зарабатывайте свои деньги", - "the 300 points equal 300 L.E": "300 очков равны 300 L.E", + "300 баллов = 300 ₽\nЗарабатывайте", + "the 300 points equal 300 L.E": "300 баллов = 300 ₽", "The payment was not approved. Please try again.": - "Оплата не была одобрена. Пожалуйста, попробуйте снова.", - "Payment Failed": "Оплата не удалась", - "Error": "Ошибка", - "This is a scheduled notification.": - "Это запланированное уведомление.", - "An error occurred during the payment process.": - "Произошла ошибка во время процесса оплаты.", - "The payment was approved.": "Оплата была одобрена.", - "Payment Successful": "Оплата успешна", - "No ride found yet": "Пока не найдено поездок", + "Оплата не прошла.", + "Payment Failed": "Ошибка оплаты", + "This is a scheduled notification.": "Запланированное уведомление.", + "An error occurred during the payment process.": "Ошибка оплаты.", + "The payment was approved.": "Оплата одобрена.", + "Payment Successful": "Успешно", + "No ride found yet": "Поездка не найдена", "Accept Order": "Принять заказ", - // "reject your order.": "отклонить ваш заказ.", - "Bottom Bar Example": "Пример нижней панели", + "Bottom Bar Example": "Пример", "Driver phone": "Телефон водителя", "Statistics": "Статистика", - "Origin": "Начало", - "Destination": "Место назначения", + "Origin": "Старт", + "Destination": "Финиш", "Driver Name": "Имя водителя", - "Driver Car Plate": "Номерной знак машины водителя", - "Available for rides": "Доступен для поездок", - "Scan Id": "Сканировать ID", - "Camera not initilaized yet": "Камера еще не инициализирована", - "Scan ID MklGoogle": "Сканировать ID MklGoogle", + "Driver Car Plate": "Номер авто", + "Available for rides": "Доступен", + "Scan Id": "Скан паспорта", + "Camera not initilaized yet": "Камера не готова", + "Scan ID MklGoogle": "Скан ID", "Language": "Язык", "Jordan": "Иордания", "USA": "США", @@ -14113,313 +17724,641 @@ class MyTranslation extends Translations { "Qatar": "Катар", "Bahrain": "Бахрейн", "Kuwait": "Кувейт", - "But you have a negative salary of": - "Но у вас отрицательная зарплата", - "Promo Code": "Промо-код", - "Your trip distance is": "Расстояние вашей поездки", - "Enter promo code": "Введите промо-код", + "But you have a negative salary of": "Отрицательный баланс:", + "Promo Code": "Промокод", + "Your trip distance is": "Дистанция:", + "Enter promo code": "Введите промокод", "You have promo!": "У вас есть промо!", - "Cost Duration": "Стоимость продолжительности", - "Duration is": "Продолжительность", - "Leave": "Покинуть", - "Join": "Присоединиться", - "Heading your way now. Please be ready.": - "Сейчас направляюсь к вам. Пожалуйста, будьте готовы.", + "Cost Duration": "Стоимость времени", + "Duration is": "Длительность:", + "Leave": "Выйти", + "Join": "Войти", + "Heading your way now. Please be ready.": "Еду к вам. Будьте готовы.", "Approaching your area. Should be there in 3 minutes.": - "Приближаюсь к вашему району. Должен быть там через 3 минуты.", + "Подъезжаю. Буду через 3 мин.", "There's heavy traffic here. Can you suggest an alternate pickup point?": - "Здесь сильное движение. Можете предложить альтернативное место встречи?", - "This ride is already taken by another driver.": - "Эта поездка уже занята другим водителем.", - "You Should be select reason.": "Вы должны выбрать причину.", - " \$": " \$", - "Waiting for Driver ...": "Ожидание водителя ...", - "Latest Recent Trip": "Последняя недавняя поездка", - "from your list": "из вашего списка", - "Do you want to change Work location": - "Вы хотите изменить место работы?", - "Do you want to change Home location": - "Вы хотите изменить домашнее местоположение?", + "Пробки. Может, другое место?", + "This ride is already taken by another driver.": "Заказ уже занят.", + "You Should be select reason.": "Выберите причину.", + "Waiting for Driver ...": "Ждем водителя...", + "Latest Recent Trip": "Последняя поездка", + "from your list": "из списка", + "Do you want to change Work location": "Изменить Работу", + "Do you want to change Home location": "Изменить Дом", "We Are Sorry That we dont have cars in your Location!": - "Нам жаль, что у нас нет машин в вашем местоположении!", - "Choose from Map": "Выбрать из карты", + "Нет машин в вашем районе!", + "Choose from Map": "Выбрать на карте", "Pick your ride location on the map - Tap to confirm": - "Выберите место поездки на карте - Нажмите, чтобы подтвердить", - // "To Work": "На работу", - // "Are you want to go this site": "Вы хотите перейти на этот сайт?", - "Closest & Cheapest": "Ближайший и самый дешевый", - // "Work Saved": "Место работы сохранено", + "Укажите место на карте", "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": - "Intaleq — это приложение для вызова поездок, которое безопасно, надежно и доступно.", + "Intaleq - надежное такси.", "With Intaleq, you can get a ride to your destination in minutes.": - "С Intaleq вы можете добраться до места назначения за считанные минуты.", + "Машина за минуты.", "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": - "Intaleq уделяет приоритетное внимание безопасности, и все наши капитаны тщательно проверяются и проверяются на благонадежность.", - // "To Home": "Домой", - // "Home Saved": "Домашнее местоположение сохранено", - // "Destination selected": "Место назначения выбрано:", - // "Now select start pick": "Теперь выберите начальную точку:", - "Pick from map": "Выбрать из карты", - // "Click here point": "Нажмите здесь", - "No Car in your site. Sorry!": - "В вашем местоположении нет машин. Извините!", - "Nearest Car for you about ": "Ближайшая машина для вас примерно ", - // "N/A": "N/A", + "Мы проверяем всех водителей.", + "Pick from map": "Указать на карте", + "No Car in your site. Sorry!": "Нет машин. Извините!", + "Nearest Car for you about ": "Ближайшая машина через ", "From :": "От:", - "Get Details of Trip": "Получить детали поездки", - "If you want add stop click here": - "Если вы хотите добавить остановку, нажмите здесь", - // "Driver": "Водитель", - "Where you want go ": "Куда вы хотите поехать ", + "Get Details of Trip": "Детали поездки", + "If you want add stop click here": "Добавить остановку", + "Where you want go ": "Куда едем ", "My Card": "Моя карта", "Start Record": "Начать запись", - "Wallet": "Кошелек", - "History of Trip": "История поездки", - "Helping Center": "Центр помощи", + "History of Trip": "История", + "Helping Center": "Помощь", "Record saved": "Запись сохранена", - "Trips recorded": "Поездки записаны", - "Select Your Country": "Выберите вашу страну", + "Trips recorded": "Записанные поездки", + "Select Your Country": "Выберите страну", "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": - "Чтобы убедиться, что вы получаете наиболее точную информацию для вашего местоположения, пожалуйста, выберите вашу страну ниже. Это поможет адаптировать опыт использования приложения и контент под вашу страну.", - "Are you sure to delete recorded files": - "Вы уверены, что хотите удалить записанные файлы?", - "Select recorded trip": "Выбрать записанную поездку", + "Выберите страну для корректной работы.", + "Are you sure to delete recorded files": "Удалить записи?", + "Select recorded trip": "Выбрать запись", "Card Number": "Номер карты", - "Hi, Where to ": "Привет, куда ", - "Pick your destination from Map": - "Выберите место назначения на карте", - "Add Stops": "Добавить остановки", - "Get Direction": "Получить направление", - "Add Location": "Добавить местоположение", - "Switch Rider": "Сменить водителя", + "Hi, Where to ": "Куда едем ", + "Pick your destination from Map": "Указать назначение", + "Add Stops": "Остановки", + "Get Direction": "Маршрут", + "Add Location": "Добавить место", + "Switch Rider": "Сменить пассажира", "You will arrive to your destination after timer end.": - "Вы прибудете к месту назначения после завершения таймера.", - "You can cancel trip": "Вы можете отменить поездку", - "The driver waitting you in picked location .": - "Водитель ждет вас в выбранном месте.", - "10\$ and get 3% discount": "10\$ и получите 3% скидку", - "20\$ and get 4% discount": "20\$ и получите 4% скидку", - "40\$ and get 6% discount": "40\$ и получите 6% скидку", - "100\$ and get 9% discount": "100\$ и получите 9% скидку", - "Pay with Your": "Оплатите с помощью", - "Pay with Credit Card": "Оплатить кредитной картой", - "Payment History": "История платежей", - "Show Promos to Charge": "Показать промо для пополнения", - "Point": "Очко", - "How many hours would you like to wait?": - "Сколько часов вы хотите подождать?", + "Прибытие по таймеру.", + "You can cancel trip": "Можно отменить", + "The driver waitting you in picked location .": "Водитель ждет.", + "Pay with Your": "Оплата", + "Pay with Credit Card": "Кредитная карта", + "Show Promos to Charge": "Промо для пополнения", + "Point": "Балл", + "How many hours would you like to wait?": "Сколько часов ждать?", "Driver Wallet": "Кошелек водителя", - "Choose between those Type Cars": "Выберите между этими типами машин", + "Choose between those Type Cars": "Выберите тип авто", "hour": "час", - "Select Waiting Hours": "Выберите часы ожидания", - "Total Points is": "Всего очков", - "You will receive a code in SMS message": - "Вы получите код в SMS-сообщении", + "Select Waiting Hours": "Часы ожидания", + "Total Points is": "Всего баллов", + "You will receive a code in SMS message": "Код придет в СМС", "Done": "Готово", - "Total Budget from trips is ": "Общий бюджет от поездок ", - "Total Amount:": "Общая сумма:", - "Total Budget from trips by\nCredit card is ": - "Общий бюджет от поездок по\nкредитной карте ", + "Total Budget from trips is ": "Бюджет поездок: ", + "Total Amount:": "Всего:", + "Total Budget from trips by\nCredit card is ": "Бюджет по карте: ", "This amount for all trip I get from Passengers": - "Эта сумма за все поездки, которые я получаю от пассажиров", - "Pay from my budget": "Оплатить из моего бюджета", + "Сумма от пассажиров", + "Pay from my budget": "Оплата с баланса", "This amount for all trip I get from Passengers and Collected For me in": - "Эта сумма за все поездки, которые я получаю от пассажиров и собираю для себя в", - "You can buy points from your budget": - "Вы можете купить очки из своего бюджета", - "insert amount": "введите сумму", + "Собранная сумма", + "You can buy points from your budget": "Купить баллы", + "insert amount": "сумма", "You can buy Points to let you online\nby this list below": - "Вы можете купить очки, чтобы оставаться онлайн\nпо этому списку ниже", - "Create Wallet to receive your money": - "Создайте кошелек, чтобы получать свои деньги", - "Enter your feedback here": "Введите вашу обратную связь здесь", - "Please enter your feedback.": - "Пожалуйста, введите вашу обратную связь.", - "Feedback": "Обратная связь", + "Купите баллы для работы", + "Create Wallet to receive your money": "Создать кошелек", + "Enter your feedback here": "Ваш отзыв", + "Please enter your feedback.": "Введите отзыв.", + "Feedback": "Отзыв", "Submit ": "Отправить ", - "Click here to Show it in Map": - "Нажмите здесь, чтобы показать это на карте", + "Click here to Show it in Map": "Показать на карте", "Canceled": "Отменено", - "Type your Email": "Введите вашу электронную почту", - "No I want": "Нет, я хочу", - "Email is": "Электронная почта", - "Phone Number is": "Номер телефона", - "Date of Birth is": "Дата рождения", - "Sex is ": "Пол ", - "Car Details": "Детали машины", - "VIN is": "VIN", - "Color is ": "Цвет ", - "Make is ": "Марка ", - "Model is": "Модель", - "Year is": "Год", - "Expiration Date ": "Срок действия ", - "Edit Your data": "Редактировать ваши данные", - "write vin for your car": "напишите VIN для вашей машины", + "No I want": "Нет, хочу", + "Email is": "Email:", + "Phone Number is": "Телефон:", + "Date of Birth is": "Дата рождения:", + "Sex is ": "Пол: ", + "Car Details": "Детали авто", + "VIN is": "VIN:", + "Color is ": "Цвет: ", + "Make is ": "Марка: ", + "Model is": "Модель:", + "Year is": "Год:", + "Expiration Date ": "Истекает: ", + "Edit Your data": "Редактировать", + "write vin for your car": "введите VIN", "VIN": "VIN", - "write Color for your car": "напишите цвет для вашей машины", - "write Make for your car": "напишите марку для вашей машины", - // "Make": "Марка", - "write Model for your car": "напишите модель для вашей машины", - // "Model": "Модель", - "write Year for your car": "напишите год для вашей машины", - // "Expiration Date": "Срок действия", - "write Expiration Date for your car": - "напишите срок действия для вашей машины", + "Device Change Detected": "Смена устройства", + "Please verify your identity": "Подтвердите личность", + "write Color for your car": "введите цвет", + "write Make for your car": "введите марку", + "write Model for your car": "введите модель", + "write Year for your car": "введите год", + "write Expiration Date for your car": "введите дату окончания", "Tariffs": "Тарифы", - "Minimum fare": "Минимальный тариф", - "Maximum fare": "Максимальный тариф", - "Flag-down fee": "Плата за остановку", - "Including Tax": "Включая налог", - "BookingFee": "Плата за бронирование", + "Minimum fare": "Мин. стоимость", + "Maximum fare": "Макс. стоимость", + "Flag-down fee": "Посадка", + "Including Tax": "Вкл. налог", + "BookingFee": "Сбор", "Morning": "Утро", "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": - "с 07:30 до 10:30 (четверг, пятница, суббота, понедельник)", + "07:30 - 10:30", "Evening": "Вечер", "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": - "с 12:00 до 15:00 (четверг, пятница, суббота, понедельник)", + "12:00 - 15:00", "Night": "Ночь", - "You have in account": "У вас на счету", - "Select Country": "Выберите страну", + "You have in account": "На счету", + "Select Country": "Страна", "Ride Today : ": "Поездка сегодня: ", - "After this period\nYou can\'t cancel!": - "После этого периода\nВы не можете отменить!", - "from 23:59 till 05:30": "с 23:59 до 05:30", - "Rate Driver": "Оценить водителя", - "Total Cost is ": "Общая стоимость ", - "Write note": "Написать заметку", + "After this period\nYou can't cancel!": "Позже отменить нельзя!", + "from 23:59 till 05:30": "23:59 - 05:30", + "Rate Driver": "Оценка водителя", + "Total Cost is ": "Стоимость: ", + "Write note": "Заметка", "Time to arrive": "Время прибытия", - "Ride Summaries": "Сводки поездок", - "Total Cost": "Общая стоимость", - "Average of Hours of": "Среднее количество часов", - " is ON for this month": " включен на этот месяц", + "Ride Summaries": "Сводка", + "Total Cost": "Всего", + "Average of Hours of": "Среднее часов", + " is ON for this month": " онлайн в этом месяце", "Days": "Дни", - "Total Hours on month": "Общее количество часов в месяце", - "Counts of Hours on days": "Количество часов в днях", + "Total Hours on month": "Часов в месяц", + "Counts of Hours on days": "Часов по дням", "OrderId": "ID заказа", - "created time": "время создания", - "Intaleq Over": "Превышение скорости", - "I will slow down": "Я снижу скорость", - "Map Passenger": "Карта пассажира", - "Be Slowly": "Будьте медленнее", + "created time": "создано", + "Intaleq Over": "Конец", + "I will slow down": "Снижаю скорость", + "Map Passenger": "Карта", + "Be Slowly": "Помедленнее", "If you want to make Google Map App run directly when you apply order": - "Если вы хотите, чтобы приложение Google Map запускалось напрямую при применении заказа", - "You can change the language of the app": - "Вы можете изменить язык приложения", - "Your Budget less than needed": "Ваш бюджет меньше необходимого", + "Открыть Google Карты", + "You can change the language of the app": "Сменить язык", + "Your Budget less than needed": "Мало средств", "You can change the Country to get all features": - "Вы можете изменить страну, чтобы получить все функции", - "Change Country": "Изменить страну" + "Смените страну для всех функций", + "Change Country": "Сменить страну" }, "it": { "Order": "Ordine", "OrderVIP": "Ordine VIP", - "Cancel Trip": "Annulla viaggio", - "Passenger Cancel Trip": "Passeggero ha annullato il viaggio", + "Cancel Trip": "Annulla corsa", + "Passenger Cancel Trip": "Il passeggero ha annullato la corsa", "VIP Order": "Ordine VIP", + "Hi ,I Arrive your site": "Ciao, sono arrivato alla tua posizione", "The driver accepted your trip": - "Il conducente ha accettato il tuo viaggio", + "L'autista ha accettato la tua corsa", "message From passenger": "Messaggio dal passeggero", "Cancel": "Annulla", "Trip Cancelled. The cost of the trip will be added to your wallet.": - "Viaggio annullato. Il costo del viaggio verrà aggiunto al tuo portafoglio.", + "Corsa annullata. Il costo sarà accreditato sul tuo portafoglio.", "token change": "Cambio token", "face detect": "Rilevamento volto", "Face Detection Result": "Risultato rilevamento volto", - "similar": "simile", - "not similar": "non simile", - "Hi ,I will go now": "Ciao, vado ora", + "similar": "Simile", + "not similar": "Non simile", + "Hi ,I will go now": "Ciao, sto partendo ora", "Passenger come to you": "Il passeggero sta venendo da te", - "Call Income": "Reddito da chiamata", - "Call Income from Passenger": "Reddito da chiamata dal passeggero", - "Criminal Document Required": "Documento penale richiesto", - "You should have upload it .": "Avresti dovuto caricarlo.", + "Call Income": "Chiamata in arrivo", + "Call Income from Passenger": "Chiamata dal passeggero", + "Criminal Document Required": "Casellario Giudiziale richiesto", + "You should have upload it .": "Devi caricarlo.", "Call End": "Chiamata terminata", "The order has been accepted by another driver.": - "L'ordine è stato accettato da un altro conducente.", + "L'ordine è stato accettato da un altro autista.", "The order Accepted by another Driver": - "L'ordine accettato da un altro conducente", + "Ordine accettato da un altro autista", "We regret to inform you that another driver has accepted this order.": - "Ci dispiace informarti che un altro conducente ha accettato questo ordine.", + "Ci dispiace informarti che un altro autista ha accettato questo ordine.", "Driver Applied the Ride for You": - "Il conducente ha applicato la corsa per te", - "Applied": "Applicato", - "Hi ,I Arrive your site": "Ciao, sono arrivato sul posto", - "Please go to Car Driver": "Per favore, vai dal conducente", + "L'autista ha richiesto la corsa per te", + "Applied": "Richiesto", + "Pay by Sham Cash": "Paga con Sham Cash", + "Pay with Debit Card": "Paga con carta di debito", + "Please go to Car Driver": "Per favore, vai dall'autista", "Ok I will go now.": "Ok, vado ora.", "Accepted Ride": "Corsa accettata", "Driver Accepted the Ride for You": - "Il conducente ha accettato la corsa per te", - "Promo": "Promozione", - "Show latest promo": "Mostra le ultime promozioni", + "L'autista ha accettato la corsa per te", + "Promo": "Promo", + "Show latest promo": "Mostra ultime promozioni", "Trip Monitoring": "Monitoraggio viaggio", "Driver Is Going To Passenger": - "Il conducente sta andando dal passeggero", + "L'autista sta andando dal passeggero", "Please stay on the picked point.": - "Per favore, rimani nel punto selezionato.", - "message From Driver": "Messaggio dal conducente", + "Per favore, resta al punto di raccolta.", + "message From Driver": "Messaggio dall'autista", "Trip is Begin": "Il viaggio è iniziato", - "Cancel Trip from driver": "Annulla viaggio dal conducente", + "Cancel Trip from driver": "Annullamento corsa dall'autista", "We will look for a new driver.\nPlease wait.": - "Cercheremo un nuovo conducente.\nPer favore, attendi.", + "Cerchiamo un nuovo autista.\nAttendere prego.", "The driver canceled your ride.": - "Il conducente ha annullato la tua corsa.", - "Driver Finish Trip": "Il conducente ha terminato il viaggio", - "you will pay to Driver": "pagherai il conducente", + "L'autista ha annullato la tua corsa.", + "Driver Finish Trip": "L'autista ha terminato la corsa", + "you will pay to Driver": "Pagherai all'autista", "Don’t forget your personal belongings.": "Non dimenticare i tuoi effetti personali.", "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": - "Assicurati di avere tutti i tuoi effetti personali e che eventuali tariffe residue, se applicabili, siano state aggiunte al tuo portafoglio prima di partire. Grazie per aver scelto l'app Intaleq.", + "Assicurati di avere tutti i tuoi effetti personali e che l'eventuale resto sia stato aggiunto al tuo portafoglio prima di scendere. Grazie per aver scelto Intaleq.", "Finish Monitor": "Termina monitoraggio", - "Trip finished": "Viaggio terminato", - "Call Income from Driver": "Reddito da chiamata dal conducente", - "Driver Cancelled Your Trip": - "Il conducente ha annullato il tuo viaggio", + "Trip finished": "Corsa terminata", + "Call Income from Driver": "Chiamata dall'autista", + "Driver Cancelled Your Trip": "L'autista ha annullato la tua corsa", "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": - "pagherai il conducente, pagherai il costo del tempo del conducente, controlla il tuo portafoglio Intaleq", + "Pagherai il tempo dell'autista, controlla il tuo portafoglio Intaleq", "Order Applied": "Ordine applicato", - //firebase above - -// - "Where to": "Dove", + "welcome to intaleq": "Benvenuto in Intaleq", + "login or register subtitle": + "Inserisci il tuo numero di cellulare per accedere o registrarti", + "An application error occurred.": + "Si è verificato un errore dell'applicazione.", + "Submission Failed": "Invio fallito", + "Your complaint has been submitted.": + "Il tuo reclamo è stato inviato.", + "Failed to connect to the server. Please try again.": + "Impossibile connettersi al server. Riprova.", + "Ride information not found. Please refresh the page.": + "Informazioni sulla corsa non trovate. Aggiorna la pagina.", + "Please describe your issue before submitting.": + "Descrivi il tuo problema prima di inviare.", + "An application error occurred during upload.": + "Si è verificato un errore durante il caricamento.", + "Failed to upload audio file.": "Caricamento file audio fallito.", + "Audio uploaded successfully.": "Audio caricato con successo.", + "Complaint cannot be filed for this ride. It may not have been completed or started.": + "Impossibile presentare reclamo per questa corsa. Potrebbe non essere stata completata o iniziata.", + "2. Attach Recorded Audio (Optional)": + "2. Allega audio registrato (Opzionale)", + "Please enter a description of the issue.": + "Inserisci una descrizione del problema.", + "phone number label": "Numero di telefono", + "phone number required": "Numero di telefono richiesto", + "send otp button": "Invia OTP", + "verify your number title": "Verifica il tuo numero", + "otp sent subtitle": + "Un codice a 5 cifre è stato inviato a\n@phoneNumber", + "verify and continue button": "Verifica e continua", + "enter otp validation": "Inserisci l'OTP a 5 cifre", + "one last step title": "Un ultimo passo", + "complete profile subtitle": "Completa il profilo per iniziare", + "first name label": "Nome", + "first name required": "Nome richiesto", + "last name label": "Cognome", + "Verify OTP": "Verifica OTP", + "Verification Code": "Codice di verifica", + "We have sent a verification code to your mobile number:": + "Abbiamo inviato un codice di verifica al tuo numero:", + "Verify": "Verifica", + "Resend Code": "Invia di nuovo", + "You can resend in": "Puoi inviare di nuovo tra", + "seconds": "secondi", + "Error": "Errore", + "Please enter the complete 6-digit code.": + "Inserisci il codice completo a 6 cifre.", + "last name required": "Cognome richiesto", + "email optional label": "Email (Opzionale)", + "complete registration button": "Completa registrazione", + "User with this phone number or email already exists.": + "Utente con questo numero o email già esistente.", + "otp sent success": "OTP inviato con successo su WhatsApp.", + "failed to send otp": "Invio OTP fallito.", + "server error try again": "Errore del server, riprova.", + "an error occurred": "Si è verificato un errore: @error", + "otp verification failed": "Verifica OTP fallita.", + "registration failed": "Registrazione fallita.", + "welcome user": "Benvenuto, @firstName!", + "Cancel Trip from driver": "Corsa annullata dall'autista", + "We will look for a new driver.\nPlease wait.": + "Cercheremo un nuovo autista.\nAttendere prego.", + "The driver canceled your ride.": + "L'autista ha annullato la tua corsa.", + "Driver Finish Trip": "L'autista ha terminato la corsa", + "you will pay to Driver": "Pagherai all'autista", + "Don't forget your personal belongings.": + "Non dimenticare i tuoi effetti personali.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "Assicurati di avere tutti i tuoi effetti personali e che l'eventuale resto sia stato aggiunto al tuo portafoglio. Grazie per aver scelto Intaleq.", + "Finish Monitor": "Termina monitoraggio", + "Trip finished": "Corsa finita", + "Call Income from Driver": "Chiamata dall'autista", + "Driver Cancelled Your Trip": "L'autista ha annullato la tua corsa", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "Pagherai il costo del tempo dell'autista, controlla il tuo portafoglio Intaleq", + "Order Applied": "Ordine applicato", + "Share App": "Condividi app", + "Wallet": "Portafoglio", + "Balance": "Saldo", + "Don’t forget your personal belongings.": + "Non dimenticare i tuoi effetti personali.", + "Profile": "Profilo", + "Contact Support": "Contatta supporto", + "Session expired. Please log in again.": + "Sessione scaduta. Accedi di nuovo.", + "Security Warning": "⚠️ Avviso di sicurezza", + "Potential security risks detected. The application may not function correctly.": + "Rilevati potenziali rischi di sicurezza. L'app potrebbe non funzionare correttamente.", + "please order now": "Ordina ora", + "Where to": "Dove vuoi andare?", "Where are you going?": "Dove stai andando?", "Quick Actions": "Azioni rapide", - "My Wallet": "Il mio portafoglio", + "My Balance": "Il mio saldo", "Order History": "Cronologia ordini", "Contact Us": "Contattaci", - "Driver": "Conducente", + "Driver": "Autista", "Complaint": "Reclamo", "Promos": "Promozioni", "Recent Places": "Luoghi recenti", "From": "Da", - "WhatsApp Location Extractor": "Estrazione posizione WhatsApp", + "WhatsApp Location Extractor": "Estrattore posizione WhatsApp", "Location Link": "Link posizione", "Paste location link here": "Incolla il link della posizione qui", "Go to this location": "Vai a questa posizione", - "Paste WhatsApp location link": - "Incolla il link della posizione WhatsApp", + "Paste WhatsApp location link": "Incolla link posizione WhatsApp", "Select Order Type": "Seleziona tipo ordine", - "Choose who this order is for": "Scegli per chi è questo ordine", + "Choose who this order is for": "Per chi è questo ordine", "I want to order for myself": "Voglio ordinare per me", "I want to order for someone else": "Voglio ordinare per qualcun altro", - // "Cancel": "Annulla", - "Order for someone else": "Ordine per qualcun altro", - "Order for myself": "Ordine per me", - "Are you want to go this site": "Vuoi andare su questo sito?", - // "Yes": "Sì", + "Order for someone else": "Ordina per altri", + "Order for myself": "Ordina per me", + "Are you want to go this site": "Vuoi andare in questo luogo?", "No": "No", + "Pay by Sham Cash": "Paga con Sham Cash", + "Intaleq Wallet": "Portafoglio Intaleq", + "Have a promo code?": "Hai un codice promozionale?", + "Your Wallet balance is ": "Il saldo del tuo portafoglio è: ", + "Cash": "Contanti", + "Phone Number": "Numero di telefono", + "Search country": "Cerca paese", + "Payment Successful!": "Pagamento riuscito!", + "Your payment was successful.": + "Il tuo pagamento è andato a buon fine.", + "Pay directly to the captain": "Paga direttamente al conducente", + "Top up Wallet to continue": "Ricarica il portafoglio per continuare", + "Or pay with Cash instead": "O paga in contanti", + "Confirm & Find a Ride": "Conferma e trova corsa", + "Balance:": "Saldo:", + "Alerts": "Avvisi", + "Welcome Back!": "Bentornato!", + "Current Balance": "Saldo attuale", + "Set Wallet Phone Number": "Imposta numero portafoglio", + "Link a phone number for transfers": + "Collega un numero per i trasferimenti", + "Payment History": "Cronologia pagamenti", + "View your past transactions": "Visualizza le transazioni passate", + "Top up Wallet": "Ricarica portafoglio", + "Add funds using our secure methods": + "Aggiungi fondi con i nostri metodi sicuri", + "Driver is waiting": "L'autista sta aspettando", + "Type your message...": "Scrivi il tuo messaggio...", + "Driver Accepted Request": "L'autista ha accettato la richiesta", + "Message": "Messaggio", + "Call": "Chiama", + "Set Phone Number": "Imposta numero telefono", + "Select This Ride": "Seleziona questa corsa", + "Call Driver": "Chiama autista", + "Increase Fare": "Aumenta tariffa", + "Stop": "Stop", + "Record": "Registra", + "Share": "Condividi", + "WhatsApp": "WhatsApp", + "SOS": "SOS", + "No drivers accepted your request yet": + "Nessun autista ha ancora accettato la tua richiesta", + "Increasing the fare might attract more drivers. Would you like to increase the price?": + "Aumentare la tariffa potrebbe attrarre più autisti. Vuoi aumentare il prezzo?", + "Please make sure not to leave any personal belongings in the car.": + "Assicurati di non lasciare effetti personali in auto.", + "Cancel Ride": "Annulla corsa", + "Route Not Found": "Percorso non trovato", + "We couldn't find a valid route to this destination. Please try selecting a different point.": + "Non siamo riusciti a trovare un percorso valido. Prova a selezionare un punto diverso.", + "alert": "Avviso", + "You can call or record audio during this trip.": + "Puoi chiamare o registrare audio durante questo viaggio.", + "Warning: Speeding detected!": + "Attenzione: Rilevato eccesso di velocità!", + "Fixed Price": "Prezzo fisso", + "Report": "Segnala", + "Comfort": "Comfort", + "Intaleq Balance": "Saldo Intaleq", + "Search for a starting point": "Cerca un punto di partenza", + "Top up Balance to continue": "Ricarica il saldo per continuare", + "Electric": "Elettrica", + "Lady": "Donna", + "Van": "Furgone", + "Rayeh Gai": "Andata e Ritorno", + "Join Intaleq as a driver using my referral code!": + "Unisciti a Intaleq come autista usando il mio codice!", + "Use code:": "Usa codice:", + "Download the Intaleq Driver app now and earn rewards!": + "Scarica l'app Intaleq Driver e guadagna premi!", + "Get a discount on your first Intaleq ride!": + "Ottieni uno sconto sulla tua prima corsa Intaleq!", + "Use my referral code:": "Usa il mio codice invito:", + "Download the Intaleq app now and enjoy your ride!": + "Scarica l'app Intaleq e goditi il viaggio!", + "Contacts Loaded": "Contatti caricati", + "Showing": "Visualizzazione", + "of": "di", + "Pay by MTN Wallet": "Paga con MTN Wallet", + "Pay by Syriatel Wallet": "Paga con Syriatel Wallet", + "Customer not found": "Cliente non trovato", + "Wallet is blocked": "Il portafoglio è bloccato", + "Customer phone is not active": + "Il telefono del cliente non è attivo", + "Balance not enough": "Saldo insufficiente", + "Balance limit exceeded": "Limite saldo superato", + "Incorrect sms code": "⚠️ Codice SMS errato. Riprova.", + "contacts. Others were hidden because they don't have a phone number.": + "contatti. Altri nascosti perché senza numero.", + "No contacts found": "Nessun contatto trovato", + "No contacts with phone numbers were found on your device.": + "Nessun contatto con numero di telefono trovato sul dispositivo.", + "Permission denied": "Permesso negato", + "Contact permission is required to pick contacts": + "È richiesto il permesso ai contatti per selezionarli.", + "An error occurred while picking contacts:": + "Errore durante la selezione dei contatti:", + "Please enter a correct phone": "Inserisci un numero corretto", + "Success": "Successo", + "Invite sent successfully": "Invito inviato con successo", + "Hello! I'm inviting you to try Intaleq.": + "Ciao! Ti invito a provare Intaleq.", + "Use my invitation code to get a special gift on your first ride!": + "Usa il mio codice invito per un regalo speciale sulla prima corsa!", + "Your personal invitation code is:": + "Il tuo codice invito personale è:", + "Be sure to use it quickly! This code expires at": + "Usalo presto! Questo codice scade il", + "Download the app now:": "Scarica l'app ora:", + "See you on the road!": "Ci vediamo in strada!", + "This phone number has already been invited.": + "Questo numero è già stato invitato.", + "An unexpected error occurred. Please try again.": + "Si è verificato un errore imprevisto. Riprova.", + "You deserve the gift": "Ti meriti il regalo", + "Claim your 20 LE gift for inviting": + "Richiedi il tuo regalo di 20 € per l'invito", + "You have got a gift for invitation": + "Hai ricevuto un regalo per l'invito", + "You have earned 20": "Hai guadagnato 20", + "LE": "€", + "Vibration feedback for all buttons": + "Feedback vibrazione per tutti i pulsanti", + "Share with friends and earn rewards": + "Condividi con amici e guadagna premi", + "Gift Already Claimed": "Regalo già richiesto", + "You have already received your gift for inviting": + "Hai già ricevuto il tuo regalo per questo invito", + "Keep it up!": "Continua così!", + "has completed": "ha completato", + "trips": "viaggi", + "Personal Information": "Informazioni personali", + "Name": "Nome", + "Not set": "Non impostato", + "Gender": "Genere", + "Education": "Istruzione", + "Work & Contact": "Lavoro e Contatti", + "Employment Type": "Tipo di impiego", + "Marital Status": "Stato civile", + "SOS Phone": "Telefono SOS", + "Sign Out": "Esci", + "Delete My Account": "Elimina il mio account", + "Update Gender": "Aggiorna genere", + "Update": "Aggiorna", + "Update Education": "Aggiorna istruzione", + "Are you sure? This action cannot be undone.": + "Sei sicuro? Questa azione non può essere annullata.", + "Confirm your Email": "Conferma la tua email", + "Type your Email": "Scrivi la tua email", + "Delete Permanently": "Elimina definitivamente", + "Male": "Maschio", + "Female": "Femmina", + "Other": "Altro", + "High School Diploma": "Diploma di scuola superiore", + "Associate Degree": "Laurea breve", + "Bachelor's Degree": "Laurea triennale", + "Master's Degree": "Laurea magistrale", + "Doctoral Degree": "Dottorato", + "Select your preferred language for the app interface.": + "Seleziona la lingua preferita per l'app.", + "Language Options": "Opzioni lingua", + "You can claim your gift once they complete 2 trips.": + "Puoi richiedere il regalo una volta che completano 2 corse.", + "Closest & Cheapest": "Più vicino ed economico", + "Comfort choice": "Scelta comfort", + "Travel in a modern, silent electric car. A premium, eco-friendly choice for a smooth ride.": + "Viaggia in un'auto elettrica moderna e silenziosa. Una scelta premium ed ecologica.", + "Spacious van service ideal for families and groups. Comfortable, safe, and cost-effective travel together.": + "Servizio van spazioso ideale per famiglie e gruppi. Comodo, sicuro ed economico.", + "Quiet & Eco-Friendly": "Silenzioso ed Ecologico", + "Lady Captain for girls": "Autista donna per ragazze", + "Van for familly": "Furgone per famiglia", "Are you sure to delete this location?": "Sei sicuro di voler eliminare questa posizione?", + "Change Work location?": "Cambiare luogo di lavoro?", + "Change Home location?": "Cambiare indirizzo di casa?", + "Submit a Complaint": "Invia un reclamo", + "Submit Complaint": "Invia reclamo", + "No trip history found": "Nessuna cronologia viaggi", + "Your past trips will appear here.": + "I tuoi viaggi passati appariranno qui.", + "1. Describe Your Issue": "1. Descrivi il problema", + "Enter your complaint here...": "Inserisci qui il tuo reclamo...", + "2. Attach Recorded Audio": "2. Allega audio registrato", + "No audio files found.": "Nessun file audio trovato.", + "Confirm Attachment": "Conferma allegato", + "Attach this audio file?": "Allegare questo file audio?", + "Uploaded": "Caricato", + "3. Review Details & Response": "3. Rivedi dettagli e risposta", + "Date": "Data", + "Today's Promos": "Promo di oggi", + "No promos available right now.": + "Nessuna promozione disponibile ora.", + "Check back later for new offers!": + "Controlla più tardi per nuove offerte!", + "Valid Until:": "Valido fino a:", + "CODE": "CODICE", + "Login": "Accedi", + "Sign in for a seamless experience": + "Accedi per un'esperienza ottimale", + "Sign In with Google": "Accedi con Google", + "Sign in with Apple": "Accedi con Apple", + "User not found": "Utente non trovato", + "Need assistance? Contact us": "Serve aiuto? Contattaci", + "Email": "Email", + "Your email address": "Il tuo indirizzo email", + "Enter a valid email": "Inserisci un'email valida", + "Password": "Password", + "Your password": "La tua password", + "Enter your password": "Inserisci la tua password", + "Submit": "Invia", + "Terms of Use & Privacy Notice": + "Termini d'uso e Informativa sulla privacy", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the ": + "Selezionando \"Accetto\", confermo di aver letto e accettato i ", + "Terms of Use": "Termini d'uso", + " and acknowledge the ": " e prendo atto della ", + "Privacy Notice": "Informativa sulla privacy", + " . I am at least 18 years old.": " . Ho almeno 18 anni.", + "I Agree": "Accetto", + "Continue": "Continua", + "Enable Location": "Attiva posizione", + "To give you the best experience, we need to know where you are. Your location is used to find nearby captains and for pickups.": + "Per offrirti la migliore esperienza, dobbiamo sapere dove sei. La tua posizione serve per trovare autisti vicini.", + "Allow Location Access": "Consenti accesso posizione", + "Welcome to Intaleq!": "Benvenuto in Intaleq!", + "Before we start, please review our terms.": + "Prima di iniziare, rivedi i nostri termini.", + "Your journey starts here": "Il tuo viaggio inizia qui", + "Cancel Search": "Annulla ricerca", + "Set pickup location": "Imposta punto di raccolta", + "Move the map to adjust the pin": + "Sposta la mappa per regolare il segnaposto", + "Searching for the nearest captain...": + "Ricerca del conducente più vicino...", + "No one accepted? Try increasing the fare.": + "Nessuno ha accettato? Prova ad aumentare la tariffa.", + "Increase Your Trip Fee (Optional)": "Aumenta la tariffa (Opzionale)", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "Non abbiamo ancora trovato autisti. Considera di aumentare la tariffa per rendere l'offerta più attraente.", + "No, thanks": "No, grazie", + "Increase Fee": "Aumenta tariffa", + "Copy": "Copia", + "Promo Copied!": "Promo copiata!", + "Code": "Codice", + "copied to clipboard": "copiato negli appunti", + "Price": "Prezzo", + "Intaleq's Response": "Risposta di Intaleq", + "Awaiting response...": "In attesa di risposta...", + "Audio file not attached": "File audio non allegato", + "The audio file is not uploaded yet.\\nDo you want to submit without it?": + "Il file audio non è ancora caricato.\\nVuoi inviare senza?", "deleted": "eliminato", "To Work": "Al lavoro", - "Work Saved": "Posizione lavoro salvata", + "Work Saved": "Lavoro salvato", "To Home": "A casa", - "Home Saved": "Posizione casa salvata", + "Home Saved": "Casa salvata", "Destination selected": "Destinazione selezionata", "Now select start pick": "Ora seleziona il punto di partenza", "OK": "OK", - "Confirm Pick-up Location": "Conferma punto di ritiro", + "Confirm Pick-up Location": "Conferma punto di raccolta", "Set Location on Map": "Imposta posizione sulla mappa", + "Leave a detailed comment (Optional)": + "Lascia un commento dettagliato (Opzionale)", + "Share your experience to help us improve...": + "Condividi la tua esperienza per aiutarci a migliorare...", + "Your valuable feedback helps us improve our service quality.": + "Il tuo prezioso feedback ci aiuta a migliorare la qualità del servizio.", + "witout zero": "senza zero", + "Top up Balance": "Ricarica saldo", + "An error occurred": "Si è verificato un errore", + "Send WhatsApp Message": "Invia messaggio WhatsApp", + "How was your trip with": "Com'è andato il viaggio con", + "Drawing route on map...": "Disegno percorso sulla mappa...", + "Please wait while we prepare your trip.": + "Attendi mentre prepariamo il tuo viaggio.", + "Submit Rating": "Invia valutazione", + "Call Support": "Chiama supporto", + "You can contact us during working hours from 10:00 - 16:00.": + "Puoi contattarci durante l'orario di lavoro 10:00 - 16:00.", + "Intaleq is the safest and most reliable ride-sharing app designed especially for passengers in Syria. We provide a comfortable, respectful, and affordable riding experience with features that prioritize your safety and convenience. Our trusted captains are verified, insured, and supported by regular car maintenance carried out by top engineers. We also offer on-road support services to make sure every trip is smooth and worry-free. With Intaleq, you enjoy quality, safety, and peace of mind—every time you ride.": + "Intaleq è l'app di ride-sharing più sicura e affidabile in Italia. Offriamo un'esperienza confortevole, rispettosa e conveniente. I nostri autisti sono verificati e assicurati.", + "Work time is from 10:00 AM to 16:00 PM.\nYou can send a WhatsApp message or email.": + "Orario di lavoro 10:00 - 16:00.\nPuoi inviare un messaggio WhatsApp o email.", + "Sorry": "Spiacente", + "Customer MSISDN doesn’t have customer wallet": + "Il numero cliente non ha un portafoglio", + "Please enter the number without the leading 0": + "Inserisci il numero senza lo 0 iniziale", + "Please enter your phone number": + "Inserisci il tuo numero di telefono", + "Phone number seems too short": "Il numero sembra troppo corto", + "No cars are available at the moment. Please try again later.": + "Nessuna auto disponibile al momento. Riprova più tardi.", "Nearest Car: ~": "Auto più vicina: ~", "Nearest Car": "Auto più vicina", "No cars nearby": "Nessuna auto nelle vicinanze", @@ -14427,199 +18366,162 @@ class MyTranslation extends Translations { "No favorite places yet!": "Nessun luogo preferito ancora!", "from your favorites": "dai tuoi preferiti", "Back": "Indietro", - "Sign in for a seamless experience": - "Accedi per un'esperienza senza interruzioni", - "Sign In with Google": "Accedi con Google", - "Sign in with Apple": "Accedi con Apple", - "Need assistance? Contact us": "Hai bisogno di aiuto? Contattaci", - "User not found": "Utente non trovato", - "Email": "Email", - "Your email address": "Il tuo indirizzo email", - "Enter a valid email": "Inserisci un'email valida", - "Password": "Password", - // "Your password": "La tua password", - "Enter your password": "Inserisci la tua password", - "Submit": "Invia", - "Terms of Use & Privacy Notice": - "Termini di utilizzo e Informativa sulla privacy", - "Terms of Use": "Termini di utilizzo", - "Privacy Notice": "Informativa sulla privacy", + "Enter your code below to apply the discount.": + "Inserisci il codice qui sotto per applicare lo sconto.", "By selecting \"I Agree\" below, I confirm that I have read and agree to the": - "Selezionando \"Accetto\" qui sotto, confermo di aver letto e accettato i", - "and acknowledge the": "e riconosco la", - ". I am at least 18 years old.": ". Ho almeno 18 anni.", - "Continue": "Continua", - "Enable Location Access": "Abilita accesso alla posizione", + "Selezionando \"Accetto\", confermo di aver letto e accettato i", + "and acknowledge the": "e prendo atto della", + "Enable Location Access": "Abilita accesso posizione", "We need your location to find nearby drivers for pickups and drop-offs.": - "Abbiamo bisogno della tua posizione per trovare i conducenti vicini per ritiri e consegne.", - "Allow Location Access": "Consenti accesso alla posizione", + "Abbiamo bisogno della tua posizione per trovare autisti vicini.", "You should restart app to change language": - "Dovresti riavviare l'app per cambiare lingua", - "Home Page": "Pagina iniziale", - "To change Language the App": "Per cambiare la lingua dell'app", + "Riavvia l'app per cambiare lingua", + "Home Page": "Home Page", + "To change Language the App": "Per cambiare la lingua dell'App", "Learn more about our app and mission": "Scopri di più sulla nostra app e missione", - "Promos For Today": "Promozioni per oggi", + "Promos For Today": "Promo per oggi", "Choose your ride": "Scegli la tua corsa", "Your Journey Begins Here": "Il tuo viaggio inizia qui", "Bonus gift": "Regalo bonus", "Pay": "Paga", "Get": "Ottieni", - "Send to Driver Again": "Invia di nuovo al conducente", - "Driver Name:": "Nome conducente:", + "Send to Driver Again": "Invia di nuovo all'autista", + "Driver Name:": "Nome autista:", "No trip data available": "Nessun dato di viaggio disponibile", - "Car Plate:": "Targa auto:", + "Car Plate:": "Targa:", "remaining": "rimanente", "Order Cancelled": "Ordine annullato", "You canceled VIP trip": "Hai annullato il viaggio VIP", "Passenger cancelled order": "Il passeggero ha annullato l'ordine", "Your trip is scheduled": "Il tuo viaggio è programmato", "Don't forget your ride!": "Non dimenticare la tua corsa!", - "Trip updated successfully": "Viaggio aggiornato con successo", - "Car Make:": "Marca auto:", - "Car Model:": "Modello auto:", - "Car Color:": "Colore auto:", - "Driver Phone:": "Telefono conducente:", + "Trip updated successfully": "Corsa aggiornata con successo", + "Car Make:": "Marca:", + "Car Model:": "Modello:", + "Car Color:": "Colore:", + "Driver Phone:": "Tel. Autista:", "Pre-booking": "Prenotazione anticipata", - "Waiting VIP": "In attesa VIP", - "Driver List": "Lista conducenti", - "Confirm Trip": "Conferma viaggio", - "Select date and time of trip": "Seleziona data e ora del viaggio", - "Date and Time Picker": "Selettore data e ora", - "Trip Status:": "Stato viaggio:", + "Waiting VIP": "Attesa VIP", + "Driver List": "Lista autisti", + "Confirm Trip": "Conferma corsa", + "Select date and time of trip": "Seleziona data e ora", + "Date and Time Picker": "Selettore Data e Ora", + "Trip Status:": "Stato corsa:", "pending": "in attesa", "accepted": "accettato", "rejected": "rifiutato", "Apply": "Applica", - "Enter your promo code": "Inserisci il tuo codice promozionale", - "Apply Promo Code": "Applica codice promozionale", + "Enter your promo code": "Inserisci codice promo", + "Apply Promo Code": "Applica codice promo", "Scheduled Time:": "Orario programmato:", - "No drivers available": "Nessun conducente disponibile", + "No drivers available": "Nessun autista disponibile", "No drivers available at the moment. Please try again later.": - "Nessun conducente disponibile al momento. Riprova più tardi.", + "Nessun autista disponibile al momento. Riprova più tardi.", "you have a negative balance of": "hai un saldo negativo di", "Please try again in a few moments": "Riprova tra qualche istante", - "Unknown Driver": "Conducente sconosciuto", + "Unknown Driver": "Autista sconosciuto", "in your": "nel tuo", "The driver accepted your order for": - "Il conducente ha accettato il tuo ordine per", + "L'autista ha accettato il tuo ordine per", "wallet due to a previous trip.": "portafoglio a causa di un viaggio precedente.", "rides": "corse", "Add Work": "Aggiungi lavoro", - "The reason is": "La ragione è", + "The reason is": "Il motivo è", "User does not have a wallet #1652": "L'utente non ha un portafoglio #1652", - "Price of trip": "Prezzo del viaggio", + "Price of trip": "Prezzo della corsa", "From:": "Da:", "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "Per i viaggi Intaleq e Delivery, il prezzo è calcolato dinamicamente. Per i viaggi Comfort, il prezzo è basato su tempo e distanza.", - "Phone Wallet Saved Successfully": - "Portafoglio telefonico salvato con successo", + "Per Intaleq e Consegne, il prezzo è dinamico. Per Comfort, è basato su tempo e distanza.", + "Phone Wallet Saved Successfully": "Telefono portafoglio salvato", "Add wallet phone you use": "Aggiungi il telefono del portafoglio che usi", "Update Available": "Aggiornamento disponibile", "Phone number must be exactly 11 digits long": - "Il numero di telefono deve essere esattamente di 11 cifre", - "Insert Wallet phone number": - "Inserisci il numero di telefono del portafoglio", + "Il numero deve avere 10 cifre", + "Insert Wallet phone number": "Inserisci numero portafoglio", "Phone number isn't an Egyptian phone number": - "Il numero di telefono non è un numero egiziano", + "Il numero non è valido", "A new version of the app is available. Please update to the latest version.": - "È disponibile una nuova versione dell'app. Aggiorna all'ultima versione.", + "Nuova versione disponibile. Aggiorna all'ultima versione.", "We use location to get accurate and nearest passengers for you": - "Usiamo la posizione per ottenere passeggeri accurati e più vicini per te", + "Usiamo la posizione per trovare i passeggeri più vicini", "This ride is already applied by another driver.": - "Questa corsa è già stata applicata da un altro conducente.", + "Questa corsa è già stata presa da un altro autista.", "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": - "Usiamo la tua posizione precisa per trovare il conducente disponibile più vicino e fornire informazioni accurate su ritiro e consegna. Puoi gestire questo nelle Impostazioni.", + "Usiamo la tua posizione precisa per trovare l'autista più vicino e fornire informazioni accurate. Puoi gestirlo nelle Impostazioni.", "Where are you, sir?": "Dove sei, signore?", "I've been trying to reach you but your phone is off.": - "Ho cercato di contattarti ma il tuo telefono è spento.", - "Please don't be late": "Per favore, non fare tardi", + "Ho provato a chiamarti ma il telefono è spento.", + "Please don't be late": "Per favore non fare tardi", "Please don't be late, I'm waiting for you at the specified location.": - "Per favore, non fare tardi, ti aspetto nel luogo specificato.", + "Non fare tardi, ti aspetto nel luogo indicato.", "My location is correct. You can search for me using the navigation app": - "La mia posizione è corretta. Puoi cercarmi usando l'app di navigazione", + "La mia posizione è corretta. Puoi cercarmi con il navigatore", "Hello, I'm at the agreed-upon location": "Ciao, sono nel luogo concordato", - "How much longer will you be?": "Quanto ci metterai ancora?", - "Phone number is verified before": - "Il numero di telefono è già stato verificato", + "How much longer will you be?": "Quanto tempo ci vuole ancora?", + "Phone number is verified before": "Il numero è già verificato", "Change Ride": "Cambia corsa", "You can change the destination by long-pressing any point on the map": - "Puoi cambiare la destinazione premendo a lungo qualsiasi punto sulla mappa", - "Pick from map destination": "Scegli la destinazione dalla mappa", + "Puoi cambiare destinazione premendo a lungo sulla mappa", + "Pick from map destination": "Scegli destinazione dalla mappa", "Pick or Tap to confirm": "Scegli o tocca per confermare", - "Accepted your order": "Il tuo ordine è stato accettato", + "Accepted your order": "Ha accettato il tuo ordine", "Order Accepted": "Ordine accettato", "with type": "con tipo", - "accepted your order at price": - "ha accettato il tuo ordine al prezzo di", + "accepted your order at price": "ha accettato l'ordine al prezzo", "you canceled order": "hai annullato l'ordine", "If you want order to another person": "Se vuoi ordinare per un'altra persona", - // "Ok I will go now.": "Ok, vado ora.", - // "Hi, I will go now": "Ciao, vado ora", - "upgrade price": "prezzo aggiornato", - "Please enter a correct phone": - "Per favore, inserisci un telefono corretto", + "upgrade price": "aumenta prezzo", "airport": "aeroporto", "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": - "Scelta migliore per un'auto comoda con un percorso flessibile e punti di sosta. Questo aeroporto offre l'ingresso con visto a questo prezzo.", + "Migliore scelta per un'auto comoda con percorso flessibile.", "You can upgrade price to may driver accept your order": - "Puoi aggiornare il prezzo per far accettare l'ordine al conducente", + "Puoi aumentare il prezzo per far accettare l'autista", "Change Route": "Cambia percorso", - "No Captain Accepted Your Order": - "Nessun capitano ha accettato il tuo ordine", + "No Captain Accepted Your Order": "Nessun conducente ha accettato", "We are looking for a captain but the price may increase to let a captain accept": - "Stiamo cercando un capitano ma il prezzo potrebbe aumentare per far accettare l'ordine", - "No, I want to cancel this trip": - "No, voglio annullare questo viaggio", - // "Trip Cancelled. The cost of the trip will be added to your wallet.": "Viaggio annullato. Il costo del viaggio verrà aggiunto al tuo portafoglio.", + "Cerchiamo un conducente ma il prezzo potrebbe aumentare", + "No, I want to cancel this trip": "No, voglio annullare questa corsa", "Attention": "Attenzione", "Trip Cancelled. The cost of the trip will be deducted from your wallet.": - "Viaggio annullato. Il costo del viaggio verrà detratto dal tuo portafoglio.", + "Corsa annullata. Il costo sarà detratto dal portafoglio.", "You will be charged for the cost of the driver coming to your location.": - "Ti verrà addebitato il costo del conducente che viene alla tua posizione.", - "reject your order.": "rifiuta il tuo ordine.", + "Ti verrà addebitato il costo dell'arrivo dell'autista.", + "reject your order.": "rifiutare il tuo ordine.", "Order Under Review": "Ordine in revisione", "is reviewing your order. They may need more information or a higher price.": - "sta revisionando il tuo ordine. Potrebbero aver bisogno di maggiori informazioni o di un prezzo più alto.", - // "The driver canceled your ride.": "Il conducente ha annullato la tua corsa.", - "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": - "Non abbiamo ancora trovato nessun conducente. Considera di aumentare la tariffa del viaggio per rendere la tua offerta più attraente per i conducenti.", - "Increase Your Trip Fee (Optional)": - "Aumenta la tariffa del viaggio (opzionale)", + "sta esaminando il tuo ordine. Potrebbero servire più info o un prezzo più alto.", "Vibration": "Vibrazione", - "Resend code": "Rinvia codice", - // "token change": "Cambio token", - "change device": "Cambia dispositivo", - "Device Change Detected": "Cambio dispositivo rilevato", + "Resend code": "Invia di nuovo codice", + "change device": "cambia dispositivo", + "Device Change Detected": "Rilevato cambio dispositivo", "You can only use one device at a time. This device will now be set as your active device.": - "Puoi usare solo un dispositivo alla volta. Questo dispositivo sarà ora impostato come dispositivo attivo.", - "Click here point": "Clicca qui", + "Puoi usare solo un dispositivo alla volta. Questo dispositivo è ora attivo.", + "Click here point": "Clicca qui punto", "Are you want to change": "Vuoi cambiare", "by": "da", - "Enter your complaint here": "Inserisci il tuo reclamo qui", - "Please enter your complaint.": - "Per favore, inserisci il tuo reclamo.", + "Enter your complaint here": "Inserisci qui il reclamo", + "Please enter your complaint.": "Inserisci il tuo reclamo.", "Complaint data saved successfully": - "Dati del reclamo salvati con successo", - "Trip Monitor": "Monitoraggio viaggio", + "Dati reclamo salvati con successo", + "Trip Monitor": "Monitor viaggio", "Insert SOS Phone": "Inserisci telefono SOS", "Add SOS Phone": "Aggiungi telefono SOS", - // "Trip Monitoring": "Monitoraggio viaggio", - "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": - "Caro ,\n\n🚀 Ho appena iniziato un viaggio emozionante e vorrei condividere con te in tempo reale i dettagli del mio viaggio e la mia posizione attuale! Scarica l'app Intaleq. Ti permetterà di visualizzare i dettagli del mio viaggio e la mia ultima posizione.\n\n👈 Link di download:\nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nNon vedo l'ora di tenerti vicino durante la mia avventura!\n\nIntaleq ,", - "Send Intaleq app to him": "Inviagli l'app Intaleq", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "Caro,\n\n🚀 Ho appena iniziato un viaggio e voglio condividere i dettagli e la mia posizione con te! Scarica l'app Intaleq.\n\n👉 Link download:\nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nIntaleq ,", + "Send Intaleq app to him": "Invia app Intaleq a lui", "No passenger found for the given phone number": - "Nessun passeggero trovato per il numero di telefono fornito", + "Nessun passeggero trovato per questo numero", "No user found for the given phone number": - "Nessun utente trovato per il numero di telefono fornito", + "Nessun utente trovato per questo numero", "This price is": "Questo prezzo è", "Work": "Lavoro", - "Add Home": "Aggiungi casa", + "Add Home": "Aggiungi Casa", "Notifications": "Notifiche", "💳 Pay with Credit Card": "💳 Paga con carta di credito", "⚠️ You need to choose an amount!": "⚠️ Devi scegliere un importo!", @@ -14627,134 +18529,136 @@ class MyTranslation extends Translations { "You must restart the app to change the language.": "Devi riavviare l'app per cambiare lingua.", "joined": "unito", - "Driver joined the channel": "Il conducente si è unito al canale", - "Driver left the channel": "Il conducente ha lasciato il canale", + "Driver joined the channel": "L'autista si è unito al canale", + "Driver left the channel": "L'autista ha lasciato il canale", "Call Page": "Pagina chiamata", - // "Call End": "Chiamata terminata", - "Call Left": "Chiamata rimanente", - r"$ Next as Cash $!": "Prossimo come contanti!", + "Call Left": "Chiamate rimaste", + " Next as Cash !": " Prossimo in contanti!", "To use Wallet charge it": "Per usare il portafoglio, ricaricalo", "We are searching for the nearest driver to you": - "Stiamo cercando il conducente più vicino a te", - "Best choice for cities": "Scelta migliore per le città", + "Cerchiamo l'autista più vicino a te", + "Best choice for cities": "Migliore scelta per città", "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": - "Rayeh Gai: Servizio di viaggio di andata e ritorno per viaggi convenienti tra città, facile e affidabile.", - "Rayeh Gai": "Rayeh Gai", - "This trip is for women only": "Questo viaggio è solo per donne", - "Total budgets on month": "Budget totale del mese", - "You have call from driver": "Hai una chiamata dal conducente", - "Comfort": "Comfort", - "Intaleq": "Velocità", + "Andata e Ritorno: Servizio comodo per viaggiare tra città.", + "This trip is for women only": "Questa corsa è solo per donne", + "Total budgets on month": "Budget totali nel mese", + "You have call from driver": "Hai una chiamata dall'autista", + "Intaleq": "Intaleq", + "passenger agreement": "accordo passeggero", + "To become a passenger, you must review and agree to the ": + "Per diventare passeggero, devi accettare i ", + "agreement subtitle": + "Per continuare, devi accettare i Termini d'uso e l'Informativa sulla privacy.", + "terms of use": "termini d'uso", + " and acknowledge our Privacy Policy.": + " e l'Informativa sulla Privacy.", + "and acknowledge our": "e accetta la nostra", + "privacy policy": "politica sulla privacy.", + "i agree": "accetto", "Driver already has 2 trips within the specified period.": - "Il conducente ha già 2 viaggi nel periodo specificato.", - "The invitation was sent successfully": - "L'invito è stato inviato con successo", - "Lady": "Signora", + "L'autista ha già 2 viaggi nel periodo specificato.", + "The invitation was sent successfully": "Invito inviato con successo", "You should select your country": "Dovresti selezionare il tuo paese", "Scooter": "Scooter", "A trip with a prior reservation, allowing you to choose the best captains and cars.": - "Un viaggio con prenotazione anticipata, che ti permette di scegliere i migliori capitani e auto.", - "Mishwar Vip": "Mishwar Vip", + "Viaggio con prenotazione, scegli i migliori autisti e auto.", + "Mishwar Vip": "Viaggio VIP", "The driver waiting you in picked location .": - "Il conducente ti aspetta nel luogo selezionato.", + "L'autista ti aspetta al punto di raccolta.", "About Us": "Chi siamo", "You can change the vibration feedback for all buttons": - "Puoi cambiare il feedback di vibrazione per tutti i pulsanti", + "Puoi cambiare la vibrazione per tutti i pulsanti", "Most Secure Methods": "Metodi più sicuri", "In-App VOIP Calls": "Chiamate VOIP in-app", "Recorded Trips for Safety": "Viaggi registrati per sicurezza", "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": - "\nDiamo anche priorità alla convenienza, offrendo prezzi competitivi per rendere le tue corse accessibili.", + "\nOffriamo prezzi competitivi.", "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": - "Intaleq è un'app di ride-sharing progettata pensando alla tua sicurezza e convenienza. Ti colleghiamo a conducenti affidabili nella tua zona, garantendo un'esperienza di viaggio comoda e senza stress.\n\nEcco alcune delle caratteristiche principali che ci distinguono:", + "Intaleq è un'app di ride-sharing progettata per sicurezza e risparmio.", "Sign In by Apple": "Accedi con Apple", "Sign In by Google": "Accedi con Google", - "How do I request a ride?": "Come posso richiedere una corsa?", + "How do I request a ride?": "Come richiedo una corsa?", "Step-by-step instructions on how to request a ride through the Intaleq app.": - "Istruzioni passo-passo su come richiedere una corsa tramite l'app Intaleq.", + "Istruzioni passo-passo per richiedere una corsa.", "What types of vehicles are available?": - "Quali tipi di veicoli sono disponibili?", + "Quali veicoli sono disponibili?", "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": - "Intaleq offre una varietà di opzioni di veicoli per soddisfare le tue esigenze, inclusi economia, comfort e lusso. Scegli l'opzione che meglio si adatta al tuo budget e al numero di passeggeri.", - "How can I pay for my ride?": "Come posso pagare la mia corsa?", + "Intaleq offre opzioni Economy, Comfort e Luxury.", + "How can I pay for my ride?": "Come posso pagare?", "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": - "Intaleq offre più metodi di pagamento per tua comodità. Scegli tra pagamento in contanti o con carta di credito/debito durante la conferma della corsa.", - "Can I cancel my ride?": "Posso annullare la mia corsa?", - "Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.": - "Sì, puoi annullare la tua corsa a determinate condizioni (ad esempio, prima che il conducente sia assegnato). Vedi la politica di cancellazione di Intaleq per i dettagli.", + "Puoi pagare in contanti o con carta.", + "Can I cancel my ride?": "Posso annullare la corsa?", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "Sì, puoi annullare, ma potrebbero esserci costi.", "Driver Registration & Requirements": - "Registrazione e requisiti per i conducenti", - "How can I register as a driver?": - "Come posso registrarmi come conducente?", + "Registrazione Autista e Requisiti", + "How can I register as a driver?": "Come mi registro come autista?", "What are the requirements to become a driver?": - "Quali sono i requisiti per diventare un conducente?", + "Quali sono i requisiti?", "Visit our website or contact Intaleq support for information on driver registration and requirements.": - "Visita il nostro sito web o contatta il supporto Intaleq per informazioni sulla registrazione e i requisiti dei conducenti.", + "Visita il sito o contatta il supporto.", "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": - "Intaleq fornisce una funzionalità di chat in-app per permetterti di comunicare con il tuo conducente o passeggero durante il viaggio.", + "Intaleq offre una chat in-app.", "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": - "Intaleq dà priorità alla tua sicurezza. Offriamo funzionalità come la verifica del conducente, il tracciamento del viaggio in-app e opzioni di contatto di emergenza.", - "Frequently Questions": "Domande frequenti", + "Verifica autista, tracciamento viaggio, contatti emergenza.", + "Frequently Questions": "Domande Frequenti", "User does not exist.": "L'utente non esiste.", "We need your phone number to contact you and to help you.": - "Abbiamo bisogno del tuo numero di telefono per contattarti e aiutarti.", - "You will recieve code in sms message": - "Riceverai il codice in un messaggio SMS", - "Please enter": "Per favore, inserisci", + "Ci serve il tuo numero per contattarti.", + "You will recieve code in sms message": "Riceverai un codice via SMS", + "Please enter": "Inserisci", "We need your phone number to contact you and to help you receive orders.": - "Abbiamo bisogno del tuo numero di telefono per contattarti e aiutarti a ricevere ordini.", - "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": - "Il nome completo sul tuo casellario giudiziale non corrisponde a quello sulla tua patente di guida. Verifica e fornisci i documenti corretti.", - "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": - "Il numero nazionale sulla tua patente di guida non corrisponde a quello sul tuo documento d'identità. Verifica e fornisci i documenti corretti.", + "Ci serve il tuo numero per ricevere ordini.", + "The full name on your criminal record does not match the one on your driver's license. Please verify and provide the correct documents.": + "Il nome sul casellario non corrisponde alla patente.", + "The national number on your driver's license does not match the one on your ID document. Please verify and provide the correct documents.": + "Il numero della patente non corrisponde al documento d'identità.", "Capture an Image of Your Criminal Record": - "Cattura un'immagine del tuo casellario giudiziale", - "IssueDate": "Data di emissione", - "Capture an Image of Your car license front ": - "Cattura un'immagine della parte anteriore della tua patente auto", + "Cattura immagine del Casellario Giudiziale", + "IssueDate": "Data rilascio", + "Capture an Image of Your car license front": + "Foto fronte libretto circolazione", "Capture an Image of Your ID Document front": - "Cattura un'immagine della parte anteriore del tuo documento d'identità", - "NationalID": "ID nazionale", + "Foto fronte documento identità", + "NationalID": "Numero Carta d'Identità", "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": - "Puoi condividere l'app Intaleq con i tuoi amici e guadagnare ricompense per le corse che fanno usando il tuo codice", + "Condividi l'app e guadagna premi.", "FullName": "Nome completo", - "No invitation found yet!": "Nessun invito trovato ancora!", + "No invitation found yet!": "Nessun invito trovato!", "InspectionResult": "Risultato ispezione", - "Criminal Record": "Casellario giudiziale", - "Share App": "Condividi app", + "Criminal Record": "Casellario Giudiziale", "The email or phone number is already registered.": - "L'email o il numero di telefono è già registrato.", + "Email o numero già registrati.", "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": - "Per diventare un conducente di ride-sharing sull'app Intaleq, devi caricare la tua patente di guida, il documento d'identità e il documento di registrazione dell'auto. Il nostro sistema AI esaminerà e verificherà istantaneamente la loro autenticità in soli 2-3 minuti. Se i tuoi documenti sono approvati, puoi iniziare a lavorare come conducente sull'app Intaleq. Nota che la presentazione di documenti fraudolenti è un reato grave e può comportare la risoluzione immediata e conseguenze legali.", + "Carica patente, documento d'identità e libretto. Verifica in 2-3 minuti.", "Documents check": "Controllo documenti", "Driver's License": "Patente di guida", "for your first registration!": "per la tua prima registrazione!", "Get it Now!": "Ottienilo ora!", "before": "prima", "Code not approved": "Codice non approvato", - "3000 LE": "3000 LE", + "3000 LE": "30 €", "Do you have an invitation code from another driver?": - "Hai un codice di invito da un altro conducente?", + "Hai un codice invito?", "Paste the code here": "Incolla il codice qui", "No, I don't have a code": "No, non ho un codice", "Code approved": "Codice approvato", "Install our app:": "Installa la nostra app:", "Invite another driver and both get a gift after he completes 100 trips!": - "Invita un altro conducente e entrambi riceverete un regalo dopo che avrà completato 100 viaggi!", + "Invita un autista e ricevi un regalo dopo 100 corse!", "Invite": "Invita", "Are you sure?": "Sei sicuro?", "This will delete all recorded files from your device.": - "Questo cancellerà tutti i file registrati dal tuo dispositivo.", + "Questo eliminerà tutti i file registrati.", "Select a file": "Seleziona un file", - "Select a File": "Seleziona un file", + "Select a File": "Seleziona un File", "Delete": "Elimina", - "attach audio of complain": "allega audio del reclamo", - "Phone Number Check": "Controllo numero di telefono", - "Drivers received orders": "I conducenti hanno ricevuto ordini", + "attach audio of complain": "allega audio reclamo", + "Phone Number Check": "Controllo numero telefono", + "Drivers received orders": "Gli autisti hanno ricevuto ordini", "No audio files recorded.": "Nessun file audio registrato.", "This is for delivery or a motorcycle.": - "Questo è per la consegna o una moto.", - // "We will look for a new driver.\nPlease wait.": "Cercheremo un nuovo conducente.\nPer favore, attendi.", + "Questo è per consegna o moto.", "Intaleq Reminder": "Promemoria Intaleq", "It's time to check the Intaleq app!": "È ora di controllare l'app Intaleq!", @@ -14763,55 +18667,50 @@ class MyTranslation extends Translations { "Qualcosa è andato storto. Riprova.", "Trip Details": "Dettagli viaggio", "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": - "Il contesto non fornisce dettagli sul reclamo, quindi non posso fornire una soluzione a questo problema. Fornisci le informazioni necessarie e sarò felice di aiutarti.", + "Nessun dettaglio sul reclamo.", "Submit Your Complaint": "Invia il tuo reclamo", - "Date": "Data", - "Price": "Prezzo", "Status": "Stato", "Choose from contact": "Scegli dai contatti", "attach correct audio": "allega audio corretto", "be sure": "assicurati", "Audio uploaded successfully.": "Audio caricato con successo.", "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": - "Perfetto per i passeggeri che cercano le ultime modelli di auto con la libertà di scegliere qualsiasi percorso desiderino", + "Perfetto per chi cerca auto nuove e libertà di percorso", "Share this code with your friends and earn rewards when they use it!": - "Condividi questo codice con i tuoi amici e guadagna ricompense quando lo usano!", + "Condividi questo codice e guadagna premi!", "Enter phone": "Inserisci telefono", - "You deserve the gift": "Ti meriti il regalo", "complete, you can claim your gift": - "completo, puoi richiedere il tuo regalo", + "completato, puoi richiedere il regalo", "When": "Quando", - "Enter driver's phone": "Inserisci il telefono del conducente", + "Enter driver's phone": "Inserisci telefono autista", "Send Invite": "Invia invito", "Show Invitations": "Mostra inviti", - "License Type": "Tipo di licenza", - "National Number": "Numero nazionale", - "Name (Arabic)": "Nome (arabo)", - "Name (English)": "Nome (inglese)", + "License Type": "Tipo patente", + "National Number": "Numero Carta d'Identità", + "Name (Arabic)": "Nome (Locale)", + "Name (English)": "Nome (Inglese)", "Address": "Indirizzo", - "Issue Date": "Data di emissione", - "Expiry Date": "Data di scadenza", - "License Categories": "Categorie di licenza", - "driver_license": "patente di guida", + "Issue Date": "Data rilascio", + "Expiry Date": "Data scadenza", + "License Categories": "Categorie patente", + "driver_license": "patente_guida", "Capture an Image of Your Driver License": - "Cattura un'immagine della tua patente di guida", - "ID Documents Back": "Retro del documento d'identità", - "National ID": "ID nazionale", + "Cattura immagine della patente", + "ID Documents Back": "Retro documento identità", + "National ID": "Carta d'Identità", "Occupation": "Occupazione", - "Gender": "Genere", "Religion": "Religione", - "Marital Status": "Stato civile", - "Full Name (Marital)": "Nome completo (matrimoniale)", - "Expiration Date": "Data di scadenza", + "Full Name (Marital)": "Nome completo", + "Expiration Date": "Data scadenza", "Capture an Image of Your ID Document Back": - "Cattura un'immagine del retro del tuo documento d'identità", - "ID Documents Front": "Fronte del documento d'identità", + "Foto retro documento identità", + "ID Documents Front": "Fronte documento identità", "First Name": "Nome", - "CardID": "ID carta", - "Vehicle Details Front": "Dettagli veicolo fronte", - "Plate Number": "Numero di targa", - "Owner Name": "Nome proprietario", - "Vehicle Details Back": "Dettagli veicolo retro", + "CardID": "ID Carta", + "Vehicle Details Front": "Dettagli veicolo Fronte", + "Plate Number": "Targa", + "Owner Name": "Proprietario", + "Vehicle Details Back": "Dettagli veicolo Retro", "Make": "Marca", "Model": "Modello", "Year": "Anno", @@ -14819,666 +18718,534 @@ class MyTranslation extends Translations { "Color": "Colore", "Displacement": "Cilindrata", "Fuel": "Carburante", - "Tax Expiry Date": "Data di scadenza tasse", - "Inspection Date": "Data di ispezione", + "Tax Expiry Date": "Scadenza bollo", + "Inspection Date": "Data revisione", "Capture an Image of Your car license back": - "Cattura un'immagine del retro della tua patente auto", - "Capture an Image of Your Driver’s License": - "Cattura un'immagine della tua patente di guida", + "Foto retro libretto circolazione", + "Capture an Image of Your Driver's License": "Foto patente di guida", "Sign in with Google for easier email and name entry": - "Accedi con Google per un inserimento più semplice di email e nome", + "Accedi con Google per facilità", "You will choose allow all the time to be ready receive orders": - "Sceglierai di consentire tutto il tempo per essere pronto a ricevere ordini", - "Welcome to Intaleq!": "Benvenuto in Intaleq!", + "Scegli 'Consenti sempre' per ricevere ordini", "Get to your destination quickly and easily.": - "Raggiungi la tua destinazione in modo rapido e semplice.", + "Arriva a destinazione velocemente.", "Enjoy a safe and comfortable ride.": - "Goditi un viaggio sicuro e confortevole.", + "Goditi una corsa sicura e comoda.", "Choose Language": "Scegli lingua", - "Login": "Accedi", - "Pay with Wallet": "Paga con portafoglio", + "Pay with Wallet": "Paga con Portafoglio", "Invalid MPIN": "MPIN non valido", "Invalid OTP": "OTP non valido", - // "Driver Accepted the Ride for You": "Il conducente ha accettato la corsa per te", - "Enter your email address": "Inserisci il tuo indirizzo email", - "Please enter Your Email.": "Per favore, inserisci la tua email.", - "Enter your phone number": "Inserisci il tuo numero di telefono", - "Please enter your phone number.": - "Per favore, inserisci il tuo numero di telefono.", - "Please enter Your Password.": - "Per favore, inserisci la tua password.", + "Enter your email address": "Inserisci la tua email", + "Please enter Your Email.": "Inserisci la tua email.", + "Enter your phone number": "Inserisci il tuo numero", + "Please enter your phone number.": "Inserisci il numero di telefono.", + "Please enter Your Password.": "Inserisci la password.", "if you dont have account": "se non hai un account", "Register": "Registrati", "Accept Ride's Terms & Review Privacy Notice": - "Accetta i termini della corsa e rivedi l'informativa sulla privacy", + "Accetta Termini e Privacy", "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": - "Selezionando 'Accetto' qui sotto, confermo di aver letto e accettato i Termini di utilizzo e riconosco l'Informativa sulla privacy. Ho almeno 18 anni.", - "I Agree": "Accetto", - // "Finish Monitor": "Termina monitoraggio", + "Selezionando 'Accetto', confermo di aver letto termini e privacy. Ho 18 anni.", "First name": "Nome", "Enter your first name": "Inserisci il tuo nome", - "Please enter your first name.": "Per favore, inserisci il tuo nome.", + "Please enter your first name.": "Inserisci il nome.", "Last name": "Cognome", "Enter your last name": "Inserisci il tuo cognome", - "Please enter your last name.": - "Per favore, inserisci il tuo cognome.", + "Please enter your last name.": "Inserisci il cognome.", "City": "Città", - "Please enter your City.": "Per favore, inserisci la tua città.", - "Male": "Maschio", - "Female": "Femmina", - "Verify Email": "Verifica email", + "Please enter your City.": "Inserisci la città.", + "Verify Email": "Verifica Email", "We sent 5 digit to your Email provided": - "Abbiamo inviato 5 cifre alla tua email fornita", + "Inviate 5 cifre alla tua email", "5 digit": "5 cifre", - "Send Verification Code": "Invia codice di verifica", - "Your Ride Duration is ": "La durata della tua corsa è ", - "You will be thier in": "Sarai lì tra", - "You trip distance is": "La distanza del tuo viaggio è", - "Fee is": "La tariffa è", + "Send Verification Code": "Invia codice verifica", + "Your Ride Duration is ": "Durata corsa: ", + "You will be thier in": "Sarai lì in", + "You trip distance is": "Distanza viaggio:", + "Fee is": "Tariffa:", "From : ": "Da: ", "To : ": "A: ", - "Add Promo": "Aggiungi promozione", + "Add Promo": "Aggiungi Promo", "Confirm Selection": "Conferma selezione", - "distance is": "la distanza è", + "distance is": "distanza è", + "Privacy Policy": "Informativa sulla privacy", "Intaleq LLC": "Intaleq LLC", - "Egypt's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": - "Il servizio pionieristico di ride-sharing in Egitto, sviluppato con orgoglio da proprietari arabi e locali. Diamo priorità alla vicinanza a te – sia ai nostri preziosi passeggeri che ai nostri dedicati capitani.", - "Why Choose Intaleq?": "Perché scegliere Intaleq?", + "Syria's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "Servizio di ride-sharing pionieristico in Italia.", + "Intaleq is the first ride-sharing app in Syria, designed to connect you with the nearest drivers for a quick and convenient travel experience.": + "Intaleq ti connette con gli autisti più vicini.", + "Why Choose Intaleq?": "Perché Intaleq?", "Closest to You": "Più vicino a te", "We connect you with the nearest drivers for faster pickups and quicker journeys.": - "Ti colleghiamo ai conducenti più vicini per ritiri più veloci e viaggi più rapidi.", + "Ti connettiamo agli autisti più vicini.", "Uncompromising Security": "Sicurezza senza compromessi", - "Lady Captains Available": "Capitani donna disponibili", + "Lady Captains Available": "Autiste donne disponibili", "Recorded Trips (Voice & AI Analysis)": - "Viaggi registrati (analisi vocale e AI)", - "Fastest Complaint Response": "Risposta ai reclami più veloce", + "Viaggi registrati (Voce & AI)", + "Fastest Complaint Response": "Risposta reclami veloce", "Our dedicated customer service team ensures swift resolution of any issues.": - "Il nostro team dedicato al servizio clienti garantisce una risoluzione rapida di qualsiasi problema.", - "Affordable for Everyone": "Accessibile per tutti", - "Frequently Asked Questions": "Domande frequenti", - "Getting Started": "Per iniziare", + "Il nostro team risolve i problemi velocemente.", + "Affordable for Everyone": "Conveniente per tutti", + "Frequently Asked Questions": "Domande Frequenti", + "Getting Started": "Iniziare", "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": - "Apri semplicemente l'app Intaleq, inserisci la tua destinazione e tocca \"Richiedi corsa\". L'app ti collegherà a un conducente vicino.", + "Apri l'app, inserisci destinazione e richiedi corsa.", "Vehicle Options": "Opzioni veicolo", "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": - "Intaleq offre una varietà di opzioni tra cui Economia, Comfort e Lusso per soddisfare le tue esigenze e il tuo budget.", + "Economy, Comfort, Luxury.", "Payments": "Pagamenti", "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": - "Puoi pagare la tua corsa in contanti o con carta di credito/debito. Puoi selezionare il metodo di pagamento preferito prima di confermare la corsa.", + "Contanti o carta.", "Ride Management": "Gestione corse", "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": - "Sì, puoi annullare la tua corsa, ma tieni presente che potrebbero essere applicate commissioni di cancellazione a seconda di quanto in anticipo annulli.", - "For Drivers": "Per i conducenti", - // "Driver Registration & Requirements": "Registrazione e requisiti per i conducenti", - "Driver Registration": "Registrazione conducente", + "Sì, puoi annullare, potrebbero esserci costi.", + "For Drivers": "Per Autisti", + "Driver Registration": "Registrazione Autista", "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": - "Per registrarti come conducente o conoscere i requisiti, visita il nostro sito web o contatta direttamente il supporto Intaleq.", - "Visit Website/Contact Support": - "Visita il sito/Contatta il supporto", + "Visita il sito per registrarti.", + "Visit Website/Contact Support": "Sito/Supporto", "Close": "Chiudi", "We are searching for the nearest driver": - "Stiamo cercando il conducente più vicino", + "Cerchiamo l'autista più vicino", "Communication": "Comunicazione", "How do I communicate with the other party (passenger/driver)?": - "Come posso comunicare con l'altra parte (passeggero/conducente)?", + "Come comunico?", "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": - "Puoi comunicare con il tuo conducente o passeggero tramite la funzione di chat in-app una volta confermata la corsa.", - "Safety & Security": "Sicurezza e protezione", - "What safety measures does Intaleq offer?": - "Quali misure di sicurezza offre Intaleq?", + "Tramite chat in-app.", + "Safety & Security": "Sicurezza", + "What safety measures does Intaleq offer?": "Misure di sicurezza?", "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": - "Intaleq offre varie funzionalità di sicurezza tra cui verifica del conducente, tracciamento del viaggio in-app, opzioni di contatto di emergenza e la possibilità di condividere lo stato del viaggio con contatti fidati.", + "Verifica autista, tracciamento, SOS.", "Enjoy competitive prices across all trip options, making travel accessible.": - "Goditi prezzi competitivi su tutte le opzioni di viaggio, rendendo i viaggi accessibili.", - "Variety of Trip Choices": "Varietà di scelte di viaggio", + "Prezzi competitivi.", + "Variety of Trip Choices": "Varietà di scelte", "Choose the trip option that perfectly suits your needs and preferences.": - "Scegli l'opzione di viaggio che si adatta perfettamente alle tue esigenze e preferenze.", - "Your Choice, Our Priority": "La tua scelta, la nostra priorità", + "Scegli l'opzione adatta a te.", + "Your Choice, Our Priority": "Tua scelta, nostra priorità", "Because we are near, you have the flexibility to choose the ride that works best for you.": - "Poiché siamo vicini, hai la flessibilità di scegliere la corsa che funziona meglio per te.", - "duration is": "la durata è", + "Flessibilità di scelta.", + "duration is": "durata è", "Setting": "Impostazione", - "Find answers to common questions": "Trova risposte a domande comuni", - "I don't need a ride anymore": "Non ho più bisogno di una corsa", - "I was just trying the application": - "Stavo solo provando l'applicazione", - "No driver accepted my request": - "Nessun conducente ha accettato la mia richiesta", - "I added the wrong pick-up/drop-off location": - "Ho aggiunto il luogo di ritiro/consegna sbagliato", - "I don't have a reason": "Non ho una ragione", - "Other": "Altro", - "Can we know why you want to cancel Ride ?": - "Possiamo sapere perché vuoi annullare la corsa?", + "Find answers to common questions": "Trova risposte", + "I don't need a ride anymore": "Non mi serve più", + "I was just trying the application": "Stavo solo provando", + "No driver accepted my request": "Nessuno ha accettato", + "I added the wrong pick-up/drop-off location": "Posizione errata", + "I don't have a reason": "Nessun motivo", + "Can we know why you want to cancel Ride ?": "Perché vuoi annullare?", "Cancel Ride": "Annulla corsa", - "Add Payment Method": "Aggiungi metodo di pagamento", - "Your Wallet balance is ": "Il saldo del tuo portafoglio è ", - "Ride Wallet": "Portafoglio corse", - "Payment Method": "Metodo di pagamento", - "Type here Place": "Digita qui il luogo", - "Are You sure to ride to": "Sei sicuro di voler andare a", + "Add Payment Method": "Aggiungi metodo pagamento", + "Ride Wallet": "Portafoglio Corsa", + "Payment Method": "Metodo pagamento", + "Type here Place": "Scrivi qui luogo", + "Are You sure to ride to": "Sicuro di andare a", "Confirm": "Conferma", - // "Back": "Indietro", "You are Delete": "Stai eliminando", "Deleted": "Eliminato", - "You Dont Have Any places yet !": "Non hai ancora nessun luogo!", - // "Favorite Places": "Luoghi preferiti", + "You Dont Have Any places yet !": "Nessun luogo ancora!", "From : Current Location": "Da: Posizione attuale", - // "Where to": "Dove", - "Profile": "Profilo", - "Home": "Casa", - "My Cared": "La mia cura", + "My Cared": "Le mie carte", "Add Card": "Aggiungi carta", - "Add Credit Card": "Aggiungi carta di credito", - "Please enter the cardholder name": - "Per favore, inserisci il nome del titolare della carta", - "Please enter the expiry date": - "Per favore, inserisci la data di scadenza", - "Please enter the CVV code": "Per favore, inserisci il codice CVV", - "Go To Favorite Places": "Vai ai luoghi preferiti", - "Go to this Target": "Vai a questo obiettivo", + "Add Credit Card": "Aggiungi carta credito", + "Please enter the cardholder name": "Nome titolare", + "Please enter the expiry date": "Data scadenza", + "Please enter the CVV code": "Codice CVV", + "Go To Favorite Places": "Vai ai preferiti", + "Go to this Target": "Vai a destinazione", "My Profile": "Il mio profilo", - "Sign Out": "Esci", - "Are you want to go to this site": "Vuoi andare su questo sito", - "MyLocation": "La mia posizione", - "my location": "la mia posizione", - "Target": "Obiettivo", - "Update": "Aggiorna", - "You Should choose rate figure": "Dovresti scegliere una valutazione", - "Login Captin": "Accedi come capitano", - "Register Captin": "Registrati come capitano", - "Send Verfication Code": "Invia codice di verifica", - "KM": "Km", - "End Ride": "Termina corsa", + "Are you want to go to this site": "Vuoi andare qui?", + "MyLocation": "MiaPosizione", + "my location": "mia posizione", + "Target": "Destinazione", + "You Should choose rate figure": "Devi scegliere un voto", + "Login Captin": "Accesso Autista", + "Register Captin": "Registrazione Autista", + "Send Verfication Code": "Invia codice verifica", + "KM": "KM", + "End Ride": "Fine corsa", "Minute": "Minuto", - "Go to passenger Location now": - "Vai alla posizione del passeggero ora", - "Duration of the Ride is ": "La durata della corsa è ", - "Distance of the Ride is ": "La distanza della corsa è ", - "Name of the Passenger is ": "Il nome del passeggero è ", - "Hello this is Captain": "Ciao, sono il capitano", - "Start the Ride": "Inizia la corsa", + "Go to passenger Location now": "Vai dal passeggero ora", + "Duration of the Ride is ": "Durata corsa: ", + "Distance of the Ride is ": "Distanza corsa: ", + "Name of the Passenger is ": "Nome passeggero: ", + "Hello this is Captain": "Ciao, sono il conducente", + "Start the Ride": "Inizia corsa", "Please Wait If passenger want To Cancel!": - "Per favore, aspetta se il passeggero vuole annullare!", + "Attendi se il passeggero vuole annullare!", "Total Duration:": "Durata totale:", "Active Duration:": "Durata attiva:", - "Waiting for Captin ...": "In attesa del capitano ...", - "Age is ": "L'età è ", - "Rating is ": "La valutazione è ", - " to arrive you.": "per arrivare da te.", + "Waiting for Captin ...": "Attesa autista...", + "Age is ": "Età: ", + "Rating is ": "Voto: ", + " to arrive you.": " per arrivare.", "Tariff": "Tariffa", "Settings": "Impostazioni", "Feed Back": "Feedback", "Please enter a valid 16-digit card number": - "Per favore, inserisci un numero di carta valido di 16 cifre", + "Inserisci numero carta valido", "Add Phone": "Aggiungi telefono", - "Please enter a phone number": - "Per favore, inserisci un numero di telefono", + "Please enter a phone number": "Inserisci numero telefono", "You dont Add Emergency Phone Yet!": - "Non hai ancora aggiunto un telefono di emergenza!", - "You will arrive to your destination after ": - "Arriverai a destinazione dopo ", - "You can cancel Ride now": "Puoi annullare la corsa ora", + "Non hai aggiunto telefono emergenza!", + "You will arrive to your destination after ": "Arriverai tra ", + "You can cancel Ride now": "Puoi annullare ora", "You Can cancel Ride After Captain did not come in the time": - "Puoi annullare la corsa se il capitano non è arrivato in tempo", + "Puoi annullare se l'autista tarda", "If you in Car Now. Press Start The Ride": - "Se sei in macchina ora. Premi Inizia la corsa", - "You Dont Have Any amount in": "Non hai alcun importo in", + "Se sei in auto, premi Inizia", + "You Dont Have Any amount in": "Non hai credito in", "Wallet!": "Portafoglio!", "You Have": "Hai", - "Save Credit Card": "Salva carta di credito", - "Show Promos": "Mostra promozioni", - "10 and get 4% discount": "10 e ottieni il 4% di sconto", - "20 and get 6% discount": "20 e ottieni il 6% di sconto", - "40 and get 8% discount": "40 e ottieni il 8% di sconto", - "100 and get 11% discount": "100 e ottieni l'11% di sconto", - "Pay with Your PayPal": "Paga con il tuo PayPal", - "You will choose one of above !": "Sceglierai uno dei precedenti!", - "Delete My Account": "Elimina il mio account", + "Save Credit Card": "Salva carta", + "Show Promos": "Mostra promo", + "10 and get 4% discount": "10 e ottieni 4% sconto", + "20 and get 6% discount": "20 e ottieni 6% sconto", + "40 and get 8% discount": "40 e ottieni 8% sconto", + "100 and get 11% discount": "100 e ottieni 11% sconto", + "Pay with Your PayPal": "Paga con PayPal", + "You will choose one of above !": "Scegline uno sopra!", "Edit Profile": "Modifica profilo", - "Name": "Nome", - "Update Gender": "Aggiorna genere", - "Education": "Istruzione", - "Update Education": "Aggiorna istruzione", - "Employment Type": "Tipo di occupazione", - "SOS Phone": "Telefono SOS", - "High School Diploma": "Diploma di scuola superiore", - "Associate Degree": "Diploma di laurea breve", - "Bachelor's Degree": "Laurea triennale", - "Master's Degree": "Laurea magistrale", - "Doctoral Degree": "Dottorato", - "Copy this Promo to use it in your Ride!": - "Copia questa promozione per usarla nella tua corsa!", - "To change some Settings": "Per cambiare alcune impostazioni", - "Order Request Page": "Pagina richiesta ordine", - "Rouats of Trip": "Percorsi del viaggio", - "Passenger Name is ": "Il nome del passeggero è ", - "Total From Passenger is ": "Totale dal passeggero è ", - "Duration To Passenger is ": "Durata fino al passeggero è ", - "Distance To Passenger is ": "Distanza fino al passeggero è ", - "Total For You is ": "Totale per te è ", - "Distance is ": "La distanza è ", - " KM": " Km", - "Duration of Trip is ": "La durata del viaggio è ", + "Copy this Promo to use it in your Ride!": "Copia questa promo!", + "To change some Settings": "Per cambiare impostazioni", + "Order Request Page": "Pagina richiesta", + "Rouats of Trip": "Percorsi", + "Passenger Name is ": "Passeggero: ", + "Total From Passenger is ": "Totale da Passeggero: ", + "Duration To Passenger is ": "Durata verso Passeggero: ", + "Distance To Passenger is ": "Distanza verso Passeggero: ", + "Total For You is ": "Totale per te: ", + "Distance is ": "Distanza: ", + " KM": " KM", + "Duration of Trip is ": "Durata viaggio: ", " Minutes": " Minuti", - "Apply Order": "Applica ordine", + "Apply Order": "Accetta ordine", "Refuse Order": "Rifiuta ordine", - "Rate Captain": "Valuta capitano", - "Enter your Note": "Inserisci la tua nota", + "Rate Captain": "Vota Autista", + "Enter your Note": "Inserisci nota", "Type something...": "Scrivi qualcosa...", - "Submit rating": "Invia valutazione", - "Rate Passenger": "Valuta passeggero", + "Submit rating": "Invia voto", + "Rate Passenger": "Vota Passeggero", "Ride Summary": "Riepilogo corsa", "welcome_message": "Benvenuto in Intaleq!", - "app_description": - "Intaleq è un'app affidabile, sicura e accessibile per il ride-sharing.", - "get_to_destination": - "Raggiungi la tua destinazione in modo rapido e semplice.", - "get_a_ride": - "Con Intaleq puoi raggiungere la tua destinazione in pochi minuti.", - "safe_and_comfortable": "Goditi un viaggio sicuro e confortevole.", - "committed_to_safety": - "Intaleq dà priorità alla sicurezza e tutti i nostri capitani sono accuratamente controllati e verificati.", - // "Driver Applied the Ride for You": "Il conducente ha applicato la corsa per te", - // "Show latest promo": "Mostra le ultime promozioni", - // "Cancel Trip": "Annulla viaggio", - // "Passenger Cancel Trip": "Passeggero ha annullato il viaggio", - // "Accepted Ride": "Corsa accettata", - "your ride is Accepted": "la tua corsa è stata accettata", - // "Trip is Begin": "Il viaggio è iniziato", - "Driver is waiting at pickup.": - "Il conducente sta aspettando al punto di ritiro.", - "Driver is on the way": "Il conducente è in arrivo", - "Contact Options": "Opzioni di contatto", - "Send a custom message": "Invia un messaggio personalizzato", - "Type your message": "Scrivi il tuo messaggio", - // "Hi ,I will go now": "Ciao, vado ora", - // "Passenger come to you": "Il passeggero sta venendo da te", - // "Hi ,I Arrive your site": "Ciao, sono arrivato sul posto", - // "Driver Finish Trip": "Il conducente ha terminato il viaggio", - // "you will pay to Driver": "pagherai il conducente", - // "Driver Cancel Your Trip": "Il conducente ha annullato il tuo viaggio", - // "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": "pagherai il conducente, pagherai il costo del tempo del conducente, controlla il tuo portafoglio Intaleq", - // "I will go now": "Vado ora", + "app_description": "App di ride-sharing sicura.", + "get_to_destination": "Arriva a destinazione.", + "get_a_ride": "Ottieni una corsa in minuti.", + "safe_and_comfortable": "Sicura e comoda.", + "committed_to_safety": "Impegnati per la sicurezza.", + "your ride is Accepted": "Corsa accettata", + "Driver is waiting at pickup.": "Autista in attesa.", + "Driver is on the way": "Autista in arrivo", + "Contact Options": "Opzioni contatto", + "Send a custom message": "Invia messaggio personalizzato", + "Type your message": "Scrivi messaggio", + "I will go now": "Vado ora", "You Have Tips": "Hai mance", - " tips\nTotal is": " mance\nTotale", - // "No,I want": "No, voglio", - "Your fee is ": "La tua tariffa è ", - // "Do you want to pay Tips for this Driver": "Vuoi dare una mancia a questo conducente?", - "Tip is ": "La mancia è ", + " tips\nTotal is": " mance\nTotale è", + "Your fee is ": "Tua tariffa: ", + "Do you want to pay Tips for this Driver": "Vuoi dare la mancia?", + "Tip is ": "Mancia è: ", "Are you want to wait drivers to accept your order": - "Vuoi aspettare che i conducenti accettino il tuo ordine?", + "Vuoi attendere accettazione?", "This price is fixed even if the route changes for the driver.": - "Questo prezzo è fisso anche se il percorso cambia per il conducente.", + "Prezzo fisso.", "The price may increase if the route changes.": - "Il prezzo potrebbe aumentare se il percorso cambia.", + "Il prezzo può aumentare.", "The captain is responsible for the route.": - "Il capitano è responsabile del percorso.", - "We are search for nearst Driver": - "Stiamo cercando il conducente più vicino", - "Your order is being prepared": "Il tuo ordine è in preparazione", - "The drivers are reviewing your request": - "I conducenti stanno rivedendo la tua richiesta", - "Your order sent to drivers": - "Il tuo ordine è stato inviato ai conducenti", + "L'autista è responsabile del percorso.", + "We are search for nearst driver": "Cerchiamo autista", + "Your order is being prepared": "Ordine in preparazione", + "The drivers are reviewing your request": "Autisti stanno valutando", + "Your order sent to drivers": "Inviato agli autisti", "You can call or record audio of this trip": - "Puoi chiamare o registrare l'audio di questo viaggio", + "Puoi chiamare o registrare", "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": - "Il viaggio è iniziato! Sentiti libero di contattare i numeri di emergenza, condividere il tuo viaggio o attivare la registrazione vocale per il viaggio", - // "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": "Assicurati di avere tutti i tuoi effetti personali e che eventuali tariffe residue, se applicabili, siano state aggiunte al tuo portafoglio prima di partire. Grazie per aver scelto l'app Intaleq.", - // "Don’t forget your personal belongings.": "Non dimenticare i tuoi effetti personali.", - "Camera Access Denied.": "Accesso alla camera negato.", - "Open Settings": "Apri impostazioni", + "Viaggio iniziato! Condividi o registra.", + "Camera Access Denied.": "Accesso camera negato.", + "Open Settings": "Impostazioni", "GPS Required Allow !.": "GPS richiesto!", - "Your Account is Deleted": "Il tuo account è stato eliminato", - "Are you sure to delete your account?": - "Sei sicuro di voler eliminare il tuo account?", + "Your Account is Deleted": "Account eliminato", + "Are you sure to delete your account?": "Sicuro di eliminare?", "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": - "I tuoi dati verranno cancellati dopo 2 settimane\nE non potrai tornare a usare l'app dopo 1 mese", - "Enter Your First Name": "Inserisci il tuo nome", - "Are you Sure to LogOut?": "Sei sicuro di voler uscire?", + "Dati cancellati tra 2 settimane.", + "Enter Your First Name": "Inserisci Nome", + "Are you Sure to LogOut?": "Sicuro di uscire?", "Email Wrong": "Email errata", - "Email you inserted is Wrong.": "L'email che hai inserito è errata.", - "You have finished all times ": "Hai finito tutti i tempi", - "if you want help you can email us here": - "se hai bisogno di aiuto puoi scriverci qui", + "Email you inserted is Wrong.": "L'email è sbagliata.", + "You have finished all times ": "Tentativi finiti", + "if you want help you can email us here": "Scrivici per aiuto", "Thanks": "Grazie", "Email Us": "Scrivici", "I cant register in your app in face detection ": - "Non riesco a registrarmi nella tua app con il rilevamento del volto", + "Non riesco a registrarmi con face detection", "Hi": "Ciao", "No face detected": "Nessun volto rilevato", - "Image detecting result is ": - "Il risultato del rilevamento dell'immagine è ", - "from 3 times Take Attention": "da 3 volte presta attenzione", + "Image detecting result is ": "Risultato: ", + "from 3 times Take Attention": "su 3 volte, Attenzione", "Be sure for take accurate images please\nYou have": - "Assicurati di scattare immagini accurate per favore\nHai", + "Fai foto accurate\nHai", "image verified": "immagine verificata", "Next": "Avanti", - "There is no help Question here": "Non c'è una domanda di aiuto qui", - "You dont have Points": "Non hai punti", - "You Are Stopped For this Day !": "Sei fermo per oggi!", - "You must be charge your Account": "Devi ricaricare il tuo account", + "There is no help Question here": "Nessuna domanda aiuto", + "You dont have Points": "Non hai Punti", + "You Are Stopped For this Day !": "Fermato per oggi!", + "You must be charge your Account": "Devi ricaricare", "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": - "Hai rifiutato 3 corse oggi, questo è il motivo\nCi vediamo domani!", - "Recharge my Account": "Ricarica il mio account", - "Ok , See you Tomorrow": "Ok, ci vediamo domani", + "Rifiutate 3 corse.\nA domani!", + "Recharge my Account": "Ricarica conto", + "Ok , See you Tomorrow": "Ok, a domani", "You are Stopped": "Sei fermo", "Connected": "Connesso", "Not Connected": "Non connesso", - "Your are far from passenger location": - "Sei lontano dalla posizione del passeggero", + "Your are far from passenger location": "Sei lontano dal passeggero", "go to your passenger location before\nPassenger cancel trip": - "vai alla posizione del passeggero prima che\nil passeggero annulli il viaggio", + "Vai dal passeggero prima che annulli", "You will get cost of your work for this trip": - "Otterrai il costo del tuo lavoro per questo viaggio", - " in your wallet": "nel tuo portafoglio", - "you gain": "guadagni", - "Order Cancelled by Passenger": "Ordine annullato dal passeggero", - "Success": "Successo", - "Feedback data saved successfully": - "Dati del feedback salvati con successo", - "No Promo for today .": "Nessuna promozione per oggi.", - "Select your destination": "Seleziona la tua destinazione", - "Search for your Start point": "Cerca il tuo punto di partenza", - "Search for waypoint": "Cerca un punto intermedio", + "Sarai pagato per il lavoro", + " in your wallet": " nel portafoglio", + "you gain": "hai guadagnato", + "Order Cancelled by Passenger": "Annullato dal passeggero", + "Feedback data saved successfully": "Feedback salvato", + "No Promo for today .": "Nessuna promo oggi.", + "Select your destination": "Seleziona destinazione", + "Search for your Start point": "Punto di partenza", + "Search for waypoint": "Punto intermedio", "Current Location": "Posizione attuale", - "Add Location 1": "Aggiungi posizione 1", - "You must Verify email !.": "Devi verificare l'email!", - "Cropper": "Ritaglio", + "Add Location 1": "Aggiungi Posizione 1", + "You must Verify email !.": "Verifica email!", + "Cropper": "Ritaglia", "Saved Sucssefully": "Salvato con successo", - "Select Date": "Seleziona data", + "Select Date": "Seleziona Data", "Birth Date": "Data di nascita", - "Ok": "OK", - "the 500 points equal 30 JOD": "500 punti equivalgono a 30 JOD", + "Ok": "Ok", + "the 500 points equal 30 JOD": "500 punti equivalgono a 30 €", "the 500 points equal 30 JOD for you \nSo go and gain your money": - "500 punti equivalgono a 30 JOD per te\nQuindi vai e guadagna i tuoi soldi", + "500 punti = 30 €\nGuadagna", "token updated": "token aggiornato", - "Add Location 2": "Aggiungi posizione 2", - "Add Location 3": "Aggiungi posizione 3", - "Add Location 4": "Aggiungi posizione 4", - "Waiting for your location": "In attesa della tua posizione", - "Search for your destination": "Cerca la tua destinazione", + "Add Location 2": "Aggiungi Posizione 2", + "Add Location 3": "Aggiungi Posizione 3", + "Add Location 4": "Aggiungi Posizione 4", + "Waiting for your location": "In attesa posizione", + "Search for your destination": "Cerca destinazione", "Hi! This is": "Ciao! Questo è", - " I am using": " Sto usando", + " I am using": " Uso", " to ride with": " per viaggiare con", - " as the driver.": " come conducente.", - "is driving a ": "sta guidando un ", + " as the driver.": " come autista.", + "is driving a ": "guida una ", " with license plate ": " con targa ", - " I am currently located at ": " Mi trovo attualmente a ", - "Please go to Car now ": "Per favore, vai alla macchina ora ", + " I am currently located at ": " Sono a ", + "Please go to Car now ": "Vai all'auto ora ", "You will receive a code in WhatsApp Messenger": - "Riceverai un codice su WhatsApp Messenger", - "If you need assistance, contact us": - "Se hai bisogno di assistenza, contattaci", - "Promo Ended": "Promozione terminata", - "Enter the promo code and get": - "Inserisci il codice promozionale e ottieni", + "Riceverai codice su WhatsApp", + "If you need assistance, contact us": "Se serve aiuto, contattaci", + "Promo Ended": "Promo Terminata", + "Enter the promo code and get": "Inserisci codice e ottieni", "DISCOUNT": "SCONTO", - "No wallet record found": "Nessun record del portafoglio trovato", + "No wallet record found": "Nessun record portafoglio", "for": "per", "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": - "Intaleq è l'app di ride-sharing più sicura che introduce molte funzionalità sia per i capitani che per i passeggeri. Offriamo la commissione più bassa, solo l'8%, garantendo il miglior valore per le tue corse. La nostra app include assicurazione per i migliori capitani, manutenzione regolare delle auto con i migliori ingegneri e servizi su strada per garantire un'esperienza rispettosa e di alta qualità per tutti gli utenti.", + "Intaleq è l'app più sicura. Commissione bassa 8%. Assicurazione e manutenzione.", "You can contact us during working hours from 12:00 - 19:00.": - "Puoi contattarci durante l'orario di lavoro dalle 12:00 alle 19:00.", - "Choose a contact option": "Scegli un'opzione di contatto", + "Contattaci 12:00 - 19:00.", + "Choose a contact option": "Scegli contatto", "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": - "L'orario di lavoro è dalle 12:00 alle 19:00.\nPuoi inviare un messaggio WhatsApp o un'email.", - "Promo code copied to clipboard!": - "Codice promozionale copiato negli appunti!", + "Orario 12:00 - 19:00.\nInvia WhatsApp o email.", + "Promo code copied to clipboard!": "Copiato!", "Copy Code": "Copia codice", - "Your invite code was successfully applied!": - "Il tuo codice di invito è stato applicato con successo!", - "Payment Options": "Opzioni di pagamento", - "wait 1 minute to receive message": - "aspetta 1 minuto per ricevere il messaggio", - "Promo Copied!": "Promozione copiata!", - "You have copied the promo code.": - "Hai copiato il codice promozionale.", - "Valid Until:": "Valido fino:", - "Select Payment Amount": "Seleziona l'importo del pagamento", - "The promotion period has ended.": - "Il periodo della promozione è terminato.", - "Promo Code Accepted": "Codice promozionale accettato", - "Tap on the promo code to copy it!": - "Tocca il codice promozionale per copiarlo!", - "Lowest Price Achieved": "Prezzo più basso raggiunto", - "Cannot apply further discounts.": - "Non è possibile applicare ulteriori sconti.", - "Promo Already Used": "Promozione già utilizzata", - "Invitation Used": "Invito utilizzato", - "You have already used this promo code.": - "Hai già utilizzato questo codice promozionale.", - "Insert Your Promo Code": "Inserisci il tuo codice promozionale", - "Enter promo code here": "Inserisci il codice promozionale qui", - "Please enter a valid promo code": - "Per favore, inserisci un codice promozionale valido", - "Awfar Car": "Auto Awfar", + "Your invite code was successfully applied!": "Codice applicato!", + "Payment Options": "Opzioni pagamento", + "wait 1 minute to receive message": "attendi 1 minuto", + "You have copied the promo code.": "Hai copiato il codice.", + "Select Payment Amount": "Seleziona importo", + "The promotion period has ended.": "Promozione finita.", + "Promo Code Accepted": "Codice accettato", + "Tap on the promo code to copy it!": "Tocca per copiare!", + "Lowest Price Achieved": "Prezzo più basso", + "Cannot apply further discounts.": "Niente più sconti.", + "Promo Already Used": "Già usato", + "Invitation Used": "Invito usato", + "You have already used this promo code.": "Codice già usato.", + "Insert Your Promo Code": "Inserisci codice", + "Enter promo code here": "Codice qui", + "Please enter a valid promo code": "Inserisci codice valido", + "Awfar Car": "Auto Economica", "Old and affordable, perfect for budget rides.": - "Vecchia e conveniente, perfetta per corse economiche.", + "Economica e accessibile.", " If you need to reach me, please contact the driver directly at": - " Se hai bisogno di contattarmi, contatta direttamente il conducente al", + " Contatta l'autista al", "No Car or Driver Found in your area.": - "Nessuna auto o conducente trovato nella tua zona.", - "Please Try anther time ": "Per favore, prova un'altra volta ", + "Nessuna auto o autista in zona.", + "Please Try anther time ": "Riprova un'altra volta ", "There no Driver Aplly your order sorry for that ": - "Nessun conducente ha applicato il tuo ordine, scusa per questo ", - "Trip Cancelled": "Viaggio annullato", + "Nessuno ha accettato, spiacenti ", + "Trip Cancelled": "Corsa Annullata", "The Driver Will be in your location soon .": - "Il conducente sarà nella tua posizione presto.", - "The distance less than 500 meter.": - "La distanza è inferiore a 500 metri.", - "Promo End !": "Promozione terminata!", - "There is no notification yet": "Non ci sono ancora notifiche", + "L'autista arriverà presto.", + "The distance less than 500 meter.": "Distanza < 500m.", + "Promo End !": "Promo Finita!", + "There is no notification yet": "Nessuna notifica", "Use Touch ID or Face ID to confirm payment": - "Usa Touch ID o Face ID per confermare il pagamento", + "Usa Touch ID o Face ID", "Contact us for any questions on your order.": - "Contattaci per qualsiasi domanda sul tuo ordine.", - "Pyament Cancelled .": "Pagamento annullato.", + "Contattaci per domande.", + "Pyament Cancelled .": "Pagamento Annullato.", "type here": "scrivi qui", - "Scan Driver License": "Scansiona la patente di guida", + "Scan Driver License": "Scansiona Patente", "Please put your licence in these border": - "Per favore, metti la tua patente in questi bordi", - "Camera not initialized yet": - "La fotocamera non è ancora inizializzata", - "Take Image": "Scatta immagine", + "Metti la patente nel bordo", + "Camera not initialized yet": "Camera non pronta", + "Take Image": "Scatta foto", "AI Page": "Pagina AI", - "Take Picture Of ID Card": "Scatta una foto della carta d'identità", - "Take Picture Of Driver License Card": - "Scatta una foto della patente di guida", - "We are process picture please wait ": - "Stiamo elaborando l'immagine, per favore aspetta ", - "There is no data yet.": "Non ci sono ancora dati.", - "Name :": "Nome:", - "Drivers License Class: ": "Classe patente di guida:", - "Document Number: ": "Numero documento:", - "Address: ": "Indirizzo:", - "Height: ": "Altezza:", - "Expiry Date: ": "Data di scadenza:", - "Date of Birth: ": "Data di nascita:", - "You can\'t continue with us .\nYou should renew Driver license": - "Non puoi continuare con noi.\nDovresti rinnovare la patente di guida", - "Detect Your Face ": "Rileva il tuo volto ", - "Go to next step\nscan Car License.": - "Vai al prossimo passo\nscansiona la patente auto.", - "Name in arabic": "Nome in arabo", - "Drivers License Class": "Classe patente di guida", - "Date of Birth": "Data di nascita", - // "Select date and time of trip": "Seleziona data e ora del viaggio", - "Selected Date": "Data selezionata", - "Select Time": "Seleziona ora", - "Selected Time": "Ora selezionata", - // "OK": "OK", - // "Cancel": "Annulla", - "Selected Date and Time": "Data e ora selezionate", - "Lets check Car license ": "Controlliamo la patente auto ", + "Take Picture Of ID Card": "Foto Carta d'Identità", + "Take Picture Of Driver License Card": "Foto Patente", + "We are process picture please wait ": "Elaborazione foto, attendi ", + "There is no data yet.": "Nessun dato.", + "Name :": "Nome :", + "Drivers License Class: ": "Classe Patente: ", + "Document Number: ": "Numero Documento: ", + "Address: ": "Indirizzo: ", + "Height: ": "Altezza: ", + "Expiry Date: ": "Scadenza: ", + "Date of Birth: ": "Data di Nascita: ", + "You can't continue with us .\nYou should renew Driver license": + "Devi rinnovare la patente", + "Detect Your Face ": "Rileva Volto ", + "Go to next step\nscan Car License.": "Avanti\nscansiona Libretto.", + "Name in arabic": "Nome (Locale)", + "Drivers License Class": "Classe Patente", + "Selected Date": "Data Selezionata", + "Select Time": "Seleziona Ora", + "Selected Time": "Ora Selezionata", + "Selected Date and Time": "Data e Ora", + "Lets check Car license ": "Controlliamo Libretto ", "Car": "Auto", "Plate": "Targa", - "N/A": "N/A", "Rides": "Corse", - "Age": "Età", - // "Education": "Istruzione", - // "Color": "Colore", - // "Displacement": "Cilindrata", - // "Fuel": "Carburante", - "Selected driver": "Conducente selezionato", - "Lets check License Back Face": "Controlliamo il retro della patente", - "Car License Card": "Carta patente auto", - "No image selected yet": "Nessuna immagine selezionata ancora", - "Made :": "Fatto:", - "model :": "modello:", - "VIN :": "VIN:", - "year :": "anno:", - "ُExpire Date": "Data di scadenza", - "Login Driver": "Accedi come conducente", - "Password must br at least 6 character.": - "La password deve essere di almeno 6 caratteri.", - "if you don\'t have account": "se non hai un account", - "Here recorded trips audio": "Qui è registrato l'audio dei viaggi", - "Register as Driver": "Registrati come conducente", - // "Privacy Notice": "Informativa sulla privacy", + "Selected driver": "Autista selezionato", + "Lets check License Back Face": "Controlliamo Retro", + "Car License Card": "Libretto Circolazione", + "No image selected yet": "Nessuna immagine", + "Made :": "Marca :", + "model :": "Modello :", + "VIN :": "Telaio :", + "year :": "Anno :", + "ُExpire Date": "Data Scadenza", + "Login Driver": "Accesso Autista", + "Password must br at least 6 character.": "Password min 6 caratteri.", + "if you don't have account": "se non hai un account", + "Here recorded trips audio": "Audio viaggi", + "Register as Driver": "Registrati come Autista", "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": - "Selezionando \"Accetto\" qui sotto, confermo di aver letto e accettato i Termini di utilizzo e riconosco l'", - ". I am at least 18 years of age.": ". Ho almeno 18 anni.", - "Log Out Page": "Pagina di uscita", + "Selezionando \"Accetto\", accetto i Termini d'Uso e ", + "Log Out Page": "Pagina uscita", "Log Off": "Esci", - "Register Driver": "Registra conducente", - "Verify Email For Driver": "Verifica email per il conducente", - "Admin DashBoard": "Pannello di amministrazione", + "Register Driver": "Registra Autista", + "Verify Email For Driver": "Verifica Email Autista", + "Admin DashBoard": "Dashboard Admin", "Your name": "Il tuo nome", - "your ride is applied": "la tua corsa è stata applicata", - "Your password": "La tua password", - "H and": "H e", - "LE": "LE", - "JOD": "JOD", + "your ride is applied": "corsa richiesta", + "H and": "O e", + "JOD": "€", "m": "m", - "We search nearst Driver to you": - "Cerchiamo il conducente più vicino a te", - "please wait till driver accept your order": - "per favore aspetta che il conducente accetti il tuo ordine", + "We search nearst Driver to you": "Cerchiamo autista vicino", + "please wait till driver accept your order": "attendi accettazione", "No accepted orders? Try raising your trip fee to attract riders.": - "Nessun ordine accettato? Prova ad aumentare la tariffa del viaggio per attirare i conducenti.", - "You should select one": "Dovresti selezionarne uno", - "The driver accept your order for": - "Il conducente accetta il tuo ordine per", - "Increase Fee": "Aumenta la tariffa", - "No, thanks": "No, grazie", - "The driver on your way": "Il conducente è in arrivo", + "Aumenta la tariffa.", + "You should select one": "Selezionane uno", + "The driver accept your order for": "Accettato per", + "The driver on your way": "Autista in arrivo", "Total price from ": "Prezzo totale da ", - "Order Details Intaleq": "Dettagli ordine Velocità", - // "Order Applied": "Ordine applicato", - "accepted your order": "ha accettato il tuo ordine", - // "We regret to inform you that another driver has accepted this order.": "Ci dispiace informarti che un altro conducente ha accettato questo ordine", + "Order Details Intaleq": "Dettagli Ordine", "Selected file:": "File selezionato:", - "Your trip cost is": "Il costo del tuo viaggio è", + "Your trip cost is": "Costo viaggio", "this will delete all files from your device": - "questo cancellerà tutti i file dal tuo dispositivo", - " in your": "nel tuo", + "eliminerà tutti i file", "Exclusive offers and discounts always with the Intaleq app": - "Offerte e sconti esclusivi sempre con l'app Intaleq", - // "Please go to Car Driver": "Per favore, vai dal conducente", - " wallet due to a previous trip.": - "portafoglio a causa di un viaggio precedente.", + "Offerte esclusive", "Submit Question": "Invia domanda", - "Please enter your Question.": - "Per favore, inserisci la tua domanda.", + "Please enter your Question.": "Inserisci domanda.", "Help Details": "Dettagli aiuto", - "No trip yet found": "Nessun viaggio trovato ancora", - "No Response yet.": "Nessuna risposta ancora.", - " You Earn today is ": " Hai guadagnato oggi ", + "No trip yet found": "Nessun viaggio", + "No Response yet.": "Nessuna risposta.", + " You Earn today is ": " Guadagno oggi: ", " You Have in": " Hai in", - "Total points is ": "Totale punti è ", - "Total Connection Duration:": "Durata totale connessione:", - " H and": " H e", - "Passenger name : ": "Nome passeggero: ", - "Cost Of Trip IS ": "Il costo del viaggio è ", - "Arrival time": "Tempo di arrivo", - "arrival time to reach your point": - "tempo di arrivo per raggiungere il tuo punto", + "Total points is ": "Punti totali: ", + "Total Connection Duration:": "Durata connessione:", + "Passenger name : ": "Passeggero: ", + "Cost Of Trip IS ": "Costo: ", + "Arrival time": "Ora arrivo", + "arrival time to reach your point": "ora arrivo al punto", "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "Per i viaggi in scooter e velocità, il prezzo è calcolato dinamicamente. Per i viaggi Comfort, il prezzo è basato su tempo e distanza.", - "Hello this is Driver": "Ciao, sono il conducente", - "Is the Passenger in your Car ?": "Il passeggero è nella tua auto?", + "Prezzo dinamico o tempo/distanza.", + "Hello this is Driver": "Ciao sono l'Autista", + "Is the Passenger in your Car ?": "Passeggero in auto?", "Please wait for the passenger to enter the car before starting the trip.": - "Per favore, aspetta che il passeggero entri in auto prima di iniziare il viaggio.", - "No ,still Waiting.": "No, sto ancora aspettando.", - "I arrive you": "Sono arrivato da te", - "I Arrive your site": "Sono arrivato sul posto", - "You are not in near to passenger location": - "Non sei vicino alla posizione del passeggero", - "please go to picker location exactly": - "per favore vai esattamente alla posizione di ritiro", + "Attendi passeggero.", + "No ,still Waiting.": "No, attendo.", + "I arrive you": "Arrivato", + "I Arrive your site": "Arrivato al sito", + "You are not in near to passenger location": "Sei lontano", + "please go to picker location exactly": "vai al punto esatto", "You Can Cancel Trip And get Cost of Trip From": - "Puoi annullare il viaggio e ottenere il costo del viaggio da", - "Are you sure to cancel?": "Sei sicuro di voler annullare?", - // "Yes": "Sì", - "Insert Emergincy Number": "Inserisci numero di emergenza", + "Annulla e ottieni costo da", + "Are you sure to cancel?": "Sicuro di annullare?", + "Insert Emergincy Number": "Inserisci Numero SOS", "Best choice for comfort car and flexible route and stops point": - "Scelta migliore per auto comoda e percorso flessibile con punti di sosta", + "Auto comfort e percorso flessibile", "Insert": "Inserisci", - "This is for scooter or a motorcycle.": - "Questo è per uno scooter o una moto.", + "This is for scooter or a motorcycle.": "Per scooter o moto.", "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": - "Questo viaggio va direttamente dal tuo punto di partenza alla tua destinazione per un prezzo fisso. Il conducente deve seguire il percorso pianificato", - "You can decline a request without any cost": - "Puoi rifiutare una richiesta senza alcun costo", + "Viaggio diretto, prezzo fisso.", + "You can decline a request without any cost": "Rifiuta senza costi", "Perfect for adventure seekers who want to experience something new and exciting": - "Perfetto per chi cerca avventure e vuole provare qualcosa di nuovo ed emozionante", - "My current location is:": "La mia posizione attuale è:", + "Per chi cerca avventura", + "My current location is:": "Mia posizione:", "and I have a trip on": "e ho un viaggio su", - "App with Passenger": "App con passeggero", + "App with Passenger": "App con Passeggero", "You will be pay the cost to driver or we will get it from you on next trip": - "Pagherai il costo al conducente o lo prenderemo da te nel prossimo viaggio", - "Trip has Steps": "Il viaggio ha passaggi", + "Pagherai all'autista o al prossimo viaggio", + "Trip has Steps": "Viaggio a tappe", "Distance from Passenger to destination is ": - "La distanza dal passeggero alla destinazione è ", - "price is": "il prezzo è", + "Distanza Passeggero da destinazione: ", + "price is": "prezzo è", "This ride type does not allow changes to the destination or additional stops": - "Questo tipo di corsa non consente cambiamenti alla destinazione o fermate aggiuntive", - "This price may be changed": "Questo prezzo potrebbe cambiare", + "Nessun cambio/fermata", + "This price may be changed": "Prezzo variabile", "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": - "Nessuna SIM card? Nessun problema! Chiama direttamente il tuo conducente tramite la nostra app. Usiamo tecnologia avanzata per garantire la tua privacy.", + "Niente SIM? Chiama tramite app.", "This ride type allows changes, but the price may increase": - "Questo tipo di corsa consente cambiamenti, ma il prezzo potrebbe aumentare", - "Select one message": "Seleziona un messaggio", - "I'm waiting for you": "Ti sto aspettando", + "Cambi permessi, prezzo può salire", + "Select one message": "Scegli messaggio", + "I'm waiting for you": "Ti aspetto", "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": - "Abbiamo notato che la velocità supera i 100 km/h. Per favore, rallenta per la tua sicurezza. Se ti senti in pericolo, puoi condividere i dettagli del tuo viaggio con un contatto o chiamare la polizia usando il pulsante rosso SOS.", - "Warning: Intaleqing detected!": - "Avviso: Rilevato eccesso di velocità!", + "Velocità > 100 km/h. Rallenta.", + "Warning: Intaleqing detected!": "Avviso: Eccesso velocità!", "Please help! Contact me as soon as possible.": - "Per favore, aiuto! Contattami il prima possibile.", - "Share Trip Details": "Condividi dettagli del viaggio", - "Car Plate is ": "La targa dell'auto è ", - "VIP Order": "Ordine VIP", + "Aiuto! Contattami subito.", + "Share Trip Details": "Condividi Dettagli", + "Car Plate is ": "Targa: ", "the 300 points equal 300 L.E for you \nSo go and gain your money": - "300 punti equivalgono a 300 L.E per te\nQuindi vai e guadagna i tuoi soldi", - "the 300 points equal 300 L.E": "300 punti equivalgono a 300 L.E", + "300 punti = 300 €\nGuadagna", + "the 300 points equal 300 L.E": "300 punti = 300 €", "The payment was not approved. Please try again.": - "Il pagamento non è stato approvato. Riprova.", - "Payment Failed": "Pagamento fallito", - "Error": "Errore", - "This is a scheduled notification.": - "Questa è una notifica programmata.", - "An error occurred during the payment process.": - "Si è verificato un errore durante il processo di pagamento.", - "The payment was approved.": "Il pagamento è stato approvato.", - "Payment Successful": "Pagamento riuscito", - "No ride found yet": "Nessuna corsa trovata ancora", - "Accept Order": "Accetta ordine", - // "reject your order.": "rifiuta il tuo ordine.", - "Bottom Bar Example": "Esempio barra inferiore", - "Driver phone": "Telefono conducente", + "Pagamento non approvato. Riprova.", + "Payment Failed": "Pagamento Fallito", + "This is a scheduled notification.": "Notifica programmata.", + "An error occurred during the payment process.": "Errore pagamento.", + "The payment was approved.": "Approvato.", + "Payment Successful": "Pagamento Riuscito", + "No ride found yet": "Nessuna corsa trovata", + "Accept Order": "Accetta Ordine", + "Bottom Bar Example": "Esempio", + "Driver phone": "Telefono Autista", "Statistics": "Statistiche", "Origin": "Origine", "Destination": "Destinazione", - "Driver Name": "Nome conducente", - "Driver Car Plate": "Targa auto conducente", - "Available for rides": "Disponibile per corse", + "Driver Name": "Nome Autista", + "Driver Car Plate": "Targa Autista", + "Available for rides": "Disponibile", "Scan Id": "Scansiona ID", - "Camera not initilaized yet": - "La fotocamera non è ancora inizializzata", - "Scan ID MklGoogle": "Scansiona ID MklGoogle", + "Camera not initilaized yet": "Camera non pronta", + "Scan ID MklGoogle": "Scansiona ID", "Language": "Lingua", "Jordan": "Giordania", "USA": "USA", @@ -15488,2722 +19255,3024 @@ class MyTranslation extends Translations { "Qatar": "Qatar", "Bahrain": "Bahrain", "Kuwait": "Kuwait", - "But you have a negative salary of": - "Ma hai uno stipendio negativo di", - "Promo Code": "Codice promozionale", - "Your trip distance is": "La distanza del tuo viaggio è", - "Enter promo code": "Inserisci codice promozionale", - "You have promo!": "Hai una promozione!", - "Cost Duration": "Costo durata", - "Duration is": "La durata è", + "But you have a negative salary of": "Saldo negativo:", + "Promo Code": "Codice Promo", + "Your trip distance is": "Distanza viaggio:", + "Enter promo code": "Inserisci codice", + "You have promo!": "Hai promo!", + "Cost Duration": "Costo Durata", + "Duration is": "Durata:", "Leave": "Lascia", - "Join": "Unisciti", + "Join": "Unisci", "Heading your way now. Please be ready.": - "Sto venendo da te. Per favore, sii pronto.", + "Arrivo. Fatti trovare pronto.", "Approaching your area. Should be there in 3 minutes.": - "Mi sto avvicinando alla tua zona. Dovrei essere lì in 3 minuti.", + "Vicino. Lì in 3 minuti.", "There's heavy traffic here. Can you suggest an alternate pickup point?": - "C'è molto traffico qui. Puoi suggerire un punto di ritiro alternativo?", - "This ride is already taken by another driver.": - "Questa corsa è già stata presa da un altro conducente.", - "You Should be select reason.": "Dovresti selezionare una ragione.", - " \$": " \$", - "Waiting for Driver ...": "In attesa del conducente ...", - "Latest Recent Trip": "Ultimo viaggio recente", - "from your list": "dalla tua lista", - "Do you want to change Work location": - "Vuoi cambiare la posizione di lavoro?", - "Do you want to change Home location": - "Vuoi cambiare la posizione di casa?", + "Traffico. Altro punto raccolta?", + "This ride is already taken by another driver.": "Corsa già presa.", + "You Should be select reason.": "Seleziona motivo.", + "Waiting for Driver ...": "Attesa Autista...", + "Latest Recent Trip": "Ultimo Viaggio", + "from your list": "dalla lista", + "Do you want to change Work location": "Cambiare Lavoro", + "Do you want to change Home location": "Cambiare Casa", "We Are Sorry That we dont have cars in your Location!": - "Ci dispiace che non abbiamo auto nella tua posizione!", - "Choose from Map": "Scegli dalla mappa", + "Spiacenti, niente auto in zona!", + "Choose from Map": "Scegli da Mappa", "Pick your ride location on the map - Tap to confirm": - "Scegli la posizione della tua corsa sulla mappa - Tocca per confermare", - // "To Work": "Al lavoro", - // "Are you want to go this site": "Vuoi andare su questo sito?", - "Closest & Cheapest": "Più vicino e più economico", - // "Work Saved": "Posizione lavoro salvata", + "Scegli punto sulla mappa - Tocca per confermare", "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": - "Intaleq è l'app di ride-sharing che è sicura, affidabile e accessibile.", + "Intaleq è sicura e affidabile.", "With Intaleq, you can get a ride to your destination in minutes.": - "Con Intaleq, puoi raggiungere la tua destinazione in pochi minuti.", + "Corsa in minuti.", "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": - "Intaleq si impegna per la sicurezza e tutti i nostri capitani sono accuratamente controllati e verificati.", - // "To Home": "A casa", - // "Home Saved": "Posizione casa salvata", - // "Destination selected": "Destinazione selezionata:", - // "Now select start pick": "Ora seleziona il punto di partenza:", - "Pick from map": "Scegli dalla mappa", - // "Click here point": "Clicca qui", - "No Car in your site. Sorry!": - "Nessuna auto nella tua posizione. Scusa!", - "Nearest Car for you about ": "Auto più vicina per te circa ", - // "N/A": "N/A", + "Impegno per la sicurezza, autisti verificati.", + "Pick from map": "Scegli da mappa", + "No Car in your site. Sorry!": "Nessuna auto. Spiacenti!", + "Nearest Car for you about ": "Auto più vicina tra circa ", "From :": "Da:", - "Get Details of Trip": "Ottieni dettagli del viaggio", + "Get Details of Trip": "Dettagli", "If you want add stop click here": - "Se vuoi aggiungere una fermata, clicca qui", - // "Driver": "Conducente", + "Per aggiungere fermata clicca qui", "Where you want go ": "Dove vuoi andare ", "My Card": "La mia carta", - "Start Record": "Inizia registrazione", - "Wallet": "Portafoglio", - "History of Trip": "Cronologia viaggio", - "Helping Center": "Centro di aiuto", - "Record saved": "Registrazione salvata", + "Start Record": "Avvia registrazione", + "History of Trip": "Cronologia", + "Helping Center": "Centro assistenza", + "Record saved": "Salvato", "Trips recorded": "Viaggi registrati", - "Select Your Country": "Seleziona il tuo paese", + "Select Your Country": "Seleziona Paese", "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": - "Per assicurarti di ricevere le informazioni più accurate per la tua posizione, seleziona il tuo paese qui sotto. Questo aiuterà a personalizzare l'esperienza e i contenuti dell'app per il tuo paese.", - "Are you sure to delete recorded files": - "Sei sicuro di voler eliminare i file registrati?", - "Select recorded trip": "Seleziona viaggio registrato", - "Card Number": "Numero carta", + "Seleziona il paese per informazioni accurate.", + "Are you sure to delete recorded files": "Eliminare file?", + "Select recorded trip": "Seleziona viaggio", + "Card Number": "Numero Carta", "Hi, Where to ": "Ciao, dove ", - "Pick your destination from Map": - "Scegli la tua destinazione dalla mappa", - "Add Stops": "Aggiungi fermate", - "Get Direction": "Ottieni direzione", - "Add Location": "Aggiungi posizione", - "Switch Rider": "Cambia conducente", + "Pick your destination from Map": "Destinazione da Mappa", + "Add Stops": "Aggiungi Fermate", + "Get Direction": "Indicazioni", + "Add Location": "Aggiungi Posizione", + "Switch Rider": "Cambia Passeggero", "You will arrive to your destination after timer end.": - "Arriverai a destinazione dopo la fine del timer.", - "You can cancel trip": "Puoi annullare il viaggio", + "Arrivo al termine del timer.", + "You can cancel trip": "Puoi annullare", "The driver waitting you in picked location .": - "Il conducente ti aspetta nel luogo selezionato.", - "10\$ and get 3% discount": "10\$ e ottieni il 3% di sconto", - "20\$ and get 4% discount": "20\$ e ottieni il 4% di sconto", - "40\$ and get 6% discount": "40\$ e ottieni il 6% di sconto", - "100\$ and get 9% discount": "100\$ e ottieni il 9% di sconto", - "Pay with Your": "Paga con il tuo", - "Pay with Credit Card": "Paga con carta di credito", - "Payment History": "Cronologia pagamenti", - "Show Promos to Charge": "Mostra promozioni per ricaricare", + "L'autista ti aspetta.", + "Pay with Your": "Paga con", + "Pay with Credit Card": "Paga con Carta", + "Show Promos to Charge": "Promo Ricarica", "Point": "Punto", - "How many hours would you like to wait?": - "Quante ore vuoi aspettare?", - "Driver Wallet": "Portafoglio conducente", - "Choose between those Type Cars": "Scegli tra questi tipi di auto", + "How many hours would you like to wait?": "Quante ore di attesa?", + "Driver Wallet": "Portafoglio Autista", + "Choose between those Type Cars": "Scegli tipo auto", "hour": "ora", - "Select Waiting Hours": "Seleziona ore di attesa", - "Total Points is": "Totale punti è", - "You will receive a code in SMS message": - "Riceverai un codice in un messaggio SMS", + "Select Waiting Hours": "Ore Attesa", + "Total Points is": "Punti Totali", + "You will receive a code in SMS message": "Riceverai SMS", "Done": "Fatto", - "Total Budget from trips is ": "Budget totale dai viaggi è ", - "Total Amount:": "Importo totale:", + "Total Budget from trips is ": "Budget totale viaggi: ", + "Total Amount:": "Importo Totale:", "Total Budget from trips by\nCredit card is ": - "Budget totale dai viaggi con\ncarta di credito è ", + "Budget totale Carte: ", "This amount for all trip I get from Passengers": - "Questo importo per tutti i viaggi che ottengo dai passeggeri", - "Pay from my budget": "Paga dal mio budget", + "Importo dai Passeggeri", + "Pay from my budget": "Paga dal budget", "This amount for all trip I get from Passengers and Collected For me in": - "Questo importo per tutti i viaggi che ottengo dai passeggeri e raccolti per me in", - "You can buy points from your budget": - "Puoi acquistare punti dal tuo budget", + "Importo raccolto", + "You can buy points from your budget": "Compra punti dal budget", "insert amount": "inserisci importo", "You can buy Points to let you online\nby this list below": - "Puoi acquistare punti per rimanere online\ncon questa lista qui sotto", - "Create Wallet to receive your money": - "Crea un portafoglio per ricevere i tuoi soldi", - "Enter your feedback here": "Inserisci il tuo feedback qui", - "Please enter your feedback.": - "Per favore, inserisci il tuo feedback.", + "Compra Punti per andare online", + "Create Wallet to receive your money": "Crea Portafoglio", + "Enter your feedback here": "Inserisci feedback", + "Please enter your feedback.": "Inserisci feedback.", "Feedback": "Feedback", "Submit ": "Invia ", - "Click here to Show it in Map": - "Clicca qui per mostrarlo sulla mappa", + "Click here to Show it in Map": "Mostra su Mappa", "Canceled": "Annullato", - "Type your Email": "Scrivi la tua email", - "No I want": "No, voglio", - "Email is": "L'email è", - "Phone Number is": "Il numero di telefono è", - "Date of Birth is": "La data di nascita è", - "Sex is ": "Il sesso è ", - "Car Details": "Dettagli auto", - "VIN is": "Il VIN è", - "Color is ": "Il colore è ", - "Make is ": "La marca è ", - "Model is": "Il modello è", - "Year is": "L'anno è", - "Expiration Date ": "Data di scadenza ", - "Edit Your data": "Modifica i tuoi dati", - "write vin for your car": "scrivi il VIN per la tua auto", - "VIN": "VIN", - "write Color for your car": "scrivi il colore per la tua auto", - "write Make for your car": "scrivi la marca per la tua auto", - // "Make": "Marca", - "write Model for your car": "scrivi il modello per la tua auto", - // "Model": "Modello", - "write Year for your car": "scrivi l'anno per la tua auto", - // "Expiration Date": "Data di scadenza", - "write Expiration Date for your car": - "scrivi la data di scadenza per la tua auto", + "No I want": "No voglio", + "Email is": "Email:", + "Phone Number is": "Telefono:", + "Date of Birth is": "Data Nascita:", + "Sex is ": "Sesso: ", + "Car Details": "Dettagli Auto", + "VIN is": "Telaio:", + "Color is ": "Colore: ", + "Make is ": "Marca: ", + "Model is": "Modello:", + "Year is": "Anno:", + "Expiration Date ": "Scadenza: ", + "Edit Your data": "Modifica dati", + "write vin for your car": "scrivi telaio", + "VIN": "Telaio", + "Device Change Detected": "Cambio Dispositivo", + "Please verify your identity": "Verifica identità", + "write Color for your car": "scrivi colore", + "write Make for your car": "scrivi marca", + "write Model for your car": "scrivi modello", + "write Year for your car": "scrivi anno", + "write Expiration Date for your car": "scrivi scadenza", "Tariffs": "Tariffe", "Minimum fare": "Tariffa minima", "Maximum fare": "Tariffa massima", - "Flag-down fee": "Tariffa di fermata", - "Including Tax": "Inclusa tassa", - "BookingFee": "Tariffa di prenotazione", + "Flag-down fee": "Tariffa base", + "Including Tax": "IVA inclusa", + "BookingFee": "Costo Prenotazione", "Morning": "Mattina", "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": - "dalle 07:30 alle 10:30 (giovedì, venerdì, sabato, lunedì)", + "07:30 - 10:30", "Evening": "Sera", "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": - "dalle 12:00 alle 15:00 (giovedì, venerdì, sabato, lunedì)", + "12:00 - 15:00", "Night": "Notte", "You have in account": "Hai nel conto", - "Select Country": "Seleziona paese", - "Ride Today : ": "Corsa oggi: ", - "After this period\nYou can\'t cancel!": - "Dopo questo periodo\nNon puoi annullare!", - "from 23:59 till 05:30": "dalle 23:59 alle 05:30", - "Rate Driver": "Valuta conducente", - "Total Cost is ": "Costo totale è ", + "Select Country": "Seleziona Paese", + "Ride Today : ": "Corsa Oggi: ", + "After this period\nYou can't cancel!": + "Dopo questo\nNon puoi annullare!", + "from 23:59 till 05:30": "23:59 - 05:30", + "Rate Driver": "Vota Autista", + "Total Cost is ": "Costo Totale: ", "Write note": "Scrivi nota", - "Time to arrive": "Tempo di arrivo", - "Ride Summaries": "Riepiloghi corse", - "Total Cost": "Costo totale", - "Average of Hours of": "Media di ore di", - " is ON for this month": " è acceso per questo mese", + "Time to arrive": "Ora arrivo", + "Ride Summaries": "Riepiloghi", + "Total Cost": "Costo Totale", + "Average of Hours of": "Media ore", + " is ON for this month": " è ON questo mese", "Days": "Giorni", - "Total Hours on month": "Ore totali nel mese", - "Counts of Hours on days": "Conteggio ore nei giorni", - "OrderId": "ID ordine", - "created time": "tempo di creazione", - "Intaleq Over": "Eccesso di velocità", + "Total Hours on month": "Ore Totali mese", + "Counts of Hours on days": "Ore per giorni", + "OrderId": "ID Ordine", + "created time": "ora creazione", + "Intaleq Over": "Intaleq Finito", "I will slow down": "Rallenterò", - "Map Passenger": "Mappa passeggero", - "Be Slowly": "Sii lento", + "Map Passenger": "Mappa Passeggero", + "Be Slowly": "Vai piano", "If you want to make Google Map App run directly when you apply order": - "Se vuoi che l'app Google Map si avvii direttamente quando applichi l'ordine", - "You can change the language of the app": - "Puoi cambiare la lingua dell'app", - "Your Budget less than needed": - "Il tuo budget è inferiore al necessario", + "Apri Google Maps direttamente", + "You can change the language of the app": "Cambia lingua app", + "Your Budget less than needed": "Budget insufficiente", "You can change the Country to get all features": - "Puoi cambiare il paese per ottenere tutte le funzionalità", - "Change Country": "Cambia paese" + "Cambia Paese per tutte le funzioni", + "Change Country": "Cambia Paese" }, "zh": { "Order": "订单", - "OrderVIP": "VIP订单", + "OrderVIP": "VIP 订单", "Cancel Trip": "取消行程", - "Passenger Cancel Trip": "乘客取消行程", - "VIP Order": "VIP订单", - "The driver accepted your trip": "司机已接受您的行程", - "message From passenger": "乘客的消息", + "Passenger Cancel Trip": "乘客取消了行程", + "VIP Order": "VIP 订单", + "Hi ,I Arrive your site": "您好,我已到达您的位置", + "The driver accepted your trip": "司机已接单", + "message From passenger": "乘客留言", "Cancel": "取消", "Trip Cancelled. The cost of the trip will be added to your wallet.": - "行程已取消。行程费用将添加到您的钱包中。", - "token change": "令牌更改", - "face detect": "人脸检测", - "Face Detection Result": "人脸检测结果", + "行程已取消。费用将退还至您的钱包。", + "token change": "令牌变更", + "face detect": "人脸识别", + "Face Detection Result": "人脸识别结果", "similar": "相似", "not similar": "不相似", - "Hi ,I will go now": "嗨,我现在要走了", - "Passenger come to you": "乘客来找您", - "Call Income": "通话收入", - "Call Income from Passenger": "来自乘客的通话收入", - "Criminal Document Required": "需要犯罪记录文件", - "You should have upload it .": "您应该已经上传了。", + "Hi ,I will go now": "您好,我现在出发", + "Passenger come to you": "乘客正在向您走来", + "Call Income": "来电", + "Call Income from Passenger": "乘客来电", + "Criminal Document Required": "需要无犯罪记录证明", + "You should have upload it .": "您必须上传该文件。", "Call End": "通话结束", - "The order has been accepted by another driver.": "订单已被其他司机接受。", - "The order Accepted by another Driver": "订单被其他司机接受", + "The order has been accepted by another driver.": "订单已被其他司机接单。", + "The order Accepted by another Driver": "订单已被其他司机接单", "We regret to inform you that another driver has accepted this order.": - "我们遗憾地通知您,其他司机已接受此订单。", - "Driver Applied the Ride for You": "司机已为您申请行程", + "很抱歉通知您,已有其他司机接了此单。", + "Driver Applied the Ride for You": "司机为您申请了行程", "Applied": "已申请", - "Hi ,I Arrive your site": "嗨,我到达您的位置了", - "Please go to Car Driver": "请前往司机处", - "Ok I will go now.": "好的,我现在就去。", - "Accepted Ride": "已接受的行程", - "Driver Accepted the Ride for You": "司机已接受您的行程", - "Promo": "促销", - "Show latest promo": "显示最新促销", + "Pay by Sham Cash": "使用 Sham Cash 支付", + "Pay with Debit Card": "使用借记卡支付", + "Please go to Car Driver": "请前往车辆位置", + "Ok I will go now.": "好的,我现在去。", + "Accepted Ride": "已接行程", + "Driver Accepted the Ride for You": "司机为您接受了行程", + "Promo": "优惠", + "Show latest promo": "显示最新优惠", "Trip Monitoring": "行程监控", - "Driver Is Going To Passenger": "司机正在前往乘客处", - "Please stay on the picked point.": "请留在指定地点。", - "message From Driver": "司机的消息", + "Driver Is Going To Passenger": "司机正在前往乘客位置", + "Please stay on the picked point.": "请在接送点等候。", + "message From Driver": "司机留言", "Trip is Begin": "行程开始", "Cancel Trip from driver": "司机取消行程", - "We will look for a new driver.\nPlease wait.": "我们将寻找新的司机。\n请稍候。", + "We will look for a new driver.\nPlease wait.": "正在为您寻找新司机。\n请稍候。", + "The driver canceled your ride.": "司机取消了您的行程。", + "Driver Finish Trip": "司机结束了行程", + "you will pay to Driver": "您将支付给司机", + "Don’t forget your personal belongings.": "别忘了您的随身物品。", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "下车前请确带好随身物品,如有找零将存入您的钱包。感谢您选择 Intaleq。", + "Finish Monitor": "结束监控", + "Trip finished": "行程结束", + "Call Income from Driver": "司机来电", + "Driver Cancelled Your Trip": "司机取消了您的行程", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "您需支付司机的时间费用,请查看您的 Intaleq 钱包", + "Order Applied": "订单已应用", + "welcome to intaleq": "欢迎使用 Intaleq", + "login or register subtitle": "输入手机号登录或注册", + "An application error occurred.": "发生应用程序错误。", + "Submission Failed": "提交失败", + "Your complaint has been submitted.": "您的投诉已提交。", + "Failed to connect to the server. Please try again.": "连接服务器失败,请重试。", + "Ride information not found. Please refresh the page.": + "未找到行程信息,请刷新页面。", + "Please describe your issue before submitting.": "请在提交前描述您的问题。", + "An application error occurred during upload.": "上传时发生错误。", + "Failed to upload audio file.": "音频文件上传失败。", + "Audio uploaded successfully.": "音频上传成功。", + "Complaint cannot be filed for this ride. It may not have been completed or started.": + "无法为此行程提交投诉。行程可能未完成或未开始。", + "2. Attach Recorded Audio (Optional)": "2. 附加录音(可选)", + "Please enter a description of the issue.": "请输入问题描述。", + "phone number label": "手机号", + "phone number required": "必须填写手机号", + "send otp button": "发送验证码", + "verify your number title": "验证您的号码", + "otp sent subtitle": "5位验证码已发送至\n@phoneNumber", + "verify and continue button": "验证并继续", + "enter otp validation": "请输入5位验证码", + "one last step title": "最后一步", + "complete profile subtitle": "完善资料以开始使用", + "first name label": "名字", + "first name required": "必须填写名字", + "last name label": "姓氏", + "Verify OTP": "验证验证码", + "Verification Code": "验证码", + "We have sent a verification code to your mobile number:": + "我们要向您的手机号发送了验证码:", + "Verify": "验证", + "Resend Code": "重发验证码", + "You can resend in": "重发倒计时", + "seconds": "秒", + "Error": "错误", + "Please enter the complete 6-digit code.": "请输入完整的6位验证码。", + "last name required": "必须填写姓氏", + "email optional label": "邮箱(可选)", + "complete registration button": "完成注册", + "User with this phone number or email already exists.": + "该手机号或邮箱已被注册。", + "otp sent success": "验证码已发送至 WhatsApp。", + "failed to send otp": "发送验证码失败。", + "server error try again": "服务器错误,请重试。", + "an error occurred": "发生错误:@error", + "otp verification failed": "验证码验证失败。", + "registration failed": "注册失败。", + "welcome user": "欢迎您,@firstName!", + "Cancel Trip from driver": "司机取消行程", + "We will look for a new driver.\nPlease wait.": "正在寻找新司机。\n请稍候。", "The driver canceled your ride.": "司机取消了您的行程。", "Driver Finish Trip": "司机完成行程", "you will pay to Driver": "您将支付给司机", - "Don’t forget your personal belongings.": "请不要忘记您的个人物品。", + "Don't forget your personal belongings.": "请勿遗忘随身物品。", "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": - "请确保您带上了所有个人物品,并在离开前将任何剩余费用(如适用)添加到您的钱包中。感谢您选择Intaleq应用。", + "请确认带好随身物品,余额已存入钱包。感谢选择 Intaleq。", "Finish Monitor": "结束监控", - "Trip finished": "行程结束", - "Call Income from Driver": "来自司机的通话收入", + "Trip finished": "行程已结束", + "Call Income from Driver": "司机来电", "Driver Cancelled Your Trip": "司机取消了您的行程", "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": - "您将支付给司机,您将支付司机的时间费用,请查看您的Intaleq钱包", - "Order Applied": "订单已申请", - //firebase above - -// - "Where to": "去哪里", + "您将支付司机的时间费用,请查看 Intaleq 钱包", + "Order Applied": "订单已提交", + "Share App": "分享应用", + "Wallet": "钱包", + "Balance": "余额", + "Don’t forget your personal belongings.": "别忘了随身物品。", + "Profile": "个人资料", + "Contact Support": "联系客服", + "Session expired. Please log in again.": "会话已过期,请重新登录。", + "Security Warning": "⚠️ 安全警告", + "Potential security risks detected. The application may not function correctly.": + "检测到潜在安全风险,应用可能无法正常运行。", + "please order now": "立即下单", + "Where to": "去哪里?", "Where are you going?": "您要去哪里?", - "Quick Actions": "快速操作", - "My Wallet": "我的钱包", + "Quick Actions": "快捷操作", + "My Balance": "我的余额", "Order History": "订单历史", "Contact Us": "联系我们", "Driver": "司机", "Complaint": "投诉", - "Promos": "促销", - "Recent Places": "最近的地点", + "Promos": "优惠", + "Recent Places": "最近去过", "From": "从", - "WhatsApp Location Extractor": "WhatsApp位置提取器", + "WhatsApp Location Extractor": "WhatsApp 位置提取器", "Location Link": "位置链接", - "Paste location link here": "在此处粘贴位置链接", + "Paste location link here": "在此粘贴位置链接", "Go to this location": "前往此位置", - "Paste WhatsApp location link": "粘贴WhatsApp位置链接", + "Paste WhatsApp location link": "粘贴 WhatsApp 位置链接", "Select Order Type": "选择订单类型", - "Choose who this order is for": "选择此订单是为谁", - "I want to order for myself": "我想为自己下单", - "I want to order for someone else": "我想为别人下单", - // "Cancel": "取消", - "Order for someone else": "为别人下单", - "Order for myself": "为自己下单", - "Are you want to go this site": "您想去这个网站吗?", - // "Yes": "是", - "No": "否", - "Are you sure to delete this location?": "您确定要删除此位置吗?", + "Choose who this order is for": "选择乘车人", + "I want to order for myself": "我自己乘车", + "I want to order for someone else": "我帮别人叫车", + "Order for someone else": "帮人叫车", + "Order for myself": "自己叫车", + "Are you want to go this site": "您想去这个地点吗?", + "No": "不", + "Pay by Sham Cash": "Sham Cash 支付", + "Intaleq Wallet": "Intaleq 钱包", + "Have a promo code?": "有优惠码吗?", + "Your Wallet balance is ": "您的钱包余额为:", + "Cash": "现金", + "Phone Number": "手机号码", + "Search country": "搜索国家/地区", + "Payment Successful!": "支付成功!", + "Your payment was successful.": "您的支付已成功。", + "Pay directly to the captain": "直接付给司机", + "Top up Wallet to continue": "充值钱包以继续", + "Or pay with Cash instead": "或者使用现金支付", + "Confirm & Find a Ride": "确认并叫车", + "Balance:": "余额:", + "Alerts": "提醒", + "Welcome Back!": "欢迎回来!", + "Current Balance": "当前余额", + "Set Wallet Phone Number": "设置钱包手机号", + "Link a phone number for transfers": "关联手机号以便转账", + "Payment History": "支付记录", + "View your past transactions": "查看历史交易", + "Top up Wallet": "钱包充值", + "Add funds using our secure methods": "使用安全方式充值", + "Driver is waiting": "司机正在等待", + "Type your message...": "输入您的消息...", + "Driver Accepted Request": "司机已接单", + "Message": "消息", + "Call": "通话", + "Set Phone Number": "设置手机号", + "Select This Ride": "选择此行程", + "Call Driver": "呼叫司机", + "Increase Fare": "增加车费", + "Stop": "停止", + "Record": "录音", + "Share": "分享", + "WhatsApp": "WhatsApp", + "SOS": "紧急求助", + "No drivers accepted your request yet": "尚无司机接单", + "Increasing the fare might attract more drivers. Would you like to increase the price?": + "加价可能吸引更多司机。您想加价吗?", + "Please make sure not to leave any personal belongings in the car.": + "请确保不要将私人物品遗落在车内。", + "Cancel Ride": "取消行程", + "Route Not Found": "未找到路线", + "We couldn't find a valid route to this destination. Please try selecting a different point.": + "无法找到前往该目的地的有效路线,请尝试选择其他地点。", + "alert": "警报", + "You can call or record audio during this trip.": "行程中您可以通话或录音。", + "Warning: Speeding detected!": "警告:检测到超速!", + "Fixed Price": "一口价", + "Report": "举报", + "Comfort": "舒适型", + "Intaleq Balance": "Intaleq 余额", + "Search for a starting point": "搜索起点", + "Top up Balance to continue": "充值余额以继续", + "Electric": "电动车", + "Lady": "女性专车", + "Van": "商务车", + "Rayeh Gai": "往返行程", + "Join Intaleq as a driver using my referral code!": + "使用我的推荐码加入 Intaleq 成为司机!", + "Use code:": "使用代码:", + "Download the Intaleq Driver app now and earn rewards!": + "立即下载 Intaleq 司机端赢取奖励!", + "Get a discount on your first Intaleq ride!": "首单行程享优惠!", + "Use my referral code:": "使用我的推荐码:", + "Download the Intaleq app now and enjoy your ride!": + "立即下载 Intaleq,享受出行!", + "Contacts Loaded": "联系人已加载", + "Showing": "显示", + "of": "/", + "Pay by MTN Wallet": "MTN 钱包支付", + "Pay by Syriatel Wallet": "Syriatel 钱包支付", + "Customer not found": "未找到客户", + "Wallet is blocked": "钱包被冻结", + "Customer phone is not active": "客户手机号无效", + "Balance not enough": "余额不足", + "Balance limit exceeded": "超出余额限制", + "Incorrect sms code": "⚠️ 短信验证码错误,请重试。", + "contacts. Others were hidden because they don't have a phone number.": + "个联系人。其他因无号码而被隐藏。", + "No contacts found": "未找到联系人", + "No contacts with phone numbers were found on your device.": + "您的设备上未找到带号码的联系人。", + "Permission denied": "权限被拒绝", + "Contact permission is required to pick contacts": "需要通讯录权限来选择联系人。", + "An error occurred while picking contacts:": "选择联系人时出错:", + "Please enter a correct phone": "请输入正确的手机号", + "Success": "成功", + "Invite sent successfully": "邀请发送成功", + "Hello! I'm inviting you to try Intaleq.": "您好!我邀请您体验 Intaleq。", + "Use my invitation code to get a special gift on your first ride!": + "使用我的邀请码,首单享好礼!", + "Your personal invitation code is:": "您的个人邀请码是:", + "Be sure to use it quickly! This code expires at": "请尽快使用!代码过期时间:", + "Download the app now:": "立即下载应用:", + "See you on the road!": "路上见!", + "This phone number has already been invited.": "该手机号已被邀请。", + "An unexpected error occurred. Please try again.": "发生意外错误,请重试。", + "You deserve the gift": "您应得的礼物", + "Claim your 20 LE gift for inviting": "领取您的20元邀请奖励", + "You have got a gift for invitation": "您获得了邀请奖励", + "You have earned 20": "您赚取了 20", + "LE": "¥", + "Vibration feedback for all buttons": "按键震动反馈", + "Share with friends and earn rewards": "分享好友赢奖励", + "Gift Already Claimed": "礼物已领取", + "You have already received your gift for inviting": "您已领取过此邀请奖励", + "Keep it up!": "继续加油!", + "has completed": "已完成", + "trips": "行程", + "Personal Information": "个人信息", + "Name": "姓名", + "Not set": "未设置", + "Gender": "性别", + "Education": "学历", + "Work & Contact": "工作与联系方式", + "Employment Type": "雇佣类型", + "Marital Status": "婚姻状况", + "SOS Phone": "紧急联系电话", + "Sign Out": "注销", + "Delete My Account": "删除账户", + "Update Gender": "更新性别", + "Update": "更新", + "Update Education": "更新学历", + "Are you sure? This action cannot be undone.": "确定吗?此操作不可撤销。", + "Confirm your Email": "确认邮箱", + "Type your Email": "输入邮箱", + "Delete Permanently": "永久删除", + "Male": "男", + "Female": "女", + "Other": "其他", + "High School Diploma": "高中学历", + "Associate Degree": "大专", + "Bachelor's Degree": "本科学位", + "Master's Degree": "硕士学位", + "Doctoral Degree": "博士学位", + "Select your preferred language for the app interface.": "选择应用界面语言。", + "Language Options": "语言选项", + "You can claim your gift once they complete 2 trips.": + "当他们完成2次行程后,您可以领取奖励。", + "Closest & Cheapest": "最近且最便宜", + "Comfort choice": "舒适之选", + "Travel in a modern, silent electric car. A premium, eco-friendly choice for a smooth ride.": + "乘坐现代化的静音电动车。优质环保,出行顺畅。", + "Spacious van service ideal for families and groups. Comfortable, safe, and cost-effective travel together.": + "宽敞的商务车,适合家庭和团体。舒适安全,性价比高。", + "Quiet & Eco-Friendly": "安静环保", + "Lady Captain for girls": "女性专车", + "Van for familly": "家庭商务车", + "Are you sure to delete this location?": "确定要删除此地址吗?", + "Change Work location?": "更改公司地址?", + "Change Home location?": "更改家庭地址?", + "Submit a Complaint": "提交投诉", + "Submit Complaint": "提交投诉", + "No trip history found": "无行程记录", + "Your past trips will appear here.": "您的历史行程将显示在此处。", + "1. Describe Your Issue": "1. 描述问题", + "Enter your complaint here...": "在此输入投诉内容...", + "2. Attach Recorded Audio": "2. 附加录音", + "No audio files found.": "未找到音频文件。", + "Confirm Attachment": "确认附件", + "Attach this audio file?": "是否附加此音频?", + "Uploaded": "已上传", + "3. Review Details & Response": "3. 查看详情和回复", + "Date": "日期", + "Today's Promos": "今日优惠", + "No promos available right now.": "暂无优惠。", + "Check back later for new offers!": "稍后回来查看新优惠!", + "Valid Until:": "有效期至:", + "CODE": "代码", + "Login": "登录", + "Sign in for a seamless experience": "登录以获得无缝体验", + "Sign In with Google": "通过 Google 登录", + "Sign in with Apple": "通过 Apple 登录", + "User not found": "用户不存在", + "Need assistance? Contact us": "需要帮助?联系我们", + "Email": "电子邮箱", + "Your email address": "您的邮箱地址", + "Enter a valid email": "请输入有效的邮箱", + "Password": "密码", + "Your password": "您的密码", + "Enter your password": "请输入密码", + "Submit": "提交", + "Terms of Use & Privacy Notice": "使用条款和隐私政策", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the ": + "选择下方的“我同意”,即表示我确认已阅读并同意", + "Terms of Use": "使用条款", + " and acknowledge the ": " 并知晓 ", + "Privacy Notice": "隐私政策", + " . I am at least 18 years old.": " 。我已年满18岁。", + "I Agree": "我同意", + "Continue": "继续", + "Enable Location": "开启定位", + "To give you the best experience, we need to know where you are. Your location is used to find nearby captains and for pickups.": + "为了提供最佳体验,我们需要知道您的位置。定位用于查找附近的司机和接送。", + "Allow Location Access": "允许访问位置", + "Welcome to Intaleq!": "欢迎使用 Intaleq!", + "Before we start, please review our terms.": "开始前,请阅读我们的条款。", + "Your journey starts here": "行程从此开始", + "Cancel Search": "取消搜索", + "Set pickup location": "设置上车点", + "Move the map to adjust the pin": "移动地图以调整位置", + "Searching for the nearest captain...": "正在搜索最近的司机...", + "No one accepted? Try increasing the fare.": "没人接单?尝试加价。", + "Increase Your Trip Fee (Optional)": "增加车费(可选)", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "尚未找到司机。考虑加价以吸引司机接单。", + "No, thanks": "不用了,谢谢", + "Increase Fee": "加价", + "Copy": "复制", + "Promo Copied!": "优惠码已复制!", + "Code": "代码", + "copied to clipboard": "已复制到剪贴板", + "Price": "价格", + "Intaleq's Response": "Intaleq 回复", + "Awaiting response...": "等待回复...", + "Audio file not attached": "未附加音频文件", + "The audio file is not uploaded yet.\\nDo you want to submit without it?": + "音频文件尚未上传。\\n确定要不带音频提交吗?", "deleted": "已删除", - "To Work": "去工作", - "Work Saved": "工作地点已保存", + "To Work": "去公司", + "Work Saved": "公司地址已保存", "To Home": "回家", - "Home Saved": "家已保存", - "Destination selected": "目的地已选择", + "Home Saved": "家庭地址已保存", + "Destination selected": "终点已选", "Now select start pick": "现在选择起点", "OK": "确定", - "Confirm Pick-up Location": "确认接载地点", - "Set Location on Map": "在地图上设置位置", - "Nearest Car: ~": "最近的车:~", - "Nearest Car": "最近的车", - "No cars nearby": "附近没有车", - "Favorite Places": "收藏的地点", - "No favorite places yet!": "还没有收藏的地点!", - "from your favorites": "从您的收藏中", + "Confirm Pick-up Location": "确认上车点", + "Set Location on Map": "在地图上设定位置", + "Leave a detailed comment (Optional)": "留下详细评论(可选)", + "Share your experience to help us improve...": "分享您的体验以帮助我们改进...", + "Your valuable feedback helps us improve our service quality.": + "您的宝贵反馈有助于我们提升服务质量。", + "witout zero": "不带零", + "Top up Balance": "充值余额", + "An error occurred": "发生错误", + "Send WhatsApp Message": "发送 WhatsApp 消息", + "How was your trip with": "您与...的行程如何", + "Drawing route on map...": "正在绘制路线...", + "Please wait while we prepare your trip.": "请稍候,正在为您准备行程。", + "Submit Rating": "提交评价", + "Call Support": "呼叫客服", + "You can contact us during working hours from 10:00 - 16:00.": + "您可以在工作时间 10:00 - 16:00 联系我们。", + "Intaleq is the safest and most reliable ride-sharing app designed especially for passengers in Syria. We provide a comfortable, respectful, and affordable riding experience with features that prioritize your safety and convenience. Our trusted captains are verified, insured, and supported by regular car maintenance carried out by top engineers. We also offer on-road support services to make sure every trip is smooth and worry-free. With Intaleq, you enjoy quality, safety, and peace of mind—every time you ride.": + "Intaleq 是专为中国乘客设计的最安全可靠的网约车应用。我们提供舒适、尊重且实惠的出行体验,优先考虑您的安全和便利。我们值得信赖的司机均经过认证并投保。", + "Work time is from 10:00 AM to 16:00 PM.\nYou can send a WhatsApp message or email.": + "工作时间为上午10:00至下午4:00。\n您可以发送 WhatsApp 消息或电子邮件。", + "Sorry": "抱歉", + "Customer MSISDN doesn’t have customer wallet": "客户手机号没有关联钱包", + "Please enter the number without the leading 0": "请输入不带前导0的号码", + "Please enter your phone number": "请输入您的手机号", + "Phone number seems too short": "手机号似乎太短", + "No cars are available at the moment. Please try again later.": + "暂无车辆可用,请稍后重试。", + "Nearest Car: ~": "最近车辆:~", + "Nearest Car": "最近车辆", + "No cars nearby": "附近无车", + "Favorite Places": "常用地点", + "No favorite places yet!": "暂无常用地点!", + "from your favorites": "来自常用地点", "Back": "返回", - "Sign in for a seamless experience": "登录以获得无缝体验", - "Sign In with Google": "使用Google登录", - "Sign in with Apple": "使用Apple登录", - "Need assistance? Contact us": "需要帮助?联系我们", - "User not found": "用户未找到", - "Email": "电子邮件", - "Your email address": "您的电子邮件地址", - "Enter a valid email": "请输入有效的电子邮件", - "Password": "密码", - // "Your password": "您的密码", - "Enter your password": "请输入您的密码", - "Submit": "提交", - "Terms of Use & Privacy Notice": "使用条款和隐私声明", - "Terms of Use": "使用条款", - "Privacy Notice": "隐私声明", + "Enter your code below to apply the discount.": "在下方输入代码以应用折扣。", "By selecting \"I Agree\" below, I confirm that I have read and agree to the": - "通过在下方选择“我同意”,我确认我已阅读并同意", - "and acknowledge the": "并承认", - ". I am at least 18 years old.": "。我至少18岁。", - "Continue": "继续", - "Enable Location Access": "启用位置访问", + "选择下方的“我同意”,即表示我确认已阅读并同意", + "and acknowledge the": "并认可", + "Enable Location Access": "开启位置访问", "We need your location to find nearby drivers for pickups and drop-offs.": - "我们需要您的位置以找到附近的司机进行接送。", - "Allow Location Access": "允许位置访问", - "You should restart app to change language": "您应重新启动应用以更改语言", + "我们需要您的位置来寻找附近的司机进行接送。", + "You should restart app to change language": "您需要重启应用以更改语言", "Home Page": "主页", "To change Language the App": "更改应用语言", "Learn more about our app and mission": "了解更多关于我们的应用和使命", - "Promos For Today": "今日促销", - "Choose your ride": "选择您的行程", - "Your Journey Begins Here": "您的旅程从这里开始", + "Promos For Today": "今日优惠", + "Choose your ride": "选择车型", + "Your Journey Begins Here": "旅程从这里开始", "Bonus gift": "奖励礼物", "Pay": "支付", "Get": "获得", "Send to Driver Again": "再次发送给司机", "Driver Name:": "司机姓名:", - "No trip data available": "没有可用的行程数据", + "No trip data available": "无行程数据", "Car Plate:": "车牌号:", "remaining": "剩余", "Order Cancelled": "订单已取消", - "You canceled VIP trip": "您取消了VIP行程", + "You canceled VIP trip": "您取消了 VIP 行程", "Passenger cancelled order": "乘客取消了订单", - "Your trip is scheduled": "您的行程已安排", + "Your trip is scheduled": "行程已预约", "Don't forget your ride!": "别忘了您的行程!", "Trip updated successfully": "行程更新成功", - "Car Make:": "汽车品牌:", - "Car Model:": "汽车型号:", - "Car Color:": "汽车颜色:", + "Car Make:": "品牌:", + "Car Model:": "型号:", + "Car Color:": "颜色:", "Driver Phone:": "司机电话:", - "Pre-booking": "提前预订", - "Waiting VIP": "等待VIP", + "Pre-booking": "预约", + "Waiting VIP": "等待 VIP", "Driver List": "司机列表", "Confirm Trip": "确认行程", - "Select date and time of trip": "选择行程的日期和时间", + "Select date and time of trip": "选择行程日期和时间", "Date and Time Picker": "日期和时间选择器", "Trip Status:": "行程状态:", - "pending": "待定", - "accepted": "已接受", + "pending": "待处理", + "accepted": "已接单", "rejected": "已拒绝", "Apply": "应用", - "Enter your promo code": "输入您的促销代码", - "Apply Promo Code": "应用促销代码", - "Scheduled Time:": "预定时间:", - "No drivers available": "没有可用的司机", + "Enter your promo code": "输入优惠码", + "Apply Promo Code": "应用优惠码", + "Scheduled Time:": "预约时间:", + "No drivers available": "暂无司机", "No drivers available at the moment. Please try again later.": - "目前没有可用的司机。请稍后再试。", - "you have a negative balance of": "您的余额为负", + "目前暂无司机,请稍后重试。", + "you have a negative balance of": "您的欠款金额为", "Please try again in a few moments": "请稍后再试", "Unknown Driver": "未知司机", "in your": "在您的", - "The driver accepted your order for": "司机已接受您的订单", - "wallet due to a previous trip.": "由于之前的行程,钱包。", + "The driver accepted your order for": "司机接单价格为", + "wallet due to a previous trip.": "钱包(因之前行程)。", "rides": "行程", - "Add Work": "添加工作", + "Add Work": "添加公司", "The reason is": "原因是", "User does not have a wallet #1652": "用户没有钱包 #1652", "Price of trip": "行程价格", "From:": "从:", "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "对于速度和送货行程,价格是动态计算的。对于舒适行程,价格基于时间和距离。", - "Phone Wallet Saved Successfully": "手机钱包保存成功", - "Add wallet phone you use": "添加您使用的钱包手机", - "Update Available": "有更新可用", - "Phone number must be exactly 11 digits long": "电话号码必须正好是11位数字", - "Insert Wallet phone number": "插入钱包电话号码", - "Phone number isn't an Egyptian phone number": "电话号码不是埃及电话号码", + "Intaleq 和送货行程采用动态计价。舒适型行程根据时间和距离计价。", + "Phone Wallet Saved Successfully": "钱包手机号保存成功", + "Add wallet phone you use": "添加您使用的钱包手机号", + "Update Available": "有新版本", + "Phone number must be exactly 11 digits long": "手机号必须为11位数字", + "Insert Wallet phone number": "输入钱包手机号", + "Phone number isn't an Egyptian phone number": "非中国手机号", "A new version of the app is available. Please update to the latest version.": - "有新版本的应用可用。请更新到最新版本。", + "应用有新版本,请更新至最新版本。", "We use location to get accurate and nearest passengers for you": - "我们使用位置为您获取准确且最近的乘客", - "This ride is already applied by another driver.": "此行程已被其他司机申请。", + "我们使用定位为您寻找准确且最近的乘客", + "This ride is already applied by another driver.": "该行程已被其他司机接单。", "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": - "我们使用您的精确位置来找到最近的可用司机并提供准确的接送信息。您可以在设置中管理此功能。", - "Where are you, sir?": "先生,您在哪里?", + "我们使用您的精确位置来寻找最近的司机并提供准确的接送信息。您可以在设置中管理此项。", + "Where are you, sir?": "先生,您在哪?", "I've been trying to reach you but your phone is off.": - "我一直在尝试联系您,但您的电话已关机。", + "我一直在联系您,但您关机了。", "Please don't be late": "请不要迟到", "Please don't be late, I'm waiting for you at the specified location.": - "请不要迟到,我在指定地点等您。", + "请别迟到,我在指定地点等您。", "My location is correct. You can search for me using the navigation app": - "我的位置是正确的。您可以使用导航应用搜索我。", - "Hello, I'm at the agreed-upon location": "您好,我在约定的地点", - "How much longer will you be?": "您还要多久?", - "Phone number is verified before": "电话号码之前已验证", + "我的位置是正确的,您可以用导航搜索我", + "Hello, I'm at the agreed-upon location": "您好,我在约定地点", + "How much longer will you be?": "还要多久?", + "Phone number is verified before": "手机号已验证过", "Change Ride": "更改行程", "You can change the destination by long-pressing any point on the map": - "您可以通过长按地图上的任何点来更改目的地", - "Pick from map destination": "从地图中选择目的地", + "长按地图任意点可更改目的地", + "Pick from map destination": "在地图上选择终点", "Pick or Tap to confirm": "选择或点击确认", - "Accepted your order": "已接受您的订单", - "Order Accepted": "订单已接受", - "with type": "类型为", - "accepted your order at price": "以价格接受了您的订单", + "Accepted your order": "接受了您的订单", + "Order Accepted": "订单已接", + "with type": "类型", + "accepted your order at price": "以价格接单", "you canceled order": "您取消了订单", - "If you want order to another person": "如果您想为其他人下单", - // "Ok I will go now.": "好的,我现在就去。", - // "Hi, I will go now": "嗨,我现在要走了", - "upgrade price": "升级价格", - "Please enter a correct phone": "请输入正确的电话", + "If you want order to another person": "如果想为他人叫车", + "upgrade price": "加价", "airport": "机场", "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": - "选择舒适的车,路线灵活且有停靠点。此机场以此价格提供签证入境。", + "舒适车型,路线灵活,可停车的最佳选择。", "You can upgrade price to may driver accept your order": - "您可以升级价格以使司机接受您的订单", + "您可以加价以促使司机接单", "Change Route": "更改路线", - "No Captain Accepted Your Order": "没有船长接受您的订单", + "No Captain Accepted Your Order": "无司机接单", "We are looking for a captain but the price may increase to let a captain accept": - "我们正在寻找船长,但价格可能会上涨以使船长接受", - "No, I want to cancel this trip": "不,我想取消此行程", - // "Trip Cancelled. The cost of the trip will be added to your wallet.": "行程已取消。行程费用将添加到您的钱包中。", + "正在寻找司机,价格可能会上涨以促进接单", + "No, I want to cancel this trip": "不,我想取消行程", "Attention": "注意", "Trip Cancelled. The cost of the trip will be deducted from your wallet.": - "行程已取消。行程费用将从您的钱包中扣除。", + "行程已取消,费用将从钱包扣除。", "You will be charged for the cost of the driver coming to your location.": - "您将被收取司机前往您位置的费用。", - "reject your order.": "拒绝您的订单。", - "Order Under Review": "订单正在审核中", + "将收取司机空驶费。", + "reject your order.": "拒绝了您的订单。", + "Order Under Review": "订单审核中", "is reviewing your order. They may need more information or a higher price.": - "正在审核您的订单。他们可能需要更多信息或更高的价格。", - // "The driver canceled your ride.": "司机取消了您的行程。", - "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": - "我们还没有找到任何司机。考虑增加您的行程费用以使您的报价对司机更具吸引力。", - "Increase Your Trip Fee (Optional)": "增加您的行程费用(可选)", - "Vibration": "振动", - "Resend code": "重新发送代码", - // "token change": "令牌更改", - "change device": "更改设备", - "Device Change Detected": "检测到设备更改", + "正在审核您的订单。可能需要更多信息或更高价格。", + "Vibration": "震动", + "Resend code": "重发验证码", + "change device": "更换设备", + "Device Change Detected": "检测到设备变更", "You can only use one device at a time. This device will now be set as your active device.": - "您一次只能使用一个设备。此设备现在将被设置为您的活动设备。", + "您只能同时使用一台设备。此设备现已设为活动设备。", "Click here point": "点击这里", - "Are you want to change": "您想更改", + "Are you want to change": "您想更改吗", "by": "由", - "Enter your complaint here": "在此处输入您的投诉", - "Please enter your complaint.": "请输入您的投诉。", + "Enter your complaint here": "在此输入投诉", + "Please enter your complaint.": "请输入您的投诉内容。", "Complaint data saved successfully": "投诉数据保存成功", "Trip Monitor": "行程监控", - "Insert SOS Phone": "插入SOS电话", - "Add SOS Phone": "添加SOS电话", - // "Trip Monitoring": "行程监控", - "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": - "亲爱的,\n\n🚀 我刚刚开始了一次激动人心的旅行,我想与您实时分享我的旅程详情和当前位置!请下载Intaleq应用。它将允许您查看我的行程详情和最新位置。\n\n👈 下载链接:\nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\n我期待在冒险中与您保持联系!\n\nIntaleq,", - "Send Intaleq app to him": "发送Intaleq应用给他", - "No passenger found for the given phone number": "未找到给定电话号码的乘客", - "No user found for the given phone number": "未找到给定电话号码的用户", - "This price is": "此价格为", - "Work": "工作", - "Add Home": "添加家", + "Insert SOS Phone": "输入 SOS 电话", + "Add SOS Phone": "添加 SOS 电话", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "亲爱的,\n\n🚀 我刚开始了一段行程,想实时分享我的位置给你!请下载 Intaleq 应用查看。\n\n👉 下载链接:\nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nIntaleq ,", + "Send Intaleq app to him": "发送 Intaleq 给对方", + "No passenger found for the given phone number": "该号码未找到乘客", + "No user found for the given phone number": "该号码未找到用户", + "This price is": "价格是", + "Work": "公司", + "Add Home": "添加家庭地址", "Notifications": "通知", - "💳 Pay with Credit Card": "💳 使用信用卡支付", - "⚠️ You need to choose an amount!": "⚠️ 您需要选择一个金额!", - "💰 Pay with Wallet": "💰 使用钱包支付", - "You must restart the app to change the language.": "您必须重新启动应用以更改语言。", + "💳 Pay with Credit Card": "💳 信用卡支付", + "⚠️ You need to choose an amount!": "⚠️ 您需要选择金额!", + "💰 Pay with Wallet": "💰 钱包支付", + "You must restart the app to change the language.": "更改语言需重启应用。", "joined": "已加入", - "Driver joined the channel": "司机已加入频道", - "Driver left the channel": "司机已离开频道", + "Driver joined the channel": "司机加入频道", + "Driver left the channel": "司机离开频道", "Call Page": "通话页面", - // "Call End": "通话结束", "Call Left": "剩余通话", - r"$ Next as Cash $!": "下一个作为现金!", - "To use Wallet charge it": "要使用钱包,请充值", - "We are searching for the nearest driver to you": "我们正在为您寻找最近的司机", - "Best choice for cities": "城市的最佳选择", + " Next as Cash !": " 下次付现金!", + "To use Wallet charge it": "充值以使用钱包", + "We are searching for the nearest driver to you": "正在为您搜索最近的司机", + "Best choice for cities": "城市出行首选", "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": - "Rayeh Gai:往返服务,方便城市间旅行,简单可靠。", - "Rayeh Gai": "Rayeh Gai", - "This trip is for women only": "此行程仅限女性", + "往返行程:便捷的城际旅行服务。", + "This trip is for women only": "仅限女性", "Total budgets on month": "本月总预算", - "You have call from driver": "您有来自司机的电话", - "Comfort": "舒适", - "Intaleq": "速度", + "You have call from driver": "司机来电", + "Intaleq": "Intaleq", + "passenger agreement": "乘客协议", + "To become a passenger, you must review and agree to the ": + "成为乘客需同意 ", + "agreement subtitle": "继续即代表您同意使用条款和隐私政策。", + "terms of use": "使用条款", + " and acknowledge our Privacy Policy.": " 并知晓隐私政策。", + "and acknowledge our": "并知晓", + "privacy policy": "隐私政策。", + "i agree": "我同意", "Driver already has 2 trips within the specified period.": - "司机在指定时间内已经有2次行程。", - "The invitation was sent successfully": "邀请已成功发送", - "Lady": "女士", - "You should select your country": "您应选择您的国家", - "Scooter": "滑板车", + "司机在指定时段内已有2个行程。", + "The invitation was sent successfully": "邀请发送成功", + "You should select your country": "请选择您的国家/地区", + "Scooter": "电动车/摩托车", "A trip with a prior reservation, allowing you to choose the best captains and cars.": - "提前预订的行程,允许您选择最好的船长和汽车。", - "Mishwar Vip": "Mishwar Vip", - "The driver waiting you in picked location .": "司机在指定地点等您。", + "预约行程,可选择最佳司机和车辆。", + "Mishwar Vip": "VIP 行程", + "The driver waiting you in picked location .": "司机在接送点等您。", "About Us": "关于我们", "You can change the vibration feedback for all buttons": - "您可以更改所有按钮的振动反馈", + "可更改所有按键的震动反馈", "Most Secure Methods": "最安全的方法", - "In-App VOIP Calls": "应用内VOIP通话", - "Recorded Trips for Safety": "为安全记录的行程", + "In-App VOIP Calls": "应用内网络通话", + "Recorded Trips for Safety": "行程录音保障安全", "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": - "\n我们还优先考虑 affordability,提供有竞争力的价格以使您的行程更易获得。", + "\n我们提供具有竞争力的价格,让出行更实惠。", "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": - "Intaleq是一款专为您的安全和 affordability 设计的拼车应用。我们将您与您所在地区的可靠司机联系起来,确保便捷且无压力的旅行体验。\n\n以下是一些使我们与众不同的关键功能:", - "Sign In by Apple": "使用Apple登录", - "Sign In by Google": "使用Google登录", - "How do I request a ride?": "如何请求行程?", + "Intaleq 是一款注重安全和实惠的网约车应用,为您连接可靠司机。", + "Sign In by Apple": "通过 Apple 登录", + "Sign In by Google": "通过 Google 登录", + "How do I request a ride?": "如何叫车?", "Step-by-step instructions on how to request a ride through the Intaleq app.": - "通过Intaleq应用请求行程的逐步说明。", - "What types of vehicles are available?": "有哪些类型的车辆可用?", + "Intaleq 叫车分步指南。", + "What types of vehicles are available?": "有哪些车型?", "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": - "Intaleq提供多种车辆选项以满足您的需求,包括经济型、舒适型和豪华型。选择最适合您预算和乘客数量的选项。", - "How can I pay for my ride?": "如何支付我的行程?", + "Intaleq 提供经济型、舒适型和豪华型等多种选择。", + "How can I pay for my ride?": "如何支付?", "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": - "Intaleq提供多种支付方式以方便您。在行程确认期间选择现金支付或信用卡/借记卡支付。", - "Can I cancel my ride?": "我可以取消我的行程吗?", - "Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.": - "是的,您可以在某些条件下取消行程(例如,在分配司机之前)。有关详细信息,请参阅Intaleq取消政策。", - "Driver Registration & Requirements": "司机注册和要求", - "How can I register as a driver?": "如何注册为司机?", - "What are the requirements to become a driver?": "成为司机的要求是什么?", + "Intaleq 支持现金、信用卡/借记卡支付。", + "Can I cancel my ride?": "可以取消吗?", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "可以取消,但根据取消时间可能会产生费用。", + "Driver Registration & Requirements": "司机注册与要求", + "How can I register as a driver?": "如何注册成为司机?", + "What are the requirements to become a driver?": "司机有什么要求?", "Visit our website or contact Intaleq support for information on driver registration and requirements.": - "访问我们的网站或联系Intaleq支持以获取有关司机注册和要求的信息。", + "请访问官网或联系客服了解详情。", "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": - "Intaleq提供应用内聊天功能,允许您在行程期间与司机或乘客沟通。", + "Intaleq 提供应用内聊天功能。", "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": - "Intaleq优先考虑您的安全。我们提供司机验证、应用内行程跟踪和紧急联系人选项等功能。", + "Intaleq 优先考虑安全,提供司机验证、行程追踪和紧急联系人功能。", "Frequently Questions": "常见问题", "User does not exist.": "用户不存在。", "We need your phone number to contact you and to help you.": - "我们需要您的电话号码以联系您并帮助您。", - "You will recieve code in sms message": "您将在短信中收到代码", + "我们需要您的手机号以联系并为您提供服务。", + "You will recieve code in sms message": "您将收到短信验证码", "Please enter": "请输入", "We need your phone number to contact you and to help you receive orders.": - "我们需要您的电话号码以联系您并帮助您接收订单。", - "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": - "您的犯罪记录上的全名与驾驶执照上的不匹配。请验证并提供正确的文件。", - "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": - "您的驾驶执照上的国家号码与身份证件上的不匹配。请验证并提供正确的文件。", - "Capture an Image of Your Criminal Record": "拍摄您的犯罪记录图像", + "我们需要您的手机号以便您接单。", + "The full name on your criminal record does not match the one on your driver's license. Please verify and provide the correct documents.": + "无犯罪记录证明上的姓名与驾驶证不符。", + "The national number on your driver's license does not match the one on your ID document. Please verify and provide the correct documents.": + "驾驶证上的身份证号与身份证不符。", + "Capture an Image of Your Criminal Record": "拍摄无犯罪记录证明", "IssueDate": "签发日期", - "Capture an Image of Your car license front ": "拍摄您的汽车驾照正面图像", - "Capture an Image of Your ID Document front": "拍摄您的身份证件正面图像", - "NationalID": "国家ID", + "Capture an Image of Your car license front": "拍摄行驶证正面", + "Capture an Image of Your ID Document front": "拍摄身份证正面", + "NationalID": "身份证号", "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": - "您可以与朋友分享Intaleq应用,并通过他们使用您的代码乘坐行程赚取奖励", + "分享应用给好友,赚取奖励。", "FullName": "全名", - "No invitation found yet!": "尚未找到邀请!", + "No invitation found yet!": "未找到邀请!", "InspectionResult": "检查结果", - "Criminal Record": "犯罪记录", - "Share App": "分享应用", - "The email or phone number is already registered.": "电子邮件或电话号码已注册。", + "Criminal Record": "无犯罪记录证明", + "The email or phone number is already registered.": "邮箱或手机号已被注册。", "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": - "要在Intaleq应用上成为拼车司机,您需要上传您的驾驶执照、身份证件和汽车注册文件。我们的AI系统将在2-3分钟内即时审查并验证其真实性。如果您的文件获得批准,您可以开始在Intaleq应用上作为司机工作。请注意,提交欺诈性文件是严重违法行为,可能导致立即终止和法律后果。", + "成为司机需上传驾驶证、身份证和行驶证。AI系统将在2-3分钟内审核。提交虚假文件将导致封号。", "Documents check": "文件检查", - "Driver's License": "驾驶执照", - "for your first registration!": "用于您的首次注册!", + "Driver's License": "驾驶证", + "for your first registration!": "首次注册奖励!", "Get it Now!": "立即获取!", "before": "之前", "Code not approved": "代码未批准", - "3000 LE": "3000 LE", - "Do you have an invitation code from another driver?": - "您有其他司机的邀请代码吗?", - "Paste the code here": "在此处粘贴代码", - "No, I don't have a code": "不,我没有代码", + "3000 LE": "¥3000", + "Do you have an invitation code from another driver?": "有其他司机的邀请码吗?", + "Paste the code here": "粘贴代码", + "No, I don't have a code": "没有代码", "Code approved": "代码已批准", - "Install our app:": "安装我们的应用:", + "Install our app:": "安装应用:", "Invite another driver and both get a gift after he completes 100 trips!": - "邀请另一位司机,并在他完成100次行程后双方都获得礼物!", + "邀请司机,完成100单后双方均可获奖励!", "Invite": "邀请", - "Are you sure?": "您确定吗?", + "Are you sure?": "确定吗?", "This will delete all recorded files from your device.": - "这将删除您设备上的所有记录文件。", - "Select a file": "选择一个文件", + "这将删除设备上所有录音文件。", + "Select a file": "选择文件", "Select a File": "选择一个文件", "Delete": "删除", - "attach audio of complain": "附加投诉音频", - "Phone Number Check": "电话号码检查", - "Drivers received orders": "司机已收到订单", - "No audio files recorded.": "没有录制的音频文件。", - "This is for delivery or a motorcycle.": "这是用于送货或摩托车。", - // "We will look for a new driver.\nPlease wait.": "我们将寻找新的司机。\n请稍候。", - "Intaleq Reminder": "Intaleq提醒", - "It's time to check the Intaleq app!": "是时候检查Intaleq应用了!", - "you must insert token code": "您必须插入令牌代码", - "Something went wrong. Please try again.": "出了点问题。请再试一次。", + "attach audio of complain": "附加投诉录音", + "Phone Number Check": "手机号检查", + "Drivers received orders": "司机已接单", + "No audio files recorded.": "无录音文件。", + "This is for delivery or a motorcycle.": "适用于送货或摩托车。", + "Intaleq Reminder": "Intaleq 提醒", + "It's time to check the Intaleq app!": "查看 Intaleq 的时间到了!", + "you must insert token code": "必须输入令牌代码", + "Something went wrong. Please try again.": "出错了,请重试。", "Trip Details": "行程详情", "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": - "上下文未提供任何投诉详情,因此我无法提供此问题的解决方案。请提供必要的信息,我将很乐意帮助您。", - "Submit Your Complaint": "提交您的投诉", - "Date": "日期", - "Price": "价格", + "缺乏投诉详情,无法处理。", + "Submit Your Complaint": "提交投诉", "Status": "状态", - "Choose from contact": "从联系人中选择", + "Choose from contact": "从通讯录选择", "attach correct audio": "附加正确的音频", - "be sure": "确保", + "be sure": "请确保", "Audio uploaded successfully.": "音频上传成功。", "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": - "非常适合寻求最新车型并希望自由选择任何路线的乘客", + "适合追求新车型和自由路线的乘客", "Share this code with your friends and earn rewards when they use it!": - "与朋友分享此代码,并在他们使用时赚取奖励!", - "Enter phone": "输入电话", - "You deserve the gift": "您应得的礼物", - "complete, you can claim your gift": "完成,您可以领取您的礼物", - "When": "何时", - "Enter driver's phone": "输入司机的电话", + "分享代码赢奖励!", + "Enter phone": "输入手机号", + "complete, you can claim your gift": "完成,领取礼物", + "When": "当", + "Enter driver's phone": "输入司机手机号", "Send Invite": "发送邀请", "Show Invitations": "显示邀请", - "License Type": "执照类型", - "National Number": "国家号码", - "Name (Arabic)": "姓名(阿拉伯语)", - "Name (English)": "姓名(英语)", + "License Type": "证件类型", + "National Number": "身份证号", + "Name (Arabic)": "姓名(本地)", + "Name (English)": "姓名(英文)", "Address": "地址", "Issue Date": "签发日期", - "Expiry Date": "到期日期", - "License Categories": "执照类别", - "driver_license": "驾驶执照", - "Capture an Image of Your Driver License": "拍摄您的驾驶执照图像", - "ID Documents Back": "身份证件背面", - "National ID": "国家ID", + "Expiry Date": "有效期至", + "License Categories": "准驾车型", + "driver_license": "驾驶证", + "Capture an Image of Your Driver License": "拍摄驾驶证", + "ID Documents Back": "身份证背面", + "National ID": "身份证", "Occupation": "职业", - "Gender": "性别", - "Religion": "宗教", - "Marital Status": "婚姻状况", - "Full Name (Marital)": "全名(婚姻)", - "Expiration Date": "到期日期", - "Capture an Image of Your ID Document Back": "拍摄您的身份证件背面图像", - "ID Documents Front": "身份证件正面", + "Religion": "信仰", + "Full Name (Marital)": "全名", + "Expiration Date": "过期日期", + "Capture an Image of Your ID Document Back": "拍摄身份证背面", + "ID Documents Front": "身份证正面", "First Name": "名字", - "CardID": "卡ID", - "Vehicle Details Front": "车辆详情正面", + "CardID": "卡号", + "Vehicle Details Front": "车辆正面详情", "Plate Number": "车牌号", "Owner Name": "车主姓名", - "Vehicle Details Back": "车辆详情背面", + "Vehicle Details Back": "车辆背面详情", "Make": "品牌", "Model": "型号", "Year": "年份", - "Chassis": "底盘", + "Chassis": "车架号", "Color": "颜色", "Displacement": "排量", "Fuel": "燃料", - "Tax Expiry Date": "税务到期日期", - "Inspection Date": "检查日期", - "Capture an Image of Your car license back": "拍摄您的汽车驾照背面图像", - "Capture an Image of Your Driver’s License": "拍摄您的驾驶执照图像", - "Sign in with Google for easier email and name entry": - "使用Google登录以便更轻松地输入电子邮件和姓名", + "Tax Expiry Date": "税费到期日", + "Inspection Date": "年检日期", + "Capture an Image of Your car license back": "拍摄行驶证背面", + "Capture an Image of Your Driver's License": "拍摄驾驶证", + "Sign in with Google for easier email and name entry": "Google 登录更便捷", "You will choose allow all the time to be ready receive orders": - "您将选择始终允许以准备接收订单", - "Welcome to Intaleq!": "欢迎来到Intaleq!", - "Get to your destination quickly and easily.": "快速轻松地到达您的目的地。", - "Enjoy a safe and comfortable ride.": "享受安全舒适的行程。", + "请选择“始终允许”以接收订单", + "Get to your destination quickly and easily.": "快速便捷到达目的地。", + "Enjoy a safe and comfortable ride.": "享受安全舒适的旅程。", "Choose Language": "选择语言", - "Login": "登录", - "Pay with Wallet": "使用钱包支付", - "Invalid MPIN": "无效的MPIN", - "Invalid OTP": "无效的OTP", - // "Driver Accepted the Ride for You": "司机已接受您的行程", - "Enter your email address": "输入您的电子邮件地址", - "Please enter Your Email.": "请输入您的电子邮件。", - "Enter your phone number": "输入您的电话号码", - "Please enter your phone number.": "请输入您的电话号码。", + "Pay with Wallet": "钱包支付", + "Invalid MPIN": "无效 MPIN", + "Invalid OTP": "无效验证码", + "Enter your email address": "输入邮箱地址", + "Please enter Your Email.": "请输入您的邮箱。", + "Enter your phone number": "输入手机号码", + "Please enter your phone number.": "请输入您的手机号码。", "Please enter Your Password.": "请输入您的密码。", - "if you dont have account": "如果您没有账户", + "if you dont have account": "如果没有账号", "Register": "注册", - "Accept Ride's Terms & Review Privacy Notice": "接受行程条款并查看隐私声明", + "Accept Ride's Terms & Review Privacy Notice": "接受条款并查阅隐私政策", "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": - "通过在下方选择“我同意”,我确认我已阅读并同意使用条款并承认隐私声明。我至少18岁。", - "I Agree": "我同意", - // "Finish Monitor": "结束监控", + "点击同意即表示接受条款和隐私政策,且年满18岁。", "First name": "名字", - "Enter your first name": "输入您的名字", - "Please enter your first name.": "请输入您的名字。", + "Enter your first name": "输入名字", + "Please enter your first name.": "请输入名字。", "Last name": "姓氏", - "Enter your last name": "输入您的姓氏", - "Please enter your last name.": "请输入您的姓氏。", + "Enter your last name": "输入姓氏", + "Please enter your last name.": "请输入姓氏。", "City": "城市", - "Please enter your City.": "请输入您的城市。", - "Male": "男性", - "Female": "女性", - "Verify Email": "验证电子邮件", - "We sent 5 digit to your Email provided": "我们向您提供的电子邮件发送了5位数字", - "5 digit": "5位数字", + "Please enter your City.": "请输入城市。", + "Verify Email": "验证邮箱", + "We sent 5 digit to your Email provided": "我们已向您的邮箱发送5位验证码", + "5 digit": "5位数", "Send Verification Code": "发送验证码", - "Your Ride Duration is ": "您的行程时长为 ", - "You will be thier in": "您将在", - "You trip distance is": "您的行程距离为", - "Fee is": "费用为", + "Your Ride Duration is ": "行程时长:", + "You will be thier in": "预计到达时间:", + "You trip distance is": "行程距离:", + "Fee is": "费用:", "From : ": "从:", "To : ": "到:", - "Add Promo": "添加促销", + "Add Promo": "添加优惠", "Confirm Selection": "确认选择", - "distance is": "距离为", - "Intaleq LLC": "Intaleq有限责任公司", - "Egypt's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": - "埃及的先锋拼车服务,由阿拉伯和本地业主自豪地开发。我们优先考虑靠近您——无论是我们宝贵的乘客还是我们敬业的船长。", - "Why Choose Intaleq?": "为什么选择Intaleq?", + "distance is": "距离是", + "Privacy Policy": "隐私政策", + "Intaleq LLC": "Intaleq 有限公司", + "Syria's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "中国领先的网约车服务。", + "Intaleq is the first ride-sharing app in Syria, designed to connect you with the nearest drivers for a quick and convenient travel experience.": + "Intaleq 连接您与最近的司机。", + "Why Choose Intaleq?": "为什么选择 Intaleq?", "Closest to You": "离您最近", "We connect you with the nearest drivers for faster pickups and quicker journeys.": - "我们将您与最近的司机联系起来,以便更快地接送和更快的旅程。", - "Uncompromising Security": "不妥协的安全", - "Lady Captains Available": "女船长可用", - "Recorded Trips (Voice & AI Analysis)": "记录的行程(语音和AI分析)", - "Fastest Complaint Response": "最快的投诉响应", + "连接最近司机,接驾更快。", + "Uncompromising Security": "绝对安全", + "Lady Captains Available": "有女司机", + "Recorded Trips (Voice & AI Analysis)": "行程录音(语音和 AI 分析)", + "Fastest Complaint Response": "最快投诉响应", "Our dedicated customer service team ensures swift resolution of any issues.": - "我们专门的客户服务团队确保快速解决任何问题。", - "Affordable for Everyone": "人人可负担", + "客服团队确保快速解决问题。", + "Affordable for Everyone": "人人负担得起", "Frequently Asked Questions": "常见问题", - "Getting Started": "入门", + "Getting Started": "新手上路", "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": - "只需打开Intaleq应用,输入您的目的地,然后点击“请求行程”。应用将为您联系附近的司机。", - "Vehicle Options": "车辆选项", + "打开应用,输入目的地,点击“呼叫行程”。", + "Vehicle Options": "车型选择", "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": - "Intaleq提供多种选项,包括经济型、舒适型和豪华型,以满足您的需求和预算。", + "提供经济、舒适、豪华等多种选择。", "Payments": "支付", "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": - "您可以使用现金或信用卡/借记卡支付您的行程。您可以在确认行程前选择您喜欢的支付方式。", + "支持现金或银行卡支付。", "Ride Management": "行程管理", "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": - "是的,您可以取消您的行程,但请注意,根据您取消的时间,可能会收取取消费用。", - "For Drivers": "对于司机", - // "Driver Registration & Requirements": "司机注册和要求", + "可以取消,但可能会收取取消费。", + "For Drivers": "司机端", "Driver Registration": "司机注册", "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": - "要注册为司机或了解要求,请访问我们的网站或直接联系Intaleq支持。", + "访问网站或联系客服注册。", "Visit Website/Contact Support": "访问网站/联系支持", "Close": "关闭", - "We are searching for the nearest driver": "我们正在寻找最近的司机", + "We are searching for the nearest driver": "正在搜索最近的司机", "Communication": "沟通", "How do I communicate with the other party (passenger/driver)?": - "我如何与另一方(乘客/司机)沟通?", + "如何沟通?", "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": - "一旦行程确认,您可以通过应用内聊天功能与司机或乘客沟通。", + "通过应用内聊天沟通。", "Safety & Security": "安全与保障", - "What safety measures does Intaleq offer?": "Intaleq提供哪些安全措施?", + "What safety measures does Intaleq offer?": "有什么安全措施?", "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": - "Intaleq提供各种安全功能,包括司机验证、应用内行程跟踪、紧急联系人选项以及与可信联系人共享行程状态的能力。", + "司机验证、行程追踪、紧急联系人。", "Enjoy competitive prices across all trip options, making travel accessible.": - "享受所有行程选项的竞争价格,使旅行更易获得。", + "享受有竞争力的价格。", "Variety of Trip Choices": "多种行程选择", "Choose the trip option that perfectly suits your needs and preferences.": - "选择最适合您需求和偏好的行程选项。", + "选择最适合您的行程。", "Your Choice, Our Priority": "您的选择,我们的优先", "Because we are near, you have the flexibility to choose the ride that works best for you.": - "因为我们离您近,您可以灵活选择最适合您的行程。", - "duration is": "时长为", + "灵活选择最适合的行程。", + "duration is": "时长是", "Setting": "设置", - "Find answers to common questions": "找到常见问题的答案", - "I don't need a ride anymore": "我不再需要行程", - "I was just trying the application": "我只是在试用应用", - "No driver accepted my request": "没有司机接受我的请求", - "I added the wrong pick-up/drop-off location": "我添加了错误的接载/下车地点", - "I don't have a reason": "我没有理由", - "Other": "其他", - "Can we know why you want to cancel Ride ?": "我们可以知道您为什么想取消行程吗?", + "Find answers to common questions": "查找常见问题解答", + "I don't need a ride anymore": "不再需要用车", + "I was just trying the application": "只是试用一下", + "No driver accepted my request": "无司机接单", + "I added the wrong pick-up/drop-off location": "地址填写错误", + "I don't have a reason": "没有原因", + "Can we know why you want to cancel Ride ?": "为何取消?", "Cancel Ride": "取消行程", "Add Payment Method": "添加支付方式", - "Your Wallet balance is ": "您的钱包余额为 ", "Ride Wallet": "行程钱包", "Payment Method": "支付方式", - "Type here Place": "在此处输入地点", - "Are You sure to ride to": "您确定要去", + "Type here Place": "在此输入地点", + "Are You sure to ride to": "确定要去", "Confirm": "确认", - // "Back": "返回", "You are Delete": "您正在删除", "Deleted": "已删除", - "You Dont Have Any places yet !": "您还没有任何地点!", - // "Favorite Places": "收藏的地点", + "You Dont Have Any places yet !": "暂无地点!", "From : Current Location": "从:当前位置", - // "Where to": "去哪里", - "Profile": "个人资料", - "Home": "家", - "My Cared": "我的关心", + "My Cared": "我的卡片", "Add Card": "添加卡片", "Add Credit Card": "添加信用卡", - "Please enter the cardholder name": "请输入持卡人姓名", - "Please enter the expiry date": "请输入到期日期", - "Please enter the CVV code": "请输入CVV代码", - "Go To Favorite Places": "前往收藏的地点", - "Go to this Target": "前往此目标", - "My Profile": "我的个人资料", - "Sign Out": "登出", - "Are you want to go to this site": "您想去这个网站吗", + "Please enter the cardholder name": "输入持卡人姓名", + "Please enter the expiry date": "输入有效期", + "Please enter the CVV code": "输入 CVV", + "Go To Favorite Places": "去常用地点", + "Go to this Target": "去此目的地", + "My Profile": "个人资料", + "Are you want to go to this site": "想去这里吗", "MyLocation": "我的位置", "my location": "我的位置", "Target": "目标", - "Update": "更新", - "You Should choose rate figure": "您应选择评分", - "Login Captin": "登录船长", - "Register Captin": "注册船长", + "You Should choose rate figure": "请评分", + "Login Captin": "司机登录", + "Register Captin": "司机注册", "Send Verfication Code": "发送验证码", "KM": "公里", "End Ride": "结束行程", "Minute": "分钟", - "Go to passenger Location now": "现在前往乘客位置", - "Duration of the Ride is ": "行程时长为 ", - "Distance of the Ride is ": "行程距离为 ", - "Name of the Passenger is ": "乘客姓名为 ", - "Hello this is Captain": "您好,我是船长", + "Go to passenger Location now": "前往乘客位置", + "Duration of the Ride is ": "行程时长:", + "Distance of the Ride is ": "行程距离:", + "Name of the Passenger is ": "乘客姓名:", + "Hello this is Captain": "您好,我是司机", "Start the Ride": "开始行程", - "Please Wait If passenger want To Cancel!": "如果乘客想取消,请稍候!", + "Please Wait If passenger want To Cancel!": "请稍候,乘客可能取消!", "Total Duration:": "总时长:", - "Active Duration:": "活动时长:", - "Waiting for Captin ...": "等待船长...", - "Age is ": "年龄为 ", - "Rating is ": "评分为 ", - " to arrive you.": "到达您。", - "Tariff": "关税", + "Active Duration:": "有效时长:", + "Waiting for Captin ...": "等待司机...", + "Age is ": "年龄:", + "Rating is ": "评分:", + " to arrive you.": " 到达。", + "Tariff": "费率", "Settings": "设置", "Feed Back": "反馈", - "Please enter a valid 16-digit card number": "请输入有效的16位卡号", + "Please enter a valid 16-digit card number": "输入16位卡号", "Add Phone": "添加电话", - "Please enter a phone number": "请输入电话号码", - "You dont Add Emergency Phone Yet!": "您还没有添加紧急电话!", - "You will arrive to your destination after ": "您将在之后到达目的地", - "You can cancel Ride now": "您现在可以取消行程", + "Please enter a phone number": "请输入手机号", + "You dont Add Emergency Phone Yet!": "未添加紧急电话!", + "You will arrive to your destination after ": "预计到达时间:", + "You can cancel Ride now": "现在可以取消行程", "You Can cancel Ride After Captain did not come in the time": - "如果船长没有按时到达,您可以取消行程", - "If you in Car Now. Press Start The Ride": "如果您现在在车里。按下开始行程", - "You Dont Have Any amount in": "您没有任何金额在", + "司机超时未到可取消", + "If you in Car Now. Press Start The Ride": "如已上车,请按开始行程", + "You Dont Have Any amount in": "余额不足", "Wallet!": "钱包!", "You Have": "您有", "Save Credit Card": "保存信用卡", - "Show Promos": "显示促销", - "10 and get 4% discount": "10并获得4%折扣", - "20 and get 6% discount": "20并获得6%折扣", - "40 and get 8% discount": "40并获得8%折扣", - "100 and get 11% discount": "100并获得11%折扣", - "Pay with Your PayPal": "使用您的PayPal支付", - "You will choose one of above !": "您将选择上述之一!", - "Delete My Account": "删除我的账户", - "Edit Profile": "编辑个人资料", - "Name": "姓名", - "Update Gender": "更新性别", - "Education": "教育", - "Update Education": "更新教育", - "Employment Type": "就业类型", - "SOS Phone": "SOS电话", - "High School Diploma": "高中文凭", - "Associate Degree": "副学士学位", - "Bachelor's Degree": "学士学位", - "Master's Degree": "硕士学位", - "Doctoral Degree": "博士学位", - "Copy this Promo to use it in your Ride!": "复制此促销以在您的行程中使用!", - "To change some Settings": "更改一些设置", - "Order Request Page": "订单请求页面", + "Show Promos": "显示优惠", + "10 and get 4% discount": "充10享4%优惠", + "20 and get 6% discount": "充20享6%优惠", + "40 and get 8% discount": "充40享8%优惠", + "100 and get 11% discount": "充100享11%优惠", + "Pay with Your PayPal": "PayPal 支付", + "You will choose one of above !": "请选择一项!", + "Edit Profile": "编辑资料", + "Copy this Promo to use it in your Ride!": "复制优惠码使用!", + "To change some Settings": "更改设置", + "Order Request Page": "订单请求页", "Rouats of Trip": "行程路线", - "Passenger Name is ": "乘客姓名为 ", - "Total From Passenger is ": "乘客总金额为 ", - "Duration To Passenger is ": "到达乘客的时长为 ", - "Distance To Passenger is ": "到达乘客的距离为 ", - "Total For You is ": "您的总金额为 ", - "Distance is ": "距离为 ", + "Passenger Name is ": "乘客姓名:", + "Total From Passenger is ": "乘客支付总额:", + "Duration To Passenger is ": "接驾时长:", + "Distance To Passenger is ": "接驾距离:", + "Total For You is ": "您的收入:", + "Distance is ": "距离:", " KM": " 公里", - "Duration of Trip is ": "行程时长为 ", + "Duration of Trip is ": "行程时长:", " Minutes": " 分钟", - "Apply Order": "应用订单", - "Refuse Order": "拒绝订单", - "Rate Captain": "评分船长", - "Enter your Note": "输入您的备注", - "Type something...": "输入一些内容...", - "Submit rating": "提交评分", - "Rate Passenger": "评分乘客", - "Ride Summary": "行程摘要", - "welcome_message": "欢迎来到Intaleq!", - "app_description": "Intaleq是一款可靠、安全且易于使用的拼车应用。", - "get_to_destination": "快速轻松地到达您的目的地。", - "get_a_ride": "使用Intaleq,您可以在几分钟内到达目的地。", - "safe_and_comfortable": "享受安全舒适的行程。", - "committed_to_safety": "Intaleq致力于安全,我们所有的船长都经过仔细筛选和背景调查。", - // "Driver Applied the Ride for You": "司机已为您申请行程", - // "Show latest promo": "显示最新促销", - // "Cancel Trip": "取消行程", - // "Passenger Cancel Trip": "乘客取消行程", - // "Accepted Ride": "已接受的行程", - "your ride is Accepted": "您的行程已被接受", - // "Trip is Begin": "行程开始", - "Driver is waiting at pickup.": "司机在接载点等待。", - "Driver is on the way": "司机正在路上", + "Apply Order": "接单", + "Refuse Order": "拒单", + "Rate Captain": "评价司机", + "Enter your Note": "输入备注", + "Type something...": "写点什么...", + "Submit rating": "提交评价", + "Rate Passenger": "评价乘客", + "Ride Summary": "行程总结", + "welcome_message": "欢迎使用 Intaleq!", + "app_description": "安全可靠的打车应用。", + "get_to_destination": "快速到达目的地。", + "get_a_ride": "几分钟内叫到车。", + "safe_and_comfortable": "安全舒适的旅程。", + "committed_to_safety": "致力于安全。", + "your ride is Accepted": "行程已接单", + "Driver is waiting at pickup.": "司机已到达。", + "Driver is on the way": "司机在路上", "Contact Options": "联系选项", "Send a custom message": "发送自定义消息", - "Type your message": "输入您的消息", - // "Hi ,I will go now": "嗨,我现在要走了", - // "Passenger come to you": "乘客来找您", - // "Hi ,I Arrive your site": "嗨,我到达您的位置了", - // "Driver Finish Trip": "司机完成行程", - // "you will pay to Driver": "您将支付给司机", - // "Driver Cancel Your Trip": "司机取消了您的行程", - // "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": "您将支付给司机,您将支付司机的时间费用,请查看您的Intaleq钱包", - // "I will go now": "我现在要走了", - "You Have Tips": "您有小费", + "Type your message": "输入消息", + "I will go now": "我现在出发", + "You Have Tips": "有小费", " tips\nTotal is": " 小费\n总计", - // "No,I want": "不,我想", - "Your fee is ": "您的费用为 ", - // "Do you want to pay Tips for this Driver": "您想给这位司机小费吗?", - "Tip is ": "小费为 ", - "Are you want to wait drivers to accept your order": "您想等待司机接受您的订单吗?", + "Your fee is ": "费用:", + "Do you want to pay Tips for this Driver": "支付小费?", + "Tip is ": "小费:", + "Are you want to wait drivers to accept your order": "愿意等待司机接单吗", "This price is fixed even if the route changes for the driver.": - "即使司机的路线改变,此价格也是固定的。", - "The price may increase if the route changes.": "如果路线改变,价格可能会上涨。", - "The captain is responsible for the route.": "船长负责路线。", - "We are search for nearst Driver": "我们正在寻找最近的司机", - "Your order is being prepared": "您的订单正在准备中", - "The drivers are reviewing your request": "司机们正在审查您的请求", - "Your order sent to drivers": "您的订单已发送给司机", - "You can call or record audio of this trip": "您可以打电话或录制此行程的音频", + "一口价。", + "The price may increase if the route changes.": "价格可能随路线变化。", + "The captain is responsible for the route.": "司机负责路线。", + "We are search for nearst driver": "搜索最近司机", + "Your order is being prepared": "正在准备订单", + "The drivers are reviewing your request": "司机正在审核请求", + "Your order sent to drivers": "已发送给司机", + "You can call or record audio of this trip": "可通话或录音", "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": - "行程已开始!随时联系紧急号码,分享您的行程,或激活语音录制以记录旅程", - // "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": "请确保您带上了所有个人物品,并在离开前将任何剩余费用(如适用)添加到您的钱包中。感谢您选择Intaleq应用。", - // "Don’t forget your personal belongings.": "请不要忘记您的个人物品。", - "Camera Access Denied.": "相机访问被拒绝。", + "行程开始!可联系紧急号码或分享行程。", + "Camera Access Denied.": "相机权限被拒。", "Open Settings": "打开设置", - "GPS Required Allow !.": "需要GPS允许!", - "Your Account is Deleted": "您的账户已被删除", - "Are you sure to delete your account?": "您确定要删除您的账户吗?", + "GPS Required Allow !.": "需要 GPS 权限!", + "Your Account is Deleted": "账户已删除", + "Are you sure to delete your account?": "确定删除账户?", "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": - "您的数据将在2周后删除\n并且您将无法在1个月后返回使用应用", - "Enter Your First Name": "输入您的名字", - "Are you Sure to LogOut?": "您确定要登出吗?", - "Email Wrong": "电子邮件错误", - "Email you inserted is Wrong.": "您输入的电子邮件错误。", - "You have finished all times ": "您已完成所有时间", - "if you want help you can email us here": "如果您需要帮助,可以在这里给我们发电子邮件", + "数据将在2周后清除。", + "Enter Your First Name": "输入名字", + "Are you Sure to LogOut?": "确定退出?", + "Email Wrong": "邮箱错误", + "Email you inserted is Wrong.": "输入的邮箱有误。", + "You have finished all times ": "次数已用完", + "if you want help you can email us here": "如需帮助请发邮件", "Thanks": "谢谢", - "Email Us": "给我们发电子邮件", - "I cant register in your app in face detection ": "我无法在您的应用中进行人脸检测注册", + "Email Us": "发邮件", + "I cant register in your app in face detection ": "人脸识别注册失败", "Hi": "嗨", "No face detected": "未检测到人脸", - "Image detecting result is ": "图像检测结果为 ", - "from 3 times Take Attention": "从3次开始注意", - "Be sure for take accurate images please\nYou have": "请确保拍摄准确的图像\n您有", - "image verified": "图像已验证", + "Image detecting result is ": "检测结果:", + "from 3 times Take Attention": "3次机会,请注意", + "Be sure for take accurate images please\nYou have": "请确保图像准确\n您还有", + "image verified": "图片已验证", "Next": "下一步", - "There is no help Question here": "这里没有帮助问题", - "You dont have Points": "您没有积分", - "You Are Stopped For this Day !": "您今天被停止了!", - "You must be charge your Account": "您必须为您的账户充值", + "There is no help Question here": "没有帮助问题", + "You dont have Points": "没有积分", + "You Are Stopped For this Day !": "今日已暂停!", + "You must be charge your Account": "必须充值", "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": - "您今天拒绝了3次行程,这是原因\n明天见!", - "Recharge my Account": "为我的账户充值", + "拒绝3次行程\n明天见!", + "Recharge my Account": "充值账户", "Ok , See you Tomorrow": "好的,明天见", - "You are Stopped": "您被停止了", + "You are Stopped": "您被暂停", "Connected": "已连接", "Not Connected": "未连接", - "Your are far from passenger location": "您离乘客位置很远", + "Your are far from passenger location": "距离乘客较远", "go to your passenger location before\nPassenger cancel trip": - "在乘客取消行程之前前往乘客位置", - "You will get cost of your work for this trip": "您将获得此行程的工作费用", - " in your wallet": "在您的钱包中", + "前往乘客位置,防止取消", + "You will get cost of your work for this trip": "您将获得行程收入", + " in your wallet": " 在钱包中", "you gain": "您获得", - "Order Cancelled by Passenger": "乘客取消订单", - "Success": "成功", - "Feedback data saved successfully": "反馈数据保存成功", - "No Promo for today .": "今天没有促销。", - "Select your destination": "选择您的目的地", - "Search for your Start point": "搜索您的起点", - "Search for waypoint": "搜索途径点", + "Order Cancelled by Passenger": "乘客已取消", + "Feedback data saved successfully": "反馈已保存", + "No Promo for today .": "今日无优惠。", + "Select your destination": "选择目的地", + "Search for your Start point": "搜索起点", + "Search for waypoint": "搜索途经点", "Current Location": "当前位置", - "Add Location 1": "添加位置1", - "You must Verify email !.": "您必须验证电子邮件!", + "Add Location 1": "添加地点 1", + "You must Verify email !.": "必须验证邮箱!", "Cropper": "裁剪", "Saved Sucssefully": "保存成功", "Select Date": "选择日期", "Birth Date": "出生日期", - "Ok": "确定", - "the 500 points equal 30 JOD": "500点等于30 JOD", + "Ok": "好的", + "the 500 points equal 30 JOD": "500积分 = ¥30", "the 500 points equal 30 JOD for you \nSo go and gain your money": - "500点等于30 JOD\n所以去赚取您的钱", + "500积分 = ¥30\n去赚钱吧", "token updated": "令牌已更新", - "Add Location 2": "添加位置2", - "Add Location 3": "添加位置3", - "Add Location 4": "添加位置4", - "Waiting for your location": "等待您的位置", - "Search for your destination": "搜索您的目的地", - "Hi! This is": "嗨!这是", + "Add Location 2": "添加地点 2", + "Add Location 3": "添加地点 3", + "Add Location 4": "添加地点 4", + "Waiting for your location": "等待定位", + "Search for your destination": "搜索目的地", + "Hi! This is": "您好!这是", " I am using": " 我正在使用", - " to ride with": " 与", + " to ride with": " 与之同乘", " as the driver.": " 作为司机。", - "is driving a ": "正在驾驶一辆 ", - " with license plate ": " 车牌号为 ", + "is driving a ": "驾驶着 ", + " with license plate ": " 车牌号 ", " I am currently located at ": " 我目前位于 ", - "Please go to Car now ": "请现在去车里 ", - "You will receive a code in WhatsApp Messenger": - "您将在WhatsApp Messenger中收到代码", - "If you need assistance, contact us": "如果您需要帮助,请联系我们", - "Promo Ended": "促销结束", - "Enter the promo code and get": "输入促销代码并获得", + "Please go to Car now ": "请立即前往车辆 ", + "You will receive a code in WhatsApp Messenger": "您将在 WhatsApp 收到代码", + "If you need assistance, contact us": "如需协助,请联系我们", + "Promo Ended": "优惠结束", + "Enter the promo code and get": "输入优惠码获得", "DISCOUNT": "折扣", "No wallet record found": "未找到钱包记录", - "for": "为", + "for": "用于", "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": - "Intaleq是最安全的拼车应用,为船长和乘客引入了许多功能。我们提供最低的佣金率,仅为8%,确保您获得最佳的行程价值。我们的应用包括为最佳船长提供的保险,由顶级工程师定期维护汽车,以及道路服务,以确保所有用户的尊重和高质量体验。", + "Intaleq 是最安全的网约车应用。低至8%的佣金。包含保险和维护。", "You can contact us during working hours from 12:00 - 19:00.": - "您可以在工作时间内联系我们,时间为12:00 - 19:00。", - "Choose a contact option": "选择联系选项", + "工作时间 12:00 - 19:00。", + "Choose a contact option": "选择联系方式", "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": - "工作时间为12:00 - 19:00。\n您可以发送WhatsApp消息或电子邮件。", - "Promo code copied to clipboard!": "促销代码已复制到剪贴板!", - "Copy Code": "复制代码", - "Your invite code was successfully applied!": "您的邀请代码已成功应用!", + "工作时间 12:00 - 19:00。\n发送 WhatsApp 或邮件。", + "Promo code copied to clipboard!": "优惠码已复制!", + "Copy Code": "复制", + "Your invite code was successfully applied!": "邀请码应用成功!", "Payment Options": "支付选项", - "wait 1 minute to receive message": "等待1分钟以接收消息", - "Promo Copied!": "促销已复制!", - "You have copied the promo code.": "您已复制促销代码。", - "Valid Until:": "有效期至:", + "wait 1 minute to receive message": "等待1分钟接收短信", + "You have copied the promo code.": "已复制优惠码。", "Select Payment Amount": "选择支付金额", - "The promotion period has ended.": "促销期已结束。", - "Promo Code Accepted": "促销代码已接受", - "Tap on the promo code to copy it!": "点击促销代码以复制它!", - "Lowest Price Achieved": "达到最低价格", - "Cannot apply further discounts.": "无法应用更多折扣。", - "Promo Already Used": "促销已使用", + "The promotion period has ended.": "促销已结束。", + "Promo Code Accepted": "优惠码已接受", + "Tap on the promo code to copy it!": "点击复制!", + "Lowest Price Achieved": "最低价", + "Cannot apply further discounts.": "无法叠加优惠。", + "Promo Already Used": "优惠已使用", "Invitation Used": "邀请已使用", - "You have already used this promo code.": "您已经使用过此促销代码。", - "Insert Your Promo Code": "插入您的促销代码", - "Enter promo code here": "在此处输入促销代码", - "Please enter a valid promo code": "请输入有效的促销代码", - "Awfar Car": "Awfar汽车", - "Old and affordable, perfect for budget rides.": "老旧且价格实惠,非常适合预算行程。", + "You have already used this promo code.": "已使用过此码。", + "Insert Your Promo Code": "输入优惠码", + "Enter promo code here": "在此输入", + "Please enter a valid promo code": "请输入有效代码", + "Awfar Car": "经济车型", + "Old and affordable, perfect for budget rides.": "旧车实惠,预算首选。", " If you need to reach me, please contact the driver directly at": - " 如果您需要联系我,请直接联系司机", - "No Car or Driver Found in your area.": "在您所在地区未找到汽车或司机。", - "Please Try anther time ": "请再试一次 ", - "There no Driver Aplly your order sorry for that ": - "没有司机申请您的订单,对此表示抱歉 ", - "Trip Cancelled": "行程已取消", - "The Driver Will be in your location soon .": "司机将很快到达您的位置。", + " 如需联系,请致电司机", + "No Car or Driver Found in your area.": "该区域无车。", + "Please Try anther time ": "请稍后再试 ", + "There no Driver Aplly your order sorry for that ": "无人接单,抱歉 ", + "Trip Cancelled": "行程取消", + "The Driver Will be in your location soon .": "司机即将到达。", "The distance less than 500 meter.": "距离小于500米。", - "Promo End !": "促销结束!", - "There is no notification yet": "还没有通知", + "Promo End !": "优惠结束!", + "There is no notification yet": "暂无通知", "Use Touch ID or Face ID to confirm payment": - "使用Touch ID或Face ID确认支付", - "Contact us for any questions on your order.": "如有任何订单问题,请联系我们。", - "Pyament Cancelled .": "支付已取消。", - "type here": "在此处输入", - "Scan Driver License": "扫描驾驶执照", - "Please put your licence in these border": "请将您的执照放在这些边框内", - "Camera not initialized yet": "相机尚未初始化", - "Take Image": "拍摄图像", - "AI Page": "AI页面", - "Take Picture Of ID Card": "拍摄身份证照片", - "Take Picture Of Driver License Card": "拍摄驾驶执照照片", - "We are process picture please wait ": "我们正在处理图片,请稍候 ", - "There is no data yet.": "还没有数据。", + "使用 Touch ID 或 Face ID 支付", + "Contact us for any questions on your order.": "有问题请联系我们。", + "Pyament Cancelled .": "支付取消。", + "type here": "在此输入", + "Scan Driver License": "扫描驾驶证", + "Please put your licence in these border": "请将证件放入框内", + "Camera not initialized yet": "相机未初始化", + "Take Image": "拍照", + "AI Page": "AI 页面", + "Take Picture Of ID Card": "拍摄身份证", + "Take Picture Of Driver License Card": "拍摄驾驶证", + "We are process picture please wait ": "处理中,请稍候 ", + "There is no data yet.": "暂无数据。", "Name :": "姓名:", - "Drivers License Class: ": "驾驶执照类别:", - "Document Number: ": "文件编号:", + "Drivers License Class: ": "准驾车型:", + "Document Number: ": "证件号:", "Address: ": "地址:", "Height: ": "身高:", - "Expiry Date: ": "到期日期:", + "Expiry Date: ": "有效期:", "Date of Birth: ": "出生日期:", - "You can\'t continue with us .\nYou should renew Driver license": - "您无法继续与我们合作。\n您应更新驾驶执照", - "Detect Your Face ": "检测您的脸 ", - "Go to next step\nscan Car License.": "进入下一步\n扫描汽车执照。", - "Name in arabic": "阿拉伯语姓名", - "Drivers License Class": "驾驶执照类别", - "Date of Birth": "出生日期", - // "Select date and time of trip": "选择行程的日期和时间", - "Selected Date": "选择的日期", + "You can't continue with us .\nYou should renew Driver license": + "您无法继续。\n请更新驾驶证", + "Detect Your Face ": "人脸检测 ", + "Go to next step\nscan Car License.": "下一步\n扫描行驶证。", + "Name in arabic": "中文名", + "Drivers License Class": "准驾车型", + "Selected Date": "选中日期", "Select Time": "选择时间", - "Selected Time": "选择的时间", - // "OK": "确定", - // "Cancel": "取消", - "Selected Date and Time": "选择的日期和时间", - "Lets check Car license ": "让我们检查汽车执照 ", - "Car": "汽车", + "Selected Time": "选中时间", + "Selected Date and Time": "选中日期和时间", + "Lets check Car license ": "检查行驶证 ", + "Car": "车辆", "Plate": "车牌", - "N/A": "不适用", "Rides": "行程", - "Age": "年龄", - // "Education": "教育", - // "Color": "颜色", - // "Displacement": "排量", - // "Fuel": "燃料", - "Selected driver": "选择的司机", - "Lets check License Back Face": "让我们检查执照背面", - "Car License Card": "汽车执照卡", - "No image selected yet": "尚未选择图像", - "Made :": "制造:", + "Selected driver": "选中司机", + "Lets check License Back Face": "检查证件背面", + "Car License Card": "行驶证", + "No image selected yet": "未选择图片", + "Made :": "品牌:", "model :": "型号:", - "VIN :": "VIN:", + "VIN :": "车架号:", "year :": "年份:", - "ُExpire Date": "到期日期", - "Login Driver": "登录司机", - "Password must br at least 6 character.": "密码必须至少6个字符。", - "if you don\'t have account": "如果您没有账户", - "Here recorded trips audio": "这里记录了行程音频", - "Register as Driver": "注册为司机", - // "Privacy Notice": "隐私声明", + "ُExpire Date": "到期日", + "Login Driver": "司机登录", + "Password must br at least 6 character.": "密码至少6位。", + "if you don't have account": "如果没有账号", + "Here recorded trips audio": "行程录音", + "Register as Driver": "注册司机", "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": - "通过在下方选择“我同意”,我确认我已阅读并同意使用条款并承认", - ". I am at least 18 years of age.": "。我至少18岁。", - "Log Out Page": "登出页面", - "Log Off": "登出", + "选择“我同意”,即代表接受使用条款和 ", + "Log Out Page": "注销页面", + "Log Off": "注销", "Register Driver": "注册司机", - "Verify Email For Driver": "为司机验证电子邮件", - "Admin DashBoard": "管理员仪表板", - "Your name": "您的姓名", - "your ride is applied": "您的行程已申请", - "Your password": "您的密码", + "Verify Email For Driver": "验证司机邮箱", + "Admin DashBoard": "管理面板", + "Your name": "您的名字", + "your ride is applied": "行程已申请", "H and": "H 和", - "LE": "LE", - "JOD": "JOD", - "m": "米", - "We search nearst Driver to you": "我们为您寻找最近的司机", - "please wait till driver accept your order": "请等待司机接受您的订单", + "JOD": "¥", + "m": "分", + "We search nearst Driver to you": "搜索最近司机", + "please wait till driver accept your order": "请等待司机接单", "No accepted orders? Try raising your trip fee to attract riders.": - "没有接受的订单?尝试提高您的行程费用以吸引司机。", - "You should select one": "您应选择一个", - "The driver accept your order for": "司机接受了您的订单", - "Increase Fee": "增加费用", - "No, thanks": "不,谢谢", - "The driver on your way": "司机正在路上", - "Total price from ": "总价格从 ", - "Order Details Intaleq": "订单详情速度", - // "Order Applied": "订单已申请", - "accepted your order": "接受了您的订单", - // "We regret to inform you that another driver has accepted this order.": "我们遗憾地通知您,其他司机已接受此订单", - "Selected file:": "选择的文件:", - "Your trip cost is": "您的行程费用为", - "this will delete all files from your device": "这将删除您设备上的所有文件", - " in your": "在您的", + "无接单?尝试加价。", + "You should select one": "请选择一项", + "The driver accept your order for": "司机接单价", + "The driver on your way": "司机在路上", + "Total price from ": "总价 ", + "Order Details Intaleq": "订单详情", + "Selected file:": "选定文件:", + "Your trip cost is": "行程费用", + "this will delete all files from your device": "将删除所有文件", "Exclusive offers and discounts always with the Intaleq app": - "独家优惠和折扣始终与Intaleq应用相伴", - // "Please go to Car Driver": "请前往司机处", - " wallet due to a previous trip.": "由于之前的行程,钱包。", + "Intaleq 独家优惠", "Submit Question": "提交问题", - "Please enter your Question.": "请输入您的问题。", + "Please enter your Question.": "请输入问题。", "Help Details": "帮助详情", - "No trip yet found": "尚未找到行程", - "No Response yet.": "尚未有回应。", - " You Earn today is ": " 您今天赚取的是 ", - " You Have in": " 您有在", - "Total points is ": "总积分为 ", - "Total Connection Duration:": "总连接时长:", - " H and": " H 和", - "Passenger name : ": "乘客姓名: ", - "Cost Of Trip IS ": "行程费用为 ", + "No trip yet found": "未找到行程", + "No Response yet.": "无回复。", + " You Earn today is ": " 今日收入:", + " You Have in": " 余额", + "Total points is ": "总积分:", + "Total Connection Duration:": "总在线时长:", + "Passenger name : ": "乘客:", + "Cost Of Trip IS ": "费用:", "Arrival time": "到达时间", - "arrival time to reach your point": "到达您地点的到达时间", + "arrival time to reach your point": "到达您位置的时间", "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "对于速度和滑板车行程,价格是动态计算的。对于舒适行程,价格基于时间和距离。", - "Hello this is Driver": "您好,这是司机", - "Is the Passenger in your Car ?": "乘客在您的车里吗?", + "Intaleq/电动车动态计价。舒适型按时/距。", + "Hello this is Driver": "您好,我是司机", + "Is the Passenger in your Car ?": "乘客在车上吗?", "Please wait for the passenger to enter the car before starting the trip.": - "请等待乘客进入车内后再开始行程。", - "No ,still Waiting.": "不,仍在等待。", - "I arrive you": "我到达您", - "I Arrive your site": "我到达您的位置", - "You are not in near to passenger location": "您离乘客位置不远", - "please go to picker location exactly": "请准确前往接载地点", - "You Can Cancel Trip And get Cost of Trip From": "您可以取消行程并从以下获取行程费用", - "Are you sure to cancel?": "您确定要取消吗?", - // "Yes": "是", - "Insert Emergincy Number": "插入紧急号码", + "请等乘客上车。", + "No ,still Waiting.": "没,还在等。", + "I arrive you": "我到了", + "I Arrive your site": "我到达了您的位置", + "You are not in near to passenger location": "离乘客太远", + "please go to picker location exactly": "请准确前往上车点", + "You Can Cancel Trip And get Cost of Trip From": "可取消并获得费用", + "Are you sure to cancel?": "确定取消?", + "Insert Emergincy Number": "输入紧急号码", "Best choice for comfort car and flexible route and stops point": - "舒适汽车和灵活路线及停靠点的最佳选择", + "舒适灵活的选择", "Insert": "插入", - "This is for scooter or a motorcycle.": "这是用于滑板车或摩托车。", + "This is for scooter or a motorcycle.": "适用于电动车或摩托车。", "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": - "此行程直接从您的起点到目的地,价格固定。司机必须遵循计划的路线", - "You can decline a request without any cost": "您可以免费拒绝请求", + "一口价直达。司机需按导航行驶。", + "You can decline a request without any cost": "拒绝无费用", "Perfect for adventure seekers who want to experience something new and exciting": - "非常适合想要体验新鲜刺激的冒险者", - "My current location is:": "我的当前位置是:", - "and I have a trip on": "我有一个行程在", - "App with Passenger": "与乘客的应用", + "适合探险", + "My current location is:": "当前位置:", + "and I have a trip on": "我有行程在", + "App with Passenger": "乘客端", "You will be pay the cost to driver or we will get it from you on next trip": - "您将支付给司机费用,或者我们将在下次行程中从您那里收取", - "Trip has Steps": "行程有步骤", - "Distance from Passenger to destination is ": "乘客到目的地的距离为 ", - "price is": "价格为", + "支付给司机或下次扣除", + "Trip has Steps": "行程有经停", + "Distance from Passenger to destination is ": "乘客距终点:", + "price is": "价格是", "This ride type does not allow changes to the destination or additional stops": - "此行程类型不允许更改目的地或额外停靠点", - "This price may be changed": "此价格可能会更改", + "不可更改目的地或经停", + "This price may be changed": "价格可能变动", "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": - "没有SIM卡?没问题!通过我们的应用直接呼叫司机。我们使用先进技术确保您的隐私。", + "无卡也能通话。隐私保护。", "This ride type allows changes, but the price may increase": - "此行程类型允许更改,但价格可能会上涨", - "Select one message": "选择一个消息", + "可改行程,价格或涨", + "Select one message": "选择消息", "I'm waiting for you": "我在等您", "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": - "我们注意到速度超过100公里/小时。为了您的安全,请减速。如果您感到不安全,可以与联系人分享行程详情或使用红色SOS按钮呼叫警察。", - "Warning: Intaleqing detected!": "警告:检测到超速!", - "Please help! Contact me as soon as possible.": "请帮忙!尽快联系我。", - "Share Trip Details": "分享行程详情", - "Car Plate is ": "车牌号为 ", - "VIP Order": "VIP订单", + "车速超100km/h。请注意安全。", + "Warning: Intaleqing detected!": "警告:超速!", + "Please help! Contact me as soon as possible.": "救命!联系我。", + "Share Trip Details": "分享行程", + "Car Plate is ": "车牌:", "the 300 points equal 300 L.E for you \nSo go and gain your money": - "300点等于300 L.E\n所以去赚取您的钱", - "the 300 points equal 300 L.E": "300点等于300 L.E", - "The payment was not approved. Please try again.": "支付未获批准。请再试一次。", + "300积分 = ¥300\n去赚钱吧", + "the 300 points equal 300 L.E": "300积分 = ¥300", + "The payment was not approved. Please try again.": "支付未批准。", "Payment Failed": "支付失败", - "Error": "错误", - "This is a scheduled notification.": "这是计划的通知。", - "An error occurred during the payment process.": "支付过程中发生错误。", - "The payment was approved.": "支付已获批准。", + "This is a scheduled notification.": "这是定时通知。", + "An error occurred during the payment process.": "支付出错。", + "The payment was approved.": "支付批准。", "Payment Successful": "支付成功", - "No ride found yet": "尚未找到行程", - "Accept Order": "接受订单", - // "reject your order.": "拒绝您的订单。", + "No ride found yet": "未找到行程", + "Accept Order": "接单", "Bottom Bar Example": "底部栏示例", "Driver phone": "司机电话", "Statistics": "统计", "Origin": "起点", - "Destination": "目的地", - "Driver Name": "司机姓名", - "Driver Car Plate": "司机车牌", - "Available for rides": "可用于行程", - "Scan Id": "扫描ID", - "Camera not initilaized yet": "相机尚未初始化", - "Scan ID MklGoogle": "扫描ID MklGoogle", + "Destination": "终点", + "Driver Name": "司机名", + "Driver Car Plate": "车牌", + "Available for rides": "可接单", + "Scan Id": "扫描证件", + "Camera not initilaized yet": "相机未初始化", + "Scan ID MklGoogle": "扫描 ID", "Language": "语言", "Jordan": "约旦", "USA": "美国", "Egypt": "埃及", "Turkey": "土耳其", - "Saudi Arabia": "沙特阿拉伯", + "Saudi Arabia": "沙特", "Qatar": "卡塔尔", "Bahrain": "巴林", "Kuwait": "科威特", - "But you have a negative salary of": "但您的工资为负", - "Promo Code": "促销代码", - "Your trip distance is": "您的行程距离为", - "Enter promo code": "输入促销代码", - "You have promo!": "您有促销!", - "Cost Duration": "费用时长", - "Duration is": "时长为", + "But you have a negative salary of": "您有欠款:", + "Promo Code": "优惠码", + "Your trip distance is": "行程距离:", + "Enter promo code": "输入优惠码", + "You have promo!": "有优惠!", + "Cost Duration": "时间成本", + "Duration is": "时长:", "Leave": "离开", "Join": "加入", - "Heading your way now. Please be ready.": "正在前往您处。请准备好。", - "Approaching your area. Should be there in 3 minutes.": - "正在接近您所在区域。应该会在3分钟内到达。", + "Heading your way now. Please be ready.": "正在前往,请准备。", + "Approaching your area. Should be there in 3 minutes.": "即将到达,约3分钟。", "There's heavy traffic here. Can you suggest an alternate pickup point?": - "这里交通拥堵。您能建议一个替代的接载点吗?", - "This ride is already taken by another driver.": "此行程已被其他司机接单。", - "You Should be select reason.": "您应选择原因。", - " \$": " \$", + "堵车。能换个地方吗?", + "This ride is already taken by another driver.": "行程已被抢。", + "You Should be select reason.": "请选择原因。", "Waiting for Driver ...": "等待司机...", - "Latest Recent Trip": "最近的行程", - "from your list": "从您的列表中", - "Do you want to change Work location": "您想更改工作地点吗?", - "Do you want to change Home location": "您想更改家庭地点吗?", - "We Are Sorry That we dont have cars in your Location!": - "很抱歉,您所在位置没有汽车!", - "Choose from Map": "从地图中选择", - "Pick your ride location on the map - Tap to confirm": - "在地图上选择您的行程位置 - 点击确认", - // "To Work": "去工作", - // "Are you want to go this site": "您想去这个网站吗?", - "Closest & Cheapest": "最近且最便宜", - // "Work Saved": "工作地点已保存", + "Latest Recent Trip": "最近行程", + "from your list": "来自列表", + "Do you want to change Work location": "更改公司地址", + "Do you want to change Home location": "更改家庭地址", + "We Are Sorry That we dont have cars in your Location!": "附近无车!", + "Choose from Map": "从地图选择", + "Pick your ride location on the map - Tap to confirm": "在地图选点 - 点击确认", "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": - "Intaleq是一款安全、可靠且易于使用的打车应用。", + "Intaleq 安全可靠。", "With Intaleq, you can get a ride to your destination in minutes.": - "使用Intaleq,您可以在几分钟内到达目的地。", + "几分钟内出发。", "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": - "Intaleq致力于安全,我们所有的船长都经过仔细筛选和背景调查。", - // "To Home": "回家", - // "Home Saved": "家已保存", - // "Destination selected": "目的地已选择:", - // "Now select start pick": "现在选择起点:", - "Pick from map": "从地图中选择", - // "Click here point": "点击这里", - "No Car in your site. Sorry!": "您的位置没有汽车。抱歉!", - "Nearest Car for you about ": "您最近的汽车大约 ", - // "N/A": "不适用", + "致力安全,严格筛选。", + "Pick from map": "地图选点", + "No Car in your site. Sorry!": "无车。抱歉!", + "Nearest Car for you about ": "最近车辆约 ", "From :": "从:", - "Get Details of Trip": "获取行程详情", - "If you want add stop click here": "如果您想添加停靠点,请点击这里", - // "Driver": "司机", - "Where you want go ": "您想去哪里 ", - "My Card": "我的卡片", - "Start Record": "开始记录", - "Wallet": "钱包", - "History of Trip": "行程历史", + "Get Details of Trip": "行程详情", + "If you want add stop click here": "添加经停点点这里", + "Where you want go ": "去哪里 ", + "My Card": "我的卡", + "Start Record": "开始录音", + "History of Trip": "历史行程", "Helping Center": "帮助中心", - "Record saved": "记录已保存", - "Trips recorded": "行程已记录", - "Select Your Country": "选择您的国家", + "Record saved": "录音已保存", + "Trips recorded": "已录音行程", + "Select Your Country": "选择国家", "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": - "为确保您收到最准确的位置信息,请在下方选择您的国家。这将有助于根据您的国家定制应用体验和内容。", - "Are you sure to delete recorded files": "您确定要删除记录的文件吗?", - "Select recorded trip": "选择记录的行程", + "请选择国家以获取准确信息。", + "Are you sure to delete recorded files": "删除录音文件?", + "Select recorded trip": "选择录音行程", "Card Number": "卡号", - "Hi, Where to ": "嗨,去哪里 ", - "Pick your destination from Map": "从地图中选择您的目的地", - "Add Stops": "添加停靠点", - "Get Direction": "获取方向", - "Add Location": "添加位置", - "Switch Rider": "切换司机", - "You will arrive to your destination after ": "您将在之后到达目的地", - "You can cancel trip": "您可以取消行程", - "The driver waitting you in picked location .": "司机在指定地点等您。", - "10\$ and get 3% discount": "10\$并获得3%折扣", - "20\$ and get 4% discount": "20\$并获得4%折扣", - "40\$ and get 6% discount": "40\$并获得6%折扣", - "100\$ and get 9% discount": "100\$并获得9%折扣", - "Pay with Your": "使用您的", - "Pay with Credit Card": "使用信用卡支付", - "Payment History": "支付历史", - "Show Promos to Charge": "显示促销以充值", - "Point": "点", - "How many hours would you like to wait?": "您想等待多少小时?", + "Hi, Where to ": "嗨,去哪 ", + "Pick your destination from Map": "地图选终点", + "Add Stops": "添加经停", + "Get Direction": "导航", + "Add Location": "添加地点", + "Switch Rider": "切换乘客", + "You will arrive to your destination after timer end.": "计时结束后到达。", + "You can cancel trip": "可取消", + "The driver waitting you in picked location .": "司机在等您。", + "Pay with Your": "支付使用", + "Pay with Credit Card": "信用卡支付", + "Show Promos to Charge": "充值优惠", + "Point": "积分", + "How many hours would you like to wait?": "等待几小时?", "Driver Wallet": "司机钱包", - "Choose between those Type Cars": "在这些类型的汽车之间选择", + "Choose between those Type Cars": "选择车型", "hour": "小时", - "Select Waiting Hours": "选择等待小时", - "Total Points is": "总积分为", - "You will receive a code in SMS message": "您将在短信中收到代码", + "Select Waiting Hours": "选择等待时长", + "Total Points is": "总积分", + "You will receive a code in SMS message": "将收到短信码", "Done": "完成", - "Total Budget from trips is ": "行程总预算为 ", + "Total Budget from trips is ": "行程总收入:", "Total Amount:": "总金额:", - "Total Budget from trips by\nCredit card is ": "通过信用卡的行程总预算为 ", - "This amount for all trip I get from Passengers": "我从乘客那里获得的所有行程的金额", - "Pay from my budget": "从我的预算中支付", + "Total Budget from trips by\nCredit card is ": "信用卡行程总收入:", + "This amount for all trip I get from Passengers": "乘客总支付", + "Pay from my budget": "余额支付", "This amount for all trip I get from Passengers and Collected For me in": - "我从乘客那里获得的所有行程的金额并为我收集在", - "You can buy points from your budget": "您可以从预算中购买积分", - "insert amount": "插入金额", + "代收金额", + "You can buy points from your budget": "用余额买积分", + "insert amount": "输入金额", "You can buy Points to let you online\nby this list below": - "您可以购买积分以让您在线\n通过以下列表", - "Create Wallet to receive your money": "创建钱包以接收您的钱", - "Enter your feedback here": "在此处输入您的反馈", - "Please enter your feedback.": "请输入您的反馈。", + "购买积分以保持在线", + "Create Wallet to receive your money": "创建钱包收款", + "Enter your feedback here": "输入反馈", + "Please enter your feedback.": "请输入反馈。", "Feedback": "反馈", "Submit ": "提交 ", - "Click here to Show it in Map": "点击此处在地图上显示", + "Click here to Show it in Map": "点击在地图显示", "Canceled": "已取消", - "Type your Email": "输入您的电子邮件", "No I want": "不,我想", - "Email is": "电子邮件是", - "Phone Number is": "电话号码是", - "Date of Birth is": "出生日期是", - "Sex is ": "性别是 ", - "Car Details": "汽车详情", - "VIN is": "VIN是", - "Color is ": "颜色是 ", - "Make is ": "品牌是 ", - "Model is": "型号是", - "Year is": "年份是", - "Expiration Date ": "到期日期 ", - "Edit Your data": "编辑您的数据", - "write vin for your car": "为您的汽车写VIN", - "VIN": "VIN", - "write Color for your car": "为您的汽车写颜色", - "write Make for your car": "为您的汽车写品牌", - // "Make": "品牌", - "write Model for your car": "为您的汽车写型号", - // "Model": "型号", - "write Year for your car": "为您的汽车写年份", - // "Expiration Date": "到期日期", - "write Expiration Date for your car": "为您的汽车写到期日期", - "Tariffs": "关税", - "Minimum fare": "最低费用", - "Maximum fare": "最高费用", - "Flag-down fee": "招手费", + "Email is": "邮箱是:", + "Phone Number is": "手机号是:", + "Date of Birth is": "生日是:", + "Sex is ": "性别是:", + "Car Details": "车辆详情", + "VIN is": "车架号是:", + "Color is ": "颜色是:", + "Make is ": "品牌是:", + "Model is": "型号是:", + "Year is": "年份是:", + "Expiration Date ": "有效期是:", + "Edit Your data": "编辑资料", + "write vin for your car": "填写车架号", + "VIN": "车架号", + "Device Change Detected": "设备变更", + "Please verify your identity": "验证身份", + "write Color for your car": "填写颜色", + "write Make for your car": "填写品牌", + "write Model for your car": "填写型号", + "write Year for your car": "填写年份", + "write Expiration Date for your car": "填写有效期", + "Tariffs": "费率", + "Minimum fare": "起步价", + "Maximum fare": "最高价", + "Flag-down fee": "起步费", "Including Tax": "含税", - "BookingFee": "预订费", - "Morning": "早上", + "BookingFee": "预约费", + "Morning": "早晨", "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": - "从07:30到10:30(星期四、星期五、星期六、星期一)", + "07:30 - 10:30", "Evening": "晚上", "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": - "从12:00到15:00(星期四、星期五、星期六、星期一)", - "Night": "晚上", - "You have in account": "您有在账户中", + "12:00 - 15:00", + "Night": "夜间", + "You have in account": "账户余额", "Select Country": "选择国家", - "Ride Today : ": "今天的行程: ", - "After this period\nYou can\'t cancel!": "在此期限后\n您不能取消!", - "from 23:59 till 05:30": "从23:59到05:30", - "Rate Driver": "评分司机", - "Total Cost is ": "总费用为 ", - "Write note": "写备注", + "Ride Today : ": "今日行程:", + "After this period\nYou can't cancel!": "超时\n不可取消!", + "from 23:59 till 05:30": "23:59 - 05:30", + "Rate Driver": "评价司机", + "Total Cost is ": "总花费:", + "Write note": "备注", "Time to arrive": "到达时间", "Ride Summaries": "行程摘要", - "Total Cost": "总费用", - "Average of Hours of": "平均小时数", - " is ON for this month": " 本月开启", + "Total Cost": "总花费", + "Average of Hours of": "平均工时", + " is ON for this month": " 本月在线", "Days": "天", - "Total Hours on month": "本月总小时数", - "Counts of Hours on days": "每天的小时数", - "OrderId": "订单ID", + "Total Hours on month": "本月总工时", + "Counts of Hours on days": "每日工时", + "OrderId": "订单号", "created time": "创建时间", - "Intaleq Over": "超速", + "Intaleq Over": "Intaleq 结束", "I will slow down": "我会减速", - "Map Passenger": "地图乘客", - "Be Slowly": "慢慢来", + "Map Passenger": "乘客地图", + "Be Slowly": "慢点", "If you want to make Google Map App run directly when you apply order": - "如果您想在申请订单时直接运行Google地图应用", - "You can change the language of the app": "您可以更改应用的语言", - "Your Budget less than needed": "您的预算低于所需", - "You can change the Country to get all features": "您可以更改国家以获取所有功能", - "Change Country": "更改国家" + "接单直接打开 Google 地图", + "You can change the language of the app": "更改语言", + "Your Budget less than needed": "余额不足", + "You can change the Country to get all features": "更改国家以获取所有功能", + "Change Country": "更改国家/地区" }, - "ar-gulf": { "Order": "طلب", "OrderVIP": "طلب VIP", - "Cancel Trip": "إلغاء الرحلة", - "Passenger Cancel Trip": "الراكب ألغى الرحلة", + "Cancel Trip": "إلغاء المشوار", + "Passenger Cancel Trip": "الراكب ألغى المشوار", "VIP Order": "طلب VIP", - "The driver accepted your trip": "السائق قبل رحلتك", + "Hi ,I Arrive your site": "هلا، وصلت موقعك", + "The driver accepted your trip": "الكابتن قبل مشوارك", "message From passenger": "رسالة من الراكب", "Cancel": "إلغاء", "Trip Cancelled. The cost of the trip will be added to your wallet.": - "تم إلغاء الرحلة. سيتم إضافة تكلفة الرحلة إلى محفظتك.", + "تم إلغاء المشوار. المبلغ رجع لمحفظتك.", "token change": "تغيير الرمز", - "face detect": "كشف الوجه", - "Face Detection Result": "نتيجة كشف الوجه", - "similar": "مشابه", - "not similar": "غير مشابه", - "Hi ,I will go now": "مرحبا، أنا بروح الحين", - "Passenger come to you": "الراكب جاي لك", + "face detect": "التحقق من الوجه", + "Face Detection Result": "نتيجة التحقق", + "similar": "مطابق", + "not similar": "غير مطابق", + "Hi ,I will go now": "هلا، أنا بطلع الحين", + "Passenger come to you": "الراكب جايك", "Call Income": "مكالمة واردة", - "Call Income from Passenger": "مكالمة واردة من الراكب", - "Criminal Document Required": "مطلوب وثيقة جنائية", - "You should have upload it .": "يفترض إنك حملتها.", + "Call Income from Passenger": "مكالمة من الراكب", + "Criminal Document Required": "صحيفة خلو السوابق مطلوبة", + "You should have upload it .": "لازم ترفعها طال عمرك.", "Call End": "انتهاء المكالمة", "The order has been accepted by another driver.": - "الطلب تم قبوله من سائق آخر.", - "The order Accepted by another Driver": "الطلب تم قبوله من سائق آخر", + "الطلب أخذه كابتن ثاني.", + "The order Accepted by another Driver": "الطلب راح لكابتن ثاني", "We regret to inform you that another driver has accepted this order.": - "نتأسف لإبلاغك بأن سائق آخر قد قبل هذا الطلب.", - "Driver Applied the Ride for You": "السائق قدم الطلب لك", + "المعذرة، في كابتن ثاني سبقك وأخذ الطلب.", + "Driver Applied the Ride for You": "الكابتن قدم الطلب لك", "Applied": "تم التقديم", - "Hi ,I Arrive your site": "مرحبا، وصلت موقعك", - "Please go to Car Driver": "لو سمحت روح لسائق السيارة", - "Ok I will go now.": "اوكي بروح الحين.", - "Accepted Ride": "تم قبول الرحلة", - "Driver Accepted the Ride for You": "السائق قبل الرحلة لك", - "Promo": "عرض ترويجي", - "Show latest promo": "عرض أحدث عرض ترويجي", - "Trip Monitoring": "مراقبة الرحلة", - "Driver Is Going To Passenger": "السائق في طريقه إليك", - "Please stay on the picked point.": - "لو سمحت خليك في نقطة الالتقاط المحددة.", - "message From Driver": "رسالة من السائق", - "Trip is Begin": "بدأت الرحلة", - "Cancel Trip from driver": "إلغاء الرحلة من السائق", + "Pay by Sham Cash": "دفع عبر شام كاش", + "Pay with Debit Card": "دفع ببطاقة مدى/فيزا", + "Please go to Car Driver": "تفضل عند الكابتن", + "Ok I will go now.": "أبشر، رايح له الحين.", + "Accepted Ride": "المشوار مقبول", + "Driver Accepted the Ride for You": "الكابتن قبل المشوار عشانك", + "Promo": "كود خصم", + "Show latest promo": "عرض الخصومات", + "Trip Monitoring": "متابعة المشوار", + "Driver Is Going To Passenger": "الكابتن متوجه للراكب", + "Please stay on the picked point.": "خليك في الموقع المحدد لا هنت.", + "message From Driver": "رسالة من الكابتن", + "Trip is Begin": "بدأ المشوار", + "Cancel Trip from driver": "إلغاء من الكابتن", "We will look for a new driver.\nPlease wait.": - "بندور على سائق جديد.\nلو سمحت انتظر.", - "The driver canceled your ride.": "السائق ألغى رحلتك.", - "Driver Finish Trip": "السائق أنهى الرحلة", - "you will pay to Driver": "بتدفع للسائق", - "Don’t forget your personal belongings.": "لا تنسى أغراضك الشخصية.", + "جاري البحث عن كابتن ثاني.\nانتظر لاهنت.", + "The driver canceled your ride.": "الكابتن ألغى مشوارك.", + "Driver Finish Trip": "الكابتن أنهى المشوار", + "you will pay to Driver": "المبلغ للكابتن", + "Don’t forget your personal belongings.": "لا تنسى أغراضك.", "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": - "لو سمحت تأكد إن معاك كل أغراضك الشخصية وإن أي مبلغ متبقي، إذا فيه، تم إضافته لمحفظتك قبل لا تمشي. شكراً لاستخدامك تطبيق Intaleq", - "Finish Monitor": "إنهاء المراقبة", - "Trip finished": "الرحلة انتهت", - "Call Income from Driver": "مكالمة واردة من السائق", - "Driver Cancelled Your Trip": "السائق ألغى رحلتك", + "تأكد إنك أخذت كل أغراضك وإن الباقي رجع لمحفظتك قبل تنزل. شكراً لاختيارك انطلق.", + "Finish Monitor": "إنهاء المتابعة", + "Trip finished": "انتهى المشوار", + "Call Income from Driver": "مكالمة من الكابتن", + "Driver Cancelled Your Trip": "الكابتن كنسل رحلتك", "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": - "بتدفع للسائق بتدفع تكلفة وقت السائق شوف محفظة Intaleq مالتك", - "Order Applied": "تم تطبيق الطلب", - - //firebase above - -// - "Where to": "وين تبي تروح؟", - "Where are you going?": "وين بتروح؟", + "بتدفع حق وقت الكابتن، شيك محفظتك في انطلق", + "Order Applied": "تم تنفيذ الطلب", + "welcome to intaleq": "حياك في انطلق", + "login or register subtitle": "دخل رقم جوالك للدخول أو التسجيل", + "An application error occurred.": "صار خطأ في التطبيق.", + "Submission Failed": "فشل الإرسال", + "Your complaint has been submitted.": "وصلنا بلاغك.", + "Failed to connect to the server. Please try again.": + "ما قدرنا نتصل بالسيرفر. حاول مرة ثانية.", + "Ride information not found. Please refresh the page.": + "معلومات المشوار غير موجودة. حدث الصفحة.", + "Please describe your issue before submitting.": + "اشرح لنا المشكلة لاهنت قبل الارسال.", + "An application error occurred during upload.": "صار خطأ وقت الرفع.", + "Failed to upload audio file.": "ما تحمل الملف الصوتي.", + "Audio uploaded successfully.": "تم رفع الصوت بنجاح.", + "Complaint cannot be filed for this ride. It may not have been completed or started.": + "ما تقدر ترفع شكوى على هالمشوار. يمكن ما كمل أو ما بدأ.", + "2. Attach Recorded Audio (Optional)": "٢. أرفق تسجيل صوتي (اختياري)", + "Please enter a description of the issue.": "اكتب وصف للمشكلة.", + "phone number label": "رقم الجوال", + "phone number required": "مطلوب رقم الجوال", + "send otp button": "أرسل كود التحقق", + "verify your number title": "تحقق من رقمك", + "otp sent subtitle": "أرسلنا كود من 5 أرقام على\n@phoneNumber", + "verify and continue button": "تحقق وكمال", + "enter otp validation": "دخل الكود (5 أرقام)", + "one last step title": "خطوة أخيرة", + "complete profile subtitle": "كمل بياناتك عشان تبدأ", + "first name label": "الاسم الأول", + "first name required": "الاسم الأول مطلوب", + "last name label": "اسم العائلة", + "Verify OTP": "تأكيد الرمز", + "Verification Code": "رمز التحقق", + "We have sent a verification code to your mobile number:": + "طرشنا لك رمز التحقق على جوالك:", + "Verify": "تأكيد", + "Resend Code": "إعادة إرسال", + "You can resend in": "تقدر تعيد الإرسال بعد", + "seconds": "ثانية", + "Error": "خطأ", + "Please enter the complete 6-digit code.": + "دخل الرمز كامل (6 أرقام).", + "last name required": "اسم العائلة مطلوب", + "email optional label": "الإيميل (اختياري)", + "complete registration button": "إتمام التسجيل", + "User with this phone number or email already exists.": + "هالرقم أو الإيميل مسجل من قبل.", + "otp sent success": "تم إرسال الرمز للواتساب.", + "failed to send otp": "فشل إرسال الرمز.", + "server error try again": "خطأ في السيرفر، حاول مرة ثانية.", + "an error occurred": "صار خطأ غير متوقع: @error", + "otp verification failed": "رمز التحقق غلط.", + "registration failed": "فشل التسجيل.", + "welcome user": "يا هلا، @firstName!", + "Cancel Trip from driver": "إلغاء من الكابتن", + "We will look for a new driver.\nPlease wait.": + "بنشوف لك كابتن ثاني.\nانتظر لاهنت.", + "The driver canceled your ride.": "الكابتن ألغى مشوارك.", + "Driver Finish Trip": "الكابتن خلص المشوار", + "you will pay to Driver": "الدفع للكابتن", + "Don't forget your personal belongings.": "لا تنسى أغراضك.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "تأكد إن أغراضك معك وإن الباقي رجع للمحفظة قبل تنزل. شكراً لاستخدامك انطلق.", + "Finish Monitor": "إنهاء المتابعة", + "Trip finished": "انتهت الرحلة", + "Call Income from Driver": "اتصال من الكابتن", + "Driver Cancelled Your Trip": "الكابتن كنسل الرحلة", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "بتدفع حق وقت الكابتن، شوف محفظتك في انطلق", + "Order Applied": "تم الطلب", + "Share App": "شارك التطبيق", + "Wallet": "المحفظة", + "Balance": "الرصيد", + "Don’t forget your personal belongings.": "انتبه لأغراضك الشخصية.", + "Profile": "الملف الشخصي", + "Contact Support": "تواصل مع الدعم", + "Session expired. Please log in again.": + "الجلسة انتهت. سجل دخولك مرة ثانية.", + "Security Warning": "⚠️ تنبيه أمني", + "Potential security risks detected. The application may not function correctly.": + "اكتشفنا مخاطر أمنية. يمكن التطبيق ما يشتغل صح.", + "please order now": "اطلب الحين", + "Where to": "وين الوجهة؟", + "Where are you going?": "وين رايح؟", "Quick Actions": "إجراءات سريعة", - "My Wallet": "محفظتي", + "My Balance": "رصيدي", "Order History": "سجل الطلبات", "Contact Us": "اتصل بنا", - "Driver": "السائق", + "Driver": "كابتن", "Complaint": "شكوى", "Promos": "العروض", "Recent Places": "الأماكن الأخيرة", "From": "من", - "WhatsApp Location Extractor": "مستخرج موقع واتساب", + "WhatsApp Location Extractor": "جلب الموقع من واتساب", "Location Link": "رابط الموقع", - "Paste location link here": "الصق رابط الموقع هنا", - "Go to this location": "انتقل إلى هذا الموقع", - "Paste WhatsApp location link": "الصق رابط موقع واتساب", + "Paste location link here": "الصق الرابط هنا", + "Go to this location": "رح لهالموقع", + "Paste WhatsApp location link": "حط رابط موقع الواتساب", "Select Order Type": "اختر نوع الطلب", - "Choose who this order is for": "اختر الطلب هذا حق منو؟", - "I want to order for myself": "أبي أطلب لنفسي", - "I want to order for someone else": "أبي أطلب لشخص ثاني", - // "Cancel": "إلغاء", - "Order for someone else": "اطلب لشخص آخر", + "Choose who this order is for": "الطلب لمين؟", + "I want to order for myself": "بطلب لنفسي", + "I want to order for someone else": "بطلب لشخص ثاني", + "Order for someone else": "اطلب لغيرك", "Order for myself": "اطلب لنفسي", - "Are you want to go this site": "تبغي تروح هالمكان؟", - // "Yes": "أيوة", + "Are you want to go this site": "تبي تروح هالمكان؟", "No": "لا", - "Are you sure to delete this location?": - "متأكد إنك تبي تحذف هالموقع؟", - "deleted": "تم الحذف", - "To Work": "للشغل", - "Work Saved": "تم حفظ مكان الشغل", + "Pay by Sham Cash": "دفع شام كاش", + "Intaleq Wallet": "محفظة انطلق", + "Have a promo code?": "عندك كود خصم؟", + "Your Wallet balance is ": "رصيدك بالمحفظة: ", + "Cash": "كاش", + "Phone Number": "رقم الجوال", + "Search country": "ابحث عن الدولة", + "Payment Successful!": "تم الدفع!", + "Your payment was successful.": "عملية الدفع ناجحة.", + "Pay directly to the captain": "ادفع للكابتن كاش", + "Top up Wallet to continue": "اشحن المحفظة عشان تكمل", + "Or pay with Cash instead": "أو ادفع كاش", + "Confirm & Find a Ride": "أكد ودور كابتن", + "Balance:": "الرصيد:", + "Alerts": "تنبيهات", + "Welcome Back!": "هلا بك من جديد!", + "Current Balance": "الرصيد الحالي", + "Set Wallet Phone Number": "حط رقم للمحفظة", + "Link a phone number for transfers": "اربط رقم للتحويلات", + "Payment History": "سجل المدفوعات", + "View your past transactions": "شوف عملياتك السابقة", + "Top up Wallet": "شحن المحفظة", + "Add funds using our secure methods": "ضيف رصيد بطرق آمنة", + "Driver is waiting": "الكابتن ينتظرك", + "Type your message...": "اكتب رسالتك...", + "Driver Accepted Request": "الكابتن وافق على الطلب", + "Message": "رسالة", + "Call": "اتصال", + "Set Phone Number": "حط رقم الجوال", + "Select This Ride": "اختر هالمشوار", + "Call Driver": "كلم الكابتن", + "Increase Fare": "زيد السعر", + "Stop": "قف", + "Record": "تسجيل", + "Share": "مشاركة", + "WhatsApp": "واتساب", + "SOS": "فزعة (SOS)", + "No drivers accepted your request yet": "ماحد قبل طلبك لسه", + "Increasing the fare might attract more drivers. Would you like to increase the price?": + "لو زودت السعر ممكن يجيك كابتن أسرع. تبي تزيد السعر؟", + "Please make sure not to leave any personal belongings in the car.": + "تأكد إنك ما نسيت شي في السيارة.", + "Cancel Ride": "إلغاء المشوار", + "Route Not Found": "الطريق غير معروف", + "We couldn't find a valid route to this destination. Please try selecting a different point.": + "ما لقينا طريق للوجهة هذي. جرب تختار نقطة ثانية.", + "alert": "تنبيه", + "You can call or record audio during this trip.": + "تقدر تتصل أو تسجل صوت خلال المشوار.", + "Warning: Speeding detected!": "تنبيه: سرعة عالية!", + "Fixed Price": "سعر ثابت", + "Report": "بلاغ", + "Comfort": "مريح", + "Intaleq Balance": "رصيد انطلق", + "Search for a starting point": "ابحث عن نقطة البداية", + "Top up Balance to continue": "اشحن الرصيد للمتابعة", + "Electric": "كهربائية", + "Lady": "نواعم", + "Van": "عائلية (فان)", + "Rayeh Gai": "رايح جاي", + "Join Intaleq as a driver using my referral code!": + "سجل كابتن في انطلق بكود الدعوة حقي!", + "Use code:": "استخدم الكود:", + "Download the Intaleq Driver app now and earn rewards!": + "حمل تطبيق كابتن انطلق واكسب مكافآت!", + "Get a discount on your first Intaleq ride!": + "لك خصم على أول مشوار في انطلق!", + "Use my referral code:": "استخدم كود الدعوة:", + "Download the Intaleq app now and enjoy your ride!": + "حمل تطبيق انطلق واستمتع بمشوارك!", + "Contacts Loaded": "تم تحميل الأسماء", + "Showing": "عرض", + "of": "من", + "Pay by MTN Wallet": "دفع بمحفظة MTN", + "Pay by Syriatel Wallet": "دفع بمحفظة سيريتل", + "Customer not found": "العميل غير موجود", + "Wallet is blocked": "المحفظة موقوفة", + "Customer phone is not active": "جوال العميل مو شغال", + "Balance not enough": "الرصيد ما يكفي", + "Balance limit exceeded": "تجاوزت حد الرصيد", + "Incorrect sms code": "⚠️ رمز التحقق غلط. حاول مرة ثانية.", + "contacts. Others were hidden because they don't have a phone number.": + "جهة اتصال. الباقي مخفي عشان ما عندهم أرقام.", + "No contacts found": "ما لقينا جهات اتصال", + "No contacts with phone numbers were found on your device.": + "ما في أرقام بجهازك.", + "Permission denied": "ما في صلاحية", + "Contact permission is required to pick contacts": + "نحتاج صلاحية الأسماء.", + "An error occurred while picking contacts:": + "صار خطأ وحنا نختار الأسماء:", + "Please enter a correct phone": "دخل رقم جوال صح", + "Success": "تم", + "Invite sent successfully": "أرسلنا الدعوة", + "Hello! I'm inviting you to try Intaleq.": + "هلا! أدعوك تجرب تطبيق انطلق.", + "Use my invitation code to get a special gift on your first ride!": + "استخدم كودي عشان يجيك هدية بأول مشوار!", + "Your personal invitation code is:": "كود الدعوة حقك:", + "Be sure to use it quickly! This code expires at": + "استعجل عليه! الكود ينتهي في", + "Download the app now:": "حمل التطبيق:", + "See you on the road!": "نشوفك بالدرب!", + "This phone number has already been invited.": + "هالرقم قد أرسلنا له دعوة.", + "An unexpected error occurred. Please try again.": + "صار خطأ غير متوقع. حاول مرة ثانية.", + "You deserve the gift": "تستاهل الهدية", + "Claim your 20 LE gift for inviting": "اطلب هديتك (20 ريال) للدعوة", + "You have got a gift for invitation": "جتك هدية عشان الدعوة", + "You have earned 20": "كسبت 20", + "LE": "ر.س", + "Vibration feedback for all buttons": "اهتزاز لكل الأزرار", + "Share with friends and earn rewards": "شارك مع ربعك واكسب", + "Gift Already Claimed": "أخذت الهدية من قبل", + "You have already received your gift for inviting": + "قد استلمت هديتك على هالدعوة", + "Keep it up!": "كفو عليك!", + "has completed": "كمل", + "trips": "مشاوير", + "Personal Information": "المعلومات الشخصية", + "Name": "الاسم", + "Not set": "مو محدد", + "Gender": "الجنس", + "Education": "التعليم", + "Work & Contact": "العمل والتواصل", + "Employment Type": "نوع الوظيفة", + "Marital Status": "الحالة الاجتماعية", + "SOS Phone": "رقم الطوارئ", + "Sign Out": "تسجيل خروج", + "Delete My Account": "حذف حسابي", + "Update Gender": "تحديث الجنس", + "Update": "تحديث", + "Update Education": "تحديث التعليم", + "Are you sure? This action cannot be undone.": + "متأكد؟ ما تقدر تتراجع بعدين.", + "Confirm your Email": "أكد إيميلك", + "Type your Email": "اكتب إيميلك", + "Delete Permanently": "حذف نهائي", + "Male": "رجل", + "Female": "أنثى", + "Other": "غير ذلك", + "High School Diploma": "ثانوي", + "Associate Degree": "دبلوم", + "Bachelor's Degree": "بكالوريوس", + "Master's Degree": "ماجستير", + "Doctoral Degree": "دكتوراه", + "Select your preferred language for the app interface.": + "اختر لغة التطبيق.", + "Language Options": "خيارات اللغة", + "You can claim your gift once they complete 2 trips.": + "تقدر تأخذ الهدية إذا كملوا مشوارين.", + "Closest & Cheapest": "الأقرب والأرخص", + "Comfort choice": "خيار الراحة", + "Travel in a modern, silent electric car. A premium, eco-friendly choice for a smooth ride.": + "تنقل بسيارة كهربائية حديثة وهادية. خيار فخم وصديق للبيئة.", + "Spacious van service ideal for families and groups. Comfortable, safe, and cost-effective travel together.": + "خدمة فان واسعة للعوايل والمجموعات. راحة وأمان وتوفير.", + "Quiet & Eco-Friendly": "هادية وصديقة للبيئة", + "Lady Captain for girls": "كابتن سيدة للبنات", + "Van for familly": "فان للعائلة", + "Are you sure to delete this location?": "متأكد تبي تحذف هالموقع؟", + "Change Work location?": "تغيير موقع الدوام؟", + "Change Home location?": "تغيير موقع البيت؟", + "Submit a Complaint": "رفع شكوى", + "Submit Complaint": "إرسال الشكوى", + "No trip history found": "ما فيه سجل مشاوير", + "Your past trips will appear here.": "مشاويرك السابقة بتطلع هنا.", + "1. Describe Your Issue": "١. وش المشكلة؟", + "Enter your complaint here...": "اكتب شكواك هنا...", + "2. Attach Recorded Audio": "٢. أرفق تسجيل صوتي", + "No audio files found.": "ما لقينا ملفات صوتية.", + "Confirm Attachment": "تأكيد الإرفاق", + "Attach this audio file?": "ترفق هالملف الصوتي؟", + "Uploaded": "تم الرفع", + "3. Review Details & Response": "٣. مراجعة التفاصيل والرد", + "Date": "التاريخ", + "Today's Promos": "عروض اليوم", + "No promos available right now.": "ما فيه عروض حالياً.", + "Check back later for new offers!": "شيك بعدين يمكن فيه عروض!", + "Valid Until:": "صالح لين:", + "CODE": "الكود", + "Login": "تسجيل الدخول", + "Sign in for a seamless experience": "سجل دخولك لتجربة أسهل", + "Sign In with Google": "دخول بقوقل", + "Sign in with Apple": "دخول بأبل", + "User not found": "المستخدم غير موجود", + "Need assistance? Contact us": "تبي مساعدة؟ كلمنا", + "Email": "الإيميل", + "Your email address": "عنوان بريدك", + "Enter a valid email": "دخل إيميل صحيح", + "Password": "كلمة المرور", + "Your password": "كلمة المرور حقتك", + "Enter your password": "دخل كلمة المرور", + "Submit": "إرسال", + "Terms of Use & Privacy Notice": "شروط الاستخدام والخصوصية", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the ": + "إذا اخترت \"أوافق\"، يعني إنك قريت ووافقت على ", + "Terms of Use": "شروط الاستخدام", + " and acknowledge the ": " وتقر بـ ", + "Privacy Notice": "سياسة الخصوصية", + " . I am at least 18 years old.": " . وعمري 18 سنة وفوق.", + "I Agree": "أوافق", + "Continue": "متابعة", + "Enable Location": "تفعيل الموقع", + "To give you the best experience, we need to know where you are. Your location is used to find nearby captains and for pickups.": + "عشان نخدمك صح، نبي نعرف موقعك. بنستخدمه عشان نلقى لك كباتن قريبين.", + "Allow Location Access": "السماح بالوصول للموقع", + "Welcome to Intaleq!": "حياك الله في انطلق!", + "Before we start, please review our terms.": + "قبل نبدأ، راجع شروطنا لاهنت.", + "Your journey starts here": "مشوارك يبدأ هنا", + "Cancel Search": "إلغاء البحث", + "Set pickup location": "حدد موقع الانطلاق", + "Move the map to adjust the pin": "حرك الخريطة عشان تظبط الموقع", + "Searching for the nearest captain...": "جاري البحث عن أقرب كابتن...", + "No one accepted? Try increasing the fare.": + "ماحد قبل؟ جرب تزيد السعر.", + "Increase Your Trip Fee (Optional)": "زيد سعر المشوار (اختياري)", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "ما لقينا كباتن للحين. فكر تزيد السعر عشان يوافقون أسرع.", + "No, thanks": "لا، شكراً", + "Increase Fee": "زيد السعر", + "Copy": "نسخ", + "Promo Copied!": "تم نسخ الكود!", + "Code": "الكود", + "copied to clipboard": "تم النسخ للحافظة", + "Price": "السعر", + "Intaleq's Response": "رد انطلق", + "Awaiting response...": "بانتظار الرد...", + "Audio file not attached": "الملف الصوتي مو مرفق", + "The audio file is not uploaded yet.\\nDo you want to submit without it?": + "الملف الصوتي لسه ما رفع.\\nتبي ترسل بدونه؟", + "deleted": "محذوف", + "To Work": "للدوام", + "Work Saved": "حفظنا موقع الدوام", "To Home": "للبيت", - "Home Saved": "تم حفظ مكان البيت", - "Destination selected": "تم اختيار الوجهة", - "Now select start pick": "الحين اختار نقطة البداية", - "OK": "تمام", - "Confirm Pick-up Location": "تأكيد موقع الالتقاء", - "Set Location on Map": "حدد الموقع على الخريطة", + "Home Saved": "حفظنا موقع البيت", + "Destination selected": "اخترت الوجهة", + "Now select start pick": "الحين حدد من وين نأخذك", + "OK": "تم", + "Confirm Pick-up Location": "تأكيد موقع الركوب", + "Set Location on Map": "حدد ع الخريطة", + "Leave a detailed comment (Optional)": "اكتب تعليق مفصل (اختياري)", + "Share your experience to help us improve...": + "شاركنا تجربتك عشان نتحسن...", + "Your valuable feedback helps us improve our service quality.": + "رأيك يهمنا ويحسن خدمتنا.", + "witout zero": "بدون صفر", + "Top up Balance": "اشحن الرصيد", + "An error occurred": "صار خطأ", + "Send WhatsApp Message": "أرسل واتساب", + "How was your trip with": "كيف كان مشوارك مع", + "Drawing route on map...": "نرسم الطريق ع الخريطة...", + "Please wait while we prepare your trip.": "انتظر شوي نجهز مشوارك.", + "Submit Rating": "إرسال التقييم", + "Call Support": "كلم الدعم", + "You can contact us during working hours from 10:00 - 16:00.": + "تقدر تكلمنا وقت الدوام من 10 ص إلى 4 م.", + "Intaleq is the safest and most reliable ride-sharing app designed especially for passengers in Syria. We provide a comfortable, respectful, and affordable riding experience with features that prioritize your safety and convenience. Our trusted captains are verified, insured, and supported by regular car maintenance carried out by top engineers. We also offer on-road support services to make sure every trip is smooth and worry-free. With Intaleq, you enjoy quality, safety, and peace of mind—every time you ride.": + "انطلق هو تطبيق المشاوير الآمن والموثوق المصمم لأهل الخليج. نوفر لك تجربة مريحة ومحترمة وبسعر زين، مع ميزات تهم سلامتك. كباتننا موثقين ومأمنين وسياراتهم مفحوصة. وعندنا دعم على الطريق عشان تضمن مشوارك يتم على خير. مع انطلق، ارتاح وتطمن.", + "Work time is from 10:00 AM to 16:00 PM.\nYou can send a WhatsApp message or email.": + "الدوام من 10 الصبح لـ 4 العصر.\nتقدر ترسل واتساب أو إيميل.", + "Sorry": "المعذرة", + "Customer MSISDN doesn’t have customer wallet": + "رقم العميل ما عنده محفظة", + "Please enter the number without the leading 0": + "دخل الرقم بدون الصفر اللي بالبداية", + "Please enter your phone number": "دخل رقم جوالك", + "Phone number seems too short": "الرقم كأنه قصير", + "No cars are available at the moment. Please try again later.": + "ما في سيارات حالياً. جرب بعد شوي.", "Nearest Car: ~": "أقرب سيارة: ~", "Nearest Car": "أقرب سيارة", - "No cars nearby": "ما فيه سيارات قريبة", + "No cars nearby": "ما حولك سيارات", "Favorite Places": "الأماكن المفضلة", - "No favorite places yet!": "ما فيه أماكن مفضلة للحين!", - "from your favorites": "من مفضلتك", + "No favorite places yet!": "ما ضفت أماكن مفضلة للحين!", + "from your favorites": "من المفضلة", "Back": "رجوع", - "Sign in for a seamless experience": "سجل الدخول لتجربة أفضل", - "Sign In with Google": "تسجيل الدخول باستخدام جوجل", - "Sign in with Apple": "تسجيل الدخول باستخدام آبل", - "Need assistance? Contact us": "محتاج مساعدة؟ كلمنا", - "User not found": "المستخدم مو موجود", - "Email": "البريد الإلكتروني", - "Your email address": "عنوان بريدك الإلكتروني", - "Enter a valid email": "أدخل بريد إلكتروني صحيح", - "Password": "كلمة المرور", - // "Your password": "كلمة مرورك", - "Enter your password": "أدخل كلمة المرور", - "Submit": "إرسال", - "Terms of Use & Privacy Notice": "شروط الاستخدام وإشعار الخصوصية", - "Terms of Use": "شروط الاستخدام", - "Privacy Notice": "سياسة الخصوصية", + "Enter your code below to apply the discount.": + "دخل الكود تحت عشان يجيك الخصم.", "By selecting \"I Agree\" below, I confirm that I have read and agree to the": - "بالنقر على \"أوافق\" أدناه، أؤكد أنني قرأت ووافقت على", + "إذا اخترت \"أوافق\"، يعني قريت ووافقت على", "and acknowledge the": "وأقر بـ", - ". I am at least 18 years old.": ". أنا عمري 18 سنة على الأقل.", - - "Continue": "متابعة", "Enable Location Access": "تفعيل الوصول للموقع", "We need your location to find nearby drivers for pickups and drop-offs.": - "نحتاج موقعك عشان نلاقي سواقين قريبين للاستلام والتوصيل.", - "Allow Location Access": "السماح بالوصول للموقع", + "نحتاج موقعك عشان نلقى كباتن حولك.", "You should restart app to change language": - "يفترض تقفل التطبيق وتفتحه مرة ثانية عشان اللغة تتغير", + "لازم تعيد تشغيل التطبيق عشان تتغير اللغة", "Home Page": "الرئيسية", - "To change Language the App": "لتغيير لغة التطبيق", - "Learn more about our app and mission": - "اعرف أكثر عن تطبيقنا ورسالتنا", + "To change Language the App": "تغيير لغة التطبيق", + "Learn more about our app and mission": "اعرف أكثر عن تطبيقنا", "Promos For Today": "عروض اليوم", - "Choose your ride": "اختار مشوارك", - "Your Journey Begins Here": "رحلتك تبدأ هنا", + "Choose your ride": "اختر موترك", + "Your Journey Begins Here": "مشوارك يبدأ هنا", "Bonus gift": "هدية إضافية", "Pay": "ادفع", "Get": "احصل على", - "Send to Driver Again": "إرسال للسواق مرة ثانية", - "Driver Name:": "اسم السائق:", - "No trip data available": "ما فيه بيانات للرحلة متوفرة", - "Car Plate:": "رقم اللوحة:", - "remaining": "متبقي", - "Order Cancelled": "تم إلغاء الطلب", + "Send to Driver Again": "أرسل للكابتن مرة ثانية", + "Driver Name:": "اسم الكابتن:", + "No trip data available": "ما في بيانات للمشوار", + "Car Plate:": "اللوحة:", + "remaining": "باقي", + "Order Cancelled": "الطلب تكنسل", "You canceled VIP trip": "ألغيت مشوار VIP", "Passenger cancelled order": "الراكب ألغى الطلب", - "Your trip is scheduled": "رحلتك مجدولة", + "Your trip is scheduled": "مشوارك مجدول", "Don't forget your ride!": "لا تنسى مشوارك!", - "Trip updated successfully": "تم تحديث الرحلة بنجاح", - "Car Make:": "ماركة السيارة:", - "Car Model:": "موديل السيارة:", - "Car Color:": "لون السيارة:", - "Driver Phone:": "رقم تلفون السواق:", + "Trip updated successfully": "تحدث المشوار بنجاح", + "Car Make:": "نوع السيارة:", + "Car Model:": "الموديل:", + "Car Color:": "اللون:", + "Driver Phone:": "جوال الكابتن:", "Pre-booking": "حجز مسبق", - "Waiting VIP": "انتظار VIP", - "Driver List": "قائمة السائقين", + "Waiting VIP": "بانتظار VIP", + "Driver List": "قائمة الكباتن", "Confirm Trip": "تأكيد المشوار", - "Select date and time of trip": "حدد تاريخ ووقت المشوار", + "Select date and time of trip": "اختر وقت وتاريخ المشوار", "Date and Time Picker": "اختيار التاريخ والوقت", "Trip Status:": "حالة المشوار:", - "pending": "قيد الانتظار", - "accepted": "تم القبول", - "rejected": "تم الرفض", + "pending": "معلق", + "accepted": "مقبول", + "rejected": "مرفوض", "Apply": "تطبيق", - "Enter your promo code": "أدخل رمز الترويج الخاص بك", - "Apply Promo Code": "تطبيق رمز الترويج", - "Scheduled Time:": "الوقت المحدد:", - "No drivers available": "ما فيه سواقين متوفرين", + "Enter your promo code": "دخل كود الخصم", + "Apply Promo Code": "طبق الكود", + "Scheduled Time:": "الوقت المجدول:", + "No drivers available": "ما في كباتن", "No drivers available at the moment. Please try again later.": - "ما فيه سواقين متوفرين الحين. حاول مرة ثانية بعدين.", - "you have a negative balance of": "عندك رصيد سلبي قدره", - "Please try again in a few moments": "حاول مرة ثانية بعد لحظات قليلة", - "Unknown Driver": "سائق غير معروف", - "in your": "في محفظتك", - "The driver accepted your order for": "السائق قبل طلبك مقابل", - "wallet due to a previous trip.": "بسبب رحلة سابقة.", + "ما في كباتن حالياً. جرب بعدين.", + "you have a negative balance of": "عليك رصيد سالب بقيمة", + "Please try again in a few moments": "جرب بعد شوي", + "Unknown Driver": "كابتن غير معروف", + "in your": "في", + "The driver accepted your order for": "الكابتن قبل طلبك بـ", + "wallet due to a previous trip.": "من المحفظة عشان مشوار سابق.", "rides": "مشاوير", - "Add Work": "أضف مكان الشغل", + "Add Work": "إضافة الدوام", "The reason is": "السبب هو", "User does not have a wallet #1652": "المستخدم ما عنده محفظة #1652", "Price of trip": "سعر المشوار", "From:": "من:", "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "بالنسبة لمشاوير Intaleq والتوصيل، السعر ينحسب بشكل تلقائي. أما مشاوير كمفورت، السعر يكون على حسب الوقت والمسافة", - "Phone Wallet Saved Successfully": "تم حفظ محفظة الهاتف بنجاح", - "Add wallet phone you use": "ضيف رقم محفظة هاتفك اللي تستخدمها", - "Update Available": "تحديث متوفر", + "لمشاوير انطلق والتوصيل، السعر ينحسب اوتوماتيك. لمشاوير الراحة، السعر بالوقت والمسافة.", + "Phone Wallet Saved Successfully": "انحفظ رقم المحفظة", + "Add wallet phone you use": "ضف رقم المحفظة اللي تستخدمه", + "Update Available": "فيه تحديث", "Phone number must be exactly 11 digits long": - "رقم التلفون لازم يكون 11 رقم بالضبط", - "Insert Wallet phone number": "أدخل رقم محفظة هاتفك", - "Phone number isn't an Egyptian phone number": - "رقم التلفون هذا مو رقم مصري", + "الرقم لازم يكون 10 أرقام (حسب الدولة)", + "Insert Wallet phone number": "دخل رقم المحفظة", + "Phone number isn't an Egyptian phone number": "الرقم مو محلي", "A new version of the app is available. Please update to the latest version.": - "فيه نسخة جديدة من التطبيق متوفرة. يرجى التحديث لآخر نسخة.", + "نزل تحديث جديد للتطبيق. حدثه لاهنت.", "We use location to get accurate and nearest passengers for you": - "نستخدم الموقع عشان نوصلك بأقرب ركاب وأدقهم ليك", + "نستخدم الموقع عشان نجيب لك أقرب ركاب بدقة", "This ride is already applied by another driver.": - "المشوار هذا اتقبل من سواق ثاني خلاص.", + "هالمشوار أخذه كابتن ثاني.", "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": - "نستخدم موقعك بالتحديد عشان نلاقي أقرب سواق متوفر ونعطيك معلومات دقيقة عن مكان الاستلام والوصول. ممكن تتحكم في هذا من الإعدادات.", - - "Where are you, sir?": "وين مكانك يا طويل العمر؟", + "نستخدم موقعك الدقيق عشان نلقى أقرب كابتن ونعطيك معلومات دقيقة للركوب والنزول. تقدر تضبطه من الإعدادات.", + "Where are you, sir?": "وينك طال عمرك؟", "I've been trying to reach you but your phone is off.": - "أحاول أتصل فيك بس تلفونك مسكر.", - "Please don't be late": "لو سمحت لا تتأخر", + "دقيت عليك وجوالك مقفل.", + "Please don't be late": "لا تتأخر لاهنت", "Please don't be late, I'm waiting for you at the specified location.": - "لو سمحت لا تتأخر، أنا أنتظرك في المكان اللي محدد.", + "لا تتأخر علي، انتظرك بالموقع.", "My location is correct. You can search for me using the navigation app": - "موقعي صحيح. ممكن تدور علي باستخدام تطبيق الملاحة", + "موقعي صح. ابحث عني بالخريطة", "Hello, I'm at the agreed-upon location": - "مرحبا، أنا في المكان المتفق عليه", - "How much longer will you be?": "شقد باقي لك وتوصل؟", - "Phone number is verified before": "تم التحقق من رقم الهاتف قبل", + "هلا، أنا بالموقع المتفق عليه", + "How much longer will you be?": "كم يبيلك؟", + "Phone number is verified before": "الرقم توثق من قبل", "Change Ride": "تغيير المشوار", "You can change the destination by long-pressing any point on the map": - "ممكن تغير الوجهة بالضغط مطولاً على أي نقطة في الخريطة", - "Pick from map destination": "اختار وجهتك من الخريطة", - "Pick or Tap to confirm": "اختار أو اضغط للتأكيد", - "Accepted your order": "تم قبول طلبك", - "Order Accepted": "تم قبول الطلب", - "with type": "مع نوع", - "accepted your order at price": "تم قبول طلبك بسعر", - - "you canceled order": "أنت ألغيت الطلب", - "If you want order to another person": "إذا تبي تطلب لشخص ثاني", - // "Ok I will go now.": "تمام، أنا ماشي الحين.", - // "Hi, I will go now": "مرحبا، أنا ماشي الحين", - "upgrade price": "رفع السعر", - "Please enter a correct phone": "يرجى إدخال رقم هاتف صحيح", + "تقدر تغير الوجهة بالضغط المطول ع الخريطة", + "Pick from map destination": "اختر الوجهة من الخريطة", + "Pick or Tap to confirm": "اختر أو اضغط للتأكيد", + "Accepted your order": "قبل طلبك", + "Order Accepted": "انقبل الطلب", + "with type": "من نوع", + "accepted your order at price": "وافق بسعر", + "you canceled order": "كنسلت الطلب", + "If you want order to another person": "اذا تبي تطلب لشخص ثاني", + "upgrade price": "ارفع السعر", "airport": "مطار", "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": - "أفضل اختيار لسيارة مريحة بمسار مرن ونقاط توقف. هالمطار يقدم دخول فيزا بهالسعر.", + "أفضل خيار لسيارة مريحة ومسار مرن.", "You can upgrade price to may driver accept your order": - "ممكن تزيد السعر عشان السواق يقبل طلبك", + "تقدر ترفع السعر عشان يوافق الكابتن", "Change Route": "تغيير المسار", - "No Captain Accepted Your Order": "ما فيه كابتن قبل طلبك", + "No Captain Accepted Your Order": "ماحد قبل طلبك", "We are looking for a captain but the price may increase to let a captain accept": - "بندور على كابتن بس ممكن السعر يزيد عشان كابتن يقبل", - "No, I want to cancel this trip": "لا، أبي ألغي المشوار هذا", - // "Trip Cancelled. The cost of the trip will be added to your wallet.": - // "تم إلغاء الرحلة. سيتم إضافة تكلفة الرحلة لمحفظتك.", - "Attention": "تنبيه", + "ندور كابتن بس يمكن يزيد السعر عشان يوافقون", + "No, I want to cancel this trip": "لا، أبي ألغي المشوار", + "Attention": "انتبه", "Trip Cancelled. The cost of the trip will be deducted from your wallet.": - "تم إلغاء الرحلة. سيتم خصم تكلفة الرحلة من محفظتك.", + "المشوار تكنسل. المبلغ انخصم من محفظتك.", "You will be charged for the cost of the driver coming to your location.": - "راح تتحاسب على تكلفة مجيء السواق لموقعك.", + "بنحسب عليك تكلفة جية الكابتن.", "reject your order.": "رفض طلبك.", - "Order Under Review": "الطلب قيد المراجعة", + "Order Under Review": "الطلب تحت المراجعة", "is reviewing your order. They may need more information or a higher price.": - "يراجع طلبك. ممكن يحتاجون معلومات أكثر أو سعر أعلى.", - // "The driver canceled your ride.": "السواق ألغى مشوارك.", - "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": - "ما لقينا أي سواقين للحين. فكر تزيد سعر المشوار عشان عرضك يكون جذاب أكثر للسواقين.", - "Increase Your Trip Fee (Optional)": "زيد سعر مشوارك (اختياري)", + "يراجع طلبك. يمكن يحتاج معلومات أو سعر أعلى.", "Vibration": "اهتزاز", - "Resend code": "إعادة إرسال الرمز", - // "token change": "تغيير الرمز", + "Resend code": "أعد إرسال الرمز", "change device": "تغيير الجهاز", - "Device Change Detected": "تم اكتشاف تغيير الجهاز", + "Device Change Detected": "اكتشفنا تغيير بالجهاز", "You can only use one device at a time. This device will now be set as your active device.": - "ممكن تستخدم جهاز واحد بس في المرة الواحدة. الجهاز هذا راح يتعين الحين كجهازك النشط.", + "تقدر تستخدم جهاز واحد بس. هالجهاز صار هو الأساسي.", "Click here point": "اضغط هنا", "Are you want to change": "تبي تغير؟", "by": "بواسطة", - "Enter your complaint here": "اكتب شكوتك هنا", - "Please enter your complaint.": "يرجى إدخال شكواك.", - "Complaint data saved successfully": "تم حفظ بيانات الشكوى بنجاح", - "Trip Monitor": "مراقبة الرحلة", - "Insert SOS Phone": "أدخل رقم طوارئ", - "Add SOS Phone": "أضف رقم طوارئ", - // "Trip Monitoring": "مراقبة الرحلة", - "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": - "عزيزي،\n\n🚀 توني بديت رحلة مثيرة وأبي أشارك تفاصيل رحلتي وموقعي الحالي معك في الوقت الفعلي! يرجى تنزيل تطبيق Intaleq. راح يسمح لك تشوف تفاصيل رحلتي وموقعي الأخير.\n\n👈 رابط التحميل:\nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nأتطلع إني أبقيك قريب خلال مغامرتي!\n\nIntaleq،", - "Send Intaleq app to him": "ارسله تطبيق Intaleq", + "Enter your complaint here": "اكتب شكواك", + "Please enter your complaint.": "الرجاء كتابة الشكوى.", + "Complaint data saved successfully": "انحفظت الشكوى", + "Trip Monitor": "مراقب الرحلة", + "Insert SOS Phone": "دخل رقم الطوارئ", + "Add SOS Phone": "إضافة رقم طوارئ", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": + "عزيزي،\n\n🚀 بديت مشوار وحاب أشاركك تفاصيله وموقعي مباشر! حمل تطبيق انطلق عشان تتابعني.\n\n👉 رابط التحميل:\nأندرويد [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\nآيفون [https://getapp.cc/app/6458734951]\n\nخليك قريب!\n\nانطلق،", + "Send Intaleq app to him": "أرسل له تطبيق انطلق", "No passenger found for the given phone number": - "ما فيه راكب بالرقم هذا", - "No user found for the given phone number": - "ما فيه مستخدم بالرقم هذا", - "This price is": "السعر هذا", - "Work": "شغل", - "Add Home": "أضف بيت", + "ما لقينا راكب بهالرقم", + "No user found for the given phone number": "ما لقينا مستخدم بهالرقم", + "This price is": "هالسعر هو", + "Work": "الدوام", + "Add Home": "إضافة البيت", "Notifications": "الإشعارات", - "💳 Pay with Credit Card": "ادفع بالبطاقة الائتمانية 💳", + "💳 Pay with Credit Card": "💳 ادفع بالبطاقة", "⚠️ You need to choose an amount!": "⚠️ لازم تختار مبلغ!", - "💰 Pay with Wallet": "ادفع من المحفظة", + "💰 Pay with Wallet": "💰 ادفع بالمحفظة", "You must restart the app to change the language.": - "لازم تقفل التطبيق وتفتحه مرة ثانية عشان اللغة تتغير.", + "لازم تعيد تشغيل التطبيق لتغيير اللغة.", "joined": "انضم", - "Driver joined the channel": "السائق انضم للقناة", - "Driver left the channel": "السائق غادر القناة", + "Driver joined the channel": "الكابتن دخل الشات", + "Driver left the channel": "الكابتن طلع من الشات", "Call Page": "صفحة الاتصال", - // "Call End": "انتهاء المكالمة", - "Call Left": "مكالمات متبقية", - + "Call Left": "مكالمات باقية", + " Next as Cash !": " التالي كاش!", "To use Wallet charge it": "عشان تستخدم المحفظة اشحنها", "We are searching for the nearest driver to you": - "بندور لك على أقرب سواق ليك", - "Best choice for cities": "أفضل اختيار للمدن", + "ندور لك أقرب كابتن", + "Best choice for cities": "أفضل خيار للمدن", "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": - "رايح جاي: خدمة للذهاب والعودة لـ Intaleq مريح بين المدن، سهلة وموثوقة.", - "Rayeh Gai": "رايح جاي", - "This trip is for women only": "المشوار هذا للسيدات فقط", - "Total budgets on month": "إجمالي الميزانية الشهرية", - "You have call from driver": "عندك مكالمة من السواق", - "Comfort": "كمفورت", - "Intaleq": "Intaleq", + "رايح جاي: خدمة مريحة للسفر بين المدن.", + "This trip is for women only": "المشوار للنساء فقط", + "Total budgets on month": "ميزانية الشهر", + "You have call from driver": "عندك اتصال من الكابتن", + "Intaleq": "انطلق", + "passenger agreement": "اتفاقية الراكب", + "To become a passenger, you must review and agree to the ": + "عشان تصير راكب، لازم توافق على ", + "agreement subtitle": "للمتابعة، وافق على الشروط والخصوصية.", + "terms of use": "شروط الاستخدام", + " and acknowledge our Privacy Policy.": " وتقر بسياسة الخصوصية.", + "and acknowledge our": "وتقر بـ", + "privacy policy": "سياسة الخصوصية.", + "i agree": "موافق", "Driver already has 2 trips within the specified period.": - "السائق عنده بالفعل مشوارين خلال الفترة المحددة.", - "The invitation was sent successfully": "تم إرسال الدعوة بنجاح", - "Lady": "ليدي", - "You should select your country": "يجب عليك اختيار بلدك", + "الكابتن عنده مشوارين بهالوقت.", + "The invitation was sent successfully": "أرسلنا الدعوة", + "You should select your country": "اختر دولتك", "Scooter": "سكوتر", "A trip with a prior reservation, allowing you to choose the best captains and cars.": - "مشوار بحجز مسبق، تقدر تختار فيه أفضل الكباتن والسيارات.", + "مشوار بحجز مسبق، يمديك تختار أفضل الكباتن والسيارات.", "Mishwar Vip": "مشوار VIP", "The driver waiting you in picked location .": - "السائق ينتظرك في مكان الالتقاء اللي اخترته.", - "About Us": "عن التطبيق", + "الكابتن ينتظرك في الموقع.", + "About Us": "من نحن", "You can change the vibration feedback for all buttons": - "ممكن تغير اهتزاز الأزرار", - "Most Secure Methods": "أكثر طرق الأمان", - "In-App VOIP Calls": "مكالمات صوتية داخل التطبيق", - "Recorded Trips for Safety": "تسجيل الرحلات للأمان", + "تقدر تغير اهتزاز الأزرار", + "Most Secure Methods": "طرق آمنة", + "In-App VOIP Calls": "مكالمات صوتية بالتطبيق", + "Recorded Trips for Safety": "مشاوير مسجلة للأمان", "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": - "\nكما نولي أهمية كبيرة للأسعار المناسبة، ونقدم أسعارًا تنافسية لجعل مشاويرك في متناول الجميع.", + "\nونهتم بالأسعار تكون مناسبة.", "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": - "Intaleq هو تطبيق لمشاركة المشاوير مصمم مع وضع سلامتك وتكلفة المشوار في الاعتبار. نوصلك بسواقين موثوقين في منطقتك، ونضمن لك تجربة Intaleq مريحة وبدون قلق.\n\nإليك بعض المميزات الأساسية اللي تميزنا:", - "Sign In by Apple": "تسجيل الدخول باستخدام Apple", - "Sign In by Google": "تسجيل الدخول باستخدام Google", - "How do I request a ride?": "شلون أطلب مشوار؟", + "انطلق تطبيق مشاوير مصمم لأمانك وميزانيتك. نوصلك بكباتن ثقة.", + "Sign In by Apple": "دخول بـ Apple", + "Sign In by Google": "دخول بـ Google", + "How do I request a ride?": "كيف أطلب مشوار؟", "Step-by-step instructions on how to request a ride through the Intaleq app.": - "تعليمات خطوة بخطوة عن كيفية طلب مشوار من خلال تطبيق Intaleq.", - "What types of vehicles are available?": - "إيش أنواع السيارات المتاحة؟", + "خطوات طلب مشوار بتطبيق انطلق.", + "What types of vehicles are available?": "وش أنواع السيارات؟", "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": - "Intaleq يقدم لك اختيارات متنوعة للسيارات تناسب احتياجاتك، منها اقتصادي ومريح وفاخر. اختار اللي يناسب ميزانيتك وعدد الركاب.", - "How can I pay for my ride?": "شلون أدفع ثمن المشوار؟", + "نوفر خيارات كثيرة مثل الاقتصادية والمريحة والفخمة.", + "How can I pay for my ride?": "كيف أدفع؟", "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": - "Intaleq يقدم لك طرق دفع متعددة لراحتك. اختار بين الدفع كاش أو ببطاقة الائتمان/الخصم وأنت تأكد المشوار.", - "Can I cancel my ride?": "ممكن ألغي المشوار؟", - "Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.": - "نعم، ممكن تلغي رحلتك في ظل ظروف معينة (مثل قبل تعيين السائق). اطلع على سياسة الإلغاء في Intaleq للحصول على التفاصيل.", - "Driver Registration & Requirements": "تسجيل السائقين والمتطلبات", - "How can I register as a driver?": "كيف ممكن أسجل كسائق؟", - "What are the requirements to become a driver?": - "ما هي المتطلبات عشان أصير سائق؟", + "تقدر تدفع كاش أو بالبطاقة.", + "Can I cancel my ride?": "أقدر ألغي المشوار؟", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "إيه، بس يمكن فيه رسوم إلغاء.", + "Driver Registration & Requirements": "تسجيل الكباتن", + "How can I register as a driver?": "كيف أسجل كابتن؟", + "What are the requirements to become a driver?": "وش الشروط؟", "Visit our website or contact Intaleq support for information on driver registration and requirements.": - "تفضل بزيارة موقعنا الإلكتروني أو اتصل بدعم Intaleq للحصول على معلومات حول تسجيل السائقين والمتطلبات.", - + "زور موقعنا أو كلم الدعم.", "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": - "Intaleq يوفر ميزة الدردشة داخل التطبيق عشان يسمح لك تتواصل مع سائقك أو راكبك أثناء الرحلة.", - + "عندنا شات داخل التطبيق.", "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": - "Intaleq يعطي أهمية كبيرة لسلامتك. نقدم ميزات مثل التحقق من هوية السائق، وتتبع الرحلات داخل التطبيق، وخيارات الاتصال في حالات الطوارئ.", + "سلامتك تهمنا. نتحقق من الكباتن وعندنا تتبع للمشوار.", "Frequently Questions": "الأسئلة الشائعة", "User does not exist.": "المستخدم مو موجود.", "We need your phone number to contact you and to help you.": - "نحتاج رقم تلفونك عشان نتصل فيك ونساعدك", - "You will recieve code in sms message": "راح تستلم رمز في رسالة SMS", - "Please enter": "يرجى إدخال", + "نحتاج رقمك للتواصل.", + "You will recieve code in sms message": "بيجيك كود في رسالة", + "Please enter": "الرجاء إدخال", "We need your phone number to contact you and to help you receive orders.": - "نحتاج رقم تلفونك عشان نتصل فيك ونساعدك تستقبل الطلبات.", - "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": - "الاسم الكامل في سجلك الجنائي ما يطابق الاسم اللي في رخصة القيادة الخاصة بك. يرجى التحقق وتقديم الوثائق الصحيحة.", - "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": - "الرقم الوطني في رخصة القيادة الخاصة بك ما يطابق الرقم اللي في وثيقة الهوية الخاصة بك. يرجى التحقق وتقديم الوثائق الصحيحة.", - "Capture an Image of Your Criminal Record": "صور سجلك الجنائي", + "نحتاج رقمك عشان تستقبل طلبات.", + "The full name on your criminal record does not match the one on your driver's license. Please verify and provide the correct documents.": + "الاسم في خلو السوابق ما يطابق الرخصة.", + "The national number on your driver's license does not match the one on your ID document. Please verify and provide the correct documents.": + "رقم الهوية في الرخصة ما يطابق الهوية.", + "Capture an Image of Your Criminal Record": "صور صحيفة خلو السوابق", "IssueDate": "تاريخ الإصدار", - "Capture an Image of Your car license front ": - "صور الواجهة الأمامية لرخصة سيارتك", - "Capture an Image of Your ID Document front": - "صور الواجهة الأمامية لوثيقة هويتك", - "NationalID": "الرقم القومي", + "Capture an Image of Your car license front": + "صور استمارة السيارة (وجه)", + "Capture an Image of Your ID Document front": "صور الهوية (وجه)", + "NationalID": "رقم الهوية/الإقامة", "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": - "ممكن تشارك تطبيق Intaleq مع أصدقائك وتربح مكافآت من الرحلات اللي يسوونها باستخدام كودك.", + "شارك التطبيق مع ربعك واكسب مكافآت.", "FullName": "الاسم الكامل", - "No invitation found yet!": "ما فيه دعوات للحين!", + "No invitation found yet!": "ما فيه دعوات!", "InspectionResult": "نتيجة الفحص", - "Criminal Record": "السجل الجنائي", - "Share App": "شارك التطبيق", + "Criminal Record": "خلو السوابق", "The email or phone number is already registered.": - "البريد الإلكتروني أو رقم التلفون مسجل بالفعل.", + "الإيميل أو الرقم مسجل.", "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": - "عشان تصير سائق مشاركة ركوب في تطبيق Intaleq، لازم تحمل رخصة القيادة الخاصة بك، وثيقة الهوية، ووثيقة تسجيل السيارة. نظام الذكاء الاصطناعي الخاص بنا راح يراجع ويتحقق من صحة الوثائق في غضون 2-3 دقائق فقط. إذا الوثائق الخاصة بك اتقبلت، ممكن تبدأ تشتغل كسائق في تطبيق Intaleq. يرجى الملاحظة، تقديم وثائق مزورة يعتبر جريمة خطيرة وممكن يترتب عليها إنهاء الحساب فورا وعواقب قانونية.", - "Documents check": "فحص الوثائق", + "عشان تصير كابتن، ارفع رخصتك والهوية والاستمارة. النظام بيراجعها بسرعة.", + "Documents check": "فحص المستندات", "Driver's License": "رخصة القيادة", "for your first registration!": "لتسجيلك الأول!", - "Get it Now!": "احصل عليه الحين!", + "Get it Now!": "خذها الحين!", "before": "قبل", - "Code not approved": "الرمز مو مقبول", - "3000 LE": "3000 جنيه مصري", + "Code not approved": "الكود مرفوض", + "3000 LE": "3000 ر.س", "Do you have an invitation code from another driver?": - "عندك كود دعوة من سائق ثاني؟", - "Paste the code here": "الصق الكود هنا", - "No, I don't have a code": "لا، ما عندي كود", - "Code approved": "تمت الموافقة على الكود", - "Install our app:": "ثبت تطبيقنا:", + "عندك كود دعوة من كابتن ثاني؟", + "Paste the code here": "الصق الكود", + "No, I don't have a code": "لا، ما عندي", + "Code approved": "الكود مقبول", + "Install our app:": "حمل تطبيقنا:", "Invite another driver and both get a gift after he completes 100 trips!": - "ادع صديق عشان يصير سائق واثنينكم تحصلون على هدية بعد ما يكمل 100 مشوار!", + "ادع كابتن ثاني ولكم هدية بعد 100 مشوار!", "Invite": "دعوة", "Are you sure?": "متأكد؟", "This will delete all recorded files from your device.": - "هذا راح يحذف كل الملفات المسجلة من جهازك.", - "Select a file": "اختار ملف", - "Select a File": "اختار ملف", + "هذا بيحذف كل الملفات.", + "Select a file": "اختر ملف", + "Select a File": "اختر ملف", "Delete": "حذف", - "attach audio of complain": "أرفق صوت الشكوى", - "Phone Number Check": "فحص رقم الهاتف", - "Drivers received orders": "السائقون استقبلوا الطلبات", - "No audio files recorded.": "ما فيه ملفات صوتية مسجلة.", - "This is for delivery or a motorcycle.": - "هذا للتوصيل أو للدراجة النارية.", - // "We will look for a new driver.\nPlease wait.": - // "سوف نبحث عن سائق جديد.\nيرجى الانتظار", - "Intaleq Reminder": "تذكير Intaleq", - "It's time to check the Intaleq app!": - "حان وقت استخدام تطبيق Intaleq", - "you must insert token code": "لازم تدخل رمز التحقق.", + "attach audio of complain": "أرفق صوت للشكوى", + "Phone Number Check": "تحقق من الرقم", + "Drivers received orders": "الكباتن استلموا الطلبات", + "No audio files recorded.": "ما في تسجيلات.", + "This is for delivery or a motorcycle.": "هذا للتوصيل أو دباب.", + "Intaleq Reminder": "تذكير انطلق", + "It's time to check the Intaleq app!": "وقت تشيك على انطلق!", + "you must insert token code": "لازم تدخل الرمز", "Something went wrong. Please try again.": - "حدث خطأ ما. يرجى المحاولة مرة ثانية.", - "Trip Details": "تفاصيل الرحلة", + "صار شي غلط. حاول مرة ثانية.", + "Trip Details": "تفاصيل المشوار", "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": - "السياق ما يوفر تفاصيل الشكوى، عشان كذا ما أقدر أقدم حل لهالمشكلة. يرجى تقديم المعلومات اللازمة، وراح أكون سعيد أساعدك", - "Submit Your Complaint": "أرسل شكواك", - "Date": "التاريخ", - "Price": "السعر", + "ما في تفاصيل للشكوى. زودنا بالمعلومات لاهنت.", + "Submit Your Complaint": "قدم شكوتك", "Status": "الحالة", - "Choose from contact": "اختار من جهات الاتصال", - "attach correct audio": "أرفق صوت الشكوى الصحيح", + "Choose from contact": "اختر من الأسماء", + "attach correct audio": "أرفق صوت صحيح", "be sure": "تأكد", - "Audio uploaded successfully.": "تم رفع الصوت بنجاح", + "Audio uploaded successfully.": "تم رفع الصوت.", "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": - "مثالي للركاب اللي يبحثون عن أحدث موديلات السيارات مع حرية اختيار أي طريق يبغونه", + "مثالي للي يبون سيارات جديدة وحرية اختيار الطريق", "Share this code with your friends and earn rewards when they use it!": - "شارك هالكود مع أصدقائك واحصل على مكافآت لما يستخدمونه!", - "Enter phone": "أدخل رقم الهاتف", - "You deserve the gift": "أنت تستحق الهدية", - "complete, you can claim your gift": " ممكن تطالب بهديتك", - "When": "عندما يكمل", - "Enter driver's phone": "أدخل رقم هاتف السائق", - "Send Invite": "أرسل الدعوة", + "شارك الكود واكسب!", + "Enter phone": "دخل الرقم", + "complete, you can claim your gift": "اكتمل، اطلب هديتك", + "When": "متى", + "Enter driver's phone": "رقم الكابتن", + "Send Invite": "إرسال دعوة", "Show Invitations": "عرض الدعوات", "License Type": "نوع الرخصة", - "National Number": "الرقم الوطني", - "Name (Arabic)": "الاسم بالعربي", - "Name (English)": "الاسم بالإنجليزية", + "National Number": "رقم الهوية", + "Name (Arabic)": "الاسم (عربي)", + "Name (English)": "الاسم (إنجليزي)", "Address": "العنوان", "Issue Date": "تاريخ الإصدار", "Expiry Date": "تاريخ الانتهاء", "License Categories": "فئات الرخصة", - "driver_license": "رخصة القيادة", - "Capture an Image of Your Driver License": "صور رخصة قيادتك", - "ID Documents Back": "الوجه الخلفي لوثائق الهوية", - "National ID": "البطاقة الوطنية", + "driver_license": "رخصة_قيادة", + "Capture an Image of Your Driver License": "صور رخصتك", + "ID Documents Back": "ظهر الهوية", + "National ID": "رقم الهوية", "Occupation": "المهنة", - "Gender": "الجنس", "Religion": "الديانة", - "Marital Status": "الحالة الاجتماعية", - "Full Name (Marital)": "الاسم الكامل (حسب الحالة الاجتماعية)", + "Full Name (Marital)": "الاسم الكامل", "Expiration Date": "تاريخ الانتهاء", - "Capture an Image of Your ID Document Back": - "صور الوجه الخلفي لوثيقة الهوية الخاصة بك", - "ID Documents Front": "الوجه الأمامي لوثائق الهوية", + "Capture an Image of Your ID Document Back": "صور ظهر الهوية", + "ID Documents Front": "وجه الهوية", "First Name": "الاسم الأول", "CardID": "رقم البطاقة", - "Vehicle Details Front": "تفاصيل المركبة ‏الوجه الأمامية", + "Vehicle Details Front": "تفاصيل المركبة (أمام)", "Plate Number": "رقم اللوحة", "Owner Name": "اسم المالك", - "Vehicle Details Back": "تفاصيل المركبة ‏الوجه الخلفي", - "Make": "المصنع", - "Model": "الطراز", + "Vehicle Details Back": "تفاصيل المركبة (خلف)", + "Make": "الشركة المصنعة", + "Model": "الموديل", "Year": "السنة", - "Chassis": "الشاسيه", + "Chassis": "رقم الشاصي", "Color": "اللون", - "Displacement": "السعة", + "Displacement": "سعة المحرك", "Fuel": "الوقود", "Tax Expiry Date": "تاريخ انتهاء الضريبة", - "Inspection Date": "تاريخ الفحص", + "Inspection Date": "تاريخ الفحص الدوري", "Capture an Image of Your car license back": - "صور الوجه الخلفي لرخصة سيارتك", - "Capture an Image of Your Driver’s License": "صور رخصة قيادتك", + "صور استمارة السيارة (قفا)", + "Capture an Image of Your Driver's License": "صور رخصتك", "Sign in with Google for easier email and name entry": - "سجل دخولك باستخدام جوجل لتسجيل بريدك الإلكتروني واسمك بسهولة", + "ادخل بقوقل أسهل", "You will choose allow all the time to be ready receive orders": - "راح تختار السماح دايما عشان تكون جاهز لاستقبال الطلبات", - "Welcome to Intaleq!": "مرحبا بكم في Intaleq!", + "اختر 'السماح طوال الوقت' لاستقبال الطلبات", "Get to your destination quickly and easily.": - "وصول إلى وجهتك بسرعة وسهولة.", - "Enjoy a safe and comfortable ride.": "استمتع برحلة آمنة ومريحة.", + "وصل وجهتك بسرعة وسهولة.", + "Enjoy a safe and comfortable ride.": "استمتع بمشوار آمن ومريح.", "Choose Language": "اختر اللغة", - "Login": "تسجيل الدخول", - "Pay with Wallet": "ادفع باستخدام المحفظة", - "Invalid MPIN": "رمز PIN غير صحيح", - "Invalid OTP": "كود التحقق خاطئ", - // "Driver Accepted the Ride for You": "السائق قبل الرحلة لك", - "Enter your email address": "أدخل عنوان بريدك الإلكتروني", - "Please enter Your Email.": "يرجى إدخال بريدك الإلكتروني.", - "Enter your phone number": "أدخل رقم هاتفك", - "Please enter your phone number.": "يرجى إدخال رقم هاتفك.", - "Please enter Your Password.": "يرجى إدخال كلمة المرور.", + "Pay with Wallet": "ادفع بالمحفظة", + "Invalid MPIN": "رمز خطأ", + "Invalid OTP": "كود غلط", + "Enter your email address": "دخل إيميلك", + "Please enter Your Email.": "دخل الإيميل لاهنت.", + "Enter your phone number": "دخل رقمك", + "Please enter your phone number.": "دخل رقم الجوال.", + "Please enter Your Password.": "دخل كلمة المرور.", "if you dont have account": "إذا ما عندك حساب", "Register": "تسجيل", - "Accept Ride's Terms & Review Privacy Notice": - "قبول شروط الاستخدام ومراجعة إشعار الخصوصية", + "Accept Ride's Terms & Review Privacy Notice": "الموافقة على الشروط", "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": - "من خلال اختيار 'أوافق' أدناه، قمت بمراجعة وقبول شروط الاستخدام وأقر بإشعار الخصوصية. أنا عمري 18 سنة على الأقل.", - "I Agree": "أوافق", - // "Finish Monitor": " إنهاء مراقبة الرحلة ", + "باختيار 'أوافق'، أقر بأني قريت الشروط وعمري 18 وفوق.", "First name": "الاسم الأول", - "Enter your first name": "أدخل اسمك الأول", - "Please enter your first name.": "يرجى إدخال اسمك الأول.", + "Enter your first name": "دخل اسمك", + "Please enter your first name.": "دخل الاسم الأول.", "Last name": "اسم العائلة", - "Enter your last name": "أدخل اسمك الأخير", - "Please enter your last name.": "يرجى إدخال اسمك الأخير.", + "Enter your last name": "دخل اسم العائلة", + "Please enter your last name.": "دخل اسم العائلة.", "City": "المدينة", - "Please enter your City.": "يرجى إدخال اسم مدينتك.", - "Male": "ذكر", - "Female": "أنثى", - "Verify Email": "تحقق من البريد الإلكتروني", - "We sent 5 digit to your Email provided": - "لقد أرسلنا رمزًا مؤلفًا من 5 أرقام إلى بريدك الإلكتروني المدخل", + "Please enter your City.": "دخل مدينتك.", + "Verify Email": "تأكيد الإيميل", + "We sent 5 digit to your Email provided": "أرسلنا 5 أرقام لإيميلك", "5 digit": "5 أرقام", - "Send Verification Code": "إرسال رمز التحقق", - "Your Ride Duration is ": "مُدَّة رِحْلَتِكَ ", - "You will be thier in": "راح تكون هناك في", - "You trip distance is": "مَسَافَة الرِّحْلَة", - "Fee is": "الرُّسُوم", - "From : ": "مِنْ: ", - "To : ": "إِلَى: ", - "Add Promo": "إضَافَة بَرُومُو", - "Confirm Selection": "تَأْكِيد الاخْتِيَار", - "distance is": "المَسَافَة", - - "Intaleq LLC": "شركة Intaleq", - "Egypt's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": - "أول خدمة مشاركة ركوب في مصر، تم تطويرها بفخر من قبل مالكين عرب ومحليين. نركز على أن نكون قريبين منك - سواء كنت راكبًا قيمًا أو قائدًا مخلصًا.", - "Why Choose Intaleq?": "ليش تختار Intaleq؟", - "Closest to You": "الأقرب إليك", + "Send Verification Code": "أرسل كود التحقق", + "Your Ride Duration is ": "مدة المشوار: ", + "You will be thier in": "بتوصل خلال", + "You trip distance is": "مسافة المشوار:", + "Fee is": "السعر:", + "From : ": "من: ", + "To : ": "إلى: ", + "Add Promo": "ضيف خصم", + "Confirm Selection": "تأكيد الاختيار", + "distance is": "المسافة هي", + "Privacy Policy": "سياسة الخصوصية", + "Intaleq LLC": "شركة انطلق", + "Syria's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "خدمة مشاركة مشاوير رائدة في الخليج.", + "Intaleq is the first ride-sharing app in Syria, designed to connect you with the nearest drivers for a quick and convenient travel experience.": + "انطلق يوصلك بأقرب الكباتن.", + "Why Choose Intaleq?": "ليش انطلق؟", + "Closest to You": "الأقرب لك", "We connect you with the nearest drivers for faster pickups and quicker journeys.": - "نربطك بأقرب السائقين لضمان وصول سريع ورحلات أسرع.", - "Uncompromising Security": "أعلى مستويات الأمان", - "Lady Captains Available": "قائدات سيارات متاحات", - "Recorded Trips (Voice & AI Analysis)": - "الرحلات المسجلة (تحليل صوتي بالذكاء الاصطناعي)", - "Fastest Complaint Response": "أسرع استجابة للشكاوى", + "نوصلك بأقرب كباتن عشان ما تتأخر.", + "Uncompromising Security": "أمان تام", + "Lady Captains Available": "كباتن سيدات", + "Recorded Trips (Voice & AI Analysis)": "مشاوير مسجلة", + "Fastest Complaint Response": "استجابة سريعة للشكاوى", "Our dedicated customer service team ensures swift resolution of any issues.": - "فريق خدمة العملاء لدينا يضمن حل أي مشكلة بسرعة.", - "Affordable for Everyone": "في متناول الجميع", - "Frequently Asked Questions": "الأسئلة الشائعة", - "Getting Started": "البدء", - + "فريقنا يحل مشاكلك بسرعة.", + "Affordable for Everyone": "أسعار تناسب الكل", + "Frequently Asked Questions": "الأسئلة المتكررة", + "Getting Started": "البداية", "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": - "افتح تطبيق Intaleq، وأدخل وجهتك، واضغط على \"طلب رحلة\". راح يقوم التطبيق بتوصيلك بأقرب سائق.", - "Vehicle Options": "خيارات المركبات", - + "افتح التطبيق، حدد وجهتك، واطلب المشوار.", + "Vehicle Options": "خيارات السيارات", "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": - "Intaleq يوفر مجموعة متنوعة من الخيارات بما في ذلك الاقتصادية، المريحة، والفاخرة لتلبية احتياجاتك وميزانيتك.", - "Payments": "المدفوعات", - + "نوفر خيارات تناسبك.", + "Payments": "الدفع", "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": - "ممكن تدفع ثمن مشوارك كاش أو ببطاقة الائتمان/الخصم. تقدر تختار طريقة الدفع اللي تفضلها قبل ما تأكد مشوارك.", - "Ride Management": "إدارة الرحلات", - + "ادفع كاش أو بطاقة.", + "Ride Management": "إدارة المشاوير", "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": - "أيوة، ممكن تلغي مشوارك، بس يرجى ملاحظة إن فيه رسوم إلغاء ممكن تتطبق على حسب الوقت اللي تلغي فيه قبلها بقد إيش.", - "For Drivers": "للسواقين", - // "Driver Registration & Requirements": "تسجيل ومتطلبات السواقين", - "Driver Registration": "تسجيل السواق", + "تقدر تلغي، بس يمكن فيه رسوم.", + "For Drivers": "للكباتن", + "Driver Registration": "تسجيل الكابتن", "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": - "عشان تسجل كسواق أو تعرف المتطلبات، يرجى زيارة موقعنا الإلكتروني أو الاتصال بدعم Intaleq مباشرةً.", - "Visit Website/Contact Support": "زيارة الموقع/الاتصال بالدعم", + "للتسجيل زر موقعنا.", + "Visit Website/Contact Support": "الموقع / الدعم", "Close": "إغلاق", - "We are searching for the nearest driver": "بندور على أقرب سواق", + "We are searching for the nearest driver": "ندور أقرب كابتن", "Communication": "التواصل", "How do I communicate with the other party (passenger/driver)?": - "شلون أتواصل مع الطرف الثاني (الراكب/السواق)؟", + "كيف أتواصل؟", "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": - "ممكن تتواصل مع السواق أو الراكب من خلال خاصية الشات داخل التطبيق أول ما المشوار يتأكد.", - "Safety & Security": "الأمان والحماية", - "What safety measures does Intaleq offer?": - "إيش إجراءات الأمان اللي يقدمها Intaleq؟", + "عن طريق الشات في التطبيق.", + "Safety & Security": "الأمان", + "What safety measures does Intaleq offer?": "وش إجراءات الأمان؟", "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": - "Intaleq يقدم مميزات أمان متنوعة زي التحقق من السواق، تتبع الرحلة داخل التطبيق، خيارات الاتصال في حالات الطوارئ، وإمكانية مشاركة حالة رحلتك مع جهات اتصال موثوقة.", + "تحقق من الكابتن وتتبع المشوار.", "Enjoy competitive prices across all trip options, making travel accessible.": - "استمتع بأسعار تنافسية على كل خيارات الرحلات، وهذا يخلي الIntaleq سهل الوصول ليه.", - "Variety of Trip Choices": "خيارات رحلات متنوعة", + "أسعار منافسة.", + "Variety of Trip Choices": "خيارات متنوعة", "Choose the trip option that perfectly suits your needs and preferences.": - "اختار خيار الرحلة اللي يناسب احتياجاتك وتفضيلاتك بالضبط.", - "Your Choice, Our Priority": "اختيارك هو أولويتنا", + "اختر اللي يناسبك.", + "Your Choice, Our Priority": "اختيارك يهمنا", "Because we are near, you have the flexibility to choose the ride that works best for you.": - "عشان إحنا قراب، عندك المرونة تختار المشوار اللي يناسبك.", - "duration is": "المدة هي", - "Setting": "الإعدادات", - "Find answers to common questions": "اعثر على إجابات للأسئلة الشائعة", - "I don't need a ride anymore": "أنا مو محتاج مشوار ثاني", - "I was just trying the application": "كنت بجرب التطبيق بس", - "No driver accepted my request": "ما فيه سواق قبل الطلب بتاعي", - "I added the wrong pick-up/drop-off location": - "أنا ضفت مكان استلام/توصيل غلط", - "I don't have a reason": "ما لي سبب", - "Other": "أخرى", - "Can we know why you want to cancel Ride ?": - "ممكن نعرف ليش تبي تلغي المشوار؟", + "لك الحرية في الاختيار.", + "duration is": "المدة:", + "Setting": "إعدادات", + "Find answers to common questions": "إجابات الأسئلة", + "I don't need a ride anymore": "ما عاد أحتاج مشوار", + "I was just trying the application": "أجرب التطبيق بس", + "No driver accepted my request": "ماحد قبل طلبي", + "I added the wrong pick-up/drop-off location": "الموقع غلط", + "I don't have a reason": "ما عندي سبب", + "Can we know why you want to cancel Ride ?": "ليش تبي تلغي؟", "Cancel Ride": "إلغاء المشوار", - "Add Payment Method": "إضافة طريقة الدفع", - "Your Wallet balance is ": "رصيد محفظتك هو ", - "Ride Wallet": "محفظة الرحلة", + "Add Payment Method": "إضافة طريقة دفع", + "Ride Wallet": "محفظة المشوار", "Payment Method": "طريقة الدفع", - "Type here Place": "اكتب هنا المكان", - "Are You sure to ride to": "أنت متأكد إنك تبي تروح", + "Type here Place": "اكتب المكان", + "Are You sure to ride to": "متأكد تبي تروح لـ", "Confirm": "تأكيد", - // "Back": "رجوع", - "You are Delete": "أنت على وشك الحذف", - "Deleted": "تم الحذف", - "You Dont Have Any places yet !": "للحين ما عندك أي أماكن!", - // "Favorite Places": "الأماكن المفضلة", - "From : Current Location": "من: الموقع الحالي", - // "Where to": "إلى أين", - "Profile": "الملف الشخصي", - "Home": "الصفحة الرئيسية", + "You are Delete": "أنت بتحذف", + "Deleted": "انحذف", + "You Dont Have Any places yet !": "ما عندك أماكن!", + "From : Current Location": "من: موقعك الحالي", "My Cared": "بطاقاتي", "Add Card": "إضافة بطاقة", "Add Credit Card": "إضافة بطاقة ائتمان", - "Please enter the cardholder name": "يرجى إدخال اسم حامل البطاقة", - "Please enter the expiry date": "يرجى إدخال تاريخ انتهاء الصلاحية", - "Please enter the CVV code": "يرجى إدخال رمز CVV", - "Go To Favorite Places": "الذهاب إلى الأماكن المفضلة", - "Go to this Target": "الذهاب إلى هذا الهدف", - "My Profile": "ملفي الشخصي", - "Sign Out": "تسجيل الخروج", - "Are you want to go to this site": "هل ترغب في الذهاب إلى هذا الموقع", + "Please enter the cardholder name": "اسم صاحب البطاقة", + "Please enter the expiry date": "تاريخ الانتهاء", + "Please enter the CVV code": "كود CVV", + "Go To Favorite Places": "للأماكن المفضلة", + "Go to this Target": "روح للهدف", + "My Profile": "ملفي", + "Are you want to go to this site": "تبي تروح هنا؟", "MyLocation": "موقعي", "my location": "موقعي", - "Target": "هدف", - "Update": "تحديث", - "You Should choose rate figure": "يجب عليك اختيار تقييم", - "Login Captin": "تسجيل دخول الكابتن", - "Register Captin": "تسجيل كابتن جديد", - "Send Verfication Code": "إرسال رمز التحقق", + "Target": "الهدف", + "You Should choose rate figure": "لازم تختار تقييم", + "Login Captin": "دخول الكابتن", + "Register Captin": "تسجيل كابتن", + "Send Verfication Code": "أرسل الرمز", "KM": "كم", - "End Ride": "إنهاء الرحلة", + "End Ride": "إنهاء المشوار", "Minute": "دقيقة", - "Go to passenger Location now": "اذهب إلى موقع الراكب الآن", - "Duration of the Ride is ": "مدة الرحلة هي ", - "Distance of the Ride is ": "المسافة للرحلة هي", - "Name of the Passenger is ": "اسم الراكب هو", - "Hello this is Captain": "مرحباً، أنا الكابتن", - "Start the Ride": "بدء الرحلة", - "Please Wait If passenger want To Cancel!": - "الرجاء الانتظار إذا أراد الراكب الإلغاء!", - "Total Duration:": "المدة الإجمالية:", + "Go to passenger Location now": "رح لموقع الراكب الحين", + "Duration of the Ride is ": "مدة المشوار: ", + "Distance of the Ride is ": "مسافة المشوار: ", + "Name of the Passenger is ": "اسم الراكب: ", + "Hello this is Captain": "هلا، معك الكابتن", + "Start the Ride": "ابدأ المشوار", + "Please Wait If passenger want To Cancel!": "انتظر يمكن الراكب يلغي!", + "Total Duration:": "المدة الكلية:", "Active Duration:": "المدة الفعلية:", - "Waiting for Captin ...": "في انتظار الكابتن...", - "Age is ": "العمر هو", - "Rating is ": "التقييم هو", - " to arrive you.": "للوصول إليك.", - - "Tariff": "تعريفة", + "Waiting for Captin ...": "بانتظار الكابتن...", + "Age is ": "العمر: ", + "Rating is ": "التقييم: ", + " to arrive you.": " عشان يوصلك.", + "Tariff": "التعرفة", "Settings": "الإعدادات", - "Feed Back": "اقتراحات", - + "Feed Back": "رأيك", "Please enter a valid 16-digit card number": - "يرجى إدخال رقم بطاقة صالح مكون من 16 رقم", - "Add Phone": "إضافة هاتف", - "Please enter a phone number": "يرجى إدخال رقم هاتف", - "You dont Add Emergency Phone Yet!": "للحين ما ضفت رقم هاتف طوارئ!", - "You will arrive to your destination after ": "راح توصل وجهتك بعد", - "You can cancel Ride now": "ممكن تلغي المشوار الحين", + "دخل رقم بطاقة صح (16 رقم)", + "Add Phone": "إضافة رقم", + "Please enter a phone number": "دخل رقم جوال", + "You dont Add Emergency Phone Yet!": "ما ضفت رقم طوارئ!", + "You will arrive to your destination after ": "بتوصل بعد ", + "You can cancel Ride now": "تقدر تلغي الحين", "You Can cancel Ride After Captain did not come in the time": - "ممكن تلغي المشوار بعد ما الكابتن ما يوصل في الوقت المحدد", + "تقدر تلغي إذا تأخر الكابتن", "If you in Car Now. Press Start The Ride": - "إذا أنت في السيارة الحين. اضغط على بدء الرحلة", - "You Dont Have Any amount in": "ما عندك أي مبلغ في", + "إذا ركبت، اضغط ابدأ المشوار", + "You Dont Have Any amount in": "ما عندك رصيد في", "Wallet!": "المحفظة!", - "You Have": "لديك", - "Save Credit Card": "حفظ بطاقة الائتمان", - "Show Promos": "إظهار العروض الترويجية", - "10 and get 4% discount": "10 واحصل على خصم 4%", - "20 and get 6% discount": "20 واحصل على خصم 6%", - "40 and get 8% discount": "40 واحصل على خصم 8%", - "100 and get 11% discount": "100 واحصل على خصم 11%", - "Pay with Your PayPal": "ادفع باستخدام PayPal", - "You will choose one of above !": "راح تختار واحد من اللي فوق!", - "Delete My Account": "حذف حسابي", - "Edit Profile": "تعديل الملف الشخصي", - "Name": "الاسم", - "Update Gender": "تحديث الجنس", - "Education": "التعليم", - "Update Education": "تحديث التعليم", - "Employment Type": "نوع التوظيف", - "SOS Phone": "هاتف الطوارئ", - "High School Diploma": "شهادة الثانوية العامة", - "Associate Degree": "درجة الدبلوم", - "Bachelor's Degree": "بكالوريوس", - "Master's Degree": "ماجستير", - "Doctoral Degree": "دكتوراه", - "Copy this Promo to use it in your Ride!": - "انسخ العرض هذا عشان تستخدمه في مشوارك!", - "To change some Settings": "لتغيير بعض الإعدادات", - "Order Request Page": "صفحة طلب الطلب", - "Rouats of Trip": "طرق الرحلة", - "Passenger Name is ": "اسم الراكب هو ", - "Total From Passenger is ": "المبلغ الإجمالي من الراكب هو ", - "Duration To Passenger is ": "المدة للوصول للراكب هي ", - "Distance To Passenger is ": "المسافة للوصول للراكب هي ", - "Total For You is ": "المبلغ الإجمالي ليك هو ", - "Distance is ": "المسافة هي ", - " KM": " كيلومتر", - "Duration of Trip is ": "مدة الرحلة هي ", + "You Have": "عندك", + "Save Credit Card": "حفظ البطاقة", + "Show Promos": "عرض الخصومات", + "10 and get 4% discount": "10 وخذ خصم 4%", + "20 and get 6% discount": "20 وخذ خصم 6%", + "40 and get 8% discount": "40 وخذ خصم 8%", + "100 and get 11% discount": "100 وخذ خصم 11%", + "Pay with Your PayPal": "ادفع بـ PayPal", + "You will choose one of above !": "اختر واحد من اللي فوق!", + "Edit Profile": "تعديل الملف", + "Copy this Promo to use it in your Ride!": "انسخ الكود واستخدمه!", + "To change some Settings": "لتغيير الإعدادات", + "Order Request Page": "صفحة الطلب", + "Rouats of Trip": "مسارات المشوار", + "Passenger Name is ": "اسم الراكب: ", + "Total From Passenger is ": "المجموع من الراكب: ", + "Duration To Passenger is ": "الوقت للراكب: ", + "Distance To Passenger is ": "المسافة للراكب: ", + "Total For You is ": "لك: ", + "Distance is ": "المسافة: ", + " KM": " كم", + "Duration of Trip is ": "مدة المشوار: ", " Minutes": " دقائق", "Apply Order": "قبول الطلب", "Refuse Order": "رفض الطلب", - "Rate Captain": "تقييم الكابتن", - "Enter your Note": "أدخل ملاحظتك", + "Rate Captain": "قيم الكابتن", + "Enter your Note": "اكتب ملاحظة", "Type something...": "اكتب شي...", "Submit rating": "إرسال التقييم", - "Rate Passenger": "تقييم الراكب", - "Ride Summary": "ملخص الرحلة", - "welcome_message": "مرحباً بك في Intaleq!", - "app_description": - "Intaleq هو تطبيق موثوق وآمن وسهل الوصول إليه لمشاركة الركوب.", - "get_to_destination": "اذهب إلى وجهتك بسرعة وسهولة.", - "get_a_ride": "مع Intaleq، تقدر تحصل على رحلة لوجهتك في دقايق.", - "safe_and_comfortable": "استمتع برحلة آمنة ومريحة.", - "committed_to_safety": - "Intaleq ملتزمة بالسلامة، وكل الكباتن عندنا يتم فحصهم زين ويتعمل لهم فحص خلفية.", - // "Driver Applied the Ride for You": "السواق طلب المشوار ليك", - // "Show latest promo": "أظهر آخر عرض ترويجي", - // "Cancel Trip": "إلغاء الرحلة", - // "Passenger Cancel Trip": "الراكب ألغى الرحلة", - // "Accepted Ride": "تم قبول الرحلة", - "your ride is Accepted": "تم قبول رحلتك", - - // "Trip is Begin": "بدأت الرحلة", - "Driver is waiting at pickup.": "السائق ينتظرك عند نقطة الاستلام.", - "Driver is on the way": "السائق في الطريق", - "Contact Options": "خيارات الاتصال", - "Send a custom message": "أرسل رسالة مخصصة", + "Rate Passenger": "قيم الراكب", + "Ride Summary": "ملخص المشوار", + "welcome_message": "أهلاً بك في انطلق!", + "app_description": "انطلق تطبيق آمن وموثوق.", + "get_to_destination": "وصل وجهتك بسرعة.", + "get_a_ride": "مع انطلق، الموتر يجيك بدقايق.", + "safe_and_comfortable": "استمتع بمشوار آمن.", + "committed_to_safety": "نهتم بسلامتك.", + "your ride is Accepted": "مشوارك انقبل", + "Driver is waiting at pickup.": "الكابتن ينتظرك عند نقطة الركوب.", + "Driver is on the way": "الكابتن بالطريق", + "Contact Options": "خيارات التواصل", + "Send a custom message": "أرسل رسالة", "Type your message": "اكتب رسالتك", - // "Hi ,I will go now": "مرحبا، أنا بتحرك الحين", - // "Passenger come to you": "الراكب جاي لك", - // "Hi ,I Arrive your site": "مرحبا، وصلت مكانك", - // "Driver Finish Trip": "السواق أنهى الرحلة", - // "you will pay to Driver": "بتدفع للسواق", - // "Driver Cancel Your Trip": "السواق ألغى رحلتك", - // "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": - // "بتدفع للسواق تكلفة وقته، شوف محفظتك في Intaleq", - // "I will go now": "أنا بتحرك الحين", - "You Have Tips": "عندك بقشيش", - " tips\nTotal is": " بقشيش\nالمجموع هو", - // "No,I want": "لا، أبي", - "Your fee is ": "الأجرة بتاعتك هي ", - // "Do you want to pay Tips for this Driver": - // "هل تريد دفع بقشيش للسواق هذا؟", - "Tip is ": " مبلغ البقشيش هو", - + "I will go now": "بمشي الحين", + "You Have Tips": "عندك إكرامية", + " tips\nTotal is": " إكرامية\nالمجموع", + "Your fee is ": "أجرتك: ", + "Do you want to pay Tips for this Driver": + "تبي تعطي الكابتن إكرامية؟", + "Tip is ": "الإكرامية: ", "Are you want to wait drivers to accept your order": - "تبي تنتظر لحد ما السواقين يقبلون طلبك؟", - + "تبي تنتظر الكباتن؟", "This price is fixed even if the route changes for the driver.": - "السعر هذا ثابت حتى لو المسار تغير للسواق.", + "السعر ثابت حتى لو تغير الطريق.", "The price may increase if the route changes.": - "احتمالية زيادة السعر عند تغيير المسار", + "ممكن يزيد السعر لو تغير الطريق.", "The captain is responsible for the route.": - "الكابتن مسؤول عن المسار", - "We are search for nearst driver": "بندور على أقرب سواق", - "Your order is being prepared": "جاري تجهيز الطلب بتاعك", - "The drivers are reviewing your request": "السواقين يدرسون طلبك", - "Your order sent to drivers": "تم إرسال طلبك للسواقين", - "You can call or record audio of this trip": - "ممكن تتصل أو تسجل صوت للرحلة هذه", + "الكابتن مسؤول عن الطريق.", + "We are search for nearst driver": "ندور أقرب كابتن", + "Your order is being prepared": "طلبك يتجهز", + "The drivers are reviewing your request": "الكباتن يشوفون طلبك", + "Your order sent to drivers": "أرسلنا طلبك للكباتن", + "You can call or record audio of this trip": "تقدر تتصل أو تسجل صوت", "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": - "بدأت الرحلة! براحتك تتصل بأرقام الطوارئ، تشارك رحلتك، أو تفعل التسجيل الصوتي للرحلة", - // "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": - // "الرجاء التأكد من جميع أغراضك الشخصية وإضافة باقي الأجرة في محفظتك قبل النزول. شكراً لاختيارك تطبيق Intaleq", - // "Don’t forget your personal belongings.": "لا تنسى متعلقاتك الشخصية.", - "Camera Access Denied.": "تم رفض الوصول للكاميرا.", + "بدأ المشوار! تقدر تكلم الطوارئ، تشارك رحلتك، أو تسجل صوت.", + "Camera Access Denied.": "ما في وصول للكاميرا.", "Open Settings": "افتح الإعدادات", - "GPS Required Allow !.": "تفعيل GPS مطلوب!", - "Your Account is Deleted": "تم حذف حسابك", - "Are you sure to delete your account?": - "أنت متأكد إنك تبي تحذف حسابك؟", + "GPS Required Allow !.": "شغل الـ GPS!", + "Your Account is Deleted": "انحذف حسابك", + "Are you sure to delete your account?": "متأكد تبي تحذف حسابك؟", "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": - "بياناتك راح تتمسح بعد أسبوعين\nوما راح تقدر ترجع تستخدم التطبيق ثاني بعد شهر", - "Enter Your First Name": "أدخل اسمك الأول", - "Are you Sure to LogOut?": "أنت متأكد إنك تبي تسجل الخروج؟", - "Email Wrong": "البريد الإلكتروني غلط", - "Email you inserted is Wrong.": "البريد الإلكتروني اللي أدخلته غلط.", - "You have finished all times ": "لقد استنفدت كل المحاولات", - "if you want help you can email us here": - "إذا تبي مساعدة ممكن تراسلنا إيميل هنا", + "بتمسح بياناتك بعد أسبوعين\nوما تقدر ترجع بعد شهر", + "Enter Your First Name": "دخل اسمك الأول", + "Are you Sure to LogOut?": "بتسجل خروج؟", + "Email Wrong": "الإيميل غلط", + "Email you inserted is Wrong.": "الإيميل اللي كتبته غلط.", + "You have finished all times ": "خلصت محاولاتك", + "if you want help you can email us here": "تبي مساعدة؟ راسلنا", "Thanks": "شكراً", - "Email Us": "راسلنا إيميل", + "Email Us": "راسلنا", "I cant register in your app in face detection ": - "مو قادر أسجل في تطبيقكم بسبب كشف الوجه", - "Hi": "مرحباً", - "No face detected": "لم يتم الكشف عن أي وجه", - "Image detecting result is ": "نتيجة الكشف عن الصورة هي", - "from 3 times Take Attention": "من 3 محاولات انتبه", + "مو قادر أسجل بسبب بصمة الوجه", + "Hi": "هلا", + "No face detected": "ما تعرفنا على الوجه", + "Image detecting result is ": "نتيجة الفحص: ", + "from 3 times Take Attention": "من 3 مرات، انتبه", "Be sure for take accurate images please\nYou have": - "الرجاء التأكد من التقاط صور دقيقة\nعندك", - "image verified": "الصورة موثقة", + "تأكد إن الصورة واضحة\nعندك", + "image verified": "الصورة تمام", "Next": "التالي", - "There is no help Question here": "ما فيه أسئلة مساعدة هنا", - + "There is no help Question here": "ما في سؤال مساعدة", "You dont have Points": "ما عندك نقاط", - "You Are Stopped For this Day !": "تم توقيفك لهاليوم!", - "You must be charge your Account": "يجب إعادة شحن رصيد النقاط", + "You Are Stopped For this Day !": "توقفت اليوم!", + "You must be charge your Account": "لازم تشحن حسابك", "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": - "رفضت 3 رحلات اليوم وهذا السبب\nنلتقي باكر!", - "Recharge my Account": "ادفع رسوم من حسابي", - "Ok , See you Tomorrow": "تمام، نلتقي باكر", - "You are Stopped": "تم توقيفك", + "رفضت 3 مشاوير اليوم.\nنشوفك بكره!", + "Recharge my Account": "شحن حسابي", + "Ok , See you Tomorrow": "تمام، أشوفك بكره", + "You are Stopped": "أنت موقوف", "Connected": "متصل", "Not Connected": "غير متصل", - "Your are far from passenger location": "أنت بعيد عن مكان الراكب", + "Your are far from passenger location": "أنت بعيد عن الراكب", "go to your passenger location before\nPassenger cancel trip": - "اذهب إلى مكان الراكب قبل ما\nيلغي الراكب الرحلة", - "You will get cost of your work for this trip": - "راح تحصل على تكاليف عملك لهذه الرحلة", - " in your wallet": "في محفظتك", - "you gain": "ربحت", - - "Order Cancelled by Passenger": "تم إلغاء الطلب من قبل الراكب", - "Success": "نجاح", - "Feedback data saved successfully": "تم حفظ بيانات التعليقات بنجاح", - "No Promo for today .": "ما فيه عروض ترويجية اليوم.", - "Select your destination": "اختار وجهتك", - "Search for your Start point": "ابحث عن نقطة الانطلاق", - "Search for waypoint": "ابحث عن النقطة الآلية", + "رح لموقع الراكب قبل يكنسل", + "You will get cost of your work for this trip": "بتاخذ حق مشوارك", + " in your wallet": " بمحفظتك", + "you gain": "كسبت", + "Order Cancelled by Passenger": "الطلب تكنسل من الراكب", + "Feedback data saved successfully": "حفظنا تقييمك", + "No Promo for today .": "ما في عروض اليوم.", + "Select your destination": "اختر وجهتك", + "Search for your Start point": "ابحث عن نقطة البداية", + "Search for waypoint": "ابحث عن نقطة توقف", "Current Location": "الموقع الحالي", - "Add Location 1": "إضافة الموقع 1", - "You must Verify email !.": "يجب التحقق من البريد الإلكتروني!", - "Cropper": "القاصة", - "Saved Sucssefully": "تم الحفظ بنجاح", + "Add Location 1": "إضافة موقع 1", + "You must Verify email !.": "لازم تأكد الإيميل!", + "Cropper": "قص الصورة", + "Saved Sucssefully": "تم الحفظ", "Select Date": "اختر التاريخ", "Birth Date": "تاريخ الميلاد", - "Ok": "موافق", - "the 500 points equal 30 JOD": "الـ 500 نقطة تساوي 30 دينار أردني", + "Ok": "تم", + "the 500 points equal 30 JOD": "الـ 500 نقطة تساوي 30 ر.س", "the 500 points equal 30 JOD for you \nSo go and gain your money": - "الـ 500 نقطة تساوي 30 دينار أردني\nفاستحق فلوسك واكسب النقاط", - "token updated": "تم تحديث الرمز", - "Add Location 2": "إضافة الموقع 2", - "Add Location 3": "إضافة الموقع 3", - "Add Location 4": "إضافة الموقع 4", - "Waiting for your location": "في انتظار موقعك", + "الـ 500 نقطة بـ 30 ر.س لك\nروح اكسب فلوسك", + "token updated": "تحدث الرمز", + "Add Location 2": "إضافة موقع 2", + "Add Location 3": "إضافة موقع 3", + "Add Location 4": "إضافة موقع 4", + "Waiting for your location": "ننتظر موقعك", "Search for your destination": "ابحث عن وجهتك", - "Hi! This is": "مرحباً! أنا", - " I am using": " أنا أستخدم", - " to ride with": " للركوب مع", - " as the driver.": " كسائق.", - "is driving a ": "يقود", - " with license plate ": "بلوحة ترخيص", - " I am currently located at ": "أنا حالياً في", - "Please go to Car now ": "الرجاء التحرك إلى السيارة الآن", + "Hi! This is": "هلا! هذا", + " I am using": " أنا استخدم", + " to ride with": " عشان اركب مع", + " as the driver.": " ككابتن.", + "is driving a ": "يسوق ", + " with license plate ": " لوحتها ", + " I am currently located at ": " أنا حالياً في ", + "Please go to Car now ": "روح للسيارة الحين", "You will receive a code in WhatsApp Messenger": - "سوف تتلقى رمزًا في واتساب ماسنجر", - "If you need assistance, contact us": - "إذا كنت بحاجة إلى المساعدة، تواصل معنا", + "بيجيك كود ع الواتساب", + "If you need assistance, contact us": "تحتاج مساعدة؟ كلمنا", "Promo Ended": "انتهى العرض", - "Enter the promo code and get": "أدخل رمز الترويج واحصل على", + "Enter the promo code and get": "دخل الكود واحصل على", "DISCOUNT": "خصم", - "No wallet record found": "لم يتم العثور على سجل محفظة", - "for": "لمدة", + "No wallet record found": "ما لقينا سجل للمحفظة", + "for": "لـ", "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": - "Intaleq هو أكثر تطبيق آمن لمشاركة الركوب ويقدم مميزات كثيرة للكباتن والركاب. إحنا نقدم أقل نسبة عمولة وهي 8% بس، وهذا يضمن إنك تاخذ أحسن قيمة لمشاويرك. تطبيقنا فيه تأمين لأحسن الكباتن، صيانة دورية للسيارات مع أحسن المهندسين، وخدمات على الطريق لضمان تجربة محترمة وعالية الجودة لكل المستخدمين.", + "انطلق أأمن تطبيق مشاوير بميزات كثيرة. عمولتنا 8% بس. عندنا تأمين وصيانة.", "You can contact us during working hours from 12:00 - 19:00.": - "ممكن تتصل بينا في مواعيد العمل من الساعة 12:00 للساعة 7:00 مساءً.", - - "Choose a contact option": "اختر طريقة الاتصال", + "كلمناه من 12 لـ 7.", + "Choose a contact option": "اختر طريقة تواصل", "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": - "مواعيد العمل من الساعة 12:00 للساعة 7:00 مساءً.\nممكن تبعت رسالة واتساب أو إيميل.", - "Promo code copied to clipboard!": "تم نسخ رمز العرض إلى الحافظة!", - "Copy Code": "نسخ الرمز", - "Your invite code was successfully applied!": - "تم تطبيق رمز الدعوة بنجاح!", + "الدوام من 12 لـ 7.\nأرسل واتساب أو إيميل.", + "Promo code copied to clipboard!": "نسخت الكود!", + "Copy Code": "نسخ الكود", + "Your invite code was successfully applied!": "تم تطبيق كود الدعوة!", "Payment Options": "خيارات الدفع", - "wait 1 minute to receive message": - "انتظر دقيقة واحدة لاستلام الرسالة", - "Promo Copied!": "تم نسخ العرض!", - "You have copied the promo code.": "تم نسخ رمز العرض.", - "Valid Until:": "صالح حتى:", - "Select Payment Amount": "اختر مبلغ الدفع", - "The promotion period has ended.": "انتهت فترة العرض.", - "Promo Code Accepted": "تم قبول كود العرض", - "Tap on the promo code to copy it!": "اضغط على رمز العرض لنسخه!", - "Lowest Price Achieved": "تم الوصول إلى أقل سعر", - "Cannot apply further discounts.": - "لا يمكن تطبيق المزيد من الخصومات.", - "Promo Already Used": "تم استخدام كود العرض بالفعل", - "Invitation Used": "تم استخدام الدعوة", - "You have already used this promo code.": - "لقد استخدمت هذا الكود بالفعل.", - "Insert Your Promo Code": "أدخل كود العرض الخاص بك", - "Enter promo code here": "أدخل كود العرض هنا", - "Please enter a valid promo code": "يرجى إدخال كود عرض صالح", - "Awfar Car": "أوفر كار", + "wait 1 minute to receive message": "انتظر دقيقة توصلك الرسالة", + "You have copied the promo code.": "نسخت كود الخصم.", + "Select Payment Amount": "اختر المبلغ", + "The promotion period has ended.": "خلصت فترة العرض.", + "Promo Code Accepted": "انقبل الكود", + "Tap on the promo code to copy it!": "اضغط ع الكود عشان تنسخه!", + "Lowest Price Achieved": "أقل سعر", + "Cannot apply further discounts.": "ما تقدر تخصم أكثر.", + "Promo Already Used": "الكود مستخدم", + "Invitation Used": "الدعوة مستخدمة", + "You have already used this promo code.": "استخدمت هالكود من قبل.", + "Insert Your Promo Code": "حط كود الخصم", + "Enter promo code here": "اكتب الكود هنا", + "Please enter a valid promo code": "دخل كود صحيح", + "Awfar Car": "سيارة توفير", "Old and affordable, perfect for budget rides.": - "سيارة قديمة وبسعر معقول، مثالية للمشاوير الاقتصادية.", + "اقتصادية ومناسبة للميزانية.", " If you need to reach me, please contact the driver directly at": - "إذا محتاج تتواصل معاي، يرجى التواصل مع السواق مباشرة على", + " إذا بغيتني، كلم الكابتن على", "No Car or Driver Found in your area.": - "لم يتم العثور على سيارة أو سواق في منطقتك.", - "Please Try anther time ": "الرجاء المحاولة في وقت آخر", + "ما لقينا سيارة أو كابتن حولك.", + "Please Try anther time ": "جرب وقت ثاني", "There no Driver Aplly your order sorry for that ": - "ما فيه سواق قبل طلبك، آسفين على كده", - "Trip Cancelled": "تم إلغاء الرحلة", - "The Driver Will be in your location soon .": - "السواق بيكون في موقعك قريبًا.", + "ماحد قبل طلبك، المعذرة", + "Trip Cancelled": "المشوار تكنسل", + "The Driver Will be in your location soon .": "الكابتن بيوصلك قريب.", "The distance less than 500 meter.": "المسافة أقل من 500 متر.", - "Promo End !": "انتهاء العرض!", - "There is no notification yet": "لا توجد إشعارات بعد", + "Promo End !": "انتهى العرض!", + "There is no notification yet": "ما في إشعارات", "Use Touch ID or Face ID to confirm payment": - "استخدم Touch ID أو Face ID لتأكيد الدفع", + "استخدم البصمة لتأكيد الدفع", "Contact us for any questions on your order.": - "تواصل معانا لو عندك أي استفسارات بخصوص طلبك.", - "Pyament Cancelled .": "تم إلغاء الدفع.", + "تواصل معنا لو عندك سؤال.", + "Pyament Cancelled .": "إلغاء الدفع.", "type here": "اكتب هنا", - "Scan Driver License": "مسح رخصة القيادة", - "Please put your licence in these border": - "الرجاء وضع رخصتك داخل هذا الإطار", - "Camera not initialized yet": "الكاميرا لم يتم تشغيلها بعد", - "Take Image": "التقاط الصورة", + "Scan Driver License": "امسح الرخصة", + "Please put your licence in these border": "حط الرخصة داخل الإطار", + "Camera not initialized yet": "الكاميرا لسه", + "Take Image": "صور", "AI Page": "صفحة الذكاء الاصطناعي", - "Take Picture Of ID Card": "التقاط صورة لبطاقة الهوية", - "Take Picture Of Driver License Card": - "التقاط صورة لبطاقة رخصة القيادة", - "We are process picture please wait ": - "نقوم بمعالجة الصورة، الرجاء الانتظار", - "There is no data yet.": "لا توجد بيانات بعد.", + "Take Picture Of ID Card": "صور الهوية", + "Take Picture Of Driver License Card": "صور الرخصة", + "We are process picture please wait ": "نعالج الصورة، انتظر شوي", + "There is no data yet.": "ما في بيانات.", "Name :": "الاسم:", - "Drivers License Class: ": "فئة رخصة القيادة:", - "Document Number: ": "رقم المستند:", + "Drivers License Class: ": "فئة الرخصة:", + "Document Number: ": "رقم الوثيقة:", "Address: ": "العنوان:", "Height: ": "الطول:", "Expiry Date: ": "تاريخ الانتهاء:", "Date of Birth: ": "تاريخ الميلاد:", - "You can\'t continue with us .\nYou should renew Driver license": - "لا يمكنك الاستمرار معانا. يجب تجديد رخصة القيادة", - "Detect Your Face ": "التعرف على وجهك", - "Go to next step\nscan Car License.": - "اذهب للخطوة اللي بعدها\nوامسح رخصة السيارة.", - "Name in arabic": "الاسم باللغة العربية", - "Drivers License Class": "فئة رخصة القيادة", - "Date of Birth": "تاريخ الميلاد", - // "Select date and time of trip": "اختر تاريخ ووقت الرحلة", + "You can't continue with us .\nYou should renew Driver license": + "ما تقدر تكمل معنا.\nلازم تجدد الرخصة", + "Detect Your Face ": "تحقق من وجهك", + "Go to next step\nscan Car License.": "الخطوة الجاية\nمسح الاستمارة.", + "Name in arabic": "الاسم بالعربي", + "Drivers License Class": "فئة الرخصة", "Selected Date": "التاريخ المحدد", "Select Time": "اختر الوقت", "Selected Time": "الوقت المحدد", - // "OK": "موافق", - // "Cancel": "إلغاء", - "Selected Date and Time": "التاريخ والوقت المحددين", - "Lets check Car license ": "يلا نفحص رخصة السيارة", - "Car": "السيارة", - "Plate": "لوحة السيارة", - "N/A": "غير متوفر", - "Rides": "الرحلات", - "Age": "العمر", - // "Education": "التعليم", - // "Color": "اللون", - // "Displacement": "السعة", - // "Fuel": "الوقود", - "Selected driver": "السائق اللي اخترته", - "Lets check License Back Face": "يلا نفحص الوجه الخلفي للرخصة", - "Car License Card": "بطاقة رخصة السيارة", - "No image selected yet": "لم يتم اختيار أي صورة بعد", + "Selected Date and Time": "التاريخ والوقت", + "Lets check Car license ": "نشيك الاستمارة", + "Car": "سيارة", + "Plate": "لوحة", + "Rides": "مشاوير", + "Selected driver": "الكابتن المختار", + "Lets check License Back Face": "نشيك ظهر الرخصة", + "Car License Card": "استمارة السيارة", + "No image selected yet": "ما اخترت صورة", "Made :": "الصنع:", "model :": "الموديل:", - "VIN :": "رقم الشاسيه:", + "VIN :": "رقم الهيكل:", "year :": "السنة:", "ُExpire Date": "تاريخ الانتهاء", - "Login Driver": "تسجيل دخول السائق", + "Login Driver": "دخول كابتن", "Password must br at least 6 character.": - "كلمة المرور لازم تكون 6 حروف على الأقل.", - "if you don\'t have account": "إذا ما عندك حساب", - "Here recorded trips audio": "هنا تسجيلات صوتية للرحلات", - "Register as Driver": "التسجيل كسائق", - // "Privacy Notice": "إخطار الخصوصية", + "كلمة المرور 6 حروف ع الأقل.", + "if you don't have account": "ما عندك حساب", + "Here recorded trips audio": "تسجيلات المشاوير هنا", + "Register as Driver": "سجل كابتن", "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": - "باختياري 'أوافق' أدناه، قمت بمراجعة والموافقة على شروط الاستخدام والإقرار بـ", - ". I am at least 18 years of age.": ". أنا عمري 18 سنة على الأقل.", - "Log Out Page": "صفحة تسجيل الخروج", - "Log Off": "تسجيل الخروج", - "Register Driver": "تسجيل سائق جديد", - "Verify Email For Driver": "التحقق من البريد الإلكتروني للسائق", - "Admin DashBoard": "لوحة تحكم المدير", + "باختيار \"أوافق\"، أكون وافقت على الشروط و ", + "Log Out Page": "صفحة الخروج", + "Log Off": "تسجيل خروج", + "Register Driver": "تسجيل كابتن", + "Verify Email For Driver": "تأكيد إيميل الكابتن", + "Admin DashBoard": "لوحة التحكم", "Your name": "اسمك", - "your ride is applied": "تم قبول الطلب بتاعك", - "Your password": "كلمة المرور بتاعتك", - "H and": "ساعة و", - "LE": "جنيه", - "JOD": "دينار", - "m": "دقيقة", - "We search nearst Driver to you": "بندور على أقرب سواق ليك", - "please wait till driver accept your order": - "الرجاء الانتظار لحد ما السواق يقبل طلبك", + "your ride is applied": "انطلب مشوارك", + "H and": "س و", + "JOD": "ر.س", + "m": "د", + "We search nearst Driver to you": "ندور لك أقرب كابتن", + "please wait till driver accept your order": "انتظر الكابتن يقبل", "No accepted orders? Try raising your trip fee to attract riders.": - "ما فيه طلبات مقبولة؟ حاول تزيد أجرة المشوار لجذب الركاب.", + "ماحد قبل؟ ارفع السعر.", "You should select one": "لازم تختار واحد", - "The driver accept your order for": "السواق قبل طلبك بمبلغ", - "Increase Fee": "زيد الأجرة", - "No, thanks": "لا، شكرا", - "The driver on your way": "الكابتن في طريقه إليك", - "Total price from ": "السعر الإجمالي من ", - "Order Details Intaleq": "طلب سريع", - // "Order Applied": "تم قبول الطلب", - "accepted your order": "قبل طلبك", - // "We regret to inform you that another driver has accepted this order.": - // "نأسف لإبلاغك بأن سائق آخر قد قبل هذا الطلب", + "The driver accept your order for": "الكابتن قبل بـ", + "The driver on your way": "الكابتن جايك", + "Total price from ": "السعر الكلي من ", + "Order Details Intaleq": "تفاصيل الطلب", "Selected file:": "الملف المختار:", - "Your trip cost is": "تكلفة رحلتك هي", + "Your trip cost is": "تكلفة مشوارك:", "this will delete all files from your device": - "حذف هذا راح يمسح كل الملفات من جهازك", - " in your": "في محفظتك", + "بيمسح كل الملفات من جهازك", "Exclusive offers and discounts always with the Intaleq app": - "عروض وخصومات حصرية دائمًا مع تطبيق Intaleq", - // "Please go to Car Driver": "الرجاء التوجه إلى سائق السيارة", - " wallet due to a previous trip.": "بسبب رحلة سابقة.", - "Submit Question": "اطرح سؤال", - "Please enter your Question.": "الرجاء إدخال سؤالك.", + "عروض حصرية دائماً مع انطلق", + "Submit Question": "أرسل سؤال", + "Please enter your Question.": "اكتب سؤالك.", "Help Details": "تفاصيل المساعدة", - "No trip yet found": "لم يتم حجز أي رحلة بعد", - "No Response yet.": "ما فيه رد للحين.", - " You Earn today is ": "اللي كسبته اليوم هو", - " You Have in": "عندك في", - "Total points is ": "إجمالي النقاط هو", - "Total Connection Duration:": "إجمالي مدة الاتصال:", - " H and": "ساعة و", - "Passenger name : ": "اسم الراكب", - "Cost Of Trip IS ": "تكلفة الرحلة هي", + "No trip yet found": "ما لقينا مشوار", + "No Response yet.": "ما في رد للحين.", + " You Earn today is ": " دخلك اليوم: ", + " You Have in": " عندك في", + "Total points is ": "مجموع النقاط ", + "Total Connection Duration:": "مدة الاتصال:", + "Passenger name : ": "اسم الراكب: ", + "Cost Of Trip IS ": "تكلفة المشوار: ", "Arrival time": "وقت الوصول", - "arrival time to reach your point": "الوقت المتوقع للوصول إلى وجهتك", + "arrival time to reach your point": "وقت الوصول لنقطتك", "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "بالنسبة لمشاوير Intaleq والسكوتر، السعر ينحسب بشكل تلقائي. أما مشاوير الراحة، فالسعر يكون حسب الوقت والمسافة.", - "Hello this is Driver": "مرحباً، أنا السواق", - "Is the Passenger in your Car ?": "هل الراكب معاك في السيارة؟", + "للانطلاق والسكوتر السعر متغير. للراحة السعر بالوقت والمسافة.", + "Hello this is Driver": "هلا، أنا الكابتن", + "Is the Passenger in your Car ?": "الراكب معك؟", "Please wait for the passenger to enter the car before starting the trip.": - "الرجاء الانتظار لحد ما الراكب يركب السيارة قبل ما تبدأ المشوار.", - "No ,still Waiting.": "لا، للحين أنتظر.", - "I arrive you": "أنا وصلت لك", - "I Arrive your site": "أنا وصلت مكانك", - "You are not in near to passenger location": - "أنت مو قريب من مكان الراكب", - "please go to picker location exactly": - "الرجاء الذهاب إلى موقع الراكب بالضبط", + "انتظر الراكب يركب قبل تبدأ.", + "No ,still Waiting.": "لا، لسه أنتظر.", + "I arrive you": "وصلت", + "I Arrive your site": "وصلت موقعك", + "You are not in near to passenger location": "أنت بعيد عن الراكب", + "please go to picker location exactly": "رح لموقع الركوب بالضبط", "You Can Cancel Trip And get Cost of Trip From": - "ممكن تلغي المشوار وتاخذ التكلفة من", - "Are you sure to cancel?": "أنت متأكد إنك تبي تلغي؟", - // "Yes": "نعم", - "Insert Emergincy Number": "أدخل رقم الطوارئ", + "تقدر تلغي وتأخذ حقك من", + "Are you sure to cancel?": "متأكد تبي تلغي؟", + "Insert Emergincy Number": "دخل رقم الطوارئ", "Best choice for comfort car and flexible route and stops point": - "أفضل اختيار لسيارة مريحة ومسار مرن ونقط وقوف", + "أفضل خيار لسيارة مريحة ومسار مرن", "Insert": "إدخال", - "This is for scooter or a motorcycle.": "هذا للتوصيل أو للموتوسيكل", + "This is for scooter or a motorcycle.": "هذا للسكوتر أو الدباب.", "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": - "المشوار هذا يروح مباشرة من نقطة البداية لنقطة النهاية بسعر ثابت. والسواق لازم يلتزم بالمسار المحدد.", - "You can decline a request without any cost": - "تقدر ترفض الطلب بدون أي تكلفة", + "مشوار مباشر بسعر ثابت. الكابتن يلتزم بالمسار.", + "You can decline a request without any cost": "تقدر ترفض بدون تكلفة", "Perfect for adventure seekers who want to experience something new and exciting": - "مثالي لمحبي المغامرة اللي يبون يجربون أشياء جديدة ومثيرة", - "My current location is:": "موقعي الحالي هو:", + "لمحبي المغامرة", + "My current location is:": "موقعي الحالي:", "and I have a trip on": "وعندي مشوار على", - "App with Passenger": "التطبيق\nمع الراكب", + "App with Passenger": "التطبيق مع الراكب", "You will be pay the cost to driver or we will get it from you on next trip": - "راح تدفع التكلفة للسواق أو راح ناخذها منك في المشوار اللي جاي", - "Trip has Steps": "الرحلة لها خطوات", - "Distance from Passenger to destination is ": - "المسافة من الراكب للوجهة هي", - "price is": "التكلفة", + "بتدفع للكابتن أو نأخذها منك المشوار الجاي", + "Trip has Steps": "الرحلة فيها وقفات", + "Distance from Passenger to destination is ": "المسافة للوجهة: ", + "price is": "السعر:", "This ride type does not allow changes to the destination or additional stops": - "نوع المشوار هذا ما يسمح بتغيير الوجهة ولا إضافة وقفات.", - "This price may be changed": "خلي بالك السعر ممكن يتغير", + "ما تقدر تغير الوجهة أو توقف", + "This price may be changed": "السعر ممكن يتغير", "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": - "حتى لو ما فيه خط، لا تقلق! كلم السواق بتاعك من خلال التطبيق بتاعنا. نستخدم تكنولوجيا حديثة عشان نحافظ على خصوصيتك.", + "ما عندك شريحة؟ عادي! كلم الكابتن من التطبيق.", "This ride type allows changes, but the price may increase": - "نوع المشوار هذا يسمح بالتغييرات، بس السعر ممكن يزيد", - "Select one message": "اختار رسالة", - - "I'm waiting for you": "أنا في انتظارك", + "تقدر تغير بس السعر بيزيد", + "Select one message": "اختر رسالة", + "I'm waiting for you": "أنا أنتظرك", "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": - "لاحظنا إن السرعة تزيد عن 100 كم/ساعة. يرجى التباطؤ حفاظًا على سلامتك. لو حسيت بعدم الأمان، ممكن تشارك تفاصيل رحلتك مع حد تثق فيه أو تتصل بالشرطة عن طريق زر الطوارئ الأحمر.", - "Warning: Intaleqing detected!": "تحذير: تم رصد السرعة الزائدة!", - "Please help! Contact me as soon as possible.": - "الرجاء المساعدة! اتصل بي في أقرب وقت ممكن", - "Share Trip Details": "مشاركة تفاصيل الرحلة", - "Car Plate is ": "رقم اللوحة", - "VIP Order": "طلب VIP", + "لاحظنا السرعة زادت عن 100. هدي السرعة لسلامتك.", + "Warning: Intaleqing detected!": "تحذير: سرعة عالية!", + "Please help! Contact me as soon as possible.": "فزعة! كلمني بسرعة.", + "Share Trip Details": "شارك تفاصيل المشوار", + "Car Plate is ": "اللوحة: ", "the 300 points equal 300 L.E for you \nSo go and gain your money": - "اكسب 300 جنيه! كل 300 نقطة تساوي 300 جنيه. يلا استغل نقاطك!", - "the 300 points equal 300 L.E": "الـ 300 نقطة تساوي 300 جنيه ليك", + "300 نقطة تساوي 300 ر.س لك\nرح اكسب فلوسك", + "the 300 points equal 300 L.E": "300 نقطة بـ 300 ر.س", "The payment was not approved. Please try again.": - "الدفع ما اتقبل. يرجى المحاولة مرة ثانية.", + "الدفع ما انقبل. جرب مرة ثانية.", "Payment Failed": "فشل الدفع", - "Error": "خطأ", "This is a scheduled notification.": "هذا إشعار مجدول.", - "An error occurred during the payment process.": - "حدث خطأ أثناء عملية الدفع.", - "The payment was approved.": "تمت الموافقة على الدفع.", - "Payment Successful": "نجح الدفع", - "No ride found yet": "ما فيه طلبات متاحة حاليًا", - "Accept Order": "اقبل الطلب", - // "reject your order.": "رفض طلبك.", - "Bottom Bar Example": "مثال لشريط التنقل السفلي", - "Driver phone": "رقم السواق", + "An error occurred during the payment process.": "خطأ في الدفع.", + "The payment was approved.": "تم الدفع.", + "Payment Successful": "الدفع ناجح", + "No ride found yet": "ما لقينا مشوار", + "Accept Order": "قبول الطلب", + "Bottom Bar Example": "مثال الشريط السفلي", + "Driver phone": "جوال الكابتن", "Statistics": "الإحصائيات", - "Origin": "نقطة الانطلاق", - "Destination": "الوجهة", - "Driver Name": "اسم السائق", - "Driver Car Plate": "لوحة السيارة", + "Origin": "الانطلاق", + "Destination": "الوصول", + "Driver Name": "اسم الكابتن", + "Driver Car Plate": "لوحة الكابتن", "Available for rides": "متاح للمشاوير", "Scan Id": "مسح الهوية", - "Camera not initilaized yet": "الكاميرا ما اشتغلت للحين", - "Scan ID MklGoogle": "مسح هوية MklGoogle", + "Camera not initilaized yet": "الكاميرا لسه", + "Scan ID MklGoogle": "مسح الهوية MklGoogle", "Language": "اللغة", "Jordan": "الأردن", - "USA": "الولايات المتحدة الأمريكية", + "USA": "أمريكا", "Egypt": "مصر", "Turkey": "تركيا", - "Saudi Arabia": "المملكة العربية السعودية", + "Saudi Arabia": "السعودية", "Qatar": "قطر", "Bahrain": "البحرين", "Kuwait": "الكويت", - "But you have a negative salary of": "لكن عندك رصيد سالب بقيمة", - "Promo Code": "كود ترويجي", - "Your trip distance is": "مسافة رحلتك هي", - "Enter promo code": "أدخل كود ترويجي", - "You have promo!": "عندك عرض ترويجي!", - "Cost Duration": "تكلفة المدة", - "Duration is": "المدة هي", + "But you have a negative salary of": "بس عليك سالب بقيمة", + "Promo Code": "كود الخصم", + "Your trip distance is": "مسافة مشوارك:", + "Enter promo code": "دخل الكود", + "You have promo!": "عندك خصم!", + "Cost Duration": "تكلفة الوقت", + "Duration is": "المدة:", "Leave": "مغادرة", "Join": "انضمام", - "Heading your way now. Please be ready.": - "أنا في طريقي إليك الحين. يرجى الاستعداد.", + "Heading your way now. Please be ready.": "جايك بالطريق. خلك جاهز.", "Approaching your area. Should be there in 3 minutes.": - "أقترب من منطقتك. يفترض أوصل خلال 3 دقايق.", + "قربت منك. 3 دقايق وأكون عندك.", "There's heavy traffic here. Can you suggest an alternate pickup point?": - "فيه زحمة مرور شديدة هنا. ممكن تقترح مكان ثاني للاستلام؟", + "زحمة هنا. تقدر تغير موقع الركوب؟", "This ride is already taken by another driver.": - "المشوار هذا أخذه سواق ثاني خلاص.", - "You Should be select reason.": "يجب أن تختار سبب.", - - "Waiting for Driver ...": "في انتظار السواق...", - "Latest Recent Trip": "آخر مشوار سويته", + "المشوار راح لكابتن ثاني.", + "You Should be select reason.": "لازم تختار سبب.", + "Waiting for Driver ...": "بانتظار الكابتن...", + "Latest Recent Trip": "آخر مشوار", "from your list": "من قائمتك", - "Do you want to change Work location": "تبي تغير مكان شغلك؟", - "Do you want to change Home location": "تبي تغير مكان بيتك؟", + "Do you want to change Work location": "تغير موقع الدوام؟", + "Do you want to change Home location": "تغير موقع البيت؟", "We Are Sorry That we dont have cars in your Location!": - "نعتذر لعدم وجود سيارات في موقعك!", + "آسفين، ما في سيارات حولك!", "Choose from Map": "اختر من الخريطة", "Pick your ride location on the map - Tap to confirm": - "حدد مكان الالتقاء على الخريطة - اضغط للتأكيد", - // "To Work": "إلى العمل", - // "Are you want to go this site": "عايز تروح المكان ده؟", - "Closest & Cheapest": "الأقرب والأرخص", - // "Work Saved": "تم حفظ مكان الشغل", + "حدد موقعك ع الخريطة - اضغط للتأكيد", "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": - "Intaleq هو تطبيق توصيل آمن وموثوق وسهل الاستخدام.", + "انطلق تطبيق مشاوير آمن وموثوق.", "With Intaleq, you can get a ride to your destination in minutes.": - "مع Intaleq، تقدر توصل لوجهتك في دقايق.", + "مع انطلق، توصل وجهتك بدقايق.", "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": - "Intaleq ملتزمة بالأمان، وكل الكباتن يتم فحصهم بدقة والتحقق من خلفيتهم.", - // "To Home": "إلى المنزل", - // "Home Saved": "تم حفظ مكان البيت", - // "Destination selected": "تم اختيار الوجهة:", - // "Now select start pick": "اختار مكان الانطلاق الحين:", - "Pick from map": "اختيار من الخريطة", - // "Click here point": "حدد هذه النقطة", - "No Car in your site. Sorry!": "ما فيه سيارة في موقعك. آسف!", - "Nearest Car for you about ": "أقرب سيارة ليك على بعد حوالي ", - // "N/A": "غير متوفر", + "ملتزمين بالسلامة، وكل كباتننا مفحوصين أمنياً.", + "Pick from map": "اختر من الخريطة", + "No Car in your site. Sorry!": "ما في سيارة عندك. المعذرة!", + "Nearest Car for you about ": "أقرب سيارة لك بعد ", "From :": "من:", - "Get Details of Trip": "عرض تفاصيل الرحلة", - "If you want add stop click here": "إذا تبي تضيف وقفة اضغط هنا", - // "Driver": "السائق", - "Where you want go ": "وين تبي تروح؟", + "Get Details of Trip": "تفاصيل المشوار", + "If you want add stop click here": "تبي تضيف وقفة اضغط هنا", + "Where you want go ": "وين تبي تروح ", "My Card": "بطاقتي", - "Start Record": "بدء التسجيل", - "Wallet": "المحفظة", - "History of Trip": "سجل الرحلات", + "Start Record": "ابدأ التسجيل", + "History of Trip": "سجل المشاوير", "Helping Center": "مركز المساعدة", - "Record saved": "تم حفظ التسجيل", - "Trips recorded": "الرحلات المسجلة", - "Select Your Country": "اختر بلدك", + "Record saved": "انحفظ التسجيل", + "Trips recorded": "المشاوير المسجلة", + "Select Your Country": "اختر دولتك", "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": - "لتلقي أدق المعلومات لموقعك، يرجى اختيار بلدك أدناه. هذا راح يساعد على تخصيص تجربة التطبيق والمحتوى لبلدك.", - "Are you sure to delete recorded files": - "أكيد تبي تمسح الملفات الصوتية المسجلة؟", - "Select recorded trip": "اختر الملف الصوتي المسجل", + "عشان نعطيك معلومات دقيقة، اختر دولتك.", + "Are you sure to delete recorded files": "متأكد تبي تحذف الملفات؟", + "Select recorded trip": "اختر مشوار مسجل", "Card Number": "رقم البطاقة", - "Hi, Where to ": "مرحبا، وين تبي تروح؟", - "Pick your destination from Map": "اختار وجهتك من الخريطة", - "Add Stops": "إضافة محطات", - "Get Direction": "عرض الاتجاهات", + "Hi, Where to ": "هلا، لوين؟", + "Pick your destination from Map": "حدد وجهتك من الخريطة", + "Add Stops": "إضافة وقفات", + "Get Direction": "الاتجاهات", "Add Location": "إضافة موقع", - "Switch Rider": "تبديل الراكب", + "Switch Rider": "تغيير الراكب", "You will arrive to your destination after timer end.": - "راح توصل وجهتك بعد انتهاء العداد.", - "You can cancel trip": "تقدر تلغي الرحلة", - "The driver waitting you in picked location .": - "السواق ينتظرك في المكان اللي اخترته.", - + "بتوصل بعد انتهاء المؤقت.", + "You can cancel trip": "تقدر تكنسل", + "The driver waitting you in picked location .": "الكابتن ينتظرك.", "Pay with Your": "ادفع بـ", - "Pay with Credit Card": "ادفع ببطاقة الائتمان", - "Payment History": "سجل المدفوعات", - "Show Promos to Charge": "عرض العروض للشحن", + "Pay with Credit Card": "ادفع بالبطاقة", + "Show Promos to Charge": "عروض الشحن", "Point": "نقطة", "How many hours would you like to wait?": "كم ساعة تبي تنتظر؟", - "Driver Wallet": "محفظة السائق", - "Choose between those Type Cars": "اختار من بين أنواع السيارات هذي", + "Driver Wallet": "محفظة الكابتن", + "Choose between those Type Cars": "اختر نوع السيارة", "hour": "ساعة", "Select Waiting Hours": "اختر ساعات الانتظار", - "Total Points is": "إجمالي النقاط هو", - "You will receive a code in SMS message": - "سوف تتلقى رمزًا في رسالة نصية", + "Total Points is": "مجموع النقاط", + "You will receive a code in SMS message": "بيجيك كود برسالة نصية", "Done": "تم", - "Total Budget from trips is ": "إجمالي المبلغ المستحق من الرحلات هو", - "Total Amount:": "المبلغ الإجمالي:", + "Total Budget from trips is ": "إجمالي الدخل: ", + "Total Amount:": "المبلغ الكلي:", "Total Budget from trips by\nCredit card is ": - "إجمالي المبلغ المستحق من الرحلات عن طريق\nبطاقة الائتمان هو", + "إجمالي الدخل بالبطاقة: ", "This amount for all trip I get from Passengers": - "هذا المبلغ اللي حصلت عليه من كل الرحلات من الركاب", + "هذا المبلغ من كل الركاب", "Pay from my budget": "ادفع من رصيدي", "This amount for all trip I get from Passengers and Collected For me in": - "هذا المبلغ اللي حصلت عليه من كل الرحلات من الركاب وتم تجميعه لي في", + "المبلغ المجمع لي في", "You can buy points from your budget": "تقدر تشتري نقاط من رصيدك", - "insert amount": "أدخل المبلغ", + "insert amount": "دخل المبلغ", "You can buy Points to let you online\nby this list below": - "تقدر تشتري نقاط عشان تبقى متصل\nمن القائمة هذه تحت", - "Create Wallet to receive your money": "إنشاء محفظة لاستقبال أموالك", - "Enter your feedback here": "اكتب ملاحظاتك هنا", - "Please enter your feedback.": "يرجى إدخال ملاحظاتك.", + "اشتر نقاط عشان تكون متصل\nمن القائمة", + "Create Wallet to receive your money": "أنشئ محفظة لاستلام فلوسك", + "Enter your feedback here": "اكتب ملاحظتك", + "Please enter your feedback.": "اكتب ملاحظتك لاهنت.", "Feedback": "ملاحظات", - "Submit ": "إرسال", - "Click here to Show it in Map": "اضغط هنا لعرضه على الخريطة", - "Canceled": "تم الإلغاء", - "Type your Email": "اكتب بريدك الإلكتروني", - "No I want": "لا أريد", - "Email is": "البريد الإلكتروني هو", - "Phone Number is": "رقم الهاتف هو", - "Date of Birth is": "تاريخ الميلاد هو", - "Sex is ": "النوع هو ", + "Submit ": "إرسال ", + "Click here to Show it in Map": "اضغط للعرض على الخريطة", + "Canceled": "ملغي", + "No I want": "لا أبي", + "Email is": "الإيميل:", + "Phone Number is": "الجوال:", + "Date of Birth is": "تاريخ الميلاد:", + "Sex is ": "الجنس: ", "Car Details": "تفاصيل السيارة", - "VIN is": "رقم الشاسيه هو", - "Color is ": "اللون هو ", - "Make is ": "الشركة المصنعة", - "Model is": "الموديل هو", - "Year is": "السنة هي", - "Expiration Date ": "تاريخ الانتهاء ", + "VIN is": "رقم الهيكل:", + "Color is ": "اللون: ", + "Make is ": "الشركة:", + "Model is": "الموديل:", + "Year is": "السنة:", + "Expiration Date ": "تاريخ الانتهاء: ", "Edit Your data": "تعديل بياناتك", - "write vin for your car": "اكتب رقم الشاسيه لسيارتك", - "VIN": "رقم الشاسيه", - "write Color for your car": "اكتب لون سيارتك", - "write Make for your car": "اكتب الشركة المصنعة لسيارتك", - // "Make": "الشركة المصنعة", - "write Model for your car": "اكتب موديل سيارتك", - // "Model": "الموديل", - "write Year for your car": "اكتب سنة صنع سيارتك", - // "Expiration Date": "تاريخ الانتهاء", - "write Expiration Date for your car": "اكتب تاريخ انتهاء رخصة سيارتك", - "Tariffs": "التعريفات", - "Minimum fare": "الحد الأدنى للأجرة", - "Maximum fare": "الحد الأقصى للأجرة", - "Flag-down fee": "رسوم فتح العداد", + "write vin for your car": "اكتب رقم الهيكل", + "VIN": "رقم الهيكل", + "Device Change Detected": "تغير الجهاز", + "Please verify your identity": "تحقق من هويتك", + "write Color for your car": "اكتب اللون", + "write Make for your car": "اكتب الشركة", + "write Model for your car": "اكتب الموديل", + "write Year for your car": "اكتب السنة", + "write Expiration Date for your car": "اكتب تاريخ الانتهاء", + "Tariffs": "التعرفة", + "Minimum fare": "أقل سعر", + "Maximum fare": "أعلى سعر", + "Flag-down fee": "فتح الباب", "Including Tax": "شامل الضريبة", "BookingFee": "رسوم الحجز", - "Morning": "الصباح", + "Morning": "صباح", "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": - "من 07:30 حتى 10:30 (الخميس، الجمعة، السبت، الاثنين)", - "Evening": "المساء", + "من 7:30 لـ 10:30", + "Evening": "مساء", "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": - "من 12:00 حتى 15:00 (الخميس، الجمعة، السبت، الاثنين)", - "Night": "الليل", - "You have in account": "عندك في الحساب", + "من 12:00 لـ 3:00", + "Night": "ليل", + "You have in account": "عندك بالحساب", "Select Country": "اختر الدولة", - "Ride Today : ": "عدد رحلات اليوم: ", - "After this period\nYou can\'t cancel!": - "بعد الفترة هذه\nما تقدر تلغي!", - "from 23:59 till 05:30": "من 23:59 حتى 05:30", - "Rate Driver": "تقييم السائق", - "Total Cost is ": "صافي الربح", + "Ride Today : ": "مشوار اليوم: ", + "After this period\nYou can't cancel!": "بعد هالوقت\nما تقدر تلغي!", + "from 23:59 till 05:30": "من 11:59 م لـ 5:30 ص", + "Rate Driver": "قيم الكابتن", + "Total Cost is ": "التكلفة الكلية: ", "Write note": "اكتب ملاحظة", "Time to arrive": "وقت الوصول", - "Ride Summaries": "ملخصات الرحلات", - "Total Cost": "المبلغ الإجمالي", - "Average of Hours of": "متوسط ساعات", - " is ON for this month": "في هذا الشهر", + "Ride Summaries": "ملخص المشاوير", + "Total Cost": "التكلفة الكلية", + "Average of Hours of": "معدل الساعات", + " is ON for this month": " متصل هالشهر", "Days": "أيام", - "Total Hours on month": "إجمالي الساعات في الشهر", - "Counts of Hours on days": "عدد ساعات الأيام", - "OrderId": "رقم الرحلة", - "created time": "وقت الرحلة", - "Intaleq Over": "سرعة عالية", - "I will slow down": "حاضر بهدي السرعة", + "Total Hours on month": "ساعات الشهر", + "Counts of Hours on days": "عدد الساعات بالأيام", + "OrderId": "رقم الطلب", + "created time": "وقت الإنشاء", + "Intaleq Over": "انتهى المشوار", + "I will slow down": "بهدي السرعة", "Map Passenger": "خريطة الراكب", - "Be Slowly": "بالراحة شوية في السرعة", + "Be Slowly": "على مهلك", "If you want to make Google Map App run directly when you apply order": - "لو تبي تطبيق خرائط جوجل يشتغل تلقائي لما تطلب الخدمة", - "You can change the language of the app": "تقدر تغير لغة التطبيق", - "Your Budget less than needed": "القيمة المدخلة أقل من رصيدك", + "تبي قوقل ماب يفتح علطول؟", + "You can change the language of the app": "تغيير اللغة", + "Your Budget less than needed": "رصيدك أقل من المطلوب", "You can change the Country to get all features": - "تقدر تغير الدولة عشان تحصل على كل المميزات", + "غير الدولة عشان كل الميزات", "Change Country": "تغيير الدولة" }, - "ar-ma": { "Order": "طلب", "OrderVIP": "طلب VIP", diff --git a/lib/controller/rate/rate_conroller.dart b/lib/controller/rate/rate_conroller.dart index 8bdd4f4..42f3574 100644 --- a/lib/controller/rate/rate_conroller.dart +++ b/lib/controller/rate/rate_conroller.dart @@ -36,7 +36,7 @@ class RateController extends GetxController { update(); } - void addRateToDriver() async { + addRateToDriver() async { if (selectedRateItemId < 1) { Get.defaultDialog( title: 'You Should choose rate figure'.tr, diff --git a/lib/views/Rate/rating_driver_bottom.dart b/lib/views/Rate/rating_driver_bottom.dart index 5ff5a7a..c258720 100644 --- a/lib/views/Rate/rating_driver_bottom.dart +++ b/lib/views/Rate/rating_driver_bottom.dart @@ -1,3 +1,4 @@ +import 'package:Intaleq/views/home/map_page_passenger.dart'; import 'package:flutter/material.dart'; import 'package:flutter_rating_bar/flutter_rating_bar.dart'; import 'package:get/get.dart'; @@ -148,10 +149,11 @@ class RatingDriverBottomSheet extends StatelessWidget { // 4. زر الإرسال MyElevatedButton( title: 'Submit Rating'.tr, - onPressed: () { - controller.addRateToDriver(); - Get.find() - .getRideStatusFromStartApp(); + onPressed: () async { + await controller.addRateToDriver(); + Get.offAll(() => MapPagePassenger()); + // Get.find() + // .getRideStatusFromStartApp(); }) ], ), diff --git a/lib/views/auth/otp_page.dart b/lib/views/auth/otp_page.dart index 2f856ca..e20806a 100644 --- a/lib/views/auth/otp_page.dart +++ b/lib/views/auth/otp_page.dart @@ -35,6 +35,9 @@ class AuthScreen extends StatelessWidget { final testerPasswordController = TextEditingController(); final testerFormKey = GlobalKey(); + // Brand Color for Logic (Cyan/Teal from the Arrow in the logo) + const Color brandColor = Color(0xFF00E5FF); + showDialog( context: context, barrierDismissible: true, @@ -42,7 +45,8 @@ class AuthScreen extends StatelessWidget { return BackdropFilter( filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5), child: AlertDialog( - backgroundColor: const Color(0xFF162232).withOpacity(0.85), + // Updated background to match new theme (Dark Purple/Indigo) + backgroundColor: const Color(0xFF1A1A2E).withOpacity(0.90), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), title: const Text( @@ -73,7 +77,8 @@ class AuthScreen extends StatelessWidget { ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(12), - borderSide: const BorderSide(color: Color(0xFF00BFFF)), + // Changed to Brand Cyan + borderSide: const BorderSide(color: brandColor), ), ), validator: (value) => value == null || !value.contains('@') @@ -98,7 +103,8 @@ class AuthScreen extends StatelessWidget { ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(12), - borderSide: const BorderSide(color: Color(0xFF00BFFF)), + // Changed to Brand Cyan + borderSide: const BorderSide(color: brandColor), ), ), validator: (value) => value == null || value.isEmpty @@ -116,13 +122,14 @@ class AuthScreen extends StatelessWidget { ), ElevatedButton( style: ElevatedButton.styleFrom( - backgroundColor: const Color(0xFF00BFFF), + backgroundColor: brandColor, // Updated Button Color shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12), ), ), - child: - const Text('Login', style: TextStyle(color: Colors.black)), + child: const Text('Login', + style: TextStyle( + color: Color(0xFF1A1A2E), fontWeight: FontWeight.bold)), onPressed: () { if (testerFormKey.currentState!.validate()) { // Use the main controller to perform login @@ -149,39 +156,58 @@ class AuthScreen extends StatelessWidget { return Scaffold( body: Container( - // NEW: AI-inspired, brighter, and more dynamic color gradient + // NEW DESIGN: Deep Purple/Indigo Gradient to match the "N" body decoration: const BoxDecoration( gradient: LinearGradient( - colors: [Color(0xFF00122E), Color(0xFF00285F)], - begin: Alignment.topCenter, - end: Alignment.bottomCenter, + // Dark Indigo -> Deep Purple -> Dark Blue + colors: [Color(0xFF2E1C59), Color(0xFF1A237E), Color(0xFF0D1117)], + begin: Alignment.topLeft, + end: Alignment.bottomRight, ), ), child: Stack( children: [ - // Background shapes for a more dynamic feel + // Background shapes updated to match the Logo accents + + // Shape 1: The Orange/Red Swoosh color Positioned( - top: -100, - left: -100, + top: -80, + left: -80, child: Container( width: 250, height: 250, decoration: BoxDecoration( - shape: BoxShape.circle, - color: const Color(0xFF00BFFF).withOpacity(0.15), - ), + shape: BoxShape.circle, + // Orange/Red from the swoosh lines + color: const Color(0xFFFF5722).withOpacity(0.12), + boxShadow: [ + BoxShadow( + color: const Color(0xFFFF5722).withOpacity(0.2), + blurRadius: 50, + spreadRadius: 10, + ) + ]), ), ), + + // Shape 2: The Cyan/Teal Arrow color Positioned( - bottom: -150, - right: -100, + bottom: -100, + right: -80, child: Container( width: 350, height: 350, decoration: BoxDecoration( - shape: BoxShape.circle, - color: const Color(0xFF00BFFF).withOpacity(0.1), - ), + shape: BoxShape.circle, + // Cyan/Teal from the arrow tip + color: const Color(0xFF00E5FF).withOpacity(0.08), + boxShadow: [ + BoxShadow( + color: const Color(0xFF00E5FF).withOpacity(0.15), + blurRadius: 60, + spreadRadius: 5, + ) + ]), ), ), Center( @@ -199,10 +225,11 @@ class AuthScreen extends StatelessWidget { padding: const EdgeInsets.all(12), decoration: BoxDecoration( shape: BoxShape.circle, - color: Colors.white.withOpacity(0.1), + color: Colors.white.withOpacity(0.05), border: Border.all( - color: Colors.white.withOpacity(0.2), - width: 2)), + // Gradient border for the logo container + color: Colors.white.withOpacity(0.1), + width: 1)), child: ClipRRect( borderRadius: BorderRadius.circular(50), child: Image.asset('assets/images/logo.gif', @@ -219,9 +246,9 @@ class AuthScreen extends StatelessWidget { color: Colors.white, shadows: [ Shadow( - blurRadius: 10.0, - color: Colors.black26, - offset: Offset(2, 2)), + blurRadius: 15.0, + color: Color(0xFF000000), // Darker shadow + offset: Offset(0, 4)), ]), ), const SizedBox(height: 10), @@ -230,7 +257,7 @@ class AuthScreen extends StatelessWidget { textAlign: TextAlign.center, style: TextStyle( fontSize: 16, - color: Colors.white.withOpacity(0.8), + color: Colors.white.withOpacity(0.75), ), ), const SizedBox(height: 30), @@ -239,15 +266,17 @@ class AuthScreen extends StatelessWidget { ClipRRect( borderRadius: BorderRadius.circular(25.0), child: BackdropFilter( - filter: ImageFilter.blur(sigmaX: 15, sigmaY: 15), + filter: ImageFilter.blur( + sigmaX: 20, sigmaY: 20), // Increased blur child: Container( padding: const EdgeInsets.all(24.0), decoration: BoxDecoration( - color: Colors.white.withOpacity(0.1), + // Slightly darker tint for better contrast with Cyan inputs + color: const Color(0xFF1A237E).withOpacity(0.2), borderRadius: BorderRadius.circular(25.0), border: Border.all( - color: Colors.white.withOpacity(0.2), - width: 1.5, + color: Colors.white.withOpacity(0.1), + width: 1.0, ), ), child: @@ -258,8 +287,7 @@ class AuthScreen extends StatelessWidget { const SizedBox(height: 20), // A more distinct button for app testers Material( - color: Colors.white.withOpacity(0.15), - borderRadius: BorderRadius.circular(12), + color: Colors.transparent, child: InkWell( onTap: () => _showTesterLoginDialog(context, loginController), @@ -271,14 +299,14 @@ class AuthScreen extends StatelessWidget { mainAxisSize: MainAxisSize.min, children: [ Icon(Icons.admin_panel_settings_outlined, - color: Colors.white.withOpacity(0.8)), + color: Colors.white.withOpacity(0.5)), const SizedBox(width: 8), Text( 'For App Reviewers / Testers', style: TextStyle( - color: Colors.white.withOpacity(0.8), - fontWeight: FontWeight.w600, - ), + color: Colors.white.withOpacity(0.5), + fontWeight: FontWeight.w400, + fontSize: 12), ), ], ), @@ -310,6 +338,10 @@ class _PhoneNumberScreenState extends State { final _phoneController = TextEditingController(); final _formKey = GlobalKey(); bool _isLoading = false; + + // Brand Color for Focus (Cyan/Teal) + final Color _focusColor = const Color(0xFF00E5FF); + static String formatSyrianPhone(String phone) { // Remove spaces, symbols, +, -, () phone = phone.replaceAll(RegExp(r'[ \-\(\)\+]'), '').trim(); @@ -404,7 +436,9 @@ class _PhoneNumberScreenState extends State { searchText: 'Search country'.tr, languageCode: 'ar', style: const TextStyle(color: Colors.white), - dropdownTextStyle: const TextStyle(color: Colors.black87), + dropdownTextStyle: const TextStyle( + color: Colors + .white), // Changed to White for visibility on dark BG decoration: InputDecoration( labelText: 'Phone Number'.tr, hintText: 'witout zero'.tr, @@ -415,7 +449,8 @@ class _PhoneNumberScreenState extends State { ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(12), - borderSide: const BorderSide(color: Color(0xFF00BFFF)), + // Updated to Logo Cyan + borderSide: BorderSide(color: _focusColor, width: 2), ), ), initialCountryCode: 'SY', @@ -444,8 +479,11 @@ class _PhoneNumberScreenState extends State { child: ElevatedButton( onPressed: _submit, style: ElevatedButton.styleFrom( - backgroundColor: const Color(0xFF00BFFF), + // Updated to Logo Cyan + backgroundColor: _focusColor, padding: const EdgeInsets.symmetric(vertical: 16), + elevation: 5, + shadowColor: _focusColor.withOpacity(0.5), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12)), ), @@ -454,7 +492,8 @@ class _PhoneNumberScreenState extends State { style: const TextStyle( fontSize: 16, fontWeight: FontWeight.bold, - color: Colors.black), + // Text is dark to contrast with bright Cyan + color: Color(0xFF1A1A2E)), ), ), ), @@ -477,6 +516,9 @@ class _OtpVerificationScreenState extends State { final _otpController = TextEditingController(); bool _isLoading = false; + // Brand Color + final Color _brandColor = const Color(0xFF00E5FF); + void _submit() async { if (_formKey.currentState!.validate()) { setState(() => _isLoading = true); @@ -519,11 +561,17 @@ class _OtpVerificationScreenState extends State { counterText: "", hintText: '-----', hintStyle: TextStyle( - color: Colors.white.withOpacity(0.3), + color: Colors.white.withOpacity(0.1), letterSpacing: 18, fontSize: 28), border: InputBorder.none, contentPadding: const EdgeInsets.symmetric(vertical: 10), + // Add a subtle underline for the OTP area using brand color + enabledBorder: UnderlineInputBorder( + borderSide: + BorderSide(color: Colors.white.withOpacity(0.2))), + focusedBorder: UnderlineInputBorder( + borderSide: BorderSide(color: _brandColor)), ), validator: (v) => v == null || v.length < 5 ? '' : null, ), @@ -536,8 +584,10 @@ class _OtpVerificationScreenState extends State { child: ElevatedButton( onPressed: _submit, style: ElevatedButton.styleFrom( - backgroundColor: const Color(0xFF00BFFF), + backgroundColor: _brandColor, // Updated padding: const EdgeInsets.symmetric(vertical: 16), + elevation: 5, + shadowColor: _brandColor.withOpacity(0.5), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12)), ), @@ -546,7 +596,7 @@ class _OtpVerificationScreenState extends State { style: const TextStyle( fontSize: 16, fontWeight: FontWeight.bold, - color: Colors.black), + color: Color(0xFF1A1A2E)), ), ), ), @@ -570,6 +620,9 @@ class _RegistrationScreenState extends State { final _emailController = TextEditingController(); bool _isLoading = false; + // Brand Color + final Color _brandColor = const Color(0xFF00E5FF); + void _submit() async { if (_formKey.currentState!.validate()) { setState(() => _isLoading = true); @@ -603,7 +656,8 @@ class _RegistrationScreenState extends State { ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(12), - borderSide: const BorderSide(color: Color(0xFF00BFFF)), + // Updated to Logo Cyan + borderSide: BorderSide(color: _brandColor, width: 2), ), ), keyboardType: keyboardType, @@ -646,8 +700,10 @@ class _RegistrationScreenState extends State { child: ElevatedButton( onPressed: _submit, style: ElevatedButton.styleFrom( - backgroundColor: const Color(0xFF00BFFF), + backgroundColor: _brandColor, // Updated padding: const EdgeInsets.symmetric(vertical: 16), + elevation: 5, + shadowColor: _brandColor.withOpacity(0.5), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12)), ), @@ -656,7 +712,7 @@ class _RegistrationScreenState extends State { style: const TextStyle( fontSize: 16, fontWeight: FontWeight.bold, - color: Colors.black), + color: Color(0xFF1A1A2E)), ), ), ), diff --git a/lib/views/home/map_page_passenger.dart b/lib/views/home/map_page_passenger.dart index 56afa04..9cbb725 100644 --- a/lib/views/home/map_page_passenger.dart +++ b/lib/views/home/map_page_passenger.dart @@ -39,7 +39,7 @@ class MapPagePassenger extends StatelessWidget { return Scaffold( body: SafeArea( - bottom: false, + bottom: true, child: Stack( children: [ GoogleMapPassengerWidget(), @@ -89,17 +89,34 @@ class CancelRidePageShow extends StatelessWidget { @override Widget build(BuildContext context) { return GetBuilder( - builder: (controller) => (controller.polyLines.isNotEmpty && - controller.statusRide != 'Begin') - // || - // controller.timeToPassengerFromDriverAfterApplied == 0 + builder: (controller) { + // نستخدم RideState Enum لأنه أدق، أو نصلح المنطق النصي + // الشرط: + // 1. يوجد خط مسار + // 2. الحالة ليست "بدأت" + // 3. الحالة ليست "انتهت" + // 4. الحالة ليست "قيد التنفيذ" (لزيادة التأكيد) + + // bool showCancelButton = controller.polyLines.isNotEmpty && + // controller.statusRide != 'Begin' && // استخدمنا && + // controller.statusRide != 'inProgress' && + // controller.statusRide != 'Finished'; + + // يمكنك أيضاً استخدام RideState ليكون أدق: + bool showCancelButton = controller.polyLines.isNotEmpty && + controller.currentRideState.value != RideState.inProgress && + controller.currentRideState.value != RideState.finished; + + return showCancelButton ? Positioned( right: box.read(BoxName.lang) != 'ar' ? 10 : null, left: box.read(BoxName.lang) == 'ar' ? 10 : null, top: Get.height * .013, child: GestureDetector( onTap: () { + // استدعاء دالة الإلغاء controller.changeCancelRidePageShow(); + // ملاحظة: تأكد أن الدالة تظهر ديالوج للتأكيد أولاً ولا تلغي فوراً }, child: Container( decoration: BoxDecoration( @@ -115,7 +132,9 @@ class CancelRidePageShow extends StatelessWidget { ), ), )) - : const SizedBox()); + : const SizedBox(); + }, + ); } } diff --git a/lib/views/home/map_widget.dart/apply_order_widget.dart b/lib/views/home/map_widget.dart/apply_order_widget.dart index c8381db..4808c88 100644 --- a/lib/views/home/map_widget.dart/apply_order_widget.dart +++ b/lib/views/home/map_widget.dart/apply_order_widget.dart @@ -5,20 +5,18 @@ import 'package:Intaleq/controller/home/map_passenger_controller.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:get/get.dart'; -import 'package:intl/intl.dart'; // لتنسيق الأرقام +import 'package:intl/intl.dart'; import '../../../constant/box_name.dart'; import '../../../controller/firebase/notification_service.dart'; import '../../../controller/functions/launch.dart'; import '../../../main.dart'; -import '../../widgets/my_textField.dart'; class ApplyOrderWidget extends StatelessWidget { const ApplyOrderWidget({super.key}); @override Widget build(BuildContext context) { - // دالة لتحويل كود اللون الهيكس إلى لون Color parseColor(String colorHex) { if (colorHex.isEmpty) return Colors.grey; try { @@ -39,57 +37,59 @@ class ApplyOrderWidget extends StatelessWidget { return AnimatedPositioned( duration: const Duration(milliseconds: 500), - curve: Curves.elasticOut, // تأثير حركي أجمل - bottom: isVisible ? 0 : -Get.height * 0.6, + curve: Curves.elasticOut, + // تغيير: جعلنا الإخفاء للأسفل أقل حدة ليكون التحريك أسرع + bottom: isVisible ? 0 : -400, left: 0, right: 0, child: Container( - // height: Get.height * 0.38, // زيادة الارتفاع قليلاً للتصميم الجديد decoration: BoxDecoration( color: Theme.of(context).cardColor, - borderRadius: const BorderRadius.vertical(top: Radius.circular(30)), + borderRadius: const BorderRadius.vertical(top: Radius.circular(25)), boxShadow: [ BoxShadow( blurRadius: 20, - spreadRadius: 2, - color: Colors.black.withOpacity(0.15), - offset: const Offset(0, -2), + spreadRadius: 1, + color: Colors.black.withOpacity(0.1), + offset: const Offset(0, -3), ) ], ), - padding: const EdgeInsets.fromLTRB(20, 10, 20, 20), + // تغيير: تقليل الحواف الخارجية بشكل كبير + padding: const EdgeInsets.fromLTRB(16, 8, 16, 16), child: GetBuilder( builder: (c) { return Column( - mainAxisSize: MainAxisSize.min, + mainAxisSize: + MainAxisSize.min, // مهم جداً: يأخذ أقل مساحة ممكنة children: [ - // مقبض صغير في الأعلى + // مقبض صغير Container( width: 40, - height: 5, + height: 4, decoration: BoxDecoration( color: Colors.grey.withOpacity(0.3), borderRadius: BorderRadius.circular(10), ), ), - const SizedBox(height: 15), + const SizedBox(height: 10), // تقليل المسافة - // السعر والعنوان - _buildPriceHeader(context, c), + // 1. [تغيير جوهري] دمج السعر مع الحالة في صف واحد لتوفير المساحة + _buildCompactHeaderRow(context, c), - const SizedBox(height: 15), + const SizedBox(height: 10), // مسافة مضغوطة - // كرت المعلومات الرئيسي (سائق + سيارة) - _buildMainInfoCard(context, c, parseColor), + // 2. كرت المعلومات المضغوط + _buildCompactInfoCard(context, c, parseColor), - const SizedBox(height: 15), + const SizedBox(height: 10), // مسافة مضغوطة - // أزرار الاتصال - _buildContactButtonsRow(context, c), + // 3. أزرار الاتصال (Slim) + _buildCompactButtonsRow(context, c), - const SizedBox(height: 15), + const SizedBox(height: 10), // مسافة مضغوطة - // شريط الوقت + // 4. شريط الوقت c.currentRideState.value == RideState.driverArrived ? const DriverArrivePassengerAndWaitMinute() : const TimeDriverToPassenger(), @@ -103,42 +103,90 @@ class ApplyOrderWidget extends StatelessWidget { } // --------------------------------------------------------------------------- - // 1. قسم السعر (مع التنسيق الجديد) + // [NEW] 1. صف الرأس المضغوط (يحتوي الحالة + الإحصائيات + السعر) // --------------------------------------------------------------------------- - Widget _buildPriceHeader( + Widget _buildCompactHeaderRow( BuildContext context, MapPassengerController controller) { - // تنسيق الرقم (مثلاً: 60,000) + // تنسيق السعر final formatter = NumberFormat("#,###"); String formattedPrice = formatter.format(controller.totalPassenger); - return Column( + // حساب الدقائق + int minutes = + (controller.timeToPassengerFromDriverAfterApplied / 60).ceil(); + if (minutes < 1) minutes = 1; + + // تنسيق المسافة + String distanceDisplay = ""; + try { + double distMeters = double.parse(controller.distanceByPassenger); + if (distMeters >= 1000) { + distanceDisplay = "${(distMeters / 1000).toStringAsFixed(1)} km"; + } else { + distanceDisplay = "${distMeters.toInt()} m"; + } + } catch (e) { + distanceDisplay = controller.distanceByPassenger; + } + + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, children: [ - Text( - 'Driver Accepted Request'.tr, - style: AppStyle.subtitle.copyWith(color: Colors.grey[600]), + // القسم الأيسر: الحالة + Chips + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Driver is on the way'.tr, + style: AppStyle.subtitle.copyWith( + color: Colors.grey[600], + fontWeight: FontWeight.w600, + fontSize: 13, // تصغير الخط + ), + ), + const SizedBox(height: 6), + Row( + children: [ + _buildMiniStatChip( + icon: Icons.access_time_filled_rounded, + text: "$minutes ${'min'.tr}", + color: AppColor.primaryColor, + bgColor: AppColor.primaryColor.withOpacity(0.1), + ), + const SizedBox(width: 8), + _buildMiniStatChip( + icon: Icons.near_me_rounded, + text: distanceDisplay, + color: Colors.orange[800]!, + bgColor: Colors.orange.withOpacity(0.1), + ), + ], + ), + ], + ), ), - const SizedBox(height: 5), - Row( - mainAxisAlignment: MainAxisAlignment.center, + + // القسم الأيمن: السعر (كبير وواضح في الزاوية) + Column( + crossAxisAlignment: CrossAxisAlignment.end, children: [ Text( formattedPrice, style: AppStyle.title.copyWith( - fontSize: 28, + fontSize: 24, // تصغير من 32 إلى 24 fontWeight: FontWeight.w900, color: AppColor.primaryColor, + height: 1.0, ), ), - const SizedBox(width: 5), - Padding( - padding: const EdgeInsets.only(top: 8.0), - child: Text( - 'SYP'.tr, - style: AppStyle.subtitle.copyWith( - fontSize: 14, - fontWeight: FontWeight.bold, - color: Colors.grey[700], - ), + Text( + 'SYP'.tr, + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.bold, + color: Colors.grey[600], ), ), ], @@ -147,207 +195,251 @@ class ApplyOrderWidget extends StatelessWidget { ); } + Widget _buildMiniStatChip({ + required IconData icon, + required String text, + required Color color, + required Color bgColor, + }) { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + decoration: BoxDecoration( + color: bgColor, + borderRadius: BorderRadius.circular(12), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(icon, size: 12, color: color), // تصغير الأيقونة + const SizedBox(width: 4), + Text( + text, + style: TextStyle( + color: color, + fontWeight: FontWeight.bold, + fontSize: 12, // تصغير الخط + ), + ), + ], + ), + ); + } + // --------------------------------------------------------------------------- - // 2. كرت المعلومات الرئيسي (السائق + السيارة 3D) + // [MODIFIED] 2. كرت المعلومات المضغوط جداً // --------------------------------------------------------------------------- - Widget _buildMainInfoCard(BuildContext context, + Widget _buildCompactInfoCard(BuildContext context, MapPassengerController controller, Color Function(String) parseColor) { return Container( - padding: const EdgeInsets.all(12), + // تقليل الحواف الداخلية للكرت + padding: const EdgeInsets.all(10), decoration: BoxDecoration( - color: Theme.of(context).scaffoldBackgroundColor, // لون خلفية فاتح - borderRadius: BorderRadius.circular(20), + color: Theme.of(context).scaffoldBackgroundColor, + borderRadius: BorderRadius.circular(16), border: Border.all(color: Colors.grey.withOpacity(0.1)), ), + child: Column( + children: [ + // الصف العلوي: سائق + سيارة + Row( + children: [ + // صورة السائق (أصغر) + Container( + decoration: BoxDecoration( + shape: BoxShape.circle, + border: Border.all( + color: AppColor.primaryColor.withOpacity(0.2), width: 2), + ), + child: CircleAvatar( + radius: 22, // تصغير من 28 إلى 22 + backgroundColor: Colors.grey[200], + backgroundImage: NetworkImage( + '${AppLink.server}/portrate_captain_image/${controller.driverId}.jpg'), + onBackgroundImageError: (_, __) => + const Icon(Icons.person, color: Colors.grey, size: 20), + ), + ), + + const SizedBox(width: 10), + + // معلومات نصية + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + controller.driverName, + style: const TextStyle( + fontSize: 15, // تصغير الخط + fontWeight: FontWeight.bold, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + const SizedBox(height: 2), + Row( + children: [ + const Icon(Icons.star_rounded, + color: Colors.amber, size: 14), + Text( + " ${controller.driverRate} • ${controller.model}", + style: TextStyle( + fontSize: 12, + color: Colors.grey[700], + fontWeight: FontWeight.w500, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ], + ), + ], + ), + ), + + // أيقونة السيارة (أصغر) + _buildMicroCarIcon(controller, parseColor), + ], + ), + + const SizedBox(height: 8), + + // لوحة السيارة (شريط نحيف جداً) + _buildSlimLicensePlate(controller.licensePlate), + ], + ), + ); + } + + Widget _buildMicroCarIcon( + MapPassengerController controller, Color Function(String) parseColor) { + Color carColor = parseColor(controller.colorHex); + return Container( + height: 40, // تصغير من 50 + width: 40, + decoration: BoxDecoration( + color: carColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + ), + padding: const EdgeInsets.all(4), + child: ColorFiltered( + colorFilter: ColorFilter.mode(carColor, BlendMode.srcIn), + child: Image.asset( + box.read(BoxName.carType) == 'Scooter' || + box.read(BoxName.carType) == 'Pink Bike' + ? 'assets/images/moto.png' + : 'assets/images/car3.png', + fit: BoxFit.contain, + ), + ), + ); + } + + Widget _buildSlimLicensePlate(String plateNumber) { + return Container( + width: double.infinity, + padding: const EdgeInsets.symmetric(vertical: 2, horizontal: 8), + decoration: BoxDecoration( + color: const Color(0xFFF5F5F5), + borderRadius: BorderRadius.circular(6), + border: Border.all(color: Colors.grey.withOpacity(0.3)), + ), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - // الجزء الأيسر: معلومات السائق - Expanded( - child: Row( - children: [ - // صورة السائق - Container( - padding: const EdgeInsets.all(3), - decoration: BoxDecoration( - shape: BoxShape.circle, - border: Border.all(color: AppColor.primaryColor, width: 2), - ), - child: CircleAvatar( - radius: 26, - backgroundImage: NetworkImage( - '${AppLink.server}/portrate_captain_image/${controller.driverId}.jpg'), - onBackgroundImageError: (exception, stackTrace) => - const Icon(Icons.person, size: 26, color: Colors.grey), - ), - ), - const SizedBox(width: 12), - // الاسم والتقييم والسيارة نص - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - controller.driverName, - style: AppStyle.title.copyWith( - fontSize: 16, fontWeight: FontWeight.bold), - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - const SizedBox(height: 4), - Row( - children: [ - const Icon(Icons.star, color: Colors.amber, size: 16), - const SizedBox(width: 4), - Text( - controller.driverRate, - style: const TextStyle( - fontWeight: FontWeight.bold, fontSize: 13), - ), - ], - ), - const SizedBox(height: 4), - Text( - '${controller.model} • ${controller.licensePlate}', - style: TextStyle(color: Colors.grey[600], fontSize: 12), - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - ], - ), - ), - ], + Text( + plateNumber, + style: const TextStyle( + fontFamily: 'RobotoMono', + fontSize: 18, // تصغير الرقم + fontWeight: FontWeight.w900, + color: Colors.black87, + letterSpacing: 1.5, ), ), - - // الجزء الأيمن: أيقونة السيارة الـ 3D - _build3DCarIcon(controller, parseColor), + const Text("SYR", + style: TextStyle( + fontSize: 10, + fontWeight: FontWeight.bold, + color: Colors.black54)), ], ), ); } // --------------------------------------------------------------------------- - // 3. أيقونة السيارة الـ 3D (الدائرة والظلال والخلفية الذكية) + // [MODIFIED] 3. أزرار الاتصال (Slim Buttons) // --------------------------------------------------------------------------- - Widget _build3DCarIcon( - MapPassengerController controller, Color Function(String) parseColor) { - Color carColor = parseColor(controller.colorHex); - - // تحديد سطوع لون السيارة لتحديد لون الخلفية - // إذا كانت السيارة فاتحة (أكثر من 0.6)، الخلفية تكون غامقة، والعكس - bool isCarLight = carColor.computeLuminance() > 0.6; - - // ألوان الخلفية للدائرة - Color bgGradientStart = - isCarLight ? Colors.blueGrey.shade700 : Colors.grey.shade100; - Color bgGradientEnd = - isCarLight ? Colors.blueGrey.shade900 : Colors.grey.shade300; - Color borderColor = isCarLight ? Colors.blueGrey.shade600 : Colors.white; - - return Container( - width: 75, - height: 75, - padding: const EdgeInsets.all(12), - decoration: BoxDecoration( - shape: BoxShape.circle, - // تدرج لوني للخلفية لتبدو 3D - gradient: LinearGradient( - begin: Alignment.topLeft, - end: Alignment.bottomRight, - colors: [bgGradientStart, bgGradientEnd], - ), - border: Border.all(color: borderColor, width: 2), - // ظلال لرفع الدائرة عن السطح - boxShadow: [ - BoxShadow( - color: Colors.black.withOpacity(0.2), - blurRadius: 10, - offset: const Offset(4, 4), - ), - BoxShadow( - color: Colors.white.withOpacity(isCarLight ? 0.1 : 0.8), - blurRadius: 10, - offset: const Offset(-4, -4), - ), - ], - ), - child: Center( - child: ColorFiltered( - colorFilter: ColorFilter.mode(carColor, BlendMode.srcIn), - child: Image.asset( - box.read(BoxName.carType) == 'Scooter' || - box.read(BoxName.carType) == 'Pink Bike' - ? 'assets/images/moto.png' - : 'assets/images/car3.png', - fit: BoxFit.contain, - ), - ), - ), - ); - } - - // --------------------------------------------------------------------------- - // 4. أزرار الاتصال (بتصميم جديد) - // --------------------------------------------------------------------------- - Widget _buildContactButtonsRow( + Widget _buildCompactButtonsRow( BuildContext context, MapPassengerController controller) { - return Row( - children: [ - Expanded( - child: _buildActionButton( - label: 'Message'.tr, - icon: Icons.chat_bubble_outline_rounded, - color: AppColor.blueColor, - onTap: () => _showContactOptionsDialog(context, controller), + return SizedBox( + height: 40, // تحديد ارتفاع ثابت وصغير للأزرار + child: Row( + children: [ + Expanded( + child: _buildSlimButton( + label: 'Message'.tr, // اختصار الكلمة + icon: Icons.chat_bubble_outline_rounded, + color: AppColor.blueColor, + bgColor: AppColor.blueColor.withOpacity(0.08), + onTap: () => _showContactOptionsDialog(context, controller), + ), ), - ), - const SizedBox(width: 15), - Expanded( - child: _buildActionButton( - label: 'Call'.tr, - icon: Icons.phone_rounded, - color: AppColor.greenColor, - onTap: () { - HapticFeedback.heavyImpact(); - makePhoneCall(controller.driverPhone); - }, + const SizedBox(width: 10), // تقليل المسافة + Expanded( + child: _buildSlimButton( + label: 'Call'.tr, // اختصار الكلمة + icon: Icons.phone_rounded, + color: Colors.white, + bgColor: AppColor.greenColor, + onTap: () { + HapticFeedback.heavyImpact(); + makePhoneCall(controller.driverPhone); + }, + isPrimary: true, + ), ), - ), - ], + ], + ), ); } - Widget _buildActionButton({ + Widget _buildSlimButton({ required String label, required IconData icon, required Color color, + required Color bgColor, required VoidCallback onTap, + bool isPrimary = false, }) { return ElevatedButton( onPressed: onTap, style: ElevatedButton.styleFrom( - backgroundColor: color.withOpacity(0.1), + backgroundColor: bgColor, foregroundColor: color, - elevation: 0, - padding: const EdgeInsets.symmetric(vertical: 12), - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), + elevation: isPrimary ? 2 : 0, + padding: EdgeInsets.zero, // إزالة الحواشي الداخلية + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)), ), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - Icon(icon, size: 20), - const SizedBox(width: 8), + Icon(icon, size: 18, color: color), // تصغير الأيقونة + const SizedBox(width: 6), Text( label, - style: const TextStyle(fontWeight: FontWeight.bold), + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 14, // تصغير الخط + color: color, + ), ), ], ), ); } - // --- النوافذ المنبثقة للرسائل (نفس المنطق القديم) --- + // --- النوافذ المنبثقة للرسائل (نفس الكود السابق مع تحسين بسيط) --- void _showContactOptionsDialog( BuildContext context, MapPassengerController controller) { Get.bottomSheet( @@ -361,13 +453,13 @@ class ApplyOrderWidget extends StatelessWidget { mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text('Quick Message'.tr, style: AppStyle.title), + Text('Quick Message'.tr, + style: AppStyle.title.copyWith(fontSize: 16)), const SizedBox(height: 15), ..._buildPredefinedMessages(controller), - const Divider(height: 30), + const Divider(height: 20), _buildCustomMessageInput(controller, context), - SizedBox( - height: MediaQuery.of(context).viewInsets.bottom), // للكيبورد + SizedBox(height: MediaQuery.of(context).viewInsets.bottom), ], ), ), @@ -384,7 +476,7 @@ class ApplyOrderWidget extends StatelessWidget { return messages .map((message) => Padding( - padding: const EdgeInsets.only(bottom: 10.0), + padding: const EdgeInsets.only(bottom: 8.0), child: InkWell( onTap: () { _sendMessage(controller, message.tr); @@ -392,18 +484,20 @@ class ApplyOrderWidget extends StatelessWidget { }, child: Container( padding: - const EdgeInsets.symmetric(vertical: 12, horizontal: 15), + const EdgeInsets.symmetric(vertical: 10, horizontal: 12), decoration: BoxDecoration( - color: Colors.grey.withOpacity(0.1), - borderRadius: BorderRadius.circular(10), + color: Colors.grey.withOpacity(0.08), + borderRadius: BorderRadius.circular(8), + border: Border.all(color: Colors.grey.withOpacity(0.1)), ), child: Row( children: [ - const Icon(Icons.quickreply_rounded, - size: 18, color: Colors.grey), + Icon(Icons.chat_bubble_outline, + size: 16, color: AppColor.primaryColor), const SizedBox(width: 10), Expanded( - child: Text(message.tr, style: AppStyle.subtitle)), + child: Text(message.tr, + style: AppStyle.subtitle.copyWith(fontSize: 13))), ], ), ), @@ -418,10 +512,11 @@ class ApplyOrderWidget extends StatelessWidget { children: [ Expanded( child: Container( - padding: const EdgeInsets.symmetric(horizontal: 15), + height: 40, + padding: const EdgeInsets.symmetric(horizontal: 12), decoration: BoxDecoration( - color: Colors.grey.withOpacity(0.1), - borderRadius: BorderRadius.circular(25), + color: Colors.grey.withOpacity(0.08), + borderRadius: BorderRadius.circular(20), ), child: Form( key: controller.messagesFormKey, @@ -429,24 +524,28 @@ class ApplyOrderWidget extends StatelessWidget { controller: controller.messageToDriver, decoration: InputDecoration( hintText: 'Type your message...'.tr, + hintStyle: TextStyle(color: Colors.grey[500], fontSize: 13), border: InputBorder.none, + contentPadding: const EdgeInsets.only(bottom: 10), ), ), ), ), ), - const SizedBox(width: 10), - CircleAvatar( - backgroundColor: AppColor.primaryColor, - child: IconButton( - onPressed: () { - if (controller.messagesFormKey.currentState!.validate()) { - _sendMessage(controller, controller.messageToDriver.text); - controller.messageToDriver.clear(); - Get.back(); - } - }, - icon: const Icon(Icons.send_rounded, color: Colors.white, size: 20), + const SizedBox(width: 8), + InkWell( + onTap: () { + if (controller.messagesFormKey.currentState!.validate()) { + _sendMessage(controller, controller.messageToDriver.text); + controller.messageToDriver.clear(); + Get.back(); + } + }, + child: CircleAvatar( + backgroundColor: AppColor.primaryColor, + radius: 20, + child: + const Icon(Icons.send_rounded, color: Colors.white, size: 16), ), ), ], @@ -455,10 +554,10 @@ class ApplyOrderWidget extends StatelessWidget { void _sendMessage(MapPassengerController controller, String text) { NotificationService.sendNotification( - category: 'message From passenger', + category: 'MSG_FROM_PASSENGER', target: controller.driverToken.toString(), - title: 'Message From passenger'.tr, - body: text, + title: text.tr, + body: text.tr, isTopic: false, tone: 'ding', driverList: [], @@ -467,7 +566,7 @@ class ApplyOrderWidget extends StatelessWidget { } // ----------------------------------------------------------------------------- -// مؤشرات الانتظار والوقت (نفس المنطق مع تحسين بسيط في التصميم) +// مؤشرات الانتظار والوقت (مضغوطة) // ----------------------------------------------------------------------------- class DriverArrivePassengerAndWaitMinute extends StatelessWidget { @@ -481,24 +580,27 @@ class DriverArrivePassengerAndWaitMinute extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Text('Driver is waiting'.tr, - style: const TextStyle(fontWeight: FontWeight.bold)), + Text('Waiting...'.tr, + style: const TextStyle( + fontWeight: FontWeight.bold, + fontSize: 12, + color: Colors.orange)), Text( controller.stringRemainingTimeDriverWaitPassenger5Minute, style: const TextStyle( - fontWeight: FontWeight.bold, color: AppColor.redColor), + fontWeight: FontWeight.bold, + color: Colors.orange, + fontSize: 12), ), ], ), - const SizedBox(height: 6), + const SizedBox(height: 4), ClipRRect( - borderRadius: BorderRadius.circular(10), + borderRadius: BorderRadius.circular(2), child: LinearProgressIndicator( - backgroundColor: Colors.grey[200], - color: controller.remainingTimeDriverWaitPassenger5Minute < 60 - ? AppColor.redColor - : AppColor.greenColor, - minHeight: 8, + backgroundColor: Colors.orange.withOpacity(0.2), + color: Colors.orange, + minHeight: 4, value: controller.progressTimerDriverWaitPassenger5Minute.toDouble(), ), @@ -520,25 +622,13 @@ class TimeDriverToPassenger extends StatelessWidget { } return Column( children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text('Driver arriving in'.tr, - style: const TextStyle(fontWeight: FontWeight.bold)), - Text( - controller.stringRemainingTimeToPassenger, - style: const TextStyle( - fontWeight: FontWeight.bold, color: AppColor.primaryColor), - ), - ], - ), - const SizedBox(height: 6), + // شريط التقدم فقط لأن الوقت والمسافة موجودان بالأعلى ClipRRect( - borderRadius: BorderRadius.circular(10), + borderRadius: BorderRadius.circular(2), child: LinearProgressIndicator( - backgroundColor: Colors.grey[200], + backgroundColor: AppColor.primaryColor.withOpacity(0.1), color: AppColor.primaryColor, - minHeight: 8, + minHeight: 4, value: controller.progressTimerToPassengerFromDriverAfterApplied .toDouble() .clamp(0.0, 1.0), diff --git a/lib/views/home/map_widget.dart/cancel_raide_page.dart b/lib/views/home/map_widget.dart/cancel_raide_page.dart index fe480e8..5c76737 100644 --- a/lib/views/home/map_widget.dart/cancel_raide_page.dart +++ b/lib/views/home/map_widget.dart/cancel_raide_page.dart @@ -5,97 +5,156 @@ import 'package:Intaleq/constant/style.dart'; import 'package:Intaleq/controller/home/map_passenger_controller.dart'; import '../../widgets/elevated_btn.dart'; +// دالة لإظهار الشيت void showCancelRideBottomSheet() { Get.bottomSheet( - cancelRidePage(), + const CancelRidePageWidget(), backgroundColor: Colors.transparent, isScrollControlled: true, ); } -GetBuilder cancelRidePage() { - Get.put(MapPassengerController()); +// الويدجت مفصولة لترتيب الكود +class CancelRidePageWidget extends StatelessWidget { + const CancelRidePageWidget({Key? key}) : super(key: key); - final List reasons = [ - "I don't need a ride anymore".tr, - "I was just trying the application".tr, - "No driver accepted my request".tr, - "I added the wrong pick-up/drop-off location".tr, - "I don't have a reason".tr, - "Other".tr, - ]; + @override + Widget build(BuildContext context) { + // تأكد من وجود الكنترولر + final controller = Get.find(); - return GetBuilder( - builder: (controller) => controller.isCancelRidePageShown - ? Container( - height: Get.height * 0.6, - padding: const EdgeInsets.all(20), - decoration: BoxDecoration( - color: Colors.white, - boxShadow: [ - BoxShadow( - color: Colors.black.withOpacity(0.2), - offset: const Offset(0, 8), - blurRadius: 16, + final List reasons = [ + "Changed my mind".tr, + "Found another transport".tr, + "Driver is taking too long".tr, + "Driver asked me to cancel".tr, + "Wrong pickup location".tr, + "Other".tr, + ]; + + return Container( + height: Get.height * 0.7, // ارتفاع مناسب + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 15), + decoration: const BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.vertical(top: Radius.circular(25)), + ), + child: GetBuilder( + builder: (controller) => Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + // مؤشر السحب + Center( + child: Container( + width: 50, + height: 5, + decoration: BoxDecoration( + color: Colors.grey[300], + borderRadius: BorderRadius.circular(10), ), - ], - borderRadius: BorderRadius.circular(20), + ), ), - child: Column( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - 'Can we know why you want to cancel Ride ?'.tr, - style: AppStyle.title - .copyWith(fontSize: 18, fontWeight: FontWeight.bold), - textAlign: TextAlign.center, - ), - const SizedBox(height: 20), - Expanded( - child: ListView.separated( - itemCount: reasons.length, - separatorBuilder: (context, index) => const Divider(), - itemBuilder: (context, index) { - return ListTile( + const SizedBox(height: 20), + + Text( + 'Why do you want to cancel?'.tr, + style: AppStyle.title + .copyWith(fontSize: 18, fontWeight: FontWeight.bold), + textAlign: TextAlign.center, + ), + const SizedBox(height: 10), + + Expanded( + child: ListView.separated( + itemCount: reasons.length, + separatorBuilder: (context, index) => const Divider(height: 1), + itemBuilder: (context, index) { + bool isSelected = controller.selectedReasonIndex == index; + return Column( + children: [ + ListTile( + contentPadding: EdgeInsets.zero, title: Text( reasons[index], - style: AppStyle.title.copyWith(fontSize: 16), - ), - leading: Radio( - value: index, - groupValue: controller.selectedReason, - onChanged: (int? value) { - controller.selectReason(value!, reasons[index]); - }, - activeColor: AppColor.primaryColor, + style: TextStyle( + fontWeight: isSelected + ? FontWeight.bold + : FontWeight.normal, + color: isSelected + ? AppColor.primaryColor + : Colors.black87, + fontSize: 15), ), + trailing: isSelected + ? Icon(Icons.radio_button_checked, + color: AppColor.primaryColor) + : Icon(Icons.radio_button_off, color: Colors.grey), onTap: () { controller.selectReason(index, reasons[index]); }, - ); - }, - ), - ), - const SizedBox(height: 20), - MyElevatedButton( - title: 'Cancel Ride'.tr, - onPressed: () { - if (controller.selectedReason == -1) { - Get.snackbar( - 'You Should be select reason.'.tr, - '', - snackPosition: SnackPosition.BOTTOM, - backgroundColor: AppColor.redColor, - colorText: Colors.white, - ); - } else { - controller.cancelRide(); - } - }, - ), - ], + ), + + // إظهار حقل النص فقط عند اختيار "أخرى" + if (isSelected && reasons[index] == "Other".tr) + Padding( + padding: const EdgeInsets.only( + bottom: 10, left: 10, right: 10), + child: TextField( + controller: controller.otherReasonController, + decoration: InputDecoration( + hintText: "Please write the reason...".tr, + filled: true, + fillColor: Colors.grey[100], + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(10), + borderSide: BorderSide.none, + ), + contentPadding: const EdgeInsets.symmetric( + horizontal: 15, vertical: 12), + ), + maxLines: 2, + ), + ) + ], + ); + }, + ), ), - ) - : const SizedBox(), - ); + + const SizedBox(height: 20), + + // زر التأكيد + SizedBox( + height: 50, + child: ElevatedButton( + style: ElevatedButton.styleFrom( + backgroundColor: AppColor.redColor, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12)), + elevation: 0, + ), + onPressed: () => controller.cancelRide(), + child: Text( + 'Confirm Cancellation'.tr, + style: const TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 16), + ), + ), + ), + const SizedBox(height: 10), + // زر التراجع + Center( + child: TextButton( + onPressed: () => Get.back(), + child: Text("Don't Cancel".tr, + style: TextStyle(color: Colors.grey[600])), + ), + ), + ], + ), + ), + ); + } } diff --git a/lib/views/home/map_widget.dart/car_details_widget_to_go.dart b/lib/views/home/map_widget.dart/car_details_widget_to_go.dart index bc5bf95..25b04ca 100644 --- a/lib/views/home/map_widget.dart/car_details_widget_to_go.dart +++ b/lib/views/home/map_widget.dart/car_details_widget_to_go.dart @@ -16,7 +16,7 @@ import '../../../controller/home/map_passenger_controller.dart'; import '../../../print.dart'; import '../../widgets/mydialoug.dart'; -// --- CarType class (unchanged) --- +// --- CarType class (Unchanged) --- class CarType { final String carType; final String carDetail; @@ -27,21 +27,20 @@ class CarType { {required this.carType, required this.carDetail, required this.image}); } -// --- List of Car Types (unchanged) --- +// --- List of Car Types (Unchanged) --- List carTypes = [ CarType( - carType: 'Speed', + carType: 'Fixed Price', carDetail: 'Closest & Cheapest'.tr, - image: 'assets/images/carspeed.png'), // First choice + image: 'assets/images/carspeed.png'), CarType( carType: 'Comfort', carDetail: 'Comfort choice'.tr, - image: 'assets/images/blob.png'), // Second choice + image: 'assets/images/blob.png'), CarType( carType: 'Electric', carDetail: 'Quiet & Eco-Friendly'.tr, - image: - 'assets/images/electric.png'), // Third choice - NOTE: Use your actual image path + image: 'assets/images/electric.png'), CarType( carType: 'Lady', carDetail: 'Lady Captain for girls'.tr, @@ -62,8 +61,7 @@ class CarDetailsTypeToChoose extends StatelessWidget { final textToSpeechController = Get.put(TextToSpeechController()); void _prepareCarTypes(MapPassengerController controller) { - // This logic remains the same - if (controller.distance > 33) { + if (controller.distance > 23) { if (!carTypes.any((car) => car.carType == 'Rayeh Gai')) { carTypes.add(CarType( carType: 'Rayeh Gai', @@ -83,110 +81,403 @@ class CarDetailsTypeToChoose extends StatelessWidget { if (!(controller.isBottomSheetShown) && controller.rideConfirm == false) { return const SizedBox.shrink(); } - // Added a BackdropFilter for a modern glassmorphism effect + + // Main Bottom Sheet Design return Positioned( bottom: 0, left: 0, right: 0, - child: ClipRRect( - borderRadius: const BorderRadius.only( - topLeft: Radius.circular(30), - topRight: Radius.circular(30), - ), - child: BackdropFilter( - filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10), - child: Container( - decoration: BoxDecoration( - color: AppColor.secondaryColor.withOpacity(0.9), - borderRadius: const BorderRadius.only( - topLeft: Radius.circular(30), - topRight: Radius.circular(30), - ), - border: Border.all(color: AppColor.writeColor.withOpacity(0.1)), - ), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - // Added a small handle for visual cue - Container( - width: 40, - height: 5, - margin: const EdgeInsets.symmetric(vertical: 12), - decoration: BoxDecoration( - color: AppColor.writeColor.withOpacity(0.3), - borderRadius: BorderRadius.circular(10), - ), - ), - _buildHeader(controller), - _buildNegativeBalanceWarning(controller), - SizedBox( - height: 140, // Increased height for better spacing - child: ListView.builder( - scrollDirection: Axis.horizontal, - padding: const EdgeInsets.symmetric( - horizontal: 20, vertical: 12), - itemCount: carTypes.length, - itemBuilder: (context, index) { - final carType = carTypes[index]; - final isSelected = controller.selectedIndex == index; - return _buildHorizontalCarCard( - context, controller, carType, isSelected, index); - }, - ), - ), - _buildPromoButton(context, controller), - const SizedBox(height: 8), // Added padding at the bottom - ], - ), + child: Container( + decoration: BoxDecoration( + color: AppColor + .secondaryColor, // Solid background for better performance + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(30), + topRight: Radius.circular(30), ), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.15), + blurRadius: 20, + spreadRadius: 5, + offset: const Offset(0, -5), + ), + ], + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + // Drag Handle + Center( + child: Container( + width: 50, + height: 5, + margin: const EdgeInsets.symmetric(vertical: 12), + decoration: BoxDecoration( + color: Colors.grey.withOpacity(0.3), + borderRadius: BorderRadius.circular(10), + ), + ), + ), + + // Header (Title + Trip Info) + _buildModernHeader(controller), + + // Warning Message (if any) + _buildNegativeBalanceWarning(controller), + + // Car List + SizedBox( + height: 165, // Fixed height for consistency + child: ListView.separated( + physics: const BouncingScrollPhysics(), + scrollDirection: Axis.horizontal, + padding: + const EdgeInsets.symmetric(horizontal: 20, vertical: 10), + itemCount: carTypes.length, + separatorBuilder: (context, index) => + const SizedBox(width: 12), + itemBuilder: (context, index) { + final carType = carTypes[index]; + final isSelected = controller.selectedIndex == index; + return _buildVerticalCarCard( + context, controller, carType, isSelected, index); + }, + ), + ), + + // Promo Code Button + _buildPromoButton(context, controller), + + // Safe Area spacing + SizedBox(height: MediaQuery.of(context).padding.bottom + 10), + ], ), ), ); }); } - // --- All other methods are here, with updated designs --- + // --- UI Components --- + + Widget _buildModernHeader(MapPassengerController controller) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 5), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Text( + 'Choose your ride'.tr, + style: AppStyle.headTitle.copyWith( + fontSize: 20, + fontWeight: FontWeight.w800, + letterSpacing: 0.5), + ), + ), + + // Trip Info Pill + Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + decoration: BoxDecoration( + color: AppColor.primaryColor.withOpacity(0.08), + borderRadius: BorderRadius.circular(20), + border: Border.all(color: AppColor.primaryColor.withOpacity(0.2)), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(Icons.directions_car_filled_outlined, + size: 16, color: AppColor.primaryColor), + const SizedBox(width: 6), + Text( + '${controller.distance.toStringAsFixed(1)} ${'KM'.tr}', + style: AppStyle.subtitle.copyWith( + fontSize: 13, + fontWeight: FontWeight.bold, + color: AppColor.primaryColor), + ), + Container( + margin: const EdgeInsets.symmetric(horizontal: 8), + height: 12, + width: 1, + color: Colors.grey.shade400), + Icon(Icons.access_time_filled_rounded, + size: 16, color: AppColor.primaryColor), + const SizedBox(width: 6), + Text( + controller.hours > 0 + ? '${controller.hours}h ${controller.minutes}m' + : '${controller.minutes} min', + style: AppStyle.subtitle.copyWith( + fontSize: 13, + fontWeight: FontWeight.bold, + color: AppColor.primaryColor), + ), + ], + ), + ) + ], + ), + ); + } + + Widget _buildVerticalCarCard( + BuildContext context, + MapPassengerController controller, + CarType carType, + bool isSelected, + int index) { + return GestureDetector( + onTap: () { + controller.selectCarFromList(index); + _showCarDetailsDialog( + context, controller, carType, textToSpeechController); + }, + child: AnimatedContainer( + duration: const Duration(milliseconds: 250), + curve: Curves.easeInOut, + width: 110, + decoration: BoxDecoration( + color: isSelected + ? AppColor.primaryColor.withOpacity(0.05) + : Colors.white, + borderRadius: BorderRadius.circular(18), + border: Border.all( + color: isSelected + ? AppColor.primaryColor + : Colors.grey.withOpacity(0.2), + width: isSelected ? 2.0 : 1.0, + ), + boxShadow: isSelected + ? [ + BoxShadow( + color: AppColor.primaryColor.withOpacity(0.2), + blurRadius: 8, + offset: const Offset(0, 4), + ) + ] + : [ + BoxShadow( + color: Colors.grey.withOpacity(0.1), + blurRadius: 4, + offset: const Offset(0, 2), + ) + ], + ), + child: Stack( + alignment: Alignment.center, + children: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + // Image with subtle scaling if selected + AnimatedScale( + scale: isSelected ? 1.1 : 1.0, + duration: const Duration(milliseconds: 250), + child: Image.asset( + carType.image, + height: 50, + fit: BoxFit.contain, + ), + ), + const SizedBox(height: 12), + + // Car Type Text + FittedBox( + fit: BoxFit.scaleDown, + child: Text( + carType.carType.tr, + style: AppStyle.subtitle.copyWith( + fontWeight: + isSelected ? FontWeight.w800 : FontWeight.w600, + fontSize: 14, + color: + isSelected ? AppColor.primaryColor : Colors.black87, + ), + maxLines: 1, + ), + ), + + const SizedBox(height: 6), + + // Price Tag + Container( + padding: + const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + decoration: BoxDecoration( + color: isSelected + ? AppColor.primaryColor + : Colors.grey.shade100, + borderRadius: BorderRadius.circular(12), + ), + child: FittedBox( + child: Text( + '${_getPassengerPriceText(carType, controller)} ${'SYP'.tr}', + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.bold, + color: isSelected ? Colors.white : Colors.black87, + ), + ), + ), + ), + ], + ), + ), + + // Checkmark Badge for Selected Item + if (isSelected) + Positioned( + top: 8, + right: 8, + child: Container( + padding: const EdgeInsets.all(2), + decoration: const BoxDecoration( + color: AppColor.primaryColor, + shape: BoxShape.circle, + ), + child: const Icon(Icons.check, size: 12, color: Colors.white), + ), + ), + ], + ), + ), + ); + } Widget _buildPromoButton( BuildContext context, MapPassengerController controller) { - if (controller.promoTaken) { - return const SizedBox.shrink(); - } + if (controller.promoTaken) return const SizedBox.shrink(); return Padding( - padding: const EdgeInsets.fromLTRB(20, 0, 20, 16), - child: GestureDetector( - onTap: () => _showPromoCodeDialog(context, controller), - child: Container( - padding: const EdgeInsets.symmetric(vertical: 14), - decoration: BoxDecoration( - color: AppColor.primaryColor.withOpacity(0.1), - borderRadius: BorderRadius.circular(16), - border: Border.all( - color: AppColor.primaryColor.withOpacity(0.5), - width: 1, + padding: const EdgeInsets.fromLTRB(20, 10, 20, 5), + child: Material( + color: Colors.transparent, + child: InkWell( + onTap: () => _showPromoCodeDialog(context, controller), + borderRadius: BorderRadius.circular(14), + child: Container( + padding: const EdgeInsets.symmetric(vertical: 14, horizontal: 16), + decoration: BoxDecoration( + color: Colors.grey.withOpacity(0.05), + borderRadius: BorderRadius.circular(14), + border: Border.all(color: Colors.grey.withOpacity(0.2)), + ), + child: Row( + children: [ + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: AppColor.primaryColor.withOpacity(0.1), + shape: BoxShape.circle), + child: Icon(Icons.confirmation_number_outlined, + color: AppColor.primaryColor, size: 20), + ), + const SizedBox(width: 14), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Promo Code'.tr, + style: AppStyle.subtitle.copyWith( + fontSize: 14, fontWeight: FontWeight.bold), + ), + Text( + 'Have a promo code?'.tr, + style: AppStyle.subtitle.copyWith( + fontSize: 12, color: Colors.grey.shade600), + ), + ], + ), + ), + Icon(Icons.arrow_forward_ios_rounded, + size: 16, color: Colors.grey.shade400) + ], ), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Icon(Icons.local_offer_outlined, - color: AppColor.primaryColor, size: 22), - const SizedBox(width: 10), - Text( - 'Have a promo code?'.tr, - style: AppStyle.title.copyWith( - fontSize: 16, - color: AppColor.primaryColor, - fontWeight: FontWeight.w600), - ), - ], ), ), ), ); } + Widget _buildNegativeBalanceWarning(MapPassengerController controller) { + final passengerWallet = + double.tryParse(box.read(BoxName.passengerWalletTotal) ?? '0.0') ?? 0.0; + if (passengerWallet < 0.0) { + return Container( + margin: const EdgeInsets.symmetric(horizontal: 20, vertical: 8), + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: AppColor.redColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + border: Border.all(color: AppColor.redColor.withOpacity(0.3)), + ), + child: Row( + children: [ + Icon(Icons.info_outline_rounded, + color: AppColor.redColor, size: 24), + const SizedBox(width: 12), + Expanded( + child: Text( + '${'You have a negative balance of'.tr} ${passengerWallet.toStringAsFixed(2)} ${'SYP'.tr}.', + style: AppStyle.subtitle.copyWith( + color: AppColor.redColor, + fontWeight: FontWeight.w600, + fontSize: 13), + ), + ), + ], + ), + ); + } + return const SizedBox.shrink(); + } + + // --- Logic Helpers (Copied from your previous code to ensure functionality) --- + + String _getPassengerPriceText( + CarType carType, MapPassengerController mapPassengerController) { + double rawPrice; + switch (carType.carType) { + case 'Comfort': + rawPrice = mapPassengerController.totalPassengerComfort; + break; + case 'Fixed Price': + rawPrice = mapPassengerController.totalPassengerSpeed; + break; + case 'Electric': + rawPrice = mapPassengerController.totalPassengerElectric; + break; + case 'Awfar Car': + rawPrice = mapPassengerController.totalPassengerBalash; + break; + case 'Scooter': + case 'Pink Bike': + rawPrice = mapPassengerController.totalPassengerScooter; + break; + case 'Van': + rawPrice = mapPassengerController.totalPassengerVan; + break; + case 'Lady': + rawPrice = mapPassengerController.totalPassengerLady; + break; + case 'Rayeh Gai': + rawPrice = mapPassengerController.totalPassengerRayehGai; + break; + default: + return '...'; + } + final int roundedPrice = rawPrice.round(); + final formatter = NumberFormat.decimalPattern(); + return formatter.format(roundedPrice); + } + + // --- Dialogs (Styled consistently) --- + void _showPromoCodeDialog( BuildContext context, MapPassengerController controller) { Get.dialog( @@ -194,6 +485,7 @@ class CarDetailsTypeToChoose extends StatelessWidget { shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20.0)), backgroundColor: AppColor.secondaryColor, + elevation: 10, child: Padding( padding: const EdgeInsets.all(24.0), child: Form( @@ -202,17 +494,20 @@ class CarDetailsTypeToChoose extends StatelessWidget { mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.stretch, children: [ + Icon(Icons.local_activity_outlined, + size: 40, color: AppColor.primaryColor), + const SizedBox(height: 16), Text( 'Apply Promo Code'.tr, textAlign: TextAlign.center, - style: AppStyle.headTitle.copyWith(fontSize: 22), + style: AppStyle.headTitle.copyWith(fontSize: 20), ), const SizedBox(height: 8), Text( 'Enter your code below to apply the discount.'.tr, textAlign: TextAlign.center, style: AppStyle.subtitle - .copyWith(color: AppColor.writeColor.withOpacity(0.7)), + .copyWith(color: Colors.grey.shade600, fontSize: 14), ), const SizedBox(height: 24), MyTextForm( @@ -225,15 +520,10 @@ class CarDetailsTypeToChoose extends StatelessWidget { Row( children: [ Expanded( - child: OutlinedButton( + child: TextButton( onPressed: () => Get.back(), - style: OutlinedButton.styleFrom( - foregroundColor: AppColor.writeColor, - padding: const EdgeInsets.symmetric(vertical: 14), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(12)), - side: BorderSide( - color: AppColor.writeColor.withOpacity(0.3)), + style: TextButton.styleFrom( + foregroundColor: Colors.grey, ), child: Text('Cancel'.tr), ), @@ -262,211 +552,6 @@ class CarDetailsTypeToChoose extends StatelessWidget { ); } - Widget _buildHorizontalCarCard( - BuildContext context, - MapPassengerController controller, - CarType carType, - bool isSelected, - int index) { - return InkWell( - onTap: () { - controller.selectCarFromList(index); - _showCarDetailsDialog( - context, controller, carType, textToSpeechController); - }, - borderRadius: BorderRadius.circular(20), - child: AnimatedContainer( - duration: const Duration(milliseconds: 300), - width: 120, // Increased width - margin: const EdgeInsets.only(right: 12), - padding: const EdgeInsets.all(8), // Added padding - decoration: BoxDecoration( - gradient: LinearGradient( - begin: Alignment.topLeft, - end: Alignment.bottomRight, - colors: isSelected - ? [ - AppColor.primaryColor.withOpacity(0.3), - AppColor.primaryColor.withOpacity(0.1) - ] - : [ - AppColor.writeColor.withOpacity(0.05), - AppColor.writeColor.withOpacity(0.1) - ], - ), - borderRadius: BorderRadius.circular(20), // More rounded corners - border: Border.all( - color: isSelected - ? AppColor.primaryColor - : AppColor.writeColor.withOpacity(0.2), - width: isSelected ? 2.5 : 1.0, - ), - boxShadow: isSelected - ? [ - BoxShadow( - color: AppColor.primaryColor.withOpacity(0.3), - blurRadius: 10, - spreadRadius: 1, - ) - ] - : [], - ), - child: Column( - mainAxisAlignment: MainAxisAlignment.spaceAround, // Better alignment - children: [ - Image.asset(carType.image, height: 55), // Slightly larger image - Text( - carType.carType.tr, - style: AppStyle.subtitle - .copyWith(fontWeight: FontWeight.bold, fontSize: 15), - textAlign: TextAlign.center, - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - _buildPriceDisplay(controller, carType), - ], - ), - ), - ); - } - - Widget _buildHeader(MapPassengerController controller) { - return Padding( - padding: const EdgeInsets.fromLTRB(20, 8, 20, 16), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text('Choose your ride'.tr, - style: AppStyle.headTitle.copyWith(fontSize: 24)), - const SizedBox(height: 8), - // Added icons for better visual representation - Row( - children: [ - Icon(Icons.map_outlined, - color: AppColor.primaryColor, size: 16), - const SizedBox(width: 4), - Text( - '${controller.distance.toStringAsFixed(1)} ${'KM'.tr}', - style: AppStyle.subtitle.copyWith( - color: AppColor.primaryColor, - fontWeight: FontWeight.w600, - fontSize: 14), - ), - const SizedBox(width: 12), - Icon(Icons.timer_outlined, - color: AppColor.primaryColor, size: 16), - const SizedBox(width: 4), - Text( - controller.hours > 0 - ? '${controller.hours}h ${controller.minutes}m' - : '${controller.minutes} min', - style: AppStyle.subtitle.copyWith( - color: AppColor.primaryColor, - fontWeight: FontWeight.w600, - fontSize: 14), - ), - ], - ), - ], - ), - ], - ), - ); - } - - Widget _buildNegativeBalanceWarning(MapPassengerController controller) { - final passengerWallet = - double.tryParse(box.read(BoxName.passengerWalletTotal) ?? '0.0') ?? 0.0; - if (passengerWallet < 0.0) { - return Container( - margin: const EdgeInsets.symmetric(horizontal: 20, vertical: 8), - padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 10), - decoration: BoxDecoration( - color: AppColor.redColor.withOpacity(0.9), - borderRadius: BorderRadius.circular(12), - ), - child: Row( - children: [ - const Icon(Icons.error_outline, color: Colors.white, size: 24), - const SizedBox(width: 12), - Expanded( - child: Text( - '${'You have a negative balance of'.tr} ${passengerWallet.toStringAsFixed(2)} ${'SYP'.tr}.', - style: AppStyle.subtitle.copyWith( - color: Colors.white, fontWeight: FontWeight.w600))), - ], - ), - ); - } - return const SizedBox.shrink(); - } - - Widget _buildPriceDisplay( - MapPassengerController mapPassengerController, CarType carType) { - return Text( - '${_getPassengerPriceText(carType, mapPassengerController)} ${'SYP'.tr}', - style: AppStyle.subtitle.copyWith( - fontSize: 15, // Increased font size - fontWeight: FontWeight.bold, - color: AppColor.primaryColor)); - } - - // --- LOGIC METHODS (UNCHANGED) --- - - // 1. قم بإضافة هذا السطر في أعلى الملف - - String _getPassengerPriceText( - CarType carType, MapPassengerController mapPassengerController) { - // الخطوة 1: احصل على السعر كـ double أولاً - double rawPrice; - switch (carType.carType) { - case 'Comfort': - rawPrice = mapPassengerController.totalPassengerComfort; - break; - case 'Speed': - rawPrice = mapPassengerController.totalPassengerSpeed; - break; - case 'Electric': - rawPrice = mapPassengerController.totalPassengerElectric; - break; - case 'Awfar Car': - rawPrice = mapPassengerController.totalPassengerBalash; - break; - case 'Scooter': - case 'Pink Bike': // دمج الحالات المتشابهة - rawPrice = mapPassengerController.totalPassengerScooter; - break; - case 'Van': - rawPrice = mapPassengerController.totalPassengerVan; - break; - case 'Lady': - rawPrice = mapPassengerController.totalPassengerLady; - break; - case 'Rayeh Gai': - rawPrice = mapPassengerController.totalPassengerRayehGai; - break; - default: - return '...'; // إذا كان نوع السيارة غير معروف - } - - // الخطوة 2: قم بإزالة الكسور العشرية - // .round() ستحول 65000.00 إلى 65000 - final int roundedPrice = rawPrice.round(); - - // الخطوة 3: أنشئ "مُنسّق" ليضيف فواصل الآلاف - // NumberFormat.decimalPattern() يستخدم إعدادات اللغة الافتراضية للجهاز - // لوضع الفاصلة (,) أو النقطة (.) حسب الدولة - final formatter = NumberFormat.decimalPattern(); - - // الخطوة 4: قم بتنسيق الرقم الصحيح - // سيحول 65000 إلى "65,000" - return formatter.format(roundedPrice); - } - void _showCarDetailsDialog( BuildContext context, MapPassengerController mapPassengerController, @@ -475,74 +560,75 @@ class CarDetailsTypeToChoose extends StatelessWidget { Get.dialog( Dialog( shape: - RoundedRectangleBorder(borderRadius: BorderRadius.circular(24.0)), - backgroundColor: - Colors.transparent, // Make dialog background transparent + RoundedRectangleBorder(borderRadius: BorderRadius.circular(28.0)), + backgroundColor: Colors.transparent, child: Stack( clipBehavior: Clip.none, alignment: Alignment.topCenter, children: [ - // Main content container Container( - margin: - const EdgeInsets.only(top: 50), // Make space for the image - padding: const EdgeInsets.fromLTRB(20, 70, 20, 20), + margin: const EdgeInsets.only(top: 60), + padding: const EdgeInsets.fromLTRB(24, 70, 24, 24), decoration: BoxDecoration( color: AppColor.secondaryColor, - borderRadius: BorderRadius.circular(24.0), + borderRadius: BorderRadius.circular(28.0), ), child: Column( mainAxisSize: MainAxisSize.min, children: [ Row( mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, children: [ Text( carType.carType.tr, - style: AppStyle.headTitle.copyWith(fontSize: 24), + style: AppStyle.headTitle.copyWith(fontSize: 22), ), const SizedBox(width: 8), - IconButton( - onPressed: () => textToSpeechController.speakText( + InkWell( + onTap: () => textToSpeechController.speakText( _getCarDescription( mapPassengerController, carType)), - icon: Icon(Icons.volume_up_outlined, - color: AppColor.primaryColor, size: 26), - ), + borderRadius: BorderRadius.circular(20), + child: Padding( + padding: const EdgeInsets.all(4.0), + child: Icon(Icons.volume_up_rounded, + color: AppColor.primaryColor, size: 24), + ), + ) ], ), - const SizedBox(height: 12), - Text( - _getCarDescription(mapPassengerController, carType), - textAlign: TextAlign.center, - style: AppStyle.subtitle.copyWith( - color: AppColor.writeColor.withOpacity(0.7), - fontSize: 16, - height: 1.5, + const SizedBox(height: 16), + Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: Colors.grey.withOpacity(0.05), + borderRadius: BorderRadius.circular(16)), + child: Text( + _getCarDescription(mapPassengerController, carType), + textAlign: TextAlign.center, + style: AppStyle.subtitle.copyWith( + color: Colors.black87, + fontSize: 15, + height: 1.4, + ), ), ), - const SizedBox(height: 28), + const SizedBox(height: 24), Row( children: [ Expanded( child: TextButton( onPressed: () => Get.back(), - style: TextButton.styleFrom( - foregroundColor: - AppColor.writeColor.withOpacity(0.8), - padding: const EdgeInsets.symmetric(vertical: 14), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(12)), - ), - child: Text('Cancel'.tr), + child: Text('Back'.tr, + style: TextStyle(color: Colors.grey.shade600)), ), ), const SizedBox(width: 12), Expanded( + flex: 2, child: MyElevatedButton( kolor: AppColor.greenColor, - title: 'Next'.tr, + title: 'Select This Ride'.tr, onPressed: () { Get.back(); _handleCarSelection( @@ -555,10 +641,12 @@ class CarDetailsTypeToChoose extends StatelessWidget { ], ), ), - // Positioned car image Positioned( - top: -10, - child: Image.asset(carType.image, height: 120), + top: 0, + child: Hero( + tag: 'car_${carType.carType}', + child: Image.asset(carType.image, height: 130), + ), ), ], ), @@ -567,6 +655,8 @@ class CarDetailsTypeToChoose extends StatelessWidget { ); } + // --- Logic Helpers (Keep unchanged) --- + String _getCarDescription( MapPassengerController mapPassengerController, CarType carType) { switch (carType.carType) { @@ -578,7 +668,7 @@ class CarDetailsTypeToChoose extends StatelessWidget { .tr : 'Best choice for comfort car and flexible route and stops point' .tr; - case 'Speed': + case 'Fixed Price': return 'This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route' .tr; case 'Electric': @@ -632,7 +722,7 @@ class CarDetailsTypeToChoose extends StatelessWidget { Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ _buildRayehGaiOption(mapPassengerController, 'Awfar Car', mapPassengerController.totalPassengerRayehGaiBalash), - _buildRayehGaiOption(mapPassengerController, 'Speed', + _buildRayehGaiOption(mapPassengerController, 'Fixed Price', mapPassengerController.totalPassengerRayehGai), _buildRayehGaiOption(mapPassengerController, 'Comfort', mapPassengerController.totalPassengerRayehGaiComfort) @@ -661,7 +751,7 @@ class CarDetailsTypeToChoose extends StatelessWidget { switch (carType.carType) { case 'Comfort': return mapPassengerController.totalPassengerComfort; - case 'Speed': + case 'Fixed Price': return mapPassengerController.totalPassengerSpeed; case 'Electric': return mapPassengerController.totalPassengerElectric; diff --git a/lib/views/home/map_widget.dart/form_search_start.dart b/lib/views/home/map_widget.dart/form_search_start.dart index b82dd35..f98e7dd 100644 --- a/lib/views/home/map_widget.dart/form_search_start.dart +++ b/lib/views/home/map_widget.dart/form_search_start.dart @@ -7,53 +7,81 @@ import '../../../constant/style.dart'; import '../../../controller/home/map_passenger_controller.dart'; // --------------------------------------------------- -// -- Widget for Start Point Search -- +// -- Widget for Start Point Search (Updated) -- // --------------------------------------------------- GetBuilder formSearchPlacesStart() { return GetBuilder( + id: 'start_point_form', // إضافة معرف لتحديث هذا الجزء فقط عند الحاجة builder: (controller) => Column( children: [ Padding( padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0), - child: TextFormField( - controller: controller.placeStartController, - onChanged: (value) { - if (controller.placeStartController.text.length > 2) { - controller.getPlacesStart(); - } else if (controller.placeStartController.text.isEmpty) { - controller.clearPlacesStart(); - } - }, - decoration: InputDecoration( - hintText: 'Search for a starting point'.tr, - hintStyle: AppStyle.subtitle.copyWith(color: Colors.grey[600]), - prefixIcon: - const Icon(Icons.search, color: AppColor.primaryColor), - suffixIcon: controller.placeStartController.text.isNotEmpty - ? IconButton( - icon: Icon(Icons.clear, color: Colors.grey[400]), - onPressed: () { - controller.placeStartController.clear(); - controller.clearPlacesStart(); - }, - ) - : null, - contentPadding: - const EdgeInsets.symmetric(horizontal: 16.0, vertical: 10.0), - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(8.0), - borderSide: BorderSide.none, + child: Row( + children: [ + // --- حقل البحث النصي --- + Expanded( + child: TextFormField( + controller: controller.placeStartController, + onChanged: (value) { + if (controller.placeStartController.text.length > 2) { + controller.getPlacesStart(); + } else if (controller.placeStartController.text.isEmpty) { + controller.clearPlacesStart(); + } + }, + decoration: InputDecoration( + hintText: 'Search for a starting point'.tr, + hintStyle: + AppStyle.subtitle.copyWith(color: Colors.grey[600]), + prefixIcon: + const Icon(Icons.search, color: AppColor.primaryColor), + suffixIcon: controller.placeStartController.text.isNotEmpty + ? IconButton( + icon: Icon(Icons.clear, color: Colors.grey[400]), + onPressed: () { + controller.placeStartController.clear(); + controller.clearPlacesStart(); + }, + ) + : null, + contentPadding: const EdgeInsets.symmetric( + horizontal: 16.0, vertical: 10.0), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(8.0), + borderSide: BorderSide.none, + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(8.0), + borderSide: BorderSide(color: AppColor.primaryColor), + ), + filled: true, + fillColor: Colors.grey[50], + ), + ), ), - focusedBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(8.0), - borderSide: BorderSide(color: AppColor.primaryColor), + + const SizedBox(width: 8.0), + + // --- أيقونة اختيار الموقع من الخريطة (الجزء المضاف) --- + IconButton( + onPressed: () { + // هذا السطر مهم جداً: نخبر الكونترولر أننا نحدد نقطة البداية الآن + controller.passengerStartLocationFromMap = true; + + // إخفاء القائمة السفلية وفتح مؤشر الخريطة (Picker) + controller.changeMainBottomMenuMap(); + controller.changePickerShown(); + }, + icon: Icon(Icons.location_on_outlined, + color: AppColor.accentColor, size: 30), + tooltip: 'Pick start point on map'.tr, ), - filled: true, - fillColor: Colors.grey[50], - ), + ], ), ), + + // --- قائمة نتائج البحث --- AnimatedContainer( duration: const Duration(milliseconds: 200), height: controller.placesStart.isNotEmpty ? 300 : 0, @@ -84,11 +112,19 @@ GetBuilder formSearchPlacesStart() { var latitude = res['latitude']; var longitude = res['longitude']; if (latitude != null && longitude != null) { + // تحديث موقع الراكب (نقطة الانطلاق) بناءً على الاختيار controller.passengerLocation = LatLng(double.parse(latitude), double.parse(longitude)); + + // تحديث النص في الحقل controller.placeStartController.text = title; + + // مسح النتائج controller.clearPlacesStart(); - // You might want to update the camera position on the map here + + // إغلاق القائمة والعودة للخريطة لرؤية النتيجة (اختياري حسب منطق تطبيقك) + controller.changeMainBottomMenuMap(); + controller.update(); } }, diff --git a/lib/views/home/map_widget.dart/google_map_passenger_widget.dart b/lib/views/home/map_widget.dart/google_map_passenger_widget.dart index fc0b5fa..baaf523 100644 --- a/lib/views/home/map_widget.dart/google_map_passenger_widget.dart +++ b/lib/views/home/map_widget.dart/google_map_passenger_widget.dart @@ -147,7 +147,7 @@ class GoogleMapPassengerWidget extends StatelessWidget { } }, - myLocationEnabled: true, + myLocationEnabled: false, ), ), ); diff --git a/lib/views/home/map_widget.dart/left_main_menu_icons.dart b/lib/views/home/map_widget.dart/left_main_menu_icons.dart index 8fff07f..29c8c30 100644 --- a/lib/views/home/map_widget.dart/left_main_menu_icons.dart +++ b/lib/views/home/map_widget.dart/left_main_menu_icons.dart @@ -15,6 +15,7 @@ import '../../../controller/home/map_passenger_controller.dart'; import '../../../controller/home/vip_waitting_page.dart'; import '../../../env/env.dart'; import '../../../print.dart'; +import '../../auth/otp_page.dart'; // --- الدالة الرئيسية بالتصميم الجديد --- GetBuilder leftMainMenuIcons() { @@ -35,9 +36,9 @@ GetBuilder leftMainMenuIcons() { duration: const Duration(milliseconds: 300), padding: const EdgeInsets.symmetric(horizontal: 8), decoration: BoxDecoration( - color: AppColor.secondaryColor.withOpacity(0.8), // لون شبه شفاف + color: AppColor.secondaryColor.withOpacity(0.4), // لون شبه شفاف borderRadius: BorderRadius.circular(50.0), - border: Border.all(color: AppColor.writeColor.withOpacity(0.2)), + border: Border.all(color: AppColor.secondaryColor), ), child: Row( mainAxisAlignment: MainAxisAlignment.center, @@ -49,12 +50,12 @@ GetBuilder leftMainMenuIcons() { tooltip: 'Toggle Map Type', onPressed: () => controller.changeMapType(), ), - _buildVerticalDivider(), - _buildMapActionButton( - icon: Icons.traffic_outlined, - tooltip: 'Toggle Traffic', - onPressed: () => controller.changeMapTraffic(), - ), + // _buildVerticalDivider(), + // _buildMapActionButton( + // icon: Icons.traffic_outlined, + // tooltip: 'Toggle Traffic', + // onPressed: () => controller.changeMapTraffic(), + // ), _buildVerticalDivider(), _buildMapActionButton( icon: Icons.my_location_rounded, @@ -129,22 +130,9 @@ class TestPage extends StatelessWidget { body: Center( child: TextButton( onPressed: () async { - // var token = (box.read(BoxName.tokenFCM).toString()); - // Log.print( - // 'box.read(BoxName.tokenFCM).toString(): ${box.read(BoxName.tokenFCM).toString()}'); - // // 'e-EE5Z5Fn0x5s6EYbtgT6f:APA91bHBTxkbdljuvDF0iPhso58r7fCwGh-WcYh3CYfUJEShUKFcQf496Xc5E6LHqRFKfOQBxYrWSdLO8d9gLbL-IdgyDuZ7jNUjzvrcV_YmagDtgz7-UNw'; - // // 'fdN1o8akwURHj47wvShC4T:APA91bFm-mFfFjdCbHsDReN0MzPE1hiaHKtPJnzayMec6LiInjzk6YCX41SeF0T1FE7Z6d4Hjy1AkZhLIeebSgX4RrodzwSwZSH0kboTQEfqkrjrk4xw9aM'; - // NotificationService.sendNotification( - // target: - // 'eznj5vRWRnqwKNtKJBaYNg:APA91bHhJ2DJ1KQa3KRx6wQtX8BkFHq6I_-dXGxT16p6pnV5AwI0bWOeiTJOI35VfTBaK4YSCKmAB4SsRnpARK0MTJ96xtpPmwAKfkvsZFga8OoGMeb3PmA', - // title: 'Order', - // body: 'endNameAddress', - // isTopic: false, - // tone: 'tone1', - // category: 'Order', // استخدام الفئة الثابتة - // driverList: []); - // RideState.driverApplied; - // Get.find().Ride + // print(box.read(BoxName.lowEndMode)); + // box.read(BoxName.lowEndMode) + Get.to(PhoneNumberScreen()); }, child: Text( "Text Button", diff --git a/lib/views/home/map_widget.dart/main_bottom_Menu_map.dart b/lib/views/home/map_widget.dart/main_bottom_Menu_map.dart index 2995344..e4f1e42 100644 --- a/lib/views/home/map_widget.dart/main_bottom_Menu_map.dart +++ b/lib/views/home/map_widget.dart/main_bottom_Menu_map.dart @@ -533,12 +533,12 @@ class MainBottomMenuMap extends StatelessWidget { // else - Text( - controller.nearestCar != null - ? 'Nearest Car: ${controller.nearestDistance.toStringAsFixed(0)} m' - : 'No cars nearby'.tr, - style: TextStyle(color: Colors.grey.shade600), - ), + // Text( + // controller.nearestCar != null + // ? 'Nearest Car: ${controller.nearestDistance.toStringAsFixed(0)} m' + // : 'No cars nearby'.tr, + // style: TextStyle(color: Colors.grey.shade600), + // ), ], ), ], diff --git a/lib/views/home/map_widget.dart/ride_begin_passenger.dart b/lib/views/home/map_widget.dart/ride_begin_passenger.dart index 9ee2649..be80fbc 100644 --- a/lib/views/home/map_widget.dart/ride_begin_passenger.dart +++ b/lib/views/home/map_widget.dart/ride_begin_passenger.dart @@ -1,297 +1,10 @@ -// import 'package:flutter/material.dart'; -// import 'package:flutter_font_icons/flutter_font_icons.dart'; -// import 'package:get/get.dart'; -// import 'package:Intaleq/constant/box_name.dart'; -// import 'package:Intaleq/controller/profile/profile_controller.dart'; -// import 'package:Intaleq/main.dart'; -// import 'package:Intaleq/views/home/profile/complaint_page.dart'; - -// import '../../../constant/colors.dart'; -// import '../../../constant/links.dart'; -// import '../../../constant/style.dart'; -// import '../../../controller/functions/audio_record1.dart'; -// import '../../../controller/functions/launch.dart'; -// import '../../../controller/functions/toast.dart'; -// import '../../../controller/home/map_passenger_controller.dart'; - -// // --- الويدجت الرئيسية بالتصميم الجديد --- -// class RideBeginPassenger extends StatelessWidget { -// const RideBeginPassenger({super.key}); - -// @override -// Widget build(BuildContext context) { -// // --- نفس منطق استدعاء الكنترولرز --- -// final ProfileController profileController = Get.put(ProfileController()); -// final AudioRecorderController audioController = -// Get.put(AudioRecorderController()); - -// return GetBuilder(builder: (controller) { -// // --- نفس شرط الإظهار الخاص بك --- -// if (controller.statusRide != 'Begin') { -// return const SizedBox.shrink(); -// } - -// return Positioned( -// left: 0, -// right: 0, -// bottom: 0, -// child: Container( -// decoration: BoxDecoration( -// color: AppColor.secondaryColor, -// borderRadius: const BorderRadius.only( -// topLeft: Radius.circular(24), -// topRight: Radius.circular(24), -// ), -// boxShadow: [ -// BoxShadow( -// color: Colors.black.withOpacity(0.2), -// blurRadius: 20, -// offset: const Offset(0, -5), -// ), -// ], -// ), -// child: Padding( -// padding: const EdgeInsets.fromLTRB(16, 12, 16, 16), -// child: Column( -// mainAxisSize: MainAxisSize.min, -// children: [ -// // مقبض السحب (Handle) -// Container( -// width: 40, -// height: 5, -// decoration: BoxDecoration( -// color: AppColor.writeColor.withOpacity(0.3), -// borderRadius: BorderRadius.circular(12), -// ), -// ), -// const SizedBox(height: 12), - -// // --- 1. قسم معلومات السائق --- -// _buildDriverInfo(controller), -// const Divider(height: 24, thickness: 0.5), - -// // --- 2. قسم تقدم الرحلة --- -// _buildTripProgress(controller), -// const SizedBox(height: 16), - -// // --- 3. قسم الإجراءات والأمان --- -// _buildActionButtons( -// context, controller, profileController, audioController), -// ], -// ), -// ), -// ), -// ); -// }); -// } - -// // --- ويدجت مساعدة لعرض معلومات السائق بشكل منظم --- -// Widget _buildDriverInfo(MapPassengerController controller) { -// return Row( -// children: [ -// CircleAvatar( -// radius: 28, -// backgroundImage: NetworkImage( -// '${AppLink.server}/portrate_captain_image/${controller.driverId}.jpg'), -// ), -// const SizedBox(width: 12), -// Expanded( -// child: Column( -// crossAxisAlignment: CrossAxisAlignment.start, -// children: [ -// Text(controller.driverName, -// style: AppStyle.title.copyWith(fontWeight: FontWeight.bold)), -// const SizedBox(height: 2), -// Text( -// '${controller.make} ${controller.model} • ${box.read(BoxName.carType)}', -// style: AppStyle.subtitle -// .copyWith(color: AppColor.writeColor.withOpacity(0.7)), -// ), -// ], -// ), -// ), -// const SizedBox(width: 12), -// Column( -// crossAxisAlignment: CrossAxisAlignment.end, -// children: [ -// Container( -// padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), -// decoration: BoxDecoration( -// color: AppColor.writeColor.withOpacity(0.1), -// borderRadius: BorderRadius.circular(6), -// ), -// child: Text( -// controller.licensePlate, -// style: AppStyle.subtitle -// .copyWith(fontWeight: FontWeight.bold, letterSpacing: 1.5), -// ), -// ), -// const SizedBox(height: 4), -// Row( -// children: [ -// Text(controller.driverRate, -// style: AppStyle.subtitle -// .copyWith(fontWeight: FontWeight.bold)), -// const SizedBox(width: 2), -// const Icon(Icons.star_rounded, -// color: AppColor.yellowColor, size: 16), -// ], -// ), -// ], -// ) -// ], -// ); -// } - -// // --- ويدجت مساعدة لعرض شريط التقدم --- -// Widget _buildTripProgress(MapPassengerController controller) { -// return Column( -// children: [ -// Row( -// mainAxisAlignment: MainAxisAlignment.spaceBetween, -// children: [ -// Text('Time to Destination'.tr, style: AppStyle.subtitle), -// Text(controller.stringRemainingTimeRideBegin, -// style: AppStyle.subtitle.copyWith( -// fontWeight: FontWeight.bold, color: AppColor.primaryColor)), -// ], -// ), -// const SizedBox(height: 8), -// ClipRRect( -// borderRadius: BorderRadius.circular(10), -// child: LinearProgressIndicator( -// backgroundColor: AppColor.primaryColor.withOpacity(0.2), -// color: controller.remainingTimeTimerRideBegin < 60 -// ? AppColor.redColor -// : AppColor.greenColor, -// minHeight: 10, -// value: controller.progressTimerRideBegin.toDouble(), -// ), -// ), -// ], -// ); -// } - -// // --- ويدجت مساعدة لعرض أزرار الإجراءات --- -// Widget _buildActionButtons( -// BuildContext context, -// MapPassengerController controller, -// ProfileController profileController, -// AudioRecorderController audioController) { -// return Row( -// mainAxisAlignment: MainAxisAlignment.spaceAround, -// children: [ -// _buildActionButton( -// icon: Icons.sos_rounded, -// label: 'SOS'.tr, -// color: AppColor.redColor, -// onTap: () async { -// // --- نفس منطقك القديم --- -// if (box.read(BoxName.sosPhonePassenger) == null) { -// await profileController.updatField( -// 'sosPhone', TextInputType.phone); -// box.write(BoxName.sosPhonePassenger, -// profileController.prfoileData['sosPhone']); -// } else { -// makePhoneCall('112'); -// } -// }), -// _buildActionButton( -// icon: FontAwesome.whatsapp, -// label: 'WhatsApp'.tr, -// color: AppColor.greenColor, -// onTap: () async { -// // --- نفس منطقك القديم --- -// if (box.read(BoxName.sosPhonePassenger) == null || -// box.read(BoxName.sosPhonePassenger) == 'sos') { -// await profileController.updatField( -// 'sosPhone', TextInputType.phone); -// box.write(BoxName.sosPhonePassenger, -// profileController.prfoileData['sosPhone']); -// } else { -// final phoneNumber = -// box.read(BoxName.sosPhonePassenger).toString(); - -// final phone = controller.formatSyrianPhoneNumber(phoneNumber); -// controller.sendWhatsapp(phone); // -// } -// }), -// _buildActionButton( -// icon: Icons.share_location_outlined, // أيقونة جديدة ومناسبة -// label: 'Share'.tr, // اسم جديد وواضح -// color: AppColor.blueColor, -// onTap: () async { -// // نفس الوظيفة السابقة التي كانت تحت اسم "Video Call" -// await controller.getTokenForParent(); -// }), -// _buildActionButton( -// icon: audioController.isRecording -// ? Icons.mic_off_rounded -// : Icons.mic_none_rounded, -// label: audioController.isRecording ? 'Stop'.tr : 'Record'.tr, -// color: AppColor.primaryColor, -// onTap: () async { -// // --- نفس منطقك القديم --- -// if (audioController.isRecording == false) { -// await audioController.startRecording(); -// Toast.show(context, 'Start Record'.tr, AppColor.greenColor); -// } else { -// await audioController.stopRecording(); -// Toast.show(context, 'Record saved'.tr, AppColor.greenColor); -// } -// }, -// ), -// _buildActionButton( -// icon: Icons.note_add_outlined, -// label: 'Complaint'.tr, -// color: AppColor.yellowColor, -// onTap: () { -// // --- نفس منطقك القديم --- -// Get.to(() => ComplaintPage(), transition: Transition.downToUp); -// }), -// ], -// ); -// } - -// // --- ويدجت مساعدة لبناء زر إجراء فردي --- -// Widget _buildActionButton( -// {required IconData icon, -// required String label, -// required Color color, -// required VoidCallback onTap}) { -// return InkWell( -// onTap: onTap, -// borderRadius: BorderRadius.circular(12), -// child: Padding( -// padding: const EdgeInsets.all(4.0), -// child: Column( -// mainAxisSize: MainAxisSize.min, -// children: [ -// Container( -// padding: const EdgeInsets.all(12), -// decoration: BoxDecoration( -// color: color.withOpacity(0.1), -// shape: BoxShape.circle, -// ), -// child: Icon(icon, color: color, size: 26), -// ), -// const SizedBox(height: 6), -// Text(label, style: AppStyle.subtitle.copyWith(fontSize: 12)), -// ], -// ), -// ), -// ); -// } -// } import 'package:flutter/material.dart'; import 'package:flutter_font_icons/flutter_font_icons.dart'; import 'package:get/get.dart'; -import 'package:Intaleq/constant/box_name.dart'; -import 'package:Intaleq/controller/profile/profile_controller.dart'; -import 'package:Intaleq/main.dart'; -import 'package:Intaleq/views/home/profile/complaint_page.dart'; import 'package:intl/intl.dart'; +// تأكد من المسارات +import '../../../constant/box_name.dart'; import '../../../constant/colors.dart'; import '../../../constant/links.dart'; import '../../../constant/style.dart'; @@ -299,6 +12,9 @@ import '../../../controller/functions/audio_record1.dart'; import '../../../controller/functions/launch.dart'; import '../../../controller/functions/toast.dart'; import '../../../controller/home/map_passenger_controller.dart'; +import '../../../controller/profile/profile_controller.dart'; +import '../../../main.dart'; +import '../../../views/home/profile/complaint_page.dart'; class RideBeginPassenger extends StatelessWidget { const RideBeginPassenger({super.key}); @@ -312,70 +28,69 @@ class RideBeginPassenger extends StatelessWidget { return Obx(() { final controller = Get.find(); - // شرط الإظهار: تظهر فقط عندما تكون الرحلة جارية + // شرط الإظهار final bool isVisible = controller.currentRideState.value == RideState.inProgress && controller.isStartAppHasRide == false; - ; return AnimatedPositioned( duration: const Duration(milliseconds: 500), - curve: Curves.easeOutBack, // حركة أكثر سلاسة - bottom: isVisible ? 0 : -Get.height * 0.6, + curve: Curves.easeInOutCubic, + // تم تقليل قيمة الإخفاء لأن الارتفاع الكلي للنافذة أصبح أصغر + bottom: isVisible ? 0 : -300, left: 0, right: 0, child: Container( decoration: BoxDecoration( - color: Colors.white, // خلفية بيضاء لنظافة التصميم + color: Colors.white, borderRadius: const BorderRadius.only( - topLeft: Radius.circular(30), - topRight: Radius.circular(30), + topLeft: Radius.circular(25), + topRight: Radius.circular(25), ), boxShadow: [ BoxShadow( - color: Colors.black.withOpacity(0.15), - blurRadius: 25, - spreadRadius: 5, - offset: const Offset(0, -5), + color: Colors.black.withOpacity(0.1), + blurRadius: 20, + spreadRadius: 2, + offset: const Offset(0, -3), ), ], ), child: Padding( - padding: const EdgeInsets.fromLTRB(20, 12, 20, 20), + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 10), child: Column( mainAxisSize: MainAxisSize.min, children: [ - // مقبض السحب - Container( - width: 50, - height: 5, - decoration: BoxDecoration( - color: Colors.grey[300], - borderRadius: BorderRadius.circular(10), + // 1. مقبض السحب + Center( + child: Container( + width: 40, + height: 4, + decoration: BoxDecoration( + color: Colors.grey[300], + borderRadius: BorderRadius.circular(10), + ), ), ), - const SizedBox(height: 20), + const SizedBox(height: 12), - // الصف العلوي: معلومات السائق + السعر المثبت - _buildDriverAndPriceSection(controller), + // 2. هيدر المعلومات (سائق + سيارة + سعر) + _buildCompactHeader(controller), - const SizedBox(height: 20), + const SizedBox(height: 12), - // الصف الأوسط: لوحة السيارة الواقعية + نوع السيارة - _buildCarInfoSection(controller), + // خط فاصل خفيف + const Divider( + height: 1, thickness: 0.5, color: Color(0xFFEEEEEE)), - const SizedBox(height: 20), + const SizedBox(height: 12), - // شريط التقدم والوقت - _buildTripProgress(controller), - - const SizedBox(height: 20), - const Divider(thickness: 1, color: Color(0xFFEEEEEE)), - const SizedBox(height: 10), - - // الأزرار - _buildActionButtons( + // 3. الأزرار (إجراءات) + _buildCompactActionButtons( context, controller, profileController, audioController), + + // إضافة هامش سفلي بسيط لرفع الأزرار عن حافة الشاشة + const SizedBox(height: 5), ], ), ), @@ -384,56 +99,81 @@ class RideBeginPassenger extends StatelessWidget { }); } - // ويدجت معلومات السائق والسعر - Widget _buildDriverAndPriceSection(MapPassengerController controller) { + // --- الهيدر (بدون تغيير، ممتاز) --- + Widget _buildCompactHeader(MapPassengerController controller) { return Row( children: [ // صورة السائق Container( decoration: BoxDecoration( shape: BoxShape.circle, - border: Border.all(color: AppColor.primaryColor, width: 2), - boxShadow: [ - BoxShadow( - color: Colors.black.withOpacity(0.1), - blurRadius: 10, - offset: const Offset(0, 5), - ), - ], + border: Border.all( + color: AppColor.primaryColor.withOpacity(0.5), width: 1.5), ), child: CircleAvatar( - radius: 30, + radius: 24, backgroundImage: NetworkImage( '${AppLink.server}/portrate_captain_image/${controller.driverId}.jpg'), + onBackgroundImageError: (_, __) => const Icon(Icons.person), ), ), - const SizedBox(width: 15), + const SizedBox(width: 10), - // الاسم والتقييم + // الاسم ومعلومات السيارة Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - controller.driverName, - style: AppStyle.title.copyWith( - fontWeight: FontWeight.w800, - fontSize: 18, - color: Colors.black87, - ), - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - const SizedBox(height: 4), Row( children: [ - const Icon(Icons.star_rounded, - color: AppColor.yellowColor, size: 18), + Flexible( + child: Text( + controller.driverName, + style: const TextStyle( + fontWeight: FontWeight.bold, + fontSize: 15, + color: Colors.black87, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), const SizedBox(width: 4), + const Icon(Icons.star, color: Colors.amber, size: 14), Text( controller.driverRate, - style: AppStyle.subtitle.copyWith( - fontWeight: FontWeight.bold, color: Colors.grey[600]), + style: const TextStyle( + fontSize: 12, fontWeight: FontWeight.bold), + ), + ], + ), + const SizedBox(height: 2), + Row( + children: [ + Flexible( + child: Text( + '${controller.model} • ', + style: TextStyle(fontSize: 12, color: Colors.grey[700]), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), + Container( + padding: + const EdgeInsets.symmetric(horizontal: 4, vertical: 1), + decoration: BoxDecoration( + color: Colors.grey[100], + border: Border.all(color: Colors.black12), + borderRadius: BorderRadius.circular(4), + ), + child: Text( + controller.licensePlate, + style: const TextStyle( + fontFamily: 'monospace', + fontSize: 11, + fontWeight: FontWeight.w900, + ), + ), ), ], ), @@ -441,27 +181,26 @@ class RideBeginPassenger extends StatelessWidget { ), ), - // السعر المثبت (تصميم كارد للسعر) + // السعر Container( - padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 6), decoration: BoxDecoration( - color: AppColor.primaryColor.withOpacity(0.1), - borderRadius: BorderRadius.circular(12), - border: Border.all(color: AppColor.primaryColor.withOpacity(0.2)), + color: AppColor.primaryColor.withOpacity(0.08), + borderRadius: BorderRadius.circular(8), ), child: Column( + crossAxisAlignment: CrossAxisAlignment.end, children: [ - Text('Total'.tr, - style: TextStyle(fontSize: 10, color: Colors.grey[600])), Text( - '${NumberFormat('#,###').format(controller.totalPassenger)} 💰', + NumberFormat('#,###').format(controller.totalPassenger), style: const TextStyle( - fontFamily: 'Roboto', fontWeight: FontWeight.w900, - fontSize: 18, + fontSize: 16, color: AppColor.primaryColor, ), ), + Text('SYP', + style: TextStyle(fontSize: 9, color: Colors.grey[600])), ], ), ), @@ -469,163 +208,22 @@ class RideBeginPassenger extends StatelessWidget { ); } - // ويدجت معلومات السيارة ولوحة الأرقام - Widget _buildCarInfoSection(MapPassengerController controller) { - return Container( - padding: const EdgeInsets.all(12), - decoration: BoxDecoration( - color: const Color(0xFFF9F9F9), - borderRadius: BorderRadius.circular(16), - border: Border.all(color: Colors.grey[200]!), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - // نوع السيارة وموديلها - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - '${controller.make} ${controller.model}', - style: const TextStyle( - fontWeight: FontWeight.bold, - fontSize: 16, - color: Colors.black87), - ), - const SizedBox(height: 4), - Container( - padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 2), - decoration: BoxDecoration( - color: Colors.grey[300], - borderRadius: BorderRadius.circular(4), - ), - child: Text( - box.read(BoxName.carType) == 'Speed' - ? 'Fixed Price' - .tr // سيظهر "سعر ثابت" (تأكد من إضافتها لملف الترجمة) - : box.read(BoxName.carType) ?? 'Car', - style: const TextStyle(fontSize: 12, color: Colors.black54), - ), - ), - ], - ), - - // ------------------------------------------- - // تصميم لوحة السيارة الواقعي (Realistic Plate) - // ------------------------------------------- - Container( - padding: const EdgeInsets.symmetric(horizontal: 2, vertical: 2), - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(6), - border: Border.all(color: Colors.black, width: 2), // إطار أسود - boxShadow: [ - BoxShadow( - color: Colors.black.withOpacity(0.1), - blurRadius: 4, - offset: const Offset(2, 2)), - ], - ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - // الشريط الأزرق الجانبي (مثل اللوحات الدولية) - Container( - width: 15, - height: 35, // ارتفاع اللوحة - decoration: const BoxDecoration( - color: Color(0xFF003399), // أزرق غامق - borderRadius: BorderRadius.only( - topLeft: Radius.circular(2), - bottomLeft: Radius.circular(2), - ), - ), - child: const Center( - child: Text( - "SY", // رمز الدولة (مثال) - style: TextStyle( - color: Colors.white, - fontSize: 8, - fontWeight: FontWeight.bold), - ), - ), - ), - const SizedBox(width: 8), - // رقم اللوحة - Text( - controller.licensePlate, // رقم اللوحة من الكونترولر - style: const TextStyle( - fontSize: 20, - fontWeight: FontWeight.w900, - letterSpacing: 2.0, // تباعد الأحرف لتبدو كأرقام محفورة - fontFamily: 'monospace', // خط ثابت العرض ليشبه اللوحات - color: Colors.black, - ), - ), - const SizedBox(width: 8), - ], - ), - ), - ], - ), - ); - } - - Widget _buildTripProgress(MapPassengerController controller) { - return Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - const Icon(Icons.access_time_filled, - size: 16, color: Colors.grey), - const SizedBox(width: 5), - Text('Arriving in'.tr, - style: TextStyle(color: Colors.grey[600], fontSize: 13)), - ], - ), - Text( - controller.stringRemainingTimeRideBegin, - style: const TextStyle( - fontWeight: FontWeight.bold, - fontSize: 16, - color: AppColor.primaryColor, - ), - ), - ], - ), - const SizedBox(height: 10), - ClipRRect( - borderRadius: BorderRadius.circular(10), - child: LinearProgressIndicator( - backgroundColor: Colors.grey[200], - color: controller.remainingTimeTimerRideBegin < 60 - ? AppColor.redColor - : AppColor.primaryColor, - minHeight: 8, - value: controller.progressTimerRideBegin.toDouble(), - ), - ), - ], - ); - } - - Widget _buildActionButtons( + // --- الأزرار (بدون تغيير) --- + Widget _buildCompactActionButtons( BuildContext context, MapPassengerController controller, ProfileController profileController, AudioRecorderController audioController) { - return Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - // زر SOS بتصميم تحذيري - _buildActionButton( + return SizedBox( + height: 60, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + _compactBtn( icon: Icons.sos_rounded, - label: 'SOS', - iconColor: Colors.white, - bgColor: AppColor.redColor, + label: 'SOS'.tr, + color: AppColor.redColor, + bgColor: AppColor.redColor.withOpacity(0.1), onTap: () async { if (box.read(BoxName.sosPhonePassenger) == null) { await profileController.updatField( @@ -635,123 +233,100 @@ class RideBeginPassenger extends StatelessWidget { } else { makePhoneCall('112'); } - }), - - // زر واتساب - _buildActionButton( + }, + ), + _compactBtn( icon: FontAwesome.whatsapp, - label: 'WhatsApp', - iconColor: Colors.white, - bgColor: const Color(0xFF25D366), + label: 'WhatsApp'.tr, + color: const Color(0xFF25D366), + bgColor: const Color(0xFF25D366).withOpacity(0.1), onTap: () async { - if (box.read(BoxName.sosPhonePassenger) == null || - box.read(BoxName.sosPhonePassenger) == 'sos') { + if (box.read(BoxName.sosPhonePassenger) == null) { await profileController.updatField( 'sosPhone', TextInputType.phone); - box.write(BoxName.sosPhonePassenger, - profileController.prfoileData['sosPhone']); } else { - final phoneNumber = - box.read(BoxName.sosPhonePassenger).toString(); - final phone = controller.formatSyrianPhoneNumber(phoneNumber); + final phone = controller.formatSyrianPhoneNumber( + box.read(BoxName.sosPhonePassenger).toString()); controller.sendWhatsapp(phone); } - }), - - // زر المشاركة - _buildActionButton( - icon: Icons.share_location_rounded, - label: 'Share', - iconColor: AppColor.primaryColor, + }, + ), + _compactBtn( + icon: Icons.share, + label: 'Share'.tr, + color: AppColor.primaryColor, bgColor: AppColor.primaryColor.withOpacity(0.1), - onTap: () async { - await controller.shareTripWithFamily(); - }), - - // زر التسجيل - GetBuilder( - init: audioController, - builder: (audioCtx) { - return _buildActionButton( - icon: audioCtx.isRecording ? Icons.stop : Icons.mic, - label: audioCtx.isRecording ? 'Stop' : 'Record', - iconColor: - audioCtx.isRecording ? Colors.white : AppColor.primaryColor, - bgColor: audioCtx.isRecording - ? AppColor.redColor - : AppColor.primaryColor.withOpacity(0.1), - isRecordingAnimation: audioCtx.isRecording, - onTap: () async { - if (audioCtx.isRecording == false) { - await audioCtx.startRecording(); - Toast.show(context, 'Start Record'.tr, AppColor.greenColor); - } else { - await audioCtx.stopRecording(); - Toast.show(context, 'Record saved'.tr, AppColor.greenColor); - } - }, - ); - }, - ), - - // زر الشكوى - _buildActionButton( - icon: Icons.report_gmailerrorred_rounded, + onTap: () async => await controller.shareTripWithFamily(), + ), + GetBuilder( + init: audioController, + builder: (audioCtx) { + return _compactBtn( + icon: audioCtx.isRecording + ? Icons.stop_circle_outlined + : Icons.mic_none_outlined, + label: audioCtx.isRecording ? 'Stop'.tr : 'Record'.tr, + color: audioCtx.isRecording + ? AppColor.redColor + : AppColor.primaryColor, + bgColor: audioCtx.isRecording + ? AppColor.redColor.withOpacity(0.1) + : AppColor.primaryColor.withOpacity(0.1), + onTap: () async { + if (!audioCtx.isRecording) { + await audioCtx.startRecording(); + Toast.show(context, 'Start Record'.tr, AppColor.greenColor); + } else { + await audioCtx.stopRecording(); + Toast.show(context, 'Record saved'.tr, AppColor.greenColor); + } + }, + ); + }, + ), + _compactBtn( + icon: Icons.info_outline_rounded, label: 'Report'.tr, - iconColor: Colors.grey[700]!, + color: Colors.grey[700]!, bgColor: Colors.grey[200]!, - onTap: () { - Get.to(() => ComplaintPage(), transition: Transition.downToUp); - }), - ], + onTap: () => Get.to(() => ComplaintPage()), + ), + ], + ), ); } - Widget _buildActionButton({ + Widget _compactBtn({ required IconData icon, required String label, - required Color iconColor, + required Color color, required Color bgColor, required VoidCallback onTap, - bool isRecordingAnimation = false, }) { - return Column( - mainAxisSize: MainAxisSize.min, - children: [ - InkWell( - onTap: onTap, - borderRadius: BorderRadius.circular(15), - child: AnimatedContainer( - duration: const Duration(milliseconds: 300), - width: 50, - height: 50, + return InkWell( + onTap: onTap, + borderRadius: BorderRadius.circular(10), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + padding: const EdgeInsets.all(8), decoration: BoxDecoration( color: bgColor, - borderRadius: BorderRadius.circular(15), - border: isRecordingAnimation - ? Border.all(color: AppColor.redColor, width: 2) - : null, - boxShadow: [ - BoxShadow( - color: bgColor.withOpacity(0.3), - blurRadius: 8, - offset: const Offset(0, 3), - ), - ], + shape: BoxShape.circle, ), - child: Icon(icon, color: iconColor, size: 24), + child: Icon(icon, size: 20, color: color), ), - ), - const SizedBox(height: 6), - Text( - label.tr, - style: const TextStyle( - fontSize: 11, - fontWeight: FontWeight.w600, - color: Colors.black54, + const SizedBox(height: 4), + Text( + label, + style: TextStyle( + fontSize: 10, + color: Colors.grey[700], + fontWeight: FontWeight.w500), ), - ), - ], + ], + ), ); } } diff --git a/lib/views/home/my_wallet/passenger_wallet_dialoge.dart b/lib/views/home/my_wallet/passenger_wallet_dialoge.dart index a87f5f5..32f29c2 100644 --- a/lib/views/home/my_wallet/passenger_wallet_dialoge.dart +++ b/lib/views/home/my_wallet/passenger_wallet_dialoge.dart @@ -151,8 +151,8 @@ void showPaymentBottomSheet(BuildContext context) { _buildPaymentOption( context: context, controller: controller, - amount: 10000, - bonusAmount: 0, + amount: 500, + bonusAmount: 30, currency: 'SYP'.tr, ), @@ -160,8 +160,8 @@ void showPaymentBottomSheet(BuildContext context) { _buildPaymentOption( context: context, controller: controller, - amount: 20000, - bonusAmount: 500, + amount: 1000, + bonusAmount: 70, currency: 'SYP'.tr, ), @@ -169,8 +169,8 @@ void showPaymentBottomSheet(BuildContext context) { _buildPaymentOption( context: context, controller: controller, - amount: 40000, - bonusAmount: 2500, + amount: 2000, + bonusAmount: 180, currency: 'SYP'.tr, ), @@ -178,8 +178,8 @@ void showPaymentBottomSheet(BuildContext context) { _buildPaymentOption( context: context, controller: controller, - amount: 100000, - bonusAmount: 4000, + amount: 5000, + bonusAmount: 700, currency: 'SYP'.tr, ), @@ -466,18 +466,24 @@ void showPaymentOptions(BuildContext context, PaymentController controller) { Get.to(() => PaymentScreenSmsProvider( amount: double.parse(controller.selectedAmount.toString()))); }, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text('Pay by Sham Cash'.tr), - const SizedBox(width: 10), - Image.asset( - 'assets/images/shamCash.png', - width: 70, - height: 70, - fit: BoxFit.fill, - ), - ], + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Pay by Sham Cash'.tr, + style: AppStyle.title, + ), + const SizedBox(width: 10), + Image.asset( + 'assets/images/shamCash.png', + width: 70, + height: 70, + fit: BoxFit.fill, + ), + ], + ), )), ], cancelButton: CupertinoActionSheetAction( diff --git a/lib/views/home/my_wallet/payment_screen_sham.dart b/lib/views/home/my_wallet/payment_screen_sham.dart index 552f804..31a7191 100644 --- a/lib/views/home/my_wallet/payment_screen_sham.dart +++ b/lib/views/home/my_wallet/payment_screen_sham.dart @@ -8,9 +8,8 @@ import '../../../constant/links.dart'; import '../../../controller/functions/crud.dart'; import '../../../main.dart'; -// خدمة الدفع للراكب (تم تحديث المسارات) +// --- خدمة الدفع (نفس المنطق السابق) --- class PaymentService { - // المسار الجديد لمجلد الركاب final String _baseUrl = "${AppLink.paymentServer}/ride/shamcash/passenger"; Future createInvoice({required double amount}) async { @@ -19,7 +18,7 @@ class PaymentService { final response = await CRUD().postWallet( link: url, payload: { - 'passengerID': box.read(BoxName.passengerID), // استخدام passengerID + 'passengerID': box.read(BoxName.passengerID), 'amount': amount.toString(), }, ).timeout(const Duration(seconds: 15)); @@ -83,21 +82,46 @@ class PaymentScreenSmsProvider extends StatefulWidget { _PaymentScreenSmsProviderState(); } -class _PaymentScreenSmsProviderState extends State { +class _PaymentScreenSmsProviderState extends State + with SingleTickerProviderStateMixin { final PaymentService _paymentService = PaymentService(); Timer? _pollingTimer; PaymentStatus _status = PaymentStatus.creatingInvoice; String? _invoiceNumber; + // العنوان الثابت للدفع (المستخرج من الصورة) + final String _paymentAddress = "80f23afe40499b02f49966c3340ae0fc"; + + // متحكم الأنيميشن للوميض + late AnimationController _blinkController; + late Animation _colorAnimation; + late Animation _shadowAnimation; + @override void initState() { super.initState(); + // إعداد الأنيميشن (وميض أحمر) + _blinkController = AnimationController( + duration: const Duration(milliseconds: 800), + vsync: this, + )..repeat(reverse: true); // يكرر الحركة ذهاباً وإياباً + + _colorAnimation = ColorTween( + begin: Colors.red.shade700, + end: Colors.red.shade100, + ).animate(_blinkController); + + _shadowAnimation = Tween(begin: 2.0, end: 15.0).animate( + CurvedAnimation(parent: _blinkController, curve: Curves.easeInOut), + ); + _createAndPollInvoice(); } @override void dispose() { _pollingTimer?.cancel(); + _blinkController.dispose(); super.dispose(); } @@ -216,7 +240,7 @@ class _PaymentScreenSmsProviderState extends State { // 1. المبلغ Container( width: double.infinity, - padding: const EdgeInsets.symmetric(vertical: 25, horizontal: 15), + padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 15), decoration: BoxDecoration( gradient: LinearGradient( colors: [Colors.blue.shade800, Colors.blue.shade600]), @@ -224,97 +248,166 @@ class _PaymentScreenSmsProviderState extends State { boxShadow: [ BoxShadow( color: Colors.blue.withOpacity(0.25), - blurRadius: 15, - offset: const Offset(0, 8)) + blurRadius: 10, + offset: const Offset(0, 5)) ], ), child: Column( children: [ const Text("المبلغ المطلوب", style: TextStyle(color: Colors.white70, fontSize: 14)), - const SizedBox(height: 8), + const SizedBox(height: 5), Text("${currencyFormat.format(widget.amount)} ل.س", style: const TextStyle( color: Colors.white, - fontSize: 32, + fontSize: 28, fontWeight: FontWeight.bold)), ], ), ), - const SizedBox(height: 30), + const SizedBox(height: 25), - // 2. التعليمات والنسخ (للراكب) - Container( - padding: const EdgeInsets.all(20), - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(16), - border: Border.all(color: Colors.grey.shade200), - boxShadow: [ - BoxShadow( - color: Colors.grey.shade100, - blurRadius: 10, - offset: const Offset(0, 4)) - ], - ), - child: Column( - children: [ - Row( + // 2. رقم البيان (هام جداً - وميض أحمر) + AnimatedBuilder( + animation: _blinkController, + builder: (context, child) { + return Container( + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(16), + border: Border.all( + color: _colorAnimation.value ?? Colors.red, + width: 3.0, // إطار سميك + ), + boxShadow: [ + BoxShadow( + color: (_colorAnimation.value ?? Colors.red) + .withOpacity(0.4), + blurRadius: _shadowAnimation.value, + spreadRadius: 2, + ) + ], + ), + child: Column( children: [ - Container( - padding: const EdgeInsets.all(8), - decoration: BoxDecoration( - color: Colors.orange.shade50, shape: BoxShape.circle), - child: Icon(Icons.priority_high_rounded, - color: Colors.orange.shade800, size: 20), - ), - const SizedBox(width: 12), - const Expanded( - child: Text( - "انسخ الرقم أدناه وضعه في خانة (الملاحظات) عند الدفع.", + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.warning_rounded, + color: Colors.red.shade800, size: 28), + const SizedBox(width: 8), + Text( + "هام جداً: لا تنسَ!", style: TextStyle( - fontSize: 14, fontWeight: FontWeight.w600)), + color: Colors.red.shade900, + fontWeight: FontWeight.bold, + fontSize: 18), + ), + ], + ), + const SizedBox(height: 10), + const Text( + "يجب نسخ (رقم البيان) هذا ووضعه في تطبيق شام كاش لضمان نجاح العملية.", + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 15, + color: Colors.black87, + fontWeight: FontWeight.w600, + ), + ), + const SizedBox(height: 15), + InkWell( + onTap: () { + Clipboard.setData(ClipboardData(text: invoiceText)); + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: const Text("تم نسخ رقم البيان ✅", + textAlign: TextAlign.center), + backgroundColor: Colors.red.shade700)); + }, + borderRadius: BorderRadius.circular(12), + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 15, vertical: 12), + decoration: BoxDecoration( + color: Colors.red.shade50, + borderRadius: BorderRadius.circular(12), + border: Border.all( + color: Colors.red.shade200, width: 1)), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text("رقم البيان (Invoice No)", + style: TextStyle( + fontSize: 12, color: Colors.grey)), + Text(invoiceText, + style: TextStyle( + fontSize: 24, + fontWeight: FontWeight.bold, + letterSpacing: 2.0, + color: Colors.red.shade900)), + ], + ), + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: Colors.red.shade100, + borderRadius: BorderRadius.circular(8), + ), + child: Icon(Icons.copy_rounded, + color: Colors.red.shade900, size: 24), + ), + ], + ), + ), ), ], ), - const SizedBox(height: 20), + ); + }, + ), + const SizedBox(height: 25), + + // 3. عنوان الدفع (اختياري / عادي) + Container( + padding: const EdgeInsets.symmetric(horizontal: 15, vertical: 15), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + border: Border.all(color: Colors.grey.shade300), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text("عنوان الدفع (Payment Address)", + style: TextStyle(fontSize: 12, color: Colors.grey)), + const SizedBox(height: 8), InkWell( onTap: () { - Clipboard.setData(ClipboardData(text: invoiceText)); + Clipboard.setData(ClipboardData(text: _paymentAddress)); ScaffoldMessenger.of(context).showSnackBar(SnackBar( - content: const Text("تم نسخ رقم البيان ✅", + content: const Text("تم نسخ عنوان الدفع ✅", textAlign: TextAlign.center), backgroundColor: Colors.green.shade600)); }, - borderRadius: BorderRadius.circular(12), - child: Container( - padding: const EdgeInsets.symmetric( - horizontal: 15, vertical: 12), - decoration: BoxDecoration( - color: Colors.grey.shade50, - borderRadius: BorderRadius.circular(12), - border: Border.all( - color: Colors.blue.shade200, width: 1.5)), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Text("رقم البيان (Invoice ID)", - style: TextStyle( - fontSize: 12, color: Colors.grey)), - Text(invoiceText, - style: const TextStyle( - fontSize: 22, - fontWeight: FontWeight.bold, - letterSpacing: 1.5)), - ], - ), - const Icon(Icons.copy_rounded, - color: Colors.blue, size: 24), - ], - ), + child: Row( + children: [ + Expanded( + child: Text(_paymentAddress, + style: const TextStyle( + fontSize: 14, + fontWeight: FontWeight.bold, + fontFamily: 'Courier', + color: Colors.black87, + ), + overflow: TextOverflow.ellipsis), + ), + const SizedBox(width: 8), + const Icon(Icons.copy, size: 18, color: Colors.grey), + ], ), ), ], @@ -322,10 +415,10 @@ class _PaymentScreenSmsProviderState extends State { ), const SizedBox(height: 30), - // 3. QR Code - const Text("امسح الرمز للدفع", + // 4. QR Code + const Text("أو امسح الرمز للدفع", style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold)), - const SizedBox(height: 15), + const SizedBox(height: 10), GestureDetector( onTap: () { showDialog( @@ -336,30 +429,23 @@ class _PaymentScreenSmsProviderState extends State { child: Image.asset(widget.qrImagePath)))); }, child: Container( - padding: const EdgeInsets.all(15), + padding: const EdgeInsets.all(10), decoration: BoxDecoration( color: Colors.white, - borderRadius: BorderRadius.circular(20), + borderRadius: BorderRadius.circular(15), border: Border.all(color: Colors.grey.shade300)), - child: Column( - children: [ - Image.asset(widget.qrImagePath, - width: 180, - height: 180, - fit: BoxFit.contain, - errorBuilder: (c, o, s) => const Icon(Icons.qr_code_2, - size: 100, color: Colors.grey)), - const SizedBox(height: 8), - const Text("اضغط للتكبير", - style: TextStyle(fontSize: 10, color: Colors.grey)), - ], - ), + child: Image.asset(widget.qrImagePath, + width: 150, + height: 150, + fit: BoxFit.contain, + errorBuilder: (c, o, s) => const Icon(Icons.qr_code_2, + size: 100, color: Colors.grey)), ), ), - const SizedBox(height: 40), + const SizedBox(height: 30), const LinearProgressIndicator(backgroundColor: Colors.white), const SizedBox(height: 10), - const Text("ننتظر إشعار الدفع تلقائياً...", + const Text("جاري التحقق من الدفع تلقائياً...", style: TextStyle(color: Colors.grey, fontSize: 12)), const SizedBox(height: 20), ], @@ -405,7 +491,7 @@ class _PaymentScreenSmsProviderState extends State { const SizedBox(height: 15), const Padding( padding: EdgeInsets.symmetric(horizontal: 30), - child: Text("لم يصلنا إشعار الدفع.", + child: Text("لم يصلنا إشعار الدفع خلال الوقت المحدد.", textAlign: TextAlign.center, style: TextStyle(color: Colors.grey))), const SizedBox(height: 40), diff --git a/lib/views/widgets/mydialoug.dart b/lib/views/widgets/mydialoug.dart index 4784783..2471a52 100644 --- a/lib/views/widgets/mydialoug.dart +++ b/lib/views/widgets/mydialoug.dart @@ -106,7 +106,7 @@ class MyDialog extends GetxController { Get.back(); }, child: Text( - 'Cancel', + 'Cancel'.tr, style: TextStyle( color: AppColor.redColor, fontWeight: FontWeight.w600, diff --git a/pubspec.lock b/pubspec.lock index 62758d2..3d11234 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1212,10 +1212,10 @@ packages: dependency: transitive description: name: js - sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc" + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 url: "https://pub.dev" source: hosted - version: "0.7.2" + version: "0.6.7" json_annotation: dependency: transitive description: @@ -1828,6 +1828,22 @@ packages: description: flutter source: sdk version: "0.0.0" + socket_io_client: + dependency: "direct main" + description: + name: socket_io_client + sha256: "64bd271703db3682d4195dd813c555413d21a49bbaef7c3ed38932fd2a209a10" + url: "https://pub.dev" + source: hosted + version: "1.0.2" + socket_io_common: + dependency: transitive + description: + name: socket_io_common + sha256: "469c7e6bb0c8d571a5158c1352112654f03aedc2f0a246533e1cbdb41efa4937" + url: "https://pub.dev" + source: hosted + version: "1.0.1" source_gen: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 845238a..64ad20e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -78,6 +78,7 @@ dependencies: internet_connection_checker: ^3.0.1 connectivity_plus: ^6.1.5 app_links: ^6.4.1 + socket_io_client: ^1.0.2 # flutter_map: ^8.2.2 # latlong2: ^0.9.1 # home_widget: ^0.7.0+1