From 0f3eb35c83cb9b75468e4fa9937c6ddc3796605a Mon Sep 17 00:00:00 2001 From: lebaudantoine Date: Wed, 11 Mar 2026 18:48:28 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=A9=B9(backend)=20add=20Django=20admin=20?= =?UTF-8?q?action=20to=20update=20recording=20status=20manually?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Making the status read-only improved security and enforced least privilege, but in production some recordings could not be properly stopped, leaving them in an active state. Introduce an admin action to allow support staff to mark recordings as "failed to stop" or update their status when necessary. --- src/backend/core/admin.py | 34 ++- .../locale/de_DE/LC_MESSAGES/django.mo | Bin 11024 -> 11302 bytes .../locale/de_DE/LC_MESSAGES/django.po | 207 +++++++++-------- .../locale/en_US/LC_MESSAGES/django.mo | Bin 10017 -> 10291 bytes .../locale/en_US/LC_MESSAGES/django.po | 207 +++++++++-------- .../locale/fr_FR/LC_MESSAGES/django.mo | Bin 11277 -> 11574 bytes .../locale/fr_FR/LC_MESSAGES/django.po | 214 ++++++++++-------- .../locale/nl_NL/LC_MESSAGES/django.mo | Bin 10514 -> 10780 bytes .../locale/nl_NL/LC_MESSAGES/django.po | 207 +++++++++-------- 9 files changed, 482 insertions(+), 387 deletions(-) diff --git a/src/backend/core/admin.py b/src/backend/core/admin.py index 082b621e..4c5af379 100644 --- a/src/backend/core/admin.py +++ b/src/backend/core/admin.py @@ -197,6 +197,38 @@ def resend_notification(modeladmin, request, queryset): # pylint: disable=unuse ) +@admin.action(description=_("Mark selected recordings as 'Failed to Stop'")) +def mark_as_failed_to_stop(modeladmin, request, queryset): + """Force selected recordings status to failed_to_stop.""" + + eligible_statuses = [ + models.RecordingStatusChoices.ACTIVE, + models.RecordingStatusChoices.INITIATED, + models.RecordingStatusChoices.STOPPED, + ] + + eligible = queryset.filter(status__in=eligible_statuses) + skipped = queryset.exclude(status__in=eligible_statuses).count() + + updated = eligible.update(status=models.RecordingStatusChoices.FAILED_TO_STOP) + + if updated > 0: + modeladmin.message_user( + request, + _("%(count)s recording(s) successfully marked as 'Failed to Stop'.") + % {"count": updated}, + level=messages.SUCCESS, + ) + + if skipped > 0: + modeladmin.message_user( + request, + _("Skipped %(count)s recording(s) with an ineligible status.") + % {"count": skipped}, + level=messages.WARNING, + ) + + @admin.register(models.Recording) class RecordingAdmin(admin.ModelAdmin): """Recording admin interface declaration.""" @@ -224,7 +256,7 @@ class RecordingAdmin(admin.ModelAdmin): "updated_at", "worker_id", ) - actions = [resend_notification] + actions = [resend_notification, mark_as_failed_to_stop] def get_queryset(self, request): """Optimize queries by prefetching related access and user data to avoid N+1 queries.""" diff --git a/src/backend/locale/de_DE/LC_MESSAGES/django.mo b/src/backend/locale/de_DE/LC_MESSAGES/django.mo index cd59071495a77454351259d58be72252aceeed08..d34807ce48c47852b4bd506b82b90b19d203bbf7 100644 GIT binary patch delta 3042 zcma*pe@sBF|&Yn^=^{2jv^DF*bgS%~&^rd+-QO#SgIqf5U2Aon*`~ zJcJ2&3`gP#p3CMTGhvTpU$72&} z=0PmPUett+pjLVuEATYx_kW=JP2iw)or39@gPQQHG3>u)R7ry-vItqUX~es6t=s-0 zYA5!f20nmV*;&+pAEPGb;b4n#6ly1{a60y3F1~>|cn;Oi?`iD6Dj7^G6X&6B^rLp- zS**dAQAv0ar{VxA2~*gA4KN4iV;HqlZ=)viIqE2H;41X7o!XIYI1hKlsA!AN^PwO9 zh+63oE?AWDqE?oL8qkNOxD0jQbEpn?;$Ym5jAag@58px^(G}FnzeDvm>@H_Pu~aHU zXvjt#K`!bBAL@+C-1gZxZV=BnZl=9?f-zlq0jJ@D4CgWH#a^yYU_IvYQc?1CqWbSc z9eE6yc+BjiqBGx*N|NKKtv`eM;U}o%x`=v8uA%Nv=e%@(0cxvfq3&x(t-KetLr2~A z<55Li8{-%%vQOPjr!dT)WGwR z%`uIrrz3gX~m2Yx`UEF;f3ntW{JdM2u$7f=&8gyf-lJ&*m@O3u>Y!3(JDy@Z;`ukQ7qr~#7m zot4y}zF&-`*o0c~Hk^k$Py?OAS$G9?WN8J?`(i25rP*D;{wt|Y(VzjY;XOExmx5Nf z1dB0@B(ynFA@rhADy%i}a?%Qq6s2u)5!t7W(2&vqSZSEm!3i6;pi*9=0tyPQy| z)bp=INFpM{LPEQtY;Pb`JPz^yWHeG&=IY;oX1D!*e1r(O*VK&a?g{w>{9 zEMgJk$1`{YhKX82C5Iq2;)N5qRXW|8l9Ho0yp7Eh#5&^kvh=o##csVG+uV8!t|Byk zyyyj^3uSjUv6@g(@@ya;BOWEP2$d~_-Weka6=iu7F^PDPP;#kw3FTEXp?uQgSxvMO z85**L%6)`NzJqxP%ZX{kTB4l@5FJD=QAPxbHAEMoGT*`Ux!R~iR?#D^_sXqe)wfxF z;T|i{|Eafo(B3s;#`>&CPiw0kiL~_ugMC(~zk9vC&hkgB!iD~hAk}EtYKn%t3XA(I zlBzvZ_}+@xLAy1|cinbtxO-hks6Fyuzv$nXk~L!QuDqN=e=uSVY&p2l4g~FPYpvbU z8Sk^p4h?KM5FfL{?v57s@5@*}w5qlz(r)*Da4Zmv+E#5(TgV^iv_sba>cbB8-?T=1 F{{b*lHtjBO%hgrA* z^Kn0FU}rEMFW{qi6?bXcOJdEYaN{%NW#8~N4@WQ$Zz4&tOde7PIj9cvU5l`Q>oRP@ zF63oD@D_=`Abr^=l0+MG4Q2YdN_#AoA}mHV+>JbAFQ8VTAJxzx&cLIn0iD8q_%&)^ zRnwfAu0o}}9@TNHYbWZtUQ~O1=+}(*Q{iO+-V*R5yc@qmjreEGz){qI;#f!xa2EP7 z8~MmKq8jdYulsO1*N0F8K7kt0C#Zp(jwAmJ-p+9&6EC|TjH5CU#!gYkQK&V{M|J2! z4QwYaz`dvpeu@k6FHFTG7CZ$jQ0=t4zJas3J{eE`_25t3P$tH(6g>=^eP$~#2kTLr zuMgG1$5@HKqB51ix@aJ!I3GJvn=F9J$W5%k5Ynp*FXv6)YxYyoOuLXlTQ6#62T&ab zFb~h8p1Xx=P~V;eUZib{!Fw?cwM45?GjBk(*MpkSOBjj=QA^+-a32Vu*62O=gAXtv zgj0cgxPNh`*;cH&$Lv1*0`qYccjBB`&ZZkcHGBlM*6*VRd=jGM7f@IupzfsX{ zy^h*c>!7{F|;Sx+`p_P$lR7Tpd6JN!E z&i^ecEV~Wxt0PZf0S;pc-ayT0QIfL>eW+AcxYuj2n(Ib<5s#wwQs!J|=7p%GEkjMH z9yQ^1Eca8{PDKrTjvA>YJ70)IePK4L!v)Bs%!fJ+jd&2(qZ<4Nwbr*$1Mo6kR>x){ z`_u|hnW{#$SBrj5nzc|-N86CW+g_v%JA!KH9BR#fM6G2wM@CCB1#2-G)y@vo0A5D6 zjU7PE{5WcFoknfev#5bwNhSZfag7`5U<@^rtTg9=#hAzSGSrN>UXM%<4QyFwWIE>1`SE!MnM|CuY z5m=Drq|}F#xUNC1aUEu32YPT28I!$(lkoy-$u40i{*LO`|0fk4r@v7Tj=OqjErjdG z2_2*7h_!^Wqb1luD3zKGN#w88`S*i6%3`k6u?DxDP!{$O$`+?gU%j*FY?cyT#KVL( zpo(Uz87ckC2@O_zLuEIijixo$GCo46D06J7U`DrLC86wS!Yhbi|6#$3^PgWsUF$iY zsCVx_gpUzgPnB8+E5=QPmPJJ;V4`fLl0-b{-tb}vQQ}_fbY-fp`IGVg%hPTx2U+sq zG3v$*?)?esCMsC%)~oPIx88z{Ze3_o_7W=ze$Rq`PGEk1*6ms1DPkR=U8(Xsp%W0T z3yO|u8!?wyO>i)RC6agjcEk|cP-Vn2qLt9b)aiPFP~mh2%NpKwY;!gC^;Fu49%3Vr zLM$XU6V1dHLZ#dx_-CW)6GW(cFCV85UH0w^845%fhYfkAB}NT(ByJ8LnvpWq`yb8x B@Ad!y diff --git a/src/backend/locale/de_DE/LC_MESSAGES/django.po b/src/backend/locale/de_DE/LC_MESSAGES/django.po index c0843894..7f4141d8 100644 --- a/src/backend/locale/de_DE/LC_MESSAGES/django.po +++ b/src/backend/locale/de_DE/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-26 17:34+0000\n" +"POT-Creation-Date: 2026-03-11 17:31+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -29,11 +29,11 @@ msgstr "Berechtigungen" msgid "Important dates" msgstr "Wichtige Daten" -#: core/admin.py:132 core/admin.py:243 +#: core/admin.py:132 core/admin.py:275 msgid "No owner" msgstr "Kein Eigentümer" -#: core/admin.py:135 core/admin.py:246 +#: core/admin.py:135 core/admin.py:278 msgid "Multiple owners" msgstr "Mehrere Eigentümer" @@ -61,117 +61,132 @@ msgstr "Benachrichtigungen für %(count)s Aufnahme(n) erfolgreich gesendet." msgid "Skipped %(count)s expired recording(s)." msgstr "%(count)s abgelaufene Aufnahme(n) übersprungen." -#: core/admin.py:309 +#: core/admin.py:200 +msgid "Mark selected recordings as 'Failed to Stop'" +msgstr "Ausgewählte Aufnahmen als ‚Fehler beim Stoppen‘ markieren" + +#: core/admin.py:218 +#, python-format +msgid "%(count)s recording(s) successfully marked as 'Failed to Stop'." +msgstr "%(count)s Aufnahme(n) erfolgreich als ‚Fehler beim Stoppen‘ markiert." + +#: core/admin.py:226 +#, fuzzy, python-format +#| msgid "Skipped %(count)s expired recording(s)." +msgid "Skipped %(count)s recording(s) with an ineligible status." +msgstr "%(count)s abgelaufene Aufnahme(n) übersprungen." + +#: core/admin.py:341 msgid "No scopes" msgstr "Keine Scopes" -#: core/admin.py:311 +#: core/admin.py:343 msgid "Scopes" msgstr "Scopes" -#: core/api/filters.py:24 +#: core/api/filters.py:25 msgid "Creator is me" msgstr "Ersteller bin ich" -#: core/api/serializers.py:84 +#: core/api/serializers.py:88 msgid "You must be administrator or owner of a room to add accesses to it." msgstr "" "Sie müssen Administrator oder Eigentümer eines Raums sein, um Zugriffe " "hinzuzufügen." -#: core/api/serializers.py:443 +#: core/api/serializers.py:516 msgid "This file extension is not allowed." msgstr "Diese Dateiendung ist nicht erlaubt." -#: core/models.py:35 +#: core/models.py:37 msgid "Member" msgstr "Mitglied" -#: core/models.py:36 +#: core/models.py:38 msgid "Administrator" msgstr "Administrator" -#: core/models.py:37 +#: core/models.py:39 msgid "Owner" msgstr "Eigentümer" -#: core/models.py:53 +#: core/models.py:55 msgid "Initiated" msgstr "Gestartet" -#: core/models.py:54 +#: core/models.py:56 msgid "Active" msgstr "Aktiv" -#: core/models.py:55 +#: core/models.py:57 msgid "Stopped" msgstr "Beendet" -#: core/models.py:56 +#: core/models.py:58 msgid "Saved" msgstr "Gespeichert" -#: core/models.py:57 +#: core/models.py:59 msgid "Aborted" msgstr "Abgebrochen" -#: core/models.py:58 +#: core/models.py:60 msgid "Failed to Start" msgstr "Start fehlgeschlagen" -#: core/models.py:59 +#: core/models.py:61 msgid "Failed to Stop" msgstr "Stopp fehlgeschlagen" -#: core/models.py:60 +#: core/models.py:62 msgid "Notification succeeded" msgstr "Benachrichtigung erfolgreich" -#: core/models.py:87 +#: core/models.py:89 msgid "SCREEN_RECORDING" msgstr "BILDSCHIRMAUFZEICHNUNG" -#: core/models.py:88 +#: core/models.py:90 msgid "TRANSCRIPT" msgstr "TRANSKRIPT" -#: core/models.py:94 +#: core/models.py:96 msgid "Public Access" msgstr "Öffentlicher Zugriff" -#: core/models.py:95 +#: core/models.py:97 msgid "Trusted Access" msgstr "Vertrauenswürdiger Zugriff" -#: core/models.py:96 +#: core/models.py:98 msgid "Restricted Access" msgstr "Eingeschränkter Zugriff" -#: core/models.py:108 +#: core/models.py:110 msgid "id" msgstr "ID" -#: core/models.py:109 +#: core/models.py:111 msgid "primary key for the record as UUID" msgstr "Primärschlüssel des Eintrags als UUID" -#: core/models.py:115 +#: core/models.py:117 msgid "created on" msgstr "erstellt am" -#: core/models.py:116 +#: core/models.py:118 msgid "date and time at which a record was created" msgstr "Datum und Uhrzeit der Erstellung eines Eintrags" -#: core/models.py:121 +#: core/models.py:123 msgid "updated on" msgstr "aktualisiert am" -#: core/models.py:122 +#: core/models.py:124 msgid "date and time at which a record was last updated" msgstr "Datum und Uhrzeit der letzten Aktualisierung eines Eintrags" -#: core/models.py:142 +#: core/models.py:144 msgid "" "Enter a valid sub. This value may contain only letters, numbers, and @/./+/-/" "_ characters." @@ -179,11 +194,11 @@ msgstr "" "Geben Sie einen gültigen Sub ein. Dieser Wert darf nur Buchstaben, Zahlen " "und die Zeichen @/./+/-/_ enthalten." -#: core/models.py:148 +#: core/models.py:150 msgid "sub" msgstr "Sub" -#: core/models.py:150 +#: core/models.py:152 msgid "" "Optional for pending users; required upon account activation. 255 characters " "or fewer. Letters, numbers, and @/./+/-/_ characters only." @@ -191,55 +206,55 @@ msgstr "" "Optional für ausstehende Benutzer; erforderlich nach Kontoaktivierung. " "Maximal 255 Zeichen. Nur Buchstaben, Zahlen und @/./+/-/_ Zeichen erlaubt." -#: core/models.py:159 +#: core/models.py:161 msgid "identity email address" msgstr "Identitäts-E-Mail-Adresse" -#: core/models.py:164 +#: core/models.py:166 msgid "admin email address" msgstr "Administrator-E-Mail-Adresse" -#: core/models.py:166 +#: core/models.py:168 msgid "full name" msgstr "Vollständiger Name" -#: core/models.py:168 +#: core/models.py:170 msgid "short name" msgstr "Kurzname" -#: core/models.py:174 +#: core/models.py:176 msgid "language" msgstr "Sprache" -#: core/models.py:175 +#: core/models.py:177 msgid "The language in which the user wants to see the interface." msgstr "Die Sprache, in der der Benutzer die Oberfläche sehen möchte." -#: core/models.py:181 +#: core/models.py:183 msgid "The timezone in which the user wants to see times." msgstr "Die Zeitzone, in der der Benutzer die Zeiten sehen möchte." -#: core/models.py:184 +#: core/models.py:186 msgid "device" msgstr "Gerät" -#: core/models.py:186 +#: core/models.py:188 msgid "Whether the user is a device or a real user." msgstr "Ob es sich um ein Gerät oder einen echten Benutzer handelt." -#: core/models.py:189 +#: core/models.py:191 msgid "staff status" msgstr "Mitarbeiterstatus" -#: core/models.py:191 +#: core/models.py:193 msgid "Whether the user can log into this admin site." msgstr "Ob der Benutzer sich bei dieser Admin-Seite anmelden kann." -#: core/models.py:194 +#: core/models.py:196 msgid "active" msgstr "aktiv" -#: core/models.py:197 +#: core/models.py:199 msgid "" "Whether this user should be treated as active. Unselect this instead of " "deleting accounts." @@ -247,66 +262,66 @@ msgstr "" "Ob dieser Benutzer als aktiv behandelt werden soll. Deaktivieren Sie dies " "anstelle des Löschens des Kontos." -#: core/models.py:210 +#: core/models.py:212 msgid "user" msgstr "Benutzer" -#: core/models.py:211 +#: core/models.py:213 msgid "users" msgstr "Benutzer" -#: core/models.py:270 +#: core/models.py:272 msgid "Resource" msgstr "Ressource" -#: core/models.py:271 +#: core/models.py:273 msgid "Resources" msgstr "Ressourcen" -#: core/models.py:329 +#: core/models.py:331 msgid "Resource access" msgstr "Ressourcenzugriff" -#: core/models.py:330 +#: core/models.py:332 msgid "Resource accesses" msgstr "Ressourcenzugriffe" -#: core/models.py:336 +#: core/models.py:338 msgid "Resource access with this User and Resource already exists." msgstr "" "Ein Ressourcenzugriff mit diesem Benutzer und dieser Ressource existiert " "bereits." -#: core/models.py:392 +#: core/models.py:394 msgid "Visio room configuration" msgstr "Visio-Raumkonfiguration" -#: core/models.py:393 +#: core/models.py:395 msgid "Values for Visio parameters to configure the room." msgstr "Werte für Visio-Parameter zur Konfiguration des Raums." -#: core/models.py:400 +#: core/models.py:402 msgid "Room PIN code" msgstr "PIN-Code für den Raum" -#: core/models.py:401 +#: core/models.py:403 msgid "Unique n-digit code that identifies this room in telephony mode." msgstr "" "Eindeutiger n-stelliger Code, der diesen Raum im Telephonmodus identifiziert." -#: core/models.py:407 core/models.py:561 +#: core/models.py:409 core/models.py:563 msgid "Room" msgstr "Raum" -#: core/models.py:408 +#: core/models.py:410 msgid "Rooms" msgstr "Räume" -#: core/models.py:572 +#: core/models.py:574 msgid "Worker ID" msgstr "Worker-ID" -#: core/models.py:574 +#: core/models.py:576 msgid "" "Enter an identifier for the worker recording.This ID is retained even when " "the worker stops, allowing for easy tracking." @@ -315,120 +330,120 @@ msgstr "" "erhalten, auch wenn der Worker stoppt, was ein einfaches Nachverfolgen " "ermöglicht." -#: core/models.py:582 +#: core/models.py:584 msgid "Recording mode" msgstr "Aufzeichnungsmodus" -#: core/models.py:583 +#: core/models.py:585 msgid "Defines the mode of recording being called." msgstr "Definiert den aufgerufenen Aufzeichnungsmodus." -#: core/models.py:588 core/models.py:589 +#: core/models.py:590 core/models.py:591 msgid "Recording options" msgstr "Aufnahmeoptionen" -#: core/models.py:595 +#: core/models.py:597 msgid "Recording" msgstr "Aufzeichnung" -#: core/models.py:596 +#: core/models.py:598 msgid "Recordings" msgstr "Aufzeichnungen" -#: core/models.py:704 +#: core/models.py:706 msgid "Recording/user relation" msgstr "Beziehung Aufzeichnung/Benutzer" -#: core/models.py:705 +#: core/models.py:707 msgid "Recording/user relations" msgstr "Beziehungen Aufzeichnung/Benutzer" -#: core/models.py:711 +#: core/models.py:713 msgid "This user is already in this recording." msgstr "Dieser Benutzer ist bereits Teil dieser Aufzeichnung." -#: core/models.py:717 +#: core/models.py:719 msgid "This team is already in this recording." msgstr "Dieses Team ist bereits Teil dieser Aufzeichnung." -#: core/models.py:723 +#: core/models.py:725 msgid "Either user or team must be set, not both." msgstr "Entweder Benutzer oder Team muss festgelegt werden, nicht beides." -#: core/models.py:740 +#: core/models.py:742 msgid "Create rooms" msgstr "Räume erstellen" -#: core/models.py:741 +#: core/models.py:743 msgid "List rooms" msgstr "Räume auflisten" -#: core/models.py:742 +#: core/models.py:744 msgid "Retrieve room details" msgstr "Raumdetails abrufen" -#: core/models.py:743 +#: core/models.py:745 msgid "Update rooms" msgstr "Räume aktualisieren" -#: core/models.py:744 +#: core/models.py:746 msgid "Delete rooms" msgstr "Räume löschen" -#: core/models.py:757 +#: core/models.py:759 msgid "Application name" msgstr "Anwendungsname" -#: core/models.py:758 +#: core/models.py:760 msgid "Descriptive name for this application." msgstr "Beschreibender Name für diese Anwendung." -#: core/models.py:768 +#: core/models.py:770 msgid "Hashed on Save. Copy it now if this is a new secret." msgstr "" "Beim Speichern gehasht. Jetzt kopieren, wenn dies ein neues Geheimnis ist." -#: core/models.py:779 +#: core/models.py:781 msgid "Application" msgstr "Anwendung" -#: core/models.py:780 +#: core/models.py:782 msgid "Applications" msgstr "Anwendungen" -#: core/models.py:803 +#: core/models.py:805 msgid "Enter a valid domain" msgstr "Geben Sie eine gültige Domain ein" -#: core/models.py:806 +#: core/models.py:808 msgid "Domain" msgstr "Domain" -#: core/models.py:807 +#: core/models.py:809 msgid "Email domain this application can act on behalf of." msgstr "E-Mail-Domain, im Namen der diese Anwendung handeln kann." -#: core/models.py:819 +#: core/models.py:821 msgid "Application domain" msgstr "Anwendungsdomain" -#: core/models.py:820 +#: core/models.py:822 msgid "Application domains" msgstr "Anwendungsdomains" -#: core/models.py:838 +#: core/models.py:840 msgid "Pending" msgstr "Ausstehend" -#: core/models.py:846 +#: core/models.py:848 msgid "Ready" msgstr "Bereit" -#: core/models.py:852 +#: core/models.py:854 msgid "Background image" msgstr "Hintergrundbild" -#: core/models.py:864 +#: core/models.py:866 msgid "title" msgstr "Titel" @@ -445,11 +460,11 @@ msgstr "Datei" msgid "Files" msgstr "Dateien" -#: core/models.py:970 +#: core/models.py:1000 msgid "This file is already hard deleted." msgstr "Diese Datei wurde bereits endgültig gelöscht." -#: core/models.py:980 +#: core/models.py:1010 #, fuzzy #| msgid "To hard delete a file, it must first be soft deleted." msgid "To hard delete a file, it must first be soft deleted." @@ -585,18 +600,18 @@ msgstr "" " Wenn Sie Fragen haben oder Unterstützung benötigen, wenden Sie sich bitte " "an unser Support-Team unter %(support_email)s. " -#: meet/settings.py:224 +#: meet/settings.py:215 msgid "English" msgstr "Englisch" -#: meet/settings.py:225 +#: meet/settings.py:216 msgid "French" msgstr "Französisch" -#: meet/settings.py:226 +#: meet/settings.py:217 msgid "Dutch" msgstr "Niederländisch" -#: meet/settings.py:227 +#: meet/settings.py:218 msgid "German" msgstr "Deutsch" diff --git a/src/backend/locale/en_US/LC_MESSAGES/django.mo b/src/backend/locale/en_US/LC_MESSAGES/django.mo index bd025f69af908ac48969a8f3359d257a9a099cf4..8dfce1b789140fc8123d52397a67729ab727c688 100644 GIT binary patch delta 2975 zcmciEe@vBC9LMp4ToDj~zyzTiH|6&aL4IVS1tdZSAxf!%R&co@h#=gHfs~J0*_zXT zh5qA(#E@R%oo6|T@4n-Q{!}oDDCQLUb6}vGHU&MC&49hS#${78$ z6T>ioGjI@j#JqrUIE?YeSmpqgST1~w{F$$v^Y8Ia&VNC@Ad*84CZe9J#B^MNYN#Kl zqJ`P`92VgrREI`!CSJxy42kA9v~Si@iQ&R&a9hXnis6ET{JQjaq*0}D|d zX+(9*i;K{Y`u%&T7aw)bNAPyee?)b39Mz#~sE&rklYa(bqF4!;=tkYBLS>*9)o=r9 z4hK;UK7;Dmr#KH!pfY$J3$d7qo{Md$-|uz|qMP%xSc2DQl7BszPdAl`1}w)G%)>WP zi|$+0i*I2i7Lb2ss1MbFy{M@>f?8Z-s7x#+ol9^zDzifz^t*$o0Uooc&}lP*8qs-F zgJW2Lvv^t$R-;~6hf{D3(uQfmEbK*1%|4ui`%&*Zj@m7!FcdGKGCbIFThj994W4q`ffglgzKYDAYX8!uxKCNRTx4#`}j~D*@NoXOSlN%LjC?C>cv-`^9f|5 zm{?Y#I+~8^P!6gi3z4}uWpl{C_I3nnZo8c`hGRfBHS;#-D#a4RacJ8%l_ zMy-Lpn1%aMQ}Ydy4D%i8eK%0MC5-fjVmwa81k`;ux^Q8pb0ZH!xbV0x5&>cr@erYr z^b&Uy?5@fG6`maGiHINC9^rB?;0mLd?0yffCI$&jOo^Vdx~P>CeS{XQ){u$@L_a6X zQjQwvd}4suN+?7363N8Fgo>7drcQ&~Ogv456IxFX5Gop&3X@`%>l>pf&@??lsMHdg zu8lgOOtUff;aWnOSJ4OSpVCc*jcS$=`NVXhlPDupSo4!>S@mokoYJ9hjEdHkrcCRg zpJ*mjHrSYzj^aV5UX5O-{ur)t>S8hR6j4L)39`RIIGgYjZA25{cG{2ThyH)^KasD%n`f2hLe*%@ID_*r zdafB&OTkoJg7;zx-ecxj9Th&-=HIX#m`%GM)xn#%5>F!^yTqjcub~FgL$MH#g=%6c zR-h)-i)lE3oAC`C#NRNP@onpTGd|YGB_Bty1kYj&UPTQsjv8>nc>~wdp2lY|Cs`eu z4Re`;N02e>B$70H&pC$0w7Nt;lP_>nqfK{lD>Tn@8q9)XduimdJvt z&E3cm`eWj#TjlW1Lsf!kD=D?N7R55sEK8=b5>(M zR$?oz!Q+^VU!#6M>738PFQL5-%di#o++kEE#?r`tEtT`!D8jp_&9;iyP{*6F4v(NR zbOkkmDO`n%SQl-odQ>J(<9hrEmD!u9-^J0;3ob?GW(BAhs#N|pU_F-Le$<0!Q5}AW zQ5Z)0vM+E2UPdj=A9x>X6m^)3Iwh--lWbL}4A;2t>rqS7axgV%lM>#9vYUW-s-B zpN|QQZ)H@}Q8j9f8&DJ4hAp@gHL)*IDZYRj@LT7&`+gGD&ot^y@1TxlY|!6~>BuTu zF>0a>=;^q$P|;=@M!nf6R^eNy4z8d&{>8PYkpp0NQ4>we@h6mln&>jrnirwYd9}OW zjmkhDYTSVw@~^c!#SIPkK5Aw^qmJ3{sMKY$#dRFpQ0Mn`R0khBe?V5pX0Qx1c}UMS zaZx4)uoe$t5q^W(YqxSezvJvY|C~3YQuH=z0-vJJ`2=cHCFT2>=)(21_aP_HK12QP z66y_apmzT>>V>qEHDD6zn3toT+vQPFYWHFk4x#qI2(G{rsHHiNyqsM`bvT7OCATpe z1EeDsV^QBHVGJ&G_p>lSTcw)lC)x>5vw4Ylo=|BbG++<$G%-x*7_B2RiGRxwl?I}Z zP$pD5iKmGB3Fb9h+Nfgtc6_QA6nUmGNq&{0#0mA3uF%fy3(mO({n)_D#Q zHH1nbQAa$k#(&Cl)aMa<-M!tY4IV{kBdhEnvi\n" "Language-Team: LANGUAGE \n" @@ -29,11 +29,11 @@ msgstr "Permissions" msgid "Important dates" msgstr "Important dates" -#: core/admin.py:132 core/admin.py:243 +#: core/admin.py:132 core/admin.py:275 msgid "No owner" msgstr "No owner" -#: core/admin.py:135 core/admin.py:246 +#: core/admin.py:135 core/admin.py:278 msgid "Multiple owners" msgstr "Multiple owners" @@ -61,115 +61,130 @@ msgstr "Successfully sent notifications for %(count)s recording(s)." msgid "Skipped %(count)s expired recording(s)." msgstr "Skipped %(count)s expired recording(s)." -#: core/admin.py:309 +#: core/admin.py:200 +msgid "Mark selected recordings as 'Failed to Stop'" +msgstr "Mark selected recordings as 'Failed to Stop'" + +#: core/admin.py:218 +#, python-format +msgid "%(count)s recording(s) successfully marked as 'Failed to Stop'." +msgstr "%(count)s recording(s) successfully marked as 'Failed to Stop'." + +#: core/admin.py:226 +#, fuzzy, python-format +#| msgid "Skipped %(count)s expired recording(s)." +msgid "Skipped %(count)s recording(s) with an ineligible status." +msgstr "Skipped %(count)s expired recording(s)." + +#: core/admin.py:341 msgid "No scopes" msgstr "No scopes" -#: core/admin.py:311 +#: core/admin.py:343 msgid "Scopes" msgstr "Scopes" -#: core/api/filters.py:24 +#: core/api/filters.py:25 msgid "Creator is me" msgstr "Creator is me" -#: core/api/serializers.py:84 +#: core/api/serializers.py:88 msgid "You must be administrator or owner of a room to add accesses to it." msgstr "You must be administrator or owner of a room to add accesses to it." -#: core/api/serializers.py:443 +#: core/api/serializers.py:516 msgid "This file extension is not allowed." msgstr "This file extension is not allowed." -#: core/models.py:35 +#: core/models.py:37 msgid "Member" msgstr "Member" -#: core/models.py:36 +#: core/models.py:38 msgid "Administrator" msgstr "Administrator" -#: core/models.py:37 +#: core/models.py:39 msgid "Owner" msgstr "Owner" -#: core/models.py:53 +#: core/models.py:55 msgid "Initiated" msgstr "Initiated" -#: core/models.py:54 +#: core/models.py:56 msgid "Active" msgstr "Active" -#: core/models.py:55 +#: core/models.py:57 msgid "Stopped" msgstr "Stopped" -#: core/models.py:56 +#: core/models.py:58 msgid "Saved" msgstr "Saved" -#: core/models.py:57 +#: core/models.py:59 msgid "Aborted" msgstr "Aborted" -#: core/models.py:58 +#: core/models.py:60 msgid "Failed to Start" msgstr "Failed to Start" -#: core/models.py:59 +#: core/models.py:61 msgid "Failed to Stop" msgstr "Failed to Stop" -#: core/models.py:60 +#: core/models.py:62 msgid "Notification succeeded" msgstr "Notification succeeded" -#: core/models.py:87 +#: core/models.py:89 msgid "SCREEN_RECORDING" msgstr "SCREEN_RECORDING" -#: core/models.py:88 +#: core/models.py:90 msgid "TRANSCRIPT" msgstr "TRANSCRIPT" -#: core/models.py:94 +#: core/models.py:96 msgid "Public Access" msgstr "Public Access" -#: core/models.py:95 +#: core/models.py:97 msgid "Trusted Access" msgstr "Trusted Access" -#: core/models.py:96 +#: core/models.py:98 msgid "Restricted Access" msgstr "Restricted Access" -#: core/models.py:108 +#: core/models.py:110 msgid "id" msgstr "id" -#: core/models.py:109 +#: core/models.py:111 msgid "primary key for the record as UUID" msgstr "primary key for the record as UUID" -#: core/models.py:115 +#: core/models.py:117 msgid "created on" msgstr "created on" -#: core/models.py:116 +#: core/models.py:118 msgid "date and time at which a record was created" msgstr "date and time at which a record was created" -#: core/models.py:121 +#: core/models.py:123 msgid "updated on" msgstr "updated on" -#: core/models.py:122 +#: core/models.py:124 msgid "date and time at which a record was last updated" msgstr "date and time at which a record was last updated" -#: core/models.py:142 +#: core/models.py:144 msgid "" "Enter a valid sub. This value may contain only letters, numbers, and @/./+/-/" "_ characters." @@ -177,11 +192,11 @@ msgstr "" "Enter a valid sub. This value may contain only letters, numbers, and @/./+/-/" "_ characters." -#: core/models.py:148 +#: core/models.py:150 msgid "sub" msgstr "sub" -#: core/models.py:150 +#: core/models.py:152 msgid "" "Optional for pending users; required upon account activation. 255 characters " "or fewer. Letters, numbers, and @/./+/-/_ characters only." @@ -189,55 +204,55 @@ msgstr "" "Required. 255 characters or fewer. Letters, numbers, and @/./+/-/_ " "characters only." -#: core/models.py:159 +#: core/models.py:161 msgid "identity email address" msgstr "identity email address" -#: core/models.py:164 +#: core/models.py:166 msgid "admin email address" msgstr "admin email address" -#: core/models.py:166 +#: core/models.py:168 msgid "full name" msgstr "full name" -#: core/models.py:168 +#: core/models.py:170 msgid "short name" msgstr "short name" -#: core/models.py:174 +#: core/models.py:176 msgid "language" msgstr "language" -#: core/models.py:175 +#: core/models.py:177 msgid "The language in which the user wants to see the interface." msgstr "The language in which the user wants to see the interface." -#: core/models.py:181 +#: core/models.py:183 msgid "The timezone in which the user wants to see times." msgstr "The timezone in which the user wants to see times." -#: core/models.py:184 +#: core/models.py:186 msgid "device" msgstr "device" -#: core/models.py:186 +#: core/models.py:188 msgid "Whether the user is a device or a real user." msgstr "Whether the user is a device or a real user." -#: core/models.py:189 +#: core/models.py:191 msgid "staff status" msgstr "staff status" -#: core/models.py:191 +#: core/models.py:193 msgid "Whether the user can log into this admin site." msgstr "Whether the user can log into this admin site." -#: core/models.py:194 +#: core/models.py:196 msgid "active" msgstr "active" -#: core/models.py:197 +#: core/models.py:199 msgid "" "Whether this user should be treated as active. Unselect this instead of " "deleting accounts." @@ -245,63 +260,63 @@ msgstr "" "Whether this user should be treated as active. Unselect this instead of " "deleting accounts." -#: core/models.py:210 +#: core/models.py:212 msgid "user" msgstr "user" -#: core/models.py:211 +#: core/models.py:213 msgid "users" msgstr "users" -#: core/models.py:270 +#: core/models.py:272 msgid "Resource" msgstr "Resource" -#: core/models.py:271 +#: core/models.py:273 msgid "Resources" msgstr "Resources" -#: core/models.py:329 +#: core/models.py:331 msgid "Resource access" msgstr "Resource access" -#: core/models.py:330 +#: core/models.py:332 msgid "Resource accesses" msgstr "Resource accesses" -#: core/models.py:336 +#: core/models.py:338 msgid "Resource access with this User and Resource already exists." msgstr "Resource access with this User and Resource already exists." -#: core/models.py:392 +#: core/models.py:394 msgid "Visio room configuration" msgstr "Visio room configuration" -#: core/models.py:393 +#: core/models.py:395 msgid "Values for Visio parameters to configure the room." msgstr "Values for Visio parameters to configure the room." -#: core/models.py:400 +#: core/models.py:402 msgid "Room PIN code" msgstr "Room PIN code" -#: core/models.py:401 +#: core/models.py:403 msgid "Unique n-digit code that identifies this room in telephony mode." msgstr "Unique n-digit code that identifies this room in telephony mode." -#: core/models.py:407 core/models.py:561 +#: core/models.py:409 core/models.py:563 msgid "Room" msgstr "Room" -#: core/models.py:408 +#: core/models.py:410 msgid "Rooms" msgstr "Rooms" -#: core/models.py:572 +#: core/models.py:574 msgid "Worker ID" msgstr "Worker ID" -#: core/models.py:574 +#: core/models.py:576 msgid "" "Enter an identifier for the worker recording.This ID is retained even when " "the worker stops, allowing for easy tracking." @@ -309,125 +324,125 @@ msgstr "" "Enter an identifier for the worker recording.This ID is retained even when " "the worker stops, allowing for easy tracking." -#: core/models.py:582 +#: core/models.py:584 msgid "Recording mode" msgstr "Recording mode" -#: core/models.py:583 +#: core/models.py:585 msgid "Defines the mode of recording being called." msgstr "Defines the mode of recording being called." -#: core/models.py:588 core/models.py:589 +#: core/models.py:590 core/models.py:591 msgid "Recording options" msgstr "Recording options" -#: core/models.py:595 +#: core/models.py:597 msgid "Recording" msgstr "Recording" -#: core/models.py:596 +#: core/models.py:598 msgid "Recordings" msgstr "Recordings" -#: core/models.py:704 +#: core/models.py:706 msgid "Recording/user relation" msgstr "Recording/user relation" -#: core/models.py:705 +#: core/models.py:707 msgid "Recording/user relations" msgstr "Recording/user relations" -#: core/models.py:711 +#: core/models.py:713 msgid "This user is already in this recording." msgstr "This user is already in this recording." -#: core/models.py:717 +#: core/models.py:719 msgid "This team is already in this recording." msgstr "This team is already in this recording." -#: core/models.py:723 +#: core/models.py:725 msgid "Either user or team must be set, not both." msgstr "Either user or team must be set, not both." -#: core/models.py:740 +#: core/models.py:742 #, fuzzy #| msgid "created on" msgid "Create rooms" msgstr "Create rooms" -#: core/models.py:741 +#: core/models.py:743 msgid "List rooms" msgstr "List rooms" -#: core/models.py:742 +#: core/models.py:744 msgid "Retrieve room details" msgstr "Retrieve room details" -#: core/models.py:743 +#: core/models.py:745 #, fuzzy #| msgid "updated on" msgid "Update rooms" msgstr "Update rooms" -#: core/models.py:744 +#: core/models.py:746 msgid "Delete rooms" msgstr "Delete rooms" -#: core/models.py:757 +#: core/models.py:759 msgid "Application name" msgstr "Application name" -#: core/models.py:758 +#: core/models.py:760 msgid "Descriptive name for this application." msgstr "Descriptive name for this application." -#: core/models.py:768 +#: core/models.py:770 msgid "Hashed on Save. Copy it now if this is a new secret." msgstr "Hashed on Save. Copy it now if this is a new secret." -#: core/models.py:779 +#: core/models.py:781 msgid "Application" msgstr "Application" -#: core/models.py:780 +#: core/models.py:782 msgid "Applications" msgstr "Applications" -#: core/models.py:803 +#: core/models.py:805 msgid "Enter a valid domain" msgstr "Enter a valid domain" -#: core/models.py:806 +#: core/models.py:808 msgid "Domain" msgstr "Domain" -#: core/models.py:807 +#: core/models.py:809 msgid "Email domain this application can act on behalf of." msgstr "Email domain this application can act on behalf of." -#: core/models.py:819 +#: core/models.py:821 msgid "Application domain" msgstr "Application domain" -#: core/models.py:820 +#: core/models.py:822 msgid "Application domains" msgstr "Application domains" -#: core/models.py:838 +#: core/models.py:840 #, fuzzy #| msgid "Recording" msgid "Pending" msgstr "Pending" -#: core/models.py:846 +#: core/models.py:848 msgid "Ready" msgstr "Ready" -#: core/models.py:852 +#: core/models.py:854 msgid "Background image" msgstr "Background image" -#: core/models.py:864 +#: core/models.py:866 msgid "title" msgstr "title" @@ -443,13 +458,13 @@ msgstr "File" msgid "Files" msgstr "Files" -#: core/models.py:970 +#: core/models.py:1000 #, fuzzy #| msgid "This user is already in this recording." msgid "This file is already hard deleted." msgstr "This file is already hard deleted." -#: core/models.py:980 +#: core/models.py:1010 msgid "To hard delete a file, it must first be soft deleted." msgstr "To hard delete a file, it must first be soft deleted." @@ -581,18 +596,18 @@ msgstr "" " If you have any questions or need assistance, please contact our support " "team at %(support_email)s. " -#: meet/settings.py:224 +#: meet/settings.py:215 msgid "English" msgstr "English" -#: meet/settings.py:225 +#: meet/settings.py:216 msgid "French" msgstr "French" -#: meet/settings.py:226 +#: meet/settings.py:217 msgid "Dutch" msgstr "Dutch" -#: meet/settings.py:227 +#: meet/settings.py:218 msgid "German" msgstr "German" diff --git a/src/backend/locale/fr_FR/LC_MESSAGES/django.mo b/src/backend/locale/fr_FR/LC_MESSAGES/django.mo index 4a56b499805f163dcd7dcee358c484f90971343f..1f1f6f063923394ee0148dd64a306a69f7404590 100644 GIT binary patch delta 3066 zcmajhX>1f_9LMnoSPGP@Tt$x3Y3V_slyW02ZI#keN=2v~Eg-hrDXna~?amfj4i|`t z6@y2L;W8WvMhYS%6(hkH$YM0UASRxes7TZpgP=sBCX)F5&5ph>BtF^yex8|~d5-_{ z%(Q#gyj30fdbsapL)k@)C(?YzoWbn=d{M5)8)M_QxEf0bat$8Esdxn&@eUT^x=Y+%%*Jb|4&sKz8XAmR zl_XSy8JLKj)?^85=Ux-gyvQG*GnnU6(&Gg&wq^Y8(z zM2$RvnYaZtprfdnp2R$S8+HG0sCMI6XdNfuC`?5Sc-{!|uMsWaga%TMOxi5RNm%Qh ze-4$2mrxxaK+WtDs>2UZ1M{)4IXD!R$pV~#9XJtRN8SIC=N}`x{)kiYE@~4_B>(DQ85ZMiRHoiX4dgm%DTk8AYRpGvWIry%;}I%+%=dih z#(SulCUU@}OcH8l(@`DfV=gwJt~-co@EG>SQ%IlY3})dK)DqpoRQw&)-q9cPR0qS%~Xagqgm^nZ}E-~V;bkrq4vn9 zsCK?WEzwU{gwuGr^waa-LWRMab`0V^>_T61tb+r{MmA?~9$rE<^e3u=0xOo{64X*G z^Ny?VagJ-T72ib-d?xAAeT#5dgi3`fxB-=_R@A22jum(o7vnwDnwPMU%2Wj^1NEpG zZbSB^=|o+31oz{s=ssoaY_(sGdLOL92+L_|spx|3s5RPyTB8?H4IV{xcpmwft9&WN zcTms$Xb!YFGf^3+MBTR@m!abwM^OW~hI-7uOC$ek@Gd9R@tE}3jFM3^n1yO659i== z)W|!%-}j+1br`kFuVM*)j+)SfjM)1j8;dw@z(v@NbZKs9kpJmaMrOwTNR*%+o2|GB zPoUO3fwz$!$1*I(^{C8sV*y5S7WU?5bubr8a0gDsD_Dqk@IjoxP7YxpLPcx$4X(zU z$o@0M27 z!5>gF`~~}}2zL;AQf3moR?I3wWr3c5 zZ3NB8A+%;nqju*KLd6%u{U>8Nbv+48-d!&J^a!zzXx0IxUkrD{>G@Z>Rg~R-iq_sD z%IV*IpDVRN;vqsMm0+*9g{A$sGQ7)bq5j>X zU95u&BAHlAsA%(SCY~hL6WW|AJBd-mU_xayQAwl_j}kmMZi(l67@<9+{j`uMB>V(# z-H7|2&teW#(qp)PIObE=j;$p&5)DKnq4$LzwE(e!XdzUJW0($48?}*Dw9^yan)hXu z)mt6GHmjlM!}w6It_>p+vn;30@3$SNzAX^wu$pQ@o9sHP#<4O>Y8nGn!$GSu9Bj$V z>B$>Z=$pdtmSYEOf0*Awwm%rEYi!==-0zN__Jp|uyFzK>=g?|vTeN$UlV#Oxw*79G z(UXql4>mQ~*5%Vy^jUuc=j(3lJXjM7MNfsT%NKKc-Wb=?w^X;@_y4rkGd|_l_`d<$ZcH8k delta 2792 zcmZYAe@vBC9LMp4fXKa9O1x%>h-9cGLTC@-AFL%4 z=PWb&EBT{ZqS0KFl|M=wTTN^84`WmNqp_@2TTyK-*ZcE4r?%D^-}^exbDw*De9t)# zr|bG_oa>1(M-0Uw<`TgeW8TBSG(ITje8x26dE9^t{lFuV-Ux%4zFXUrk$T)%pKf#ANeyE_*j5nVh;X}B*kR#kUGdhbr`W0U@q4y zu@*a!KXZkTc)W@9Wo{u!G=Es5nf?-`J%LIA7NHvMLY^@_s8tw1HS{{(g>Rt-bO!tI zENWooGrXBrqEcRs>bTL`j(Tn{s=fW_XvY0i_%nli%*GRVH(o-G_y#V-Tc`mgvXB~J zG8W<@4Fmz;bYI`8ty@5F35tb;Z#)0vyfFY z`Ka%!P)pN@TACJg)L;h{b$9@E8ir7*9YdY-A5oj}HfrXXJfz>{;u>6KuaBVya1wQ_ zN0C4CIUnlyXVip#LruURCjV+Ek>2jd4AjUQP!F`Bj@wRD>WA=QJb{|gBo<=y0&lI0 z@gc5zkgv=oybr&}2&SZar(`X*aowFx{TNlfTy+j3}4OmO4I7xiGKx`rE3Eqlsd5O;;5%4bE ze=^O~L&R!=1LGELE}ix1gf`SlVg=DiXk%s*Iw>kTk}8iAI(17l_NS<9CSD|3h*Uyn xek<`L@f@M@poiIQeHx=}J%Y1FuKN0-Mg{{#F(Yv^^86zQ=eEa=l&AjW`y1y%@C^U} diff --git a/src/backend/locale/fr_FR/LC_MESSAGES/django.po b/src/backend/locale/fr_FR/LC_MESSAGES/django.po index 3f2e38ee..b4ae5035 100644 --- a/src/backend/locale/fr_FR/LC_MESSAGES/django.po +++ b/src/backend/locale/fr_FR/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-26 17:26+0000\n" +"POT-Creation-Date: 2026-03-11 17:31+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: antoine.lebaud@mail.numerique.gouv.fr\n" "Language-Team: LANGUAGE \n" @@ -29,11 +29,11 @@ msgstr "Permissions" msgid "Important dates" msgstr "Dates importantes" -#: core/admin.py:132 core/admin.py:243 +#: core/admin.py:132 core/admin.py:275 msgid "No owner" msgstr "Pas de propriétaire" -#: core/admin.py:135 core/admin.py:246 +#: core/admin.py:135 core/admin.py:278 msgid "Multiple owners" msgstr "Plusieurs propriétaires" @@ -61,119 +61,134 @@ msgstr "Notifications envoyées avec succès pour %(count)s enregistrement(s)." msgid "Skipped %(count)s expired recording(s)." msgstr "%(count)s enregistrement(s) expiré(s) ignoré(s)." -#: core/admin.py:309 +#: core/admin.py:200 +msgid "Mark selected recordings as 'Failed to Stop'" +msgstr "Marquer les enregistrements sélectionnés comme « Échec d’arrêt »" + +#: core/admin.py:218 +#, python-format +msgid "%(count)s recording(s) successfully marked as 'Failed to Stop'." +msgstr "%(count)s enregistrement(s) marqué(s) avec succès comme « Échec d’arrêt »." + +#: core/admin.py:226 +#, fuzzy, python-format +#| msgid "Skipped %(count)s expired recording(s)." +msgid "Skipped %(count)s recording(s) with an ineligible status." +msgstr "%(count)s enregistrement(s) avec un statut inéligible ignoré(s)." + +#: core/admin.py:341 msgid "No scopes" msgstr "Aucun scopes" -#: core/admin.py:311 +#: core/admin.py:343 msgid "Scopes" msgstr "Scopes" -#: core/api/filters.py:24 +#: core/api/filters.py:25 msgid "Creator is me" msgstr "Je suis le créateur" -#: core/api/serializers.py:84 +#: core/api/serializers.py:88 msgid "You must be administrator or owner of a room to add accesses to it." msgstr "" "Vous devez être administrateur ou propriétaire d'une salle pour y ajouter " "des accès." -#: core/api/serializers.py:443 +#: core/api/serializers.py:516 msgid "This file extension is not allowed." msgstr "Cette extension n'est pas autorisée" -#: core/models.py:35 +#: core/models.py:37 msgid "Member" msgstr "Membre" -#: core/models.py:36 +#: core/models.py:38 msgid "Administrator" msgstr "Administrateur" -#: core/models.py:37 +#: core/models.py:39 msgid "Owner" msgstr "Propriétaire" -#: core/models.py:53 +#: core/models.py:55 msgid "Initiated" msgstr "Initié" -#: core/models.py:54 +#: core/models.py:56 msgid "Active" msgstr "Actif" -#: core/models.py:55 +#: core/models.py:57 msgid "Stopped" msgstr "Arrêté" -#: core/models.py:56 +#: core/models.py:58 msgid "Saved" msgstr "Enregistré" -#: core/models.py:57 +#: core/models.py:59 msgid "Aborted" msgstr "Abandonné" -#: core/models.py:58 +#: core/models.py:60 msgid "Failed to Start" msgstr "Échec au démarrage" -#: core/models.py:59 +#: core/models.py:61 msgid "Failed to Stop" msgstr "Échec à l'arrêt" -#: core/models.py:60 +#: core/models.py:62 msgid "Notification succeeded" msgstr "Notification réussie" -#: core/models.py:87 +#: core/models.py:89 msgid "SCREEN_RECORDING" msgstr "ENREGISTREMENT_ÉCRAN" -#: core/models.py:88 +#: core/models.py:90 msgid "TRANSCRIPT" msgstr "TRANSCRIPTION" -#: core/models.py:94 +#: core/models.py:96 msgid "Public Access" msgstr "Accès public" -#: core/models.py:95 +#: core/models.py:97 msgid "Trusted Access" msgstr "Accès de confiance" -#: core/models.py:96 +#: core/models.py:98 msgid "Restricted Access" msgstr "Accès restreint" -#: core/models.py:108 +#: core/models.py:110 msgid "id" msgstr "id" -#: core/models.py:109 +#: core/models.py:111 msgid "primary key for the record as UUID" msgstr "clé primaire pour l'enregistrement sous forme d'UUID" -#: core/models.py:115 +#: core/models.py:117 msgid "created on" msgstr "créé le" -#: core/models.py:116 +#: core/models.py:118 msgid "date and time at which a record was created" msgstr "date et heure auxquelles un enregistrement a été créé" -#: core/models.py:121 +#: core/models.py:123 msgid "updated on" msgstr "mis à jour le" -#: core/models.py:122 +#: core/models.py:124 msgid "date and time at which a record was last updated" msgstr "" "date et heure auxquelles un enregistrement a été mis à jour pour la dernière " "fois" -#: core/models.py:142 +#: core/models.py:144 msgid "" "Enter a valid sub. This value may contain only letters, numbers, and @/./+/-/" "_ characters." @@ -181,11 +196,11 @@ msgstr "" "Entrez un sub valide. Cette valeur ne peut contenir que des lettres, des " "chiffres et les caractères @/./+/-/_." -#: core/models.py:148 +#: core/models.py:150 msgid "sub" msgstr "sub" -#: core/models.py:150 +#: core/models.py:152 msgid "" "Optional for pending users; required upon account activation. 255 characters " "or fewer. Letters, numbers, and @/./+/-/_ characters only." @@ -193,55 +208,55 @@ msgstr "" "Optionnel pour les utilisateurs en attente ; requis lors de l'activation du " "compte. 255 caractères maximum. Lettres, chiffres et @/./+/-/_ uniquement." -#: core/models.py:159 +#: core/models.py:161 msgid "identity email address" msgstr "adresse e-mail d'identité" -#: core/models.py:164 +#: core/models.py:166 msgid "admin email address" msgstr "adresse e-mail d'administrateur" -#: core/models.py:166 +#: core/models.py:168 msgid "full name" msgstr "nom complet" -#: core/models.py:168 +#: core/models.py:170 msgid "short name" msgstr "nom court" -#: core/models.py:174 +#: core/models.py:176 msgid "language" msgstr "langue" -#: core/models.py:175 +#: core/models.py:177 msgid "The language in which the user wants to see the interface." msgstr "La langue dans laquelle l'utilisateur souhaite voir l'interface." -#: core/models.py:181 +#: core/models.py:183 msgid "The timezone in which the user wants to see times." msgstr "Le fuseau horaire dans lequel l'utilisateur souhaite voir les heures." -#: core/models.py:184 +#: core/models.py:186 msgid "device" msgstr "appareil" -#: core/models.py:186 +#: core/models.py:188 msgid "Whether the user is a device or a real user." msgstr "Si l'utilisateur est un appareil ou un utilisateur réel." -#: core/models.py:189 +#: core/models.py:191 msgid "staff status" msgstr "statut du personnel" -#: core/models.py:191 +#: core/models.py:193 msgid "Whether the user can log into this admin site." msgstr "Si l'utilisateur peut se connecter à ce site d'administration." -#: core/models.py:194 +#: core/models.py:196 msgid "active" msgstr "actif" -#: core/models.py:197 +#: core/models.py:199 msgid "" "Whether this user should be treated as active. Unselect this instead of " "deleting accounts." @@ -249,65 +264,65 @@ msgstr "" "Si cet utilisateur doit être traité comme actif. Désélectionnez cette option " "au lieu de supprimer des comptes." -#: core/models.py:210 +#: core/models.py:212 msgid "user" msgstr "utilisateur" -#: core/models.py:211 +#: core/models.py:213 msgid "users" msgstr "utilisateurs" -#: core/models.py:270 +#: core/models.py:272 msgid "Resource" msgstr "Ressource" -#: core/models.py:271 +#: core/models.py:273 msgid "Resources" msgstr "Ressources" -#: core/models.py:329 +#: core/models.py:331 msgid "Resource access" msgstr "Accès aux ressources" -#: core/models.py:330 +#: core/models.py:332 msgid "Resource accesses" msgstr "Accès aux ressources" -#: core/models.py:336 +#: core/models.py:338 msgid "Resource access with this User and Resource already exists." msgstr "" "L'accès à la ressource avec cet utilisateur et cette ressource existe déjà." -#: core/models.py:392 +#: core/models.py:394 msgid "Visio room configuration" msgstr "Configuration de la salle de visioconférence" -#: core/models.py:393 +#: core/models.py:395 msgid "Values for Visio parameters to configure the room." msgstr "Valeurs des paramètres de visioconférence pour configurer la salle." -#: core/models.py:400 +#: core/models.py:402 msgid "Room PIN code" msgstr "Code PIN de la salle" -#: core/models.py:401 +#: core/models.py:403 msgid "Unique n-digit code that identifies this room in telephony mode." msgstr "" "Code unique à n chiffres qui identifie cette salle en mode téléphonique." -#: core/models.py:407 core/models.py:561 +#: core/models.py:409 core/models.py:563 msgid "Room" msgstr "Salle" -#: core/models.py:408 +#: core/models.py:410 msgid "Rooms" msgstr "Salles" -#: core/models.py:572 +#: core/models.py:574 msgid "Worker ID" msgstr "ID du Worker" -#: core/models.py:574 +#: core/models.py:576 msgid "" "Enter an identifier for the worker recording.This ID is retained even when " "the worker stops, allowing for easy tracking." @@ -315,127 +330,128 @@ msgstr "" "Entrez un identifiant pour l'enregistrement du Worker. Cet identifiant est " "conservé même lorsque le Worker s'arrête, permettant un suivi facile." -#: core/models.py:582 +#: core/models.py:584 msgid "Recording mode" msgstr "Mode d'enregistrement" -#: core/models.py:583 +#: core/models.py:585 msgid "Defines the mode of recording being called." msgstr "Définit le mode d'enregistrement appelé." -#: core/models.py:588 core/models.py:589 +#: core/models.py:590 core/models.py:591 msgid "Recording options" msgstr "Options d'enregistrement" -#: core/models.py:595 +#: core/models.py:597 msgid "Recording" msgstr "Enregistrement" -#: core/models.py:596 +#: core/models.py:598 msgid "Recordings" msgstr "Enregistrements" -#: core/models.py:704 +#: core/models.py:706 msgid "Recording/user relation" msgstr "Relation enregistrement/utilisateur" -#: core/models.py:705 +#: core/models.py:707 msgid "Recording/user relations" msgstr "Relations enregistrement/utilisateur" -#: core/models.py:711 +#: core/models.py:713 msgid "This user is already in this recording." msgstr "Cet utilisateur est déjà dans cet enregistrement." -#: core/models.py:717 +#: core/models.py:719 msgid "This team is already in this recording." msgstr "Cette équipe est déjà dans cet enregistrement." -#: core/models.py:723 +#: core/models.py:725 msgid "Either user or team must be set, not both." msgstr "Soit l'utilisateur, soit l'équipe doit être défini, pas les deux." -#: core/models.py:740 +#: core/models.py:742 msgid "Create rooms" msgstr "Créer des salles" -#: core/models.py:741 +#: core/models.py:743 msgid "List rooms" msgstr "Lister les salles" -#: core/models.py:742 +#: core/models.py:744 msgid "Retrieve room details" msgstr "Afficher les détails d’une salle" -#: core/models.py:743 +#: core/models.py:745 msgid "Update rooms" msgstr "Mettre à jour les salles" -#: core/models.py:744 +#: core/models.py:746 msgid "Delete rooms" msgstr "Supprimer les salles" -#: core/models.py:757 +#: core/models.py:759 msgid "Application name" msgstr "Nom de l’application" -#: core/models.py:758 +#: core/models.py:760 msgid "Descriptive name for this application." msgstr "Nom descriptif de cette application." -#: core/models.py:768 +#: core/models.py:770 msgid "Hashed on Save. Copy it now if this is a new secret." msgstr "" "Haché lors de l’enregistrement. Copiez-le maintenant s’il s’agit d’un " "nouveau secret." -#: core/models.py:779 +#: core/models.py:781 msgid "Application" msgstr "Application" -#: core/models.py:780 +#: core/models.py:782 msgid "Applications" msgstr "Applications" -#: core/models.py:803 +#: core/models.py:805 msgid "Enter a valid domain" msgstr "Saisissez un domaine valide" -#: core/models.py:806 +#: core/models.py:808 msgid "Domain" msgstr "Domaine" -#: core/models.py:807 +#: core/models.py:809 msgid "Email domain this application can act on behalf of." msgstr "Domaine de messagerie au nom duquel cette application peut agir." -#: core/models.py:819 +#: core/models.py:821 msgid "Application domain" msgstr "Domaine d’application" -#: core/models.py:820 +#: core/models.py:822 msgid "Application domains" msgstr "Domaines d’application" -#: core/models.py:838 +#: core/models.py:840 msgid "Pending" msgstr "En attente" -#: core/models.py:846 +#: core/models.py:848 msgid "Ready" msgstr "Prêt" -#: core/models.py:852 +#: core/models.py:854 msgid "Background image" msgstr "Image de fond" -#: core/models.py:864 +#: core/models.py:866 msgid "title" msgstr "Titre" #: core/models.py:890 msgid "Malware detection info when the analysis status is unsafe." -msgstr "Information concernant la détection de Malware cand le statut n'est pas sain" +msgstr "" +"Information concernant la détection de Malware cand le statut n'est pas sain" #: core/models.py:895 msgid "File" @@ -445,15 +461,17 @@ msgstr "Fichier" msgid "Files" msgstr "Fichiers" -#: core/models.py:970 +#: core/models.py:1000 #, fuzzy #| msgid "This user is already in this recording." msgid "This file is already hard deleted." msgstr "Ce fichier a été supprimé." -#: core/models.py:980 +#: core/models.py:1010 msgid "To hard delete a file, it must first be soft deleted." -msgstr "Pour supprimer définitivement un fichier il doit d'abord avoir été marqué comme supprimé (soft delete)" +msgstr "" +"Pour supprimer définitivement un fichier il doit d'abord avoir été marqué " +"comme supprimé (soft delete)" #: core/recording/event/notification.py:116 msgid "Your recording is ready" @@ -583,18 +601,18 @@ msgstr "" " Si vous avez des questions ou besoin d'assistance, veuillez contacter notre " "équipe d'assistance à %(support_email)s. " -#: meet/settings.py:224 +#: meet/settings.py:215 msgid "English" msgstr "Anglais" -#: meet/settings.py:225 +#: meet/settings.py:216 msgid "French" msgstr "Français" -#: meet/settings.py:226 +#: meet/settings.py:217 msgid "Dutch" msgstr "Néerlandais" -#: meet/settings.py:227 +#: meet/settings.py:218 msgid "German" msgstr "Allemand" diff --git a/src/backend/locale/nl_NL/LC_MESSAGES/django.mo b/src/backend/locale/nl_NL/LC_MESSAGES/django.mo index 3ca0fa8e5e430223e5ba8e888a0134c120aee78d..a8837f3ecaea4b3b22707a76068ac8f35f1ef27c 100644 GIT binary patch delta 3060 zcmZ|RX>1f_9LMnoTH3N)r63i`F%(L>6l%+5p+Lb>7Fs|#%Zc#!F(O7hh!S525s6|TCN=T<+nM@;=#&2E^UUnbbNruY zc6(yU>1E05Iq5GL%6?)fF*@CtcW_)52g;8=V{H5h>oCxZd$1kH<3$YPA6SWNdmEF9 zr!fQ1U>|%7xy5{dId};N7?U*LP|4=PugIVI+dKF1)Ns!8P}irS8VYbI#^v7i{Wym6 zqo@wgVh{WX$KuC05pSagHnOiV1JRGG>EFzxvXcuhVL!~_K-J`90hVDY)*;C;&!Rdw zg6goxr|!MPF#(C(y5F*ja7IwNku9Cl7k++ zg_>y^CrrxtP%|5j>d=p+xEyugGpGiSV0U~G>C3dCAKybQ(RZks|BPxcbFe$1WDb=y zE{s4e!6?)Xe$*OG@~%(C+-|(%SkLvkA;vV|1yn|g^V|+sVVLs+s2ScywO7WMiv~O$ zHQ*}bdeSVUqBUQM>=zS8&0r5|*R~?rHtndTIg7gg8fr;y;bgpz%Gh|;QF~`Ls>24< z0Jfp_#2$PU&!s+R{qIm=Qsy46$85fJPGAhRtGkbI%|WFwA2s7@)FyOLGun;H;6cyB zSi|{oY{c(T6Rfe^=hk6vk_$E!y&ii}Gd_kI;VG=fD_D+$N4iV31l7_}44<{8c?YOx5_Q392+Lzsc5 zP;bGjsEnLP{bqcEm3R-ca0=7X7gr^A$3>{OX)$VG^_Y%lkUx`rgQHS)1+^yEF%9ov z54?-&@GtC%ndDpd_s4D+B-HQ@VkPl7QB5=xnkg?;>VJz}xQ2M3BvU(EGuGE+f>=d7 zMNB8A5D%7ZTzHJwNh~MyimGU~Bq5dd0BW#W^F72~Li=hWF_c(AsLasszt&s3+acx> zN~1DSL#QZSDlDa0OlUo|+v^CGMZ`KHsuN14i0vARm5S1CbOAoUvV#!cS!E|zswaDi8!kDI;vlen5t|EV&QqfQnQBZ#$x z$`E2Z(Lk&x^t!6-BeWs4H&k+orNl_$34(o{Dn5>SQ?x0ypQ?yTB1Gh=OYP!$gbHs} zsx09+jVL2F5?hFRB24hgr~b`~;0B_JP?_UmT0CvkMpl_j=q>oSSo1eqEwN^+zT-1r zyj$yr0fYRO(;N!fj!@92-QT)TAGM86_#{V^sY=V=5x!j zBX%gkXK_0ei*E`?w>baxM90qTUwl;sMWI-8G~suwSW`6EXcswMU2cy>tSxq`M>|fR z5jtHMb|TGN6V}FXgXPd|lO3h!4S6@y%LBI8FE`s>V~#uExE=lf$2$Vn=UM*%R{%S~ delta 2792 zcmY+_e@s2jTnzDcn9vl+tqD96+ZTc+h9j9k@J&Y`;VvxUBOKJ%WF@jF^%&aREPCA37aqj z*JD2JK@IE-Cg3?-g%@#$rd=@A>^2%cL_T(wLn?lUxp)Ifip}LBb&!qfFyFHf7jj;T zjo68N>{|{~@F%1%yNV>yZhA&A{rO7!R4Rp7jCyc4a*e%+T7?1BgAU-G_%>=lqu7U^ zq6Stu&7EltD&_U4j@Nm%qps^gJ+Bvon(-bgd@RIa1|G+|@C($4FJU@fMGYvPh139N zVG(8`U)d(qgS)-+UYySP5Ng1~r~!R|8px@5^3UMya~kI21@DVns7(0SDe5=|wTAhq z4vSC&>%ts-36;SUxB#!=y_m#;r(hZCIU7Cq;ys*yoIw6{;dvUAiJMr0kqn!CW>uJt z^{CC)i|XKgEXSWwnM!9}G>{U^!gkaq3!yS{1IsXs^eV#@9CY96AQjED6B)Gipk}rY z)nN#8@k`Wo#txv)qAhK@D^ps(lw~sr!)Cwf)GzgEmY> zyY(!RP5TD5B)_0;h~igCBcF+jFb$QdCe)tkKxO6ts-r_#h{L!TFMHo7vf#|YQn4AA z;h^6CgH*Je^Z3<~rKr@^qSk&pYV*B?n$Zzd>OS%u#cIw^V;jaKxijoW-Pez-n!SR0 zOOB!@dfAb4eEwAWPe&WYQ}r9ABRwDo|5cdpNZ0!?4WLqW817F26Bs~U_ihUL*9?!*kclTzYj_29!*$HSanucdHip(T3w7NF%*A%pKn{85 zKj1vheSUY3Rz<09hc&1H?#3cKfd%*nDr4zs z?m$XV1Kf%MJdD~i3F-V3Vj`-a06MRGkji8l_MvwFepE(|<9z%Cm*F+k8fUTP^+UA? z!?7Io{#T*~){H)U4V8g6QJFf2T9We^fxqG;4E|0<9sY?L=|89&BDp&Z*ASZNbHw9B z4N*osOXzjv?b1ucU#a`=2mdSgai&Zvd)tTxVi%!TbfJ4Iwf~fM>Lo-c@fe}ms%W+( z!AWlgMiE+jmFEeiGmqeB!&VY1$_QJ**{oZ!oQNd!npY7{|4Nq%OKFb~dS$YRdO~G6 z@g(uIPAIi5R*bELmQO|NI#D{PBoPmJ4a#U6p`}#e#c_VToYZAFP3~cfSI\n" "Language-Team: LANGUAGE \n" @@ -29,11 +29,11 @@ msgstr "Rechten" msgid "Important dates" msgstr "Belangrijke datums" -#: core/admin.py:132 core/admin.py:243 +#: core/admin.py:132 core/admin.py:275 msgid "No owner" msgstr "Geen eigenaar" -#: core/admin.py:135 core/admin.py:246 +#: core/admin.py:135 core/admin.py:278 msgid "Multiple owners" msgstr "Meerdere eigenaren" @@ -61,116 +61,131 @@ msgstr "Meldingen succesvol verzonden voor %(count)s opname(n)." msgid "Skipped %(count)s expired recording(s)." msgstr "%(count)s verlopen opname(n) overgeslagen." -#: core/admin.py:309 +#: core/admin.py:200 +msgid "Mark selected recordings as 'Failed to Stop'" +msgstr "Geselecteerde opnames markeren als 'Mislukt bij stoppen'" + +#: core/admin.py:218 +#, python-format +msgid "%(count)s recording(s) successfully marked as 'Failed to Stop'." +msgstr "%(count)s opname(s) succesvol gemarkeerd als 'Mislukt bij stoppen'." + +#: core/admin.py:226 +#, fuzzy, python-format +#| msgid "Skipped %(count)s expired recording(s)." +msgid "Skipped %(count)s recording(s) with an ineligible status." +msgstr "%(count)s opname(s) met een niet-toegestane status overgeslagen." + +#: core/admin.py:341 msgid "No scopes" msgstr "Geen scopes" -#: core/admin.py:311 +#: core/admin.py:343 msgid "Scopes" msgstr "Scopes" -#: core/api/filters.py:24 +#: core/api/filters.py:25 msgid "Creator is me" msgstr "Maker ben ik" -#: core/api/serializers.py:84 +#: core/api/serializers.py:88 msgid "You must be administrator or owner of a room to add accesses to it." msgstr "" "Je moet beheerder of eigenaar van een ruimte zijn om toegang toe te voegen." -#: core/api/serializers.py:443 +#: core/api/serializers.py:516 msgid "This file extension is not allowed." msgstr "Deze bestandsextensie is niet toegestaan." -#: core/models.py:35 +#: core/models.py:37 msgid "Member" msgstr "Lid" -#: core/models.py:36 +#: core/models.py:38 msgid "Administrator" msgstr "Beheerder" -#: core/models.py:37 +#: core/models.py:39 msgid "Owner" msgstr "Eigenaar" -#: core/models.py:53 +#: core/models.py:55 msgid "Initiated" msgstr "Gestart" -#: core/models.py:54 +#: core/models.py:56 msgid "Active" msgstr "Actief" -#: core/models.py:55 +#: core/models.py:57 msgid "Stopped" msgstr "Gestopt" -#: core/models.py:56 +#: core/models.py:58 msgid "Saved" msgstr "Opgeslagen" -#: core/models.py:57 +#: core/models.py:59 msgid "Aborted" msgstr "Afgebroken" -#: core/models.py:58 +#: core/models.py:60 msgid "Failed to Start" msgstr "Starten mislukt" -#: core/models.py:59 +#: core/models.py:61 msgid "Failed to Stop" msgstr "Stoppen mislukt" -#: core/models.py:60 +#: core/models.py:62 msgid "Notification succeeded" msgstr "Notificatie geslaagd" -#: core/models.py:87 +#: core/models.py:89 msgid "SCREEN_RECORDING" msgstr "SCHERM_OPNAME" -#: core/models.py:88 +#: core/models.py:90 msgid "TRANSCRIPT" msgstr "TRANSCRIPT" -#: core/models.py:94 +#: core/models.py:96 msgid "Public Access" msgstr "Openbare toegang" -#: core/models.py:95 +#: core/models.py:97 msgid "Trusted Access" msgstr "Vertrouwde toegang" -#: core/models.py:96 +#: core/models.py:98 msgid "Restricted Access" msgstr "Beperkte toegang" -#: core/models.py:108 +#: core/models.py:110 msgid "id" msgstr "id" -#: core/models.py:109 +#: core/models.py:111 msgid "primary key for the record as UUID" msgstr "primaire sleutel voor het record als UUID" -#: core/models.py:115 +#: core/models.py:117 msgid "created on" msgstr "aangemaakt op" -#: core/models.py:116 +#: core/models.py:118 msgid "date and time at which a record was created" msgstr "datum en tijd waarop een record werd aangemaakt" -#: core/models.py:121 +#: core/models.py:123 msgid "updated on" msgstr "bijgewerkt op" -#: core/models.py:122 +#: core/models.py:124 msgid "date and time at which a record was last updated" msgstr "datum en tijd waarop een record voor het laatst werd bijgewerkt" -#: core/models.py:142 +#: core/models.py:144 msgid "" "Enter a valid sub. This value may contain only letters, numbers, and @/./+/-/" "_ characters." @@ -178,11 +193,11 @@ msgstr "" "Voer een geldige sub in. Deze waarde mag alleen letters, cijfers en @/./+/-/" "_ tekens bevatten." -#: core/models.py:148 +#: core/models.py:150 msgid "sub" msgstr "sub" -#: core/models.py:150 +#: core/models.py:152 msgid "" "Optional for pending users; required upon account activation. 255 characters " "or fewer. Letters, numbers, and @/./+/-/_ characters only." @@ -190,55 +205,55 @@ msgstr "" "Optioneel voor gebruikers in afwachting; vereist bij accountactivering. " "Maximum 255 tekens. Alleen letters, cijfers en @/./+/-/_ toegestaan." -#: core/models.py:159 +#: core/models.py:161 msgid "identity email address" msgstr "identiteit e-mailadres" -#: core/models.py:164 +#: core/models.py:166 msgid "admin email address" msgstr "beheerder e-mailadres" -#: core/models.py:166 +#: core/models.py:168 msgid "full name" msgstr "volledige naam" -#: core/models.py:168 +#: core/models.py:170 msgid "short name" msgstr "korte naam" -#: core/models.py:174 +#: core/models.py:176 msgid "language" msgstr "taal" -#: core/models.py:175 +#: core/models.py:177 msgid "The language in which the user wants to see the interface." msgstr "De taal waarin de gebruiker de interface wil zien." -#: core/models.py:181 +#: core/models.py:183 msgid "The timezone in which the user wants to see times." msgstr "De tijdzone waarin de gebruiker tijden wil zien." -#: core/models.py:184 +#: core/models.py:186 msgid "device" msgstr "apparaat" -#: core/models.py:186 +#: core/models.py:188 msgid "Whether the user is a device or a real user." msgstr "Of de gebruiker een apparaat is of een echte gebruiker." -#: core/models.py:189 +#: core/models.py:191 msgid "staff status" msgstr "personeelsstatus" -#: core/models.py:191 +#: core/models.py:193 msgid "Whether the user can log into this admin site." msgstr "Of de gebruiker kan inloggen op deze beheersite." -#: core/models.py:194 +#: core/models.py:196 msgid "active" msgstr "actief" -#: core/models.py:197 +#: core/models.py:199 msgid "" "Whether this user should be treated as active. Unselect this instead of " "deleting accounts." @@ -246,64 +261,64 @@ msgstr "" "Of deze gebruiker als actief moet worden behandeld. Deselecteer dit in " "plaats van accounts te verwijderen." -#: core/models.py:210 +#: core/models.py:212 msgid "user" msgstr "gebruiker" -#: core/models.py:211 +#: core/models.py:213 msgid "users" msgstr "gebruikers" -#: core/models.py:270 +#: core/models.py:272 msgid "Resource" msgstr "Bron" -#: core/models.py:271 +#: core/models.py:273 msgid "Resources" msgstr "Bronnen" -#: core/models.py:329 +#: core/models.py:331 msgid "Resource access" msgstr "Brontoegang" -#: core/models.py:330 +#: core/models.py:332 msgid "Resource accesses" msgstr "Brontoegangsrechten" -#: core/models.py:336 +#: core/models.py:338 msgid "Resource access with this User and Resource already exists." msgstr "Brontoegang met deze gebruiker en bron bestaat al." -#: core/models.py:392 +#: core/models.py:394 msgid "Visio room configuration" msgstr "Visio-ruimteconfiguratie" -#: core/models.py:393 +#: core/models.py:395 msgid "Values for Visio parameters to configure the room." msgstr "Waarden voor Visio-parameters om de ruimte te configureren." -#: core/models.py:400 +#: core/models.py:402 msgid "Room PIN code" msgstr "Pincode van de kamer" -#: core/models.py:401 +#: core/models.py:403 msgid "Unique n-digit code that identifies this room in telephony mode." msgstr "" "Unieke n-cijferige code die deze kamer identificeert in telefonie-modus." -#: core/models.py:407 core/models.py:561 +#: core/models.py:409 core/models.py:563 msgid "Room" msgstr "Ruimte" -#: core/models.py:408 +#: core/models.py:410 msgid "Rooms" msgstr "Ruimtes" -#: core/models.py:572 +#: core/models.py:574 msgid "Worker ID" msgstr "Worker ID" -#: core/models.py:574 +#: core/models.py:576 msgid "" "Enter an identifier for the worker recording.This ID is retained even when " "the worker stops, allowing for easy tracking." @@ -311,120 +326,120 @@ msgstr "" "Voer een identificatie in voor de worker-opname. Deze ID blijft behouden, " "zelfs wanneer de worker stopt, waardoor eenvoudige tracking mogelijk is." -#: core/models.py:582 +#: core/models.py:584 msgid "Recording mode" msgstr "Opnamemodus" -#: core/models.py:583 +#: core/models.py:585 msgid "Defines the mode of recording being called." msgstr "Definieert de modus van opname die wordt aangeroepen." -#: core/models.py:588 core/models.py:589 +#: core/models.py:590 core/models.py:591 msgid "Recording options" msgstr "Opnameopties" -#: core/models.py:595 +#: core/models.py:597 msgid "Recording" msgstr "Opname" -#: core/models.py:596 +#: core/models.py:598 msgid "Recordings" msgstr "Opnames" -#: core/models.py:704 +#: core/models.py:706 msgid "Recording/user relation" msgstr "Opname/gebruiker-relatie" -#: core/models.py:705 +#: core/models.py:707 msgid "Recording/user relations" msgstr "Opname/gebruiker-relaties" -#: core/models.py:711 +#: core/models.py:713 msgid "This user is already in this recording." msgstr "Deze gebruiker is al in deze opname." -#: core/models.py:717 +#: core/models.py:719 msgid "This team is already in this recording." msgstr "Dit team is al in deze opname." -#: core/models.py:723 +#: core/models.py:725 msgid "Either user or team must be set, not both." msgstr "Ofwel gebruiker of team moet worden ingesteld, niet beide." -#: core/models.py:740 +#: core/models.py:742 msgid "Create rooms" msgstr "Ruimtes aanmaken" -#: core/models.py:741 +#: core/models.py:743 msgid "List rooms" msgstr "Ruimtes weergeven" -#: core/models.py:742 +#: core/models.py:744 msgid "Retrieve room details" msgstr "Details van een ruimte ophalen" -#: core/models.py:743 +#: core/models.py:745 msgid "Update rooms" msgstr "Ruimtes bijwerken" -#: core/models.py:744 +#: core/models.py:746 msgid "Delete rooms" msgstr "Ruimtes verwijderen" -#: core/models.py:757 +#: core/models.py:759 msgid "Application name" msgstr "Naam van de applicatie" -#: core/models.py:758 +#: core/models.py:760 msgid "Descriptive name for this application." msgstr "Beschrijvende naam voor deze applicatie." -#: core/models.py:768 +#: core/models.py:770 msgid "Hashed on Save. Copy it now if this is a new secret." msgstr "" "Wordt gehasht bij het opslaan. Kopieer het nu als dit een nieuw geheim is." -#: core/models.py:779 +#: core/models.py:781 msgid "Application" msgstr "Applicatie" -#: core/models.py:780 +#: core/models.py:782 msgid "Applications" msgstr "Applicaties" -#: core/models.py:803 +#: core/models.py:805 msgid "Enter a valid domain" msgstr "Voer een geldig domein in" -#: core/models.py:806 +#: core/models.py:808 msgid "Domain" msgstr "Domein" -#: core/models.py:807 +#: core/models.py:809 msgid "Email domain this application can act on behalf of." msgstr "E-maildomein namens welke deze applicatie kan handelen." -#: core/models.py:819 +#: core/models.py:821 msgid "Application domain" msgstr "Applicatiedomein" -#: core/models.py:820 +#: core/models.py:822 msgid "Application domains" msgstr "Applicatiedomeinen" -#: core/models.py:838 +#: core/models.py:840 msgid "Pending" msgstr "In afwachting" -#: core/models.py:846 +#: core/models.py:848 msgid "Ready" msgstr "Klaar" -#: core/models.py:852 +#: core/models.py:854 msgid "Background image" msgstr "Achtergrondafbeelding" -#: core/models.py:864 +#: core/models.py:866 msgid "title" msgstr "Titel" @@ -440,11 +455,11 @@ msgstr "Bestand" msgid "Files" msgstr "Bestanden" -#: core/models.py:970 +#: core/models.py:1000 msgid "This file is already hard deleted." msgstr "Dit bestand is al definitief verwijderd." -#: core/models.py:980 +#: core/models.py:1010 #, fuzzy #| msgid "To hard delete a file, it must first be soft deleted." msgid "To hard delete a file, it must first be soft deleted." @@ -580,18 +595,18 @@ msgstr "" " Als je vragen hebt of hulp nodig hebt, neem dan contact op met ons support " "team via %(support_email)s. " -#: meet/settings.py:224 +#: meet/settings.py:215 msgid "English" msgstr "Engels" -#: meet/settings.py:225 +#: meet/settings.py:216 msgid "French" msgstr "Frans" -#: meet/settings.py:226 +#: meet/settings.py:217 msgid "Dutch" msgstr "Nederlands" -#: meet/settings.py:227 +#: meet/settings.py:218 msgid "German" msgstr "Duits"