From ef486d5db3995ec5d97ce86988b3e0f2f068ef50 Mon Sep 17 00:00:00 2001 From: Olivier Bado-Faustin <12731381+Badatos@users.noreply.github.com> Date: Wed, 11 Dec 2024 12:43:19 +0100 Subject: [PATCH 1/3] Fix Typo #1225 + replace generic i18n strings by named dict --- pod/completion/static/js/caption_maker.js | 4 +- pod/locale/fr/LC_MESSAGES/django.mo | Bin 219595 -> 219695 bytes pod/locale/fr/LC_MESSAGES/django.po | 105 +++++++----------- pod/locale/fr/LC_MESSAGES/djangojs.mo | Bin 21269 -> 21274 bytes pod/locale/fr/LC_MESSAGES/djangojs.po | 7 +- pod/locale/nl/LC_MESSAGES/django.po | 78 ++++++------- pod/locale/nl/LC_MESSAGES/djangojs.po | 5 +- pod/main/tasks.py | 16 +-- .../templatetags/flat_page_edito_filter.py | 2 +- pod/meeting/webinar.py | 40 ++++--- pod/meeting/webinar_utils.py | 62 ++++++----- pod/video/utils.py | 5 +- 12 files changed, 152 insertions(+), 172 deletions(-) diff --git a/pod/completion/static/js/caption_maker.js b/pod/completion/static/js/caption_maker.js index c4e32b65c7..a6adda20e4 100644 --- a/pod/completion/static/js/caption_maker.js +++ b/pod/completion/static/js/caption_maker.js @@ -961,11 +961,11 @@ function createCaptionBlock(newCaption, spawnFunction) { this.div.append(this.numberCharactersDiv); this.div.append(this.buttonsDiv); + const nbCharsMsg = gettext("%s/%s characters"); // Update numberCharactersDiv content const updateCharacterCount = () => { let nbCharacters = this.captionTextInput.value.length; - this.numberCharactersDiv.textContent = - nbCharacters + gettext("/80 characters"); + this.numberCharactersDiv.textContent = interpolate(nbCharsMsg, [nbCharacters, 80]); if (nbCharacters > 80) { this.numberCharactersDiv.append(this.numberCharactersAlert); } diff --git a/pod/locale/fr/LC_MESSAGES/django.mo b/pod/locale/fr/LC_MESSAGES/django.mo index e17f63bc1b22991a56a00d3bcf49405df79ed881..f8fbfa498207c31c89e0aa7c4593bc3b989ca528 100644 GIT binary patch delta 48608 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 delta 48444 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 OUjO=OG5b4}tMOmkDw;(A diff --git a/pod/locale/fr/LC_MESSAGES/django.po b/pod/locale/fr/LC_MESSAGES/django.po index e09a598279..1551e50051 100644 --- a/pod/locale/fr/LC_MESSAGES/django.po +++ b/pod/locale/fr/LC_MESSAGES/django.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: Pod\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-27 12:02+0100\n" +"POT-Creation-Date: 2024-12-11 11:35+0000\n" "PO-Revision-Date: \n" "Last-Translator: obado \n" "Language-Team: Pod Team cotech-esup-pod@esup-portail.org\n" @@ -6597,23 +6597,25 @@ msgstr "Vous ne pouvez pas redémarrer ce webinaire en direct." #: pod/meeting/webinar.py #, python-format -msgid "Webinar mode has been successfully started for “%s” meeting." -msgstr "Le mode webinaire a bien été démarré pour la réunion « %s »." +msgid "Webinar mode has been successfully started for “%(name)s” meeting." +msgstr "Le mode webinaire a bien été démarré pour la réunion « %(name)s »." #: pod/meeting/webinar.py #, python-format -msgid "Error to start webinar mode for “%s” meeting: %s" -msgstr "Erreur de démarrage du mode webinaire pour la réunion « %s » : %s" +msgid "Error to start webinar mode for “%(name)s” meeting: %(exc)s" +msgstr "" +"Erreur de démarrage du mode webinaire pour la réunion « %(name)s » : %(exc)s" #: pod/meeting/webinar.py #, python-format -msgid "Webinar mode has been successfully stopped for “%s” meeting." -msgstr "Le mode webinaire a bien été arrêté pour la réunion « %s »." +msgid "Webinar mode has been successfully stopped for “%(name)s” meeting." +msgstr "Le mode webinaire a bien été démarré pour la réunion « %(name)s »." #: pod/meeting/webinar.py #, python-format -msgid "Error to stop webinar mode for “%s” meeting: %s" -msgstr "Erreur dans l’arrêt du mode webinaire pour la réunion « %s » : %s" +msgid "Error to stop webinar mode for “%(name)s” meeting: %(exc)s" +msgstr "" +"Erreur de démarrage du mode webinaire pour la réunion « %(name)s » : %(exc)s" #: pod/meeting/webinar.py msgid "" @@ -6630,38 +6632,41 @@ msgstr "Trop de webinaires" #: pod/meeting/webinar_utils.py #, python-format msgid "" -"There are too many webinars (%s) for the number of live gateways allocated " -"(%s). The next meeting has been created but not like a webinar:%s %s [%s-" -"%s].\n" +"There are too many webinars (%(nb_webinars)s) for the number of live " +"gateways allocated (%(nb_live_gateways)s). The next meeting has been created " +"but not like a webinar:%(id)s %(name)s [%(start_at)s-%(end_at)s].\n" "Please fix the problem either by increasing the number of live gateways or " "by modifying/deleting one of the affected webinars (with the users’ " "agreement).\n" -"Other webinars: %s" +"Other webinars: %(names_webinars)s" msgstr "" -"Il y a trop de webinaires (%s) pour le nombre de passerelles de live " -"allouées (%s). La prochaine réunion a été créée mais pas comme un webinaire :" -"%s %s [%s-%s].\n" +"Il y a trop de webinaires (%(nb_webinars)s) pour le nombre de passerelles de " +"live allouées (%(nb_live_gateways)s). La prochaine réunion a été créée mais " +"pas comme un webinaire :%(id)s %(name)s [%(start_at)s-%(end_at)s].\n" "Veuillez résoudre le problème en augmentant le nombre de passerelles de live " "ou en modifiant/supprimant l’un des webinaires concernés (avec l’accord des " "utilisateurs).\n" -"Autres webinaires : %s" +"Autres webinaires : %(names_webinars)s" #: pod/meeting/webinar_utils.py #, python-format msgid "" -"

There are too many webinars (%s) for the number of live gateways " -"allocated (%s). The next webinar has been created but not like a " -"webinar:

  • %s %s [%s-%s].

Please fix the problem " -"either by increasing the number of live gateways or by modifying/deleting " -"one of the affected webinars (with the users’ agreement).
Other webinars: " -"%s" +"

