From 524933166109691f7184f1da3647bbc509fc0f67 Mon Sep 17 00:00:00 2001 From: cedrick2711 Date: Tue, 15 Sep 2026 12:28:12 -0400 Subject: [PATCH] test docu, non fonctionnel pour l'instant --- app/models/document.py | 4 +- app/services/documents.py | 6 +- app/translations/en/LC_MESSAGES/messages.mo | Bin 48052 -> 54138 bytes app/translations/en/LC_MESSAGES/messages.po | 1146 +++++++++++++----- app/translations/fr/LC_MESSAGES/messages.mo | Bin 52586 -> 59150 bytes app/translations/fr/LC_MESSAGES/messages.po | 1154 +++++++++++++------ 6 files changed, 1662 insertions(+), 648 deletions(-) diff --git a/app/models/document.py b/app/models/document.py index 120a96a..e5004c1 100644 --- a/app/models/document.py +++ b/app/models/document.py @@ -84,7 +84,7 @@ class Document(db.Model): ) assignments = db.relationship( 'DocumentAssignment', - backref='assigned_document', + back_populates='document', lazy='dynamic', order_by='DocumentAssignment.created_at', foreign_keys='DocumentAssignment.document_id', @@ -161,7 +161,7 @@ class DocumentAssignment(db.Model): filed_team_id = db.Column(db.Integer, db.ForeignKey('org_teams.id'), nullable=True) created_at = db.Column(db.DateTime, default=utc_now_naive) - document = db.relationship('Document', foreign_keys=[document_id]) + document = db.relationship('Document', back_populates='assignments', foreign_keys=[document_id]) user = db.relationship('User', foreign_keys=[user_id], backref='document_assignments') completed_version = db.relationship('DocumentVersion', foreign_keys=[completed_version_id]) filed_team = db.relationship('OrgTeam', foreign_keys=[filed_team_id]) diff --git a/app/services/documents.py b/app/services/documents.py index 3fbd6fd..ada4f37 100644 --- a/app/services/documents.py +++ b/app/services/documents.py @@ -32,14 +32,14 @@ def user_org_team_ids(user): relationships (many-to-many *and* legacy single column) for staff. An admin or a scout belongs to none, regardless of how many teams exist. """ - from app.permissions import coach_org_team_ids, manager_org_team_ids + from app.permissions import coach_org_teams, manager_org_teams if isinstance(user, Player): return [tp.org_team_id for tp in user.team_placements] if isinstance(user, Coach): - return coach_org_team_ids(user) + return [team.id for team in coach_org_teams(user)] if isinstance(user, Manager): - return manager_org_team_ids(user) + return [team.id for team in manager_org_teams(user)] return [] diff --git a/app/translations/en/LC_MESSAGES/messages.mo b/app/translations/en/LC_MESSAGES/messages.mo index b9c72fe384ed970ad687ddbb14f4d244ccd47734..7c1380e1e5be24bb6911591070cb9b4f5fa2eeb1 100644 GIT binary patch literal 54138 zcmeI537niong3e|S0EfA;Xd93NG8e5kV!%k!jXhbLL!+YW+p*IAwAQbnI=8mLmvrI zTn<4|L=oh2MOR!@4n+`A5Jf>myzxRsV3kW2T^C%?6~+JeS5MX3Z}&_N`MbM_;|J&4 zRd2m@JXQ77Q^#9*Wb}y3Qv7fGZBwZO;L?5Ms{QZGsj1WioNtBvm-<)!jD|n*{1x02 z_lw@WTU#pCgnK-k3{QXu!}YKkUJhH~J@8QY9GnjKo|Z~Q@C0}W%zIu8$Kk#e?gW1f z4}|{)cZV;*z2R;|vM-zncZKue7`OtCf?2p5EW^Fv+o0b202~W%furHqz55~m{8^~< zcAAk&?ExpkJ>ij_9iC~Zc&grgp?81SyFcsQ_j~uFQ2F_tcW--y<#TVSbPn_GS>C-6 zj>Z2(sB-p0mH!=3`MVM-U$;S(;~P-&ei$nJ$eG4N;dtD~!Z9!nRbT7j_VB~r|6@>c z`vO$F_rsmx!*Cb)G~5Bc0QKHWP;%dHRw_kPN{xX#!hN9RJPxYA>T$?Z^0^AV`_^LwcLOqh+V;54`#z8)&vC!pf_3Y46`;oU!jO6M^s z`90^k?U9zRF;MSKfJ*0ZsPdiymH%~c1gt`(|7P$1cBuC*hHCFuLABf4;ePNT&ljNj z(;jn7ZnL4{oeP!T5~%#10VSsky!!)C;jV{>I&~|g>7<^46&M|5<-QDVhx=1d<-FDN z9;p8PeW-f-EmS(chsyU3N1J{VhEKwU@Fkdm?Z;4e@H(h?e-4$eC!yN$3sCvk=~#<*G*o^Lf$gvjPKE2C z-v2mMd%PK{{GW%)&wWtw{sc;{zk;g2KSIT~{aka8fvUdM4RrMl_5M9@FZf-k`gsy6+_O;m-u5_)XJR~S^c};-I?{qiA0}q40f+U^Vb&;jt>G?*e=UF%&UI-<}PkI0ELDjIHZJJYunxZzVhkcMnuQJQsGtE1=5t3{?O6i+At6 z#L}Mvcf@}dR6gcG$!7&r`X@u>zW^1_`=IiDEtFhuhN{=Q;ZE>}Q0?*&sP}&j)eimw zC6B{jYx->!RDGNYmEJjUC-`ot_%HYFYoO})MyT-jK;`%AQ2OuzsP|GQSUyI=?Qk9d z)!xTLJ#T}`?@>_sSPHj+CAb5uLdpNFaC>+cRC-^7^WZoA^Ieu&{LA3Z_;*3Ii#0HU z>)}4|3aEPcw0GYN)lVLQD$jpI)!*(NRMXwI|b_fjZpRW9;keM466K}guB4o zpvrd-RQPYhgW)fs;@@VO#eXoIjQdE~1~ZT>q%Mcb?_*Hu{0XX^jahExZ-t6yIvfdC zK&5{&l$ft4*_PW~&i?0~PV>wFU5SW4L*B3yw zmm8qo|0diMJ_7fE&%r5hM3;@DQ=!^N8lDK>0u}xTQ0?d`I0mLxnR_f`h)%Ua^^-hQ z`#u+{JXb^2=e2MGya)1M>fiY@7S3C3a#{@~-yW!TQ-MnFQmFWDgp${NP;&j2cmLG8 zAMtz!sy+X~b1a2WJk#KGcmhYhU_#Z>PzwH|=TnlW$-35<^=fXC47gT)D zdhT_y)$dVI{-?kZ@NH1#xd5vDTm_ZyYoOY}ZP29)RX^Ll(d4@`R6m#i)!vVQlJh*M zcsii!Yc-^6r}A)bcqddmKZKI!&!O7KZ=vEF@g|e^o>2MP7b@P#Q1Q-!lFK}(e%uGu zE{jm{odXsA{ZQ$D1gd|04yru&LCNnaxDVXp6l=eeq1sV9bnOZ%pA{&1oC(!GE{3h} zGjK2XOQ?AM8>)PxPqq9_hRW|ssPs?v{_CLfd#QhZt>>paKL?fWm*Ii%>)!uK@Bdq< za{V4E-cf5zuN>$(5i0*}Q29O%MsPKhd^SMI=Uq_oTmdEbPeS?M>D~83)yq%dPVhHS z?eh0faz7|-2AFWVwI2KCZoe0$~vhV;n0M+g;g45wGa9{W&RQjoIi*Glm_PY;M zIDQ2UPiILDlnOsB}tD@x2@F2QP)n->0C;c{`Ne z{0>z9f9ClssDAPS)cY?&rMpeW=NBsdeW2=fB9z>ZgpzLul>B<2^hiIP49igR`Vdq* z`5aXGUxte3TTpU+1S&uO0hP|5;QnyutZ^b#eilIWixn_}XF%!ct6(#{7fLSA!DHaI zYi%5u4^P8=F;qM+dhXb3^)wcaz<&wc0WO2v!_{yCd=t#W^Pt{;7OMO&LCJS?pYcFA z4R;ef1fC3cfM-F)_YSD=@A1#Cg4^K!qUV?4cDV0>lGFWA`T7w&82$_%2LI?8QCoGrT0!IXwGgN=R8>$>Xg*(9~q4M>gP|sh4>PMpyns^vger7|}OFL9O zt%0qu2o=wVpx*xkJRIHy4}!n-+;yGRa|?{{KME=zZ-gp$4yqhQsP`{}D)+r`CVT=a zy#uI>CU^pre+A0_2G|UL2A9Jf`YqgvkRc^?Hk_m9a5fxUu>389a`$_F3@Y5Ca6H_v zX#MOMI0bhvoD468Y9C*Mhr=ge7aTia@ty|NFW(7Q!;eDc`;Soi;*isAy<#40$6bZW z#~o1p^>hoc! zc>WBP@BJ#qHn=11#ZcvX9aMh1;dEGlyTNOq^xG{^?|<9#aj5rSgsQg@Rg>RDI1zWJ z=Ubq{eH2PR-3T?V-3!OUhv8!QJ19MT^m@z3DNyA-4XXTa_3rbb+TE2<@!bm*|0DkS zQ&4jKqvsAAOip8<$~OT@e$$}(*DR=h+zD0xr$fo@YVZCcJOcOAa2`DP4AVDjpxWhm za1y);>iwU>R=C|p+8CSxXT$5^Eclpr@Be0tw+rgMcfl5Tn|D7Br{doIEjE75hssA8 zD*o%B!v6%SKWu-d&D&=}xvNlm`C2#^J_g(1A#b&Etbz)6IaL0?=H34ZJ8(z;Wc{fC zSL40_D!oVH3^?j6>-Wb&<^K{m4Soq81)qic!IrbFy)T9b;XVOHlIp0aX9{1>6fh3-#WPZ?}FEL6v8wcQ1i@ekxRY8=&;V zWl-h)xaSuiI11?tscq+PhDO%IEpe=^^jF*1JCg_5Qt3 z<$MUL{Le$>Z~F@@okO9@F&j$WCqRWi!}Ag-{cBg4b{H-;STW4Q16`!CHHs2ZQ+%0NBBV~IbI8Qf?tFx-+fT={S+!6Pe8r@N2vF9 zdYAQs(eO~*$HIMJ4^)3W6YBjN;9>A{a5;P!DqPEj7SAFmIWPC_Q=!u7gOc9{&kLaP zbrn?lH$bIxD^z(OgFC_hgevzR;m&ZIcU$>)g?eu+RC_-Ns@)z7)o<5$zQyx$D7oDX z74PSv(z_cfzt2MD=QS6ZdrzovhrpSz1qB zpY#5wL*@G%?|v7QTt49aZ-Aq4-wIVvcSGglLC;@!J_8l+^HA^q8P0;czSr9ABB*xo zMz|1GU<-4qV09p|C)cNW|oUI3M!t6)3)IGhT94VAA0-)C~22zSNZ z3U`OcK*hTZ?g3AMs=ooK_|Ek1cR|(PTkj&mTn6ifqNEI zyhlUzv&C>bxDKjcoDS7qt5EO%Gn@#ofxEzOcs>Y~ug9Uv`5Zh2&brj(aydK=_jOR^ z9`k++e-Kpq%}{!7HXI3;LzUwVQ1z6DqhSTAoxTIM!0Vvo^&phq_!U(9-R3gN1P_GD z#~a|`@OHQoJ`ENB(U)8N%b@bH8cIKP!@c0yQ2OKwsP=dRRQbLRo8YJ`tiET$2=`pL z7hL20H$c_n+1`CIRDQ35lK=Hk<-G|?o_9dW=RVH|JRgFpmnWdoeFlz&W3IGvPll?e zcBuTF2GtI4^8CDi{uQWtehNyCBd@aenxV?S5-Pu^!1=HMXTwiJ$^U7n@%>M5UpV^% zW_PTFlF$2~%J(U#@%}D220j8i;qRd2dHg?H|2i4UU4}~k9Z>nc6e=Gdgp$vVQ0adT zD*xYrdha(-@4e=OmhLF1dOZkAj#Hu9RK2|gs(+s2pI;0mrw>5o;|915d;lsR zKZKJ1&!PI=K_9a84ukV>PlkHF4l4dnLgn)_Q0?L_7{MRGec%gF^|0HA&3!1`5BD)p z?e+EW09b^o*LQpWk3og|BGmgofqTQ>K;>(@f3foK0@Z%ULY03!RQP6iFq{t+e;O+O ze}a?Ym9P!o1DC?*q4Im&M|}H$3SWkj_eD_gTmoIcfs+3nP;$5jo&@iQ%HJW^*z?Jr z)1mTtwC57f)$kzvd!XVw7b?CBq2&5LsPwLe`@>H_)#q2?f$#_3|5>Q|8}(6pZ!A=N z))Z`e-Wx)cKTO)zNhCwP;#9Fm0l}Ud`CgW(+(ByaySC6h0?q0pvrj_R6afe_1?`; z^11^m-(Q2x@Tc$uxc#-ZPP7s#e;h_Y)Sr z2qmZUq4IwTRJ-{oRK48|72iWp@x1_*pBKG*x9jZvF`na~+H!juy4~;yxZd+dI0^SJq3UIq8;nQ7LvgQ#iuXb| z5#9n-KR<&C{}R;uQ*N|ytDxG$neb?MJyd^w3M#&RKk4mZI39P8cfTF(i2DYp`nlD+ z?}y6w_o4L0ldu_X|0!#4)1l;h6jVQ04M)N(+yxFm#rsyM`h7cG4nGK`w|)(GfFo`) zdF}$0{=slpI0H)F3!vn@1S;M)K*ie&C6@uXJ-iZ1&wtqSW~lJ@K&AgZxEp*Dsyr`1 z$#1VuTRqQ%YCk7=o&k5qeFaoLKLI6=PeaM?tFRS51=TP2y4m7sfhyl3sQjG*mEX5R zrT<><|6!>7-RGbG(DPx>C!x~)EmS}FJ=__Ny~X^;L6vI~RJ?QHPH?&BNpN@EJy7|s zzzALdN5ku&(!Ucbp8KKX{;2o=5AS{vs$NEZ#^OI1s$EWklKTp%@|_5kk2O&JW&nS3vczYoOZWU2r;l97=EObE~C44Jy9*unoQzDxEXo8u&IC!N)zf`>d5?0#yE| z!^7ZlQ1a-5s^=0^Iv<462e(1B-!DMr@5gWq`~{SpUx3R0Hn$mfhkEZIsQeuQCBJ6x zJ`yVZ<5)j z6V&)O%d-_pyK;y*a~lis{e^1sphKL(p|kG{+F@m#2I z?}aD9&%-%-{$-nQbijjfzumj9^?U>>+}>X?eYg@To+_LIKLjVkZ@>fK^HBL6eYfow z90wKe6>wj88(a;)2Nlo6d+faxa0c#v*bc9Ov*A-v{WbckrFR4zfjbQ)r?pVe^HBA0 z4wT$4f$CS+d42(^pMTr)At?Dj4OL&yL$#B?K=r%r@3s0E3stW1o^zq{{YLLTAF5qn z1JzEhha=z@q0+w_D%~GK>4#rJ>5D(WgW)b;v-q2#^1Z}!4crm;2B>nK4VB;bLG{zC zq4dQAa6kA9sQ3Tmx#xZM{$w~F|LIWmwHi)@=XzcbmCpC!KJX#9H~cTC{O@QrtY`!J3)mzz;hCmoMuAByBJD-T~Ph& zBzPdKLgoKbD7oF`-H*Z}aPRyLo2Si(hu}UJs$G5zPJ$0Wz5gOqKb`nZ;)JVV8~hfW z1z&<{cQe0b@fP6}+}FYu_<(o+1y031<=giD8=>;?9;o=g3R~dsp!&nO@7TQkbx`h$ z;W6;ba4vkw`ycyVD@Oq;+)YsVf7H8o`kw6<90}E*-T~F0J_42AAE5ftga@qOpA41% z8=&;@gYYOg^840q7QtO{r=j}k02~G1>)ltwU2xwC)o$;H5qub`eqQq2?+4cYX2PBE z?||x;CwX@Prp6!ERLNEH*-7Q`QLY>nic!8;=*^a*OmRaYUrcAx-T7?m;9wi-0z};# zqe?d2AN6PZyR)ToYwED3o?`z%K3mCVCY1?W$l|p&m(Amx6CKvnU+$e$#%my3$m9zA zj{GnDD#c1Vk58@;xu1Ad%h^&P-A^{7bS9I{MCo$WQ%v{tMa8wmW{;HWPyzeXg|v#a zrJ$8!9M!n`sB$EmFJ;r2jZu1w>DC3_a@vXD#X_8chO#6Am9o9LawS_r2y2U_sM5!? zN@-)US{eLKp;(DF9cg1sE|P|lm$LoE^-8K#?B7)8>cWJqG%0iK9py=>rhGQNJ{xuC z(}i_ZXtXYy9f*3WrBb#~nUtCmb@udSGu3=H>PT05`cf?|(Xyf!a=Kj3^%h9JrN#RP zc@Fi2w`&0_=~8dDVy!ZM+qKb}%N5wa66Ydq`3TdRkpP&Zlh%ziADAbtSeuq@xx2 z^hUZzU5x3dm+sc+H!x(#gj9XG(!NDDzF*lm;NqMyb!v26IuotTo?gwCD=E2udG`Ao z{H8~Xily!x{k=el=`KXlX9f+WLYQhH!}A&LdBSJfkx^H%NNpB2hJ?zg8Tcxt!B37L z51rZ4dL*&1R4SHI@=(wv1$tW{ov(j7Kgy_0(D_OfB1d;@P04R#qgT17SjtBIRhmwB z7WJ{AuSi=jRQpks)~(vqE83>&{jzHiL&a=QDr##DX*%)uqzmfos-P&{o6Z$TE>|gM z^J^8YQ}Kh|v&P_Zmd@vk8=`b2qObBM>e@w>E%A0wPj;Z^to61X*5)g#iQ&KLa#byLSZx6N;;RXrA|vzu3gIcJZ&=`EJ9joT4TA7(Y-ZV zkk9p?lGUcl`C`T8V{I-^bC1&NiB@C3ZwCzN^N|4RZips`)HjxMNYVd@n%Y|0rcO%D z9~dZU^hnJQdVGP#>;|XAAD+`$HB=AsAV{S`>WZscDYo>a^F7r(9WWE+*3xL#R-$bG zKxJdpWc_4HG<|B+pDU0DD@ZP%t8B#4%Wy+~OdXf*S;wE63Oa71FKKE)I!{XJ52eWGZA(E8U8hTK%9#$A}v;<|Jy)=Z}WtveBI{_N*gR=oF#5`9$fL#ok`^f>O4e zMbH!hA*Eb9W>hH;r~uv>y1jSSnME}l)xAoaUrTaqkC#)@m3Y~#a0RwssQKWqM6Lx4#I37XC^$ zM4d)ypcoNVo_4m$MBM9Ch;oF$oeAV)QEyHrvNW6St!AU;on*U6gr?w&rQUQQ_h#Nz zM~`1o=VVMkI?;+!R^8g%XH=r5MI=;nA$>In4eS-v zAC6Lv;#CWAqgOv*M9*r-GP@v>)?`>$ew0{L9ndt79G9z%^yTu}suK}?J2{&g7r#KW zqYW@D8)_Ble4}NktcB}cJE(cMQOk!{06z$OpXAf}CvHggq0&)zN$sw{`;Od!?H%?N@Goz+X zx*9IRqgs`ULp&Rs8+EDw^_cd@#w0ifTnO%`RsJO>>+su2F+`{Sm56gmCEB3A=;8~5 zhIK_5)cIUt9c{)c0)hA_ohG32v4{OLpF2~Ah?gj_OHIdT%grYBW^bsN#;^MVN$7}9eOQ>u^pDPH)5Y^r| zScUR>V_hYzVic0c6~&x}YJB>0oM3Mcqh$CIC0F2joLW+ze6R>JHO!xq-lmV-a2p5p zOC?D)PDO=?{(r`bI1(Ex%v|y-IE*)$Tv;=PME+{!blOunix^N6g&|{wi4~J8X0~r) z^lHEC82^Ym-3n0bR!XUbEuD;ZsF4*m_NEpxA##7bwv)T=VdNB_^VTmdLE56Bz2yd) zh5fXVl=~Ym_n||majkEr>34ma8JShlI%L2`-(cKJI2Lgj5!&dPJ$-2n!I)8!PM*P+ zPz5*ZYG-WA7Y9hMLv|wB2)*W)Z@(m3nd|MVv^d*4?rQR1P#oBZ3Luh9HA(!d3nhe&~9)<`)))p_G)6o%+Y74bqg1BfHgC?go zUTAh|p|U1&_l69Q$f+cI77Rc)>&Y^2teNi4FryPnL8~)%A;xtix-45^Dzh%cp6jPy zuFtBQVBPfgGAp7>+VG+|xlO2?(WgP8mMz&BvF%{Fp(<>7VQn^>=_WZj?qdJH7!CRSC_NIG_Fhwp#ZgrU4S?f zu1F0JlLB_3Ys0FoTQr1ktOWPYUr`e-d_#4FCK{^6g=rA4`SoG9_>syt5a&-1w6SU- z;ze9NbcxhLKc$X;_z84yBdEmBsI%JNpDt}odX=l){W+Eu>P_Eq$spAMb(&1lubgMtM_;+WfxHa_h1MBGY_gk>*#<7_y)03;vf`h>O%Sm&sUgztl(T z7ZWvJru0V>w)jV^MY`#hG6LG1bzQIdTI1m5+Ar7TyH+l9KIUJRVc|?X^UP}Att6S2 zqoDnY)A20%J8ea!qO;w2s{WZyOdCkC$bU>FSpqt~q>Sa*gklz5L=kIg%(tYlcHq{I zT$W@`Izc&Idbm_&YOyU)1AZ4VVHQ+M`NJ3VJ1fC2hV)nS6^y@ZE2}X!K?@6BuJfXZ zY(?&6L|~SH&p0)@*e$dy!SE;*ds(z7r-oj?UQ(d{&$i$o62C_gEib?&j1(vqnPc4A({I>l*%(GwTqU_F|;5 z5=$PIO3_(oL;Bl9zwQn8idvgVz@D~BrOypR> zvIohKUN_n}Wfg`gSIBgE9a7LzAe|kXLek~1kK#xP6pszU~}Iien#0T%0{{eW}Ygx zZq?pBFzFEQMyV{8U31;i%Q>ZwS3I2J@Ros0Jw027R*9UPEbKB_etM9wto%l#^A2+g zLacP#Cw^5zuXI)r8djtVXs)XJr8z|td);_;xh7jqx$#nqT`R&8s9X8c*y?`R(5jzU zdv2=eRuP-nSDQqLGb$;js);OWn-K%nFNeC8>NgXjjak$tp*tD7MCB$fv3HXpS(bj~ z*!}h*r5S4nwa&{e_1b(lEDx%&lWLq;Xs~sYqEB9B$=yoZeQh(aiC(oC~?4+MUmp`;bws zL9syZk{jThL5}sOG;0xB`e2bsgCkMJ^BS8F)heD%FN`P`^GRCLF*~52g-T7Tv?VI5 zi65*LMe(GF8M4(uXqzFAE-g1NYRGrpgRohX^rUKSn4(o%mVGpJ4Hyk6x^_^*a~U1*j`NoA@ zt-bk1!Xsuv=vJDSorjRa`DC32K=C`DXfX=3$V^O+{b?@gmipa>%{){t;x}tUd7kYS z_dpe-(K)PP)XzRR)sb9yv3H~#wHz=Zp>Vxd!t}5(A=+v65lN-l3J$^C7*<>Rj0Kg{ zq0xedo=sNRKr3Nhv54E0ZS8H1+NMpPam377vyYq_eoac%hJ?gVMk*T}l74=~2xqsf zb4-%H_KUJngSiiI0wj7-g zSL@tE#ARaJOo=TLW^$5GLk9gbA8k-`3K$fYleq8XLk4s0BbmHkO$q{!&002PLROlc z4VPFECk~4X=*ut!pz@o(Jmjr%#_*+Ka%@7VcXWX$i(R%r%!puwsl*h4#ficsXMQ#-(`-i;sNGPOe68$W{8NM7mKAo5#(Z3EmKXy8Y33Hz~xY?SDza29s9q%yP$iVM*H_ znBpu3>yVfp`GwTvF|pW_5@MXM(A3}lCTE4tJFE|`z#KxH{i*OHR`?wK8ER#na2#_~ zaGiFnO%ewCkO2$SsdHe#VFnQsVRiFy!8bJP;FekD_aE!*lf-k$DRf(}D$T%gQvxJp ziH9nxS&9BZ-ONy#iC?jxk~Z1sPv<2cCv%H&JsT$Omro*;({0jtfgtw0J28+ivKy)s z*iKhF^-H8`j!Lc}2vTsTIGl+emXzY15+B@h=WKZ90C6m_cdXjR(Oy zPuEoVWxMWfZRzx?OgfJ8X@*(KYIDyS{mSNAlr*q|jPZ}qlEVWV|Fm9Zd8-AKl^naA zWE7Q6>a|#0sg^^XwJIFv3Q^J~KBvoF)C^FpX}P{XWFV|ZH+NF!b`$6Nc^vP^YD$j3 z-ee0;>YXm1dPCKQU9Y+fjdqjmex+M7B0{Yk#XFp4|0Ohxj$~vv+VPHbzFd^CQKwVb zdt|@CSu^oD34+V4<$#2Q-4Mp%Lw5Qr6-T1`?`$Jr2C+yD!N4bM70N;+bro&ZKoahY)1)&-yMEc z5*hfXj5{`3*W4P6>s*xGqB4QGS))6m=60#-pM?cKKFUC^`)6G=gE$hMG}6YU?XGI0 z8#`3yLkDVc|x=wJ@JBet>D*Faq6{E%D6@23#n5W&RtZ(Boj=eRfYValRPCz9oO znZl{DcJLViH!<&f1)Kul&Eh?!Ac{}Ax=AvOLfv+rQUj@4H^_Tl=uiva?-*Vd2E%&jI#PH zq&9oTKX1Z3sG)Z? zHW6xYB14;J;q?lMof`7%^W(EXNtF{yE6jJx2Rd3(HjgEVMLM&fTsWr+nbJ6i+Y_)~ zZk|*788yZB&?Fz$t#mA~#jK=PSU+iC^=N^|C7901Y+}reiv!$Jj zqnl*PZMW+zU7`Yg8J&qUUW%}BRwRK_&)2|V9 zD_ z_fqr5wBmFo#Y9#O5_{S9s%x7Ww%jum9vjU{fCvY44BTZXZpTWQ-9PuD27Uftu$2lo zxzDg=iY(k?PRr2x6s14ky*^jY=}RvLW*JSv3ZdmV8z8h84BzC7?#n10)vdj4BGTtS z6xX6rij=uwNkC!s5Fw6Y!IbG6^4^*d)?? znwIIxY~LZd!v{1%%yH_GMpq{`W^?oy+Lb=<;*?gJ9O)ELF$|kKd@T`4m%TnFSy`fzPmo*eS8S~MGt~aRe z(DFK}77IB9^fFfdYoaxk;~EL}8tq9PLaWMDvcJ)Qw%T9J*s*deYvW6;Vbgr@o53_8 z(U%`dLN}>uol;d-(4k8&jhd%xM{buym1x@87A-W~=;WE5`fz_0OKcIQy6l@ZzF}Oa z+!E3}TzBRJDkP+j2Js$6R8zi7TbJWknD zkND)H`7&|VNfqx1LT#`BOfH)+^Xy@{ZrMgH4l6Ue;Z*aVBner-O;~%O07e?Ftu8TP z=+g0-Rhew3t$+AQTxwN8XQm2nM%fy>`rSO&5^eOA_OAKS)7<>mbvxH1H8-t2Pu8zr zluA5w%LIeGD@j=p+HdH_KSFE9Lo1SzDk}VTO+ngmYbI9y@P%wq&Buwu_4D9%WwI6$ z9{Fik2+`o(?oaD@Z=_DvBAuPVIN=zL>eGGu>T;>^hYD5hsb$|RPOajU{WU4EpXnE| z;;`yh-k6U!$I)MhHEBD3Qh8j6GZEL&?L}!TG53PA`obs^rZOQ!Jp5ER3dUi{*uSoW z#=c=7nBG#qX~CTtI!4D$53@$JeA68DZ5&{R&s=?oh-N33v|CfFi6vdJ&z}>& z!&FmVTCDX{H*z-?zwk z41+O^-krj9E3TFU-f{`p7u&8^NEx|PCCo%QmB?e6PVpwLx)57(TCG(UeFWBd%&b!c z@eWNQ406O|Kz^p&=r6?WzJ{_@v7v&he7cfnD?*yi8ZxZkLUhaM;hLSKBwe{{qD%%K zsO>XK=U7# zNVk}ohWjRLeW5|GZMuQ@LyY0P_!cWAEFM{nBpdS96mBzbZ&hJ6i~8$&oIjtEI8CbA zgsVK$!dsHBvrfE}81}X(AQyhC+P8&N>rOUS(~16EL8u*OS_RIwL_kM4clEF7C&Ksn_Y&Y`|5q8n^x#tmYNWs0Pw{wD_0y- zE7n%HH>BB?NHf)NU)nV+f`n-GaY28YW1|`n6Wb7eTE{kx4j3wQFp9K3CX>U)+IaHl zw{e1Y^|CLp?X5vCd2mWYftm5{KuZ`?@D6jybTTL5^Ezdslzb3E#|P))FUQ7N*gY`^U0M_oAR1+*o3Zr*{L?~4NLp9gz)uOa+Sc{y2tu}UAmWYCkB^c zr5>Wgg61@=6R>>R})bb$GS7EGn+pRG>22hGuIS2sti+9;gqH+8*~Euu6CV|~Jq#i-Oyddrebi??a#xK`0( zJ**t9UbwPz$?|0*SGt1-Egj|FT&Cr?YHzuvt2ifG*fD>}(s}dS+gC2^>>Rmbc~{E< z9keCw7H!eYF`-U9k}HomusLVO%$BL#XGXx5m0a~9>$)!7?3SsscxBGCX%1qNO%kc(ECLl)TcinNuQrrk#5voqzbYNt@u-Uz8}dGJM;lH*D%fKt2GCJnb$>TH0%FJR^!zGZY1XV$%IM=*2{;BRyBWW!EOYJvN@w(c-* z%^Y(N(KG*NH&2qXzk`xr!?#X`t1UNbxq&JA@U4?tg-gyV#;KjS)z??*t&>!TlNjt!MRge!S3-ct%t_5 z#ko4u6;32^gK5}nbBE6V;clEI zo&5t|G`TEs+lQNDG@OkM2O<(zL?+jk6IW2$5g0A)Z~jnCP}Q7MdHL58hod3>puTNj z)Hc>R$EcM->K0SN4qt~i*f6m>8uYP7qA1)P`SNa>eA%~5I&o|DZTN0UcfMDLk97B+ zKLQ)JcZTnl%=k+V*-jh2TT-^)=5P6Qb}~C9$*VrYmq5dJOTOanmJDaPhOd_#zFyMZ z#-SlmXGJ+5Q@fYZeg5FrM%XH?JHcs2swPc zHIP-K&A@6Z;4yOb~(8S+j^YaC9Jemd@soABoFjgr>jl5JtgnETu7wLCy{dq_C&(`{zB)MT=sDDILd*Kuv<4+1&t4_|b z7-_w_Z;gx(Pj9(D58o3xd{5-?J&~BXo4icYfAyh{!Zsb~W!w|#Z-hiO2gMev@A#U? z_($?PxNsk&*XG0bMZSvei%i*>4?8d)91Yh+HlEb*uWyM)7f^Zy7o0W^+T?|iZXZGust~^4R?#?u;(twIg0DLc z2c>Fbecerw?z1Uh1Icg2{$}??+7$}^p2%?f>HqpoksK1&hlKGrdG(hkHJm7ah29kz z7W#(oisVK>JC)_`qALG`-xcYvhaA2wGEz(UU%V~S?f`lP-WFMRXLoB#tK7Qq#J;2( zA8v`R3st+HQbWtD@#@GyH(lC>YVs4#+KN@fRZedCQYWFDDBT7yvkZMt&A$+?OW8tz zc!2qzygV{#REN6VOsx&y8##P$Bo`aR=hbuvBiAI_$8@w^KD}2<9=AUB>!NS zMb76IS}tH5zAh4@Zuq)L_wWC42_yID=~|W!`xhwjaA)t_r^x=d|3vNo=DNr*e;>Xs zG7JU(XV*n8DDqE~vRB~$Z7wr~!X1zLmdjrrxtW_HwVTfkkzqe<5?^xoINcSG!#6|@ z-w?@lWJBL3nY^(s+~yU3DahwPPEBb>x25~rxUh?>rTt->|Fs(;|N5&4*+d+^8j_7m91Lvt!c`M&|7s| zqCZ<0-|hISz8Z4q+Z2;(r2gjE;fo=;nIg+S9yNS1Wa5g-;fo>vZZ3vg_}5$v`Tqbo CwZf+W delta 11826 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 diff --git a/app/translations/en/LC_MESSAGES/messages.po b/app/translations/en/LC_MESSAGES/messages.po index 4ee68ac..0fb86db 100644 --- a/app/translations/en/LC_MESSAGES/messages.po +++ b/app/translations/en/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: team-tryouts VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2026-08-26 22:04-0400\n" +"POT-Creation-Date: 2026-09-10 12:46-0400\n" "PO-Revision-Date: 2026-08-07 20:22-0400\n" "Last-Translator: FULL NAME \n" "Language: en\n" @@ -19,12 +19,20 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.18.0\n" -#: app/app.py:564 +#: app/app.py:379 +msgid "" +"This page was changed by someone else. Reload to see the latest changes " +"before saving." +msgstr "" +"This page was changed by someone else. Reload to see the latest changes " +"before saving." + +#: app/app.py:614 msgid "Please log in to access this page." msgstr "Please log in to access this page." #: app/forms.py:37 app/routes/auth.py:230 app/routes/auth.py:389 -#: app/routes/auth.py:403 app/routes/users/contracts.py:120 +#: app/routes/auth.py:403 app/routes/users/contracts.py:121 #, python-format msgid "%(field)s: %(msg)s" msgstr "%(field)s: %(msg)s" @@ -78,7 +86,7 @@ msgstr "Full name is required." msgid "Passwords do not match." msgstr "Passwords do not match." -#: app/validators.py:284 app/validators.py:924 +#: app/validators.py:284 app/validators.py:936 msgid "Unknown game." msgstr "Unknown game." @@ -98,7 +106,7 @@ msgstr "Unknown platform for this game." msgid "Invalid role selected." msgstr "Invalid role selected." -#: app/validators.py:473 app/validators.py:596 app/validators.py:629 +#: app/validators.py:473 app/validators.py:596 app/validators.py:641 msgid "Player must be selected." msgstr "Player must be selected." @@ -106,15 +114,15 @@ msgstr "Player must be selected." msgid "Notes must be 2000 characters or less." msgstr "Notes must be 2000 characters or less." -#: app/validators.py:513 app/validators.py:994 +#: app/validators.py:513 app/validators.py:1006 msgid "Invalid coach selection." msgstr "Invalid coach selection." -#: app/validators.py:519 app/validators.py:1000 +#: app/validators.py:519 app/validators.py:1012 msgid "Invalid manager selection." msgstr "Invalid manager selection." -#: app/validators.py:537 app/validators.py:595 app/validators.py:628 +#: app/validators.py:537 app/validators.py:595 app/validators.py:640 msgid "Invalid player selection." msgstr "Invalid player selection." @@ -134,134 +142,167 @@ msgstr "Unknown registration status." msgid "Team name must be between 1 and 100 characters." msgstr "Team name must be between 1 and 100 characters." -#: app/validators.py:603 +#: app/validators.py:603 app/validators.py:615 msgid "Position must be 50 characters or less." msgstr "Position must be 50 characters or less." -#: app/validators.py:616 +#: app/validators.py:628 msgid "Note content must be between 1 and 5000 characters." msgstr "Note content must be between 1 and 5000 characters." -#: app/validators.py:642 +#: app/validators.py:654 msgid "Select at most one note context." msgstr "Select at most one note context." -#: app/validators.py:654 +#: app/validators.py:666 msgid "Rejection reason must be 2000 characters or less." msgstr "Rejection reason must be 2000 characters or less." -#: app/validators.py:678 +#: app/validators.py:690 msgid "Date must be in YYYY-MM-DD format." msgstr "Date must be in YYYY-MM-DD format." -#: app/validators.py:679 +#: app/validators.py:691 msgid "A date is required." msgstr "A date is required." -#: app/validators.py:685 app/validators.py:750 +#: app/validators.py:697 app/validators.py:762 msgid "Start time must be in HH:MM format." msgstr "Start time must be in HH:MM format." -#: app/validators.py:686 app/validators.py:751 +#: app/validators.py:698 app/validators.py:763 msgid "A start time is required." msgstr "A start time is required." -#: app/validators.py:692 +#: app/validators.py:704 msgid "End time must be in HH:MM format." msgstr "End time must be in HH:MM format." -#: app/validators.py:693 +#: app/validators.py:705 msgid "An end time is required." msgstr "An end time is required." -#: app/validators.py:697 +#: app/validators.py:709 msgid "Points must be 2000 characters or less." msgstr "Points must be 2000 characters or less." -#: app/validators.py:712 +#: app/validators.py:724 msgid "End time must be after start time." msgstr "End time must be after start time." -#: app/validators.py:741 app/validators.py:743 +#: app/validators.py:753 app/validators.py:755 msgid "Day must be 0 (Monday) to 6 (Sunday)." msgstr "Day must be 0 (Monday) to 6 (Sunday)." -#: app/validators.py:744 +#: app/validators.py:756 msgid "A day is required." msgstr "A day is required." -#: app/validators.py:779 +#: app/validators.py:791 msgid "Player selection is malformed." msgstr "Player selection is malformed." -#: app/validators.py:805 app/validators.py:915 +#: app/validators.py:817 app/validators.py:927 msgid "A title is required." msgstr "A title is required." -#: app/validators.py:814 +#: app/validators.py:826 msgid "Invalid date format." msgstr "Invalid date format." -#: app/validators.py:819 app/validators.py:826 +#: app/validators.py:831 app/validators.py:838 msgid "Invalid time format." msgstr "Invalid time format." -#: app/validators.py:820 +#: app/validators.py:832 msgid "Start time is required. Please select a time slot." msgstr "Start time is required. Please select a time slot." -#: app/validators.py:834 +#: app/validators.py:846 msgid "Unknown match status." msgstr "Unknown match status." -#: app/validators.py:850 +#: app/validators.py:862 msgid "The end time must come after the start time." msgstr "The end time must come after the start time." -#: app/validators.py:864 +#: app/validators.py:876 msgid "Unknown match type." msgstr "Unknown match type." -#: app/validators.py:876 +#: app/validators.py:888 msgid "A team cannot play against itself." msgstr "A team cannot play against itself." -#: app/validators.py:929 +#: app/validators.py:941 msgid "Invalid start date format." msgstr "Invalid start date format." -#: app/validators.py:930 +#: app/validators.py:942 msgid "A start date is required." msgstr "A start date is required." -#: app/validators.py:936 +#: app/validators.py:948 msgid "Invalid end date format." msgstr "Invalid end date format." -#: app/validators.py:944 +#: app/validators.py:956 msgid "A tryout must allow at least one player." msgstr "A tryout must allow at least one player." -#: app/validators.py:947 +#: app/validators.py:959 msgid "The player limit must be a whole number." msgstr "The player limit must be a whole number." -#: app/validators.py:960 +#: app/validators.py:972 msgid "End date cannot be before start date." msgstr "End date cannot be before start date." -#: app/validators.py:987 app/validators.py:988 +#: app/validators.py:999 app/validators.py:1000 msgid "Team name is required." msgstr "Team name is required." -#: app/validators.py:1012 +#: app/validators.py:1024 msgid "Scores run from 1 to 10." msgstr "Scores run from 1 to 10." -#: app/validators.py:1013 +#: app/validators.py:1025 msgid "A score must be a whole number from 1 to 10." msgstr "A score must be a whole number from 1 to 10." +#: app/validators.py:1078 +msgid "Title is required." +msgstr "A title is required." + +#: app/validators.py:1082 +msgid "That document type is not recognised." +msgstr "That document type is not recognised." + +#: app/routes/admin.py:485 +#, python-format +msgid "Document \"%(title)s\" created." +msgstr "Team \"%(team_name)s\" created!" + +#: app/routes/admin.py:510 app/routes/admin.py:584 +#: app/routes/users/documents.py:144 app/routes/users/documents.py:206 +msgid "Document storage is temporarily unavailable. Please try again later." +msgstr "Contract storage is temporarily unavailable. Please try again later." + +#: app/routes/admin.py:534 +#, python-format +msgid "Version %(number)s of \"%(title)s\" published." +msgstr "Version %(number)s of \"%(title)s\" published." + +#: app/routes/admin.py:560 +#, python-format +msgid "\"%(title)s\" is now downloadable by team members." +msgstr "\"%(title)s\" is now downloadable by team members." + +#: app/routes/admin.py:566 +#, python-format +msgid "\"%(title)s\" is no longer downloadable." +msgstr "\"%(title)s\" is no longer downloadable." + #: app/routes/auth.py:247 msgid "This account has been deactivated." msgstr "This account has been deactivated." @@ -344,318 +385,346 @@ msgstr "Discord account connected! Your profile has been pre-filled." msgid "You have been logged out." msgstr "You have been logged out." -#: app/routes/evaluations.py:53 +#: app/routes/evaluations.py:169 app/routes/evaluations.py:281 msgid "You do not have permission to view evaluations." msgstr "You do not have permission to view evaluations." -#: app/routes/evaluations.py:143 +#: app/routes/evaluations.py:286 +msgid "Can only view evaluations for players." +msgstr "Can only evaluate players." + +#: app/routes/evaluations.py:334 msgid "You do not have permission to evaluate players." msgstr "You do not have permission to evaluate players." -#: app/routes/evaluations.py:148 app/routes/evaluations.py:234 +#: app/routes/evaluations.py:339 app/routes/evaluations.py:425 msgid "You do not have permission to evaluate players in this tryout." msgstr "You do not have permission to evaluate players in this tryout." -#: app/routes/evaluations.py:159 +#: app/routes/evaluations.py:350 msgid "Player is not registered for this tryout." msgstr "Player is not registered for this tryout." -#: app/routes/evaluations.py:164 +#: app/routes/evaluations.py:355 msgid "Can only evaluate players." msgstr "Can only evaluate players." -#: app/routes/evaluations.py:210 +#: app/routes/evaluations.py:401 msgid "Evaluation submitted successfully!" msgstr "Evaluation submitted successfully!" -#: app/routes/evaluations.py:212 +#: app/routes/evaluations.py:403 msgid "Evaluation updated!" msgstr "Evaluation updated!" -#: app/routes/evaluations.py:229 app/routes/teams.py:340 -#: app/routes/teams.py:383 app/routes/teams.py:426 app/routes/teams.py:454 -#: app/routes/teams.py:482 app/routes/teams.py:519 app/routes/tryouts.py:507 -#: app/routes/tryouts.py:531 app/routes/tryouts.py:559 -#: app/routes/tryouts.py:610 app/routes/tryouts.py:650 -#: app/routes/tryouts.py:677 +#: app/routes/evaluations.py:420 app/routes/teams.py:347 +#: app/routes/teams.py:391 app/routes/teams.py:435 app/routes/teams.py:463 +#: app/routes/teams.py:491 app/routes/teams.py:529 app/routes/tryouts.py:521 +#: app/routes/tryouts.py:548 app/routes/tryouts.py:579 +#: app/routes/tryouts.py:633 app/routes/tryouts.py:676 +#: app/routes/tryouts.py:706 app/routes/tryouts.py:756 +#: app/routes/tryouts.py:788 app/routes/tryouts.py:832 +#: app/routes/tryouts.py:870 msgid "Permission denied." msgstr "Permission denied." +#: app/routes/evaluations.py:541 +msgid "Scores must be whole numbers from 1 to 10." +msgstr "A score must be a whole number from 1 to 10." + #: app/routes/main.py:55 msgid "That language is not available." msgstr "That language is not available." -#: app/routes/matches.py:383 +#: app/routes/matches.py:444 msgid "You do not have permission to schedule matches for this tryout." msgstr "You do not have permission to schedule matches for this tryout." -#: app/routes/matches.py:387 app/routes/matches.py:463 +#: app/routes/matches.py:448 app/routes/matches.py:524 msgid "This tryout has ended. Matches can no longer be created or modified." msgstr "This tryout has ended. Matches can no longer be created or modified." -#: app/routes/matches.py:445 +#: app/routes/matches.py:506 msgid "Match scheduled successfully!" msgstr "Match scheduled successfully!" -#: app/routes/matches.py:459 app/routes/team_matches.py:235 +#: app/routes/matches.py:520 app/routes/team_matches.py:238 msgid "You do not have permission to edit this match." msgstr "You do not have permission to edit this match." -#: app/routes/matches.py:552 app/routes/team_matches.py:265 +#: app/routes/matches.py:684 app/routes/team_matches.py:268 msgid "Match updated successfully!" msgstr "Match updated successfully!" -#: app/routes/matches.py:588 app/routes/team_matches.py:284 +#: app/routes/matches.py:720 app/routes/team_matches.py:289 msgid "You do not have permission to delete this match." msgstr "You do not have permission to delete this match." -#: app/routes/matches.py:591 +#: app/routes/matches.py:723 msgid "This tryout has ended. Matches can no longer be deleted." msgstr "This tryout has ended. Matches can no longer be deleted." -#: app/routes/matches.py:604 app/routes/team_matches.py:289 +#: app/routes/matches.py:736 app/routes/team_matches.py:294 msgid "Match deleted successfully." msgstr "Match deleted successfully." -#: app/routes/team_matches.py:128 +#: app/routes/team_matches.py:131 msgid "You do not have permission to schedule matches for this team." msgstr "You do not have permission to schedule matches for this team." -#: app/routes/team_matches.py:220 +#: app/routes/team_matches.py:223 #, python-format msgid "Team match \"%(title)s\" scheduled successfully!" msgstr "Team match \"%(title)s\" scheduled successfully!" -#: app/routes/teams.py:43 +#: app/routes/teams.py:45 msgid "Use My Team(s) to view your teams." msgstr "Use My Team(s) to view your teams." -#: app/routes/teams.py:46 +#: app/routes/teams.py:48 msgid "You do not have permission to view teams." msgstr "You do not have permission to view teams." -#: app/routes/teams.py:78 +#: app/routes/teams.py:80 msgid "This page is for players." msgstr "This page is for players." -#: app/routes/teams.py:185 +#: app/routes/teams.py:187 msgid "You do not have permission to create teams." msgstr "You do not have permission to create teams." -#: app/routes/teams.py:196 app/routes/teams.py:238 +#: app/routes/teams.py:198 app/routes/teams.py:243 #, python-format msgid "Team \"%(name)s\" already exists." msgstr "Team \"%(name)s\" already exists." -#: app/routes/teams.py:217 +#: app/routes/teams.py:222 #, python-format msgid "Team \"%(name)s\" created successfully!" msgstr "Team \"%(name)s\" created successfully!" -#: app/routes/teams.py:227 +#: app/routes/teams.py:232 msgid "You do not have permission to edit this team." msgstr "You do not have permission to edit this team." -#: app/routes/teams.py:271 +#: app/routes/teams.py:278 #, python-format msgid "Team \"%(name)s\" updated successfully!" msgstr "Team \"%(name)s\" updated successfully!" -#: app/routes/teams.py:299 +#: app/routes/teams.py:306 msgid "You do not have permission to delete teams." msgstr "You do not have permission to delete teams." -#: app/routes/teams.py:330 +#: app/routes/teams.py:337 #, python-format msgid "Team \"%(name)s\" deleted successfully." msgstr "Team \"%(name)s\" deleted successfully." -#: app/routes/teams.py:347 +#: app/routes/teams.py:354 msgid "Please select a coach." msgstr "Please select a coach." -#: app/routes/teams.py:352 +#: app/routes/teams.py:359 msgid "Only coaches can be assigned as coach." msgstr "Only coaches can be assigned as coach." -#: app/routes/teams.py:358 +#: app/routes/teams.py:365 #, python-format msgid "%(username)s is already a coach of %(name)s." msgstr "%(username)s is already a coach of %(name)s." -#: app/routes/teams.py:371 +#: app/routes/teams.py:379 #, python-format msgid "%(username)s added as coach of %(name)s." msgstr "%(username)s added as coach of %(name)s." -#: app/routes/teams.py:390 +#: app/routes/teams.py:398 msgid "Please select a manager." msgstr "Please select a manager." -#: app/routes/teams.py:395 +#: app/routes/teams.py:403 msgid "Only managers can be assigned as manager." msgstr "Only managers can be assigned as manager." -#: app/routes/teams.py:401 +#: app/routes/teams.py:409 #, python-format msgid "%(username)s is already a manager of %(name)s." msgstr "%(username)s is already a manager of %(name)s." -#: app/routes/teams.py:414 +#: app/routes/teams.py:423 #, python-format msgid "%(username)s added as manager of %(name)s." msgstr "%(username)s added as manager of %(name)s." -#: app/routes/teams.py:444 +#: app/routes/teams.py:453 #, python-format msgid "Coach removed from %(name)s." msgstr "Coach removed from %(name)s." -#: app/routes/teams.py:472 +#: app/routes/teams.py:481 #, python-format msgid "Manager removed from %(name)s." msgstr "Manager removed from %(name)s." -#: app/routes/teams.py:489 app/routes/tryouts.py:568 +#: app/routes/teams.py:498 app/routes/tryouts.py:588 msgid "Please select a player." msgstr "Please select a player." -#: app/routes/teams.py:495 +#: app/routes/teams.py:504 msgid "Can only assign players to teams." msgstr "Can only assign players to teams." -#: app/routes/teams.py:501 +#: app/routes/teams.py:510 #, python-format msgid "%(username)s is already on %(name)s." msgstr "%(username)s is already on %(name)s." -#: app/routes/teams.py:509 +#: app/routes/teams.py:519 #, python-format msgid "%(username)s added to %(name)s!" msgstr "%(username)s added to %(name)s!" -#: app/routes/teams.py:526 app/routes/teams.py:604 +#: app/routes/teams.py:536 app/routes/teams.py:614 #, python-format msgid "%(username)s is not on %(name)s." msgstr "%(username)s is not on %(name)s." -#: app/routes/teams.py:534 +#: app/routes/teams.py:544 #, python-format msgid "%(username)s removed from %(name)s." msgstr "%(username)s removed from %(name)s." -#: app/routes/teams.py:571 app/routes/teams.py:593 +#: app/routes/teams.py:581 app/routes/teams.py:603 msgid "You do not have permission to add notes to this team." msgstr "You do not have permission to add notes to this team." -#: app/routes/teams.py:583 +#: app/routes/teams.py:593 msgid "Team notes added successfully!" msgstr "Team notes added successfully!" -#: app/routes/teams.py:598 app/routes/users/notes.py:222 -#: app/routes/users/notes.py:262 +#: app/routes/teams.py:608 app/routes/users/notes.py:223 +#: app/routes/users/notes.py:263 msgid "Can only add notes for players." msgstr "Can only add notes for players." -#: app/routes/teams.py:618 +#: app/routes/teams.py:628 #, python-format msgid "Note added for %(username)s!" msgstr "Note added for %(username)s!" -#: app/routes/tryouts.py:147 +#: app/routes/tryouts.py:152 msgid "You do not have permission to create tryouts." msgstr "You do not have permission to create tryouts." -#: app/routes/tryouts.py:194 +#: app/routes/tryouts.py:199 msgid "Tryout created successfully!" msgstr "Tryout created successfully!" -#: app/routes/tryouts.py:211 +#: app/routes/tryouts.py:219 msgid "You do not have permission to edit this tryout." msgstr "You do not have permission to edit this tryout." -#: app/routes/tryouts.py:215 +#: app/routes/tryouts.py:223 msgid "This tryout has ended and can no longer be modified." msgstr "This tryout has ended and can no longer be modified." -#: app/routes/tryouts.py:261 +#: app/routes/tryouts.py:269 msgid "Tryout updated successfully!" msgstr "Tryout updated successfully!" -#: app/routes/tryouts.py:301 +#: app/routes/tryouts.py:307 msgid "You do not have permission to view this tryout." msgstr "You do not have permission to view this tryout." -#: app/routes/tryouts.py:469 +#: app/routes/tryouts.py:480 msgid "Only players can register for tryouts." msgstr "Only players can register for tryouts." -#: app/routes/tryouts.py:474 +#: app/routes/tryouts.py:485 msgid "This tryout is not accepting registrations." msgstr "This tryout is not accepting registrations." -#: app/routes/tryouts.py:481 +#: app/routes/tryouts.py:492 msgid "You are already registered for this tryout." msgstr "You are already registered for this tryout." -#: app/routes/tryouts.py:487 app/routes/tryouts.py:590 +#: app/routes/tryouts.py:498 app/routes/tryouts.py:610 msgid "This tryout is full." msgstr "This tryout is full." -#: app/routes/tryouts.py:493 +#: app/routes/tryouts.py:504 msgid "Successfully registered for tryout!" msgstr "Successfully registered for tryout!" -#: app/routes/tryouts.py:517 +#: app/routes/tryouts.py:531 #, python-format msgid "Tryout status updated to %(new_status)s." msgstr "Tryout status updated to %(new_status)s." -#: app/routes/tryouts.py:545 +#: app/routes/tryouts.py:562 msgid "Registration status updated." msgstr "Registration status updated." -#: app/routes/tryouts.py:576 +#: app/routes/tryouts.py:596 msgid "Can only register players." msgstr "Can only register players." -#: app/routes/tryouts.py:582 +#: app/routes/tryouts.py:602 #, python-format msgid "%(username)s is already registered for this tryout." msgstr "%(username)s is already registered for this tryout." -#: app/routes/tryouts.py:596 +#: app/routes/tryouts.py:616 #, python-format msgid "%(username)s registered for tryout!" msgstr "%(username)s registered for tryout!" -#: app/routes/tryouts.py:636 +#: app/routes/tryouts.py:659 #, python-format msgid "%(username)s removed from tryout." msgstr "%(username)s removed from tryout." -#: app/routes/tryouts.py:662 +#: app/routes/tryouts.py:688 #, python-format msgid "Team \"%(team_name)s\" created!" msgstr "Team \"%(team_name)s\" created!" -#: app/routes/tryouts.py:699 app/routes/users/notes.py:350 +#: app/routes/tryouts.py:728 app/routes/users/notes.py:351 msgid "That player is not registered for this tryout." msgstr "That player is not registered for this tryout." -#: app/routes/tryouts.py:704 +#: app/routes/tryouts.py:733 msgid "Player is already on this team." msgstr "Player is already on this team." -#: app/routes/tryouts.py:709 +#: app/routes/tryouts.py:738 msgid "Player added to team!" msgstr "Player added to team!" -#: app/routes/tryouts.py:723 +#: app/routes/tryouts.py:770 +#, python-format +msgid "Team renamed to \"%(team_name)s\"." +msgstr "Team \"%(team_name)s\" created!" + +#: app/routes/tryouts.py:814 +#, python-format +msgid "Team \"%(name)s\" deleted." +msgstr "Team \"%(name)s\" deleted successfully." + +#: app/routes/tryouts.py:849 +msgid "Player removed from team." +msgstr "Manager removed from %(name)s." + +#: app/routes/tryouts.py:884 +msgid "Position updated." +msgstr "Last Updated" + +#: app/routes/tryouts.py:901 msgid "You do not have permission to delete this tryout." msgstr "You do not have permission to delete this tryout." -#: app/routes/tryouts.py:759 +#: app/routes/tryouts.py:937 msgid "Tryout deleted successfully." msgstr "Tryout deleted successfully." @@ -723,190 +792,226 @@ msgstr "Only the president can create users." msgid "User %(full_name)s created as %(role)s!" msgstr "User %(full_name)s created as %(role)s!" -#: app/routes/users/availability.py:210 -msgid "Only coaches can manage availability." -msgstr "Only coaches can manage availability." - -#: app/routes/users/contracts.py:104 +#: app/routes/users/contracts.py:105 msgid "Only presidents, managers, and coaches can upload contracts." msgstr "Only presidents, managers, and coaches can upload contracts." -#: app/routes/users/contracts.py:108 app/routes/users/contracts.py:189 +#: app/routes/users/contracts.py:109 app/routes/users/contracts.py:190 msgid "Document uploads are currently disabled." msgstr "Document uploads are currently disabled." -#: app/routes/users/contracts.py:127 +#: app/routes/users/contracts.py:128 msgid "You do not have permission to upload a contract for this player." msgstr "You do not have permission to upload a contract for this player." -#: app/routes/users/contracts.py:155 app/routes/users/contracts.py:210 -#: app/routes/users/contracts.py:233 app/routes/users/contracts.py:252 +#: app/routes/users/contracts.py:156 app/routes/users/contracts.py:211 +#: app/routes/users/contracts.py:234 app/routes/users/contracts.py:253 msgid "Contract storage is temporarily unavailable. Please try again later." msgstr "Contract storage is temporarily unavailable. Please try again later." -#: app/routes/users/contracts.py:171 +#: app/routes/users/contracts.py:172 #, python-format msgid "Contract uploaded successfully for %(username)s!" msgstr "Contract uploaded successfully for %(username)s!" -#: app/routes/users/contracts.py:185 +#: app/routes/users/contracts.py:186 msgid "Only the player can upload their signed contract." msgstr "Only the player can upload their signed contract." -#: app/routes/users/contracts.py:218 +#: app/routes/users/contracts.py:219 msgid "Signed contract uploaded successfully!" msgstr "Signed contract uploaded successfully!" -#: app/routes/users/contracts.py:228 app/routes/users/contracts.py:244 +#: app/routes/users/contracts.py:229 app/routes/users/contracts.py:245 msgid "You do not have permission to download this contract." msgstr "You do not have permission to download this contract." -#: app/routes/users/contracts.py:247 +#: app/routes/users/contracts.py:248 msgid "No signed contract available." msgstr "No signed contract available." -#: app/routes/users/notes.py:43 +#: app/routes/users/documents.py:106 +msgid "You do not have permission to sign this document." +msgstr "You do not have permission to view this tryout." + +#: app/routes/users/documents.py:110 app/routes/users/documents.py:171 +msgid "This document has already been completed." +msgstr "This request has already been processed." + +#: app/routes/users/documents.py:113 +msgid "This document is acknowledged, not signed." +msgstr "This document is acknowledged, not signed." + +#: app/routes/users/documents.py:116 app/routes/users/documents.py:177 +msgid "This document has no version published yet." +msgstr "This document has no version published yet." + +#: app/routes/users/documents.py:127 +msgid "You must be part of a team before signing documents." +msgstr "You must be part of a team before signing documents." + +#: app/routes/users/documents.py:157 +msgid "Document signed successfully!" +msgstr "Tryout updated successfully!" + +#: app/routes/users/documents.py:167 +msgid "You do not have permission to acknowledge this document." +msgstr "You do not have permission to delete this tryout." + +#: app/routes/users/documents.py:174 +msgid "This document must be signed, not acknowledged." +msgstr "This document must be signed, not acknowledged." + +#: app/routes/users/documents.py:185 +msgid "Document acknowledged." +msgstr "Document acknowledged." + +#: app/routes/users/documents.py:199 +msgid "This document is not available to you." +msgstr "This request is not for you." + +#: app/routes/users/notes.py:44 msgid "This page is for players only." msgstr "This page is for players only." -#: app/routes/users/notes.py:80 +#: app/routes/users/notes.py:81 msgid "Only coaches can access the notes dashboard." msgstr "Only coaches can access the notes dashboard." -#: app/routes/users/notes.py:172 +#: app/routes/users/notes.py:173 msgid "Only coaches can manage team notes." msgstr "Only coaches can manage team notes." -#: app/routes/users/notes.py:178 +#: app/routes/users/notes.py:179 msgid "You are not assigned to a team." msgstr "You are not assigned to a team." -#: app/routes/users/notes.py:195 +#: app/routes/users/notes.py:196 msgid "Team notes saved successfully!" msgstr "Team notes saved successfully!" -#: app/routes/users/notes.py:210 +#: app/routes/users/notes.py:211 msgid "Only coaches can manage personal notes." msgstr "Only coaches can manage personal notes." -#: app/routes/users/notes.py:226 app/routes/users/notes.py:266 -#: app/routes/users/notes.py:346 app/routes/users/notes.py:411 +#: app/routes/users/notes.py:227 app/routes/users/notes.py:267 +#: app/routes/users/notes.py:347 app/routes/users/notes.py:412 msgid "You can only write notes about players you work with." msgstr "You can only write notes about players you work with." -#: app/routes/users/notes.py:236 app/routes/users/notes.py:306 +#: app/routes/users/notes.py:237 app/routes/users/notes.py:307 #, python-format msgid "Note added for %(username)s." msgstr "Note added for %(username)s." -#: app/routes/users/notes.py:250 app/routes/users/notes.py:320 -#: app/routes/users/notes.py:384 +#: app/routes/users/notes.py:251 app/routes/users/notes.py:321 +#: app/routes/users/notes.py:385 msgid "Only coaches can add personal notes." msgstr "Only coaches can add personal notes." -#: app/routes/users/notes.py:272 +#: app/routes/users/notes.py:273 msgid "You cannot use that match as note context." msgstr "You cannot use that match as note context." -#: app/routes/users/notes.py:275 +#: app/routes/users/notes.py:276 msgid "That player did not participate in the selected match." msgstr "That player did not participate in the selected match." -#: app/routes/users/notes.py:281 +#: app/routes/users/notes.py:282 msgid "You cannot use that tryout as note context." msgstr "You cannot use that tryout as note context." -#: app/routes/users/notes.py:284 +#: app/routes/users/notes.py:285 msgid "That player is not registered for the selected tryout." msgstr "That player is not registered for the selected tryout." -#: app/routes/users/notes.py:290 +#: app/routes/users/notes.py:291 msgid "You cannot use that team as note context." msgstr "You cannot use that team as note context." -#: app/routes/users/notes.py:293 +#: app/routes/users/notes.py:294 msgid "That player is not on the selected team." msgstr "That player is not on the selected team." -#: app/routes/users/notes.py:325 +#: app/routes/users/notes.py:326 msgid "You do not have permission to add notes for this tryout." msgstr "You do not have permission to add notes for this tryout." -#: app/routes/users/notes.py:342 +#: app/routes/users/notes.py:343 msgid "Invalid tryout context." msgstr "Invalid tryout context." -#: app/routes/users/notes.py:361 app/routes/users/notes.py:426 +#: app/routes/users/notes.py:362 app/routes/users/notes.py:427 msgid "Note added successfully." msgstr "Note added successfully." -#: app/routes/users/notes.py:389 +#: app/routes/users/notes.py:390 msgid "You do not have permission to add notes for this match." msgstr "You do not have permission to add notes for this match." -#: app/routes/users/notes.py:407 +#: app/routes/users/notes.py:408 msgid "Invalid match context." msgstr "Invalid match context." -#: app/routes/users/notes.py:415 +#: app/routes/users/notes.py:416 msgid "That player did not participate in this match." msgstr "That player did not participate in this match." -#: app/routes/users/one_on_one.py:22 +#: app/routes/users/one_on_one.py:23 msgid "Only players can request One on One sessions." msgstr "Only players can request One on One sessions." -#: app/routes/users/one_on_one.py:35 +#: app/routes/users/one_on_one.py:36 msgid "You do not have a coach assigned to your team." msgstr "You do not have a coach assigned to your team." -#: app/routes/users/one_on_one.py:66 +#: app/routes/users/one_on_one.py:67 msgid "Cannot request One on One - no coach assigned." msgstr "Cannot request One on One - no coach assigned." -#: app/routes/users/one_on_one.py:92 +#: app/routes/users/one_on_one.py:93 msgid "The requested time is not within the coach's availability." msgstr "The requested time is not within the coach's availability." -#: app/routes/users/one_on_one.py:120 +#: app/routes/users/one_on_one.py:121 msgid "Your One on One request has been submitted!" msgstr "Your One on One request has been submitted!" -#: app/routes/users/one_on_one.py:165 +#: app/routes/users/one_on_one.py:166 msgid "Only coaches can accept One on One requests." msgstr "Only coaches can accept One on One requests." -#: app/routes/users/one_on_one.py:171 app/routes/users/one_on_one.py:221 +#: app/routes/users/one_on_one.py:172 app/routes/users/one_on_one.py:222 msgid "This request is not for you." msgstr "This request is not for you." -#: app/routes/users/one_on_one.py:175 app/routes/users/one_on_one.py:225 +#: app/routes/users/one_on_one.py:176 app/routes/users/one_on_one.py:226 msgid "This request has already been processed." msgstr "This request has already been processed." -#: app/routes/users/one_on_one.py:202 +#: app/routes/users/one_on_one.py:203 #, python-format msgid "One on One request from %(player)s has been approved!" msgstr "One on One request from %(player)s has been approved!" -#: app/routes/users/one_on_one.py:215 +#: app/routes/users/one_on_one.py:216 msgid "Only coaches can reject One on One requests." msgstr "Only coaches can reject One on One requests." -#: app/routes/users/one_on_one.py:262 +#: app/routes/users/one_on_one.py:263 #, python-format msgid "One on One request from %(player)s has been rejected." msgstr "One on One request from %(player)s has been rejected." -#: app/routes/users/profile.py:82 +#: app/routes/users/profile.py:83 msgid "Username already taken." msgstr "Username already taken." -#: app/routes/users/profile.py:92 +#: app/routes/users/profile.py:93 msgid "Email already in use." msgstr "Email already in use." -#: app/routes/users/profile.py:131 +#: app/routes/users/profile.py:132 msgid "Profile updated successfully!" msgstr "Profile updated successfully!" @@ -1055,7 +1160,7 @@ msgstr "%(total)s in total" msgid "Next" msgstr "Next" -#: app/templates/layouts/base.html:48 app/templates/layouts/base.html:154 +#: app/templates/layouts/base.html:48 app/templates/layouts/base.html:160 #: app/templates/pages/dashboard.html:2 app/templates/pages/dashboard.html:3 msgid "Dashboard" msgstr "Dashboard" @@ -1073,6 +1178,8 @@ msgstr "Calendar" #: app/templates/layouts/base.html:67 app/templates/pages/dashboard.html:43 #: app/templates/pages/evaluations.html:3 #: app/templates/pages/evaluations.html:4 +#: app/templates/pages/player_evaluations.html:2 +#: app/templates/pages/player_evaluations.html:4 msgid "Evaluations" msgstr "Evaluations" @@ -1100,29 +1207,36 @@ msgstr "My Notes" msgid "Notes & One on One" msgstr "Notes & One on One" -#: app/templates/layouts/base.html:119 app/templates/pages/contracts.html:2 +#: app/templates/layouts/base.html:119 +#: app/templates/pages/admin_document_detail.html:4 +#: app/templates/pages/admin_documents.html:2 +#: app/templates/pages/admin_documents.html:4 +msgid "Documents" +msgstr "Comments" + +#: app/templates/layouts/base.html:125 app/templates/pages/contracts.html:2 #: app/templates/pages/contracts.html:3 app/templates/pages/profile.html:9 msgid "Contracts" msgstr "Contracts" -#: app/templates/layouts/base.html:126 app/templates/pages/profile.html:2 +#: app/templates/layouts/base.html:132 app/templates/pages/profile.html:2 #: app/templates/pages/profile.html:3 msgid "My Profile" msgstr "My Profile" -#: app/templates/layouts/base.html:137 +#: app/templates/layouts/base.html:143 msgid "Logout" msgstr "Logout" -#: app/templates/layouts/base.html:158 +#: app/templates/layouts/base.html:164 msgid "Toggle dark mode" msgstr "Toggle dark mode" -#: app/templates/layouts/base.html:170 app/templates/layouts/base.html:189 +#: app/templates/layouts/base.html:176 app/templates/layouts/base.html:195 msgid "Dismiss" msgstr "Dismiss" -#: app/templates/layouts/base.html:199 +#: app/templates/layouts/base.html:205 msgid "UdeS team manager" msgstr "UdeS team manager" @@ -1142,7 +1256,7 @@ msgstr "Add Personal Note" #: app/templates/pages/notes.html:122 #: app/templates/pages/team_match_form.html:114 #: app/templates/pages/teams.html:145 app/templates/pages/view_tryout.html:154 -#: app/templates/pages/view_tryout.html:498 +#: app/templates/pages/view_tryout.html:575 msgid "Player" msgstr "Player" @@ -1193,11 +1307,298 @@ msgstr "Team Notes (Reference)" #: app/templates/pages/evaluate_player.html:131 #: app/templates/pages/notes.html:100 #: app/templates/pages/personal_notes.html:36 -#: app/templates/pages/view_tryout.html:309 +#: app/templates/pages/view_tryout.html:380 msgid "Add Note" msgstr "Add Note" -#: app/templates/pages/calendar.html:9 app/templates/pages/view_tryout.html:302 +#: app/templates/pages/admin_document_detail.html:8 +#: app/templates/pages/admin_documents.html:8 +#: app/templates/pages/my_documents.html:8 +msgid "Player contract" +msgstr "Upload Contract" + +#: app/templates/pages/admin_document_detail.html:9 +#: app/templates/pages/admin_documents.html:9 +#: app/templates/pages/my_documents.html:9 +msgid "Coach contract" +msgstr "Upload Contract" + +#: app/templates/pages/admin_document_detail.html:10 +#: app/templates/pages/admin_documents.html:10 +#: app/templates/pages/my_documents.html:10 +msgid "Manager contract" +msgstr "My Contracts" + +#: app/templates/pages/admin_document_detail.html:11 +#: app/templates/pages/admin_documents.html:11 +#: app/templates/pages/my_documents.html:11 +msgid "Team agreement" +msgstr "Team Assignments" + +#: app/templates/pages/admin_document_detail.html:12 +#: app/templates/pages/admin_documents.html:12 +#: app/templates/pages/my_documents.html:12 +msgid "Code of conduct" +msgstr "Code of conduct" + +#: app/templates/pages/admin_document_detail.html:13 +#: app/templates/pages/admin_documents.html:13 +#: app/templates/pages/my_documents.html:13 +msgid "Ethics code" +msgstr "Ethics code" + +#: app/templates/pages/admin_document_detail.html:18 +msgid "Publish a new version" +msgstr "Publish a new version" + +#: app/templates/pages/admin_document_detail.html:22 +#: app/templates/pages/admin_documents.html:29 +#: app/templates/pages/admin_documents.html:59 +#: app/templates/pages/my_documents.html:27 +#: app/templates/pages/view_tryout.html:393 +msgid "Type" +msgstr "Type" + +#: app/templates/pages/admin_document_detail.html:23 +msgid "signed by the member" +msgstr "signed by the member" + +#: app/templates/pages/admin_document_detail.html:24 +msgid "acknowledged by the member" +msgstr "acknowledged by the member" + +#: app/templates/pages/admin_document_detail.html:29 +msgid "New version file (PDF)" +msgstr "New version file (PDF)" + +#: app/templates/pages/admin_document_detail.html:31 +#: app/templates/pages/contracts.html:98 +#: app/templates/pages/my_documents.html:145 +#: app/templates/pages/upload_contract.html:28 +msgid "Accepted format: PDF" +msgstr "Accepted formats: PDF, DOC, DOCX, JPG, PNG" + +#: app/templates/pages/admin_document_detail.html:34 +msgid "Version notes (optional)" +msgstr "Notes (Optional)" + +#: app/templates/pages/admin_document_detail.html:35 +msgid "What changed in this version?" +msgstr "What changed in this version?" + +#: app/templates/pages/admin_document_detail.html:38 +msgid "Back" +msgstr "Go Back" + +#: app/templates/pages/admin_document_detail.html:40 +msgid "Publish version" +msgstr "Publish version" + +#: app/templates/pages/admin_document_detail.html:49 +msgid "Versions" +msgstr "Cohesion" + +#: app/templates/pages/admin_document_detail.html:56 +#: app/templates/pages/admin_documents.html:60 +#: app/templates/pages/my_documents.html:28 +msgid "Version" +msgstr "Cohesion" + +#: app/templates/pages/admin_document_detail.html:57 +msgid "File" +msgstr "Profile" + +#: app/templates/pages/admin_document_detail.html:58 +#: app/templates/pages/notes.html:2 app/templates/pages/notes.html:3 +#: app/templates/pages/teams.html:75 +msgid "Notes" +msgstr "Notes" + +#: app/templates/pages/admin_document_detail.html:59 +msgid "Published" +msgstr "Published" + +#: app/templates/pages/admin_document_detail.html:60 +#: app/templates/pages/admin_documents.html:63 +#: app/templates/pages/contracts.html:30 app/templates/pages/dashboard.html:175 +#: app/templates/pages/my_documents.html:30 app/templates/pages/notes.html:127 +#: app/templates/pages/team_matches.html:34 app/templates/pages/teams.html:151 +#: app/templates/pages/users.html:27 app/templates/pages/view_tryout.html:160 +#: app/templates/pages/view_tryout.html:400 +msgid "Actions" +msgstr "Actions" + +#: app/templates/pages/admin_document_detail.html:67 +#: app/templates/pages/admin_documents.html:73 +#, python-format +msgid "v%(number)s" +msgstr "v%(number)s" + +#: app/templates/pages/admin_document_detail.html:69 +msgid "Current" +msgstr "Create" + +#: app/templates/pages/admin_document_detail.html:75 +#: app/templates/pages/contracts.html:49 app/templates/pages/contracts.html:50 +#: app/templates/pages/my_documents.html:56 +#: app/templates/pages/my_documents.html:57 +msgid "Download" +msgstr "Download" + +#: app/templates/pages/admin_document_detail.html:82 +msgid "No versions published yet." +msgstr "No players registered yet." + +#: app/templates/pages/admin_document_detail.html:93 +msgid "Completion" +msgstr "Completed" + +#: app/templates/pages/admin_document_detail.html:100 +#: app/templates/pages/my_documents.html:102 +msgid "Member" +msgstr "Member" + +#: app/templates/pages/admin_document_detail.html:101 +#: app/templates/pages/create_user.html:31 +#: app/templates/pages/dashboard.html:74 app/templates/pages/edit_user.html:27 +#: app/templates/pages/my_documents.html:103 app/templates/pages/users.html:23 +msgid "Role" +msgstr "Role" + +#: app/templates/pages/admin_document_detail.html:102 +#: app/templates/pages/contracts.html:28 app/templates/pages/dashboard.html:95 +#: app/templates/pages/dashboard.html:118 +#: app/templates/pages/dashboard.html:175 +#: app/templates/pages/dashboard.html:202 +#: app/templates/pages/dashboard.html:321 +#: app/templates/pages/match_form.html:60 +#: app/templates/pages/my_documents.html:29 +#: app/templates/pages/my_teams.html:53 app/templates/pages/notes.html:126 +#: app/templates/pages/one_on_one.html:73 +#: app/templates/pages/team_match_form.html:61 +#: app/templates/pages/team_matches.html:33 app/templates/pages/teams.html:146 +#: app/templates/pages/users.html:25 app/templates/pages/view_tryout.html:155 +#: app/templates/pages/view_tryout.html:398 +msgid "Status" +msgstr "Status" + +#: app/templates/pages/admin_document_detail.html:103 +msgid "Completed at" +msgstr "Completed" + +#: app/templates/pages/admin_document_detail.html:113 +#: app/templates/pages/contracts.html:54 +#: app/templates/pages/my_documents.html:46 +#: app/templates/pages/my_documents.html:115 +msgid "Signed" +msgstr "Signed" + +#: app/templates/pages/admin_document_detail.html:115 +#: app/templates/pages/my_documents.html:48 +#: app/templates/pages/my_documents.html:116 +msgid "Acknowledged" +msgstr "Acknowledged" + +#: app/templates/pages/admin_document_detail.html:117 +#: app/templates/pages/dashboard.html:238 +#: app/templates/pages/my_documents.html:50 +#: app/templates/pages/my_documents.html:117 +#: app/templates/pages/one_on_one.html:85 +msgid "Pending" +msgstr "Pending" + +#: app/templates/pages/admin_document_detail.html:125 +msgid "No one is assigned yet. Publish a version first." +msgstr "No one is assigned yet. Publish a version first." + +#: app/templates/pages/admin_documents.html:3 +msgid "Document management" +msgstr "Document management" + +#: app/templates/pages/admin_documents.html:18 +msgid "Create a document" +msgstr "Create Account" + +#: app/templates/pages/admin_documents.html:24 +#: app/templates/pages/admin_documents.html:58 +#: app/templates/pages/dashboard.html:95 app/templates/pages/dashboard.html:175 +msgid "Title" +msgstr "Title" + +#: app/templates/pages/admin_documents.html:26 +msgid "e.g. Player contract 2026-2027" +msgstr "e.g. Player contract 2026-2027" + +#: app/templates/pages/admin_documents.html:31 +msgid "-- Select a type --" +msgstr "-- Select a team --" + +#: app/templates/pages/admin_documents.html:37 +msgid "The type decides who must complete the document and how." +msgstr "The type decides who must complete the document and how." + +#: app/templates/pages/admin_documents.html:42 +msgid "Create document" +msgstr "Create Account" + +#: app/templates/pages/admin_documents.html:51 +msgid "Existing documents" +msgstr "Existing documents" + +#: app/templates/pages/admin_documents.html:61 +#: app/templates/pages/view_user.html:87 +msgid "Availability" +msgstr "Availability" + +#: app/templates/pages/admin_documents.html:62 +msgid "Progress" +msgstr "In Progress" + +#: app/templates/pages/admin_documents.html:74 +msgid "None" +msgstr "Note" + +#: app/templates/pages/admin_documents.html:78 +msgid "Downloadable" +msgstr "Download" + +#: app/templates/pages/admin_documents.html:80 +msgid "Hidden" +msgstr "Hidden" + +#: app/templates/pages/admin_documents.html:85 +#, python-format +msgid "%(completed)s done" +msgstr "Completed" + +#: app/templates/pages/admin_documents.html:86 +#, python-format +msgid "%(pending)s pending" +msgstr "%(pending)s pending" + +#: app/templates/pages/admin_documents.html:90 +#: app/templates/pages/admin_documents.html:91 +msgid "Manage" +msgstr "Managers" + +#: app/templates/pages/admin_documents.html:96 +#: app/templates/pages/admin_documents.html:97 +msgid "Hide" +msgstr "Hide" + +#: app/templates/pages/admin_documents.html:100 +msgid "Make downloadable" +msgstr "Download" + +#: app/templates/pages/admin_documents.html:101 +msgid "Publish" +msgstr "Publish" + +#: app/templates/pages/admin_documents.html:110 +msgid "No documents yet. Create one above." +msgstr "No documents yet. Create one above." + +#: app/templates/pages/calendar.html:9 app/templates/pages/view_tryout.html:373 msgid "Schedule" msgstr "Schedule" @@ -1275,6 +1676,7 @@ msgstr "Confirm" #: app/templates/pages/calendar.html:102 #: app/templates/pages/team_matches.html:103 +#: app/templates/pages/view_tryout.html:534 msgid "Delete Match" msgstr "Delete Match" @@ -1287,33 +1689,6 @@ msgstr "Edit Match" msgid "View Tryout" msgstr "View Tryout" -#: app/templates/pages/coach_availability.html:2 -#: app/templates/pages/coach_availability.html:3 -msgid "Manage Availability" -msgstr "Manage Availability" - -#: app/templates/pages/coach_availability.html:9 -msgid "Set Your Weekly Availability" -msgstr "Set Your Weekly Availability" - -#: app/templates/pages/coach_availability.html:10 -msgid "Select time slots when you're available for One on One sessions" -msgstr "Select time slots when you're available for One on One sessions" - -#: app/templates/pages/coach_availability.html:14 -#: app/templates/pages/profile.html:256 -msgid "Loading availability grid..." -msgstr "Loading availability grid..." - -#: app/templates/pages/coach_availability.html:19 -msgid "Save Availability" -msgstr "Save Availability" - -#: app/templates/pages/coach_availability.html:22 -#: app/templates/pages/profile.html:240 app/templates/pages/profile.html:260 -msgid "Clear All" -msgstr "Clear All" - #: app/templates/pages/contracts.html:9 #: app/templates/pages/upload_contract.html:2 #: app/templates/pages/upload_contract.html:3 @@ -1334,44 +1709,14 @@ msgstr "Team" msgid "Contract" msgstr "Contract" -#: app/templates/pages/contracts.html:28 app/templates/pages/dashboard.html:95 -#: app/templates/pages/dashboard.html:118 -#: app/templates/pages/dashboard.html:175 -#: app/templates/pages/dashboard.html:202 -#: app/templates/pages/dashboard.html:321 -#: app/templates/pages/match_form.html:60 app/templates/pages/my_teams.html:53 -#: app/templates/pages/notes.html:126 app/templates/pages/one_on_one.html:73 -#: app/templates/pages/team_match_form.html:61 -#: app/templates/pages/team_matches.html:33 app/templates/pages/teams.html:146 -#: app/templates/pages/users.html:25 app/templates/pages/view_tryout.html:155 -#: app/templates/pages/view_tryout.html:327 -msgid "Status" -msgstr "Status" - #: app/templates/pages/contracts.html:29 msgid "Uploaded" msgstr "Uploaded" -#: app/templates/pages/contracts.html:30 app/templates/pages/dashboard.html:175 -#: app/templates/pages/notes.html:127 app/templates/pages/team_matches.html:34 -#: app/templates/pages/teams.html:151 app/templates/pages/users.html:27 -#: app/templates/pages/view_tryout.html:160 -#: app/templates/pages/view_tryout.html:329 -msgid "Actions" -msgstr "Actions" - -#: app/templates/pages/contracts.html:49 app/templates/pages/contracts.html:50 -msgid "Download" -msgstr "Download" - #: app/templates/pages/contracts.html:53 msgid "Download Signed" msgstr "Download Signed" -#: app/templates/pages/contracts.html:54 -msgid "Signed" -msgstr "Signed" - #: app/templates/pages/contracts.html:58 app/templates/pages/contracts.html:89 #: app/templates/pages/contracts.html:102 msgid "Upload Signed Contract" @@ -1405,13 +1750,9 @@ msgstr "" msgid "Select Signed Contract File" msgstr "Select Signed Contract File" -#: app/templates/pages/contracts.html:98 -#: app/templates/pages/upload_contract.html:28 -msgid "Accepted format: PDF" -msgstr "Accepted formats: PDF, DOC, DOCX, JPG, PNG" - #: app/templates/pages/contracts.html:101 -#: app/templates/pages/match_form.html:265 app/templates/pages/notes.html:189 +#: app/templates/pages/match_form.html:265 +#: app/templates/pages/my_documents.html:148 app/templates/pages/notes.html:189 #: app/templates/pages/teams.html:48 app/templates/pages/teams.html:295 #: app/templates/pages/view_tryout.html:245 msgid "Cancel" @@ -1464,12 +1805,6 @@ msgstr "Phone" msgid "Phone number" msgstr "Phone number" -#: app/templates/pages/create_user.html:31 -#: app/templates/pages/dashboard.html:74 app/templates/pages/edit_user.html:27 -#: app/templates/pages/users.html:23 -msgid "Role" -msgstr "Role" - #: app/templates/pages/create_user.html:41 app/templates/pages/login.html:11 #: app/templates/pages/register.html:137 msgid "Password" @@ -1516,18 +1851,16 @@ msgstr "Joined" msgid "Recent Tryouts" msgstr "Recent Tryouts" -#: app/templates/pages/dashboard.html:95 app/templates/pages/dashboard.html:175 -msgid "Title" -msgstr "Title" - #: app/templates/pages/dashboard.html:95 app/templates/pages/dashboard.html:175 #: app/templates/pages/dashboard.html:249 #: app/templates/pages/dashboard.html:321 +#: app/templates/pages/evaluations.html:82 #: app/templates/pages/match_form.html:55 app/templates/pages/my_teams.html:92 #: app/templates/pages/notes.html:123 app/templates/pages/one_on_one.html:70 +#: app/templates/pages/player_evaluations.html:67 #: app/templates/pages/team_match_form.html:34 #: app/templates/pages/team_matches.html:29 -#: app/templates/pages/view_tryout.html:323 +#: app/templates/pages/view_tryout.html:394 msgid "Date" msgstr "Date" @@ -1540,7 +1873,7 @@ msgstr "Upcoming Matches" #: app/templates/pages/dashboard.html:202 #: app/templates/pages/dashboard.html:285 app/templates/pages/my_teams.html:90 #: app/templates/pages/notes.html:69 app/templates/pages/team_matches.html:26 -#: app/templates/pages/teams.html:132 app/templates/pages/view_tryout.html:321 +#: app/templates/pages/teams.html:132 app/templates/pages/view_tryout.html:392 msgid "Match" msgstr "Match" @@ -1548,7 +1881,9 @@ msgstr "Match" #: app/templates/pages/dashboard.html:202 #: app/templates/pages/dashboard.html:249 #: app/templates/pages/dashboard.html:285 -#: app/templates/pages/dashboard.html:321 app/templates/pages/notes.html:78 +#: app/templates/pages/dashboard.html:321 +#: app/templates/pages/evaluations.html:76 app/templates/pages/notes.html:78 +#: app/templates/pages/player_evaluations.html:61 msgid "Tryout" msgstr "Tryout" @@ -1576,11 +1911,6 @@ msgstr "My Evaluations" msgid "Evaluations Done" msgstr "Evaluations Done" -#: app/templates/pages/dashboard.html:238 -#: app/templates/pages/one_on_one.html:85 -msgid "Pending" -msgstr "Pending" - #: app/templates/pages/dashboard.html:244 msgid "Recent Evaluations" msgstr "Recent Evaluations" @@ -1623,7 +1953,7 @@ msgid "Avg Score" msgstr "Avg Score" #: app/templates/pages/dashboard.html:373 -#: app/templates/pages/view_tryout.html:532 +#: app/templates/pages/view_tryout.html:609 msgid "No evaluations yet." msgstr "No evaluations yet." @@ -1817,7 +2147,7 @@ msgid "Recommended Position" msgstr "Recommended Position" #: app/templates/pages/evaluate_player.html:109 -#: app/templates/pages/view_tryout.html:280 +#: app/templates/pages/view_tryout.html:339 msgid "-- Select Position --" msgstr "-- Select Position --" @@ -1826,16 +2156,11 @@ msgid "Enter position (optional)" msgstr "Enter position (optional)" #: app/templates/pages/evaluate_player.html:121 -#: app/templates/pages/player_evaluations.html -#: app/templates/pages/evaluations.html +#: app/templates/pages/evaluations.html:108 +#: app/templates/pages/player_evaluations.html:100 msgid "Comments" msgstr "Comments" -#: app/templates/pages/player_evaluations.html -#: app/templates/pages/evaluations.html -msgid "No comments" -msgstr "No comments" - #: app/templates/pages/evaluate_player.html:122 msgid "Enter your evaluation notes..." msgstr "Enter your evaluation notes..." @@ -1845,67 +2170,120 @@ msgid "Add note for this player" msgstr "Add note for this player" #: app/templates/pages/evaluate_player.html:147 -#: app/templates/pages/view_tryout.html:499 +#: app/templates/pages/evaluations.html:75 +#: app/templates/pages/evaluations.html:114 +#: app/templates/pages/player_evaluations.html:60 +#: app/templates/pages/player_evaluations.html:109 +#: app/templates/pages/view_tryout.html:576 msgid "Evaluator" msgstr "Evaluator" #: app/templates/pages/evaluate_player.html:148 -#: app/templates/pages/view_tryout.html:500 +#: app/templates/pages/view_tryout.html:577 msgid "Mecanics" msgstr "Mecanics" #: app/templates/pages/evaluate_player.html:149 -#: app/templates/pages/view_tryout.html:501 +#: app/templates/pages/view_tryout.html:578 msgid "Cohesion" msgstr "Cohesion" #: app/templates/pages/evaluate_player.html:150 -#: app/templates/pages/view_tryout.html:502 +#: app/templates/pages/view_tryout.html:579 msgid "Communication" msgstr "Communication" #: app/templates/pages/evaluate_player.html:151 -#: app/templates/pages/view_tryout.html:503 +#: app/templates/pages/view_tryout.html:580 msgid "Gamesense" msgstr "Gamesense" #: app/templates/pages/evaluate_player.html:152 -#: app/templates/pages/view_tryout.html:504 +#: app/templates/pages/view_tryout.html:581 msgid "Versatility" msgstr "Versatility" #: app/templates/pages/evaluate_player.html:153 -#: app/templates/pages/view_tryout.html:505 +#: app/templates/pages/view_tryout.html:582 msgid "Discipline" msgstr "Discipline" #: app/templates/pages/evaluate_player.html:154 -#: app/templates/pages/view_tryout.html:506 +#: app/templates/pages/view_tryout.html:583 msgid "Analysis" msgstr "Analysis" #: app/templates/pages/evaluate_player.html:155 -#: app/templates/pages/view_tryout.html:507 +#: app/templates/pages/view_tryout.html:584 msgid "Sport Ethics" msgstr "Sport Ethics" #: app/templates/pages/evaluate_player.html:156 -#: app/templates/pages/view_tryout.html:508 +#: app/templates/pages/view_tryout.html:585 msgid "Mental" msgstr "Mental" #: app/templates/pages/evaluate_player.html:157 -#: app/templates/pages/view_tryout.html:509 +#: app/templates/pages/evaluations.html:80 +#: app/templates/pages/player_evaluations.html:65 +#: app/templates/pages/view_tryout.html:586 msgid "Overall" msgstr "Overall" #: app/templates/pages/evaluate_player.html:158 -#: app/templates/pages/my_teams.html:54 -#: app/templates/pages/view_tryout.html:286 +#: app/templates/pages/evaluations.html:81 app/templates/pages/my_teams.html:54 +#: app/templates/pages/player_evaluations.html:66 +#: app/templates/pages/view_tryout.html:345 msgid "Position" msgstr "Position" -#: app/templates/pages/evaluations.html:97 +#: app/templates/pages/evaluations.html:27 +#: app/templates/pages/player_evaluations.html:9 +msgid "Table" +msgstr "Title" + +#: app/templates/pages/evaluations.html:31 +#: app/templates/pages/player_evaluations.html:12 +msgid "By player" +msgstr "Player" + +#: app/templates/pages/evaluations.html:38 +#: app/templates/pages/player_evaluations.html:3 +msgid "Player Evaluations" +msgstr "Player Evaluation" + +#: app/templates/pages/evaluations.html:49 +msgid "Open" +msgstr "Opponent" + +#: app/templates/pages/evaluations.html:64 +msgid "Open player view" +msgstr "No players available" + +#: app/templates/pages/evaluations.html:88 +#: app/templates/pages/evaluations.html:114 +#: app/templates/pages/player_evaluations.html:73 +#: app/templates/pages/player_evaluations.html:109 +msgid "Deleted evaluator" +msgstr "Evaluator" + +#: app/templates/pages/evaluations.html:89 +#: app/templates/pages/evaluations.html:115 +#: app/templates/pages/player_evaluations.html:74 +#: app/templates/pages/player_evaluations.html:110 +msgid "Deleted tryout" +msgstr "Delete Tryout" + +#: app/templates/pages/evaluations.html:99 +msgid "No evaluations for this player." +msgstr "No evaluations yet." + +#: app/templates/pages/evaluations.html:120 +#: app/templates/pages/player_evaluations.html:118 +msgid "No comments" +msgstr "No comments" + +#: app/templates/pages/evaluations.html:132 msgid "No evaluations yet" msgstr "No evaluations yet" @@ -2005,7 +2383,7 @@ msgstr "Reset time selection" msgid "Reset Time" msgstr "Reset Time" -#: app/templates/pages/match_form.html:86 app/templates/pages/profile.html:236 +#: app/templates/pages/match_form.html:86 app/templates/pages/profile.html:193 msgid "Loading..." msgstr "Loading..." @@ -2111,6 +2489,66 @@ msgstr "T2" msgid "No players available" msgstr "No players available" +#: app/templates/pages/my_documents.html:2 +#: app/templates/pages/my_documents.html:3 +#: app/templates/pages/my_documents.html:4 +msgid "My Documents" +msgstr "My Tryouts" + +#: app/templates/pages/my_documents.html:18 +msgid "Documents to sign or acknowledge" +msgstr "Documents to sign or acknowledge" + +#: app/templates/pages/my_documents.html:26 +msgid "Document" +msgstr "No comments" + +#: app/templates/pages/my_documents.html:40 +#, python-format +msgid "Version %(number)s" +msgstr "Phone number" + +#: app/templates/pages/my_documents.html:62 +msgid "Return signed" +msgstr "Return Signed" + +#: app/templates/pages/my_documents.html:63 +msgid "Sign" +msgstr "Signed" + +#: app/templates/pages/my_documents.html:68 +msgid "Confirm that you have read and understood this document" +msgstr "Confirm that you have read and understood this document" + +#: app/templates/pages/my_documents.html:69 +msgid "Acknowledge" +msgstr "Acknowledge" + +#: app/templates/pages/my_documents.html:84 +msgid "No documents for now" +msgstr "No tryouts found" + +#: app/templates/pages/my_documents.html:85 +msgid "Nothing has been published for you yet. Check back later." +msgstr "No matches scheduled yet. Check back later!" + +#: app/templates/pages/my_documents.html:95 +msgid "Team progress" +msgstr "In Progress" + +#: app/templates/pages/my_documents.html:118 +msgid "Not required" +msgstr "A date is required." + +#: app/templates/pages/my_documents.html:136 +#: app/templates/pages/my_documents.html:149 +msgid "Upload Signed Document" +msgstr "Upload Signed Contract" + +#: app/templates/pages/my_documents.html:143 +msgid "Select Signed Document File" +msgstr "Select Signed Contract File" + #: app/templates/pages/my_teams.html:18 app/templates/pages/teams.html:84 #: app/templates/pages/teams.html:273 msgid "Coaches" @@ -2132,14 +2570,14 @@ msgstr "No players on this team." #: app/templates/pages/my_teams.html:93 app/templates/pages/notes.html:124 #: app/templates/pages/one_on_one.html:71 #: app/templates/pages/team_matches.html:30 -#: app/templates/pages/view_tryout.html:325 +#: app/templates/pages/view_tryout.html:396 msgid "Time" msgstr "Time" #: app/templates/pages/my_teams.html:95 #: app/templates/pages/team_match_form.html:115 #: app/templates/pages/team_matches.html:32 -#: app/templates/pages/view_tryout.html:326 +#: app/templates/pages/view_tryout.html:397 msgid "Presence" msgstr "Presence" @@ -2159,11 +2597,6 @@ msgstr "No Teams" msgid "You are not currently assigned to any team." msgstr "You are not currently assigned to any team." -#: app/templates/pages/notes.html:2 app/templates/pages/notes.html:3 -#: app/templates/pages/teams.html:75 -msgid "Notes" -msgstr "Notes" - #: app/templates/pages/notes.html:12 app/templates/pages/one_on_one.html:11 #: app/templates/pages/player_personal_notes.html:55 #: app/templates/pages/team_notes.html:2 app/templates/pages/team_notes.html:3 @@ -2385,6 +2818,18 @@ msgstr "-- Select End Time --" msgid "Recent Notes" msgstr "Recent Notes" +#: app/templates/pages/player_evaluations.html:42 +msgid "Combined average" +msgstr "Combined average" + +#: app/templates/pages/player_evaluations.html:42 +msgid "evaluations" +msgstr "Evaluations" + +#: app/templates/pages/player_evaluations.html:87 +msgid "No evaluations for this player yet" +msgstr "No evaluations yet" + #: app/templates/pages/players_to_evaluate.html:2 #: app/templates/pages/players_to_evaluate.html:3 msgid "Players to Evaluate" @@ -2426,23 +2871,23 @@ msgstr "Evaluations Given" msgid "No statistics available for this role." msgstr "No statistics available for this role." -#: app/templates/pages/profile.html:195 +#: app/templates/pages/profile.html:152 msgid "My Contracts" msgstr "My Contracts" -#: app/templates/pages/profile.html:217 +#: app/templates/pages/profile.html:174 msgid "View All Contracts" msgstr "View All Contracts" -#: app/templates/pages/profile.html:221 +#: app/templates/pages/profile.html:178 msgid "No contracts have been uploaded for you yet." msgstr "No contracts have been uploaded for you yet." -#: app/templates/pages/profile.html:231 +#: app/templates/pages/profile.html:188 msgid "My Disponibilities" msgstr "My Disponibilities" -#: app/templates/pages/profile.html:234 +#: app/templates/pages/profile.html:191 msgid "" "Select your available time blocks for matches (5pm to 12am). Green = " "selected, Gray = available to select." @@ -2450,11 +2895,15 @@ msgstr "" "Select your available time blocks for matches (5pm to 12am). Green = " "selected, Gray = available to select." -#: app/templates/pages/profile.html:251 +#: app/templates/pages/profile.html:197 app/templates/pages/profile.html:217 +msgid "Clear All" +msgstr "Clear All" + +#: app/templates/pages/profile.html:208 msgid "My Coaching Availability" msgstr "My Coaching Availability" -#: app/templates/pages/profile.html:252 +#: app/templates/pages/profile.html:209 msgid "" "Select time slots when you're available for One on One sessions (8am to " "10pm)." @@ -2462,7 +2911,11 @@ msgstr "" "Select time slots when you're available for One on One sessions (8am to " "10pm)." -#: app/templates/pages/profile.html:500 +#: app/templates/pages/profile.html:213 +msgid "Loading availability grid..." +msgstr "Loading availability grid..." + +#: app/templates/pages/profile.html:464 msgid "Click or click-and-drag to select your available hours" msgstr "Click or click-and-drag to select your available hours" @@ -2599,7 +3052,7 @@ msgid "No players on this team. Add players in the Teams page first." msgstr "No players on this team. Add players in the Teams page first." #: app/templates/pages/team_match_form.html:107 -#: app/templates/pages/view_tryout.html:324 +#: app/templates/pages/view_tryout.html:395 msgid "Participants" msgstr "Participants" @@ -2617,6 +3070,7 @@ msgid "+ Schedule Match" msgstr "+ Schedule Match" #: app/templates/pages/team_matches.html:101 +#: app/templates/pages/view_tryout.html:532 msgid "Delete this match?" msgstr "Delete this match?" @@ -2687,7 +3141,8 @@ msgstr "Create Team" #: app/templates/pages/teams.html:64 app/templates/pages/users.html:59 #: app/templates/pages/view_tryout.html:29 -#: app/templates/pages/view_tryout.html:459 +#: app/templates/pages/view_tryout.html:256 +#: app/templates/pages/view_tryout.html:530 msgid "Edit" msgstr "Edit" @@ -2696,7 +3151,7 @@ msgstr "Edit" msgid "Delete team %(name)s? It will be unassigned from any linked tryouts." msgstr "Delete team %(name)s? It will be unassigned from any linked tryouts." -#: app/templates/pages/teams.html:69 +#: app/templates/pages/teams.html:69 app/templates/pages/view_tryout.html:535 msgid "Delete" msgstr "Delete" @@ -2914,7 +3369,7 @@ msgid "Tryout Details" msgstr "Tryout Details" #: app/templates/pages/view_tryout.html:14 -#: app/templates/pages/view_tryout.html:306 +#: app/templates/pages/view_tryout.html:377 msgid "Schedule Match" msgstr "Schedule Match" @@ -2984,6 +3439,7 @@ msgid "No players registered yet." msgstr "No players registered yet." #: app/templates/pages/view_tryout.html:243 +#: app/templates/pages/view_tryout.html:289 msgid "Team name" msgstr "Team name" @@ -2991,47 +3447,86 @@ msgstr "Team name" msgid "Create" msgstr "Create" -#: app/templates/pages/view_tryout.html:263 +#: app/templates/pages/view_tryout.html:270 +#: app/templates/pages/view_tryout.html:320 msgid "No players assigned yet." msgstr "No players assigned yet." -#: app/templates/pages/view_tryout.html:271 +#: app/templates/pages/view_tryout.html:282 +#, python-format +msgid "Edit Team: %(name)s" +msgstr "Team name" + +#: app/templates/pages/view_tryout.html:291 +msgid "Rename" +msgstr "Name" + +#: app/templates/pages/view_tryout.html:297 +msgid "Roster" +msgstr "Register" + +#: app/templates/pages/view_tryout.html:306 +msgid "No role" +msgstr "Role" + +#: app/templates/pages/view_tryout.html:312 +#, python-format +msgid "Remove %(player)s from this team?" +msgstr "Remove %(player)s from %(team)s?" + +#: app/templates/pages/view_tryout.html:314 +msgid "Remove from team" +msgstr "From team" + +#: app/templates/pages/view_tryout.html:326 +msgid "Add Player" +msgstr "Max Players" + +#: app/templates/pages/view_tryout.html:330 msgid "Select player..." msgstr "Select player..." -#: app/templates/pages/view_tryout.html:288 +#: app/templates/pages/view_tryout.html:347 msgid "Add" msgstr "Add" -#: app/templates/pages/view_tryout.html:293 +#: app/templates/pages/view_tryout.html:353 +msgid "" +"Delete this team? Players already in the team will be removed and matches" +" referencing it will be unlinked." +msgstr "" +"Delete this team? Players already in the team will be removed and matches" +" referencing it will be unlinked." + +#: app/templates/pages/view_tryout.html:355 +msgid "Delete Team" +msgstr "Select Teams" + +#: app/templates/pages/view_tryout.html:364 msgid "No teams created yet." msgstr "No teams created yet." -#: app/templates/pages/view_tryout.html:322 -msgid "Type" -msgstr "Type" - -#: app/templates/pages/view_tryout.html:387 +#: app/templates/pages/view_tryout.html:458 msgid "Toggle your attendance" msgstr "Toggle your attendance" -#: app/templates/pages/view_tryout.html:462 +#: app/templates/pages/view_tryout.html:539 msgid "Add Note for this Match" msgstr "Add Note for this Match" -#: app/templates/pages/view_tryout.html:463 +#: app/templates/pages/view_tryout.html:540 msgid "Note" msgstr "Note" -#: app/templates/pages/view_tryout.html:481 +#: app/templates/pages/view_tryout.html:558 msgid "No matches scheduled yet. Check back later!" msgstr "No matches scheduled yet. Check back later!" -#: app/templates/pages/view_tryout.html:491 +#: app/templates/pages/view_tryout.html:568 msgid "Evaluation Summary" msgstr "Evaluation Summary" -#: app/templates/pages/view_tryout.html:510 +#: app/templates/pages/view_tryout.html:587 msgid "Recommendation" msgstr "Recommendation" @@ -3043,10 +3538,6 @@ msgstr "Profile" msgid "View Profile" msgstr "View Profile" -#: app/templates/pages/view_user.html:87 -msgid "Availability" -msgstr "Availability" - #~ msgid "×" #~ msgstr "×" @@ -3107,3 +3598,18 @@ msgstr "Availability" #~ msgid "No players registered for this tryout." #~ msgstr "No players registered for this tryout." +#~ msgid "Only coaches can manage availability." +#~ msgstr "Only coaches can manage availability." + +#~ msgid "Manage Availability" +#~ msgstr "Manage Availability" + +#~ msgid "Set Your Weekly Availability" +#~ msgstr "Set Your Weekly Availability" + +#~ msgid "Select time slots when you're available for One on One sessions" +#~ msgstr "Select time slots when you're available for One on One sessions" + +#~ msgid "Save Availability" +#~ msgstr "Save Availability" + diff --git a/app/translations/fr/LC_MESSAGES/messages.mo b/app/translations/fr/LC_MESSAGES/messages.mo index 1ff1e2e947ea8be1a54efda4e85628df3ac1803f..c5fd53d74877ec1db0333b812d791bbe9b19f1af 100644 GIT binary patch delta 17389 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 delta 11943 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\n" "Language: fr\n" @@ -19,12 +19,20 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.18.0\n" -#: app/app.py:564 +#: app/app.py:379 +msgid "" +"This page was changed by someone else. Reload to see the latest changes " +"before saving." +msgstr "" +"Cette page a été modifiée par quelqu'un d'autre. Rechargez la page pour " +"voir les derniers changements avant d'enregistrer." + +#: app/app.py:614 msgid "Please log in to access this page." msgstr "Veuillez vous connecter pour accéder à cette page." #: app/forms.py:37 app/routes/auth.py:230 app/routes/auth.py:389 -#: app/routes/auth.py:403 app/routes/users/contracts.py:120 +#: app/routes/auth.py:403 app/routes/users/contracts.py:121 #, python-format msgid "%(field)s: %(msg)s" msgstr "%(field)s : %(msg)s" @@ -80,7 +88,7 @@ msgstr "Le nom complet est obligatoire." msgid "Passwords do not match." msgstr "Les mots de passe ne concordent pas." -#: app/validators.py:284 app/validators.py:924 +#: app/validators.py:284 app/validators.py:936 msgid "Unknown game." msgstr "Jeu inconnu." @@ -100,7 +108,7 @@ msgstr "Plateforme inconnue pour ce jeu." msgid "Invalid role selected." msgstr "Rôle sélectionné invalide." -#: app/validators.py:473 app/validators.py:596 app/validators.py:629 +#: app/validators.py:473 app/validators.py:596 app/validators.py:641 msgid "Player must be selected." msgstr "Vous devez choisir un joueur." @@ -108,15 +116,15 @@ msgstr "Vous devez choisir un joueur." msgid "Notes must be 2000 characters or less." msgstr "Les notes ne doivent pas dépasser 2000 caractères." -#: app/validators.py:513 app/validators.py:994 +#: app/validators.py:513 app/validators.py:1006 msgid "Invalid coach selection." msgstr "Sélection de coach invalide." -#: app/validators.py:519 app/validators.py:1000 +#: app/validators.py:519 app/validators.py:1012 msgid "Invalid manager selection." msgstr "Sélection de gérant invalide." -#: app/validators.py:537 app/validators.py:595 app/validators.py:628 +#: app/validators.py:537 app/validators.py:595 app/validators.py:640 msgid "Invalid player selection." msgstr "Sélection de joueur invalide." @@ -136,134 +144,169 @@ msgstr "Statut d’inscription inconnu." msgid "Team name must be between 1 and 100 characters." msgstr "Le nom de l’équipe doit compter de 1 à 100 caractères." -#: app/validators.py:603 +#: app/validators.py:603 app/validators.py:615 msgid "Position must be 50 characters or less." msgstr "La position ne doit pas dépasser 50 caractères." -#: app/validators.py:616 +#: app/validators.py:628 msgid "Note content must be between 1 and 5000 characters." msgstr "La note doit compter de 1 à 5000 caractères." -#: app/validators.py:642 +#: app/validators.py:654 msgid "Select at most one note context." msgstr "Sélectionnez au plus un contexte pour la note." -#: app/validators.py:654 +#: app/validators.py:666 msgid "Rejection reason must be 2000 characters or less." msgstr "Le motif de refus ne doit pas dépasser 2000 caractères." -#: app/validators.py:678 +#: app/validators.py:690 msgid "Date must be in YYYY-MM-DD format." msgstr "La date doit être au format AAAA-MM-JJ." -#: app/validators.py:679 +#: app/validators.py:691 msgid "A date is required." msgstr "Une date est requise." -#: app/validators.py:685 app/validators.py:750 +#: app/validators.py:697 app/validators.py:762 msgid "Start time must be in HH:MM format." msgstr "L’heure de début doit être au format HH:MM." -#: app/validators.py:686 app/validators.py:751 +#: app/validators.py:698 app/validators.py:763 msgid "A start time is required." msgstr "Une heure de début est requise." -#: app/validators.py:692 +#: app/validators.py:704 msgid "End time must be in HH:MM format." msgstr "L’heure de fin doit être au format HH:MM." -#: app/validators.py:693 +#: app/validators.py:705 msgid "An end time is required." msgstr "Une heure de fin est requise." -#: app/validators.py:697 +#: app/validators.py:709 msgid "Points must be 2000 characters or less." msgstr "Les points ne doivent pas dépasser 2000 caractères." -#: app/validators.py:712 +#: app/validators.py:724 msgid "End time must be after start time." msgstr "L'heure de fin doit être postérieure à l'heure de début." -#: app/validators.py:741 app/validators.py:743 +#: app/validators.py:753 app/validators.py:755 msgid "Day must be 0 (Monday) to 6 (Sunday)." msgstr "Le jour doit aller de 0 (lundi) à 6 (dimanche)." -#: app/validators.py:744 +#: app/validators.py:756 msgid "A day is required." msgstr "Un jour est requis." -#: app/validators.py:779 +#: app/validators.py:791 msgid "Player selection is malformed." msgstr "La sélection de joueurs est mal formée." -#: app/validators.py:805 app/validators.py:915 +#: app/validators.py:817 app/validators.py:927 msgid "A title is required." msgstr "Un titre est requis." -#: app/validators.py:814 +#: app/validators.py:826 msgid "Invalid date format." msgstr "Format de date invalide." -#: app/validators.py:819 app/validators.py:826 +#: app/validators.py:831 app/validators.py:838 msgid "Invalid time format." msgstr "Format d’heure invalide." -#: app/validators.py:820 +#: app/validators.py:832 msgid "Start time is required. Please select a time slot." msgstr "L’heure de début est obligatoire. Choisissez une plage horaire." -#: app/validators.py:834 +#: app/validators.py:846 msgid "Unknown match status." msgstr "Statut de match inconnu." -#: app/validators.py:850 +#: app/validators.py:862 msgid "The end time must come after the start time." msgstr "L'heure de fin doit être postérieure à l'heure de début." -#: app/validators.py:864 +#: app/validators.py:876 msgid "Unknown match type." msgstr "Type de match inconnu." -#: app/validators.py:876 +#: app/validators.py:888 msgid "A team cannot play against itself." msgstr "Une équipe ne peut pas jouer contre elle-même." -#: app/validators.py:929 +#: app/validators.py:941 msgid "Invalid start date format." msgstr "Format de date de début invalide." -#: app/validators.py:930 +#: app/validators.py:942 msgid "A start date is required." msgstr "Une date de début est requise." -#: app/validators.py:936 +#: app/validators.py:948 msgid "Invalid end date format." msgstr "Format de date de fin invalide." -#: app/validators.py:944 +#: app/validators.py:956 msgid "A tryout must allow at least one player." msgstr "Une sélection doit accepter au moins un joueur." -#: app/validators.py:947 +#: app/validators.py:959 msgid "The player limit must be a whole number." msgstr "La limite de joueurs doit être un nombre entier." -#: app/validators.py:960 +#: app/validators.py:972 msgid "End date cannot be before start date." msgstr "La date de fin ne peut pas précéder la date de début." -#: app/validators.py:987 app/validators.py:988 +#: app/validators.py:999 app/validators.py:1000 msgid "Team name is required." msgstr "Le nom de l’équipe est obligatoire." -#: app/validators.py:1012 +#: app/validators.py:1024 msgid "Scores run from 1 to 10." msgstr "Les notes vont de 1 à 10." -#: app/validators.py:1013 +#: app/validators.py:1025 msgid "A score must be a whole number from 1 to 10." msgstr "Une note doit être un nombre entier de 1 à 10." +#: app/validators.py:1078 +msgid "Title is required." +msgstr "Un titre est requis." + +#: app/validators.py:1082 +msgid "That document type is not recognised." +msgstr "Ce type de document n'est pas reconnu." + +#: app/routes/admin.py:485 +#, python-format +msgid "Document \"%(title)s\" created." +msgstr "Équipe « %(team_name)s » créée." + +#: app/routes/admin.py:510 app/routes/admin.py:584 +#: app/routes/users/documents.py:144 app/routes/users/documents.py:206 +msgid "Document storage is temporarily unavailable. Please try again later." +msgstr "" +"Le stockage des contrats est temporairement indisponible. Veuillez " +"r\\xc3\\xa9essayer plus tard." + +#: app/routes/admin.py:534 +#, python-format +msgid "Version %(number)s of \"%(title)s\" published." +msgstr "Version %(number)s de « %(title)s » publiée." + +#: app/routes/admin.py:560 +#, python-format +msgid "\"%(title)s\" is now downloadable by team members." +msgstr "« %(title)s » est maintenant téléchargeable par les membres des équipes." + +#: app/routes/admin.py:566 +#, python-format +msgid "\"%(title)s\" is no longer downloadable." +msgstr "« %(title)s » n'est plus téléchargeable." + #: app/routes/auth.py:247 msgid "This account has been deactivated." msgstr "Ce compte a été désactivé." @@ -346,320 +389,348 @@ msgstr "Compte Discord connecté. Votre profil a été pré-rempli." msgid "You have been logged out." msgstr "Vous avez été déconnecté." -#: app/routes/evaluations.py:53 +#: app/routes/evaluations.py:169 app/routes/evaluations.py:281 msgid "You do not have permission to view evaluations." msgstr "Vous n’avez pas les droits pour consulter les évaluations." -#: app/routes/evaluations.py:143 +#: app/routes/evaluations.py:286 +msgid "Can only view evaluations for players." +msgstr "Seuls des joueurs peuvent être évalués." + +#: app/routes/evaluations.py:334 msgid "You do not have permission to evaluate players." msgstr "Vous n’avez pas les droits pour évaluer des joueurs." -#: app/routes/evaluations.py:148 app/routes/evaluations.py:234 +#: app/routes/evaluations.py:339 app/routes/evaluations.py:425 msgid "You do not have permission to evaluate players in this tryout." msgstr "Vous n’avez pas les droits pour évaluer des joueurs dans cette sélection." -#: app/routes/evaluations.py:159 +#: app/routes/evaluations.py:350 msgid "Player is not registered for this tryout." msgstr "Ce joueur n’est pas inscrit à cette sélection." -#: app/routes/evaluations.py:164 +#: app/routes/evaluations.py:355 msgid "Can only evaluate players." msgstr "Seuls des joueurs peuvent être évalués." -#: app/routes/evaluations.py:210 +#: app/routes/evaluations.py:401 msgid "Evaluation submitted successfully!" msgstr "Évaluation enregistrée." -#: app/routes/evaluations.py:212 +#: app/routes/evaluations.py:403 msgid "Evaluation updated!" msgstr "Évaluation mise à jour." -#: app/routes/evaluations.py:229 app/routes/teams.py:340 -#: app/routes/teams.py:383 app/routes/teams.py:426 app/routes/teams.py:454 -#: app/routes/teams.py:482 app/routes/teams.py:519 app/routes/tryouts.py:507 -#: app/routes/tryouts.py:531 app/routes/tryouts.py:559 -#: app/routes/tryouts.py:610 app/routes/tryouts.py:650 -#: app/routes/tryouts.py:677 +#: app/routes/evaluations.py:420 app/routes/teams.py:347 +#: app/routes/teams.py:391 app/routes/teams.py:435 app/routes/teams.py:463 +#: app/routes/teams.py:491 app/routes/teams.py:529 app/routes/tryouts.py:521 +#: app/routes/tryouts.py:548 app/routes/tryouts.py:579 +#: app/routes/tryouts.py:633 app/routes/tryouts.py:676 +#: app/routes/tryouts.py:706 app/routes/tryouts.py:756 +#: app/routes/tryouts.py:788 app/routes/tryouts.py:832 +#: app/routes/tryouts.py:870 msgid "Permission denied." msgstr "Accès refusé." +#: app/routes/evaluations.py:541 +msgid "Scores must be whole numbers from 1 to 10." +msgstr "Une note doit être un nombre entier de 1 à 10." + #: app/routes/main.py:55 msgid "That language is not available." msgstr "Cette langue n’est pas disponible." -#: app/routes/matches.py:383 +#: app/routes/matches.py:444 msgid "You do not have permission to schedule matches for this tryout." msgstr "Vous n’avez pas les droits pour planifier des matchs pour cette sélection." -#: app/routes/matches.py:387 app/routes/matches.py:463 +#: app/routes/matches.py:448 app/routes/matches.py:524 msgid "This tryout has ended. Matches can no longer be created or modified." msgstr "" "Cette sélection est terminée. Les matchs ne peuvent plus être créés ni " "modifiés." -#: app/routes/matches.py:445 +#: app/routes/matches.py:506 msgid "Match scheduled successfully!" msgstr "Match planifié." -#: app/routes/matches.py:459 app/routes/team_matches.py:235 +#: app/routes/matches.py:520 app/routes/team_matches.py:238 msgid "You do not have permission to edit this match." msgstr "Vous n’avez pas les droits pour modifier ce match." -#: app/routes/matches.py:552 app/routes/team_matches.py:265 +#: app/routes/matches.py:684 app/routes/team_matches.py:268 msgid "Match updated successfully!" msgstr "Match mis à jour." -#: app/routes/matches.py:588 app/routes/team_matches.py:284 +#: app/routes/matches.py:720 app/routes/team_matches.py:289 msgid "You do not have permission to delete this match." msgstr "Vous n’avez pas les droits pour supprimer ce match." -#: app/routes/matches.py:591 +#: app/routes/matches.py:723 msgid "This tryout has ended. Matches can no longer be deleted." msgstr "Cette sélection est terminée. Les matchs ne peuvent plus être supprimés." -#: app/routes/matches.py:604 app/routes/team_matches.py:289 +#: app/routes/matches.py:736 app/routes/team_matches.py:294 msgid "Match deleted successfully." msgstr "Match supprimé." -#: app/routes/team_matches.py:128 +#: app/routes/team_matches.py:131 msgid "You do not have permission to schedule matches for this team." msgstr "Vous n’avez pas les droits pour planifier des matchs pour cette équipe." -#: app/routes/team_matches.py:220 +#: app/routes/team_matches.py:223 #, python-format msgid "Team match \"%(title)s\" scheduled successfully!" msgstr "Match d’équipe « %(title)s » planifié." -#: app/routes/teams.py:43 +#: app/routes/teams.py:45 msgid "Use My Team(s) to view your teams." msgstr "Utilisez « Mon ou mes équipes » pour consulter vos équipes." -#: app/routes/teams.py:46 +#: app/routes/teams.py:48 msgid "You do not have permission to view teams." msgstr "Vous n’avez pas les droits pour consulter les équipes." -#: app/routes/teams.py:78 +#: app/routes/teams.py:80 msgid "This page is for players." msgstr "Cette page est réservée aux joueurs." -#: app/routes/teams.py:185 +#: app/routes/teams.py:187 msgid "You do not have permission to create teams." msgstr "Vous n’avez pas les droits pour créer une équipe." -#: app/routes/teams.py:196 app/routes/teams.py:238 +#: app/routes/teams.py:198 app/routes/teams.py:243 #, python-format msgid "Team \"%(name)s\" already exists." msgstr "L’équipe « %(name)s » existe déjà." -#: app/routes/teams.py:217 +#: app/routes/teams.py:222 #, python-format msgid "Team \"%(name)s\" created successfully!" msgstr "Équipe « %(name)s » créée." -#: app/routes/teams.py:227 +#: app/routes/teams.py:232 msgid "You do not have permission to edit this team." msgstr "Vous n’avez pas les droits pour modifier cette équipe." -#: app/routes/teams.py:271 +#: app/routes/teams.py:278 #, python-format msgid "Team \"%(name)s\" updated successfully!" msgstr "Équipe « %(name)s » mise à jour." -#: app/routes/teams.py:299 +#: app/routes/teams.py:306 msgid "You do not have permission to delete teams." msgstr "Vous n’avez pas les droits pour supprimer une équipe." -#: app/routes/teams.py:330 +#: app/routes/teams.py:337 #, python-format msgid "Team \"%(name)s\" deleted successfully." msgstr "Équipe « %(name)s » supprimée." -#: app/routes/teams.py:347 +#: app/routes/teams.py:354 msgid "Please select a coach." msgstr "Veuillez choisir un coach." -#: app/routes/teams.py:352 +#: app/routes/teams.py:359 msgid "Only coaches can be assigned as coach." msgstr "Seuls les coachs peuvent être assignés comme coach." -#: app/routes/teams.py:358 +#: app/routes/teams.py:365 #, python-format msgid "%(username)s is already a coach of %(name)s." msgstr "%(username)s est déjà coach de %(name)s." -#: app/routes/teams.py:371 +#: app/routes/teams.py:379 #, python-format msgid "%(username)s added as coach of %(name)s." msgstr "%(username)s a été ajouté comme coach de %(name)s." -#: app/routes/teams.py:390 +#: app/routes/teams.py:398 msgid "Please select a manager." msgstr "Veuillez choisir un gérant." -#: app/routes/teams.py:395 +#: app/routes/teams.py:403 msgid "Only managers can be assigned as manager." msgstr "Seuls les gérants peuvent être assignés comme gérant." -#: app/routes/teams.py:401 +#: app/routes/teams.py:409 #, python-format msgid "%(username)s is already a manager of %(name)s." msgstr "%(username)s est déjà gérant de %(name)s." -#: app/routes/teams.py:414 +#: app/routes/teams.py:423 #, python-format msgid "%(username)s added as manager of %(name)s." msgstr "%(username)s a été ajouté comme gérant de %(name)s." -#: app/routes/teams.py:444 +#: app/routes/teams.py:453 #, python-format msgid "Coach removed from %(name)s." msgstr "Coach retiré de %(name)s." -#: app/routes/teams.py:472 +#: app/routes/teams.py:481 #, python-format msgid "Manager removed from %(name)s." msgstr "Gérant retiré de %(name)s." -#: app/routes/teams.py:489 app/routes/tryouts.py:568 +#: app/routes/teams.py:498 app/routes/tryouts.py:588 msgid "Please select a player." msgstr "Veuillez choisir un joueur." -#: app/routes/teams.py:495 +#: app/routes/teams.py:504 msgid "Can only assign players to teams." msgstr "Seuls des joueurs peuvent être assignés à une équipe." -#: app/routes/teams.py:501 +#: app/routes/teams.py:510 #, python-format msgid "%(username)s is already on %(name)s." msgstr "%(username)s fait déjà partie de %(name)s." -#: app/routes/teams.py:509 +#: app/routes/teams.py:519 #, python-format msgid "%(username)s added to %(name)s!" msgstr "%(username)s a été ajouté à %(name)s." -#: app/routes/teams.py:526 app/routes/teams.py:604 +#: app/routes/teams.py:536 app/routes/teams.py:614 #, python-format msgid "%(username)s is not on %(name)s." msgstr "%(username)s ne fait pas partie de %(name)s." -#: app/routes/teams.py:534 +#: app/routes/teams.py:544 #, python-format msgid "%(username)s removed from %(name)s." msgstr "%(username)s a été retiré de %(name)s." -#: app/routes/teams.py:571 app/routes/teams.py:593 +#: app/routes/teams.py:581 app/routes/teams.py:603 msgid "You do not have permission to add notes to this team." msgstr "Vous n’avez pas les droits pour ajouter des notes à cette équipe." -#: app/routes/teams.py:583 +#: app/routes/teams.py:593 msgid "Team notes added successfully!" msgstr "Notes d’équipe ajoutées." -#: app/routes/teams.py:598 app/routes/users/notes.py:222 -#: app/routes/users/notes.py:262 +#: app/routes/teams.py:608 app/routes/users/notes.py:223 +#: app/routes/users/notes.py:263 msgid "Can only add notes for players." msgstr "Il n’est possible d’ajouter des notes que pour des joueurs." -#: app/routes/teams.py:618 +#: app/routes/teams.py:628 #, python-format msgid "Note added for %(username)s!" msgstr "Note ajoutée pour %(username)s." -#: app/routes/tryouts.py:147 +#: app/routes/tryouts.py:152 msgid "You do not have permission to create tryouts." msgstr "Vous n’avez pas les droits pour créer une sélection." -#: app/routes/tryouts.py:194 +#: app/routes/tryouts.py:199 msgid "Tryout created successfully!" msgstr "Sélection créée." -#: app/routes/tryouts.py:211 +#: app/routes/tryouts.py:219 msgid "You do not have permission to edit this tryout." msgstr "Vous n’avez pas les droits pour modifier cette sélection." -#: app/routes/tryouts.py:215 +#: app/routes/tryouts.py:223 msgid "This tryout has ended and can no longer be modified." msgstr "Cette sélection est terminée et ne peut plus être modifiée." -#: app/routes/tryouts.py:261 +#: app/routes/tryouts.py:269 msgid "Tryout updated successfully!" msgstr "Sélection mise à jour." -#: app/routes/tryouts.py:301 +#: app/routes/tryouts.py:307 msgid "You do not have permission to view this tryout." msgstr "Vous n’avez pas les droits pour consulter cette sélection." -#: app/routes/tryouts.py:469 +#: app/routes/tryouts.py:480 msgid "Only players can register for tryouts." msgstr "Seuls les joueurs peuvent s’inscrire à une sélection." -#: app/routes/tryouts.py:474 +#: app/routes/tryouts.py:485 msgid "This tryout is not accepting registrations." msgstr "Cette sélection n’accepte pas d’inscriptions." -#: app/routes/tryouts.py:481 +#: app/routes/tryouts.py:492 msgid "You are already registered for this tryout." msgstr "Vous êtes déjà inscrit à cette sélection." -#: app/routes/tryouts.py:487 app/routes/tryouts.py:590 +#: app/routes/tryouts.py:498 app/routes/tryouts.py:610 msgid "This tryout is full." msgstr "Cette sélection est complète." -#: app/routes/tryouts.py:493 +#: app/routes/tryouts.py:504 msgid "Successfully registered for tryout!" msgstr "Inscription à la sélection réussie." -#: app/routes/tryouts.py:517 +#: app/routes/tryouts.py:531 #, python-format msgid "Tryout status updated to %(new_status)s." msgstr "Statut de la sélection mis à jour : %(new_status)s." -#: app/routes/tryouts.py:545 +#: app/routes/tryouts.py:562 msgid "Registration status updated." msgstr "Statut d’inscription mis à jour." -#: app/routes/tryouts.py:576 +#: app/routes/tryouts.py:596 msgid "Can only register players." msgstr "Seuls des joueurs peuvent être inscrits." -#: app/routes/tryouts.py:582 +#: app/routes/tryouts.py:602 #, python-format msgid "%(username)s is already registered for this tryout." msgstr "%(username)s est déjà inscrit à cette sélection." -#: app/routes/tryouts.py:596 +#: app/routes/tryouts.py:616 #, python-format msgid "%(username)s registered for tryout!" msgstr "%(username)s est inscrit à la sélection." -#: app/routes/tryouts.py:636 +#: app/routes/tryouts.py:659 #, python-format msgid "%(username)s removed from tryout." msgstr "%(username)s a été retiré de la sélection." -#: app/routes/tryouts.py:662 +#: app/routes/tryouts.py:688 #, python-format msgid "Team \"%(team_name)s\" created!" msgstr "Équipe « %(team_name)s » créée." -#: app/routes/tryouts.py:699 app/routes/users/notes.py:350 +#: app/routes/tryouts.py:728 app/routes/users/notes.py:351 msgid "That player is not registered for this tryout." msgstr "Ce joueur n’est pas inscrit à cette sélection." -#: app/routes/tryouts.py:704 +#: app/routes/tryouts.py:733 msgid "Player is already on this team." msgstr "Ce joueur est déjà dans cette équipe." -#: app/routes/tryouts.py:709 +#: app/routes/tryouts.py:738 msgid "Player added to team!" msgstr "Joueur ajouté à l’équipe." -#: app/routes/tryouts.py:723 +#: app/routes/tryouts.py:770 +#, python-format +msgid "Team renamed to \"%(team_name)s\"." +msgstr "Équipe « %(team_name)s » créée." + +#: app/routes/tryouts.py:814 +#, python-format +msgid "Team \"%(name)s\" deleted." +msgstr "Équipe « %(name)s » supprimée." + +#: app/routes/tryouts.py:849 +msgid "Player removed from team." +msgstr "Gérant retiré de %(name)s." + +#: app/routes/tryouts.py:884 +msgid "Position updated." +msgstr "Dernière mise à jour" + +#: app/routes/tryouts.py:901 msgid "You do not have permission to delete this tryout." msgstr "Vous n’avez pas les droits pour supprimer cette sélection." -#: app/routes/tryouts.py:759 +#: app/routes/tryouts.py:937 msgid "Tryout deleted successfully." msgstr "Sélection supprimée." @@ -729,194 +800,230 @@ msgstr "Seul le président peut créer des utilisateurs." msgid "User %(full_name)s created as %(role)s!" msgstr "Utilisateur %(full_name)s créé avec le rôle %(role)s." -#: app/routes/users/availability.py:210 -msgid "Only coaches can manage availability." -msgstr "Seuls les coachs peuvent gérer leurs disponibilités." - -#: app/routes/users/contracts.py:104 +#: app/routes/users/contracts.py:105 msgid "Only presidents, managers, and coaches can upload contracts." msgstr "Seuls les présidents, gérants et coachs peuvent téléverser un contrat." -#: app/routes/users/contracts.py:108 app/routes/users/contracts.py:189 +#: app/routes/users/contracts.py:109 app/routes/users/contracts.py:190 msgid "Document uploads are currently disabled." msgstr "Les téléversements de documents sont actuellement désactivés." -#: app/routes/users/contracts.py:127 +#: app/routes/users/contracts.py:128 msgid "You do not have permission to upload a contract for this player." msgstr "Vous n’avez pas les droits pour téléverser un contrat pour ce joueur." -#: app/routes/users/contracts.py:155 app/routes/users/contracts.py:210 -#: app/routes/users/contracts.py:233 app/routes/users/contracts.py:252 +#: app/routes/users/contracts.py:156 app/routes/users/contracts.py:211 +#: app/routes/users/contracts.py:234 app/routes/users/contracts.py:253 msgid "Contract storage is temporarily unavailable. Please try again later." msgstr "" "Le stockage des contrats est temporairement indisponible. Veuillez " "r\\xc3\\xa9essayer plus tard." -#: app/routes/users/contracts.py:171 +#: app/routes/users/contracts.py:172 #, python-format msgid "Contract uploaded successfully for %(username)s!" msgstr "Contrat téléversé pour %(username)s." -#: app/routes/users/contracts.py:185 +#: app/routes/users/contracts.py:186 msgid "Only the player can upload their signed contract." msgstr "Seul le joueur peut téléverser son contrat signé." -#: app/routes/users/contracts.py:218 +#: app/routes/users/contracts.py:219 msgid "Signed contract uploaded successfully!" msgstr "Contrat signé téléversé." -#: app/routes/users/contracts.py:228 app/routes/users/contracts.py:244 +#: app/routes/users/contracts.py:229 app/routes/users/contracts.py:245 msgid "You do not have permission to download this contract." msgstr "Vous n’avez pas les droits pour télécharger ce contrat." -#: app/routes/users/contracts.py:247 +#: app/routes/users/contracts.py:248 msgid "No signed contract available." msgstr "Aucun contrat signé disponible." -#: app/routes/users/notes.py:43 +#: app/routes/users/documents.py:106 +msgid "You do not have permission to sign this document." +msgstr "Vous n’avez pas les droits pour consulter cette sélection." + +#: app/routes/users/documents.py:110 app/routes/users/documents.py:171 +msgid "This document has already been completed." +msgstr "Cette demande a déjà été traitée." + +#: app/routes/users/documents.py:113 +msgid "This document is acknowledged, not signed." +msgstr "Ce document exige une prise de connaissance, pas une signature." + +#: app/routes/users/documents.py:116 app/routes/users/documents.py:177 +msgid "This document has no version published yet." +msgstr "Ce document n'a pas encore de version publiée." + +#: app/routes/users/documents.py:127 +msgid "You must be part of a team before signing documents." +msgstr "Vous devez faire partie d'une équipe avant de signer des documents." + +#: app/routes/users/documents.py:157 +msgid "Document signed successfully!" +msgstr "Sélection mise à jour." + +#: app/routes/users/documents.py:167 +msgid "You do not have permission to acknowledge this document." +msgstr "Vous n’avez pas les droits pour supprimer cette sélection." + +#: app/routes/users/documents.py:174 +msgid "This document must be signed, not acknowledged." +msgstr "Ce document doit être signé, pas seulement confirmé." + +#: app/routes/users/documents.py:185 +msgid "Document acknowledged." +msgstr "Prise de connaissance confirmée." + +#: app/routes/users/documents.py:199 +msgid "This document is not available to you." +msgstr "Cette demande ne vous est pas destinée." + +#: app/routes/users/notes.py:44 msgid "This page is for players only." msgstr "Cette page est réservée aux joueurs." -#: app/routes/users/notes.py:80 +#: app/routes/users/notes.py:81 msgid "Only coaches can access the notes dashboard." msgstr "Seuls les coachs ont accès au tableau des notes." -#: app/routes/users/notes.py:172 +#: app/routes/users/notes.py:173 msgid "Only coaches can manage team notes." msgstr "Seuls les coachs peuvent gérer les notes d’équipe." -#: app/routes/users/notes.py:178 +#: app/routes/users/notes.py:179 msgid "You are not assigned to a team." msgstr "Vous n’êtes assigné à aucune équipe." -#: app/routes/users/notes.py:195 +#: app/routes/users/notes.py:196 msgid "Team notes saved successfully!" msgstr "Notes d’équipe enregistrées." -#: app/routes/users/notes.py:210 +#: app/routes/users/notes.py:211 msgid "Only coaches can manage personal notes." msgstr "Seuls les coachs peuvent gérer les notes personnelles." -#: app/routes/users/notes.py:226 app/routes/users/notes.py:266 -#: app/routes/users/notes.py:346 app/routes/users/notes.py:411 +#: app/routes/users/notes.py:227 app/routes/users/notes.py:267 +#: app/routes/users/notes.py:347 app/routes/users/notes.py:412 msgid "You can only write notes about players you work with." msgstr "" "Vous ne pouvez écrire des notes que sur les joueurs avec qui vous " "travaillez." -#: app/routes/users/notes.py:236 app/routes/users/notes.py:306 +#: app/routes/users/notes.py:237 app/routes/users/notes.py:307 #, python-format msgid "Note added for %(username)s." msgstr "Note ajoutée pour %(username)s." -#: app/routes/users/notes.py:250 app/routes/users/notes.py:320 -#: app/routes/users/notes.py:384 +#: app/routes/users/notes.py:251 app/routes/users/notes.py:321 +#: app/routes/users/notes.py:385 msgid "Only coaches can add personal notes." msgstr "Seuls les coachs peuvent ajouter des notes personnelles." -#: app/routes/users/notes.py:272 +#: app/routes/users/notes.py:273 msgid "You cannot use that match as note context." msgstr "Vous ne pouvez pas utiliser ce match comme contexte de note." -#: app/routes/users/notes.py:275 +#: app/routes/users/notes.py:276 msgid "That player did not participate in the selected match." msgstr "Ce joueur n’a pas participé au match sélectionné." -#: app/routes/users/notes.py:281 +#: app/routes/users/notes.py:282 msgid "You cannot use that tryout as note context." msgstr "Vous ne pouvez pas utiliser cette sélection comme contexte de note." -#: app/routes/users/notes.py:284 +#: app/routes/users/notes.py:285 msgid "That player is not registered for the selected tryout." msgstr "Ce joueur n’est pas inscrit à la sélection choisie." -#: app/routes/users/notes.py:290 +#: app/routes/users/notes.py:291 msgid "You cannot use that team as note context." msgstr "Vous ne pouvez pas utiliser cette équipe comme contexte de note." -#: app/routes/users/notes.py:293 +#: app/routes/users/notes.py:294 msgid "That player is not on the selected team." msgstr "Ce joueur ne fait pas partie de l’équipe sélectionnée." -#: app/routes/users/notes.py:325 +#: app/routes/users/notes.py:326 msgid "You do not have permission to add notes for this tryout." msgstr "Vous n’avez pas les droits pour ajouter des notes à cette sélection." -#: app/routes/users/notes.py:342 +#: app/routes/users/notes.py:343 msgid "Invalid tryout context." msgstr "Contexte de sélection invalide." -#: app/routes/users/notes.py:361 app/routes/users/notes.py:426 +#: app/routes/users/notes.py:362 app/routes/users/notes.py:427 msgid "Note added successfully." msgstr "Note ajoutée." -#: app/routes/users/notes.py:389 +#: app/routes/users/notes.py:390 msgid "You do not have permission to add notes for this match." msgstr "Vous n’avez pas les droits pour ajouter des notes à ce match." -#: app/routes/users/notes.py:407 +#: app/routes/users/notes.py:408 msgid "Invalid match context." msgstr "Contexte de match invalide." -#: app/routes/users/notes.py:415 +#: app/routes/users/notes.py:416 msgid "That player did not participate in this match." msgstr "Ce joueur n’a pas participé à ce match." -#: app/routes/users/one_on_one.py:22 +#: app/routes/users/one_on_one.py:23 msgid "Only players can request One on One sessions." msgstr "Seuls les joueurs peuvent demander une rencontre individuelle." -#: app/routes/users/one_on_one.py:35 +#: app/routes/users/one_on_one.py:36 msgid "You do not have a coach assigned to your team." msgstr "Aucun coach n’est assigné à votre équipe." -#: app/routes/users/one_on_one.py:66 +#: app/routes/users/one_on_one.py:67 msgid "Cannot request One on One - no coach assigned." msgstr "Impossible de demander une rencontre : aucun coach assigné." -#: app/routes/users/one_on_one.py:92 +#: app/routes/users/one_on_one.py:93 msgid "The requested time is not within the coach's availability." msgstr "L’horaire demandé ne correspond à aucune disponibilité du coach." -#: app/routes/users/one_on_one.py:120 +#: app/routes/users/one_on_one.py:121 msgid "Your One on One request has been submitted!" msgstr "Votre demande de rencontre a été envoyée." -#: app/routes/users/one_on_one.py:165 +#: app/routes/users/one_on_one.py:166 msgid "Only coaches can accept One on One requests." msgstr "Seuls les coachs peuvent accepter une demande de rencontre." -#: app/routes/users/one_on_one.py:171 app/routes/users/one_on_one.py:221 +#: app/routes/users/one_on_one.py:172 app/routes/users/one_on_one.py:222 msgid "This request is not for you." msgstr "Cette demande ne vous est pas destinée." -#: app/routes/users/one_on_one.py:175 app/routes/users/one_on_one.py:225 +#: app/routes/users/one_on_one.py:176 app/routes/users/one_on_one.py:226 msgid "This request has already been processed." msgstr "Cette demande a déjà été traitée." -#: app/routes/users/one_on_one.py:202 +#: app/routes/users/one_on_one.py:203 #, python-format msgid "One on One request from %(player)s has been approved!" msgstr "La demande de rencontre de %(player)s a été approuvée." -#: app/routes/users/one_on_one.py:215 +#: app/routes/users/one_on_one.py:216 msgid "Only coaches can reject One on One requests." msgstr "Seuls les coachs peuvent refuser une demande de rencontre." -#: app/routes/users/one_on_one.py:262 +#: app/routes/users/one_on_one.py:263 #, python-format msgid "One on One request from %(player)s has been rejected." msgstr "La demande de rencontre de %(player)s a été refusée." -#: app/routes/users/profile.py:82 +#: app/routes/users/profile.py:83 msgid "Username already taken." msgstr "Ce nom d’utilisateur est déjà pris." -#: app/routes/users/profile.py:92 +#: app/routes/users/profile.py:93 msgid "Email already in use." msgstr "Cette adresse courriel est déjà utilisée." -#: app/routes/users/profile.py:131 +#: app/routes/users/profile.py:132 msgid "Profile updated successfully!" msgstr "Profil mis à jour." @@ -1063,7 +1170,7 @@ msgstr "%(total)s au total" msgid "Next" msgstr "Suivant" -#: app/templates/layouts/base.html:48 app/templates/layouts/base.html:154 +#: app/templates/layouts/base.html:48 app/templates/layouts/base.html:160 #: app/templates/pages/dashboard.html:2 app/templates/pages/dashboard.html:3 msgid "Dashboard" msgstr "Tableau de bord" @@ -1081,6 +1188,8 @@ msgstr "Calendrier" #: app/templates/layouts/base.html:67 app/templates/pages/dashboard.html:43 #: app/templates/pages/evaluations.html:3 #: app/templates/pages/evaluations.html:4 +#: app/templates/pages/player_evaluations.html:2 +#: app/templates/pages/player_evaluations.html:4 msgid "Evaluations" msgstr "Évaluations" @@ -1108,29 +1217,36 @@ msgstr "Mes notes" msgid "Notes & One on One" msgstr "Notes et rencontres individuelles" -#: app/templates/layouts/base.html:119 app/templates/pages/contracts.html:2 +#: app/templates/layouts/base.html:119 +#: app/templates/pages/admin_document_detail.html:4 +#: app/templates/pages/admin_documents.html:2 +#: app/templates/pages/admin_documents.html:4 +msgid "Documents" +msgstr "Commentaires" + +#: app/templates/layouts/base.html:125 app/templates/pages/contracts.html:2 #: app/templates/pages/contracts.html:3 app/templates/pages/profile.html:9 msgid "Contracts" msgstr "Contrats" -#: app/templates/layouts/base.html:126 app/templates/pages/profile.html:2 +#: app/templates/layouts/base.html:132 app/templates/pages/profile.html:2 #: app/templates/pages/profile.html:3 msgid "My Profile" msgstr "Mon profil" -#: app/templates/layouts/base.html:137 +#: app/templates/layouts/base.html:143 msgid "Logout" msgstr "Déconnexion" -#: app/templates/layouts/base.html:158 +#: app/templates/layouts/base.html:164 msgid "Toggle dark mode" msgstr "Basculer le mode sombre" -#: app/templates/layouts/base.html:170 app/templates/layouts/base.html:189 +#: app/templates/layouts/base.html:176 app/templates/layouts/base.html:195 msgid "Dismiss" msgstr "Fermer" -#: app/templates/layouts/base.html:199 +#: app/templates/layouts/base.html:205 msgid "UdeS team manager" msgstr "UdeS team manager" @@ -1150,7 +1266,7 @@ msgstr "Ajouter une note personnelle" #: app/templates/pages/notes.html:122 #: app/templates/pages/team_match_form.html:114 #: app/templates/pages/teams.html:145 app/templates/pages/view_tryout.html:154 -#: app/templates/pages/view_tryout.html:498 +#: app/templates/pages/view_tryout.html:575 msgid "Player" msgstr "Joueur" @@ -1201,11 +1317,298 @@ msgstr "Notes d’équipe (référence)" #: app/templates/pages/evaluate_player.html:131 #: app/templates/pages/notes.html:100 #: app/templates/pages/personal_notes.html:36 -#: app/templates/pages/view_tryout.html:309 +#: app/templates/pages/view_tryout.html:380 msgid "Add Note" msgstr "Ajouter une note" -#: app/templates/pages/calendar.html:9 app/templates/pages/view_tryout.html:302 +#: app/templates/pages/admin_document_detail.html:8 +#: app/templates/pages/admin_documents.html:8 +#: app/templates/pages/my_documents.html:8 +msgid "Player contract" +msgstr "Téléverser un contrat" + +#: app/templates/pages/admin_document_detail.html:9 +#: app/templates/pages/admin_documents.html:9 +#: app/templates/pages/my_documents.html:9 +msgid "Coach contract" +msgstr "Téléverser un contrat" + +#: app/templates/pages/admin_document_detail.html:10 +#: app/templates/pages/admin_documents.html:10 +#: app/templates/pages/my_documents.html:10 +msgid "Manager contract" +msgstr "Mes contrats" + +#: app/templates/pages/admin_document_detail.html:11 +#: app/templates/pages/admin_documents.html:11 +#: app/templates/pages/my_documents.html:11 +msgid "Team agreement" +msgstr "Répartition des équipes" + +#: app/templates/pages/admin_document_detail.html:12 +#: app/templates/pages/admin_documents.html:12 +#: app/templates/pages/my_documents.html:12 +msgid "Code of conduct" +msgstr "Code de conduite" + +#: app/templates/pages/admin_document_detail.html:13 +#: app/templates/pages/admin_documents.html:13 +#: app/templates/pages/my_documents.html:13 +msgid "Ethics code" +msgstr "Code d'éthique" + +#: app/templates/pages/admin_document_detail.html:18 +msgid "Publish a new version" +msgstr "Publier une nouvelle version" + +#: app/templates/pages/admin_document_detail.html:22 +#: app/templates/pages/admin_documents.html:29 +#: app/templates/pages/admin_documents.html:59 +#: app/templates/pages/my_documents.html:27 +#: app/templates/pages/view_tryout.html:393 +msgid "Type" +msgstr "Type" + +#: app/templates/pages/admin_document_detail.html:23 +msgid "signed by the member" +msgstr "signé par le membre" + +#: app/templates/pages/admin_document_detail.html:24 +msgid "acknowledged by the member" +msgstr "confirmé par le membre" + +#: app/templates/pages/admin_document_detail.html:29 +msgid "New version file (PDF)" +msgstr "Nouveau fichier de version (PDF)" + +#: app/templates/pages/admin_document_detail.html:31 +#: app/templates/pages/contracts.html:98 +#: app/templates/pages/my_documents.html:145 +#: app/templates/pages/upload_contract.html:28 +msgid "Accepted format: PDF" +msgstr "Format accepté : PDF" + +#: app/templates/pages/admin_document_detail.html:34 +msgid "Version notes (optional)" +msgstr "Notes (facultatives)" + +#: app/templates/pages/admin_document_detail.html:35 +msgid "What changed in this version?" +msgstr "Qu'est-ce qui a changé dans cette version ?" + +#: app/templates/pages/admin_document_detail.html:38 +msgid "Back" +msgstr "Retour" + +#: app/templates/pages/admin_document_detail.html:40 +msgid "Publish version" +msgstr "Publier la version" + +#: app/templates/pages/admin_document_detail.html:49 +msgid "Versions" +msgstr "Cohésion" + +#: app/templates/pages/admin_document_detail.html:56 +#: app/templates/pages/admin_documents.html:60 +#: app/templates/pages/my_documents.html:28 +msgid "Version" +msgstr "Cohésion" + +#: app/templates/pages/admin_document_detail.html:57 +msgid "File" +msgstr "Profil" + +#: app/templates/pages/admin_document_detail.html:58 +#: app/templates/pages/notes.html:2 app/templates/pages/notes.html:3 +#: app/templates/pages/teams.html:75 +msgid "Notes" +msgstr "Notes" + +#: app/templates/pages/admin_document_detail.html:59 +msgid "Published" +msgstr "Publié" + +#: app/templates/pages/admin_document_detail.html:60 +#: app/templates/pages/admin_documents.html:63 +#: app/templates/pages/contracts.html:30 app/templates/pages/dashboard.html:175 +#: app/templates/pages/my_documents.html:30 app/templates/pages/notes.html:127 +#: app/templates/pages/team_matches.html:34 app/templates/pages/teams.html:151 +#: app/templates/pages/users.html:27 app/templates/pages/view_tryout.html:160 +#: app/templates/pages/view_tryout.html:400 +msgid "Actions" +msgstr "Actions" + +#: app/templates/pages/admin_document_detail.html:67 +#: app/templates/pages/admin_documents.html:73 +#, python-format +msgid "v%(number)s" +msgstr "v%(number)s" + +#: app/templates/pages/admin_document_detail.html:69 +msgid "Current" +msgstr "Créer" + +#: app/templates/pages/admin_document_detail.html:75 +#: app/templates/pages/contracts.html:49 app/templates/pages/contracts.html:50 +#: app/templates/pages/my_documents.html:56 +#: app/templates/pages/my_documents.html:57 +msgid "Download" +msgstr "Télécharger" + +#: app/templates/pages/admin_document_detail.html:82 +msgid "No versions published yet." +msgstr "Aucun joueur inscrit pour l’instant." + +#: app/templates/pages/admin_document_detail.html:93 +msgid "Completion" +msgstr "Terminé" + +#: app/templates/pages/admin_document_detail.html:100 +#: app/templates/pages/my_documents.html:102 +msgid "Member" +msgstr "Membre" + +#: app/templates/pages/admin_document_detail.html:101 +#: app/templates/pages/create_user.html:31 +#: app/templates/pages/dashboard.html:74 app/templates/pages/edit_user.html:27 +#: app/templates/pages/my_documents.html:103 app/templates/pages/users.html:23 +msgid "Role" +msgstr "Rôle" + +#: app/templates/pages/admin_document_detail.html:102 +#: app/templates/pages/contracts.html:28 app/templates/pages/dashboard.html:95 +#: app/templates/pages/dashboard.html:118 +#: app/templates/pages/dashboard.html:175 +#: app/templates/pages/dashboard.html:202 +#: app/templates/pages/dashboard.html:321 +#: app/templates/pages/match_form.html:60 +#: app/templates/pages/my_documents.html:29 +#: app/templates/pages/my_teams.html:53 app/templates/pages/notes.html:126 +#: app/templates/pages/one_on_one.html:73 +#: app/templates/pages/team_match_form.html:61 +#: app/templates/pages/team_matches.html:33 app/templates/pages/teams.html:146 +#: app/templates/pages/users.html:25 app/templates/pages/view_tryout.html:155 +#: app/templates/pages/view_tryout.html:398 +msgid "Status" +msgstr "Statut" + +#: app/templates/pages/admin_document_detail.html:103 +msgid "Completed at" +msgstr "Terminé" + +#: app/templates/pages/admin_document_detail.html:113 +#: app/templates/pages/contracts.html:54 +#: app/templates/pages/my_documents.html:46 +#: app/templates/pages/my_documents.html:115 +msgid "Signed" +msgstr "Signé" + +#: app/templates/pages/admin_document_detail.html:115 +#: app/templates/pages/my_documents.html:48 +#: app/templates/pages/my_documents.html:116 +msgid "Acknowledged" +msgstr "Confirmé" + +#: app/templates/pages/admin_document_detail.html:117 +#: app/templates/pages/dashboard.html:238 +#: app/templates/pages/my_documents.html:50 +#: app/templates/pages/my_documents.html:117 +#: app/templates/pages/one_on_one.html:85 +msgid "Pending" +msgstr "En attente" + +#: app/templates/pages/admin_document_detail.html:125 +msgid "No one is assigned yet. Publish a version first." +msgstr "Personne n'est encore assigné. Publiez d'abord une version." + +#: app/templates/pages/admin_documents.html:3 +msgid "Document management" +msgstr "Gestion des documents" + +#: app/templates/pages/admin_documents.html:18 +msgid "Create a document" +msgstr "Créer le compte" + +#: app/templates/pages/admin_documents.html:24 +#: app/templates/pages/admin_documents.html:58 +#: app/templates/pages/dashboard.html:95 app/templates/pages/dashboard.html:175 +msgid "Title" +msgstr "Titre" + +#: app/templates/pages/admin_documents.html:26 +msgid "e.g. Player contract 2026-2027" +msgstr "ex. : Contrat joueur 2026-2027" + +#: app/templates/pages/admin_documents.html:31 +msgid "-- Select a type --" +msgstr "-- Choisir une équipe --" + +#: app/templates/pages/admin_documents.html:37 +msgid "The type decides who must complete the document and how." +msgstr "Le type détermine qui doit compléter le document et de quelle façon." + +#: app/templates/pages/admin_documents.html:42 +msgid "Create document" +msgstr "Créer le compte" + +#: app/templates/pages/admin_documents.html:51 +msgid "Existing documents" +msgstr "Documents existants" + +#: app/templates/pages/admin_documents.html:61 +#: app/templates/pages/view_user.html:87 +msgid "Availability" +msgstr "Disponibilités" + +#: app/templates/pages/admin_documents.html:62 +msgid "Progress" +msgstr "En cours" + +#: app/templates/pages/admin_documents.html:74 +msgid "None" +msgstr "Note" + +#: app/templates/pages/admin_documents.html:78 +msgid "Downloadable" +msgstr "Télécharger" + +#: app/templates/pages/admin_documents.html:80 +msgid "Hidden" +msgstr "Masqué" + +#: app/templates/pages/admin_documents.html:85 +#, python-format +msgid "%(completed)s done" +msgstr "Terminé" + +#: app/templates/pages/admin_documents.html:86 +#, python-format +msgid "%(pending)s pending" +msgstr "%(pending)s en attente" + +#: app/templates/pages/admin_documents.html:90 +#: app/templates/pages/admin_documents.html:91 +msgid "Manage" +msgstr "Gérants" + +#: app/templates/pages/admin_documents.html:96 +#: app/templates/pages/admin_documents.html:97 +msgid "Hide" +msgstr "Masquer" + +#: app/templates/pages/admin_documents.html:100 +msgid "Make downloadable" +msgstr "Télécharger" + +#: app/templates/pages/admin_documents.html:101 +msgid "Publish" +msgstr "Publier" + +#: app/templates/pages/admin_documents.html:110 +msgid "No documents yet. Create one above." +msgstr "Aucun document pour le moment. Créez-en un ci-dessus." + +#: app/templates/pages/calendar.html:9 app/templates/pages/view_tryout.html:373 msgid "Schedule" msgstr "Planifier" @@ -1283,6 +1686,7 @@ msgstr "Confirmer" #: app/templates/pages/calendar.html:102 #: app/templates/pages/team_matches.html:103 +#: app/templates/pages/view_tryout.html:534 msgid "Delete Match" msgstr "Supprimer le match" @@ -1295,35 +1699,6 @@ msgstr "Modifier le match" msgid "View Tryout" msgstr "Voir la sélection" -#: app/templates/pages/coach_availability.html:2 -#: app/templates/pages/coach_availability.html:3 -msgid "Manage Availability" -msgstr "Gérer mes disponibilités" - -#: app/templates/pages/coach_availability.html:9 -msgid "Set Your Weekly Availability" -msgstr "Définir vos disponibilités hebdomadaires" - -#: app/templates/pages/coach_availability.html:10 -msgid "Select time slots when you're available for One on One sessions" -msgstr "" -"Choisissez les plages où vous êtes disponible pour des rencontres " -"individuelles" - -#: app/templates/pages/coach_availability.html:14 -#: app/templates/pages/profile.html:256 -msgid "Loading availability grid..." -msgstr "Chargement de la grille de disponibilités..." - -#: app/templates/pages/coach_availability.html:19 -msgid "Save Availability" -msgstr "Enregistrer les disponibilités" - -#: app/templates/pages/coach_availability.html:22 -#: app/templates/pages/profile.html:240 app/templates/pages/profile.html:260 -msgid "Clear All" -msgstr "Tout effacer" - #: app/templates/pages/contracts.html:9 #: app/templates/pages/upload_contract.html:2 #: app/templates/pages/upload_contract.html:3 @@ -1344,44 +1719,14 @@ msgstr "Équipe" msgid "Contract" msgstr "Contrat" -#: app/templates/pages/contracts.html:28 app/templates/pages/dashboard.html:95 -#: app/templates/pages/dashboard.html:118 -#: app/templates/pages/dashboard.html:175 -#: app/templates/pages/dashboard.html:202 -#: app/templates/pages/dashboard.html:321 -#: app/templates/pages/match_form.html:60 app/templates/pages/my_teams.html:53 -#: app/templates/pages/notes.html:126 app/templates/pages/one_on_one.html:73 -#: app/templates/pages/team_match_form.html:61 -#: app/templates/pages/team_matches.html:33 app/templates/pages/teams.html:146 -#: app/templates/pages/users.html:25 app/templates/pages/view_tryout.html:155 -#: app/templates/pages/view_tryout.html:327 -msgid "Status" -msgstr "Statut" - #: app/templates/pages/contracts.html:29 msgid "Uploaded" msgstr "Téléversé le" -#: app/templates/pages/contracts.html:30 app/templates/pages/dashboard.html:175 -#: app/templates/pages/notes.html:127 app/templates/pages/team_matches.html:34 -#: app/templates/pages/teams.html:151 app/templates/pages/users.html:27 -#: app/templates/pages/view_tryout.html:160 -#: app/templates/pages/view_tryout.html:329 -msgid "Actions" -msgstr "Actions" - -#: app/templates/pages/contracts.html:49 app/templates/pages/contracts.html:50 -msgid "Download" -msgstr "Télécharger" - #: app/templates/pages/contracts.html:53 msgid "Download Signed" msgstr "Télécharger la version signée" -#: app/templates/pages/contracts.html:54 -msgid "Signed" -msgstr "Signé" - #: app/templates/pages/contracts.html:58 app/templates/pages/contracts.html:89 #: app/templates/pages/contracts.html:102 msgid "Upload Signed Contract" @@ -1413,13 +1758,9 @@ msgstr "Aucun contrat n’a encore été téléversé. Utilisez le bouton ci-des msgid "Select Signed Contract File" msgstr "Choisir le fichier du contrat signé" -#: app/templates/pages/contracts.html:98 -#: app/templates/pages/upload_contract.html:28 -msgid "Accepted format: PDF" -msgstr "Format accepté : PDF" - #: app/templates/pages/contracts.html:101 -#: app/templates/pages/match_form.html:265 app/templates/pages/notes.html:189 +#: app/templates/pages/match_form.html:265 +#: app/templates/pages/my_documents.html:148 app/templates/pages/notes.html:189 #: app/templates/pages/teams.html:48 app/templates/pages/teams.html:295 #: app/templates/pages/view_tryout.html:245 msgid "Cancel" @@ -1472,12 +1813,6 @@ msgstr "Téléphone" msgid "Phone number" msgstr "Numéro de téléphone" -#: app/templates/pages/create_user.html:31 -#: app/templates/pages/dashboard.html:74 app/templates/pages/edit_user.html:27 -#: app/templates/pages/users.html:23 -msgid "Role" -msgstr "Rôle" - #: app/templates/pages/create_user.html:41 app/templates/pages/login.html:11 #: app/templates/pages/register.html:137 msgid "Password" @@ -1524,18 +1859,16 @@ msgstr "Inscrit le" msgid "Recent Tryouts" msgstr "Sélections récentes" -#: app/templates/pages/dashboard.html:95 app/templates/pages/dashboard.html:175 -msgid "Title" -msgstr "Titre" - #: app/templates/pages/dashboard.html:95 app/templates/pages/dashboard.html:175 #: app/templates/pages/dashboard.html:249 #: app/templates/pages/dashboard.html:321 +#: app/templates/pages/evaluations.html:82 #: app/templates/pages/match_form.html:55 app/templates/pages/my_teams.html:92 #: app/templates/pages/notes.html:123 app/templates/pages/one_on_one.html:70 +#: app/templates/pages/player_evaluations.html:67 #: app/templates/pages/team_match_form.html:34 #: app/templates/pages/team_matches.html:29 -#: app/templates/pages/view_tryout.html:323 +#: app/templates/pages/view_tryout.html:394 msgid "Date" msgstr "Date" @@ -1548,7 +1881,7 @@ msgstr "Matchs à venir" #: app/templates/pages/dashboard.html:202 #: app/templates/pages/dashboard.html:285 app/templates/pages/my_teams.html:90 #: app/templates/pages/notes.html:69 app/templates/pages/team_matches.html:26 -#: app/templates/pages/teams.html:132 app/templates/pages/view_tryout.html:321 +#: app/templates/pages/teams.html:132 app/templates/pages/view_tryout.html:392 msgid "Match" msgstr "Match" @@ -1556,7 +1889,9 @@ msgstr "Match" #: app/templates/pages/dashboard.html:202 #: app/templates/pages/dashboard.html:249 #: app/templates/pages/dashboard.html:285 -#: app/templates/pages/dashboard.html:321 app/templates/pages/notes.html:78 +#: app/templates/pages/dashboard.html:321 +#: app/templates/pages/evaluations.html:76 app/templates/pages/notes.html:78 +#: app/templates/pages/player_evaluations.html:61 msgid "Tryout" msgstr "Sélection" @@ -1584,11 +1919,6 @@ msgstr "Mes évaluations" msgid "Evaluations Done" msgstr "Évaluations réalisées" -#: app/templates/pages/dashboard.html:238 -#: app/templates/pages/one_on_one.html:85 -msgid "Pending" -msgstr "En attente" - #: app/templates/pages/dashboard.html:244 msgid "Recent Evaluations" msgstr "Évaluations récentes" @@ -1631,7 +1961,7 @@ msgid "Avg Score" msgstr "Note moyenne" #: app/templates/pages/dashboard.html:373 -#: app/templates/pages/view_tryout.html:532 +#: app/templates/pages/view_tryout.html:609 msgid "No evaluations yet." msgstr "Aucune évaluation pour l’instant." @@ -1827,7 +2157,7 @@ msgid "Recommended Position" msgstr "Poste recommandé" #: app/templates/pages/evaluate_player.html:109 -#: app/templates/pages/view_tryout.html:280 +#: app/templates/pages/view_tryout.html:339 msgid "-- Select Position --" msgstr "-- Choisir un poste --" @@ -1836,16 +2166,11 @@ msgid "Enter position (optional)" msgstr "Saisir un poste (facultatif)" #: app/templates/pages/evaluate_player.html:121 -#: app/templates/pages/player_evaluations.html -#: app/templates/pages/evaluations.html +#: app/templates/pages/evaluations.html:108 +#: app/templates/pages/player_evaluations.html:100 msgid "Comments" msgstr "Commentaires" -#: app/templates/pages/player_evaluations.html -#: app/templates/pages/evaluations.html -msgid "No comments" -msgstr "Aucun commentaire" - #: app/templates/pages/evaluate_player.html:122 msgid "Enter your evaluation notes..." msgstr "Vos notes d’évaluation..." @@ -1855,67 +2180,120 @@ msgid "Add note for this player" msgstr "Ajouter une note pour ce joueur" #: app/templates/pages/evaluate_player.html:147 -#: app/templates/pages/view_tryout.html:499 +#: app/templates/pages/evaluations.html:75 +#: app/templates/pages/evaluations.html:114 +#: app/templates/pages/player_evaluations.html:60 +#: app/templates/pages/player_evaluations.html:109 +#: app/templates/pages/view_tryout.html:576 msgid "Evaluator" msgstr "Évaluateur" #: app/templates/pages/evaluate_player.html:148 -#: app/templates/pages/view_tryout.html:500 +#: app/templates/pages/view_tryout.html:577 msgid "Mecanics" msgstr "Mécaniques" #: app/templates/pages/evaluate_player.html:149 -#: app/templates/pages/view_tryout.html:501 +#: app/templates/pages/view_tryout.html:578 msgid "Cohesion" msgstr "Cohésion" #: app/templates/pages/evaluate_player.html:150 -#: app/templates/pages/view_tryout.html:502 +#: app/templates/pages/view_tryout.html:579 msgid "Communication" msgstr "Communication" #: app/templates/pages/evaluate_player.html:151 -#: app/templates/pages/view_tryout.html:503 +#: app/templates/pages/view_tryout.html:580 msgid "Gamesense" msgstr "Sens du jeu" #: app/templates/pages/evaluate_player.html:152 -#: app/templates/pages/view_tryout.html:504 +#: app/templates/pages/view_tryout.html:581 msgid "Versatility" msgstr "Polyvalence" #: app/templates/pages/evaluate_player.html:153 -#: app/templates/pages/view_tryout.html:505 +#: app/templates/pages/view_tryout.html:582 msgid "Discipline" msgstr "Discipline" #: app/templates/pages/evaluate_player.html:154 -#: app/templates/pages/view_tryout.html:506 +#: app/templates/pages/view_tryout.html:583 msgid "Analysis" msgstr "Analyse" #: app/templates/pages/evaluate_player.html:155 -#: app/templates/pages/view_tryout.html:507 +#: app/templates/pages/view_tryout.html:584 msgid "Sport Ethics" msgstr "Éthique sportive" #: app/templates/pages/evaluate_player.html:156 -#: app/templates/pages/view_tryout.html:508 +#: app/templates/pages/view_tryout.html:585 msgid "Mental" msgstr "Mental" #: app/templates/pages/evaluate_player.html:157 -#: app/templates/pages/view_tryout.html:509 +#: app/templates/pages/evaluations.html:80 +#: app/templates/pages/player_evaluations.html:65 +#: app/templates/pages/view_tryout.html:586 msgid "Overall" msgstr "Global" #: app/templates/pages/evaluate_player.html:158 -#: app/templates/pages/my_teams.html:54 -#: app/templates/pages/view_tryout.html:286 +#: app/templates/pages/evaluations.html:81 app/templates/pages/my_teams.html:54 +#: app/templates/pages/player_evaluations.html:66 +#: app/templates/pages/view_tryout.html:345 msgid "Position" msgstr "Poste" -#: app/templates/pages/evaluations.html:97 +#: app/templates/pages/evaluations.html:27 +#: app/templates/pages/player_evaluations.html:9 +msgid "Table" +msgstr "Titre" + +#: app/templates/pages/evaluations.html:31 +#: app/templates/pages/player_evaluations.html:12 +msgid "By player" +msgstr "Joueur" + +#: app/templates/pages/evaluations.html:38 +#: app/templates/pages/player_evaluations.html:3 +msgid "Player Evaluations" +msgstr "Évaluation du joueur" + +#: app/templates/pages/evaluations.html:49 +msgid "Open" +msgstr "Adversaire" + +#: app/templates/pages/evaluations.html:64 +msgid "Open player view" +msgstr "Aucun joueur disponible" + +#: app/templates/pages/evaluations.html:88 +#: app/templates/pages/evaluations.html:114 +#: app/templates/pages/player_evaluations.html:73 +#: app/templates/pages/player_evaluations.html:109 +msgid "Deleted evaluator" +msgstr "Évaluateur" + +#: app/templates/pages/evaluations.html:89 +#: app/templates/pages/evaluations.html:115 +#: app/templates/pages/player_evaluations.html:74 +#: app/templates/pages/player_evaluations.html:110 +msgid "Deleted tryout" +msgstr "Supprimer la sélection" + +#: app/templates/pages/evaluations.html:99 +msgid "No evaluations for this player." +msgstr "Aucune évaluation pour l’instant." + +#: app/templates/pages/evaluations.html:120 +#: app/templates/pages/player_evaluations.html:118 +msgid "No comments" +msgstr "Aucun commentaire" + +#: app/templates/pages/evaluations.html:132 msgid "No evaluations yet" msgstr "Aucune évaluation" @@ -2016,7 +2394,7 @@ msgstr "Réinitialiser la plage horaire" msgid "Reset Time" msgstr "Réinitialiser l’heure" -#: app/templates/pages/match_form.html:86 app/templates/pages/profile.html:236 +#: app/templates/pages/match_form.html:86 app/templates/pages/profile.html:193 msgid "Loading..." msgstr "Chargement..." @@ -2126,6 +2504,66 @@ msgstr "É2" msgid "No players available" msgstr "Aucun joueur disponible" +#: app/templates/pages/my_documents.html:2 +#: app/templates/pages/my_documents.html:3 +#: app/templates/pages/my_documents.html:4 +msgid "My Documents" +msgstr "Mes sélections" + +#: app/templates/pages/my_documents.html:18 +msgid "Documents to sign or acknowledge" +msgstr "Documents à signer ou à confirmer" + +#: app/templates/pages/my_documents.html:26 +msgid "Document" +msgstr "Aucun commentaire" + +#: app/templates/pages/my_documents.html:40 +#, python-format +msgid "Version %(number)s" +msgstr "Numéro de téléphone" + +#: app/templates/pages/my_documents.html:62 +msgid "Return signed" +msgstr "Retourner signé" + +#: app/templates/pages/my_documents.html:63 +msgid "Sign" +msgstr "Signé" + +#: app/templates/pages/my_documents.html:68 +msgid "Confirm that you have read and understood this document" +msgstr "Confirmez que vous avez lu et compris ce document" + +#: app/templates/pages/my_documents.html:69 +msgid "Acknowledge" +msgstr "Confirmer" + +#: app/templates/pages/my_documents.html:84 +msgid "No documents for now" +msgstr "Aucune sélection" + +#: app/templates/pages/my_documents.html:85 +msgid "Nothing has been published for you yet. Check back later." +msgstr "Aucun match planifié pour l’instant. Revenez plus tard." + +#: app/templates/pages/my_documents.html:95 +msgid "Team progress" +msgstr "En cours" + +#: app/templates/pages/my_documents.html:118 +msgid "Not required" +msgstr "Une date est requise." + +#: app/templates/pages/my_documents.html:136 +#: app/templates/pages/my_documents.html:149 +msgid "Upload Signed Document" +msgstr "Téléverser le contrat signé" + +#: app/templates/pages/my_documents.html:143 +msgid "Select Signed Document File" +msgstr "Choisir le fichier du contrat signé" + #: app/templates/pages/my_teams.html:18 app/templates/pages/teams.html:84 #: app/templates/pages/teams.html:273 msgid "Coaches" @@ -2147,14 +2585,14 @@ msgstr "Aucun joueur dans cette équipe." #: app/templates/pages/my_teams.html:93 app/templates/pages/notes.html:124 #: app/templates/pages/one_on_one.html:71 #: app/templates/pages/team_matches.html:30 -#: app/templates/pages/view_tryout.html:325 +#: app/templates/pages/view_tryout.html:396 msgid "Time" msgstr "Heure" #: app/templates/pages/my_teams.html:95 #: app/templates/pages/team_match_form.html:115 #: app/templates/pages/team_matches.html:32 -#: app/templates/pages/view_tryout.html:326 +#: app/templates/pages/view_tryout.html:397 msgid "Presence" msgstr "Présence" @@ -2174,11 +2612,6 @@ msgstr "Aucune équipe" msgid "You are not currently assigned to any team." msgstr "Vous n’êtes assigné à aucune équipe pour le moment." -#: app/templates/pages/notes.html:2 app/templates/pages/notes.html:3 -#: app/templates/pages/teams.html:75 -msgid "Notes" -msgstr "Notes" - #: app/templates/pages/notes.html:12 app/templates/pages/one_on_one.html:11 #: app/templates/pages/player_personal_notes.html:55 #: app/templates/pages/team_notes.html:2 app/templates/pages/team_notes.html:3 @@ -2400,6 +2833,18 @@ msgstr "-- Heure de fin --" msgid "Recent Notes" msgstr "Notes récentes" +#: app/templates/pages/player_evaluations.html:42 +msgid "Combined average" +msgstr "Moyenne combinée" + +#: app/templates/pages/player_evaluations.html:42 +msgid "evaluations" +msgstr "Évaluations" + +#: app/templates/pages/player_evaluations.html:87 +msgid "No evaluations for this player yet" +msgstr "Aucune évaluation" + #: app/templates/pages/players_to_evaluate.html:2 #: app/templates/pages/players_to_evaluate.html:3 msgid "Players to Evaluate" @@ -2441,35 +2886,39 @@ msgstr "Évaluations données" msgid "No statistics available for this role." msgstr "Aucune statistique pour ce rôle." -#: app/templates/pages/profile.html:195 +#: app/templates/pages/profile.html:152 msgid "My Contracts" msgstr "Mes contrats" -#: app/templates/pages/profile.html:217 +#: app/templates/pages/profile.html:174 msgid "View All Contracts" msgstr "Voir tous les contrats" -#: app/templates/pages/profile.html:221 +#: app/templates/pages/profile.html:178 msgid "No contracts have been uploaded for you yet." msgstr "Aucun contrat n’a encore été téléversé pour vous." -#: app/templates/pages/profile.html:231 +#: app/templates/pages/profile.html:188 msgid "My Disponibilities" msgstr "Mes disponibilités" -#: app/templates/pages/profile.html:234 +#: app/templates/pages/profile.html:191 msgid "" "Select your available time blocks for matches (5pm to 12am). Green = " -"available, Gray = unavailable" +"selected, Gray = available to select." msgstr "" "Choisissez vos plages disponibles pour les matchs (17 h à minuit). Vert =" " disponible, gris = non-disponible." -#: app/templates/pages/profile.html:251 +#: app/templates/pages/profile.html:197 app/templates/pages/profile.html:217 +msgid "Clear All" +msgstr "Tout effacer" + +#: app/templates/pages/profile.html:208 msgid "My Coaching Availability" msgstr "Mes disponibilités de coaching" -#: app/templates/pages/profile.html:252 +#: app/templates/pages/profile.html:209 msgid "" "Select time slots when you're available for One on One sessions (8am to " "10pm)." @@ -2477,7 +2926,11 @@ msgstr "" "Choisissez les plages où vous êtes disponible pour des rencontres " "individuelles (8 h à 22 h)." -#: app/templates/pages/profile.html:500 +#: app/templates/pages/profile.html:213 +msgid "Loading availability grid..." +msgstr "Chargement de la grille de disponibilités..." + +#: app/templates/pages/profile.html:464 msgid "Click or click-and-drag to select your available hours" msgstr "Cliquez ou faites glisser pour choisir vos heures de disponibilité" @@ -2616,7 +3069,7 @@ msgid "No players on this team. Add players in the Teams page first." msgstr "Aucun joueur dans cette équipe. Ajoutez-en d’abord depuis la page Équipes." #: app/templates/pages/team_match_form.html:107 -#: app/templates/pages/view_tryout.html:324 +#: app/templates/pages/view_tryout.html:395 msgid "Participants" msgstr "Participants" @@ -2634,6 +3087,7 @@ msgid "+ Schedule Match" msgstr "+ Planifier un match" #: app/templates/pages/team_matches.html:101 +#: app/templates/pages/view_tryout.html:532 msgid "Delete this match?" msgstr "Supprimer ce match ?" @@ -2704,7 +3158,8 @@ msgstr "Créer l’équipe" #: app/templates/pages/teams.html:64 app/templates/pages/users.html:59 #: app/templates/pages/view_tryout.html:29 -#: app/templates/pages/view_tryout.html:459 +#: app/templates/pages/view_tryout.html:256 +#: app/templates/pages/view_tryout.html:530 msgid "Edit" msgstr "Modifier" @@ -2715,7 +3170,7 @@ msgstr "" "Supprimer l’équipe %(name)s ? Elle sera détachée de toutes les sélections" " liées." -#: app/templates/pages/teams.html:69 +#: app/templates/pages/teams.html:69 app/templates/pages/view_tryout.html:535 msgid "Delete" msgstr "Supprimer" @@ -2937,7 +3392,7 @@ msgid "Tryout Details" msgstr "Détail de la sélection" #: app/templates/pages/view_tryout.html:14 -#: app/templates/pages/view_tryout.html:306 +#: app/templates/pages/view_tryout.html:377 msgid "Schedule Match" msgstr "Planifier un match" @@ -3007,6 +3462,7 @@ msgid "No players registered yet." msgstr "Aucun joueur inscrit pour l’instant." #: app/templates/pages/view_tryout.html:243 +#: app/templates/pages/view_tryout.html:289 msgid "Team name" msgstr "Nom de l’équipe" @@ -3014,47 +3470,86 @@ msgstr "Nom de l’équipe" msgid "Create" msgstr "Créer" -#: app/templates/pages/view_tryout.html:263 +#: app/templates/pages/view_tryout.html:270 +#: app/templates/pages/view_tryout.html:320 msgid "No players assigned yet." msgstr "Aucun joueur assigné pour l’instant." -#: app/templates/pages/view_tryout.html:271 +#: app/templates/pages/view_tryout.html:282 +#, python-format +msgid "Edit Team: %(name)s" +msgstr "Nom de l’équipe" + +#: app/templates/pages/view_tryout.html:291 +msgid "Rename" +msgstr "Nom" + +#: app/templates/pages/view_tryout.html:297 +msgid "Roster" +msgstr "S’inscrire" + +#: app/templates/pages/view_tryout.html:306 +msgid "No role" +msgstr "Rôle" + +#: app/templates/pages/view_tryout.html:312 +#, python-format +msgid "Remove %(player)s from this team?" +msgstr "Retirer %(player)s de %(team)s ?" + +#: app/templates/pages/view_tryout.html:314 +msgid "Remove from team" +msgstr "Depuis l’équipe" + +#: app/templates/pages/view_tryout.html:326 +msgid "Add Player" +msgstr "Nombre maximal de joueurs" + +#: app/templates/pages/view_tryout.html:330 msgid "Select player..." msgstr "Choisir un joueur..." -#: app/templates/pages/view_tryout.html:288 +#: app/templates/pages/view_tryout.html:347 msgid "Add" msgstr "Ajouter" -#: app/templates/pages/view_tryout.html:293 +#: app/templates/pages/view_tryout.html:353 +msgid "" +"Delete this team? Players already in the team will be removed and matches" +" referencing it will be unlinked." +msgstr "" +"Supprimer cette équipe ? Les joueurs déjà dans l'équipe seront retirés et" +" les matchs qui la référencent seront dissociés." + +#: app/templates/pages/view_tryout.html:355 +msgid "Delete Team" +msgstr "Choisir les équipes" + +#: app/templates/pages/view_tryout.html:364 msgid "No teams created yet." msgstr "Aucune équipe créée." -#: app/templates/pages/view_tryout.html:322 -msgid "Type" -msgstr "Type" - -#: app/templates/pages/view_tryout.html:387 +#: app/templates/pages/view_tryout.html:458 msgid "Toggle your attendance" msgstr "Basculer votre présence" -#: app/templates/pages/view_tryout.html:462 +#: app/templates/pages/view_tryout.html:539 msgid "Add Note for this Match" msgstr "Ajouter une note pour ce match" -#: app/templates/pages/view_tryout.html:463 +#: app/templates/pages/view_tryout.html:540 msgid "Note" msgstr "Note" -#: app/templates/pages/view_tryout.html:481 +#: app/templates/pages/view_tryout.html:558 msgid "No matches scheduled yet. Check back later!" msgstr "Aucun match planifié pour l’instant. Revenez plus tard." -#: app/templates/pages/view_tryout.html:491 +#: app/templates/pages/view_tryout.html:568 msgid "Evaluation Summary" msgstr "Synthèse de l’évaluation" -#: app/templates/pages/view_tryout.html:510 +#: app/templates/pages/view_tryout.html:587 msgid "Recommendation" msgstr "Recommandation" @@ -3066,10 +3561,6 @@ msgstr "Profil" msgid "View Profile" msgstr "Voir le profil" -#: app/templates/pages/view_user.html:87 -msgid "Availability" -msgstr "Disponibilités" - #~ msgid "×" #~ msgstr "×" @@ -3133,3 +3624,20 @@ msgstr "Disponibilités" #~ msgid "No players registered for this tryout." #~ msgstr "Aucun joueur inscrit à cette sélection." +#~ msgid "Only coaches can manage availability." +#~ msgstr "Seuls les coachs peuvent gérer leurs disponibilités." + +#~ msgid "Manage Availability" +#~ msgstr "Gérer mes disponibilités" + +#~ msgid "Set Your Weekly Availability" +#~ msgstr "Définir vos disponibilités hebdomadaires" + +#~ msgid "Select time slots when you're available for One on One sessions" +#~ msgstr "" +#~ "Choisissez les plages où vous êtes " +#~ "disponible pour des rencontres individuelles" + +#~ msgid "Save Availability" +#~ msgstr "Enregistrer les disponibilités" +