From 7356056baf19e351377393ae8e116838722030b6 Mon Sep 17 00:00:00 2001 From: Christian Cueni Date: Mon, 17 Jun 2024 09:20:47 +0200 Subject: [PATCH] wip: Add backend translations [skip ci] --- server/locale/de/LC_MESSAGES/django.mo | Bin 0 -> 380 bytes server/locale/de/LC_MESSAGES/django.po | 263 ++++++++++++++++++ server/locale/fr/LC_MESSAGES/django.mo | Bin 0 -> 2301 bytes server/locale/fr/LC_MESSAGES/django.po | 263 ++++++++++++++++++ server/locale/it/LC_MESSAGES/django.mo | Bin 0 -> 2191 bytes server/locale/it/LC_MESSAGES/django.po | 263 ++++++++++++++++++ server/vbv_lernwelt/assignment/export.py | 15 +- .../services/export_attendance.py | 15 +- .../dashboard/tests/test_views.py | 4 +- server/vbv_lernwelt/feedback/export.py | 29 +- .../vbv_lernwelt/feedback/graphql/queries.py | 38 +++ 11 files changed, 864 insertions(+), 26 deletions(-) create mode 100644 server/locale/de/LC_MESSAGES/django.mo create mode 100644 server/locale/de/LC_MESSAGES/django.po create mode 100644 server/locale/fr/LC_MESSAGES/django.mo create mode 100644 server/locale/fr/LC_MESSAGES/django.po create mode 100644 server/locale/it/LC_MESSAGES/django.mo create mode 100644 server/locale/it/LC_MESSAGES/django.po create mode 100644 server/vbv_lernwelt/feedback/graphql/queries.py diff --git a/server/locale/de/LC_MESSAGES/django.mo b/server/locale/de/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..71cbdf3e9d8d54be31066ec4ad8628bc2c1f2845 GIT binary patch literal 380 zcmYL@K~KUk7=|%=+R?Lz&%}d9i{c3jGZa>EvE7z2Nc2{r&Y96JZ6W$Y{CoZuJ5A(G zp7i_Dx9RhJeDu}vIq;l#&OC>nD^HugXY4QU{MmN?lNtRkR}RH%w3NnHT4Bh@vF%H^(V-=Ii1iQ$Qo9Pt!I1Rhe%oml#`f^NEGFCKEL->Rc=KoQ6a?!10%_7(V7ey8`V`;n{war z20Z3;uifk31QV^CRQ|iq#``$=;jWunRB8aLH({)F;i8zL{=V00y-I_qTIqGAN(}v% i$^}`yHKImSZ8jEzYJOK6-VWez49^vuhS0kh1f3tbb!oc* literal 0 HcmV?d00001 diff --git a/server/locale/de/LC_MESSAGES/django.po b/server/locale/de/LC_MESSAGES/django.po new file mode 100644 index 00000000..115a551c --- /dev/null +++ b/server/locale/de/LC_MESSAGES/django.po @@ -0,0 +1,263 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-06-17 08:25+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: vbv_lernwelt/assignment/export.py:181 +msgid "Bestanden" +msgstr "" + +#: vbv_lernwelt/assignment/export.py:181 +msgid "Nicht bestanden" +msgstr "" + +#: vbv_lernwelt/assignment/export.py:195 vbv_lernwelt/assignment/export.py:198 +#: vbv_lernwelt/assignment/export.py:199 +msgid "Keine Daten" +msgstr "" + +#: vbv_lernwelt/core/admin.py:32 +msgid "Personal info" +msgstr "" + +#: vbv_lernwelt/core/admin.py:34 +msgid "Permissions" +msgstr "" + +#: vbv_lernwelt/core/admin.py:45 +msgid "Important dates" +msgstr "" + +#: vbv_lernwelt/core/admin.py:47 +msgid "Profile" +msgstr "" + +#: vbv_lernwelt/core/admin.py:62 +msgid "Organisation" +msgstr "" + +#: vbv_lernwelt/core/admin.py:75 +msgid "Additional data" +msgstr "" + +#: vbv_lernwelt/course/models.py:24 vbv_lernwelt/course/models.py:62 +msgid "Titel" +msgstr "" + +#: vbv_lernwelt/course/models.py:26 +msgid "Kategorie-Name" +msgstr "" + +#: vbv_lernwelt/course/models.py:29 +msgid "Slug" +msgstr "" + +#: vbv_lernwelt/course/models.py:64 +msgid "Allgemein" +msgstr "" + +#: vbv_lernwelt/course/models.py:177 +msgid "Lehrgang-Seite" +msgstr "" + +#: vbv_lernwelt/course/models.py:272 +msgid "Teilnehmer" +msgstr "" + +#: vbv_lernwelt/course/models.py:273 +msgid "Experte/Trainer" +msgstr "" + +#: vbv_lernwelt/course/models.py:332 +msgid "Dokumente im Circle ein/aus" +msgstr "" + +#: vbv_lernwelt/course/models.py:336 +msgid "Lernmentor-Funktion ein/aus" +msgstr "" + +#: vbv_lernwelt/course/models.py:340 +msgid "Kompetenzweise ein/aus" +msgstr "" + +#: vbv_lernwelt/course/models.py:343 +msgid "Versicherungsvermittler-Lehrgang" +msgstr "" + +#: vbv_lernwelt/course/models.py:344 +msgid "ÜK-Lehrgang" +msgstr "" + +#: vbv_lernwelt/course_session/services/export_attendance.py:111 +msgid "Anwesend" +msgstr "" + +#: vbv_lernwelt/course_session/services/export_attendance.py:111 +msgid "Nicht anwesend" +msgstr "" + +#: vbv_lernwelt/course_session/services/export_attendance.py:118 +msgid "Vorname" +msgstr "" + +#: vbv_lernwelt/course_session/services/export_attendance.py:119 +msgid "Nachname" +msgstr "" + +#: vbv_lernwelt/course_session/services/export_attendance.py:120 +msgid "Email" +msgstr "" + +#: vbv_lernwelt/course_session/services/export_attendance.py:121 +#: vbv_lernwelt/course_session/services/export_attendance.py:133 +msgid "Lehrvertragsnummer" +msgstr "" + +#: vbv_lernwelt/feedback/export.py:33 +msgid "Zufriedenheit insgesamt" +msgstr "" + +#: vbv_lernwelt/feedback/export.py:34 +msgid "Zielerreichung insgesamt" +msgstr "" + +#: vbv_lernwelt/feedback/export.py:37 +msgid "" +"Wie beurteilst du deine Sicherheit bezüglichen den Themen nach dem Kurs?" +msgstr "" + +#: vbv_lernwelt/feedback/export.py:41 +msgid "Waren die Vorbereitungsaufträge klar und verständlich?" +msgstr "" + +#: vbv_lernwelt/feedback/export.py:45 +msgid "" +"Wie beurteilst du die Themensicherheit und Fachkompetenz des Kursleiters/der " +"Kursleiterin?" +msgstr "" + +#: vbv_lernwelt/feedback/export.py:49 +msgid "" +"Wurden Fragen und Anregungen der Kursteilnehmenden ernst genommen und " +"aufgegriffen?" +msgstr "" + +#: vbv_lernwelt/feedback/export.py:53 +msgid "Was möchtest du dem Kursleiter/der Kursleiterin sonst noch sagen?" +msgstr "" + +#: vbv_lernwelt/feedback/export.py:55 +msgid "Würdest du den Kurs weiterempfehlen?" +msgstr "" + +#: vbv_lernwelt/feedback/export.py:56 +msgid "Was hat dir besonders gut gefallen?" +msgstr "" + +#: vbv_lernwelt/feedback/export.py:57 +msgid "Wo siehst du Verbesserungspotential?" +msgstr "" + +#: vbv_lernwelt/feedback/export.py:144 +msgid "Durchführung" +msgstr "" + +#: vbv_lernwelt/feedback/export.py:145 +msgid "Datum" +msgstr "" + +#: vbv_lernwelt/feedback/models.py:31 +msgid "Internet" +msgstr "" + +#: vbv_lernwelt/feedback/models.py:32 +msgid "Leaflet" +msgstr "" + +#: vbv_lernwelt/feedback/models.py:33 +msgid "Newspaper" +msgstr "" + +#: vbv_lernwelt/feedback/models.py:34 +msgid "Personal recommendation" +msgstr "" + +#: vbv_lernwelt/feedback/models.py:35 +msgid "Public event" +msgstr "" + +#: vbv_lernwelt/feedback/models.py:36 +msgid "Other" +msgstr "" + +#: vbv_lernwelt/media_files/models.py:27 vbv_lernwelt/media_files/models.py:54 +#: vbv_lernwelt/media_files/models.py:64 vbv_lernwelt/media_files/models.py:83 +msgid "file" +msgstr "" + +#: vbv_lernwelt/notify/models.py:9 +msgid "User Interaction" +msgstr "" + +#: vbv_lernwelt/notify/models.py:10 +msgid "Progress" +msgstr "" + +#: vbv_lernwelt/notify/models.py:11 +msgid "Information" +msgstr "" + +#: vbv_lernwelt/notify/models.py:16 +msgid "Attendance Course Reminder" +msgstr "" + +#: vbv_lernwelt/notify/models.py:18 +msgid "Assignment Reminder" +msgstr "" + +#: vbv_lernwelt/notify/models.py:21 +msgid "Casework Expert Evaluation Reminder" +msgstr "" + +#: vbv_lernwelt/notify/models.py:23 +msgid "Casework Submitted" +msgstr "" + +#: vbv_lernwelt/notify/models.py:24 +msgid "Casework Evaluated" +msgstr "" + +#: vbv_lernwelt/notify/models.py:25 +msgid "New Feedback" +msgstr "" + +#: vbv_lernwelt/notify/models.py:28 +msgid "Self Evaluation Feedback Requested" +msgstr "" + +#: vbv_lernwelt/notify/models.py:31 +msgid "Self Evaluation Feedback Provided" +msgstr "" + +#: vbv_lernwelt/templates/wagtailadmin/pages/listing/_page_title_explore.html:8 +msgid "Sites menu" +msgstr "" + +#: vbv_lernwelt/templates/wagtailadmin/pages/listing/_page_title_explore.html:14 +msgid "Edit this page" +msgstr "" diff --git a/server/locale/fr/LC_MESSAGES/django.mo b/server/locale/fr/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..5c10a8378da9bda52bcc4ae06a25c6dde22278e3 GIT binary patch literal 2301 zcmah~JB%Df5FNn$7R<+BAONcYBR*zqOk}Nnw%6W0bGqHV^ZhJNB)v1WGku=v9{OV& zi@+iyLr4T<1Qucm2nZmtNQMYOh>!pg5D*bS3JI@fZ@rcrFuI<%-BVrl>Qz_YZ~OLq z6ybRS<7tfVF`mJA_YS=9`~|!Z_&4x=;6K2-fqU+ZqP@TtkmpYU9{?Tz?gPF8^91mpUaKb)^qw z)D1St$Muce2AxH{QmP_aCZ$Q>JFNPY+e>7pCsq`BZd4I+06{tyaLT z0d4C<7QD!4EQ^Bl)TXSz0ujU&X%H!uVmVk>APm_f*mBEMX#qDd)F#P=lUd^e%tjQf zCsoXRumI~IK{kgUe7;)W$e0ypg0YcP3DA(@W<-#=-4j-(wr=i?Q(eT)i>9myB433I zcMD5*8*8{W!YRt9{I&=>I!9bHR~fkQN)|8*mdP!mSO5;w(Uvk;VLDTS)6|rMKHHLI zIq=<}w$nW*Oh%bi<8h--eFIKsy6A?cxZH?KWi_U}DZ{p+f-Fj#tT|Hx}b#b33LrCL8y3Vp65Ewm3FYzO`Be zD~ov1*wVFyu9~S^c>TDT{#j|1Rl&~;34k7_**oyQ;Sykv!uN=2TG&CiD9?Mdp$)Z)XVKoa@zn|nL z)RQJW4h=2{C*b9h3|AVfO2Va47R&X-OU0_7uS5bl(7oglwq$o`C8tIO>`q1J!|&HV z#vzLn5^o13Jf>2>l~+k9RQ;LdcJnL(tk+G*CA!ni%eNA}eE72gYHllzmQ)Jeafgn@X6?oaEI->sETM`n-qELqG3@=<&X44!bF4{Ed z3|&24;tZzsQ58~k0x@F3acRm9F)9|z2?=I6Z;Eg{;07l}K`MMm46cjBPwRRr>dlHz z0!76a+(-O>3WjqLySSF%8rcJ6p, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-06-17 08:25+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: vbv_lernwelt/assignment/export.py:181 +msgid "Bestanden" +msgstr "Réussi" + +#: vbv_lernwelt/assignment/export.py:181 +msgid "Nicht bestanden" +msgstr "Échoué" + +#: vbv_lernwelt/assignment/export.py:195 vbv_lernwelt/assignment/export.py:198 +#: vbv_lernwelt/assignment/export.py:199 +msgid "Keine Daten" +msgstr "Aucune donnée" + +#: vbv_lernwelt/core/admin.py:32 +msgid "Personal info" +msgstr "" + +#: vbv_lernwelt/core/admin.py:34 +msgid "Permissions" +msgstr "" + +#: vbv_lernwelt/core/admin.py:45 +msgid "Important dates" +msgstr "" + +#: vbv_lernwelt/core/admin.py:47 +msgid "Profile" +msgstr "" + +#: vbv_lernwelt/core/admin.py:62 +msgid "Organisation" +msgstr "" + +#: vbv_lernwelt/core/admin.py:75 +msgid "Additional data" +msgstr "" + +#: vbv_lernwelt/course/models.py:24 vbv_lernwelt/course/models.py:62 +msgid "Titel" +msgstr "" + +#: vbv_lernwelt/course/models.py:26 +msgid "Kategorie-Name" +msgstr "" + +#: vbv_lernwelt/course/models.py:29 +msgid "Slug" +msgstr "" + +#: vbv_lernwelt/course/models.py:64 +msgid "Allgemein" +msgstr "" + +#: vbv_lernwelt/course/models.py:177 +msgid "Lehrgang-Seite" +msgstr "" + +#: vbv_lernwelt/course/models.py:272 +msgid "Teilnehmer" +msgstr "" + +#: vbv_lernwelt/course/models.py:273 +msgid "Experte/Trainer" +msgstr "" + +#: vbv_lernwelt/course/models.py:332 +msgid "Dokumente im Circle ein/aus" +msgstr "" + +#: vbv_lernwelt/course/models.py:336 +msgid "Lernmentor-Funktion ein/aus" +msgstr "" + +#: vbv_lernwelt/course/models.py:340 +msgid "Kompetenzweise ein/aus" +msgstr "" + +#: vbv_lernwelt/course/models.py:343 +msgid "Versicherungsvermittler-Lehrgang" +msgstr "" + +#: vbv_lernwelt/course/models.py:344 +msgid "ÜK-Lehrgang" +msgstr "" + +#: vbv_lernwelt/course_session/services/export_attendance.py:111 +msgid "Anwesend" +msgstr "Présent" + +#: vbv_lernwelt/course_session/services/export_attendance.py:111 +msgid "Nicht anwesend" +msgstr "Pas présent" + +#: vbv_lernwelt/course_session/services/export_attendance.py:118 +msgid "Vorname" +msgstr "Prénom" + +#: vbv_lernwelt/course_session/services/export_attendance.py:119 +msgid "Nachname" +msgstr "Nom de famille" + +#: vbv_lernwelt/course_session/services/export_attendance.py:120 +msgid "Email" +msgstr "Email" + +#: vbv_lernwelt/course_session/services/export_attendance.py:121 +#: vbv_lernwelt/course_session/services/export_attendance.py:133 +msgid "Lehrvertragsnummer" +msgstr "Numéro de contrat d'apprentissage" + +#: vbv_lernwelt/feedback/export.py:33 +msgid "Zufriedenheit insgesamt" +msgstr "Degré de satisfaction au global" + +#: vbv_lernwelt/feedback/export.py:34 +msgid "Zielerreichung insgesamt" +msgstr "Degré de réalisation des objectifs" + +#: vbv_lernwelt/feedback/export.py:37 +msgid "" +"Wie beurteilst du deine Sicherheit bezüglichen den Themen nach dem Kurs?" +msgstr "As-tu l’impression de bien maîtriser les sujets qui ont été abordés pendant le cours ?" + +#: vbv_lernwelt/feedback/export.py:41 +msgid "Waren die Vorbereitungsaufträge klar und verständlich?" +msgstr "Les travaux préparatoires étaient-ils clairs et compréhensibles ?" + +#: vbv_lernwelt/feedback/export.py:45 +msgid "" +"Wie beurteilst du die Themensicherheit und Fachkompetenz des Kursleiters/der " +"Kursleiterin?" +msgstr "Que penses-tu des compétences techniques de la personne chargée du cours et de sa maîtrise du sujet ?" + +#: vbv_lernwelt/feedback/export.py:49 +msgid "" +"Wurden Fragen und Anregungen der Kursteilnehmenden ernst genommen und " +"aufgegriffen?" +msgstr "Les questions et les suggestions des participants ont-elles été prises au sérieux et traitées correctement ?" + +#: vbv_lernwelt/feedback/export.py:53 +msgid "Was möchtest du dem Kursleiter/der Kursleiterin sonst noch sagen?" +msgstr "Souhaites-tu ajouter quelque chose à l’intention de la personne chargée du cours ?" + +#: vbv_lernwelt/feedback/export.py:55 +msgid "Würdest du den Kurs weiterempfehlen?" +msgstr "Est-ce que tu recommandes ce cours ?" + +#: vbv_lernwelt/feedback/export.py:56 +msgid "Was hat dir besonders gut gefallen?" +msgstr "Qu’est-ce qui t’a particulièrement plu ?" + +#: vbv_lernwelt/feedback/export.py:57 +msgid "Wo siehst du Verbesserungspotential?" +msgstr "À ton avis, quels sont les points qui pourraient être améliorés ?" + +#: vbv_lernwelt/feedback/export.py:144 +msgid "Durchführung" +msgstr "Opérations" + +#: vbv_lernwelt/feedback/export.py:145 +msgid "Datum" +msgstr "Date" + +#: vbv_lernwelt/feedback/models.py:31 +msgid "Internet" +msgstr "" + +#: vbv_lernwelt/feedback/models.py:32 +msgid "Leaflet" +msgstr "" + +#: vbv_lernwelt/feedback/models.py:33 +msgid "Newspaper" +msgstr "" + +#: vbv_lernwelt/feedback/models.py:34 +msgid "Personal recommendation" +msgstr "" + +#: vbv_lernwelt/feedback/models.py:35 +msgid "Public event" +msgstr "" + +#: vbv_lernwelt/feedback/models.py:36 +msgid "Other" +msgstr "" + +#: vbv_lernwelt/media_files/models.py:27 vbv_lernwelt/media_files/models.py:54 +#: vbv_lernwelt/media_files/models.py:64 vbv_lernwelt/media_files/models.py:83 +msgid "file" +msgstr "" + +#: vbv_lernwelt/notify/models.py:9 +msgid "User Interaction" +msgstr "" + +#: vbv_lernwelt/notify/models.py:10 +msgid "Progress" +msgstr "" + +#: vbv_lernwelt/notify/models.py:11 +msgid "Information" +msgstr "" + +#: vbv_lernwelt/notify/models.py:16 +msgid "Attendance Course Reminder" +msgstr "" + +#: vbv_lernwelt/notify/models.py:18 +msgid "Assignment Reminder" +msgstr "" + +#: vbv_lernwelt/notify/models.py:21 +msgid "Casework Expert Evaluation Reminder" +msgstr "" + +#: vbv_lernwelt/notify/models.py:23 +msgid "Casework Submitted" +msgstr "" + +#: vbv_lernwelt/notify/models.py:24 +msgid "Casework Evaluated" +msgstr "" + +#: vbv_lernwelt/notify/models.py:25 +msgid "New Feedback" +msgstr "" + +#: vbv_lernwelt/notify/models.py:28 +msgid "Self Evaluation Feedback Requested" +msgstr "" + +#: vbv_lernwelt/notify/models.py:31 +msgid "Self Evaluation Feedback Provided" +msgstr "" + +#: vbv_lernwelt/templates/wagtailadmin/pages/listing/_page_title_explore.html:8 +msgid "Sites menu" +msgstr "" + +#: vbv_lernwelt/templates/wagtailadmin/pages/listing/_page_title_explore.html:14 +msgid "Edit this page" +msgstr "" diff --git a/server/locale/it/LC_MESSAGES/django.mo b/server/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..5cb0e69893ce98efd29312e247a4346e6dfe2d66 GIT binary patch literal 2191 zcma)+&yO256vqcBzXIh)`7IS>L@Uvj=?_jN+ijceCT-dzyCm6Nu{ZDJWyY zigpz32edcQK79l~_Bj8Dp*R6ujfi3WP za0`4AB=9_#gYSS}gKOaTU>iLASQPDoJK!pF_bXTf72_s@a6{sV9Yya*l#r{Fd4E0A^n z3f>0a!=e-5J}ALE;2Ypsh&c&f2f1H@kXwB(8a|$wc)RZhEP=vUf_X-xlNwTC|V;Qq#2Qk)@3O3XuWhvHl7`1t~6=X z%%#%N4N`^#=3&*L%uUDzCsS|AJSP|RWRe+~Q`A#Q7KB{5o_F`|2iUf*GTV`kj2I~r z7}+C7Dj=4ZE%^yha#uXRzdft}+5{U}$WT2`|&i1(fYk=>jRe@WBZfKm@rA zelR_q9i*&^cY-#|C{Rgd|Vl!atzWKcpJ2t?-Jn zxxQ^e9=#{7nJ+9{1SK_$O2^__C>FqB8pcryD|8o`;B6YpAfIi?aXK(>QQP?%6egwA zsqwhV&g=kA7kM$2OmVwPF6G6TvZ@TbiZnTtHpvi8DC1M|G7r&iId+N=smkMWeAC&R zl!UlFim@B7tf`C5#+4h5t4*=p><`)-y;`3N>q6Z1sT##=W$NRht&7^`M%<@~;x#cJ z(z^Jl+33gJjd;Bwu5Hx2?NhrOy=JW=eTaun8n0!rt}a?zosQ@=x=nGR*=@8tmmBNr z{pMhB5vC?Bk+gV7GOvqHqjzJVHxs-kG^x4`KYq$#W@RI_1 z0(~6L6j~~?B9crxPhoXy*ox0D?O4{BT--E?9VwI6#rZuIYMZ)rQpYXpa$gswsJedj z{S`6)yZWvXZ?B4TCsu0FrsFFeC>oRnIc$-yw2TH5t5bzy1{F2q>O%K$SW27#w&|6) z!xnc+B+!gyq3Q(XY@&>^(G{EGFyMAuBZ@_c7OtD()jV@mD^xg<4%Jrd31)?Ka*B!& zPLwnj+g6wtgeW)l#r;3&>vjU^g!H0x)g_<84IC(uE4)R> z1!oJJ>|oI5{Hi10O87EO$<0py!YRBacq^+ULrEcVFp$6b_V_u(%Mv7yB`5(1QzV@I zXn{9IAwr+$stEH^EVI*>X{vDLt8gegs;zO_)C378s1$ZjQ3z_HqJbTalpo(aCQC~h F{S8}-ickOm literal 0 HcmV?d00001 diff --git a/server/locale/it/LC_MESSAGES/django.po b/server/locale/it/LC_MESSAGES/django.po new file mode 100644 index 00000000..c094423a --- /dev/null +++ b/server/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,263 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-06-17 08:25+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: vbv_lernwelt/assignment/export.py:181 +msgid "Bestanden" +msgstr "Superato" + +#: vbv_lernwelt/assignment/export.py:181 +msgid "Nicht bestanden" +msgstr "Fallito" + +#: vbv_lernwelt/assignment/export.py:195 vbv_lernwelt/assignment/export.py:198 +#: vbv_lernwelt/assignment/export.py:199 +msgid "Keine Daten" +msgstr "Nessun dato" + +#: vbv_lernwelt/core/admin.py:32 +msgid "Personal info" +msgstr "" + +#: vbv_lernwelt/core/admin.py:34 +msgid "Permissions" +msgstr "" + +#: vbv_lernwelt/core/admin.py:45 +msgid "Important dates" +msgstr "" + +#: vbv_lernwelt/core/admin.py:47 +msgid "Profile" +msgstr "" + +#: vbv_lernwelt/core/admin.py:62 +msgid "Organisation" +msgstr "" + +#: vbv_lernwelt/core/admin.py:75 +msgid "Additional data" +msgstr "" + +#: vbv_lernwelt/course/models.py:24 vbv_lernwelt/course/models.py:62 +msgid "Titel" +msgstr "" + +#: vbv_lernwelt/course/models.py:26 +msgid "Kategorie-Name" +msgstr "" + +#: vbv_lernwelt/course/models.py:29 +msgid "Slug" +msgstr "" + +#: vbv_lernwelt/course/models.py:64 +msgid "Allgemein" +msgstr "" + +#: vbv_lernwelt/course/models.py:177 +msgid "Lehrgang-Seite" +msgstr "" + +#: vbv_lernwelt/course/models.py:272 +msgid "Teilnehmer" +msgstr "" + +#: vbv_lernwelt/course/models.py:273 +msgid "Experte/Trainer" +msgstr "" + +#: vbv_lernwelt/course/models.py:332 +msgid "Dokumente im Circle ein/aus" +msgstr "" + +#: vbv_lernwelt/course/models.py:336 +msgid "Lernmentor-Funktion ein/aus" +msgstr "" + +#: vbv_lernwelt/course/models.py:340 +msgid "Kompetenzweise ein/aus" +msgstr "" + +#: vbv_lernwelt/course/models.py:343 +msgid "Versicherungsvermittler-Lehrgang" +msgstr "" + +#: vbv_lernwelt/course/models.py:344 +msgid "ÜK-Lehrgang" +msgstr "" + +#: vbv_lernwelt/course_session/services/export_attendance.py:111 +msgid "Anwesend" +msgstr "Presente" + +#: vbv_lernwelt/course_session/services/export_attendance.py:111 +msgid "Nicht anwesend" +msgstr "Non presente" + +#: vbv_lernwelt/course_session/services/export_attendance.py:118 +msgid "Vorname" +msgstr "Nome" + +#: vbv_lernwelt/course_session/services/export_attendance.py:119 +msgid "Nachname" +msgstr "Cognome" + +#: vbv_lernwelt/course_session/services/export_attendance.py:120 +msgid "Email" +msgstr "E-mail" + +#: vbv_lernwelt/course_session/services/export_attendance.py:121 +#: vbv_lernwelt/course_session/services/export_attendance.py:133 +msgid "Lehrvertragsnummer" +msgstr "Numero di contratto di tirocinio" + +#: vbv_lernwelt/feedback/export.py:33 +msgid "Zufriedenheit insgesamt" +msgstr "Soddisfazione complessiva" + +#: vbv_lernwelt/feedback/export.py:34 +msgid "Zielerreichung insgesamt" +msgstr "Raggiungimento complessivo degli obiettivi" + +#: vbv_lernwelt/feedback/export.py:37 +msgid "" +"Wie beurteilst du deine Sicherheit bezüglichen den Themen nach dem Kurs?" +msgstr "Come valuti il tuo livello di preparazione sui temi dopo il corso?" + +#: vbv_lernwelt/feedback/export.py:41 +msgid "Waren die Vorbereitungsaufträge klar und verständlich?" +msgstr "Gli incarichi di preparazione erano chiari e comprensibili?" + +#: vbv_lernwelt/feedback/export.py:45 +msgid "" +"Wie beurteilst du die Themensicherheit und Fachkompetenz des Kursleiters/der " +"Kursleiterin?" +msgstr "Come valuti il livello di preparazione sui temi e le competenze specialistiche dell’istruttore/istruttrice del corso?" + +#: vbv_lernwelt/feedback/export.py:49 +msgid "" +"Wurden Fragen und Anregungen der Kursteilnehmenden ernst genommen und " +"aufgegriffen?" +msgstr "Le domande e i suggerimenti dei/delle partecipanti al corso sono stati accolti e presi sul serio?" + +#: vbv_lernwelt/feedback/export.py:53 +msgid "Was möchtest du dem Kursleiter/der Kursleiterin sonst noch sagen?" +msgstr "Cos’altro vorresti ancora dire all’istruttore/istruttrice del corso?" + +#: vbv_lernwelt/feedback/export.py:55 +msgid "Würdest du den Kurs weiterempfehlen?" +msgstr "Raccomanderesti il corso?" + +#: vbv_lernwelt/feedback/export.py:56 +msgid "Was hat dir besonders gut gefallen?" +msgstr "Cos’hai apprezzato particolarmente?" + +#: vbv_lernwelt/feedback/export.py:57 +msgid "Wo siehst du Verbesserungspotential?" +msgstr "Dove vedi un potenziale di miglioramento?" + +#: vbv_lernwelt/feedback/export.py:144 +msgid "Durchführung" +msgstr "Svolgimenti" + +#: vbv_lernwelt/feedback/export.py:145 +msgid "Datum" +msgstr "Data" + +#: vbv_lernwelt/feedback/models.py:31 +msgid "Internet" +msgstr "" + +#: vbv_lernwelt/feedback/models.py:32 +msgid "Leaflet" +msgstr "" + +#: vbv_lernwelt/feedback/models.py:33 +msgid "Newspaper" +msgstr "" + +#: vbv_lernwelt/feedback/models.py:34 +msgid "Personal recommendation" +msgstr "" + +#: vbv_lernwelt/feedback/models.py:35 +msgid "Public event" +msgstr "" + +#: vbv_lernwelt/feedback/models.py:36 +msgid "Other" +msgstr "" + +#: vbv_lernwelt/media_files/models.py:27 vbv_lernwelt/media_files/models.py:54 +#: vbv_lernwelt/media_files/models.py:64 vbv_lernwelt/media_files/models.py:83 +msgid "file" +msgstr "" + +#: vbv_lernwelt/notify/models.py:9 +msgid "User Interaction" +msgstr "" + +#: vbv_lernwelt/notify/models.py:10 +msgid "Progress" +msgstr "" + +#: vbv_lernwelt/notify/models.py:11 +msgid "Information" +msgstr "" + +#: vbv_lernwelt/notify/models.py:16 +msgid "Attendance Course Reminder" +msgstr "" + +#: vbv_lernwelt/notify/models.py:18 +msgid "Assignment Reminder" +msgstr "" + +#: vbv_lernwelt/notify/models.py:21 +msgid "Casework Expert Evaluation Reminder" +msgstr "" + +#: vbv_lernwelt/notify/models.py:23 +msgid "Casework Submitted" +msgstr "" + +#: vbv_lernwelt/notify/models.py:24 +msgid "Casework Evaluated" +msgstr "" + +#: vbv_lernwelt/notify/models.py:25 +msgid "New Feedback" +msgstr "" + +#: vbv_lernwelt/notify/models.py:28 +msgid "Self Evaluation Feedback Requested" +msgstr "" + +#: vbv_lernwelt/notify/models.py:31 +msgid "Self Evaluation Feedback Provided" +msgstr "" + +#: vbv_lernwelt/templates/wagtailadmin/pages/listing/_page_title_explore.html:8 +msgid "Sites menu" +msgstr "" + +#: vbv_lernwelt/templates/wagtailadmin/pages/listing/_page_title_explore.html:14 +msgid "Edit this page" +msgstr "" diff --git a/server/vbv_lernwelt/assignment/export.py b/server/vbv_lernwelt/assignment/export.py index 39ff9247..8761dabe 100644 --- a/server/vbv_lernwelt/assignment/export.py +++ b/server/vbv_lernwelt/assignment/export.py @@ -2,6 +2,7 @@ from dataclasses import dataclass from io import BytesIO import structlog +from django.utils.translation import gettext as _ from openpyxl import Workbook from vbv_lernwelt.assignment.models import ( @@ -138,13 +139,13 @@ def _create_sheet( sheet.cell( row=1, column=col_idx, - value=f"{col_prefix} bestanden", + value=f"{col_prefix} {_('bestanden')}", ) sheet.cell( row=1, column=col_idx + 1, - value=f"{col_prefix} Resultat %", + value=f"{col_prefix} {_('Resultat')} %", ) ordered_assignement_ids.append(cse.assignment.id) @@ -177,7 +178,9 @@ def _add_rows( if user_ac: status_text = ( - "Bestanden" if user_ac.evaluation_passed else "Nicht bestanden" + _("Bestanden") + if user_ac.evaluation_passed + else _("Nicht bestanden") ) sheet.cell(row=row_idx, column=col_idx, value=status_text) try: @@ -191,11 +194,11 @@ def _add_rows( ), ) except (ZeroDivisionError, TypeError): - sheet.cell(row=row_idx, column=col_idx + 1, value="Keine Daten") + sheet.cell(row=row_idx, column=col_idx + 1, value=_("Keine Daten")) else: - sheet.cell(row=row_idx, column=col_idx, value="Keine Daten") - sheet.cell(row=row_idx, column=col_idx + 1, value="Keine Daten") + sheet.cell(row=row_idx, column=col_idx, value=_("Keine Daten")) + sheet.cell(row=row_idx, column=col_idx + 1, value=_("Keine Daten")) col_idx += 2 diff --git a/server/vbv_lernwelt/course_session/services/export_attendance.py b/server/vbv_lernwelt/course_session/services/export_attendance.py index 92ec69f2..0fde37bb 100644 --- a/server/vbv_lernwelt/course_session/services/export_attendance.py +++ b/server/vbv_lernwelt/course_session/services/export_attendance.py @@ -4,6 +4,7 @@ from io import BytesIO from itertools import groupby import structlog +from django.utils.translation import gettext as _ from openpyxl import Workbook from vbv_lernwelt.course.models import CourseSessionUser @@ -88,7 +89,7 @@ def _create_sheet( sheet.cell( row=1, column=col_idx, - value=f"Anwesenheit {circle.title} {course.due_date.start.strftime('%d.%m.%Y')}", + value=f"{_('Anwesenheit')} {circle.title} {course.due_date.start.strftime('%d.%m.%Y')}", ) user_dict_map = {d["user_id"]: d for d in course.attendance_user_list} attendance_data[circle.title] = user_dict_map @@ -107,17 +108,17 @@ def _add_rows(sheet, users: list[CourseSessionUser], attendance_data): for key, user_dict_map in attendance_data.items(): user_dict = user_dict_map.get(str(user.user.id), {}) status = user_dict.get("status", "") if user_dict else "" - status_text = "Anwesend" if status == "PRESENT" else "Nicht anwesend" + status_text = _("Anwesend") if status == "PRESENT" else _("Nicht anwesend") sheet.cell(row=row_idx, column=col_idx, value=status_text) col_idx += 1 def add_user_headers(sheet): # todo: translate headers - sheet.cell(row=1, column=1, value="Vorname") - sheet.cell(row=1, column=2, value="Nachname") - sheet.cell(row=1, column=3, value="Email") - sheet.cell(row=1, column=4, value="Lehrvertragsnummer") + sheet.cell(row=1, column=1, value=_("Vorname")) + sheet.cell(row=1, column=2, value=_("Nachname")) + sheet.cell(row=1, column=3, value=_("Email")) + sheet.cell(row=1, column=4, value=_("Lehrvertragsnummer")) return 5 # return the next column index @@ -129,7 +130,7 @@ def add_user_export_data(sheet, user: CourseSessionUser, row_idx: int) -> int: sheet.cell( row=row_idx, column=4, - value=user.user.additional_json_data.get("Lehrvertragsnummer", ""), + value=user.user.additional_json_data.get(_("Lehrvertragsnummer"), ""), ) return 5 # return the next column index diff --git a/server/vbv_lernwelt/dashboard/tests/test_views.py b/server/vbv_lernwelt/dashboard/tests/test_views.py index 2e4b76fe..a556b809 100644 --- a/server/vbv_lernwelt/dashboard/tests/test_views.py +++ b/server/vbv_lernwelt/dashboard/tests/test_views.py @@ -461,7 +461,9 @@ class ExportXlsTestCase(TestCase): supervisor, self.ALLOWED_ROLES, requested_cs_ids ) - self.assertCountEqual([int(cs) for cs in requested_cs_ids], [csr.id for csr in allowed_csrs_ids]) + self.assertCountEqual( + [int(cs) for cs in requested_cs_ids], [csr.id for csr in allowed_csrs_ids] + ) def test_student_cannot_export_data(self): # student cannot export any data diff --git a/server/vbv_lernwelt/feedback/export.py b/server/vbv_lernwelt/feedback/export.py index bf81bbd7..0086d910 100644 --- a/server/vbv_lernwelt/feedback/export.py +++ b/server/vbv_lernwelt/feedback/export.py @@ -5,6 +5,7 @@ from typing import List, Tuple import structlog from django.db.models import QuerySet +from django.utils.translation import gettext as _ from openpyxl import Workbook from vbv_lernwelt.course_session.services.export_attendance import ( @@ -29,31 +30,35 @@ VV_FEEDBACK_QUESTIONS = [ ] UK_FEEDBACK_QUESTIONS = [ - ("satisfaction", "Zufriedenheit insgesamt"), - ("goal_attainment", "Zielerreichung insgesamt"), + ("satisfaction", _("Zufriedenheit insgesamt")), + ("goal_attainment", _("Zielerreichung insgesamt")), ( "proficiency", - "Wie beurteilst du deine Sicherheit bezüglichen den Themen nach dem Kurs?", + _("Wie beurteilst du deine Sicherheit bezüglichen den Themen nach dem Kurs?"), ), ( "preparation_task_clarity", - "Waren die Vorbereitungsaufträge klar und verständlich?", + _("Waren die Vorbereitungsaufträge klar und verständlich?"), ), ( "instructor_competence", - "Wie beurteilst du die Themensicherheit und Fachkompetenz des Kursleiters/der Kursleiterin?", + _( + "Wie beurteilst du die Themensicherheit und Fachkompetenz des Kursleiters/der Kursleiterin?" + ), ), ( "instructor_respect", - "Wurden Fragen und Anregungen der Kursteilnehmenden ernst genommen und aufgegriffen?", + _( + "Wurden Fragen und Anregungen der Kursteilnehmenden ernst genommen und aufgegriffen?" + ), ), ( "instructor_open_feedback", - "Was möchtest du dem Kursleiter/der Kursleiterin sonst noch sagen?", + _("Was möchtest du dem Kursleiter/der Kursleiterin sonst noch sagen?"), ), - ("would_recommend", "Würdest du den Kurs weiterempfehlen?"), - ("course_positive_feedback", "Was hat dir besonders gut gefallen?"), - ("course_negative_feedback", "Wo siehst du Verbesserungspotential?"), + ("would_recommend", _("Würdest du den Kurs weiterempfehlen?")), + ("course_positive_feedback", _("Was hat dir besonders gut gefallen?")), + ("course_negative_feedback", _("Wo siehst du Verbesserungspotential?")), ] @@ -140,8 +145,8 @@ def _create_sheet(wb: Workbook, title: str, data: list[FeedbackResponse]): ) # add header - sheet.cell(row=1, column=1, value="Durchführung") - sheet.cell(row=1, column=2, value="Datum") + sheet.cell(row=1, column=1, value=_("Durchführung")) + sheet.cell(row=1, column=2, value=_("Datum")) questions = [q[1] for q in question_data] for col_idx, title in enumerate(questions, start=3): sheet.cell(row=1, column=col_idx, value=title) diff --git a/server/vbv_lernwelt/feedback/graphql/queries.py b/server/vbv_lernwelt/feedback/graphql/queries.py new file mode 100644 index 00000000..78913462 --- /dev/null +++ b/server/vbv_lernwelt/feedback/graphql/queries.py @@ -0,0 +1,38 @@ +import itertools + +import graphene +from graphene import ObjectType + +from vbv_lernwelt.feedback.models import FeedbackResponse + + +class FeedbackSummary(ObjectType): + circle_id = graphene.Int() + count = graphene.Int() + + +class FeedbackForCourseQuery(object): + course_feedback_summary = graphene.List( + FeedbackSummary, course_id=graphene.Int(required=True) + ) + + def resolve_course_feedback_summary(self, info, **kwargs): + course_id = kwargs.get("course_id") + user = info.context.user + + feedbacks = FeedbackResponse.objects.filter( + course_session__course_id=course_id, circle__expert__user=user + ).order_by("circle_id") + summary = [] + + grouped_feedbacks = itertools.groupby(feedbacks, lambda x: x.circle_id) + + for key, feedbacks in grouped_feedbacks: + summary.append( + { + "circle_id": key, + "count": len(list(feedbacks)), + } + ) + + return summary