There are too many webinars (%(nb_webinars)s) for the " +"number of live gateways allocated (%(nb_live_gateways)s). " +"The next webinar has been created but not like a webinar:" +"

  • %(id)s %(name)s [%(start_at)s-%(end_at)s].
  • Please fix the problem either by increasing the number of live " +"gateways or by modifying/deleting one of the affected webinars (with the " +"users’ agreement).
    Other webinars: %(names_webinars)s" msgstr "" -"

    Il y a trop de webinaires (%s) pour le nombre de passerelles live " -"allouées (%s). La prochaine réunion a été créée mais pas comme un " -"webinaire :

    • %s %s [%s-%s].

    Veuillez résoudre " -"le problème en augmentant le nombre de passerelles live ou en modifiant/" -"supprimant l’un des webinaires concernés (avec l’accord des utilisateurs)." -"
    Autres webinaires : %s" +"

    Il y a trop de webinaires (%(nb_webinars)s) pour le " +"nombre de passerelles live allouées (%(nb_live_gateways)s). " +"La prochaine réunion a été créée mais pas comme un webinaire :

    • %(id)s %(name)s [%(start_at)s-%(end_at)s]." +"

    Veuillez résoudre le problème en augmentant le nombre de " +"passerelles live ou en modifiant/supprimant l’un des webinaires concernés " +"(avec l’accord des utilisateurs).
    Autres webinaires : " +"%(names_webinars)s" #: pod/playlist/apps.py pod/playlist/models.py #: pod/playlist/templates/playlist/add_or_edit.html @@ -6738,13 +6743,6 @@ msgstr "Lecture automatique" msgid "Please choose if this playlist is an autoplay playlist or not." msgstr "Veuillez choisir si cette playlist est en lecture automatique ou non." -#: pod/playlist/forms.py -#, python-brace-format -msgid "You cannot create a playlist named \"{FAVORITE_PLAYLIST_NAME}\"" -msgstr "" -"Vous ne pouvez pas créer une liste de lecture nommée " -"\"{FAVORITE_PLAYLIST_NAME}\"" - #: pod/playlist/forms.py msgid "Remove playlist cannot be undone" msgstr "La suppression de réunion est définitive" @@ -6774,15 +6772,6 @@ msgstr "Protégé par un mot de passe" msgid "Private" msgstr "Privé" -#: pod/playlist/models.py -#, python-brace-format -msgid "" -"Please choose a title between 1 and {__MAX_LENGTH_FOR_PLAYLIST_NAME__} " -"characters." -msgstr "" -"Veuillez entrer un titre contenant entre 1 et " -"{__MAX_LENGTH_FOR_PLAYLIST_NAME__} caractères." - #: pod/playlist/models.py msgid "" "Selecting this setting causes your playlist to be promoted on the page " @@ -7187,6 +7176,10 @@ msgstr "Vous ne pouvez pas accéder à cette liste de lecture." msgid "The playlist has been deleted." msgstr "La liste de lecture a été supprimée." +#: pod/playlist/views.py +msgid "Delete the playlist" +msgstr "Supprimer la liste de lecture" + #: pod/playlist/views.py #, python-format msgid "Edit the playlist “%(pname)s”" @@ -7201,11 +7194,6 @@ msgid "The data sent to create the playlist are invalid." msgstr "" "Les données envoyées pour créer la liste de lecture ne sont pas valides." -#: pod/playlist/views.py -#, python-brace-format -msgid "Edit playlist “{playlist.name}”" -msgstr "Éditer la liste de lecture « {playlist.name} »" - #: pod/playlist/views.py msgid "JSON in wrong format" msgstr "JSON au mauvais format" @@ -7587,7 +7575,7 @@ msgstr "Veuillez choisir si les réponses correctes seront affichées ou non." msgid "Quizzes" msgstr "Quiz" -#: pod/quiz/models.py +#: pod/quiz/models.py pod/quiz/tests/test_models.py msgid "Quiz of video" msgstr "Quiz de la vidéo" @@ -10454,8 +10442,10 @@ msgstr "Veuillez entrer un titre." #: pod/video/utils.py #, python-format -msgid "Please enter a %s from 2 to %s characters." -msgstr "Veuillez entrer un %s contenant entre 2 et %s caractères." +msgid "Please enter a %(field_name)s from 2 to %(max_length)s characters." +msgstr "" +"Veuillez entrer un %(field_name)s contenant entre 2 et %(max_length)s " +"caractères." #: pod/video/views.py msgid "You cannot edit this channel." @@ -10881,12 +10871,3 @@ msgstr "Résultats de la recherche" #: pod/xapi/apps.py msgid "Esup-Pod xAPI" msgstr "xAPI Esup-Pod" - -#~ msgid "Delete this record." -#~ msgstr "Supprimer cet enregistrement." - -#~ msgid "Preview record." -#~ msgstr "Prévisualiser l’enregistrement." - -#~ msgid "Number of video inside the channel" -#~ msgstr "Nombre de vidéo à l’intérieur de la chaîne" diff --git a/pod/locale/fr/LC_MESSAGES/djangojs.mo b/pod/locale/fr/LC_MESSAGES/djangojs.mo index c1dd60b3f06b19e0eaf9ac0b380a8f2a58a31646..a84e3a9742d0f32f21e61f8231263249740d6eb7 100644 GIT binary patch delta 3570 zcmXZe3(S^f83*wDjgy?urx5r!eVjzT5IIVqd?bfYP6AOm44NRd2}q>K*gG=a8ktPS zBsDWia1)n8*&Hy@*7CqGm$Q`yHFDsR7}Mqy(SHBE@AmEe-Ou|x?|om_bzk=bd-hiz z*Pv zV!4BUQhvxJ_9(C5Gt9itvjdM+4f5bCY{P#s3!Y^b_>}oUSLvseeRw5DvMZaJg_m(T zzsr$4&Lnh>3E*RFyND(k z4`%|K;v=PB&LR8}v*-Jn`Cj8(o~Nyz6qO3E=BY$u=_GTV+cAK>hl0W}<^k z*T2e4c!A^DtD$zknF)L~vz2#Kre!Bnkz-6nPIGA0pp|bkQ6q2X0XBh0Be!c^`9imCLnO7?sr(@SfZt+|W-%6=c!Wd53gJ}YPHUS<~PE2#V$=5PHu!(8n`|9_1GClGb6W}4X<{4()bHmj?$D$%V$(9auuUy46 z+Y>YL`8$6W8Idx#CL&oGr~E&3_!%{#e}+xQZl#4^KMZ30(T4W=9H zu%)8ik@J4VxO~@o;g5`UrsOqT;TN_VV}Oub@U1- zuP{w~mV0ylKQUO~i-#Q28+nS&Y_vh&;P;r!{>XNGj~*%K*^Ps*sU6EE=G-r2Ds~&Q z;8tdf_cHUo#RS-Yq7!EQvdCZ-*KsDF;#YZ&*_x4_&YsO)y}Ica-_vC3fZ{om}l=&}@(w%gs!No7kIMsU6CL?7<_?f#t0R$N0-!{m^mzmOao24r`lv!XJ z2Xh%G@cVS~$^rT-Z~GX{zUu7dSFUF!UQbh&UDWX9&rCqAl_~Q~q?2DQ>kPK|Vh=a5 zv*$gJn1Q?-!q@w{dB;uvUqQ%pR_1PQ|?(!zY;c!t3nF(`>{4 zFcrMWv20vaJ7!Cn=kDMn-opg`+#>aFG&tppbbXt}wGt0xG8)JHa2B%#EfjoN#Z=&F zj^k-M(xvkf|2yJ*{*FK8AT}?p&GQ{LxZc35yK9s|dxPJz17G3U5A%1e#OCoMHXlCS Ov+cn8@NCo7L;nv?T!~Zw delta 3565 zcmXZddu&d39LMqRgKE+HO{+R>wN>q^R7f6b6IBZ&(2Aj=k+_!bI$Mg{eFMn-|41S--cG- zx*1NWnf(}Lwis_>G0uv1-HN$fcVZz%$Cy2b6R|5U!Zcir!PtV_YONT8Z5WOxF%~aj zf4qyDHzw8`%V02`Un8&q2jd!i9uMF^?8H9UtG8KqOvgaX#%#>TVfY#j!A&>_Ph%!N zMa`EU=iWcXb9J0!rV8xg3)zl|_#JAYn;41rFa-nR2?8@vndYG~FGrHHTBL}!0C~jT zLnYRNLAV<=?*Z(IZ4Lw7cpL-p7u14RQ42gmJrF|rDrGeG#WW1V64b(zaVpNo0oaa8 z=o%`32dGK~Cb;wFqqfkgV4xCBK;5_;HE}a4|S`WUCy@qu!cu9!^3BmBCqL+wC!S!*DuJfyAH!OvWBK1QmE8 zs-)F89H-%AT!*Y>S1=W=pS#6r7{U5h%0K~3MU`wJs(V+VO5W^Ue}tOoGgQ}ipeDSH zIT)Gb{$7F#d=_demm-;36RIL@sEYiADGmc4-)f>%oR8%=5BDL-TRe5sg2PeQGf{!8 z#3bB^IyHw;mAiq&WRa|*JBQmKCsgJ*m}vKB;|3@sBgum<_F zWqjztEvVzR!*j3aQSbLts0GiUGQWz-I4a#N3rkP|FT?;`o=*LBgTohUt}jpv96_Cm z4x|`%50ybI^;L6~p{^azy_m#xC#o`Ch`s=$@NKNZmH0Js60MN8S}xW)3J)V0R~doY+ay$J^H2*`UzBF&rtVRW}(h~IjUl_Q420X zZLuFU?-^8p(RpUQS>Gxc6ysbh!X5Y`UO{b53U_PI#-J)xjU(`79Ea<@>x-!Wg3)|1 zv`Wv_sQC_|o_mNPID}6A|Nnmx1HD)#pfX&5F}MV22V0Agco22pNz{AbchsIf#%PSC z<>^Dq!YHgo1zeA6$|cwfSD>2tg97T`oxwJ~&;*})KO99pcmXxhWz;Enh}yfpbe00i z!Z}!uT6i}qu=5y)*HJy-Bkg!B#jZFLnabvjp#I8W6JIERL#T;PV=(@W>hf-Epqi@; zldvA?FKb5Dur}0v54_(CM!E}5NA=EPoQ8hXF~5ZgnD2~Y-x*9o?b!kBi#Jf+9mvM1 zWWlH{h(iUMh03THWAPQ#0u8tlPoV-FM?)#_rI>^*sQZtgPM33*fhK;0DqXK)x)Kvn z3*=)ztU(&y79l6kwj+ObmXCoLNu7E5*+|sHb;y*~j5NG`iwfu&YMva*#mRSUE`vtC zSceVRz0{p>8B$H#j{WgxOvWypAuW`O6v?WPWNj^`;z`s3f1(md9_#*Ii0X+In1X&x z)cHTiKpB3IytM2->bNCywsaaYQ4i*NR-#Tvop-$g)vSK+`eW352eAOpqqZ=t%uOHx zb^j<#V|^=Qpvd3CJY0`z!VV0?d#J5>f?*g;2Wb!cq9z`Ss!S0U;T)vOwhdLmE2#6{ zuiX7No{bq?=b@u6pUFTs)T8!x87hEXNbq(J)#dRO{LjZJs6E|M435Pwu?e5UqRH+&uVNC{^{925GZ^$>un&9USD1?(7>rLa1Oxql zgyi@t{PCfMzN-CGLrZ-=^S6ZE@%7l>6#jYmsI JZw(%l@*mGTgs}hs diff --git a/pod/locale/fr/LC_MESSAGES/djangojs.po b/pod/locale/fr/LC_MESSAGES/djangojs.po index 458326e710..b3fe2fdb24 100644 --- a/pod/locale/fr/LC_MESSAGES/djangojs.po +++ b/pod/locale/fr/LC_MESSAGES/djangojs.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: Esup-Pod\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-27 12:02+0100\n" +"POT-Creation-Date: 2024-12-11 11:36+0000\n" "PO-Revision-Date: \n" "Last-Translator: obado \n" "Language-Team: \n" @@ -230,8 +230,9 @@ msgid "Time stamps" msgstr "Horodatages" #: pod/completion/static/js/caption_maker.js -msgid "/80 characters" -msgstr "80 caractères" +#, javascript-format +msgid "%s/%s characters" +msgstr "%s/%s caractères" #: pod/completion/static/js/caption_maker.js msgid "Error loading caption file: " diff --git a/pod/locale/nl/LC_MESSAGES/django.po b/pod/locale/nl/LC_MESSAGES/django.po index 02d4a85449..4d753cfd2e 100644 --- a/pod/locale/nl/LC_MESSAGES/django.po +++ b/pod/locale/nl/LC_MESSAGES/django.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: Pod\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-27 12:02+0100\n" +"POT-Creation-Date: 2024-12-11 11:35+0000\n" "PO-Revision-Date: 2024-07-04 17:54+0200\n" "Last-Translator: obado \n" "Language-Team: \n" @@ -2771,15 +2771,15 @@ msgstr "" #: pod/import_video/views.py #, python-format msgid "" -"This video “%(name)s” was uploaded to Pod; its origin is %(type)s: %(url)s

    %(desc)s" +"This video “%(name)s” was uploaded to Pod; its origin is %(type)s: %(url)s

    %(desc)s" msgstr "" #: pod/import_video/views.py #, python-format msgid "" -"This video “%(name)s” was uploaded to Pod; its origin is Youtube: %(url)s" +"This video “%(name)s” was uploaded to Pod; its origin is Youtube: %(url)s" msgstr "" #: pod/import_video/views.py @@ -4549,7 +4549,7 @@ msgstr "" msgid "Most views" msgstr "" -#: pod/main/models.py +#: pod/main/models.py pod/video/models.py msgid "Order" msgstr "" @@ -6145,8 +6145,8 @@ msgstr "" msgid "" "\n" "

    Hello,

    \n" -"

    %(owner)s invites you to the meeting " -"%(meeting_title)s.

    \n" +"

    %(owner)s invites you to the meeting " +"%(meeting_title)s.

    \n" "

    here the link to join the meeting:\n" " %(join_link)s

    \n" "

    You need this password to enter: %(password)sHello,

    \n" -"

    %(owner)s invites you to the meeting " -"%(meeting_title)s.

    \n" +"

    %(owner)s invites you to the meeting " +"%(meeting_title)s.

    \n" "

    Start date: %(start_date_time)s

    \n" "

    End date: %(end_date)s

    \n" "

    here the link to join the meeting:\n" @@ -6195,22 +6195,22 @@ msgstr "" #: pod/meeting/webinar.py #, python-format -msgid "Webinar mode has been successfully started for “%s” meeting." +msgid "Webinar mode has been successfully started for “%(name)s” meeting." msgstr "" #: pod/meeting/webinar.py #, python-format -msgid "Error to start webinar mode for “%s” meeting: %s" +msgid "Error to start webinar mode for “%(name)s” meeting: %(exc)s" msgstr "" #: pod/meeting/webinar.py #, python-format -msgid "Webinar mode has been successfully stopped for “%s” meeting." +msgid "Webinar mode has been successfully stopped for “%(name)s” meeting." msgstr "" #: pod/meeting/webinar.py #, python-format -msgid "Error to stop webinar mode for “%s” meeting: %s" +msgid "Error to stop webinar mode for “%(name)s” meeting: %(exc)s" msgstr "" #: pod/meeting/webinar.py @@ -6226,24 +6226,25 @@ msgstr "" #: pod/meeting/webinar_utils.py #, python-format msgid "" -"There are too many webinars (%s) for the number of live gateways allocated " -"(%s). The next meeting has been created but not like a webinar:%s %s [%s-" -"%s].\n" +"There are too many webinars (%(nb_webinars)s) for the number of live " +"gateways allocated (%(nb_live_gateways)s). The next meeting has been created " +"but not like a webinar:%(id)s %(name)s [%(start_at)s-%(end_at)s].\n" "Please fix the problem either by increasing the number of live gateways or " "by modifying/deleting one of the affected webinars (with the users’ " "agreement).\n" -"Other webinars: %s" +"Other webinars: %(names_webinars)s" msgstr "" #: pod/meeting/webinar_utils.py #, python-format msgid "" -"

    There are too many webinars (%s) for the number of live gateways " -"allocated (%s). The next webinar has been created but not like a " -"webinar:

    • %s %s [%s-%s].

    Please fix the problem " -"either by increasing the number of live gateways or by modifying/deleting " -"one of the affected webinars (with the users’ agreement).
    Other webinars: " -"%s" +"

    There are too many webinars (%(nb_webinars)s) for the " +"number of live gateways allocated (%(nb_live_gateways)s). " +"The next webinar has been created but not like a webinar:" +"

    • %(id)s %(name)s [%(start_at)s-%(end_at)s].
    • Please fix the problem either by increasing the number of live " +"gateways or by modifying/deleting one of the affected webinars (with the " +"users’ agreement).
      Other webinars: %(names_webinars)s" msgstr "" #: pod/playlist/apps.py pod/playlist/models.py @@ -6312,11 +6313,6 @@ msgstr "" msgid "Please choose if this playlist is an autoplay playlist or not." msgstr "" -#: pod/playlist/forms.py -#, python-brace-format -msgid "You cannot create a playlist named \"{FAVORITE_PLAYLIST_NAME}\"" -msgstr "" - #: pod/playlist/forms.py msgid "Remove playlist cannot be undone" msgstr "" @@ -6344,13 +6340,6 @@ msgstr "" msgid "Private" msgstr "" -#: pod/playlist/models.py -#, python-brace-format -msgid "" -"Please choose a title between 1 and {__MAX_LENGTH_FOR_PLAYLIST_NAME__} " -"characters." -msgstr "" - #: pod/playlist/models.py msgid "" "Selecting this setting causes your playlist to be promoted on the page " @@ -6735,6 +6724,10 @@ msgstr "" msgid "The playlist has been deleted." msgstr "" +#: pod/playlist/views.py +msgid "Delete the playlist" +msgstr "" + #: pod/playlist/views.py #, python-format msgid "Edit the playlist “%(pname)s”" @@ -6748,11 +6741,6 @@ msgstr "" msgid "The data sent to create the playlist are invalid." msgstr "" -#: pod/playlist/views.py -#, python-brace-format -msgid "Edit playlist “{playlist.name}”" -msgstr "" - #: pod/playlist/views.py msgid "JSON in wrong format" msgstr "" @@ -7123,7 +7111,7 @@ msgstr "" msgid "Quizzes" msgstr "" -#: pod/quiz/models.py +#: pod/quiz/models.py pod/quiz/tests/test_models.py msgid "Quiz of video" msgstr "" @@ -7736,8 +7724,8 @@ msgstr "" #: pod/video/templates/videos/video-element.html msgid "" "To view this video please enable JavaScript, and consider upgrading to a web " -"browser that supports HTML5 video" +"browser that supports HTML5 video" msgstr "" #: pod/recorder/templates/recorder/link_record.html @@ -9767,7 +9755,7 @@ msgstr "Voer een titel in." #: pod/video/utils.py #, python-format -msgid "Please enter a %s from 2 to %s characters." +msgid "Please enter a %(field_name)s from 2 to %(max_length)s characters." msgstr "" #: pod/video/views.py diff --git a/pod/locale/nl/LC_MESSAGES/djangojs.po b/pod/locale/nl/LC_MESSAGES/djangojs.po index 206c8637b4..4eff580450 100644 --- a/pod/locale/nl/LC_MESSAGES/djangojs.po +++ b/pod/locale/nl/LC_MESSAGES/djangojs.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: Esup-Pod\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-27 12:02+0100\n" +"POT-Creation-Date: 2024-12-11 11:36+0000\n" "PO-Revision-Date: 2024-06-04 16:20+0200\n" "Last-Translator: obado \n" "Language-Team: \n" @@ -212,7 +212,8 @@ msgid "Time stamps" msgstr "" #: pod/completion/static/js/caption_maker.js -msgid "/80 characters" +#, javascript-format +msgid "%s/%s characters" msgstr "" #: pod/completion/static/js/caption_maker.js diff --git a/pod/main/tasks.py b/pod/main/tasks.py index 8cd67a6a7b..1a3f8c135d 100644 --- a/pod/main/tasks.py +++ b/pod/main/tasks.py @@ -5,7 +5,7 @@ @app.task(bind=True) -def task_start_encode(self, video_id): +def task_start_encode(self, video_id: int) -> None: """Start video encoding with Celery.""" print("CELERY START ENCODE VIDEO ID %s" % video_id) from pod.video_encode_transcript.encode import encode_video @@ -14,7 +14,7 @@ def task_start_encode(self, video_id): @app.task(bind=True) -def task_start_transcript(self, video_id): +def task_start_transcript(self, video_id: int) -> None: """Start video transcripting with Celery.""" print("CELERY START TRANSCRIPT VIDEO ID %s" % video_id) from pod.video_encode_transcript.transcript import main_threaded_transcript @@ -24,8 +24,8 @@ def task_start_transcript(self, video_id): @app.task(bind=True) def task_start_encode_studio( - self, recording_id, video_output, videos, subtime, presenter -): + self, recording_id: int, video_output, videos, subtime, presenter +) -> None: """Start studio record encoding with Celery.""" print("CELERY START ENCODE VIDEOS FROM STUDIO RECORDING ID %s" % recording_id) from pod.video_encode_transcript.encode import encode_video_studio @@ -34,7 +34,7 @@ def task_start_encode_studio( @app.task(bind=True) -def task_start_live_transcription(self, url, slug, model, filepath): +def task_start_live_transcription(self, url, slug, model, filepath) -> None: """Start live transcription with Celery.""" print("CELERY START LIVE TRANSCRIPTION %s" % slug) from pod.live.live_transcript import transcribe @@ -48,7 +48,7 @@ def task_start_live_transcription(self, url, slug, model, filepath): @app.task(bind=True) -def task_end_live_transcription(self, slug): +def task_end_live_transcription(self, slug) -> None: """End live transcription with Celery.""" print("CELERY END LIVE TRANSCRIPTION %s" % slug) broadcaster = Broadcaster.objects.get(slug=slug) @@ -61,7 +61,7 @@ def task_end_live_transcription(self, slug): @app.task(bind=True) def task_start_bbb_presentation_encode_and_upload_to_pod( self, record_id: int, url: str, extension: str -): +) -> None: """Start BBB presentation encoding with Celery, then upload to Pod.""" print("CELERY START BBB ENCODE PRESENTATION/UPLOAD RECORD ID %s" % record_id) from pod.import_video.views import bbb_encode_presentation_and_upload_to_pod @@ -72,7 +72,7 @@ def task_start_bbb_presentation_encode_and_upload_to_pod( @app.task(bind=True) def task_start_bbb_presentation_encode_and_move_to_destination( self, filename: str, url: str, dest_file: str -): +) -> None: """Start BBB presentation encoding with Celery, then move the video file.""" print("CELERY START BBB ENCODE PRESENTATION/MOVE %s" % filename) from pod.import_video.views import bbb_encode_presentation_and_move_to_destination diff --git a/pod/main/templatetags/flat_page_edito_filter.py b/pod/main/templatetags/flat_page_edito_filter.py index 536bd399f8..54377fb9ee 100644 --- a/pod/main/templatetags/flat_page_edito_filter.py +++ b/pod/main/templatetags/flat_page_edito_filter.py @@ -323,7 +323,7 @@ def render_next_events(uniq_id, params, current_site, debug_elts): return part_content -def render_html(uniq_id, params, current_site, debug_elts): +def render_html(uniq_id, params, current_site, debug_elts) -> str: """Render block with html content.""" debug_elts.append("Call function render_html") diff --git a/pod/meeting/webinar.py b/pod/meeting/webinar.py index ea72b191e8..af3245ce45 100644 --- a/pod/meeting/webinar.py +++ b/pod/meeting/webinar.py @@ -17,7 +17,7 @@ log = logging.getLogger("webinar") -def start_webinar(request: WSGIRequest, meet_id: int): +def start_webinar(request: WSGIRequest, meet_id: int) -> None: """Start a webinar and send a thread to stop it automatically at the end.""" try: # Get the current meeting @@ -33,8 +33,8 @@ def start_webinar(request: WSGIRequest, meet_id: int): display_message_with_icon( request, messages.INFO, - _("Webinar mode has been successfully started for “%s” meeting.") - % (meeting.name), + _("Webinar mode has been successfully started for “%(name)s” meeting.") + % ({"name": meeting.name}), ) # Manage enable_chat is False by default if meeting.enable_chat is False: @@ -42,17 +42,18 @@ def start_webinar(request: WSGIRequest, meet_id: int): toggle_rtmp_gateway(meet_id) except Exception as exc: log.error( - "Error to start webinar mode for “%s” meeting: %s" % (meet_id, str(exc)) + "Error to start webinar mode for “%(id)s” meeting: %(exc)s" + % {"id": meet_id, "exc": str(exc)} ) display_message_with_icon( request, messages.ERROR, - _("Error to start webinar mode for “%s” meeting: %s") - % (meeting.name, str(exc)), + _("Error to start webinar mode for “%(name)s” meeting: %(exc)s") + % {"name": meeting.name, "exc": str(exc)}, ) -def stop_webinar(request: WSGIRequest, meet_id: int): +def stop_webinar(request: WSGIRequest, meet_id: int) -> None: """Stop the webinar.""" try: # Get the current meeting @@ -64,20 +65,23 @@ def stop_webinar(request: WSGIRequest, meet_id: int): display_message_with_icon( request, messages.INFO, - _("Webinar mode has been successfully stopped for “%s” meeting.") - % (meeting.name), + _("Webinar mode has been successfully stopped for “%(name)s” meeting.") + % {"name": meeting.name}, ) except Exception as exc: - log.error("Error to stop webinar mode for “%s” meeting: %s" % (meet_id, str(exc))) + log.error( + "Error to stop webinar mode for “%(id)s” meeting: %(exc)s" + % {"id": meet_id, "exc": str(exc)} + ) display_message_with_icon( request, messages.ERROR, - _("Error to stop webinar mode for “%s” meeting: %s") - % (meeting.name, str(exc)), + _("Error to stop webinar mode for “%(name)s” meeting: %(exc)s") + % {"name": meeting.name, "exc": str(exc)}, ) -def start_webinar_livestream(pod_host: str, meet_id: int): +def start_webinar_livestream(pod_host: str, meet_id: int) -> None: """Run the steps to start the webinar livestream.""" try: if pod_host.find("localhost") != -1: @@ -103,7 +107,7 @@ def start_webinar_livestream(pod_host: str, meet_id: int): raise ValueError(str(exc)) -def stop_webinar_livestream(meet_id: int, force: bool): +def stop_webinar_livestream(meet_id: int, force: bool) -> None: """Stop the webinar when meeting is stopped or when user forces to stop it.""" try: log.info("stop_webinar_livestream %s: %s" % (meet_id, "stop")) @@ -135,7 +139,7 @@ def stop_webinar_livestream(meet_id: int, force: bool): raise ValueError(str(exc)) -def wait_meeting_is_stopped(meeting: Meeting): +def wait_meeting_is_stopped(meeting: Meeting) -> None: """Check regularly if meeting is stopped. If meeting is running, wait to make another check (5h max). @@ -186,7 +190,7 @@ def manage_meeting_livestream(meeting: Meeting): return livestream -def start_rtmp_gateway(pod_host: str, meet_id: int, livestream_id: int): +def start_rtmp_gateway(pod_host: str, meet_id: int, livestream_id: int) -> None: """Run the start command for SIPMediaGW RTMP gateway.""" # Get the current meeting meeting = Meeting.objects.get(id=meet_id) @@ -259,7 +263,7 @@ def stop_rtmp_gateway(meet_id: int, livestream_id: int): raise ValueError(mark_safe(message)) -def toggle_rtmp_gateway(meet_id: int): +def toggle_rtmp_gateway(meet_id: int) -> None: """Run the toggle (to show chat or not) command for SIPMediaGW RTMP gateway.""" # Get the current meeting meeting = Meeting.objects.get(id=meet_id) @@ -296,7 +300,7 @@ def toggle_rtmp_gateway(meet_id: int): log.error("No livestream object found for webinar id %s" % meet_id) -def chat_rtmp_gateway(meet_id: int, msg: str): +def chat_rtmp_gateway(meet_id: int, msg: str) -> None: """Send message command to SIPMediaGW RTMP gateway.""" # Get the current meeting meeting = Meeting.objects.get(id=meet_id) diff --git a/pod/meeting/webinar_utils.py b/pod/meeting/webinar_utils.py index 0d49ffd14b..27dddac76f 100644 --- a/pod/meeting/webinar_utils.py +++ b/pod/meeting/webinar_utils.py @@ -96,48 +96,50 @@ def search_for_available_livegateway( def send_email_webinars( meeting: Meeting, nb_webinars: int, nb_live_gateways: int, names_webinars: str -): +) -> None: """Send email notification to administrators when too many webinars.""" subject = "[" + __TITLE_SITE__ + "] %s" % _("Too many webinars") message = _( - "There are too many webinars (%s) for the number of " - "live gateways allocated (%s). " - "The next meeting has been created but not like a webinar:%s %s [%s-%s].\n" + "There are too many webinars (%(nb_webinars)s) for the number of " + "live gateways allocated (%(nb_live_gateways)s). " + "The next meeting has been created but not like a webinar:%(id)s %(name)s [%(start_at)s-%(end_at)s].\n" "Please fix the problem either by increasing the number of live gateways " "or by modifying/deleting one of the affected webinars " "(with the users’ agreement).\n" - "Other webinars: %s" - ) % ( - nb_webinars, - nb_live_gateways, - meeting.id, - meeting.name, - meeting.start_at, - meeting.start_at + meeting.expected_duration, - names_webinars, - ) + "Other webinars: %(names_webinars)s" + ) % { + "nb_webinars": nb_webinars, + "nb_live_gateways": nb_live_gateways, + "id": meeting.id, + "name": meeting.name, + "start_at": meeting.start_at, + "end_at": meeting.start_at + meeting.expected_duration, + "names_webinars": names_webinars, + } + html_message = _( - "

      There are too many webinars (%s) for the number of " - "live gateways allocated (%s). " - "The next webinar has been created but not like a webinar:" - "

      • %s %s [%s-%s].

      " + "

      There are too many webinars (%(nb_webinars)s) for the number of " + "live gateways allocated (%(nb_live_gateways)s). " + "The next webinar has been created but not like a webinar:" + "

      • %(id)s %(name)s [%(start_at)s-%(end_at)s].

      " "Please fix the problem either by increasing the number of live gateways " "or by modifying/deleting one of the affected webinars " "(with the users’ agreement).
      " - "Other webinars: %s" - ) % ( - nb_webinars, - nb_live_gateways, - meeting.id, - meeting.name, - meeting.start_at, - meeting.start_at + meeting.expected_duration, - names_webinars, - ) + "Other webinars: %(names_webinars)s" + ) % { + "nb_webinars": nb_webinars, + "nb_live_gateways": nb_live_gateways, + "id": meeting.id, + "name": meeting.name, + "start_at": meeting.start_at, + "end_at": meeting.start_at + meeting.expected_duration, + "names_webinars": names_webinars, + } + mail_admins(subject, message, fail_silently=False, html_message=html_message) -def update_livestream_event(livestream, meeting): +def update_livestream_event(livestream, meeting) -> None: """Update event livestream from meeeting attributes.""" if livestream.event.title != meeting.name: livestream.event.title = meeting.name @@ -187,7 +189,7 @@ def manage_webinar( livestream.event.delete() -def create_livestream_event(meeting: Meeting, live_gateway: LiveGateway): +def create_livestream_event(meeting: Meeting, live_gateway: LiveGateway) -> None: """Create a livestream and an event for a new webinar.""" # Create live event event = Event.objects.create( diff --git a/pod/video/utils.py b/pod/video/utils.py index efe465047b..6d0d4f912b 100644 --- a/pod/video/utils.py +++ b/pod/video/utils.py @@ -299,6 +299,9 @@ def verify_field_length(field, field_name: str = "title", max_length: int = 100) msg.append(_("Please enter a title.")) elif len(field) < 2 or len(field) > max_length: msg.append( - _("Please enter a %s from 2 to %s characters." % (field_name, max_length)) + _( + "Please enter a %(field_name)s from 2 to %(max_length)s characters." + % {"field_name": field_name, "max_length": max_length} + ) ) return msg From c9f066fd0eab0e908d2442b2ce6873fba80b083c Mon Sep 17 00:00:00 2001 From: Olivier Bado-Faustin <12731381+Badatos@users.noreply.github.com> Date: Wed, 11 Dec 2024 16:12:54 +0100 Subject: [PATCH 2/3] Replace translated f-strings --- pod/ai_enhancement/forms.py | 7 ++---- pod/locale/fr/LC_MESSAGES/django.mo | Bin 219695 -> 219617 bytes pod/locale/fr/LC_MESSAGES/django.po | 35 +++++++++++++--------------- pod/locale/nl/LC_MESSAGES/django.po | 22 ++++++++--------- pod/meeting/webinar_utils.py | 2 +- pod/playlist/forms.py | 4 +++- pod/playlist/views.py | 2 +- pod/quiz/forms.py | 4 +++- pod/quiz/models.py | 4 +++- 9 files changed, 40 insertions(+), 40 deletions(-) diff --git a/pod/ai_enhancement/forms.py b/pod/ai_enhancement/forms.py index bb18df55f7..f0bc053370 100644 --- a/pod/ai_enhancement/forms.py +++ b/pod/ai_enhancement/forms.py @@ -69,11 +69,8 @@ class Meta: "aria-describedby": "id_titleHelp", }, ), - help_text=_( - """ - Please choose a title between 1 and 250 characters. - """ - ), + help_text=_("Please choose a title between 1 and %(max)s characters.") + % {"max": 250}, ) description = forms.CharField( diff --git a/pod/locale/fr/LC_MESSAGES/django.mo b/pod/locale/fr/LC_MESSAGES/django.mo index f8fbfa498207c31c89e0aa7c4593bc3b989ca528..74c4ce5155f159e0d0d77e941295c709aec8be48 100644 GIT binary patch delta 40535 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 enK%0F`\n" "Language-Team: Pod Team cotech-esup-pod@esup-portail.org\n" @@ -101,15 +101,11 @@ msgstr "La discipline proposée par l’IA Aristote." msgid "Title" msgstr "Titre" -#: pod/ai_enhancement/forms.py -msgid "" -"\n" -" Please choose a title between 1 and 250 characters.\n" -" " -msgstr "" -"\n" -" Veuillez entrer un titre contenant entre 1 et 250 caractères.\n" -" " +#: pod/ai_enhancement/forms.py pod/playlist/forms.py pod/quiz/forms.py +#: pod/quiz/models.py +#, python-format +msgid "Please choose a title between 1 and %(max)s characters." +msgstr "Veuillez entrer un titre contenant entre 1 et %(max)s caractères." #: pod/ai_enhancement/forms.py pod/live/models.py pod/main/forms.py #: pod/main/models.py pod/playlist/forms.py pod/playlist/models.py @@ -4795,7 +4791,7 @@ msgstr "Dernières vidéos" msgid "Most views" msgstr "Les plus vues" -#: pod/main/models.py +#: pod/main/models.py pod/video/models.py msgid "Order" msgstr "Ordre" @@ -6514,7 +6510,7 @@ msgstr "" "

      Vous avez besoin de ce mot de passe pour entrer : " "%(password)s

      \n" "

      Cordialement

      \n" -" " +" " #: pod/meeting/views.py #, python-format @@ -6609,7 +6605,7 @@ msgstr "" #: pod/meeting/webinar.py #, python-format msgid "Webinar mode has been successfully stopped for “%(name)s” meeting." -msgstr "Le mode webinaire a bien été démarré pour la réunion « %(name)s »." +msgstr "Le mode webinaire a bien été arrêté pour la réunion « %(name)s »." #: pod/meeting/webinar.py #, python-format @@ -6634,7 +6630,7 @@ msgstr "Trop de webinaires" msgid "" "There are too many webinars (%(nb_webinars)s) for the number of live " "gateways allocated (%(nb_live_gateways)s). The next meeting has been created " -"but not like a webinar:%(id)s %(name)s [%(start_at)s-%(end_at)s].\n" +"but not like a webinar: %(id)s %(name)s [%(start_at)s-%(end_at)s].\n" "Please fix the problem either by increasing the number of live gateways or " "by modifying/deleting one of the affected webinars (with the users’ " "agreement).\n" @@ -6642,7 +6638,7 @@ msgid "" msgstr "" "Il y a trop de webinaires (%(nb_webinars)s) pour le nombre de passerelles de " "live allouées (%(nb_live_gateways)s). La prochaine réunion a été créée mais " -"pas comme un webinaire :%(id)s %(name)s [%(start_at)s-%(end_at)s].\n" +"pas comme un webinaire : %(id)s %(name)s [%(start_at)s-%(end_at)s].\n" "Veuillez résoudre le problème en augmentant le nombre de passerelles de live " "ou en modifiant/supprimant l’un des webinaires concernés (avec l’accord des " "utilisateurs).\n" @@ -6690,10 +6686,6 @@ msgstr "Informations générales" msgid "Security informations" msgstr "Informations de sécurité" -#: pod/playlist/forms.py pod/quiz/forms.py pod/quiz/models.py -msgid "Please choose a title between 1 and 250 characters." -msgstr "Veuillez entrer un titre contenant entre 1 et 250 caractères." - #: pod/playlist/forms.py pod/playlist/models.py msgid "Please choose a description. This description is empty by default." msgstr "Veuillez choisir une description. Celle-ci est vide par défaut." @@ -7194,6 +7186,11 @@ msgid "The data sent to create the playlist are invalid." msgstr "" "Les données envoyées pour créer la liste de lecture ne sont pas valides." +#: pod/playlist/views.py +#, python-format +msgid "Edit playlist “%(name)s”" +msgstr "Modifier la liste de lecture « %(name)s »" + #: pod/playlist/views.py msgid "JSON in wrong format" msgstr "JSON au mauvais format" diff --git a/pod/locale/nl/LC_MESSAGES/django.po b/pod/locale/nl/LC_MESSAGES/django.po index 4d753cfd2e..3482c74340 100644 --- a/pod/locale/nl/LC_MESSAGES/django.po +++ b/pod/locale/nl/LC_MESSAGES/django.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: Pod\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-12-11 11:35+0000\n" +"POT-Creation-Date: 2024-12-11 14:19+0000\n" "PO-Revision-Date: 2024-07-04 17:54+0200\n" "Last-Translator: obado \n" "Language-Team: \n" @@ -101,11 +101,10 @@ msgstr "" msgid "Title" msgstr "Titel" -#: pod/ai_enhancement/forms.py -msgid "" -"\n" -" Please choose a title between 1 and 250 characters.\n" -" " +#: pod/ai_enhancement/forms.py pod/playlist/forms.py pod/quiz/forms.py +#: pod/quiz/models.py +#, python-format +msgid "Please choose a title between 1 and %(max)s characters." msgstr "" #: pod/ai_enhancement/forms.py pod/live/models.py pod/main/forms.py @@ -6228,7 +6227,7 @@ msgstr "" msgid "" "There are too many webinars (%(nb_webinars)s) for the number of live " "gateways allocated (%(nb_live_gateways)s). The next meeting has been created " -"but not like a webinar:%(id)s %(name)s [%(start_at)s-%(end_at)s].\n" +"but not like a webinar: %(id)s %(name)s [%(start_at)s-%(end_at)s].\n" "Please fix the problem either by increasing the number of live gateways or " "by modifying/deleting one of the affected webinars (with the users’ " "agreement).\n" @@ -6269,10 +6268,6 @@ msgstr "" msgid "Security informations" msgstr "" -#: pod/playlist/forms.py pod/quiz/forms.py pod/quiz/models.py -msgid "Please choose a title between 1 and 250 characters." -msgstr "" - #: pod/playlist/forms.py pod/playlist/models.py msgid "Please choose a description. This description is empty by default." msgstr "" @@ -6741,6 +6736,11 @@ msgstr "" msgid "The data sent to create the playlist are invalid." msgstr "" +#: pod/playlist/views.py +#, python-format +msgid "Edit playlist “%(name)s”" +msgstr "" + #: pod/playlist/views.py msgid "JSON in wrong format" msgstr "" diff --git a/pod/meeting/webinar_utils.py b/pod/meeting/webinar_utils.py index 27dddac76f..fe2835f801 100644 --- a/pod/meeting/webinar_utils.py +++ b/pod/meeting/webinar_utils.py @@ -102,7 +102,7 @@ def send_email_webinars( message = _( "There are too many webinars (%(nb_webinars)s) for the number of " "live gateways allocated (%(nb_live_gateways)s). " - "The next meeting has been created but not like a webinar:%(id)s %(name)s [%(start_at)s-%(end_at)s].\n" + "The next meeting has been created but not like a webinar: %(id)s %(name)s [%(start_at)s-%(end_at)s].\n" "Please fix the problem either by increasing the number of live gateways " "or by modifying/deleting one of the affected webinars " "(with the users’ agreement).\n" diff --git a/pod/playlist/forms.py b/pod/playlist/forms.py index a684b7ec92..72f5f0c9f0 100644 --- a/pod/playlist/forms.py +++ b/pod/playlist/forms.py @@ -60,7 +60,9 @@ class Meta: "aria-describedby": "id_nameHelp", }, ), - help_text=_("Please choose a title between 1 and 250 characters."), + help_text=_( + "Please choose a title between 1 and %(max)s characters." + ) % {"max": 250} ) description = forms.CharField( label=_("Description"), diff --git a/pod/playlist/views.py b/pod/playlist/views.py index 53f794fb50..a5e79cce6a 100644 --- a/pod/playlist/views.py +++ b/pod/playlist/views.py @@ -474,7 +474,7 @@ def handle_get_request_for_add_or_edit_function(request: WSGIRequest, slug: str) or request.user in get_additional_owners(playlist) ) and playlist.editable: form = PlaylistForm(instance=playlist, user=request.user) - page_title = _(f"Edit playlist “{playlist.name}”") + page_title = _("Edit playlist “%(name)s”") % {"name": playlist.name} else: return redirect(reverse("playlist:list")) else: diff --git a/pod/quiz/forms.py b/pod/quiz/forms.py index 5f3fc9e05d..2b5cf759ce 100644 --- a/pod/quiz/forms.py +++ b/pod/quiz/forms.py @@ -36,7 +36,9 @@ class QuestionForm(forms.Form): label=_("Title"), required=True, widget=forms.TextInput(attrs={"placeholder": _("Your question")}), - help_text=_("Please choose a title between 1 and 250 characters."), + help_text=_( + "Please choose a title between 1 and %(max)s characters." + ) % {"max": 250} ) explanation = forms.CharField( label=_("Explanation"), diff --git a/pod/quiz/models.py b/pod/quiz/models.py index 8120ed85fd..daa0b34a2f 100644 --- a/pod/quiz/models.py +++ b/pod/quiz/models.py @@ -98,7 +98,9 @@ class Question(models.Model): title = models.CharField( verbose_name=_("Title"), max_length=250, - help_text=_("Please choose a title between 1 and 250 characters."), + help_text=_( + "Please choose a title between 1 and %(max)s characters." + ) % {"max": 250} ) explanation = models.TextField( verbose_name=_("Explanation"), From ab3a5831c73cf2b619d532e87becb7a2a7d76895 Mon Sep 17 00:00:00 2001 From: Olivier Bado-Faustin <12731381+Badatos@users.noreply.github.com> Date: Wed, 11 Dec 2024 16:35:59 +0100 Subject: [PATCH 3/3] cleanup i18n strings + increase sqlite timeout --- pod/locale/fr/LC_MESSAGES/django.mo | Bin 219617 -> 219632 bytes pod/locale/fr/LC_MESSAGES/django.po | 12 +++++++----- pod/locale/nl/LC_MESSAGES/django.po | 16 +++++++++------- pod/main/test_settings.py | 2 +- pod/playlist/forms.py | 7 ++++--- pod/playlist/tests/test_forms.py | 6 +++--- 6 files changed, 24 insertions(+), 19 deletions(-) diff --git a/pod/locale/fr/LC_MESSAGES/django.mo b/pod/locale/fr/LC_MESSAGES/django.mo index 74c4ce5155f159e0d0d77e941295c709aec8be48..f38f308794742ae77a199f06883d2fb2daac42ba 100644 GIT binary patch delta 19513 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 M?zmUm_g9Jk1I?@Vp8x;= delta 19485 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 diff --git a/pod/locale/fr/LC_MESSAGES/django.po b/pod/locale/fr/LC_MESSAGES/django.po index 90ff10a419..884fcd543d 100644 --- a/pod/locale/fr/LC_MESSAGES/django.po +++ b/pod/locale/fr/LC_MESSAGES/django.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: Pod\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-12-11 14:19+0000\n" +"POT-Creation-Date: 2024-12-11 15:32+0000\n" "PO-Revision-Date: \n" "Last-Translator: obado \n" "Language-Team: Pod Team cotech-esup-pod@esup-portail.org\n" @@ -6735,6 +6735,11 @@ msgstr "Lecture automatique" msgid "Please choose if this playlist is an autoplay playlist or not." msgstr "Veuillez choisir si cette playlist est en lecture automatique ou non." +#: pod/playlist/forms.py pod/playlist/tests/test_forms.py +#, python-format +msgid "You cannot create a playlist named “%(name)s”" +msgstr "Vous ne pouvez pas créer une liste de lecture nommée « %(name)s »" + #: pod/playlist/forms.py msgid "Remove playlist cannot be undone" msgstr "La suppression de réunion est définitive" @@ -7144,6 +7149,7 @@ msgid "contact its owner" msgstr "contacter son propriétaire" #: pod/playlist/templatetags/favorites_playlist.py +#: pod/playlist/tests/test_forms.py msgid "Favorites" msgstr "Favoris" @@ -7151,10 +7157,6 @@ msgstr "Favoris" msgid "This field is required." msgstr "Ce champ est requis." -#: pod/playlist/tests/test_forms.py -msgid "You cannot create a playlist named \"Favorites\"" -msgstr "Vous ne pouvez créer une liste de lecture nommé \"Favoris\"" - #: pod/playlist/tests/test_views.py pod/playlist/views.py #, python-format msgid "Playlist: %(name)s" diff --git a/pod/locale/nl/LC_MESSAGES/django.po b/pod/locale/nl/LC_MESSAGES/django.po index 3482c74340..b3a6957579 100644 --- a/pod/locale/nl/LC_MESSAGES/django.po +++ b/pod/locale/nl/LC_MESSAGES/django.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: Pod\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-12-11 14:19+0000\n" +"POT-Creation-Date: 2024-12-11 15:32+0000\n" "PO-Revision-Date: 2024-07-04 17:54+0200\n" "Last-Translator: obado \n" "Language-Team: \n" @@ -4456,7 +4456,7 @@ msgstr "" msgid "Get the file name" msgstr "" -#: pod/main/models.py pod/video/models.py +#: pod/main/models.py msgid "order" msgstr "" @@ -4548,7 +4548,7 @@ msgstr "" msgid "Most views" msgstr "" -#: pod/main/models.py pod/video/models.py +#: pod/main/models.py msgid "Order" msgstr "" @@ -6308,6 +6308,11 @@ msgstr "" msgid "Please choose if this playlist is an autoplay playlist or not." msgstr "" +#: pod/playlist/forms.py pod/playlist/tests/test_forms.py +#, python-format +msgid "You cannot create a playlist named “%(name)s”" +msgstr "" + #: pod/playlist/forms.py msgid "Remove playlist cannot be undone" msgstr "" @@ -6695,6 +6700,7 @@ msgid "contact its owner" msgstr "" #: pod/playlist/templatetags/favorites_playlist.py +#: pod/playlist/tests/test_forms.py msgid "Favorites" msgstr "" @@ -6702,10 +6708,6 @@ msgstr "" msgid "This field is required." msgstr "" -#: pod/playlist/tests/test_forms.py -msgid "You cannot create a playlist named \"Favorites\"" -msgstr "" - #: pod/playlist/tests/test_views.py pod/playlist/views.py #, python-format msgid "Playlist: %(name)s" diff --git a/pod/main/test_settings.py b/pod/main/test_settings.py index 61a0cdbb7b..6911b38ad6 100644 --- a/pod/main/test_settings.py +++ b/pod/main/test_settings.py @@ -45,7 +45,7 @@ "ENGINE": "django.db.backends.sqlite3", "NAME": "db-test.sqlite", "OPTIONS": { - "timeout": 20, + "timeout": 30, }, } } diff --git a/pod/playlist/forms.py b/pod/playlist/forms.py index 72f5f0c9f0..129cf9a8e6 100644 --- a/pod/playlist/forms.py +++ b/pod/playlist/forms.py @@ -158,16 +158,17 @@ def __init__(self, *args, **kwargs) -> None: if "promoted" in self.fields: del self.fields["promoted"] - def clean_name(self): + def clean_name(self) -> str: """Check if the playlist name asked is correct.""" name = self.cleaned_data["name"] if name == FAVORITE_PLAYLIST_NAME: raise forms.ValidationError( - _(f'You cannot create a playlist named "{FAVORITE_PLAYLIST_NAME}"') + _("You cannot create a playlist named “%(name)s”") + % {"name": FAVORITE_PLAYLIST_NAME} ) return name - def clean_add_owner(self, cleaned_data): + def clean_add_owner(self, cleaned_data) -> None: """Check if the owner is correct.""" if "additional_owners" in cleaned_data.keys() and isinstance( self.cleaned_data["additional_owners"], QuerySet diff --git a/pod/playlist/tests/test_forms.py b/pod/playlist/tests/test_forms.py index 3d8581e108..20ead4a741 100644 --- a/pod/playlist/tests/test_forms.py +++ b/pod/playlist/tests/test_forms.py @@ -106,7 +106,7 @@ def test_name_validation_for_public_playlist(self): self.assertFalse(invalid_form.is_valid()) self.assertEqual( invalid_form.errors["name"][0], - _('You cannot create a playlist named "Favorites"'), + _('You cannot create a playlist named “%(name)s”') % {"name": _("Favorites")}, ) print(" ---> test_name_validation_for_public_playlist ok") @@ -129,7 +129,7 @@ def test_name_validation_for_private_playlist(self) -> None: self.assertFalse(invalid_form.is_valid()) self.assertEqual( invalid_form.errors["name"][0], - _('You cannot create a playlist named "Favorites"'), + _('You cannot create a playlist named “%(name)s”') % {"name": _("Favorites")}, ) print(" ---> test_name_validation_for_private_playlist ok") @@ -154,7 +154,7 @@ def test_name_validation_for_protected_playlist(self) -> None: self.assertFalse(invalid_form.is_valid()) self.assertEqual( invalid_form.errors["name"][0], - _('You cannot create a playlist named "Favorites"'), + _('You cannot create a playlist named “%(name)s”') % {"name": _("Favorites")}, ) print(" ---> test_name_validation_for_protected_playlist ok")