From a2cef22ea80da4757464531dc01f8d6dde759aca Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 30 Mar 2026 15:01:39 +0200 Subject: [PATCH 001/107] Bump version to 2026.4.0.dev0 --- src/pretix/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pretix/__init__.py b/src/pretix/__init__.py index 71517ecef..0c3496769 100644 --- a/src/pretix/__init__.py +++ b/src/pretix/__init__.py @@ -19,4 +19,4 @@ # You should have received a copy of the GNU Affero General Public License along with this program. If not, see # . # -__version__ = "2026.3.0" +__version__ = "2026.4.0.dev0" -- 2.49.1 From b2ea172a6035b73ee3f787e662e4059711dde5c2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 31 Mar 2026 18:13:59 +0000 Subject: [PATCH 002/107] Update sentry-sdk requirement from ==2.56.* to ==2.57.* Updates the requirements on [sentry-sdk](https://github.com/getsentry/sentry-python) to permit the latest version. - [Release notes](https://github.com/getsentry/sentry-python/releases) - [Changelog](https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-python/compare/2.56.0...2.57.0) --- updated-dependencies: - dependency-name: sentry-sdk dependency-version: 2.57.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 9bd6ef520..001d201e3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -93,7 +93,7 @@ dependencies = [ "redis==7.1.*", "reportlab==4.4.*", "requests==2.32.*", - "sentry-sdk==2.56.*", + "sentry-sdk==2.57.*", "sepaxml==2.7.*", "stripe==7.9.*", "text-unidecode==1.*", -- 2.49.1 From c0df7c6142d93e7af252433b840a1712502acc31 Mon Sep 17 00:00:00 2001 From: Renne Rocha Date: Mon, 30 Mar 2026 18:57:21 +0200 Subject: [PATCH 003/107] Translations: Update Portuguese (Brazil) Currently translated at 95.1% (5980 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_BR/ powered by weblate --- src/pretix/locale/pt_BR/LC_MESSAGES/django.po | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/pretix/locale/pt_BR/LC_MESSAGES/django.po b/src/pretix/locale/pt_BR/LC_MESSAGES/django.po index efde6cde4..3ed7c4a81 100644 --- a/src/pretix/locale/pt_BR/LC_MESSAGES/django.po +++ b/src/pretix/locale/pt_BR/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-03-25 08:00+0000\n" +"PO-Revision-Date: 2026-03-30 21:00+0000\n" "Last-Translator: Renne Rocha \n" "Language-Team: Portuguese (Brazil) \n" @@ -19613,7 +19613,7 @@ msgstr "Excluir" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:91 #: pretix/presale/templates/pretixpresale/fragment_event_list_filter.html:22 msgid "Filter" -msgstr "Filtro" +msgstr "Filtrar" #: pretix/control/templates/pretixcontrol/checkin/checkins.html:50 msgid "Your search did not match any check-ins." @@ -28003,6 +28003,9 @@ msgid "" "According to your event settings, sold out products are hidden from " "customers. This way, customers will not be able to discover the waiting list." msgstr "" +"De acordo com as configurações do seu evento, os produtos esgotados ficam " +"ocultos para os clientes. Dessa forma, os clientes não poderão descobrir a " +"lista de espera." #: pretix/control/templates/pretixcontrol/waitinglist/index.html:38 msgid "Send vouchers" @@ -28049,6 +28052,9 @@ msgid "" "waiting list in, you could sell tickets worth an additional " "%(amount)s." msgstr "" +"Se você conseguir criar espaço suficiente em seu evento para acomodar todas " +"as pessoas na lista de espera, poderá vender ingressos no valor de um " +"adicional de %(amount)s." #: pretix/control/templates/pretixcontrol/waitinglist/index.html:115 msgid "Successfully redeemed" -- 2.49.1 From 608b150bf87e4932f4f52e76cbbd5c53ce359577 Mon Sep 17 00:00:00 2001 From: Ruud Hendrickx Date: Mon, 30 Mar 2026 14:56:27 +0200 Subject: [PATCH 004/107] Translations: Update Dutch (Belgium) Currently translated at 79.6% (5007 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_BE/ powered by weblate --- src/pretix/locale/nl_BE/LC_MESSAGES/django.po | 80 +++++++++++-------- 1 file changed, 46 insertions(+), 34 deletions(-) diff --git a/src/pretix/locale/nl_BE/LC_MESSAGES/django.po b/src/pretix/locale/nl_BE/LC_MESSAGES/django.po index b70e5d400..b6031efdf 100644 --- a/src/pretix/locale/nl_BE/LC_MESSAGES/django.po +++ b/src/pretix/locale/nl_BE/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-03-25 12:41+0000\n" +"PO-Revision-Date: 2026-03-30 21:00+0000\n" "Last-Translator: Ruud Hendrickx \n" "Language-Team: Dutch (Belgium) \n" @@ -13279,7 +13279,7 @@ msgstr "" #: pretix/base/settings.py:4157 #, python-brace-format msgid "VAT-ID is not supported for \"{}\"." -msgstr "" +msgstr "Btw-nummer wordt niet ondersteund voor \"{}\"." #: pretix/base/settings.py:4164 msgid "The last payment date cannot be before the end of presale." @@ -27449,28 +27449,28 @@ msgid "Add a two-factor authentication device" msgstr "Twee-factor-authenticatieapparaat toevoegen" #: pretix/control/templates/pretixcontrol/user/2fa_add.html:19 -#, fuzzy -#| msgid "Smartphone with the Authenticator application" msgid "Smartphone with Authenticator app" -msgstr "Smartphone met de Authenticator-applicatie" +msgstr "Smartphone met Authenticator-app" #: pretix/control/templates/pretixcontrol/user/2fa_add.html:21 msgid "" "Use your smartphone with any Time-based One-Time-Password app like freeOTP, " "Google Authenticator or Proton Authenticator." msgstr "" +"Gebruik uw smartphone met een willekeurige app voor tijdgebonden eenmalige " +"wachtwoorden, zoals freeOTP, Google Authenticator of Proton Authenticator." #: pretix/control/templates/pretixcontrol/user/2fa_add.html:30 -#, fuzzy -#| msgid "WebAuthn-compatible hardware token (e.g. Yubikey)" msgid "WebAuthn-compatible hardware token" -msgstr "WebAuthn-compatibel hardware-token (bijvoorbeeld Yubikey)" +msgstr "WebAuthn-compatibel hardware-token" #: pretix/control/templates/pretixcontrol/user/2fa_add.html:32 msgid "" "Use a hardware token like the Yubikey, or other biometric authentication " "like fingerprint or face recognition." msgstr "" +"Gebruik een hardwaretoken zoals de Yubikey, of een andere vorm van " +"biometrische authenticatie, zoals vingerafdruk- of gezichtsherkenning." #: pretix/control/templates/pretixcontrol/user/2fa_confirm_totp.html:8 msgid "To set up this device, please follow the following steps:" @@ -30018,38 +30018,39 @@ msgstr "" #: pretix/control/views/organizer.py:3675 msgid "The order of sales channels has been updated." -msgstr "" +msgstr "De volgorde van de verkoopskanalen is bijgewerkt." #: pretix/control/views/pdf.py:85 msgid "The uploaded PDF file is too large." -msgstr "" +msgstr "Het geüploade PDF-bestand is te groot." #: pretix/control/views/pdf.py:87 msgid "The uploaded PDF file is too small." -msgstr "" +msgstr "Het geüploade PDF-bestand is te klein." #: pretix/control/views/pdf.py:89 msgid "Please only upload PDF files." -msgstr "" +msgstr "Upload alleen PDF-bestanden." #: pretix/control/views/pdf.py:233 #, python-brace-format msgid "Unfortunately, we were unable to process this PDF file ({reason})." -msgstr "" +msgstr "Helaas kunnen we dit PDF-bestand niet verwerken ({reason})." #: pretix/control/views/shredder.py:162 msgid "The selected data was deleted successfully." -msgstr "" +msgstr "De gekozen gegevens zijn verwijderd." #: pretix/control/views/subevents.py:168 pretix/control/views/subevents.py:530 msgctxt "subevent" msgid "The requested date does not exist." -msgstr "" +msgstr "De gevraagde datum bestaat niet." #: pretix/control/views/subevents.py:172 pretix/control/views/subevents.py:184 msgctxt "subevent" msgid "A date can not be deleted if orders already have been placed." msgstr "" +"Een datum kan niet verwijderd worden, als er al bestellingen geplaatst zijn." #: pretix/control/views/subevents.py:203 msgctxt "subevent" @@ -30057,79 +30058,85 @@ msgid "" "The date could not be deleted as some constraints (e.g. data created by plug-" "ins) did not allow it. The date was disabled instead." msgstr "" +"De datum kon niet verwijderd wordne, omdat bepaalde beperkingen " +"(bijvoorbeeld gegevens die door plug-ins aangemaakt zijn) dit niet " +"toelieten. De datum werd in plaats daarvan uitgeschakeld." #: pretix/control/views/subevents.py:207 msgctxt "subevent" msgid "The selected date has been deleted." -msgstr "" +msgstr "De geselecteerde datum is verwijderd." #: pretix/control/views/subevents.py:619 msgctxt "subevent" msgid "The new date has been created." -msgstr "" +msgstr "De nieuwe datum is aangemaakt." #: pretix/control/views/subevents.py:688 msgctxt "subevent" msgid "The selected dates have been disabled." -msgstr "" +msgstr "De geselecteerde datums zijn uitgeschakeld." #: pretix/control/views/subevents.py:701 msgctxt "subevent" msgid "The selected dates have been enabled." -msgstr "" +msgstr "De geselecteerde datums zijn ingeschakeld." #: pretix/control/views/subevents.py:730 msgctxt "subevent" msgid "The selected dates have been deleted or disabled." -msgstr "" +msgstr "De geselecteerde datums zijn verwijderd of uitgeschakeld." #: pretix/control/views/subevents.py:918 msgid "Please do not create more than 100.000 dates at once." -msgstr "" +msgstr "U kunt maximaal 100.000 datums tegelijk aanmaken." #: pretix/control/views/subevents.py:1054 #, python-brace-format msgctxt "subevent" msgid "{} new dates have been created." -msgstr "" +msgstr "Er zijn {} nieuwe datums aangemaakt." #: pretix/control/views/typeahead.py:93 msgid "Series:" -msgstr "" +msgstr "Reeks:" #: pretix/control/views/typeahead.py:116 #, python-brace-format msgid "Order {}" -msgstr "" +msgstr "Bestelling {}" #: pretix/control/views/typeahead.py:129 #, python-brace-format msgid "Voucher {}" -msgstr "" +msgstr "Voucher {}" #: pretix/control/views/user.py:169 msgid "The password you entered was invalid, please try again." -msgstr "" +msgstr "Het ingevoerde wachtwoord is ongeldig. Probeer het opnieuw." #: pretix/control/views/user.py:334 msgid "Security devices are only available if pretix is served via HTTPS." msgstr "" +"Beveiligingsapparaten zijn alleen beschikbaar, als pretix via HTTPS wordt " +"geopend." #: pretix/control/views/user.py:371 msgid "A two-factor authentication device has been removed from your account." -msgstr "" +msgstr "Een twee-factor-authenticatieapparaat is verwijderd van uw account." #: pretix/control/views/user.py:382 msgid "The device has been removed." -msgstr "" +msgstr "Het apparaat is verwijderd." #: pretix/control/views/user.py:447 msgid "This security device is already registered." -msgstr "" +msgstr "Dit beveiligingsapparaat is al geregistreerd." #: pretix/control/views/user.py:466 pretix/control/views/user.py:527 msgid "A new two-factor authentication device has been added to your account." msgstr "" +"Er is een nieuw twee-factor-authenticatieapparaat toegevoegd aan uw account." #: pretix/control/views/user.py:482 pretix/control/views/user.py:542 msgid "" @@ -30137,38 +30144,43 @@ msgid "" "account using the buttons below to make a second factor required for logging " "into your account." msgstr "" +"Let op: u moet de twee-factor-authenticatie nog inschakelen voor uw account " +"via de onderstaande knop, zodat de tweede factor vereist is om in te loggen." #: pretix/control/views/user.py:485 pretix/control/views/user.py:545 msgid "The device has been verified and can now be used." -msgstr "" +msgstr "Het apparaat is geverifieerd en kan nu gebruikt worden." #: pretix/control/views/user.py:488 msgid "The registration could not be completed. Please try again." -msgstr "" +msgstr "De registratie kon niet voltooid worden. Probeer het opnieuw." #: pretix/control/views/user.py:548 msgid "" "The code you entered was not valid. If this problem persists, please check " "that the date and time of your phone are configured correctly." msgstr "" +"De ingevoerde code is ongeldig. Als het probleem zich blijft voordoen, " +"controleer dan of de datum en tijd op uw telefoon correct ingesteld zijn." #: pretix/control/views/user.py:568 msgid "You have left all teams that require two-factor authentication." -msgstr "" +msgstr "U hebt alle teams verlaten die twee-factor-authenticatie vereisen." #: pretix/control/views/user.py:582 msgid "" "Please configure at least one device before enabling two-factor " "authentication." msgstr "" +"Stel ten minste één apparaat in voor u twee-factor-authenticatie inschakelt." #: pretix/control/views/user.py:591 msgid "Two-factor authentication is now enabled for your account." -msgstr "" +msgstr "Twee-factor-authenticatie is nu ingeschakeld voor uw account." #: pretix/control/views/user.py:607 msgid "Two-factor authentication is now disabled for your account." -msgstr "" +msgstr "Twee-factor-authenticatie is nu uitgeschakeld voor uw account." #: pretix/control/views/user.py:632 #, python-brace-format -- 2.49.1 From 438f70c730d5344f10b647445ac7f50acbb9c156 Mon Sep 17 00:00:00 2001 From: CVZ-es Date: Tue, 31 Mar 2026 13:28:15 +0200 Subject: [PATCH 005/107] Translations: Update French Currently translated at 100.0% (6287 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fr/ powered by weblate --- src/pretix/locale/fr/LC_MESSAGES/django.po | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/pretix/locale/fr/LC_MESSAGES/django.po b/src/pretix/locale/fr/LC_MESSAGES/django.po index 5e80adbdb..1335e3fe3 100644 --- a/src/pretix/locale/fr/LC_MESSAGES/django.po +++ b/src/pretix/locale/fr/LC_MESSAGES/django.po @@ -4,10 +4,10 @@ msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-03-18 12:23+0000\n" +"PO-Revision-Date: 2026-03-31 17:00+0000\n" "Last-Translator: CVZ-es \n" -"Language-Team: French \n" +"Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -13454,7 +13454,7 @@ msgstr "" #: pretix/base/settings.py:4157 #, python-brace-format msgid "VAT-ID is not supported for \"{}\"." -msgstr "" +msgstr "Le numéro de TVA n'est pas pris en charge pour « {} »." #: pretix/base/settings.py:4164 msgid "The last payment date cannot be before the end of presale." @@ -27774,28 +27774,30 @@ msgid "Add a two-factor authentication device" msgstr "Ajouter un dispositif d'authentification à deux facteurs" #: pretix/control/templates/pretixcontrol/user/2fa_add.html:19 -#, fuzzy -#| msgid "Smartphone with the Authenticator application" msgid "Smartphone with Authenticator app" -msgstr "Smartphone avec l'application Authenticator" +msgstr "Smartphone équipé de l'application Authenticator" #: pretix/control/templates/pretixcontrol/user/2fa_add.html:21 msgid "" "Use your smartphone with any Time-based One-Time-Password app like freeOTP, " "Google Authenticator or Proton Authenticator." msgstr "" +"Utilisez votre smartphone avec n'importe quelle application de mots de passe " +"à usage unique générés en temps réel, comme freeOTP, Google Authenticator ou " +"Proton Authenticator." #: pretix/control/templates/pretixcontrol/user/2fa_add.html:30 -#, fuzzy -#| msgid "WebAuthn-compatible hardware token (e.g. Yubikey)" msgid "WebAuthn-compatible hardware token" -msgstr "Token matériel compatible WebAuthn (par ex. Yubikey)" +msgstr "Token matériel compatible WebAuthn" #: pretix/control/templates/pretixcontrol/user/2fa_add.html:32 msgid "" "Use a hardware token like the Yubikey, or other biometric authentication " "like fingerprint or face recognition." msgstr "" +"Utilisez une clé matérielle telle que la Yubikey, ou un autre moyen " +"d'authentification biométrique, comme la reconnaissance d'empreintes " +"digitales ou faciale." #: pretix/control/templates/pretixcontrol/user/2fa_confirm_totp.html:8 msgid "To set up this device, please follow the following steps:" -- 2.49.1 From b0714886bc47a0ace10c06991ffc2ebf336374db Mon Sep 17 00:00:00 2001 From: Ruud Hendrickx Date: Tue, 31 Mar 2026 10:34:17 +0200 Subject: [PATCH 006/107] Translations: Update Dutch Currently translated at 100.0% (6287 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/ powered by weblate --- src/pretix/locale/nl/LC_MESSAGES/django.po | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/pretix/locale/nl/LC_MESSAGES/django.po b/src/pretix/locale/nl/LC_MESSAGES/django.po index 04f4e4c78..72fa2fb5c 100644 --- a/src/pretix/locale/nl/LC_MESSAGES/django.po +++ b/src/pretix/locale/nl/LC_MESSAGES/django.po @@ -7,10 +7,10 @@ msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-03-18 12:23+0000\n" +"PO-Revision-Date: 2026-03-31 17:00+0000\n" "Last-Translator: Ruud Hendrickx \n" -"Language-Team: Dutch \n" +"Language-Team: Dutch " +"\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -13283,7 +13283,7 @@ msgstr "" #: pretix/base/settings.py:4157 #, python-brace-format msgid "VAT-ID is not supported for \"{}\"." -msgstr "" +msgstr "Btw-nummer wordt niet ondersteund voor \"{}\"." #: pretix/base/settings.py:4164 msgid "The last payment date cannot be before the end of presale." @@ -27461,28 +27461,28 @@ msgid "Add a two-factor authentication device" msgstr "Twee-factor-authenticatieapparaat toevoegen" #: pretix/control/templates/pretixcontrol/user/2fa_add.html:19 -#, fuzzy -#| msgid "Smartphone with the Authenticator application" msgid "Smartphone with Authenticator app" -msgstr "Smartphone met de Authenticator-applicatie" +msgstr "Smartphone met Authenticator-app" #: pretix/control/templates/pretixcontrol/user/2fa_add.html:21 msgid "" "Use your smartphone with any Time-based One-Time-Password app like freeOTP, " "Google Authenticator or Proton Authenticator." msgstr "" +"Gebruik uw smartphone met een willekeurige app voor tijdgebonden eenmalige " +"wachtwoorden, zoals freeOTP, Google Authenticator of Proton Authenticator." #: pretix/control/templates/pretixcontrol/user/2fa_add.html:30 -#, fuzzy -#| msgid "WebAuthn-compatible hardware token (e.g. Yubikey)" msgid "WebAuthn-compatible hardware token" -msgstr "WebAuthn-compatibel hardware-token (bijvoorbeeld Yubikey)" +msgstr "WebAuthn-compatibel hardwaretoken" #: pretix/control/templates/pretixcontrol/user/2fa_add.html:32 msgid "" "Use a hardware token like the Yubikey, or other biometric authentication " "like fingerprint or face recognition." msgstr "" +"Gebruik een hardwaretoken zoals de Yubikey, of een andere vorm van " +"biometrische authenticatie, zoals vingerafdruk- of gezichtsherkenning." #: pretix/control/templates/pretixcontrol/user/2fa_confirm_totp.html:8 msgid "To set up this device, please follow the following steps:" -- 2.49.1 From 86b5191e8bdd596e21e299d38f4ee2e659b3f730 Mon Sep 17 00:00:00 2001 From: CVZ-es Date: Tue, 31 Mar 2026 13:26:42 +0200 Subject: [PATCH 007/107] Translations: Update Spanish Currently translated at 100.0% (6287 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/ powered by weblate --- src/pretix/locale/es/LC_MESSAGES/django.po | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/pretix/locale/es/LC_MESSAGES/django.po b/src/pretix/locale/es/LC_MESSAGES/django.po index 2bb20fcbd..93aa13ac6 100644 --- a/src/pretix/locale/es/LC_MESSAGES/django.po +++ b/src/pretix/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-03-18 12:23+0000\n" +"PO-Revision-Date: 2026-03-31 17:00+0000\n" "Last-Translator: CVZ-es \n" "Language-Team: Spanish \n" @@ -13331,7 +13331,7 @@ msgstr "" #: pretix/base/settings.py:4157 #, python-brace-format msgid "VAT-ID is not supported for \"{}\"." -msgstr "" +msgstr "El NIF no es compatible con «{}»." #: pretix/base/settings.py:4164 msgid "The last payment date cannot be before the end of presale." @@ -27567,28 +27567,30 @@ msgid "Add a two-factor authentication device" msgstr "Añadir un dispositivo de autenticación de dos factores" #: pretix/control/templates/pretixcontrol/user/2fa_add.html:19 -#, fuzzy -#| msgid "Smartphone with the Authenticator application" msgid "Smartphone with Authenticator app" -msgstr "Celular con aplicación de autenticación" +msgstr "Smartphone con la aplicación Authenticator" #: pretix/control/templates/pretixcontrol/user/2fa_add.html:21 msgid "" "Use your smartphone with any Time-based One-Time-Password app like freeOTP, " "Google Authenticator or Proton Authenticator." msgstr "" +"Use su smartphone con cualquier aplicación de contraseñas de un solo uso " +"basadas en el tiempo, como freeOTP, Google Authenticator o Proton " +"Authenticator." #: pretix/control/templates/pretixcontrol/user/2fa_add.html:30 -#, fuzzy -#| msgid "WebAuthn-compatible hardware token (e.g. Yubikey)" msgid "WebAuthn-compatible hardware token" -msgstr "Hardware compatible con token WebAuthn (p. ej. Yubikey)" +msgstr "Token físico compatible con WebAuthn" #: pretix/control/templates/pretixcontrol/user/2fa_add.html:32 msgid "" "Use a hardware token like the Yubikey, or other biometric authentication " "like fingerprint or face recognition." msgstr "" +"Utiliza un dispositivo de seguridad físico, como el Yubikey, u otro método " +"de autenticación biométrica, como el reconocimiento de huellas dactilares o " +"facial." #: pretix/control/templates/pretixcontrol/user/2fa_confirm_totp.html:8 msgid "To set up this device, please follow the following steps:" -- 2.49.1 From dcb0eb765f9ac84761b4e0e3a7b7b2d76b5b0115 Mon Sep 17 00:00:00 2001 From: Ruud Hendrickx Date: Tue, 31 Mar 2026 10:35:15 +0200 Subject: [PATCH 008/107] Translations: Update Dutch (informal) (nl_Informal) Currently translated at 100.0% (6287 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/ powered by weblate --- .../locale/nl_Informal/LC_MESSAGES/django.po | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/pretix/locale/nl_Informal/LC_MESSAGES/django.po b/src/pretix/locale/nl_Informal/LC_MESSAGES/django.po index b46f8dce0..3b7f3f317 100644 --- a/src/pretix/locale/nl_Informal/LC_MESSAGES/django.po +++ b/src/pretix/locale/nl_Informal/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-03-18 14:50+0000\n" +"PO-Revision-Date: 2026-03-31 17:00+0000\n" "Last-Translator: Ruud Hendrickx \n" "Language-Team: Dutch (informal) \n" @@ -13314,7 +13314,7 @@ msgstr "" #: pretix/base/settings.py:4157 #, python-brace-format msgid "VAT-ID is not supported for \"{}\"." -msgstr "" +msgstr "Btw-nummer wordt niet ondersteund voor \"{}\"." #: pretix/base/settings.py:4164 msgid "The last payment date cannot be before the end of presale." @@ -27518,28 +27518,28 @@ msgid "Add a two-factor authentication device" msgstr "Twee-factor-authenticatieapparaat toevoegen" #: pretix/control/templates/pretixcontrol/user/2fa_add.html:19 -#, fuzzy -#| msgid "Smartphone with the Authenticator application" msgid "Smartphone with Authenticator app" -msgstr "Smartphone met de Authenticator-applicatie" +msgstr "Smartphone met Authenticator-app" #: pretix/control/templates/pretixcontrol/user/2fa_add.html:21 msgid "" "Use your smartphone with any Time-based One-Time-Password app like freeOTP, " "Google Authenticator or Proton Authenticator." msgstr "" +"Gebruik je smartphone met een willekeurige app voor tijdgebonden eenmalige " +"wachtwoorden, zoals freeOTP, Google Authenticator of Proton Authenticator." #: pretix/control/templates/pretixcontrol/user/2fa_add.html:30 -#, fuzzy -#| msgid "WebAuthn-compatible hardware token (e.g. Yubikey)" msgid "WebAuthn-compatible hardware token" -msgstr "WebAuthn-compatibel hardware-token (bijvoorbeeld Yubikey)" +msgstr "WebAuthn-compatibel hardwaretoken" #: pretix/control/templates/pretixcontrol/user/2fa_add.html:32 msgid "" "Use a hardware token like the Yubikey, or other biometric authentication " "like fingerprint or face recognition." msgstr "" +"Gebruik een hardwaretoken zoals de Yubikey, of een andere vorm van " +"biometrische authenticatie, zoals vingerafdruk- of gezichtsherkenning." #: pretix/control/templates/pretixcontrol/user/2fa_confirm_totp.html:8 msgid "To set up this device, please follow the following steps:" -- 2.49.1 From 719ad7104d5837ccdc8ea0f42009a29240a39769 Mon Sep 17 00:00:00 2001 From: Ruud Hendrickx Date: Tue, 31 Mar 2026 17:39:06 +0200 Subject: [PATCH 009/107] Translations: Update Dutch (Belgium) Currently translated at 82.1% (5164 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_BE/ powered by weblate --- src/pretix/locale/nl_BE/LC_MESSAGES/django.po | 337 +++++++++++------- 1 file changed, 202 insertions(+), 135 deletions(-) diff --git a/src/pretix/locale/nl_BE/LC_MESSAGES/django.po b/src/pretix/locale/nl_BE/LC_MESSAGES/django.po index b6031efdf..3e15fb7e2 100644 --- a/src/pretix/locale/nl_BE/LC_MESSAGES/django.po +++ b/src/pretix/locale/nl_BE/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-03-30 21:00+0000\n" +"PO-Revision-Date: 2026-03-31 17:00+0000\n" "Last-Translator: Ruud Hendrickx \n" "Language-Team: Dutch (Belgium) \n" @@ -30192,22 +30192,28 @@ msgid "" "Your emergency codes:\n" "{tokens}" msgstr "" +"Uw noodcodes zijn opnieuw gegenereerd. Vergeet niet om ze op een veilige " +"plaats te bewaren voor het geval u geen toegang meer hebt tot uw apparaten. " +"U kunt ze hier niet meer opnieuw laten tonen.\n" +"\n" +"Uw noodcodes: \n" +"{tokens}" #: pretix/control/views/user.py:652 msgid "Your notifications have been disabled." -msgstr "" +msgstr "Uw meldingen zijn uitgeschakeld." #: pretix/control/views/user.py:701 pretix/control/views/user.py:741 msgid "Your notification settings have been saved." -msgstr "" +msgstr "Uw meldingsinstellingen zijn opgeslagen." #: pretix/control/views/user.py:819 msgid "Your comment has been saved." -msgstr "" +msgstr "Uw commentaar is opgeslagen." #: pretix/control/views/user.py:908 msgid "Your email address was already verified." -msgstr "" +msgstr "Uw e-mailadres is al bevestigd." #: pretix/control/views/user.py:930 #, python-brace-format @@ -30215,26 +30221,28 @@ msgid "" "Please enter the confirmation code we sent to your email address " "{email}." msgstr "" +"Voer de bevestigingscode in die we naar het e-mailadres {email} hebben gestuurd." #: pretix/control/views/user.py:950 msgid "We were unable to verify your confirmation code. Please try again." -msgstr "" +msgstr "We konden uw bevestigingscode niet verifiëren. Probeer het opnieuw." #: pretix/control/views/user.py:975 msgid "Your email address has been changed successfully." -msgstr "" +msgstr "Uw e-mailadres is met succes gewijzigd." #: pretix/control/views/user.py:977 msgid "Your email address has been confirmed successfully." -msgstr "" +msgstr "Uw e-mailadres is bevestigd." #: pretix/control/views/user.py:981 msgid "The entered confirmation code is not correct. Please try again." -msgstr "" +msgstr "De ingevoerde bevestigingscode is niet correct. Probeer het opnieuw." #: pretix/control/views/users.py:145 msgid "We sent out an email containing further instructions." -msgstr "" +msgstr "We hebben een e-mail met verdere instructies verstuurd." #: pretix/control/views/users.py:164 msgid "" @@ -30242,6 +30250,10 @@ msgid "" "This will usually happen if you lost access to your two-factor credentials " "and requested a reset of the credentials." msgstr "" +"Er is een noodcode voor twee-factor-authenticatie gegenereerd door een " +"systeembeheerder. Dat gebeurt meestal als u geen toegang meer hebt tot uw " +"inloggegevens voor twee-factor-authenticatie en gevraagd hebt om ze te " +"resetten." #: pretix/control/views/users.py:169 #, python-brace-format @@ -30251,96 +30263,101 @@ msgid "" "(other than email, if possible). Any previous emergency tokens for this user " "remain active." msgstr "" +"Het noodtoken voor deze gebruiker is \"{token}\". Het token kan slechts één " +"keer worden gebruikt en mag alleen via een geverifieerd kanaal worden " +"verzonden (idealiter geen e-mail). Tokens die al gegenereerd zijn, blijven " +"actief." #: pretix/control/views/users.py:313 msgid "The new user has been created." -msgstr "" +msgstr "De nieuwe gebruiker is aangemaakt." #: pretix/control/views/vouchers.py:120 msgid "Reserve quota" -msgstr "" +msgstr "Reserveren in het quotum" #: pretix/control/views/vouchers.py:120 msgid "Bypass quota" -msgstr "" +msgstr "Quotum omzeilen" #: pretix/control/views/vouchers.py:209 pretix/control/views/vouchers.py:241 #: pretix/control/views/vouchers.py:303 msgid "The requested voucher does not exist." -msgstr "" +msgstr "De gevraagde voucher bestaat niet." #: pretix/control/views/vouchers.py:219 msgid "The selected cart positions have been removed." -msgstr "" +msgstr "De geselecteerde posities in het winkelwagentje zijn verwijderd." #: pretix/control/views/vouchers.py:245 pretix/control/views/vouchers.py:255 msgid "A voucher can not be deleted if it already has been redeemed." -msgstr "" +msgstr "Een ingewisselde voucher kan niet verwijderd worden." #: pretix/control/views/vouchers.py:261 msgid "The selected voucher has been deleted." -msgstr "" +msgstr "De geselecteerde voucher is verwijderd." #: pretix/control/views/vouchers.py:381 #, python-brace-format msgid "The new voucher has been created: {code}" -msgstr "" +msgstr "De nieuwe voucher is aangemaakt: {code}" #: pretix/control/views/vouchers.py:405 msgid "There is no voucher with the given voucher code." -msgstr "" +msgstr "Er is geen voucher met de opgegeven vouchercode." #: pretix/control/views/vouchers.py:520 msgid "The new vouchers have been created." -msgstr "" +msgstr "De nieuwe vouchers zijn aangemaakt." #: pretix/control/views/vouchers.py:643 msgid "The selected vouchers have been deleted or disabled." -msgstr "" +msgstr "De geselecteerde vouchers zijn verwijderd of uitgeschakeld." #: pretix/control/views/waitinglist.py:70 #, python-brace-format msgid "{num} vouchers have been created and sent out via email." -msgstr "" +msgstr "{num} vouchers zijn aangemaakt en verstuurd via e-mail." #: pretix/control/views/waitinglist.py:183 msgid "The selected entries have been deleted." -msgstr "" +msgstr "De geselecteerde inschrijvingen zijn verwijderd." #: pretix/control/views/waitinglist.py:196 msgid "" "An email containing a voucher code has been sent to the specified address." msgstr "" +"Er is een e-mail met een vouchercode verstuurd naar het opgegeven adres." #: pretix/control/views/waitinglist.py:200 #: pretix/control/views/waitinglist.py:219 #: pretix/control/views/waitinglist.py:238 msgid "Waiting list entry not found." -msgstr "" +msgstr "Wachtlijstinschrijving niet gevonden." #: pretix/control/views/waitinglist.py:216 msgid "The waiting list entry has been moved to the top." -msgstr "" +msgstr "De wachtlijstinschrijving is verplaatst naar het begin van de lijst." #: pretix/control/views/waitinglist.py:235 msgid "The waiting list entry has been moved to the end of the list." -msgstr "" +msgstr "De wachtlijstinschrijving is verplaatst naar het eind van de lijst." #: pretix/control/views/waitinglist.py:326 msgid "On list since" -msgstr "" +msgstr "Op wachtlijst sinds" #: pretix/control/views/waitinglist.py:347 msgid "Waiting" -msgstr "" +msgstr "Wachtend" #: pretix/control/views/waitinglist.py:385 msgid "The requested entry does not exist." -msgstr "" +msgstr "De gevraagde inschrijving bestaat niet." #: pretix/control/views/waitinglist.py:393 msgid "The selected entry has been deleted." -msgstr "" +msgstr "De geselecteerde inschrijving is verwijderd." #: pretix/control/views/waitinglist.py:418 msgid "The waitinglist entry has been changed." @@ -30348,7 +30365,7 @@ msgstr "Inschrijving op de wachtlijst gewijzigd." #: pretix/helpers/countries.py:134 msgid "Belarus" -msgstr "" +msgstr "Wit-Rusland" #: pretix/helpers/countries.py:135 msgid "French Guiana" @@ -30356,11 +30373,11 @@ msgstr "Frans-Guyana" #: pretix/helpers/countries.py:136 msgid "North Macedonia" -msgstr "" +msgstr "Noord-Macedonië" #: pretix/helpers/countries.py:137 msgid "Macao" -msgstr "" +msgstr "Macau" #: pretix/helpers/daterange.py:54 pretix/helpers/daterange.py:126 #: pretix/presale/templates/pretixpresale/fragment_calendar.html:78 @@ -30368,7 +30385,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/organizers/index.html:71 msgctxt "timerange" msgid "until" -msgstr "" +msgstr "tot" #: pretix/helpers/images.py:61 pretix/helpers/images.py:67 #: pretix/helpers/images.py:85 @@ -30381,11 +30398,11 @@ msgstr "" #: pretix/helpers/payment.py:124 msgid "Open BezahlCode in your banking app to start the payment process." -msgstr "" +msgstr "Open BezahlCode in uw bankapp om het betalingsproces te starten." #: pretix/helpers/security.py:172 msgid "Login from new source detected" -msgstr "" +msgstr "Login vanaf nieuwe locatie gedetecteerd" #: pretix/helpers/security.py:176 msgid "Unknown country" @@ -30393,19 +30410,19 @@ msgstr "Onbekend land" #: pretix/multidomain/models.py:36 msgid "Organizer domain" -msgstr "" +msgstr "Domein van de organisator" #: pretix/multidomain/models.py:37 msgid "Alternative organizer domain for a set of events" -msgstr "" +msgstr "Alternatieve organisator voor een reeks evenementen" #: pretix/multidomain/models.py:38 msgid "Event domain" -msgstr "" +msgstr "Domein evenement" #: pretix/multidomain/models.py:44 msgid "Domain name" -msgstr "" +msgstr "Domeinnaam" #: pretix/multidomain/models.py:50 msgid "Mode" @@ -30413,15 +30430,15 @@ msgstr "Modus" #: pretix/multidomain/models.py:69 msgid "Known domain" -msgstr "" +msgstr "Bekend domein" #: pretix/multidomain/models.py:70 msgid "Known domains" -msgstr "" +msgstr "Bekende domeinen" #: pretix/plugins/autocheckin/apps.py:30 pretix/plugins/autocheckin/apps.py:33 msgid "Automated check-in" -msgstr "" +msgstr "Automatisch inchecken" #: pretix/plugins/autocheckin/apps.py:34 pretix/plugins/badges/apps.py:34 #: pretix/plugins/banktransfer/apps.py:36 @@ -30433,127 +30450,132 @@ msgstr "" #: pretix/plugins/stripe/apps.py:35 pretix/plugins/ticketoutputpdf/apps.py:48 #: pretix/plugins/webcheckin/apps.py:34 msgid "the pretix team" -msgstr "" +msgstr "het pretix-team" #: pretix/plugins/autocheckin/apps.py:39 msgid "Automatically check-in specific tickets after they have been sold." -msgstr "" +msgstr "Bepaalde tickets automatisch inchecken nadat ze verkocht zijn." #: pretix/plugins/autocheckin/apps.py:42 pretix/plugins/webcheckin/apps.py:40 #: pretix/plugins/webcheckin/templates/pretixplugins/webcheckin/index.html:10 msgid "Check-in" -msgstr "" +msgstr "Check-in" #: pretix/plugins/autocheckin/apps.py:42 #: pretix/plugins/autocheckin/signals.py:47 #: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/add.html:13 #: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/edit.html:13 msgid "Auto check-in" -msgstr "" +msgstr "Automatische check-in" #: pretix/plugins/autocheckin/forms.py:60 #: pretix/plugins/autocheckin/models.py:82 msgid "Only including usage of payment providers" -msgstr "" +msgstr "Alleen inclusief gebruik van betalingsproviders" #: pretix/plugins/autocheckin/forms.py:120 msgid "All variations" -msgstr "" +msgstr "Alle varianten" #: pretix/plugins/autocheckin/forms.py:247 msgid "" "When restricting by payment method, the rule should run after the payment " "was received." msgstr "" +"Als de regel beperkt is tot bepaalde betaalmethoden, moet hij pas worden " +"uitgevoerd nadat de betaling voltooid is." #: pretix/plugins/autocheckin/models.py:36 msgid "After order was placed" -msgstr "" +msgstr "Na ontvangst van de bestelling" #: pretix/plugins/autocheckin/models.py:37 msgid "After order was paid" -msgstr "" +msgstr "Na betaling van de bestelling" #: pretix/plugins/autocheckin/models.py:48 msgid "" "If you keep this empty, all lists that match the purchased product will be " "used." msgstr "" +"Als u dit leeg laat, worden alle lijsten die overeenkomen met het gekochte " +"product gebruikt." #: pretix/plugins/autocheckin/models.py:59 msgid "All sales channels" -msgstr "" +msgstr "Alle verkoopskanalen" #: pretix/plugins/autocheckin/models.py:69 msgid "All products and variations" -msgstr "" +msgstr "Alle producten en varianten" #: pretix/plugins/autocheckin/models.py:78 msgid "All payment methods" -msgstr "" +msgstr "Alle betaalmethodes" #: pretix/plugins/autocheckin/signals.py:70 msgid "An auto check-in rule was created" -msgstr "" +msgstr "Er is een regel voor automatisch inchecken aangemaakt" #: pretix/plugins/autocheckin/signals.py:72 msgid "An auto check-in rule was updated" -msgstr "" +msgstr "De regel voor automatisch inchecken is bijgewerkt" #: pretix/plugins/autocheckin/signals.py:75 msgid "An auto check-in rule was deleted" -msgstr "" +msgstr "De regel voor automatisch inchecken is verwijderd" #: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/add.html:4 #: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/add.html:6 msgid "Create auto check-in rule" -msgstr "" +msgstr "Regel voor automatisch inchecken aanmaken" #: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/add.html:18 #: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/edit.html:18 msgid "Conditions" -msgstr "" +msgstr "Voorwaarden" #: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/delete.html:4 #: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/delete.html:6 msgid "Delete auto check-in rule" -msgstr "" +msgstr "Regel voor automatisch inchecken verwijderen" #: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/delete.html:9 msgid "Are you sure you want to delete the auto check-in rule?" msgstr "" +"Weet u zeker dat u de regel voor automatisch inchecken wilt verwijderen?" #: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/edit.html:4 #: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/edit.html:6 msgid "Auto check-in rule" -msgstr "" +msgstr "Regel voor automatisch inchecken" #: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/index.html:5 #: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/index.html:7 msgid "Auto check-in rules" -msgstr "" +msgstr "Regels voor automatisch inchecken" #: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/index.html:11 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_list.html:96 msgid "You haven't created any rules yet." -msgstr "" +msgstr "U hebt nog geen regels aangemaakt." #: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/index.html:17 #: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/index.html:22 msgid "Create a new check-in rule" -msgstr "" +msgstr "Nieuwe regel voor inchecken aanmaken" #: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/index.html:32 msgid "Payment methods" -msgstr "" +msgstr "Betaalmethodes" #: pretix/plugins/autocheckin/views.py:119 pretix/plugins/sendmail/views.py:603 msgid "Your rule has been created." -msgstr "" +msgstr "Uw regel is aangemaakt." #: pretix/plugins/autocheckin/views.py:209 pretix/plugins/sendmail/views.py:730 msgid "The selected rule has been deleted." -msgstr "" +msgstr "De geselecteerde regel is verwijderd." #: pretix/plugins/badges/apps.py:30 pretix/plugins/badges/apps.py:33 #: pretix/plugins/badges/apps.py:41 pretix/plugins/badges/signals.py:54 @@ -30563,7 +30585,7 @@ msgstr "" #: pretix/plugins/badges/templates/pretixplugins/badges/index.html:4 #: pretix/plugins/badges/templates/pretixplugins/badges/index.html:6 msgid "Badges" -msgstr "" +msgstr "Badges" #: pretix/plugins/badges/apps.py:38 msgid "" @@ -30571,57 +30593,61 @@ msgid "" "download the badges in the backend or automatically print them with our " "check-in apps." msgstr "" +"Automatisch badges of naambordjes voor uw deelnemers genereren. U kunt de " +"badges in het beheerdersgedeelte downloaden of ze automatisch bij de ingang " +"afdrukken met onze check-in-apps." #: pretix/plugins/badges/exporters.py:89 msgid "One badge per page" -msgstr "" +msgstr "Eén badge per pagina" #: pretix/plugins/badges/exporters.py:97 msgid "4 landscape A6 pages on one A4 page" -msgstr "" +msgstr "4 liggende A6-pagina's op één A4-pagina" #: pretix/plugins/badges/exporters.py:105 msgid "4 portrait A6 pages on one A4 page" -msgstr "" +msgstr "4 staande A6-pagina's op één A4-pagina" #: pretix/plugins/badges/exporters.py:113 msgid "8 landscape A7 pages on one A4 page" -msgstr "" +msgstr "8 liggende A7-pagina's op één A4-pagina" #: pretix/plugins/badges/exporters.py:121 msgid "8 portrait A7 pages on one A4 page" -msgstr "" +msgstr "8 staande A7-pagina's op één A4-pagina" #: pretix/plugins/badges/exporters.py:353 msgid "None of the selected products is configured to print badges." -msgstr "" +msgstr "Geen van de gekozen producten is ingesteld om badges te printen." #: pretix/plugins/badges/exporters.py:421 msgid "Attendee badges" -msgstr "" +msgstr "Deelnemersbadges" #: pretix/plugins/badges/exporters.py:422 #: pretix/plugins/ticketoutputpdf/exporters.py:69 msgctxt "export_category" msgid "PDF collections" -msgstr "" +msgstr "PDF-verzamelingen" #: pretix/plugins/badges/exporters.py:423 msgid "Download all attendee badges as one large PDF for printing." msgstr "" +"Alle deelnemersbadges in één groot PDF-bestand downloaden om af te drukken." #: pretix/plugins/badges/exporters.py:444 #: pretix/plugins/ticketoutputpdf/exporters.py:80 msgid "Include pending orders" -msgstr "" +msgstr "Inclusief openstaande bestellingen" #: pretix/plugins/badges/exporters.py:449 msgid "Include add-on or bundled positions" -msgstr "" +msgstr "Inclusief add-on of gebundelde posities" #: pretix/plugins/badges/exporters.py:454 msgid "Rendering option" -msgstr "" +msgstr "Afdrukmodus" #: pretix/plugins/badges/exporters.py:459 msgid "" @@ -30630,38 +30656,42 @@ msgid "" "Please note that your individual badge layouts must already be in the " "correct size." msgstr "" +"Met deze optie kunt u meerdere badges op één pagina afdrukken, bijvoorbeeld " +"wanneer u een vel met stickers wilt afdrukken op een gewone kantoorprinter. " +"Houd er rekening mee dat de afzonderlijke badge-ontwerpen al de juiste " +"afmetingen moeten hebben." #: pretix/plugins/badges/exporters.py:465 msgid "Start event date" -msgstr "" +msgstr "Vroegste datum" #: pretix/plugins/badges/exporters.py:468 msgid "Only include tickets for dates on or after this date." -msgstr "" +msgstr "Alleen tickets voor data op of na deze datum." #: pretix/plugins/badges/exporters.py:472 msgid "End event date" -msgstr "" +msgstr "Uiterste datum" #: pretix/plugins/badges/exporters.py:475 msgid "Only include tickets ordered on or before this date." -msgstr "" +msgstr "Alleen tickets die besteld zijn op of voor deze datum." #: pretix/plugins/badges/exporters.py:479 msgid "Start order date" -msgstr "" +msgstr "Startdatum bestelling" #: pretix/plugins/badges/exporters.py:482 msgid "Only include tickets ordered on or after this date." -msgstr "" +msgstr "Alleen tickets die besteld zijn op of na deze datum." #: pretix/plugins/badges/exporters.py:486 msgid "End order date" -msgstr "" +msgstr "Einddatum bestelling" #: pretix/plugins/badges/exporters.py:489 msgid "Only include tickets for dates on or before this date." -msgstr "" +msgstr "Alleen tickets op of vóór deze datum." #: pretix/plugins/badges/exporters.py:493 #: pretix/plugins/checkinlists/exporters.py:118 @@ -30669,7 +30699,7 @@ msgstr "" #: pretix/plugins/reports/exporters.py:693 #: pretix/plugins/ticketoutputpdf/exporters.py:92 msgid "Sort by" -msgstr "" +msgstr "Sorteren op" #: pretix/plugins/badges/exporters.py:661 #: pretix/plugins/ticketoutputpdf/exporters.py:242 @@ -30678,64 +30708,67 @@ msgid "" "invalid values in your databases, such as answers to number questions which " "are not a number." msgstr "" +"Uw gegevens konden niet geconverteerd worden zoals gevraagd. Dit kan worden " +"veroorzaakt door ongeldige waarden in uw databases, zoals antwoorden op " +"numerieke vragen die geen getal zijn." #: pretix/plugins/badges/forms.py:33 msgid "Template" -msgstr "" +msgstr "Sjabloon" #: pretix/plugins/badges/forms.py:34 msgid "" "You can modify the layout or change to a different page size in the next " "step." -msgstr "" +msgstr "In de volgende stap kunt u de lay-out of het paginaformaat aanpassen." #: pretix/plugins/badges/forms.py:51 msgid "(Do not print badges)" -msgstr "" +msgstr "(Geen badges printen)" #: pretix/plugins/badges/forms.py:84 #: pretix/plugins/badges/templates/pretixplugins/badges/edit.html:8 #: pretix/plugins/badges/templates/pretixplugins/badges/edit.html:15 msgid "Badge layout" -msgstr "" +msgstr "Badge-lay-out" #: pretix/plugins/badges/signals.py:176 msgid "Badge layout created." -msgstr "" +msgstr "Badge-lay-out aangemaakt." #: pretix/plugins/badges/signals.py:177 msgid "Badge layout deleted." -msgstr "" +msgstr "Badge-lay-out verwijderd." #: pretix/plugins/badges/signals.py:178 msgid "Badge layout changed." -msgstr "" +msgstr "Badge-lay-out gewijzigd." #: pretix/plugins/badges/signals.py:182 #, python-brace-format msgid "Badge layout {val}" -msgstr "" +msgstr "Badge-lay-out {val}" #: pretix/plugins/badges/templates.py:83 msgid "A6 landscape" -msgstr "" +msgstr "A6 liggend" #: pretix/plugins/badges/templates.py:88 msgid "A6 portrait" -msgstr "" +msgstr "A6 staand" #: pretix/plugins/badges/templates.py:93 msgid "A7 landscape" -msgstr "" +msgstr "A7 liggend" #: pretix/plugins/badges/templates.py:98 msgid "A7 portrait" -msgstr "" +msgstr "A7 staand" #: pretix/plugins/badges/templates.py:104 #, python-brace-format msgid "{width} x {height} mm butterfly badge" -msgstr "" +msgstr "{width} x {height} mm butterfly-badge" #: pretix/plugins/badges/templates.py:203 #: pretix/plugins/badges/templates.py:208 @@ -30751,55 +30784,57 @@ msgstr "" #: pretix/plugins/badges/templates.py:259 #, python-brace-format msgid "{width} x {height} mm label" -msgstr "" +msgstr "{width} x {height} mm label" #: pretix/plugins/badges/templates/pretixplugins/badges/control_order_info.html:16 #: pretix/plugins/badges/templates/pretixplugins/badges/index.html:27 msgid "Print badges" -msgstr "" +msgstr "Badges afdrukken" #: pretix/plugins/badges/templates/pretixplugins/badges/delete.html:9 #, python-format msgid "" "Are you sure you want to delete the badge layout %(layout)s?" msgstr "" +"Weet u zeker dat u de badge-lay-out %(layout)s wilt " +"verwijderen?" #: pretix/plugins/badges/templates/pretixplugins/badges/edit.html:6 #: pretix/plugins/badges/templates/pretixplugins/badges/edit.html:13 #, python-format msgid "Badge layout: %(name)s" -msgstr "" +msgstr "Badge-lay-out: %(name)s" #: pretix/plugins/badges/templates/pretixplugins/badges/edit.html:26 msgid "Save & continue" -msgstr "" +msgstr "Opslaan & doorgaan" #: pretix/plugins/badges/templates/pretixplugins/badges/index.html:10 msgid "You haven't created any badge layouts yet." -msgstr "" +msgstr "U hebt nog geen badge-lay-outs aangemaakt." #: pretix/plugins/badges/templates/pretixplugins/badges/index.html:17 #: pretix/plugins/badges/templates/pretixplugins/badges/index.html:24 msgid "Create a new badge layout" -msgstr "" +msgstr "Maak een nieuwe badge-lay-out aan" #: pretix/plugins/badges/views.py:90 msgid "The new badge layout has been created." -msgstr "" +msgstr "De nieuwe badge-lay-out is aangemaakt." #: pretix/plugins/badges/views.py:151 pretix/plugins/badges/views.py:184 #: pretix/plugins/badges/views.py:214 msgid "The requested badge layout does not exist." -msgstr "" +msgstr "De gevraagde badge-lay-out bestaat niet." #: pretix/plugins/badges/views.py:196 msgid "The selected badge layout been deleted." -msgstr "" +msgstr "De geselecteerde badge-lay-out is verwijderd." #: pretix/plugins/badges/views.py:218 #, python-brace-format msgid "Badge layout: {}" -msgstr "" +msgstr "Badge-lay-out: {}" #: pretix/plugins/banktransfer/apps.py:32 #: pretix/plugins/banktransfer/apps.py:35 @@ -30810,13 +30845,15 @@ msgstr "" #: pretix/plugins/banktransfer/signals.py:48 #: pretix/plugins/banktransfer/signals.py:86 msgid "Bank transfer" -msgstr "" +msgstr "Bankoverschrijving" #: pretix/plugins/banktransfer/apps.py:40 msgid "" "Accept payments from your customers using classical wire transfer methods " "with your own bank account." msgstr "" +"Ontvang betalingen van klanten via een gewone bankoverschrijving op uw eigen " +"bankrekening." #: pretix/plugins/banktransfer/apps.py:46 #: pretix/plugins/banktransfer/signals.py:56 @@ -30826,22 +30863,23 @@ msgstr "" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_base_organizer.html:4 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_base_organizer.html:7 msgid "Import bank data" -msgstr "" +msgstr "Bankgegevens importeren" #: pretix/plugins/banktransfer/apps.py:47 #: pretix/plugins/banktransfer/signals.py:64 #: pretix/plugins/banktransfer/signals.py:101 msgid "Export refunds" -msgstr "" +msgstr "Terugbetalingen exporteren" #: pretix/plugins/banktransfer/apps.py:62 msgid "" "Install the python package 'chardet' for better CSV import capabilities." msgstr "" +"Installeer het python-package 'chardet' voor betere CSV-importmogelijkheden." #: pretix/plugins/banktransfer/camtimport.py:33 msgid "Empty file or unknown format." -msgstr "" +msgstr "Leeg bestand of onbekend bestandsformaat." #: pretix/plugins/banktransfer/payment.py:69 msgid "" @@ -30851,28 +30889,35 @@ msgid "" "import a digital bank statement in order to give pretix the required " "information." msgstr "" +"Ik begrijp dat de deelnemers hun betaling rechtstreeks naar mijn " +"bankrekening zullen overmaken en dat pretix niet automatisch kan zien welke " +"betalingen binnengekomen zijn. Daarom zal ik de betalingen handmatig als " +"succesvol markeren of regelmatig een digitaal bankafschrift importeren, " +"zodat pretix de tickets kan versturen." #: pretix/plugins/banktransfer/payment.py:76 msgid "Bank account type" -msgstr "" +msgstr "Soort bankrekening" #: pretix/plugins/banktransfer/payment.py:79 msgid "SEPA bank account" -msgstr "" +msgstr "SEPA-bankrekening" #: pretix/plugins/banktransfer/payment.py:80 msgid "Other bank account" -msgstr "" +msgstr "Andere bankrekening" #: pretix/plugins/banktransfer/payment.py:85 msgid "Name of account holder" -msgstr "" +msgstr "Naam van rekeninghouder" #: pretix/plugins/banktransfer/payment.py:87 msgid "" "Please note: special characters other than letters, numbers, and some " "punctuation can cause problems with some banks." msgstr "" +"Opgelet: andere tekens dan letters, cijfers en sommige leestekens kunnen " +"problemen veroorzaken bij sommige banken." #: pretix/plugins/banktransfer/payment.py:97 #: pretix/plugins/banktransfer/payment.py:302 @@ -30894,11 +30939,11 @@ msgstr "BIC" #: pretix/plugins/banktransfer/payment.py:117 msgid "Name of bank" -msgstr "" +msgstr "Naam van de bank" #: pretix/plugins/banktransfer/payment.py:127 msgid "Bank account details" -msgstr "" +msgstr "Bankgegevens" #: pretix/plugins/banktransfer/payment.py:130 msgid "" @@ -30906,6 +30951,10 @@ msgid "" "transfer payment. If you have lots of international customers, they might " "need your full address and your bank's full address." msgstr "" +"Vermeld alle andere informatie die uw klanten nodig hebben om een " +"bankoverschrijving naar u te doen. Als u veel internationale klanten hebt, " +"hebben zij mogelijk uw volledige adres en het volledige adres van uw bank " +"nodig." #: pretix/plugins/banktransfer/payment.py:136 msgid "" @@ -30913,36 +30962,41 @@ msgid "" "everything that your customers need to transfer the money, e.g. account " "numbers, routing numbers, addresses, etc." msgstr "" +"Voor SEPA-rekeningen kunt u dit veld leeg laten. Anders vult u alle gegevens " +"in die uw klanten nodig hebben voor de overschrijving, zoals " +"rekeningnummers, bankcodes, adressen, enz." #: pretix/plugins/banktransfer/payment.py:155 msgid "Do not include hyphens in the payment reference." -msgstr "" +msgstr "Zet geen streepjes in het betalingskenmerk." #: pretix/plugins/banktransfer/payment.py:156 msgid "This is required in some countries." -msgstr "" +msgstr "Dit is in sommige landen verplicht." #: pretix/plugins/banktransfer/payment.py:160 msgid "Include invoice number in the payment reference." -msgstr "" +msgstr "Zet het factuurnummer in het betalingskenmerk." #: pretix/plugins/banktransfer/payment.py:164 msgid "Prefix for the payment reference" -msgstr "" +msgstr "Prefix voor het betalingskenmerk" #: pretix/plugins/banktransfer/payment.py:168 msgid "Additional text to show on pending orders" -msgstr "" +msgstr "Extra tekst die wordt weergegeven bij openstaande bestellingen" #: pretix/plugins/banktransfer/payment.py:169 msgid "" "This text will be shown on the order confirmation page for pending orders in " "addition to the standard text." msgstr "" +"Deze tekst zal naast de standaardtekst getoond worden op de " +"bevestigingspagina voor openstaande bestellingen." #: pretix/plugins/banktransfer/payment.py:178 msgid "IBAN blocklist for refunds" -msgstr "" +msgstr "IBAN-blokkeerlijst voor terugbetalingen" #: pretix/plugins/banktransfer/payment.py:181 msgid "" @@ -30954,29 +31008,40 @@ msgid "" "can e.g. ban DE0012345 to ban all German IBANs with the bank identifier " "starting with 12345." msgstr "" +"Eén IBAN of één IBAN-voorvoegsel per regel. Het systeem probeert geen " +"automatische terugbetalingen naar deze IBAN’s te verzenden. Dit is " +"bijvoorbeeld handig als u veel „doorgestuurde betalingen“ van een " +"betalingsdienstaanbieder ontvangt. U kunt ook landcodes zoals „GB“ opgeven " +"als u nooit terugbetalingen naar Britse IBAN’s wilt initiëren. De " +"controlecijfers van de IBAN worden bij de vergelijking genegeerd, zodat u " +"bijvoorbeeld DE0012345 kunt blokkeren om alle Duitse IBAN's met een bankcode " +"die begint met 12345 te blokkeren." #: pretix/plugins/banktransfer/payment.py:208 msgid "Restrict to business customers" -msgstr "" +msgstr "Beperken tot zakelijke klanten" #: pretix/plugins/banktransfer/payment.py:209 msgid "" "Only allow choosing this payment provider for customers who enter an invoice " "address and select \"Business or institutional customer\"." msgstr "" +"Bied deze betaalmethode alleen aan klanten aan die een factuuradres hebben " +"opgegeven en daarbij de optie \"Zakelijke klant of instelling\" hebben " +"geselecteerd." #: pretix/plugins/banktransfer/payment.py:239 msgid "Please fill out your bank account details." -msgstr "" +msgstr "Vul uw bankgegevens in." #: pretix/plugins/banktransfer/payment.py:243 msgid "Please enter your bank account details." -msgstr "" +msgstr "Voer uw bankgegevens in." #: pretix/plugins/banktransfer/payment.py:293 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/pending.html:14 msgid "Please transfer the full amount to the following bank account:" -msgstr "" +msgstr "Maak het volledige bedrag over naar de volgende bankrekening:" #: pretix/plugins/banktransfer/payment.py:301 #: pretix/plugins/banktransfer/payment.py:458 @@ -30999,25 +31064,27 @@ msgstr "Rekeninghouder" #: pretix/plugins/stripe/templates/pretixplugins/stripe/control.html:47 #: pretix/plugins/stripe/templates/pretixplugins/stripe/control.html:55 msgid "Bank" -msgstr "" +msgstr "Bank" #: pretix/plugins/banktransfer/payment.py:343 msgid "Invalid IBAN/BIC" -msgstr "" +msgstr "Ongeldig IBAN/BIC" #: pretix/plugins/banktransfer/payment.py:428 #, python-brace-format msgid "Bank account {iban}" -msgstr "" +msgstr "Bankrekening {iban}" #: pretix/plugins/banktransfer/payment.py:444 msgid "Can only create a bank transfer refund from an existing payment." msgstr "" +"Een terugbetaling via bankoverschrijving kan alleen van een bestaande " +"betaling gestart worden." #: pretix/plugins/banktransfer/payment.py:464 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/new_refund_control_form.html:7 msgid "BIC (optional)" -msgstr "" +msgstr "BIC (optioneel)" #: pretix/plugins/banktransfer/payment.py:503 msgid "Your input was invalid, please see below for details." -- 2.49.1 From 531f697b9a799d1b18dff5aa8a16e006c2e36f76 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Mar 2026 12:42:22 +0000 Subject: [PATCH 010/107] Update redis requirement from ==7.1.* to ==7.4.* Updates the requirements on [redis](https://github.com/redis/redis-py) to permit the latest version. - [Release notes](https://github.com/redis/redis-py/releases) - [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES) - [Commits](https://github.com/redis/redis-py/compare/v7.1.0...v7.4.0) --- updated-dependencies: - dependency-name: redis dependency-version: 7.4.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 001d201e3..98d08f98e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -90,7 +90,7 @@ dependencies = [ "pytz-deprecation-shim==0.1.*", "pyuca", "qrcode==8.2", - "redis==7.1.*", + "redis==7.4.*", "reportlab==4.4.*", "requests==2.32.*", "sentry-sdk==2.57.*", -- 2.49.1 From 8c251029b93db65524d52ea6705f217aacdc2e71 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Wed, 1 Apr 2026 09:29:14 +0200 Subject: [PATCH 011/107] Fix useless cart sessions being created (#6045) * Do not create useless cart session accessing invoice address * Skip useless code paths in CartMixin * Do not create cart session on view with active session * Create regression tests --- src/pretix/presale/views/__init__.py | 36 ++++++++++++++++++++-------- src/pretix/presale/views/cart.py | 6 +++-- src/tests/presale/test_event.py | 29 ++++++++++++++++++++++ 3 files changed, 59 insertions(+), 12 deletions(-) diff --git a/src/pretix/presale/views/__init__.py b/src/pretix/presale/views/__init__.py index 640b4532b..3bb9426e3 100644 --- a/src/pretix/presale/views/__init__.py +++ b/src/pretix/presale/views/__init__.py @@ -70,18 +70,21 @@ def cached_invoice_address(request): # do not create a session, if we don't have a session we also don't have an invoice address ;) request._checkout_flow_invoice_address = InvoiceAddress() return request._checkout_flow_invoice_address - cs = cart_session(request) - iapk = cs.get('invoice_address') - if not iapk: + cs = cart_session(request, create=False) + if cs is None: request._checkout_flow_invoice_address = InvoiceAddress() else: - try: - with scopes_disabled(): - request._checkout_flow_invoice_address = InvoiceAddress.objects.get( - pk=iapk, order__isnull=True - ) - except InvoiceAddress.DoesNotExist: + iapk = cs.get('invoice_address') + if not iapk: request._checkout_flow_invoice_address = InvoiceAddress() + else: + try: + with scopes_disabled(): + request._checkout_flow_invoice_address = InvoiceAddress.objects.get( + pk=iapk, order__isnull=True + ) + except InvoiceAddress.DoesNotExist: + request._checkout_flow_invoice_address = InvoiceAddress() return request._checkout_flow_invoice_address @@ -111,6 +114,12 @@ class CartMixin: return cached_invoice_address(self.request) def get_cart(self, answers=False, queryset=None, order=None, downloads=False, payments=None): + if not self.request.session.session_key and not order: + # The user has not even a session ID yet, so they can't have a cart and we can save a lot of work + return { + 'positions': [], + # Other keys are not used on non-checkout pages + } if queryset is not None: prefetch = [] if answers: @@ -166,7 +175,8 @@ class CartMixin: else: fees = [] - if not order: + if not order and lcp: + # Do not re-round for empty cart (useless) or confirmed order (incorrect) apply_rounding(self.request.event.settings.tax_rounding, self.invoice_address, self.request.event.currency, [*lcp, *fees]) total = sum([c.price for c in lcp]) + sum([f.value for f in fees]) @@ -277,6 +287,12 @@ class CartMixin: } def current_selected_payments(self, positions, fees, invoice_address, *, warn=False): + from pretix.presale.views.cart import get_or_create_cart_id + + if not get_or_create_cart_id(self.request, create=False): + # No active cart ID, no payments there + return [] + raw_payments = copy.deepcopy(self.cart_session.get('payments', [])) fees = [f for f in fees if f.fee_type != OrderFee.FEE_TYPE_PAYMENT] # we re-compute these here diff --git a/src/pretix/presale/views/cart.py b/src/pretix/presale/views/cart.py index 892719f67..99af19b19 100644 --- a/src/pretix/presale/views/cart.py +++ b/src/pretix/presale/views/cart.py @@ -417,7 +417,7 @@ def get_or_create_cart_id(request, create=True): return new_id -def cart_session(request): +def cart_session(request, create=True): """ Before pretix 1.8.0, all checkout-related information (like the entered email address) was stored in the user's regular session dictionary. This led to data interference and leaks for example if a @@ -428,7 +428,9 @@ def cart_session(request): active cart session sub-dictionary for read and write access. """ request.session.modified = True - cart_id = get_or_create_cart_id(request) + cart_id = get_or_create_cart_id(request, create=create) + if not cart_id and not create: + return None return request.session['carts'][cart_id] diff --git a/src/tests/presale/test_event.py b/src/tests/presale/test_event.py index 58505426e..64558c413 100644 --- a/src/tests/presale/test_event.py +++ b/src/tests/presale/test_event.py @@ -36,6 +36,7 @@ import datetime import re from decimal import Decimal +from importlib import import_module from json import loads from zoneinfo import ZoneInfo @@ -80,6 +81,34 @@ class EventMiddlewareTest(EventTestMixin, SoupTest): doc = self.get_doc('/%s/%s/' % (self.orga.slug, self.event.slug)) self.assertIn(str(self.event.name), doc.find("h1").text) + def test_no_session_cookie_set_on_event_index_view(self): + resp = self.client.get('/%s/%s/' % (self.orga.slug, self.event.slug)) + self.assertEqual(resp.status_code, 200) + assert settings.SESSION_COOKIE_NAME not in self.client.cookies + + def test_no_cart_session_added_on_event_index_view(self): + # Make sure a session is present by doing a cart op on another event + event2 = Event.objects.create( + organizer=self.orga, name='30C3b', slug='30c3b', + date_from=datetime.datetime(now().year + 1, 12, 26, 14, 0, tzinfo=datetime.timezone.utc), + live=True, + ) + self.client.post('/%s/%s/cart/add' % (self.orga.slug, event2.slug), { + 'item_%d' % 1337: '1', # item does not need to exist + 'ajax': 1 + }) + assert settings.SESSION_COOKIE_NAME in self.client.cookies + + # Visit shop, make sure no session is created + resp = self.client.get('/%s/%s/' % (self.orga.slug, self.event.slug)) + self.assertEqual(resp.status_code, 200) + + SessionStore = import_module(settings.SESSION_ENGINE).SessionStore + session = SessionStore(self.client.cookies[settings.SESSION_COOKIE_NAME].value).load() + assert set(session.keys()) == { + f"current_cart_event_{event2.pk}", "carts" + } + def test_not_found(self): resp = self.client.get('/%s/%s/' % ('foo', 'bar')) self.assertEqual(resp.status_code, 404) -- 2.49.1 From ed1459b1ddfc340b6644d19f4ecb6ae3f4e699d4 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Wed, 1 Apr 2026 11:54:48 +0200 Subject: [PATCH 012/107] Order change form: Allow to add multiple identical positions (Z#23227479) (#6044) * Order change form: Allow to add multiple identical positions (Z#23227479) * New implementation --- src/pretix/base/services/orders.py | 115 ++++++++++-------- src/pretix/control/forms/orders.py | 8 ++ .../templates/pretixcontrol/order/change.html | 2 + src/pretix/control/views/orders.py | 13 +- src/tests/base/test_orders.py | 9 ++ src/tests/control/test_orders.py | 3 +- 6 files changed, 95 insertions(+), 55 deletions(-) diff --git a/src/pretix/base/services/orders.py b/src/pretix/base/services/orders.py index c80d735f2..ba3e199b9 100644 --- a/src/pretix/base/services/orders.py +++ b/src/pretix/base/services/orders.py @@ -67,9 +67,9 @@ from pretix.base.email import get_email_context from pretix.base.i18n import get_language_without_region, language from pretix.base.media import MEDIA_TYPES from pretix.base.models import ( - CartPosition, Device, Event, GiftCard, Item, ItemVariation, Membership, - Order, OrderPayment, OrderPosition, Quota, Seat, SeatCategoryMapping, User, - Voucher, + CartPosition, Device, Event, GiftCard, Item, ItemVariation, LogEntry, + Membership, Order, OrderPayment, OrderPosition, Quota, Seat, + SeatCategoryMapping, User, Voucher, ) from pretix.base.models.event import SubEvent from pretix.base.models.orders import ( @@ -1618,7 +1618,7 @@ class OrderChangeManager: MembershipOperation = namedtuple('MembershipOperation', ('position', 'membership')) CancelOperation = namedtuple('CancelOperation', ('position', 'price_diff')) AddOperation = namedtuple('AddOperation', ('item', 'variation', 'price', 'addon_to', 'subevent', 'seat', 'membership', - 'valid_from', 'valid_until', 'is_bundled', 'result')) + 'valid_from', 'valid_until', 'is_bundled', 'result', 'count')) SplitOperation = namedtuple('SplitOperation', ('position',)) FeeValueOperation = namedtuple('FeeValueOperation', ('fee', 'value', 'price_diff')) AddFeeOperation = namedtuple('AddFeeOperation', ('fee', 'price_diff')) @@ -1632,16 +1632,24 @@ class OrderChangeManager: ForceRecomputeOperation = namedtuple('ForceRecomputeOperation', tuple()) class AddPositionResult: - _position: Optional[OrderPosition] + _positions: Optional[List[OrderPosition]] def __init__(self): - self._position = None + self._positions = None @property def position(self) -> OrderPosition: - if self._position is None: + if self._positions is None: raise RuntimeError("Order position has not been created yet. Call commit() first on OrderChangeManager.") - return self._position + if len(self._positions) != 1: + raise RuntimeError("More than one position created.") + return self._positions[0] + + @property + def positions(self) -> List[OrderPosition]: + if self._positions is None: + raise RuntimeError("Order position has not been created yet. Call commit() first on OrderChangeManager.") + return self._positions def __init__(self, order: Order, user=None, auth=None, notify=True, reissue_invoice=True, allow_blocked_seats=False): self.order = order @@ -1848,8 +1856,12 @@ class OrderChangeManager: def add_position(self, item: Item, variation: ItemVariation, price: Decimal, addon_to: OrderPosition = None, subevent: SubEvent = None, seat: Seat = None, membership: Membership = None, - valid_from: datetime = None, valid_until: datetime = None) -> 'OrderChangeManager.AddPositionResult': + valid_from: datetime = None, valid_until: datetime = None, count: int = 1) -> 'OrderChangeManager.AddPositionResult': + if count < 1: + raise ValueError("Count must be positive") if isinstance(seat, str): + if count > 1: + raise ValueError("Cannot combine count > 1 with seat") if not seat: seat = None else: @@ -1903,14 +1915,14 @@ class OrderChangeManager: if self.order.event.settings.invoice_include_free or price.gross != Decimal('0.00'): self._invoice_dirty = True - self._totaldiff_guesstimate += price.gross - self._quotadiff.update(new_quotas) + self._totaldiff_guesstimate += price.gross * count + self._quotadiff.update({q: count for q in new_quotas}) if seat: self._seatdiff.update([seat]) result = self.AddPositionResult() self._operations.append(self.AddOperation(item, variation, price, addon_to, subevent, seat, membership, - valid_from, valid_until, is_bundled, result)) + valid_from, valid_until, is_bundled, result, count)) return result def split(self, position: OrderPosition): @@ -2530,29 +2542,35 @@ class OrderChangeManager: secret_dirty.remove(position) position.save(update_fields=['canceled', 'secret']) elif isinstance(op, self.AddOperation): - pos = OrderPosition.objects.create( - item=op.item, variation=op.variation, addon_to=op.addon_to, - price=op.price.gross, order=self.order, tax_rate=op.price.rate, tax_code=op.price.code, - tax_value=op.price.tax, tax_rule=op.item.tax_rule, - positionid=nextposid, subevent=op.subevent, seat=op.seat, - used_membership=op.membership, valid_from=op.valid_from, valid_until=op.valid_until, - is_bundled=op.is_bundled, - ) - nextposid += 1 - self.order.log_action('pretix.event.order.changed.add', user=self.user, auth=self.auth, data={ - 'position': pos.pk, - 'item': op.item.pk, - 'variation': op.variation.pk if op.variation else None, - 'addon_to': op.addon_to.pk if op.addon_to else None, - 'price': op.price.gross, - 'positionid': pos.positionid, - 'membership': pos.used_membership_id, - 'subevent': op.subevent.pk if op.subevent else None, - 'seat': op.seat.pk if op.seat else None, - 'valid_from': op.valid_from.isoformat() if op.valid_from else None, - 'valid_until': op.valid_until.isoformat() if op.valid_until else None, - }) - op.result._position = pos + new_pos = [] + new_logs = [] + for i in range(op.count): + pos = OrderPosition.objects.create( + item=op.item, variation=op.variation, addon_to=op.addon_to, + price=op.price.gross, order=self.order, tax_rate=op.price.rate, tax_code=op.price.code, + tax_value=op.price.tax, tax_rule=op.item.tax_rule, + positionid=nextposid, subevent=op.subevent, seat=op.seat, + used_membership=op.membership, valid_from=op.valid_from, valid_until=op.valid_until, + is_bundled=op.is_bundled, + ) + nextposid += 1 + new_pos.append(pos) + new_logs.append(self.order.log_action('pretix.event.order.changed.add', user=self.user, auth=self.auth, data={ + 'position': pos.pk, + 'item': op.item.pk, + 'variation': op.variation.pk if op.variation else None, + 'addon_to': op.addon_to.pk if op.addon_to else None, + 'price': op.price.gross, + 'positionid': pos.positionid, + 'membership': pos.used_membership_id, + 'subevent': op.subevent.pk if op.subevent else None, + 'seat': op.seat.pk if op.seat else None, + 'valid_from': op.valid_from.isoformat() if op.valid_from else None, + 'valid_until': op.valid_until.isoformat() if op.valid_until else None, + }, save=False)) + + op.result._positions = new_pos + LogEntry.bulk_create_and_postprocess(new_logs) elif isinstance(op, self.SplitOperation): position = position_cache.setdefault(op.position.pk, op.position) split_positions.append(position) @@ -2877,7 +2895,7 @@ class OrderChangeManager: return total def _check_order_size(self): - if (len(self.order.positions.all()) + len([op for op in self._operations if isinstance(op, self.AddOperation)])) > settings.PRETIX_MAX_ORDER_SIZE: + if (len(self.order.positions.all()) + sum([op.count for op in self._operations if isinstance(op, self.AddOperation)])) > settings.PRETIX_MAX_ORDER_SIZE: raise OrderError( self.error_messages['max_order_size'] % { 'max': settings.PRETIX_MAX_ORDER_SIZE, @@ -2938,7 +2956,7 @@ class OrderChangeManager: ]) + len([ o for o in self._operations if isinstance(o, self.SplitOperation) ]) - adds = len([o for o in self._operations if isinstance(o, self.AddOperation)]) + adds = sum([o.count for o in self._operations if isinstance(o, self.AddOperation)]) if current > 0 and current - cancels + adds < 1: raise OrderError(self.error_messages['complete_cancel']) @@ -2985,17 +3003,18 @@ class OrderChangeManager: elif isinstance(op, self.CancelOperation) and op.position in positions_to_fake_cart: fake_cart.remove(positions_to_fake_cart[op.position]) elif isinstance(op, self.AddOperation): - cp = CartPosition( - event=self.event, - item=op.item, - variation=op.variation, - used_membership=op.membership, - subevent=op.subevent, - seat=op.seat, - ) - cp.override_valid_from = op.valid_from - cp.override_valid_until = op.valid_until - fake_cart.append(cp) + for i in range(op.count): + cp = CartPosition( + event=self.event, + item=op.item, + variation=op.variation, + used_membership=op.membership, + subevent=op.subevent, + seat=op.seat, + ) + cp.override_valid_from = op.valid_from + cp.override_valid_until = op.valid_until + fake_cart.append(cp) try: validate_memberships_in_order(self.order.customer, fake_cart, self.event, lock=True, ignored_order=self.order, testmode=self.order.testmode) except ValidationError as e: diff --git a/src/pretix/control/forms/orders.py b/src/pretix/control/forms/orders.py index 4fc22a590..4df41eaf4 100644 --- a/src/pretix/control/forms/orders.py +++ b/src/pretix/control/forms/orders.py @@ -331,6 +331,10 @@ class OtherOperationsForm(forms.Form): class OrderPositionAddForm(forms.Form): + count = forms.IntegerField( + label=_('Number of products to add'), + initial=1, + ) itemvar = forms.ChoiceField( label=_('Product') ) @@ -432,6 +436,10 @@ class OrderPositionAddForm(forms.Form): d['used_membership'] = [m for m in self.memberships if str(m.pk) == d['used_membership']][0] else: d['used_membership'] = None + if d.get("count", 1) and d.get("seat"): + raise ValidationError({ + "seat": _("You can not choose a seat when adding multiple products at once.") + }) return d diff --git a/src/pretix/control/templates/pretixcontrol/order/change.html b/src/pretix/control/templates/pretixcontrol/order/change.html index e77c792e2..a4dd0c83a 100644 --- a/src/pretix/control/templates/pretixcontrol/order/change.html +++ b/src/pretix/control/templates/pretixcontrol/order/change.html @@ -329,6 +329,7 @@ {{ add_form.custom_error }} {% endif %} + {% bootstrap_field add_form.count layout="control" %} {% bootstrap_field add_form.itemvar layout="control" %} {% bootstrap_field add_form.price addon_after=request.event.currency layout="control" %} {% if add_form.addon_to %} @@ -364,6 +365,7 @@
+ {% bootstrap_field add_position_formset.empty_form.count layout="control" %} {% bootstrap_field add_position_formset.empty_form.itemvar layout="control" %} {% bootstrap_field add_position_formset.empty_form.price addon_after=request.event.currency layout="control" %} {% if add_position_formset.empty_form.addon_to %} diff --git a/src/pretix/control/views/orders.py b/src/pretix/control/views/orders.py index ea6ddfe34..5d6091100 100644 --- a/src/pretix/control/views/orders.py +++ b/src/pretix/control/views/orders.py @@ -2059,12 +2059,13 @@ class OrderChange(OrderView): else: variation = None try: - ocm.add_position(item, variation, - f.cleaned_data['price'], - f.cleaned_data.get('addon_to'), - f.cleaned_data.get('subevent'), - f.cleaned_data.get('seat'), - f.cleaned_data.get('used_membership')) + for i in range(f.cleaned_data.get("count", 1)): + ocm.add_position(item, variation, + f.cleaned_data['price'], + f.cleaned_data.get('addon_to'), + f.cleaned_data.get('subevent'), + f.cleaned_data.get('seat'), + f.cleaned_data.get('used_membership')) except OrderError as e: f.custom_error = str(e) return False diff --git a/src/tests/base/test_orders.py b/src/tests/base/test_orders.py index b46745a36..5056664ca 100644 --- a/src/tests/base/test_orders.py +++ b/src/tests/base/test_orders.py @@ -2406,6 +2406,15 @@ class OrderChangeManagerTests(TestCase): self.ocm.commit() assert self.order.positions.count() == 2 + @classscope(attr='o') + def test_add_item_quota_partial(self): + q1 = self.event.quotas.create(name='Test', size=1) + q1.items.add(self.shirt) + self.ocm.add_position(self.shirt, None, None, None, count=2) + with self.assertRaises(OrderError): + self.ocm.commit() + assert self.order.positions.count() == 2 + @classscope(attr='o') def test_add_item_addon(self): self.shirt.category = self.event.categories.create(name='Add-ons', is_addon=True) diff --git a/src/tests/control/test_orders.py b/src/tests/control/test_orders.py index c6cae66bc..f773c5be3 100644 --- a/src/tests/control/test_orders.py +++ b/src/tests/control/test_orders.py @@ -1584,10 +1584,11 @@ class OrderChangeTests(SoupTest): 'add_position-MAX_NUM_FORMS': '100', 'add_position-0-itemvar': str(self.shirt.pk), 'add_position-0-do': 'on', + 'add_position-0-count': '2', 'add_position-0-price': '14.00', }) with scopes_disabled(): - assert self.order.positions.count() == 3 + assert self.order.positions.count() == 4 assert self.order.positions.last().item == self.shirt assert self.order.positions.last().price == 14 -- 2.49.1 From 8bd0665f37bbe9a5908a7cf56e98ae4e3fcbc52c Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Wed, 1 Apr 2026 12:00:03 +0200 Subject: [PATCH 013/107] Fix password-manager username not saved on customer account creation (#6043) * Fix password-manager username not saved on customer account creation * Fix tests/make email not required --- src/pretix/presale/forms/customer.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pretix/presale/forms/customer.py b/src/pretix/presale/forms/customer.py index ef21ab3c7..5c7187e67 100644 --- a/src/pretix/presale/forms/customer.py +++ b/src/pretix/presale/forms/customer.py @@ -296,7 +296,8 @@ class SetPasswordForm(forms.Form): } email = forms.EmailField( label=_('Email'), - disabled=True + widget=forms.EmailInput(attrs={'autocomplete': 'username', 'readonly': 'readonly'}), + required=False, ) password = forms.CharField( label=_('Password'), -- 2.49.1 From 666b496ab45785feafebcf3b7110dcf607c67b14 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Wed, 1 Apr 2026 13:46:52 +0200 Subject: [PATCH 014/107] Allow to configure a readonly DB connection (#5978) --- src/pretix/settings.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/pretix/settings.py b/src/pretix/settings.py index 21b54a833..6c49116d9 100644 --- a/src/pretix/settings.py +++ b/src/pretix/settings.py @@ -157,7 +157,7 @@ DATABASES = { 'HOST': config.get('database', 'host', fallback=''), 'PORT': config.get('database', 'port', fallback=''), 'CONN_MAX_AGE': 0 if db_backend == 'sqlite3' else 120, - 'CONN_HEALTH_CHECKS': db_backend != 'sqlite3', # Will only be used from Django 4.1 onwards + 'CONN_HEALTH_CHECKS': db_backend != 'sqlite3', 'DISABLE_SERVER_SIDE_CURSORS': db_disable_server_side_cursors, 'OPTIONS': db_options, 'TEST': {} @@ -179,6 +179,21 @@ if config.has_section('replica'): } DATABASE_ROUTERS = ['pretix.helpers.database.ReplicaRouter'] +if config.has_section('dbreadonly'): + DATABASES['readonly'] = { + 'ENGINE': 'django.db.backends.' + db_backend, + 'NAME': config.get('dbreadonly', 'name', fallback=DATABASES['default']['NAME']), + 'USER': config.get('dbreadonly', 'user', fallback=DATABASES['default']['USER']), + 'PASSWORD': config.get('dbreadonly', 'password', fallback=DATABASES['default']['PASSWORD']), + 'HOST': config.get('dbreadonly', 'host', fallback=DATABASES['default']['HOST']), + 'PORT': config.get('dbreadonly', 'port', fallback=DATABASES['default']['PORT']), + 'CONN_MAX_AGE': 0, # do not spam primary with open connections as long as readonly is only used occasionally + 'CONN_HEALTH_CHECKS': db_backend != 'sqlite3', + 'DISABLE_SERVER_SIDE_CURSORS': db_disable_server_side_cursors, + 'OPTIONS': db_options, + 'TEST': {} + } + STATIC_URL = config.get('urls', 'static', fallback='/static/') MEDIA_URL = config.get('urls', 'media', fallback='/media/') -- 2.49.1 From e70452ee47782ebc2cb25f5dee4b35020900e5c0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 23:02:50 +0000 Subject: [PATCH 015/107] Update pillow requirement from ==12.1.* to ==12.2.* Updates the requirements on [pillow](https://github.com/python-pillow/Pillow) to permit the latest version. - [Release notes](https://github.com/python-pillow/Pillow/releases) - [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst) - [Commits](https://github.com/python-pillow/Pillow/compare/12.1.0...12.2.0) --- updated-dependencies: - dependency-name: pillow dependency-version: 12.2.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 98d08f98e..f6989f495 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -76,7 +76,7 @@ dependencies = [ "paypal-checkout-serversdk==1.0.*", "PyJWT==2.12.*", "phonenumberslite==9.0.*", - "Pillow==12.1.*", + "Pillow==12.2.*", "pretix-plugin-build", "protobuf==7.34.*", "psycopg2-binary", -- 2.49.1 From 50c99e12396ceb1fb878f83475d724d6bf818279 Mon Sep 17 00:00:00 2001 From: Ruud Hendrickx Date: Wed, 1 Apr 2026 10:26:23 +0200 Subject: [PATCH 016/107] Translations: Update Dutch (Belgium) Currently translated at 82.8% (5210 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_BE/ powered by weblate --- src/pretix/locale/nl_BE/LC_MESSAGES/django.po | 95 ++++++++++++------- 1 file changed, 63 insertions(+), 32 deletions(-) diff --git a/src/pretix/locale/nl_BE/LC_MESSAGES/django.po b/src/pretix/locale/nl_BE/LC_MESSAGES/django.po index 3e15fb7e2..68b5e8757 100644 --- a/src/pretix/locale/nl_BE/LC_MESSAGES/django.po +++ b/src/pretix/locale/nl_BE/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-03-31 17:00+0000\n" +"PO-Revision-Date: 2026-04-01 17:00+0000\n" "Last-Translator: Ruud Hendrickx \n" "Language-Team: Dutch (Belgium) \n" @@ -31088,7 +31088,7 @@ msgstr "BIC (optioneel)" #: pretix/plugins/banktransfer/payment.py:503 msgid "Your input was invalid, please see below for details." -msgstr "" +msgstr "Uw invoer was ongeldig. Zie hieronder voor details." #: pretix/plugins/banktransfer/refund_export.py:47 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/control.html:10 @@ -31097,78 +31097,88 @@ msgstr "" #: pretix/plugins/paypal2/templates/pretixplugins/paypal2/control.html:12 #: pretix/plugins/paypal2/templates/pretixplugins/paypal2/control_legacy.html:9 msgid "Payer" -msgstr "" +msgstr "Betaler" #: pretix/plugins/banktransfer/refund_export.py:90 msgid "Refund" -msgstr "" +msgstr "Terugbetaling" #: pretix/plugins/banktransfer/signals.py:126 msgid "The invoice was sent to the designated email address." -msgstr "" +msgstr "De factuur is verstuurd naar het aangegeven e-mailadres." #: pretix/plugins/banktransfer/tasks.py:176 msgid "Automatic split to multiple orders not possible." -msgstr "" +msgstr "Automatisch uitsplitsen naar meerdere bestellingen niet mogelijk." #: pretix/plugins/banktransfer/tasks.py:192 msgid "The order has already been canceled." -msgstr "" +msgstr "De bestelling is al geannuleerd." #: pretix/plugins/banktransfer/tasks.py:198 #: pretix/plugins/banktransfer/views.py:99 #: pretix/plugins/banktransfer/views.py:181 msgid "Currencies do not match." -msgstr "" +msgstr "De munteenheden komen niet overeen." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/checkout_payment_form.html:6 msgid "" "After completing your purchase, we will ask you to transfer the money to the " "following bank account, using a personal reference code:" msgstr "" +"Na het voltooien van uw aankoop vragen wij u het geld over te maken naar de " +"volgende bankrekening, met vermelding van uw persoonlijk betalingskernmerk:" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/checkout_payment_form.html:11 msgid "" "Please do not yet start a payment. We'll assign you a personal reference " "code after you completed the order." msgstr "" +"Doe nog geen betaling. We zullen na het afronden van de bestelling een " +"persoonlijk betalingskenmerk aan u toewijzen." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/checkout_payment_form.html:14 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/pending.html:21 msgid "Reference code (important):" -msgstr "" +msgstr "Betalingskenmerk (belangrijk):" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/checkout_payment_form.html:30 msgid "We will assign you a personal reference code in the next step." msgstr "" +"In de volgende stap zullen we u een persoonlijk betalingskenmerk toewijzen." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/checkout_payment_form.html:36 msgid "" "We will assign you a personal reference code to use after you completed the " "order." msgstr "" +"Nadat u de bestelling verzonden hebt, zullen wij een persoonlijk " +"betalingskenmerk aan u toewijzen." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/checkout_payment_form.html:41 msgid "" "After completing your purchase, we will ask you to transfer the money to our " "bank account, using a personal reference code." msgstr "" +"Nadat u de bestelling afgerond hebt, verzoeken wij u het bedrag op onze " +"bankrekening over te maken onder vermelding van uw persoonlijke " +"betalingskenmerk." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/control.html:6 msgid "Send invoice to" -msgstr "" +msgstr "Factuur sturen naar" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/control.html:14 msgid "Account" -msgstr "" +msgstr "Rekening" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/control.html:28 msgid "Transfer amount" -msgstr "" +msgstr "Overschrijvingsbedrag" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/control.html:38 msgid "Reference code" -msgstr "" +msgstr "Betalingskenmerk" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_assign.html:4 msgid "" @@ -31176,22 +31186,26 @@ msgid "" "are aligned. Please help us by selecting which column contain what kind of " "data." msgstr "" +"We konden de kolommen in uw bestand niet automatisch toewijzen. Geef " +"hieronder aan welke kolommen welk soort gegevens bevatten." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_assign.html:95 msgid "" "More data was uploaded but is not shown here. It will still be processed" msgstr "" +"Er zijn meer gegevens geüpload, maar die wordt hier niet weergegeven. Ze " +"worden wel verwerkt" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_base.html:9 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_base_organizer.html:9 msgid "Import currently running…" -msgstr "" +msgstr "Import wordt uitgevoerd…" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_base.html:11 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_base_organizer.html:11 #, python-format msgid "Last import: %(date)s" -msgstr "" +msgstr "Laatste import: %(date)s" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:8 #, python-format @@ -31199,117 +31213,134 @@ msgid "" "In the payment settings of your event, you set the %(date)s as the last date " "of any payments. Therefore, you won't be able to mark any order as paid here." msgstr "" +"In de betalingsinstellingen van uw evenement hebt u %(date)s als de uiterste " +"betalingsdatum geselecteerd. Daarom kunt u hier geen bestelling als betaald " +"markeren." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:19 msgid "" "This page allows you to upload bank statement files to process incoming " "payments." msgstr "" +"Op deze pagina kunt u bankafschriftbestanden uploaden om inkomende " +"betalingen te verwerken." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:22 msgid "" "Currently, this feature supports .csv files and files in the " "MT940 format." msgstr "" +"Deze functie ondersteunt momenteel .csv-bestanden en bestanden " +"in het MT940-formaat." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:29 #: pretix/plugins/banktransfer/views.py:560 msgid "" "An import is currently being processed, please try again in a few minutes." msgstr "" +"Er wordt momenteel een import verwerkt. Probeer het over een paar minuten " +"opnieuw." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:51 msgid "Start upload" -msgstr "" +msgstr "Upload starten" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:61 msgid "Unresolved transactions" -msgstr "" +msgstr "Niet-toegewezen overschrijvingen" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:66 msgid "" "On this page, you can import banking data on a per-event level. You also " "only see unmatched transactions imported directly for this event." msgstr "" +"Op deze pagina kunt u bankgegevens per evenement importeren. U kunt ook " +"alleen onverwerkte transacties zien die direct voor dit evenement zijn " +"geïmporteerd." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:71 msgid "Go to organizer-level import" -msgstr "" +msgstr "Ga naar import op organisatorniveau" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:78 msgid "Amount from" -msgstr "" +msgstr "Bedrag van" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:80 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:86 msgid "up to" -msgstr "" +msgstr "tot" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:92 msgid "Clear" -msgstr "" +msgstr "Leegmaken" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:101 msgid "Discard all" -msgstr "" +msgstr "Alles verwijderen" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:113 msgid "Your search matched no transactions." -msgstr "" +msgstr "Uw zoekopdracht leverde geen transacties op." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/job_detail.html:5 msgid "Import result" -msgstr "" +msgstr "Importresultaat" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/job_detail.html:12 msgid "" "The result of your import is in progress. Please be patient while we process " "the data …" msgstr "" +"Het resultaat van uw import wordt verwerkt. Even geduld terwijl we de " +"gegevens verwerken…" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/job_detail.html:18 msgid "An internal error occurred during processing your data." msgstr "" +"Er is een interne fout opgetreden tijdens het verwerken van de gegevens." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/job_detail.html:19 msgid "Some transactions might be missing, please try to re-import the file." msgstr "" +"Sommige transacties zijn mogelijk niet geïmporteerd. Probeer het bestand " +"opnieuw te importeren." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/job_detail.html:23 msgid "" "Your import did not contain any transactions that you did not import before." -msgstr "" +msgstr "Uw import bevatte geen transacties die u niet eerder importeerde." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/job_detail.html:30 msgid "Orders marked as paid" -msgstr "" +msgstr "Bestellingen als betaald aangemerkt" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/job_detail.html:34 msgid "Invalid payments" -msgstr "" +msgstr "Ongeldige betalingen" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/job_detail.html:38 msgid "Ignored payments" -msgstr "" +msgstr "Genegeerde betalingen" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/job_detail.html:44 msgid "Review invalid and ignored payments" -msgstr "" +msgstr "Bekijk ongeldige en genegeerde betalingen" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/pending.html:22 #: pretix/plugins/stripe/templates/pretixplugins/stripe/pending.html:27 msgid "Amount:" -msgstr "" +msgstr "Bedrag:" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/pending.html:34 #: pretix/plugins/stripe/templates/pretixplugins/stripe/pending.html:30 msgid "There is no further action required on this website." -msgstr "" +msgstr "Er is geen bijkomende actie meer vereist op deze website." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/pending.html:35 #: pretix/plugins/stripe/templates/pretixplugins/stripe/pending.html:31 msgid "We will send you an email as soon as we received your payment." -msgstr "" +msgstr "We zullen u een e-mail sturen zodra we uw betaling ontvangen hebben." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/refund_export.html:5 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/refund_export.html:7 -- 2.49.1 From b6518449d65a7ba1c2b8685fd4b0f4025f0cbbd5 Mon Sep 17 00:00:00 2001 From: Kara Engelhardt Date: Wed, 1 Apr 2026 18:46:51 +0200 Subject: [PATCH 017/107] Add placeholder for checked in addons (Z#23230009) --- src/pretix/base/pdf.py | 21 ++++++++++++++++----- src/tests/api/test_orders.py | 4 ++-- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/pretix/base/pdf.py b/src/pretix/base/pdf.py index 5d11c3504..21a62e7e0 100644 --- a/src/pretix/base/pdf.py +++ b/src/pretix/base/pdf.py @@ -54,7 +54,7 @@ from bidi import get_display from django.conf import settings from django.contrib.staticfiles import finders from django.core.exceptions import ValidationError -from django.db.models import Max, Min +from django.db.models import Exists, Max, Min, OuterRef from django.db.models.fields.files import FieldFile from django.dispatch import receiver from django.utils.deconstruct import deconstructible @@ -76,7 +76,7 @@ from reportlab.pdfgen.canvas import Canvas from reportlab.platypus import Paragraph from pretix.base.i18n import language -from pretix.base.models import Event, Order, OrderPosition, Question +from pretix.base.models import Checkin, Event, Order, OrderPosition, Question from pretix.base.settings import PERSON_NAME_SCHEMES from pretix.base.signals import layout_image_variables, layout_text_variables from pretix.base.templatetags.money import money_filter @@ -379,6 +379,13 @@ DEFAULT_VARIABLES = OrderedDict(( str(p) for p in generate_compressed_addon_list(op, order, ev) ]) }), + ("checked_in_addons", { + "label": _("List of Checked-In Add-Ons"), + "editor_sample": _("Add-on 1\n2x Add-on 2"), + "evaluate": lambda op, order, ev: "\n".join([ + str(p) for p in generate_compressed_addon_list(op, order, ev, only_checked_in=True) + ]) + }), ("organizer", { "label": _("Organizer name"), "editor_sample": _("Event organizer company"), @@ -750,12 +757,16 @@ def get_program_times(op: OrderPosition, ev: Event): ]) -def generate_compressed_addon_list(op, order, event): +def generate_compressed_addon_list(op, order, event, only_checked_in=False): itemcount = defaultdict(int) - addons = [p for p in ( + addon_qs = ( op.addons.all() if 'addons' in getattr(op, '_prefetched_objects_cache', {}) else op.addons.select_related('item', 'variation') - ) if not p.canceled] + ) + if only_checked_in: + addon_qs = addon_qs.filter(Exists(Checkin.objects.filter(position=OuterRef('pk'))), canceled=False) + addons = [p for p in addon_qs if not p.canceled] + for pos in addons: itemcount[pos.item, pos.variation] += 1 diff --git a/src/tests/api/test_orders.py b/src/tests/api/test_orders.py index 6d8f2cc14..570178974 100644 --- a/src/tests/api/test_orders.py +++ b/src/tests/api/test_orders.py @@ -2053,7 +2053,7 @@ def test_pdf_data(token_client, organizer, event, order, django_assert_max_num_q assert not resp.data['positions'][0].get('pdf_data') # order list - with django_assert_max_num_queries(33): + with django_assert_max_num_queries(34): resp = token_client.get('/api/v1/organizers/{}/events/{}/orders/?pdf_data=true'.format( organizer.slug, event.slug )) @@ -2068,7 +2068,7 @@ def test_pdf_data(token_client, organizer, event, order, django_assert_max_num_q assert not resp.data['results'][0]['positions'][0].get('pdf_data') # position list - with django_assert_max_num_queries(35): + with django_assert_max_num_queries(36): resp = token_client.get('/api/v1/organizers/{}/events/{}/orderpositions/?pdf_data=true'.format( organizer.slug, event.slug )) -- 2.49.1 From 84e12fea3281b399deb47964e4b28dcbaa0e6a83 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 2 Apr 2026 13:18:04 +0200 Subject: [PATCH 018/107] Dockerfile: Use Python 3.13 (#6028) --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 942bb8f79..6ad99226a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.11-bookworm +FROM python:3.13-trixie RUN apt-get update && \ apt-get install -y --no-install-recommends \ -- 2.49.1 From d411c36414cb17a16d77474757e6b0f16c479de6 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 2 Apr 2026 15:44:36 +0200 Subject: [PATCH 019/107] Exporters: Give access to authentication infos and allow empty permissions (#5979) * Exporters: Give access to authentication infos * Allow exporters to have empty permission * Use a protocol --- src/pretix/base/exporter.py | 16 +++++++++++++--- src/pretix/base/models/auth.py | 9 +++++++++ src/pretix/base/models/devices.py | 3 ++- src/pretix/base/models/organizer.py | 9 ++++++++- src/pretix/base/services/export.py | 21 ++++++++++++++++++--- 5 files changed, 50 insertions(+), 8 deletions(-) diff --git a/src/pretix/base/exporter.py b/src/pretix/base/exporter.py index 5182627a6..a89140e0b 100644 --- a/src/pretix/base/exporter.py +++ b/src/pretix/base/exporter.py @@ -47,6 +47,7 @@ from django.utils.formats import localize from django.utils.translation import gettext, gettext_lazy as _ from pretix.base.models import Event +from pretix.base.models.auth import PermissionHolder from pretix.helpers.safe_openpyxl import ( # NOQA: backwards compatibility for plugins using excel_safe SafeWorkbook, remove_invalid_excel_chars as excel_safe, ) @@ -59,11 +60,20 @@ class BaseExporter: This is the base class for all data exporters """ - def __init__(self, event, organizer, progress_callback=lambda v: None): + def __init__(self, event, organizer, permission_holder: PermissionHolder=None, progress_callback=lambda v: None): + """ + :param event: Event context, can also be a queryset of events for multi-event exports + :param organizer: Organizer context + :param user: The user who triggered the export (or None). + :param token: The API token that triggered the export (or None). + :param device: The device that triggered the export (or None) + :param progress_callback: Callback function with progress + """ self.event = event self.organizer = organizer self.progress_callback = progress_callback self.is_multievent = isinstance(event, QuerySet) + self.permission_holder = permission_holder if isinstance(event, QuerySet): self.events = event self.event = None @@ -180,7 +190,7 @@ class BaseExporter: return True @classmethod - def get_required_event_permission(cls) -> str: + def get_required_event_permission(cls) -> Optional[str]: """ The permission level required to use this exporter for events. For multi-event-exports, this will be used to limit the selection of events. Will be ignored if the ``OrganizerLevelExportMixin`` mixin is used. @@ -195,7 +205,7 @@ class OrganizerLevelExportMixin: raise TypeError("required_event_permission may not be called on OrganizerLevelExportMixin") @classmethod - def get_required_organizer_permission(cls) -> str: + def get_required_organizer_permission(cls) -> Optional[str]: """ The permission level required to use this exporter. Must be set for organizer-level exports. Set to `None` to allow everyone with any access to the organizer. diff --git a/src/pretix/base/models/auth.py b/src/pretix/base/models/auth.py index a14f2e4b7..afd7b0435 100644 --- a/src/pretix/base/models/auth.py +++ b/src/pretix/base/models/auth.py @@ -38,6 +38,7 @@ import operator import secrets from datetime import timedelta from functools import reduce +from typing import Protocol from django.conf import settings from django.contrib.auth.models import ( @@ -67,6 +68,14 @@ class EmailAddressTakenError(IntegrityError): pass +class PermissionHolder(Protocol): + def has_event_permission(self, organizer, event, perm_name=None, request=None, session_key=None) -> bool: + ... + + def has_organizer_permission(self, organizer, perm_name=None, request=None): + ... + + class UserManager(BaseUserManager): """ This is the user manager for our custom user model. See the User diff --git a/src/pretix/base/models/devices.py b/src/pretix/base/models/devices.py index a19f8e840..726586e8e 100644 --- a/src/pretix/base/models/devices.py +++ b/src/pretix/base/models/devices.py @@ -229,7 +229,7 @@ class Device(LoggedModel): """ return self._organizer_permission_set() if self.organizer == organizer else set() - def has_event_permission(self, organizer, event, perm_name=None, request=None) -> bool: + def has_event_permission(self, organizer, event, perm_name=None, request=None, session_key=None) -> bool: """ Checks if this token is part of a team that grants access of type ``perm_name`` to the event ``event``. @@ -238,6 +238,7 @@ class Device(LoggedModel): :param event: The event to check :param perm_name: The permission, e.g. ``event.orders:read`` :param request: This parameter is ignored and only defined for compatibility reasons. + :param session_key: This parameter is ignored and only defined for compatibility reasons. :return: bool """ has_event_access = (self.all_events and organizer == self.organizer) or ( diff --git a/src/pretix/base/models/organizer.py b/src/pretix/base/models/organizer.py index 5a9ef8c51..65cff5edf 100644 --- a/src/pretix/base/models/organizer.py +++ b/src/pretix/base/models/organizer.py @@ -319,6 +319,9 @@ class TeamQuerySet(models.QuerySet): def event_permission_q(cls, perm_name): from ..permissions import assert_valid_event_permission + if perm_name is None: + return Q() + if perm_name.startswith('can_') and perm_name in OLD_TO_NEW_EVENT_COMPAT: # legacy return reduce(operator.and_, [cls.event_permission_q(p) for p in OLD_TO_NEW_EVENT_COMPAT[perm_name]]) assert_valid_event_permission(perm_name, allow_legacy=False) @@ -331,6 +334,9 @@ class TeamQuerySet(models.QuerySet): def organizer_permission_q(cls, perm_name): from ..permissions import assert_valid_organizer_permission + if perm_name is None: + return Q() + if perm_name.startswith('can_') and perm_name in OLD_TO_NEW_ORGANIZER_COMPAT: # legacy return reduce(operator.and_, [cls.organizer_permission_q(p) for p in OLD_TO_NEW_ORGANIZER_COMPAT[perm_name]]) assert_valid_organizer_permission(perm_name, allow_legacy=False) @@ -550,7 +556,7 @@ class TeamAPIToken(models.Model): """ return self.team.organizer_permission_set() if self.team.organizer == organizer else set() - def has_event_permission(self, organizer, event, perm_name=None, request=None) -> bool: + def has_event_permission(self, organizer, event, perm_name=None, request=None, session_key=None) -> bool: """ Checks if this token is part of a team that grants access of type ``perm_name`` to the event ``event``. @@ -559,6 +565,7 @@ class TeamAPIToken(models.Model): :param event: The event to check :param perm_name: The permission, e.g. ``event.orders:read`` :param request: This parameter is ignored and only defined for compatibility reasons. + :param session_key: This parameter is ignored and only defined for compatibility reasons. :return: bool """ has_event_access = (self.team.all_events and organizer == self.team.organizer) or ( diff --git a/src/pretix/base/services/export.py b/src/pretix/base/services/export.py index fc49ec262..31ad1b267 100644 --- a/src/pretix/base/services/export.py +++ b/src/pretix/base/services/export.py @@ -211,7 +211,12 @@ def init_event_exporters(event, user=None, token=None, device=None, request=None if not perm_holder.has_event_permission(event.organizer, event, permission_name, request) and not staff_session: continue - exporter: BaseExporter = response(event=event, organizer=event.organizer, **kwargs) + exporter: BaseExporter = response( + event=event, + organizer=event.organizer, + permission_holder=token or device or user, + **kwargs + ) if not exporter.available_for_user(user if user and user.is_authenticated else None): continue @@ -243,7 +248,12 @@ def init_organizer_exporters( continue if issubclass(response, OrganizerLevelExportMixin): - exporter: BaseExporter = response(event=Event.objects.none(), organizer=organizer, **kwargs) + exporter: BaseExporter = response( + event=Event.objects.none(), + organizer=organizer, + permission_holder=token or device or user, + **kwargs, + ) try: if not perm_holder.has_organizer_permission(organizer, response.get_required_organizer_permission(), request) and not staff_session: @@ -295,7 +305,12 @@ def init_organizer_exporters( if not _has_permission_on_any_team_cache[permission_name] and not staff_session: continue - exporter: BaseExporter = response(event=_event_list_cache[permission_name], organizer=organizer, **kwargs) + exporter: BaseExporter = response( + event=_event_list_cache[permission_name], + organizer=organizer, + permission_holder=token or device or user, + **kwargs, + ) if not exporter.available_for_user(user if user and user.is_authenticated else None): continue -- 2.49.1 From 92d1830f3b6b50dbfcad0ce195ab023b819e3864 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 2 Apr 2026 21:03:42 +0200 Subject: [PATCH 020/107] Exporters: Pass state about staff_session --- src/pretix/base/models/auth.py | 12 ++++++++++++ src/pretix/base/services/export.py | 7 ++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/pretix/base/models/auth.py b/src/pretix/base/models/auth.py index afd7b0435..d783f7290 100644 --- a/src/pretix/base/models/auth.py +++ b/src/pretix/base/models/auth.py @@ -705,6 +705,18 @@ class User(AbstractBaseUser, PermissionsMixin, LoggingMixin): return self.teams.exists() +class UserWithStaffSession: + # Wrapper around a User object with a staff session, implementing the PermissionHolder Protocol + def __init__(self, user): + self.user = user + + def has_event_permission(self, organizer, event, perm_name=None, request=None, session_key=None) -> bool: + return True + + def has_organizer_permission(self, organizer, perm_name=None, request=None): + return True + + class UserKnownLoginSource(models.Model): user = models.ForeignKey('User', on_delete=models.CASCADE, related_name="known_login_sources") agent_type = models.CharField(max_length=255, null=True, blank=True) diff --git a/src/pretix/base/services/export.py b/src/pretix/base/services/export.py index 31ad1b267..5fc80d8de 100644 --- a/src/pretix/base/services/export.py +++ b/src/pretix/base/services/export.py @@ -40,6 +40,7 @@ from pretix.base.models import ( CachedFile, Device, Event, Organizer, ScheduledEventExport, TeamAPIToken, User, cachedfile_name, ) +from pretix.base.models.auth import UserWithStaffSession from pretix.base.models.exports import ScheduledOrganizerExport from pretix.base.services.mail import mail from pretix.base.services.tasks import ( @@ -214,7 +215,7 @@ def init_event_exporters(event, user=None, token=None, device=None, request=None exporter: BaseExporter = response( event=event, organizer=event.organizer, - permission_holder=token or device or user, + permission_holder=token or device or (UserWithStaffSession(user) if staff_session else User), **kwargs ) @@ -251,7 +252,7 @@ def init_organizer_exporters( exporter: BaseExporter = response( event=Event.objects.none(), organizer=organizer, - permission_holder=token or device or user, + permission_holder=token or device or (UserWithStaffSession(user) if staff_session else User), **kwargs, ) @@ -308,7 +309,7 @@ def init_organizer_exporters( exporter: BaseExporter = response( event=_event_list_cache[permission_name], organizer=organizer, - permission_holder=token or device or user, + permission_holder=token or device or (UserWithStaffSession(user) if staff_session else User), **kwargs, ) -- 2.49.1 From 23d167340379f7b8928fcb9c3732bef48a503552 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 2 Apr 2026 21:43:36 +0200 Subject: [PATCH 021/107] Fix typo --- src/pretix/base/services/export.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pretix/base/services/export.py b/src/pretix/base/services/export.py index 5fc80d8de..c04119cf6 100644 --- a/src/pretix/base/services/export.py +++ b/src/pretix/base/services/export.py @@ -215,7 +215,7 @@ def init_event_exporters(event, user=None, token=None, device=None, request=None exporter: BaseExporter = response( event=event, organizer=event.organizer, - permission_holder=token or device or (UserWithStaffSession(user) if staff_session else User), + permission_holder=token or device or (UserWithStaffSession(user) if staff_session else user), **kwargs ) @@ -252,7 +252,7 @@ def init_organizer_exporters( exporter: BaseExporter = response( event=Event.objects.none(), organizer=organizer, - permission_holder=token or device or (UserWithStaffSession(user) if staff_session else User), + permission_holder=token or device or (UserWithStaffSession(user) if staff_session else user), **kwargs, ) @@ -309,7 +309,7 @@ def init_organizer_exporters( exporter: BaseExporter = response( event=_event_list_cache[permission_name], organizer=organizer, - permission_holder=token or device or (UserWithStaffSession(user) if staff_session else User), + permission_holder=token or device or (UserWithStaffSession(user) if staff_session else user), **kwargs, ) -- 2.49.1 From fc7e8ea67a7c720e8e97f5d5d9d61bd0562f2a5b Mon Sep 17 00:00:00 2001 From: Kara Engelhardt Date: Tue, 3 Mar 2026 15:39:47 +0100 Subject: [PATCH 022/107] Log new properties when changing device --- src/pretix/control/views/organizer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pretix/control/views/organizer.py b/src/pretix/control/views/organizer.py index 4e2273a75..03404813f 100644 --- a/src/pretix/control/views/organizer.py +++ b/src/pretix/control/views/organizer.py @@ -1322,7 +1322,7 @@ class DeviceUpdateView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixi def form_valid(self, form): if form.has_changed(): self.object.log_action('pretix.device.changed', user=self.request.user, data={ - k: getattr(self.object, k) if k != 'limit_events' else [e.id for e in getattr(self.object, k).all()] + k: form.cleaned_data[k] if k != 'limit_events' else [e.id for e in form.cleaned_data[k]] for k in form.changed_data }) -- 2.49.1 From 2e2e57d231e97dbd0f1a57330bd5111e551bfc9e Mon Sep 17 00:00:00 2001 From: Kara Engelhardt Date: Tue, 24 Mar 2026 13:43:36 +0100 Subject: [PATCH 023/107] Fix typo in test detection, improve check A non-empty string is truthy, making the the for-loop useless, as the first item in inspect.stack() is always the for-loop itself, which then lead to the function returning immediately. This commit * fixes this typo * changes the loop to ignore the first element of instpect.stack() (which is the loop itself) * ignores django-internal code This should create something similar to what I suspect the code was intended to do originally. --- src/pretix/base/models/_transactions.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/pretix/base/models/_transactions.py b/src/pretix/base/models/_transactions.py index 1aaf2919b..8ee37e036 100644 --- a/src/pretix/base/models/_transactions.py +++ b/src/pretix/base/models/_transactions.py @@ -29,7 +29,9 @@ import inspect import logging import os import threading +from pathlib import Path +import django from django.conf import settings from django.db import transaction @@ -74,10 +76,14 @@ def _transactions_mark_order_dirty(order_id, using=None): if "PYTEST_CURRENT_TEST" in os.environ: # We don't care about Order.objects.create() calls in test code so let's try to figure out if this is test code # or not. - for frame in inspect.stack(): - if 'pretix/base/models/orders' in frame.filename: + for frame in inspect.stack()[1:]: + if ( + 'pretix/base/models/orders' in frame.filename + or Path(frame.filename).is_relative_to(Path(django.__file__).parent) + ): + # Ignore model- and django-internal code continue - elif 'test_' in frame.filename or 'conftest.py in frame.filename': + elif 'test_' in frame.filename or 'conftest.py' in frame.filename: return elif 'pretix/' in frame.filename or 'pretix_' in frame.filename: # This went through non-test code, let's consider it non-test -- 2.49.1 From a57810cf414a4f6044dd52400029b478c3e49c42 Mon Sep 17 00:00:00 2001 From: Kara Engelhardt Date: Tue, 24 Mar 2026 13:50:40 +0100 Subject: [PATCH 024/107] tests: replace broken monkeypatching with TransactionTestCase --- src/tests/base/test_orders.py | 49 ++++++++++++++---------------- src/tests/presale/test_checkout.py | 11 ++----- 2 files changed, 26 insertions(+), 34 deletions(-) diff --git a/src/tests/base/test_orders.py b/src/tests/base/test_orders.py index 5056664ca..8f39fc08e 100644 --- a/src/tests/base/test_orders.py +++ b/src/tests/base/test_orders.py @@ -28,8 +28,9 @@ from zoneinfo import ZoneInfo import pytest from django.conf import settings from django.core import mail as djmail +from django.db import transaction from django.db.models import F, Sum -from django.test import TestCase, override_settings +from django.test import TestCase, TransactionTestCase, override_settings from django.utils.timezone import make_aware, now from django_countries.fields import Country from django_scopes import scope @@ -1225,12 +1226,6 @@ class DownloadReminderTests(TestCase): assert len(djmail.outbox) == 0 -@pytest.fixture -def class_monkeypatch(request, monkeypatch): - request.cls.monkeypatch = monkeypatch - - -@pytest.mark.usefixtures("class_monkeypatch") class OrderCancelTests(TestCase): def setUp(self): super().setUp() @@ -1258,7 +1253,6 @@ class OrderCancelTests(TestCase): self.order.create_transactions() generate_invoice(self.order) djmail.outbox = [] - self.monkeypatch.setattr("django.db.transaction.on_commit", lambda t: t()) @classscope(attr='o') def test_cancel_canceled(self): @@ -1351,14 +1345,14 @@ class OrderCancelTests(TestCase): self.order.status = Order.STATUS_PAID self.order.save() djmail.outbox = [] - cancel_order(self.order.pk, send_mail=True) - print([s.subject for s in djmail.outbox]) - print([s.to for s in djmail.outbox]) + with self.captureOnCommitCallbacks(execute=True): + cancel_order(self.order.pk, send_mail=True) + assert len(djmail.outbox) == 2 - assert ["invoice@example.org"] == djmail.outbox[0].to - assert any(["Invoice_" in a[0] for a in djmail.outbox[0].attachments]) - assert ["dummy@dummy.test"] == djmail.outbox[1].to - assert not any(["Invoice_" in a[0] for a in djmail.outbox[1].attachments]) + assert ["dummy@dummy.test"] == djmail.outbox[0].to + assert not any(["Invoice_" in a[0] for a in djmail.outbox[0].attachments]) + assert ["invoice@example.org"] == djmail.outbox[1].to + assert any(["Invoice_" in a[0] for a in djmail.outbox[1].attachments]) @classscope(attr='o') def test_cancel_paid_with_too_high_fee(self): @@ -1488,8 +1482,7 @@ class OrderCancelTests(TestCase): assert self.order.all_logentries().filter(action_type='pretix.event.order.refund.requested').exists() -@pytest.mark.usefixtures("class_monkeypatch") -class OrderChangeManagerTests(TestCase): +class BaseOrderChangeManagerTestCase: def setUp(self): super().setUp() self.o = Organizer.objects.create(name='Dummy', slug='dummy', plugins='pretix.plugins.banktransfer') @@ -1552,7 +1545,6 @@ class OrderChangeManagerTests(TestCase): self.seat_a1 = self.event.seats.create(seat_number="A1", product=self.stalls, seat_guid="A1") self.seat_a2 = self.event.seats.create(seat_number="A2", product=self.stalls, seat_guid="A2") self.seat_a3 = self.event.seats.create(seat_number="A3", product=self.stalls, seat_guid="A3") - self.monkeypatch.setattr("django.db.transaction.on_commit", lambda t: t()) def _enable_reverse_charge(self): self.tr7.eu_reverse_charge = True @@ -1566,6 +1558,8 @@ class OrderChangeManagerTests(TestCase): country=Country('AT') ) + +class OrderChangeManagerTests(BaseOrderChangeManagerTestCase, TestCase): @classscope(attr='o') def test_multiple_commits_forbidden(self): self.ocm.change_price(self.op1, Decimal('10.00')) @@ -3904,15 +3898,16 @@ class OrderChangeManagerTests(TestCase): @classscope(attr='o') def test_set_valid_until(self): - self.event.settings.ticket_secret_generator = "pretix_sig1" - assign_ticket_secret(self.event, self.op1, force_invalidate=True, save=True) - old_secret = self.op1.secret + with transaction.atomic(): + self.event.settings.ticket_secret_generator = "pretix_sig1" + assign_ticket_secret(self.event, self.op1, force_invalidate=True, save=True) + old_secret = self.op1.secret - dt = make_aware(datetime(2022, 9, 20, 15, 0, 0, 0)) - self.ocm.change_valid_until(self.op1, dt) - self.ocm.commit() - self.op1.refresh_from_db() - assert self.op1.secret != old_secret + dt = make_aware(datetime(2022, 9, 20, 15, 0, 0, 0)) + self.ocm.change_valid_until(self.op1, dt) + self.ocm.commit() + self.op1.refresh_from_db() + assert self.op1.secret != old_secret @classscope(attr='o') def test_unset_valid_from_until(self): @@ -3937,6 +3932,8 @@ class OrderChangeManagerTests(TestCase): assert len(djmail.outbox) == 1 assert len(["Invoice_" in a[0] for a in djmail.outbox[0].attachments]) == 2 + +class OrderChangeManagerTransactionalTests(BaseOrderChangeManagerTestCase, TransactionTestCase): @classscope(attr='o') def test_new_invoice_send_somewhere_else(self): generate_invoice(self.order) diff --git a/src/tests/presale/test_checkout.py b/src/tests/presale/test_checkout.py index f8a6ebd75..ebeef3c5f 100644 --- a/src/tests/presale/test_checkout.py +++ b/src/tests/presale/test_checkout.py @@ -33,7 +33,7 @@ from django.conf import settings from django.core import mail as djmail from django.core.files.uploadedfile import SimpleUploadedFile from django.core.signing import dumps -from django.test import TestCase +from django.test import TestCase, TransactionTestCase from django.utils.crypto import get_random_string from django.utils.timezone import now from django_countries.fields import Country @@ -60,12 +60,6 @@ from pretix.testutils.sessions import get_cart_session_key from .test_timemachine import TimemachineTestMixin -@pytest.fixture -def class_monkeypatch(request, monkeypatch): - request.cls.monkeypatch = monkeypatch - - -@pytest.mark.usefixtures("class_monkeypatch") class BaseCheckoutTestCase: @scopes_disabled() def setUp(self): @@ -104,7 +98,6 @@ class BaseCheckoutTestCase: self.workshopquota.items.add(self.workshop2) self.workshopquota.variations.add(self.workshop2a) self.workshopquota.variations.add(self.workshop2b) - self.monkeypatch.setattr("django.db.transaction.on_commit", lambda t: t()) def _set_session(self, key, value): session = self.client.session @@ -4420,6 +4413,8 @@ class CheckoutTestCase(BaseCheckoutTestCase, TimemachineTestMixin, TestCase): assert len(djmail.outbox) == 1 assert any(["Invoice_" in a[0] for a in djmail.outbox[0].attachments]) + +class CheckoutTransactionTestCase(BaseCheckoutTestCase, TransactionTestCase): def test_order_confirmation_mail_invoice_sent_somewhere_else(self): self.event.settings.invoice_address_asked = True self.event.settings.invoice_address_required = True -- 2.49.1 From 444963e95280d08e49dd5851014112468ade5703 Mon Sep 17 00:00:00 2001 From: Kara Engelhardt Date: Tue, 24 Mar 2026 14:23:11 +0100 Subject: [PATCH 025/107] tests: Remove on_commit monkeypatch --- src/tests/base/test_notifications.py | 30 +++++++++------------- src/tests/base/test_webhooks.py | 38 ++++++++++++---------------- src/tests/conftest.py | 5 ++++ src/tests/control/test_auth.py | 5 ---- src/tests/control/test_events.py | 5 ---- src/tests/control/test_organizer.py | 5 ---- src/tests/control/test_user.py | 5 ---- 7 files changed, 33 insertions(+), 60 deletions(-) diff --git a/src/tests/base/test_notifications.py b/src/tests/base/test_notifications.py index 31e4386e9..f285f6e05 100644 --- a/src/tests/base/test_notifications.py +++ b/src/tests/base/test_notifications.py @@ -24,7 +24,6 @@ from decimal import Decimal import pytest from django.core import mail as djmail -from django.db import transaction from django.utils.timezone import now from django_scopes import scope @@ -75,47 +74,42 @@ def user(team): return user -@pytest.fixture -def monkeypatch_on_commit(monkeypatch): - monkeypatch.setattr("django.db.transaction.on_commit", lambda t: t()) - - @pytest.mark.django_db -def test_notification_trigger_event_specific(event, order, user, monkeypatch_on_commit): +def test_notification_trigger_event_specific(event, order, user, django_capture_on_commit_callbacks): djmail.outbox = [] user.notification_settings.create( method='mail', event=event, action_type='pretix.event.order.paid', enabled=True ) - with transaction.atomic(): + with django_capture_on_commit_callbacks(execute=True): order.log_action('pretix.event.order.paid', {}) assert len(djmail.outbox) == 1 assert djmail.outbox[0].subject.endswith("DUMMY: Order FOO has been marked as paid.") @pytest.mark.django_db -def test_notification_trigger_global(event, order, user, monkeypatch_on_commit): +def test_notification_trigger_global(event, order, user, django_capture_on_commit_callbacks): djmail.outbox = [] user.notification_settings.create( method='mail', event=None, action_type='pretix.event.order.paid', enabled=True ) - with transaction.atomic(): + with django_capture_on_commit_callbacks(execute=True): order.log_action('pretix.event.order.paid', {}) assert len(djmail.outbox) == 1 @pytest.mark.django_db -def test_notification_trigger_global_wildcard(event, order, user, monkeypatch_on_commit): +def test_notification_trigger_global_wildcard(event, order, user, django_capture_on_commit_callbacks): djmail.outbox = [] user.notification_settings.create( method='mail', event=None, action_type='pretix.event.order.changed.*', enabled=True ) - with transaction.atomic(): + with django_capture_on_commit_callbacks(execute=True): order.log_action('pretix.event.order.changed.item', {}) assert len(djmail.outbox) == 1 @pytest.mark.django_db -def test_notification_enabled_global_ignored_specific(event, order, user, monkeypatch_on_commit): +def test_notification_enabled_global_ignored_specific(event, order, user, django_capture_on_commit_callbacks): djmail.outbox = [] user.notification_settings.create( method='mail', event=None, action_type='pretix.event.order.paid', enabled=True @@ -123,24 +117,24 @@ def test_notification_enabled_global_ignored_specific(event, order, user, monkey user.notification_settings.create( method='mail', event=event, action_type='pretix.event.order.paid', enabled=False ) - with transaction.atomic(): + with django_capture_on_commit_callbacks(execute=True): order.log_action('pretix.event.order.paid', {}) assert len(djmail.outbox) == 0 @pytest.mark.django_db -def test_notification_ignore_same_user(event, order, user, monkeypatch_on_commit): +def test_notification_ignore_same_user(event, order, user, django_capture_on_commit_callbacks): djmail.outbox = [] user.notification_settings.create( method='mail', event=event, action_type='pretix.event.order.paid', enabled=True ) - with transaction.atomic(): + with django_capture_on_commit_callbacks(execute=True): order.log_action('pretix.event.order.paid', {}, user=user) assert len(djmail.outbox) == 0 @pytest.mark.django_db -def test_notification_ignore_insufficient_permissions(event, order, user, team, monkeypatch_on_commit): +def test_notification_ignore_insufficient_permissions(event, order, user, team, django_capture_on_commit_callbacks): djmail.outbox = [] team.all_event_permissions = False team.limit_event_permissions = {"event.vouchers:read": True} @@ -148,7 +142,7 @@ def test_notification_ignore_insufficient_permissions(event, order, user, team, user.notification_settings.create( method='mail', event=event, action_type='pretix.event.order.paid', enabled=True ) - with transaction.atomic(): + with django_capture_on_commit_callbacks(execute=True): order.log_action('pretix.event.order.paid', {}) assert len(djmail.outbox) == 0 diff --git a/src/tests/base/test_webhooks.py b/src/tests/base/test_webhooks.py index ab5a905dd..3b342a06c 100644 --- a/src/tests/base/test_webhooks.py +++ b/src/tests/base/test_webhooks.py @@ -25,7 +25,6 @@ from decimal import Decimal import pytest import responses -from django.db import transaction from django.utils.timezone import now from django_scopes import scopes_disabled @@ -82,14 +81,9 @@ def force_str(v): return v.decode() if isinstance(v, bytes) else str(v) -@pytest.fixture -def monkeypatch_on_commit(monkeypatch): - monkeypatch.setattr("django.db.transaction.on_commit", lambda t: t()) - - @pytest.mark.django_db @responses.activate -def test_webhook_trigger_event_specific(event, order, webhook, monkeypatch_on_commit): +def test_webhook_trigger_event_specific(event, order, webhook, django_capture_on_commit_callbacks): responses.add_callback( responses.POST, 'https://google.com', callback=lambda r: (200, {}, 'ok'), @@ -97,7 +91,7 @@ def test_webhook_trigger_event_specific(event, order, webhook, monkeypatch_on_co match_querystring=None, # https://github.com/getsentry/responses/issues/464 ) - with transaction.atomic(): + with django_capture_on_commit_callbacks(execute=True): le = order.log_action('pretix.event.order.paid', {}) assert len(responses.calls) == 1 assert json.loads(force_str(responses.calls[0].request.body)) == { @@ -119,12 +113,12 @@ def test_webhook_trigger_event_specific(event, order, webhook, monkeypatch_on_co @pytest.mark.django_db @responses.activate -def test_webhook_trigger_global(event, order, webhook, monkeypatch_on_commit): +def test_webhook_trigger_global(event, order, webhook, django_capture_on_commit_callbacks): webhook.limit_events.clear() webhook.all_events = True webhook.save() responses.add(responses.POST, 'https://google.com', status=200) - with transaction.atomic(): + with django_capture_on_commit_callbacks(execute=True): le = order.log_action('pretix.event.order.paid', {}) assert len(responses.calls) == 1 assert json.loads(force_str(responses.calls[0].request.body)) == { @@ -138,13 +132,13 @@ def test_webhook_trigger_global(event, order, webhook, monkeypatch_on_commit): @pytest.mark.django_db @responses.activate -def test_webhook_trigger_global_wildcard(event, order, webhook, monkeypatch_on_commit): +def test_webhook_trigger_global_wildcard(event, order, webhook, django_capture_on_commit_callbacks): webhook.listeners.create(action_type="pretix.event.order.changed.*") webhook.limit_events.clear() webhook.all_events = True webhook.save() responses.add(responses.POST, 'https://google.com', status=200) - with transaction.atomic(): + with django_capture_on_commit_callbacks(execute=True): le = order.log_action('pretix.event.order.changed.item', {}) assert len(responses.calls) == 1 assert json.loads(force_str(responses.calls[0].request.body)) == { @@ -158,30 +152,30 @@ def test_webhook_trigger_global_wildcard(event, order, webhook, monkeypatch_on_c @pytest.mark.django_db @responses.activate -def test_webhook_ignore_wrong_action_type(event, order, webhook, monkeypatch_on_commit): +def test_webhook_ignore_wrong_action_type(event, order, webhook, django_capture_on_commit_callbacks): responses.add(responses.POST, 'https://google.com', status=200) - with transaction.atomic(): + with django_capture_on_commit_callbacks(execute=True): order.log_action('pretix.event.order.changed.item', {}) assert len(responses.calls) == 0 @pytest.mark.django_db @responses.activate -def test_webhook_ignore_disabled(event, order, webhook, monkeypatch_on_commit): +def test_webhook_ignore_disabled(event, order, webhook, django_capture_on_commit_callbacks): webhook.enabled = False webhook.save() responses.add(responses.POST, 'https://google.com', status=200) - with transaction.atomic(): + with django_capture_on_commit_callbacks(execute=True): order.log_action('pretix.event.order.changed.item', {}) assert len(responses.calls) == 0 @pytest.mark.django_db @responses.activate -def test_webhook_ignore_wrong_event(event, order, webhook, monkeypatch_on_commit): +def test_webhook_ignore_wrong_event(event, order, webhook, django_capture_on_commit_callbacks): webhook.limit_events.clear() responses.add(responses.POST, 'https://google.com', status=200) - with transaction.atomic(): + with django_capture_on_commit_callbacks(execute=True): order.log_action('pretix.event.order.changed.item', {}) assert len(responses.calls) == 0 @@ -189,10 +183,10 @@ def test_webhook_ignore_wrong_event(event, order, webhook, monkeypatch_on_commit @pytest.mark.django_db @pytest.mark.xfail(reason="retries can't be tested with celery_always_eager") @responses.activate -def test_webhook_retry(event, order, webhook, monkeypatch_on_commit): +def test_webhook_retry(event, order, webhook, django_capture_on_commit_callbacks): responses.add(responses.POST, 'https://google.com', status=500) responses.add(responses.POST, 'https://google.com', status=200) - with transaction.atomic(): + with django_capture_on_commit_callbacks(execute=True): order.log_action('pretix.event.order.paid', {}) assert len(responses.calls) == 2 with scopes_disabled(): @@ -216,9 +210,9 @@ def test_webhook_retry(event, order, webhook, monkeypatch_on_commit): @pytest.mark.django_db @responses.activate -def test_webhook_disable_gone(event, order, webhook, monkeypatch_on_commit): +def test_webhook_disable_gone(event, order, webhook, django_capture_on_commit_callbacks): responses.add(responses.POST, 'https://google.com', status=410) - with transaction.atomic(): + with django_capture_on_commit_callbacks(execute=True): order.log_action('pretix.event.order.paid', {}) assert len(responses.calls) == 1 webhook.refresh_from_db() diff --git a/src/tests/conftest.py b/src/tests/conftest.py index 418c20ab6..280b6aa55 100644 --- a/src/tests/conftest.py +++ b/src/tests/conftest.py @@ -131,3 +131,8 @@ def set_lock_namespaces(request): yield else: yield + + +@pytest.fixture +def class_monkeypatch(request, monkeypatch): + request.cls.monkeypatch = monkeypatch diff --git a/src/tests/control/test_auth.py b/src/tests/control/test_auth.py index 7b5fa5497..3a965c933 100644 --- a/src/tests/control/test_auth.py +++ b/src/tests/control/test_auth.py @@ -385,11 +385,6 @@ class RegistrationFormTest(TestCase): self.assertEqual(response.status_code, 403) -@pytest.fixture -def class_monkeypatch(request, monkeypatch): - request.cls.monkeypatch = monkeypatch - - @pytest.mark.usefixtures("class_monkeypatch") class Login2FAFormTest(TestCase): diff --git a/src/tests/control/test_events.py b/src/tests/control/test_events.py index d03aa5da0..efd8a64d8 100644 --- a/src/tests/control/test_events.py +++ b/src/tests/control/test_events.py @@ -49,11 +49,6 @@ from tests.base import SoupTest, extract_form_fields from pretix.base.models import Event, LogEntry, Order, Organizer, Team, User -@pytest.fixture -def class_monkeypatch(request, monkeypatch): - request.cls.monkeypatch = monkeypatch - - @pytest.mark.usefixtures("class_monkeypatch") class EventsTest(SoupTest): @scopes_disabled() diff --git a/src/tests/control/test_organizer.py b/src/tests/control/test_organizer.py index c445e51f7..5ef89e900 100644 --- a/src/tests/control/test_organizer.py +++ b/src/tests/control/test_organizer.py @@ -33,11 +33,6 @@ from tests.base import SoupTest, extract_form_fields from pretix.base.models import Event, Organizer, OutgoingMail, Team, User -@pytest.fixture -def class_monkeypatch(request, monkeypatch): - request.cls.monkeypatch = monkeypatch - - @pytest.mark.usefixtures("class_monkeypatch") class OrganizerTest(SoupTest): @scopes_disabled() diff --git a/src/tests/control/test_user.py b/src/tests/control/test_user.py index de58e9579..a7a8f86c0 100644 --- a/src/tests/control/test_user.py +++ b/src/tests/control/test_user.py @@ -286,11 +286,6 @@ class UserPasswordChangeTest(SoupTest): assert self.user.needs_password_change is False -@pytest.fixture -def class_monkeypatch(request, monkeypatch): - request.cls.monkeypatch = monkeypatch - - @pytest.mark.usefixtures("class_monkeypatch") class UserSettings2FATest(SoupTest): def setUp(self): -- 2.49.1 From 12171e0665129d71c6ab811c6a139cdc2e699d9e Mon Sep 17 00:00:00 2001 From: Kara Engelhardt Date: Tue, 24 Mar 2026 13:46:26 +0100 Subject: [PATCH 026/107] Fix copy-and-paste errors --- src/pretix/base/models/orders.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pretix/base/models/orders.py b/src/pretix/base/models/orders.py index c38131f36..e74e450e8 100644 --- a/src/pretix/base/models/orders.py +++ b/src/pretix/base/models/orders.py @@ -590,7 +590,7 @@ class Order(LockModel, LoggedModel): not kwargs.get('force_save_with_deferred_fields', None) and (not update_fields or ('require_approval' not in update_fields and 'status' not in update_fields)) ): - _fail("It is unsafe to call save() on an OrderFee with deferred fields since we can't check if you missed " + _fail("It is unsafe to call save() on an Order with deferred fields since we can't check if you missed " "creating a transaction. Call save(force_save_with_deferred_fields=True) if you really want to do " "this.") @@ -2841,7 +2841,7 @@ class OrderPosition(AbstractPosition): if Transaction.key(self) != self.__initial_transaction_key or self.canceled != self.__initial_canceled or not self.pk: _transactions_mark_order_dirty(self.order_id, using=kwargs.get('using', None)) elif not kwargs.get('force_save_with_deferred_fields', None): - _fail("It is unsafe to call save() on an OrderFee with deferred fields since we can't check if you missed " + _fail("It is unsafe to call save() on an OrderPosition with deferred fields since we can't check if you missed " "creating a transaction. Call save(force_save_with_deferred_fields=True) if you really want to do " "this.") -- 2.49.1 From c037fd865b740fc57842de93efe51f0020d0624d Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Wed, 8 Apr 2026 11:02:58 +0200 Subject: [PATCH 027/107] Fix multi-product order edit with seats (#6063) --- src/pretix/control/forms/orders.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pretix/control/forms/orders.py b/src/pretix/control/forms/orders.py index 4df41eaf4..6c5e8b40a 100644 --- a/src/pretix/control/forms/orders.py +++ b/src/pretix/control/forms/orders.py @@ -436,7 +436,7 @@ class OrderPositionAddForm(forms.Form): d['used_membership'] = [m for m in self.memberships if str(m.pk) == d['used_membership']][0] else: d['used_membership'] = None - if d.get("count", 1) and d.get("seat"): + if d.get("count", 1) > 1 and d.get("seat"): raise ValidationError({ "seat": _("You can not choose a seat when adding multiple products at once.") }) -- 2.49.1 From 5c7104634e2bde9ec6c6f80e158e6dbe3e7bbf1c Mon Sep 17 00:00:00 2001 From: Lukas Bockstaller Date: Wed, 8 Apr 2026 13:25:38 +0200 Subject: [PATCH 028/107] Order import: handle mixed endings of last line (Z#23230806) (#6066) * handle mixed line endings in import * formatting --- src/pretix/base/modelimport.py | 4 ++++ src/tests/base/test_modelimport_orders.py | 27 +++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/src/pretix/base/modelimport.py b/src/pretix/base/modelimport.py index e274dbe85..348012bad 100644 --- a/src/pretix/base/modelimport.py +++ b/src/pretix/base/modelimport.py @@ -70,6 +70,10 @@ def parse_csv(file, length=None, mode="strict", charset=None): except ImportError: charset = file.charset data = data.decode(charset or "utf-8", mode) + + # remove stray linebreaks from the end of the file + data = data.rstrip("\n") + # If the file was modified on a Mac, it only contains \r as line breaks if '\r' in data and '\n' not in data: data = data.replace('\r', '\n') diff --git a/src/tests/base/test_modelimport_orders.py b/src/tests/base/test_modelimport_orders.py index 2cb57aed6..1c51ab219 100644 --- a/src/tests/base/test_modelimport_orders.py +++ b/src/tests/base/test_modelimport_orders.py @@ -991,3 +991,30 @@ def test_import_mixed_order_size_consistency(user, event, item): ).get() assert ('Inconsistent data in row 2: Column Email address contains value "a2@example.com", but for this order, ' 'the value has already been set to "a1@example.com".') in str(excinfo.value) + + +@pytest.mark.django_db +@scopes_disabled() +def test_import_line_endings_mix(event, item, user): + # Ensures import works with mixed file endings. + # See Ticket#23230806 where a file to import ends with \r\n + settings = dict(DEFAULT_SETTINGS) + settings['item'] = 'static:{}'.format(item.pk) + + cf = inputfile_factory() + file = cf.file + file.seek(0) + data = file.read() + data = data.replace(b'\n', b'\r') + data = data.rstrip(b'\r\r') + data = data + b'\r\n' + + print(data) + cf.file.save("input.csv", ContentFile(data)) + cf.save() + + import_orders.apply( + args=(event.pk, cf.id, settings, 'en', user.pk) + ) + assert event.orders.count() == 3 + assert OrderPosition.objects.count() == 3 -- 2.49.1 From 221cbd15ab4e49dbc4634d1219c571e2f3d88b89 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Sun, 5 Apr 2026 14:42:53 +0200 Subject: [PATCH 029/107] [SECURITY] API: Add missing event filter for check-ins --- src/pretix/api/views/checkin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pretix/api/views/checkin.py b/src/pretix/api/views/checkin.py index 413022919..c6567a4d5 100644 --- a/src/pretix/api/views/checkin.py +++ b/src/pretix/api/views/checkin.py @@ -1122,7 +1122,7 @@ class CheckinViewSet(viewsets.ReadOnlyModelViewSet): permission = 'event.orders:read' def get_queryset(self): - qs = Checkin.all.filter().select_related( + qs = Checkin.all.filter(list__event=self.request.event).select_related( "position", "device", ) -- 2.49.1 From cb6d3967a0e316504e6d36a7edbf8a190107f1e5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 15:30:05 +0200 Subject: [PATCH 030/107] Bump picomatch from 2.3.1 to 2.3.2 in /src/pretix/static/npm_dir (#6030) Bumps [picomatch](https://github.com/micromatch/picomatch) from 2.3.1 to 2.3.2. - [Release notes](https://github.com/micromatch/picomatch/releases) - [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2) --- updated-dependencies: - dependency-name: picomatch dependency-version: 2.3.2 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- src/pretix/static/npm_dir/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/pretix/static/npm_dir/package-lock.json b/src/pretix/static/npm_dir/package-lock.json index c43340d44..6da8116e3 100644 --- a/src/pretix/static/npm_dir/package-lock.json +++ b/src/pretix/static/npm_dir/package-lock.json @@ -2879,9 +2879,9 @@ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "engines": { "node": ">=8.6" }, @@ -5715,9 +5715,9 @@ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==" }, "pify": { "version": "4.0.1", -- 2.49.1 From d2ca217cd851b3329b7f10fccf61404bcabedbe5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 15:30:15 +0200 Subject: [PATCH 031/107] Bump brace-expansion from 1.1.12 to 1.1.13 in /src/pretix/static/npm_dir (#6050) Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.12 to 1.1.13. - [Release notes](https://github.com/juliangruber/brace-expansion/releases) - [Commits](https://github.com/juliangruber/brace-expansion/compare/v1.1.12...v1.1.13) --- updated-dependencies: - dependency-name: brace-expansion dependency-version: 1.1.13 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- src/pretix/static/npm_dir/package-lock.json | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/pretix/static/npm_dir/package-lock.json b/src/pretix/static/npm_dir/package-lock.json index 6da8116e3..9f6323490 100644 --- a/src/pretix/static/npm_dir/package-lock.json +++ b/src/pretix/static/npm_dir/package-lock.json @@ -1835,10 +1835,9 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "optional": true, "dependencies": { "balanced-match": "^1.0.0", @@ -4936,9 +4935,9 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "optional": true, "requires": { "balanced-match": "^1.0.0", -- 2.49.1 From aa420d4353f210ee606c5c431b12af69600c2a00 Mon Sep 17 00:00:00 2001 From: luelista Date: Wed, 8 Apr 2026 18:47:45 +0200 Subject: [PATCH 032/107] Do not reset event list type automatically (Z#23226325) (#6068) Co-authored-by: Kara Engelhardt --- src/pretix/presale/views/event.py | 2 -- src/pretix/presale/views/widget.py | 4 +--- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/pretix/presale/views/event.py b/src/pretix/presale/views/event.py index 2b3b08aaa..786377e3e 100644 --- a/src/pretix/presale/views/event.py +++ b/src/pretix/presale/views/event.py @@ -681,8 +681,6 @@ class EventIndex(EventViewMixin, EventListMixin, CartMixin, TemplateView): context = {} context['list_type'] = self.request.GET.get("style", self.request.event.settings.event_list_type) if context['list_type'] not in ("calendar", "week") and self.request.event.subevents.filter(date_from__gt=time_machine_now()).count() > 50: - if self.request.event.settings.event_list_type not in ("calendar", "week"): - self.request.event.settings.event_list_type = "calendar" context['list_type'] = "calendar" if context['list_type'] == "calendar": diff --git a/src/pretix/presale/views/widget.py b/src/pretix/presale/views/widget.py index 68c6ea4e6..d2e54ed90 100644 --- a/src/pretix/presale/views/widget.py +++ b/src/pretix/presale/views/widget.py @@ -530,12 +530,10 @@ class WidgetAPIProductList(EventListMixin, View): ] if hasattr(self.request, 'event') and data['list_type'] not in ("calendar", "week"): - # only allow list-view of more than 50 subevents if ordering is by data as this can be done in the database + # only allow list-view of more than 50 subevents if ordering is by date as this can be done in the database # ordering by name is currently not supported in database due to I18NField-JSON ordering = self.request.event.settings.get('frontpage_subevent_ordering', default='date_ascending', as_type=str) if ordering not in ("date_ascending", "date_descending") and self.request.event.subevents.filter(date_from__gt=now()).count() > 50: - if self.request.event.settings.event_list_type not in ("calendar", "week"): - self.request.event.settings.event_list_type = "calendar" data['list_type'] = list_type = 'calendar' if hasattr(self.request, 'event'): -- 2.49.1 From 58cce4b85e19d6927adb793b20ce8c4036502435 Mon Sep 17 00:00:00 2001 From: Lukas Bockstaller Date: Thu, 9 Apr 2026 12:32:46 +0200 Subject: [PATCH 033/107] adds fallback to PaymentDetailsField (PRETIXEU-D6V) (#6041) * adds fallback to PaymentDetailsField * return empty object instead of info_data --- src/pretix/api/serializers/order.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/pretix/api/serializers/order.py b/src/pretix/api/serializers/order.py index 6b83f832b..f402e7fc9 100644 --- a/src/pretix/api/serializers/order.py +++ b/src/pretix/api/serializers/order.py @@ -769,7 +769,11 @@ class PaymentDetailsField(serializers.Field): pp = value.payment_provider if not pp: return {} - return pp.api_payment_details(value) + try: + return pp.api_payment_details(value) + except Exception: + logger.exception("Failed to retrieve payment_details") + return {} class OrderPaymentSerializer(I18nAwareModelSerializer): -- 2.49.1 From 5d7ee584d9f26934143409a674fd733190b9a1c9 Mon Sep 17 00:00:00 2001 From: Kara Engelhardt Date: Thu, 2 Apr 2026 10:20:29 +0200 Subject: [PATCH 034/107] Fix AttributeError when running tests with debug toolbar installed --- src/pretix/testutils/settings.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/pretix/testutils/settings.py b/src/pretix/testutils/settings.py index c73440dea..6cf5f121f 100644 --- a/src/pretix/testutils/settings.py +++ b/src/pretix/testutils/settings.py @@ -94,6 +94,9 @@ class DisableMigrations(object): def __getitem__(self, item): return None + def setdefault(self, key, default=None): + return + if not os.environ.get("GITHUB_WORKFLOW", ""): MIGRATION_MODULES = DisableMigrations() -- 2.49.1 From 6d07530d2bbda68f756e01644746d9f45c4d01f8 Mon Sep 17 00:00:00 2001 From: Kian Cross Date: Fri, 10 Apr 2026 08:14:34 +0100 Subject: [PATCH 035/107] Waiting list: group product choices by category (#6006) * Group waiting list product choices by category Use optgroups to group products by category in the waiting list selection dropdown. Products are normally separated in the UI by category grouping, but this context is lost in the waiting list form. When multiple products share the same name, this can make it difficult for customers to distinguish between them. * Add tests for waiting list initial selection with optgroups Verify that the initial product selection (via `?item=` and `?var=` query parameters) works correctly when choices are grouped by category into ``s. Covers both plain items and items with variations. --- src/pretix/presale/views/waiting.py | 13 +++++-- src/tests/presale/test_event.py | 59 +++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 4 deletions(-) diff --git a/src/pretix/presale/views/waiting.py b/src/pretix/presale/views/waiting.py index 6a8d85e46..b2b101979 100644 --- a/src/pretix/presale/views/waiting.py +++ b/src/pretix/presale/views/waiting.py @@ -66,22 +66,27 @@ class WaitingView(EventViewMixin, FormView): if customer else None ), ) - choices = [] + groups = {} for i in items: if not i.allow_waitinglist: continue + category_name = str(i.category.name) if i.category else '' + group = groups.setdefault(category_name, []) + if i.has_variations: for v in i.available_variations: if v.cached_availability[0] == Quota.AVAILABILITY_OK: continue - choices.append((f'{i.pk}-{v.pk}', f'{i.name} – {v.value}')) + group.append((f'{i.pk}-{v.pk}', f'{i.name} – {v.value}')) else: if i.cached_availability[0] == Quota.AVAILABILITY_OK: continue - choices.append((f'{i.pk}', f'{i.name}')) - return choices + group.append((f'{i.pk}', f'{i.name}')) + + # Remove categories where all items were available (no waiting list choices) + return [(cat, choices) for cat, choices in groups.items() if choices] def get_form_kwargs(self): kwargs = super().get_form_kwargs() diff --git a/src/tests/presale/test_event.py b/src/tests/presale/test_event.py index 64558c413..5ffd28db3 100644 --- a/src/tests/presale/test_event.py +++ b/src/tests/presale/test_event.py @@ -1162,6 +1162,65 @@ class WaitingListTest(EventTestMixin, SoupTest): assert wle.voucher is None assert wle.locale == 'en' + def test_initial_selection(self): + with scopes_disabled(): + cat = ItemCategory.objects.create(event=self.event, name='Tickets') + self.item.category = cat + self.item.save() + + item2 = Item.objects.create( + event=self.event, name='VIP ticket', + default_price=Decimal('25.00'), + active=True, category=cat, + ) + self.q.items.add(item2) + + response = self.client.get( + '/%s/%s/waitinglist/?item=%d' % ( + self.orga.slug, self.event.slug, item2.pk + ) + ) + self.assertEqual(response.status_code, 200) + doc = BeautifulSoup(response.render().content, "lxml") + + select = doc.find('select', {'name': 'itemvar'}) + optgroup = select.find('optgroup') + self.assertIsNotNone(optgroup, 'Choices should be grouped by category') + self.assertEqual(optgroup['label'], 'Tickets') + + selected = select.find_all('option', selected=True) + self.assertEqual(len(selected), 1, 'Exactly one option should be pre-selected') + self.assertEqual(selected[0]['value'], str(item2.pk)) + + def test_initial_selection_with_variation(self): + with scopes_disabled(): + cat = ItemCategory.objects.create(event=self.event, name='Tickets') + self.item.category = cat + self.item.has_variations = True + self.item.save() + + var1 = ItemVariation.objects.create(item=self.item, value='Standard') + var2 = ItemVariation.objects.create(item=self.item, value='Premium') + self.q.variations.add(var1, var2) + + response = self.client.get( + '/%s/%s/waitinglist/?item=%d&var=%d' % ( + self.orga.slug, self.event.slug, + self.item.pk, var2.pk, + ) + ) + self.assertEqual(response.status_code, 200) + doc = BeautifulSoup(response.render().content, "lxml") + + select = doc.find('select', {'name': 'itemvar'}) + optgroup = select.find('optgroup') + self.assertIsNotNone(optgroup, 'Choices should be grouped by category') + self.assertEqual(optgroup['label'], 'Tickets') + + selected = select.find_all('option', selected=True) + self.assertEqual(len(selected), 1, 'Exactly one option should be pre-selected') + self.assertEqual(selected[0]['value'], '%d-%d' % (self.item.pk, var2.pk)) + def test_subevent_valid(self): with scopes_disabled(): self.event.has_subevents = True -- 2.49.1 From bb450e1be9d264ea52c849c220af18ec97db81b6 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 26 Mar 2026 14:05:41 +0100 Subject: [PATCH 036/107] Add default protection for SSRF --- src/pretix/helpers/monkeypatching.py | 132 +++++++++++++++++++++++++++ src/pretix/settings.py | 1 + src/tests/helpers/test_urllib.py | 93 +++++++++++++++++++ 3 files changed, 226 insertions(+) create mode 100644 src/tests/helpers/test_urllib.py diff --git a/src/pretix/helpers/monkeypatching.py b/src/pretix/helpers/monkeypatching.py index 8d824612c..59f25bf7c 100644 --- a/src/pretix/helpers/monkeypatching.py +++ b/src/pretix/helpers/monkeypatching.py @@ -19,12 +19,26 @@ # You should have received a copy of the GNU Affero General Public License along with this program. If not, see # . # +import ipaddress +import socket +import sys import types from datetime import datetime from http import cookies +from django.conf import settings from PIL import Image from requests.adapters import HTTPAdapter +from urllib3.connection import HTTPConnection, HTTPSConnection +from urllib3.connectionpool import HTTPConnectionPool, HTTPSConnectionPool +from urllib3.exceptions import ( + ConnectTimeoutError, HTTPError, LocationParseError, NameResolutionError, + NewConnectionError, +) +from urllib3.util.connection import ( + _TYPE_SOCKET_OPTIONS, _set_socket_options, allowed_gai_family, +) +from urllib3.util.timeout import _DEFAULT_TIMEOUT def monkeypatch_vobject_performance(): @@ -89,6 +103,123 @@ def monkeypatch_requests_timeout(): HTTPAdapter.send = httpadapter_send +def monkeypatch_urllib3_ssrf_protection(): + """ + pretix allows HTTP requests to untrusted URLs, e.g. through webhooks or external API URLs. This is dangerous since + it can allow access to private networks that should not be reachable by users ("server-side request forgery", SSRF). + Validating URLs at submission is not sufficient, since with DNS rebinding an attacker can make a domain name pass + validation and then resolve to a private IP address on actual execution. Unfortunately, there seems no clean solution + to this in Python land, so we monkeypatch urllib3's connection management to check the IP address to be external + *after* the DNS resolution. + + This does not work when a global http(s) proxy is used, but in that scenario the proxy can perform the validation. + """ + if settings.ALLOW_HTTP_TO_PRIVATE_NETWORKS: + # Settings are not supposed to change during runtime, so we can optimize performance and complexity by skipping + # this if not needed. + return + + def create_connection( + address: tuple[str, int], + timeout=_DEFAULT_TIMEOUT, + source_address: tuple[str, int] | None = None, + socket_options: _TYPE_SOCKET_OPTIONS | None = None, + ) -> socket.socket: + # This is copied from urllib3.util.connection v2.3.0 + host, port = address + if host.startswith("["): + host = host.strip("[]") + err = None + + # Using the value from allowed_gai_family() in the context of getaddrinfo lets + # us select whether to work with IPv4 DNS records, IPv6 records, or both. + # The original create_connection function always returns all records. + family = allowed_gai_family() + + try: + host.encode("idna") + except UnicodeError: + raise LocationParseError(f"'{host}', label empty or too long") from None + + for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): + af, socktype, proto, canonname, sa = res + + if not settings.ALLOW_HTTP_TO_PRIVATE_NETWORKS: + ip_addr = ipaddress.ip_address(sa[0]) + if ip_addr.is_multicast: + raise HTTPError(f"Request to multicast address {sa[0]} blocked") + if ip_addr.is_loopback or ip_addr.is_link_local: + raise HTTPError(f"Request to local address {sa[0]} blocked") + if ip_addr.is_private: + raise HTTPError(f"Request to private address {sa[0]} blocked") + + sock = None + try: + sock = socket.socket(af, socktype, proto) + + # If provided, set socket level options before connecting. + _set_socket_options(sock, socket_options) + + if timeout is not _DEFAULT_TIMEOUT: + sock.settimeout(timeout) + if source_address: + sock.bind(source_address) + sock.connect(sa) + # Break explicitly a reference cycle + err = None + return sock + + except OSError as _: + err = _ + if sock is not None: + sock.close() + + if err is not None: + try: + raise err + finally: + # Break explicitly a reference cycle + err = None + else: + raise OSError("getaddrinfo returns an empty list") + + class ProtectionMixin: + def _new_conn(self) -> socket.socket: + # This is 1:1 the version from urllib3.connection.HTTPConnection._new_conn v2.3.0 + # just with a call to our own create_connection + try: + sock = create_connection( + (self._dns_host, self.port), + self.timeout, + source_address=self.source_address, + socket_options=self.socket_options, + ) + except socket.gaierror as e: + raise NameResolutionError(self.host, self, e) from e + except socket.timeout as e: + raise ConnectTimeoutError( + self, + f"Connection to {self.host} timed out. (connect timeout={self.timeout})", + ) from e + + except OSError as e: + raise NewConnectionError( + self, f"Failed to establish a new connection: {e}" + ) from e + + sys.audit("http.client.connect", self, self.host, self.port) + return sock + + class ProtectedHTTPConnection(ProtectionMixin, HTTPConnection): + pass + + class ProtectedHTTPSConnection(ProtectionMixin, HTTPSConnection): + pass + + HTTPConnectionPool.ConnectionCls = ProtectedHTTPConnection + HTTPSConnectionPool.ConnectionCls = ProtectedHTTPSConnection + + def monkeypatch_cookie_morsel(): # See https://code.djangoproject.com/ticket/34613 cookies.Morsel._flags.add("partitioned") @@ -99,4 +230,5 @@ def monkeypatch_all_at_ready(): monkeypatch_vobject_performance() monkeypatch_pillow_safer() monkeypatch_requests_timeout() + monkeypatch_urllib3_ssrf_protection() monkeypatch_cookie_morsel() diff --git a/src/pretix/settings.py b/src/pretix/settings.py index 6c49116d9..d5ec12158 100644 --- a/src/pretix/settings.py +++ b/src/pretix/settings.py @@ -223,6 +223,7 @@ CSRF_TRUSTED_ORIGINS = [urlparse(SITE_URL).scheme + '://' + urlparse(SITE_URL).h TRUST_X_FORWARDED_FOR = config.getboolean('pretix', 'trust_x_forwarded_for', fallback=False) USE_X_FORWARDED_HOST = config.getboolean('pretix', 'trust_x_forwarded_host', fallback=False) +ALLOW_HTTP_TO_PRIVATE_NETWORKS = config.getboolean('pretix', 'allow_http_to_private_networks', fallback=False) REQUEST_ID_HEADER = config.get('pretix', 'request_id_header', fallback=False) diff --git a/src/tests/helpers/test_urllib.py b/src/tests/helpers/test_urllib.py new file mode 100644 index 000000000..d4342bbe2 --- /dev/null +++ b/src/tests/helpers/test_urllib.py @@ -0,0 +1,93 @@ +# +# This file is part of pretix (Community Edition). +# +# Copyright (C) 2014-2020 Raphael Michel and contributors +# Copyright (C) 2020-today pretix GmbH and contributors +# +# This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General +# Public License as published by the Free Software Foundation in version 3 of the License. +# +# ADDITIONAL TERMS APPLY: Pursuant to Section 7 of the GNU Affero General Public License, additional terms are +# applicable granting you additional permissions and placing additional restrictions on your usage of this software. +# Please refer to the pretix LICENSE file to obtain the full terms applicable to this work. If you did not receive +# this file, see . +# +# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more +# details. +# +# You should have received a copy of the GNU Affero General Public License along with this program. If not, see +# . +# +from socket import AF_INET, SOCK_STREAM +from unittest import mock + +import pytest +import requests +from django.test import override_settings +from dns.inet import AF_INET6 +from urllib3.exceptions import HTTPError + + +def test_local_blocked(): + with pytest.raises(HTTPError, match="Request to local address.*"): + requests.get("http://localhost", timeout=0.1) + with pytest.raises(HTTPError, match="Request to local address.*"): + requests.get("https://localhost", timeout=0.1) + + +def test_private_ip_blocked(): + with pytest.raises(HTTPError, match="Request to private address.*"): + requests.get("http://10.0.0.1", timeout=0.1) + with pytest.raises(HTTPError, match="Request to private address.*"): + requests.get("https://10.0.0.1", timeout=0.1) + + +@pytest.mark.django_db +@pytest.mark.parametrize("res", [ + [(AF_INET, SOCK_STREAM, 6, '', ('10.0.0.3', 443))], + [(AF_INET, SOCK_STREAM, 6, '', ('0.0.0.0', 443))], + [(AF_INET, SOCK_STREAM, 6, '', ('127.1.1.1', 443))], + [(AF_INET, SOCK_STREAM, 6, '', ('192.168.5.3', 443))], + [(AF_INET, SOCK_STREAM, 6, '', ('224.0.0.1', 443))], + [(AF_INET6, SOCK_STREAM, 6, '', ('::1', 443, 0, 0))], + [(AF_INET6, SOCK_STREAM, 6, '', ('fe80::1', 443, 0, 0))], + [(AF_INET6, SOCK_STREAM, 6, '', ('ff00::1', 443, 0, 0))], + [(AF_INET6, SOCK_STREAM, 6, '', ('fc00::1', 443, 0, 0))], +]) +def test_dns_resolving_to_local_blocked(res): + with mock.patch('socket.getaddrinfo') as mock_addr: + mock_addr.return_value = res + with pytest.raises(HTTPError, match="Request to (multicast|private|local) address.*"): + requests.get("https://example.org", timeout=0.1) + with pytest.raises(HTTPError, match="Request to (multicast|private|local) address.*"): + requests.get("http://example.org", timeout=0.1) + + +def test_dns_remote_allowed(): + class SocketOk(Exception): + pass + + def side_effect(*args, **kwargs): + raise SocketOk + + with mock.patch('socket.getaddrinfo') as mock_addr, mock.patch('socket.socket') as mock_socket: + mock_addr.return_value = [(AF_INET, SOCK_STREAM, 6, '', ('8.8.8.8', 443))] + mock_socket.side_effect = side_effect + with pytest.raises(SocketOk): + requests.get("https://example.org", timeout=0.1) + + +@override_settings(ALLOW_HTTP_TO_PRIVATE_NETWORKS=True) +def test_local_is_allowed(): + class SocketOk(Exception): + pass + + def side_effect(*args, **kwargs): + raise SocketOk + + with mock.patch('socket.getaddrinfo') as mock_addr, mock.patch('socket.socket') as mock_socket: + mock_addr.return_value = [(AF_INET, SOCK_STREAM, 6, '', ('10.0.0.1', 443))] + mock_socket.side_effect = side_effect + with pytest.raises(SocketOk): + requests.get("https://example.org", timeout=0.1) -- 2.49.1 From f50548cd02379b138261da24c0891c0d63756491 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Fri, 10 Apr 2026 09:45:47 +0200 Subject: [PATCH 037/107] Fix crash on build --- src/pretix/helpers/monkeypatching.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pretix/helpers/monkeypatching.py b/src/pretix/helpers/monkeypatching.py index 59f25bf7c..6b3509f64 100644 --- a/src/pretix/helpers/monkeypatching.py +++ b/src/pretix/helpers/monkeypatching.py @@ -114,7 +114,7 @@ def monkeypatch_urllib3_ssrf_protection(): This does not work when a global http(s) proxy is used, but in that scenario the proxy can perform the validation. """ - if settings.ALLOW_HTTP_TO_PRIVATE_NETWORKS: + if getattr(settings, "ALLOW_HTTP_TO_PRIVATE_NETWORKS", False): # Settings are not supposed to change during runtime, so we can optimize performance and complexity by skipping # this if not needed. return @@ -144,7 +144,7 @@ def monkeypatch_urllib3_ssrf_protection(): for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): af, socktype, proto, canonname, sa = res - if not settings.ALLOW_HTTP_TO_PRIVATE_NETWORKS: + if not getattr(settings, "ALLOW_HTTP_TO_PRIVATE_NETWORKS", False): ip_addr = ipaddress.ip_address(sa[0]) if ip_addr.is_multicast: raise HTTPError(f"Request to multicast address {sa[0]} blocked") -- 2.49.1 From 0bb04ca8f039dbe6e1ff8b69dc3d9b4e36018890 Mon Sep 17 00:00:00 2001 From: pajowu Date: Fri, 10 Apr 2026 10:55:07 +0200 Subject: [PATCH 038/107] Email: Check custom SMTP IP at usage time --- src/pretix/base/email.py | 80 ++++++++++++++++++++++++ src/pretix/settings.py | 3 +- src/tests/base/test_mail.py | 117 ++++++++++++++++++++++++++++++++++++ 3 files changed, 199 insertions(+), 1 deletion(-) diff --git a/src/pretix/base/email.py b/src/pretix/base/email.py index 155b29657..9be1d204c 100644 --- a/src/pretix/base/email.py +++ b/src/pretix/base/email.py @@ -19,7 +19,10 @@ # You should have received a copy of the GNU Affero General Public License along with this program. If not, see # . # +import ipaddress import logging +import smtplib +import socket from itertools import groupby from smtplib import SMTPResponseException from typing import TypeVar @@ -237,3 +240,80 @@ def base_renderers(sender, **kwargs): def get_email_context(**kwargs): return PlaceholderContext(**kwargs).render_all() + + +def create_connection(address, timeout=socket.getdefaulttimeout(), + source_address=None, *, all_errors=False): + # Taken from the python stdlib, extended with a check for local ips + + host, port = address + exceptions = [] + for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM): + af, socktype, proto, canonname, sa = res + + if not settings.get("MAIL_CUSTOM_SMTP_ALLOW_PRIVATE_NETWORKS", False): + ip_addr = ipaddress.ip_address(sa[0]) + if ip_addr.is_multicast: + raise socket.error(f"Request to multicast address {sa[0]} blocked") + if ip_addr.is_loopback or ip_addr.is_link_local: + raise socket.error(f"Request to local address {sa[0]} blocked") + if ip_addr.is_private: + raise socket.error(f"Request to private address {sa[0]} blocked") + + sock = None + try: + sock = socket.socket(af, socktype, proto) + if timeout is not socket.getdefaulttimeout(): + sock.settimeout(timeout) + if source_address: + sock.bind(source_address) + sock.connect(sa) + # Break explicitly a reference cycle + exceptions.clear() + return sock + + except socket.error as exc: + if not all_errors: + exceptions.clear() # raise only the last error + exceptions.append(exc) + if sock is not None: + sock.close() + + if len(exceptions): + try: + if not all_errors: + raise exceptions[0] + raise ExceptionGroup("create_connection failed", exceptions) + finally: + # Break explicitly a reference cycle + exceptions.clear() + else: + raise socket.error("getaddrinfo returns an empty list") + + +class CheckPrivateNetworkMixin: + # _get_socket taken 1:1 from smtplib, just with a call to our own create_connection + def _get_socket(self, host, port, timeout): + # This makes it simpler for SMTP_SSL to use the SMTP connect code + # and just alter the socket connection bit. + if timeout is not None and not timeout: + raise ValueError('Non-blocking socket (timeout=0) is not supported') + if self.debuglevel > 0: + self._print_debug('connect: to', (host, port), self.source_address) + return create_connection((host, port), timeout, self.source_address) + + +class SMTP(CheckPrivateNetworkMixin, smtplib.SMTP): + pass + + +# SMTP used here instead of mixin, because smtp.SMTP_SSL._get_socket calls super()._get_socket and then wraps this socket +# super()._get_socket needs to be our version from the mixin +class SMTP_SSL(smtplib.SMTP_SSL, SMTP): # noqa: N801 + pass + + +class CheckPrivateNetworkSmtpBackend(EmailBackend): + @property + def connection_class(self): + return SMTP_SSL if self.use_ssl else SMTP diff --git a/src/pretix/settings.py b/src/pretix/settings.py index d5ec12158..a798c55d3 100644 --- a/src/pretix/settings.py +++ b/src/pretix/settings.py @@ -264,7 +264,8 @@ EMAIL_HOST_PASSWORD = config.get('mail', 'password', fallback='') EMAIL_USE_TLS = config.getboolean('mail', 'tls', fallback=False) EMAIL_USE_SSL = config.getboolean('mail', 'ssl', fallback=False) EMAIL_SUBJECT_PREFIX = '[pretix] ' -EMAIL_BACKEND = EMAIL_CUSTOM_SMTP_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' +EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' +EMAIL_CUSTOM_SMTP_BACKEND = 'pretixbase.email.CheckPrivateNetworkSmtpBackend' EMAIL_TIMEOUT = 60 ADMINS = [('Admin', n) for n in config.get('mail', 'admins', fallback='').split(",") if n] diff --git a/src/tests/base/test_mail.py b/src/tests/base/test_mail.py index 8ccf0965b..9f1f971e5 100644 --- a/src/tests/base/test_mail.py +++ b/src/tests/base/test_mail.py @@ -35,8 +35,11 @@ import datetime import os import re +import socket +from contextlib import contextmanager from decimal import Decimal from email.mime.text import MIMEText +from unittest import mock import pytest from django.conf import settings @@ -591,3 +594,117 @@ def test_attached_ical_localization(env, order): assert len(djmail.outbox) == 1 assert len(djmail.outbox[0].attachments) == 1 assert description in djmail.outbox[0].attachments[0][1] + + +PRIVATE_IPS_RES = [ + [(socket.AF_INET, socket.SOCK_STREAM, 6, '', ('10.0.0.3', 443))], + [(socket.AF_INET, socket.SOCK_STREAM, 6, '', ('0.0.0.0', 443))], + [(socket.AF_INET, socket.SOCK_STREAM, 6, '', ('127.1.1.1', 443))], + [(socket.AF_INET, socket.SOCK_STREAM, 6, '', ('192.168.5.3', 443))], + [(socket.AF_INET, socket.SOCK_STREAM, 6, '', ('224.0.0.1', 443))], + [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('::1', 443, 0, 0))], + [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('fe80::1', 443, 0, 0))], + [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('ff00::1', 443, 0, 0))], + [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('fc00::1', 443, 0, 0))], +] + + +@contextmanager +def test_mail_connection(res, should_connect, use_ssl): + with ( + mock.patch('socket.socket') as mock_socket, + mock.patch('socket.getaddrinfo', return_value=res), + mock.patch('smtplib.SMTP.getreply', return_value=(220, "")), + mock.patch('smtplib.SMTP.sendmail'), + mock.patch('ssl.SSLContext.wrap_socket') as mock_ssl + ): + yield + + if should_connect: + mock_socket.assert_called_once() + mock_socket.return_value.connect.assert_called_once_with(res[0][-1]) + if use_ssl: + mock_ssl.assert_called_once() + else: + mock_socket.assert_not_called() + mock_socket.return_value.connect.assert_not_called() + mock_ssl.assert_not_called() + + +@pytest.mark.parametrize("res", PRIVATE_IPS_RES) +@pytest.mark.parametrize("use_ssl", [ + True, False +]) +def test_private_smtp_ip(res, use_ssl, settings): + settings.EMAIL_CUSTOM_SMTP_BACKEND = 'pretix.base.email.CheckPrivateNetworkSmtpBackend' + settings.MAIL_CUSTOM_SMTP_ALLOW_PRIVATE_NETWORKS = False + with test_mail_connection(res=res, should_connect=False, use_ssl=use_ssl), pytest.raises(match="Request to .* blocked"): + connection = djmail.get_connection(backend=settings.EMAIL_CUSTOM_SMTP_BACKEND, + host="localhost", + use_ssl=use_ssl) + connection.open() + + settings.MAIL_CUSTOM_SMTP_ALLOW_PRIVATE_NETWORKS = True + with test_mail_connection(res=res, should_connect=True, use_ssl=use_ssl): + connection = djmail.get_connection(backend=settings.EMAIL_CUSTOM_SMTP_BACKEND, + host="localhost", + use_ssl=use_ssl) + connection.open() + + +@pytest.mark.parametrize("use_ssl", [ + True, False +]) +@pytest.mark.parametrize("allow_private", [ + True, False +]) +def test_public_smtp_ip(use_ssl, allow_private, settings): + settings.EMAIL_CUSTOM_SMTP_BACKEND = 'pretix.base.email.CheckPrivateNetworkSmtpBackend' + settings.MAIL_CUSTOM_SMTP_ALLOW_PRIVATE_NETWORKS = allow_private + + with test_mail_connection(res=[(socket.AF_INET, socket.SOCK_STREAM, 6, '', ('8.8.8.8', 443))], should_connect=True, use_ssl=use_ssl): + connection = djmail.get_connection(backend=settings.EMAIL_CUSTOM_SMTP_BACKEND, + host="localhost", + use_ssl=use_ssl) + connection.open() + + +@pytest.mark.django_db +@pytest.mark.parametrize("use_ssl", [ + True, False +]) +@pytest.mark.parametrize("allow_private_networks", [ + True, False +]) +@pytest.mark.parametrize("res", PRIVATE_IPS_RES) +def test_send_mail_private_ip(res, use_ssl, allow_private_networks, env): + settings.EMAIL_CUSTOM_SMTP_BACKEND = 'pretix.base.email.CheckPrivateNetworkSmtpBackend' + settings.MAIL_CUSTOM_SMTP_ALLOW_PRIVATE_NETWORKS = allow_private_networks + + event, user, organizer = env + event.settings.smtp_use_custom = True + event.settings.smtp_host = "example.com" + event.settings.smtp_use_ssl = use_ssl + event.settings.smtp_use_tls = False + + def send_mail(): + m = OutgoingMail.objects.create( + to=['recipient@example.com'], + subject='Test', + body_plain='Test', + sender='sender@example.com', + event=event + ) + assert m.status == OutgoingMail.STATUS_QUEUED + mail_send_task.apply(kwargs={ + 'outgoing_mail': m.pk, + }, max_retries=0) + m.refresh_from_db() + return m + + with test_mail_connection(res=res, should_connect=allow_private_networks, use_ssl=use_ssl): + m = send_mail() + if allow_private_networks: + assert m.status == OutgoingMail.STATUS_SENT + else: + assert m.status == OutgoingMail.STATUS_FAILED -- 2.49.1 From e80b4b560b2a9b0403ec5135278fec6a4ba7f157 Mon Sep 17 00:00:00 2001 From: pajowu Date: Fri, 10 Apr 2026 11:44:36 +0200 Subject: [PATCH 039/107] customer login: open pw reset link in new tab (Z#23231027) (#6074) This way customers don't have to break their checkout flow and the link works in a widgets iframe --- src/pretix/presale/forms/customer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pretix/presale/forms/customer.py b/src/pretix/presale/forms/customer.py index 5c7187e67..9fbbe3857 100644 --- a/src/pretix/presale/forms/customer.py +++ b/src/pretix/presale/forms/customer.py @@ -83,7 +83,7 @@ class AuthenticationForm(forms.Form): self.request = request self.customer_cache = None super().__init__(*args, **kwargs) - self.fields['password'].help_text = "{}".format( + self.fields['password'].help_text = "{}".format( build_absolute_uri(False, 'presale:organizer.customer.resetpw', kwargs={ 'organizer': request.organizer.slug, }), -- 2.49.1 From 49729d2c87534cb235f966f80c6ac75cf5e10e58 Mon Sep 17 00:00:00 2001 From: Hijiri Umemoto Date: Wed, 8 Apr 2026 12:24:49 +0200 Subject: [PATCH 040/107] Translations: Update Japanese Currently translated at 100.0% (6287 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ja/ powered by weblate --- src/pretix/locale/ja/LC_MESSAGES/django.po | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/pretix/locale/ja/LC_MESSAGES/django.po b/src/pretix/locale/ja/LC_MESSAGES/django.po index 91bbff858..5e731f7c7 100644 --- a/src/pretix/locale/ja/LC_MESSAGES/django.po +++ b/src/pretix/locale/ja/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-03-23 21:00+0000\n" +"PO-Revision-Date: 2026-04-08 18:00+0000\n" "Last-Translator: Hijiri Umemoto \n" "Language-Team: Japanese \n" @@ -12939,7 +12939,7 @@ msgstr "企業名を必須にするには、請求先住所を必須にする必 #: pretix/base/settings.py:4157 #, python-brace-format msgid "VAT-ID is not supported for \"{}\"." -msgstr "" +msgstr "VAT-IDは「{}」に対してサポートされていません。" #: pretix/base/settings.py:4164 msgid "The last payment date cannot be before the end of presale." @@ -26796,8 +26796,6 @@ msgid "Add a two-factor authentication device" msgstr "2要素認証デバイスを追加してください" #: pretix/control/templates/pretixcontrol/user/2fa_add.html:19 -#, fuzzy -#| msgid "Smartphone with the Authenticator application" msgid "Smartphone with Authenticator app" msgstr "Authenticatorアプリを搭載したスマートフォン" @@ -26806,18 +26804,20 @@ msgid "" "Use your smartphone with any Time-based One-Time-Password app like freeOTP, " "Google Authenticator or Proton Authenticator." msgstr "" +"freeOTP、Google Authenticator、Proton Authenticator などの時間ベースの" +"ワンタイムパスワードアプリをスマートフォンでご利用ください。" #: pretix/control/templates/pretixcontrol/user/2fa_add.html:30 -#, fuzzy -#| msgid "WebAuthn-compatible hardware token (e.g. Yubikey)" msgid "WebAuthn-compatible hardware token" -msgstr "WebAuthn対応のハードウェアトークン(例:Yubikey)" +msgstr "WebAuthn対応のハードウェアトークン" #: pretix/control/templates/pretixcontrol/user/2fa_add.html:32 msgid "" "Use a hardware token like the Yubikey, or other biometric authentication " "like fingerprint or face recognition." msgstr "" +"Yubikey などのハードウェアトークンや、指紋や顔認識などの生体認証を使用してく" +"ださい。" #: pretix/control/templates/pretixcontrol/user/2fa_confirm_totp.html:8 msgid "To set up this device, please follow the following steps:" -- 2.49.1 From 6c7163406e8391e98747d41a7959e4f8d6d4ba72 Mon Sep 17 00:00:00 2001 From: Ruud Hendrickx Date: Wed, 8 Apr 2026 11:21:34 +0200 Subject: [PATCH 041/107] Translations: Update Dutch (Belgium) Currently translated at 82.9% (5214 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_BE/ powered by weblate --- src/pretix/locale/nl_BE/LC_MESSAGES/django.po | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/pretix/locale/nl_BE/LC_MESSAGES/django.po b/src/pretix/locale/nl_BE/LC_MESSAGES/django.po index 68b5e8757..dc2e936cf 100644 --- a/src/pretix/locale/nl_BE/LC_MESSAGES/django.po +++ b/src/pretix/locale/nl_BE/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-04-01 17:00+0000\n" +"PO-Revision-Date: 2026-04-08 18:00+0000\n" "Last-Translator: Ruud Hendrickx \n" "Language-Team: Dutch (Belgium) \n" @@ -31346,7 +31346,7 @@ msgstr "We zullen u een e-mail sturen zodra we uw betaling ontvangen hebben." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/refund_export.html:7 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/sepa_export.html:7 msgid "Export bank transfer refunds" -msgstr "" +msgstr "Terugbetalingen per bankoverschrijving exporteren" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/refund_export.html:9 #, python-format @@ -31354,6 +31354,8 @@ msgid "" "%(num_new)s Bank transfer refunds have been placed and are " "not yet part of an export." msgstr "" +"%(num_new)s terugbetalingen per bankoverschrijving zijn " +"aangemaakt en nog niet geëxporteerd." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/refund_export.html:15 msgid "In test mode, your exports will only contain test mode orders." @@ -31366,6 +31368,8 @@ msgid "" "If you want, you can now also create these exports for multiple events " "combined." msgstr "" +"Als u dat wilt, kunt u deze exportbestanden nu ook voor meerdere evenementen " +"tegelijk aanmaken." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/refund_export.html:22 msgid "Go to organizer-level exports" @@ -31377,7 +31381,7 @@ msgstr "Nieuw exportbestand aanmaken" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/refund_export.html:38 msgid "Aggregate transactions to the same bank account" -msgstr "" +msgstr "Overschrijvingen naar hetzelfde rekeningnummer samenvoegen" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/refund_export.html:43 msgid "" -- 2.49.1 From 3473fa738dd05685ea5795e52ec49a763b840606 Mon Sep 17 00:00:00 2001 From: pajowu Date: Fri, 10 Apr 2026 12:47:53 +0200 Subject: [PATCH 042/107] Fix AttributeError in CheckPrivateNetworkMixin (#6076) --- src/pretix/base/email.py | 2 +- src/tests/base/test_mail.py | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/pretix/base/email.py b/src/pretix/base/email.py index 9be1d204c..b6a61e8a9 100644 --- a/src/pretix/base/email.py +++ b/src/pretix/base/email.py @@ -251,7 +251,7 @@ def create_connection(address, timeout=socket.getdefaulttimeout(), for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM): af, socktype, proto, canonname, sa = res - if not settings.get("MAIL_CUSTOM_SMTP_ALLOW_PRIVATE_NETWORKS", False): + if not getattr(settings, "MAIL_CUSTOM_SMTP_ALLOW_PRIVATE_NETWORKS", False): ip_addr = ipaddress.ip_address(sa[0]) if ip_addr.is_multicast: raise socket.error(f"Request to multicast address {sa[0]} blocked") diff --git a/src/tests/base/test_mail.py b/src/tests/base/test_mail.py index 9f1f971e5..581710f48 100644 --- a/src/tests/base/test_mail.py +++ b/src/tests/base/test_mail.py @@ -610,7 +610,7 @@ PRIVATE_IPS_RES = [ @contextmanager -def test_mail_connection(res, should_connect, use_ssl): +def assert_mail_connection(res, should_connect, use_ssl): with ( mock.patch('socket.socket') as mock_socket, mock.patch('socket.getaddrinfo', return_value=res), @@ -638,14 +638,14 @@ def test_mail_connection(res, should_connect, use_ssl): def test_private_smtp_ip(res, use_ssl, settings): settings.EMAIL_CUSTOM_SMTP_BACKEND = 'pretix.base.email.CheckPrivateNetworkSmtpBackend' settings.MAIL_CUSTOM_SMTP_ALLOW_PRIVATE_NETWORKS = False - with test_mail_connection(res=res, should_connect=False, use_ssl=use_ssl), pytest.raises(match="Request to .* blocked"): + with assert_mail_connection(res=res, should_connect=False, use_ssl=use_ssl), pytest.raises(match="Request to .* blocked"): connection = djmail.get_connection(backend=settings.EMAIL_CUSTOM_SMTP_BACKEND, host="localhost", use_ssl=use_ssl) connection.open() settings.MAIL_CUSTOM_SMTP_ALLOW_PRIVATE_NETWORKS = True - with test_mail_connection(res=res, should_connect=True, use_ssl=use_ssl): + with assert_mail_connection(res=res, should_connect=True, use_ssl=use_ssl): connection = djmail.get_connection(backend=settings.EMAIL_CUSTOM_SMTP_BACKEND, host="localhost", use_ssl=use_ssl) @@ -662,7 +662,7 @@ def test_public_smtp_ip(use_ssl, allow_private, settings): settings.EMAIL_CUSTOM_SMTP_BACKEND = 'pretix.base.email.CheckPrivateNetworkSmtpBackend' settings.MAIL_CUSTOM_SMTP_ALLOW_PRIVATE_NETWORKS = allow_private - with test_mail_connection(res=[(socket.AF_INET, socket.SOCK_STREAM, 6, '', ('8.8.8.8', 443))], should_connect=True, use_ssl=use_ssl): + with assert_mail_connection(res=[(socket.AF_INET, socket.SOCK_STREAM, 6, '', ('8.8.8.8', 443))], should_connect=True, use_ssl=use_ssl): connection = djmail.get_connection(backend=settings.EMAIL_CUSTOM_SMTP_BACKEND, host="localhost", use_ssl=use_ssl) @@ -702,7 +702,7 @@ def test_send_mail_private_ip(res, use_ssl, allow_private_networks, env): m.refresh_from_db() return m - with test_mail_connection(res=res, should_connect=allow_private_networks, use_ssl=use_ssl): + with assert_mail_connection(res=res, should_connect=allow_private_networks, use_ssl=use_ssl): m = send_mail() if allow_private_networks: assert m.status == OutgoingMail.STATUS_SENT -- 2.49.1 From f46fc7fa697b8d572a5cab6693c9e2a699144c4d Mon Sep 17 00:00:00 2001 From: Mie Frydensbjerg Date: Mon, 13 Apr 2026 15:06:54 +0200 Subject: [PATCH 043/107] Translations: Update Danish Currently translated at 44.2% (2784 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/ powered by weblate --- src/pretix/locale/da/LC_MESSAGES/django.po | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/pretix/locale/da/LC_MESSAGES/django.po b/src/pretix/locale/da/LC_MESSAGES/django.po index 51a9ed88f..75fb29a1a 100644 --- a/src/pretix/locale/da/LC_MESSAGES/django.po +++ b/src/pretix/locale/da/LC_MESSAGES/django.po @@ -4,16 +4,16 @@ msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-03-05 20:00+0000\n" +"PO-Revision-Date: 2026-04-13 14:01+0000\n" "Last-Translator: Mie Frydensbjerg \n" -"Language-Team: Danish \n" +"Language-Team: Danish \n" "Language: da\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" -"X-Generator: Weblate 5.16.1\n" +"X-Generator: Weblate 5.16.2\n" #: pretix/_base_settings.py:87 msgid "English" @@ -36078,7 +36078,6 @@ msgstr "Book nu" #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:38 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:74 #: pretix/presale/views/widget.py:463 -#, fuzzy msgid "Fully booked" msgstr "Fuldt booket" -- 2.49.1 From 059ff6c99b1897545a4339a021ec61fbe039b579 Mon Sep 17 00:00:00 2001 From: pajowu Date: Mon, 13 Apr 2026 19:32:33 +0200 Subject: [PATCH 044/107] Allow buttons to reuse cart (Z#23226853) (#6047) * Allow buttons to reuse cart (Z#23226853) * Always keep cart of buttons with items set --- src/pretix/presale/urls.py | 3 + src/pretix/presale/views/cart.py | 12 +++ .../static/pretixpresale/js/widget/widget.js | 81 +++++++++++++------ 3 files changed, 72 insertions(+), 24 deletions(-) diff --git a/src/pretix/presale/urls.py b/src/pretix/presale/urls.py index 2fe4fc398..94df03d95 100644 --- a/src/pretix/presale/urls.py +++ b/src/pretix/presale/urls.py @@ -91,6 +91,9 @@ event_patterns = [ re_path(r'w/(?P[a-zA-Z0-9]{16})/cart/add', csrf_exempt(pretix.presale.views.cart.CartAdd.as_view()), name='event.cart.add'), + re_path(r'w/(?P[a-zA-Z0-9]{16})/cart/create', + csrf_exempt(pretix.presale.views.cart.CartCreate.as_view()), + name='event.cart.create'), re_path(r'unlock/(?P[a-z0-9]{64})/$', pretix.presale.views.user.UnlockHashView.as_view(), name='event.payment.unlock'), diff --git a/src/pretix/presale/views/cart.py b/src/pretix/presale/views/cart.py index 99af19b19..c6f566371 100644 --- a/src/pretix/presale/views/cart.py +++ b/src/pretix/presale/views/cart.py @@ -555,6 +555,18 @@ class CartClear(EventViewMixin, CartActionMixin, AsyncAction, View): request.sales_channel.identifier, time_machine_now(default=None)) +@method_decorator(allow_cors_if_namespaced, 'dispatch') +class CartCreate(EventViewMixin, CartActionMixin, View): + def get(self, request, *args, **kwargs): + if 'ajax' in self.request.GET: + cart_id = get_or_create_cart_id(self.request, create=True) + return JsonResponse({ + 'cart_id': cart_id, + }) + else: + return redirect_to_url(self.get_success_url()) + + @method_decorator(allow_frame_if_namespaced, 'dispatch') class CartExtendReservation(EventViewMixin, CartActionMixin, AsyncAction, View): task = extend_cart_reservation diff --git a/src/pretix/static/pretixpresale/js/widget/widget.js b/src/pretix/static/pretixpresale/js/widget/widget.js index f7e7bedae..b24f1efca 100644 --- a/src/pretix/static/pretixpresale/js/widget/widget.js +++ b/src/pretix/static/pretixpresale/js/widget/widget.js @@ -110,6 +110,10 @@ var setCookie = function (cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); var expires = "expires=" + d.toUTCString(); + if (!cvalue) { + var expires = "expires=Thu, 01 Jan 1970 00:00:00 GMT"; + cvalue = ""; + } document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; }; var getCookie = function (name) { @@ -726,17 +730,16 @@ var shared_methods = { buy_callback: function (data) { if (data.redirect) { if (data.cart_id) { - this.$root.cart_id = data.cart_id; - setCookie(this.$root.cookieName, data.cart_id, 30); + this.$root.set_cart_id(data.cart_id); } if (data.redirect.substr(0, 1) === '/') { data.redirect = this.$root.target_url.replace(/^([^\/]+:\/\/[^\/]+)\/.*$/, "$1") + data.redirect; } var url = data.redirect; if (url.indexOf('?')) { - url = url + '&iframe=1&locale=' + lang + '&take_cart_id=' + this.$root.cart_id; + url = url + '&iframe=1&locale=' + lang + '&take_cart_id=' + encodeURIComponent(this.$root.get_cart_id()); } else { - url = url + '?iframe=1&locale=' + lang + '&take_cart_id=' + this.$root.cart_id; + url = url + '?iframe=1&locale=' + lang + '&take_cart_id=' + encodeURIComponent(this.$root.get_cart_id()); } url += this.$root.consent_parameter; if (this.$root.additionalURLParams) { @@ -779,15 +782,24 @@ var shared_methods = { } }, resume: function () { + if (!this.$root.get_cart_id() && this.$root.keep_cart) { + // create an empty cart whose id we can persist + this.$root.create_cart(this.resume) + return; + } var redirect_url; redirect_url = this.$root.target_url + 'w/' + widget_id + '/'; - if (this.$root.subevent && !this.$root.cart_id) { + if (this.$root.subevent && this.$root.is_button && this.$root.items.length === 0) { // button with subevent but no items redirect_url += this.$root.subevent + '/'; } redirect_url += '?iframe=1&locale=' + lang; - if (this.$root.cart_id) { - redirect_url += '&take_cart_id=' + this.$root.cart_id; + if (this.$root.get_cart_id()) { + redirect_url += '&take_cart_id=' + encodeURIComponent(this.$root.get_cart_id()); + if (this.$root.keep_cart) { + // make sure the cart-id is used, even if the cart is currently empty + redirect_url += '&ajax=1' + } } if (this.$root.widget_data) { redirect_url += '&widget_data=' + encodeURIComponent(this.$root.widget_data_json); @@ -1864,12 +1876,11 @@ var shared_root_methods = { if (this.$root.variation_filter) { url += '&variations=' + encodeURIComponent(this.$root.variation_filter); } - var cart_id = getCookie(this.cookieName); if (this.$root.voucher_code) { url += '&voucher=' + encodeURIComponent(this.$root.voucher_code); } - if (cart_id) { - url += "&cart_id=" + encodeURIComponent(cart_id); + if (this.$root.get_cart_id()) { + url += "&cart_id=" + encodeURIComponent(this.$root.get_cart_id()); } if (this.$root.date !== null) { url += "&date=" + this.$root.date.substr(0, 7); @@ -1939,7 +1950,6 @@ var shared_root_methods = { root.display_add_to_cart = data.display_add_to_cart; root.waiting_list_enabled = data.waiting_list_enabled; root.show_variations_expanded = data.show_variations_expanded || !!root.variation_filter; - root.cart_id = cart_id; root.cart_exists = data.cart_exists; root.vouchers_exist = data.vouchers_exist; root.has_seating_plan = data.has_seating_plan; @@ -2004,8 +2014,8 @@ var shared_root_methods = { if (this.$root.voucher_code) { redirect_url += '&voucher=' + encodeURIComponent(this.$root.voucher_code); } - if (this.$root.cart_id) { - redirect_url += '&take_cart_id=' + this.$root.cart_id; + if (this.$root.get_cart_id()) { + redirect_url += '&take_cart_id=' + encodeURIComponent(this.$root.get_cart_id()); } if (this.$root.widget_data) { redirect_url += '&widget_data=' + encodeURIComponent(this.$root.widget_data_json); @@ -2027,7 +2037,28 @@ var shared_root_methods = { this.$root.subevent = event.subevent; this.$root.loading++; this.$root.reload(); - } + }, + create_cart: function(callback) { + var url = this.$root.target_url + 'w/' + widget_id + '/cart/create?ajax=1'; + + this.$root.overlay.frame_loading = true; + api._getJSON(url, (data) => { + this.$root.set_cart_id(data.cart_id); + this.$root.overlay.frame_loading = false; + callback() + }, () => { + this.$root.overlay.error_message = strings['cart_error']; + this.$root.overlay.frame_loading = false; + }) + }, + get_cart_id: function() { + if (this.$root.keep_cart) { + return getCookie(this.$root.cookieName); + } + }, + set_cart_id: function(newValue) { + setCookie(this.$root.cookieName, newValue, 30); + }, }; var shared_root_computed = { @@ -2049,9 +2080,8 @@ var shared_root_computed = { }, voucherFormTarget: function () { var form_target = this.target_url + 'w/' + widget_id + '/redeem?iframe=1&locale=' + lang; - var cookie = getCookie(this.cookieName); - if (cookie) { - form_target += "&take_cart_id=" + cookie; + if (this.get_cart_id()) { + form_target += "&take_cart_id=" + encodeURIComponent(this.get_cart_id()); } if (this.subevent) { form_target += "&subevent=" + this.subevent; @@ -2091,9 +2121,8 @@ var shared_root_computed = { checkout_url += '?' + this.$root.additionalURLParams; } var form_target = this.target_url + 'w/' + widget_id + '/cart/add?iframe=1&next=' + encodeURIComponent(checkout_url); - var cookie = getCookie(this.cookieName); - if (cookie) { - form_target += "&take_cart_id=" + cookie; + if (this.get_cart_id()) { + form_target += "&take_cart_id=" + encodeURIComponent(this.get_cart_id()); } form_target += this.$root.consent_parameter return form_target @@ -2329,6 +2358,7 @@ var create_widget = function (element, html_id=null) { has_seating_plan: false, has_seating_plan_waitinglist: false, meta_filter_fields: [], + keep_cart: true, } }, created: function () { @@ -2366,6 +2396,7 @@ var create_button = function (element, html_id=null) { var raw_items = element.attributes.items ? element.attributes.items.value : ""; var skip_ssl = element.attributes["skip-ssl-check"] ? true : false; var disable_iframe = element.attributes["disable-iframe"] ? true : false; + var keep_cart = element.attributes["keep-cart"] ? true : false; var button_text = element.innerHTML; var widget_data = JSON.parse(JSON.stringify(window.PretixWidget.widget_data)); for (var i = 0; i < element.attributes.length; i++) { @@ -2417,7 +2448,8 @@ var create_button = function (element, html_id=null) { widget_data: widget_data, widget_id: 'pretix-widget-' + widget_id, html_id: html_id, - button_text: button_text + button_text: button_text, + keep_cart: keep_cart || items.length > 0, } }, created: function () { @@ -2426,7 +2458,7 @@ var create_button = function (element, html_id=null) { observer.observe(this.$el, observerOptions); }, computed: shared_root_computed, - methods: shared_root_methods + methods: shared_root_methods, }); create_overlay(app); return app; @@ -2492,13 +2524,14 @@ window.PretixWidget.open = function (target_url, voucher, subevent, items, widge frame_dismissed: false, widget_data: all_widget_data, widget_id: 'pretix-widget-' + widget_id, - button_text: "" + button_text: "", + keep_cart: true } }, created: function () { }, computed: shared_root_computed, - methods: shared_root_methods + methods: shared_root_methods, }); create_overlay(app); app.$nextTick(function () { -- 2.49.1 From 5682d3ed560b336253e04e1d6cbfbae44bccc355 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Tue, 14 Apr 2026 09:12:09 +0200 Subject: [PATCH 045/107] Do not force PDFs to be downloaded (Z#23225892) (#5994) * Display invoice and tickets inline in browser (Z#23225892) * Use FileResponse filename for AnswerDownload * Use inline for PDF-view in pretix-control editor * use as_attachment for API FileResponses * do not ignore csp even for disposition=inline * use as_attachment for file responses in control * remove unused code * improve code style * Invoice preview inline * do not force download on tickets in backend * do not force download on AnswerDownload * imrpove code style * improve code style * fix missing int str conversion * Apply suggestions from code review Co-authored-by: luelista --------- Co-authored-by: luelista --- src/pretix/api/views/order.py | 71 +++++++++++++-------- src/pretix/control/views/event.py | 7 +- src/pretix/control/views/global_settings.py | 1 - src/pretix/control/views/orders.py | 32 ++++++---- src/pretix/control/views/pdf.py | 10 +-- src/pretix/presale/views/cart.py | 10 ++- src/pretix/presale/views/order.py | 41 ++++++------ 7 files changed, 90 insertions(+), 82 deletions(-) diff --git a/src/pretix/api/views/order.py b/src/pretix/api/views/order.py index 6d5184db8..4f2b88da7 100644 --- a/src/pretix/api/views/order.py +++ b/src/pretix/api/views/order.py @@ -381,12 +381,15 @@ class EventOrderViewSet(OrderViewSetMixin, viewsets.ModelViewSet): resp = HttpResponse(ct.file.file.read(), content_type='text/uri-list') return resp else: - resp = FileResponse(ct.file.file, content_type=ct.type) - resp['Content-Disposition'] = 'attachment; filename="{}-{}-{}{}"'.format( - self.request.event.slug.upper(), order.code, - provider.identifier, ct.extension + return FileResponse( + ct.file.file, + filename='{}-{}-{}{}'.format( + self.request.event.slug.upper(), order.code, + provider.identifier, ct.extension + ), + as_attachment=True, + content_type=ct.type ) - return resp @action(detail=True, methods=['POST']) def mark_paid(self, request, **kwargs): @@ -1303,14 +1306,17 @@ class EventOrderPositionViewSet(OrderPositionViewSetMixin, viewsets.ModelViewSet raise NotFound() ftype, ignored = mimetypes.guess_type(answer.file.name) - resp = FileResponse(answer.file, content_type=ftype or 'application/binary') - resp['Content-Disposition'] = 'attachment; filename="{}-{}-{}-{}"'.format( - self.request.event.slug.upper(), - pos.order.code, - pos.positionid, - os.path.basename(answer.file.name).split('.', 1)[1] + return FileResponse( + answer.file, + filename='{}-{}-{}-{}"'.format( + self.request.event.slug.upper(), + pos.order.code, + pos.positionid, + os.path.basename(answer.file.name).split('.', 1)[1] + ), + as_attachment=True, + content_type=ftype or 'application/binary' ) - return resp @action(detail=True, url_name="printlog", url_path="printlog", methods=["POST"]) def printlog(self, request, **kwargs): @@ -1365,15 +1371,18 @@ class EventOrderPositionViewSet(OrderPositionViewSetMixin, viewsets.ModelViewSet if hasattr(image_file, 'seek'): image_file.seek(0) - resp = FileResponse(image_file, content_type=ftype or 'application/binary') - resp['Content-Disposition'] = 'attachment; filename="{}-{}-{}-{}.{}"'.format( - self.request.event.slug.upper(), - pos.order.code, - pos.positionid, - key, - extension, + return FileResponse( + image_file, + filename='{}-{}-{}-{}.{}'.format( + self.request.event.slug.upper(), + pos.order.code, + pos.positionid, + key, + extension, + ), + as_attachment=True, + content_type=ftype or 'application/binary' ) - return resp @action(detail=True, url_name='download', url_path='download/(?P[^/]+)') def download(self, request, output, **kwargs): @@ -1399,12 +1408,15 @@ class EventOrderPositionViewSet(OrderPositionViewSetMixin, viewsets.ModelViewSet resp = HttpResponse(ct.file.file.read(), content_type='text/uri-list') return resp else: - resp = FileResponse(ct.file.file, content_type=ct.type) - resp['Content-Disposition'] = 'attachment; filename="{}-{}-{}-{}{}"'.format( - self.request.event.slug.upper(), pos.order.code, pos.positionid, - provider.identifier, ct.extension + return FileResponse( + ct.file.file, + filename='{}-{}-{}-{}{}'.format( + self.request.event.slug.upper(), pos.order.code, pos.positionid, + provider.identifier, ct.extension + ), + as_attachment=True, + content_type=ct.type ) - return resp @action(detail=True, methods=['POST']) def regenerate_secrets(self, request, **kwargs): @@ -1986,9 +1998,12 @@ class InvoiceViewSet(viewsets.ReadOnlyModelViewSet): if not invoice.file: raise RetryException() - resp = FileResponse(invoice.file.file, content_type='application/pdf') - resp['Content-Disposition'] = 'attachment; filename="{}.pdf"'.format(invoice.number) - return resp + return FileResponse( + invoice.file.file, + filename='{}.pdf"'.format(invoice.number), + as_attachment=True, + content_type='application/pdf' + ) @action(detail=True, methods=['POST']) def transmit(self, request, **kwargs): diff --git a/src/pretix/control/views/event.py b/src/pretix/control/views/event.py index 92eb58c7d..7a25d97bc 100644 --- a/src/pretix/control/views/event.py +++ b/src/pretix/control/views/event.py @@ -763,12 +763,7 @@ class InvoicePreview(EventPermissionRequiredMixin, View): def get(self, request, *args, **kwargs): fname, ftype, fcontent = build_preview_invoice_pdf(request.event) resp = HttpResponse(fcontent, content_type=ftype) - if settings.DEBUG: - # attachment is more secure as we're dealing with user-generated stuff here, but inline is much more convenient during debugging - resp['Content-Disposition'] = 'inline; filename="{}"'.format(fname) - resp._csp_ignore = True - else: - resp['Content-Disposition'] = 'attachment; filename="{}"'.format(fname) + resp['Content-Disposition'] = 'inline; filename="{}"'.format(fname) return resp diff --git a/src/pretix/control/views/global_settings.py b/src/pretix/control/views/global_settings.py index 815019bc0..d5c6b0a55 100644 --- a/src/pretix/control/views/global_settings.py +++ b/src/pretix/control/views/global_settings.py @@ -300,5 +300,4 @@ class SysReportView(AdministratorPermissionRequiredMixin, TemplateView): resp = HttpResponse(data) resp['Content-Type'] = mime resp['Content-Disposition'] = 'inline; filename="{}"'.format(name) - resp._csp_ignore = True return resp diff --git a/src/pretix/control/views/orders.py b/src/pretix/control/views/orders.py index 5d6091100..d0bb06cc4 100644 --- a/src/pretix/control/views/orders.py +++ b/src/pretix/control/views/orders.py @@ -710,22 +710,26 @@ class OrderDownload(AsyncAction, OrderView): resp = HttpResponseRedirect(value.file.file.read()) return resp else: - resp = FileResponse(value.file.file, content_type=value.type) - resp['Content-Disposition'] = 'attachment; filename="{}-{}-{}-{}{}"'.format( - self.request.event.slug.upper(), self.order.code, self.order_position.positionid, - self.output.identifier, value.extension + return FileResponse( + value.file.file, + filename='{}-{}-{}-{}{}'.format( + self.request.event.slug.upper(), self.order.code, self.order_position.positionid, + self.output.identifier, value.extension + ), + content_type=value.type ) - return resp elif isinstance(value, CachedCombinedTicket): if value.type == 'text/uri-list': resp = HttpResponseRedirect(value.file.file.read()) return resp else: - resp = FileResponse(value.file.file, content_type=value.type) - resp['Content-Disposition'] = 'attachment; filename="{}-{}-{}{}"'.format( - self.request.event.slug.upper(), self.order.code, self.output.identifier, value.extension + return FileResponse( + value.file.file, + filename='{}-{}-{}{}'.format( + self.request.event.slug.upper(), self.order.code, self.output.identifier, value.extension + ), + content_type=value.type ) - return resp else: return redirect(self.get_self_url()) @@ -1831,15 +1835,15 @@ class InvoiceDownload(EventPermissionRequiredMixin, View): return redirect(self.get_order_url()) try: - resp = FileResponse(self.invoice.file.file, content_type='application/pdf') + return FileResponse( + self.invoice.file.file, + filename='{}.pdf'.format(re.sub("[^a-zA-Z0-9-_.]+", "_", self.invoice.number)), + content_type='application/pdf' + ) except FileNotFoundError: invoice_pdf_task.apply(args=(self.invoice.pk,)) return self.get(request, *args, **kwargs) - resp['Content-Disposition'] = 'inline; filename="{}.pdf"'.format(re.sub("[^a-zA-Z0-9-_.]+", "_", self.invoice.number)) - resp._csp_ignore = True # Some browser's PDF readers do not work with CSP - return resp - class OrderExtend(OrderView): permission = 'event.orders:write' diff --git a/src/pretix/control/views/pdf.py b/src/pretix/control/views/pdf.py index 0ad4e1c0e..03f21c731 100644 --- a/src/pretix/control/views/pdf.py +++ b/src/pretix/control/views/pdf.py @@ -263,12 +263,7 @@ class BaseEditorView(EventPermissionRequiredMixin, TemplateView): resp = HttpResponse(data, content_type=mimet) ftype = fname.split(".")[-1] - if settings.DEBUG: - # attachment is more secure as we're dealing with user-generated stuff here, but inline is much more convenient during debugging - resp['Content-Disposition'] = 'inline; filename="ticket-preview.{}"'.format(ftype) - resp._csp_ignore = True - else: - resp['Content-Disposition'] = 'attachment; filename="ticket-preview.{}"'.format(ftype) + resp['Content-Disposition'] = 'inline; filename="ticket-preview.{}"'.format(ftype) return resp elif "data" in request.POST: if cf: @@ -309,6 +304,5 @@ class FontsCSSView(TemplateView): class PdfView(TemplateView): def get(self, request, *args, **kwargs): cf = get_object_or_404(CachedFile, id=kwargs.get("filename"), filename="background_preview.pdf") - resp = FileResponse(cf.file, content_type='application/pdf') - resp['Content-Disposition'] = 'attachment; filename="{}"'.format(cf.filename) + resp = FileResponse(cf.file, filename=cf.filename, content_type='application/pdf') return resp diff --git a/src/pretix/presale/views/cart.py b/src/pretix/presale/views/cart.py index c6f566371..99d027be0 100644 --- a/src/pretix/presale/views/cart.py +++ b/src/pretix/presale/views/cart.py @@ -855,9 +855,13 @@ class AnswerDownload(EventViewMixin, View): return Http404() ftype, _ = mimetypes.guess_type(answer.file.name) - resp = FileResponse(answer.file, content_type=ftype or 'application/binary') - resp['Content-Disposition'] = 'attachment; filename="{}-cart-{}"'.format( + filename = '{}-cart-{}'.format( self.request.event.slug.upper(), os.path.basename(answer.file.name).split('.', 1)[1] - ).encode("ascii", "ignore") + ) + resp = FileResponse( + answer.file, + filename=filename, + content_type=ftype or 'application/binary' + ) return resp diff --git a/src/pretix/presale/views/order.py b/src/pretix/presale/views/order.py index 964974fc8..206de6ba7 100644 --- a/src/pretix/presale/views/order.py +++ b/src/pretix/presale/views/order.py @@ -1220,30 +1220,26 @@ class OrderDownloadMixin: resp = HttpResponseRedirect(value.file.file.read()) return resp else: - resp = FileResponse(value.file.file, content_type=value.type) - if self.order_position.subevent: - # Subevent date in filename improves accessibility e.g. for screen reader users - resp['Content-Disposition'] = 'attachment; filename="{}-{}-{}-{}-{}{}"'.format( - self.request.event.slug.upper(), self.order.code, self.order_position.positionid, - self.order_position.subevent.date_from.strftime('%Y_%m_%d'), - self.output.identifier, value.extension - ) - else: - resp['Content-Disposition'] = 'attachment; filename="{}-{}-{}-{}{}"'.format( - self.request.event.slug.upper(), self.order.code, self.order_position.positionid, - self.output.identifier, value.extension - ) - return resp + name_parts = ( + self.request.event.slug.upper(), + self.order.code, + str(self.order_position.positionid), + self.order_position.subevent.date_from.strftime('%Y_%m_%d') if self.order_position.subevent else None, + self.output.identifier + ) + filename = "-".join(filter(None, name_parts)) + value.extension + return FileResponse(value.file.file, filename=filename, content_type=value.type) elif isinstance(value, CachedCombinedTicket): if value.type == 'text/uri-list': resp = HttpResponseRedirect(value.file.file.read()) return resp else: - resp = FileResponse(value.file.file, content_type=value.type) - resp['Content-Disposition'] = 'attachment; filename="{}-{}-{}{}"'.format( - self.request.event.slug.upper(), self.order.code, self.output.identifier, value.extension + return FileResponse( + value.file.file, + filename="{}-{}-{}{}".format( + self.request.event.slug.upper(), self.order.code, self.output.identifier, value.extension), + content_type=value.type ) - return resp else: return redirect(self.get_self_url()) @@ -1383,13 +1379,14 @@ class InvoiceDownload(EventViewMixin, OrderDetailMixin, View): return redirect(self.get_order_url()) try: - resp = FileResponse(invoice.file.file, content_type='application/pdf') + return FileResponse( + invoice.file.file, + filename='{}.pdf'.format(re.sub("[^a-zA-Z0-9-_.]+", "_", invoice.number)), + content_type='application/pdf' + ) except FileNotFoundError: invoice_pdf_task.apply(args=(invoice.pk,)) return self.get(request, *args, **kwargs) - resp['Content-Disposition'] = 'inline; filename="{}.pdf"'.format(re.sub("[^a-zA-Z0-9-_.]+", "_", invoice.number)) - resp._csp_ignore = True # Some browser's PDF readers do not work with CSP - return resp class OrderChangeMixin: -- 2.49.1 From 8690d65e99d0fce975ac3602496ceb740e6fd547 Mon Sep 17 00:00:00 2001 From: pajowu Date: Tue, 14 Apr 2026 13:02:12 +0200 Subject: [PATCH 046/107] Do not show payment text of canceled and failed payments on invoice (Z#23231070) (#6075) --- src/pretix/base/services/invoices.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pretix/base/services/invoices.py b/src/pretix/base/services/invoices.py index deadc4d2f..5e4e9666b 100644 --- a/src/pretix/base/services/invoices.py +++ b/src/pretix/base/services/invoices.py @@ -58,6 +58,7 @@ from pretix.base.invoicing.transmission import ( from pretix.base.models import ( ExchangeRate, Invoice, InvoiceAddress, InvoiceLine, Order, OrderFee, ) +from pretix.base.models.orders import OrderPayment from pretix.base.models.tax import EU_CURRENCIES from pretix.base.services.tasks import ( TransactionAwareProfiledEventTask, TransactionAwareTask, @@ -102,7 +103,7 @@ def build_invoice(invoice: Invoice) -> Invoice: introductory = invoice.event.settings.get('invoice_introductory_text', as_type=LazyI18nString) additional = invoice.event.settings.get('invoice_additional_text', as_type=LazyI18nString) footer = invoice.event.settings.get('invoice_footer_text', as_type=LazyI18nString) - if lp and lp.payment_provider: + if lp and lp.payment_provider and lp.state not in (OrderPayment.PAYMENT_STATE_FAILED, OrderPayment.PAYMENT_STATE_CANCELED): if 'payment' in inspect.signature(lp.payment_provider.render_invoice_text).parameters: payment = str(lp.payment_provider.render_invoice_text(invoice.order, lp)) else: -- 2.49.1 From efd887b43953b4f96343f4e0e2f515727c866d3c Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Tue, 14 Apr 2026 14:13:14 +0200 Subject: [PATCH 047/107] API: fix PDF-download name (Z#23231496) --- src/pretix/api/views/order.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pretix/api/views/order.py b/src/pretix/api/views/order.py index 4f2b88da7..850ff0661 100644 --- a/src/pretix/api/views/order.py +++ b/src/pretix/api/views/order.py @@ -1308,7 +1308,7 @@ class EventOrderPositionViewSet(OrderPositionViewSetMixin, viewsets.ModelViewSet ftype, ignored = mimetypes.guess_type(answer.file.name) return FileResponse( answer.file, - filename='{}-{}-{}-{}"'.format( + filename='{}-{}-{}-{}'.format( self.request.event.slug.upper(), pos.order.code, pos.positionid, @@ -2000,7 +2000,7 @@ class InvoiceViewSet(viewsets.ReadOnlyModelViewSet): return FileResponse( invoice.file.file, - filename='{}.pdf"'.format(invoice.number), + filename='{}.pdf'.format(invoice.number), as_attachment=True, content_type='application/pdf' ) -- 2.49.1 From 0f2ebb8687e56ce3fd3961d5480968af14c283e1 Mon Sep 17 00:00:00 2001 From: Martin Gross Date: Tue, 14 Apr 2026 17:02:47 +0200 Subject: [PATCH 048/107] PPv2: Fix permission-check for ISU (event.settings.general:write to event.settings.payment:write) --- src/pretix/plugins/paypal2/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pretix/plugins/paypal2/views.py b/src/pretix/plugins/paypal2/views.py index 7edf796bf..b1dac86b6 100644 --- a/src/pretix/plugins/paypal2/views.py +++ b/src/pretix/plugins/paypal2/views.py @@ -216,7 +216,7 @@ class PayView(PaypalOrderView, TemplateView): @scopes_disabled() -@event_permission_required('event.settings.general:write') +@event_permission_required('event.settings.payment:write') def isu_return(request, *args, **kwargs): getparams = ['merchantId', 'merchantIdInPayPal', 'permissionsGranted', 'accountStatus', 'consentStatus', 'productIntentID', 'isEmailConfirmed'] sessionparams = ['payment_paypal_isu_event', 'payment_paypal_isu_tracking_id'] @@ -526,7 +526,7 @@ def webhook(request, *args, **kwargs): return HttpResponse(status=200) -@event_permission_required('event.settings.general:write') +@event_permission_required('event.settings.payment:write') @require_POST def isu_disconnect(request, **kwargs): del request.event.settings.payment_paypal_connect_refresh_token -- 2.49.1 From e3ffd66691bb15ee159580f3446f85f23711baee Mon Sep 17 00:00:00 2001 From: Lukas Bockstaller Date: Wed, 15 Apr 2026 15:59:08 +0200 Subject: [PATCH 049/107] Giftcard/Reusable Media API: fix expand permission check (Z#23230608) (#6091) * add failing tests * add permission checks in to_representation * only overwrite final representation not the serializer * styling * include review --- src/pretix/api/serializers/media.py | 28 ++++++++-- src/pretix/api/serializers/organizer.py | 13 +++++ src/tests/api/test_giftcards.py | 29 ++++++++++ src/tests/api/test_reusable_media.py | 70 +++++++++++++++++++++++++ 4 files changed, 137 insertions(+), 3 deletions(-) diff --git a/src/pretix/api/serializers/media.py b/src/pretix/api/serializers/media.py index 894c1bcf0..d759f1468 100644 --- a/src/pretix/api/serializers/media.py +++ b/src/pretix/api/serializers/media.py @@ -31,7 +31,9 @@ from pretix.api.serializers.order import OrderPositionSerializer from pretix.api.serializers.organizer import ( CustomerSerializer, GiftCardSerializer, ) -from pretix.base.models import Order, OrderPosition, ReusableMedium +from pretix.base.models import ( + Device, Order, OrderPosition, ReusableMedium, TeamAPIToken, +) logger = logging.getLogger(__name__) @@ -80,8 +82,7 @@ class ReusableMediaSerializer(I18nAwareModelSerializer): ) if 'linked_orderposition' in self.context['request'].query_params.getlist('expand'): - # No additional permission check performed, documented limitation of the permission system - # Would get to complex/unusable otherwise since the permission depends on the event + # Permission Check performed in to_representation self.fields['linked_orderposition'] = NestedOrderPositionSerializer(read_only=True) else: self.fields['linked_orderposition'] = serializers.PrimaryKeyRelatedField( @@ -117,6 +118,27 @@ class ReusableMediaSerializer(I18nAwareModelSerializer): ) return data + def to_representation(self, instance): + r = super().to_representation(instance) + request = self.context.get('request') + # late permission evaluations for checks that depend on the actual linked events + expand_nested = self.context['request'].query_params.getlist('expand') + perm_holder = request.auth if isinstance(request.auth, (Device, TeamAPIToken)) else request.user + if 'linked_orderposition' in expand_nested: + if instance.linked_orderposition is not None: + event = instance.linked_orderposition.order.event + if not perm_holder.has_event_permission(event.organizer, event, 'event.orders:read', request): + r['linked_orderposition'] = {'id': instance.linked_orderposition.id} + + if 'linked_giftcard.owner_ticket' in expand_nested: + gc = instance.linked_giftcard + if gc is not None and gc.owner_ticket is not None: + event = gc.owner_ticket.order.event + if not perm_holder.has_event_permission(event.organizer, event, 'event.orders:read', request): + r['linked_giftcard']['owner_ticket'] = {'id': instance.linked_giftcard.owner_ticket.id} + + return r + class Meta: model = ReusableMedium fields = ( diff --git a/src/pretix/api/serializers/organizer.py b/src/pretix/api/serializers/organizer.py index 05f25976a..47c141aee 100644 --- a/src/pretix/api/serializers/organizer.py +++ b/src/pretix/api/serializers/organizer.py @@ -286,6 +286,19 @@ class GiftCardSerializer(I18nAwareModelSerializer): ) return data + def to_representation(self, instance): + r = super().to_representation(instance) + request = self.context.get('request') + # late permission evaluations for checks that depend on the actual linked events + if 'owner_ticket' in self.context['request'].query_params.getlist('expand'): + owner_ticket = instance.owner_ticket + if owner_ticket: + event = owner_ticket.order.event + perm_holder = request.auth if isinstance(request.auth, (Device, TeamAPIToken)) else request.user + if not perm_holder.has_event_permission(event.organizer, event, 'event.orders:read', request): + r['owner_ticket'] = {'id': instance.owner_ticket.id} + return r + class Meta: model = GiftCard fields = ('id', 'secret', 'issuance', 'value', 'currency', 'testmode', 'expires', 'conditions', 'owner_ticket', diff --git a/src/tests/api/test_giftcards.py b/src/tests/api/test_giftcards.py index 4fdb89cfe..ef3db84b4 100644 --- a/src/tests/api/test_giftcards.py +++ b/src/tests/api/test_giftcards.py @@ -171,6 +171,35 @@ def test_giftcard_detail_expand(token_client, organizer, event, giftcard): } +@pytest.mark.django_db +def test_giftcard_detail_expand_without_permissions(team, token_client, organizer, event, giftcard): + with scopes_disabled(): + o = Order.objects.create( + code='FOO', event=event, email='dummy@dummy.test', + status=Order.STATUS_PENDING, datetime=now(), expires=now() + timedelta(days=10), + sales_channel=event.organizer.sales_channels.get(identifier="web"), + total=14, locale='en' + ) + ticket = event.items.create(name='Early-bird ticket', category=None, default_price=23, admission=True, + personalized=True) + op = o.positions.create(item=ticket, price=Decimal("14")) + giftcard.owner_ticket = op + giftcard.save() + + team.all_event_permissions = False + team.save() + + res = dict(TEST_GC_RES) + res["id"] = giftcard.pk + res["issuance"] = giftcard.issuance.isoformat().replace('+00:00', 'Z') + resp = token_client.get('/api/v1/organizers/{}/giftcards/{}/?expand=owner_ticket'.format(organizer.slug, giftcard.pk)) + assert resp.status_code == 200 + + assert resp.data["owner_ticket"] == { + "id": op.pk, + } + + TEST_GIFTCARD_CREATE_PAYLOAD = { "secret": "DEFABC", "value": "12.00", diff --git a/src/tests/api/test_reusable_media.py b/src/tests/api/test_reusable_media.py index 30614e67b..18ee325a5 100644 --- a/src/tests/api/test_reusable_media.py +++ b/src/tests/api/test_reusable_media.py @@ -252,6 +252,76 @@ def test_medium_detail(token_client, organizer, event, medium, giftcard, custome } +@pytest.mark.django_db +def test_medium_detail_event_permission_missing(token_client, organizer, event, medium, giftcard, customer, team): + team.all_organizer_permissions = False + team.limit_organizer_permissions = { + "organizer.reusablemedia:read": True, + "organizer.customers:read": True, + "organizer.giftcards:read": True, + } + team.all_event_permissions = False + team.save() + + with scopes_disabled(): + o = Order.objects.create( + code='FOO', event=event, email='dummy@dummy.test', + status=Order.STATUS_PENDING, datetime=now(), expires=now() + timedelta(days=10), + sales_channel=event.organizer.sales_channels.get(identifier="web"), + total=14, locale='en' + ) + ticket = event.items.create(name='Early-bird ticket', category=None, default_price=23, admission=True, + personalized=True) + op = o.positions.create(item=ticket, price=Decimal("14")) + medium.linked_orderposition = op + medium.linked_giftcard = giftcard + medium.customer = customer + medium.save() + giftcard.owner_ticket = op + giftcard.save() + + resp = token_client.get( + '/api/v1/organizers/{}/reusablemedia/{}/?expand=linked_giftcard&expand=' + 'linked_giftcard.owner_ticket&expand=linked_orderposition&expand=customer'.format( + organizer.slug, medium.pk + ) + ) + assert resp.status_code == 200 + + assert resp.data["linked_orderposition"] == { + "id": op.pk, + } + + assert resp.data["linked_giftcard"] == { + "id": giftcard.pk, + "secret": "ABCDEF", + "issuance": giftcard.issuance.isoformat().replace("+00:00", "Z"), + "value": "23.00", + "currency": "EUR", + "testmode": False, + "expires": None, + "conditions": None, + "owner_ticket": {"id": op.pk}, + "issuer": "dummy", + } + + assert resp.data["customer"] == { + "identifier": customer.identifier, + "external_identifier": None, + "email": "foo@example.org", + "phone": None, + "name": "Foo", + "name_parts": {"_legacy": "Foo"}, + "is_active": True, + "is_verified": False, + "last_login": None, + "date_joined": customer.date_joined.isoformat().replace("+00:00", "Z"), + "locale": "en", + "last_modified": customer.last_modified.isoformat().replace("+00:00", "Z"), + "notes": None + } + + TEST_MEDIUM_CREATE_PAYLOAD = { "type": "barcode", "identifier": "FOOBAR", -- 2.49.1 From b3bb9fccb524f9ae42015734e0895e11676d97f1 Mon Sep 17 00:00:00 2001 From: pajowu Date: Mon, 13 Apr 2026 16:25:07 +0200 Subject: [PATCH 050/107] Translations: Update Danish Currently translated at 44.2% (2784 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/ powered by weblate --- src/pretix/locale/da/LC_MESSAGES/django.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pretix/locale/da/LC_MESSAGES/django.po b/src/pretix/locale/da/LC_MESSAGES/django.po index 75fb29a1a..33b8e08ed 100644 --- a/src/pretix/locale/da/LC_MESSAGES/django.po +++ b/src/pretix/locale/da/LC_MESSAGES/django.po @@ -4,8 +4,8 @@ msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-04-13 14:01+0000\n" -"Last-Translator: Mie Frydensbjerg \n" +"PO-Revision-Date: 2026-04-13 23:00+0000\n" +"Last-Translator: pajowu \n" "Language-Team: Danish \n" "Language: da\n" @@ -34673,7 +34673,7 @@ msgstr "UDSOLGT" #: pretix/presale/templates/pretixpresale/event/fragment_availability.html:25 #: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:91 msgid "FULLY BOOKED" -msgstr "UDSOLGT" +msgstr "FULDT BOOKET" #: pretix/presale/templates/pretixpresale/event/fragment_availability.html:37 #: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:101 -- 2.49.1 From 5e49df0ef68db06663b9d59964a68dec7c6953a9 Mon Sep 17 00:00:00 2001 From: Nikolai Date: Tue, 14 Apr 2026 16:33:19 +0200 Subject: [PATCH 051/107] Translations: Update Danish Currently translated at 46.1% (2904 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/ powered by weblate --- src/pretix/locale/da/LC_MESSAGES/django.po | 427 +++++++++------------ 1 file changed, 173 insertions(+), 254 deletions(-) diff --git a/src/pretix/locale/da/LC_MESSAGES/django.po b/src/pretix/locale/da/LC_MESSAGES/django.po index 33b8e08ed..8dd608afa 100644 --- a/src/pretix/locale/da/LC_MESSAGES/django.po +++ b/src/pretix/locale/da/LC_MESSAGES/django.po @@ -4,8 +4,8 @@ msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-04-13 23:00+0000\n" -"Last-Translator: pajowu \n" +"PO-Revision-Date: 2026-04-14 15:02+0000\n" +"Last-Translator: Nikolai \n" "Language-Team: Danish \n" "Language: da\n" @@ -85,7 +85,7 @@ msgstr "Græsk" #: pretix/_base_settings.py:104 msgid "Hebrew" -msgstr "" +msgstr "hebræisk" #: pretix/_base_settings.py:105 msgid "Indonesian" @@ -141,7 +141,7 @@ msgstr "Spansk" #: pretix/_base_settings.py:118 msgid "Spanish (Latin America)" -msgstr "" +msgstr "Spansk (Latinamerika)" #: pretix/_base_settings.py:119 msgid "Turkish" @@ -289,40 +289,28 @@ msgid "The bundled item must not have bundles on its own." msgstr "Den grupperede enhed må ikke selv have pakker." #: pretix/api/serializers/item.py:235 -#, fuzzy -#| msgid "Your cart is now empty." msgid "The program start must not be empty." -msgstr "Din kurv tom." +msgstr "Start på programmet må ikke stå tomt." #: pretix/api/serializers/item.py:239 msgid "The program end must not be empty." -msgstr "" +msgstr "Programmets slutning må ikke være tom." #: pretix/api/serializers/item.py:242 pretix/base/models/items.py:2322 -#, fuzzy -#| msgid "The maximum count needs to be greater than the minimum count." msgid "The program end must not be before the program start." -msgstr "Maksimumsantallet skal være større end minimumsantallet." +msgstr "Programmets slutning må ikke ligge før programmets start." #: pretix/api/serializers/item.py:247 pretix/base/models/items.py:2316 -#, fuzzy -#| msgid "You can not select a subevent if your event is not an event series." msgid "You cannot use program times on an event series." -msgstr "" -"Du kan ikke vælge et delarrangement hvis dit arrangement ikke er en " -"arrangementsrække." +msgstr "Du kan ikke bruge programtider i en begivenhedsserie." #: pretix/api/serializers/item.py:337 -#, fuzzy -#| msgid "" -#| "Updating add-ons, bundles, or variations via PATCH/PUT is not supported. " -#| "Please use the dedicated nested endpoint." msgid "" "Updating add-ons, bundles, program times or variations via PATCH/PUT is not " "supported. Please use the dedicated nested endpoint." msgstr "" -"Opdatering af add-ons, pakker eller variationer via PATCH/PUT bliver ikke " -"understøttet. Brug venligst det dedicerede, indlejrede slutpunkt." +"Opdatering af add-ons, pakker, program-tider eller variationer via PATCH/PUT " +"bliver ikke understøttet. Brug venligst det dedicerede, indlejrede slutpunkt." #: pretix/api/serializers/item.py:345 msgid "Only admission products can currently be personalized." @@ -415,9 +403,8 @@ msgstr "" #: pretix/api/serializers/organizer.py:482 #: pretix/control/views/organizer.py:1039 -#, fuzzy msgid "Account invitation" -msgstr "Kontoinformationer" +msgstr "Invitation til oprettelse af konto" #: pretix/api/serializers/organizer.py:503 #: pretix/control/views/organizer.py:1138 @@ -582,22 +569,16 @@ msgid "Event series date deleted" msgstr "Dato på arrangementsserien slettet" #: pretix/api/webhooks.py:407 -#, fuzzy -#| msgid "Product name" msgid "Product changed" -msgstr "Produktnavn" +msgstr "Produktet er ændret" #: pretix/api/webhooks.py:408 -#, fuzzy -#| msgid "" -#| "Product changed (including product added or deleted and including changes " -#| "to nested objects like variations or bundles)" msgid "" "This includes product added or deleted and changes to nested objects like " "variations or bundles." msgstr "" -"Produkt ændret (omfatter også ændring eller sletning af produktet og " -"ændringer til indlejrede objekter som variationer og grupperinger)" +"Dette omfatter produkter, der er tilføjet eller slettet, samt ændringer af " +"underordnede objekter som f.eks. varianter eller pakker." #: pretix/api/webhooks.py:413 msgid "Shop taken live" @@ -632,28 +613,24 @@ msgid "Waiting list entry received voucher" msgstr "Post på ventelisten har modtaget voucher" #: pretix/api/webhooks.py:445 -#, fuzzy -#| msgid "Voucher code" msgid "Voucher added" -msgstr "Voucherkode" +msgstr "Rabatkoden er tilføjet" #: pretix/api/webhooks.py:449 -#, fuzzy -#| msgid "Voucher assigned" msgid "Voucher changed" -msgstr "Rabatkode tildelt" +msgstr "Rabatkode ændret" #: pretix/api/webhooks.py:450 msgid "" "Only includes explicit changes to the voucher, not e.g. an increase of the " "number of redemptions." msgstr "" +"Omfatter kun eksplicitte ændringer af kuponen, ikke f.eks. en forhøjelse af " +"antallet af indløsninger." #: pretix/api/webhooks.py:454 -#, fuzzy -#| msgid "Voucher redeemed" msgid "Voucher deleted" -msgstr "Voucher indløst" +msgstr "Kuponen er slettet" #: pretix/api/webhooks.py:458 msgid "Customer account created" @@ -668,22 +645,16 @@ msgid "Customer account anonymized" msgstr "Kondekonto anonymiseret" #: pretix/api/webhooks.py:470 -#, fuzzy -#| msgid "Gift card code" msgid "Gift card added" -msgstr "Gavekort-kode" +msgstr "Gavekort tilføjet" #: pretix/api/webhooks.py:474 -#, fuzzy -#| msgid "Gift card code" msgid "Gift card modified" -msgstr "Gavekort-kode" +msgstr "Gavekort ændret" #: pretix/api/webhooks.py:478 -#, fuzzy -#| msgid "Gift card transactions" msgid "Gift card used in transaction" -msgstr "Gavekortoverførsler" +msgstr "Gavekort anvendt i transaktionen" #: pretix/base/addressvalidation.py:100 pretix/base/addressvalidation.py:103 #: pretix/base/addressvalidation.py:108 pretix/base/forms/questions.py:1054 @@ -747,16 +718,18 @@ msgstr "Adgangskode" #: pretix/base/auth.py:176 pretix/base/auth.py:183 msgid "Your password must contain both numeric and alphabetic characters." -msgstr "" +msgstr "Din adgangskode skal indeholde både tal og bogstaver." #: pretix/base/auth.py:202 pretix/base/auth.py:212 -#, python-format +#, fuzzy, python-format msgid "Your password may not be the same as your previous password." msgid_plural "" "Your password may not be the same as one of your %(history_length)s previous " "passwords." -msgstr[0] "" +msgstr[0] "Din adgangskode må ikke være den samme som din tidligere adgangskode." msgstr[1] "" +"Din adgangskode må ikke være den samme som en af dine %(history_length) " +"foregående adgangskoder." #: pretix/base/channels.py:168 msgid "Online shop" @@ -775,16 +748,14 @@ msgstr "" "til skræddersyede integrationer." #: pretix/base/context.py:38 -#, fuzzy, python-brace-format -#| msgid "powered by {name} based on pretix" +#, python-brace-format msgid "powered by {name} based on pretix" -msgstr "drevet af {name} baseret på pretix" +msgstr "drevet af {name} baseret på pretix" #: pretix/base/context.py:48 -#, fuzzy, python-brace-format -#| msgid "powered by {name} based on pretix" +#, python-brace-format msgid "powered by {name} based on pretix" -msgstr "drevet af {name} baseret på pretix" +msgstr "drevet af {name} baseret på pretix" #: pretix/base/context.py:55 #, python-format @@ -841,6 +812,8 @@ msgid "" "Field \"{field_name}\" does not exist. Please check your {provider_name} " "settings." msgstr "" +"Feltet »{field_name}« findes ikke. Kontroller venligst dine {provider_name}-" +"indstillinger." #: pretix/base/datasync/datasync.py:274 #, python-brace-format @@ -848,6 +821,8 @@ msgid "" "Field \"{field_name}\" requires {required_input}, but only got " "{available_inputs}. Please check your {provider_name} settings." msgstr "" +"Feltet »{field_name}« kræver {required_input}, men der er kun indtastet " +"{available_inputs}. Kontroller venligst dine {provider_name}-indstillinger." #: pretix/base/datasync/datasync.py:285 #, python-brace-format @@ -855,18 +830,16 @@ msgid "" "Please update value mapping for field \"{field_name}\" - option \"{val}\" " "not assigned" msgstr "" +"Opdater venligst værditilordningen for feltet \"{field_name}\" – " +"indstillingen \"{val}\" er ikke tildelt" #: pretix/base/datasync/sourcefields.py:128 -#, fuzzy -#| msgid "Order positions" msgid "Order position details" -msgstr "Bestillingsposter" +msgstr "Oplysninger om ordreposition" #: pretix/base/datasync/sourcefields.py:129 -#, fuzzy -#| msgid "Attendee email" msgid "Attendee details" -msgstr "E-mailadresse" +msgstr "Deltageroplysninger" #: pretix/base/datasync/sourcefields.py:130 pretix/base/exporters/answers.py:66 #: pretix/base/models/items.py:1767 pretix/control/navigation.py:185 @@ -876,10 +849,8 @@ msgid "Questions" msgstr "Spørgsmål" #: pretix/base/datasync/sourcefields.py:131 -#, fuzzy -#| msgid "Product data" msgid "Product details" -msgstr "Produktdata" +msgstr "Produktoplysninger" #: pretix/base/datasync/sourcefields.py:132 #: pretix/control/templates/pretixcontrol/event/settings.html:279 @@ -904,17 +875,13 @@ msgid "Invoice address" msgstr "Faktureringsadresse" #: pretix/base/datasync/sourcefields.py:134 -#, fuzzy -#| msgid "Meta information" msgid "Event information" -msgstr "Metaoplysninger" +msgstr "Oplysninger om arrangementet" #: pretix/base/datasync/sourcefields.py:135 -#, fuzzy -#| msgid "Send recovery information" msgctxt "subevent" msgid "Event or date information" -msgstr "Send oplysninger om genoprettelse" +msgstr "Oplysninger om begivenhed eller dato" #: pretix/base/datasync/sourcefields.py:175 #: pretix/base/exporters/orderlist.py:640 @@ -939,10 +906,8 @@ msgstr "Navn på deltager" #: pretix/base/datasync/sourcefields.py:187 #: pretix/base/datasync/sourcefields.py:604 #: pretix/base/datasync/sourcefields.py:628 -#, fuzzy -#| msgid "Attendee name" msgid "Attendee" -msgstr "Navn på deltager" +msgstr "Deltager" #: pretix/base/datasync/sourcefields.py:207 #: pretix/base/exporters/orderlist.py:647 pretix/base/forms/questions.py:693 @@ -956,10 +921,8 @@ msgid "Attendee email" msgstr "E-mailadresse" #: pretix/base/datasync/sourcefields.py:219 -#, fuzzy -#| msgid "Attendee email" msgid "Attendee or order email" -msgstr "E-mailadresse" +msgstr "Deltager- eller ordrebekræftelsesmail" #: pretix/base/datasync/sourcefields.py:232 #: pretix/base/exporters/orderlist.py:648 pretix/base/pdf.py:188 @@ -972,28 +935,20 @@ msgid "Attendee company" msgstr "Deltagerens virksomhed" #: pretix/base/datasync/sourcefields.py:241 -#, fuzzy -#| msgid "Attendee address" msgid "Attendee address street" -msgstr "Deltagerens postadresse" +msgstr "Deltagerens adresse (gade)" #: pretix/base/datasync/sourcefields.py:250 -#, fuzzy -#| msgid "Attendee ZIP code" msgid "Attendee address ZIP code" -msgstr "Deltagerens postnummer" +msgstr "Deltagerens adresse (postnummer)" #: pretix/base/datasync/sourcefields.py:259 -#, fuzzy -#| msgid "Attendee address" msgid "Attendee address city" -msgstr "Deltagerens postadresse" +msgstr "Deltagerens adresse (by)" #: pretix/base/datasync/sourcefields.py:268 -#, fuzzy -#| msgid "Attendee address" msgid "Attendee address country" -msgstr "Deltagerens postadresse" +msgstr "Deltagerens postadresse (land)" #: pretix/base/datasync/sourcefields.py:279 #: pretix/base/exporters/orderlist.py:690 pretix/base/pdf.py:346 @@ -1029,16 +984,12 @@ msgid "Invoice address country" msgstr "Faktureringsadresse (land)" #: pretix/base/datasync/sourcefields.py:353 -#, fuzzy -#| msgid "Order details" msgid "Order email" -msgstr "Bestillingsdetaljer" +msgstr "Bestillings-e-mail" #: pretix/base/datasync/sourcefields.py:362 -#, fuzzy -#| msgid "Organizer name" msgid "Order email domain" -msgstr "Navn" +msgstr "Bestillingens e-mail-domæne" #: pretix/base/datasync/sourcefields.py:371 #: pretix/base/exporters/invoices.py:203 pretix/base/exporters/invoices.py:332 @@ -1070,10 +1021,8 @@ msgid "Order code" msgstr "Bestillingsnr." #: pretix/base/datasync/sourcefields.py:380 -#, fuzzy -#| msgid "Order date" msgid "Event and order code" -msgstr "Bestillingsdato" +msgstr "Begivenheds- og ordrekode" #: pretix/base/datasync/sourcefields.py:389 #: pretix/base/exporters/orderlist.py:283 pretix/base/notifications.py:201 @@ -1085,10 +1034,8 @@ msgid "Order total" msgstr "I alt" #: pretix/base/datasync/sourcefields.py:398 -#, fuzzy -#| msgid "Product name and variation" msgid "Product and variation name" -msgstr "Produktnavn og variant" +msgstr "Produkt- og variantnavn" #: pretix/base/datasync/sourcefields.py:410 pretix/base/exporters/items.py:57 #: pretix/base/exporters/orderlist.py:633 @@ -1098,14 +1045,12 @@ msgid "Product ID" msgstr "Produkt ID" #: pretix/base/datasync/sourcefields.py:419 -#, fuzzy msgid "Product is admission product" -msgstr "Alle produkter" +msgstr "Produktet er et adgangsprodukt" #: pretix/base/datasync/sourcefields.py:428 -#, fuzzy msgid "Event short form" -msgstr "Navn" +msgstr "Kort beskrivelse af arrangementet" #: pretix/base/datasync/sourcefields.py:437 pretix/base/exporters/events.py:57 #: pretix/base/exporters/orderlist.py:283 @@ -1148,9 +1093,8 @@ msgid "Order code and position number" msgstr "Bestillingens kode og nr. på placering" #: pretix/base/datasync/sourcefields.py:482 -#, fuzzy msgid "Ticket price" -msgstr "Billetnavn" +msgstr "Billetpris" #: pretix/base/datasync/sourcefields.py:491 pretix/base/notifications.py:204 #: pretix/control/forms/filter.py:221 pretix/control/forms/filter.py:1243 @@ -1159,21 +1103,16 @@ msgid "Order status" msgstr "Bestillingsstatus" #: pretix/base/datasync/sourcefields.py:500 -#, fuzzy msgid "Ticket status" -msgstr "Enhedsnavn" +msgstr "Billetstatus" #: pretix/base/datasync/sourcefields.py:509 -#, fuzzy -#| msgid "Purchase date and time" msgid "Order date and time" -msgstr "Købsdato og -tidspunkt" +msgstr "Bestillingsdato og -tidspunkt" #: pretix/base/datasync/sourcefields.py:518 -#, fuzzy -#| msgid "Printing date and time" msgid "Payment date and time" -msgstr "Dato og tidspunkt for udskriften" +msgstr "Betalingsdato og -tidspunkt" #: pretix/base/datasync/sourcefields.py:527 #: pretix/base/exporters/orderlist.py:292 @@ -1184,34 +1123,27 @@ msgid "Order locale" msgstr "Sprog" #: pretix/base/datasync/sourcefields.py:536 -#, fuzzy -#| msgid "Order position" msgid "Order position ID" -msgstr "Bestillingspost" +msgstr "Ordrepositionens ID" #: pretix/base/datasync/sourcefields.py:545 #: pretix/base/exporters/orderlist.py:312 -#, fuzzy -#| msgid "Order time" msgid "Order link" -msgstr "Bestillingstidspunkt" +msgstr "Bestillingslink" #: pretix/base/datasync/sourcefields.py:560 -#, fuzzy msgid "Ticket link" -msgstr "Standardtidszone" +msgstr "Link til billetter" #: pretix/base/datasync/sourcefields.py:578 -#, fuzzy, python-brace-format -#| msgid "Check-in list" +#, python-brace-format msgid "Check-in datetime on list {}" -msgstr "Tjek-ind-liste" +msgstr "Indtjekningsdato og -tid på listen {}" #: pretix/base/datasync/sourcefields.py:590 -#, fuzzy, python-brace-format -#| msgid "Question: %(name)s" +#, python-brace-format msgid "Question: {name}" -msgstr "Spørgsmål: %(name)s" +msgstr "Spørgsmål: {name}" #: pretix/base/datasync/sourcefields.py:604 #: pretix/base/datasync/sourcefields.py:614 pretix/base/settings.py:3775 @@ -2372,6 +2304,9 @@ msgid "" "contain at least one position of this product. The order totals etc. still " "include all products contained in the order." msgstr "" +"Hvis der ikke er valgt nogen, medtages alle produkter. Ordrer medtages, hvis " +"de indeholder mindst én varepost af dette produkt. Ordretotalerne m.m. " +"omfatter stadig alle produkter, der indgår i ordren." #: pretix/base/exporters/orderlist.py:283 #: pretix/base/exporters/orderlist.py:479 @@ -2638,15 +2573,12 @@ msgid "Voucher" msgstr "Rabatkode" #: pretix/base/exporters/orderlist.py:655 -#, fuzzy -#| msgid "Voucher code used:" msgid "Voucher budget usage" -msgstr "Voucherkode anvendt:" +msgstr "Forbrug af budget for rabatkoder" #: pretix/base/exporters/orderlist.py:656 -#, fuzzy msgid "Voucher tag" -msgstr "Voucherdetaljer" +msgstr "Tag for rabatkode" #: pretix/base/exporters/orderlist.py:657 msgid "Pseudonymization ID" @@ -2719,10 +2651,8 @@ msgid "Order comment" msgstr "Ordrekommentar" #: pretix/base/exporters/orderlist.py:669 -#, fuzzy -#| msgid "Add-On to position #%(posid)s" msgid "Add-on to position ID" -msgstr "Tilføjelse til position #%(posid)s" +msgstr "Tillæg til positions-ID" #: pretix/base/exporters/orderlist.py:699 msgctxt "address" @@ -2740,10 +2670,8 @@ msgid "Check-in lists" msgstr "Tjek-ind-lister" #: pretix/base/exporters/orderlist.py:709 -#, fuzzy -#| msgid "Resend order link" msgid "Position order link" -msgstr "Gensend link til bestilling" +msgstr "Link til posternes rækkefølge" #: pretix/base/exporters/orderlist.py:880 msgid "Order transaction data" @@ -3394,23 +3322,18 @@ msgid "Repeat password" msgstr "Gentag adgangskode" #: pretix/base/forms/auth.py:219 pretix/base/forms/user.py:99 -#, fuzzy -#| msgid "Your address" msgid "Your email address" -msgstr "Din adresse" +msgstr "Din e-mailadresse" #: pretix/base/forms/auth.py:326 pretix/control/forms/orders.py:1041 #: pretix/control/templates/pretixcontrol/shredder/download.html:53 -#, fuzzy msgid "Confirmation code" -msgstr "Bekræftelsestekst" +msgstr "Bekræftelseskode" #: pretix/base/forms/questions.py:139 pretix/base/forms/questions.py:266 -#, fuzzy -#| msgid "No country specified." msgctxt "name_salutation" msgid "not specified" -msgstr "Intet land angivet." +msgstr "ikke angivet" #: pretix/base/forms/questions.py:229 msgid "Please do not use special characters in names." @@ -3471,38 +3394,36 @@ msgid "Street and Number" msgstr "Gadenavn og nummer" #: pretix/base/forms/questions.py:893 -#, fuzzy, python-brace-format -#| msgid "Please enter a shorter name." +#, python-brace-format msgid "Please enter a date between {min} and {max}." -msgstr "Indtast venligst et kortere navn." +msgstr "Indtast venligst en dato mellem {min} og {max}." #: pretix/base/forms/questions.py:899 -#, fuzzy, python-brace-format -#| msgid "Please enter a valid sales channel." +#, python-brace-format msgid "Please enter a date no earlier than {min}." -msgstr "Indtast venligst en gyldig salgskanal." +msgstr "Indtast venligst en dato, der ikke ligger tidligere end {min}." #: pretix/base/forms/questions.py:904 -#, fuzzy, python-brace-format -#| msgid "Please enter a shorter name." +#, python-brace-format msgid "Please enter a date no later than {max}." -msgstr "Indtast venligst et kortere navn." +msgstr "Indtast venligst en dato, der ikke ligger senere end {max}." #: pretix/base/forms/questions.py:942 #, python-brace-format msgid "Please enter a date and time between {min} and {max}." -msgstr "" +msgstr "Indtast venligst en dato og et klokkeslæt mellem {min} og {max}." #: pretix/base/forms/questions.py:948 -#, fuzzy, python-brace-format -#| msgid "Please enter a valid sales channel." +#, python-brace-format msgid "Please enter a date and time no earlier than {min}." -msgstr "Indtast venligst en gyldig salgskanal." +msgstr "" +"Indtast venligst en dato og et klokkeslæt, der ikke ligger tidligere end " +"{min}." #: pretix/base/forms/questions.py:953 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Please enter a date and time no later than {max}." -msgstr "Indtast venligst dit navn." +msgstr "Please enter a date and time no later than {max}." #: pretix/base/forms/questions.py:1172 msgid "" @@ -3522,13 +3443,12 @@ msgstr "" "din faktura afhængig af, i hvilket land du eller sælgeren befinder sig." #: pretix/base/forms/questions.py:1185 -#, fuzzy msgid "No invoice requested" -msgstr "Afbestillingsgebyr" +msgstr "Der ønskes ingen faktura" #: pretix/base/forms/questions.py:1187 msgid "Invoice transmission method" -msgstr "" +msgstr "Metode til fremsendelse af fakturaer" #: pretix/base/forms/questions.py:1333 msgid "You need to provide a company name." @@ -3543,24 +3463,28 @@ msgid "" "If you enter an invoice address, you also need to select an invoice " "transmission method." msgstr "" +"Hvis du indtaster en fakturaadresse, skal du også vælge en metode til " +"fremsendelse af fakturaen." #: pretix/base/forms/questions.py:1403 -#, fuzzy -#| msgid "The selected media type is not enabled in your organizer settings." msgid "" "The selected transmission type is not available in your country or for your " "type of address." -msgstr "Den valgte medietype er ikke aktiveret i dine arrangør-indstillinger." +msgstr "" +"Den valgte forsendelsestype er ikke tilgængelig i dit land eller for din " +"adressetype." #: pretix/base/forms/questions.py:1412 msgid "" "The selected type of invoice transmission requires a field that is currently " "not available, please reach out to the organizer." msgstr "" +"Den valgte metode til fremsendelse af fakturaer kræver et felt, der i " +"øjeblikket ikke er tilgængeligt. Kontakt venligst arrangøren." #: pretix/base/forms/questions.py:1416 msgid "This field is required for the selected type of invoice transmission." -msgstr "" +msgstr "Dette felt er obligatorisk for den valgte type fakturaforsendelse." #: pretix/base/forms/user.py:54 pretix/control/forms/organizer.py:576 #: pretix/control/forms/users.py:58 @@ -3576,10 +3500,8 @@ msgstr "" "arrangementer bruges arrangementets tidszone." #: pretix/base/forms/user.py:77 -#, fuzzy -#| msgid "Attendee email address" msgid "Change email address" -msgstr "Deltagerens mailadresse" +msgstr "Skift e-mailadresse" #: pretix/base/forms/user.py:83 msgid "Device name" @@ -3629,16 +3551,12 @@ msgstr "" "Der findes allerede en konto med denne e-mailadresse. Vælg venligt en anden." #: pretix/base/forms/user.py:179 -#, fuzzy -#| msgid "Email address" msgid "Old email address" -msgstr "E-mailadresse" +msgstr "Gammel e-mailadresse" #: pretix/base/forms/user.py:180 -#, fuzzy -#| msgid "Email address" msgid "New email address" -msgstr "E-mailadresse" +msgstr "Ny e-mailadresse" #: pretix/base/forms/validators.py:51 msgid "" @@ -3684,55 +3602,48 @@ msgstr "Privatkunde" #: pretix/base/invoicing/email.py:49 msgid "Email invoice directly to accounting department" -msgstr "" +msgstr "Send fakturaen direkte til regnskabsafdelingen via e-mail" #: pretix/base/invoicing/email.py:50 -#, fuzzy msgid "" "If not selected, the invoice will be sent to you using the email address " "listed above." -msgstr "Indtast venligst den samme e-mailadresse to gange." +msgstr "" +"Hvis du ikke vælger noget, vil fakturaen blive sendt til dig via den e-" +"mailadresse, der er angivet ovenfor." #: pretix/base/invoicing/email.py:54 -#, fuzzy -#| msgid "Email address verified" msgid "Email address for invoice" -msgstr "E-Mail-adresse verificeret" +msgstr "E-mailadresse til faktura" #: pretix/base/invoicing/email.py:90 -#, fuzzy -#| msgid "Preview email" msgid "PDF via email" -msgstr "Forhåndsvis e-mail" +msgstr "PDF via e-mail" #: pretix/base/invoicing/national.py:37 msgctxt "italian_invoice" msgid "Italian Exchange System (SdI)" -msgstr "" +msgstr "Det italienske udvekslingssystem (SdI)" #: pretix/base/invoicing/national.py:38 msgctxt "italian_invoice" msgid "Exchange System (SdI)" -msgstr "" +msgstr "Udvekslingssystem (SdI)" #: pretix/base/invoicing/national.py:51 -#, fuzzy -#| msgid "Gift card code" msgctxt "italian_invoice" msgid "Fiscal code" -msgstr "Gavekort-kode" +msgstr "Skattenummer" #: pretix/base/invoicing/national.py:55 msgctxt "italian_invoice" msgid "Address for certified electronic mail" -msgstr "" +msgstr "Adresse til certificeret e-post" #: pretix/base/invoicing/national.py:59 -#, fuzzy -#| msgid "Recipient" msgctxt "italian_invoice" msgid "Recipient code" -msgstr "Modtager" +msgstr "Modtagerkode" #: pretix/base/invoicing/national.py:83 msgctxt "italian_invoice" @@ -3742,6 +3653,11 @@ msgid "" "in accordance with the procedures and terms set forth in No. 89757/2018 of " "April 30, 2018, issued by the Director of the Revenue Agency." msgstr "" +"Dette PDF-dokument er en visuel kopi af fakturaen og udgør ikke en faktura i " +"momsforhold. Fakturaen udstedes i XML-format og fremsendes i " +"overensstemmelse med de procedurer og betingelser, der er fastsat i " +"bekendtgørelse nr. 89757/2018 af 30. april 2018, udstedt af direktøren for " +"Skattevæsenet." #: pretix/base/invoicing/pdf.py:142 #, python-format @@ -3922,12 +3838,10 @@ msgid "Remaining amount" msgstr "Resterende antal" #: pretix/base/invoicing/pdf.py:1012 -#, fuzzy, python-brace-format -#| msgctxt "invoice" -#| msgid "Event date: {date_range}" +#, python-brace-format msgctxt "invoice" msgid "Invoice period: {daterange}" -msgstr "Arrangementsdato: {date_range}" +msgstr "Fakturaperiode: {daterange}" #: pretix/base/invoicing/pdf.py:1043 msgctxt "invoice" @@ -3992,6 +3906,8 @@ msgstr "Arrangementsdato: {date_range}" msgid "" "A Peppol participant ID always starts with a prefix, followed by a colon (:)." msgstr "" +"Et Peppol-deltager-id starter altid med et præfiks efterfulgt af et kolon (:)" +"." #: pretix/base/invoicing/peppol.py:140 #, python-format @@ -3999,6 +3915,8 @@ msgid "" "The Peppol participant ID prefix %(number)s is not known to our system. " "Please reach out to us if you are sure this ID is correct." msgstr "" +"Peppol-deltager-ID-præfikset %(number)s er ukendt for vores system. Kontakt " +"os venligst, hvis du er sikker på, at dette ID er korrekt." #: pretix/base/invoicing/peppol.py:144 #, python-format @@ -4006,25 +3924,25 @@ msgid "" "The Peppol participant ID does not match the validation rules for the prefix " "%(number)s. Please reach out to us if you are sure this ID is correct." msgstr "" +"Peppol-deltager-id'et overholder ikke valideringsreglerne for præfikset %" +"(number)s. Kontakt os venligst, hvis du er sikker på, at dette id er korrekt." #: pretix/base/invoicing/peppol.py:166 msgid "The Peppol participant ID is not registered on the Peppol network." -msgstr "" +msgstr "Peppol-deltager-id'et er ikke registreret i Peppol-netværket." #: pretix/base/invoicing/peppol.py:192 msgid "Peppol participant ID" -msgstr "" +msgstr "Peppol-deltager-ID" #: pretix/base/invoicing/peppol.py:211 msgid "The Peppol participant ID does not match your VAT ID." -msgstr "" +msgstr "Peppol-deltager-id'et stemmer ikke overens med dit momsnummer." #: pretix/base/invoicing/peppol.py:214 -#, fuzzy -#| msgid "Gift card code" msgctxt "peppol_invoice" msgid "Visual copy" -msgstr "Gavekort-kode" +msgstr "Synlig kopi" #: pretix/base/invoicing/peppol.py:219 msgctxt "peppol_invoice" @@ -4033,24 +3951,25 @@ msgid "" "invoice for VAT purposes. The original invoice is issued in XML format and " "transmitted through the Peppol network." msgstr "" +"Dette PDF-dokument er en visuel kopi af fakturaen og udgør ikke en faktura i " +"momsforhold. Den originale faktura udstedes i XML-format og sendes via " +"Peppol-netværket." #: pretix/base/logentrytype_registry.py:43 msgid "" "The relevant plugin is currently not active. To activate it, click here to " "go to the plugin settings." msgstr "" +"Det pågældende plugin er i øjeblikket ikke aktiveret. Klik her for at gå til " +"plugin-indstillingerne og aktivere det." #: pretix/base/logentrytype_registry.py:53 -#, fuzzy -#| msgid "This product is currently not available." msgid "The relevant plugin is currently not active." -msgstr "Dette produkt er pt. ikke tilgængeligt." +msgstr "Det pågældende plugin er i øjeblikket ikke aktivt." #: pretix/base/logentrytypes.py:49 -#, fuzzy -#| msgid "Delete" msgid "(deleted)" -msgstr "Slet" +msgstr "(slettet)" #: pretix/base/logentrytypes.py:78 #, python-brace-format @@ -4149,7 +4068,7 @@ msgstr "Der blev fundet flere passende datoer." #: pretix/base/modelimport_orders.py:73 msgid "Grouping" -msgstr "" +msgstr "Gruppering" #: pretix/base/modelimport_orders.py:75 msgid "" @@ -4157,6 +4076,9 @@ msgid "" "together...\". Lines with the same grouping value will be put in the same " "order, but MUST be consecutive lines of the input file." msgstr "" +"Dette gælder kun, når \"Importtilstand\" er indstillet til \"Gruppér flere " +"linjer sammen...\". Linjer med samme grupperingsværdi placeres i samme " +"rækkefølge, men SKAL være på hinanden følgende linjer i inputfilen." #: pretix/base/modelimport_orders.py:101 msgid "Enter a valid phone number." @@ -4168,6 +4090,9 @@ msgid "" "The date can be specified through its full name, full date and time, or " "internal ID, provided only one date in the system matches the input." msgstr "" +"Datoen kan angives ved hjælp af dets fuldstændige navn, den fuldstændige " +"dato og klokkeslæt eller det interne ID, forudsat at der kun er én dato i " +"systemet, der matcher den indtastede dato." #: pretix/base/modelimport_orders.py:120 pretix/presale/views/waiting.py:157 msgctxt "subevent" @@ -4178,6 +4103,8 @@ msgstr "Du skal vælge en dato." msgid "" "The product can be specified by its internal ID, full name or internal name." msgstr "" +"Produktet kan angives ved hjælp af dets interne ID, fulde navn eller interne " +"navn." #: pretix/base/modelimport_orders.py:149 #: pretix/base/modelimport_vouchers.py:194 @@ -4197,7 +4124,7 @@ msgstr "Produktvariation" #: pretix/base/modelimport_orders.py:161 msgid "The variation can be specified by its internal ID or full name." -msgstr "" +msgstr "Variationen kan angives ved hjælp af dens interne ID eller fulde navn." #: pretix/base/modelimport_orders.py:181 #: pretix/base/modelimport_vouchers.py:225 @@ -4216,10 +4143,8 @@ msgid "You need to select a variation for this product." msgstr "Du skal vælge en variation for dette produkt." #: pretix/base/modelimport_orders.py:265 pretix/base/modelimport_orders.py:417 -#, fuzzy -#| msgid "The count needs to be equal to or greater than zero." msgid "The country needs to be specified using a two-letter country code." -msgstr "Antallet skal være lig med eller større end nul." +msgstr "Landet skal angives ved hjælp af en to-bogstavs landekode." #: pretix/base/modelimport_orders.py:281 pretix/base/modelimport_orders.py:432 msgid "Please enter a valid country code." @@ -4227,7 +4152,7 @@ msgstr "Indtast venligt en gyldig landekode." #: pretix/base/modelimport_orders.py:290 pretix/base/modelimport_orders.py:441 msgid "The state can be specified by its short form or full name." -msgstr "" +msgstr "Staten kan angives med sin forkortelse eller sit fulde navn." #: pretix/base/modelimport_orders.py:300 pretix/base/modelimport_orders.py:450 msgid "States are not supported for this country." @@ -4284,6 +4209,8 @@ msgid "" "The sales channel can be specified by it's internal identifier or its full " "name." msgstr "" +"Salgskanalen kan angives ved hjælp af dens interne identifikator eller dens " +"fulde navn." #: pretix/base/modelimport_orders.py:599 pretix/base/modelimport_orders.py:601 msgid "Please enter a valid sales channel." @@ -4291,7 +4218,7 @@ msgstr "Indtast venligst en gyldig salgskanal." #: pretix/base/modelimport_orders.py:611 msgid "The seat needs to be specified by its internal ID." -msgstr "" +msgstr "Sædet skal angives ved hjælp af dets interne ID." #: pretix/base/modelimport_orders.py:626 #: pretix/base/modelimport_vouchers.py:291 @@ -4382,21 +4309,20 @@ msgid "Price effect" msgstr "Effekt på pris" #: pretix/base/modelimport_vouchers.py:150 -#, fuzzy, python-brace-format -#| msgid "Could not parse {value} as a price mode, use one of {options}." +#, python-brace-format msgid "Could not parse {value} as a price effect, use one of {options}." msgstr "" -"Kunne ikke genkende {value} som en prismodus. Brug en af disse {options}." +"Det var ikke muligt at fortolke {value} som en prisændring. Brug en af " +"{options}." #: pretix/base/modelimport_vouchers.py:160 pretix/base/models/vouchers.py:248 msgid "Voucher value" msgstr "Voucherværdi" #: pretix/base/modelimport_vouchers.py:165 -#, fuzzy -#| msgid "It is pointless to set a value without a price mode." msgid "It is pointless to set a value without a price effect." -msgstr "Det giver ingen mening at vælge en værdi uden en prismodus." +msgstr "" +"Det giver ingen mening at fastsætte en værdi uden at det påvirker prisen." #: pretix/base/modelimport_vouchers.py:237 pretix/base/models/items.py:2121 #: pretix/base/models/vouchers.py:275 @@ -4505,6 +4431,8 @@ msgid "" "to confirm changing your email address from {old_email}\n" "to {new_email}, use the following code:" msgstr "" +"For at bekræfte ændringen af din e-mailadresse fra {old_email}\n" +"til {new_email} skal du bruge følgende kode:" #: pretix/base/models/auth.py:398 #, python-brace-format @@ -4512,11 +4440,12 @@ msgid "" "to confirm that your email address {email} belongs to your pretix account, " "use the following code:" msgstr "" +"For at bekræfte, at din e-mailadresse {email} hører til din pretix-konto, " +"skal du bruge følgende kode:" #: pretix/base/models/auth.py:412 -#, fuzzy msgid "pretix confirmation code" -msgstr "Bekræftelsestekst" +msgstr "Pretix-bekræftelseskode" #: pretix/base/models/auth.py:456 #: pretix/control/templates/pretixcontrol/auth/forgot.html:7 @@ -4678,10 +4607,8 @@ msgid "Ticket not valid at this time" msgstr "Billetten er ikke gyldig på dette tidspunkt" #: pretix/base/models/checkin.py:368 -#, fuzzy -#| msgid "Check-in status" msgid "Check-in annulled" -msgstr "Tjek-ind-status" +msgstr "Check-in annulleret" #: pretix/base/models/customers.py:63 msgid "Provider name" @@ -4720,7 +4647,6 @@ msgstr "" #: pretix/control/templates/pretixcontrol/organizers/giftcard_acceptance_list.html:56 #: pretix/control/templates/pretixcontrol/organizers/giftcard_acceptance_list.html:135 #: pretix/control/templates/pretixcontrol/organizers/reusable_medium.html:33 -#, fuzzy msgid "disabled" msgstr "Deaktiveret" @@ -4772,10 +4698,8 @@ msgid "Grant type" msgstr "Bevillingstype" #: pretix/base/models/customers.py:464 -#, fuzzy -#| msgid "Required question" msgid "Require PKCE extension" -msgstr "Påkrævet spørgsmål" +msgstr "Kræver PKCE-udvidelse" #: pretix/base/models/customers.py:476 msgid "Allowed access scopes" @@ -4787,21 +4711,19 @@ msgstr "Separer flere værdier med mellemrum" #: pretix/base/models/datasync.py:53 msgid "Temporary error, auto-retry limit exceeded" -msgstr "" +msgstr "Midlertidig fejl, grænsen for automatisk gentagelse er overskredet" #: pretix/base/models/datasync.py:54 -#, fuzzy -#| msgid "Stripe reported an event: {}" msgid "Provider reported a permanent error" -msgstr "Stripe rapporterede en hændelse: {}" +msgstr "Udbyderen har rapporteret en vedvarende fejl" #: pretix/base/models/datasync.py:55 msgid "Misconfiguration, please check provider settings" -msgstr "" +msgstr "Forkert konfiguration – kontroller venligst udbyderindstillingerne" #: pretix/base/models/datasync.py:56 pretix/base/models/datasync.py:57 msgid "System error, needs manual intervention" -msgstr "" +msgstr "Systemfejl, kræver manuel indgriben" #: pretix/base/models/devices.py:73 pretix/base/models/items.py:1675 msgid "Internal identifier" @@ -8669,19 +8591,16 @@ msgid "Integrations" msgstr "Faktureringsoplysninger" #: pretix/base/plugins.py:141 -#, fuzzy msgid "Customizations" -msgstr "Kundehandlinger" +msgstr "Tilpasninger" #: pretix/base/plugins.py:142 -#, fuzzy msgid "Output and export formats" -msgstr "Kort navn" +msgstr "Udskrifts- og eksportformater" #: pretix/base/plugins.py:143 -#, fuzzy msgid "API features" -msgstr "Funktioner" +msgstr "API-funktioner" #: pretix/base/reldate.py:38 msgid "Event start" @@ -8745,10 +8664,8 @@ msgid "Event canceled" msgstr "Arrangement aflyst" #: pretix/base/services/cancelevent.py:380 -#, fuzzy -#| msgid "Create configuration" msgid "Bulk-refund confirmation" -msgstr "Opret konfiguration" +msgstr "Bekræftelse af samlet refusion" #: pretix/base/services/cart.py:106 pretix/base/services/modelimport.py:247 #: pretix/base/services/orders.py:161 @@ -8782,6 +8699,8 @@ msgid "" "Some products can no longer be purchased and have been removed from your " "cart for the following reason: %s" msgstr "" +"Nogle varer kan ikke længere købes og er blevet fjernet fra din indkøbskurv " +"af følgende årsag: %s" #: pretix/base/services/cart.py:117 msgid "" -- 2.49.1 From 4beea63b4993d3c66459060fd7ad8444bdceb743 Mon Sep 17 00:00:00 2001 From: Mie Frydensbjerg Date: Thu, 16 Apr 2026 09:26:14 +0200 Subject: [PATCH 052/107] Translations: Update Danish Currently translated at 46.5% (2925 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/ powered by weblate --- src/pretix/locale/da/LC_MESSAGES/django.po | 98 ++++++++++++++++++---- 1 file changed, 80 insertions(+), 18 deletions(-) diff --git a/src/pretix/locale/da/LC_MESSAGES/django.po b/src/pretix/locale/da/LC_MESSAGES/django.po index 8dd608afa..4071530de 100644 --- a/src/pretix/locale/da/LC_MESSAGES/django.po +++ b/src/pretix/locale/da/LC_MESSAGES/django.po @@ -4,8 +4,8 @@ msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-04-14 15:02+0000\n" -"Last-Translator: Nikolai \n" +"PO-Revision-Date: 2026-04-16 09:00+0000\n" +"Last-Translator: Mie Frydensbjerg \n" "Language-Team: Danish \n" "Language: da\n" @@ -13,7 +13,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.16.2\n" +"X-Generator: Weblate 5.17\n" #: pretix/_base_settings.py:87 msgid "English" @@ -11573,6 +11573,9 @@ msgid "" "empty if you want pretix to automatically generate the terms of cancellation " "based on your settings." msgstr "" +"Denne tekst vises, når annullering er tilladt for en betalt bestilling. Lad " +"feltet stå tomt, hvis du ønsker, at Pretix automatisk genererer " +"annulleringsbetingelserne baseret på dine indstillinger." #: pretix/base/settings.py:2260 msgid "" @@ -11580,6 +11583,9 @@ msgid "" "order. Leave empty if you want pretix to automatically generate the terms of " "cancellation based on your settings." msgstr "" +"Denne tekst vises, når annullering er tilladt for en ubetalt eller gratis " +"bestilling. Lad feltet stå tomt, hvis du ønsker, at Pretix automatisk " +"genererer annulleringsbetingelserne baseret på dine indstillinger." #: pretix/base/settings.py:2270 pretix/control/forms/event.py:1898 msgid "Contact address" @@ -15887,6 +15893,14 @@ msgid "" "deadline arrives, since we expect that you want to collect the amount " "somehow and not auto-cancel the order." msgstr "" +"Hvis du markerer dette felt, vil denne bestilling opføre sig som en betalt " +"bestilling i de fleste tilfælde, selvom den endnu ikke er betalt. Det " +"betyder, at kunden allerede kan downloade og bruge billetter uanset dine " +"eventindstillinger, og bestillingen kan blive behandlet som betalt af nogle " +"plugins. Hvis du markerer dette, vil denne bestilling ikke automatisk blive " +"markeret som \"udløbet\", hvis betalingsfristen udløber, da vi forventer, at " +"du ønsker at opkræve beløbet på en eller anden måde og ikke automatisk " +"annullere bestillingen." #: pretix/control/forms/orders.py:94 msgid "Overbook quota" @@ -15927,6 +15941,10 @@ msgid "" "be canceled as well, so include them in your cancellation fee if you want to " "keep them." msgstr "" +"Hvis du beholder et gebyr, vil alle positioner i denne bestilling blive " +"annulleret, og bestillingen vil blive reduceret til et annulleringsgebyr. " +"Betalings- og forsendelsesgebyrer vil også blive annulleret, så inkluder dem " +"i dit annulleringsgebyr, hvis du vil beholde dem." #: pretix/control/forms/orders.py:180 #, fuzzy @@ -16274,7 +16292,7 @@ msgid "Canceled: {event}" msgstr "Kan oprette arrangementer" #: pretix/control/forms/orders.py:966 -#, fuzzy, python-brace-format +#, python-brace-format msgid "" "Hello,\n" "\n" @@ -16292,9 +16310,11 @@ msgid "" msgstr "" "Hej\n" "\n" -"Din bestilling til {event} er blevet ændret.\n" +"Vi måde desværre meddele, at {event} er blevet aflyst.\n" "\n" -"Du kan se status for din bestilling på\n" +"Vi refunderer dig {refund_amount} til din oprindelige betalingsmetode.\n" +"\n" +"Du kan se den nuværende status for din bestilling på:\n" "{url}\n" "\n" "Venlig hilsen \n" @@ -20182,6 +20202,10 @@ msgid "" "take manual action. However, you have currently turned off notifications for " "this event." msgstr "" +"Hvis en bruger anmoder om at annullere en betalt bestilling, og pengene ikke " +"kan refunderes automatisk, f.eks. på grund af den valgte betalingsmetode, " +"skal du foretage en manuel handling. Du har dog i øjeblikket deaktiveret " +"notifikationer for denne begivenhed." #: pretix/control/templates/pretixcontrol/event/cancel.html:46 #: pretix/control/templates/pretixcontrol/user/settings.html:47 @@ -23081,7 +23105,7 @@ msgstr "Annuller bestilling" #: pretix/control/templates/pretixcontrol/order/deny.html:11 msgid "Do you really want to cancel this order? You cannot revert this action." msgstr "" -"Er du sikker på at du vil annullere denne bestilling? Du kan ikke fortryde " +"Er du sikker på, at du vil annullere denne bestilling? Du kan ikke fortryde " "denne handling." #: pretix/control/templates/pretixcontrol/order/cancel.html:16 @@ -23097,6 +23121,9 @@ msgid "" "%(fee)s for this order, but for a cancellation performed by you, you need to " "set the cancellation fee here:" msgstr "" +"Det konfigurerede afbestillingsgebyr for en selvbetjeningsafbestilling ville " +"være %(fee)s for denne ordre, men for en afbestilling udført af dig skal du " +"indstille afbestillingsgebyret her:" #: pretix/control/templates/pretixcontrol/order/cancel.html:51 #: pretix/presale/templates/pretixpresale/event/order_cancel.html:220 @@ -23157,6 +23184,11 @@ msgid "" "implications, e.g. the payment method fee might change or additional " "questions can be added to the order that need to be answered by the user." msgstr "" +"Du kan bruge dette værktøj til at ændre de bestilte produkter eller til " +"delvist at annullere bestillingen. Vær opmærksom på, at ændring af en " +"bestilling kan have flere konsekvenser, f.eks. kan gebyret for " +"betalingsmetoden ændres, eller der kan tilføjes yderligere spørgsmål til " +"bestillingen, som brugeren skal besvare." #: pretix/control/templates/pretixcontrol/order/change.html:31 msgid "" @@ -23184,6 +23216,12 @@ msgid "" "not be able to exist otherwise. In most cases it is easier to cancel the " "order completely and create a new one." msgstr "" +"Brug venligst dette værktøj forsigtigt. Ændringer, du foretager her, kan " +"ikke fortrydes. Hvis du ændrer en bestilling manuelt, vil ikke alle " +"begrænsninger (f.eks. på nødvendige tilføjelser) blive kontrolleret. Derfor " +"kan du oprette en bestilling, der ellers ikke ville kunne eksistere. I de " +"fleste tilfælde er det nemmere at annullere bestillingen helt og oprette en " +"ny." #: pretix/control/templates/pretixcontrol/order/change.html:68 #, python-format @@ -23846,6 +23884,10 @@ msgid "" "products in the order are still available. If the order is pending payment, " "the expiry date will be reset." msgstr "" +"Ved at genaktivere bestillingen fortryder du annulleringen og konverterer " +"den tilbage til en afventende eller betalt ordre. Dette er kun muligt, så " +"længe alle produkter i bestillingen stadig er tilgængelige. Hvis " +"bestillingen afventer betaling, nulstilles udløbsdatoen." #: pretix/control/templates/pretixcontrol/order/reactivate.html:34 #, fuzzy @@ -24112,6 +24154,11 @@ msgid "" "orders can be created. Make sure that you check afterwards for any overpaid " "orders or pending refunds that you need to take care of manually." msgstr "" +"Du kan bruge denne side til at annullere og refundere alle bestillinger på " +"én gang, hvis du har brug for at aflyse dit arrangement. Dette vil også " +"deaktivere alle produkter, så der ikke kan oprettes nye bestillinger. Sørg " +"for at tjekke bagefter for eventuelle overbetalte bestillinger eller " +"ventende refusioner, som du skal håndtere manuelt." #: pretix/control/templates/pretixcontrol/orders/cancel.html:15 msgid "" @@ -24679,6 +24726,8 @@ msgid "" "This sum includes canceled orders. For your ticket revenue, look at the " "\"order overview\"." msgstr "" +"Dette beløb inkluderer annullerede bestillinger. Se din billetindtægt i " +"\"ordreoversigten\"." #: pretix/control/templates/pretixcontrol/orders/index.html:290 #, fuzzy @@ -35501,9 +35550,8 @@ msgstr "Ret din ordre" #: pretix/presale/templates/pretixpresale/event/order.html:386 #: pretix/presale/templates/pretixpresale/event/order_cancel.html:27 -#, fuzzy msgid "You can request to cancel this order." -msgstr "Du kan ikke annullere denne bestilling." +msgstr "Du kan anmode om at annullere denne bestilling." #: pretix/presale/templates/pretixpresale/event/order.html:389 #: pretix/presale/templates/pretixpresale/event/order_cancel.html:30 @@ -35539,13 +35587,12 @@ msgstr "Dette vil annullere alle billetter i ordren." msgid "" "You can request to cancel this order, but you will not receive a refund." msgstr "" -"Du kan anmode om at annullere denne ordre, men du ville ikke få pengene " +"Du kan anmode om at annullere denne bestilling, men du vil ikke få pengene " "tilbage." #: pretix/presale/templates/pretixpresale/event/order.html:410 -#, fuzzy msgid "You can cancel this order, but you will not receive a refund." -msgstr "Du kan annullere din bestilling ved at bruge knappen nedenfor." +msgstr "Du kan annullere denne bestilling, men du vil ikke få pengene tilbage." #: pretix/presale/templates/pretixpresale/event/order.html:419 #, python-format @@ -35554,6 +35601,9 @@ msgid "" "cancellation fee of %(fee)s will be kept and you will " "receive a refund of the remainder." msgstr "" +"Du kan anmode om at annullere denne bestilling. Hvis din anmodning " +"godkendes, vil et annulleringsgebyr på %(fee)s blive " +"tilbageholdt, og du vil modtage en refusion af det resterende beløb." #: pretix/presale/templates/pretixpresale/event/order.html:425 #, python-format @@ -35562,17 +35612,21 @@ msgid "" "%(fee)s will be kept and you will receive a refund of the " "remainder." msgstr "" +"Du kan annullere denne bestilling. I dette tilfælde vil et annulleringsgebyr " +"på %(fee)s blive tilbageholdt, og du vil modtage en " +"refusion af det resterende beløb." #: pretix/presale/templates/pretixpresale/event/order.html:442 msgid "" "You can request to cancel this order. If your request is approved, you get a " "full refund." msgstr "" +"Du kan anmode om at annullere denne bestilling. Hvis din anmodning " +"godkendes, får du fuld refusion." #: pretix/presale/templates/pretixpresale/event/order.html:447 -#, fuzzy msgid "You can cancel this order and receive a full refund." -msgstr "Du kan annullere din bestilling ved at bruge knappen nedenfor." +msgstr "Du kan annullere denne bestilling og modtage fuld refusion." #: pretix/presale/templates/pretixpresale/event/order.html:466 #: pretix/presale/templates/pretixpresale/event/order_cancel.html:54 @@ -35581,10 +35635,12 @@ msgid "" "You can cancel this order. As per our cancellation policy, you will still be " "required to pay a cancellation fee of %(fee)s." msgstr "" +"Du kan annullere denne bestilling. I henhold til vores annulleringspolitik " +"skal du stadig betale et annulleringsgebyr på %(fee)s." #: pretix/presale/templates/pretixpresale/event/order.html:472 msgid "You can cancel this order using the following button." -msgstr "Du kan annullere din bestilling ved at bruge knappen nedenfor." +msgstr "Du kan annullere denne bestilling ved hjælp af følgende knap." #: pretix/presale/templates/pretixpresale/event/order_cancel.html:11 #, fuzzy, python-format @@ -35602,15 +35658,18 @@ msgid "" "organizer will then decide on your request. If they approve, your order will " "be canceled and all tickets will be invalidated." msgstr "" +"Du kan anmode om annullering af din bestilling på denne side. Arrangøren vil " +"derefter træffe afgørelse om din anmodning. Hvis de godkender, vil din ordre " +"blive annulleret, og alle billetter vil blive gjort ugyldige." #: pretix/presale/templates/pretixpresale/event/order_cancel.html:46 msgid "" "If you cancel this order, all tickets will be invalidated and you can no " "longer use them. You cannot revert this action." msgstr "" -"Hvis du annullerer denne ordre vil alle billetter blive ugyldige og du kan " -"ikke længere bruge dem. Du kan ikke fortryde denne handling på et senere " -"tidspunkt." +"Hvis du annullerer denne bestilling, vil alle billetter blive ugyldige, og " +"du kan ikke længere bruge dem. Du kan ikke fortryde denne handling på et " +"senere tidspunkt." #: pretix/presale/templates/pretixpresale/event/order_cancel.html:62 #, python-format @@ -35754,6 +35813,9 @@ msgid "" "This order is managed for you by %(email)s. Please contact them for any " "questions regarding payment, cancellation or changes to this order." msgstr "" +"Denne bestilling administreres for dig af %(email)s. Kontakt dem venligst, " +"hvis du har spørgsmål vedrørende betaling, annullering eller ændringer af " +"denne bestilling." #: pretix/presale/templates/pretixpresale/event/position.html:63 msgctxt "action" -- 2.49.1 From 2f9ac05184568ca32e066b117de44ff584732423 Mon Sep 17 00:00:00 2001 From: Tim Date: Thu, 16 Apr 2026 11:08:14 +0200 Subject: [PATCH 053/107] Translations: Update Spanish Currently translated at 100.0% (6287 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/ powered by weblate --- src/pretix/locale/es/LC_MESSAGES/django.po | 24 +++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/pretix/locale/es/LC_MESSAGES/django.po b/src/pretix/locale/es/LC_MESSAGES/django.po index 93aa13ac6..aae51e362 100644 --- a/src/pretix/locale/es/LC_MESSAGES/django.po +++ b/src/pretix/locale/es/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-03-31 17:00+0000\n" -"Last-Translator: CVZ-es \n" +"PO-Revision-Date: 2026-04-16 09:10+0000\n" +"Last-Translator: Tim \n" "Language-Team: Spanish \n" "Language: es\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.16.2\n" +"X-Generator: Weblate 5.17\n" #: pretix/_base_settings.py:87 msgid "English" @@ -4312,7 +4312,7 @@ msgstr "Ya existe un vale de compra con este código." #: pretix/base/models/vouchers.py:199 pretix/control/views/vouchers.py:121 #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:52 msgid "Maximum usages" -msgstr "Usos máximos" +msgstr "Número máximo de usos" #: pretix/base/modelimport_vouchers.py:79 msgid "The maximum number of usages must be set." @@ -4333,7 +4333,7 @@ msgstr "Reservar entrada con cargo a la cuota" #: pretix/base/modelimport_vouchers.py:127 pretix/base/models/vouchers.py:236 msgid "Allow to bypass quota" -msgstr "Permitir que se anule la cuota" +msgstr "Permitir omitir la cuota" #: pretix/base/modelimport_vouchers.py:135 pretix/base/models/vouchers.py:242 #: pretix/control/templates/pretixcontrol/vouchers/bulk.html:44 @@ -7322,8 +7322,8 @@ msgid "" "If activated, a holder of this voucher code can buy tickets, even if there " "are none left." msgstr "" -"Si se activa, un titular de este vale de compra puede comprar entradas, " -"incluso si no queda ninguna." +"Si se activa, el poseedor de este código de vale podrá comprar entradas " +"incluso si no quedan existencias." #: pretix/base/models/vouchers.py:257 pretix/control/forms/vouchers.py:69 msgid "" @@ -15170,7 +15170,7 @@ msgstr "Todos los productos" #: pretix/control/views/typeahead.py:780 #, python-brace-format msgid "{product} – Any variation" -msgstr "{product} - Cualquier variación" +msgstr "{product} – Cualquier variación" #: pretix/control/forms/filter.py:566 pretix/control/forms/orders.py:862 msgctxt "subevent" @@ -15469,7 +15469,7 @@ msgstr "Buscar vale de compra" #: pretix/control/views/vouchers.py:133 #, python-brace-format msgid "Any product in quota \"{quota}\"" -msgstr "Cualquier producto del contingente \"{quota}\"" +msgstr "Cualquier producto en la cuota \"{quota}\"" #: pretix/control/forms/filter.py:2440 msgid "Refund status" @@ -17068,15 +17068,15 @@ msgstr "ID de butaca específico" #: pretix/control/forms/vouchers.py:200 pretix/presale/forms/waitinglist.py:103 msgid "Invalid product selected." -msgstr "Producto no válido seleccionado." +msgstr "Se ha seleccionado un producto no válido." #: pretix/control/forms/vouchers.py:225 msgid "" "The voucher only matches hidden products but you have not selected that it " "should show them." msgstr "" -"El vale de compra solo coincide con productos ocultos pero no has " -"seleccionado que los muestre." +"El vale solo coincide con productos ocultos, pero no has seleccionado que " +"deba mostrarlos." #: pretix/control/forms/vouchers.py:271 msgid "Codes" -- 2.49.1 From baeec92203b70eea26b126cce704de71704527bf Mon Sep 17 00:00:00 2001 From: Nikolai Date: Thu, 16 Apr 2026 16:58:22 +0200 Subject: [PATCH 054/107] Translations: Update Danish Currently translated at 47.7% (3004 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/ powered by weblate --- src/pretix/locale/da/LC_MESSAGES/django.po | 271 +++++++++------------ 1 file changed, 118 insertions(+), 153 deletions(-) diff --git a/src/pretix/locale/da/LC_MESSAGES/django.po b/src/pretix/locale/da/LC_MESSAGES/django.po index 4071530de..6e5201d5e 100644 --- a/src/pretix/locale/da/LC_MESSAGES/django.po +++ b/src/pretix/locale/da/LC_MESSAGES/django.po @@ -4,8 +4,8 @@ msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-04-16 09:00+0000\n" -"Last-Translator: Mie Frydensbjerg \n" +"PO-Revision-Date: 2026-04-16 18:00+0000\n" +"Last-Translator: Nikolai \n" "Language-Team: Danish \n" "Language: da\n" @@ -721,14 +721,14 @@ msgid "Your password must contain both numeric and alphabetic characters." msgstr "Din adgangskode skal indeholde både tal og bogstaver." #: pretix/base/auth.py:202 pretix/base/auth.py:212 -#, fuzzy, python-format +#, python-format msgid "Your password may not be the same as your previous password." msgid_plural "" "Your password may not be the same as one of your %(history_length)s previous " "passwords." msgstr[0] "Din adgangskode må ikke være den samme som din tidligere adgangskode." msgstr[1] "" -"Din adgangskode må ikke være den samme som en af dine %(history_length) " +"Din adgangskode må ikke være den samme som en af dine %(history_length)s " "foregående adgangskoder." #: pretix/base/channels.py:168 @@ -4882,14 +4882,12 @@ msgstr "" #: pretix/base/models/discount.py:177 msgctxt "subevent" msgid "Available for dates starting from" -msgstr "" +msgstr "Kan bookes fra" #: pretix/base/models/discount.py:182 -#, fuzzy -#| msgid "Available until" msgctxt "subevent" msgid "Available for dates starting until" -msgstr "Tilgængelig indtil" +msgstr "Kan bookes til og med" #: pretix/base/models/discount.py:214 msgid "" @@ -4986,13 +4984,15 @@ msgstr "Valgfri. Ingen produkter vil blive solgt før denne dato." #: pretix/base/models/event.py:644 msgid "This event is remote or partially remote." -msgstr "" +msgstr "Dette arrangement afholdes online eller delvist online." #: pretix/base/models/event.py:645 msgid "" "This will be used to let users know if the event is in a different timezone " "and let’s us calculate users’ local times." msgstr "" +"Dette vil blive brugt til at informere brugerne om, hvorvidt begivenheden " +"finder sted i en anden tidszone, og til at beregne brugernes lokale tid." #: pretix/base/models/event.py:665 pretix/base/models/organizer.py:102 #: pretix/control/navigation.py:70 pretix/control/navigation.py:526 @@ -5265,9 +5265,8 @@ msgid "Owned by ticket holder" msgstr "Tilhører billettens indehaver" #: pretix/base/models/giftcards.py:88 -#, fuzzy msgid "Owned by customer account" -msgstr "Intern kommentar" +msgstr "Tilhører kundekonto" #: pretix/base/models/giftcards.py:100 msgid "The gift card code may only contain letters, numbers, dots and dashes." @@ -5285,39 +5284,32 @@ msgid "Manual transaction" msgstr "Manuel overførsel" #: pretix/base/models/invoices.py:122 -#, fuzzy -#| msgid "Pending amount" msgid "pending transmission" -msgstr "Udestående beløb" +msgstr "venter på overførsel" #: pretix/base/models/invoices.py:123 msgid "currently being transmitted" -msgstr "" +msgstr "bliver i øjeblikket sendt" #: pretix/base/models/invoices.py:124 -#, fuzzy -#| msgctxt "subevent" -#| msgid "No date selected." msgid "transmitted" -msgstr "Ingen dato valgt." +msgstr "overført" #: pretix/base/models/invoices.py:125 pretix/base/models/mail.py:56 #: pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html:44 #: pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html:145 #: pretix/plugins/sendmail/models.py:51 msgid "failed" -msgstr "" +msgstr "mislykket" #: pretix/base/models/invoices.py:126 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_list.html:56 -#, fuzzy msgid "unknown" -msgstr "(ukendt)" +msgstr "ukendt" #: pretix/base/models/invoices.py:127 -#, fuzzy msgid "not transmitted due to test mode" -msgstr "Generer widget-kode" +msgstr "ikke overført på grund af testtilstand" #: pretix/base/models/invoices.py:221 #, python-format @@ -5362,41 +5354,38 @@ msgstr "" #: pretix/base/models/items.py:114 pretix/base/models/items.py:159 #: pretix/control/forms/item.py:98 -#, fuzzy msgid "Normal category" -msgstr "Produktkategori" +msgstr "Normal kategori" #: pretix/base/models/items.py:115 pretix/control/forms/item.py:111 msgid "Normal + cross-selling category" -msgstr "" +msgstr "Normal + cross-selling-kategori" #: pretix/base/models/items.py:116 pretix/control/forms/item.py:106 -#, fuzzy msgid "Cross-selling category" -msgstr "Produktkategori" +msgstr "Cross-selling-kategori" #: pretix/base/models/items.py:124 msgid "Always show in cross-selling step" -msgstr "" +msgstr "Vis altid i cross-selling-trinet" #: pretix/base/models/items.py:125 msgid "" "Only show products that qualify for a discount according to discount rules" msgstr "" +"Vis kun produkter, der er berettiget til rabat i henhold til rabatreglerne" #: pretix/base/models/items.py:126 msgid "Only show if the cart contains one of the following products" -msgstr "" +msgstr "Vis kun, hvis indkøbskurven indeholder et af følgende produkter" #: pretix/base/models/items.py:129 msgid "Cross-selling condition" -msgstr "" +msgstr "Betingelser for cross-selling" #: pretix/base/models/items.py:137 -#, fuzzy -#| msgid "Count add-on products" msgid "Cross-selling condition products" -msgstr "Tæl add-on-produkter" +msgstr "Produkter, der svarer til cross-selling-betingelserne" #: pretix/base/models/items.py:143 #: pretix/control/templates/pretixcontrol/items/categories.html:3 @@ -5408,12 +5397,11 @@ msgstr "Produktkategorier" #: pretix/base/models/items.py:149 #, python-brace-format msgid "{category} ({category_type})" -msgstr "" +msgstr "{category} ({category_type})" #: pretix/base/models/items.py:155 -#, fuzzy msgid "Add-on category" -msgstr "Produktkategori" +msgstr "Tilvalgskategori" #: pretix/base/models/items.py:222 pretix/base/models/items.py:278 msgid "Disable product for this date" @@ -5448,9 +5436,8 @@ msgstr "Skjul produkt, hvis ikke til rådighed" #: pretix/base/models/items.py:445 pretix/control/forms/item.py:672 #: pretix/control/templates/pretixcontrol/subevents/fragment_unavail_mode_indicator.html:5 -#, fuzzy msgid "Show product with info on why it’s unavailable" -msgstr "Produktet \"{item}\" er ikke længere tilgængeligt." +msgstr "Vis produktet med oplysninger om, hvorfor det ikke er tilgængeligt" #: pretix/base/models/items.py:456 pretix/base/models/items.py:781 msgid "Don't use re-usable media, use regular one-off tickets" @@ -5495,24 +5482,16 @@ msgstr "" "særlig pris eller hvis du ikke har variationer, vil denne pris blive brugt." #: pretix/base/models/items.py:506 -#, fuzzy -#| msgid "" -#| "If this option is active, your users can choose the price themselves. The " -#| "price configured above is then interpreted as the minimum price a user " -#| "has to enter. You could use this e.g. to collect additional donations for " -#| "your event. This is currently not supported for products that are bought " -#| "as an add-on to other products." msgid "" "If this option is active, your users can choose the price themselves. The " "price configured above is then interpreted as the minimum price a user has " "to enter. You could use this e.g. to collect additional donations for your " "event." msgstr "" -"Hvis denne option er valgt, kan dine brugere selv vælge prisen. Prisen " -"konfigureret foroven vil så blive anset som minimumsprisen, som en bruger " -"skal indtaste. Dette kunne du f.eks. bruge til at indsamle yderligere " -"donationer for dit arrangement. Denne indstilling understøttes for tiden " -"ikke for produkter, som er købt som et add-on for andre produkter." +"Hvis denne indstilling er aktiveret, kan brugerne selv vælge prisen. Den " +"pris, der er angivet ovenfor, betragtes da som den mindste pris, en bruger " +"skal indtaste. Du kan f.eks. bruge denne funktion til at indsamle ekstra " +"donationer til dit arrangement." #: pretix/base/models/items.py:511 pretix/base/models/items.py:1176 msgid "Suggested price" @@ -5592,14 +5571,6 @@ msgid "Only show after sellout of" msgstr "Vis kun, når disse er udsolgt" #: pretix/base/models/items.py:596 -#, fuzzy -#| msgid "" -#| "If you select a product here, this product will only be shown when that " -#| "product is sold out. If combined with the option to hide sold-out " -#| "products, this allows you to swap out products for more expensive ones " -#| "once the cheaper option is sold out. There might be a short period in " -#| "which both products are visible while all tickets of the referenced " -#| "product are reserved, but not yet sold." msgid "" "If you select a product here, this product will only be shown when that " "product is no longer available. This will happen either because the other " @@ -5610,12 +5581,14 @@ msgid "" "products are visible while all tickets of the referenced product are " "reserved, but not yet sold." msgstr "" -"Hvis du vælger et produkt her, vises det kun, når produktet er udsolgt. Hvis " -"dette kombineres med optionen om at skjule udsolgte produkter, tillades det " -"at du skifter produkter ud til andre, dyrere produkter, så snart det " -"billigere alternativ er udsolgt. Der kan opstå et kort tidsrum, inden for " -"hvilket begge produkter er synlige, mens alle billetter fra det " -"referencerede produkt er reserverede, men ikke solgt endnu." +"Hvis du vælger et produkt her, vises dette produkt kun, når det andet " +"produkt ikke længere er tilgængeligt. Dette sker enten, fordi det andet " +"produkt er udsolgt, eller fordi det ikke længere er i salgsperioden for det " +"andet produkt. Hvis du kombinerer dette med muligheden for at skjule " +"udsolgte produkter, kan du udskifte produkter med dyrere varianter, når den " +"billigere variant er udsolgt. Der kan være en kort periode, hvor begge " +"produkter er synlige, mens alle billetter til det refererede produkt er " +"reserveret, men endnu ikke solgt." #: pretix/base/models/items.py:611 msgid "" @@ -6238,20 +6211,12 @@ msgid "Unknown country code." msgstr "Ukendt landekode." #: pretix/base/models/items.py:1921 pretix/base/models/items.py:1923 -#, fuzzy -#| msgid "The maximum count needs to be greater than the minimum count." msgid "The maximum date must not be before the minimum value." -msgstr "Maksimumsantallet skal være større end minimumsantallet." +msgstr "Den maksimale værdi for datoen må ikke ligge før den mindste værdi." #: pretix/base/models/items.py:1925 -#, fuzzy -#| msgid "" -#| "The maximum number of usages may not be lower than the minimum number of " -#| "usages." msgid "The maximum value must not be lower than the minimum value." -msgstr "" -"Det maksimale antal af anvendelser må ikke være lavere end det minimale " -"antal anvendelser." +msgstr "Den maksimale værdi må ikke være lavere end den minimale værdi." #: pretix/base/models/items.py:1943 msgid "" @@ -6259,6 +6224,9 @@ msgid "" "with changing the type of question without data loss. Consider hiding this " "question and creating a new one instead." msgstr "" +"Systemet indeholder allerede svar på dette spørgsmål, som kunne gå tabt, " +"hvis du ændrer spørgsmålstypen. Overvej at skjule dette spørgsmål og oprette " +"et nyt i stedet." #: pretix/base/models/items.py:1961 #: pretix/control/templates/pretixcontrol/items/question.html:87 @@ -6399,29 +6367,25 @@ msgstr "" "en mulig værdi for hver række." #: pretix/base/models/items.py:2311 -#, fuzzy -#| msgctxt "timeframe" -#| msgid "Start" msgid "Start" -msgstr "Starttidspunkt" +msgstr "Start" #: pretix/base/models/items.py:2312 #: pretix/plugins/reports/accountingreport.py:129 -#, fuzzy msgid "End" -msgstr "Aktiveret" +msgstr "Slut" #: pretix/base/models/mail.py:52 #: pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html:38 #: pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html:139 msgid "queued" -msgstr "" +msgstr "i kø" #: pretix/base/models/mail.py:53 #: pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html:40 #: pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html:141 msgid "being sent" -msgstr "" +msgstr "bliver sendt" #: pretix/base/models/mail.py:54 #, fuzzy @@ -7059,6 +7023,8 @@ msgid "" "Exempt based on article {article}, section {section} ({letter}) of Council " "Directive 2006/112/EC" msgstr "" +"Undtaget i henhold til artikel {article}, stk. {section} ({letter}) i Rådets " +"direktiv 2006/112/EF" #: pretix/base/models/tax.py:230 #, python-brace-format @@ -7067,36 +7033,38 @@ msgid "" "Exempt based on article {article}, section ({letter}) of Council Directive " "2006/112/EC" msgstr "" +"Undtaget i henhold til artikel {article}, stk. ({letter}) i Rådets direktiv " +"2006/112/EF" #: pretix/base/models/tax.py:251 msgctxt "tax_code" msgid "Exempt based on article 309 of Council Directive 2006/112/EC" -msgstr "" +msgstr "Fritaget i henhold til artikel 309 i Rådets direktiv 2006/112/EF" #: pretix/base/models/tax.py:253 msgctxt "tax_code" msgid "Intra-Community acquisition from second hand means of transport" -msgstr "" +msgstr "Erhvervelse af brugte transportmidler inden for EU" #: pretix/base/models/tax.py:255 msgctxt "tax_code" msgid "Intra-Community acquisition of second hand goods" -msgstr "" +msgstr "Erhvervelse af brugte varer inden EU" #: pretix/base/models/tax.py:257 msgctxt "tax_code" msgid "Intra-Community acquisition of works of art" -msgstr "" +msgstr "Erhvervelse af kunstværker inden for EU" #: pretix/base/models/tax.py:259 msgctxt "tax_code" msgid "Intra-Community acquisition of collectors items and antiques" -msgstr "" +msgstr "Indkøb af samlerobjekter og antikviteter inden for EU" #: pretix/base/models/tax.py:261 msgctxt "tax_code" msgid "France domestic VAT franchise in base" -msgstr "" +msgstr "France domestic VAT franchise in base" #: pretix/base/models/tax.py:263 msgctxt "tax_code" @@ -7104,6 +7072,8 @@ msgid "" "France domestic Credit Notes without VAT, due to supplier forfeit of VAT for " "discount" msgstr "" +"Franske interne kreditnotaer uden moms, da leverandøren har afstået fra at " +"opkræve moms til gengæld for rabatten" #: pretix/base/models/tax.py:315 #, python-brace-format @@ -7120,16 +7090,17 @@ msgstr "Bør være kort, fx \"moms\"" #: pretix/base/models/tax.py:331 pretix/control/forms/event.py:1698 #: pretix/control/templates/pretixcontrol/order/transactions.html:22 -#, fuzzy -#| msgid "Status code" msgid "Tax code" -msgstr "Statuskode" +msgstr "Skattelov" #: pretix/base/models/tax.py:332 msgid "" "If you help us understand what this tax rules legally is, we can use this " "information for eInvoices, exporting to accounting system, etc." msgstr "" +"Hvis du kan hjælpe os med at forstå, hvad disse skatteregler juridisk set " +"går ud på, kan vi bruge disse oplysninger til e-fakturaer, eksport til " +"regnskabssystemet osv." #: pretix/base/models/tax.py:352 msgid "The configured product prices include the tax amount" @@ -7153,10 +7124,13 @@ msgid "" "business customers in other EU countries in a way that works for all " "organizers. Use custom rules instead." msgstr "" +"Denne funktion vil blive fjernet på et senere tidspunkt, da den ikke " +"håndterer moms for ikke-erhvervskunder i andre EU-lande på en måde, der " +"fungerer for alle arrangører. Brug i stedet brugerdefinerede regler." #: pretix/base/models/tax.py:366 msgid "DEPRECATED" -msgstr "" +msgstr "UDGÅET" #: pretix/base/models/tax.py:367 msgid "" @@ -7195,11 +7169,15 @@ msgstr "Du skal angive landet du bor i for at bruge omvendt betalingspligt." msgid "" "A combination of this tax code with a non-zero tax rate does not make sense." msgstr "" +"En kombination af denne skatteregel med en skattesats, der ikke er nul, " +"giver ingen mening." #: pretix/base/models/tax.py:433 pretix/control/forms/event.py:1752 msgid "" "A combination of this tax code with a zero tax rate does not make sense." msgstr "" +"Det giver ingen mening at kombinere denne skatteregel med en skattesats på " +"nul." #: pretix/base/models/tax.py:438 #, python-brace-format @@ -7813,10 +7791,10 @@ msgid "The payment for this invoice has already been received." msgstr "Betalingen for denne faktura er allerede modtaget." #: pretix/base/payment.py:1024 -#, fuzzy msgid "" "This payment is already being processed and can not be canceled any more." -msgstr "Dette produkt vil ikke blive solgt efter denne dato." +msgstr "" +"Denne betaling er allerede under behandling og kan ikke længere annulleres." #: pretix/base/payment.py:1038 msgid "Automatic refunds are not supported by this payment provider." @@ -8002,16 +7980,12 @@ msgid "123.45 EUR" msgstr "123,45 EUR" #: pretix/base/pdf.py:165 -#, fuzzy -#| msgid "Price including add-ons" msgid "Price including bundled products" -msgstr "Pris inkl. add-ons" +msgstr "Pris inklusive medfølgende produkter" #: pretix/base/pdf.py:174 -#, fuzzy -#| msgid "Price including add-ons" msgid "Price including add-ons and bundled products" -msgstr "Pris inkl. add-ons" +msgstr "Pris inklusive tilvalg og medfølgende produkter" #: pretix/base/pdf.py:184 pretix/base/pdf.py:342 #: pretix/base/services/invoices.py:594 @@ -8271,17 +8245,19 @@ msgid "Validity end time" msgstr "Sluttidspunkt for gyldighed" #: pretix/base/pdf.py:494 -#, fuzzy -#| msgid "Printing date and time" msgid "Program times: date and time" -msgstr "Dato og tidspunkt for udskriften" +msgstr "Programtider: dato og klokkeslæt" #: pretix/base/pdf.py:496 +#, fuzzy msgid "" "2017-05-31 10:00 – 12:00\n" "2017-05-31 14:00 – 16:00\n" "2017-05-31 14:00 – 2017-06-01 14:00" msgstr "" +"2017-05-31 10:00 – 12:00\n" +"2017-05-31 14:00 – 16:00\n" +"2017-05-31 14:00 – 2017-06-01 14:00" #: pretix/base/pdf.py:500 msgid "Reusable Medium ID" @@ -8378,34 +8354,32 @@ msgstr "Din layout-fil er ikke noget gyldigt layout. Fejlbesked: {}" #: pretix/base/permissions.py:314 pretix/base/permissions.py:331 msgctxt "permission_level" msgid "View" -msgstr "" +msgstr "Vis" #: pretix/base/permissions.py:164 pretix/base/permissions.py:169 #: pretix/base/permissions.py:174 pretix/base/permissions.py:179 #: pretix/base/permissions.py:286 pretix/base/permissions.py:315 -#, fuzzy msgctxt "permission_level" msgid "View and change" -msgstr "Gem og vis forhåndsvisning" +msgstr "Se og rediger" #: pretix/base/permissions.py:168 -#, fuzzy -#| msgid "API tokens" msgid "API only" -msgstr "API-token" +msgstr "Kun API" #: pretix/base/permissions.py:173 msgid "" "Menu item will only show up if the user has permission for general settings." msgstr "" +"Menupunktet vises kun, hvis brugeren har adgang til de generelle " +"indstillinger." #: pretix/base/permissions.py:177 pretix/base/permissions.py:231 #: pretix/base/permissions.py:285 pretix/base/permissions.py:313 #: pretix/base/permissions.py:330 -#, fuzzy msgctxt "permission_level" msgid "No access" -msgstr "Fuldt navn" +msgstr "Ingen adgang" #: pretix/base/permissions.py:188 #: pretix/control/templates/pretixcontrol/event/settings.html:7 @@ -8419,6 +8393,8 @@ msgid "" "This includes access to all settings not listed explicitly below, including " "plugin settings." msgstr "" +"Dette omfatter adgang til alle indstillinger, der ikke udtrykkeligt er " +"anført nedenfor, herunder plugin-indstillinger." #: pretix/base/permissions.py:197 #: pretix/control/templates/pretixcontrol/event/payment.html:6 @@ -8428,101 +8404,83 @@ msgstr "Betalingsindstillinger" #: pretix/base/permissions.py:203 #: pretix/control/templates/pretixcontrol/event/tax.html:120 -#, fuzzy -#| msgid "Base settings" msgid "Tax settings" -msgstr "Basisindstillinger" +msgstr "Skatteindstillinger" #: pretix/base/permissions.py:209 -#, fuzzy msgid "Invoicing settings" -msgstr "Prisindstillinger" +msgstr "Indstillinger for fakturering" #: pretix/base/permissions.py:215 -#, fuzzy -#| msgctxt "subevent" -#| msgid "Event series date added" msgid "Event series dates" -msgstr "Dato for arrangementsserien tilføjet" +msgstr "Datoer for begivenhedsserien" #: pretix/base/permissions.py:221 -#, fuzzy -#| msgid "Product name and variation" msgid "Products, quotas and questions" -msgstr "Produktnavn og variant" +msgstr "Produkter, kvoter og spørgsmål" #: pretix/base/permissions.py:224 msgid "Also includes related objects like categories or discounts." -msgstr "" +msgstr "Omfatter også relaterede elementer som kategorier eller rabatter." #: pretix/base/permissions.py:232 -#, fuzzy msgctxt "permission_level" msgid "Only check-in" -msgstr "Tjek-ind-lister" +msgstr "Kun indtjekning" #: pretix/base/permissions.py:233 -#, fuzzy -#| msgid "Show all" msgctxt "permission_level" msgid "View all" -msgstr "Vis alle" +msgstr "Se alle" #: pretix/base/permissions.py:234 -#, fuzzy msgctxt "permission_level" msgid "View all and check-in" -msgstr "Tjek-ind-lister" +msgstr "Se alle og tjek ind" #: pretix/base/permissions.py:235 -#, fuzzy -#| msgid "View all upcoming events" msgctxt "permission_level" msgid "View all and change" -msgstr "Vis alle kommende arrangementer" +msgstr "Vis alle og rediger" #: pretix/base/permissions.py:236 msgid "Includes the ability to cancel and refund individual orders." -msgstr "" +msgstr "Omfatter muligheden for at annullere og refundere enkelte ordrer." #: pretix/base/permissions.py:238 -#, fuzzy msgid "Also includes related objects like the waiting list." -msgstr "En bruger er føjet til gruppen." +msgstr "Omfatter også relaterede elementer som f.eks. ventelisten." #: pretix/base/permissions.py:248 -#, fuzzy -#| msgid "Generate cancellation" msgid "Full event or date cancellation" -msgstr "Generér afbestilling" +msgstr "Aflysning af hele arrangementet eller datoen" #: pretix/base/permissions.py:252 -#, fuzzy -#| msgid "Sale not allowed" msgctxt "permission_level" msgid "Not allowed" -msgstr "Filtype ikke tilladt" +msgstr "Ikke tilladt" #: pretix/base/permissions.py:253 -#, fuzzy msgctxt "permission_level" msgid "Allowed" -msgstr "Samlet værdi" +msgstr "Tilladt" #: pretix/base/permissions.py:268 msgctxt "permission_level" msgid "Access existing events" -msgstr "" +msgstr "Få adgang til eksisterende begivenheder" #: pretix/base/permissions.py:269 msgctxt "permission_level" msgid "Access existing and create new events" -msgstr "" +msgstr "Få adgang til eksisterende og opret nye begivenheder" #: pretix/base/permissions.py:271 msgid "" "The level of access to events is determined in detail by the settings below." msgstr "" +"Adgangsrettighederne til begivenhederne fastlægges i detaljer via " +"nedenstående indstillinger." #: pretix/base/permissions.py:275 pretix/control/navigation.py:143 #: pretix/control/navigation.py:462 pretix/control/navigation.py:512 @@ -8541,19 +8499,22 @@ msgid "" "This includes access to all organizer-level functionality not listed " "explicitly below, including plugin settings." msgstr "" +"Dette omfatter adgang til alle funktioner på arrangørniveau, der ikke er " +"nævnt eksplicit nedenfor, herunder plugin-indstillinger." #: pretix/base/permissions.py:287 msgid "" "Includes the ability to give someone (including oneself) additional " "permissions." msgstr "" +"Giver mulighed for at tildele en person (herunder sig selv) yderligere " +"rettigheder." #: pretix/base/permissions.py:298 pretix/control/navigation.py:608 #: pretix/control/templates/pretixcontrol/organizers/customers.html:6 #: pretix/control/templates/pretixcontrol/organizers/customers.html:9 -#, fuzzy msgid "Customers" -msgstr "Kundehandlinger" +msgstr "Kunder" #: pretix/base/permissions.py:310 pretix/control/navigation.py:666 #: pretix/control/navigation.py:673 @@ -16383,7 +16344,7 @@ msgstr "Den indtastede bekræftelseskode var forkert." #: pretix/control/forms/organizer.py:96 msgid "This slug is already in use. Please choose a different one." -msgstr "Dette korte navn er allerede i brug. Vælg et andet." +msgstr "Dette slug er allerede i brug. Vælg venligst et andet." #: pretix/control/forms/organizer.py:175 #, fuzzy @@ -31195,12 +31156,14 @@ msgstr "Betalingsprocessen er startet i et nyt vindue." #: pretix/plugins/stripe/templates/pretixplugins/stripe/redirect.html:20 msgid "The window to enter your payment data was not opened or was closed?" msgstr "" +"Blev vinduet til indtastning af dine betalingsoplysninger ikke åbnet, eller " +"blev det lukket?" #: pretix/plugins/paypal/templates/pretixplugins/paypal/redirect.html:25 #: pretix/plugins/paypal2/templates/pretixplugins/paypal2/redirect.html:25 #: pretix/plugins/stripe/templates/pretixplugins/stripe/redirect.html:25 msgid "Click here in order to open the window." -msgstr "Tryk her for at åbne vinduet." +msgstr "Klik her for at åbne vinduet." #: pretix/plugins/paypal/views.py:107 pretix/plugins/paypal2/views.py:322 msgid "Invalid response from PayPal received." @@ -33420,6 +33383,8 @@ msgid "" "Sorry, there was an error in the payment process. Please check the link in " "your emails to continue." msgstr "" +"Beklager, der opstod en fejl under betalingsprocessen. Klik på linket i din " +"e-mail for at fortsætte." #: pretix/plugins/stripe/views.py:576 msgid "" -- 2.49.1 From a8fe6f505ed90faf8fa68036bcefa10802c6a72a Mon Sep 17 00:00:00 2001 From: Tim Date: Thu, 16 Apr 2026 18:35:59 +0200 Subject: [PATCH 055/107] Translations: Update Spanish Currently translated at 100.0% (6287 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/ powered by weblate --- src/pretix/locale/es/LC_MESSAGES/django.po | 31 +++++++++++----------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/src/pretix/locale/es/LC_MESSAGES/django.po b/src/pretix/locale/es/LC_MESSAGES/django.po index aae51e362..f07b9ff46 100644 --- a/src/pretix/locale/es/LC_MESSAGES/django.po +++ b/src/pretix/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-04-16 09:10+0000\n" +"PO-Revision-Date: 2026-04-16 18:00+0000\n" "Last-Translator: Tim \n" "Language-Team: Spanish \n" @@ -4150,7 +4150,7 @@ msgstr "Se encontraron varios productos coincidentes." #: pretix/base/modelimport_vouchers.py:205 pretix/base/models/items.py:1257 #: pretix/base/models/vouchers.py:266 pretix/base/models/waitinglist.py:99 msgid "Product variation" -msgstr "Variación del producto" +msgstr "Variante de producto" #: pretix/base/modelimport_orders.py:161 msgid "The variation can be specified by its internal ID or full name." @@ -4340,7 +4340,7 @@ msgstr "Permitir omitir la cuota" #: pretix/control/templates/pretixcontrol/vouchers/detail.html:70 #: pretix/control/views/vouchers.py:121 msgid "Price effect" -msgstr "Efecto sobre los precios" +msgstr "Efecto en el precio" #: pretix/base/modelimport_vouchers.py:150 #, python-brace-format @@ -4351,7 +4351,7 @@ msgstr "" #: pretix/base/modelimport_vouchers.py:160 pretix/base/models/vouchers.py:248 msgid "Voucher value" -msgstr "Valor del vale de compra" +msgstr "Valor del vale" #: pretix/base/modelimport_vouchers.py:165 msgid "It is pointless to set a value without a price effect." @@ -4394,7 +4394,7 @@ msgstr "Etiqueta" #: pretix/base/modelimport_vouchers.py:334 pretix/base/models/vouchers.py:300 msgid "Shows hidden products that match this voucher" -msgstr "Mostrar los ocultados productos válidos con este vale de compra" +msgstr "Muestra los productos ocultos vinculados a este vale" #: pretix/base/modelimport_vouchers.py:343 pretix/base/models/vouchers.py:304 msgid "Offer all add-on products for free when redeeming this voucher" @@ -7338,14 +7338,14 @@ msgstr "" #: pretix/base/models/vouchers.py:268 msgid "This variation of the product select above is being used." -msgstr "Esta variación del producto seleccionado arriba está siendo utilizada." +msgstr "Se aplica a la variante del producto seleccionado arriba." #: pretix/base/models/vouchers.py:277 msgid "" "If enabled, the voucher is valid for any product affected by this quota." msgstr "" -"Si está habilitado, el vale de compra es válido para cualquier producto " -"afectado por esta cuota." +"Si se activa, el vale será válido para cualquier producto incluido en esta " +"cuota." #: pretix/base/models/vouchers.py:284 msgid "Specific seat" @@ -7357,16 +7357,16 @@ msgid "" "same value for multiple vouchers, you can get statistics on how many of them " "have been redeemed etc." msgstr "" -"Puede utilizar este campo para agrupar múltiples vales de compra. Si " -"introduce el mismo valor para varios vales de compra, puede obtener " -"estadísticas sobre cuántos de ellos se han canjeado, etc." +"Puedes usar este campo para agrupar varios vales. Si introduces el mismo " +"valor en distintos vales, podrás obtener estadísticas sobre cuántos se han " +"canjeado, etc." #: pretix/base/models/vouchers.py:316 pretix/base/permissions.py:242 #: pretix/control/navigation.py:289 #: pretix/control/templates/pretixcontrol/vouchers/index.html:6 #: pretix/control/templates/pretixcontrol/vouchers/index.html:8 msgid "Vouchers" -msgstr "Vales de compra" +msgstr "Vales" #: pretix/base/models/vouchers.py:342 msgid "You cannot select a quota that belongs to a different event." @@ -13365,7 +13365,7 @@ msgstr "Esto eliminará todos los números de teléfono de los pedidos." #: pretix/base/shredder.py:290 msgid "Emails" -msgstr "Correos electrónicos" +msgstr "Correos" #: pretix/base/shredder.py:292 msgid "" @@ -28697,8 +28697,7 @@ msgstr "Se ha creado la nueva lista de asistentes." #: pretix/plugins/stripe/views.py:702 #: pretix/plugins/ticketoutputpdf/views.py:132 msgid "We could not save your changes. See below for details." -msgstr "" -"No hemos podido guardar los cambios. Consulte los detalles a continuación." +msgstr "No se pudieron guardar los cambios. Consulta los detalles abajo." #: pretix/control/views/checkin.py:421 pretix/control/views/checkin.py:458 msgid "The requested list does not exist." @@ -30864,7 +30863,7 @@ msgstr "" #: pretix/plugins/badges/forms.py:33 msgid "Template" -msgstr "Plantilla" +msgstr "Template" #: pretix/plugins/badges/forms.py:34 msgid "" -- 2.49.1 From 58ea7c8656a8e43d546658d6a95c2563bd751014 Mon Sep 17 00:00:00 2001 From: Tim Date: Thu, 16 Apr 2026 20:14:00 +0200 Subject: [PATCH 056/107] Translations: Update Spanish Currently translated at 100.0% (6287 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/ powered by weblate --- src/pretix/locale/es/LC_MESSAGES/django.po | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/pretix/locale/es/LC_MESSAGES/django.po b/src/pretix/locale/es/LC_MESSAGES/django.po index f07b9ff46..788446674 100644 --- a/src/pretix/locale/es/LC_MESSAGES/django.po +++ b/src/pretix/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-04-16 18:00+0000\n" +"PO-Revision-Date: 2026-04-17 03:00+0000\n" "Last-Translator: Tim \n" "Language-Team: Spanish \n" @@ -21474,7 +21474,7 @@ msgstr "" #: pretix/plugins/ticketoutputpdf/views.py:172 #: pretix/presale/views/customer.py:544 pretix/presale/views/customer.py:597 msgid "Your changes have been saved." -msgstr "Los cambios se han guardado." +msgstr "Se han guardado los cambios." #: pretix/control/templates/pretixcontrol/event/plugins.html:34 #: pretix/control/templates/pretixcontrol/organizers/plugins.html:34 @@ -28697,7 +28697,8 @@ msgstr "Se ha creado la nueva lista de asistentes." #: pretix/plugins/stripe/views.py:702 #: pretix/plugins/ticketoutputpdf/views.py:132 msgid "We could not save your changes. See below for details." -msgstr "No se pudieron guardar los cambios. Consulta los detalles abajo." +msgstr "" +"No se pudieron guardar los cambios. Consulta los detalles a continuación." #: pretix/control/views/checkin.py:421 pretix/control/views/checkin.py:458 msgid "The requested list does not exist." -- 2.49.1 From 0715144a3169cce37d1e33003135e975d0f0cccc Mon Sep 17 00:00:00 2001 From: Nikolai Date: Fri, 17 Apr 2026 11:32:01 +0200 Subject: [PATCH 057/107] Translations: Update Danish Currently translated at 48.5% (3055 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/ powered by weblate --- src/pretix/locale/da/LC_MESSAGES/django.po | 255 +++++++++++++-------- 1 file changed, 159 insertions(+), 96 deletions(-) diff --git a/src/pretix/locale/da/LC_MESSAGES/django.po b/src/pretix/locale/da/LC_MESSAGES/django.po index 6e5201d5e..7362ac0d1 100644 --- a/src/pretix/locale/da/LC_MESSAGES/django.po +++ b/src/pretix/locale/da/LC_MESSAGES/django.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-04-16 18:00+0000\n" +"PO-Revision-Date: 2026-04-17 17:00+0000\n" "Last-Translator: Nikolai \n" "Language-Team: Danish \n" @@ -11294,19 +11294,22 @@ msgid "Both the attendee and the person who ordered can make changes" msgstr "" #: pretix/base/settings.py:1929 -#, fuzzy msgid "Allow customers to modify their information" -msgstr "Automatisk ved betaling" +msgstr "Giv kunderne mulighed for at ændre deres oplysninger" #: pretix/base/settings.py:1944 msgid "Allow customers to modify their information after they checked in." msgstr "" +"Giv kunderne mulighed for at ændre deres oplysninger, efter at de har " +"tjekket ind." #: pretix/base/settings.py:1945 msgid "" "By default, no more modifications are possible for an order as soon as one " "of the tickets in the order has been checked in." msgstr "" +"Som standard kan der ikke foretages yderligere ændringer i en ordre, så " +"snart en af billetterne i ordren er blevet indtjekket." #: pretix/base/settings.py:1955 msgid "Last date of modifications" @@ -11324,55 +11327,56 @@ msgstr "" "billetter for flere datoer, så vil den tidligste dato blive brugt." #: pretix/base/settings.py:1967 -#, fuzzy msgid "Customers can change the variation of the products they purchased" -msgstr "Tillad brugere at annullere ubetalte bestillinger" +msgstr "Kunderne kan ændre varianten af de produkter, de har købt" #: pretix/base/settings.py:1976 -#, fuzzy msgid "Customers can change their selected add-on products" -msgstr "Tillad brugere at annullere ubetalte bestillinger" +msgstr "Kunderne kan ændre de valgte tilvalgsprodukter" #: pretix/base/settings.py:1986 pretix/base/settings.py:1997 msgid "" "Only allow changes if the resulting price is higher or equal than the " "previous price." msgstr "" +"Tillad kun ændringer, hvis den nye pris er højere eller lig med den " +"tidligere pris." #: pretix/base/settings.py:1987 pretix/base/settings.py:1998 msgid "" "Only allow changes if the resulting price is higher than the previous price." msgstr "" +"Tillad kun ændringer, hvis den nye pris er højere end den tidligere pris." #: pretix/base/settings.py:1988 pretix/base/settings.py:1999 msgid "" "Only allow changes if the resulting price is equal to the previous price." msgstr "" +"Tillad kun ændringer, hvis den nye pris er den samme som den tidligere pris." #: pretix/base/settings.py:1989 pretix/base/settings.py:2000 msgid "" "Allow changes regardless of price, as long as no refund is required (i.e. " "the resulting price is not lower than what has already been paid)." msgstr "" +"Tillad ændringer uanset pris, så længe der ikke kræves refusion (dvs. den " +"endelige pris ikke er lavere end det beløb, der allerede er betalt)." #: pretix/base/settings.py:1991 pretix/base/settings.py:2002 msgid "Allow changes regardless of price, even if this results in a refund." -msgstr "" +msgstr "Tillad ændringer uanset pris, selvom det medfører en tilbagebetaling." #: pretix/base/settings.py:1995 -#, fuzzy msgid "Requirement for changed prices" -msgstr "Påkræv e-mailadresse pr. billet" +msgstr "Krav om prisændringer" #: pretix/base/settings.py:2013 -#, fuzzy msgid "Do not allow changes after" -msgstr "Tillad ikke afbestilling efter" +msgstr "Tillad ikke ændringer efter" #: pretix/base/settings.py:2022 -#, fuzzy msgid "Allow change even though the ticket has already been checked in" -msgstr "Betalingen for denne faktura er allerede modtaget." +msgstr "Tillad ændringer, selvom billetten allerede er indtjekket" #: pretix/base/settings.py:2023 msgid "" @@ -11382,10 +11386,15 @@ msgid "" "in individually. Use with care, and preferably only in combination with a " "limitation on price changes above." msgstr "" +"Som standard er ændringer af ordrer deaktiveret, når en billet i ordren er " +"blevet indtjekket. Hvis du markerer dette felt, ophæves dette krav. Det er " +"dog stadig ikke muligt at fjerne et tilvalgsprodukt, der allerede er blevet " +"indtjekket separat. Brug denne funktion med forsigtighed og helst kun i " +"kombination med ovenstående begrænsning for prisændringer." #: pretix/base/settings.py:2035 msgid "Allow individual attendees to change their ticket" -msgstr "" +msgstr "Giv de enkelte deltagere mulighed for at ændre deres billet" #: pretix/base/settings.py:2036 msgid "" @@ -11395,16 +11404,19 @@ msgid "" "total price of the order. Such changes can always only be made by the main " "customer." msgstr "" +"Som standard er det kun den person, der har bestilt billetterne, der kan " +"foretage ændringer. Hvis du markerer dette felt, kan de enkelte deltagere " +"også foretage ændringer. De enkelte deltagere kan dog kun foretage " +"ændringer, der ikke ændrer den samlede pris for bestillingen. Sådanne " +"ændringer kan kun foretages af hovedkunden." #: pretix/base/settings.py:2048 -#, fuzzy msgid "Customers can cancel their unpaid orders" -msgstr "Tillad brugere at annullere ubetalte bestillinger" +msgstr "Kunder kan annullere deres ubetalte ordrer" #: pretix/base/settings.py:2060 -#, fuzzy msgid "Charge a fixed cancellation fee" -msgstr "Hold et fast afbestillingsgebyr" +msgstr "Opkræv et fast afbestillingsgebyr" #: pretix/base/settings.py:2061 pretix/base/settings.py:2072 #: pretix/base/settings.py:2086 @@ -11413,6 +11425,9 @@ msgid "" "never charged. Note that it will be your responsibility to claim the " "cancellation fee from the user." msgstr "" +"Dette gælder kun for ordrer, hvor betalingen endnu ikke er gennemført; der " +"opkræves aldrig et afbestillingsgebyr for gratis ordrer. Bemærk, at det er " +"dit ansvar at opkræve afbestillingsgebyret fra brugeren." #: pretix/base/settings.py:2071 msgid "Charge payment, shipping and service fees" @@ -11558,34 +11573,39 @@ msgstr "" #: pretix/base/settings.py:2279 pretix/control/forms/event.py:1892 msgid "Imprint URL" -msgstr "" +msgstr "URL til kolofon" #: pretix/base/settings.py:2280 pretix/control/forms/event.py:1893 msgid "" "This should point e.g. to a part of your website that has your contact " "details and legal information." msgstr "" +"Dette bør f.eks. henvise til en del af din hjemmeside, hvor man kan finde " +"dine kontaktoplysninger og juridiske oplysninger." #: pretix/base/settings.py:2290 msgid "Privacy Policy URL" -msgstr "" +msgstr "URL til privatlivspolitik" #: pretix/base/settings.py:2291 msgid "" "This should point e.g. to a part of your website that explains how you use " "data gathered in your ticket shop." msgstr "" +"Dette bør f.eks. henvise til en del af din hjemmeside, hvor det forklares, " +"hvordan du bruger de data, der indsamles i din billetshop." #: pretix/base/settings.py:2302 -#, fuzzy msgid "Accessibility information URL" -msgstr "Kontoinformationer" +msgstr "URL med oplysninger om tilgængelighed" #: pretix/base/settings.py:2303 msgid "" "This should point e.g. to a part of your website that explains how your " "ticket shop complies with accessibility regulation." msgstr "" +"Dette bør f.eks. henvise til en del af din hjemmeside, hvor det forklares, " +"hvordan din billetshop overholder reglerne om tilgængelighed." #: pretix/base/settings.py:2310 #: pretix/presale/templates/pretixpresale/event/base.html:229 @@ -11593,24 +11613,20 @@ msgstr "" #: pretix/presale/templates/pretixpresale/organizers/accessibility.html:6 #: pretix/presale/templates/pretixpresale/organizers/base.html:107 #: pretix/presale/templates/pretixpresale/organizers/base.html:112 -#, fuzzy msgid "Accessibility information" -msgstr "Kontoinformationer" +msgstr "Oplysninger om tilgængelighed" #: pretix/base/settings.py:2314 -#, fuzzy msgid "Accessibility information title" -msgstr "Kontoinformationer" +msgstr "Overskrift til information om tilgængelighed" #: pretix/base/settings.py:2324 -#, fuzzy msgid "Accessibility information text" -msgstr "Kontoinformationer" +msgstr "Tekst med oplysninger om tilgængelighed" #: pretix/base/settings.py:2345 -#, fuzzy msgid "Attach ticket files" -msgstr "Opret billettyper" +msgstr "Vedhæft billetfiler" #: pretix/base/settings.py:2347 #, python-brace-format @@ -11618,34 +11634,39 @@ msgid "" "Tickets will never be attached if they're larger than {size} to avoid email " "delivery problems." msgstr "" +"Billetter vedhæftes aldrig, hvis de er større end {size}, for at undgå " +"problemer med e-mail-leveringen." #: pretix/base/settings.py:2358 pretix/plugins/sendmail/forms.py:201 #: pretix/plugins/sendmail/models.py:263 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:66 -#, fuzzy msgid "Attach calendar files" -msgstr "Opret billettyper" +msgstr "Vedhæft kalenderfiler" #: pretix/base/settings.py:2359 msgid "" "If enabled, we will attach an .ics calendar file to order confirmation " "emails." msgstr "" +"Hvis denne funktion er aktiveret, vedhæfter vi en .ics-kalenderfil til " +"ordrebekræftelses-e-mails." #: pretix/base/settings.py:2368 msgid "Attach calendar files only after order has been paid" -msgstr "" +msgstr "Vedhæft kun kalenderfiler, når ordren er betalt" #: pretix/base/settings.py:2369 msgid "" "Use this if you e.g. put a private access link into the calendar file to " "make sure people only receive it after their payment was confirmed." msgstr "" +"Brug denne funktion, hvis du f.eks. indsætter et link med privat adgang i " +"kalenderfilen for at sikre, at folk først modtager det, når deres betaling " +"er bekræftet." #: pretix/base/settings.py:2378 -#, fuzzy msgid "Event description" -msgstr "Produktbeskrivelse" +msgstr "Beskrivelse af arrangementet" #: pretix/base/settings.py:2381 msgid "" @@ -11656,6 +11677,12 @@ msgid "" "data as calendar entries are often shared with an unspecified number of " "people." msgstr "" +"Du kan bruge dette felt til at dele oplysninger med dine deltagere, f.eks. " +"rejseoplysninger eller et link til et digitalt arrangement. Hvis du lader " +"feltet stå tomt, indsætter vi et link til arrangementsbutikken, " +"adgangstidspunktet og dit arrangørnavn. Vi tillader ikke brug af " +"pladsholdere med følsomme, personlige oplysninger, da kalenderposter ofte " +"deles med et ubestemt antal personer." #: pretix/base/settings.py:2394 msgid "Subject prefix" @@ -11682,15 +11709,16 @@ msgid "Sender address for outgoing emails" msgstr "Afsenderadresse for udgående e-mails" #: pretix/base/settings.py:2419 -#, fuzzy msgid "Sender name" -msgstr "Navn på deltager" +msgstr "Afsenderens navn" #: pretix/base/settings.py:2420 msgid "" "Sender name used in conjunction with the sender address for outgoing emails. " "Defaults to your event name." msgstr "" +"Afsenderens navn, der bruges sammen med afsenderadressen i udgående e-mails. " +"Standardindstillingen er navnet på din begivenhed." #: pretix/base/settings.py:2438 pretix/base/settings.py:2495 #: pretix/base/settings.py:2512 pretix/base/settings.py:2530 @@ -11701,9 +11729,9 @@ msgstr "Din bestilling: {code}" #: pretix/base/settings.py:2442 pretix/base/settings.py:2475 #: pretix/base/settings.py:2580 pretix/base/settings.py:2813 #: pretix/base/settings.py:2850 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Your event registration: {code}" -msgstr "Din bestilling: {code}" +msgstr "Din tilmelding til arrangementet {code}" #: pretix/base/settings.py:2446 #, python-brace-format @@ -11758,7 +11786,7 @@ msgstr "" "Arrangøren af {event}" #: pretix/base/settings.py:2479 -#, fuzzy, python-brace-format +#, python-brace-format msgid "" "Hello {attendee_name},\n" "\n" @@ -11770,15 +11798,17 @@ msgid "" "Best regards, \n" "Your {event} team" msgstr "" -"Hej\n" +"Hej {attendee_name},\n" "\n" -"Din bestilling {code} til {event} er blevet annulleret.\n" +"Du er nu tilmeldt arrangementet {event}.\n" +"\n" +"Du kan se detaljer og status for din billet her:\n" "\n" -"Du kan se detaljerne for din bestilling på\n" "{url}\n" "\n" -"Venlig hilsen \n" -"Arrangøren af {event}" +"Med venlig hilsen,\n" +"\n" +"Dit {event}-team" #: pretix/base/settings.py:2499 #, python-brace-format @@ -11805,7 +11835,7 @@ msgstr "" "Arrangøren af {event}" #: pretix/base/settings.py:2516 -#, fuzzy, python-brace-format +#, python-brace-format msgid "" "Hello,\n" "\n" @@ -11819,15 +11849,20 @@ msgid "" "Best regards, \n" "Your {event} team" msgstr "" -"Hej\n" +"Hej,\n" "\n" -"Vi har modtaget din bestilling til {event}. Din bestilling indeholder kun " -"gratis produkter og kræver derfor ingen betaling.\n" +"vi har modtaget din bestilling til arrangementet {event}. Da du har bestilt\n" +"et produkt, der kræver godkendelse fra arrangøren, beder vi dig om\n" +"at være tålmodig og afvente vores næste e-mail.\n" "\n" -"Du kan ændre informationer og se status på din bestilling på {url}\n" +"Du kan ændre dine bestillingsoplysninger og se status på din bestilling " +"her:\n" "\n" -"Venlig hilsen \n" -"Arrangører af {event}" +"{url}\n" +"\n" +"Med venlig hilsen, \n" +"\n" +"Dit {event}-team" #: pretix/base/settings.py:2534 #, python-brace-format @@ -11859,9 +11894,8 @@ msgstr "" "Arrangøren af {event}" #: pretix/base/settings.py:2552 -#, fuzzy msgid "Attachment for new orders" -msgstr "Split i ny bestilling" +msgstr "Vedhæftet fil til nye ordrer" #: pretix/base/settings.py:2557 #, python-brace-format @@ -11874,9 +11908,17 @@ msgid "" "sent before payment is confirmed or the order is approved. To avoid this " "vital email going to spam, you can only upload PDF files of up to {size} MB." msgstr "" +"Denne fil vedhæftes den første e-mail, vi sender for hver ny ordre. Den vil " +"derfor blive kombineret med teksterne »Afgivet ordre«, »Gratis ordre« eller »" +"Modtaget ordre« fra ovenstående. Den sendes til både ordrekontakter og " +"deltagere. Du kan f.eks. bruge denne til at sende dine servicevilkår. Brug " +"den ikke til at sende ikke-offentlige oplysninger, da denne fil muligvis " +"sendes, før betalingen er bekræftet, eller ordren er godkendt. For at undgå, " +"at denne vigtige e-mail havner i spam, kan du kun uploade PDF-filer på op " +"til {size} MB." #: pretix/base/settings.py:2584 -#, fuzzy, python-brace-format +#, python-brace-format msgid "" "Hello {attendee_name},\n" "\n" @@ -11888,15 +11930,17 @@ msgid "" "Best regards, \n" "Your {event} team" msgstr "" -"Hej\n" +"Hej {attendee_name},\n" "\n" -"Din bestilling til {event} er blevet ændret.\n" +"Der er bestilt en billet til arrangementet {event} til dig.\n" +"\n" +"Du kan se oplysninger og status for din billet her:\n" "\n" -"Du kan se status for din bestilling på\n" "{url}\n" "\n" -"Venlig hilsen \n" -"Arrangøren af {event}" +"Med venlig hilsen, \n" +"\n" +"Dit {event}-team" #: pretix/base/settings.py:2596 #, python-brace-format @@ -11958,12 +12002,12 @@ msgstr "" "Arrangøren af {event}" #: pretix/base/settings.py:2634 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Event registration confirmed: {code}" -msgstr "Bestilling annulleret: {code}" +msgstr "Tilmelding til arrangementet bekræftet: {code}" #: pretix/base/settings.py:2638 -#, fuzzy, python-brace-format +#, python-brace-format msgid "" "Hello {attendee_name},\n" "\n" @@ -11975,15 +12019,17 @@ msgid "" "Best regards, \n" "Your {event} team" msgstr "" -"Hej\n" +"Hej {attendee_name},\n" "\n" -"Din bestilling til {event} er blevet ændret.\n" +"Den billet til arrangementet {event}, der er bestilt til dig, er nu betalt.\n" +"\n" +"Du kan se detaljer og status for din billet her:\n" "\n" -"Du kan se status for din bestilling på\n" "{url}\n" "\n" -"Venlig hilsen \n" -"Arrangøren af {event}" +"Med venlig hilsen, \n" +"\n" +"Dit {event}-team" #: pretix/base/settings.py:2655 pretix/control/forms/event.py:1294 #: pretix/control/forms/event.py:1416 pretix/plugins/sendmail/models.py:268 @@ -12035,7 +12081,7 @@ msgid "Your order is pending payment: {code}" msgstr "Din bestilling afventer betaling: {code}" #: pretix/base/settings.py:2687 -#, fuzzy, python-brace-format +#, python-brace-format msgid "" "Hello,\n" "\n" @@ -12048,24 +12094,28 @@ msgid "" "Best regards, \n" "Your {event} team" msgstr "" -"Hej\n" +"Hej,\n" "\n" -"Vi har ikke modtaget betaling af din bestilling til {event}.\n" -"Husk at vi kun kan garantere bestillingen, hvis du betaler inden " -"{expire_date}.\n" +"vi har endnu ikke modtaget den fulde betaling for din bestilling til " +"arrangementet {event}.\n" "\n" -"Du kan se betalingsoplysninger og status for din bestilling på {url}\n" +"Husk, at du skal betale inden {expire_date}.\n" "\n" -"Venlig hilsen \n" -"Arrangøren af {event}" +"Du kan se betalingsoplysningerne og status for din bestilling her:\n" +"\n" +"{url}\n" +"\n" +"Med venlig hilsen, \n" +"\n" +"Dit {event}-team" #: pretix/base/settings.py:2700 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Incomplete payment received: {code}" -msgstr "Betaling modtaget for din bestilling: {code}" +msgstr "Der er modtaget en ufuldstændig betaling: {code}" #: pretix/base/settings.py:2704 -#, fuzzy, python-brace-format +#, python-brace-format msgid "" "Hello,\n" "\n" @@ -12081,24 +12131,31 @@ msgid "" "Best regards, \n" "Your {event} team" msgstr "" -"Hej\n" +"Hej,\n" "\n" -"Vi har ikke modtaget betaling af din bestilling til {event}.\n" -"Husk at vi kun kan garantere bestillingen, hvis du betaler inden " -"{expire_date}.\n" +"vi har modtaget en betaling for din bestilling til arrangementet {event}.\n" "\n" -"Du kan se betalingsoplysninger og status for din bestilling på {url}\n" +"Desværre er det modtagne beløb mindre end det fulde beløb,\n" "\n" -"Venlig hilsen \n" -"Arrangøren af {event}" +"der kræves. Din bestilling betragtes derfor stadig som ubetalt, da der\n" +"\n" +"mangler en yderligere betaling på **{pending_sum}**.\n" +"\n" +"Du kan se betalingsoplysningerne og status for din bestilling her:\n" +"\n" +"{url}\n" +"\n" +"Med venlig hilsen, \n" +"\n" +"Dit {event} team" #: pretix/base/settings.py:2720 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Payment failed for your order: {code}" -msgstr "Betaling modtaget for din bestilling: {code}" +msgstr "Betalingen for din ordre mislykkedes: {code}" #: pretix/base/settings.py:2724 -#, fuzzy, python-brace-format +#, python-brace-format msgid "" "Hello,\n" "\n" @@ -12114,16 +12171,22 @@ msgid "" "Best regards, \n" "Your {event} team" msgstr "" -"Hej\n" +"Hej,\n" "\n" -"Vi har ikke modtaget betaling af din bestilling til {event}.\n" -"Husk at vi kun kan garantere bestillingen, hvis du betaler inden " +"dit betalingsforsøg for din bestilling til arrangementet {event} " +"mislykkedes.\n" +"\n" +"Din bestilling er stadig gyldig, og du kan prøve at betale igen med samme " +"eller en anden betalingsmetode. Du bedes gennemføre betalingen inden " "{expire_date}.\n" "\n" -"Du kan se betalingsoplysninger og status for din bestilling på {url}\n" +"Du kan prøve at betale igen og se status på din bestilling her:\n" "\n" -"Venlig hilsen \n" -"Arrangøren af {event}" +"{url}\n" +"\n" +"Med venlig hilsen, \n" +"\n" +"Dit {event}-team" #: pretix/base/settings.py:2738 #, python-brace-format -- 2.49.1 From 640518c1b33695afe50191707881dae8e438e862 Mon Sep 17 00:00:00 2001 From: Yasunobu YesNo Kawaguchi Date: Sat, 18 Apr 2026 15:39:27 +0200 Subject: [PATCH 058/107] Translations: Update Japanese Currently translated at 100.0% (6287 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ja/ powered by weblate --- src/pretix/locale/ja/LC_MESSAGES/django.po | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/pretix/locale/ja/LC_MESSAGES/django.po b/src/pretix/locale/ja/LC_MESSAGES/django.po index 5e731f7c7..57a65f768 100644 --- a/src/pretix/locale/ja/LC_MESSAGES/django.po +++ b/src/pretix/locale/ja/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-04-08 18:00+0000\n" -"Last-Translator: Hijiri Umemoto \n" +"PO-Revision-Date: 2026-04-18 22:00+0000\n" +"Last-Translator: Yasunobu YesNo Kawaguchi \n" "Language-Team: Japanese \n" "Language: ja\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.16.2\n" +"X-Generator: Weblate 5.17\n" #: pretix/_base_settings.py:87 msgid "English" @@ -12855,7 +12855,7 @@ msgstr "Dr" #: pretix/base/settings.py:3819 pretix/base/settings.py:3836 msgid "First name" -msgstr "名(First Name)" +msgstr "名" #: pretix/base/settings.py:3820 pretix/base/settings.py:3837 msgid "Middle name" @@ -23636,8 +23636,8 @@ msgid "" "this product was part of the discount calculation for a different product in " "this order." msgstr "" -"この製品の価格は自動割引により減額されたか、この製品がこの注文の別の製品の割" -"引計算の一部になっています。" +"自動割引によりこの商品の価格が引き下げられたか、同じ注文内の別の商品に対する" +"割引計算の対象になっています。" #: pretix/control/templates/pretixcontrol/order/index.html:496 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:103 @@ -25008,7 +25008,7 @@ msgstr "デバイスの概要" #: pretix/control/templates/pretixcontrol/organizers/device_edit.html:6 msgid "Device:" -msgstr "デバイス:" +msgstr "デバイス:" #: pretix/control/templates/pretixcontrol/organizers/device_edit.html:8 msgid "Connect a new device" -- 2.49.1 From b968266611e61a80d2b1ad203c44fd0d38c26fb9 Mon Sep 17 00:00:00 2001 From: Yasunobu YesNo Kawaguchi Date: Sun, 19 Apr 2026 13:48:47 +0200 Subject: [PATCH 059/107] Translations: Update Japanese Currently translated at 100.0% (6287 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ja/ powered by weblate --- src/pretix/locale/ja/LC_MESSAGES/django.po | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/pretix/locale/ja/LC_MESSAGES/django.po b/src/pretix/locale/ja/LC_MESSAGES/django.po index 57a65f768..108243697 100644 --- a/src/pretix/locale/ja/LC_MESSAGES/django.po +++ b/src/pretix/locale/ja/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-04-18 22:00+0000\n" +"PO-Revision-Date: 2026-04-19 18:00+0000\n" "Last-Translator: Yasunobu YesNo Kawaguchi \n" "Language-Team: Japanese \n" @@ -664,7 +664,7 @@ msgstr "ギフトカードを取引で使用済み" #: pretix/plugins/banktransfer/payment.py:483 #: pretix/presale/forms/customer.py:152 msgid "This field is required." -msgstr "この項目は必須です。" +msgstr "このフィールドは必須です。" #: pretix/base/addressvalidation.py:213 msgid "Enter a postal code in the format XXX." @@ -8206,7 +8206,7 @@ msgstr "参加者の呼びかけに使う名前" #: pretix/base/services/placeholders.py:732 #: pretix/control/forms/organizer.py:799 msgid "Mr Doe" -msgstr "山田様" +msgstr "山田 太郎" #: pretix/base/pdf.py:672 pretix/base/pdf.py:679 #: pretix/plugins/badges/exporters.py:501 @@ -11001,7 +11001,7 @@ msgstr "" #: pretix/base/settings.py:1869 pretix/base/settings.py:1877 #: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:8 msgid "List" -msgstr "リスト" +msgstr "一覧" #: pretix/base/settings.py:1870 pretix/base/settings.py:1878 msgid "Week calendar" @@ -19423,7 +19423,7 @@ msgstr "カスタムチェックインルール" #: pretix/control/templates/pretixcontrol/vouchers/bulk.html:117 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:85 msgid "Edit" -msgstr "編集する" +msgstr "編集" #: pretix/control/templates/pretixcontrol/checkin/list_edit.html:89 msgid "Visualize" @@ -33303,7 +33303,7 @@ msgstr "本当にStripeアカウントを切断しますか?" #: pretix/plugins/stripe/templates/pretixplugins/stripe/oauth_disconnect.html:16 msgid "Disconnect" -msgstr "切断します" +msgstr "切断" #: pretix/plugins/stripe/templates/pretixplugins/stripe/pending.html:6 msgid "Payment instructions" -- 2.49.1 From 4530d864d3434ded91edcee00fd278daa5f16561 Mon Sep 17 00:00:00 2001 From: Yasunobu YesNo Kawaguchi Date: Mon, 20 Apr 2026 08:48:52 +0200 Subject: [PATCH 060/107] Translations: Update Japanese Currently translated at 100.0% (6287 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ja/ powered by weblate --- src/pretix/locale/ja/LC_MESSAGES/django.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pretix/locale/ja/LC_MESSAGES/django.po b/src/pretix/locale/ja/LC_MESSAGES/django.po index 108243697..a2af0c8c1 100644 --- a/src/pretix/locale/ja/LC_MESSAGES/django.po +++ b/src/pretix/locale/ja/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-04-19 18:00+0000\n" +"PO-Revision-Date: 2026-04-20 08:07+0000\n" "Last-Translator: Yasunobu YesNo Kawaguchi \n" "Language-Team: Japanese \n" @@ -3800,7 +3800,7 @@ msgstr "単価:{net_price} 税抜 / {gross_price} 税込" #, python-brace-format msgctxt "invoice" msgid "Single price: {price}" -msgstr "単価:{price}" +msgstr "単価: {price}" #: pretix/base/invoicing/pdf.py:947 pretix/base/invoicing/pdf.py:952 msgctxt "invoice" @@ -20280,7 +20280,7 @@ msgstr "地理座標" #: pretix/control/templates/pretixcontrol/subevents/bulk.html:271 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:275 msgid "Optional" -msgstr "オプション(必須でない項目)" +msgstr "任意" #: pretix/control/templates/pretixcontrol/event/fragment_geodata.html:22 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:58 @@ -25897,7 +25897,7 @@ msgstr "二要素認証が無効です" #: pretix/control/templates/pretixcontrol/organizers/team_members.html:57 msgid "invited, pending response" -msgstr "招待済み、返答待ち" +msgstr "招待済み、応答待ち" #: pretix/control/templates/pretixcontrol/organizers/team_members.html:59 msgid "resend invite" -- 2.49.1 From d9000c2a66a1ee8c2afa644b784d80d1c0d3ec8a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Apr 2026 15:09:04 +0200 Subject: [PATCH 061/107] Update tlds requirement from >=2020041600 to >=2026021400 (#6088) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index f6989f495..b00c1e7da 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -97,7 +97,7 @@ dependencies = [ "sepaxml==2.7.*", "stripe==7.9.*", "text-unidecode==1.*", - "tlds>=2020041600", + "tlds>=2026021400", "tqdm==4.*", "ua-parser==1.0.*", "vobject==0.9.*", -- 2.49.1 From ee1a8420a529aac639ecbaeb2c7c86ad68f4810f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Apr 2026 15:09:33 +0200 Subject: [PATCH 062/107] Update sentry-sdk requirement from ==2.57.* to ==2.58.* (#6095) Updates the requirements on [sentry-sdk](https://github.com/getsentry/sentry-python) to permit the latest version. - [Release notes](https://github.com/getsentry/sentry-python/releases) - [Changelog](https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-python/compare/2.57.0...2.58.0) --- updated-dependencies: - dependency-name: sentry-sdk dependency-version: 2.58.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index b00c1e7da..601cabc8e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -93,7 +93,7 @@ dependencies = [ "redis==7.4.*", "reportlab==4.4.*", "requests==2.32.*", - "sentry-sdk==2.57.*", + "sentry-sdk==2.58.*", "sepaxml==2.7.*", "stripe==7.9.*", "text-unidecode==1.*", -- 2.49.1 From c04be5c0d9f267d310ff64ac147e16623759f2b7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Apr 2026 15:09:49 +0200 Subject: [PATCH 063/107] Update cryptography requirement from >=44.0.0 to >=46.0.7 (#6084) Updates the requirements on [cryptography](https://github.com/pyca/cryptography) to permit the latest version. - [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pyca/cryptography/compare/44.0.0...46.0.7) --- updated-dependencies: - dependency-name: cryptography dependency-version: 46.0.7 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 601cabc8e..549881636 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,7 @@ dependencies = [ "bleach==6.3.*", "celery==5.6.*", "chardet==5.2.*", - "cryptography>=44.0.0", + "cryptography>=46.0.7", "css-inline==0.20.*", "defusedcsv>=1.1.0", "dnspython==2.*", -- 2.49.1 From d0d76ffddcc5dacf8600bf7144787668870aac32 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 20 Apr 2026 16:56:50 +0200 Subject: [PATCH 064/107] Delete unused code (#6026) * Delete unused code * Delete template --- src/pretix/presale/forms/checkout.py | 43 ------------------- .../forms/addon_choice_option.html | 3 -- 2 files changed, 46 deletions(-) delete mode 100644 src/pretix/presale/templates/pretixpresale/forms/addon_choice_option.html diff --git a/src/pretix/presale/forms/checkout.py b/src/pretix/presale/forms/checkout.py index ea6e8ff48..20740fadc 100644 --- a/src/pretix/presale/forms/checkout.py +++ b/src/pretix/presale/forms/checkout.py @@ -32,11 +32,8 @@ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations under the License. -from itertools import chain - from django import forms from django.core.exceptions import ValidationError -from django.utils.encoding import force_str from django.utils.formats import date_format from django.utils.html import escape from django.utils.safestring import mark_safe @@ -168,46 +165,6 @@ class QuestionsForm(BaseQuestionsForm): ) -class AddOnRadioSelect(forms.RadioSelect): - option_template_name = 'pretixpresale/forms/addon_choice_option.html' - - def optgroups(self, name, value, attrs=None): - attrs = attrs or {} - groups = [] - has_selected = False - for index, (option_value, option_label, option_desc) in enumerate(chain(self.choices)): - if option_value is None: - option_value = '' - if isinstance(option_label, (list, tuple)): - raise TypeError('Choice groups are not supported here') - group_name = None - subgroup = [] - groups.append((group_name, subgroup, index)) - - selected = ( - force_str(option_value) in value and - (has_selected is False or self.allow_multiple_selected) - ) - if selected is True and has_selected is False: - has_selected = True - attrs['description'] = option_desc - subgroup.append(self.create_option( - name, option_value, option_label, selected, index, - subindex=None, attrs=attrs, - )) - - return groups - - -class AddOnVariationField(forms.ChoiceField): - def valid_value(self, value): - text_value = force_str(value) - for k, v, d in self.choices: - if value == k or text_value == force_str(k): - return True - return False - - class MembershipForm(forms.Form): required_css_class = 'required' diff --git a/src/pretix/presale/templates/pretixpresale/forms/addon_choice_option.html b/src/pretix/presale/templates/pretixpresale/forms/addon_choice_option.html deleted file mode 100644 index 9c50c79f0..000000000 --- a/src/pretix/presale/templates/pretixpresale/forms/addon_choice_option.html +++ /dev/null @@ -1,3 +0,0 @@ -{% load rich_text %} -{% include "django/forms/widgets/input.html" %} {{ widget.label }} {% if widget.attrs.description %} -
{{ widget.attrs.description|rich_text }}
{% endif %} -- 2.49.1 From b7d3e8a80a3ab2dbda6664094be02387a811a822 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Mon, 20 Apr 2026 17:55:44 +0200 Subject: [PATCH 065/107] Add invoice numbers to paymentlist export (Z#23227966) (#6097) --- src/pretix/base/exporters/orderlist.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/pretix/base/exporters/orderlist.py b/src/pretix/base/exporters/orderlist.py index e05935898..258f0c472 100644 --- a/src/pretix/base/exporters/orderlist.py +++ b/src/pretix/base/exporters/orderlist.py @@ -1103,13 +1103,25 @@ class PaymentListExporter(ListExporter): def iterate_list(self, form_data): provider_names = dict(get_all_payment_providers()) + i_numbers = Invoice.objects.filter( + order=OuterRef('order_id'), + ).values('order').annotate( + m=GroupConcat('full_invoice_no', delimiter=', ') + ).values( + 'm' + ).order_by() + payments = OrderPayment.objects.filter( order__event__in=self.events, state__in=form_data.get('payment_states', []) + ).annotate( + order_invoice_numbers=Subquery(i_numbers, output_field=CharField()), ).select_related('order').prefetch_related('order__event').order_by('created') refunds = OrderRefund.objects.filter( order__event__in=self.events, state__in=form_data.get('refund_states', []) + ).annotate( + order_invoice_numbers=Subquery(i_numbers, output_field=CharField()), ).select_related('order').prefetch_related('order__event').order_by('created') if form_data.get('end_date_range'): @@ -1135,6 +1147,7 @@ class PaymentListExporter(ListExporter): headers = [ _('Event slug'), _('Order'), _('Payment ID'), _('Creation date'), _('Completion date'), _('Status'), _('Status code'), _('Amount'), _('Payment method'), _('Comment'), _('Matching ID'), _('Payment details'), + _('Invoice numbers'), ] yield headers @@ -1172,6 +1185,7 @@ class PaymentListExporter(ListExporter): obj.comment if isinstance(obj, OrderRefund) else "", matching_id, payment_details, + obj.order_invoice_numbers, ] yield row -- 2.49.1 From 4fe405886e3473479d6615564ecda4fb4bb0cd11 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Apr 2026 22:44:03 +0200 Subject: [PATCH 066/107] Update tlds requirement from >=2026021400 to >=2026041800 (#6104) Updates the requirements on [tlds](https://github.com/kichik/tlds) to permit the latest version. - [Commits](https://github.com/kichik/tlds/commits) --- updated-dependencies: - dependency-name: tlds dependency-version: '2026041800' dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 549881636..1f7344a09 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -97,7 +97,7 @@ dependencies = [ "sepaxml==2.7.*", "stripe==7.9.*", "text-unidecode==1.*", - "tlds>=2026021400", + "tlds>=2026041800", "tqdm==4.*", "ua-parser==1.0.*", "vobject==0.9.*", -- 2.49.1 From 6d255bb9cc1ee335e8a411c54f5176c667b42434 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Apr 2026 23:50:50 +0200 Subject: [PATCH 067/107] Update defusedcsv requirement from >=1.1.0 to >=3.0.0 (#6105) Updates the requirements on [defusedcsv](https://github.com/raphaelm/defusedcsv) to permit the latest version. - [Commits](https://github.com/raphaelm/defusedcsv/compare/v1.1.0...v3.0.0) --- updated-dependencies: - dependency-name: defusedcsv dependency-version: 3.0.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 1f7344a09..85c682b51 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -35,7 +35,7 @@ dependencies = [ "chardet==5.2.*", "cryptography>=46.0.7", "css-inline==0.20.*", - "defusedcsv>=1.1.0", + "defusedcsv>=3.0.0", "dnspython==2.*", "Django[argon2]==5.2.*", "django-bootstrap3==26.1", -- 2.49.1 From 447cffa7a80e6a97a21ed60d6dcc8ae9a1ca268e Mon Sep 17 00:00:00 2001 From: Martin Gross Date: Wed, 8 Apr 2026 11:48:42 +0200 Subject: [PATCH 068/107] Customer Accounts: Limit length; reject URLs in name --- src/pretix/presale/forms/customer.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/pretix/presale/forms/customer.py b/src/pretix/presale/forms/customer.py index 9fbbe3857..d865b2550 100644 --- a/src/pretix/presale/forms/customer.py +++ b/src/pretix/presale/forms/customer.py @@ -43,6 +43,7 @@ from pretix.base.forms.questions import ( ) from pretix.base.i18n import get_language_without_region from pretix.base.models import Customer +from pretix.base.templatetags.rich_text import URL_RE from pretix.helpers.http import get_client_ip from pretix.multidomain.urlreverse import build_absolute_uri @@ -150,6 +151,7 @@ class RegistrationForm(forms.Form): "instead." ), 'required': _('This field is required.'), + 'invalid_characters': _('Please do not use special characters in names.'), } def __init__(self, request=None, *args, **kwargs): @@ -172,7 +174,7 @@ class RegistrationForm(forms.Form): ) self.fields['name_parts'] = NamePartsFormField( - max_length=255, + max_length=35, required=True, scheme=request.organizer.settings.name_scheme, titles=request.organizer.settings.name_scheme_titles, @@ -236,6 +238,15 @@ class RegistrationForm(forms.Form): code='duplicate', ) + # Since the name is user-controlled and can end up in emails sent to customers + # we want to sanitize for domains and avoid becoming part of a spamming operation. + for name_part in self.cleaned_data.get('name_parts', {}).values(): + if URL_RE.search(name_part): + raise forms.ValidationError( + {'name_parts': self.error_messages['invalid_characters']}, + code='invalid_characters', + ) + if self.standalone: expect = -1 try: -- 2.49.1 From 1b88a84a8375abfad9a3a1fd68d9453737e89e33 Mon Sep 17 00:00:00 2001 From: Martin Gross Date: Wed, 8 Apr 2026 12:34:26 +0200 Subject: [PATCH 069/107] Move validation into form field. --- src/pretix/base/forms/questions.py | 7 ++++++- src/pretix/presale/forms/customer.py | 11 ----------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/src/pretix/base/forms/questions.py b/src/pretix/base/forms/questions.py index 0dec88e90..7e80db026 100644 --- a/src/pretix/base/forms/questions.py +++ b/src/pretix/base/forms/questions.py @@ -90,7 +90,7 @@ from pretix.base.settings import ( COUNTRIES_WITH_STATE_IN_ADDRESS, COUNTRY_STATE_LABEL, PERSON_NAME_SALUTATIONS, PERSON_NAME_SCHEMES, PERSON_NAME_TITLE_GROUPS, ) -from pretix.base.templatetags.rich_text import rich_text +from pretix.base.templatetags.rich_text import rich_text, URL_RE from pretix.base.timemachine import time_machine_now from pretix.control.forms import ( ExtFileField, ExtValidationMixin, SizeValidationMixin, SplitDateTimeField, @@ -227,6 +227,11 @@ class NamePartsFormField(forms.MultiValueField): # bots. r'^[^$€/%§{}<>~]*$', message=_('Please do not use special characters in names.') + ), + RegexValidator( + URL_RE, + inverse_match=True, + message=_('Please do not use special characters in names.') ) ] } diff --git a/src/pretix/presale/forms/customer.py b/src/pretix/presale/forms/customer.py index d865b2550..ac35edf72 100644 --- a/src/pretix/presale/forms/customer.py +++ b/src/pretix/presale/forms/customer.py @@ -43,7 +43,6 @@ from pretix.base.forms.questions import ( ) from pretix.base.i18n import get_language_without_region from pretix.base.models import Customer -from pretix.base.templatetags.rich_text import URL_RE from pretix.helpers.http import get_client_ip from pretix.multidomain.urlreverse import build_absolute_uri @@ -151,7 +150,6 @@ class RegistrationForm(forms.Form): "instead." ), 'required': _('This field is required.'), - 'invalid_characters': _('Please do not use special characters in names.'), } def __init__(self, request=None, *args, **kwargs): @@ -238,15 +236,6 @@ class RegistrationForm(forms.Form): code='duplicate', ) - # Since the name is user-controlled and can end up in emails sent to customers - # we want to sanitize for domains and avoid becoming part of a spamming operation. - for name_part in self.cleaned_data.get('name_parts', {}).values(): - if URL_RE.search(name_part): - raise forms.ValidationError( - {'name_parts': self.error_messages['invalid_characters']}, - code='invalid_characters', - ) - if self.standalone: expect = -1 try: -- 2.49.1 From 5faa85ed400e02f5d7949823dc2f3f4b4b7ccc03 Mon Sep 17 00:00:00 2001 From: Martin Gross Date: Wed, 8 Apr 2026 13:13:58 +0200 Subject: [PATCH 070/107] isort --- src/pretix/base/forms/questions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pretix/base/forms/questions.py b/src/pretix/base/forms/questions.py index 7e80db026..9647dbbfc 100644 --- a/src/pretix/base/forms/questions.py +++ b/src/pretix/base/forms/questions.py @@ -90,7 +90,7 @@ from pretix.base.settings import ( COUNTRIES_WITH_STATE_IN_ADDRESS, COUNTRY_STATE_LABEL, PERSON_NAME_SALUTATIONS, PERSON_NAME_SCHEMES, PERSON_NAME_TITLE_GROUPS, ) -from pretix.base.templatetags.rich_text import rich_text, URL_RE +from pretix.base.templatetags.rich_text import URL_RE, rich_text from pretix.base.timemachine import time_machine_now from pretix.control.forms import ( ExtFileField, ExtValidationMixin, SizeValidationMixin, SplitDateTimeField, -- 2.49.1 From 7e457f74308b705720e5b5e19cd3d0c1dd0aba74 Mon Sep 17 00:00:00 2001 From: Martin Gross Date: Thu, 9 Apr 2026 14:55:43 +0200 Subject: [PATCH 071/107] Set max_length to 70 but for all name fields together and not only every single one. --- src/pretix/base/forms/questions.py | 3 ++- src/pretix/presale/forms/customer.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/pretix/base/forms/questions.py b/src/pretix/base/forms/questions.py index 9647dbbfc..488e684b7 100644 --- a/src/pretix/base/forms/questions.py +++ b/src/pretix/base/forms/questions.py @@ -235,6 +235,7 @@ class NamePartsFormField(forms.MultiValueField): ) ] } + self.max_length = defaults['max_length'] self.scheme_name = kwargs.pop('scheme') self.titles = kwargs.pop('titles') self.scheme = PERSON_NAME_SCHEMES.get(self.scheme_name) @@ -292,7 +293,7 @@ class NamePartsFormField(forms.MultiValueField): if self.require_all_fields and not all(v for v in value): raise forms.ValidationError(self.error_messages['incomplete'], code='required') - if sum(len(v) for v in value.values() if v) > 250: + if sum(len(v) for v in value.values() if v) > (self.max_length or 250): raise forms.ValidationError(_('Please enter a shorter name.'), code='max_length') if value.get("salutation") == "empty": diff --git a/src/pretix/presale/forms/customer.py b/src/pretix/presale/forms/customer.py index ac35edf72..79d24cb80 100644 --- a/src/pretix/presale/forms/customer.py +++ b/src/pretix/presale/forms/customer.py @@ -172,7 +172,7 @@ class RegistrationForm(forms.Form): ) self.fields['name_parts'] = NamePartsFormField( - max_length=35, + max_length=70, required=True, scheme=request.organizer.settings.name_scheme, titles=request.organizer.settings.name_scheme_titles, -- 2.49.1 From 35e1df28d9d25282c02acb56e83cdfe590d912a9 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 21 Apr 2026 11:32:56 +0200 Subject: [PATCH 072/107] Overhaul contribution guide & add a AI policy (#6038) * Overhaul contribution guide & add a AI policy * Fix broken links --- CONTRIBUTING.md | 15 ++++++--- doc/development/contribution/ai.rst | 24 ++++++++++++++ doc/development/contribution/general.rst | 41 +++++++++++++++++------- doc/development/contribution/index.rst | 1 + doc/development/contribution/style.rst | 4 +-- 5 files changed, 67 insertions(+), 18 deletions(-) create mode 100644 doc/development/contribution/ai.rst diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ada91ce8a..729172afa 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,11 +1,16 @@ Contributing to pretix ====================== -Hey there and welcome to pretix! +Welcome to pretix, we are happy that you would like to contribute. +Before you do so, please make sure to read the following documents: -* We've got a contributors guide in [our documentation](https://docs.pretix.eu/dev/development/contribution/) together with notes on the [development setup](https://docs.pretix.eu/dev/development/setup.html). +- [Contribution workflow](https://docs.pretix.eu/dev/development/contribution/general.html) +- [AI-assisted contribution policy](https://docs.pretix.eu/dev/development/contribution/ai.html) +- [Coding style and quality](https://docs.pretix.eu/dev/development/contribution/style.html) +- [Development setup](https://docs.pretix.eu/dev/development/setup.html) +- [Code of Conduct](https://docs.pretix.eu/dev/development/contribution/codeofconduct.html) -* Please note that we have a [Code of Conduct](https://docs.pretix.eu/dev/development/contribution/codeofconduct.html) in place that applies to all project contributions, including issues, pull requests, etc. - -* Before we can accept a PR from you we'll need you to sign [our CLA](https://pretix.eu/about/en/cla). You can find more information about the how and why in our [License FAQ](https://docs.pretix.eu/trust/licensing/faq/) and in our [license change blog post](https://pretix.eu/about/en/blog/20210412-license/). +Before we can accept your first PR we'll need you to sign [our **Contributor License Agreement** (CLA)](https://pretix.eu/about/en/cla). +You can find more information about the how and why in our [License FAQ](https://docs.pretix.eu/trust/licensing/faq/) and in our [license change blog post](https://pretix.eu/about/en/blog/20210412-license/). +**Before contributing new functionality, always open a discussion first.** \ No newline at end of file diff --git a/doc/development/contribution/ai.rst b/doc/development/contribution/ai.rst new file mode 100644 index 000000000..eb9f22d22 --- /dev/null +++ b/doc/development/contribution/ai.rst @@ -0,0 +1,24 @@ +.. _`aipolicy`: + +AI-assisted contribution policy +=============================== + +pretix is maintained by humans. +Every discussion, issue, and pull request is read and reviewed by humans (and sometimes machines, too). +We ask you to respect the time and effort put in by these humans by not sending low-effort, unqualified work, since it puts the burden of validation on the maintainer. + +Therefore, the pretix project has strict rules for AI usage: + +- **All AI usage in any form must be disclosed.** You must state the tool you used (e.g. Claude Code, Cursor, Amp) along with the extent that the work was AI-assisted. + +- **The human-in-the-loop must fully understand all code.** If you can't explain what your changes do and how they interact with the greater system without the aid of AI tools, do not contribute to this project. + +- **Issues and discussions can use AI assistance but must have a full human-in-the-loop.** This means that any content generated with AI must have been reviewed and edited by a human before submission. AI is very good at being overly verbose and including noise that distracts from the main point. Humans must do their research and trim this down. + +- **No AI-generated media is allowed (art, images, videos, audio, etc.).** Text and code are the only acceptable AI-generated content, per the other rules in this policy. + +- **Bad AI drivers will be excluded from the project.** People who produce bad contributions that are clearly AI (slop) will be blocked from our organization without warning. + +This policy was inspired by the `ghostty project`_. + +.. _ghostty project: https://github.com/ghostty-org/ghostty/blob/main/AI_POLICY.md \ No newline at end of file diff --git a/doc/development/contribution/general.rst b/doc/development/contribution/general.rst index 50024e239..c6c535d3b 100644 --- a/doc/development/contribution/general.rst +++ b/doc/development/contribution/general.rst @@ -1,23 +1,39 @@ -General remarks -=============== +Contribution workflow +===================== You are interested in contributing to pretix? That is awesome! If you’re new to contributing to open source software, don’t be afraid. We’ll happily review your code and give you -constructive and friendly feedback on your changes. +constructive and friendly feedback on your changes. Every contribution should go through the following steps. -First of all, you'll need pretix running locally on your machine. Head over to :ref:`devsetup` to learn how to do this. +Discussion & Design +------------------- + +pretix is a large and mature project with more of a decade of history and hopefully many more decades to come. +Keeping pretix in good shape over long timeframes is first and foremost a fight against complexity. +With every additional feature, complexity grows, and both features and complexity are hard to remove. + +Even if you are doing the initial work of the contribution, accepting the contribution is not free for us. +Not only will we need to maintain the feature, but every feature adds cost to the maintenance of every other feature it interacts with, and every feature adds effort for users to understand how pretix works. +Therefore, we must carefully select what features we add, based on how well they fit the system in general and of how much use they will be to our larger user base. + +We strongly ask you to **create a discussion on GitHub for every new feature idea** outlining the use case and the proposed implementation design. +Pull requests without prior discussion will likely just be closed. + +For bug fixes and very minor changes, you can skip this step and open a PR right away. + +Development +----------- + +To develop your contribution, you'll need pretix running locally on your machine. Head over to :ref:`devsetup` to learn how to do this. If you run into any problems on your way, please do not hesitate to ask us anytime! -Please note that we bound ourselves to a :ref:`coc` that applies to all communication around the project. You can be -assured that we will not tolerate any form of harassment. +While developing, please have a look at our :ref:`aipolicy` and our guidelines on :ref:`codestyle`. Sending a patch --------------- -If you improved pretix in any way, we'd be very happy if you contribute it -back to the main code base! The easiest way to do so is to `create a pull request`_ -on our `GitHub repository`_. +Once you have a first draft of your changes, please `create a pull request`_ on our `GitHub repository`_. We recommend that you create a feature branch for every issue you work on so the changes can be reviewed individually. @@ -25,14 +41,17 @@ Please use the test suite to check whether your changes break any existing featu the code style checks to confirm you are consistent with pretix's coding style. You'll find instructions on this in the :ref:`checksandtests` section of the development setup guide. -We automatically run the tests and the code style check on every pull request on Travis CI and we won’t +We automatically run the tests and the code style check on every pull request through GitHub Actions and we won’t accept any pull requests without all tests passing. However, if you don't find out *why* they are not passing, just send the pull request and tell us – we'll be glad to help. If you add a new feature, please include appropriate documentation into your patch. If you fix a bug, please include a regression test, i.e. a test that fails without your changes and passes after applying your changes. -Again: If you get stuck, do not hesitate to contact any of us, or Raphael personally at mail@raphaelmichel.de. +Again: If you get stuck, do not hesitate to contact us through GitHub discussions. + +Please note that we bound ourselves to a :ref:`coc` that applies to all communication around the project. You can be +assured that we will not tolerate any form of harassment. .. _create a pull request: https://help.github.com/articles/creating-a-pull-request/ .. _GitHub repository: https://github.com/pretix/pretix diff --git a/doc/development/contribution/index.rst b/doc/development/contribution/index.rst index 7f698eac6..f8a1d65f3 100644 --- a/doc/development/contribution/index.rst +++ b/doc/development/contribution/index.rst @@ -6,4 +6,5 @@ Contributing to pretix general style + ai codeofconduct diff --git a/doc/development/contribution/style.rst b/doc/development/contribution/style.rst index e91bb48d0..0f69a2697 100644 --- a/doc/development/contribution/style.rst +++ b/doc/development/contribution/style.rst @@ -1,5 +1,7 @@ .. spelling:word-list:: Rebase rebasing +.. _`codestyle`: + Coding style and quality ======================== @@ -28,8 +30,6 @@ Code Commits and Pull Requests ------------------------- - - Most commits should start as pull requests, therefore this applies to the titles of pull requests as well since the pull request title will become the commit message on merge. We prefer merging with GitHub's "Squash and merge" feature if the PR contains multiple commits that do not carry value to keep. If there is value in keeping the -- 2.49.1 From ba75de7e7d2c9e5d93d2a2bb639adc1c4ed08409 Mon Sep 17 00:00:00 2001 From: Kara Engelhardt Date: Mon, 13 Apr 2026 11:43:04 +0200 Subject: [PATCH 073/107] Handle existing cart with empty session in presale views (PRETIXEU-D9Y) --- src/pretix/presale/views/__init__.py | 16 +++++++++++----- src/tests/presale/test_checkout.py | 14 +++++++++++++- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/pretix/presale/views/__init__.py b/src/pretix/presale/views/__init__.py index 3bb9426e3..46822dd46 100644 --- a/src/pretix/presale/views/__init__.py +++ b/src/pretix/presale/views/__init__.py @@ -114,8 +114,10 @@ class CartMixin: return cached_invoice_address(self.request) def get_cart(self, answers=False, queryset=None, order=None, downloads=False, payments=None): - if not self.request.session.session_key and not order: - # The user has not even a session ID yet, so they can't have a cart and we can save a lot of work + from pretix.presale.views.cart import get_or_create_cart_id + + if not get_or_create_cart_id(self.request, create=False) and not order: + # The user has no cart, so we can save a lot of work return { 'positions': [], # Other keys are not used on non-checkout pages @@ -377,9 +379,13 @@ def cart_exists(request): from pretix.presale.views.cart import get_or_create_cart_id if not hasattr(request, '_cart_cache'): - return CartPosition.objects.filter( - cart_id=get_or_create_cart_id(request), event=request.event - ).exists() + cid = get_or_create_cart_id(request, create=False) + if cid: + return CartPosition.objects.filter( + cart_id=cid, event=request.event + ).exists() + else: + return False return bool(request._cart_cache) diff --git a/src/tests/presale/test_checkout.py b/src/tests/presale/test_checkout.py index ebeef3c5f..5de5bcc58 100644 --- a/src/tests/presale/test_checkout.py +++ b/src/tests/presale/test_checkout.py @@ -33,7 +33,7 @@ from django.conf import settings from django.core import mail as djmail from django.core.files.uploadedfile import SimpleUploadedFile from django.core.signing import dumps -from django.test import TestCase, TransactionTestCase +from django.test import Client, TestCase, TransactionTestCase from django.utils.crypto import get_random_string from django.utils.timezone import now from django_countries.fields import Country @@ -4413,6 +4413,18 @@ class CheckoutTestCase(BaseCheckoutTestCase, TimemachineTestMixin, TestCase): assert len(djmail.outbox) == 1 assert any(["Invoice_" in a[0] for a in djmail.outbox[0].attachments]) + def test_checkout_empty_session_valid_cart(self): + client = Client() + with scopes_disabled(): + api_cid = "{}@api".format(get_random_string(48)) + CartPosition.objects.create( + event=self.event, cart_id=api_cid, item=self.ticket, + price=23, expires=now() + timedelta(minutes=10) + ) + + response = client.get('/%s/%s/w/1234567890abcdef/checkout/questions/' % (self.orga.slug, self.event.slug), query_params={"take_cart_id": api_cid}) + assert '€23.00' in response.content.decode() + class CheckoutTransactionTestCase(BaseCheckoutTestCase, TransactionTestCase): def test_order_confirmation_mail_invoice_sent_somewhere_else(self): -- 2.49.1 From b000dff1348fca836196914586a9a2f9d9201cb7 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 21 Apr 2026 15:14:10 +0200 Subject: [PATCH 074/107] Invoices: Allow to use currency rates from National Bank of Poland (#6100) --- src/pretix/base/services/currencies.py | 28 ++++++++++++++++++++++++++ src/pretix/base/services/invoices.py | 13 ++++++++++++ src/pretix/base/settings.py | 2 ++ src/tests/base/test_invoices.py | 19 +++++++++++++++++ 4 files changed, 62 insertions(+) diff --git a/src/pretix/base/services/currencies.py b/src/pretix/base/services/currencies.py index 620f88b12..c8de3c489 100644 --- a/src/pretix/base/services/currencies.py +++ b/src/pretix/base/services/currencies.py @@ -38,6 +38,7 @@ SOURCE_NAMES = { None: _('European Central Bank'), # backwards-compatibility 'eu:ecb:eurofxref-daily': _('European Central Bank'), 'cz:cnb:rate-fixing-daily': _('Czech National Bank'), + 'pl:nbp:table-a': _('National Bank of Poland'), } @@ -49,6 +50,7 @@ def fetch_rates(sender, **kwargs): source_tasks = { 'eu:ecb:eurofxref-daily': fetch_ecb_rates, 'cz:cnb:rate-fixing-daily': fetch_cnb_cz_rates, + 'pl:nbp:table-a': fetch_nbp_pl_rates, } for source_name, task in source_tasks.items(): @@ -144,3 +146,29 @@ def fetch_cnb_cz_rates(): rate=rate, ) ) + + +@app.task() +def fetch_nbp_pl_rates(): + """ + Fetches currency rates from the Polish National Bank. + """ + r = requests.get("https://api.nbp.pl/api/exchangerates/tables/A/", headers={ + "Accept": "application/json", + }) + r.raise_for_status() + data = r.json()[0] + + source_date = datetime.strptime(data["effectiveDate"], "%Y-%m-%d").date() + + for r in data["rates"]: + rate = Decimal(r["mid"]).quantize(Decimal('0.000001')) + ExchangeRate.objects.update_or_create( + source='pl:nbp:table-a', + source_currency=r["code"], + other_currency='PLN', + defaults=dict( + source_date=source_date, + rate=rate, + ) + ) diff --git a/src/pretix/base/services/invoices.py b/src/pretix/base/services/invoices.py index 5e4e9666b..75653e908 100644 --- a/src/pretix/base/services/invoices.py +++ b/src/pretix/base/services/invoices.py @@ -205,6 +205,19 @@ def build_invoice(invoice: Invoice) -> Invoice: invoice.foreign_currency_rate = rate.rate.quantize(Decimal('0.0001'), ROUND_HALF_UP) invoice.foreign_currency_rate_date = rate.source_date invoice.foreign_currency_source = 'cz:cnb:rate-fixing-daily' + elif invoice.event.settings.invoice_eu_currencies == 'PLN' and invoice.event.currency != 'PLN': + invoice.foreign_currency_display = 'PLN' + if settings.FETCH_ECB_RATES: + rate = ExchangeRate.objects.filter( + source='pl:nbp:table-a', + source_currency=invoice.event.currency, + other_currency=invoice.foreign_currency_display, + source_date__gt=now().date() - timedelta(days=7) + ).first() + if rate: + invoice.foreign_currency_rate = rate.rate.quantize(Decimal('0.0001'), ROUND_HALF_UP) + invoice.foreign_currency_rate_date = rate.source_date + invoice.foreign_currency_source = 'pl:nbp:table-a' except InvoiceAddress.DoesNotExist: ia = None diff --git a/src/pretix/base/settings.py b/src/pretix/base/settings.py index 940f62192..5e2be5713 100644 --- a/src/pretix/base/settings.py +++ b/src/pretix/base/settings.py @@ -574,6 +574,7 @@ DEFAULTS = { ('True', _('Based on European Central Bank daily rates, whenever the invoice recipient is in an EU ' 'country that uses a different currency.')), ('CZK', _('Based on Czech National Bank daily rates, whenever the invoice amount is not in CZK.')), + ('PLN', _('Based on National Bank of Poland daily rates, whenever the invoice amount is not in PLN.')), ), ), 'serializer_kwargs': dict( @@ -582,6 +583,7 @@ DEFAULTS = { ('True', _('Based on European Central Bank daily rates, whenever the invoice recipient is in an EU ' 'country that uses a different currency.')), ('CZK', _('Based on Czech National Bank daily rates, whenever the invoice amount is not in CZK.')), + ('PLN', _('Based on National Bank of Poland daily rates, whenever the invoice amount is not in PLN.')), ), ), }, diff --git a/src/tests/base/test_invoices.py b/src/tests/base/test_invoices.py index 6d8ee71f6..790633df8 100644 --- a/src/tests/base/test_invoices.py +++ b/src/tests/base/test_invoices.py @@ -123,6 +123,8 @@ def env(): ExchangeRate.objects.create(source_date=date.today(), source='eu:ecb:eurofxref-daily', source_currency='EUR', other_currency=currency, rate=rate) ExchangeRate.objects.create(source_date=date.today(), source='cz:cnb:rate-fixing-daily', source_currency='EUR', other_currency='CZK', rate=Decimal('25.0000')) + ExchangeRate.objects.create(source_date=date.today(), source='pl:nbp:table-a', source_currency='EUR', + other_currency='PLN', rate=Decimal('4.2355')) yield event, o @@ -347,6 +349,23 @@ def test_invoice_indirect_currency_conversion(env): assert inv.foreign_currency_source == 'eu:ecb:eurofxref-daily' +@pytest.mark.django_db +def test_invoice_pln_currency_conversion(env): + event, order = env + event.settings.invoice_eu_currencies = 'PLN' + + event.settings.set('invoice_language', 'en') + InvoiceAddress.objects.create(company='Acme Company', street='221B Baker Street', zipcode='12345', city='Warsaw', + country=Country('PL'), vat_id='PL123456780', vat_id_validated=True, order=order, + is_business=True) + + inv = generate_invoice(order) + assert inv.foreign_currency_display == "PLN" + assert inv.foreign_currency_rate == Decimal("4.2355") + assert inv.foreign_currency_rate_date == date.today() + assert inv.foreign_currency_source == 'pl:nbp:table-a' + + @pytest.mark.django_db def test_invoice_czk_currency_conversion(env): event, order = env -- 2.49.1 From a6a9eb6a6a8d24e9cb5f86f018646b65dd037325 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 27 Apr 2026 12:23:17 +0200 Subject: [PATCH 075/107] Subevent selection: Order by date before name (Z#23231460) (#6111) --- src/pretix/control/views/typeahead.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pretix/control/views/typeahead.py b/src/pretix/control/views/typeahead.py index 73213472b..4c2f896da 100644 --- a/src/pretix/control/views/typeahead.py +++ b/src/pretix/control/views/typeahead.py @@ -619,7 +619,7 @@ def checkinlist_select2(request, **kwargs): qs = request.event.checkin_lists.select_related('subevent').filter( qf - ).order_by('name') + ).order_by('subevent__date_from', 'name', 'pk') total = qs.count() pagesize = 20 -- 2.49.1 From 97904d85675c8851b035db8b3d3ba5999b216f19 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 27 Apr 2026 12:24:55 +0200 Subject: [PATCH 076/107] Backend: Support are-you-sure for dynamically added form parts (Z#23232506) (#6109) --- src/pretix/static/pretixcontrol/js/ui/main.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pretix/static/pretixcontrol/js/ui/main.js b/src/pretix/static/pretixcontrol/js/ui/main.js index 77f0cb221..06c436192 100644 --- a/src/pretix/static/pretixcontrol/js/ui/main.js +++ b/src/pretix/static/pretixcontrol/js/ui/main.js @@ -71,6 +71,7 @@ $(document).ajaxError(function (event, jqXHR, settings, thrownError) { }); var form_handlers = function (el) { + el.trigger("rescan.areYouSure"); el.find("[data-formset]").formset( { animateForms: true, -- 2.49.1 From ff77a2125a31baecc46d2015490d78771610889c Mon Sep 17 00:00:00 2001 From: Kara Engelhardt Date: Mon, 20 Apr 2026 10:26:04 +0200 Subject: [PATCH 077/107] Limit widget frame inner height to 100dvh (Z#23231969) Fixes a bug where the submit buttons were obscured by the browsers elements on some ios devices --- src/pretix/static/pretixpresale/scss/widget.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pretix/static/pretixpresale/scss/widget.scss b/src/pretix/static/pretixpresale/scss/widget.scss index 9e44aff1f..9060ea046 100644 --- a/src/pretix/static/pretixpresale/scss/widget.scss +++ b/src/pretix/static/pretixpresale/scss/widget.scss @@ -966,6 +966,7 @@ $table-bg-accent: rgba(128, 128, 128, 0.05); width: 80vw; max-width: 1080px; height: 80vh; + max-height: 100dvh; } .pretix-widget-frame-inner iframe { width: 100% !important; -- 2.49.1 From 82a14a4f83d883213787fa6be8d81ca7e2f55d54 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2026 12:39:36 +0200 Subject: [PATCH 078/107] Update pytest-asyncio requirement from >=0.24 to >=1.3.0 (#6108) Updates the requirements on [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit the latest version. - [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases) - [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.24.0...v1.3.0) --- updated-dependencies: - dependency-name: pytest-asyncio dependency-version: 1.3.0 dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 85c682b51..4a3a3a883 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -117,7 +117,7 @@ dev = [ "isort==8.0.*", "pep8-naming==0.15.*", "potypo", - "pytest-asyncio>=0.24", + "pytest-asyncio>=1.3.0", "pytest-cache", "pytest-cov", "pytest-django==4.*", -- 2.49.1 From 88165c098e973f9bd61525a1101e22eb1c8001dd Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 27 Apr 2026 14:52:49 +0200 Subject: [PATCH 079/107] Subevents: Allow to skip conflicting dates in bulk-creation (Z#23217384) (#6079) * Subevents: Allow to skip conflicting dates in bulk-creation * Update src/pretix/control/templates/pretixcontrol/subevents/bulk.html * Fix overlap calc for consecutive subevents * Add test for skipping conflicting dates in bulk-creation --------- Co-authored-by: Richard Schreiber Co-authored-by: Richard Schreiber Co-authored-by: Kara Engelhardt --- src/pretix/control/forms/subevents.py | 12 ++- .../pretixcontrol/subevents/bulk.html | 2 + src/pretix/control/views/subevents.py | 29 +++++++ src/tests/control/test_subevents.py | 86 +++++++++++++++++++ 4 files changed, 128 insertions(+), 1 deletion(-) diff --git a/src/pretix/control/forms/subevents.py b/src/pretix/control/forms/subevents.py index b0a78fd7f..05607956e 100644 --- a/src/pretix/control/forms/subevents.py +++ b/src/pretix/control/forms/subevents.py @@ -28,7 +28,7 @@ from django.forms import formset_factory from django.forms.utils import ErrorDict from django.urls import reverse from django.utils.functional import cached_property -from django.utils.translation import gettext_lazy as _ +from django.utils.translation import gettext_lazy as _, pgettext_lazy from i18nfield.forms import I18nInlineFormSet from pretix.base.forms import I18nModelForm @@ -102,6 +102,16 @@ class SubEventBulkForm(SubEventForm): required=False, limit_choices=('date_from', 'date_to'), ) + skip_if_overlap = forms.BooleanField( + label=pgettext_lazy('subevent', 'Skip dates that overlap with any existing date'), + help_text=pgettext_lazy( + 'subevent', + 'This can be useful if all your dates happen in the same location and no repeated dates should ' + 'be created in conflict with existing special events. This respects even inactive dates and works best if ' + 'all dates have both a start and end time.' + ), + required=False, + ) def __init__(self, *args, **kwargs): self.event = kwargs['event'] diff --git a/src/pretix/control/templates/pretixcontrol/subevents/bulk.html b/src/pretix/control/templates/pretixcontrol/subevents/bulk.html index 3f7a041f7..97a0e74d4 100644 --- a/src/pretix/control/templates/pretixcontrol/subevents/bulk.html +++ b/src/pretix/control/templates/pretixcontrol/subevents/bulk.html @@ -379,6 +379,8 @@ {% trans "Add many time slots" %}

+
+ {% bootstrap_field form.skip_if_overlap layout="control" horizontal_label_class='sr-only' horizontal_field_class='col-md-12' %}
{% trans "General information" %} diff --git a/src/pretix/control/views/subevents.py b/src/pretix/control/views/subevents.py index 4ecf6a823..2477231ce 100644 --- a/src/pretix/control/views/subevents.py +++ b/src/pretix/control/views/subevents.py @@ -917,6 +917,35 @@ class SubEventBulkCreate(SubEventEditorMixin, EventPermissionRequiredMixin, Asyn if len(subevents) > 100_000: raise ValidationError(_('Please do not create more than 100.000 dates at once.')) + if form.cleaned_data.get("skip_if_overlap") and subevents: + def overlaps(a_from, a_to, b_from, b_to): + if a_from == b_from: + return True + if a_from > b_from: + # a starts after b + # check if it starts before b ends + return b_to and a_from < b_to + # a starts before b + # check if it ends before b starts + return a_to and a_to > b_from + + date_min = min(se.date_from for se in subevents) + date_max = max(se.date_to or se.date_from for se in subevents) + dates_existing = list(self.request.event.subevents.annotate( + date_fromto=Coalesce('date_to', 'date_from'), + ).filter( + date_from__lte=date_max, + date_fromto__gte=date_min, + ).values('date_from', 'date_to')) + subevents = [ + se for se in subevents if not any( + overlaps(se.date_from, se.date_to, other['date_from'], other['date_to']) + for other in dates_existing + ) + ] + if not subevents: + raise ValidationError(_('All dates would be skipped because they conflict with existing dates.')) + for i, se in enumerate(subevents): se.save(clear_cache=False) if i % 100 == 0: diff --git a/src/tests/control/test_subevents.py b/src/tests/control/test_subevents.py index 273f1b3c1..5e58e0ebf 100644 --- a/src/tests/control/test_subevents.py +++ b/src/tests/control/test_subevents.py @@ -747,6 +747,92 @@ class SubEventsTest(SoupTest): assert ses[1].date_from.isoformat() == "2018-04-12T11:29:31+00:00" assert ses[-1].date_from.isoformat() == "2019-03-28T12:29:31+00:00" + def test_create_bulk_skip_existing(self): + with scopes_disabled(): + self.event1.subevents.all().delete() + # SubEvent ends at rrule start time + self.event1.subevents.create( + date_from=datetime.datetime(2018, 4, 4, 9, 0, tzinfo=datetime.timezone.utc), + date_to=datetime.datetime(2018, 4, 4, 10, 0, tzinfo=datetime.timezone.utc), + ) + # SubEvent overlaps rrule start + self.event1.subevents.create( + date_from=datetime.datetime(2018, 4, 5, 9, 30, tzinfo=datetime.timezone.utc), + date_to=datetime.datetime(2018, 4, 5, 10, 30, tzinfo=datetime.timezone.utc), + ) + # SubEvent times are same as rrule + self.event1.subevents.create( + date_from=datetime.datetime(2018, 4, 6, 10, 0, tzinfo=datetime.timezone.utc), + date_to=datetime.datetime(2018, 4, 6, 11, 0, tzinfo=datetime.timezone.utc), + ) + # SubEvent starts at rrule end time + self.event1.subevents.create( + date_from=datetime.datetime(2018, 4, 7, 11, 0, tzinfo=datetime.timezone.utc), + date_to=datetime.datetime(2018, 4, 7, 12, 0, tzinfo=datetime.timezone.utc), + ) + # SubEvent overlaps entire rrule time + self.event1.subevents.create( + date_from=datetime.datetime(2018, 4, 8, 9, 0, tzinfo=datetime.timezone.utc), + date_to=datetime.datetime(2018, 4, 8, 12, 0, tzinfo=datetime.timezone.utc), + ) + # SubEvent has before rrule time and no end + self.event1.subevents.create( + date_from=datetime.datetime(2018, 4, 9, 9, 0, tzinfo=datetime.timezone.utc), + ) + existing_events = list(self.event1.subevents.values_list('pk', flat=True)) + + self.event1.settings.timezone = 'Europe/Berlin' + doc = self.post_doc('/control/event/ccc/30c3/subevents/bulk_add', { + 'rruleformset-TOTAL_FORMS': '1', + 'rruleformset-INITIAL_FORMS': '0', + 'rruleformset-MIN_NUM_FORMS': '0', + 'rruleformset-MAX_NUM_FORMS': '1000', + 'rruleformset-0-end': 'count', + 'rruleformset-0-count': '10', + 'rruleformset-0-interval': '1', + 'rruleformset-0-freq': 'weekly', + 'rruleformset-0-dtstart': '2018-04-03', + 'rruleformset-0-weekly_byweekday': ['MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU'], + 'rruleformset-0-yearly_same': 'on', + 'rruleformset-0-monthly_same': 'on', + 'timeformset-TOTAL_FORMS': '1', + 'timeformset-INITIAL_FORMS': '0', + 'timeformset-MIN_NUM_FORMS': '1', + 'timeformset-MAX_NUM_FORMS': '1000', + 'timeformset-0-time_from': '12:00:00', + 'timeformset-0-time_to': '13:00:00', + 'rruleformset-0-until': '2019-04-03', + 'skip_if_overlap': 'on', + 'name_0': 'Foo', + 'active': 'on', + 'frontpage_text_0': '', + 'quotas-TOTAL_FORMS': '1', + 'quotas-INITIAL_FORMS': '0', + 'quotas-MIN_NUM_FORMS': '0', + 'quotas-MAX_NUM_FORMS': '1000', + 'quotas-0-name': 'Q1', + 'quotas-0-size': '50', + 'quotas-0-itemvars': str(self.ticket.pk), + 'checkinlist_set-TOTAL_FORMS': '0', + 'checkinlist_set-INITIAL_FORMS': '0', + 'checkinlist_set-MIN_NUM_FORMS': '0', + 'checkinlist_set-MAX_NUM_FORMS': '1000', + }) + assert doc.select(".alert-success") + with scopes_disabled(): + ses = list(self.event1.subevents.exclude(pk__in=existing_events).order_by('date_from')) + + assert len(ses) == 7 + assert [s.date_from.date().isoformat() for s in ses] == [ + '2018-04-03', + '2018-04-04', + '2018-04-07', + '2018-04-09', + '2018-04-10', + '2018-04-11', + '2018-04-12' + ] + def test_delete_bulk(self): self.subevent2.active = True self.subevent2.save() -- 2.49.1 From 496591bb3b8197968505faf750c41945929379db Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 27 Apr 2026 14:55:59 +0200 Subject: [PATCH 080/107] Navigation: suggest event or organizer by domain (Z#23231404) (#6107) --- src/pretix/control/views/typeahead.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pretix/control/views/typeahead.py b/src/pretix/control/views/typeahead.py index 4c2f896da..30fa68315 100644 --- a/src/pretix/control/views/typeahead.py +++ b/src/pretix/control/views/typeahead.py @@ -316,7 +316,7 @@ def nav_context_list(request): page = 1 qs_events = request.user.get_events_with_any_permission(request).filter( - Q(name__icontains=i18ncomp(query)) | Q(slug__icontains=query) + Q(name__icontains=i18ncomp(query)) | Q(slug__icontains=query) | Q(domain__domainname__iexact=query) ).annotate( min_from=Min('subevents__date_from'), max_from=Max('subevents__date_from'), @@ -331,7 +331,7 @@ def nav_context_list(request): else: qs_orga = Organizer.objects.filter(pk__in=request.user.teams.values_list('organizer', flat=True)) if query: - qs_orga = qs_orga.filter(Q(name__icontains=query) | Q(slug__icontains=query)) + qs_orga = qs_orga.filter(Q(name__icontains=query) | Q(slug__icontains=query) | Q(domains__domainname__iexact=query)) qs_orga = qs_orga.annotate( n_events=Count("events") ).order_by("-n_events") -- 2.49.1 From 771f4f5d1e743cb932d1c04be0c956716fa209e2 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 27 Apr 2026 15:00:48 +0200 Subject: [PATCH 081/107] Turn attendee emails on by default for new events (Z#23213656) (#5598) * Turn attendee emails on by default for new events (Z#23213656) I think the thing that makes me most unhappy is that *most* organizers will probably want to turn off mail_send_order_paid_attendee when they set ticket_download_pending and I don't think organizers will remember that, but it also seems complex and weird to create an automatism for it? * Update src/pretix/base/models/event.py Co-authored-by: Martin Gross --------- Co-authored-by: Martin Gross --- src/pretix/base/models/event.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/pretix/base/models/event.py b/src/pretix/base/models/event.py index aee0df1a7..1feed0e36 100644 --- a/src/pretix/base/models/event.py +++ b/src/pretix/base/models/event.py @@ -715,6 +715,12 @@ class Event(EventMixin, LoggedModel): self.settings.name_scheme = 'given_family' self.settings.payment_banktransfer_invoice_immediately = True self.settings.low_availability_percentage = 10 + self.settings.mail_send_order_free_attendee = True + self.settings.mail_send_order_placed_attendee = True + self.settings.mail_send_order_paid_attendee = True + self.settings.mail_send_order_approved_attendee = True + self.settings.mail_send_order_approved_free_attendee = True + self.settings.mail_text_download_reminder_attendee = True @property def social_image(self): -- 2.49.1 From 1157e2aeed78166f5e01dab0f591b36ad8d8d07b Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 27 Apr 2026 15:12:21 +0200 Subject: [PATCH 082/107] Events/subevents: Fix missing logging for meta changes (Z#23232443) (#6110) * Events/subevents: Fix missing logging for meta changes (Z#23232443) * Fix logging --- src/pretix/control/views/event.py | 22 +++++++++----- src/pretix/control/views/item.py | 8 ++--- src/pretix/control/views/subevents.py | 43 +++++++++++++++++++-------- 3 files changed, 48 insertions(+), 25 deletions(-) diff --git a/src/pretix/control/views/event.py b/src/pretix/control/views/event.py index 7a25d97bc..d566050fc 100644 --- a/src/pretix/control/views/event.py +++ b/src/pretix/control/views/event.py @@ -234,13 +234,21 @@ class EventUpdate(DecoupleMixin, EventSettingsViewMixin, EventPermissionRequired self.request.event.log_action('pretix.event.footerlinks.changed', user=self.request.user, data={ 'data': self.footer_links_formset.cleaned_data }) - if form.has_changed(): - self.request.event.log_action('pretix.event.changed', user=self.request.user, data={ - k: (form.cleaned_data.get(k).name - if isinstance(form.cleaned_data.get(k), File) - else form.cleaned_data.get(k)) - for k in form.changed_data - }) + + change_data = { + k: (form.cleaned_data.get(k).name + if isinstance(form.cleaned_data.get(k), File) + else form.cleaned_data.get(k)) + for k in form.changed_data + } + meta_changed = {} + for f in self.meta_forms: + if f.has_changed(): + meta_changed[f.property.name] = f.cleaned_data["value"] + if meta_changed: + change_data['meta_data'] = meta_changed + if change_data: + self.request.event.log_action('pretix.event.changed', user=self.request.user, data=change_data) tickets.invalidate_cache.apply_async(kwargs={'event': self.request.event.pk}) messages.success(self.request, _('Your changes have been saved.')) diff --git a/src/pretix/control/views/item.py b/src/pretix/control/views/item.py index 179b8cd09..f55f678c0 100644 --- a/src/pretix/control/views/item.py +++ b/src/pretix/control/views/item.py @@ -1447,12 +1447,8 @@ class ItemUpdateGeneral(ItemDetailMixin, EventPermissionRequiredMixin, MetaDataE meta_changed = {} for f in self.meta_forms: - meta_changed.update({ - k: (f.cleaned_data.get(k).name - if isinstance(f.cleaned_data.get(k), File) - else f.cleaned_data.get(k)) - for k in f.changed_data - }) + if f.has_changed(): + meta_changed[f.property.name] = f.cleaned_data["value"] if meta_changed: change_data['meta_data'] = meta_changed diff --git a/src/pretix/control/views/subevents.py b/src/pretix/control/views/subevents.py index 2477231ce..4d5fbbc0c 100644 --- a/src/pretix/control/views/subevents.py +++ b/src/pretix/control/views/subevents.py @@ -540,20 +540,31 @@ class SubEventUpdate(EventPermissionRequiredMixin, SubEventEditorMixin, UpdateVi # TODO: LogEntry? messages.success(self.request, _('Your changes have been saved.')) - if form.has_changed() or any(f.has_changed() for f in self.plugin_forms): - data = { - k: form.cleaned_data.get(k) for k in form.changed_data - } - for f in self.plugin_forms: - data.update({ - k: (f.cleaned_data.get(k).name - if isinstance(f.cleaned_data.get(k), File) - else f.cleaned_data.get(k)) - for k in f.changed_data - }) + + change_data = { + k: (form.cleaned_data.get(k).name + if isinstance(form.cleaned_data.get(k), File) + else form.cleaned_data.get(k)) + for k in form.changed_data + } + meta_changed = {} + for f in self.meta_forms: + if f.has_changed(): + meta_changed[f.property.name] = f.cleaned_data["value"] + if meta_changed: + change_data['meta_data'] = meta_changed + for f in self.plugin_forms: + change_data.update({ + k: (f.cleaned_data.get(k).name + if isinstance(f.cleaned_data.get(k), File) + else f.cleaned_data.get(k)) + for k in f.changed_data + }) + if change_data: self.object.log_action( - 'pretix.subevent.changed', user=self.request.user, data=data + 'pretix.subevent.changed', user=self.request.user, data=change_data ) + for f in self.plugin_forms: f.subevent = self.object f.save() @@ -628,6 +639,14 @@ class SubEventCreate(SubEventEditorMixin, EventPermissionRequiredMixin, CreateVi else f.cleaned_data.get(k)) for k in f.cleaned_data }) + + meta_changed = {} + for f in self.meta_forms: + if f.has_changed(): + meta_changed[f.property.name] = f.cleaned_data["value"] + if meta_changed: + data['meta_data'] = meta_changed + form.instance.log_action('pretix.subevent.added', data=dict(data), user=self.request.user) self.save_formset(form.instance) -- 2.49.1 From 8426a687604a873087299b032d285577b6ad8560 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 27 Apr 2026 17:28:36 +0200 Subject: [PATCH 083/107] Prevent nullbytes in input data globally (#6071) * Prevent nullbytes in input data globally * Only on urlencoded POST * Split middleware --- src/pretix/base/middleware.py | 13 +++++++++++++ src/pretix/settings.py | 1 + 2 files changed, 14 insertions(+) diff --git a/src/pretix/base/middleware.py b/src/pretix/base/middleware.py index 677816723..c7ab50166 100644 --- a/src/pretix/base/middleware.py +++ b/src/pretix/base/middleware.py @@ -24,6 +24,7 @@ from urllib.parse import urlparse, urlsplit from zoneinfo import ZoneInfo, ZoneInfoNotFoundError from django.conf import settings +from django.core.exceptions import BadRequest from django.http import Http404, HttpRequest, HttpResponse from django.middleware.common import CommonMiddleware from django.urls import get_script_prefix, resolve @@ -347,6 +348,18 @@ class SecurityMiddleware(MiddlewareMixin): return resp +class RejectInvalidInputMiddleware(MiddlewareMixin): + + def process_request(self, request): + # Nullbytes in GET/POST parameters are mostly harmless, as they will later fail on database insertion, but it + # keeps spamming our error logs whenever someone tries to run a vulnerability scanner. + if "\x00" in request.META['QUERY_STRING'] or "%00" in request.META['QUERY_STRING']: + raise BadRequest("Invalid characters in input.") + if request.method in ('POST', 'PUT', 'PATCH') and request.content_type == "application/x-www-form-urlencoded": + if any("\x00" in value for key, value_list in request.POST.lists() for value in value_list): + raise BadRequest("Invalid characters in input.") + + class CustomCommonMiddleware(CommonMiddleware): def get_full_path_with_slash(self, request): diff --git a/src/pretix/settings.py b/src/pretix/settings.py index a798c55d3..aa8697796 100644 --- a/src/pretix/settings.py +++ b/src/pretix/settings.py @@ -515,6 +515,7 @@ MIDDLEWARE = [ 'pretix.control.middleware.AuditLogMiddleware', 'pretix.base.middleware.LocaleMiddleware', 'pretix.base.middleware.SecurityMiddleware', + 'pretix.base.middleware.RejectInvalidInputMiddleware', 'pretix.presale.middleware.EventMiddleware', 'pretix.api.middleware.ApiScopeMiddleware', ] -- 2.49.1 From 1c7ce4b1ca6ff004c674bcac0150e18df87f3e9b Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Tue, 28 Apr 2026 08:56:32 +0200 Subject: [PATCH 084/107] Validate id for async tasks --- src/pretix/base/views/tasks.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pretix/base/views/tasks.py b/src/pretix/base/views/tasks.py index e763d7fba..9e4b939dd 100644 --- a/src/pretix/base/views/tasks.py +++ b/src/pretix/base/views/tasks.py @@ -20,6 +20,7 @@ # . # import logging +import re from collections import defaultdict from datetime import timedelta from importlib import import_module @@ -52,6 +53,7 @@ from pretix.celery_app import app from pretix.helpers.http import redirect_to_url logger = logging.getLogger('pretix.base.tasks') +RE_ASYNC_ID = re.compile(r"^[a-zA-Z0-9\-]+$") class AsyncMixin: @@ -133,6 +135,8 @@ class AsyncMixin: def get_result(self, request): if not request.GET.get('async_id'): raise BadRequest("No async_id given") + if not RE_ASYNC_ID.match(request.GET.get('async_id')): + raise BadRequest("Invalid async_id given") res = AsyncResult(request.GET.get('async_id')) if 'ajax' in self.request.GET: return JsonResponse(self._return_ajax_result(res, timeout=0.25)) -- 2.49.1 From 217744a9f2873d5eee699ab1c3cf2fd0dbde56b0 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Tue, 28 Apr 2026 09:45:35 +0200 Subject: [PATCH 085/107] Remove unused download of all tickets of an order in pretix-control (#6086) * Remove unused code for ticket download of whole order in pretix-control * fix flake8 * fix isort --- src/pretix/control/views/orders.py | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/src/pretix/control/views/orders.py b/src/pretix/control/views/orders.py index d0bb06cc4..57155ad89 100644 --- a/src/pretix/control/views/orders.py +++ b/src/pretix/control/views/orders.py @@ -79,9 +79,9 @@ from pretix.base.email import get_email_context from pretix.base.exporter import MultiSheetListExporter from pretix.base.i18n import language from pretix.base.models import ( - CachedCombinedTicket, CachedFile, CachedTicket, Checkin, Invoice, - InvoiceAddress, Item, ItemVariation, LogEntry, Order, QuestionAnswer, - Quota, ScheduledEventExport, generate_secret, + CachedFile, CachedTicket, Checkin, Invoice, InvoiceAddress, Item, + ItemVariation, LogEntry, Order, QuestionAnswer, Quota, + ScheduledEventExport, generate_secret, ) from pretix.base.models.orders import ( CancellationRequest, OrderFee, OrderPayment, OrderPosition, OrderRefund, @@ -718,30 +718,13 @@ class OrderDownload(AsyncAction, OrderView): ), content_type=value.type ) - elif isinstance(value, CachedCombinedTicket): - if value.type == 'text/uri-list': - resp = HttpResponseRedirect(value.file.file.read()) - return resp - else: - return FileResponse( - value.file.file, - filename='{}-{}-{}{}'.format( - self.request.event.slug.upper(), self.order.code, self.output.identifier, value.extension - ), - content_type=value.type - ) else: return redirect(self.get_self_url()) def get_last_ct(self): - if 'position' in self.kwargs: - ct = CachedTicket.objects.filter( - order_position=self.order_position, provider=self.output.identifier, file__isnull=False - ).last() - else: - ct = CachedCombinedTicket.objects.filter( - order=self.order, provider=self.output.identifier, file__isnull=False - ).last() + ct = CachedTicket.objects.filter( + order_position=self.order_position, provider=self.output.identifier, file__isnull=False + ).last() if not ct or not ct.file: return None return ct -- 2.49.1 From 75660600f478cc5eab57d5303e174851304000f6 Mon Sep 17 00:00:00 2001 From: Nikolai Date: Mon, 20 Apr 2026 10:54:06 +0200 Subject: [PATCH 086/107] Translations: Update Danish Currently translated at 50.1% (3153 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/ powered by weblate --- src/pretix/locale/da/LC_MESSAGES/django.po | 332 ++++++++++----------- 1 file changed, 161 insertions(+), 171 deletions(-) diff --git a/src/pretix/locale/da/LC_MESSAGES/django.po b/src/pretix/locale/da/LC_MESSAGES/django.po index 7362ac0d1..6379e25a9 100644 --- a/src/pretix/locale/da/LC_MESSAGES/django.po +++ b/src/pretix/locale/da/LC_MESSAGES/django.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-04-17 17:00+0000\n" +"PO-Revision-Date: 2026-04-20 17:00+0000\n" "Last-Translator: Nikolai \n" "Language-Team: Danish \n" @@ -6388,35 +6388,32 @@ msgid "being sent" msgstr "bliver sendt" #: pretix/base/models/mail.py:54 -#, fuzzy -#| msgid "Waiting list entry" msgid "awaiting retry" -msgstr "Ventelisteplads" +msgstr "venter på nyt forsøg" #: pretix/base/models/mail.py:55 #: pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html:48 #: pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html:149 msgid "withheld" -msgstr "" +msgstr "tilbageholdt" #: pretix/base/models/mail.py:57 #: pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html:50 #: pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html:151 msgid "aborted" -msgstr "" +msgstr "afbrudt" #: pretix/base/models/mail.py:58 #: pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html:52 #: pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html:153 -#, fuzzy msgid "sent" -msgstr "Forsalgs sluttidspunkt" +msgstr "sendt" #: pretix/base/models/mail.py:59 #: pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html:46 #: pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html:147 msgid "bounced" -msgstr "" +msgstr "afvist" #: pretix/base/models/memberships.py:44 #: pretix/presale/templates/pretixpresale/organizers/customer_memberships.html:28 @@ -6533,10 +6530,8 @@ msgid "Meta information" msgstr "Metaoplysninger" #: pretix/base/models/orders.py:304 -#, fuzzy -#| msgid "Meta information" msgid "API meta information" -msgstr "Metaoplysninger" +msgstr "API-metadata" #: pretix/base/models/orders.py:418 pretix/plugins/sendmail/forms.py:236 #: pretix/plugins/sendmail/forms.py:389 pretix/plugins/sendmail/views.py:269 @@ -6716,10 +6711,8 @@ msgid "Insurance fee" msgstr "Forsikringsgebyr" #: pretix/base/models/orders.py:2314 -#, fuzzy -#| msgid "Other fees" msgid "Late fee" -msgstr "Andre gebyrer" +msgstr "Rykkergebyr" #: pretix/base/models/orders.py:2315 msgid "Other fees" @@ -6752,10 +6745,8 @@ msgid "Cart ID (e.g. session key)" msgstr "Kurv-id (fx sessionsnøgle)" #: pretix/base/models/orders.py:3168 -#, fuzzy -#| msgid "Gift card: Expiration date" msgid "Limit for extending expiration date" -msgstr "Gavekort: Udløbsdato" +msgstr "Grænse for forlængelse af udløbsdatoen" #: pretix/base/models/orders.py:3204 msgid "Cart position" @@ -6774,15 +6765,13 @@ msgid "This reference will be printed on your invoice for your convenience." msgstr "Denne reference vises på din faktura." #: pretix/base/models/orders.py:3489 -#, fuzzy -#| msgid "Transaction time" msgid "Transmission type" -msgstr "Overførselstidspunkt" +msgstr "Transmissionstype" #: pretix/base/models/orders.py:3580 #: pretix/plugins/badges/templates/pretixplugins/badges/control_order_position_buttons.html:9 msgid "Badge" -msgstr "" +msgstr "Mærke" #: pretix/base/models/orders.py:3581 pretix/base/pdf.py:1140 #: pretix/control/templates/pretixcontrol/checkin/checkins.html:66 @@ -6791,9 +6780,8 @@ msgid "Ticket" msgstr "Billet" #: pretix/base/models/orders.py:3582 -#, fuzzy msgid "Certificate" -msgstr "Godkendelse fejlede" +msgstr "Certifikat" #: pretix/base/models/orders.py:3583 pretix/control/views/event.py:393 #: pretix/control/views/event.py:398 pretix/control/views/organizer.py:652 @@ -6844,10 +6832,8 @@ msgstr "" "indstillingen bliver aktiviveret for alle brugere." #: pretix/base/models/organizer.py:378 -#, fuzzy -#| msgid "Event permissions" msgid "All event permissions" -msgstr "Rettigheder til arrangementer" +msgstr "Alle begivenhedsrettigheder" #: pretix/base/models/organizer.py:379 #: pretix/control/templates/pretixcontrol/organizers/team_edit.html:34 @@ -6855,10 +6841,8 @@ msgid "Event permissions" msgstr "Rettigheder til arrangementer" #: pretix/base/models/organizer.py:380 -#, fuzzy -#| msgid "Organizer permissions" msgid "All organizer permissions" -msgstr "Rettigheder arrangører" +msgstr "Alle arrangørrettigheder" #: pretix/base/models/organizer.py:381 #: pretix/control/templates/pretixcontrol/organizers/team_edit.html:25 @@ -6911,11 +6895,13 @@ msgstr "Din layout-fil er ikke en gyldig siddeplan. Fejlbesked: {}" #, python-brace-format msgid "Seat with zone {zone}, row {row}, and number {number} has no seat ID." msgstr "" +"Pladsen i zone {zone}, række {row} og nummer {number} har ikke noget plads-" +"ID." #: pretix/base/models/seating.py:72 #, python-brace-format msgid "Multiple seats have the same ID: {id}" -msgstr "" +msgstr "Flere pladser har samme ID: {id}" #: pretix/base/models/seating.py:200 #, python-brace-format @@ -6928,92 +6914,87 @@ msgid "Seat {number}" msgstr "Sæde {number}" #: pretix/base/models/tax.py:143 -#, fuzzy msgid "Standard rates" -msgstr "Gensend link" +msgstr "Standardrater" #: pretix/base/models/tax.py:147 msgctxt "tax_code" msgid "Standard rate" -msgstr "" +msgstr "Standardrate" #: pretix/base/models/tax.py:151 msgctxt "tax_code" msgid "Reduced rate" -msgstr "" +msgstr "Nedsat rate" #: pretix/base/models/tax.py:155 msgctxt "tax_code" msgid "" "Averaged rate (other revenue in a agricultural and silvicultural business)" -msgstr "" +msgstr "Gennemsnitsrate (andre indtægter i landbrugs- og skovbrugsvirksomhed)" #: pretix/base/models/tax.py:163 -#, fuzzy -#| msgid "Reverse charge" msgctxt "tax_code" msgid "Reverse charge" msgstr "Omvendt betalingspfligt (reverse charge)" #: pretix/base/models/tax.py:167 -#, fuzzy -#| msgid "Tax rate" msgid "Tax free" -msgstr "Moms-%" +msgstr "Skattefri" #: pretix/base/models/tax.py:170 msgctxt "tax_code" msgid "Services outside of scope of tax" -msgstr "" +msgstr "Tjenesteydelser, der ikke er omfattet af beskatningen" #: pretix/base/models/tax.py:173 msgctxt "tax_code" msgid "Exempt from tax (no reason given)" -msgstr "" +msgstr "Fritaget for skat (uden angivelse af årsag)" #: pretix/base/models/tax.py:176 msgctxt "tax_code" msgid "Zero-rated goods" -msgstr "" +msgstr "Varer, der er fritaget for moms" #: pretix/base/models/tax.py:179 msgctxt "tax_code" msgid "Free export item, VAT not charged" -msgstr "" +msgstr "Eksportvare uden afgift, moms opkræves ikke" #: pretix/base/models/tax.py:182 msgctxt "tax_code" msgid "VAT exempt for EEA intra-community supply of goods and services" -msgstr "" +msgstr "Momsfritagelse for levering af varer og tjenesteydelser inden for EØS" #: pretix/base/models/tax.py:186 -#, fuzzy msgid "Special cases" -msgstr "Funktioner" +msgstr "Særlige tilfælde" #: pretix/base/models/tax.py:188 msgctxt "tax_code" msgid "Canary Islands general indirect tax" -msgstr "" +msgstr "Generel indirekte skat på De Kanariske Øer" #: pretix/base/models/tax.py:189 msgctxt "tax_code" msgid "Tax for production, services and importation in Ceuta and Melilla" -msgstr "" +msgstr "Skat på produktion, tjenesteydelser og import i Ceuta og Melilla" #: pretix/base/models/tax.py:190 msgctxt "tax_code" msgid "Transferred (VAT), only in Italy" -msgstr "" +msgstr "Overført (moms), kun i Italien" #: pretix/base/models/tax.py:194 msgid "Exempt with specific reason" -msgstr "" +msgstr "Undtaget med særlig begrundelse" #: pretix/base/models/tax.py:197 msgctxt "tax_code" msgid "Exempt based on article 79, point c of Council Directive 2006/112/EC" msgstr "" +"Undtaget i henhold til artikel 79, litra c), i Rådets direktiv 2006/112/EF" #: pretix/base/models/tax.py:204 pretix/base/models/tax.py:217 #: pretix/base/models/tax.py:243 @@ -8249,15 +8230,14 @@ msgid "Program times: date and time" msgstr "Programtider: dato og klokkeslæt" #: pretix/base/pdf.py:496 -#, fuzzy msgid "" "2017-05-31 10:00 – 12:00\n" "2017-05-31 14:00 – 16:00\n" "2017-05-31 14:00 – 2017-06-01 14:00" msgstr "" -"2017-05-31 10:00 – 12:00\n" -"2017-05-31 14:00 – 16:00\n" -"2017-05-31 14:00 – 2017-06-01 14:00" +"31. maj 2017 kl. 10.00 – 12.00\n" +"31. maj 2017 kl. 14.00 – 16.00\n" +"31. maj 2017 kl. 14.00 – 1. juni 2017 kl. 14.00" #: pretix/base/pdf.py:500 msgid "Reusable Medium ID" @@ -8518,28 +8498,25 @@ msgstr "Kunder" #: pretix/base/permissions.py:310 pretix/control/navigation.py:666 #: pretix/control/navigation.py:673 -#, fuzzy msgid "Devices" -msgstr "Enhedsnavn" +msgstr "Enheder" #: pretix/base/permissions.py:316 msgid "" "Includes the ability to give access to events and data oneself does not have " "access to." msgstr "" +"Giver mulighed for at give adgang til begivenheder og data, som man selv " +"ikke har adgang til." #: pretix/base/permissions.py:321 -#, fuzzy -#| msgid "Seating plan" msgid "Seating plans" -msgstr "Siddeplan" +msgstr "Siddeplaner" #: pretix/base/permissions.py:327 pretix/control/navigation.py:712 #: pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html:8 -#, fuzzy -#| msgid "Send out emails" msgid "Outgoing emails" -msgstr "Send e-mails" +msgstr "Udgående e-mails" #: pretix/base/plugins.py:138 #: pretix/control/templates/pretixcontrol/event/quick_setup.html:132 @@ -8547,9 +8524,8 @@ msgid "Features" msgstr "Funktioner" #: pretix/base/plugins.py:140 -#, fuzzy msgid "Integrations" -msgstr "Faktureringsoplysninger" +msgstr "Integrationer" #: pretix/base/plugins.py:141 msgid "Customizations" @@ -9166,12 +9142,12 @@ msgid "Czech National Bank" msgstr "Den tjekkiske nationalbank" #: pretix/base/services/export.py:94 pretix/base/services/export.py:154 -#, fuzzy -#| msgid "You do not have sufficient permission to perform this export." msgid "" "Export not found or you do not have sufficient permission to perform this " "export." -msgstr "Du har ikke tilstrækkelige rettigheder til at udføre denne eksport." +msgstr "" +"Eksporten blev ikke fundet, eller du har ikke tilstrækkelige rettigheder til " +"at udføre denne eksport." #: pretix/base/services/export.py:107 pretix/base/services/export.py:179 #: pretix/base/services/export.py:357 @@ -9276,10 +9252,9 @@ msgstr "" "arrangementsinstillinger." #: pretix/base/services/mail.py:144 -#, fuzzy -#| msgid "The selected media type is not enabled in your organizer settings." msgid "This prefix has been set in your event or organizer settings." -msgstr "Den valgte medietype er ikke aktiveret i dine arrangør-indstillinger." +msgstr "" +"Dette præfiks er angivet i indstillingerne for din begivenhed eller arrangør." #: pretix/base/services/mail.py:516 msgctxt "attachment_filename" @@ -9445,6 +9420,8 @@ msgid "" "The grouping \"%(value)s\" occurs on non-consecutive lines (seen again on " "line %(row)s)." msgstr "" +"Grupperingen \"%(value)s\" forekommer på ikke-fortløbende linjer (ses igen " +"på linje %(row)s)." #: pretix/base/services/modelimport.py:154 #, python-brace-format @@ -9452,6 +9429,9 @@ msgid "" "Inconsistent data in row {row}: Column {col} contains value \"{val_line}\", " "but for this order, the value has already been set to \"{val_order}\"." msgstr "" +"Inkonsekvente data i række {row}: Kolonne {col} indeholder værdien \"" +"{val_line}\", men for denne ordre er værdien allerede angivet til \"" +"{val_order}\"." #: pretix/base/services/modelimport.py:168 #: pretix/base/services/modelimport.py:289 @@ -9776,7 +9756,7 @@ msgstr "Overfør venligst beløbet til denne bankkonto: 9999-9999-9999-9999" #: pretix/base/services/placeholders.py:806 #: pretix/control/views/organizer.py:354 msgid "This value will be replaced based on dynamic parameters." -msgstr "" +msgstr "Denne værdi vil blive erstattet på baggrund af dynamiske parametre." #: pretix/base/services/seating.py:61 pretix/base/services/seating.py:128 #, python-format @@ -9825,20 +9805,14 @@ msgid "Uncategorized" msgstr "Ikke kategoriseret" #: pretix/base/services/tax.py:43 -#, fuzzy -#| msgid "" -#| "Your VAT ID could not be checked, as the VAT checking service of your " -#| "country is currently not available. We will therefore need to charge VAT " -#| "on your invoice. You can get the tax amount back via the VAT " -#| "reimbursement process." msgid "" "Your VAT ID could not be checked, as the VAT checking service of your " "country is currently not available. We will therefore need to charge you the " "same tax rate as if you did not enter a VAT ID." msgstr "" -"Dit moms-id kunne ikke kontrolleres, da momskontroltjenesten i dit land ikke " -"er tilgængelig i øjeblikket. Vi bliver derfor nødt til at opkræve moms på " -"din faktura. Du kan få momsbeløbet tilbage via momsrefusionsprocessen." +"Dit momsnummer kunne ikke kontrolleres, da momskontroltjenesten i dit land i " +"øjeblikket ikke er tilgængelig. Vi er derfor nødt til at opkræve den samme " +"momssats, som hvis du ikke havde angivet et momsnummer." #: pretix/base/services/tax.py:47 pretix/base/services/tax.py:366 #: pretix/base/services/tax.py:393 @@ -9926,21 +9900,23 @@ msgstr "Voucheren er blevet sendt til {recipient}." #: pretix/base/settings.py:82 msgid "Compute taxes for every line individually" -msgstr "" +msgstr "Beregn skatten for hver linje separat" #: pretix/base/settings.py:83 msgid "Compute taxes based on net total" -msgstr "" +msgstr "Beregn skat på baggrund af net-totalet" #: pretix/base/settings.py:84 msgid "" "For business customers, compute taxes based on net total. For individuals, " "use line-based rounding" msgstr "" +"For erhvervskunder beregnes skatten på baggrund af netto-totalet. For " +"privatpersoner anvendes afrunding pr. linje" #: pretix/base/settings.py:85 msgid "Compute taxes based on net total with stable gross prices" -msgstr "" +msgstr "Beregn skatter på baggrund af nettotalet med faste bruttopriser" #: pretix/base/settings.py:135 msgid "Allow usage of restricted plugins" @@ -9973,7 +9949,7 @@ msgstr "" #: pretix/base/settings.py:190 msgid "Require login to access order confirmation pages" -msgstr "" +msgstr "Der kræves login for at få adgang til siderne med ordrebekræftelser" #: pretix/base/settings.py:191 msgid "" @@ -9982,6 +9958,10 @@ msgid "" "placing an order, the restriction only becomes active after the customer " "account is activated." msgstr "" +"Hvis denne funktion er aktiveret, skal brugere, der var logget ind på " +"købstidspunktet, også logge ind for at få adgang til deres ordreoplysninger. " +"Hvis der oprettes en kundekonto i forbindelse med en ordre, træder " +"begrænsningen først i kraft, når kundekontoen er blevet aktiveret." #: pretix/base/settings.py:203 msgid "Match orders based on email address" @@ -10041,13 +10021,8 @@ msgid "Add-on products will not be counted." msgstr "Tilføjelsesprodukter tæller ikke med." #: pretix/base/settings.py:350 -#, fuzzy -#| msgid "" -#| "Show net prices instead of gross prices in the product list (not " -#| "recommended!)" msgid "Show net prices instead of gross prices in the product list" -msgstr "" -"Vis nettopriser i stedet for bruttopriser på produktlisten (ikke anbefalet!)" +msgstr "Vis nettopriser i stedet for bruttopriser i produktlisten" #: pretix/base/settings.py:351 msgid "" @@ -10162,9 +10137,8 @@ msgid "Require a phone number per order" msgstr "Påkræv et telefonnummer pr. bestilling" #: pretix/base/settings.py:498 -#, fuzzy msgid "Rounding of taxes" -msgstr "inkl. %(rate)s%% moms" +msgstr "Afrunding af skatter" #: pretix/base/settings.py:502 msgid "" @@ -10172,6 +10146,10 @@ msgid "" "for tax reporting, you need to make sure to account for possible rounding " "differences if your external system rounds differently than pretix." msgstr "" +"Bemærk, at hvis du overfører dine salgsdata fra pretix til et eksternt " +"system med henblik på skatterapportering, skal du sørge for at tage højde " +"for eventuelle afrundingsforskelle, hvis dit eksterne system afrunder på en " +"anden måde end pretix." #: pretix/base/settings.py:518 msgid "Ask for invoice address" @@ -10234,10 +10212,8 @@ msgid "Require invoice address" msgstr "Faktureringsadresse påkrævet" #: pretix/base/settings.py:606 -#, fuzzy -#| msgid "Require a business addresses" msgid "Require a business address" -msgstr "Påkræv en virksomhedsadresse" +msgstr "Kræver en forretningsadresse" #: pretix/base/settings.py:607 msgid "This will require users to enter a company name." @@ -10248,10 +10224,8 @@ msgid "Ask for beneficiary" msgstr "Spørg efter modtager" #: pretix/base/settings.py:629 -#, fuzzy -#| msgid "Custom recipient field" msgid "Custom recipient field label" -msgstr "Brugerdefineret modtagerfelt" +msgstr "Brugerdefineret etiket til modtagerfelt" #: pretix/base/settings.py:631 msgid "" @@ -10268,10 +10242,8 @@ msgstr "" "blive vist på fakturaen under overskriften. Feltet er ikke påkrævet." #: pretix/base/settings.py:645 -#, fuzzy -#| msgid "Custom recipient field" msgid "Custom recipient field help text" -msgstr "Brugerdefineret modtagerfelt" +msgstr "Hjælpetekst til brugerdefineret modtagerfelt" #: pretix/base/settings.py:647 msgid "" @@ -10279,29 +10251,25 @@ msgid "" "will be displayed underneath the field. It will not be displayed on the " "invoice." msgstr "" +"Hvis du bruger det brugerdefinerede modtagerfelt, kan du angive en " +"hjælpetekst, der vises under feltet. Den vises ikke på fakturaen." #: pretix/base/settings.py:658 msgid "Ask for VAT ID" msgstr "Spørg efter CVR-nr." #: pretix/base/settings.py:660 -#, fuzzy, python-brace-format -#| msgid "" -#| "Only works if an invoice address is asked for. VAT ID is never required " -#| "and only requested from business customers in the following countries: " -#| "{countries}" +#, python-brace-format msgid "" "Only works if an invoice address is asked for. VAT ID is only requested from " "business customers in the following countries: {countries}." msgstr "" -"Virker kun, hvis der spørges om en fakturaadresse. Moms-ID er aldrig " -"påkrævet og kræves kun af erhvervskunder i følgende lande: {countries}" +"Dette fungerer kun, hvis der anmodes om en fakturaadresse. Der anmodes kun " +"om momsnummer fra erhvervskunder i følgende lande: {countries}." #: pretix/base/settings.py:680 -#, fuzzy -#| msgid "Require name" msgid "Require VAT ID in" -msgstr "Påkræv navn" +msgstr "Kræv momsregistreringsnummer i" #: pretix/base/settings.py:686 msgid "" @@ -10309,6 +10277,9 @@ msgid "" "ID in all countries. VAT ID will be required for all business addresses in " "the selected countries." msgstr "" +"Momsnummer er som standard valgfrit, da ikke alle virksomheder har et " +"momsnummer i alle lande. Momsnummer er obligatorisk for alle " +"virksomhedsadresser i de valgte lande." #: pretix/base/settings.py:702 msgid "Invoice address explanation" @@ -10651,33 +10622,26 @@ msgstr "Vis startdato for forsalg før forsalget er startet." #: pretix/base/settings.py:1148 pretix/base/settings.py:1157 #: pretix/base/settings.py:1171 pretix/base/settings.py:1180 -#, fuzzy -#| msgid "Default price" msgid "Use default tax rate" -msgstr "Standardpris" +msgstr "Brug standardskattesats" #: pretix/base/settings.py:1149 pretix/base/settings.py:1158 #: pretix/base/settings.py:1169 pretix/base/settings.py:1178 -#, fuzzy -#| msgid "Charge updated." msgid "Charge no taxes" -msgstr "Opkrævning opdateret." +msgstr "Opkræv ingen skatter" #: pretix/base/settings.py:1154 -#, fuzzy -#| msgctxt "invoice" -#| msgid "Outstanding payments" msgid "Tax handling on payment fees" -msgstr "Udestående betalinger" +msgstr "Skattebehandling af betalingsgebyrer" #: pretix/base/settings.py:1170 pretix/base/settings.py:1179 msgid "Use same taxes as order positions (split according to net prices)" msgstr "" +"Brug de samme afgifter som for ordrepositionerne (fordelt efter nettopriser)" #: pretix/base/settings.py:1175 -#, fuzzy msgid "Tax handling on cancellation fees" -msgstr "Hold et fast afbestillingsgebyr" +msgstr "Skattebehandling af afbestillingsgebyrer" #: pretix/base/settings.py:1191 pretix/base/settings.py:1204 msgid "Do not generate invoices" @@ -10692,10 +10656,8 @@ msgid "Automatically on user request" msgstr "Automatisk ved brugerforespørgsel" #: pretix/base/settings.py:1194 pretix/base/settings.py:1208 -#, fuzzy -#| msgid "Automatically on user request" msgid "Automatically on user request for paid orders" -msgstr "Automatisk ved brugerforespørgsel" +msgstr "Automatisk på brugerens anmodning ved betalte ordrer" #: pretix/base/settings.py:1195 msgid "Automatically for all created orders" @@ -10728,28 +10690,28 @@ msgid "" "Automatic based on ticket-specific validity, membership validity, event " "series date, or event date" msgstr "" +"Automatisk baseret på billetens gyldighedsperiode, medlemskabsgyldighed, " +"datoen for begivenhedsserien eller datoen for begivenheden" #: pretix/base/settings.py:1222 pretix/base/settings.py:1234 msgid "Automatic, but prefer invoice date over event date" -msgstr "" +msgstr "Automatisk, men fakturadatoen prioriteres frem for begivenhedsdatoen" #: pretix/base/settings.py:1225 pretix/base/settings.py:1237 -#, fuzzy -#| msgctxt "invoice" -#| msgid "Invoice date" msgid "Invoice date" -msgstr "Fakturadato" +msgstr "Faktura-dato" #: pretix/base/settings.py:1230 -#, fuzzy msgid "Date of service" -msgstr "Dato tilmeldt" +msgstr "Dato for levering" #: pretix/base/settings.py:1239 msgid "" "This controls what dates are shown on the invoice, but is especially " "important for electronic invoicing." msgstr "" +"Dette bestemmer, hvilke datoer der vises på fakturaen, men er især vigtigt i " +"forbindelse med elektronisk fakturering." #: pretix/base/settings.py:1251 msgid "Automatically cancel and reissue invoice on address changes" @@ -10780,9 +10742,8 @@ msgstr "" "udstede en ny faktura, hvis der skal foretages en ændring." #: pretix/base/settings.py:1281 -#, fuzzy msgid "Only issue invoices to business customers" -msgstr "Virksomhedskunde" +msgstr "Udsted kun fakturaer til erhvervskunder" #: pretix/base/settings.py:1291 msgid "Address line" @@ -10915,9 +10876,8 @@ msgstr "" "regioner globalt (som f.eks. engelsk)." #: pretix/base/settings.py:1547 -#, fuzzy msgid "This shop represents an event" -msgstr "Dette er en arrangementsrække" +msgstr "Denne butik markerer en begivenhed" #: pretix/base/settings.py:1549 msgid "" @@ -11092,6 +11052,11 @@ msgid "" "if they want more than one ticket, as every entry only grants one single " "ticket at a time." msgstr "" +"Med en forhøjet grænse kan en kunde anmode om mere end én billet til et " +"bestemt produkt ved hjælp af den samme, unikke e-mailadresse. Uanset denne " +"indstilling skal kunden dog udfylde ventelisteformularen flere gange, hvis " +"vedkommende ønsker mere end én billet, da hver indtastning kun giver ret til " +"én billet ad gangen." #: pretix/base/settings.py:1748 msgid "Show number of check-ins to customer" @@ -11282,16 +11247,17 @@ msgstr "Skjul alle tidligere datoer fra kalenderen" #: pretix/base/settings.py:1923 pretix/base/settings.py:1932 msgid "No modifications after order was submitted" -msgstr "" +msgstr "Der må ikke foretages ændringer, efter at ordren er afgivet" #: pretix/base/settings.py:1924 pretix/base/settings.py:1933 -#, fuzzy msgid "Only the person who ordered can make changes" -msgstr "Kun afventende og betalte bestillinger kan ændres." +msgstr "Kun den person, der har bestilt, kan foretage ændringer" #: pretix/base/settings.py:1925 pretix/base/settings.py:1934 msgid "Both the attendee and the person who ordered can make changes" msgstr "" +"Både deltageren og den, der har foretaget bestillingen, kan foretage " +"ændringer" #: pretix/base/settings.py:1929 msgid "Allow customers to modify their information" @@ -11431,27 +11397,28 @@ msgstr "" #: pretix/base/settings.py:2071 msgid "Charge payment, shipping and service fees" -msgstr "" +msgstr "Opkræv gebyrer for betaling, forsendelse og service" #: pretix/base/settings.py:2085 -#, fuzzy msgid "Charge a percentual cancellation fee" -msgstr "Hold et procentuelt afbestillingsgebyr" +msgstr "Opkræv et procentuelt afbestillingsgebyr" #: pretix/base/settings.py:2096 pretix/base/settings.py:2235 msgid "Do not allow cancellations after" msgstr "Tillad ikke afbestilling efter" #: pretix/base/settings.py:2105 -#, fuzzy msgid "Customers can cancel their paid orders" -msgstr "Tillad brugere at annullere ubetalte bestillinger" +msgstr "Kunder kan annullere deres betalte ordrer" #: pretix/base/settings.py:2106 msgid "" "Paid money will be automatically paid back if the payment method allows it. " "Otherwise, a manual refund will be created for you to process manually." msgstr "" +"Det betalte beløb tilbagebetales automatisk, hvis betalingsmetoden tillader " +"det. Ellers vil der blive oprettet der en manuel tilbagebetaling, som du " +"skal behandle manuelt." #: pretix/base/settings.py:2119 pretix/control/forms/orders.py:909 msgid "Keep a fixed cancellation fee" @@ -11459,7 +11426,7 @@ msgstr "Hold et fast afbestillingsgebyr" #: pretix/base/settings.py:2128 msgid "Keep payment, shipping and service fees" -msgstr "" +msgstr "Behold betalings-, forsendelses- og servicegebyrer" #: pretix/base/settings.py:2140 pretix/control/forms/orders.py:920 msgid "Keep a percentual cancellation fee" @@ -11467,19 +11434,23 @@ msgstr "Hold et procentuelt afbestillingsgebyr" #: pretix/base/settings.py:2149 msgid "Allow customers to voluntarily choose a lower refund" -msgstr "" +msgstr "Giv kunderne mulighed for frivilligt at vælge et lavere refusionsbeløb" #: pretix/base/settings.py:2150 msgid "" "With this option enabled, your customers can choose to get a smaller refund " "to support you." msgstr "" +"Når denne indstilling er aktiveret, kan dine kunder vælge at modtage et " +"mindre refusionsbeløb for at støtte dig." #: pretix/base/settings.py:2155 msgid "" "However, if you want us to help keep the lights on here, please consider " "using the slider below to request a smaller refund. Thank you!" msgstr "" +"Hvis du imidlertid gerne vil hjælpe os med at holde lyset tændt her, kan du " +"overveje at bruge skyderen nedenfor til at anmode om en mindre refusion. Tak!" #: pretix/base/settings.py:2162 msgid "Voluntary lower refund explanation" @@ -11492,10 +11463,14 @@ msgid "" "like to receive. You can use it e.g. to explain choosing a lower refund will " "help your organization." msgstr "" +"Denne tekst vises mellem forklaringen om, hvordan refusionerne fungerer, og " +"den skyder, som dine kunder kan bruge til at vælge det beløb, de ønsker at " +"modtage. Du kan f.eks. bruge den til at forklare, at det vil hjælpe din " +"organisation, hvis de vælger en lavere refusion." #: pretix/base/settings.py:2180 msgid "Step size for reduction amount" -msgstr "" +msgstr "Trinvis størrelse for reduktionsbeløbet" #: pretix/base/settings.py:2181 msgid "" @@ -11503,26 +11478,34 @@ msgid "" "set this to e.g. 10, they will only be able to choose values in increments " "of 10." msgstr "" +"Som standard kan kunderne vælge et vilkårligt beløb, som du skal beholde. " +"Hvis du indstiller dette til f.eks. 10, kan de kun vælge beløb, der går op i " +"10." #: pretix/base/settings.py:2191 msgid "" "Customers can only request a cancellation that needs to be approved by the " "event organizer before the order is canceled and a refund is issued." msgstr "" +"Kunder kan kun anmode om en annullering, som skal godkendes af arrangøren, " +"før ordren annulleres, og der udstedes en refusion." #: pretix/base/settings.py:2201 msgid "" "Do not show the cancellation fee to users when they request cancellation." msgstr "" +"Vis ikke afbestillingsgebyret for brugerne, når de anmoder om afbestilling." #: pretix/base/settings.py:2210 pretix/base/settings.py:2220 msgid "All refunds are issued to the original payment method" -msgstr "" +msgstr "Alle refusioner tilbageføres til den oprindelige betalingsmetode" #: pretix/base/settings.py:2211 pretix/base/settings.py:2221 msgid "" "Customers can choose between a gift card and a refund to their payment method" msgstr "" +"Kunderne kan vælge mellem et gavekort og en tilbagebetaling til deres " +"betalingsmetode" #: pretix/base/settings.py:2212 pretix/base/settings.py:2222 msgid "All refunds are issued as gift cards" @@ -11530,18 +11513,16 @@ msgstr "Alle refunderinger udstedes som vouchers." #: pretix/base/settings.py:2213 pretix/base/settings.py:2223 msgid "Do not handle refunds automatically at all" -msgstr "" +msgstr "Behandl slet ikke refusioner automatisk" #: pretix/base/settings.py:2218 #: pretix/control/templates/pretixcontrol/order/index.html:149 -#, fuzzy msgid "Refund method" -msgstr "Tilbagebetal bestilling" +msgstr "Refusionsmetode" #: pretix/base/settings.py:2244 pretix/base/settings.py:2257 -#, fuzzy msgid "Terms of cancellation" -msgstr "Generér afbestilling" +msgstr "Afbestillingsbetingelser" #: pretix/base/settings.py:2247 msgid "" @@ -11569,7 +11550,7 @@ msgstr "Kontaktadresse" #: pretix/base/settings.py:2271 pretix/control/forms/event.py:1900 msgid "We'll show this publicly to allow attendees to contact you." -msgstr "" +msgstr "Vi vil vise dette offentligt, så deltagerne kan kontakte dig." #: pretix/base/settings.py:2279 pretix/control/forms/event.py:1892 msgid "Imprint URL" @@ -12194,7 +12175,7 @@ msgid "You have been selected from the waitinglist for {event}" msgstr "Du er blevet udvalgt fra ventelisten til {event}" #: pretix/base/settings.py:2742 -#, fuzzy, python-brace-format +#, python-brace-format msgid "" "Hello,\n" "\n" @@ -12223,26 +12204,35 @@ msgid "" "Best regards, \n" "Your {event} team" msgstr "" -"Hej\n" +"Hej,\n" "\n" -"Du har tilmeldt dig ventelisten til {event} \n" -"for produktet {product}.\n" +"du har skrevet dig på ventelisten til arrangementet {event},\n" +"til produktet {product}.\n" "\n" -"Vi har en billet klar til dig! Du kan bestille den i vores billetbutik inden " -"for de næste {hours} timer ved at indtaste følgende rabatkode:\n" +"Vi har nu en billet klar til dig! Du kan indløse den i vores billetshop\n" +"inden for de næste {hours} timer ved at indtaste følgende kuponkode:\n" "\n" "{code}\n" "\n" -"Alternativt, kan du bare klikke på følgende link:\n" +"Du kan også bare klikke på følgende link:\n" "\n" "{url}\n" "\n" -"Bemærk at dette link kun er gyldigt inden for de næste {hours} timer!\n" -"Vi tilbyder billetten til den næste på ventelisten hvis du ikke indløser " -"voucherkoden inden for tidsfristen.\n" +"Bemærk venligst, at dette link kun er gyldigt inden for de næste {hours} " +"timer!\n" +"Vi vil tildele billetten til den næste person på listen, hvis du ikke\n" +"indløser kuponen inden for denne tidsramme.\n" "\n" -"Venlig hilsen \n" -"Arrangøren af {event}" +"Hvis du IKKE længere har brug for en billet, beder vi dig venligst klikke " +"på\n" +"følgende link for at give os besked. På den måde kan vi sende billetten\n" +"til den næste person på ventelisten hurtigst muligt:\n" +"\n" +"{url_remove}\n" +"\n" +"Med venlig hilsen, \n" +"\n" +"Dit {event}-team" #: pretix/base/settings.py:2771 #, python-brace-format @@ -12277,9 +12267,9 @@ msgstr "" "Arrangøren af {event}" #: pretix/base/settings.py:2789 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Order approved and awaiting payment: {code}" -msgstr "Din bestilling afventer betaling: {code}" +msgstr "Ordre godkendt og afventer betaling: {code}" #: pretix/base/settings.py:2793 #, fuzzy, python-brace-format -- 2.49.1 From 8fd366be76fa0305d2dc6d928c959447083a9a6d Mon Sep 17 00:00:00 2001 From: Nikolai Date: Tue, 21 Apr 2026 10:44:23 +0200 Subject: [PATCH 087/107] Translations: Update Danish Currently translated at 52.2% (3284 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/ powered by weblate --- src/pretix/locale/da/LC_MESSAGES/django.po | 496 +++++++++++++-------- 1 file changed, 304 insertions(+), 192 deletions(-) diff --git a/src/pretix/locale/da/LC_MESSAGES/django.po b/src/pretix/locale/da/LC_MESSAGES/django.po index 6379e25a9..79618d20b 100644 --- a/src/pretix/locale/da/LC_MESSAGES/django.po +++ b/src/pretix/locale/da/LC_MESSAGES/django.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-04-20 17:00+0000\n" +"PO-Revision-Date: 2026-04-21 08:45+0000\n" "Last-Translator: Nikolai \n" "Language-Team: Danish \n" @@ -9174,7 +9174,7 @@ msgid "Please complete your payment before {expire_date}." msgstr "Gennemfør venligst betaling inden {expire_date}." #: pretix/base/services/invoices.py:129 -#, fuzzy, python-brace-format +#, python-brace-format msgctxt "invoice" msgid "" "{i.company}\n" @@ -9186,7 +9186,7 @@ msgstr "" "{i.company}\n" "{i.name}\n" "{i.street}\n" -"{i.zipcode} {i.city}\n" +"{i.zipcode} {i.city} {state}\n" "{country}" #: pretix/base/services/invoices.py:239 pretix/base/services/invoices.py:282 @@ -12272,7 +12272,7 @@ msgid "Order approved and awaiting payment: {code}" msgstr "Ordre godkendt og afventer betaling: {code}" #: pretix/base/settings.py:2793 -#, fuzzy, python-brace-format +#, python-brace-format msgid "" "Hello,\n" "\n" @@ -12288,20 +12288,24 @@ msgid "" "Best regards, \n" "Your {event} team" msgstr "" -"Hej\n" +"Hej,\n" "\n" -"Vi har modtaget din bestilling til {event} med en samlet pris på " -"{total_with_currency}. Gennemfør venligst betalingen før {date}.\n" +"vi har godkendt din bestilling til arrangementet {event} og glæder os til " +"at byde dig velkommen\n" +"til vores arrangement.\n" "\n" -"{payment_info}\n" +"Fortsæt venligst ved at betale for din bestilling inden {expire_date}.\n" "\n" -"Du kan ændre din bestilling og dens status på {url}\n" +"Du kan vælge en betalingsmetode og gennemføre betalingen her:\n" "\n" -"Venlig hilsen \n" -"Arrangøren af {event}" +"{url}\n" +"\n" +"Med venlig hilsen, \n" +"\n" +"Dit {event}-team" #: pretix/base/settings.py:2817 pretix/base/settings.py:2854 -#, fuzzy, python-brace-format +#, python-brace-format msgid "" "Hello,\n" "\n" @@ -12313,23 +12317,26 @@ msgid "" "Best regards, \n" "Your {event} team" msgstr "" -"Hej\n" +"Hej,\n" "\n" -"Din bestilling til {event} er blevet ændret.\n" +"vi har godkendt en billet, der er bestilt til dig til arrangementet {event}" +".\n" +"\n" +"Du kan se detaljerne og status for din billet her:\n" "\n" -"Du kan se status for din bestilling på\n" "{url}\n" "\n" -"Venlig hilsen \n" -"Arrangøren af {event}" +"Med venlig hilsen, \n" +"\n" +"Dit {event}-team" #: pretix/base/settings.py:2829 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Order approved and confirmed: {code}" -msgstr "Bestilling annulleret: {code}" +msgstr "Ordre godkendt og bekræftet: {code}" #: pretix/base/settings.py:2833 -#, fuzzy, python-brace-format +#, python-brace-format msgid "" "Hello,\n" "\n" @@ -12342,23 +12349,29 @@ msgid "" "Best regards, \n" "Your {event} team" msgstr "" -"Hej\n" +"Hej,\n" "\n" -"Vi har modtaget din bestilling til {event}. Din bestilling indeholder kun " -"gratis produkter og kræver derfor ingen betaling.\n" +"vi har godkendt din bestilling til arrangementet {event} og glæder os til at " +"byde dig velkommen\n" +"til vores arrangement. Da du udelukkende har bestilt gratis produkter, skal " +"du ikke betale noget.\n" "\n" -"Du kan ændre informationer og se status på din bestilling på {url}\n" +"Du kan ændre dine bestillingsoplysninger og se status på din bestilling " +"her:\n" "\n" -"Venlig hilsen \n" -"Arrangører af {event}" +"{url}\n" +"\n" +"Med venlig hilsen, \n" +"\n" +"Dit {event}-team" #: pretix/base/settings.py:2866 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Order denied: {code}" -msgstr "Bestillingsdetaljer: {code}" +msgstr "Bestilling afvist: {code}" #: pretix/base/settings.py:2870 -#, fuzzy, python-brace-format +#, python-brace-format msgid "" "Hello,\n" "\n" @@ -12373,15 +12386,19 @@ msgid "" "Best regards, \n" "Your {event} team" msgstr "" -"Hej\n" +"Hej,\n" "\n" -"Din bestilling {code} til {event} er blevet annulleret.\n" +"desværre har vi afvist din bestillingsanmodning til arrangementet {event}.\n" +"\n" +"{comment}\n" +"\n" +"Du kan se detaljerne for din bestilling her:\n" "\n" -"Du kan se detaljerne for din bestilling på\n" "{url}\n" "\n" -"Venlig hilsen \n" -"Arrangøren af {event}" +"Med venlig hilsen, \n" +"\n" +"Dit {event}-team" #: pretix/base/settings.py:2885 #, python-brace-format @@ -12403,22 +12420,12 @@ msgstr "" "Arrangøren af {event}" #: pretix/base/settings.py:2895 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Invoice {invoice_number}" -msgstr "Fakturanummer" +msgstr "Faktura {invoice_number}" #: pretix/base/settings.py:2899 -#, fuzzy, python-brace-format -#| msgid "" -#| "Hello,\n" -#| "\n" -#| "somebody requested a list of your orders for {event}.\n" -#| "The list is as follows:\n" -#| "\n" -#| "{orders}\n" -#| "\n" -#| "Best regards, \n" -#| "Your {event} team" +#, python-brace-format msgid "" "Hello,\n" "\n" @@ -12429,15 +12436,14 @@ msgid "" "\n" "Your {event} team" msgstr "" -"Hej\n" +"Hej,\n" "\n" -"Nogen har bedt om en liste af dine bestillinger til {event}.\n" -"Listen er følgende:\n" +"vedhæftet finder du en ny faktura for ordre {code} til arrangementet {event}" +". Denne ordre er afgivet af {order_email}.\n" "\n" -"{orders}\n" +"Med venlig hilsen, \n" "\n" -"Venlig hilsen \n" -"Arrangøren af {event}" +"Dit {event}-team" #: pretix/base/settings.py:2917 pretix/base/settings.py:2933 #, python-brace-format @@ -12445,7 +12451,7 @@ msgid "Your ticket is ready for download: {code}" msgstr "Din billet er klar til download: {code}" #: pretix/base/settings.py:2921 -#, fuzzy, python-brace-format +#, python-brace-format msgid "" "Hello {attendee_name},\n" "\n" @@ -12457,15 +12463,17 @@ msgid "" "Best regards, \n" "Your {event} team" msgstr "" -"Hej\n" +"Hej {attendee_name},\n" "\n" -"Du har købt en billet til {event}.\n" +"du er tilmeldt arrangementet {event}.\n" +"\n" +"Hvis du ikke allerede har gjort det, kan du downloade din billet her:\n" "\n" -"Hvis du ikke allerede har gjort det, så kan du hente din billet her:\n" "{url}\n" "\n" -"Venlig hilsen \n" -"Arrangøren af {event}" +"Med venlig hilsen, \n" +"\n" +"Dit {event}-team" #: pretix/base/settings.py:2937 #, python-brace-format @@ -12493,7 +12501,7 @@ msgstr "" #: pretix/base/settings.py:2949 #, python-brace-format msgid "Activate your account at {organizer}" -msgstr "" +msgstr "Aktivér din konto hos {organizer}" #: pretix/base/settings.py:2953 #, python-brace-format @@ -12514,11 +12522,26 @@ msgid "" "\n" "Your {organizer} team" msgstr "" +"Hej {name},\n" +"\n" +"tak, fordi du har oprettet en konto hos {organizer}!\n" +"\n" +"Klik her for at aktivere din konto og oprette en adgangskode:\n" +"\n" +"{url}\n" +"\n" +"Dette link er gyldigt i én dag.\n" +"\n" +"Hvis du ikke selv har oprettet kontoen, bedes du ignorere denne e-mail.\n" +"\n" +"Med venlig hilsen, \n" +"\n" +"Dit {organizer}-team" #: pretix/base/settings.py:2971 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Confirm email address for your account at {organizer}" -msgstr "Offentligt e-mailadresse der kan bruges til at kontakte arrangøren" +msgstr "Bekræft e-mailadressen til din konto hos {organizer}" #: pretix/base/settings.py:2975 #, python-brace-format @@ -12539,11 +12562,26 @@ msgid "" "\n" "Your {organizer} team" msgstr "" +"Hej {name},\n" +"\n" +"du har anmodet om at ændre e-mailadressen på din konto hos {organizer}!\n" +"\n" +"Klik her for at bekræfte ændringen:\n" +"\n" +"{url}\n" +"\n" +"Dette link er gyldigt i én dag.\n" +"\n" +"Hvis du ikke har anmodet om dette, bedes du ignorere denne e-mail.\n" +"\n" +"Med venlig hilsen, \n" +"\n" +"Dit {organizer}-team" #: pretix/base/settings.py:2993 #, python-brace-format msgid "Set a new password for your account at {organizer}" -msgstr "" +msgstr "Opret en ny adgangskode til din konto hos {organizer}" #: pretix/base/settings.py:2997 #, python-brace-format @@ -12564,11 +12602,27 @@ msgid "" "\n" "Your {organizer} team" msgstr "" +"Hej {name},\n" +"\n" +"du har anmodet om en ny adgangskode til din konto hos {organizer}!\n" +"\n" +"Klik her for at oprette en ny adgangskode:\n" +"\n" +"{url}\n" +"\n" +"Dette link er gyldigt i én dag.\n" +"\n" +"Hvis du ikke har anmodet om en ny adgangskode, bedes du ignorere denne e-" +"mail.\n" +"\n" +"Med venlig hilsen, \n" +"\n" +"Dit {organizer}-team" #: pretix/base/settings.py:3015 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Changes to your account at {organizer}" -msgstr "Offentligt e-mailadresse der kan bruges til at kontakte arrangøren" +msgstr "Ændringer på din konto hos {organizer}" #: pretix/base/settings.py:3019 #, python-brace-format @@ -12589,6 +12643,21 @@ msgid "" "\n" "Your {organizer} team" msgstr "" +"Hej {name},\n" +"\n" +"der er foretaget følgende ændring på din konto hos {organizer}:\n" +"\n" +"{message}\n" +"\n" +"Du kan se og ændre dine kontoindstillinger her:\n" +"\n" +"{url}\n" +"\n" +"Hvis du ikke selv har foretaget denne ændring, bedes du straks kontakte os.\n" +"\n" +"Med venlig hilsen, \n" +"\n" +"Dit {organizer}-team" #: pretix/base/settings.py:3071 pretix/base/settings.py:3078 #: pretix/base/settings.py:3092 pretix/base/settings.py:3100 @@ -12603,33 +12672,35 @@ msgstr "Primær farve" #: pretix/base/settings.py:3096 msgid "Accent color for success" -msgstr "" +msgstr "En fremhævningsfarve, der skaber succes" #: pretix/base/settings.py:3097 msgid "We strongly suggest to use a shade of green." -msgstr "" +msgstr "Vi anbefaler på det kraftigste, at man vælger en grøn nuance." #: pretix/base/settings.py:3118 msgid "Accent color for errors" -msgstr "" +msgstr "Fremhævningsfarve for fejl" #: pretix/base/settings.py:3119 msgid "We strongly suggest to use a shade of red." -msgstr "" +msgstr "Vi anbefaler på det kraftigste, at du vælger en rød nuance." #: pretix/base/settings.py:3140 msgid "Page background color" -msgstr "" +msgstr "Sidens baggrundsfarve" #: pretix/base/settings.py:3155 msgid "Use round edges" -msgstr "" +msgstr "Brug afrundede kanter" #: pretix/base/settings.py:3164 msgid "" "Use native spinners in the widget instead of custom ones for numeric inputs " "such as quantity." msgstr "" +"Brug de indbyggede drejeknapper i widgeten i stedet for brugerdefinerede til " +"numeriske indtastninger, f.eks. antal." #: pretix/base/settings.py:3175 msgid "Only respected by modern browsers." @@ -12637,9 +12708,8 @@ msgstr "Virker kun i moderne browsere." #: pretix/base/settings.py:3186 pretix/base/settings.py:3230 #: pretix/control/forms/organizer.py:642 -#, fuzzy msgid "Header image" -msgstr "Navn på deltager" +msgstr "Billedet øverst på siden" #: pretix/base/settings.py:3189 msgid "" @@ -12649,18 +12719,25 @@ msgid "" "pixels. You can increase the size with the setting below. We recommend not " "using small details on the picture as it will be resized on smaller screens." msgstr "" +"Hvis du uploader et logo, viser vi som standard ikke dit arrangements navn " +"og dato i sidehovedet. Hvis du bruger en hvid baggrund, vises dit logo i en " +"størrelse på op til 1140x120 pixels. I alle andre tilfælde er den maksimale " +"størrelse 1120x120 pixels. Du kan øge størrelsen ved hjælp af indstillingen " +"nedenfor. Vi anbefaler, at du undgår små detaljer på billedet, da det bliver " +"skaleret på mindre skærme." #: pretix/base/settings.py:3210 pretix/base/settings.py:3253 msgid "Use header image in its full size" -msgstr "" +msgstr "Vis headerbilledet i fuld størrelse" #: pretix/base/settings.py:3211 pretix/base/settings.py:3254 msgid "We recommend to upload a picture at least 1170 pixels wide." msgstr "" +"Vi anbefaler, at du uploader et billede, der er mindst 1170 pixels bredt." #: pretix/base/settings.py:3220 msgid "Show event title even if a header image is present" -msgstr "" +msgstr "Vis begivenhedens titel, selvom der er et overskriftsbillede" #: pretix/base/settings.py:3221 msgid "" @@ -12668,6 +12745,10 @@ msgid "" "uploaded for the event, but the header image from the organizer profile is " "used, this option will be ignored and the event title will always be shown." msgstr "" +"Titlen vises kun på begivenhedens forside. Hvis der ikke uploades et " +"headerbillede til begivenheden, men i stedet bruges headerbilledet fra " +"arrangørens profil, ignoreres denne indstilling, og begivenhedens titel " +"vises altid." #: pretix/base/settings.py:3233 pretix/control/forms/organizer.py:646 msgid "" @@ -12677,24 +12758,35 @@ msgid "" "pixels. You can increase the size with the setting below. We recommend not " "using small details on the picture as it will be resized on smaller screens." msgstr "" +"Hvis du uploader et logo, viser vi som standard ikke din organisations navn " +"i sidehovedet. Hvis du bruger en hvid baggrund, vises dit logo i en " +"størrelse på op til 1140x120 pixels. I alle andre tilfælde er den maksimale " +"størrelse 1120x120 pixels. Du kan øge størrelsen ved hjælp af indstillingen " +"nedenfor. Vi anbefaler, at du undgår små detaljer på billedet, da det bliver " +"skaleret på mindre skærme." #: pretix/base/settings.py:3263 msgid "Use header image also for events without an individually uploaded logo" msgstr "" +"Brug også headerbilledet til begivenheder, hvor der ikke er uploadet et " +"særskilt logo" #: pretix/base/settings.py:3271 msgid "Favicon" -msgstr "" +msgstr "Favicon" #: pretix/base/settings.py:3274 msgid "" "If you provide a favicon, we will show it instead of the default pretix " "icon. We recommend a size of at least 200x200px to accommodate most devices." msgstr "" +"Hvis du stiller et favicon til rådighed, viser vi det i stedet for " +"standardikonet fra Pretix. Vi anbefaler en størrelse på mindst 200x200 px, " +"så det passer til de fleste enheder." #: pretix/base/settings.py:3290 msgid "Social media image" -msgstr "" +msgstr "Billede til sociale medier" #: pretix/base/settings.py:3293 msgid "" @@ -12704,6 +12796,12 @@ msgid "" "preview, so we recommend to make sure it still looks good if only the center " "square is shown. If you do not fill this, we will use the logo given above." msgstr "" +"Dette billede vil blive brugt som forhåndsvisning, hvis du deler links til " +"din billetshop på sociale medier. Facebook anbefaler at bruge et billede i " +"størrelsen 1200 x 630 pixels, men nogle platforme som WhatsApp og Reddit " +"viser kun en firkantet forhåndsvisning. Vi anbefaler derfor, at du sikrer " +"dig, at det stadig ser godt ud, hvis kun den midterste firkant vises. Hvis " +"du ikke udfylder dette felt, vil vi bruge det ovenstående logo." #: pretix/base/settings.py:3311 msgid "Logo image" @@ -12725,23 +12823,27 @@ msgstr "Vises som standard ikke, men kan fx bruges i billetskabeloner." #: pretix/base/settings.py:3354 msgid "Banner text (top)" -msgstr "" +msgstr "Bannertekst (øverst)" #: pretix/base/settings.py:3357 msgid "" "This text will be shown above every page of your shop. Please only use this " "for very important messages." msgstr "" +"Denne tekst vises øverst på alle sider i din webshop. Brug den kun til meget " +"vigtige meddelelser." #: pretix/base/settings.py:3367 msgid "Banner text (bottom)" -msgstr "" +msgstr "Bannertekst (nederst)" #: pretix/base/settings.py:3370 msgid "" "This text will be shown below every page of your shop. Please only use this " "for very important messages." msgstr "" +"Denne tekst vises nederst på hver side i din webshop. Brug den kun til meget " +"vigtige meddelelser." #: pretix/base/settings.py:3380 msgid "Voucher explanation" @@ -12752,32 +12854,37 @@ msgid "" "This text will be shown next to the input for a voucher code. You can use it " "e.g. to explain how to obtain a voucher code." msgstr "" +"Denne tekst vises ved siden af indtastningsfeltet til en rabatkode. Du kan " +"f.eks. bruge den til at forklare, hvordan man får fat i en rabatkode." #: pretix/base/settings.py:3393 -#, fuzzy msgid "Attendee data explanation" -msgstr "Navn på deltager" +msgstr "Forklaring til deltageroplysninger" #: pretix/base/settings.py:3396 msgid "" "This text will be shown above the questions asked for every personalized " "product. You can use it e.g. to explain why you need information from them." msgstr "" +"Denne tekst vises over de spørgsmål, der stilles i forbindelse med hvert " +"personligt tilpasset produkt. Du kan f.eks. bruge den til at forklare, " +"hvorfor du har brug for oplysninger fra dem." #: pretix/base/settings.py:3406 -#, fuzzy msgid "Additional success message" -msgstr "Yderligere gebyr" +msgstr "Yderligere succesmeddelelse" #: pretix/base/settings.py:3407 msgid "" "This message will be shown after an order has been created successfully. It " "will be shown in additional to the default text." msgstr "" +"Denne besked vises, når en ordre er oprettet. Den vises ud over " +"standardteksten." #: pretix/base/settings.py:3419 msgid "Help text of the phone number field" -msgstr "" +msgstr "Hjælpetekst til telefonnummer-feltet" #: pretix/base/settings.py:3426 msgid "" @@ -12789,11 +12896,11 @@ msgstr "" #: pretix/base/settings.py:3433 msgid "Help text of the email field" -msgstr "" +msgstr "Hjælpetekst til e-mail-feltet" #: pretix/base/settings.py:3459 msgid "Allow creating a new team during event creation" -msgstr "" +msgstr "Giv mulighed for at oprette et nyt hold, når man opretter en begivenhed" #: pretix/base/settings.py:3460 msgid "" @@ -12802,26 +12909,28 @@ msgid "" "allows users to create an event-specified team on-the-fly, even when they do " "not have \"Can change teams and permissions\" permission." msgstr "" +"Brugere, der ikke har adgang til alle begivenheder under denne arrangør, " +"skal vælge et af deres hold for at få adgang til den oprettede begivenhed. " +"Denne indstilling giver brugerne mulighed for at oprette et " +"begivenhedsspecifikt hold på farten, selvom de ikke har tilladelsen \"Kan " +"ændre hold og tilladelser\"." #: pretix/base/settings.py:3532 pretix/base/settings.py:3542 -#, fuzzy msgid "Event start time (descending)" -msgstr "Starttidspunkt" +msgstr "Arrangementets starttidspunkt (faldende rækkefølge)" #: pretix/base/settings.py:3534 pretix/base/settings.py:3544 -#, fuzzy msgid "Name (descending)" -msgstr "Afventer betaling" +msgstr "Navn (faldende rækkefølge)" #: pretix/base/settings.py:3539 -#, fuzzy msgctxt "subevent" msgid "Date ordering" -msgstr "Dato tilmeldt" +msgstr "Sortering efter dato" #: pretix/base/settings.py:3555 msgid "Link back to organizer overview on all event pages" -msgstr "" +msgstr "Link tilbage til arrangør-oversigten på alle begivenhedssider" #: pretix/base/settings.py:3564 msgid "Homepage text" @@ -12832,9 +12941,8 @@ msgid "This will be displayed on the organizer homepage." msgstr "Dette vises på arrangørerens side." #: pretix/base/settings.py:3581 -#, fuzzy msgid "Length of gift card codes" -msgstr "Gavekort" +msgstr "Længden af gavekortkoder" #: pretix/base/settings.py:3582 #, python-brace-format @@ -12842,11 +12950,12 @@ msgid "" "The system generates by default {}-character long gift card codes. However, " "if a different length is required, it can be set here." msgstr "" +"Systemet genererer som standard gavekortkoder, der består af {}-tegn. Hvis " +"der imidlertid er behov for en anden længde, kan dette indstilles her." #: pretix/base/settings.py:3598 -#, fuzzy msgid "Validity of gift card codes in years" -msgstr "Gavekort" +msgstr "Gavekortkoders gyldighedsperiode i år" #: pretix/base/settings.py:3599 msgid "" @@ -12860,18 +12969,19 @@ msgstr "" #: pretix/base/settings.py:3610 msgid "Enable cookie consent management features" -msgstr "" +msgstr "Aktivér funktioner til administration af samtykke til cookies" #: pretix/base/settings.py:3616 msgid "" "By clicking \"Accept all cookies\", you agree to the storing of cookies and " "use of similar technologies on your device." msgstr "" +"Ved at klikke på \"Accepter alle cookies\" giver du samtykke til, at der " +"gemmes cookies og anvendes lignende teknologier på din enhed." #: pretix/base/settings.py:3623 -#, fuzzy msgid "Dialog text" -msgstr "Tekst" +msgstr "Dialogtekst" #: pretix/base/settings.py:3630 msgid "" @@ -12880,43 +12990,42 @@ msgid "" "use cookies if they are essential to providing the services this website " "offers." msgstr "" +"Vi bruger cookies og lignende teknologier til at indsamle data, der gør det " +"muligt for os at forbedre denne hjemmeside og vores tilbud. Hvis du ikke " +"giver dit samtykke, vil vi kun bruge cookies, hvor de er nødvendige for at " +"levere de tjenester, som denne hjemmeside tilbyder." #: pretix/base/settings.py:3638 msgid "Secondary dialog text" -msgstr "" +msgstr "Tekst til den sekundære dialogboks" #: pretix/base/settings.py:3644 -#, fuzzy msgid "Privacy settings" -msgstr "Prisindstillinger" +msgstr "Privatlivsindstillinger" #: pretix/base/settings.py:3649 msgid "Dialog title" -msgstr "" +msgstr "Dialogtitel" #: pretix/base/settings.py:3655 msgid "Accept all cookies" -msgstr "" +msgstr "Accepter alle cookies" #: pretix/base/settings.py:3660 -#, fuzzy msgid "\"Accept\" button description" -msgstr "Produktbeskrivelse" +msgstr "Beskrivelse af knappen \"Accepter\"" #: pretix/base/settings.py:3666 -#, fuzzy msgid "Required cookies only" -msgstr "Påkrævet spørgsmål" +msgstr "Kun nødvendige cookies" #: pretix/base/settings.py:3671 -#, fuzzy msgid "\"Reject\" button description" -msgstr "Produktbeskrivelse" +msgstr "Beskrivelse af knappen \"Afvis\"" #: pretix/base/settings.py:3681 -#, fuzzy msgid "Customers can choose their own seats" -msgstr "Tillad brugere at annullere ubetalte bestillinger" +msgstr "Kunderne kan selv vælge deres pladser" #: pretix/base/settings.py:3682 msgid "" @@ -12924,33 +13033,36 @@ msgid "" "that this can mean people will not know their seat after their purchase and " "it might not be written on their ticket." msgstr "" +"Hvis denne funktion er deaktiveret, skal du manuelt tildele pladser i " +"administrationssystemet. Bemærk, at det kan betyde, at gæsterne ikke kender " +"deres plads efter købet, og at den muligvis ikke er angivet på deres billet." #: pretix/base/settings.py:3708 msgid "Show button to copy user input from other products" -msgstr "" +msgstr "Vis knap til kopiering af brugerindtastninger fra andre produkter" #: pretix/base/settings.py:3718 msgid "Most common English titles" -msgstr "" +msgstr "De mest almindelige engelske titler" #: pretix/base/settings.py:3728 msgid "Most common German titles" -msgstr "" +msgstr "De mest almindelige tyske titler" #: pretix/base/settings.py:3741 msgctxt "person_name_salutation" msgid "Ms" -msgstr "" +msgstr "Fru" #: pretix/base/settings.py:3742 msgctxt "person_name_salutation" msgid "Mr" -msgstr "" +msgstr "Hr." #: pretix/base/settings.py:3743 msgctxt "person_name_salutation" msgid "Mx" -msgstr "" +msgstr "Mx" #: pretix/base/settings.py:3780 pretix/base/settings.py:3796 #: pretix/base/settings.py:3812 pretix/base/settings.py:3827 @@ -12958,10 +13070,9 @@ msgstr "" #: pretix/base/settings.py:3890 pretix/base/settings.py:3914 #: pretix/base/settings.py:3946 pretix/base/settings.py:3968 #: pretix/base/settings.py:3999 -#, fuzzy msgctxt "person_name_sample" msgid "John" -msgstr "Anders And" +msgstr "Peter" #: pretix/base/settings.py:3781 pretix/base/settings.py:3797 #: pretix/base/settings.py:3813 pretix/base/settings.py:3829 @@ -12970,91 +13081,82 @@ msgstr "Anders And" #: pretix/base/settings.py:3969 pretix/base/settings.py:4000 msgctxt "person_name_sample" msgid "Doe" -msgstr "" +msgstr "Hansen" #: pretix/base/settings.py:3787 pretix/base/settings.py:3803 #: pretix/base/settings.py:3835 pretix/base/settings.py:3954 #: pretix/base/settings.py:3976 msgctxt "person_name" msgid "Title" -msgstr "" +msgstr "Titel" #: pretix/base/settings.py:3795 pretix/base/settings.py:3811 #: pretix/base/settings.py:3844 pretix/base/settings.py:3967 #: pretix/base/settings.py:3998 msgctxt "person_name_sample" msgid "Dr" -msgstr "" +msgstr "dr." #: pretix/base/settings.py:3819 pretix/base/settings.py:3836 -#, fuzzy msgid "First name" -msgstr "Billetnavn" +msgstr "Fornavn" #: pretix/base/settings.py:3820 pretix/base/settings.py:3837 -#, fuzzy msgid "Middle name" -msgstr "Enhedsnavn" +msgstr "Mellemnavn" #: pretix/base/settings.py:3901 pretix/base/settings.py:3913 #: pretix/control/forms/organizer.py:793 -#, fuzzy msgctxt "person_name_sample" msgid "John Doe" -msgstr "Anders And" +msgstr "Peter Hansen" #: pretix/base/settings.py:3907 -#, fuzzy msgid "Calling name" -msgstr "Fuldt navn" +msgstr "Kaldenavn" #: pretix/base/settings.py:3921 -#, fuzzy msgid "Latin transcription" -msgstr "Beskrivelse" +msgstr "Transskription til latinske bogstaver" #: pretix/base/settings.py:3933 pretix/base/settings.py:3953 #: pretix/base/settings.py:3975 -#, fuzzy msgctxt "person_name" msgid "Salutation" -msgstr "Afbestilling" +msgstr "Hilsen" #: pretix/base/settings.py:3945 pretix/base/settings.py:3966 #: pretix/base/settings.py:3997 msgctxt "person_name_sample" msgid "Mr" -msgstr "" +msgstr "Hr." #: pretix/base/settings.py:3979 -#, fuzzy msgctxt "person_name" msgid "Degree (after name)" -msgstr "Kundenavn påkrævet" +msgstr "Titel (efter navnet)" #: pretix/base/settings.py:4001 msgctxt "person_name_sample" msgid "MA" -msgstr "" +msgstr "cand.mag." #: pretix/base/settings.py:4027 pretix/base/settings.py:4029 -#, fuzzy -#| msgid "Provider name" msgctxt "address" msgid "Province" -msgstr "Udbyderens navn" +msgstr "Provins" #: pretix/base/settings.py:4028 -#, fuzzy -#| msgid "Use feature" msgctxt "address" msgid "Prefecture" -msgstr "Brug funktion" +msgstr "Præfektur" #: pretix/base/settings.py:4119 pretix/control/forms/event.py:242 msgid "" "Your default locale must also be enabled for your event (see box above)." msgstr "" +"Din standardindstilling for lokalitet skal også være aktiveret for din " +"begivenhed (se boksen ovenfor)." #: pretix/base/settings.py:4123 msgid "" @@ -13070,58 +13172,54 @@ msgstr "" "påkrævede." #: pretix/base/settings.py:4131 -#, fuzzy msgid "" "You have to ask for invoice addresses if you want to make them required." -msgstr "" -"Du skal spørge efter deltageres e-mailadresser hvis du vil gøre dem " -"påkrævede." +msgstr "Du skal anmode om fakturaadresser, hvis du vil gøre dem obligatoriske." #: pretix/base/settings.py:4135 msgid "You have to require invoice addresses to require for company names." msgstr "" +"Du skal kræve, at der angives en fakturaadresse for at kunne kræve, at der " +"angives et firmanavn." #: pretix/base/settings.py:4157 #, python-brace-format msgid "VAT-ID is not supported for \"{}\"." -msgstr "" +msgstr "Momsnummer understøttes ikke for \"{}\"." #: pretix/base/settings.py:4164 msgid "The last payment date cannot be before the end of presale." msgstr "Seneste betalingsdato kan ikke ligge før slutningen på forsalget." #: pretix/base/settings.py:4172 -#, fuzzy, python-brace-format -#| msgid "Please enter a valid sales channel." +#, python-brace-format msgid "The value \"{identifier}\" is not a valid sales channel." -msgstr "Indtast venligst en gyldig salgskanal." +msgstr "Værdien \"{identifier}\" er ikke en gyldig salgskanal." #: pretix/base/settings.py:4187 msgid "This needs to be disabled if other NFC-based types are active." msgstr "" +"Denne funktion skal deaktiveres, hvis andre NFC-baserede typer er aktive." #: pretix/base/shredder.py:74 pretix/base/shredder.py:77 -#, fuzzy msgid "Your event needs to be over to use this feature." -msgstr "Du skal angive landet du bor i for at bruge omvendt betalingspligt." +msgstr "Dit arrangement skal være afsluttet, før du kan bruge denne funktion." #: pretix/base/shredder.py:79 msgid "Your ticket shop needs to be offline to use this feature." -msgstr "" +msgstr "Din billetshop skal være offline for at kunne bruge denne funktion." #: pretix/base/shredder.py:257 -#, fuzzy msgid "Phone numbers" -msgstr "Minimum antal" +msgstr "Telefonnumre" #: pretix/base/shredder.py:259 msgid "This will remove all phone numbers from orders." msgstr "Dette vil fjerne alle emailadresser fra ventelisten." #: pretix/base/shredder.py:290 -#, fuzzy msgid "Emails" -msgstr "E-mailadresse" +msgstr "E-mails" #: pretix/base/shredder.py:292 msgid "" @@ -13140,9 +13238,8 @@ msgstr "" "Dette vil fjerne alle navne, mailadresser og telefonnumre fra ventelisten." #: pretix/base/shredder.py:425 -#, fuzzy msgid "Attendee info" -msgstr "Navn på deltager" +msgstr "Oplysninger om deltagere" #: pretix/base/shredder.py:427 msgid "" @@ -13153,25 +13250,27 @@ msgstr "" "det også fjerner de ændringer vi har logget ifm. disse oplysninger." #: pretix/base/shredder.py:505 -#, fuzzy msgid "Invoice addresses" -msgstr "Faktureringsadresse: navn" +msgstr "Fakturaadresser" #: pretix/base/shredder.py:508 msgid "" "This will remove all invoice addresses from orders, as well as logged " "changes to them." msgstr "" +"Dette vil slette alle fakturaadresser fra ordrer samt de ændringer, der er " +"gemt for disse." #: pretix/base/shredder.py:542 -#, fuzzy msgid "Question answers" -msgstr "Spørgsmål" +msgstr "Svar på spørgsmål" #: pretix/base/shredder.py:544 msgid "" "This will remove all answers to questions, as well as logged changes to them." msgstr "" +"Dette vil slette alle svar på spørgsmål samt de registrerede ændringer til " +"dem." #: pretix/base/shredder.py:586 msgid "" @@ -13179,15 +13278,19 @@ msgid "" "might contain personal data from the database. Invoice numbers and totals " "will be conserved." msgstr "" +"Dette vil fjerne alle PDF-filer med fakturaer samt alt tekstindhold heri, " +"der måtte indeholde personoplysninger fra databasen. Fakturanumre og samlede " +"beløb bevares." #: pretix/base/shredder.py:616 -#, fuzzy msgid "Cached ticket files" -msgstr "Opret billettyper" +msgstr "Cachelagrede billetfiler" #: pretix/base/shredder.py:618 msgid "This will remove all cached ticket files. No download will be offered." msgstr "" +"Dette vil slette alle billetfiler, der er gemt i cachen. Der vil ikke blive " +"tilbudt nogen download." #: pretix/base/shredder.py:640 msgid "" @@ -13195,6 +13298,9 @@ msgid "" "method, all data will be removed or personal data only. No download will be " "offered." msgstr "" +"Dette vil slette betalingsoplysninger. Afhængigt af betalingsmetoden slettes " +"enten alle data eller kun personoplysninger. Der tilbydes ingen mulighed for " +"at downloade oplysningerne." #: pretix/base/templates/400.html:4 pretix/base/templates/400.html:8 msgid "Bad Request" @@ -13220,9 +13326,8 @@ msgstr "Prøv igen" #: pretix/base/templates/400_hostname.html:4 #: pretix/base/templates/400_hostname.html:8 -#, fuzzy msgid "Unknown host" -msgstr "Ukendt billet" +msgstr "Ukendt host" #: pretix/base/templates/400_hostname.html:10 #, python-format @@ -13230,6 +13335,8 @@ msgid "" "Your browser told us that you want to access \"%(header_host)s\". " "Unfortunately, we don't have any content for this domain." msgstr "" +"Din browser har oplyst, at du ønsker at få adgang til \"%(header_host)s\". " +"Desværre har vi ikke noget indhold til dette domæne." #: pretix/base/templates/400_hostname.html:17 msgid "" @@ -13237,30 +13344,33 @@ msgid "" "probably caused due to the fact that either your configuration includes the " "wrong site URL or your reverse proxy is sending the wrong header." msgstr "" +"Det ser ud til, at dette er en ny installation af pretix. Denne " +"fejlmeddelelse skyldes sandsynligvis, at din konfiguration enten indeholder " +"en forkert side-URL, eller at din reverse proxy sender en forkert header." #: pretix/base/templates/400_hostname.html:24 -#, fuzzy msgid "Expected host according to configuration" -msgstr "Eksisterende app-konfigurationer" +msgstr "Forventet host i henhold til konfigurationen" #: pretix/base/templates/400_hostname.html:26 -#, fuzzy msgid "Received headers" -msgstr "Gennemse bestilling" +msgstr "Modtagne overskrifter" #: pretix/base/templates/400_hostname.html:32 msgid "ignored" -msgstr "" +msgstr "ignoreret" #: pretix/base/templates/400_hostname.html:35 msgid "Derived host from headers" -msgstr "" +msgstr "Udledt hostnavn fra overskrifter" #: pretix/base/templates/400_hostname.html:40 msgid "" "If you just configured this as a domain for your ticket shop, you now need " "to set this up as a \"custom domain\" in your organizer account." msgstr "" +"Hvis du netop har konfigureret dette som et domæne til din billetshop, skal " +"du nu indstille det som et \"brugerdefineret domæne\" på din arrangørkonto." #: pretix/base/templates/403.html:4 pretix/base/templates/403.html:8 msgid "Permission denied" @@ -13338,17 +13448,20 @@ msgstr "" msgid "" "You have requested us to cancel an event which includes a larger bulk-refund:" msgstr "" +"Du har bedt os om at aflyse et arrangement, der indebærer en større samlet " +"refusion:" #: pretix/base/templates/pretixbase/email/cancel_confirm.txt:6 -#, fuzzy msgid "Estimated refund amount" -msgstr "Tilbagebetal bestilling" +msgstr "Anslået refusionsbeløb" #: pretix/base/templates/pretixbase/email/cancel_confirm.txt:8 msgid "" "Please confirm that you want to proceed by coping the following confirmation " "code into the cancellation form:" msgstr "" +"Bekræft venligst, at du ønsker at fortsætte ved at indsætte følgende " +"bekræftelseskode i afmeldingsformularen:" #: pretix/base/templates/pretixbase/email/email_footer.html:3 #, python-format @@ -13356,44 +13469,45 @@ msgid "powered by pretix" msgstr "drevet af pretix" #: pretix/base/templates/pretixbase/email/export_failed.txt:2 -#, fuzzy msgid "Your export failed." -msgstr "Opret ny momsregel" +msgstr "Din eksport mislykkedes." #: pretix/base/templates/pretixbase/email/export_failed.txt:4 -#, fuzzy msgid "Reason:" -msgstr "Tilbagebetal bestilling" +msgstr "Begrundelse:" #: pretix/base/templates/pretixbase/email/export_failed.txt:7 msgid "If your export fails five times in a row, it will no longer be sent." msgstr "" +"Hvis din eksport mislykkes fem gange i træk, vil den ikke længere blive " +"sendt." #: pretix/base/templates/pretixbase/email/export_failed.txt:10 -#, fuzzy msgid "Configuration link:" -msgstr "Bekræftelse afventer" +msgstr "Link til konfiguration:" #: pretix/base/templates/pretixbase/email/notification.html:55 #: pretix/base/templates/pretixbase/email/notification.txt:14 msgid "You receive these emails based on your notification settings." msgstr "" +"Du modtager disse e-mails i henhold til dine indstillinger for " +"notifikationer." #: pretix/base/templates/pretixbase/email/notification.html:57 msgid "Click here to view and change your notification settings" -msgstr "" +msgstr "Klik her for at se og ændre dine notifikationsindstillinger" #: pretix/base/templates/pretixbase/email/notification.html:60 msgid "Click here disable all notifications immediately." -msgstr "" +msgstr "Klik her for straks at deaktivere alle notifikationer." #: pretix/base/templates/pretixbase/email/notification.txt:15 msgid "Click here to view and change your notification settings:" -msgstr "" +msgstr "Klik her for at se og ændre dine notifikationsindstillinger:" #: pretix/base/templates/pretixbase/email/notification.txt:17 msgid "Click here disable all notifications immediately:" -msgstr "" +msgstr "Klik her for straks at deaktivere alle notifikationer:" #: pretix/base/templates/pretixbase/email/order_details.html:7 msgid "" @@ -13447,10 +13561,8 @@ msgstr "Bestillingsdetaljer" #: pretix/base/templates/pretixbase/email/order_details.html:136 #: pretix/presale/templates/pretixpresale/event/base.html:223 #: pretix/presale/templates/pretixpresale/organizers/base.html:101 -#, fuzzy -#| msgid "Contact:" msgid "Contact" -msgstr "Kontakt:" +msgstr "Kontakt" #: pretix/base/templates/pretixbase/email/shred_completed.txt:2 #, python-format -- 2.49.1 From 4767cb38fc9d7afe10eae8ed2441517ca5bf19b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandra=20Rial=20P=C3=A9rez?= Date: Tue, 21 Apr 2026 10:45:01 +0200 Subject: [PATCH 088/107] Translations: Update Galician Currently translated at 17.6% (1111 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/gl/ powered by weblate --- src/pretix/locale/gl/LC_MESSAGES/django.po | 66 ++++++++++++---------- 1 file changed, 37 insertions(+), 29 deletions(-) diff --git a/src/pretix/locale/gl/LC_MESSAGES/django.po b/src/pretix/locale/gl/LC_MESSAGES/django.po index da5dd5bf1..f3153861f 100644 --- a/src/pretix/locale/gl/LC_MESSAGES/django.po +++ b/src/pretix/locale/gl/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-03-02 21:00+0000\n" +"PO-Revision-Date: 2026-04-21 08:45+0000\n" "Last-Translator: Sandra Rial Pérez \n" "Language-Team: Galician \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.16.1\n" +"X-Generator: Weblate 5.17\n" #: pretix/_base_settings.py:87 msgid "English" @@ -15838,14 +15838,12 @@ msgid "Has valid membership" msgstr "Membresía del equipo" #: pretix/control/forms/filter.py:1827 -#, fuzzy msgid "Shop live" msgstr "Tienda en vivo" #: pretix/control/forms/filter.py:1829 -#, fuzzy msgid "Shop not live" -msgstr "Tienda no en vivo" +msgstr "Non mercar en directo" #: pretix/control/forms/filter.py:1832 #, fuzzy @@ -16095,9 +16093,8 @@ msgid "Device status" msgstr "Dispositivos" #: pretix/control/forms/filter.py:2771 -#, fuzzy msgid "Active devices" -msgstr "Todas las facturas" +msgstr "Dispositivos activos" #: pretix/control/forms/filter.py:2772 #, fuzzy @@ -16181,7 +16178,6 @@ msgid "Perform update checks" msgstr "Realizar verificaciones de actualización" #: pretix/control/forms/global_settings.py:123 -#, fuzzy msgid "" "During the update check, pretix will report an anonymous, unique " "installation ID, the current version of pretix and your installed plugins " @@ -16190,13 +16186,12 @@ msgid "" "any IP addresses and we will not know who you are or where to find your " "instance. You can disable this behavior here at any time." msgstr "" -"Durante el chequeo de actualización, pretix reportará un ID de instalación " -"único y anónimo, la versión actual de pretix y sus plugins instalados y el " -"número de eventos activos e inactivos en su instalación a los servidores " -"operados por los desarrolladores de pretix. Sólo almacenaremos datos " -"anónimos, nunca direcciones IP y no sabremos quién es usted ni dónde " -"encontrar su instancia. Puede desactivar este comportamiento en cualquier " -"momento." +"Durante a comprobación de actualizacións, pretix informará aos servidores " +"operados polos desenvolvedores de pretix dun ID de instalación único e " +"anónimo, a versión actual de pretix e os complementos instalados, así como o " +"número de eventos activos e inactivos na instalación. Só almacenaremos datos " +"anónimos, nunca enderezos IP, e non saberemos quen es nin onde atopar a túa " +"instancia. Podes desactivar este comportamento aquí en calquera momento." #: pretix/control/forms/global_settings.py:131 #, fuzzy @@ -16554,15 +16549,15 @@ msgid "" msgstr "" #: pretix/control/forms/item.py:927 -#, fuzzy, python-format +#, python-format msgid "" "The variation \"%s\" cannot be deleted because it has already been ordered " "by a user or currently is in a user's cart. Please set the variation as " "\"inactive\" instead." msgstr "" -"La variación \"%s\" no se puede borrar porque ya ha sido pedida por un " -"usuario o está actualmente en la cesta de un usuario. En su lugar, configure " -"la variación como \"inactiva\"." +"A variación \"%s\" non se pode eliminar porque xa foi solicitada por un " +"usuario ou está actualmente no carriño dun usuario. Defina a variación como " +"\"inactiva\"." #: pretix/control/forms/item.py:1004 #, fuzzy @@ -16607,7 +16602,6 @@ msgstr "Agregar producto" #: pretix/control/forms/item.py:1246 pretix/control/forms/orders.py:379 #: pretix/control/forms/orders.py:568 -#, fuzzy msgid "inactive" msgstr "inactivo" @@ -16770,6 +16764,13 @@ msgid "" "deadline arrives, since we expect that you want to collect the amount " "somehow and not auto-cancel the order." msgstr "" +"Se marcas esta caixa, este pedido comportarase como un pedido pagado para a " +"maioría dos fins, mesmo que aínda non estea pagado. Isto significa que o " +"cliente xa pode descargar e usar entradas independentemente da configuración " +"do evento e que algúns complementos poden tratar o pedido como pagado. Se " +"marcas isto, este pedido non se marcará como \"caducado\" automaticamente se " +"chega a data límite de pago, xa que agardamos que queiras cobrar o importe " +"dalgún xeito e non cancelar automaticamente o pedido." #: pretix/control/forms/orders.py:94 #, fuzzy @@ -16843,6 +16844,9 @@ msgid "" "Will be included in the notification email when the respective placeholder " "is present in the configured email text." msgstr "" +"Incluirase no correo electrónico de notificación cando o marcador de " +"posición respectivo estea presente no texto do correo electrónico " +"configurado." #: pretix/control/forms/orders.py:204 msgid "" @@ -17071,6 +17075,8 @@ msgid "" "Will be ignored if tickets exceed a given size limit to ensure email " "deliverability." msgstr "" +"Ignorarase se os tíckets superan un límite de tamaño determinado para " +"garantir a entrega por correo electrónico." #: pretix/control/forms/orders.py:742 #, fuzzy @@ -17112,9 +17118,9 @@ msgid "Do nothing and keep the order as it is." msgstr "No hagas nada y mantén el orden como está." #: pretix/control/forms/orders.py:836 -#, fuzzy, python-brace-format +#, python-brace-format msgid "The refund amount needs to be positive and less than {}." -msgstr "El importe del reembolso debe ser positivo e inferior a {}." +msgstr "O importe do reembolso debe ser positivo e inferior a {}." #: pretix/control/forms/orders.py:842 #, fuzzy @@ -17334,6 +17340,8 @@ msgstr "" #: pretix/control/forms/organizer.py:706 msgid "Sensitive emails like password resets will not be sent in Bcc." msgstr "" +"Os correos electrónicos confidenciais, como os de restablecemento de " +"contrasinal, non se enviarán en Cco." #: pretix/control/forms/organizer.py:716 #, fuzzy @@ -17432,6 +17440,9 @@ msgid "" "verified to really belong the the user. If this can't be guaranteed, " "security issues might arise." msgstr "" +"Asumiremos que todos os enderezos de correo electrónico recibidos do " +"provedor de SSO se verifican para que realmente pertenzan ao usuario. Se " +"isto non se pode garantir, poderían xurdir problemas de seguridade." #: pretix/control/forms/organizer.py:1222 #, fuzzy @@ -17496,7 +17507,7 @@ msgstr "Xa existe un recibo con este código." #: pretix/control/forms/organizer.py:1391 msgid "Events with active plugin" -msgstr "" +msgstr "Eventos con plugin activo" #: pretix/control/forms/renderers.py:56 #: pretix/control/templates/pretixcontrol/items/question_edit.html:139 @@ -17804,9 +17815,8 @@ msgid "Select a valid choice." msgstr "Por favor, seleccione una cuota." #: pretix/control/forms/waitinglist.py:107 -#, fuzzy msgid "Only includes active products." -msgstr "Productos activos" +msgstr "Só inclúe produtos activos." #: pretix/control/forms/waitinglist.py:115 #, fuzzy @@ -17815,9 +17825,8 @@ msgid "A voucher for this waiting list entry was already sent out." msgstr "Xa existe un recibo con este código." #: pretix/control/forms/waitinglist.py:125 -#, fuzzy msgid "The selected product is not active." -msgstr "El producto seleccionado ha sido desactivado." +msgstr "O produto seleccionado non está activo." #: pretix/control/logdisplay.py:73 pretix/control/logdisplay.py:83 #, fuzzy @@ -30357,7 +30366,6 @@ msgid "Regular ticket" msgstr "ticket regular" #: pretix/control/views/event.py:1722 -#, fuzzy msgid "Reduced ticket" msgstr "Entrada reducida" @@ -37416,7 +37424,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:265 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:338 msgid "The price of this product was reduced because of an automatic discount." -msgstr "" +msgstr "O prezo deste produto reduciuse debido a un desconto automático." #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:269 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:342 -- 2.49.1 From 90800f219b8a71457d08b6eff20631375a2bda39 Mon Sep 17 00:00:00 2001 From: Nikolai Date: Tue, 21 Apr 2026 11:22:38 +0200 Subject: [PATCH 089/107] Translations: Update Danish Currently translated at 54.3% (3414 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/ powered by weblate --- src/pretix/locale/da/LC_MESSAGES/django.po | 392 ++++++++++++--------- 1 file changed, 222 insertions(+), 170 deletions(-) diff --git a/src/pretix/locale/da/LC_MESSAGES/django.po b/src/pretix/locale/da/LC_MESSAGES/django.po index 79618d20b..3aa89d2b4 100644 --- a/src/pretix/locale/da/LC_MESSAGES/django.po +++ b/src/pretix/locale/da/LC_MESSAGES/django.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-04-21 08:45+0000\n" +"PO-Revision-Date: 2026-04-21 09:33+0000\n" "Last-Translator: Nikolai \n" "Language-Team: Danish \n" @@ -642,7 +642,7 @@ msgstr "Kundekonto er blevet ændret!" #: pretix/api/webhooks.py:466 msgid "Customer account anonymized" -msgstr "Kondekonto anonymiseret" +msgstr "Kundekonto anonymiseret" #: pretix/api/webhooks.py:470 msgid "Gift card added" @@ -1283,7 +1283,7 @@ msgstr "Alle datoer" #: pretix/base/exporters/customers.py:49 pretix/control/navigation.py:645 #: pretix/control/templates/pretixcontrol/organizers/edit.html:132 msgid "Customer accounts" -msgstr "Kondekonti" +msgstr "Kundekonti" #: pretix/base/exporters/customers.py:50 msgctxt "export_category" @@ -13584,37 +13584,54 @@ msgid "" "\n" "Your %(instance)s team\n" msgstr "" +"Hej,\n" +"\n" +"vi bekræfter hermed, at følgende datadestruktionsopgave er afsluttet:\n" +"\n" +"Arrangør: %(organizer)s\n" +"\n" +"Begivenhed: %(event)s\n" +"\n" +"Dataudvælgelse: %(shredders)s\n" +"\n" +"Starttidspunkt: %(start_time)s (nye data tilføjet efter dette tidspunkt er " +"muligvis ikke blevet slettet)\n" +"\n" +"Med venlig hilsen,\n" +"\n" +"Dit %(instance)s-team\n" #: pretix/base/templates/pretixbase/forms/widgets/checkbox_sales_channel_option.html:16 msgid "" "This sales channel cannot be used properly since the respective plugin is " "not active for this event." msgstr "" +"Denne salgskanal kan ikke bruges korrekt, da det pågældende plugin ikke er " +"aktiveret for denne begivenhed." #: pretix/base/templates/pretixbase/forms/widgets/portrait_image.html:10 msgid "Upload photo" -msgstr "" +msgstr "Upload foto" #: pretix/base/templates/pretixbase/forms/widgets/reldate.html:14 #, python-format msgid "%(number)s days %(relation)s %(relation_to)s" -msgstr "" +msgstr "%(number)s dage %(relation)s %(relation_to)s" #: pretix/base/templates/pretixbase/forms/widgets/reldatetime.html:14 #, python-format msgid "%(number)s minutes %(relation)s %(relation_to)s" -msgstr "" +msgstr "%(number)s minutter %(relation)s %(relation_to)s" #: pretix/base/templates/pretixbase/forms/widgets/reldatetime.html:18 #, python-format msgid "%(number)s days %(relation)s %(relation_to)s at %(time_of_day)s" -msgstr "" +msgstr "%(number)s dage %(relation)s %(relation_to)s på %(time_of_day)s" #: pretix/base/templates/pretixbase/redirect.html:5 #: pretix/base/templates/pretixbase/redirect.html:9 -#, fuzzy msgid "Redirect" -msgstr "Indløsninger" +msgstr "Omdiriger" #: pretix/base/templates/pretixbase/redirect.html:11 #, python-format @@ -13622,31 +13639,33 @@ msgid "" "The link you clicked on wants to redirect you to a destination on the " "website %(host)s." msgstr "" +"Det link, du har klikket på, vil omdirigere dig til en side på webstedet %" +"(host)s." #: pretix/base/templates/pretixbase/redirect.html:14 msgid "Please only proceed if you trust this website to be safe." -msgstr "" +msgstr "Fortsæt kun, hvis du er sikker på, at denne hjemmeside er sikker." #: pretix/base/templates/pretixbase/redirect.html:20 -#, fuzzy, python-format +#, python-format msgid "Proceed to %(host)s" -msgstr "Gå til kassen" +msgstr "Gå videre til %(host)s" #: pretix/base/templates/source.html:5 pretix/base/templates/source.html:9 -#, fuzzy msgid "Source code" -msgstr "Voucherkode" +msgstr "Kildekode" #: pretix/base/templates/source.html:10 msgid "" "This site is powered by free software. If you want to read the license terms " "or obtain the source code, follow these links or instructions:" msgstr "" +"Dette websted kører på fri software. Hvis du vil læse licensbetingelserne " +"eller hente kildekoden, skal du følge disse links eller anvisninger:" #: pretix/base/ticketoutput.py:182 -#, fuzzy msgid "Enable ticket format" -msgstr "Aktiver betalingsmetode" +msgstr "Aktivér billetformat" #: pretix/base/ticketoutput.py:200 msgid "Download ticket" @@ -13868,12 +13887,13 @@ msgid "" "automatically because the event is over and no end of presale has been " "configured" msgstr "" +"automatisk, fordi arrangementet er afsluttet, og der ikke er angivet en " +"slutdato for forsalget" #: pretix/base/timeline.py:119 -#, fuzzy msgctxt "timeline" msgid "Customers can no longer modify their order information" -msgstr "Tillad brugere at annullere ubetalte bestillinger" +msgstr "Kunder kan ikke længere ændre deres ordreoplysninger" #: pretix/base/timeline.py:133 msgctxt "timeline" @@ -13881,94 +13901,90 @@ msgid "No more payments can be completed" msgstr "Der kan ikke afsluttes flere betalinger" #: pretix/base/timeline.py:146 -#, fuzzy msgctxt "timeline" msgid "Tickets can be downloaded" -msgstr "Billetdownload" +msgstr "Billetter kan downloades" #: pretix/base/timeline.py:159 -#, fuzzy msgctxt "timeline" msgid "Customers can no longer cancel free or unpaid orders" -msgstr "Tillad brugere at annullere ubetalte bestillinger" +msgstr "Kunder kan ikke længere annullere gratis eller ubetalte ordrer" #: pretix/base/timeline.py:172 -#, fuzzy msgctxt "timeline" msgid "Customers can no longer cancel paid orders" -msgstr "Tillad brugere at annullere ubetalte bestillinger" +msgstr "Kunder kan ikke længere annullere betalte ordrer" #: pretix/base/timeline.py:185 -#, fuzzy msgctxt "timeline" msgid "Customers can no longer make changes to their orders" -msgstr "Tillad brugere at annullere ubetalte bestillinger" +msgstr "Kunder kan ikke længere ændre deres ordrer" #: pretix/base/timeline.py:198 -#, fuzzy msgctxt "timeline" msgid "Waiting list is disabled" -msgstr "Ventelisteplads" +msgstr "Ventelisten er deaktiveret" #: pretix/base/timeline.py:213 msgctxt "timeline" msgid "Download reminders are being sent out" -msgstr "" +msgstr "Der udsendes påmindelser om download" #: pretix/base/timeline.py:227 pretix/base/timeline.py:252 #: pretix/base/timeline.py:306 -#, fuzzy, python-brace-format +#, python-brace-format msgctxt "timeline" msgid "Product \"{name}\" becomes available" -msgstr "Produktnavn og variant" +msgstr "Produktet \"{name}\" er nu tilgængeligt" #: pretix/base/timeline.py:239 pretix/base/timeline.py:265 #: pretix/base/timeline.py:318 #, python-brace-format msgctxt "timeline" msgid "Product \"{name}\" becomes unavailable" -msgstr "" +msgstr "Produktet \"{name}\" er ikke længere tilgængeligt" #: pretix/base/timeline.py:280 -#, fuzzy, python-brace-format +#, python-brace-format msgctxt "timeline" msgid "Discount \"{name}\" becomes active" -msgstr "Produktnavn og variant" +msgstr "Rabatten \"{name}\" træder i kraft" #: pretix/base/timeline.py:292 -#, fuzzy, python-brace-format +#, python-brace-format msgctxt "timeline" msgid "Discount \"{name}\" becomes inactive" -msgstr "Produktnavn og variant" +msgstr "Rabatten \"{name}\" udløber" #: pretix/base/timeline.py:335 -#, fuzzy, python-brace-format +#, python-brace-format msgctxt "timeline" msgid "Product variation \"{product} – {variation}\" becomes available" -msgstr "Produktnavn og variant" +msgstr "Produktvarianten \"{product} – {variation}\" bliver tilgængelig" #: pretix/base/timeline.py:350 -#, fuzzy, python-brace-format +#, python-brace-format msgctxt "timeline" msgid "Product variation \"{product} – {variation}\" becomes unavailable" -msgstr "Produktnavn og variant" +msgstr "" +"Produktvarianten \"{product} – {variation}\" er ikke længere tilgængelig" #: pretix/base/timeline.py:382 -#, fuzzy, python-brace-format +#, python-brace-format msgctxt "timeline" msgid "Payment provider \"{name}\" becomes active" -msgstr "Produktnavn og variant" +msgstr "Betalingsudbyderen \"{name}\" bliver aktiv" #: pretix/base/timeline.py:401 #, python-brace-format msgctxt "timeline" msgid "Payment provider \"{name}\" can no longer be selected" -msgstr "" +msgstr "Betalingsudbyderen \"{name}\" kan ikke længere vælges" #: pretix/base/validators.py:51 #, python-format msgid "This field has an invalid value: %(value)s." -msgstr "" +msgstr "Dette felt indeholder en ugyldig værdi: %(value)s." #: pretix/base/views/errors.py:48 msgid "" @@ -13977,6 +13993,10 @@ msgid "" "required for security reasons, to ensure that your browser is not being " "hijacked by third parties." msgstr "" +"Du ser denne besked, fordi dette HTTPS-websted kræver, at din webbrowser " +"sender en \"Referer-header\", men der blev ikke sendt nogen. Denne header er " +"påkrævet af sikkerhedsmæssige årsager for at sikre, at din browser ikke " +"bliver kapret af tredjeparter." #: pretix/base/views/errors.py:53 msgid "" @@ -13984,6 +14004,9 @@ msgid "" "enable them, at least for this site, or for HTTPS connections, or for 'same-" "origin' requests." msgstr "" +"Hvis du har indstillet din browser til at deaktivere \"Referer\"-headere, " +"bedes du genaktivere dem, i det mindste for dette websted, for HTTPS-" +"forbindelser eller for anmodninger fra samme oprindelse." #: pretix/base/views/errors.py:58 msgid "" @@ -13991,57 +14014,52 @@ msgid "" "submitting forms. This cookie is required for security reasons, to ensure " "that your browser is not being hijacked by third parties." msgstr "" +"Du ser denne besked, fordi dette websted kræver en CSRF-cookie, når du " +"indsender formularer. Denne cookie er nødvendig af sikkerhedsmæssige årsager " +"for at sikre, at din browser ikke bliver kapret af tredjeparter." #: pretix/base/views/errors.py:63 msgid "" "If you have configured your browser to disable cookies, please re-enable " "them, at least for this site, or for 'same-origin' requests." msgstr "" +"Hvis du har indstillet din browser til at blokere cookies, bedes du " +"genaktivere dem, i det mindste for dette websted eller for anmodninger fra " +"samme domæne." #. Translators: Only translate to French (IDE) and Italien (IDI), otherwise keep the same #: pretix/base/views/js_helpers.py:44 -#, fuzzy -#| msgid "ID" msgctxt "tax_id_swiss" msgid "UID" -msgstr "ID" +msgstr "UID" #. Translators: Translate to only "P.IVA" in Italian, keep second part as-is in other languages #: pretix/base/views/js_helpers.py:54 -#, fuzzy -#| msgid "VAT ID" msgctxt "tax_id_italy" msgid "VAT ID / P.IVA" -msgstr "CVR-nr." +msgstr "VAT ID" #. Translators: Translate to only "ΑΦΜ" in Greek #: pretix/base/views/js_helpers.py:56 -#, fuzzy -#| msgid "VAT ID" msgctxt "tax_id_greece" msgid "VAT ID / TIN" -msgstr "CVR-nr." +msgstr "VAT ID" #. Translators: Translate to only "NIF" in Spanish #: pretix/base/views/js_helpers.py:58 -#, fuzzy -#| msgid "VAT ID" msgctxt "tax_id_spain" msgid "VAT ID / NIF" -msgstr "CVR-nr." +msgstr "VAT ID" #. Translators: Translate to only "NIF" in Portuguese #: pretix/base/views/js_helpers.py:60 -#, fuzzy -#| msgid "VAT ID" msgctxt "tax_id_portugal" msgid "VAT ID / NIF" -msgstr "CVR-nr." +msgstr "VAT ID" #: pretix/base/views/tasks.py:185 -#, fuzzy msgid "An unexpected error has occurred, please try again later." -msgstr "Siden stødte på en uventet intern fejl. Prøv venligst igen." +msgstr "Der er opstået en uventet fejl. Prøv igen senere." #: pretix/base/views/tasks.py:188 msgid "The task has been completed." @@ -14050,16 +14068,15 @@ msgstr "Opgaven er fuldført." #: pretix/control/forms/__init__.py:206 #, python-brace-format msgid "Please do not upload files larger than {size}!" -msgstr "" +msgstr "Du må ikke uploade filer, der er større end {size}!" #: pretix/control/forms/__init__.py:228 msgid "Filetype not allowed!" msgstr "Filtype ikke tilladt!" #: pretix/control/forms/__init__.py:331 -#, fuzzy msgid "Community translations" -msgstr "Ikke-afstemte transaktioner" +msgstr "Brugeroversættelser" #: pretix/control/forms/__init__.py:333 #, python-brace-format @@ -14069,16 +14086,23 @@ msgid "" "translated and will show in English instead. You can help translating." msgstr "" +"Disse oversættelser vedligeholdes ikke af pretix-teamet. Vi kan ikke " +"garantere, at de er korrekte, og nye eller nyligt ændrede funktioner er " +"muligvis ikke oversat og vises i stedet på engelsk. Du kan hjælpe med at oversætte." #: pretix/control/forms/__init__.py:344 msgid "Development only" -msgstr "" +msgstr "Kun udvikling" #: pretix/control/forms/__init__.py:345 msgid "" "These translations are still in progress. These languages can currently only " "be selected on development installations of pretix, not in production." msgstr "" +"Disse oversættelser er stadig under udarbejdelse. Disse sprog kan i " +"øjeblikket kun vælges på udviklingsversioner af pretix, ikke i " +"produktionsmiljøet." #: pretix/control/forms/checkin.py:129 msgid "" @@ -14086,40 +14110,41 @@ msgid "" "must select a specific set of products for this check-in list, only " "including the possible add-on products." msgstr "" +"Hvis du tillader indtjekning af tillægsbilletter ved at scanne " +"hovedbilletten, skal du vælge et bestemt sæt produkter til denne " +"indtjekningsliste, som udelukkende skal omfatte de mulige tillægsprodukter." #: pretix/control/forms/checkin.py:176 msgid "Barcode" -msgstr "" +msgstr "Stregkode" #: pretix/control/forms/checkin.py:179 -#, fuzzy msgid "Check-in time" -msgstr "Tjek-ind-liste" +msgstr "Indtjekningstid" #: pretix/control/forms/checkin.py:183 -#, fuzzy msgid "Check-in type" -msgstr "Tjek-ind-liste" +msgstr "Indtjekningstype" #: pretix/control/forms/checkin.py:187 msgid "Allow check-in of unpaid order (if check-in list permits it)" msgstr "" +"Tillad indtjekning af ubetalte ordrer (hvis indtjekningslisten tillader det)" #: pretix/control/forms/checkin.py:191 -#, fuzzy msgid "Support for check-in questions" -msgstr "Ikke tjekket ind" +msgstr "Hjælp til spørgsmål om check-in" #: pretix/control/forms/checkin.py:197 pretix/control/forms/checkin.py:213 #: pretix/control/forms/filter.py:2550 pretix/control/forms/filter.py:2592 #: pretix/control/forms/filter.py:2757 -#, fuzzy msgid "All gates" -msgstr "Alle datoer" +msgstr "Alle porte" #: pretix/control/forms/checkin.py:222 msgid "I am sure that the check-in state of the entire event should be reset." msgstr "" +"Jeg er sikker på, at check-in-status for hele arrangementet bør nulstilles." #: pretix/control/forms/event.py:92 msgid "Use languages" @@ -14134,12 +14159,12 @@ msgid "This is an event series" msgstr "Dette er en arrangementsrække" #: pretix/control/forms/event.py:135 pretix/control/forms/event.py:363 -#, fuzzy -#| msgid "You do not have sufficient permission to perform this export." msgid "" "You do not have a sufficient level of access on the event you selected to " "copy it to the desired organizer." -msgstr "Du har ikke tilstrækkelige rettigheder til at udføre denne eksport." +msgstr "" +"Du har ikke tilstrækkelige rettigheder til det valgte arrangement til at " +"kopiere det til den ønskede arrangør." #: pretix/control/forms/event.py:143 msgid "" @@ -14154,11 +14179,11 @@ msgstr "Arrangements tidszone" #: pretix/control/forms/event.py:154 msgid "I don't want to specify taxes now" -msgstr "" +msgstr "Jeg vil ikke angive skatter nu" #: pretix/control/forms/event.py:155 msgid "You can always configure tax rates later." -msgstr "" +msgstr "Du kan altid indstille skattesatserne senere." #: pretix/control/forms/event.py:159 msgid "Sales tax rate" @@ -14170,10 +14195,14 @@ msgid "" "applicable tax rate here in percent. If you have a more complicated tax " "situation, you can add more tax rates and detailed configuration later." msgstr "" +"Skal du betale moms på dine billetter? I så fald skal du indtaste den " +"gældende momssats her i procent. Hvis din skattesituation er mere " +"kompliceret, kan du tilføje flere momssatser og foretage en mere detaljeret " +"konfiguration senere." #: pretix/control/forms/event.py:169 msgid "Grant access to team" -msgstr "" +msgstr "Giv adgang til teamet" #: pretix/control/forms/event.py:170 msgid "" @@ -14181,10 +14210,14 @@ msgid "" "have permission to edit all events under this organizer. Please select one " "of your existing teams that will be granted access to this event." msgstr "" +"Du må gerne oprette begivenheder under denne arrangør, men du har ikke " +"tilladelse til at redigere alle begivenheder under denne arrangør. Vælg " +"venligst et af dine eksisterende hold, som skal have adgang til denne " +"begivenhed." #: pretix/control/forms/event.py:175 msgid "Create a new team for this event with me as the only member" -msgstr "" +msgstr "Opret et nyt hold til denne begivenhed med mig som eneste medlem" #: pretix/control/forms/event.py:220 pretix/control/forms/event.py:436 msgid "" @@ -14196,7 +14229,7 @@ msgstr "" #: pretix/control/forms/event.py:246 msgid "Your default locale must be specified." -msgstr "" +msgstr "Din standardlokalitet skal angives." #: pretix/control/forms/event.py:250 #, python-brace-format @@ -14204,12 +14237,16 @@ msgid "" "You have not specified a tax rate. If you do not want us to compute sales " "taxes, please check \"{field}\" above." msgstr "" +"Du har ikke angivet en skattesats. Hvis du ikke ønsker, at vi beregner moms, " +"skal du markere \"{field}\" ovenfor." #: pretix/control/forms/event.py:260 msgid "" "You cannot choose a team that would give you more access than you have on " "the event you are copying." msgstr "" +"Du kan ikke vælge et team, der giver dig større adgang, end du har til den " +"begivenhed, du kopierer." #: pretix/control/forms/event.py:344 msgid "Copy configuration from" @@ -14225,41 +14262,34 @@ msgid "" "You cannot choose an event on which you have less access than the team you " "selected in the previous step." msgstr "" +"Du kan ikke vælge en begivenhed, hvor du har færre rettigheder end det hold, " +"du valgte i det forrige trin." #: pretix/control/forms/event.py:387 pretix/control/forms/item.py:1304 #: pretix/control/forms/subevents.py:411 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Default ({value})" -msgstr "Standardsprog" +msgstr "Standard ({value})" #: pretix/control/forms/event.py:431 msgid "The currency cannot be changed because orders already exist." -msgstr "" +msgstr "Valutaen kan ikke ændres, da der allerede findes ordrer." #: pretix/control/forms/event.py:442 pretix/control/forms/event.py:455 msgid "Domain" -msgstr "" +msgstr "Domæne" #: pretix/control/forms/event.py:446 -#, fuzzy -#| msgid "" -#| "You can set up possible filters as meta properties in your organizer " -#| "settings." msgid "You can configure this in your organizer settings." -msgstr "" -"Du kan oprette mulige filtre som meta-egenskaber i dine " -"arrangørindstillinger." +msgstr "Du kan indstille dette i dine arrangør-indstillinger." #: pretix/control/forms/event.py:456 -#, fuzzy -#| msgid "You can now login using your new password." msgid "You can add more domains in your organizer account." -msgstr "Du kan nu logge ind med din nye adgangskode." +msgstr "Du kan tilføje flere domæner til din arrangør-konto." #: pretix/control/forms/event.py:457 -#, fuzzy msgid "Same as organizer account" -msgstr "Navn" +msgstr "Samme som arrangørens konto" #: pretix/control/forms/event.py:569 #, python-brace-format @@ -14267,11 +14297,12 @@ msgid "" "A validation error has occurred on a setting that is not part of this form: " "{error}" msgstr "" +"Der er opstået en valideringsfejl i en indstilling, der ikke hører til denne " +"formular: {error}" #: pretix/control/forms/event.py:587 pretix/control/forms/organizer.py:579 -#, fuzzy msgid "Name format" -msgstr "Betalingsoplysninger" +msgstr "Navneformat" #: pretix/control/forms/event.py:588 pretix/control/forms/organizer.py:580 msgid "" @@ -14279,40 +14310,44 @@ msgid "" "already received orders might lead to unexpected behavior when sorting or " "changing names." msgstr "" +"Dette angiver, hvordan pretix skal spørge om menneskelige navne. Hvis du " +"ændrer dette, efter at du allerede har modtaget ordrer, kan det medføre " +"uventet adfærd, når du sorterer eller ændrer navne." #: pretix/control/forms/event.py:593 pretix/control/forms/organizer.py:585 msgid "Allowed titles" -msgstr "" +msgstr "Tilladte titler" #: pretix/control/forms/event.py:594 pretix/control/forms/organizer.py:586 msgid "" "If the naming scheme you defined above allows users to input a title, you " "can use this to restrict the set of selectable titles." msgstr "" +"Hvis det navngivningsskema, du har defineret ovenfor, giver brugerne " +"mulighed for at indtaste en titel, kan du bruge dette til at begrænse " +"udvalget af titler, der kan vælges." #: pretix/control/forms/event.py:712 pretix/control/forms/organizer.py:661 #, python-brace-format msgid "Ask for {fields}, display like {example}" -msgstr "" +msgstr "Spørg om {fields}, vis som {example}" #: pretix/control/forms/event.py:718 pretix/control/forms/organizer.py:667 -#, fuzzy msgid "Free text input" -msgstr "Fri prisindtastning" +msgstr "Fri tekstindtastning" #: pretix/control/forms/event.py:754 -#, fuzzy msgid "Do not ask" -msgstr "Kopier ikke" +msgstr "Spørg ikke" #: pretix/control/forms/event.py:755 msgid "Ask, but do not require input" -msgstr "" +msgstr "Spørg, men kræv ikke input" #: pretix/control/forms/event.py:756 #: pretix/control/templates/pretixcontrol/event/settings.html:76 msgid "Ask and require input" -msgstr "" +msgstr "Bed om og kræv input" #: pretix/control/forms/event.py:834 #, python-brace-format @@ -14324,29 +14359,25 @@ msgstr "" "voucheren udstedes." #: pretix/control/forms/event.py:871 -#, fuzzy msgid "Prices including tax" -msgstr "inkl. %(rate)s%% moms" +msgstr "Priser inkl. moms" #: pretix/control/forms/event.py:872 msgid "Recommended if you sell tickets at least partly to consumers." msgstr "" +"Anbefales, hvis du i det mindste delvist sælger billetter til forbrugere." #: pretix/control/forms/event.py:876 -#, fuzzy -#| msgctxt "reporting_timeframe" -#| msgid "All future (excluding today)" msgid "Prices excluding tax" -msgstr "Alle i fremtiden (undtaget i dag)" +msgstr "Priser ekskl. moms" #: pretix/control/forms/event.py:877 msgid "Recommended only if you sell tickets primarily to business customers." -msgstr "" +msgstr "Anbefales kun, hvis du primært sælger billetter til erhvervskunder." #: pretix/control/forms/event.py:913 -#, fuzzy msgid "Prices shown to customer" -msgstr "Annuller bestilling" +msgstr "Priser, der vises for kunden" #: pretix/control/forms/event.py:917 msgid "" @@ -14355,6 +14386,10 @@ msgid "" "product, the total tax amount can differ from when it would be computed from " "the order total." msgstr "" +"Anbefales, når elektronisk fakturering ikke er påkrævet. Hvert produkt " +"sælges til den angivne netto- og bruttopris. Ved bestillinger af mere end ét " +"produkt kan det samlede skattebeløb dog afvige fra det beløb, der ville " +"blive beregnet ud fra ordretotalen." #: pretix/control/forms/event.py:922 msgid "" @@ -14363,6 +14398,11 @@ msgid "" "may be changed to ensure correct rounding, while the net prices will be kept " "as configured. This may cause the actual payment amount to differ." msgstr "" +"Anbefales til e-fakturering, hvis du primært sælger til erhvervskunder og " +"viser priserne til kunderne ekskl. moms. Bruttoprisen på visse produkter kan " +"ændres for at sikre korrekt afrunding, mens nettopriserne forbliver uændrede " +"i henhold til konfigurationen. Dette kan medføre, at det faktiske " +"betalingsbeløb afviger." #: pretix/control/forms/event.py:928 msgid "" @@ -14371,6 +14411,10 @@ msgid "" "business customers and consumers do not receive invoices. This can cause the " "payment amount to change when the invoice address is changed." msgstr "" +"Som ovenfor, men gælder kun for erhvervskunder. For forbrugere anvendes " +"afrunding pr. linje. Anbefales, når e-fakturering kun anvendes til " +"erhvervskunder, og forbrugere ikke modtager fakturaer. Dette kan medføre, at " +"betalingsbeløbet ændres, hvis fakturaadressen ændres." #: pretix/control/forms/event.py:933 msgid "" @@ -14380,17 +14424,23 @@ msgid "" "configured whenever possible. Gross prices may still change if they are " "impossible to derive from a rounded net price." msgstr "" +"Anbefales til e-fakturering, når du primært sælger til forbrugere. Brutto- " +"eller nettoprisen på visse produkter kan ændres automatisk for at sikre " +"korrekt afrunding af ordretotalen. Systemet forsøger så vidt muligt at " +"fastholde de konfigurerede bruttopriser. Bruttopriserne kan dog stadig " +"ændres, hvis det ikke er muligt at udlede dem ud fra en afrundet nettopris." #: pretix/control/forms/event.py:1034 -#, fuzzy msgid "Generate invoices for Sales channels" -msgstr "Generer fakturaer" +msgstr "Opret fakturaer til salgskanaler" #: pretix/control/forms/event.py:1037 msgid "" "If you have enabled invoice generation in the previous setting, you can " "limit it here to specific sales channels." msgstr "" +"Hvis du har aktiveret fakturagenerering i den foregående indstilling, kan du " +"her begrænse den til bestemte salgskanaler." #: pretix/control/forms/event.py:1041 msgid "Invoice style" @@ -14410,47 +14460,53 @@ msgid "" "An invoice will be issued before payment if the customer selects one of the " "following payment methods: {list}" msgstr "" +"Der udstedes en faktura inden betaling, hvis kunden vælger en af følgende " +"betalingsmetoder: {list}" #: pretix/control/forms/event.py:1073 msgid "" "None of the currently configured payment methods will cause an invoice to be " "issued before payment." msgstr "" +"Ingen af de betalingsmetoder, der er konfigureret i øjeblikket, medfører, at " +"der udstedes en faktura før betalingen." #: pretix/control/forms/event.py:1082 -#, fuzzy msgid "Recommended" -msgstr "Split i ny bestilling" +msgstr "Anbefalet" #: pretix/control/forms/event.py:1114 msgid "The online shop must be selected to receive these emails." -msgstr "" +msgstr "Du skal vælge webshoppen for at modtage disse e-mails." #: pretix/control/forms/event.py:1130 -#, fuzzy msgid "Sales channels for checkout emails" -msgstr "Afsenderadresse for udgående e-mails" +msgstr "Salgskanaler for e-mails ved kassen" #: pretix/control/forms/event.py:1131 msgid "" "The order placed and paid emails will only be send to orders from these " "sales channels. The online shop must be enabled." msgstr "" +"E-mails om afgivne og betalte ordrer sendes kun til ordrer fra disse " +"salgskanaler. Webshoppen skal være aktiveret." #: pretix/control/forms/event.py:1142 msgid "" "This email will only be send to orders from these sales channels. The online " "shop must be enabled." msgstr "" +"Denne e-mail sendes kun til ordrer fra disse salgskanaler. Onlinebutikken " +"skal være aktiveret." #: pretix/control/forms/event.py:1150 pretix/control/forms/organizer.py:702 -#, fuzzy msgid "Bcc address" -msgstr "Din adresse" +msgstr "Bcc-adresse" #: pretix/control/forms/event.py:1152 pretix/control/forms/organizer.py:704 msgid "All emails will be sent to this address as a Bcc copy." msgstr "" +"Alle e-mails vil blive sendt til denne adresse som en skjult kopi (Bcc)." #: pretix/control/forms/event.py:1160 pretix/control/forms/organizer.py:713 msgid "Signature" @@ -14467,25 +14523,23 @@ msgstr "fx dine kontaktoplysninger" #: pretix/control/forms/event.py:1173 msgid "HTML mail renderer" -msgstr "" +msgstr "HTML-mail-renderer" #: pretix/control/forms/event.py:1178 pretix/control/forms/event.py:1205 #: pretix/control/forms/event.py:1232 pretix/control/forms/event.py:1390 -#, fuzzy msgid "Subject sent to order contact address" -msgstr "Kontaktadresse" +msgstr "Emne sendt til kontaktadressen for ordren." #: pretix/control/forms/event.py:1183 pretix/control/forms/event.py:1210 #: pretix/control/forms/event.py:1237 pretix/control/forms/event.py:1395 msgid "Text sent to order contact address" -msgstr "" +msgstr "Tekst sendt til kontaktadressen for bestillingen" #: pretix/control/forms/event.py:1188 pretix/control/forms/event.py:1215 #: pretix/control/forms/event.py:1242 pretix/control/forms/event.py:1400 #: pretix/control/forms/event.py:1445 pretix/control/forms/event.py:1475 -#, fuzzy msgid "Send an email to attendees" -msgstr "Send en ny e-mail baseret på dette" +msgstr "Send en e-mail til deltagerne" #: pretix/control/forms/event.py:1189 pretix/control/forms/event.py:1216 #: pretix/control/forms/event.py:1243 pretix/control/forms/event.py:1401 @@ -14495,20 +14549,21 @@ msgid "" "person who orders the tickets, the following email will be sent out to the " "attendees." msgstr "" +"Hvis bestillingen omfatter deltagere, hvis e-mailadresser adskiller sig fra " +"den person, der bestiller billetterne, vil følgende e-mail blive sendt til " +"deltagerne." #: pretix/control/forms/event.py:1194 pretix/control/forms/event.py:1221 #: pretix/control/forms/event.py:1248 pretix/control/forms/event.py:1406 #: pretix/control/forms/event.py:1451 pretix/control/forms/event.py:1481 -#, fuzzy msgid "Subject sent to attendees" -msgstr "Tekst (sendt af administrator)" +msgstr "Emne sendt til deltagerne" #: pretix/control/forms/event.py:1199 pretix/control/forms/event.py:1226 #: pretix/control/forms/event.py:1253 pretix/control/forms/event.py:1411 #: pretix/control/forms/event.py:1456 pretix/control/forms/event.py:1486 -#, fuzzy msgid "Text sent to attendees" -msgstr "Tekst (sendt af administrator)" +msgstr "Tekst sendt til deltagerne" #: pretix/control/forms/event.py:1264 pretix/control/forms/event.py:1338 #: pretix/control/forms/event.py:1348 pretix/control/forms/event.py:1358 @@ -14521,23 +14576,20 @@ msgid "Text" msgstr "Tekst" #: pretix/control/forms/event.py:1269 -#, fuzzy msgid "Subject (sent by admin)" -msgstr "Tekst (sendt af administrator)" +msgstr "Emne (sendt af administrator)" #: pretix/control/forms/event.py:1274 -#, fuzzy msgid "Subject (sent by admin to attendee)" -msgstr "Tekst (sendt af administrator)" +msgstr "Emne (sendt af administrator til deltager)" #: pretix/control/forms/event.py:1279 msgid "Text (sent by admin)" msgstr "Tekst (sendt af administrator)" #: pretix/control/forms/event.py:1284 -#, fuzzy msgid "Subject (requested by user)" -msgstr "Tekst (forespurgt af bruger)" +msgstr "Emne (anmodet af brugeren)" #: pretix/control/forms/event.py:1289 msgid "Text (requested by user)" @@ -14545,47 +14597,51 @@ msgstr "Tekst (forespurgt af bruger)" #: pretix/control/forms/event.py:1301 msgid "Text (if order will expire automatically)" -msgstr "" +msgstr "Tekst (hvis ordren udløber automatisk)" #: pretix/control/forms/event.py:1306 msgid "Subject (if order will expire automatically)" -msgstr "" +msgstr "Emne (hvis ordren udløber automatisk)" #: pretix/control/forms/event.py:1311 msgid "Text (if order will not expire automatically)" -msgstr "" +msgstr "Tekst (hvis ordren ikke udløber automatisk)" #: pretix/control/forms/event.py:1316 msgid "Subject (if order will not expire automatically)" -msgstr "" +msgstr "Emne (hvis ordren ikke udløber automatisk)" #: pretix/control/forms/event.py:1321 -#, fuzzy msgid "Subject (if an incomplete payment was received)" -msgstr "Betaling modtaget for din bestilling: {code}" +msgstr "Emne (hvis der er modtaget en ufuldstændig betaling)" #: pretix/control/forms/event.py:1326 -#, fuzzy msgid "Text (if an incomplete payment was received)" -msgstr "Betaling modtaget for din bestilling: {code}" +msgstr "Tekst (hvis der er modtaget en ufuldstændig betaling)" #: pretix/control/forms/event.py:1329 msgid "" "This email only applies to payment methods that can receive incomplete " "payments, such as bank transfer." msgstr "" +"Denne e-mail gælder kun for betalingsmetoder, der kan modtage ufuldstændige " +"betalinger, f.eks. bankoverførsel." #: pretix/control/forms/event.py:1371 pretix/control/forms/event.py:1380 msgid "" "This will only be used if the invoice is sent to a different email address " "or at a different time than the order confirmation." msgstr "" +"Dette vil kun blive brugt, hvis fakturaen sendes til en anden e-mailadresse " +"eller på et andet tidspunkt end ordrebekræftelsen." #: pretix/control/forms/event.py:1383 msgid "" "Formatting is not supported, as some accounting departments process mail " "automatically and do not handle formatted emails properly." msgstr "" +"Formatering understøttes ikke, da nogle regnskabsafdelinger behandler e-" +"mails automatisk og ikke kan håndtere formaterede e-mails korrekt." #: pretix/control/forms/event.py:1419 msgid "" @@ -14596,30 +14652,28 @@ msgstr "" "Hvis feltet er tomt, vil emailen aldrig blive sendt." #: pretix/control/forms/event.py:1423 -#, fuzzy msgid "Subject for received order" -msgstr "Gennemse bestilling" +msgstr "Emne for modtaget ordre" #: pretix/control/forms/event.py:1428 -#, fuzzy msgid "Text for received order" -msgstr "Gennemse bestilling" +msgstr "Tekst vedrørende modtaget ordre" #: pretix/control/forms/event.py:1433 -#, fuzzy msgid "Subject for approved order" -msgstr "Ja, annullér bestilling" +msgstr "Emne for godkendt ordre" #: pretix/control/forms/event.py:1438 -#, fuzzy msgid "Text for approved order" -msgstr "Ja, annullér bestilling" +msgstr "Tekst til godkendt ordre" #: pretix/control/forms/event.py:1441 pretix/control/forms/event.py:1459 msgid "" "This will only be sent out for non-free orders. Free orders will receive the " "free order template from below instead." msgstr "" +"Dette sendes kun ud ved ordrer, der ikke er gratis. Ved gratis ordrer " +"modtager du i stedet skabelonen til gratis ordrer nedenfor." #: pretix/control/forms/event.py:1463 #, fuzzy @@ -15090,9 +15144,8 @@ msgstr "Dato fra" #: pretix/control/forms/filter.py:1376 pretix/control/forms/filter.py:1379 #: pretix/control/forms/filter.py:1864 pretix/control/forms/filter.py:1867 #: pretix/control/forms/filter.py:2495 -#, fuzzy msgid "Date until" -msgstr "Dato og tidspunkt" +msgstr "Dato til" #: pretix/control/forms/filter.py:1383 #, fuzzy @@ -15224,10 +15277,9 @@ msgid "Date start from" msgstr "Dato" #: pretix/control/forms/filter.py:2070 -#, fuzzy msgctxt "subevent" msgid "Date start until" -msgstr "Dato og tidspunkt" +msgstr "Startdato til" #: pretix/control/forms/filter.py:2171 pretix/control/forms/filter.py:2174 #: pretix/control/templates/pretixcontrol/users/index.html:52 @@ -20012,9 +20064,9 @@ msgstr "" #: pretix/control/templates/pretixcontrol/datasync/control_order_info.html:40 #: pretix/control/templates/pretixcontrol/datasync/control_order_info.html:45 -#, fuzzy, python-format +#, python-format msgid "Waiting until %(datetime)s" -msgstr "Gyldig indtil" +msgstr "Venter indtil %(datetime)s" #: pretix/control/templates/pretixcontrol/datasync/control_order_info.html:51 #, fuzzy, python-format @@ -23411,9 +23463,9 @@ msgstr "Book fra %(start_date)s" #: pretix/control/templates/pretixcontrol/order/change.html:255 #: pretix/control/templates/pretixcontrol/order/index.html:504 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:111 -#, fuzzy, python-format +#, python-format msgid "Valid until %(datetime)s" -msgstr "Gyldig indtil" +msgstr "Gyldig indtil %(datetime)s" #: pretix/control/templates/pretixcontrol/order/change.html:260 msgid "Unconstrained" @@ -35823,9 +35875,9 @@ msgstr "Refunderingsbeløb:" #: pretix/presale/templates/pretixpresale/event/order_cancel.html:117 #: pretix/presale/templates/pretixpresale/event/order_cancel.html:138 -#, fuzzy, python-format +#, python-format msgid "Your gift card will be valid until %(expiry_date)s." -msgstr "Din kurv er blevet opdateret." +msgstr "Dit gavekort er gyldigt indtil %(expiry_date)s." #: pretix/presale/templates/pretixpresale/event/order_cancel.html:126 msgid "I want the refund as a gift card for later purchases" @@ -36472,9 +36524,9 @@ msgid "Expired since %(date)s" msgstr "Udløbet" #: pretix/presale/templates/pretixpresale/organizers/customer_giftcards.html:46 -#, fuzzy, python-format +#, python-format msgid "Valid until %(date)s" -msgstr "Gyldig indtil" +msgstr "Gyldig indtil %(date)s" #: pretix/presale/templates/pretixpresale/organizers/customer_giftcards.html:66 #, fuzzy -- 2.49.1 From bd90badc54f47cc283234c4649d6a9830e9c3b0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandra=20Rial=20P=C3=A9rez?= Date: Tue, 21 Apr 2026 11:32:56 +0200 Subject: [PATCH 090/107] Translations: Update Galician Currently translated at 19.0% (1196 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/gl/ powered by weblate --- src/pretix/locale/gl/LC_MESSAGES/django.po | 352 +++++++++++---------- 1 file changed, 183 insertions(+), 169 deletions(-) diff --git a/src/pretix/locale/gl/LC_MESSAGES/django.po b/src/pretix/locale/gl/LC_MESSAGES/django.po index f3153861f..845add9bd 100644 --- a/src/pretix/locale/gl/LC_MESSAGES/django.po +++ b/src/pretix/locale/gl/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-04-21 08:45+0000\n" +"PO-Revision-Date: 2026-04-21 09:33+0000\n" "Last-Translator: Sandra Rial Pérez \n" "Language-Team: Galician \n" @@ -18355,13 +18355,12 @@ msgid "Sending of an email has failed." msgstr "El envío de email ha fallado." #: pretix/control/logdisplay.py:550 -#, fuzzy msgid "" "The email has been sent without attached tickets since they would have been " "too large to be likely to arrive." msgstr "" -"Se ha enviado un correo electrónico para notificar al usuario que se ha " -"recibido el pedido." +"O correo electrónico enviouse sen os tíckets adxuntos xa que serían " +"demasiado grandes para que chegasen." #: pretix/control/logdisplay.py:552 #, fuzzy @@ -18419,20 +18418,18 @@ msgstr "" "ha sido cambiado." #: pretix/control/logdisplay.py:566 -#, fuzzy msgid "" "An email has been sent to notify the user that the order has been received." msgstr "" -"Se ha enviado un correo electrónico para notificar al usuario que se ha " -"recibido el pedido." +"Enviouse un correo electrónico para notificarlle ao usuario que o pedido foi " +"recibido." #: pretix/control/logdisplay.py:568 -#, fuzzy msgid "" "An email has been sent to notify the user that payment has been received." msgstr "" -"Se ha enviado un correo electrónico para notificar al usuario que se ha " -"recibido el pago." +"Enviouse un correo electrónico para notificarlle ao usuario que se recibiu o " +"pago." #: pretix/control/logdisplay.py:570 #, fuzzy @@ -18451,22 +18448,20 @@ msgstr "" "ha sido aprobado." #: pretix/control/logdisplay.py:574 -#, fuzzy msgid "" "An email has been sent to notify the user that the order has been received " "and requires payment." msgstr "" -"Se ha enviado un correo electrónico para notificar al usuario que el pedido " -"ha sido recibido y requiere pago." +"Enviouse un correo electrónico para notificarlle ao usuario que o pedido foi " +"recibido e require o pago." #: pretix/control/logdisplay.py:575 -#, fuzzy msgid "" "An email has been sent to notify the user that the order has been received " "and requires approval." msgstr "" -"Se ha enviado un correo electrónico para notificar al usuario que el pedido " -"ha sido recibido y requiere aprobación." +"Enviouse un correo electrónico para notificarlle ao usuario que o pedido foi " +"recibido e require aprobación." #: pretix/control/logdisplay.py:578 #, fuzzy @@ -19169,9 +19164,8 @@ msgid "The ticket download settings have been changed." msgstr "Se ha cambiado la configuración de descarga de tickets." #: pretix/control/logdisplay.py:843 -#, fuzzy msgid "The shop has been taken live." -msgstr "La tienda ha sido tomada en vivo." +msgstr "A tenda foi tomada en vivo." #: pretix/control/logdisplay.py:844 #, fuzzy @@ -19861,14 +19855,12 @@ msgstr "" "conectado correctamente." #: pretix/control/templates/pretixcontrol/auth/login_2fa.html:22 -#, fuzzy msgid "" "Alternatively, connect your WebAuthn device. If it has a button, touch it " "now. You might have to unplug the device and plug it back in again." msgstr "" -"Alternativamente, conecte su dispositivo U2F. Si tiene un botón, tócalo " -"ahora. Es posible que tenga que desconectar el dispositivo y volver a " -"conectarlo." +"Como alternativa, conecta o teu dispositivo WebAuthn. Se ten un botón, tócao " +"agora. É posible que teñas que desconectar o dispositivo e volvelo conectar." #: pretix/control/templates/pretixcontrol/auth/login_2fa.html:27 #: pretix/control/templates/pretixcontrol/email_setup.html:123 @@ -20128,7 +20120,6 @@ msgid "Show all test mode orders" msgstr "Mostrar todas las ordenes en modo de prueba" #: pretix/control/templates/pretixcontrol/base.html:408 -#, fuzzy msgid "" "Starting with version 1.2.0, pretix automatically checks for updates in the " "background. During this check, anonymous data is transmitted to servers " @@ -20136,13 +20127,13 @@ msgid "" "disable this feature or enter your email address to get notified via email " "if a new update arrives. This message will disappear once you clicked it." msgstr "" -"A partir de la versión 1.2.0, pretix comprueba automáticamente si hay " -"actualizaciones en segundo plano. Durante esta comprobación, los datos " -"anónimos son transmitidos a los servidores operados por los desarrolladores " -"de pretix. Haga clic en este mensaje para obtener más información, " -"deshabilite esta función o introduzca su dirección de correo electrónico " -"para recibir una notificación por correo electrónico si llega una nueva " -"actualización. Este mensaje desaparecerá una vez que haga clic en él." +"A partir da versión 1.2.0, pretix comproba automaticamente se hai " +"actualizacións en segundo plano. Durante esta comprobación, os datos " +"anónimos transmítense aos servidores operados polos desenvolvedores de " +"pretix. Fai clic nesta mensaxe para obter máis información, desactivar esta " +"función ou introducir o teu enderezo de correo electrónico para recibir unha " +"notificación por correo electrónico se chega unha nova actualización. Esta " +"mensaxe desaparecerá unha vez que fagas clic nela." #: pretix/control/templates/pretixcontrol/base.html:421 msgid "" @@ -21326,6 +21317,11 @@ msgid "" "directly from you, but it also might require some extra steps to ensure good " "deliverability." msgstr "" +"Os correos electrónicos enviaranse a través do servidor predeterminado do " +"sistema, pero co teu propio enderezo de remitente. Isto fará que os teus " +"correos electrónicos parezan máis personalizados e procedan directamente de " +"ti, pero tamén pode requirir algúns pasos adicionais para garantir unha boa " +"entrega." #: pretix/control/templates/pretixcontrol/email_setup.html:84 #: pretix/control/templates/pretixcontrol/email_setup_smtp.html:18 @@ -21482,6 +21478,9 @@ msgid "" "Refunds can be issued as a gift card if the respective option is set, but " "there is no customer choice between gift card and direct refund." msgstr "" +"Os reembolsos pódense emitir como unha tarxeta regalo se se configura a " +"opción correspondente, pero o cliente non pode escoller entre a tarxeta " +"regalo e o reembolso directo." #: pretix/control/templates/pretixcontrol/event/dangerzone.html:5 #: pretix/control/templates/pretixcontrol/event/live.html:131 @@ -21758,17 +21757,16 @@ msgid "Show orders pending approval" msgstr "Mostrar órdenes pendientes de aprobación" #: pretix/control/templates/pretixcontrol/event/index.html:73 -#, fuzzy msgid "" "This event contains fully paid orders that are not marked " "as paid, probably because no quota was left at the time their payment " "arrived. You should review the cases and consider either refunding the " "customer or creating more space." msgstr "" -"Este evento contiene órdenes completamente pagadas que no " -"están marcadas como pagadas, probablemente debido a que no fue dejado ningún " -"cupo al momento que llegó el pago. Deberías revisar estos casos y considerar " -"ya sea reembolsar al cliente o crear más espacio." +"Este evento contén pedidos totalmente pagados que non están " +"marcados como pagados, probablemente porque non quedaba cota no momento en " +"que chegou o seu pago. Deberías revisar os casos e considerar reembolsarlle " +"ao cliente ou crear máis espazo." #: pretix/control/templates/pretixcontrol/event/index.html:79 #, fuzzy @@ -21902,29 +21900,29 @@ msgid "Shop visibility" msgstr "Visibilidad de la tienda" #: pretix/control/templates/pretixcontrol/event/live.html:13 -#, fuzzy msgid "" "Your shop is currently live. If you take it down, it will only be visible to " "you and your team." msgstr "" -"Su tienda está actualmente activa. Si lo quitas, sólo será visible para ti y " -"tu equipo." +"A túa tenda está actualmente activa. Se a eliminas, só ti e o teu equipo a " +"verán." #: pretix/control/templates/pretixcontrol/event/live.html:18 msgid "" "Your shop is already live, however the following issues would normally " "prevent your shop to go live:" msgstr "" +"A túa tenda xa está activa, pero os seguintes problemas normalmente " +"impedirían que a túa tenda o fixese:" #: pretix/control/templates/pretixcontrol/event/live.html:37 #: pretix/control/templates/pretixcontrol/event/live.html:56 -#, fuzzy msgid "" "Your ticket shop is currently not live. It is thus only visible to you and " "your team, not to any visitors." msgstr "" -"Su taquilla no está activa en este momento. Por lo tanto, sólo es visible " -"para usted y su equipo, no para los visitantes." +"A túa billeteira non está activa neste momento. Polo tanto, só é visible " +"para ti e o teu equipo, non para os visitantes." #: pretix/control/templates/pretixcontrol/event/live.html:41 #, fuzzy @@ -21936,9 +21934,8 @@ msgstr "" #: pretix/control/templates/pretixcontrol/event/live.html:51 #: pretix/control/templates/pretixcontrol/event/live.html:65 -#, fuzzy msgid "Go live" -msgstr "Iniciar venta" +msgstr "Ir en directo" #: pretix/control/templates/pretixcontrol/event/live.html:59 #, fuzzy @@ -22228,16 +22225,15 @@ msgid "Warning:" msgstr "Advertencia:" #: pretix/control/templates/pretixcontrol/event/payment_provider.html:22 -#, fuzzy msgid "" "Please note that EU Directive 2015/2366 bans surcharging payment fees for " "most common payment methods within the European Union. If in doubt, consult " "a lawyer or refrain from charging payment fees." msgstr "" -"Por favor, tenga en cuenta que la Directiva de la UE 2015/2366 prohíbe el " -"recargo de las comisiones de pago para los métodos de pago más comunes " -"dentro de la Unión Europea. En caso de duda, consulte a un abogado o " -"absténgase de cobrar honorarios de pago." +"Ten en conta que a Directiva da UE 2015/2366 prohibe o cobro de comisións " +"por concepto de pagamento para a maioría dos métodos de pagamento habituais " +"na Unión Europea. En caso de dúbida, consulta cun avogado ou abstente de " +"cobrar comisións por pagamento." #: pretix/control/templates/pretixcontrol/event/payment_provider.html:28 #, fuzzy @@ -22338,6 +22334,8 @@ msgid "" "After disabling this plugin, some functionality may remain active in the " "organizer account." msgstr "" +"Despois de desactivar este plugin, algunhas funcionalidades poden permanecer " +"activas na conta do organizador." #: pretix/control/templates/pretixcontrol/event/plugins.html:104 #: pretix/control/templates/pretixcontrol/event/plugins.html:116 @@ -23122,16 +23120,14 @@ msgstr "" "del evento." #: pretix/control/templates/pretixcontrol/events/create_copy.html:13 -#, fuzzy msgid "" "Please make sure to review all settings extensively. You will probably still " "need to change some settings manually, e.g. date and time settings and texts " "that contain the event name." msgstr "" -"Por favor, asegúrese de revisar todos los ajustes exhaustivamente. " -"Probablemente todavía tendrá que cambiar algunos ajustes manualmente, por " -"ejemplo, los ajustes de fecha y hora y los textos que contienen el nombre " -"del evento." +"Asegúrate de revisar toda a configuración detidamente. Probablemente aínda " +"terás que cambiar algunhas configuracións manualmente, por exemplo, a " +"configuración de data e hora e os textos que conteñen o nome do evento." #: pretix/control/templates/pretixcontrol/events/create_foundation.html:7 #, fuzzy @@ -23181,14 +23177,12 @@ msgstr "" "primer pedido." #: pretix/control/templates/pretixcontrol/events/index.html:9 -#, fuzzy msgid "" "The list below shows all events you have administrative access to. Click on " "the event name to access event details." msgstr "" -"La siguiente lista muestra todos los eventos a los que tiene acceso " -"administrativo. Haga clic en el nombre del evento para acceder a los " -"detalles del evento." +"A lista seguinte mostra todos os eventos aos que tes acceso administrativo. " +"Fai clic no nome do evento para acceder aos detalles do evento." #: pretix/control/templates/pretixcontrol/events/index.html:13 #: pretix/control/templates/pretixcontrol/organizers/detail.html:19 @@ -23275,6 +23269,8 @@ msgid "" "You should have received a copy of pretix' license together with your copy " "of pretix. You can also view the current version of the license file here:" msgstr "" +"Deberías ter recibido unha copia da licenza de Pretix xunto coa túa copia de " +"Pretix. Tamén podes ver a versión actual do ficheiro de licenza aquí:" #: pretix/control/templates/pretixcontrol/global_license.html:18 msgid "Answers to common questions about the license can be found here:" @@ -23890,6 +23886,11 @@ msgid "" "if you enter \"1 day\", the ticket will be valid until the end of the day it " "starts on." msgstr "" +"Se seleccionas unha duración dada en días, meses ou anos, a validez sempre " +"rematará ao final dun día completo (medianoite), máis o número de minutos e " +"horas seleccionados anteriormente. A data de inicio inclúese no cálculo, " +"polo que se introduces \"1 día\", o billete será válido ata o final do día " +"en que comeza." #: pretix/control/templates/pretixcontrol/item/index.html:254 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:619 @@ -24068,6 +24069,11 @@ msgid "" "purchases (\"buy a package of 10 you can turn into individual tickets " "later\"), you can use customer accounts and memberships instead." msgstr "" +"Os descontos automáticos están dispoñibles para todos os clientes sempre que " +"estean activos. Se queres ofrecer prezos especiais só a clientes " +"específicos, podes usar vales. Se queres ofrecer descontos en varias compras " +"(\"compra un paquete de 10 que podes converter en entradas individuais máis " +"tarde\"), podes usar contas de cliente e subscricións." #: pretix/control/templates/pretixcontrol/items/discounts.html:23 msgid "" @@ -24300,13 +24306,12 @@ msgstr "" "¿Está seguro de que desea eliminar la pregunta %(question)s?" #: pretix/control/templates/pretixcontrol/items/question_delete.html:12 -#, fuzzy msgid "" "All answers to the question given by the buyers of the following products " "will be lost." msgstr "" -"Todas las respuestas a las preguntas de los compradores de los siguientes " -"productos serán perdidas." +"Todas as respostas á pregunta dada polos compradores dos seguintes produtos " +"perderanse." #: pretix/control/templates/pretixcontrol/items/question_delete.html:13 #, python-format @@ -24456,13 +24461,12 @@ msgid "Availability calculation" msgstr "Cálculo de disponibilidad" #: pretix/control/templates/pretixcontrol/items/quota.html:79 -#, fuzzy msgid "" "A plugin is active that might modify the actual result of this quota from " "what you see here." msgstr "" -"Hay un plugin activo que podría hacer que el resultado de la cuota difiera " -"respecto al mostrado aquí." +"Hai un plugin activo que podería modificar o resultado real desta cota a " +"partir do que ves aquí." #: pretix/control/templates/pretixcontrol/items/quota.html:86 #, fuzzy, python-format @@ -24803,13 +24807,12 @@ msgstr "" "necesitan ser contestadas por el usuario." #: pretix/control/templates/pretixcontrol/order/change.html:31 -#, fuzzy msgid "" "The user will receive a notification about the change but in the case of new " "required questions, the user will not be forced to answer them." msgstr "" -"El usuario recibirá una notificación sobre el cambio, pero en el caso de " -"nuevas preguntas requeridas, el usuario no estará obligado a responderlas." +"O usuario recibirá unha notificación sobre o cambio, pero no caso de novas " +"preguntas obrigatorias, o usuario non estará obrigado a respondelas." #: pretix/control/templates/pretixcontrol/order/change.html:37 #, fuzzy @@ -25136,6 +25139,9 @@ msgid "" "can choose to refund the money below or reactivate it by extending the " "payment deadline." msgstr "" +"Este pedido caducou aínda que recibiu pagamentos de %(amount)s. Podes optar " +"por reembolsar o diñeiro que aparece a continuación ou reactivalo ampliando " +"o prazo de pagamento." #: pretix/control/templates/pretixcontrol/order/index.html:143 #, fuzzy @@ -25711,17 +25717,17 @@ msgid "Mark as done" msgstr "Marcar como hecho" #: pretix/control/templates/pretixcontrol/order/refund_process.html:22 -#, fuzzy, python-format +#, python-format msgid "" "We received notice that %(amount)s have been refunded via " "%(method)s. If this refund is processed, the order will be " "underpaid by %(pending)s. The order total is " "%(total)s." msgstr "" -"Hemos recibido una notificación de que %(amount)s han sido " -"reembolsados a través de %(method)s. Si este reembolso es " -"procesado, el pedido será pagado por %(pending)s. El total " -"del pedido es %(total)s." +"Recibimos unha notificación de que se reembolsou %(amount)s " +"a través de %(method)s. Se se procesa este reembolso, o " +"pedido quedará pagado por menos de %(pending)s. O total do " +"pedido é de %(total)s." #: pretix/control/templates/pretixcontrol/order/refund_process.html:30 msgid "Since the order is already canceled, this will not affect its state." @@ -25912,6 +25918,9 @@ msgid "" "new tickets due to the products being disabled. You can choose to inform " "people on the waiting list by using this option." msgstr "" +"A túa lista de espera non se eliminará automaticamente, pero non recibirá " +"novos tíckets debido a que os produtos están desactivados. Podes optar por " +"informar ás persoas da lista de espera usando esta opción." #: pretix/control/templates/pretixcontrol/orders/cancel.html:71 msgid "" @@ -26205,6 +26214,9 @@ msgid "" "exports that output e.g. statistical data, not for reports that include " "sensitive personal data." msgstr "" +"O correo electrónico non é un medio fortemente cifrado. Só recomendamos " +"usalo para exportacións que xeran, por exemplo, datos estatísticos, non para " +"informes que inclúan datos persoais confidenciais." #: pretix/control/templates/pretixcontrol/orders/fragment_export_schedule_form.html:117 msgid "" @@ -26224,13 +26236,15 @@ msgstr "" #: pretix/control/templates/pretixcontrol/orders/fragment_export_schedule_form.html:129 msgid "The owner will receive the result as well as any error messages." -msgstr "" +msgstr "O propietario recibirá o resultado, así como calquera mensaxe de erro." #: pretix/control/templates/pretixcontrol/orders/fragment_export_schedule_form.html:130 msgid "" "The additional recipients you add below will only receive an email if the " "report was successful." msgstr "" +"Os destinatarios adicionais que engadas a continuación só recibirán un " +"correo electrónico se o informe se enviou correctamente." #: pretix/control/templates/pretixcontrol/orders/fragment_export_schedule_form.html:131 msgid "" @@ -26327,9 +26341,8 @@ msgid "Nobody ordered a ticket yet." msgstr "Nadie ha pedido un ticket todavía." #: pretix/control/templates/pretixcontrol/orders/index.html:22 -#, fuzzy msgid "Take your shop live" -msgstr "Lleve su tienda en directo" +msgstr "Leva a túa tenda en directo" #: pretix/control/templates/pretixcontrol/orders/index.html:27 #, fuzzy @@ -27153,6 +27166,8 @@ msgid "" "Create a payment on the respective order that cancels out with this " "transaction. The order will then likely be overpaid." msgstr "" +"Crea un pagamento no pedido respectivo que se cancele con esta transacción. " +"É probable que o pedido sexa entón pagado en exceso." #: pretix/control/templates/pretixcontrol/organizers/giftcard.html:98 #, fuzzy @@ -27272,13 +27287,12 @@ msgid "Manually issue a gift card" msgstr "Entrega una tarjeta regalo manualmente" #: pretix/control/templates/pretixcontrol/organizers/index.html:9 -#, fuzzy msgid "" "The list below shows all organizer accounts you have administrative access " "to." msgstr "" -"La siguiente lista muestra todas las cuentas de organizador a las que tiene " -"acceso administrativo." +"A lista seguinte mostra todas as contas de organizador ás que tes acceso " +"administrativo." #: pretix/control/templates/pretixcontrol/organizers/logs.html:4 #: pretix/control/templates/pretixcontrol/organizers/logs.html:6 @@ -27414,7 +27428,7 @@ msgstr "Nombre del participante" #: pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html:180 #: pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html:199 msgid "Sensitive content not shown for security reasons" -msgstr "" +msgstr "Contido sensible non mostrado por razóns de seguridade" #: pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html:213 msgid "" @@ -27486,17 +27500,16 @@ msgid "" msgstr "" #: pretix/control/templates/pretixcontrol/organizers/plugins.html:81 -#, fuzzy msgid "Active (all events)" -msgstr "Todos los eventos" +msgstr "Activo (todos os eventos)" #: pretix/control/templates/pretixcontrol/organizers/plugins.html:86 #: pretix/control/templates/pretixcontrol/organizers/plugins.html:95 -#, fuzzy, python-format +#, python-format msgid "Active (%(count)s event)" msgid_plural "Active (%(count)s events)" -msgstr[0] "%(count)s elementos" -msgstr[1] "%(count)s elementos" +msgstr[0] "Evento activo (%(count)s)" +msgstr[1] "Eventos activos (%(count)s)" #: pretix/control/templates/pretixcontrol/organizers/plugins.html:118 #: pretix/control/templates/pretixcontrol/organizers/plugins.html:175 @@ -27867,9 +27880,8 @@ msgid "Response body" msgstr "Cuerpo del Response" #: pretix/control/templates/pretixcontrol/organizers/webhook_logs.html:93 -#, fuzzy msgid "This webhook did not receive any events in the last 30 days." -msgstr "Este webhook no recibió ningun evento en los últimos 30 días." +msgstr "Este webhook non recibiu ningún evento nos últimos 30 días." #: pretix/control/templates/pretixcontrol/organizers/webhooks.html:9 #, fuzzy @@ -29204,9 +29216,8 @@ msgid "Off" msgstr "Apagado" #: pretix/control/templates/pretixcontrol/user/notifications.html:75 -#, fuzzy msgid "You have no permission to receive this notification" -msgstr "No tiene permiso para recibir esta notificación" +msgstr "Non tes permiso para recibir esta notificación" #: pretix/control/templates/pretixcontrol/user/notifications_disable.html:4 #, fuzzy @@ -29230,9 +29241,8 @@ msgstr "" "contraseña para continuar." #: pretix/control/templates/pretixcontrol/user/reauth.html:26 -#, fuzzy msgid "Alternatively, you can use your WebAuthn device." -msgstr "Alternativamente, puede utilizar su dispositivo U2F." +msgstr "Como alternativa, podes usar o teu dispositivo WebAuthn." #: pretix/control/templates/pretixcontrol/user/reauth.html:40 #, fuzzy @@ -29683,6 +29693,8 @@ msgid "" "The waiting list is no longer active for this event. The waiting list no " "longer affects quotas and no longer notifies waiting users." msgstr "" +"A lista de espera xa non está activa para este evento. A lista de espera xa " +"non afecta ás cotas e xa non notifica aos usuarios en espera." #: pretix/control/templates/pretixcontrol/waitinglist/index.html:28 msgid "" @@ -29716,6 +29728,8 @@ msgid "" "Currently, no vouchers will be sent since your event is not live or is not " "selling tickets." msgstr "" +"Actualmente non se enviarán vales porque o teu evento non está en directo ou " +"non se venden entradas." #: pretix/control/templates/pretixcontrol/waitinglist/index.html:58 #, fuzzy @@ -30035,7 +30049,6 @@ msgid "Total revenue ({currency})" msgstr "Total de ingresos ({currency})" #: pretix/control/views/dashboards.py:148 -#, fuzzy msgid "Active products" msgstr "Productos activos" @@ -30064,14 +30077,12 @@ msgid "Click here to change" msgstr "Haga clic aquí para cambiar" #: pretix/control/views/dashboards.py:273 -#, fuzzy msgid "live" msgstr "en directo" #: pretix/control/views/dashboards.py:274 -#, fuzzy msgid "live and in test mode" -msgstr "en vivo y en modo de prueba" +msgstr "en vivo e en modo de proba" #: pretix/control/views/dashboards.py:275 #, fuzzy @@ -30217,18 +30228,18 @@ msgstr "Usted no tiene permiso para realizar esta acción." #: pretix/control/views/event.py:472 pretix/control/views/organizer.py:716 #, python-brace-format msgid "The plugin {} is now active, you can configure it here:" -msgstr "" +msgstr "O plugin {} xa está activo, podes configuralo aquí:" #: pretix/control/views/event.py:481 pretix/control/views/organizer.py:725 -#, fuzzy, python-brace-format +#, python-brace-format msgid "The plugin {} is now active." -msgstr "La taquilla seleccionada no está disponible en este momento." +msgstr "O plugin {} xa está activo." #: pretix/control/views/event.py:546 msgid "" "This payment provider does not exist or the respective plugin is disabled." msgstr "" -"Este provedor de pagamentos non existe ou o plugin correspondente está " +"Este provedor de pagamentos non existe ou o complemento correspondente está " "desactivado." #: pretix/control/views/event.py:858 pretix/control/views/organizer.py:362 @@ -30255,9 +30266,8 @@ msgid "You requested an invalid ticket output type." msgstr "Ha solicitado un tipo de salida de ticket no válido." #: pretix/control/views/event.py:1118 -#, fuzzy msgid "Your shop is live now!" -msgstr "Su tienda está en vivo ahora!" +msgstr "A súa tenda está en vivo agora!" #: pretix/control/views/event.py:1126 #, fuzzy @@ -30357,8 +30367,8 @@ msgid "" "Your changes have been saved. You can now go on with looking at the details " "or take your event live to start selling!" msgstr "" -"Os seus cambios foron gardados. Agora pode seguir cos detalles ou tomar o " -"seu evento en vivo para empezar a vender!" +"Gardáronse os cambios. Agora podes continuar coa consulta dos detalles ou " +"publicar o teu evento para comezar a vendelo!" #: pretix/control/views/event.py:1717 #, fuzzy @@ -30423,6 +30433,8 @@ msgid "" "We found the plugin \"{plugin}\" with license \"{license}\" which this tool " "does not know about and therefore cannot give any recommendations." msgstr "" +"Atopamos o plugin \"{plugin}\" coa licenza \"{license}\" que esta ferramenta " +"descoñece e, polo tanto, non pode dar ningunha recomendación." #: pretix/control/views/global_settings.py:264 #, python-brace-format @@ -30430,6 +30442,8 @@ msgid "" "You selected that you have no active pretix Enterprise licenses, but we " "found the following Enterprise plugin: {plugin}" msgstr "" +"Seleccionaches que non tes licenzas Pretix Enterprise activas, pero atopamos " +"o seguinte plugin Enterprise: {plugin}" #: pretix/control/views/global_settings.py:271 #, python-brace-format @@ -30659,6 +30673,12 @@ msgid "" "all of your emails since they impose a maximum number of emails per time " "period." msgstr "" +"Recomendámosche non usar Google Mail para correos electrónicos " +"transaccionais. Se intentas enviar moitos correos electrónicos nun curto " +"período de tempo, por exemplo, ao enviar información a todos os compradores " +"de entradas, existe unha alta probabilidade de que Google non entregue todos " +"os teus correos electrónicos, xa que impoñen un número máximo de correos " +"electrónicos por período de tempo." #: pretix/control/views/main.py:221 #, fuzzy @@ -31090,7 +31110,8 @@ msgstr "El orden ha sido cambiado." #: pretix/presale/views/order.py:845 pretix/presale/views/order.py:981 msgid "" "We had difficulties processing your input. Please review the errors below." -msgstr "Tivemos problemas ao procesar a túa entrada. Revisa os erros." +msgstr "" +"Tivemos dificultades ao procesar a túa entrada. Revisa os erros seguintes." #: pretix/control/views/orders.py:2331 #, fuzzy @@ -31122,9 +31143,8 @@ msgstr "" "ténteo de novo." #: pretix/control/views/orders.py:2645 -#, fuzzy msgid "There is no order with the given order code." -msgstr "No hay ningún pedido con el código de pedido dado." +msgstr "Non hai ningún pedido co código de pedido dado." #: pretix/control/views/orders.py:2754 pretix/control/views/organizer.py:2088 #, fuzzy @@ -31248,9 +31268,8 @@ msgid "Unknown plugin." msgstr "Plugin descoñecido: '{name}'." #: pretix/control/views/organizer.py:812 -#, fuzzy msgid "This plugin is currently not active on the organizer account." -msgstr "La taquilla seleccionada no está disponible en este momento." +msgstr "Este complemento non está activo actualmente na conta do organizador." #: pretix/control/views/organizer.py:816 #, fuzzy @@ -31417,9 +31436,8 @@ msgstr "Se ha borrado la pregunta seleccionada." #: pretix/control/views/organizer.py:1805 #: pretix/control/views/organizer.py:1842 -#, fuzzy msgid "Gift cards are not allowed to have negative values." -msgstr "Las tarjetas regalo no pueden tener valores negativos." +msgstr "As tarxetas regalo non poden ter valores negativos." #: pretix/control/views/organizer.py:1832 #, fuzzy @@ -31819,6 +31837,10 @@ msgid "" "(other than email, if possible). Any previous emergency tokens for this user " "remain active." msgstr "" +"O token de emerxencia para este usuario é \"{token}\". Só se pode usar unha " +"vez. Asegúrate de transmitir este código só a través dunha canle autenticada " +"(que non sexa o correo electrónico, se é posible). Calquera token de " +"emerxencia anterior para este usuario permanece activo." #: pretix/control/views/users.py:313 #, fuzzy @@ -31862,7 +31884,7 @@ msgstr "Se ha creado el nuevo documento: {code}" #: pretix/control/views/vouchers.py:405 msgid "There is no voucher with the given voucher code." -msgstr "Non hai ningún recibo co código de desconto indicado." +msgstr "Non hai ningún cupón co código de cupón proporcionado." #: pretix/control/views/vouchers.py:520 #, fuzzy @@ -31992,9 +32014,8 @@ msgid "Organizer domain" msgstr "Nome do organizador" #: pretix/multidomain/models.py:37 -#, fuzzy msgid "Alternative organizer domain for a set of events" -msgstr "Texto de información del organizador del evento" +msgstr "Dominio de organizador alternativo para un conxunto de eventos" #: pretix/multidomain/models.py:38 #, fuzzy @@ -32074,6 +32095,8 @@ msgid "" "When restricting by payment method, the rule should run after the payment " "was received." msgstr "" +"Ao restrinxir por método de pagamento, a regra debería executarse despois de " +"que se recibise o pagamento." #: pretix/plugins/autocheckin/models.py:36 #, fuzzy @@ -32514,7 +32537,6 @@ msgid "Empty file or unknown format." msgstr "" #: pretix/plugins/banktransfer/payment.py:69 -#, fuzzy msgid "" "I have understood that people will pay the ticket price directly to my bank " "account and pretix cannot automatically know what payments arrived. " @@ -32522,11 +32544,11 @@ msgid "" "import a digital bank statement in order to give pretix the required " "information." msgstr "" -"He entendido que las personas que van a pagar por el precio del ticket " -"directamente a mi cuenta de bando y pretix automáticamente sabe que los " -"pagos han llegado. Por lo tanto, Yo no crearé pagos como completados " -"manualmente, o regularmente importar un archivo digital del estado de cuenta " -"bancario en orden para darle a pretix la información requerida." +"Entendo que a xente pagará o prezo do billete directamente na miña conta " +"bancaria e Pretix non pode saber automaticamente que pagamentos chegaron. " +"Polo tanto, marcarei os pagamentos como completos manualmente ou importarei " +"regularmente un extracto bancario dixital para darlle a Pretix a información " +"requirida." #: pretix/plugins/banktransfer/payment.py:76 #, fuzzy @@ -32909,19 +32931,17 @@ msgid "Unresolved transactions" msgstr "Transacciones no resueltas" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:66 -#, fuzzy msgid "" "On this page, you can import banking data on a per-event level. You also " "only see unmatched transactions imported directly for this event." msgstr "" -"En esta página, puede importar datos bancarios en un nivel por evento. " -"También puede ver únicamente transacciones no coincidentes importadas " -"directamente para este evento." +"Nesta páxina, podes importar datos bancarios a nivel de evento por evento. " +"Tamén só verás as transaccións non coincidentes importadas directamente para " +"este evento." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:71 -#, fuzzy msgid "Go to organizer-level import" -msgstr "Ir a la importación a nivel de organizador" +msgstr "Ir á importación a nivel de organizador" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:78 #, fuzzy @@ -33015,12 +33035,8 @@ msgstr "" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/pending.html:35 #: pretix/plugins/stripe/templates/pretixplugins/stripe/pending.html:31 -#, fuzzy msgid "We will send you an email as soon as we received your payment." -msgstr "" -"Le enviaremos un correo electrónico tan pronto como el organizador del " -"evento apruebe o rechace su pedido. Si su pedido fue aprobado, le enviaremos " -"un enlace que puede utilizar para pagar." +msgstr "Enviarémosche un correo electrónico en canto recibamos o teu pagamento." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/refund_export.html:5 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/refund_export.html:7 @@ -33046,9 +33062,8 @@ msgid "" msgstr "" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/refund_export.html:22 -#, fuzzy msgid "Go to organizer-level exports" -msgstr "Ir a la importación a nivel de organizador" +msgstr "Ir ás exportacións a nivel de organizador" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/refund_export.html:32 #, fuzzy @@ -33192,6 +33207,8 @@ msgid "" "Negative amount but refund can't be logged, please create manual refund " "first." msgstr "" +"Importe negativo, pero non se pode rexistrar o reembolso. Primeiro, cree o " +"reembolso manualmente." #: pretix/plugins/banktransfer/views.py:186 #, fuzzy @@ -33558,9 +33575,8 @@ msgstr "Ha fallado el reintegro del importe a través de PayPal: {}" #: pretix/plugins/paypal/payment.py:704 pretix/plugins/paypal/payment.py:712 #: pretix/plugins/paypal2/payment.py:1086 #: pretix/plugins/paypal2/payment.py:1094 -#, fuzzy msgid "The payment for this invoice has already been received." -msgstr "El pago de esta factura ya se ha recibido." +msgstr "O pago desta factura xa foi recibido." #: pretix/plugins/paypal/payment.py:705 pretix/plugins/paypal/payment.py:713 #: pretix/plugins/paypal2/payment.py:1087 @@ -33657,9 +33673,8 @@ msgid "Click here in order to open the window." msgstr "Haga clic aquí para abrir la ventana." #: pretix/plugins/paypal/views.py:107 pretix/plugins/paypal2/views.py:322 -#, fuzzy msgid "Invalid response from PayPal received." -msgstr "Se ha recibido una respuesta no válida de PayPal." +msgstr "Recibiuse unha resposta non válida de PayPal." #: pretix/plugins/paypal/views.py:123 pretix/plugins/paypal2/views.py:343 #, fuzzy @@ -33693,9 +33708,8 @@ msgid "" msgstr "" #: pretix/plugins/paypal2/payment.py:149 -#, fuzzy msgid "Alternative Payment Methods" -msgstr "Habilitar método de pago" +msgstr "Métodos de pago alternativos" #: pretix/plugins/paypal2/payment.py:151 msgid "" @@ -33829,9 +33843,8 @@ msgid "PayPal APM" msgstr "PayPal" #: pretix/plugins/paypal2/payment.py:1114 -#, fuzzy msgid "PayPal Alternative Payment Methods" -msgstr "Habilitar método de pago" +msgstr "Métodos de pago alternativos de PayPal" #: pretix/plugins/paypal2/signals.py:58 #, fuzzy @@ -34442,24 +34455,20 @@ msgid "Absolute" msgstr "Impuesto total" #: pretix/plugins/sendmail/forms.py:375 -#, fuzzy msgid "Relative, before event start" -msgstr "Búsqueda de eventos" +msgstr "Relativo, antes do inicio do evento" #: pretix/plugins/sendmail/forms.py:376 -#, fuzzy msgid "Relative, before event end" -msgstr "Búsqueda de eventos" +msgstr "Relativo, antes do final do evento" #: pretix/plugins/sendmail/forms.py:377 -#, fuzzy msgid "Relative, after event start" -msgstr "Búsqueda de eventos" +msgstr "Relativo, despois do inicio do evento" #: pretix/plugins/sendmail/forms.py:378 -#, fuzzy msgid "Relative, after event end" -msgstr "Fecha relativa:" +msgstr "Relativo, despois do final do evento" #: pretix/plugins/sendmail/forms.py:395 #, fuzzy @@ -34600,19 +34609,16 @@ msgid "Mass email was sent to waiting list entries." msgstr "Un e-mail personalizado ha sido enviado." #: pretix/plugins/sendmail/signals.py:128 -#, fuzzy msgid "The order received a mass email." -msgstr "El pedido recibió un correo electrónico masivo." +msgstr "A orde recibiu un correo electrónico masivo." #: pretix/plugins/sendmail/signals.py:129 -#, fuzzy msgid "A ticket holder of this order received a mass email." -msgstr "El pedido recibió un correo electrónico masivo." +msgstr "O titular do tícket desta orde recibiu un correo electrónico masivo." #: pretix/plugins/sendmail/signals.py:134 -#, fuzzy msgid "The person on the waiting list received a mass email." -msgstr "El pedido recibió un correo electrónico masivo." +msgstr "A persoa da lista de espera recibiu un correo electrónico masivo." #: pretix/plugins/sendmail/signals.py:139 #, fuzzy @@ -34857,6 +34863,8 @@ msgid "" "Send an email to every person currently waiting to receive a voucher through " "the waiting list feature." msgstr "" +"Enviar un correo electrónico a cada persoa que estea agardando para recibir " +"un vale a través da función de lista de espera." #: pretix/plugins/sendmail/views.py:516 #, fuzzy, python-format @@ -35117,7 +35125,6 @@ msgid "Stripe account" msgstr "Cuenta de Stripe" #: pretix/plugins/stripe/payment.py:280 -#, fuzzy msgctxt "stripe" msgid "Live" msgstr "En Vivo" @@ -35850,7 +35857,7 @@ msgstr "" #: pretix/plugins/stripe/templates/pretixplugins/stripe/checkout_payment_form_card.html:19 msgid "For a credit card payment, please turn on JavaScript." -msgstr "Para pagar con tarxeta de crédito, active JavaScript." +msgstr "Para un pago con tarxeta de crédito, active JavaScript." #: pretix/plugins/stripe/templates/pretixplugins/stripe/checkout_payment_form_card.html:25 #, fuzzy @@ -36142,9 +36149,8 @@ msgid "Ticket layout {val}" msgstr "Disposición del ticket {val}" #: pretix/plugins/ticketoutputpdf/templates/pretixplugins/ticketoutputpdf/control_order_position_buttons.html:7 -#, fuzzy msgid "Alternative ticket" -msgstr "Generar tickets" +msgstr "Ticket alternativo" #: pretix/plugins/ticketoutputpdf/templates/pretixplugins/ticketoutputpdf/delete.html:4 #: pretix/plugins/ticketoutputpdf/templates/pretixplugins/ticketoutputpdf/delete.html:6 @@ -36298,6 +36304,8 @@ msgid "" "Your cart includes a product that requires an active membership to be " "selected." msgstr "" +"O teu carriño inclúe un produto que require unha subscrición activa para ser " +"seleccionado." #: pretix/presale/checkoutflow.py:487 msgctxt "checkoutflow" @@ -36480,6 +36488,10 @@ msgid "" "link in the email we sent you. In case you cannot find it, click \"Forgot " "your password?\" to receive a new email." msgstr "" +"Aínda non activaches a túa conta nin definiches un contrasinal. Fai clic na " +"ligazón do correo electrónico que che enviamos. No caso de que non a poidas " +"atopar, fai clic en \"Esqueciches o teu contrasinal?\" para recibir un novo " +"correo electrónico." #: pretix/presale/forms/customer.py:90 #, fuzzy @@ -36491,6 +36503,8 @@ msgid "" "We've received a lot of registration requests from you, please wait 10 " "minutes before you try again." msgstr "" +"Recibimos moitas solicitudes de rexistro túas. Agarda 10 minutos antes de " +"intentalo de novo." #: pretix/presale/forms/customer.py:149 msgid "" @@ -36628,9 +36642,8 @@ msgid "This shop is currently only visible to you and your team." msgstr "Actualmente, esta tienda sólo es visible para usted y su equipo." #: pretix/presale/templates/pretixpresale/event/base.html:38 -#, fuzzy msgid "Take it live now" -msgstr "Tómelo en vivo ahora" +msgstr "Tómao en directo agora" #: pretix/presale/templates/pretixpresale/event/base.html:48 #: pretix/presale/templates/pretixpresale/event/base.html:110 @@ -36943,16 +36956,16 @@ msgid "Create a new customer account" msgstr "Crear una nueva cuenta" #: pretix/presale/templates/pretixpresale/event/checkout_customer.html:84 -#, fuzzy, python-format +#, python-format msgid "" "We will send you an email with a link to activate your account and set a " "password, so you can use the account for future orders at %(org)s. You can " "still go ahead with this purchase before you received the email." msgstr "" -"Le enviaremos un correo electrónico con un enlace para activar su cuenta y " -"establecer una contraseña, para que pueda usar la cuenta para pedidos " -"futuros en %(org)s. Aún puede continuar con esta compra antes de recibir el " -"correo electrónico." +"Enviarémosche un correo electrónico cunha ligazón para activar a túa conta e " +"establecer un contrasinal, para que poidas usar a conta para futuros pedidos " +"en %(org)s. Aínda podes continuar con esta compra antes de recibir o correo " +"electrónico." #: pretix/presale/templates/pretixpresale/event/checkout_customer.html:101 #, fuzzy @@ -36972,13 +36985,12 @@ msgstr "" "complete el pedido." #: pretix/presale/templates/pretixpresale/event/checkout_membership.html:6 -#, fuzzy msgid "" "Some of the products in your cart can only be purchased if there is an " "active membership on your account." msgstr "" -"Para algunos de los productos en su carrito, usted puede elegir opciones " -"adicionales antes de continuar." +"Algúns dos produtos do teu carriño só se poden mercar se tes unha " +"subscrición activa na túa conta." #: pretix/presale/templates/pretixpresale/event/checkout_membership.html:34 #: pretix/presale/templates/pretixpresale/event/checkout_questions.html:112 @@ -37049,12 +37061,11 @@ msgid "There are no payment providers enabled." msgstr "No hay proveedores de pago habilitados." #: pretix/presale/templates/pretixpresale/event/checkout_payment.html:126 -#, fuzzy msgid "" "Please go to the payment settings and activate one or more payment providers." msgstr "" -"Por favor, vaya a la configuración de pago y active uno o más proveedores de " -"pago." +"Vaia á configuración de pagamentos e active un ou máis provedores de " +"pagamentos." #: pretix/presale/templates/pretixpresale/event/checkout_questions.html:9 msgid "Before we continue, we need you to answer some questions." @@ -37515,6 +37526,9 @@ msgid "" "exclusive price. Due to rounding, this caused a small change to the total " "price." msgstr "" +"Dado que introduciches un enderezo comercial, o prezo calculouse a partir do " +"prezo sen IVE. Debido ao arredondamento, isto provocou unha pequena " +"variación no prezo total." #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:516 #, python-format -- 2.49.1 From c061179f37fbb0a68cae91d18d62d86cda054621 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandra=20Rial=20P=C3=A9rez?= Date: Tue, 21 Apr 2026 11:39:48 +0200 Subject: [PATCH 091/107] Translations: Update Galician Currently translated at 19.1% (1207 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/gl/ powered by weblate --- src/pretix/locale/gl/LC_MESSAGES/django.po | 79 +++++++++++----------- 1 file changed, 41 insertions(+), 38 deletions(-) diff --git a/src/pretix/locale/gl/LC_MESSAGES/django.po b/src/pretix/locale/gl/LC_MESSAGES/django.po index 845add9bd..42520a10a 100644 --- a/src/pretix/locale/gl/LC_MESSAGES/django.po +++ b/src/pretix/locale/gl/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-04-21 09:33+0000\n" +"PO-Revision-Date: 2026-04-21 11:05+0000\n" "Last-Translator: Sandra Rial Pérez \n" "Language-Team: Galician \n" @@ -37761,15 +37761,14 @@ msgid "Please check your email account, we've sent you an email." msgstr "Por favor, revisa tu correo, te hemos enviando un correo." #: pretix/presale/templates/pretixpresale/event/fragment_downloads.html:21 -#, fuzzy msgid "" "You can download your tickets right here as soon as the person who placed " "the order clicked the link in the email they received to confirm the email " "address is valid." msgstr "" -"Puede descargar sus boletos aquí mismo tan pronto como la persona que " -"realizó el pedido hizo clic en el enlace del correo electrónico que recibió " -"para confirmar que la dirección de correo electrónico es válida." +"Podes descargar as túas entradas aquí mesmo en canto a persoa que realizou o " +"pedido fixo clic na ligazón do correo electrónico que recibiu para confirmar " +"que o enderezo de correo electrónico é válido.." #: pretix/presale/templates/pretixpresale/event/fragment_downloads.html:26 #, fuzzy @@ -38117,7 +38116,7 @@ msgstr "O seu pedido foi procesado con éxito! Ver abaixo para máis detalles." #: pretix/presale/templates/pretixpresale/event/order.html:51 msgid "We successfully received your payment. See below for details." msgstr "" -"Recibimos o teu pagamento correctamente. Consulta os detalles a continuación." +"Recibimos o seu pagamento correctamente. Vexa os detalles a continuación." #: pretix/presale/templates/pretixpresale/event/order.html:36 #, fuzzy @@ -38185,13 +38184,12 @@ msgid "Re-try payment or choose another payment method" msgstr "Volva tentar o pago ou escolla outro método de pago" #: pretix/presale/templates/pretixpresale/event/order.html:126 -#, fuzzy msgid "" "We've received your request to cancel this order. Please stay patient while " "the event organizer decides on the cancellation." msgstr "" -"No puedes cancelar esta orden por ti mismo. Por favor contacta al " -"organizador del evento para más información." +"Recibimos a túa solicitude para cancelar este pedido. Ten paciencia mentres " +"o organizador do evento decide sobre a cancelación." #: pretix/presale/templates/pretixpresale/event/order.html:144 #, fuzzy, python-format @@ -38310,6 +38308,9 @@ msgid "" "receive a full refund or if a cancellation fee is deducted according to " "their cancellation policy." msgstr "" +"Se a túa solicitude é aprobada, o organizador determinará se recibirás un " +"reembolso completo ou se se deducirá unha taxa de cancelación segundo a súa " +"política de cancelación." #: pretix/presale/templates/pretixpresale/event/order.html:397 #: pretix/presale/templates/pretixpresale/event/order.html:433 @@ -38337,37 +38338,36 @@ msgid "This will invalidate all tickets in this order." msgstr "Esto invalidará todos os tickets de este pedido." #: pretix/presale/templates/pretixpresale/event/order.html:406 -#, fuzzy msgid "" "You can request to cancel this order, but you will not receive a refund." -msgstr "Puedes cancelar esta orden usando el siguiente botón." +msgstr "" +"Podes solicitar a cancelación deste pedido, pero non recibirás ningún " +"reembolso." #: pretix/presale/templates/pretixpresale/event/order.html:410 -#, fuzzy msgid "You can cancel this order, but you will not receive a refund." -msgstr "Puedes cancelar esta orden usando el siguiente botón." +msgstr "Podes cancelar este pedido, pero non recibirás ningún reembolso." #: pretix/presale/templates/pretixpresale/event/order.html:419 -#, fuzzy, python-format +#, python-format msgid "" "You can request to cancel this order. If your request is approved, a " "cancellation fee of %(fee)s will be kept and you will " "receive a refund of the remainder." msgstr "" -"Puede cancelar esta orden. En este caso, una tarifa de cancelación de " -"%(fee)s será retenida y recibirá un retorno del resto a su " -"método de pago original." +"Podes solicitar a cancelación deste pedido. Se a túa solicitude é aprobada, " +"manterase unha taxa de cancelación de %(fee)s e recibirás " +"un reembolso do resto." #: pretix/presale/templates/pretixpresale/event/order.html:425 -#, fuzzy, python-format +#, python-format msgid "" "You can cancel this order. In this case, a cancellation fee of " "%(fee)s will be kept and you will receive a refund of the " "remainder." msgstr "" -"Puede cancelar esta orden. En este caso, una tarifa de cancelación de " -"%(fee)s será retenida y recibirá un retorno del resto a su " -"método de pago original." +"Podes cancelar este pedido. Neste caso, manterase unha taxa de cancelación " +"de %(fee)s e recibirás un reembolso do resto." #: pretix/presale/templates/pretixpresale/event/order.html:442 msgid "" @@ -38377,9 +38377,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/order.html:447 msgid "You can cancel this order and receive a full refund." -msgstr "" -"Podes cancelar esta orde e recibir un reembolso completo ao teu método de " -"pago." +msgstr "Podes cancelar este pedido e recibir un reembolso completo." #: pretix/presale/templates/pretixpresale/event/order.html:466 #: pretix/presale/templates/pretixpresale/event/order_cancel.html:54 @@ -38723,10 +38721,9 @@ msgid "" "you need to add yourself to the waiting list multiple times. There is no " "guarantee that you will receive a certain number of tickets." msgstr "" -"Repare en que só recibirá un só billete. Se necesitase varios, debe " -"adherirse á listaxe de agarda varias veces con diferentes enderezos de " -"correo electrónico. Aínda que isto non garante que recibas un número " -"concreto de entradas." +"Ten en conta que só recibirás unha entrada. Se necesitas varias entradas, " +"terás que engadirte á lista de espera varias veces. Non hai garantía de que " +"recibas un determinado número de entradas." #: pretix/presale/templates/pretixpresale/event/waitinglist.html:32 msgid "" @@ -38735,10 +38732,10 @@ msgid "" "email addresses. There is no guarantee that you will receive a certain " "number of tickets." msgstr "" -"Repare en que só recibirá un só billete. Se necesitase varios, debe " -"adherirse á listaxe de agarda varias veces con diferentes enderezos de " -"correo electrónico. Aínda que isto non garante que recibas un número " -"concreto de entradas." +"Ten en conta que só recibirás unha entrada. Se necesitas varias entradas, " +"debes engadirte á lista de espera varias veces con diferentes enderezos de " +"correo electrónico. Non hai garantía de que recibas un determinado número de " +"entradas." #: pretix/presale/templates/pretixpresale/event/waitinglist.html:38 msgid "" @@ -38746,6 +38743,9 @@ msgid "" "been added to the waiting list. We will only contact you once a spot opens " "up." msgstr "" +"Non recibirás un correo electrónico de confirmación despois " +"de ser engadido á lista de espera. Só contactaremos contigo unha vez que se " +"libere unha praza." #: pretix/presale/templates/pretixpresale/event/waitinglist.html:44 msgid "Add me to the list" @@ -39283,9 +39283,8 @@ msgid "Multiple dates" msgstr "Crear varias fechas" #: pretix/presale/templates/pretixpresale/organizers/index.html:105 -#, fuzzy msgid "No archived events found." -msgstr "No se han encontrado eventos archivados." +msgstr "Non se atoparon eventos arquivados." #: pretix/presale/templates/pretixpresale/organizers/index.html:105 #, fuzzy @@ -39336,9 +39335,8 @@ msgid "" msgstr "" #: pretix/presale/views/cart.py:202 -#, fuzzy msgid "Please enter positive numbers only." -msgstr "Por favor, introduzca sólo números positivos." +msgstr "Introduza só números positivos." #: pretix/presale/views/cart.py:441 msgid "We applied the voucher to as many products in your cart as we could." @@ -39610,14 +39608,19 @@ msgid "" "{number} hours. If the email did not arrive, please check your spam folder " "and also double check that you used the correct email address." msgstr "" +"Se o enderezo de correo electrónico que introduciches é válido e está " +"asociado a un tícket, xa che enviamos un correo electrónico cunha ligazón ao " +"teu tícket nas últimas {number} horas. Se o correo electrónico non chegou, " +"comproba o teu cartafol de correo non desexado e comproba que usaches o " +"enderezo de correo electrónico correcto." #: pretix/presale/views/user.py:86 msgid "" "If there were any orders by this user, they will receive an email with their " "order codes." msgstr "" -"Se houbese algún pedido por parte deste usuario, recibirá un correo " -"electrónico cos seus códigos de pedido." +"Se houbo algún pedido deste usuario, recibirá un correo electrónico cos seus " +"códigos de pedido." #: pretix/presale/views/waiting.py:127 msgid "" -- 2.49.1 From 27398c08c792aa37022388687af3ab395a3f755c Mon Sep 17 00:00:00 2001 From: Nikolai Date: Tue, 21 Apr 2026 18:24:30 +0200 Subject: [PATCH 092/107] Translations: Update Danish Currently translated at 54.5% (3428 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/ powered by weblate --- src/pretix/locale/da/LC_MESSAGES/django.po | 35 ++++++++++------------ 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/src/pretix/locale/da/LC_MESSAGES/django.po b/src/pretix/locale/da/LC_MESSAGES/django.po index 3aa89d2b4..fc79c328f 100644 --- a/src/pretix/locale/da/LC_MESSAGES/django.po +++ b/src/pretix/locale/da/LC_MESSAGES/django.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-04-21 09:33+0000\n" +"PO-Revision-Date: 2026-04-22 01:00+0000\n" "Last-Translator: Nikolai \n" "Language-Team: Danish \n" @@ -14676,67 +14676,64 @@ msgstr "" "modtager du i stedet skabelonen til gratis ordrer nedenfor." #: pretix/control/forms/event.py:1463 -#, fuzzy msgid "Subject for approved free order" -msgstr "Marker bestilling som udløbet" +msgstr "Emne for godkendt gratis ordre" #: pretix/control/forms/event.py:1468 -#, fuzzy msgid "Text for approved free order" -msgstr "Marker bestilling som udløbet" +msgstr "Tekst til godkendt gratis ordre" #: pretix/control/forms/event.py:1471 pretix/control/forms/event.py:1489 msgid "" "This will only be sent out for free orders. Non-free orders will receive the " "non-free order template from above instead." msgstr "" +"Dette sendes kun ud ved gratis ordrer. Ved ordrer, der ikke er gratis, " +"modtager du i stedet skabelonen til ikke-gratis ordrer ovenfor." #: pretix/control/forms/event.py:1493 -#, fuzzy msgid "Subject for denied order" -msgstr "Gennemse bestilling" +msgstr "Emne for afvist ordre" #: pretix/control/forms/event.py:1498 -#, fuzzy msgid "Text for denied order" -msgstr "Tilbagebetal bestilling" +msgstr "Tekst ved afvist ordre" #: pretix/control/forms/event.py:1596 -#, fuzzy msgid "Ticket code generator" -msgstr "Billetdesign" +msgstr "Generator til billetkoder" #: pretix/control/forms/event.py:1597 msgid "For advanced users, usually does not need to be changed." -msgstr "" +msgstr "For erfarne brugere, normalt ikke nødvendigt at ændre på dette." #: pretix/control/forms/event.py:1654 msgid "Any country" -msgstr "" +msgstr "Ethvert land" #: pretix/control/forms/event.py:1655 msgid "European Union" -msgstr "" +msgstr "Den Europæiske Union" #: pretix/control/forms/event.py:1681 msgid "Any customer" -msgstr "" +msgstr "Enhver kunde" #: pretix/control/forms/event.py:1682 msgid "Individual" -msgstr "" +msgstr "Individuel" #: pretix/control/forms/event.py:1683 msgid "Business" -msgstr "" +msgstr "Erhverv" #: pretix/control/forms/event.py:1684 msgid "Business with valid VAT ID" -msgstr "" +msgstr "Virksomhed med gyldigt momsnummer" #: pretix/control/forms/event.py:1690 msgid "Charge VAT" -msgstr "" +msgstr "Opkræv moms" #: pretix/control/forms/event.py:1692 msgid "No VAT" -- 2.49.1 From 7f6b5d73310574e44a6776e6b6a5f3930d459bf4 Mon Sep 17 00:00:00 2001 From: Nikolai Date: Wed, 22 Apr 2026 15:43:05 +0200 Subject: [PATCH 093/107] Translations: Update Danish Currently translated at 56.3% (3542 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/ powered by weblate --- src/pretix/locale/da/LC_MESSAGES/django.po | 306 ++++++++++----------- 1 file changed, 145 insertions(+), 161 deletions(-) diff --git a/src/pretix/locale/da/LC_MESSAGES/django.po b/src/pretix/locale/da/LC_MESSAGES/django.po index fc79c328f..60c844521 100644 --- a/src/pretix/locale/da/LC_MESSAGES/django.po +++ b/src/pretix/locale/da/LC_MESSAGES/django.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-04-22 01:00+0000\n" +"PO-Revision-Date: 2026-04-22 18:00+0000\n" "Last-Translator: Nikolai \n" "Language-Team: Danish \n" @@ -14737,7 +14737,7 @@ msgstr "Opkræv moms" #: pretix/control/forms/event.py:1692 msgid "No VAT" -msgstr "" +msgstr "Ingen moms" #: pretix/control/forms/event.py:1693 msgid "Sale not allowed" @@ -14748,32 +14748,28 @@ msgid "Order requires approval" msgstr "Bestilling kræver godkendelse" #: pretix/control/forms/event.py:1699 -#, fuzzy -#| msgid "Default price" msgid "Default tax code" -msgstr "Standardpris" +msgstr "Standardskattekode" #: pretix/control/forms/event.py:1703 pretix/control/forms/event.py:1707 -#, fuzzy msgid "Deviating tax rate" -msgstr "Momssats" +msgstr "Afvigende skattesats" #: pretix/control/forms/event.py:1711 pretix/control/forms/event.py:1715 -#, fuzzy msgid "Text on invoice" -msgstr "Tekst på faktura" +msgstr "Tekst på fakturaen" #: pretix/control/forms/event.py:1735 msgid "" "A combination of this calculation mode with a non-zero tax rate does not " "make sense." msgstr "" +"Det giver ikke mening at kombinere denne beregningsmetode med en skattesats, " +"der ikke er nul." #: pretix/control/forms/event.py:1740 pretix/control/forms/event.py:1744 -#, fuzzy -#| msgid "This combination of credentials is not known to our system." msgid "This combination of calculation mode and tax code does not make sense." -msgstr "Denne kombination af oplysninger er ikke kendt af vores system." +msgstr "Denne kombination af beregningsmetode og skattekode giver ikke mening." #: pretix/control/forms/event.py:1809 msgid "Pre-selected voucher" @@ -14786,6 +14782,10 @@ msgid "" "can for example be used to provide widgets that give discounts or unlock " "secret products." msgstr "" +"Hvis denne indstilling er aktiveret, viser widgeten produkterne, som om " +"denne rabatkode allerede er indtastet, og når et produkt købes via widgeten, " +"vil denne rabatkode blive anvendt. Dette kan f.eks. bruges til at oprette " +"widgets, der giver rabat eller låser hemmelige produkter op." #: pretix/control/forms/event.py:1816 msgid "Compatibility mode" @@ -14796,6 +14796,8 @@ msgid "" "Our regular widget doesn't work in all website builders. If you run into " "trouble, try using this compatibility mode." msgstr "" +"Vores almindelige widget fungerer ikke i alle hjemmesidebyggere. Hvis du " +"støder på problemer, kan du prøve at bruge denne kompatibilitetstilstand." #: pretix/control/forms/event.py:1839 msgid "The given voucher code does not exist." @@ -14804,7 +14806,7 @@ msgstr "Den angivne rabatkode eksisterer ikke." #: pretix/control/forms/event.py:1846 pretix/control/forms/organizer.py:115 #: pretix/control/views/shredder.py:182 msgid "The slug you entered was not correct." -msgstr "" +msgstr "Det indtastede slug var forkert." #: pretix/control/forms/event.py:1881 msgid "Ticket downloads" @@ -14837,6 +14839,10 @@ msgid "" "up an account with them, which takes less than five minutes using their " "simple interface." msgstr "" +"Stripe er en onlinebetalingsudbyder, der understøtter kreditkort og mange " +"andre betalingsmetoder. For at kunne modtage betalinger via Stripe skal du " +"oprette en konto hos dem, hvilket tager mindre end fem minutter takket være " +"deres brugervenlige grænseflade." #: pretix/control/forms/event.py:1920 msgid "Payment by bank transfer" @@ -14848,6 +14854,9 @@ msgid "" "then import your bank statements to process the payments within pretix, or " "mark them as paid manually." msgstr "" +"Dine kunder vil blive bedt om at overføre pengene til din konto. Du kan " +"derefter importere dine kontoudtog for at behandle betalingerne i pretix " +"eller manuelt markere dem som betalt." #: pretix/control/forms/event.py:1964 #: pretix/control/templates/pretixcontrol/event/quick_setup.html:45 @@ -14864,9 +14873,8 @@ msgstr "Tilgængeligt antal" #: pretix/control/forms/exports.py:56 pretix/control/forms/exports.py:62 #: pretix/control/forms/exports.py:68 -#, fuzzy msgid "Please enter less than 25 recipients." -msgstr "Indtast venligst dit navn." +msgstr "Indtast venligst færre end 25 modtagere." #: pretix/control/forms/filter.py:207 pretix/control/forms/filter.py:209 #: pretix/control/forms/filter.py:1023 pretix/control/forms/filter.py:1025 @@ -14879,18 +14887,16 @@ msgid "All orders" msgstr "Alle bestillinger" #: pretix/control/forms/filter.py:224 -#, fuzzy msgid "Valid orders" -msgstr "Betalte bestillinger" +msgstr "Gyldige ordrer" #: pretix/control/forms/filter.py:225 msgid "Paid (or canceled with paid fee)" -msgstr "" +msgstr "Betalt (eller annulleret mod betaling)" #: pretix/control/forms/filter.py:226 pretix/control/forms/filter.py:1231 -#, fuzzy msgid "Paid or confirmed" -msgstr "Bestilling bekræftet" +msgstr "Betalt eller bekræftet" #: pretix/control/forms/filter.py:227 pretix/control/forms/filter.py:1232 #: pretix/control/templates/pretixcontrol/datasync/control_order_info.html:49 @@ -14902,41 +14908,35 @@ msgstr "Afventer" #: pretix/control/forms/filter.py:228 pretix/control/forms/filter.py:1233 msgid "Pending or paid" -msgstr "" +msgstr "Uafklaret eller betalt" #: pretix/control/forms/filter.py:230 -#, fuzzy msgid "Cancellations" -msgstr "Afbestilling" +msgstr "Aflysninger" #: pretix/control/forms/filter.py:231 -#, fuzzy msgid "Canceled (fully)" -msgstr "Annuller og genudsted" +msgstr "Aflyst (helt)" #: pretix/control/forms/filter.py:232 -#, fuzzy msgid "Canceled (fully or with paid fee)" -msgstr "Annuller og genudsted" +msgstr "Aflyst (helt eller mod betaling)" #: pretix/control/forms/filter.py:233 -#, fuzzy msgid "Canceled (at least one position)" -msgstr "Annullering" +msgstr "Aflyst (mindst én stilling)" #: pretix/control/forms/filter.py:234 -#, fuzzy msgid "Cancellation requested" -msgstr "Afbestillingsgebyr" +msgstr "Anmodning om aflysning" #: pretix/control/forms/filter.py:235 msgid "Fully canceled but invoice not canceled" -msgstr "" +msgstr "Helt annulleret, men fakturaen er ikke annulleret" #: pretix/control/forms/filter.py:237 -#, fuzzy msgid "Payment process" -msgstr "Betalingsleverandører" +msgstr "Betalingsforløb" #: pretix/control/forms/filter.py:239 pretix/control/forms/filter.py:1236 msgid "Pending or expired" @@ -14947,37 +14947,32 @@ msgid "Pending (overdue)" msgstr "Afventer (overskredet)" #: pretix/control/forms/filter.py:241 -#, fuzzy msgid "Overpaid" -msgstr "betalt" +msgstr "For meget betalt" #: pretix/control/forms/filter.py:242 -#, fuzzy msgid "Partially paid" -msgstr "Marker som betalt" +msgstr "Delvist betalt" #: pretix/control/forms/filter.py:243 -#, fuzzy msgid "Underpaid (but confirmed)" -msgstr "Bestilling bekræftet" +msgstr "Underbetalt (men bekræftet)" #: pretix/control/forms/filter.py:244 msgid "Pending (but fully paid)" -msgstr "" +msgstr "Afventer (men fuldt betalt)" #: pretix/control/forms/filter.py:245 msgid "Pending (but no current payment)" -msgstr "" +msgstr "Afventer (men ingen aktuel betaling)" #: pretix/control/forms/filter.py:247 -#, fuzzy msgid "Approval process" -msgstr "afventer" +msgstr "Godkendelsesproces" #: pretix/control/forms/filter.py:248 -#, fuzzy msgid "Approved, payment pending" -msgstr "afventer" +msgstr "Godkendt, betaling afventes" #: pretix/control/forms/filter.py:249 #: pretix/control/templates/pretixcontrol/orders/fragment_order_status.html:8 @@ -14989,11 +14984,11 @@ msgstr "Godkendelse afventer" #: pretix/control/forms/filter.py:252 msgid "Follow-up configured" -msgstr "" +msgstr "Opfølgning konfigureret" #: pretix/control/forms/filter.py:253 msgid "Follow-up due" -msgstr "" +msgstr "Der skal følges op" #: pretix/control/forms/filter.py:483 pretix/control/forms/filter.py:1267 #: pretix/control/forms/filter.py:2053 pretix/control/forms/filter.py:2308 @@ -15015,40 +15010,36 @@ msgstr "{product} – Vilkårlig variant" #: pretix/control/forms/filter.py:566 pretix/control/forms/orders.py:862 msgctxt "subevent" msgid "All dates starting at or after" -msgstr "" +msgstr "Alle datoer fra og med" #: pretix/control/forms/filter.py:572 pretix/control/forms/orders.py:869 msgctxt "subevent" msgid "All dates starting before" -msgstr "" +msgstr "Alle datoer, der begynder før" #: pretix/control/forms/filter.py:578 msgid "Order placed at or after" -msgstr "" +msgstr "Bestilling afgivet den eller senere" #: pretix/control/forms/filter.py:584 -#, fuzzy msgid "Order placed before" -msgstr "Ny bestilling afgivet" +msgstr "Bestilling afgivet før" #: pretix/control/forms/filter.py:613 -#, fuzzy msgid "Minimal sum of payments and refunds" -msgstr "Bestillingsliste (CSV)" +msgstr "Mindste samlede beløb for betalinger og refusioner" #: pretix/control/forms/filter.py:618 -#, fuzzy msgid "Maximal sum of payments and refunds" -msgstr "Bestillingsliste (CSV)" +msgstr "Den maximale sum af betalinger og refusioner" #: pretix/control/forms/filter.py:629 msgid "At least one ticket with check-in" -msgstr "" +msgstr "Mindst én billet med check-in" #: pretix/control/forms/filter.py:633 -#, fuzzy msgid "Affected quota" -msgstr "Slet kvote" +msgstr "Den berørte kvote" #: pretix/control/forms/filter.py:670 pretix/control/forms/filter.py:675 #: pretix/control/forms/filter.py:701 pretix/control/forms/filter.py:706 @@ -15056,7 +15047,7 @@ msgstr "Slet kvote" #: pretix/control/forms/filter.py:774 pretix/control/forms/filter.py:784 #: pretix/control/forms/filter.py:791 msgid "Exact matches only" -msgstr "" +msgstr "Kun nøjagtige søgeresultater" #: pretix/control/forms/filter.py:927 pretix/control/forms/filter.py:932 #: pretix/control/forms/filter.py:1045 pretix/control/forms/filter.py:1050 @@ -15070,29 +15061,24 @@ msgid "All events" msgstr "Alle arrangementer" #: pretix/control/forms/filter.py:1057 -#, fuzzy msgid "All payments" -msgstr "Alle" +msgstr "Alle betalinger" #: pretix/control/forms/filter.py:1067 -#, fuzzy msgid "Payment created from" -msgstr "Betalingsdato" +msgstr "Betaling oprettet fra" #: pretix/control/forms/filter.py:1072 -#, fuzzy msgid "Payment created until" -msgstr "Betalingsdato" +msgstr "Betaling oprettet indtil" #: pretix/control/forms/filter.py:1077 -#, fuzzy msgid "Paid from" -msgstr "Gyldig" +msgstr "Betalt fra" #: pretix/control/forms/filter.py:1082 -#, fuzzy msgid "Paid until" -msgstr "Gyldig indtil" +msgstr "Betalt indtil" #: pretix/control/forms/filter.py:1230 #: pretix/control/templates/pretixcontrol/orders/fragment_order_status.html:31 @@ -15107,7 +15093,7 @@ msgstr "Betalt" #: pretix/control/forms/filter.py:1305 msgctxt "subevent" msgid "Date doesn't start in selected date range." -msgstr "" +msgstr "Datoen ligger ikke inden for det valgte datointerval." #: pretix/control/forms/filter.py:1361 pretix/control/forms/filter.py:1828 msgid "Shop live and presale running" @@ -15145,14 +15131,12 @@ msgid "Date until" msgstr "Dato til" #: pretix/control/forms/filter.py:1383 -#, fuzzy msgid "Start time from" -msgstr "Dato" +msgstr "Starttidspunkt fra" #: pretix/control/forms/filter.py:1388 -#, fuzzy msgid "Start time until" -msgstr "Dato og tidspunkt" +msgstr "Starttidspunkt til" #: pretix/control/forms/filter.py:1393 pretix/control/forms/rrule.py:112 #: pretix/control/forms/rrule.py:151 @@ -15166,7 +15150,7 @@ msgstr "Ugedag" #: pretix/control/forms/filter.py:2180 pretix/control/forms/filter.py:2182 #: pretix/control/forms/filter.py:2748 pretix/control/forms/filter.py:2750 msgid "Search query" -msgstr "" +msgstr "Søgeforespørgsel" #: pretix/control/forms/filter.py:1656 pretix/control/forms/filter.py:1728 #: pretix/control/templates/pretixcontrol/organizers/customer.html:47 @@ -15175,39 +15159,33 @@ msgstr "" #: pretix/control/templates/pretixcontrol/organizers/giftcard_acceptance_list.html:126 #: pretix/control/templates/pretixcontrol/organizers/giftcard_acceptance_list.html:133 #: pretix/control/templates/pretixcontrol/organizers/reusable_medium.html:37 -#, fuzzy msgid "active" -msgstr "Inaktive" +msgstr "aktiv" #: pretix/control/forms/filter.py:1658 #: pretix/control/templates/pretixcontrol/organizers/customer.html:45 -#, fuzzy msgid "not yet activated" -msgstr "Deaktiver" +msgstr "endnu ikke aktiveret" #: pretix/control/forms/filter.py:1662 #: pretix/control/templates/pretixcontrol/organizers/customer.html:113 #: pretix/presale/templates/pretixpresale/organizers/customer_memberships.html:6 #: pretix/presale/templates/pretixpresale/organizers/customer_memberships.html:12 #: pretix/presale/views/customer.py:368 -#, fuzzy msgid "Memberships" -msgstr "Medlemmer" +msgstr "Medlemskaber" #: pretix/control/forms/filter.py:1666 -#, fuzzy msgid "Has no memberships" -msgstr "Team medlemskaber" +msgstr "Har ingen medlemskaber" #: pretix/control/forms/filter.py:1667 -#, fuzzy msgid "Has any membership" -msgstr "Team medlemskaber" +msgstr "Har et medlemskab" #: pretix/control/forms/filter.py:1668 -#, fuzzy msgid "Has valid membership" -msgstr "Team medlemskaber" +msgstr "Har et gyldigt medlemskab" #: pretix/control/forms/filter.py:1827 msgid "Shop live" @@ -15219,11 +15197,11 @@ msgstr "Butik ikke i luften" #: pretix/control/forms/filter.py:1832 msgid "Single event running or in the future" -msgstr "" +msgstr "Enkeltstående begivenhed, der afholdes nu eller i fremtiden" #: pretix/control/forms/filter.py:1833 msgid "Single event in the past" -msgstr "" +msgstr "En enkelt begivenhed i fortiden" #: pretix/control/forms/filter.py:2032 pretix/control/forms/filter.py:2034 msgid "Search attendee…" @@ -15249,17 +15227,15 @@ msgstr "Tjekket ind" #: pretix/control/forms/filter.py:2043 #: pretix/plugins/checkinlists/exporters.py:110 -#, fuzzy msgctxt "checkin state" msgid "Present" -msgstr "Forsalgs sluttidspunkt" +msgstr "Nu" #: pretix/control/forms/filter.py:2044 #: pretix/plugins/checkinlists/exporters.py:111 -#, fuzzy msgctxt "checkin state" msgid "Checked in but left" -msgstr "Tjekket ind – {list}" +msgstr "Tjekket ind, men taget afsted" #: pretix/control/forms/filter.py:2045 #: pretix/control/templates/pretixcontrol/checkin/index.html:178 @@ -15268,10 +15244,9 @@ msgid "Not checked in" msgstr "Ikke tjekket ind" #: pretix/control/forms/filter.py:2064 -#, fuzzy msgctxt "subevent" msgid "Date start from" -msgstr "Dato" +msgstr "Startdato fra" #: pretix/control/forms/filter.py:2070 msgctxt "subevent" @@ -15281,11 +15256,11 @@ msgstr "Startdato til" #: pretix/control/forms/filter.py:2171 pretix/control/forms/filter.py:2174 #: pretix/control/templates/pretixcontrol/users/index.html:52 msgid "Administrator" -msgstr "" +msgstr "Administrator" #: pretix/control/forms/filter.py:2175 msgid "No administrator" -msgstr "" +msgstr "Ingen administrator" #: pretix/control/forms/filter.py:2245 #: pretix/presale/templates/pretixpresale/organizers/customer_giftcards.html:51 @@ -15294,27 +15269,27 @@ msgstr "Gyldig" #: pretix/control/forms/filter.py:2246 msgid "Unredeemed" -msgstr "" +msgstr "Ikke indløst" #: pretix/control/forms/filter.py:2247 msgid "Redeemed at least once" -msgstr "" +msgstr "Indløst mindst én gang" #: pretix/control/forms/filter.py:2248 msgid "Fully redeemed" -msgstr "" +msgstr "Fuldstændig indløst" #: pretix/control/forms/filter.py:2250 msgid "Redeemed and checked in with ticket" -msgstr "" +msgstr "Indløst og checket ind med billet" #: pretix/control/forms/filter.py:2255 msgid "Quota handling" -msgstr "" +msgstr "Håndtering af kvoter" #: pretix/control/forms/filter.py:2259 msgid "Allow to ignore quota" -msgstr "" +msgstr "Tillad at ignorere kvoten" #: pretix/control/forms/filter.py:2264 pretix/control/forms/filter.py:2266 msgid "Filter by tag" @@ -15332,92 +15307,76 @@ msgid "Any product in quota \"{quota}\"" msgstr "Vilkårligt produkt i kvoten \"{quota}\"" #: pretix/control/forms/filter.py:2440 -#, fuzzy msgid "Refund status" -msgstr "Tjek-ind-status" +msgstr "Status for refusion" #: pretix/control/forms/filter.py:2442 -#, fuzzy msgid "All open refunds" -msgstr "Alle" +msgstr "Alle åbne refusioner" #: pretix/control/forms/filter.py:2443 -#, fuzzy msgid "All refunds" -msgstr "Alle bestillinger" +msgstr "Alle refusioner" #: pretix/control/forms/filter.py:2481 pretix/plugins/reports/exporters.py:704 -#, fuzzy msgid "Date filter" -msgstr "Datohistorik" +msgstr "Datofilter" #: pretix/control/forms/filter.py:2483 pretix/plugins/reports/exporters.py:706 -#, fuzzy msgid "Filter by…" -msgstr "Filtrer efter tag" +msgstr "Filtrer efter…" #: pretix/control/forms/filter.py:2485 pretix/plugins/reports/exporters.py:708 -#, fuzzy msgid "Date of last successful payment" -msgstr "Seneste betalingsdato" +msgstr "Dato for seneste vellykkede betaling" #: pretix/control/forms/filter.py:2525 -#, fuzzy msgid "All check-ins" -msgstr "Tjek-ind-lister" +msgstr "Alle indtjekninger" #: pretix/control/forms/filter.py:2526 -#, fuzzy msgid "Successful check-ins" -msgstr "Gennemførte betalinger" +msgstr "Vellykkede indtjekninger" #: pretix/control/forms/filter.py:2527 -#, fuzzy msgid "Unsuccessful check-ins" -msgstr "Gennemførte betalinger" +msgstr "Mislykkede indtjekninger" #: pretix/control/forms/filter.py:2532 #: pretix/control/templates/pretixcontrol/checkin/checkins.html:64 #: pretix/plugins/checkinlists/exporters.py:759 -#, fuzzy msgid "Scan type" -msgstr "Korttype" +msgstr "Scannetype" #: pretix/control/forms/filter.py:2534 -#, fuzzy msgid "All directions" -msgstr "Alle handlinger" +msgstr "Alle retninger" #: pretix/control/forms/filter.py:2543 pretix/control/forms/filter.py:2583 #: pretix/control/templates/pretixcontrol/checkin/checkins.html:67 #: pretix/plugins/checkinlists/exporters.py:765 -#, fuzzy msgid "Device" -msgstr "Enhedsnavn" +msgstr "Enhed" #: pretix/control/forms/filter.py:2544 pretix/control/forms/filter.py:2579 #: pretix/control/forms/filter.py:2770 -#, fuzzy msgid "All devices" -msgstr "Alle fakturaer" +msgstr "Alle enheder" #: pretix/control/forms/filter.py:2558 -#, fuzzy msgctxt "filter" msgid "Start date" -msgstr "Starttidspunkt" +msgstr "Startdato" #: pretix/control/forms/filter.py:2564 -#, fuzzy msgctxt "filter" msgid "End date" -msgstr "Sluttidspunkt" +msgstr "Slutdato" #: pretix/control/forms/filter.py:2606 #: pretix/plugins/checkinlists/exporters.py:883 -#, fuzzy msgid "All check-in lists" -msgstr "Tjek-ind-lister" +msgstr "Alle check-in-lister" #: pretix/control/forms/filter.py:2610 #: pretix/control/templates/pretixcontrol/checkin/checkins.html:64 @@ -15437,28 +15396,23 @@ msgstr "Tjek-ind-liste" #: pretix/control/forms/filter.py:2761 #: pretix/control/templates/pretixcontrol/organizers/devices.html:86 msgid "Software" -msgstr "" +msgstr "Software" #: pretix/control/forms/filter.py:2768 -#, fuzzy msgid "Device status" -msgstr "Enhedsnavn" +msgstr "Enhedsstatus" #: pretix/control/forms/filter.py:2771 -#, fuzzy msgid "Active devices" -msgstr "Alle fakturaer" +msgstr "Aktive enheder" #: pretix/control/forms/filter.py:2772 -#, fuzzy msgid "Revoked devices" -msgstr "Registrerede enheder" +msgstr "Spærrede enheder" #: pretix/control/forms/filter.py:2827 pretix/control/forms/filter.py:2829 -#, fuzzy -#| msgid "Require email addresses per ticket" msgid "Search email address or subject" -msgstr "Påkræv e-mailadresse pr. billet" +msgstr "Søg efter e-mailadresse eller emne" #: pretix/control/forms/global_settings.py:62 msgid "Additional footer text" @@ -15478,37 +15432,37 @@ msgstr "Vises som linket i den yderligere tekst i sidenfoden." #: pretix/control/forms/global_settings.py:74 msgid "Global message banner" -msgstr "" +msgstr "Banner med global besked" #: pretix/control/forms/global_settings.py:79 msgid "Global message banner detail text" -msgstr "" +msgstr "Detaljeret tekst til globalt meddelelsesbanner" #: pretix/control/forms/global_settings.py:83 msgid "OpenCage API key for geocoding" -msgstr "" +msgstr "OpenCage API-nøgle til geokodning" #: pretix/control/forms/global_settings.py:87 msgid "MapQuest API key for geocoding" -msgstr "" +msgstr "MapQuest API-nøgle til geokodning" #: pretix/control/forms/global_settings.py:91 msgid "Leaflet tiles URL pattern" -msgstr "" +msgstr "URL-mønster for fliser i foldere" #: pretix/control/forms/global_settings.py:92 #: pretix/control/forms/global_settings.py:97 #, python-brace-format msgid "e.g. {sample}" -msgstr "" +msgstr "f.eks. {sample}" #: pretix/control/forms/global_settings.py:96 msgid "Leaflet tiles attribution" -msgstr "" +msgstr "Kildeangivelse for fliser til folder" #: pretix/control/forms/global_settings.py:103 msgid "ApplePay MerchantID Domain Association" -msgstr "" +msgstr "Kobling af Apple Pay MerchantID til domæne" #: pretix/control/forms/global_settings.py:104 #, python-brace-format @@ -15516,6 +15470,8 @@ msgid "" "Will be served at {domain}/.well-known/apple-developer-merchantid-domain-" "association" msgstr "" +"Vil blive leveret på {domain}/.well-known/apple-developer-merchantid-domain-" +"association" #: pretix/control/forms/global_settings.py:122 msgid "Perform update checks" @@ -15530,6 +15486,12 @@ msgid "" "any IP addresses and we will not know who you are or where to find your " "instance. You can disable this behavior here at any time." msgstr "" +"Under opdateringskontrollen sender pretix et anonymt, unikt installations-" +"id, den aktuelle version af pretix, dine installerede plugins samt antallet " +"af aktive og inaktive begivenheder i din installation til servere, der " +"drives af pretix-udviklerne. Vi gemmer udelukkende anonyme data, aldrig IP-" +"adresser, og vi ved ikke, hvem du er, eller hvor din instans befinder sig. " +"Du kan til enhver tid deaktivere denne funktion her." #: pretix/control/forms/global_settings.py:131 msgid "Email notifications" @@ -15546,32 +15508,37 @@ msgstr "" "blive sent fra denne server." #: pretix/control/forms/global_settings.py:145 -#, fuzzy msgid "Changes to pretix" -msgstr "Skift dato til" +msgstr "Ændringer i pretix" #: pretix/control/forms/global_settings.py:148 msgid "" "This installation of pretix is running without any custom modifications or " "extensions (except for installed plugins)." msgstr "" +"Denne installation af pretix kører uden nogen brugerdefinerede ændringer " +"eller udvidelser (bortset fra installerede plugins)." #: pretix/control/forms/global_settings.py:150 msgid "" "This installation of pretix includes changes or extensions made to the " "source code." msgstr "" +"Denne installation af pretix indeholder ændringer eller udvidelser, der er " +"foretaget i kildekoden." #: pretix/control/forms/global_settings.py:155 -#, fuzzy msgid "Usage of pretix" -msgstr "Overblik over brug" +msgstr "Anvendelse af pretix" #: pretix/control/forms/global_settings.py:158 msgid "" "I only use pretix to organize events which are executed by my own company or " "its affiliated companies, or to sell products sold by my own company." msgstr "" +"Jeg bruger kun pretix til at arrangere begivenheder, der afholdes af mit " +"eget firma eller dets tilknyttede virksomheder, eller til at sælge " +"produkter, der forhandles af mit eget firma." #: pretix/control/forms/global_settings.py:160 msgid "" @@ -15579,14 +15546,17 @@ msgid "" "company) or I offer the functionality of pretix to others (e.g. a Software-" "as-a-Service company)." msgstr "" +"Jeg bruger pretix til at sælge billetter for andre arrangører (f.eks. et " +"billetselskab) eller jeg stiller pretix' funktioner til rådighed for andre " +"(f.eks. et Software-as-a-Service-firma)." #: pretix/control/forms/global_settings.py:162 msgid "I'm not sure which option applies." -msgstr "" +msgstr "Jeg er ikke sikker på, hvilken mulighed der gælder." #: pretix/control/forms/global_settings.py:167 msgid "License choice" -msgstr "" +msgstr "Valg af licens" #: pretix/control/forms/global_settings.py:170 msgid "" @@ -15594,6 +15564,9 @@ msgid "" "the copyright holders which allows me to not share modifications if I only " "use pretix internally." msgstr "" +"Jeg ønsker at bruge Pretix i henhold til den ekstra tilladelse, som " +"ophavsretsindehaverne har givet alle, og som giver mig mulighed for ikke at " +"dele ændringer, hvis jeg kun bruger Pretix internt." #: pretix/control/forms/global_settings.py:173 msgid "" @@ -15601,29 +15574,40 @@ msgid "" "restriction on the scope of usage and therefore without making use of any " "additional permission." msgstr "" +"Jeg ønsker at anvende pretix i henhold til betingelserne i AGPLv3-licensen " +"uden begrænsninger i anvendelsesomfanget og dermed uden at skulle indhente " +"yderligere tilladelse." #: pretix/control/forms/global_settings.py:175 msgid "" "I have obtained a paid pretix Enterprise license which is currently valid." msgstr "" +"Jeg har erhvervet en betalt pretix Enterprise-licens, som i øjeblikket er " +"gyldig." #: pretix/control/forms/global_settings.py:180 msgid "" "This installation of pretix has installed plugins which are available freely " "under a non-copyleft license (Apache License, MIT License, BSD license, …)." msgstr "" +"Denne installation af pretix indeholder plugins, der er frit tilgængelige " +"under en non-copyleft-licens (Apache-licens, MIT-licens, BSD-licens osv.)." #: pretix/control/forms/global_settings.py:185 msgid "" "This installation of pretix has installed plugins which are available freely " "under a license with strong copyleft (GPL, AGPL, …)." msgstr "" +"Denne installation af pretix indeholder plugins, der er frit tilgængelige " +"under en licens med stærk copyleft (GPL, AGPL, …)." #: pretix/control/forms/global_settings.py:190 msgid "" "This installation of pretix has installed plugins which have been created " "internally or obtained under a proprietary license by a third party." msgstr "" +"Denne installation af pretix indeholder plugins, der er udviklet internt " +"eller erhvervet under en proprietær licens fra en tredjepart." #: pretix/control/forms/global_settings.py:195 msgid "" -- 2.49.1 From fd0b3bac3c16e35800984772462ed46603e728e8 Mon Sep 17 00:00:00 2001 From: Nikolai Date: Wed, 22 Apr 2026 11:41:25 +0200 Subject: [PATCH 094/107] Translations: Update Danish Currently translated at 58.9% (151 of 256 strings) Translation: pretix/pretix (JavaScript parts) Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/da/ powered by weblate --- src/pretix/locale/da/LC_MESSAGES/djangojs.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pretix/locale/da/LC_MESSAGES/djangojs.po b/src/pretix/locale/da/LC_MESSAGES/djangojs.po index 807663868..674c5250c 100644 --- a/src/pretix/locale/da/LC_MESSAGES/djangojs.po +++ b/src/pretix/locale/da/LC_MESSAGES/djangojs.po @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-17 14:06+0000\n" -"PO-Revision-Date: 2024-07-10 15:00+0000\n" +"PO-Revision-Date: 2026-04-22 18:00+0000\n" "Last-Translator: Nikolai \n" "Language-Team: Danish \n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.6.1\n" +"X-Generator: Weblate 5.17\n" #: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56 #: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62 @@ -701,7 +701,7 @@ msgstr "" #: pretix/static/pretixcontrol/js/ui/main.js:445 #: pretix/static/pretixcontrol/js/ui/main.js:465 msgid "Search query" -msgstr "" +msgstr "Søgeforespørgsel" #: pretix/static/pretixcontrol/js/ui/main.js:463 msgid "All" -- 2.49.1 From a13bb630d5fc88629f96a2ab0688eedcb7f70aa1 Mon Sep 17 00:00:00 2001 From: Nikolai Date: Thu, 23 Apr 2026 10:57:56 +0200 Subject: [PATCH 095/107] Translations: Update Danish Currently translated at 58.4% (3676 of 6287 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/ powered by weblate --- src/pretix/locale/da/LC_MESSAGES/django.po | 383 +++++++++++---------- 1 file changed, 205 insertions(+), 178 deletions(-) diff --git a/src/pretix/locale/da/LC_MESSAGES/django.po b/src/pretix/locale/da/LC_MESSAGES/django.po index 60c844521..a2836202d 100644 --- a/src/pretix/locale/da/LC_MESSAGES/django.po +++ b/src/pretix/locale/da/LC_MESSAGES/django.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-30 11:22+0000\n" -"PO-Revision-Date: 2026-04-22 18:00+0000\n" +"PO-Revision-Date: 2026-04-23 17:00+0000\n" "Last-Translator: Nikolai \n" "Language-Team: Danish \n" @@ -15614,10 +15614,12 @@ msgid "" "This installation of pretix has installed pretix Enterprise plugins with a " "valid license." msgstr "" +"Denne installation af pretix har installeret pretix Enterprise-plugins med " +"en gyldig licens." #: pretix/control/forms/global_settings.py:199 msgid "Footer: \"powered by\" name (optional)" -msgstr "" +msgstr "Footer: \"powered by\" navn (valgfrit)" #: pretix/control/forms/global_settings.py:200 msgid "" @@ -15625,20 +15627,24 @@ msgid "" "name of your company or organization (if you made any changes to pretix), " "set the name here." msgstr "" +"Hvis du ønsker, at teksten »powered by« i sidens footer skal indeholde " +"navnet på din virksomhed eller organisation (hvis du har foretaget ændringer " +"i pretix), skal du indtaste navnet her." #: pretix/control/forms/global_settings.py:205 msgid "Link for powered by name" -msgstr "" +msgstr "Link til \"Powered by\"-navn" #: pretix/control/forms/global_settings.py:206 msgid "" "If you used the previous option, you can set an URL to link to in the footer." msgstr "" +"Hvis du har valgt den forrige indstilling, kan du angive en URL, der skal " +"linkes til i footeren." #: pretix/control/forms/global_settings.py:210 -#, fuzzy msgid "Source code instructions" -msgstr "Send tilmelding" +msgstr "Vejledning til kildekoden" #: pretix/control/forms/global_settings.py:212 msgid "" @@ -15646,33 +15652,36 @@ msgid "" "current source code of the site including all modifications and installed " "plugins. This will be publicly available. Make sure to keep it up to date!" msgstr "" +"Hvis du bruger pretix under AGPLv3-vilkår, skal du beskrive nøjagtigt, " +"hvordan man downloader den aktuelle kildekode til webstedet, inklusive alle " +"ændringer og installerede plugins. Denne information vil være offentligt " +"tilgængelig. Sørg for at holde den opdateret!" #: pretix/control/forms/item.py:99 -#, fuzzy -#| msgid "Products in this category are add-on products" msgid "" "Products in this category are regular products displayed on the front page." -msgstr "Produkter i denne kategori er tilføjelsesprodukter" +msgstr "" +"Produkterne i denne kategori er de almindelige produkter, der vises på " +"forsiden." #: pretix/control/forms/item.py:102 -#, fuzzy -#| msgid "Product category" msgid "Add-on product category" -msgstr "Produktkategori" +msgstr "Kategori for tilkøbsprodukter" #: pretix/control/forms/item.py:103 -#, fuzzy -#| msgid "Products in this category are add-on products" msgid "" "Products in this category are add-on products and can only be bought as add-" "ons." -msgstr "Produkter i denne kategori er tilføjelsesprodukter" +msgstr "" +"Produkter i denne kategori er tilkøbsprodukter og kan kun købes som tilbehør." #: pretix/control/forms/item.py:107 msgid "" "Products in this category are regular products, but are only shown in the " "cross-selling step, according to the configuration below." msgstr "" +"Produkterne i denne kategori er almindelige produkter, men vises kun i cross-" +"selling-trinnet i henhold til nedenstående konfiguration." #: pretix/control/forms/item.py:112 msgid "" @@ -15680,6 +15689,9 @@ msgid "" "but are additionally shown in the cross-selling step, according to the " "configuration below." msgstr "" +"Produkterne i denne kategori er almindelige produkter, der vises på " +"forsiden, men som desuden vises i cross-selling-trinnet i henhold til " +"nedenstående konfiguration." #: pretix/control/forms/item.py:141 pretix/control/forms/item.py:217 msgid "This field is required" @@ -15687,12 +15699,11 @@ msgstr "Dette felt er obligatorisk" #: pretix/control/forms/item.py:219 msgid "Dependencies between questions are not supported during check-in." -msgstr "" +msgstr "Afhængigheder mellem spørgsmål understøttes ikke under check-in." #: pretix/control/forms/item.py:314 -#, fuzzy msgid "No products" -msgstr "Alle produkter" +msgstr "Ingen produkter" #: pretix/control/forms/item.py:354 #: pretix/control/templates/pretixcontrol/items/fragment_quota_availability.html:11 @@ -15708,11 +15719,12 @@ msgid "" "Select this option e.g. for t-shirts that come in multiple sizes. You can " "select the variations in the next step." msgstr "" +"Vælg denne indstilling f.eks. til T-shirts, der fås i flere størrelser. Du " +"kan vælge de forskellige varianter i næste trin." #: pretix/control/forms/item.py:403 pretix/control/forms/item.py:731 -#, fuzzy msgid "No category" -msgstr "Produktkategori" +msgstr "Ingen kategori" #: pretix/control/forms/item.py:411 msgid "Copy product information" @@ -15720,7 +15732,7 @@ msgstr "Kopier produktinformation" #: pretix/control/forms/item.py:420 msgid "No taxation" -msgstr "" +msgstr "Ingen beskatning" #: pretix/control/forms/item.py:424 msgid "Do not add to a quota now" @@ -15764,17 +15776,16 @@ msgstr "Vælg venligst en kvote." #: pretix/control/forms/item.py:617 pretix/plugins/badges/forms.py:85 #: pretix/plugins/ticketoutputpdf/forms.py:55 -#, fuzzy msgid "(Event default)" -msgstr "Arrangementsdato" +msgstr "(Standard for begivenhed)" #: pretix/control/forms/item.py:627 msgid "Choose automatically depending on event settings" -msgstr "" +msgstr "Vælg automatisk afhængigt af begivenhedsindstillingerne" #: pretix/control/forms/item.py:628 msgid "Yes, if ticket generation is enabled in general" -msgstr "" +msgstr "Ja, hvis generering af billetter er aktiveret generelt" #: pretix/control/forms/item.py:646 msgid "" @@ -15782,31 +15793,38 @@ msgid "" "people over 65. This ticket includes access to all parts of the event, " "except the VIP area." msgstr "" +"F.eks. gælder denne nedsatte pris for fuldtidsstuderende, arbejdsløse og " +"personer over 65 år. Denne billet giver adgang til alle dele af " +"arrangementet, bortset fra VIP-området." #: pretix/control/forms/item.py:690 msgid "" "This option is deprecated. For new products, use the newer option below that " "refers to another product instead of a quota." msgstr "" +"Denne indstilling er udfaset. For nye produkter skal du bruge den nyere " +"indstilling nedenfor, der henviser til et andet produkt i stedet for en " +"kvote." #: pretix/control/forms/item.py:701 pretix/control/forms/item.py:717 msgid "Shown independently of other products" -msgstr "" +msgstr "Vises uafhængigt af andre produkter" #: pretix/control/forms/item.py:742 -#, fuzzy msgid "Date chosen by customer" -msgstr "Annuller bestilling" +msgstr "Dato valgt af kunden" #: pretix/control/forms/item.py:751 msgid "No membership granted" -msgstr "" +msgstr "Der er ikke tildelt noget medlemskab" #: pretix/control/forms/item.py:770 msgid "" "Gift card products should use a tax rule with a rate of 0 percent since " "sales tax will be applied when the gift card is redeemed." msgstr "" +"Gavekortprodukter skal være underlagt en afgiftsregel med en sats på 0 " +"procent, da der opkræves moms, når gavekortet indløses." #: pretix/control/forms/item.py:776 msgid "" @@ -15823,6 +15841,8 @@ msgid "" "If a valid membership is required, at least one valid membership type needs " "to be selected." msgstr "" +"Hvis der kræves et gyldigt medlemskab, skal der vælges mindst én gyldig " +"medlemskategori." #: pretix/control/forms/item.py:806 msgid "" @@ -15831,17 +15851,22 @@ msgid "" "the membership later. If you want the membership to be non-personalized, set " "the membership type to be transferable." msgstr "" +"Dit produkt giver ret til et ikke-overdrageligt medlemskab og bør derfor " +"være en personlig adgangsbillet. Ellers risikerer kunderne, at de ikke kan " +"benytte medlemskabet senere. Hvis du ønsker, at medlemskabet skal være ikke-" +"personligt, skal du indstille medlemskabstypen til at være overdragelig." #: pretix/control/forms/item.py:815 -#, fuzzy msgid "The start of validity must be before the end of validity." -msgstr "Seneste betalingsdato kan ikke ligge før slutningen på forsalget." +msgstr "Gyldighedsperioden skal ligge før udløbsdatoen." #: pretix/control/forms/item.py:822 msgid "" "You have selected dynamic validity but have not entered a time period. This " "would render the tickets unusable." msgstr "" +"Du har valgt dynamisk gyldighed, men har ikke angivet en tidsperiode. Dette " +"vil gøre billetterne ubrugelige." #: pretix/control/forms/item.py:927 #, python-format @@ -15850,43 +15875,43 @@ msgid "" "by a user or currently is in a user's cart. Please set the variation as " "\"inactive\" instead." msgstr "" +"Varianten \"%s\" kan ikke slettes, da den allerede er bestilt af en bruger " +"eller ligger i en brugers indkøbskurv. Sæt i stedet varianten til " +"\"inaktiv\"." #: pretix/control/forms/item.py:1004 -#, fuzzy msgid "Use value from product" -msgstr "Du skal først oprette et produkt" +msgstr "Brug værdien af produktet" #: pretix/control/forms/item.py:1089 -#, fuzzy msgid "Add-ons" -msgstr "Tilføjelser" +msgstr "Tilkøbsprodukter" #: pretix/control/forms/item.py:1113 msgid "You added the same add-on category twice" -msgstr "" +msgstr "Du har tilføjet den samme tilkøbskategori to gange" #: pretix/control/forms/item.py:1158 msgid "" "Be aware that setting a minimal number makes it impossible to buy this " "product if all available add-ons are sold out." msgstr "" +"Vær opmærksom på, at hvis du angiver et minimumsantal, vil det ikke være " +"muligt at købe dette produkt, hvis alle tilgængelige tilkøb er udsolgt." #: pretix/control/forms/item.py:1165 -#, fuzzy msgid "Bundled products" -msgstr "Tilføjelsesprodukter" +msgstr "Produktpakker" #: pretix/control/forms/item.py:1215 -#, fuzzy msgid "You added the same bundled product twice." -msgstr "Tilføj nyt element" +msgstr "Du har tilføjet den samme produktpakke to gange." #: pretix/control/forms/item.py:1221 #: pretix/control/templates/pretixcontrol/item/include_bundles.html:23 #: pretix/control/templates/pretixcontrol/item/include_bundles.html:50 -#, fuzzy msgid "Bundled product" -msgstr "Tilføjelsesprodukter" +msgstr "Produktpakke" #: pretix/control/forms/item.py:1246 pretix/control/forms/orders.py:379 #: pretix/control/forms/orders.py:568 @@ -15894,10 +15919,8 @@ msgid "inactive" msgstr "inaktiv" #: pretix/control/forms/item.py:1331 -#, fuzzy -#| msgid "Printing time" msgid "Program times" -msgstr "Tidspunktet for udskriften" +msgstr "Programtider" #: pretix/control/forms/mailsetup.py:42 msgid "Hostname" @@ -15918,6 +15941,9 @@ msgid "" "only use characters A-Z, a-z, 0-9, and common special characters " "({characters})." msgstr "" +"Adgangskoden indeholder tegn, som vores e-mailsystem ikke understøtter. Brug " +"venligst kun bogstaverne A-Z, a-z, tallene 0-9 og almindelige specialtegn (" +"{characters})." #: pretix/control/forms/mailsetup.py:70 msgid "Use STARTTLS" @@ -15948,99 +15974,84 @@ msgid "" "You are not allowed to use this mail server, please choose one with a public " "IP address instead." msgstr "" +"Du har ikke adgang til denne mailserver. Vælg i stedet en med en offentlig " +"IP-adresse." #: pretix/control/forms/mailsetup.py:103 -#, fuzzy msgid "We were unable to resolve this hostname." -msgstr "Vi kan ikke behandle din forespørgsel." +msgstr "Vi kunne ikke finde dette host-navn." #: pretix/control/forms/mapping.py:40 -#, fuzzy -#| msgid "Overview" msgid "Overwrite" -msgstr "Overblik" +msgstr "Overskriv" #: pretix/control/forms/mapping.py:41 -#, fuzzy -#| msgid "Fill form" msgid "Fill if new" -msgstr "Udfyld formularen" +msgstr "Udfyld, hvis det er nyt" #: pretix/control/forms/mapping.py:42 -#, fuzzy -#| msgid "Fill form" msgid "Fill if empty" -msgstr "Udfyld formularen" +msgstr "Udfyld, hvis feltet er tomt" #: pretix/control/forms/mapping.py:43 -#, fuzzy -#| msgid "Add me to the list" msgid "Add to list" -msgstr "Tilføj mig til listen" +msgstr "Føj til listen" #: pretix/control/forms/mapping.py:50 -#, fuzzy msgid "pretix field" -msgstr "Alle fakturaer" +msgstr "pretix-felt" #: pretix/control/forms/modelimport.py:52 #, python-brace-format msgid "CSV column: \"{name}\"" -msgstr "" +msgstr "CSV-kolonne: \"{name}\"" #: pretix/control/forms/modelimport.py:81 -#, fuzzy msgid "Import mode" -msgstr "Importer fil" +msgstr "Importtilstand" #: pretix/control/forms/modelimport.py:83 msgid "Create a separate order for each line" -msgstr "" +msgstr "Opret en separat ordre for hver linje" #: pretix/control/forms/modelimport.py:84 msgid "Create one order with one position per line" -msgstr "" +msgstr "Opret en ordre med én post pr. linje" #: pretix/control/forms/modelimport.py:85 msgid "" "Group multiple lines together into the same order based on a grouping column" -msgstr "" +msgstr "Saml flere rækker i samme rækkefølge ud fra en grupperingskolonne" #: pretix/control/forms/modelimport.py:92 -#, fuzzy msgid "Create orders as fully paid" -msgstr "Marker som betalt" +msgstr "Opret ordrer som fuldt betalte" #: pretix/control/forms/modelimport.py:93 msgid "Create orders as pending and still require payment" -msgstr "" +msgstr "Opret ordrer som ventende, men kræv stadig betaling" #: pretix/control/forms/modelimport.py:98 -#, fuzzy msgid "Create orders as test mode orders" -msgstr "Kun betalte bestillinger" +msgstr "Opret ordrer som ordrer i test-tilstand" #: pretix/control/forms/modelimport.py:102 -#, fuzzy msgid "Orders not created in test mode cannot be deleted again after import." -msgstr "Den valgte gruppe kan ikke slettet." +msgstr "" +"Ordrer, der ikke er oprettet i testtilstand, kan ikke slettes igen efter " +"importen." #: pretix/control/forms/modelimport.py:123 -#, fuzzy -#| msgid "You cannot generate an invoice for this order." msgid "A grouping cannot be specified for this import mode." -msgstr "Du kan ikke generere en faktura for denne ordre." +msgstr "Der kan ikke angives en gruppering for denne importtilstand." #: pretix/control/forms/modelimport.py:125 -#, fuzzy -#| msgid "A variation needs to be set for this item." msgid "A grouping needs to be specified for this import mode." -msgstr "Der skal angives en variant for denne artikel." +msgstr "Der skal angives en gruppe for denne importtilstand." #: pretix/control/forms/orders.py:85 -#, fuzzy msgid "Confirm order regardless of payment" -msgstr "Ugyldige betalinger" +msgstr "Bekræft ordren uanset betalingsmetode" #: pretix/control/forms/orders.py:86 msgid "" @@ -16063,17 +16074,20 @@ msgstr "" #: pretix/control/forms/orders.py:94 msgid "Overbook quota" -msgstr "" +msgstr "Overskrid kvote" #: pretix/control/forms/orders.py:95 msgid "" "If you check this box, this operation will be performed even if it leads to " "an overbooked quota and you having sold more tickets than you planned!" msgstr "" +"Hvis du markerer dette felt, vil denne handling blive udført, selvom det " +"medfører, at kvoten overskrides, og du dermed har solgt flere billetter, end " +"du havde planlagt!" #: pretix/control/forms/orders.py:136 msgid "Overbook quota and ignore late payment" -msgstr "" +msgstr "Overskrid kvoten og se bort fra forsinket betaling" #: pretix/control/forms/orders.py:137 msgid "" @@ -16082,12 +16096,15 @@ msgid "" "operation will also be performed regardless of the settings for late " "payments." msgstr "" +"Hvis du markerer dette felt, vil handlingen blive udført, selvom det " +"medfører, at kvoten overskrides, og du dermed har solgt flere billetter, end " +"du havde planlagt! Handlingen vil også blive udført uanset indstillingerne " +"for forsinkede betalinger." #: pretix/control/forms/orders.py:167 pretix/control/forms/orders.py:226 #: pretix/control/forms/orders.py:240 -#, fuzzy msgid "Notify customer by email" -msgstr "Giv bruger besked via e-mail" +msgstr "Underret kunden via e-mail" #: pretix/control/forms/orders.py:174 msgid "Keep a cancellation fee of" @@ -16106,46 +16123,48 @@ msgstr "" "i dit annulleringsgebyr, hvis du vil beholde dem." #: pretix/control/forms/orders.py:180 -#, fuzzy msgid "Generate cancellation for invoice" -msgstr "Generér afbestilling" +msgstr "Opret en annullering af fakturaen" #: pretix/control/forms/orders.py:185 pretix/control/forms/orders.py:230 msgid "Comment (will be sent to the user)" -msgstr "" +msgstr "Kommentar (bliver sendt til brugeren)" #: pretix/control/forms/orders.py:186 pretix/control/forms/orders.py:231 msgid "" "Will be included in the notification email when the respective placeholder " "is present in the configured email text." msgstr "" +"Vil blive medtaget i notifikations-e-mailen, når den pågældende pladsholder " +"forekommer i den konfigurerede e-mailtekst." #: pretix/control/forms/orders.py:204 msgid "" "Please enter a gross amount. As per your event settings, the taxes will be " "split the same way as the order positions." msgstr "" +"Indtast venligst et bruttobeløb. I henhold til dine begivenhedsindstillinger " +"fordeles afgifterne på samme måde som ordreposterne." #: pretix/control/forms/orders.py:209 msgid "" "Please enter a gross amount. As per your event settings, the default tax " "rate will be charged." msgstr "" +"Indtast venligst et bruttobeløb. I henhold til dine begivenhedsindstillinger " +"vil standardskattesatsen blive pålagt." #: pretix/control/forms/orders.py:213 -#, fuzzy -#| msgid "The event settings have been changed." msgid "As per your event settings, no tax will be charged." -msgstr "Indstillingerne for arrangementet er blevet ændret." +msgstr "I henhold til dine begivenhedsindstillinger opkræves der ingen moms." #: pretix/control/forms/orders.py:241 msgid "A mail will only be sent if the order is fully paid after this." -msgstr "" +msgstr "Der sendes først en e-mail, når ordren er fuldt betalt." #: pretix/control/forms/orders.py:248 -#, fuzzy msgid "Payment amount" -msgstr "Betalingsdato" +msgstr "Betalingsbeløb" #: pretix/control/forms/orders.py:252 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/control.html:24 @@ -16157,40 +16176,44 @@ msgid "Payment date" msgstr "Betalingsdato" #: pretix/control/forms/orders.py:276 -#, fuzzy msgid "Please select some events." -msgstr "Vælg venligst en kvote." +msgstr "Vælg venligst nogle begivenheder." #: pretix/control/forms/orders.py:297 msgid "Re-calculate taxes" msgstr "Genberegn moms" #: pretix/control/forms/orders.py:300 -#, fuzzy msgid "Do not re-calculate taxes" -msgstr "Genberegn moms" +msgstr "Skatten skal ikke genberegnes" #: pretix/control/forms/orders.py:301 msgid "" "Re-calculate taxes based on address and product settings, keep gross amount " "the same." msgstr "" +"Beregn skatterne på ny ud fra adresse- og produktindstillingerne, men lad " +"bruttobeløbet forblive det samme." #: pretix/control/forms/orders.py:302 msgid "" "Re-calculate taxes based on address and product settings, keep net amount " "the same." msgstr "" +"Beregn skatterne på ny ud fra adresse- og produktindstillingerne, men hold " +"nettobeløbet uændret." #: pretix/control/forms/orders.py:307 msgid "Issue a new invoice if required" -msgstr "" +msgstr "Udsted en ny faktura, hvis det er nødvendigt" #: pretix/control/forms/orders.py:311 msgid "" "If an invoice exists for this order and this operation would change its " "contents, the old invoice will be canceled and a new invoice will be issued." msgstr "" +"Hvis der findes en faktura for denne ordre, og denne handling vil ændre " +"indholdet heri, annulleres den gamle faktura, og der udstedes en ny faktura." #: pretix/control/forms/orders.py:316 msgid "Notify user" @@ -16204,7 +16227,7 @@ msgstr "" #: pretix/control/forms/orders.py:324 msgid "Allow to overbook quotas when performing this operation" -msgstr "" +msgstr "Tillad overbooking af kvoter, når denne handling udføres" #: pretix/control/forms/orders.py:340 msgid "Add-on to" @@ -16217,7 +16240,7 @@ msgstr "Tilføjelse til" #: pretix/presale/templates/pretixpresale/event/checkout_membership.html:23 #: pretix/presale/templates/pretixpresale/event/checkout_questions.html:101 msgid "Seat" -msgstr "" +msgstr "Plads" #: pretix/control/forms/orders.py:348 #: pretix/control/templates/pretixcontrol/order/change.html:182 @@ -16226,85 +16249,83 @@ msgstr "" #: pretix/control/templates/pretixcontrol/organizers/customer_membership_delete.html:5 #: pretix/control/templates/pretixcontrol/organizers/customer_membership_delete.html:9 #: pretix/presale/forms/checkout.py:238 -#, fuzzy msgid "Membership" -msgstr "Medlemmer" +msgstr "Medlemskab" #: pretix/control/forms/orders.py:356 msgid "Including taxes, if any. Keep empty for the product's default price" msgstr "" +"Inkl. eventuelle afgifter. Lad feltet være tomt for at vise produktets " +"standardpris" #: pretix/control/forms/orders.py:470 pretix/control/forms/orders.py:474 #: pretix/control/forms/orders.py:502 pretix/control/forms/orders.py:544 #: pretix/control/forms/orders.py:563 pretix/control/forms/orders.py:581 #: pretix/control/forms/orders.py:609 msgid "(Unchanged)" -msgstr "" +msgstr "(Uændret)" #: pretix/control/forms/orders.py:480 pretix/control/forms/orders.py:604 msgid "New price (gross)" msgstr "Ny pris (brutto)" #: pretix/control/forms/orders.py:484 -#, fuzzy msgid "Ticket is blocked" -msgstr "Billetter" +msgstr "Billetten er spærret" #: pretix/control/forms/orders.py:489 msgid "Validity start" -msgstr "" +msgstr "Gyldighedens starttidspunkt" #: pretix/control/forms/orders.py:494 -#, fuzzy msgid "Validity end" -msgstr "Gyldig indtil" +msgstr "Gyldighedens sluttidspunkt" #: pretix/control/forms/orders.py:506 -#, fuzzy msgid "Generate a new secret" -msgstr "Opret en ny bruger" +msgstr "Opret en ny sikkerhedsnøgle" #: pretix/control/forms/orders.py:507 msgid "" "This affects both the ticket secret (often used as a QR code) as well as the " "link used to individually access the ticket." msgstr "" +"Dette gælder både billettens sikkerhedskode (som ofte bruges som en QR-kode) " +"og det link, der bruges til at få adgang til den enkelte billet." #: pretix/control/forms/orders.py:512 -#, fuzzy msgid "Cancel this position" -msgstr "Annullering" +msgstr "Annuller denne post" #: pretix/control/forms/orders.py:516 msgid "Split into new order" msgstr "Split i ny bestilling" #: pretix/control/forms/orders.py:582 -#, fuzzy msgid "(No membership)" -msgstr "Team medlemskaber" +msgstr "(Intet medlemskab)" #: pretix/control/forms/orders.py:613 -#, fuzzy msgid "Remove this fee" -msgstr "Fjern filter" +msgstr "Fjern dette gebyr" #: pretix/control/forms/orders.py:631 msgid "" "Note that payment fees have a special semantic and might automatically be " "changed if the payment method of the order is changed." msgstr "" +"Bemærk, at betalingsgebyrer har en særlig betydning og kan blive ændret " +"automatisk, hvis betalingsmetoden for ordren ændres." #: pretix/control/forms/orders.py:639 #: pretix/control/templates/pretixcontrol/order/change.html:214 #: pretix/control/templates/pretixcontrol/order/change.html:438 -#, fuzzy msgid "including all taxes" -msgstr "inkl. %(rate)s%% moms" +msgstr "inklusive alle afgifter" #: pretix/control/forms/orders.py:677 msgid "Invalidate secrets" -msgstr "" +msgstr "Ugyldiggør sikkerhedsnøgler" #: pretix/control/forms/orders.py:678 msgid "" @@ -16312,22 +16333,25 @@ msgid "" "to the order page to the user and the user will need to download his tickets " "again. The old versions will be invalid." msgstr "" +"Genopretter sikkerhedsnøglerne ordrer og billetter. Du skal sende linket til " +"ordresiden til brugeren igen, og brugeren skal downloade sine billetter på " +"ny. De gamle versioner vil ikke længere være gyldige." #: pretix/control/forms/orders.py:734 pretix/plugins/sendmail/forms.py:196 -#, fuzzy msgid "Attach tickets" -msgstr "Opret billettyper" +msgstr "Vedhæft billetter" #: pretix/control/forms/orders.py:735 pretix/plugins/sendmail/forms.py:197 msgid "" "Will be ignored if tickets exceed a given size limit to ensure email " "deliverability." msgstr "" +"Bliver ignoreret, hvis billetterne overskrider en bestemt størrelsesgrænse " +"for at sikre, at e-mails kan leveres." #: pretix/control/forms/orders.py:742 -#, fuzzy msgid "Attach invoices" -msgstr "Vedhæft fakturaer til e-mails" +msgstr "Vedhæft fakturaer" #: pretix/control/forms/orders.py:763 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_inspect.html:20 @@ -16336,44 +16360,45 @@ msgid "Recipient" msgstr "Modtager" #: pretix/control/forms/orders.py:778 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Attach {file}" -msgstr "Opret billettyper" +msgstr "Vedhæft {file}" #: pretix/control/forms/orders.py:806 msgid "" "Cancel the order. All tickets will no longer work. This can not be reverted." msgstr "" +"Annuller bestillingen. Alle billetter vil ikke længere være gyldige. Dette " +"kan ikke fortrydes." #: pretix/control/forms/orders.py:807 msgid "" "Mark the order as pending and allow the user to pay the open amount with " "another payment method." msgstr "" +"Markér ordren som uafklaret, og giv brugeren mulighed for at betale det " +"udestående beløb med en anden betalingsmetode." #: pretix/control/forms/orders.py:809 msgid "Do nothing and keep the order as it is." -msgstr "" +msgstr "Gør ingenting, og lad alt forblive, som det er." #: pretix/control/forms/orders.py:836 #, python-brace-format msgid "The refund amount needs to be positive and less than {}." -msgstr "" +msgstr "Refusionsbeløbet skal være positivt og mindre end {}." #: pretix/control/forms/orders.py:842 -#, fuzzy msgid "You need to specify an amount for a partial refund." -msgstr "Du skal angive enten en kvote eller et produkt." +msgstr "Du skal angive et beløb for en delvis refusion." #: pretix/control/forms/orders.py:854 -#, fuzzy msgid "Cancel all dates" -msgstr "Annuller bestilling" +msgstr "Annuller alle datoer" #: pretix/control/forms/orders.py:873 -#, fuzzy msgid "Automatically refund money if possible" -msgstr "Automatisk ved betaling" +msgstr "Refunder automatisk beløbet, hvis det er muligt" #: pretix/control/forms/orders.py:876 msgid "" @@ -16381,10 +16406,13 @@ msgid "" "that have been blocked (manually or by a plugin) are not auto-canceled and " "you will need to deal with them manually." msgstr "" +"Dette gælder kun for betalingsmetoder, der understøtter automatiske " +"refusioner. Billetter, der er blevet blokeret (manuelt eller via et plugin), " +"annulleres ikke automatisk, og du skal derfor håndtere dem manuelt." #: pretix/control/forms/orders.py:880 msgid "Create refund in the manual refund to-do list" -msgstr "" +msgstr "Opret en refusion i opgavelisten for manuelle refusioner" #: pretix/control/forms/orders.py:883 msgid "" @@ -16406,26 +16434,24 @@ msgid "" "Refund order value to a gift card instead instead of the original payment " "method" msgstr "" +"Refunder ordreværdien til et gavekort i stedet for den oprindelige " +"betalingsmetode" #: pretix/control/forms/orders.py:895 -#, fuzzy msgid "Gift card validity" -msgstr "Gavekort" +msgstr "Gavekortets gyldighedsperiode" #: pretix/control/forms/orders.py:914 -#, fuzzy msgid "Keep a fixed cancellation fee per ticket" -msgstr "Hold et fast afbestillingsgebyr" +msgstr "Opfør et fast afbestillingsgebyr pr. billet" #: pretix/control/forms/orders.py:915 -#, fuzzy msgid "Free tickets and add-on products are not counted" -msgstr "Generer billetter for produkter der ikke er adgangsgivende" +msgstr "Gratis billetter og tilkøbsprodukter medregnes ikke" #: pretix/control/forms/orders.py:925 -#, fuzzy msgid "Keep fees" -msgstr "Andre gebyrer" +msgstr "Behold gebyrerne" #: pretix/control/forms/orders.py:928 msgid "" @@ -16434,21 +16460,23 @@ msgid "" "series is only partially canceled since it consists of tickets for multiple " "dates." msgstr "" +"De valgte gebyrtyper refunderes ikke, men lægges i stedet oven i " +"afbestillingsgebyret. Gebyrer refunderes aldrig, når en bestilling i en " +"begivenhedsserie kun afbestilles delvist, da den omfatter billetter til " +"flere datoer." #: pretix/control/forms/orders.py:934 -#, fuzzy msgid "Send information via email" -msgstr "Send rabatkoder" +msgstr "Send oplysninger via e-mail" #: pretix/control/forms/orders.py:940 -#, fuzzy msgid "Send information to waiting list" -msgstr "Send rabatkoder" +msgstr "Send oplysninger til ventelisten" #: pretix/control/forms/orders.py:955 pretix/control/forms/orders.py:981 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Canceled: {event}" -msgstr "Kan oprette arrangementer" +msgstr "Aflyst: {event}" #: pretix/control/forms/orders.py:966 #, python-brace-format @@ -16480,7 +16508,7 @@ msgstr "" "Arrangøren af {event}" #: pretix/control/forms/orders.py:993 -#, fuzzy, python-brace-format +#, python-brace-format msgid "" "Hello,\n" "\n" @@ -16492,106 +16520,105 @@ msgid "" "\n" "Your {event} team" msgstr "" -"Hej\n" +"Hej,\n" "\n" -"Din bestilling til {event} er blevet ændret.\n" +"vi må desværre meddele, at arrangementet {event} er blevet aflyst.\n" "\n" -"Du kan se status for din bestilling på\n" -"{url}\n" +"Du vil derfor ikke modtage en billet fra ventelisten.\n" "\n" -"Venlig hilsen \n" -"Arrangøren af {event}" +"Med venlig hilsen, \n" +"\n" +"Dit {event}-team" #: pretix/control/forms/orders.py:1025 pretix/plugins/sendmail/forms.py:115 #: pretix/plugins/sendmail/forms.py:208 -#, fuzzy msgctxt "subevent" msgid "Please either select a specific date or a date range, not both." -msgstr "Vælg venligst en specifik variant af dette produkt." +msgstr "Vælg enten en bestemt dato eller et datointerval, men ikke begge dele." #: pretix/control/forms/orders.py:1027 -#, fuzzy msgctxt "subevent" msgid "Please either select all dates or a date range, not both." -msgstr "Vælg venligst en specifik variant af dette produkt." +msgstr "Vælg enten alle datoer eller et datointerval, men ikke begge dele." #: pretix/control/forms/orders.py:1029 pretix/plugins/sendmail/forms.py:117 #: pretix/plugins/sendmail/forms.py:210 msgctxt "subevent" msgid "If you set a date range, please set both a start and an end." msgstr "" +"Hvis du angiver et datointerval, skal du angive både en start- og en " +"slutdato." #: pretix/control/forms/orders.py:1031 msgid "Please confirm that you want to cancel ALL dates in this event series." msgstr "" +"Bekræft venligst, at du ønsker at aflyse ALLE datoer i denne " +"begivenhedsserie." #: pretix/control/forms/orders.py:1037 msgid "I understand that this is not reversible and want to continue" msgstr "" +"Jeg er klar over, at dette ikke kan fortrydes, og jeg ønsker at fortsætte" #: pretix/control/forms/orders.py:1042 msgid "" "We have just emailed you a confirmation code to enter to confirm this action" msgstr "" +"Vi har netop sendt dig en bekræftelseskode via e-mail, som du skal indtaste " +"for at bekræfte denne handling" #: pretix/control/forms/orders.py:1055 -#, fuzzy -#| msgid "The confirm code you entered was incorrect." msgid "The confirmation code is incorrect." -msgstr "Den indtastede bekræftelseskode var forkert." +msgstr "Bekræftelseskoden er forkert." #: pretix/control/forms/organizer.py:96 msgid "This slug is already in use. Please choose a different one." msgstr "Dette slug er allerede i brug. Vælg venligst et andet." #: pretix/control/forms/organizer.py:175 -#, fuzzy msgid "You cannot choose the base domain of this installation." -msgstr "Du kan vælge en af følgende muligheder for dette arrangement." +msgstr "Du kan ikke vælge basisdomænet for denne installation." #: pretix/control/forms/organizer.py:179 -#, fuzzy msgid "This domain is already in use for a different event or organizer." -msgstr "Dette id bruges allerede af et andet spørgsmål." +msgstr "Dette domæne er allerede i brug til en anden begivenhed eller arrangør." #: pretix/control/forms/organizer.py:188 -#, fuzzy -#| msgid "You need to choose a subevent for the new position." msgid "Do not choose an event for this mode." -msgstr "Du skal vælge et delarrangement for den nye linje." +msgstr "Vælg ikke en begivenhed til denne tilstand." #: pretix/control/forms/organizer.py:193 msgid "" "Do not choose an event for this mode. You can assign events to this domain " "in event settings." msgstr "" +"Vælg ikke en begivenhed til denne tilstand. Du kan tildele begivenheder til " +"dette domæne i begivenhedsindstillingerne." #: pretix/control/forms/organizer.py:198 -#, fuzzy -#| msgctxt "subevent" -#| msgid "You need to select a date." msgid "You need to choose an event." -msgstr "Du skal vælge en dato." +msgstr "Du skal vælge en begivenhed." #: pretix/control/forms/organizer.py:230 msgid "You may set only one organizer domain." -msgstr "" +msgstr "Du må kun angive ét arrangørdomæne." #: pretix/control/forms/organizer.py:322 msgid "Provided by a plugin" -msgstr "" +msgstr "Stillet til rådighed af et plugin" #: pretix/control/forms/organizer.py:438 msgid "" "The changes could not be saved because there would be no remaining team with " "the permission to change teams and permissions." msgstr "" +"Ændringerne kunne ikke gemmes, da der ikke længere var noget team, der havde " +"tilladelse til at ændre teams og tilladelser." #: pretix/control/forms/organizer.py:487 pretix/control/forms/organizer.py:525 -#, fuzzy msgid "" "Your device will not have access to anything, please select some events." -msgstr "Du har ikke adgang til denne side." +msgstr "Din enhed har ikke adgang til noget. Vælg venligst nogle begivenheder." #: pretix/control/forms/organizer.py:677 pretix/plugins/stripe/payment.py:330 #, fuzzy -- 2.49.1 From d6fe29210a4cf5a366b49d3aad865ee2b416b92b Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 28 Apr 2026 11:04:18 +0200 Subject: [PATCH 096/107] Update po files [CI skip] Signed-off-by: Raphael Michel --- src/pretix/locale/ang/LC_MESSAGES/django.po | 2253 ++++++++-------- src/pretix/locale/ang/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/ar/LC_MESSAGES/django.po | 2239 ++++++++-------- src/pretix/locale/ar/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/az/LC_MESSAGES/django.po | 2253 ++++++++-------- src/pretix/locale/az/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/ca/LC_MESSAGES/django.po | 2239 ++++++++-------- src/pretix/locale/ca/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/cs/LC_MESSAGES/django.po | 2247 ++++++++-------- src/pretix/locale/cs/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/cy/LC_MESSAGES/django.po | 2241 ++++++++-------- src/pretix/locale/cy/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/da/LC_MESSAGES/django.po | 2301 +++++++++-------- src/pretix/locale/da/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/de/LC_MESSAGES/django.po | 2251 ++++++++-------- src/pretix/locale/de/LC_MESSAGES/djangojs.po | 28 +- .../locale/de_Informal/LC_MESSAGES/django.po | 2247 ++++++++-------- .../de_Informal/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/django.pot | 2253 ++++++++-------- src/pretix/locale/djangojs.pot | 28 +- src/pretix/locale/el/LC_MESSAGES/django.po | 2253 ++++++++-------- src/pretix/locale/el/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/enm/LC_MESSAGES/django.po | 2253 ++++++++-------- src/pretix/locale/enm/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/es/LC_MESSAGES/django.po | 2247 ++++++++-------- src/pretix/locale/es/LC_MESSAGES/djangojs.po | 28 +- .../locale/es_419/LC_MESSAGES/django.po | 2253 ++++++++-------- .../locale/es_419/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/et/LC_MESSAGES/django.po | 2253 ++++++++-------- src/pretix/locale/et/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/eu/LC_MESSAGES/django.po | 2247 ++++++++-------- src/pretix/locale/eu/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/fi/LC_MESSAGES/django.po | 2247 ++++++++-------- src/pretix/locale/fi/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/fo/LC_MESSAGES/django.po | 2253 ++++++++-------- src/pretix/locale/fo/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/fr/LC_MESSAGES/django.po | 2251 ++++++++-------- src/pretix/locale/fr/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/gl/LC_MESSAGES/django.po | 2239 ++++++++-------- src/pretix/locale/gl/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/he/LC_MESSAGES/django.po | 2246 ++++++++-------- src/pretix/locale/he/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/hr/LC_MESSAGES/django.po | 2247 ++++++++-------- src/pretix/locale/hr/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/hu/LC_MESSAGES/django.po | 2249 ++++++++-------- src/pretix/locale/hu/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/id/LC_MESSAGES/django.po | 2247 ++++++++-------- src/pretix/locale/id/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/it/LC_MESSAGES/django.po | 2261 ++++++++-------- src/pretix/locale/it/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/ja/LC_MESSAGES/django.po | 2249 ++++++++-------- src/pretix/locale/ja/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/ko/LC_MESSAGES/django.po | 2246 ++++++++-------- src/pretix/locale/ko/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/lb/LC_MESSAGES/django.po | 2235 ++++++++-------- src/pretix/locale/lb/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/lt/LC_MESSAGES/django.po | 2253 ++++++++-------- src/pretix/locale/lt/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/lv/LC_MESSAGES/django.po | 2239 ++++++++-------- src/pretix/locale/lv/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/nan/LC_MESSAGES/django.po | 2253 ++++++++-------- src/pretix/locale/nan/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/nb_NO/LC_MESSAGES/django.po | 2247 ++++++++-------- .../locale/nb_NO/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/nl/LC_MESSAGES/django.po | 2251 ++++++++-------- src/pretix/locale/nl/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/nl_BE/LC_MESSAGES/django.po | 2247 ++++++++-------- .../locale/nl_BE/LC_MESSAGES/djangojs.po | 28 +- .../locale/nl_Informal/LC_MESSAGES/django.po | 2247 ++++++++-------- .../nl_Informal/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/pl/LC_MESSAGES/django.po | 2247 ++++++++-------- src/pretix/locale/pl/LC_MESSAGES/djangojs.po | 28 +- .../locale/pl_Informal/LC_MESSAGES/django.po | 2247 ++++++++-------- .../pl_Informal/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/pt/LC_MESSAGES/django.po | 2255 ++++++++-------- src/pretix/locale/pt/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/pt_BR/LC_MESSAGES/django.po | 2247 ++++++++-------- .../locale/pt_BR/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/pt_PT/LC_MESSAGES/django.po | 2239 ++++++++-------- .../locale/pt_PT/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/ro/LC_MESSAGES/django.po | 2239 ++++++++-------- src/pretix/locale/ro/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/ru/LC_MESSAGES/django.po | 2240 ++++++++-------- src/pretix/locale/ru/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/si/LC_MESSAGES/django.po | 2253 ++++++++-------- src/pretix/locale/si/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/sk/LC_MESSAGES/django.po | 2247 ++++++++-------- src/pretix/locale/sk/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/sl/LC_MESSAGES/django.po | 2253 ++++++++-------- src/pretix/locale/sl/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/sq/LC_MESSAGES/django.po | 2253 ++++++++-------- src/pretix/locale/sq/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/sv/LC_MESSAGES/django.po | 2247 ++++++++-------- src/pretix/locale/sv/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/th/LC_MESSAGES/django.po | 2260 ++++++++-------- src/pretix/locale/th/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/tr/LC_MESSAGES/django.po | 2253 ++++++++-------- src/pretix/locale/tr/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/uk/LC_MESSAGES/django.po | 2239 ++++++++-------- src/pretix/locale/uk/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/vi/LC_MESSAGES/django.po | 2247 ++++++++-------- src/pretix/locale/vi/LC_MESSAGES/djangojs.po | 28 +- src/pretix/locale/vls/LC_MESSAGES/django.po | 2253 ++++++++-------- src/pretix/locale/vls/LC_MESSAGES/djangojs.po | 28 +- .../locale/zh_Hans/LC_MESSAGES/django.po | 2239 ++++++++-------- .../locale/zh_Hans/LC_MESSAGES/djangojs.po | 28 +- .../locale/zh_Hant/LC_MESSAGES/django.po | 2245 ++++++++-------- .../locale/zh_Hant/LC_MESSAGES/djangojs.po | 28 +- 108 files changed, 62796 insertions(+), 60156 deletions(-) diff --git a/src/pretix/locale/ang/LC_MESSAGES/django.po b/src/pretix/locale/ang/LC_MESSAGES/django.po index eb0752d5e..d64e5ac01 100644 --- a/src/pretix/locale/ang/LC_MESSAGES/django.po +++ b/src/pretix/locale/ang/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-30 11:22+0000\n" +"POT-Creation-Date: 2026-04-28 09:03+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -206,17 +206,17 @@ msgid "Target URL" msgstr "" #: pretix/api/models.py:118 pretix/base/models/devices.py:125 -#: pretix/base/models/organizer.py:373 +#: pretix/base/models/organizer.py:379 msgid "All events (including newly created ones)" msgstr "" #: pretix/api/models.py:119 pretix/base/models/devices.py:126 -#: pretix/base/models/organizer.py:374 +#: pretix/base/models/organizer.py:380 msgid "Limit to events" msgstr "" #: pretix/api/models.py:120 pretix/base/exporters/orderlist.py:306 -#: pretix/base/exporters/orderlist.py:1137 +#: pretix/base/exporters/orderlist.py:1149 #: pretix/base/modelimport_vouchers.py:326 pretix/base/models/orders.py:271 #: pretix/base/models/vouchers.py:295 pretix/control/forms/filter.py:593 #: pretix/control/templates/pretixcontrol/order/index.html:981 @@ -228,12 +228,12 @@ msgstr "" msgid "Comment" msgstr "" -#: pretix/api/serializers/cart.py:168 pretix/api/serializers/order.py:1533 +#: pretix/api/serializers/cart.py:168 pretix/api/serializers/order.py:1537 #, python-brace-format msgid "The product \"{}\" is not assigned to a quota." msgstr "" -#: pretix/api/serializers/checkin.py:65 pretix/base/models/event.py:1750 +#: pretix/api/serializers/checkin.py:65 pretix/base/models/event.py:1756 #: pretix/base/models/items.py:1917 pretix/base/models/items.py:2203 msgid "One or more items do not belong to this event." msgstr "" @@ -342,7 +342,7 @@ msgstr "" msgid "This type of question cannot be shown during check-in." msgstr "" -#: pretix/api/serializers/media.py:116 +#: pretix/api/serializers/media.py:117 msgid "" "A medium with the same identifier and type already exists in your organizer " "account." @@ -353,25 +353,25 @@ msgstr "" msgid "\"{input}\" is not a valid choice." msgstr "" -#: pretix/api/serializers/order.py:1494 pretix/api/views/cart.py:224 +#: pretix/api/serializers/order.py:1498 pretix/api/views/cart.py:224 #: pretix/base/services/orders.py:1593 #, python-brace-format msgid "The selected seat \"{seat}\" is not available." msgstr "" -#: pretix/api/serializers/order.py:1520 pretix/api/serializers/order.py:1527 +#: pretix/api/serializers/order.py:1524 pretix/api/serializers/order.py:1531 #, python-brace-format msgid "The product \"{}\" is not available on this date." msgstr "" -#: pretix/api/serializers/order.py:1542 pretix/api/views/cart.py:200 +#: pretix/api/serializers/order.py:1546 pretix/api/views/cart.py:200 #, python-brace-format msgid "" "There is not enough quota available on quota \"{}\" to perform the operation." msgstr "" #: pretix/api/serializers/organizer.py:152 -#: pretix/control/forms/organizer.py:1060 pretix/presale/forms/customer.py:471 +#: pretix/control/forms/organizer.py:1060 pretix/presale/forms/customer.py:472 msgid "An account with this email address is already registered." msgstr "" @@ -382,17 +382,17 @@ msgid "" "organizer account." msgstr "" -#: pretix/api/serializers/organizer.py:482 +#: pretix/api/serializers/organizer.py:495 #: pretix/control/views/organizer.py:1039 msgid "Account invitation" msgstr "" -#: pretix/api/serializers/organizer.py:503 +#: pretix/api/serializers/organizer.py:516 #: pretix/control/views/organizer.py:1138 msgid "This user already has been invited for this team." msgstr "" -#: pretix/api/serializers/organizer.py:519 +#: pretix/api/serializers/organizer.py:532 #: pretix/control/views/organizer.py:1155 msgid "This user already has permissions for this team." msgstr "" @@ -413,17 +413,17 @@ msgid "" "account." msgstr "" -#: pretix/api/views/order.py:607 pretix/control/views/orders.py:1605 +#: pretix/api/views/order.py:610 pretix/control/views/orders.py:1592 #: pretix/presale/views/order.py:788 pretix/presale/views/order.py:868 msgid "You cannot generate an invoice for this order." msgstr "" -#: pretix/api/views/order.py:612 pretix/control/views/orders.py:1607 +#: pretix/api/views/order.py:615 pretix/control/views/orders.py:1594 #: pretix/presale/views/order.py:790 pretix/presale/views/order.py:870 msgid "An invoice for this order already exists." msgstr "" -#: pretix/api/views/order.py:715 pretix/base/services/cart.py:223 +#: pretix/api/views/order.py:718 pretix/base/services/cart.py:223 #: pretix/base/services/orders.py:189 pretix/presale/views/order.py:852 msgid "One of the selected products is not available in the selected country." msgstr "" @@ -443,7 +443,7 @@ msgstr "" #: pretix/api/webhooks.py:307 pretix/base/models/checkin.py:355 #: pretix/base/notifications.py:251 #: pretix/control/templates/pretixcontrol/event/mail.html:114 -#: pretix/control/views/orders.py:1566 +#: pretix/control/views/orders.py:1553 msgid "Order canceled" msgstr "" @@ -632,13 +632,13 @@ msgid "Gift card used in transaction" msgstr "" #: pretix/base/addressvalidation.py:100 pretix/base/addressvalidation.py:103 -#: pretix/base/addressvalidation.py:108 pretix/base/forms/questions.py:1054 -#: pretix/base/forms/questions.py:1085 pretix/base/forms/questions.py:1337 -#: pretix/base/forms/questions.py:1373 pretix/base/payment.py:97 +#: pretix/base/addressvalidation.py:108 pretix/base/forms/questions.py:1060 +#: pretix/base/forms/questions.py:1091 pretix/base/forms/questions.py:1343 +#: pretix/base/forms/questions.py:1379 pretix/base/payment.py:97 #: pretix/control/forms/event.py:856 pretix/control/forms/event.py:862 #: pretix/control/forms/event.py:981 pretix/control/forms/event.py:1630 #: pretix/control/forms/mailsetup.py:87 pretix/control/forms/mailsetup.py:129 -#: pretix/control/forms/subevents.py:181 +#: pretix/control/forms/subevents.py:191 #: pretix/plugins/banktransfer/payment.py:477 #: pretix/plugins/banktransfer/payment.py:483 #: pretix/presale/forms/customer.py:152 @@ -663,7 +663,7 @@ msgstr "" #: pretix/base/exporters/orderlist.py:483 #: pretix/base/exporters/orderlist.py:622 #: pretix/base/exporters/waitinglist.py:110 pretix/base/forms/auth.py:269 -#: pretix/base/invoicing/email.py:42 pretix/base/models/auth.py:269 +#: pretix/base/invoicing/email.py:42 pretix/base/models/auth.py:278 #: pretix/base/models/customers.py:102 pretix/base/models/notifications.py:46 #: pretix/base/models/orders.py:245 pretix/base/pdf.py:336 #: pretix/control/navigation.py:86 pretix/control/navigation.py:540 @@ -674,20 +674,20 @@ msgstr "" #: pretix/control/templates/pretixcontrol/organizers/customers.html:63 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:164 #: pretix/plugins/checkinlists/exporters.py:509 -#: pretix/presale/checkoutflow.py:1553 pretix/presale/forms/checkout.py:57 +#: pretix/presale/checkoutflow.py:1553 pretix/presale/forms/checkout.py:54 #: pretix/presale/forms/customer.py:57 pretix/presale/forms/customer.py:142 -#: pretix/presale/forms/customer.py:298 pretix/presale/forms/customer.py:350 -#: pretix/presale/forms/customer.py:394 pretix/presale/forms/user.py:40 +#: pretix/presale/forms/customer.py:298 pretix/presale/forms/customer.py:351 +#: pretix/presale/forms/customer.py:395 pretix/presale/forms/user.py:40 #: pretix/presale/templates/pretixpresale/event/checkout_customer.html:31 #: pretix/presale/templates/pretixpresale/event/order.html:300 msgid "Email" msgstr "" #: pretix/base/auth.py:157 pretix/base/forms/auth.py:164 -#: pretix/base/forms/auth.py:225 pretix/base/models/auth.py:781 +#: pretix/base/forms/auth.py:225 pretix/base/models/auth.py:802 #: pretix/base/models/customers.py:104 pretix/control/forms/mailsetup.py:57 #: pretix/control/templates/pretixcontrol/user/settings.html:64 -#: pretix/presale/forms/customer.py:61 pretix/presale/forms/customer.py:302 +#: pretix/presale/forms/customer.py:61 pretix/presale/forms/customer.py:303 msgid "Password" msgstr "" @@ -848,7 +848,7 @@ msgstr "" #: pretix/base/datasync/sourcefields.py:175 #: pretix/base/exporters/orderlist.py:640 -#: pretix/base/exporters/orderlist.py:645 pretix/base/forms/questions.py:687 +#: pretix/base/exporters/orderlist.py:645 pretix/base/forms/questions.py:693 #: pretix/base/modelimport_orders.py:347 pretix/base/models/customers.py:344 #: pretix/base/models/orders.py:1512 pretix/base/pdf.py:183 #: pretix/control/forms/filter.py:684 pretix/control/forms/organizer.py:1154 @@ -873,7 +873,7 @@ msgid "Attendee" msgstr "" #: pretix/base/datasync/sourcefields.py:207 -#: pretix/base/exporters/orderlist.py:647 pretix/base/forms/questions.py:693 +#: pretix/base/exporters/orderlist.py:647 pretix/base/forms/questions.py:699 #: pretix/base/models/customers.py:351 pretix/base/models/orders.py:1520 #: pretix/base/pdf.py:225 #: pretix/control/templates/pretixcontrol/order/index.html:576 @@ -1109,25 +1109,25 @@ msgid "Question: {name}" msgstr "" #: pretix/base/datasync/sourcefields.py:604 -#: pretix/base/datasync/sourcefields.py:614 pretix/base/settings.py:3775 -#: pretix/base/settings.py:3788 pretix/base/settings.py:3804 -#: pretix/base/settings.py:3854 pretix/base/settings.py:3867 -#: pretix/base/settings.py:3881 pretix/base/settings.py:3934 -#: pretix/base/settings.py:3955 pretix/base/settings.py:3977 +#: pretix/base/datasync/sourcefields.py:614 pretix/base/settings.py:3777 +#: pretix/base/settings.py:3790 pretix/base/settings.py:3806 +#: pretix/base/settings.py:3856 pretix/base/settings.py:3869 +#: pretix/base/settings.py:3883 pretix/base/settings.py:3936 +#: pretix/base/settings.py:3957 pretix/base/settings.py:3979 msgid "Given name" msgstr "" #: pretix/base/datasync/sourcefields.py:628 -#: pretix/base/datasync/sourcefields.py:638 pretix/base/settings.py:3776 -#: pretix/base/settings.py:3789 pretix/base/settings.py:3805 -#: pretix/base/settings.py:3821 pretix/base/settings.py:3838 -#: pretix/base/settings.py:3853 pretix/base/settings.py:3868 -#: pretix/base/settings.py:3882 pretix/base/settings.py:3935 -#: pretix/base/settings.py:3956 pretix/base/settings.py:3978 +#: pretix/base/datasync/sourcefields.py:638 pretix/base/settings.py:3778 +#: pretix/base/settings.py:3791 pretix/base/settings.py:3807 +#: pretix/base/settings.py:3823 pretix/base/settings.py:3840 +#: pretix/base/settings.py:3855 pretix/base/settings.py:3870 +#: pretix/base/settings.py:3884 pretix/base/settings.py:3937 +#: pretix/base/settings.py:3958 pretix/base/settings.py:3980 msgid "Family name" msgstr "" -#: pretix/base/email.py:220 pretix/base/exporters/items.py:157 +#: pretix/base/email.py:223 pretix/base/exporters/items.py:157 #: pretix/base/exporters/items.py:205 pretix/base/models/tax.py:382 #: pretix/control/templates/pretixcontrol/event/tax.html:37 #: pretix/control/templates/pretixcontrol/event/tax.html:60 @@ -1141,31 +1141,31 @@ msgstr "" msgid "Default" msgstr "" -#: pretix/base/email.py:227 +#: pretix/base/email.py:230 msgid "Simple with logo" msgstr "" -#: pretix/base/exporter.py:217 pretix/base/exporter.py:350 +#: pretix/base/exporter.py:227 pretix/base/exporter.py:360 msgid "Export format" msgstr "" -#: pretix/base/exporter.py:219 +#: pretix/base/exporter.py:229 msgid "Excel (.xlsx)" msgstr "" -#: pretix/base/exporter.py:220 pretix/base/exporter.py:342 +#: pretix/base/exporter.py:230 pretix/base/exporter.py:352 msgid "CSV (with commas)" msgstr "" -#: pretix/base/exporter.py:221 pretix/base/exporter.py:343 +#: pretix/base/exporter.py:231 pretix/base/exporter.py:353 msgid "CSV (Excel-style)" msgstr "" -#: pretix/base/exporter.py:222 pretix/base/exporter.py:344 +#: pretix/base/exporter.py:232 pretix/base/exporter.py:354 msgid "CSV (with semicolons)" msgstr "" -#: pretix/base/exporter.py:338 +#: pretix/base/exporter.py:348 msgid "Combined Excel (.xlsx)" msgstr "" @@ -1177,7 +1177,7 @@ msgstr "" #: pretix/base/exporters/mail.py:53 pretix/base/exporters/orderlist.py:88 #: pretix/base/exporters/orderlist.py:881 #: pretix/base/exporters/orderlist.py:1061 -#: pretix/base/exporters/orderlist.py:1305 +#: pretix/base/exporters/orderlist.py:1319 #: pretix/plugins/reports/exporters.py:493 #: pretix/plugins/reports/exporters.py:666 msgctxt "export_category" @@ -1192,15 +1192,15 @@ msgstr "" #: pretix/base/exporters/answers.py:76 pretix/base/exporters/orderlist.py:628 #: pretix/base/exporters/orderlist.py:957 -#: pretix/base/exporters/orderlist.py:1198 pretix/base/models/checkin.py:58 +#: pretix/base/exporters/orderlist.py:1212 pretix/base/models/checkin.py:58 #: pretix/base/models/items.py:2067 pretix/base/models/orders.py:1490 #: pretix/base/models/orders.py:3046 pretix/base/models/vouchers.py:190 #: pretix/base/models/waitinglist.py:61 pretix/control/forms/event.py:1798 #: pretix/control/forms/filter.py:446 pretix/control/forms/filter.py:1254 #: pretix/control/forms/filter.py:2056 pretix/control/forms/filter.py:2278 #: pretix/control/forms/filter.py:2393 pretix/control/forms/filter.py:2475 -#: pretix/control/forms/filter.py:2692 pretix/control/forms/orders.py:360 -#: pretix/control/forms/orders.py:849 +#: pretix/control/forms/filter.py:2692 pretix/control/forms/orders.py:364 +#: pretix/control/forms/orders.py:857 #: pretix/control/templates/pretixcontrol/checkin/lists.html:108 #: pretix/control/templates/pretixcontrol/items/quotas.html:55 #: pretix/control/templates/pretixcontrol/order/change.html:108 @@ -1231,7 +1231,7 @@ msgstr "" #: pretix/control/forms/filter.py:2396 pretix/control/forms/filter.py:2412 #: pretix/control/forms/filter.py:2478 pretix/control/forms/filter.py:2513 #: pretix/control/forms/filter.py:2695 pretix/control/forms/filter.py:2710 -#: pretix/control/forms/orders.py:851 pretix/control/forms/orders.py:1013 +#: pretix/control/forms/orders.py:859 pretix/control/forms/orders.py:1021 #: pretix/control/templates/pretixcontrol/event/fragment_subevent_choice_simple.html:5 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:69 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:132 @@ -1287,15 +1287,15 @@ msgstr "" #: pretix/control/templates/pretixcontrol/waitinglist/index.html:166 #: pretix/control/views/waitinglist.py:326 #: pretix/plugins/checkinlists/exporters.py:510 -#: pretix/presale/checkoutflow.py:1559 pretix/presale/forms/checkout.py:84 +#: pretix/presale/checkoutflow.py:1559 pretix/presale/forms/checkout.py:81 #: pretix/presale/forms/waitinglist.py:80 #: pretix/presale/templates/pretixpresale/event/order.html:304 msgid "Phone number" msgstr "" -#: pretix/base/exporters/customers.py:72 pretix/base/models/auth.py:272 +#: pretix/base/exporters/customers.py:72 pretix/base/models/auth.py:281 #: pretix/base/models/customers.py:105 pretix/base/models/orders.py:3349 -#: pretix/base/settings.py:3908 pretix/base/settings.py:3920 +#: pretix/base/settings.py:3910 pretix/base/settings.py:3922 #: pretix/control/templates/pretixcontrol/users/index.html:47 msgid "Full name" msgstr "" @@ -1303,14 +1303,14 @@ msgstr "" #: pretix/base/exporters/customers.py:77 pretix/base/exporters/invoices.py:208 #: pretix/base/exporters/invoices.py:217 pretix/base/exporters/invoices.py:336 #: pretix/base/exporters/invoices.py:344 pretix/base/exporters/orderlist.py:284 -#: pretix/base/exporters/waitinglist.py:109 pretix/base/forms/questions.py:1252 +#: pretix/base/exporters/waitinglist.py:109 pretix/base/forms/questions.py:1258 #: pretix/base/models/devices.py:68 pretix/base/models/devices.py:130 -#: pretix/base/models/event.py:1556 pretix/base/models/event.py:1794 +#: pretix/base/models/event.py:1562 pretix/base/models/event.py:1800 #: pretix/base/models/items.py:2071 pretix/base/models/items.py:2244 #: pretix/base/models/memberships.py:41 pretix/base/models/organizer.py:82 -#: pretix/base/models/organizer.py:639 pretix/base/models/seating.py:86 -#: pretix/base/models/waitinglist.py:69 pretix/base/settings.py:3533 -#: pretix/base/settings.py:3543 pretix/base/settings.py:3897 +#: pretix/base/models/organizer.py:646 pretix/base/models/seating.py:86 +#: pretix/base/models/waitinglist.py:69 pretix/base/settings.py:3535 +#: pretix/base/settings.py:3545 pretix/base/settings.py:3899 #: pretix/control/forms/filter.py:661 pretix/control/forms/item.py:447 #: pretix/control/forms/organizer.py:1085 #: pretix/control/forms/waitinglist.py:84 @@ -1336,7 +1336,7 @@ msgstr "" #: pretix/plugins/reports/exporters.py:901 #: pretix/plugins/ticketoutputpdf/models.py:333 #: pretix/plugins/ticketoutputpdf/templates/pretixplugins/ticketoutputpdf/index.html:32 -#: pretix/presale/forms/customer.py:179 pretix/presale/forms/customer.py:496 +#: pretix/presale/forms/customer.py:179 pretix/presale/forms/customer.py:497 #: pretix/presale/forms/waitinglist.py:68 #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:86 #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:142 @@ -1349,7 +1349,7 @@ msgstr "" msgid "Account active" msgstr "" -#: pretix/base/exporters/customers.py:81 pretix/base/models/auth.py:270 +#: pretix/base/exporters/customers.py:81 pretix/base/models/auth.py:279 #: pretix/base/models/customers.py:108 msgid "Verified email address" msgstr "" @@ -1365,7 +1365,7 @@ msgid "Registration date" msgstr "" #: pretix/base/exporters/customers.py:84 pretix/base/exporters/invoices.py:207 -#: pretix/base/exporters/waitinglist.py:121 pretix/base/models/auth.py:284 +#: pretix/base/exporters/waitinglist.py:121 pretix/base/models/auth.py:293 #: pretix/base/models/customers.py:114 pretix/base/models/exports.py:54 #: pretix/control/forms/event.py:1804 pretix/control/forms/exports.py:49 #: pretix/control/forms/exports.py:88 pretix/control/views/waitinglist.py:327 @@ -1402,13 +1402,13 @@ msgstr "" #: pretix/base/exporters/orderlist.py:792 #: pretix/base/exporters/orderlist.py:815 #: pretix/base/exporters/orderlist.py:847 -#: pretix/base/exporters/orderlist.py:1449 +#: pretix/base/exporters/orderlist.py:1463 #: pretix/base/exporters/reusablemedia.py:68 -#: pretix/base/invoicing/transmission.py:119 pretix/base/modelimport.py:208 -#: pretix/base/modelimport.py:215 pretix/base/models/orders.py:1391 +#: pretix/base/invoicing/transmission.py:119 pretix/base/modelimport.py:212 +#: pretix/base/modelimport.py:219 pretix/base/models/orders.py:1391 #: pretix/control/forms/filter.py:182 pretix/control/forms/filter.py:556 #: pretix/control/forms/filter.py:743 pretix/control/forms/item.py:618 -#: pretix/control/forms/subevents.py:119 pretix/control/views/item.py:715 +#: pretix/control/forms/subevents.py:129 pretix/control/views/item.py:715 #: pretix/control/views/vouchers.py:140 pretix/control/views/vouchers.py:141 #: pretix/plugins/checkinlists/exporters.py:602 #: pretix/plugins/checkinlists/exporters.py:605 @@ -1427,13 +1427,13 @@ msgstr "" #: pretix/base/exporters/orderlist.py:422 #: pretix/base/exporters/orderlist.py:815 #: pretix/base/exporters/orderlist.py:847 -#: pretix/base/exporters/orderlist.py:1449 +#: pretix/base/exporters/orderlist.py:1463 #: pretix/base/exporters/reusablemedia.py:68 -#: pretix/base/invoicing/transmission.py:121 pretix/base/modelimport.py:207 -#: pretix/base/modelimport.py:217 pretix/base/models/orders.py:1393 +#: pretix/base/invoicing/transmission.py:121 pretix/base/modelimport.py:211 +#: pretix/base/modelimport.py:221 pretix/base/models/orders.py:1393 #: pretix/control/forms/filter.py:182 pretix/control/forms/filter.py:557 #: pretix/control/forms/filter.py:744 pretix/control/forms/item.py:619 -#: pretix/control/forms/subevents.py:120 pretix/control/views/item.py:715 +#: pretix/control/forms/subevents.py:130 pretix/control/views/item.py:715 #: pretix/control/views/vouchers.py:140 pretix/control/views/vouchers.py:141 #: pretix/plugins/checkinlists/exporters.py:602 #: pretix/plugins/checkinlists/exporters.py:605 @@ -1464,7 +1464,7 @@ msgstr "" #: pretix/base/exporters/dekodi.py:234 pretix/base/exporters/invoices.py:74 #: pretix/base/exporters/orderlist.py:130 #: pretix/base/exporters/orderlist.py:896 -#: pretix/base/exporters/orderlist.py:1255 +#: pretix/base/exporters/orderlist.py:1269 #: pretix/plugins/checkinlists/exporters.py:89 #: pretix/plugins/checkinlists/exporters.py:868 #: pretix/plugins/reports/accountingreport.py:75 @@ -1509,63 +1509,63 @@ msgstr "" msgid "Event currency" msgstr "" -#: pretix/base/exporters/events.py:61 pretix/base/models/auth.py:287 +#: pretix/base/exporters/events.py:61 pretix/base/models/auth.py:296 #: pretix/base/models/exports.py:133 pretix/control/forms/exports.py:93 msgid "Timezone" msgstr "" #: pretix/base/exporters/events.py:62 pretix/base/models/event.py:618 -#: pretix/base/models/event.py:1558 pretix/base/settings.py:3531 -#: pretix/base/settings.py:3541 pretix/control/forms/subevents.py:484 +#: pretix/base/models/event.py:1564 pretix/base/settings.py:3533 +#: pretix/base/settings.py:3543 pretix/control/forms/subevents.py:494 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:268 msgid "Event start time" msgstr "" #: pretix/base/exporters/events.py:63 pretix/base/models/event.py:620 -#: pretix/base/models/event.py:1560 pretix/base/pdf.py:297 -#: pretix/control/forms/subevents.py:489 +#: pretix/base/models/event.py:1566 pretix/base/pdf.py:297 +#: pretix/control/forms/subevents.py:499 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:270 msgid "Event end time" msgstr "" #: pretix/base/exporters/events.py:64 pretix/base/models/event.py:622 -#: pretix/base/models/event.py:1562 pretix/control/forms/subevents.py:494 +#: pretix/base/models/event.py:1568 pretix/control/forms/subevents.py:504 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:274 msgid "Admission time" msgstr "" #: pretix/base/exporters/events.py:65 pretix/base/models/event.py:634 -#: pretix/base/models/event.py:1571 pretix/control/forms/subevents.py:93 +#: pretix/base/models/event.py:1577 pretix/control/forms/subevents.py:93 msgid "Start of presale" msgstr "" #: pretix/base/exporters/events.py:66 pretix/base/models/event.py:628 -#: pretix/base/models/event.py:1565 pretix/control/forms/subevents.py:99 +#: pretix/base/models/event.py:1571 pretix/control/forms/subevents.py:99 msgid "End of presale" msgstr "" #: pretix/base/exporters/events.py:67 pretix/base/exporters/invoices.py:355 -#: pretix/base/models/event.py:640 pretix/base/models/event.py:1577 +#: pretix/base/models/event.py:640 pretix/base/models/event.py:1583 #: pretix/base/templates/pretixbase/email/order_details.html:83 msgid "Location" msgstr "" #: pretix/base/exporters/events.py:68 pretix/base/models/event.py:648 -#: pretix/base/models/event.py:1580 +#: pretix/base/models/event.py:1586 #: pretix/control/templates/pretixcontrol/event/fragment_geodata.html:18 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:54 msgid "Latitude" msgstr "" #: pretix/base/exporters/events.py:69 pretix/base/models/event.py:656 -#: pretix/base/models/event.py:1588 +#: pretix/base/models/event.py:1594 #: pretix/control/templates/pretixcontrol/event/fragment_geodata.html:28 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:64 msgid "Longitude" msgstr "" #: pretix/base/exporters/events.py:70 pretix/base/models/event.py:668 -#: pretix/base/models/event.py:1603 +#: pretix/base/models/event.py:1609 #: pretix/control/templates/pretixcontrol/event/index.html:137 #: pretix/control/templates/pretixcontrol/order/index.html:1080 msgid "Internal comment" @@ -1636,8 +1636,8 @@ msgid "Invoice number" msgstr "" #: pretix/base/exporters/invoices.py:202 pretix/base/exporters/invoices.py:331 -#: pretix/base/exporters/orderlist.py:1278 -#: pretix/base/exporters/orderlist.py:1324 +#: pretix/base/exporters/orderlist.py:1292 +#: pretix/base/exporters/orderlist.py:1338 #: pretix/base/exporters/waitinglist.py:108 pretix/base/forms/widgets.py:222 #: pretix/base/models/items.py:1655 pretix/base/models/orders.py:258 #: pretix/base/models/orders.py:3021 pretix/base/models/orders.py:3160 @@ -1685,7 +1685,7 @@ msgstr "" #: pretix/base/exporters/invoices.py:209 pretix/base/exporters/invoices.py:337 #: pretix/base/exporters/orderlist.py:291 #: pretix/base/exporters/orderlist.py:501 -#: pretix/base/exporters/orderlist.py:649 pretix/base/forms/questions.py:712 +#: pretix/base/exporters/orderlist.py:649 pretix/base/forms/questions.py:718 #: pretix/base/modelimport_orders.py:232 pretix/base/modelimport_orders.py:386 #: pretix/base/models/customers.py:355 pretix/base/models/orders.py:1547 #: pretix/base/models/orders.py:3351 pretix/control/forms/filter.py:665 @@ -1702,10 +1702,10 @@ msgstr "" #: pretix/base/exporters/invoices.py:338 pretix/base/exporters/invoices.py:346 #: pretix/base/exporters/orderlist.py:291 #: pretix/base/exporters/orderlist.py:501 -#: pretix/base/exporters/orderlist.py:650 pretix/base/forms/questions.py:723 +#: pretix/base/exporters/orderlist.py:650 pretix/base/forms/questions.py:729 #: pretix/base/modelimport_orders.py:244 pretix/base/modelimport_orders.py:397 #: pretix/base/models/customers.py:356 pretix/base/models/orders.py:1548 -#: pretix/base/models/orders.py:3352 pretix/base/settings.py:1321 +#: pretix/base/models/orders.py:3352 pretix/base/settings.py:1323 #: pretix/control/forms/filter.py:669 pretix/control/forms/filter.py:700 #: pretix/control/views/item.py:490 #: pretix/plugins/checkinlists/exporters.py:537 @@ -1717,10 +1717,10 @@ msgstr "" #: pretix/base/exporters/invoices.py:339 pretix/base/exporters/invoices.py:347 #: pretix/base/exporters/orderlist.py:291 #: pretix/base/exporters/orderlist.py:501 -#: pretix/base/exporters/orderlist.py:651 pretix/base/forms/questions.py:731 +#: pretix/base/exporters/orderlist.py:651 pretix/base/forms/questions.py:737 #: pretix/base/modelimport_orders.py:256 pretix/base/modelimport_orders.py:408 #: pretix/base/models/customers.py:357 pretix/base/models/orders.py:1549 -#: pretix/base/models/orders.py:3353 pretix/base/settings.py:1335 +#: pretix/base/models/orders.py:3353 pretix/base/settings.py:1337 #: pretix/control/forms/filter.py:674 pretix/control/forms/filter.py:705 #: pretix/control/views/item.py:500 #: pretix/plugins/checkinlists/exporters.py:538 @@ -1731,10 +1731,10 @@ msgstr "" #: pretix/base/exporters/invoices.py:212 pretix/base/exporters/invoices.py:222 #: pretix/base/exporters/invoices.py:349 pretix/base/exporters/orderlist.py:291 #: pretix/base/exporters/orderlist.py:501 -#: pretix/base/exporters/orderlist.py:653 pretix/base/forms/questions.py:768 -#: pretix/base/forms/questions.py:1202 pretix/base/modelimport_orders.py:295 +#: pretix/base/exporters/orderlist.py:653 pretix/base/forms/questions.py:774 +#: pretix/base/forms/questions.py:1208 pretix/base/modelimport_orders.py:295 #: pretix/base/models/customers.py:359 pretix/base/models/orders.py:1551 -#: pretix/base/models/orders.py:3357 pretix/base/settings.py:1349 +#: pretix/base/models/orders.py:3357 pretix/base/settings.py:1351 #: pretix/base/views/js_helpers.py:72 pretix/control/forms/event.py:1098 #: pretix/control/templates/pretixcontrol/order/index.html:1039 #: pretix/plugins/checkinlists/exporters.py:540 @@ -1749,11 +1749,11 @@ msgstr "" #: pretix/base/exporters/invoices.py:340 pretix/base/exporters/invoices.py:348 #: pretix/base/exporters/orderlist.py:291 #: pretix/base/exporters/orderlist.py:501 -#: pretix/base/exporters/orderlist.py:652 pretix/base/forms/questions.py:743 +#: pretix/base/exporters/orderlist.py:652 pretix/base/forms/questions.py:749 #: pretix/base/modelimport_orders.py:274 pretix/base/modelimport_orders.py:425 #: pretix/base/models/customers.py:358 pretix/base/models/orders.py:1550 #: pretix/base/models/orders.py:3354 pretix/base/models/orders.py:3355 -#: pretix/base/settings.py:1361 pretix/control/forms/filter.py:679 +#: pretix/base/settings.py:1363 pretix/control/forms/filter.py:679 #: pretix/control/forms/filter.py:710 #: pretix/control/templates/pretixcontrol/order/index.html:1036 #: pretix/control/views/item.py:510 @@ -1799,7 +1799,7 @@ msgstr "" #: pretix/base/exporters/invoices.py:216 pretix/base/exporters/invoices.py:343 #: pretix/base/exporters/orderlist.py:284 -#: pretix/base/exporters/orderlist.py:493 pretix/base/forms/questions.py:704 +#: pretix/base/exporters/orderlist.py:493 pretix/base/forms/questions.py:710 #: pretix/base/modelimport_orders.py:199 pretix/base/modelimport_orders.py:375 #: pretix/control/forms/filter.py:657 pretix/control/forms/filter.py:692 #: pretix/control/templates/pretixcontrol/order/index.html:1028 @@ -1884,7 +1884,7 @@ msgstr "" msgid "Description" msgstr "" -#: pretix/base/exporters/invoices.py:325 pretix/control/forms/orders.py:355 +#: pretix/base/exporters/invoices.py:325 pretix/control/forms/orders.py:359 msgid "Gross price" msgstr "" @@ -1919,7 +1919,7 @@ msgstr "" msgid "Product data" msgstr "" -#: pretix/base/exporters/items.py:50 pretix/base/exporters/orderlist.py:1188 +#: pretix/base/exporters/items.py:50 pretix/base/exporters/orderlist.py:1202 msgctxt "export_category" msgid "Product data" msgstr "" @@ -1962,7 +1962,7 @@ msgstr "" #: pretix/base/exporters/items.py:71 pretix/base/exporters/reusablemedia.py:53 #: pretix/base/models/customers.py:65 pretix/base/models/customers.py:447 -#: pretix/base/models/discount.py:60 pretix/base/models/event.py:1547 +#: pretix/base/models/discount.py:60 pretix/base/models/event.py:1553 #: pretix/base/models/items.py:489 pretix/base/models/items.py:1152 #: pretix/base/models/media.py:77 pretix/base/settings.py:226 #: pretix/base/settings.py:261 pretix/base/settings.py:292 @@ -2014,7 +2014,7 @@ msgstr "" msgid "Generate tickets" msgstr "" -#: pretix/base/exporters/items.py:79 pretix/base/exporters/orderlist.py:1195 +#: pretix/base/exporters/items.py:79 pretix/base/exporters/orderlist.py:1209 #: pretix/base/exporters/waitinglist.py:41 pretix/base/shredder.py:371 #: pretix/control/forms/event.py:1874 pretix/control/navigation.py:249 #: pretix/control/templates/pretixcontrol/event/settings.html:362 @@ -2040,9 +2040,9 @@ msgstr "" #: pretix/base/exporters/items.py:80 pretix/base/models/discount.py:82 #: pretix/base/models/items.py:224 pretix/base/models/items.py:280 #: pretix/base/models/items.py:561 pretix/base/models/items.py:1205 -#: pretix/base/payment.py:394 pretix/control/forms/subevents.py:323 -#: pretix/control/forms/subevents.py:345 -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:507 +#: pretix/base/payment.py:394 pretix/control/forms/subevents.py:333 +#: pretix/control/forms/subevents.py:355 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:509 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:172 #: pretix/control/templates/pretixcontrol/subevents/detail.html:150 msgid "Available from" @@ -2051,8 +2051,8 @@ msgstr "" #: pretix/base/exporters/items.py:81 pretix/base/models/discount.py:87 #: pretix/base/models/items.py:229 pretix/base/models/items.py:285 #: pretix/base/models/items.py:571 pretix/base/models/items.py:1215 -#: pretix/base/payment.py:400 pretix/control/forms/subevents.py:328 -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:512 +#: pretix/base/payment.py:400 pretix/control/forms/subevents.py:338 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:514 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:177 #: pretix/control/templates/pretixcontrol/subevents/detail.html:155 msgid "Available until" @@ -2196,8 +2196,8 @@ msgid "Only include orders created within this date range." msgstr "" #: pretix/base/exporters/orderlist.py:137 pretix/base/notifications.py:194 -#: pretix/base/pdf.py:245 pretix/base/settings.py:1223 -#: pretix/base/settings.py:1235 pretix/control/forms/filter.py:1259 +#: pretix/base/pdf.py:245 pretix/base/settings.py:1225 +#: pretix/base/settings.py:1237 pretix/control/forms/filter.py:1259 #: pretix/plugins/badges/exporters.py:499 #: pretix/plugins/reports/exporters.py:315 #: pretix/plugins/reports/exporters.py:465 @@ -2242,8 +2242,8 @@ msgstr "" #: pretix/base/exporters/orderlist.py:479 #: pretix/base/exporters/orderlist.py:617 #: pretix/base/exporters/orderlist.py:935 -#: pretix/base/exporters/orderlist.py:1136 -#: pretix/base/exporters/orderlist.py:1324 +#: pretix/base/exporters/orderlist.py:1148 +#: pretix/base/exporters/orderlist.py:1338 #: pretix/base/exporters/waitinglist.py:116 pretix/control/forms/event.py:1850 #: pretix/control/forms/organizer.py:119 msgid "Event slug" @@ -2252,8 +2252,8 @@ msgstr "" #: pretix/base/exporters/orderlist.py:283 #: pretix/base/exporters/orderlist.py:482 #: pretix/base/exporters/orderlist.py:621 -#: pretix/base/exporters/orderlist.py:1136 -#: pretix/base/exporters/orderlist.py:1380 +#: pretix/base/exporters/orderlist.py:1148 +#: pretix/base/exporters/orderlist.py:1394 #: pretix/base/exporters/waitinglist.py:123 #: pretix/base/exporters/waitinglist.py:173 pretix/base/models/orders.py:215 #: pretix/control/forms/filter.py:1055 pretix/control/forms/filter.py:1357 @@ -2296,7 +2296,7 @@ msgstr "" #: pretix/base/exporters/orderlist.py:485 #: pretix/base/exporters/orderlist.py:624 #: pretix/base/exporters/orderlist.py:939 pretix/base/notifications.py:203 -#: pretix/base/settings.py:1224 pretix/base/settings.py:1236 +#: pretix/base/settings.py:1226 pretix/base/settings.py:1238 #: pretix/control/forms/filter.py:2484 #: pretix/control/templates/pretixcontrol/order/index.html:183 #: pretix/control/templates/pretixcontrol/orders/bulk_action.html:24 @@ -2351,6 +2351,7 @@ msgid "Tax value at {rate} % tax" msgstr "" #: pretix/base/exporters/orderlist.py:302 +#: pretix/base/exporters/orderlist.py:1150 msgid "Invoice numbers" msgstr "" @@ -2399,11 +2400,11 @@ msgstr "" #: pretix/base/exporters/orderlist.py:636 #: pretix/base/exporters/orderlist.py:959 pretix/base/modelimport_orders.py:467 #: pretix/base/models/orders.py:1505 pretix/base/models/orders.py:3050 -#: pretix/base/pdf.py:160 pretix/control/forms/orders.py:638 +#: pretix/base/pdf.py:160 pretix/control/forms/orders.py:646 #: pretix/control/templates/pretixcontrol/item/index.html:146 #: pretix/control/templates/pretixcontrol/order/change.html:194 -#: pretix/control/templates/pretixcontrol/order/change.html:418 -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:497 +#: pretix/control/templates/pretixcontrol/order/change.html:420 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:499 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:162 #: pretix/control/templates/pretixcontrol/subevents/detail.html:140 #: pretix/plugins/checkinlists/exporters.py:377 @@ -2433,9 +2434,9 @@ msgid "Position ID" msgstr "" #: pretix/base/exporters/orderlist.py:629 -#: pretix/base/exporters/orderlist.py:1199 -#: pretix/base/exporters/waitinglist.py:119 pretix/base/forms/questions.py:658 -#: pretix/base/forms/questions.py:667 pretix/base/models/memberships.py:145 +#: pretix/base/exporters/orderlist.py:1213 +#: pretix/base/exporters/waitinglist.py:119 pretix/base/forms/questions.py:664 +#: pretix/base/forms/questions.py:673 pretix/base/models/memberships.py:145 #: pretix/control/forms/rrule.py:49 #: pretix/control/templates/pretixcontrol/events/index.html:80 #: pretix/control/templates/pretixcontrol/order/index.html:823 @@ -2451,7 +2452,7 @@ msgid "Start date" msgstr "" #: pretix/base/exporters/orderlist.py:630 -#: pretix/base/exporters/orderlist.py:1200 +#: pretix/base/exporters/orderlist.py:1214 #: pretix/base/exporters/waitinglist.py:120 #: pretix/base/models/memberships.py:148 #: pretix/control/templates/pretixcontrol/events/index.html:84 @@ -2470,7 +2471,7 @@ msgstr "" #: pretix/base/modelimport_vouchers.py:174 pretix/base/models/items.py:794 #: pretix/base/models/vouchers.py:253 pretix/base/models/waitinglist.py:91 #: pretix/control/forms/filter.py:2284 pretix/control/forms/filter.py:2539 -#: pretix/control/forms/orders.py:335 pretix/control/forms/vouchers.py:67 +#: pretix/control/forms/orders.py:339 pretix/control/forms/vouchers.py:67 #: pretix/control/forms/waitinglist.py:106 #: pretix/control/templates/pretixcontrol/checkin/checkins.html:66 #: pretix/control/templates/pretixcontrol/item/base.html:3 @@ -2592,7 +2593,7 @@ msgstr "" #: pretix/base/exporters/orderlist.py:707 pretix/control/navigation.py:327 #: pretix/control/templates/pretixcontrol/checkin/lists.html:6 #: pretix/control/templates/pretixcontrol/checkin/lists.html:8 -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:521 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:523 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:274 #: pretix/control/templates/pretixcontrol/subevents/detail.html:164 #: pretix/plugins/checkinlists/apps.py:44 @@ -2638,8 +2639,8 @@ msgid "Event" msgstr "" #: pretix/base/exporters/orderlist.py:936 -#: pretix/base/exporters/orderlist.py:1280 -#: pretix/base/exporters/orderlist.py:1428 +#: pretix/base/exporters/orderlist.py:1294 +#: pretix/base/exporters/orderlist.py:1442 #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:50 #: pretix/control/templates/pretixcontrol/organizers/giftcard.html:36 #: pretix/plugins/banktransfer/refund_export.py:47 @@ -2738,9 +2739,9 @@ msgstr "" msgid "Refund states" msgstr "" -#: pretix/base/exporters/orderlist.py:1136 -#: pretix/base/exporters/orderlist.py:1281 -#: pretix/base/exporters/orderlist.py:1324 pretix/base/models/orders.py:335 +#: pretix/base/exporters/orderlist.py:1148 +#: pretix/base/exporters/orderlist.py:1295 +#: pretix/base/exporters/orderlist.py:1338 pretix/base/models/orders.py:335 #: pretix/base/models/orders.py:1748 pretix/base/models/orders.py:2166 #: pretix/base/models/orders.py:2328 pretix/base/models/orders.py:2527 #: pretix/base/models/orders.py:3012 @@ -2755,34 +2756,34 @@ msgstr "" msgid "Order" msgstr "" -#: pretix/base/exporters/orderlist.py:1136 -#: pretix/base/exporters/orderlist.py:1324 +#: pretix/base/exporters/orderlist.py:1148 +#: pretix/base/exporters/orderlist.py:1338 #: pretix/control/templates/pretixcontrol/search/payments.html:75 #: pretix/plugins/paypal/templates/pretixplugins/paypal/control.html:5 #: pretix/plugins/paypal2/templates/pretixplugins/paypal2/control_legacy.html:5 msgid "Payment ID" msgstr "" -#: pretix/base/exporters/orderlist.py:1136 -#: pretix/base/exporters/orderlist.py:1425 +#: pretix/base/exporters/orderlist.py:1148 +#: pretix/base/exporters/orderlist.py:1439 #: pretix/control/templates/pretixcontrol/organizers/customer.html:298 #: pretix/control/templates/pretixcontrol/organizers/giftcard.html:32 #: pretix/control/templates/pretixcontrol/organizers/giftcards.html:62 msgid "Creation date" msgstr "" -#: pretix/base/exporters/orderlist.py:1136 +#: pretix/base/exporters/orderlist.py:1148 #: pretix/control/templates/pretixcontrol/order/index.html:918 msgid "Completion date" msgstr "" -#: pretix/base/exporters/orderlist.py:1137 +#: pretix/base/exporters/orderlist.py:1149 msgid "Status code" msgstr "" -#: pretix/base/exporters/orderlist.py:1137 -#: pretix/base/exporters/orderlist.py:1279 -#: pretix/base/exporters/orderlist.py:1324 pretix/base/models/orders.py:1744 +#: pretix/base/exporters/orderlist.py:1149 +#: pretix/base/exporters/orderlist.py:1293 +#: pretix/base/exporters/orderlist.py:1338 pretix/base/models/orders.py:1744 #: pretix/base/models/orders.py:2162 pretix/control/forms/filter.py:1087 #: pretix/control/forms/filter.py:1090 #: pretix/control/templates/pretixcontrol/order/index.html:827 @@ -2797,7 +2798,7 @@ msgstr "" msgid "Amount" msgstr "" -#: pretix/base/exporters/orderlist.py:1137 +#: pretix/base/exporters/orderlist.py:1149 #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:102 #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:115 #: pretix/control/templates/pretixcontrol/order/index.html:825 @@ -2808,84 +2809,84 @@ msgstr "" msgid "Payment method" msgstr "" -#: pretix/base/exporters/orderlist.py:1137 +#: pretix/base/exporters/orderlist.py:1149 msgid "Matching ID" msgstr "" -#: pretix/base/exporters/orderlist.py:1137 +#: pretix/base/exporters/orderlist.py:1149 #: pretix/control/templates/pretixcontrol/order/refund_choose.html:38 msgid "Payment details" msgstr "" -#: pretix/base/exporters/orderlist.py:1187 +#: pretix/base/exporters/orderlist.py:1201 msgid "Quota availabilities" msgstr "" -#: pretix/base/exporters/orderlist.py:1189 +#: pretix/base/exporters/orderlist.py:1203 msgid "" "Download a spreadsheet of all quotas including their current availability." msgstr "" -#: pretix/base/exporters/orderlist.py:1194 +#: pretix/base/exporters/orderlist.py:1208 #: pretix/control/templates/pretixcontrol/items/quotas.html:49 msgid "Quota name" msgstr "" -#: pretix/base/exporters/orderlist.py:1194 +#: pretix/base/exporters/orderlist.py:1208 #: pretix/control/templates/pretixcontrol/items/quota.html:56 msgid "Total quota" msgstr "" -#: pretix/base/exporters/orderlist.py:1194 +#: pretix/base/exporters/orderlist.py:1208 #: pretix/control/templates/pretixcontrol/event/cancel.html:20 #: pretix/control/views/item.py:954 msgid "Paid orders" msgstr "" -#: pretix/base/exporters/orderlist.py:1194 pretix/control/views/item.py:959 +#: pretix/base/exporters/orderlist.py:1208 pretix/control/views/item.py:959 msgid "Pending orders" msgstr "" -#: pretix/base/exporters/orderlist.py:1194 +#: pretix/base/exporters/orderlist.py:1208 msgid "Blocking vouchers" msgstr "" -#: pretix/base/exporters/orderlist.py:1195 pretix/control/views/item.py:978 +#: pretix/base/exporters/orderlist.py:1209 pretix/control/views/item.py:978 msgid "Current user's carts" msgstr "" -#: pretix/base/exporters/orderlist.py:1195 +#: pretix/base/exporters/orderlist.py:1209 msgid "Exited orders" msgstr "" -#: pretix/base/exporters/orderlist.py:1195 +#: pretix/base/exporters/orderlist.py:1209 msgid "Current availability" msgstr "" -#: pretix/base/exporters/orderlist.py:1212 -#: pretix/base/exporters/orderlist.py:1219 +#: pretix/base/exporters/orderlist.py:1226 +#: pretix/base/exporters/orderlist.py:1233 #: pretix/control/templates/pretixcontrol/items/quota.html:58 #: pretix/control/views/item.py:985 msgid "Infinite" msgstr "" -#: pretix/base/exporters/orderlist.py:1241 +#: pretix/base/exporters/orderlist.py:1255 msgid "Gift card transactions" msgstr "" -#: pretix/base/exporters/orderlist.py:1242 -#: pretix/base/exporters/orderlist.py:1352 +#: pretix/base/exporters/orderlist.py:1256 +#: pretix/base/exporters/orderlist.py:1366 msgctxt "export_category" msgid "Gift cards" msgstr "" -#: pretix/base/exporters/orderlist.py:1243 +#: pretix/base/exporters/orderlist.py:1257 msgid "Download a spreadsheet of all gift card transactions." msgstr "" -#: pretix/base/exporters/orderlist.py:1276 -#: pretix/base/exporters/orderlist.py:1324 -#: pretix/base/exporters/orderlist.py:1423 pretix/base/models/giftcards.py:96 +#: pretix/base/exporters/orderlist.py:1290 +#: pretix/base/exporters/orderlist.py:1338 +#: pretix/base/exporters/orderlist.py:1437 pretix/base/models/giftcards.py:96 #: pretix/base/payment.py:1490 #: pretix/control/templates/pretixcontrol/giftcards/payment.html:4 #: pretix/control/templates/pretixcontrol/order/index.html:563 @@ -2896,16 +2897,16 @@ msgstr "" msgid "Gift card code" msgstr "" -#: pretix/base/exporters/orderlist.py:1277 -#: pretix/base/exporters/orderlist.py:1370 -#: pretix/base/exporters/orderlist.py:1373 +#: pretix/base/exporters/orderlist.py:1291 +#: pretix/base/exporters/orderlist.py:1384 +#: pretix/base/exporters/orderlist.py:1387 #: pretix/base/models/memberships.py:120 pretix/control/forms/filter.py:255 #: pretix/control/forms/filter.py:1574 pretix/control/forms/filter.py:1577 #: pretix/control/templates/pretixcontrol/event/live.html:75 msgid "Test mode" msgstr "" -#: pretix/base/exporters/orderlist.py:1282 pretix/base/models/organizer.py:107 +#: pretix/base/exporters/orderlist.py:1296 pretix/base/models/organizer.py:107 #: pretix/control/forms/event.py:112 pretix/control/forms/filter.py:924 #: pretix/control/forms/filter.py:1042 pretix/control/forms/filter.py:1839 #: pretix/control/templates/pretixcontrol/email_setup.html:6 @@ -2920,7 +2921,7 @@ msgstr "" msgid "Organizer" msgstr "" -#: pretix/base/exporters/orderlist.py:1289 pretix/base/invoicing/pdf.py:591 +#: pretix/base/exporters/orderlist.py:1303 pretix/base/invoicing/pdf.py:591 #: pretix/control/templates/pretixcontrol/base.html:283 #: pretix/control/templates/pretixcontrol/checkin/index.html:145 #: pretix/control/templates/pretixcontrol/order/index.html:25 @@ -2939,7 +2940,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/search/orders.html:77 #: pretix/control/templates/pretixcontrol/search/payments.html:119 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/refund_export.html:67 -#: pretix/presale/forms/checkout.py:259 +#: pretix/presale/forms/checkout.py:216 #: pretix/presale/templates/pretixpresale/event/order.html:70 #: pretix/presale/templates/pretixpresale/event/position.html:14 #: pretix/presale/templates/pretixpresale/organizers/customer_giftcards.html:59 @@ -2950,21 +2951,21 @@ msgstr "" msgid "TEST MODE" msgstr "" -#: pretix/base/exporters/orderlist.py:1304 +#: pretix/base/exporters/orderlist.py:1318 msgid "Gift card redemptions" msgstr "" -#: pretix/base/exporters/orderlist.py:1306 +#: pretix/base/exporters/orderlist.py:1320 msgid "" "Download a spreadsheet of all payments or refunds that involve gift cards." msgstr "" -#: pretix/base/exporters/orderlist.py:1324 +#: pretix/base/exporters/orderlist.py:1338 #: pretix/control/templates/pretixcontrol/giftcards/payment.html:21 msgid "Issuer" msgstr "" -#: pretix/base/exporters/orderlist.py:1351 pretix/base/permissions.py:292 +#: pretix/base/exporters/orderlist.py:1365 pretix/base/permissions.py:292 #: pretix/control/navigation.py:577 pretix/control/navigation.py:595 #: pretix/control/templates/pretixcontrol/organizers/customer.html:291 #: pretix/control/templates/pretixcontrol/organizers/edit.html:157 @@ -2975,20 +2976,20 @@ msgstr "" msgid "Gift cards" msgstr "" -#: pretix/base/exporters/orderlist.py:1353 +#: pretix/base/exporters/orderlist.py:1367 msgid "Download a spreadsheet of all gift cards including their current value." msgstr "" -#: pretix/base/exporters/orderlist.py:1364 +#: pretix/base/exporters/orderlist.py:1378 msgid "Show value at" msgstr "" -#: pretix/base/exporters/orderlist.py:1367 +#: pretix/base/exporters/orderlist.py:1381 msgid "Defaults to the time of report." msgstr "" -#: pretix/base/exporters/orderlist.py:1372 -#: pretix/base/exporters/orderlist.py:1382 pretix/control/forms/filter.py:555 +#: pretix/base/exporters/orderlist.py:1386 +#: pretix/base/exporters/orderlist.py:1396 pretix/control/forms/filter.py:555 #: pretix/control/forms/filter.py:1359 pretix/control/forms/filter.py:1576 #: pretix/control/forms/filter.py:1585 pretix/control/forms/filter.py:1655 #: pretix/control/forms/filter.py:1665 pretix/control/forms/filter.py:1727 @@ -3012,24 +3013,24 @@ msgstr "" msgid "All" msgstr "" -#: pretix/base/exporters/orderlist.py:1374 pretix/control/forms/filter.py:1578 +#: pretix/base/exporters/orderlist.py:1388 pretix/control/forms/filter.py:1578 msgid "Live" msgstr "" -#: pretix/base/exporters/orderlist.py:1383 pretix/control/forms/filter.py:1586 +#: pretix/base/exporters/orderlist.py:1397 pretix/control/forms/filter.py:1586 #: pretix/control/templates/pretixcontrol/pdf/index.html:330 msgid "Empty" msgstr "" -#: pretix/base/exporters/orderlist.py:1384 pretix/control/forms/filter.py:1587 +#: pretix/base/exporters/orderlist.py:1398 pretix/control/forms/filter.py:1587 msgid "Valid and with value" msgstr "" -#: pretix/base/exporters/orderlist.py:1385 pretix/control/forms/filter.py:1588 +#: pretix/base/exporters/orderlist.py:1399 pretix/control/forms/filter.py:1588 msgid "Expired and with value" msgstr "" -#: pretix/base/exporters/orderlist.py:1386 pretix/control/forms/filter.py:238 +#: pretix/base/exporters/orderlist.py:1400 pretix/control/forms/filter.py:238 #: pretix/control/forms/filter.py:1235 pretix/control/forms/filter.py:1589 #: pretix/control/forms/filter.py:2249 #: pretix/control/templates/pretixcontrol/orders/fragment_order_status.html:37 @@ -3042,11 +3043,11 @@ msgstr "" msgid "Expired" msgstr "" -#: pretix/base/exporters/orderlist.py:1424 pretix/base/models/giftcards.py:105 +#: pretix/base/exporters/orderlist.py:1438 pretix/base/models/giftcards.py:105 msgid "Test mode card" msgstr "" -#: pretix/base/exporters/orderlist.py:1426 +#: pretix/base/exporters/orderlist.py:1440 #: pretix/base/modelimport_orders.py:553 pretix/base/models/giftcards.py:109 #: pretix/control/templates/pretixcontrol/order/index.html:203 #: pretix/control/templates/pretixcontrol/organizers/customer.html:299 @@ -3054,28 +3055,28 @@ msgstr "" msgid "Expiry date" msgstr "" -#: pretix/base/exporters/orderlist.py:1427 pretix/control/forms/orders.py:902 +#: pretix/base/exporters/orderlist.py:1441 pretix/control/forms/orders.py:910 msgid "Special terms and conditions" msgstr "" -#: pretix/base/exporters/orderlist.py:1429 +#: pretix/base/exporters/orderlist.py:1443 #: pretix/control/templates/pretixcontrol/order/change.html:98 -#: pretix/control/templates/pretixcontrol/order/change.html:410 +#: pretix/control/templates/pretixcontrol/order/change.html:412 #: pretix/control/templates/pretixcontrol/organizers/customer.html:301 #: pretix/control/templates/pretixcontrol/organizers/giftcard.html:34 #: pretix/control/templates/pretixcontrol/organizers/giftcards.html:71 msgid "Current value" msgstr "" -#: pretix/base/exporters/orderlist.py:1430 +#: pretix/base/exporters/orderlist.py:1444 msgid "Created in order" msgstr "" -#: pretix/base/exporters/orderlist.py:1431 +#: pretix/base/exporters/orderlist.py:1445 msgid "Last invoice number of order" msgstr "" -#: pretix/base/exporters/orderlist.py:1432 +#: pretix/base/exporters/orderlist.py:1446 msgid "Last invoice date of order" msgstr "" @@ -3210,7 +3211,7 @@ msgid "This combination of credentials is not known to our system." msgstr "" #: pretix/base/forms/auth.py:66 pretix/base/forms/user.py:94 -#: pretix/presale/forms/customer.py:391 pretix/presale/forms/customer.py:470 +#: pretix/presale/forms/customer.py:392 pretix/presale/forms/customer.py:471 msgid "For security reasons, please wait 5 minutes before you try again." msgstr "" @@ -3225,12 +3226,12 @@ msgstr "" #: pretix/base/forms/auth.py:157 pretix/base/forms/auth.py:214 #: pretix/base/forms/user.py:93 pretix/control/forms/users.py:45 -#: pretix/presale/forms/customer.py:295 pretix/presale/forms/customer.py:390 +#: pretix/presale/forms/customer.py:295 pretix/presale/forms/customer.py:391 msgid "Please enter the same password twice" msgstr "" #: pretix/base/forms/auth.py:172 pretix/base/forms/auth.py:233 -#: pretix/presale/forms/customer.py:307 pretix/presale/forms/customer.py:409 +#: pretix/presale/forms/customer.py:308 pretix/presale/forms/customer.py:410 msgid "Repeat password" msgstr "" @@ -3238,143 +3239,143 @@ msgstr "" msgid "Your email address" msgstr "" -#: pretix/base/forms/auth.py:326 pretix/control/forms/orders.py:1041 +#: pretix/base/forms/auth.py:326 pretix/control/forms/orders.py:1049 #: pretix/control/templates/pretixcontrol/shredder/download.html:53 msgid "Confirmation code" msgstr "" -#: pretix/base/forms/questions.py:139 pretix/base/forms/questions.py:266 +#: pretix/base/forms/questions.py:139 pretix/base/forms/questions.py:272 msgctxt "name_salutation" msgid "not specified" msgstr "" -#: pretix/base/forms/questions.py:229 +#: pretix/base/forms/questions.py:229 pretix/base/forms/questions.py:234 msgid "Please do not use special characters in names." msgstr "" -#: pretix/base/forms/questions.py:291 +#: pretix/base/forms/questions.py:297 msgid "Please enter a shorter name." msgstr "" -#: pretix/base/forms/questions.py:318 +#: pretix/base/forms/questions.py:324 msgctxt "phonenumber" msgid "International area code" msgstr "" -#: pretix/base/forms/questions.py:344 +#: pretix/base/forms/questions.py:350 msgctxt "phonenumber" msgid "Phone number (without international area code)" msgstr "" -#: pretix/base/forms/questions.py:507 +#: pretix/base/forms/questions.py:513 msgid "" "You uploaded an image in landscape orientation. Please upload an image in " "portrait orientation." msgstr "" -#: pretix/base/forms/questions.py:510 +#: pretix/base/forms/questions.py:516 msgid "Please upload an image where the width is 3/4 of the height." msgstr "" -#: pretix/base/forms/questions.py:513 +#: pretix/base/forms/questions.py:519 msgid "" "The file you uploaded has a very large number of pixels, please upload an " "image no larger than 10000 x 10000 pixels." msgstr "" -#: pretix/base/forms/questions.py:516 pretix/helpers/images.py:75 +#: pretix/base/forms/questions.py:522 pretix/helpers/images.py:75 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -#: pretix/base/forms/questions.py:659 pretix/base/forms/questions.py:668 +#: pretix/base/forms/questions.py:665 pretix/base/forms/questions.py:674 msgid "" "If you keep this empty, the ticket will be valid starting at the time of " "purchase." msgstr "" -#: pretix/base/forms/questions.py:715 pretix/base/forms/questions.py:1108 +#: pretix/base/forms/questions.py:721 pretix/base/forms/questions.py:1114 msgid "Street and Number" msgstr "" -#: pretix/base/forms/questions.py:893 -#, python-brace-format -msgid "Please enter a date between {min} and {max}." -msgstr "" - #: pretix/base/forms/questions.py:899 #, python-brace-format +msgid "Please enter a date between {min} and {max}." +msgstr "" + +#: pretix/base/forms/questions.py:905 +#, python-brace-format msgid "Please enter a date no earlier than {min}." msgstr "" -#: pretix/base/forms/questions.py:904 +#: pretix/base/forms/questions.py:910 #, python-brace-format msgid "Please enter a date no later than {max}." msgstr "" -#: pretix/base/forms/questions.py:942 +#: pretix/base/forms/questions.py:948 #, python-brace-format msgid "Please enter a date and time between {min} and {max}." msgstr "" -#: pretix/base/forms/questions.py:948 +#: pretix/base/forms/questions.py:954 #, python-brace-format msgid "Please enter a date and time no earlier than {min}." msgstr "" -#: pretix/base/forms/questions.py:953 +#: pretix/base/forms/questions.py:959 #, python-brace-format msgid "Please enter a date and time no later than {max}." msgstr "" -#: pretix/base/forms/questions.py:1172 +#: pretix/base/forms/questions.py:1178 msgid "" "Optional, but depending on the country you reside in we might need to charge " "you additional taxes if you do not enter it." msgstr "" -#: pretix/base/forms/questions.py:1177 +#: pretix/base/forms/questions.py:1183 msgid "" "Optional, but it might be required for you to claim tax benefits on your " "invoice depending on your and the seller’s country of residence." msgstr "" -#: pretix/base/forms/questions.py:1185 +#: pretix/base/forms/questions.py:1191 msgid "No invoice requested" msgstr "" -#: pretix/base/forms/questions.py:1187 +#: pretix/base/forms/questions.py:1193 msgid "Invoice transmission method" msgstr "" -#: pretix/base/forms/questions.py:1333 +#: pretix/base/forms/questions.py:1339 msgid "You need to provide a company name." msgstr "" -#: pretix/base/forms/questions.py:1335 +#: pretix/base/forms/questions.py:1341 msgid "You need to provide your name." msgstr "" -#: pretix/base/forms/questions.py:1361 +#: pretix/base/forms/questions.py:1367 msgid "" "If you enter an invoice address, you also need to select an invoice " "transmission method." msgstr "" -#: pretix/base/forms/questions.py:1403 +#: pretix/base/forms/questions.py:1409 msgid "" "The selected transmission type is not available in your country or for your " "type of address." msgstr "" -#: pretix/base/forms/questions.py:1412 +#: pretix/base/forms/questions.py:1418 msgid "" "The selected type of invoice transmission requires a field that is currently " "not available, please reach out to the organizer." msgstr "" -#: pretix/base/forms/questions.py:1416 +#: pretix/base/forms/questions.py:1422 msgid "This field is required for the selected type of invoice transmission." msgstr "" @@ -3410,8 +3411,8 @@ msgstr "" msgid "WebAuthn-compatible hardware token (e.g. Yubikey)" msgstr "" -#: pretix/base/forms/user.py:92 pretix/presale/forms/customer.py:389 -#: pretix/presale/forms/customer.py:469 +#: pretix/base/forms/user.py:92 pretix/presale/forms/customer.py:390 +#: pretix/presale/forms/customer.py:470 msgid "The current password you entered was not correct." msgstr "" @@ -3419,13 +3420,13 @@ msgstr "" msgid "Please choose a password different to your current one." msgstr "" -#: pretix/base/forms/user.py:105 pretix/presale/forms/customer.py:398 -#: pretix/presale/forms/customer.py:474 +#: pretix/base/forms/user.py:105 pretix/presale/forms/customer.py:399 +#: pretix/presale/forms/customer.py:475 msgid "Your current password" msgstr "" #: pretix/base/forms/user.py:111 pretix/control/forms/users.py:50 -#: pretix/presale/forms/customer.py:403 +#: pretix/presale/forms/customer.py:404 msgid "New password" msgstr "" @@ -3455,7 +3456,7 @@ msgid "" "\"{{\" and \"}}\"." msgstr "" -#: pretix/base/forms/validators.py:72 pretix/control/views/event.py:900 +#: pretix/base/forms/validators.py:72 pretix/control/views/event.py:903 #, python-format msgid "Invalid placeholder: {%(value)s}" msgstr "" @@ -3892,37 +3893,37 @@ msgstr "" msgid "Default list" msgstr "" -#: pretix/base/modelimport.py:126 +#: pretix/base/modelimport.py:130 msgid "Keep empty" msgstr "" -#: pretix/base/modelimport.py:160 +#: pretix/base/modelimport.py:164 #, python-brace-format msgid "Invalid setting for column \"{header}\"." msgstr "" -#: pretix/base/modelimport.py:220 +#: pretix/base/modelimport.py:224 #, python-brace-format msgid "Could not parse {value} as a yes/no value." msgstr "" -#: pretix/base/modelimport.py:243 +#: pretix/base/modelimport.py:247 #, python-brace-format msgid "Could not parse {value} as a date and time." msgstr "" -#: pretix/base/modelimport.py:253 pretix/control/views/orders.py:1175 -#: pretix/control/views/orders.py:1204 pretix/control/views/orders.py:1253 -#: pretix/control/views/orders.py:1288 pretix/control/views/orders.py:1311 +#: pretix/base/modelimport.py:257 pretix/control/views/orders.py:1162 +#: pretix/control/views/orders.py:1191 pretix/control/views/orders.py:1240 +#: pretix/control/views/orders.py:1275 pretix/control/views/orders.py:1298 msgid "You entered an invalid number." msgstr "" -#: pretix/base/modelimport.py:300 pretix/base/modelimport.py:312 +#: pretix/base/modelimport.py:304 pretix/base/modelimport.py:316 msgctxt "subevent" msgid "No matching date was found." msgstr "" -#: pretix/base/modelimport.py:302 pretix/base/modelimport.py:314 +#: pretix/base/modelimport.py:306 pretix/base/modelimport.py:318 msgctxt "subevent" msgid "Multiple matching dates were found." msgstr "" @@ -3949,7 +3950,7 @@ msgid "" "internal ID, provided only one date in the system matches the input." msgstr "" -#: pretix/base/modelimport_orders.py:120 pretix/presale/views/waiting.py:157 +#: pretix/base/modelimport_orders.py:120 pretix/presale/views/waiting.py:162 msgctxt "subevent" msgid "You need to select a date." msgstr "" @@ -4219,35 +4220,35 @@ msgid "" "voucher" msgstr "" -#: pretix/base/models/auth.py:274 +#: pretix/base/models/auth.py:283 msgid "Is active" msgstr "" -#: pretix/base/models/auth.py:276 +#: pretix/base/models/auth.py:285 msgid "Is site admin" msgstr "" -#: pretix/base/models/auth.py:278 +#: pretix/base/models/auth.py:287 msgid "Date joined" msgstr "" -#: pretix/base/models/auth.py:280 +#: pretix/base/models/auth.py:289 msgid "Force user to select a new password" msgstr "" -#: pretix/base/models/auth.py:290 +#: pretix/base/models/auth.py:299 msgid "Two-factor authentication is required to log in" msgstr "" -#: pretix/base/models/auth.py:294 +#: pretix/base/models/auth.py:303 msgid "Receive notifications according to my settings below" msgstr "" -#: pretix/base/models/auth.py:295 +#: pretix/base/models/auth.py:304 msgid "If turned off, you will not get any notifications." msgstr "" -#: pretix/base/models/auth.py:309 +#: pretix/base/models/auth.py:318 #: pretix/control/templates/pretixcontrol/orders/bulk_action.html:23 #: pretix/control/templates/pretixcontrol/orders/index.html:135 #: pretix/control/templates/pretixcontrol/search/orders.html:54 @@ -4255,39 +4256,39 @@ msgstr "" #: pretix/control/templates/pretixcontrol/user/staff_session_list.html:15 #: pretix/control/templates/pretixcontrol/users/form.html:4 #: pretix/control/templates/pretixcontrol/users/form.html:6 -#: pretix/control/views/organizer.py:174 tests/base/test_mail.py:202 +#: pretix/control/views/organizer.py:174 tests/base/test_mail.py:205 msgid "User" msgstr "" -#: pretix/base/models/auth.py:310 pretix/control/navigation.py:438 +#: pretix/base/models/auth.py:319 pretix/control/navigation.py:438 #: pretix/control/templates/pretixcontrol/users/index.html:5 #: pretix/control/templates/pretixcontrol/users/index.html:7 msgid "Users" msgstr "" -#: pretix/base/models/auth.py:367 +#: pretix/base/models/auth.py:376 msgid "Account information changed" msgstr "" -#: pretix/base/models/auth.py:394 +#: pretix/base/models/auth.py:403 #, python-brace-format msgid "" "to confirm changing your email address from {old_email}\n" "to {new_email}, use the following code:" msgstr "" -#: pretix/base/models/auth.py:398 +#: pretix/base/models/auth.py:407 #, python-brace-format msgid "" "to confirm that your email address {email} belongs to your pretix account, " "use the following code:" msgstr "" -#: pretix/base/models/auth.py:412 +#: pretix/base/models/auth.py:421 msgid "pretix confirmation code" msgstr "" -#: pretix/base/models/auth.py:456 +#: pretix/base/models/auth.py:465 #: pretix/control/templates/pretixcontrol/auth/forgot.html:7 msgid "Password recovery" msgstr "" @@ -4469,7 +4470,7 @@ msgid "disabled" msgstr "" #: pretix/base/models/customers.py:354 pretix/base/models/orders.py:1546 -#: pretix/base/models/orders.py:3348 pretix/base/settings.py:1308 +#: pretix/base/models/orders.py:3348 pretix/base/settings.py:1310 msgid "Company name" msgstr "" @@ -4586,7 +4587,7 @@ msgstr "" #: pretix/base/models/discount.py:69 pretix/base/models/items.py:1161 #: pretix/base/models/items.py:1481 pretix/base/models/items.py:1708 -#: pretix/base/models/organizer.py:657 +#: pretix/base/models/organizer.py:664 msgid "Position" msgstr "" @@ -4740,7 +4741,7 @@ msgstr "" msgid "The slug may only contain letters, numbers, dots and dashes." msgstr "" -#: pretix/base/models/event.py:624 pretix/base/models/event.py:1551 +#: pretix/base/models/event.py:624 pretix/base/models/event.py:1557 msgid "Show in lists" msgstr "" @@ -4750,14 +4751,14 @@ msgid "" "organizer account." msgstr "" -#: pretix/base/models/event.py:629 pretix/base/models/event.py:1566 +#: pretix/base/models/event.py:629 pretix/base/models/event.py:1572 #: pretix/control/forms/subevents.py:100 msgid "" "Optional. No products will be sold after this date. If you do not set this " "value, the presale will end after the end date of your event." msgstr "" -#: pretix/base/models/event.py:635 pretix/base/models/event.py:1572 +#: pretix/base/models/event.py:635 pretix/base/models/event.py:1578 #: pretix/control/forms/subevents.py:94 msgid "Optional. No products will be sold before this date." msgstr "" @@ -4785,11 +4786,11 @@ msgstr "" #: pretix/control/views/dashboards.py:554 #: pretix/presale/templates/pretixpresale/event/index.html:33 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:8 -#: pretix/presale/views/widget.py:732 +#: pretix/presale/views/widget.py:730 msgid "Event series" msgstr "" -#: pretix/base/models/event.py:676 pretix/base/models/event.py:1600 +#: pretix/base/models/event.py:676 pretix/base/models/event.py:1606 msgid "Seating plan" msgstr "" @@ -4815,144 +4816,144 @@ msgstr "" msgid "Events" msgstr "" -#: pretix/base/models/event.py:1372 +#: pretix/base/models/event.py:1378 msgid "" "You have configured at least one paid product but have not enabled any " "payment methods." msgstr "" -#: pretix/base/models/event.py:1375 +#: pretix/base/models/event.py:1381 msgid "" "You have configured at least one paid product but have not configured a " "currency." msgstr "" -#: pretix/base/models/event.py:1378 +#: pretix/base/models/event.py:1384 msgid "You need to configure at least one quota to sell anything." msgstr "" -#: pretix/base/models/event.py:1383 +#: pretix/base/models/event.py:1389 #, python-brace-format msgid "You need to fill the meta parameter \"{property}\"." msgstr "" -#: pretix/base/models/event.py:1497 +#: pretix/base/models/event.py:1503 msgid "" "Once created an event cannot change between an series and a single event." msgstr "" -#: pretix/base/models/event.py:1503 +#: pretix/base/models/event.py:1509 msgid "The event slug cannot be changed." msgstr "" -#: pretix/base/models/event.py:1506 +#: pretix/base/models/event.py:1512 msgid "This slug has already been used for a different event." msgstr "" -#: pretix/base/models/event.py:1512 +#: pretix/base/models/event.py:1518 msgid "The event cannot end before it starts." msgstr "" -#: pretix/base/models/event.py:1518 +#: pretix/base/models/event.py:1524 msgid "The event's presale cannot end before it starts." msgstr "" -#: pretix/base/models/event.py:1548 +#: pretix/base/models/event.py:1554 msgid "" "Only with this checkbox enabled, this date is visible in the frontend to " "users." msgstr "" -#: pretix/base/models/event.py:1552 +#: pretix/base/models/event.py:1558 msgid "" "If selected, this event will show up publicly on the list of dates for your " "event." msgstr "" -#: pretix/base/models/event.py:1597 pretix/base/settings.py:3332 +#: pretix/base/models/event.py:1603 pretix/base/settings.py:3334 msgid "Frontpage text" msgstr "" -#: pretix/base/models/event.py:1614 +#: pretix/base/models/event.py:1620 msgid "Date in event series" msgstr "" -#: pretix/base/models/event.py:1615 +#: pretix/base/models/event.py:1621 msgid "Dates in event series" msgstr "" -#: pretix/base/models/event.py:1756 +#: pretix/base/models/event.py:1762 msgid "One or more variations do not belong to this event." msgstr "" -#: pretix/base/models/event.py:1786 pretix/base/models/items.py:2236 +#: pretix/base/models/event.py:1792 pretix/base/models/items.py:2236 msgid "Can not contain spaces or special characters except underscores" msgstr "" -#: pretix/base/models/event.py:1791 pretix/base/models/items.py:2241 +#: pretix/base/models/event.py:1797 pretix/base/models/items.py:2241 msgid "The property name may only contain letters, numbers and underscores." msgstr "" -#: pretix/base/models/event.py:1796 +#: pretix/base/models/event.py:1802 msgid "Default value" msgstr "" -#: pretix/base/models/event.py:1798 +#: pretix/base/models/event.py:1804 #: pretix/control/templates/pretixcontrol/organizers/properties.html:50 msgid "Can only be changed by organizer-level administrators" msgstr "" -#: pretix/base/models/event.py:1800 +#: pretix/base/models/event.py:1806 msgid "Required for events" msgstr "" -#: pretix/base/models/event.py:1801 +#: pretix/base/models/event.py:1807 msgid "" "If checked, an event can only be taken live if the property is set. In event " "series, its always optional to set a value for individual dates" msgstr "" -#: pretix/base/models/event.py:1807 pretix/base/models/items.py:2253 +#: pretix/base/models/event.py:1813 pretix/base/models/items.py:2253 msgid "Valid values" msgstr "" -#: pretix/base/models/event.py:1810 +#: pretix/base/models/event.py:1816 #: pretix/control/templates/pretixcontrol/organizers/properties.html:45 msgid "Show filter option to customers" msgstr "" -#: pretix/base/models/event.py:1811 +#: pretix/base/models/event.py:1817 msgid "" "This field will be shown to filter events in the public event list and " "calendar." msgstr "" -#: pretix/base/models/event.py:1814 pretix/control/forms/organizer.py:272 +#: pretix/base/models/event.py:1820 pretix/control/forms/organizer.py:272 #: pretix/control/forms/organizer.py:276 msgid "Public name" msgstr "" -#: pretix/base/models/event.py:1818 +#: pretix/base/models/event.py:1824 #: pretix/control/templates/pretixcontrol/organizers/properties.html:40 msgid "Can be used for filtering" msgstr "" -#: pretix/base/models/event.py:1819 +#: pretix/base/models/event.py:1825 msgid "" "This field will be shown to filter events or reports in the backend, and it " "can also be used for hidden filter parameters in the frontend (e.g. using " "the widget)." msgstr "" -#: pretix/base/models/event.py:1829 +#: pretix/base/models/event.py:1835 msgid "A property can either be required or have a default value, not both." msgstr "" -#: pretix/base/models/event.py:1909 pretix/base/models/organizer.py:620 +#: pretix/base/models/event.py:1915 pretix/base/models/organizer.py:627 msgid "Link text" msgstr "" -#: pretix/base/models/event.py:1912 pretix/base/models/organizer.py:623 +#: pretix/base/models/event.py:1918 pretix/base/models/organizer.py:630 msgid "Link URL" msgstr "" @@ -4982,8 +4983,8 @@ msgstr "" #: pretix/base/models/exports.py:74 pretix/control/forms/event.py:1259 #: pretix/control/forms/event.py:1333 pretix/control/forms/event.py:1343 #: pretix/control/forms/event.py:1353 pretix/control/forms/event.py:1368 -#: pretix/control/forms/orders.py:730 pretix/control/forms/orders.py:952 -#: pretix/control/forms/orders.py:979 pretix/control/forms/organizer.py:727 +#: pretix/control/forms/orders.py:738 pretix/control/forms/orders.py:960 +#: pretix/control/forms/orders.py:987 pretix/control/forms/organizer.py:727 #: pretix/control/forms/organizer.py:737 pretix/control/forms/organizer.py:747 #: pretix/control/forms/organizer.py:757 pretix/control/forms/vouchers.py:282 #: pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html:33 @@ -4993,9 +4994,9 @@ msgstr "" msgid "Subject" msgstr "" -#: pretix/base/models/exports.py:78 pretix/control/forms/orders.py:769 -#: pretix/control/forms/orders.py:792 pretix/control/forms/orders.py:960 -#: pretix/control/forms/orders.py:987 pretix/control/forms/vouchers.py:288 +#: pretix/base/models/exports.py:78 pretix/control/forms/orders.py:777 +#: pretix/control/forms/orders.py:800 pretix/control/forms/orders.py:968 +#: pretix/control/forms/orders.py:995 pretix/control/forms/vouchers.py:288 #: pretix/plugins/sendmail/forms.py:58 pretix/plugins/sendmail/forms.py:78 #: pretix/plugins/sendmail/models.py:242 msgid "Message" @@ -5070,7 +5071,7 @@ msgctxt "invoice" msgid "Tax ID: %s" msgstr "" -#: pretix/base/models/invoices.py:240 pretix/base/services/invoices.py:156 +#: pretix/base/models/invoices.py:240 pretix/base/services/invoices.py:157 #, python-format msgctxt "invoice" msgid "VAT-ID: %s" @@ -5263,7 +5264,7 @@ msgstr "" msgid "This will only work if waiting lists are enabled for this event." msgstr "" -#: pretix/base/models/items.py:547 pretix/base/settings.py:1591 +#: pretix/base/models/items.py:547 pretix/base/settings.py:1593 #: pretix/control/forms/event.py:1869 msgid "Show number of tickets left" msgstr "" @@ -5711,7 +5712,7 @@ msgid "Country code (ISO 3166-1 alpha-2)" msgstr "" #: pretix/base/models/items.py:1681 pretix/base/models/items.py:1957 -#: pretix/base/models/organizer.py:647 +#: pretix/base/models/organizer.py:654 msgid "" "The identifier may only contain letters, numbers, dots, dashes, and " "underscores." @@ -5932,7 +5933,7 @@ msgstr "" #: pretix/base/models/items.py:2122 pretix/control/navigation.py:169 #: pretix/control/templates/pretixcontrol/items/quotas.html:4 #: pretix/control/templates/pretixcontrol/items/quotas.html:6 -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:416 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:418 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:185 #: pretix/control/templates/pretixcontrol/subevents/detail.html:59 msgid "Quotas" @@ -6067,7 +6068,7 @@ msgid "pending" msgstr "" #: pretix/base/models/orders.py:202 pretix/base/payment.py:570 -#: pretix/base/services/invoices.py:593 +#: pretix/base/services/invoices.py:607 msgid "paid" msgstr "" @@ -6298,7 +6299,7 @@ msgid "Other fees" msgstr "" #: pretix/base/models/orders.py:2316 pretix/base/payment.py:1379 -#: pretix/base/payment.py:1455 pretix/base/settings.py:1099 +#: pretix/base/payment.py:1455 pretix/base/settings.py:1101 #: pretix/control/templates/pretixcontrol/items/index.html:117 #: pretix/control/templates/pretixcontrol/order/index.html:152 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:383 @@ -6352,7 +6353,7 @@ msgstr "" msgid "Badge" msgstr "" -#: pretix/base/models/orders.py:3581 pretix/base/pdf.py:1140 +#: pretix/base/models/orders.py:3581 pretix/base/pdf.py:1151 #: pretix/control/templates/pretixcontrol/checkin/checkins.html:66 #: pretix/plugins/ticketoutputpdf/ticketoutput.py:114 msgid "Ticket" @@ -6362,8 +6363,8 @@ msgstr "" msgid "Certificate" msgstr "" -#: pretix/base/models/orders.py:3583 pretix/control/views/event.py:393 -#: pretix/control/views/event.py:398 pretix/control/views/organizer.py:652 +#: pretix/base/models/orders.py:3583 pretix/control/views/event.py:401 +#: pretix/control/views/event.py:406 pretix/control/views/organizer.py:652 #: pretix/control/views/organizer.py:657 msgid "Other" msgstr "" @@ -6382,79 +6383,79 @@ msgstr "" msgid "Organizers" msgstr "" -#: pretix/base/models/organizer.py:363 +#: pretix/base/models/organizer.py:369 #: pretix/control/templates/pretixcontrol/organizers/teams.html:35 msgid "Team name" msgstr "" -#: pretix/base/models/organizer.py:364 +#: pretix/base/models/organizer.py:370 #: pretix/control/templates/pretixcontrol/organizers/team_members.html:13 msgid "Team members" msgstr "" -#: pretix/base/models/organizer.py:366 +#: pretix/base/models/organizer.py:372 msgid "Require all members of this team to use two-factor authentication" msgstr "" -#: pretix/base/models/organizer.py:367 +#: pretix/base/models/organizer.py:373 msgid "" "If you turn this on, all members of the team will be required to either set " "up two-factor authentication or leave the team. The setting may take a few " "minutes to become effective for all users." msgstr "" -#: pretix/base/models/organizer.py:378 +#: pretix/base/models/organizer.py:384 msgid "All event permissions" msgstr "" -#: pretix/base/models/organizer.py:379 +#: pretix/base/models/organizer.py:385 #: pretix/control/templates/pretixcontrol/organizers/team_edit.html:34 msgid "Event permissions" msgstr "" -#: pretix/base/models/organizer.py:380 +#: pretix/base/models/organizer.py:386 msgid "All organizer permissions" msgstr "" -#: pretix/base/models/organizer.py:381 +#: pretix/base/models/organizer.py:387 #: pretix/control/templates/pretixcontrol/organizers/team_edit.html:25 msgid "Organizer permissions" msgstr "" -#: pretix/base/models/organizer.py:401 +#: pretix/base/models/organizer.py:407 #, python-format msgid "%(name)s on %(object)s" msgstr "" -#: pretix/base/models/organizer.py:487 +#: pretix/base/models/organizer.py:493 #: pretix/control/templates/pretixcontrol/events/create_basics.html:67 msgid "Team" msgstr "" -#: pretix/base/models/organizer.py:488 pretix/base/permissions.py:282 +#: pretix/base/models/organizer.py:494 pretix/base/permissions.py:282 #: pretix/control/navigation.py:566 #: pretix/control/templates/pretixcontrol/organizers/teams.html:6 msgid "Teams" msgstr "" -#: pretix/base/models/organizer.py:508 +#: pretix/base/models/organizer.py:514 #, python-brace-format msgid "Invite to team '{team}' for '{email}'" msgstr "" -#: pretix/base/models/organizer.py:642 +#: pretix/base/models/organizer.py:649 #: pretix/control/templates/pretixcontrol/organizers/channels.html:23 msgid "Identifier" msgstr "" -#: pretix/base/models/organizer.py:652 +#: pretix/base/models/organizer.py:659 #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:54 #: pretix/control/templates/pretixcontrol/items/questions.html:24 msgid "Type" msgstr "" #: pretix/base/models/seating.py:46 pretix/base/models/tax.py:306 -#: pretix/base/pdf.py:1319 +#: pretix/base/pdf.py:1330 msgid "Your layout file is not a valid JSON file." msgstr "" @@ -7319,7 +7320,7 @@ msgstr "" msgid "Offsetting" msgstr "" -#: pretix/base/payment.py:1339 pretix/control/views/orders.py:1262 +#: pretix/base/payment.py:1339 pretix/control/views/orders.py:1249 msgid "You entered an order that could not be found." msgstr "" @@ -7358,7 +7359,7 @@ msgid "Product name" msgstr "" #: pretix/base/pdf.py:124 pretix/base/services/tickets.py:98 -#: pretix/control/views/event.py:938 pretix/control/views/pdf.py:96 +#: pretix/control/views/event.py:941 pretix/control/views/pdf.py:96 msgid "Sample product" msgstr "" @@ -7375,7 +7376,7 @@ msgid "Product description" msgstr "" #: pretix/base/pdf.py:134 pretix/base/services/tickets.py:99 -#: pretix/control/views/event.py:939 pretix/control/views/pdf.py:97 +#: pretix/control/views/event.py:942 pretix/control/views/pdf.py:97 msgid "Sample product description" msgstr "" @@ -7412,11 +7413,11 @@ msgid "Price including add-ons and bundled products" msgstr "" #: pretix/base/pdf.py:184 pretix/base/pdf.py:342 -#: pretix/base/services/invoices.py:594 +#: pretix/base/services/invoices.py:608 #: pretix/base/services/placeholders.py:604 #: pretix/base/services/placeholders.py:689 #: pretix/base/services/placeholders.py:705 -#: pretix/base/services/placeholders.py:714 pretix/control/views/event.py:940 +#: pretix/base/services/placeholders.py:714 pretix/control/views/event.py:943 msgid "John Doe" msgstr "" @@ -7492,9 +7493,9 @@ msgstr "" msgid "Event begin date" msgstr "" -#: pretix/base/pdf.py:264 pretix/base/pdf.py:290 pretix/base/pdf.py:399 -#: pretix/base/pdf.py:423 pretix/base/pdf.py:447 pretix/base/pdf.py:471 -#: pretix/base/pdf.py:534 pretix/base/pdf.py:539 +#: pretix/base/pdf.py:264 pretix/base/pdf.py:290 pretix/base/pdf.py:406 +#: pretix/base/pdf.py:430 pretix/base/pdf.py:454 pretix/base/pdf.py:478 +#: pretix/base/pdf.py:541 pretix/base/pdf.py:546 msgid "2017-05-31" msgstr "" @@ -7535,8 +7536,8 @@ msgstr "" msgid "Event admission date and time" msgstr "" -#: pretix/base/pdf.py:311 pretix/base/pdf.py:407 pretix/base/pdf.py:431 -#: pretix/base/pdf.py:455 pretix/base/pdf.py:479 pretix/base/pdf.py:528 +#: pretix/base/pdf.py:311 pretix/base/pdf.py:414 pretix/base/pdf.py:438 +#: pretix/base/pdf.py:462 pretix/base/pdf.py:486 pretix/base/pdf.py:535 msgid "2017-05-31 19:00" msgstr "" @@ -7544,8 +7545,8 @@ msgstr "" msgid "Event admission time" msgstr "" -#: pretix/base/pdf.py:319 pretix/base/pdf.py:415 pretix/base/pdf.py:439 -#: pretix/base/pdf.py:463 pretix/base/pdf.py:487 +#: pretix/base/pdf.py:319 pretix/base/pdf.py:422 pretix/base/pdf.py:446 +#: pretix/base/pdf.py:470 pretix/base/pdf.py:494 msgid "19:00" msgstr "" @@ -7553,7 +7554,7 @@ msgstr "" msgid "Event location" msgstr "" -#: pretix/base/pdf.py:327 pretix/base/settings.py:1333 +#: pretix/base/pdf.py:327 pretix/base/settings.py:1335 msgid "Random City" msgstr "" @@ -7565,7 +7566,7 @@ msgstr "" msgid "12345" msgstr "" -#: pretix/base/pdf.py:362 pretix/base/services/invoices.py:597 +#: pretix/base/pdf.py:362 pretix/base/services/invoices.py:611 msgid "Sample city" msgstr "" @@ -7585,161 +7586,165 @@ msgstr "" msgid "List of Add-Ons" msgstr "" -#: pretix/base/pdf.py:377 +#: pretix/base/pdf.py:377 pretix/base/pdf.py:384 msgid "" "Add-on 1\n" "2x Add-on 2" msgstr "" -#: pretix/base/pdf.py:383 pretix/control/forms/filter.py:1537 +#: pretix/base/pdf.py:383 +msgid "List of Checked-In Add-Ons" +msgstr "" + +#: pretix/base/pdf.py:390 pretix/control/forms/filter.py:1537 #: pretix/control/forms/filter.py:1539 #: pretix/control/templates/pretixcontrol/organizers/index.html:42 msgid "Organizer name" msgstr "" -#: pretix/base/pdf.py:384 +#: pretix/base/pdf.py:391 msgid "Event organizer company" msgstr "" -#: pretix/base/pdf.py:388 +#: pretix/base/pdf.py:395 msgid "Organizer info text" msgstr "" -#: pretix/base/pdf.py:389 +#: pretix/base/pdf.py:396 msgid "Event organizer info text" msgstr "" -#: pretix/base/pdf.py:393 pretix/base/pdf.py:394 +#: pretix/base/pdf.py:400 pretix/base/pdf.py:401 msgid "Event info text" msgstr "" -#: pretix/base/pdf.py:398 +#: pretix/base/pdf.py:405 msgid "Printing date" msgstr "" -#: pretix/base/pdf.py:406 +#: pretix/base/pdf.py:413 msgid "Printing date and time" msgstr "" -#: pretix/base/pdf.py:414 +#: pretix/base/pdf.py:421 msgid "Printing time" msgstr "" -#: pretix/base/pdf.py:422 pretix/control/forms/item.py:741 +#: pretix/base/pdf.py:429 pretix/control/forms/item.py:741 msgid "Purchase date" msgstr "" -#: pretix/base/pdf.py:430 +#: pretix/base/pdf.py:437 msgid "Purchase date and time" msgstr "" -#: pretix/base/pdf.py:438 +#: pretix/base/pdf.py:445 msgid "Purchase time" msgstr "" -#: pretix/base/pdf.py:446 +#: pretix/base/pdf.py:453 msgid "Validity start date" msgstr "" -#: pretix/base/pdf.py:454 +#: pretix/base/pdf.py:461 msgid "Validity start date and time" msgstr "" -#: pretix/base/pdf.py:462 +#: pretix/base/pdf.py:469 msgid "Validity start time" msgstr "" -#: pretix/base/pdf.py:470 +#: pretix/base/pdf.py:477 msgid "Validity end date" msgstr "" -#: pretix/base/pdf.py:478 +#: pretix/base/pdf.py:485 msgid "Validity end date and time" msgstr "" -#: pretix/base/pdf.py:486 +#: pretix/base/pdf.py:493 msgid "Validity end time" msgstr "" -#: pretix/base/pdf.py:494 +#: pretix/base/pdf.py:501 msgid "Program times: date and time" msgstr "" -#: pretix/base/pdf.py:496 +#: pretix/base/pdf.py:503 msgid "" "2017-05-31 10:00 – 12:00\n" "2017-05-31 14:00 – 16:00\n" "2017-05-31 14:00 – 2017-06-01 14:00" msgstr "" -#: pretix/base/pdf.py:500 +#: pretix/base/pdf.py:507 msgid "Reusable Medium ID" msgstr "" -#: pretix/base/pdf.py:505 +#: pretix/base/pdf.py:512 msgid "Seat: Full name" msgstr "" -#: pretix/base/pdf.py:506 +#: pretix/base/pdf.py:513 msgid "Ground floor, Row 3, Seat 4" msgstr "" -#: pretix/base/pdf.py:508 pretix/base/pdf.py:514 -#: pretix/control/forms/orders.py:344 +#: pretix/base/pdf.py:515 pretix/base/pdf.py:521 +#: pretix/control/forms/orders.py:348 msgid "General admission" msgstr "" -#: pretix/base/pdf.py:511 +#: pretix/base/pdf.py:518 msgid "Seat: zone" msgstr "" -#: pretix/base/pdf.py:512 +#: pretix/base/pdf.py:519 msgid "Ground floor" msgstr "" -#: pretix/base/pdf.py:517 +#: pretix/base/pdf.py:524 msgid "Seat: row" msgstr "" -#: pretix/base/pdf.py:522 +#: pretix/base/pdf.py:529 msgid "Seat: seat number" msgstr "" -#: pretix/base/pdf.py:527 +#: pretix/base/pdf.py:534 msgid "Date and time of first scan" msgstr "" -#: pretix/base/pdf.py:533 +#: pretix/base/pdf.py:540 msgid "Gift card: Issuance date" msgstr "" -#: pretix/base/pdf.py:538 +#: pretix/base/pdf.py:545 msgid "Gift card: Expiration date" msgstr "" -#: pretix/base/pdf.py:579 pretix/base/pdf.py:617 pretix/base/pdf.py:623 +#: pretix/base/pdf.py:586 pretix/base/pdf.py:624 pretix/base/pdf.py:630 #: pretix/plugins/badges/exporters.py:504 #: pretix/plugins/ticketoutputpdf/exporters.py:102 #, python-brace-format msgid "Question: {question}" msgstr "" -#: pretix/base/pdf.py:618 pretix/base/pdf.py:624 +#: pretix/base/pdf.py:625 pretix/base/pdf.py:631 #, python-brace-format msgid "" msgstr "" -#: pretix/base/pdf.py:665 +#: pretix/base/pdf.py:672 msgid "Attendee name for salutation" msgstr "" -#: pretix/base/pdf.py:666 pretix/base/pdf.py:689 +#: pretix/base/pdf.py:673 pretix/base/pdf.py:696 #: pretix/base/services/placeholders.py:732 #: pretix/control/forms/organizer.py:799 msgid "Mr Doe" msgstr "" -#: pretix/base/pdf.py:672 pretix/base/pdf.py:679 +#: pretix/base/pdf.py:679 pretix/base/pdf.py:686 #: pretix/plugins/badges/exporters.py:501 #: pretix/plugins/checkinlists/exporters.py:125 #: pretix/plugins/checkinlists/exporters.py:499 @@ -7748,16 +7753,16 @@ msgstr "" msgid "Attendee name: {part}" msgstr "" -#: pretix/base/pdf.py:688 +#: pretix/base/pdf.py:695 msgid "Invoice address name for salutation" msgstr "" -#: pretix/base/pdf.py:695 +#: pretix/base/pdf.py:702 #, python-brace-format msgid "Invoice address name: {part}" msgstr "" -#: pretix/base/pdf.py:1328 +#: pretix/base/pdf.py:1339 #, python-brace-format msgid "Your layout file is not a valid layout. Error message: {}" msgstr "" @@ -8117,7 +8122,7 @@ msgstr[1] "" #: pretix/base/services/cart.py:152 pretix/base/services/orders.py:164 #: pretix/presale/templates/pretixpresale/event/index.html:170 -#: pretix/presale/views/waiting.py:145 pretix/presale/views/widget.py:813 +#: pretix/presale/views/waiting.py:150 pretix/presale/views/widget.py:811 msgid "The booking period for this event has not yet started." msgstr "" @@ -8496,36 +8501,40 @@ msgstr "" msgid "Czech National Bank" msgstr "" -#: pretix/base/services/export.py:94 pretix/base/services/export.py:154 +#: pretix/base/services/currencies.py:41 +msgid "National Bank of Poland" +msgstr "" + +#: pretix/base/services/export.py:95 pretix/base/services/export.py:155 msgid "" "Export not found or you do not have sufficient permission to perform this " "export." msgstr "" -#: pretix/base/services/export.py:107 pretix/base/services/export.py:179 -#: pretix/base/services/export.py:357 +#: pretix/base/services/export.py:108 pretix/base/services/export.py:180 +#: pretix/base/services/export.py:373 msgid "Your export did not contain any data." msgstr "" -#: pretix/base/services/export.py:327 +#: pretix/base/services/export.py:343 msgid "Export failed" msgstr "" -#: pretix/base/services/export.py:344 +#: pretix/base/services/export.py:360 msgid "Permission denied." msgstr "" -#: pretix/base/services/export.py:363 +#: pretix/base/services/export.py:379 msgid "Your exported data exceeded the size limit for scheduled exports." msgstr "" -#: pretix/base/services/invoices.py:117 +#: pretix/base/services/invoices.py:118 #, python-brace-format msgctxt "invoice" msgid "Please complete your payment before {expire_date}." msgstr "" -#: pretix/base/services/invoices.py:129 +#: pretix/base/services/invoices.py:130 #, python-brace-format msgctxt "invoice" msgid "" @@ -8536,51 +8545,51 @@ msgid "" "{country}" msgstr "" -#: pretix/base/services/invoices.py:239 pretix/base/services/invoices.py:282 +#: pretix/base/services/invoices.py:253 pretix/base/services/invoices.py:296 #, python-brace-format msgctxt "invoice" msgid "Event location: {location}" msgstr "" -#: pretix/base/services/invoices.py:255 +#: pretix/base/services/invoices.py:269 #, python-brace-format msgctxt "invoice" msgid "Attendee: {name}" msgstr "" -#: pretix/base/services/invoices.py:279 pretix/plugins/reports/exporters.py:308 +#: pretix/base/services/invoices.py:293 pretix/plugins/reports/exporters.py:308 #, python-brace-format msgctxt "subevent" msgid "Date: {}" msgstr "" -#: pretix/base/services/invoices.py:587 +#: pretix/base/services/invoices.py:601 msgid "A payment provider specific text might appear here." msgstr "" -#: pretix/base/services/invoices.py:595 +#: pretix/base/services/invoices.py:609 msgid "214th Example Street" msgstr "" -#: pretix/base/services/invoices.py:596 +#: pretix/base/services/invoices.py:610 msgid "012345" msgstr "" -#: pretix/base/services/invoices.py:613 +#: pretix/base/services/invoices.py:627 #, python-brace-format msgid "Sample product {}" msgstr "" -#: pretix/base/services/invoices.py:623 +#: pretix/base/services/invoices.py:637 msgid "Sample product A" msgstr "" -#: pretix/base/services/invoices.py:683 +#: pretix/base/services/invoices.py:697 #, python-brace-format msgid "New invoice: {number}" msgstr "" -#: pretix/base/services/invoices.py:685 +#: pretix/base/services/invoices.py:699 #, python-brace-format msgid "" "Hello,\n" @@ -8966,14 +8975,14 @@ msgid "" "card." msgstr "" -#: pretix/base/services/orders.py:2450 pretix/base/services/orders.py:2477 +#: pretix/base/services/orders.py:2462 pretix/base/services/orders.py:2489 #, python-brace-format msgid "" "A position can not be canceled since the gift card {card} purchased in this " "order has already been redeemed." msgstr "" -#: pretix/base/services/orders.py:3253 +#: pretix/base/services/orders.py:3272 msgid "" "There was an error while trying to send the money back to you. Please " "contact the event organizer for further information." @@ -9364,44 +9373,50 @@ msgstr "" msgid "Show exchange rates" msgstr "" -#: pretix/base/settings.py:573 pretix/base/settings.py:581 +#: pretix/base/settings.py:573 pretix/base/settings.py:582 #: pretix/control/forms/item.py:629 msgid "Never" msgstr "" -#: pretix/base/settings.py:574 pretix/base/settings.py:582 +#: pretix/base/settings.py:574 pretix/base/settings.py:583 msgid "" "Based on European Central Bank daily rates, whenever the invoice recipient " "is in an EU country that uses a different currency." msgstr "" -#: pretix/base/settings.py:576 pretix/base/settings.py:584 +#: pretix/base/settings.py:576 pretix/base/settings.py:585 msgid "" "Based on Czech National Bank daily rates, whenever the invoice amount is not " "in CZK." msgstr "" -#: pretix/base/settings.py:595 +#: pretix/base/settings.py:577 pretix/base/settings.py:586 +msgid "" +"Based on National Bank of Poland daily rates, whenever the invoice amount is " +"not in PLN." +msgstr "" + +#: pretix/base/settings.py:597 msgid "Require invoice address" msgstr "" -#: pretix/base/settings.py:606 +#: pretix/base/settings.py:608 msgid "Require a business address" msgstr "" -#: pretix/base/settings.py:607 +#: pretix/base/settings.py:609 msgid "This will require users to enter a company name." msgstr "" -#: pretix/base/settings.py:618 +#: pretix/base/settings.py:620 msgid "Ask for beneficiary" msgstr "" -#: pretix/base/settings.py:629 +#: pretix/base/settings.py:631 msgid "Custom recipient field label" msgstr "" -#: pretix/base/settings.py:631 +#: pretix/base/settings.py:633 msgid "" "If you want to add a custom text field, e.g. for a country-specific " "registration number, to your invoice address form, please fill in the label " @@ -9410,100 +9425,100 @@ msgid "" "on the invoice below the headline. The field will not be required." msgstr "" -#: pretix/base/settings.py:645 +#: pretix/base/settings.py:647 msgid "Custom recipient field help text" msgstr "" -#: pretix/base/settings.py:647 +#: pretix/base/settings.py:649 msgid "" "If you use the custom recipient field, you can specify a help text which " "will be displayed underneath the field. It will not be displayed on the " "invoice." msgstr "" -#: pretix/base/settings.py:658 +#: pretix/base/settings.py:660 msgid "Ask for VAT ID" msgstr "" -#: pretix/base/settings.py:660 +#: pretix/base/settings.py:662 #, python-brace-format msgid "" "Only works if an invoice address is asked for. VAT ID is only requested from " "business customers in the following countries: {countries}." msgstr "" -#: pretix/base/settings.py:680 +#: pretix/base/settings.py:682 msgid "Require VAT ID in" msgstr "" -#: pretix/base/settings.py:686 +#: pretix/base/settings.py:688 msgid "" "VAT ID is optional by default, because not all businesses are assigned a VAT " "ID in all countries. VAT ID will be required for all business addresses in " "the selected countries." msgstr "" -#: pretix/base/settings.py:702 +#: pretix/base/settings.py:704 msgid "Invoice address explanation" msgstr "" -#: pretix/base/settings.py:705 +#: pretix/base/settings.py:707 msgid "This text will be shown above the invoice address form during checkout." msgstr "" -#: pretix/base/settings.py:715 +#: pretix/base/settings.py:717 msgid "Show paid amount on partially paid invoices" msgstr "" -#: pretix/base/settings.py:716 +#: pretix/base/settings.py:718 msgid "" "If an invoice has already been paid partially, this option will add the paid " "and pending amount to the invoice." msgstr "" -#: pretix/base/settings.py:727 +#: pretix/base/settings.py:729 msgid "Show free products on invoices" msgstr "" -#: pretix/base/settings.py:728 +#: pretix/base/settings.py:730 msgid "" "Note that invoices will never be generated for orders that contain only free " "products." msgstr "" -#: pretix/base/settings.py:739 +#: pretix/base/settings.py:741 msgid "Show expiration date of order" msgstr "" -#: pretix/base/settings.py:740 +#: pretix/base/settings.py:742 msgid "" "The expiration date will not be shown if the invoice is generated after the " "order is paid." msgstr "" -#: pretix/base/settings.py:751 +#: pretix/base/settings.py:753 msgid "Minimum length of invoice number after prefix" msgstr "" -#: pretix/base/settings.py:752 +#: pretix/base/settings.py:754 msgid "" "The part of your invoice number after your prefix will be filled up with " "leading zeros up to this length, e.g. INV-001 or INV-00001." msgstr "" -#: pretix/base/settings.py:765 +#: pretix/base/settings.py:767 msgid "Generate invoices with consecutive numbers" msgstr "" -#: pretix/base/settings.py:766 +#: pretix/base/settings.py:768 msgid "If deactivated, the order code will be used in the invoice number." msgstr "" -#: pretix/base/settings.py:776 +#: pretix/base/settings.py:778 msgid "Invoice number prefix" msgstr "" -#: pretix/base/settings.py:777 +#: pretix/base/settings.py:779 msgid "" "This will be prepended to invoice numbers. If you leave this field empty, " "your event slug will be used followed by a dash. Attention: If multiple " @@ -9514,97 +9529,97 @@ msgid "" "invoice, or %m and %d for the day of month." msgstr "" -#: pretix/base/settings.py:789 pretix/base/settings.py:813 +#: pretix/base/settings.py:791 pretix/base/settings.py:815 #, python-brace-format msgid "Please only use the characters {allowed} in this field." msgstr "" -#: pretix/base/settings.py:804 +#: pretix/base/settings.py:806 msgid "Invoice number prefix for cancellations" msgstr "" -#: pretix/base/settings.py:805 +#: pretix/base/settings.py:807 msgid "" "This will be prepended to invoice numbers of cancellations. If you leave " "this field empty, the same numbering scheme will be used that you configured " "for regular invoices." msgstr "" -#: pretix/base/settings.py:828 +#: pretix/base/settings.py:830 msgid "Highlight order code to make it stand out visibly" msgstr "" -#: pretix/base/settings.py:829 pretix/base/settings.py:841 +#: pretix/base/settings.py:831 pretix/base/settings.py:843 msgid "Only respected by some invoice renderers." msgstr "" -#: pretix/base/settings.py:840 pretix/base/settings.py:3174 +#: pretix/base/settings.py:842 pretix/base/settings.py:3176 #: pretix/control/templates/pretixcontrol/pdf/index.html:441 msgid "Font" msgstr "" -#: pretix/base/settings.py:867 +#: pretix/base/settings.py:869 msgid "Length of ticket codes" msgstr "" -#: pretix/base/settings.py:894 +#: pretix/base/settings.py:896 msgid "Reservation period" msgstr "" -#: pretix/base/settings.py:896 +#: pretix/base/settings.py:898 msgid "" "The number of minutes the items in a user's cart are reserved for this user." msgstr "" -#: pretix/base/settings.py:905 +#: pretix/base/settings.py:907 msgid "" "Directly redirect to check-out after a product has been added to the cart." msgstr "" -#: pretix/base/settings.py:914 +#: pretix/base/settings.py:916 msgid "End of presale text" msgstr "" -#: pretix/base/settings.py:917 +#: pretix/base/settings.py:919 msgid "" "This text will be shown above the ticket shop once the designated sales " "timeframe for this event is over. You can use it to describe other options " "to get a ticket, such as a box office." msgstr "" -#: pretix/base/settings.py:932 +#: pretix/base/settings.py:934 msgid "Guidance text" msgstr "" -#: pretix/base/settings.py:933 +#: pretix/base/settings.py:935 msgid "" "This text will be shown above the payment options. You can explain the " "choices to the user here, if you want." msgstr "" -#: pretix/base/settings.py:944 pretix/base/settings.py:954 +#: pretix/base/settings.py:946 pretix/base/settings.py:956 msgid "in days" msgstr "" -#: pretix/base/settings.py:945 pretix/base/settings.py:955 +#: pretix/base/settings.py:947 pretix/base/settings.py:957 msgid "in minutes" msgstr "" -#: pretix/base/settings.py:950 +#: pretix/base/settings.py:952 msgid "Set payment term" msgstr "" -#: pretix/base/settings.py:957 +#: pretix/base/settings.py:959 msgid "" "If using days, the order will expire at the end of the last day. Using " "minutes is more exact, but should only be used for real-time payment methods." msgstr "" -#: pretix/base/settings.py:968 +#: pretix/base/settings.py:970 msgid "Payment term in days" msgstr "" -#: pretix/base/settings.py:975 +#: pretix/base/settings.py:977 msgid "" "The number of days after placing an order the user has to pay to preserve " "their reservation. If you use slow payment methods like bank transfer, we " @@ -9612,11 +9627,11 @@ msgid "" "still setting two or three days to allow people to retry failed payments." msgstr "" -#: pretix/base/settings.py:994 +#: pretix/base/settings.py:996 msgid "Only end payment terms on weekdays" msgstr "" -#: pretix/base/settings.py:995 +#: pretix/base/settings.py:997 msgid "" "If this is activated and the payment term of any order ends on a Saturday or " "Sunday, it will be moved to the next Monday instead. This is required in " @@ -9624,11 +9639,11 @@ msgid "" "configured below." msgstr "" -#: pretix/base/settings.py:1012 +#: pretix/base/settings.py:1014 msgid "Payment term in minutes" msgstr "" -#: pretix/base/settings.py:1013 +#: pretix/base/settings.py:1015 msgid "" "The number of minutes after placing an order the user has to pay to preserve " "their reservation. Only use this if you exclusively offer real-time payment " @@ -9636,33 +9651,33 @@ msgid "" "be a few minutes longer before the order is marked as expired." msgstr "" -#: pretix/base/settings.py:1037 +#: pretix/base/settings.py:1039 msgid "Last date of payments" msgstr "" -#: pretix/base/settings.py:1038 +#: pretix/base/settings.py:1040 msgid "" "The last date any payments are accepted. This has precedence over the terms " "configured above. If you use the event series feature and an order contains " "tickets for multiple dates, the earliest date will be used." msgstr "" -#: pretix/base/settings.py:1050 +#: pretix/base/settings.py:1052 msgid "Automatically expire unpaid orders" msgstr "" -#: pretix/base/settings.py:1051 +#: pretix/base/settings.py:1053 msgid "" "If checked, all unpaid orders will automatically go from 'pending' to " "'expired' after the end of their payment deadline. This means that those " "tickets go back to the pool and can be ordered by other people." msgstr "" -#: pretix/base/settings.py:1063 +#: pretix/base/settings.py:1065 msgid "Expiration delay" msgstr "" -#: pretix/base/settings.py:1064 +#: pretix/base/settings.py:1066 msgid "" "The order will only actually expire this many days after the expiration date " "communicated to the customer. If you select \"Only end payment terms on " @@ -9671,18 +9686,18 @@ msgid "" "enforced." msgstr "" -#: pretix/base/settings.py:1086 +#: pretix/base/settings.py:1088 msgid "Hide \"payment pending\" state on customer-facing pages" msgstr "" -#: pretix/base/settings.py:1087 +#: pretix/base/settings.py:1089 msgid "" "The payment instructions panel will still be shown to the primary customer, " "but no indication of missing payment will be visible on the ticket pages of " "attendees who did not buy the ticket themselves." msgstr "" -#: pretix/base/settings.py:1105 +#: pretix/base/settings.py:1107 msgid "" "If you have a gift card, please enter the gift card code here. If the gift " "card does not have enough credit to pay for the full order, you will be " @@ -9690,204 +9705,204 @@ msgid "" "a different payment method for the difference." msgstr "" -#: pretix/base/settings.py:1124 +#: pretix/base/settings.py:1126 msgid "Accept late payments" msgstr "" -#: pretix/base/settings.py:1125 +#: pretix/base/settings.py:1127 msgid "" "Accept payments for orders even when they are in 'expired' state as long as " "enough capacity is available. No payments will ever be accepted after the " "'Last date of payments' configured above." msgstr "" -#: pretix/base/settings.py:1136 +#: pretix/base/settings.py:1138 msgid "Show start date" msgstr "" -#: pretix/base/settings.py:1137 +#: pretix/base/settings.py:1139 msgid "Show the presale start date before presale has started." msgstr "" -#: pretix/base/settings.py:1148 pretix/base/settings.py:1157 -#: pretix/base/settings.py:1171 pretix/base/settings.py:1180 +#: pretix/base/settings.py:1150 pretix/base/settings.py:1159 +#: pretix/base/settings.py:1173 pretix/base/settings.py:1182 msgid "Use default tax rate" msgstr "" -#: pretix/base/settings.py:1149 pretix/base/settings.py:1158 -#: pretix/base/settings.py:1169 pretix/base/settings.py:1178 +#: pretix/base/settings.py:1151 pretix/base/settings.py:1160 +#: pretix/base/settings.py:1171 pretix/base/settings.py:1180 msgid "Charge no taxes" msgstr "" -#: pretix/base/settings.py:1154 +#: pretix/base/settings.py:1156 msgid "Tax handling on payment fees" msgstr "" -#: pretix/base/settings.py:1170 pretix/base/settings.py:1179 +#: pretix/base/settings.py:1172 pretix/base/settings.py:1181 msgid "Use same taxes as order positions (split according to net prices)" msgstr "" -#: pretix/base/settings.py:1175 +#: pretix/base/settings.py:1177 msgid "Tax handling on cancellation fees" msgstr "" -#: pretix/base/settings.py:1191 pretix/base/settings.py:1204 +#: pretix/base/settings.py:1193 pretix/base/settings.py:1206 msgid "Do not generate invoices" msgstr "" -#: pretix/base/settings.py:1192 pretix/base/settings.py:1209 +#: pretix/base/settings.py:1194 pretix/base/settings.py:1211 msgid "Only manually in admin panel" msgstr "" -#: pretix/base/settings.py:1193 pretix/base/settings.py:1207 +#: pretix/base/settings.py:1195 pretix/base/settings.py:1209 msgid "Automatically on user request" msgstr "" -#: pretix/base/settings.py:1194 pretix/base/settings.py:1208 +#: pretix/base/settings.py:1196 pretix/base/settings.py:1210 msgid "Automatically on user request for paid orders" msgstr "" -#: pretix/base/settings.py:1195 +#: pretix/base/settings.py:1197 msgid "Automatically for all created orders" msgstr "" -#: pretix/base/settings.py:1196 +#: pretix/base/settings.py:1198 msgid "Automatically on payment or when required by payment method" msgstr "" -#: pretix/base/settings.py:1201 +#: pretix/base/settings.py:1203 msgid "Generate invoices" msgstr "" -#: pretix/base/settings.py:1205 +#: pretix/base/settings.py:1207 msgid "Automatically after payment or when required by payment method" msgstr "" -#: pretix/base/settings.py:1206 +#: pretix/base/settings.py:1208 msgid "Automatically before payment for all created orders" msgstr "" -#: pretix/base/settings.py:1211 +#: pretix/base/settings.py:1213 msgid "Invoices will never be automatically generated for free orders." msgstr "" -#: pretix/base/settings.py:1221 pretix/base/settings.py:1233 +#: pretix/base/settings.py:1223 pretix/base/settings.py:1235 msgid "" "Automatic based on ticket-specific validity, membership validity, event " "series date, or event date" msgstr "" -#: pretix/base/settings.py:1222 pretix/base/settings.py:1234 +#: pretix/base/settings.py:1224 pretix/base/settings.py:1236 msgid "Automatic, but prefer invoice date over event date" msgstr "" -#: pretix/base/settings.py:1225 pretix/base/settings.py:1237 +#: pretix/base/settings.py:1227 pretix/base/settings.py:1239 msgid "Invoice date" msgstr "" -#: pretix/base/settings.py:1230 +#: pretix/base/settings.py:1232 msgid "Date of service" msgstr "" -#: pretix/base/settings.py:1239 +#: pretix/base/settings.py:1241 msgid "" "This controls what dates are shown on the invoice, but is especially " "important for electronic invoicing." msgstr "" -#: pretix/base/settings.py:1251 +#: pretix/base/settings.py:1253 msgid "Automatically cancel and reissue invoice on address changes" msgstr "" -#: pretix/base/settings.py:1252 +#: pretix/base/settings.py:1254 msgid "" "If customers change their invoice address on an existing order, the invoice " "will automatically be canceled and a new invoice will be issued. This " "setting does not affect changes made through the backend." msgstr "" -#: pretix/base/settings.py:1264 +#: pretix/base/settings.py:1266 msgid "Allow to update existing invoices" msgstr "" -#: pretix/base/settings.py:1265 +#: pretix/base/settings.py:1267 msgid "" "By default, invoices can never again be changed once they are issued. In " "most countries, we recommend to leave this option turned off and always " "issue a new invoice if a change needs to be made." msgstr "" -#: pretix/base/settings.py:1281 +#: pretix/base/settings.py:1283 msgid "Only issue invoices to business customers" msgstr "" -#: pretix/base/settings.py:1291 +#: pretix/base/settings.py:1293 msgid "Address line" msgstr "" -#: pretix/base/settings.py:1295 +#: pretix/base/settings.py:1297 msgid "Albert Einstein Road 52" msgstr "" -#: pretix/base/settings.py:1375 +#: pretix/base/settings.py:1377 msgid "Domestic tax ID" msgstr "" -#: pretix/base/settings.py:1376 +#: pretix/base/settings.py:1378 msgid "e.g. tax number in Germany, ABN in Australia, …" msgstr "" -#: pretix/base/settings.py:1387 +#: pretix/base/settings.py:1389 msgid "EU VAT ID" msgstr "" -#: pretix/base/settings.py:1402 +#: pretix/base/settings.py:1404 msgid "e.g. With this document, we sent you the invoice for your ticket order." msgstr "" -#: pretix/base/settings.py:1405 +#: pretix/base/settings.py:1407 msgid "Introductory text" msgstr "" -#: pretix/base/settings.py:1406 +#: pretix/base/settings.py:1408 msgid "Will be printed on every invoice above the invoice rows." msgstr "" -#: pretix/base/settings.py:1420 +#: pretix/base/settings.py:1422 msgid "" "e.g. Thank you for your purchase! You can find more information on the event " "at ..." msgstr "" -#: pretix/base/settings.py:1423 +#: pretix/base/settings.py:1425 msgid "Additional text" msgstr "" -#: pretix/base/settings.py:1424 +#: pretix/base/settings.py:1426 msgid "Will be printed on every invoice below the invoice total." msgstr "" -#: pretix/base/settings.py:1438 +#: pretix/base/settings.py:1440 msgid "" "e.g. your bank details, legal details like your VAT ID, registration " "numbers, etc." msgstr "" -#: pretix/base/settings.py:1441 +#: pretix/base/settings.py:1443 msgid "Footer" msgstr "" -#: pretix/base/settings.py:1442 +#: pretix/base/settings.py:1444 msgid "" "Will be printed centered and in a smaller font at the end of every invoice " "page." msgstr "" -#: pretix/base/settings.py:1457 +#: pretix/base/settings.py:1459 msgid "Attach invoices to emails" msgstr "" -#: pretix/base/settings.py:1458 +#: pretix/base/settings.py:1460 msgid "" "If invoices are automatically generated for all orders, they will be " "attached to the order confirmation mail. If they are automatically generated " @@ -9895,39 +9910,39 @@ msgid "" "are not automatically generated, they will not be attached to emails." msgstr "" -#: pretix/base/settings.py:1471 +#: pretix/base/settings.py:1473 msgid "Email address to receive a copy of each invoice" msgstr "" -#: pretix/base/settings.py:1472 +#: pretix/base/settings.py:1474 msgid "" "Each newly created invoice will be sent to this email address shortly after " "creation. You can use this for an automated import of invoices to your " "accounting system. The invoice will be the only attachment of the email." msgstr "" -#: pretix/base/settings.py:1487 +#: pretix/base/settings.py:1489 msgid "Show items outside presale period" msgstr "" -#: pretix/base/settings.py:1488 +#: pretix/base/settings.py:1490 msgid "" "Show item details before presale has started and after presale has ended" msgstr "" -#: pretix/base/settings.py:1508 +#: pretix/base/settings.py:1510 msgid "Available languages" msgstr "" -#: pretix/base/settings.py:1524 pretix/control/forms/event.py:151 +#: pretix/base/settings.py:1526 pretix/control/forms/event.py:151 msgid "Default language" msgstr "" -#: pretix/base/settings.py:1534 +#: pretix/base/settings.py:1536 msgid "Region" msgstr "" -#: pretix/base/settings.py:1535 +#: pretix/base/settings.py:1537 msgid "" "Will be used to determine date and time formatting as well as default " "country for customer addresses and phone numbers. For formatting, this takes " @@ -9935,11 +9950,11 @@ msgid "" "languages used in different regions globally (like English)." msgstr "" -#: pretix/base/settings.py:1547 +#: pretix/base/settings.py:1549 msgid "This shop represents an event" msgstr "" -#: pretix/base/settings.py:1549 +#: pretix/base/settings.py:1551 msgid "" "Uncheck this box if you are only selling something that has no specific " "date, such as gift cards or a ticket that can be used any time. The system " @@ -9948,45 +9963,45 @@ msgid "" "may still show up in other places." msgstr "" -#: pretix/base/settings.py:1562 +#: pretix/base/settings.py:1564 msgid "Show event end date" msgstr "" -#: pretix/base/settings.py:1563 +#: pretix/base/settings.py:1565 msgid "If disabled, only event's start date will be displayed to the public." msgstr "" -#: pretix/base/settings.py:1572 +#: pretix/base/settings.py:1574 msgid "Show dates with time" msgstr "" -#: pretix/base/settings.py:1573 +#: pretix/base/settings.py:1575 msgid "" "If disabled, the event's start and end date will be displayed without the " "time of day." msgstr "" -#: pretix/base/settings.py:1582 +#: pretix/base/settings.py:1584 msgid "Hide all products that are sold out" msgstr "" -#: pretix/base/settings.py:1592 pretix/control/forms/event.py:1870 +#: pretix/base/settings.py:1594 pretix/control/forms/event.py:1870 msgid "Publicly show how many tickets of a certain type are still available." msgstr "" -#: pretix/base/settings.py:1601 +#: pretix/base/settings.py:1603 msgid "Ask search engines not to index the ticket shop" msgstr "" -#: pretix/base/settings.py:1610 +#: pretix/base/settings.py:1612 msgid "Show variations of a product expanded by default" msgstr "" -#: pretix/base/settings.py:1619 +#: pretix/base/settings.py:1621 msgid "Enable waiting list" msgstr "" -#: pretix/base/settings.py:1620 pretix/control/forms/event.py:1875 +#: pretix/base/settings.py:1622 pretix/control/forms/event.py:1875 msgid "" "Once a ticket is sold out, people can add themselves to a waiting list. As " "soon as a ticket becomes available again, it will be reserved for the first " @@ -9994,11 +10009,11 @@ msgid "" "notification with a voucher that can be used to buy a ticket." msgstr "" -#: pretix/base/settings.py:1631 +#: pretix/base/settings.py:1633 msgid "Automatic waiting list assignments" msgstr "" -#: pretix/base/settings.py:1632 +#: pretix/base/settings.py:1634 msgid "" "If ticket capacity becomes free, automatically create a voucher and send it " "to the first person on the waiting list for that product. If this is not " @@ -10007,22 +10022,22 @@ msgid "" "enabled, tickets will still be sent out." msgstr "" -#: pretix/base/settings.py:1648 +#: pretix/base/settings.py:1650 msgid "Waiting list response time" msgstr "" -#: pretix/base/settings.py:1651 +#: pretix/base/settings.py:1653 msgid "" "If a ticket voucher is sent to a person on the waiting list, it has to be " "redeemed within this number of hours until it expires and can be re-assigned " "to the next person on the list." msgstr "" -#: pretix/base/settings.py:1662 +#: pretix/base/settings.py:1664 msgid "Disable waiting list" msgstr "" -#: pretix/base/settings.py:1663 +#: pretix/base/settings.py:1665 msgid "" "The waiting list will be fully disabled after this date. This means that " "nobody can add themselves to the waiting list any more, but also that " @@ -10031,53 +10046,53 @@ msgid "" "remain active." msgstr "" -#: pretix/base/settings.py:1675 +#: pretix/base/settings.py:1677 msgid "Ask for a name" msgstr "" -#: pretix/base/settings.py:1676 +#: pretix/base/settings.py:1678 msgid "Ask for a name when signing up to the waiting list." msgstr "" -#: pretix/base/settings.py:1685 +#: pretix/base/settings.py:1687 msgid "Require name" msgstr "" -#: pretix/base/settings.py:1686 +#: pretix/base/settings.py:1688 msgid "Require a name when signing up to the waiting list.." msgstr "" -#: pretix/base/settings.py:1696 +#: pretix/base/settings.py:1698 msgid "Ask for a phone number" msgstr "" -#: pretix/base/settings.py:1697 +#: pretix/base/settings.py:1699 msgid "Ask for a phone number when signing up to the waiting list." msgstr "" -#: pretix/base/settings.py:1706 +#: pretix/base/settings.py:1708 msgid "Require phone number" msgstr "" -#: pretix/base/settings.py:1707 +#: pretix/base/settings.py:1709 msgid "Require a phone number when signing up to the waiting list.." msgstr "" -#: pretix/base/settings.py:1717 +#: pretix/base/settings.py:1719 msgid "Phone number explanation" msgstr "" -#: pretix/base/settings.py:1720 +#: pretix/base/settings.py:1722 msgid "" "If you ask for a phone number, explain why you do so and what you will use " "the phone number for." msgstr "" -#: pretix/base/settings.py:1732 +#: pretix/base/settings.py:1734 msgid "Maximum number of entries per email address for the same product" msgstr "" -#: pretix/base/settings.py:1736 +#: pretix/base/settings.py:1738 msgid "" "With an increased limit, a customer may request more than one ticket for a " "specific product using the same, unique email address. However, regardless " @@ -10086,11 +10101,11 @@ msgid "" "ticket at a time." msgstr "" -#: pretix/base/settings.py:1748 +#: pretix/base/settings.py:1750 msgid "Show number of check-ins to customer" msgstr "" -#: pretix/base/settings.py:1749 +#: pretix/base/settings.py:1751 msgid "" "With this option enabled, your customers will be able to see how many times " "they entered the event. This is usually not necessary, but might be useful " @@ -10100,62 +10115,62 @@ msgid "" "check-in lists." msgstr "" -#: pretix/base/settings.py:1762 +#: pretix/base/settings.py:1764 msgid "Allow users to download tickets" msgstr "" -#: pretix/base/settings.py:1763 +#: pretix/base/settings.py:1765 msgid "If this is off, nobody can download a ticket." msgstr "" -#: pretix/base/settings.py:1772 +#: pretix/base/settings.py:1774 msgid "Download date" msgstr "" -#: pretix/base/settings.py:1773 +#: pretix/base/settings.py:1775 msgid "" "Ticket download will be offered after this date. If you use the event series " "feature and an order contains tickets for multiple event dates, download of " "all tickets will be available if at least one of the event dates allows it." msgstr "" -#: pretix/base/settings.py:1784 +#: pretix/base/settings.py:1786 msgid "Generate tickets for add-on products and bundled products" msgstr "" -#: pretix/base/settings.py:1785 +#: pretix/base/settings.py:1787 msgid "" "By default, tickets are only issued for products selected individually, not " "for add-on products or bundled products. With this option, a separate ticket " "is issued for every add-on product or bundled product as well." msgstr "" -#: pretix/base/settings.py:1798 +#: pretix/base/settings.py:1800 msgid "Generate tickets for all products" msgstr "" -#: pretix/base/settings.py:1799 +#: pretix/base/settings.py:1801 msgid "" "If turned off, tickets are only issued for products that are marked as an " "\"admission ticket\"in the product settings. You can also turn off ticket " "issuing in every product separately." msgstr "" -#: pretix/base/settings.py:1811 +#: pretix/base/settings.py:1813 msgid "Generate tickets for pending orders" msgstr "" -#: pretix/base/settings.py:1812 +#: pretix/base/settings.py:1814 msgid "" "If turned off, ticket downloads are only possible after an order has been " "marked as paid." msgstr "" -#: pretix/base/settings.py:1823 +#: pretix/base/settings.py:1825 msgid "Do not issue ticket before email address is validated" msgstr "" -#: pretix/base/settings.py:1824 +#: pretix/base/settings.py:1826 msgid "" "If turned on, tickets will not be offered for download directly after " "purchase. They will be attached to the payment confirmation email (if the " @@ -10164,11 +10179,11 @@ msgid "" "orders performed through other sales channels." msgstr "" -#: pretix/base/settings.py:1840 +#: pretix/base/settings.py:1842 msgid "Low availability threshold" msgstr "" -#: pretix/base/settings.py:1841 +#: pretix/base/settings.py:1843 msgid "" "If the availability of tickets falls below this percentage, the event (or a " "date, if it is an event series) will be highlighted to have low availability " @@ -10176,95 +10191,95 @@ msgid "" "availability will not be shown publicly." msgstr "" -#: pretix/base/settings.py:1855 +#: pretix/base/settings.py:1857 msgid "Show availability in event overviews" msgstr "" -#: pretix/base/settings.py:1856 +#: pretix/base/settings.py:1858 msgid "" "If checked, the list of events will show if events are sold out. This might " "make for longer page loading times if you have lots of events and the shown " "status might be out of date for up to two minutes." msgstr "" -#: pretix/base/settings.py:1869 pretix/base/settings.py:1877 +#: pretix/base/settings.py:1871 pretix/base/settings.py:1879 #: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:8 msgid "List" msgstr "" -#: pretix/base/settings.py:1870 pretix/base/settings.py:1878 +#: pretix/base/settings.py:1872 pretix/base/settings.py:1880 msgid "Week calendar" msgstr "" -#: pretix/base/settings.py:1871 pretix/base/settings.py:1879 +#: pretix/base/settings.py:1873 pretix/base/settings.py:1881 msgid "Month calendar" msgstr "" -#: pretix/base/settings.py:1875 +#: pretix/base/settings.py:1877 msgid "Default overview style" msgstr "" -#: pretix/base/settings.py:1881 +#: pretix/base/settings.py:1883 msgid "" "If your event series has more than 50 dates in the future, only the month or " "week calendar can be used." msgstr "" -#: pretix/base/settings.py:1890 +#: pretix/base/settings.py:1892 msgid "Show filter options for calendar or list view" msgstr "" -#: pretix/base/settings.py:1891 +#: pretix/base/settings.py:1893 msgid "" "You can set up possible filters as meta properties in your organizer " "settings." msgstr "" -#: pretix/base/settings.py:1900 +#: pretix/base/settings.py:1902 msgid "Hide all unavailable dates from calendar or list views" msgstr "" -#: pretix/base/settings.py:1901 pretix/base/settings.py:1912 +#: pretix/base/settings.py:1903 pretix/base/settings.py:1914 msgid "" "This option currently only affects the calendar of this event series, not " "the organizer-wide calendar." msgstr "" -#: pretix/base/settings.py:1911 +#: pretix/base/settings.py:1913 msgid "Hide all past dates from calendar" msgstr "" -#: pretix/base/settings.py:1923 pretix/base/settings.py:1932 +#: pretix/base/settings.py:1925 pretix/base/settings.py:1934 msgid "No modifications after order was submitted" msgstr "" -#: pretix/base/settings.py:1924 pretix/base/settings.py:1933 +#: pretix/base/settings.py:1926 pretix/base/settings.py:1935 msgid "Only the person who ordered can make changes" msgstr "" -#: pretix/base/settings.py:1925 pretix/base/settings.py:1934 +#: pretix/base/settings.py:1927 pretix/base/settings.py:1936 msgid "Both the attendee and the person who ordered can make changes" msgstr "" -#: pretix/base/settings.py:1929 +#: pretix/base/settings.py:1931 msgid "Allow customers to modify their information" msgstr "" -#: pretix/base/settings.py:1944 +#: pretix/base/settings.py:1946 msgid "Allow customers to modify their information after they checked in." msgstr "" -#: pretix/base/settings.py:1945 +#: pretix/base/settings.py:1947 msgid "" "By default, no more modifications are possible for an order as soon as one " "of the tickets in the order has been checked in." msgstr "" -#: pretix/base/settings.py:1955 +#: pretix/base/settings.py:1957 msgid "Last date of modifications" msgstr "" -#: pretix/base/settings.py:1956 +#: pretix/base/settings.py:1958 msgid "" "The last date users can modify details of their orders, such as attendee " "names or answers to questions. If you use the event series feature and an " @@ -10272,53 +10287,53 @@ msgid "" "used." msgstr "" -#: pretix/base/settings.py:1967 +#: pretix/base/settings.py:1969 msgid "Customers can change the variation of the products they purchased" msgstr "" -#: pretix/base/settings.py:1976 +#: pretix/base/settings.py:1978 msgid "Customers can change their selected add-on products" msgstr "" -#: pretix/base/settings.py:1986 pretix/base/settings.py:1997 +#: pretix/base/settings.py:1988 pretix/base/settings.py:1999 msgid "" "Only allow changes if the resulting price is higher or equal than the " "previous price." msgstr "" -#: pretix/base/settings.py:1987 pretix/base/settings.py:1998 +#: pretix/base/settings.py:1989 pretix/base/settings.py:2000 msgid "" "Only allow changes if the resulting price is higher than the previous price." msgstr "" -#: pretix/base/settings.py:1988 pretix/base/settings.py:1999 +#: pretix/base/settings.py:1990 pretix/base/settings.py:2001 msgid "" "Only allow changes if the resulting price is equal to the previous price." msgstr "" -#: pretix/base/settings.py:1989 pretix/base/settings.py:2000 +#: pretix/base/settings.py:1991 pretix/base/settings.py:2002 msgid "" "Allow changes regardless of price, as long as no refund is required (i.e. " "the resulting price is not lower than what has already been paid)." msgstr "" -#: pretix/base/settings.py:1991 pretix/base/settings.py:2002 +#: pretix/base/settings.py:1993 pretix/base/settings.py:2004 msgid "Allow changes regardless of price, even if this results in a refund." msgstr "" -#: pretix/base/settings.py:1995 +#: pretix/base/settings.py:1997 msgid "Requirement for changed prices" msgstr "" -#: pretix/base/settings.py:2013 +#: pretix/base/settings.py:2015 msgid "Do not allow changes after" msgstr "" -#: pretix/base/settings.py:2022 +#: pretix/base/settings.py:2024 msgid "Allow change even though the ticket has already been checked in" msgstr "" -#: pretix/base/settings.py:2023 +#: pretix/base/settings.py:2025 msgid "" "By default, order changes are disabled after any ticket in the order has " "been checked in. If you check this box, this requirement is lifted. It is " @@ -10327,11 +10342,11 @@ msgid "" "limitation on price changes above." msgstr "" -#: pretix/base/settings.py:2035 +#: pretix/base/settings.py:2037 msgid "Allow individual attendees to change their ticket" msgstr "" -#: pretix/base/settings.py:2036 +#: pretix/base/settings.py:2038 msgid "" "By default, only the person who ordered the tickets can make any changes. If " "you check this box, individual attendees can also make changes. However, " @@ -10340,77 +10355,77 @@ msgid "" "customer." msgstr "" -#: pretix/base/settings.py:2048 +#: pretix/base/settings.py:2050 msgid "Customers can cancel their unpaid orders" msgstr "" -#: pretix/base/settings.py:2060 +#: pretix/base/settings.py:2062 msgid "Charge a fixed cancellation fee" msgstr "" -#: pretix/base/settings.py:2061 pretix/base/settings.py:2072 -#: pretix/base/settings.py:2086 +#: pretix/base/settings.py:2063 pretix/base/settings.py:2074 +#: pretix/base/settings.py:2088 msgid "" "Only affects orders pending payments, a cancellation fee for free orders is " "never charged. Note that it will be your responsibility to claim the " "cancellation fee from the user." msgstr "" -#: pretix/base/settings.py:2071 +#: pretix/base/settings.py:2073 msgid "Charge payment, shipping and service fees" msgstr "" -#: pretix/base/settings.py:2085 +#: pretix/base/settings.py:2087 msgid "Charge a percentual cancellation fee" msgstr "" -#: pretix/base/settings.py:2096 pretix/base/settings.py:2235 +#: pretix/base/settings.py:2098 pretix/base/settings.py:2237 msgid "Do not allow cancellations after" msgstr "" -#: pretix/base/settings.py:2105 +#: pretix/base/settings.py:2107 msgid "Customers can cancel their paid orders" msgstr "" -#: pretix/base/settings.py:2106 +#: pretix/base/settings.py:2108 msgid "" "Paid money will be automatically paid back if the payment method allows it. " "Otherwise, a manual refund will be created for you to process manually." msgstr "" -#: pretix/base/settings.py:2119 pretix/control/forms/orders.py:909 +#: pretix/base/settings.py:2121 pretix/control/forms/orders.py:917 msgid "Keep a fixed cancellation fee" msgstr "" -#: pretix/base/settings.py:2128 +#: pretix/base/settings.py:2130 msgid "Keep payment, shipping and service fees" msgstr "" -#: pretix/base/settings.py:2140 pretix/control/forms/orders.py:920 +#: pretix/base/settings.py:2142 pretix/control/forms/orders.py:928 msgid "Keep a percentual cancellation fee" msgstr "" -#: pretix/base/settings.py:2149 +#: pretix/base/settings.py:2151 msgid "Allow customers to voluntarily choose a lower refund" msgstr "" -#: pretix/base/settings.py:2150 +#: pretix/base/settings.py:2152 msgid "" "With this option enabled, your customers can choose to get a smaller refund " "to support you." msgstr "" -#: pretix/base/settings.py:2155 +#: pretix/base/settings.py:2157 msgid "" "However, if you want us to help keep the lights on here, please consider " "using the slider below to request a smaller refund. Thank you!" msgstr "" -#: pretix/base/settings.py:2162 +#: pretix/base/settings.py:2164 msgid "Voluntary lower refund explanation" msgstr "" -#: pretix/base/settings.py:2165 +#: pretix/base/settings.py:2167 msgid "" "This text will be shown in between the explanation of how the refunds work " "and the slider which your customers can use to choose the amount they would " @@ -10418,107 +10433,107 @@ msgid "" "help your organization." msgstr "" -#: pretix/base/settings.py:2180 +#: pretix/base/settings.py:2182 msgid "Step size for reduction amount" msgstr "" -#: pretix/base/settings.py:2181 +#: pretix/base/settings.py:2183 msgid "" "By default, customers can choose an arbitrary amount for you to keep. If you " "set this to e.g. 10, they will only be able to choose values in increments " "of 10." msgstr "" -#: pretix/base/settings.py:2191 +#: pretix/base/settings.py:2193 msgid "" "Customers can only request a cancellation that needs to be approved by the " "event organizer before the order is canceled and a refund is issued." msgstr "" -#: pretix/base/settings.py:2201 +#: pretix/base/settings.py:2203 msgid "" "Do not show the cancellation fee to users when they request cancellation." msgstr "" -#: pretix/base/settings.py:2210 pretix/base/settings.py:2220 +#: pretix/base/settings.py:2212 pretix/base/settings.py:2222 msgid "All refunds are issued to the original payment method" msgstr "" -#: pretix/base/settings.py:2211 pretix/base/settings.py:2221 +#: pretix/base/settings.py:2213 pretix/base/settings.py:2223 msgid "" "Customers can choose between a gift card and a refund to their payment method" msgstr "" -#: pretix/base/settings.py:2212 pretix/base/settings.py:2222 +#: pretix/base/settings.py:2214 pretix/base/settings.py:2224 msgid "All refunds are issued as gift cards" msgstr "" -#: pretix/base/settings.py:2213 pretix/base/settings.py:2223 +#: pretix/base/settings.py:2215 pretix/base/settings.py:2225 msgid "Do not handle refunds automatically at all" msgstr "" -#: pretix/base/settings.py:2218 +#: pretix/base/settings.py:2220 #: pretix/control/templates/pretixcontrol/order/index.html:149 msgid "Refund method" msgstr "" -#: pretix/base/settings.py:2244 pretix/base/settings.py:2257 +#: pretix/base/settings.py:2246 pretix/base/settings.py:2259 msgid "Terms of cancellation" msgstr "" -#: pretix/base/settings.py:2247 +#: pretix/base/settings.py:2249 msgid "" "This text will be shown when cancellation is allowed for a paid order. Leave " "empty if you want pretix to automatically generate the terms of cancellation " "based on your settings." msgstr "" -#: pretix/base/settings.py:2260 +#: pretix/base/settings.py:2262 msgid "" "This text will be shown when cancellation is allowed for an unpaid or free " "order. Leave empty if you want pretix to automatically generate the terms of " "cancellation based on your settings." msgstr "" -#: pretix/base/settings.py:2270 pretix/control/forms/event.py:1898 +#: pretix/base/settings.py:2272 pretix/control/forms/event.py:1898 msgid "Contact address" msgstr "" -#: pretix/base/settings.py:2271 pretix/control/forms/event.py:1900 +#: pretix/base/settings.py:2273 pretix/control/forms/event.py:1900 msgid "We'll show this publicly to allow attendees to contact you." msgstr "" -#: pretix/base/settings.py:2279 pretix/control/forms/event.py:1892 +#: pretix/base/settings.py:2281 pretix/control/forms/event.py:1892 msgid "Imprint URL" msgstr "" -#: pretix/base/settings.py:2280 pretix/control/forms/event.py:1893 +#: pretix/base/settings.py:2282 pretix/control/forms/event.py:1893 msgid "" "This should point e.g. to a part of your website that has your contact " "details and legal information." msgstr "" -#: pretix/base/settings.py:2290 +#: pretix/base/settings.py:2292 msgid "Privacy Policy URL" msgstr "" -#: pretix/base/settings.py:2291 +#: pretix/base/settings.py:2293 msgid "" "This should point e.g. to a part of your website that explains how you use " "data gathered in your ticket shop." msgstr "" -#: pretix/base/settings.py:2302 +#: pretix/base/settings.py:2304 msgid "Accessibility information URL" msgstr "" -#: pretix/base/settings.py:2303 +#: pretix/base/settings.py:2305 msgid "" "This should point e.g. to a part of your website that explains how your " "ticket shop complies with accessibility regulation." msgstr "" -#: pretix/base/settings.py:2310 +#: pretix/base/settings.py:2312 #: pretix/presale/templates/pretixpresale/event/base.html:229 #: pretix/presale/templates/pretixpresale/event/base.html:234 #: pretix/presale/templates/pretixpresale/organizers/accessibility.html:6 @@ -10527,52 +10542,52 @@ msgstr "" msgid "Accessibility information" msgstr "" -#: pretix/base/settings.py:2314 +#: pretix/base/settings.py:2316 msgid "Accessibility information title" msgstr "" -#: pretix/base/settings.py:2324 +#: pretix/base/settings.py:2326 msgid "Accessibility information text" msgstr "" -#: pretix/base/settings.py:2345 +#: pretix/base/settings.py:2347 msgid "Attach ticket files" msgstr "" -#: pretix/base/settings.py:2347 +#: pretix/base/settings.py:2349 #, python-brace-format msgid "" "Tickets will never be attached if they're larger than {size} to avoid email " "delivery problems." msgstr "" -#: pretix/base/settings.py:2358 pretix/plugins/sendmail/forms.py:201 +#: pretix/base/settings.py:2360 pretix/plugins/sendmail/forms.py:201 #: pretix/plugins/sendmail/models.py:263 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:66 msgid "Attach calendar files" msgstr "" -#: pretix/base/settings.py:2359 +#: pretix/base/settings.py:2361 msgid "" "If enabled, we will attach an .ics calendar file to order confirmation " "emails." msgstr "" -#: pretix/base/settings.py:2368 +#: pretix/base/settings.py:2370 msgid "Attach calendar files only after order has been paid" msgstr "" -#: pretix/base/settings.py:2369 +#: pretix/base/settings.py:2371 msgid "" "Use this if you e.g. put a private access link into the calendar file to " "make sure people only receive it after their payment was confirmed." msgstr "" -#: pretix/base/settings.py:2378 +#: pretix/base/settings.py:2380 msgid "Event description" msgstr "" -#: pretix/base/settings.py:2381 +#: pretix/base/settings.py:2383 msgid "" "You can use this to share information with your attendees, such as travel " "information or the link to a digital event. If you keep it empty, we will " @@ -10582,52 +10597,52 @@ msgid "" "people." msgstr "" -#: pretix/base/settings.py:2394 +#: pretix/base/settings.py:2396 msgid "Subject prefix" msgstr "" -#: pretix/base/settings.py:2395 +#: pretix/base/settings.py:2397 msgid "" "This will be prepended to the subject of all outgoing emails, formatted as " "[prefix]. Choose, for example, a short form of your event name." msgstr "" -#: pretix/base/settings.py:2409 pretix/control/forms/mailsetup.py:37 +#: pretix/base/settings.py:2411 pretix/control/forms/mailsetup.py:37 #: pretix/control/forms/mailsetup.py:119 #: pretix/control/templates/pretixcontrol/event/mail.html:39 #: pretix/control/templates/pretixcontrol/organizers/mail.html:40 msgid "Sender address" msgstr "" -#: pretix/base/settings.py:2410 pretix/control/forms/mailsetup.py:38 +#: pretix/base/settings.py:2412 pretix/control/forms/mailsetup.py:38 #: pretix/control/forms/mailsetup.py:120 msgid "Sender address for outgoing emails" msgstr "" -#: pretix/base/settings.py:2419 +#: pretix/base/settings.py:2421 msgid "Sender name" msgstr "" -#: pretix/base/settings.py:2420 +#: pretix/base/settings.py:2422 msgid "" "Sender name used in conjunction with the sender address for outgoing emails. " "Defaults to your event name." msgstr "" -#: pretix/base/settings.py:2438 pretix/base/settings.py:2495 -#: pretix/base/settings.py:2512 pretix/base/settings.py:2530 +#: pretix/base/settings.py:2440 pretix/base/settings.py:2497 +#: pretix/base/settings.py:2514 pretix/base/settings.py:2532 #, python-brace-format msgid "Your order: {code}" msgstr "" -#: pretix/base/settings.py:2442 pretix/base/settings.py:2475 -#: pretix/base/settings.py:2580 pretix/base/settings.py:2813 -#: pretix/base/settings.py:2850 +#: pretix/base/settings.py:2444 pretix/base/settings.py:2477 +#: pretix/base/settings.py:2582 pretix/base/settings.py:2815 +#: pretix/base/settings.py:2852 #, python-brace-format msgid "Your event registration: {code}" msgstr "" -#: pretix/base/settings.py:2446 +#: pretix/base/settings.py:2448 #, python-brace-format msgid "" "Hello,\n" @@ -10642,12 +10657,12 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2459 +#: pretix/base/settings.py:2461 #, python-brace-format msgid "Your orders for {event}" msgstr "" -#: pretix/base/settings.py:2463 +#: pretix/base/settings.py:2465 #, python-brace-format msgid "" "Hello,\n" @@ -10661,7 +10676,7 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2479 +#: pretix/base/settings.py:2481 #, python-brace-format msgid "" "Hello {attendee_name},\n" @@ -10675,7 +10690,7 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2499 +#: pretix/base/settings.py:2501 #, python-brace-format msgid "" "Hello,\n" @@ -10690,7 +10705,7 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2516 +#: pretix/base/settings.py:2518 #, python-brace-format msgid "" "Hello,\n" @@ -10706,7 +10721,7 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2534 +#: pretix/base/settings.py:2536 #, python-brace-format msgid "" "Hello,\n" @@ -10724,11 +10739,11 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2552 +#: pretix/base/settings.py:2554 msgid "Attachment for new orders" msgstr "" -#: pretix/base/settings.py:2557 +#: pretix/base/settings.py:2559 #, python-brace-format msgid "" "This file will be attached to the first email that we send for every new " @@ -10740,7 +10755,7 @@ msgid "" "vital email going to spam, you can only upload PDF files of up to {size} MB." msgstr "" -#: pretix/base/settings.py:2584 +#: pretix/base/settings.py:2586 #, python-brace-format msgid "" "Hello {attendee_name},\n" @@ -10754,12 +10769,12 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2596 +#: pretix/base/settings.py:2598 #, python-brace-format msgid "Your order has been changed: {code}" msgstr "" -#: pretix/base/settings.py:2600 +#: pretix/base/settings.py:2602 #, python-brace-format msgid "" "Hello,\n" @@ -10773,12 +10788,12 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2612 +#: pretix/base/settings.py:2614 #, python-brace-format msgid "Payment received for your order: {code}" msgstr "" -#: pretix/base/settings.py:2616 +#: pretix/base/settings.py:2618 #, python-brace-format msgid "" "Hello,\n" @@ -10794,12 +10809,12 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2634 +#: pretix/base/settings.py:2636 #, python-brace-format msgid "Event registration confirmed: {code}" msgstr "" -#: pretix/base/settings.py:2638 +#: pretix/base/settings.py:2640 #, python-brace-format msgid "" "Hello {attendee_name},\n" @@ -10813,23 +10828,23 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2655 pretix/control/forms/event.py:1294 +#: pretix/base/settings.py:2657 pretix/control/forms/event.py:1294 #: pretix/control/forms/event.py:1416 pretix/plugins/sendmail/models.py:268 msgid "Number of days" msgstr "" -#: pretix/base/settings.py:2657 pretix/control/forms/event.py:1297 +#: pretix/base/settings.py:2659 pretix/control/forms/event.py:1297 msgid "" "This email will be sent out this many days before the order expires. If the " "value is 0, the mail will never be sent." msgstr "" -#: pretix/base/settings.py:2665 +#: pretix/base/settings.py:2667 #, python-brace-format msgid "Your order is about to expire: {code}" msgstr "" -#: pretix/base/settings.py:2669 +#: pretix/base/settings.py:2671 #, python-brace-format msgid "" "Hello,\n" @@ -10845,12 +10860,12 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2683 +#: pretix/base/settings.py:2685 #, python-brace-format msgid "Your order is pending payment: {code}" msgstr "" -#: pretix/base/settings.py:2687 +#: pretix/base/settings.py:2689 #, python-brace-format msgid "" "Hello,\n" @@ -10865,12 +10880,12 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2700 +#: pretix/base/settings.py:2702 #, python-brace-format msgid "Incomplete payment received: {code}" msgstr "" -#: pretix/base/settings.py:2704 +#: pretix/base/settings.py:2706 #, python-brace-format msgid "" "Hello,\n" @@ -10888,12 +10903,12 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2720 +#: pretix/base/settings.py:2722 #, python-brace-format msgid "Payment failed for your order: {code}" msgstr "" -#: pretix/base/settings.py:2724 +#: pretix/base/settings.py:2726 #, python-brace-format msgid "" "Hello,\n" @@ -10911,12 +10926,12 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2738 +#: pretix/base/settings.py:2740 #, python-brace-format msgid "You have been selected from the waitinglist for {event}" msgstr "" -#: pretix/base/settings.py:2742 +#: pretix/base/settings.py:2744 #, python-brace-format msgid "" "Hello,\n" @@ -10947,12 +10962,12 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2771 +#: pretix/base/settings.py:2773 #, python-brace-format msgid "Order canceled: {code}" msgstr "" -#: pretix/base/settings.py:2775 +#: pretix/base/settings.py:2777 #, python-brace-format msgid "" "Hello,\n" @@ -10968,12 +10983,12 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2789 +#: pretix/base/settings.py:2791 #, python-brace-format msgid "Order approved and awaiting payment: {code}" msgstr "" -#: pretix/base/settings.py:2793 +#: pretix/base/settings.py:2795 #, python-brace-format msgid "" "Hello,\n" @@ -10991,7 +11006,7 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2817 pretix/base/settings.py:2854 +#: pretix/base/settings.py:2819 pretix/base/settings.py:2856 #, python-brace-format msgid "" "Hello,\n" @@ -11005,12 +11020,12 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2829 +#: pretix/base/settings.py:2831 #, python-brace-format msgid "Order approved and confirmed: {code}" msgstr "" -#: pretix/base/settings.py:2833 +#: pretix/base/settings.py:2835 #, python-brace-format msgid "" "Hello,\n" @@ -11025,12 +11040,12 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2866 +#: pretix/base/settings.py:2868 #, python-brace-format msgid "Order denied: {code}" msgstr "" -#: pretix/base/settings.py:2870 +#: pretix/base/settings.py:2872 #, python-brace-format msgid "" "Hello,\n" @@ -11047,7 +11062,7 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2885 +#: pretix/base/settings.py:2887 #, python-brace-format msgid "" "Hello,\n" @@ -11059,12 +11074,12 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2895 +#: pretix/base/settings.py:2897 #, python-brace-format msgid "Invoice {invoice_number}" msgstr "" -#: pretix/base/settings.py:2899 +#: pretix/base/settings.py:2901 #, python-brace-format msgid "" "Hello,\n" @@ -11077,12 +11092,12 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2917 pretix/base/settings.py:2933 +#: pretix/base/settings.py:2919 pretix/base/settings.py:2935 #, python-brace-format msgid "Your ticket is ready for download: {code}" msgstr "" -#: pretix/base/settings.py:2921 +#: pretix/base/settings.py:2923 #, python-brace-format msgid "" "Hello {attendee_name},\n" @@ -11096,7 +11111,7 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2937 +#: pretix/base/settings.py:2939 #, python-brace-format msgid "" "Hello,\n" @@ -11110,12 +11125,12 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/base/settings.py:2949 +#: pretix/base/settings.py:2951 #, python-brace-format msgid "Activate your account at {organizer}" msgstr "" -#: pretix/base/settings.py:2953 +#: pretix/base/settings.py:2955 #, python-brace-format msgid "" "Hello {name},\n" @@ -11135,12 +11150,12 @@ msgid "" "Your {organizer} team" msgstr "" -#: pretix/base/settings.py:2971 +#: pretix/base/settings.py:2973 #, python-brace-format msgid "Confirm email address for your account at {organizer}" msgstr "" -#: pretix/base/settings.py:2975 +#: pretix/base/settings.py:2977 #, python-brace-format msgid "" "Hello {name},\n" @@ -11160,12 +11175,12 @@ msgid "" "Your {organizer} team" msgstr "" -#: pretix/base/settings.py:2993 +#: pretix/base/settings.py:2995 #, python-brace-format msgid "Set a new password for your account at {organizer}" msgstr "" -#: pretix/base/settings.py:2997 +#: pretix/base/settings.py:2999 #, python-brace-format msgid "" "Hello {name},\n" @@ -11185,12 +11200,12 @@ msgid "" "Your {organizer} team" msgstr "" -#: pretix/base/settings.py:3015 +#: pretix/base/settings.py:3017 #, python-brace-format msgid "Changes to your account at {organizer}" msgstr "" -#: pretix/base/settings.py:3019 +#: pretix/base/settings.py:3021 #, python-brace-format msgid "" "Hello {name},\n" @@ -11210,57 +11225,57 @@ msgid "" "Your {organizer} team" msgstr "" -#: pretix/base/settings.py:3071 pretix/base/settings.py:3078 -#: pretix/base/settings.py:3092 pretix/base/settings.py:3100 -#: pretix/base/settings.py:3114 pretix/base/settings.py:3122 -#: pretix/base/settings.py:3136 pretix/base/settings.py:3143 +#: pretix/base/settings.py:3073 pretix/base/settings.py:3080 +#: pretix/base/settings.py:3094 pretix/base/settings.py:3102 +#: pretix/base/settings.py:3116 pretix/base/settings.py:3124 +#: pretix/base/settings.py:3138 pretix/base/settings.py:3145 msgid "Please enter the hexadecimal code of a color, e.g. #990000." msgstr "" -#: pretix/base/settings.py:3075 +#: pretix/base/settings.py:3077 msgid "Primary color" msgstr "" -#: pretix/base/settings.py:3096 +#: pretix/base/settings.py:3098 msgid "Accent color for success" msgstr "" -#: pretix/base/settings.py:3097 +#: pretix/base/settings.py:3099 msgid "We strongly suggest to use a shade of green." msgstr "" -#: pretix/base/settings.py:3118 +#: pretix/base/settings.py:3120 msgid "Accent color for errors" msgstr "" -#: pretix/base/settings.py:3119 +#: pretix/base/settings.py:3121 msgid "We strongly suggest to use a shade of red." msgstr "" -#: pretix/base/settings.py:3140 +#: pretix/base/settings.py:3142 msgid "Page background color" msgstr "" -#: pretix/base/settings.py:3155 +#: pretix/base/settings.py:3157 msgid "Use round edges" msgstr "" -#: pretix/base/settings.py:3164 +#: pretix/base/settings.py:3166 msgid "" "Use native spinners in the widget instead of custom ones for numeric inputs " "such as quantity." msgstr "" -#: pretix/base/settings.py:3175 +#: pretix/base/settings.py:3177 msgid "Only respected by modern browsers." msgstr "" -#: pretix/base/settings.py:3186 pretix/base/settings.py:3230 +#: pretix/base/settings.py:3188 pretix/base/settings.py:3232 #: pretix/control/forms/organizer.py:642 msgid "Header image" msgstr "" -#: pretix/base/settings.py:3189 +#: pretix/base/settings.py:3191 msgid "" "If you provide a logo image, we will by default not show your event name and " "date in the page header. If you use a white background, we show your logo " @@ -11269,26 +11284,26 @@ msgid "" "using small details on the picture as it will be resized on smaller screens." msgstr "" -#: pretix/base/settings.py:3210 pretix/base/settings.py:3253 +#: pretix/base/settings.py:3212 pretix/base/settings.py:3255 msgid "Use header image in its full size" msgstr "" -#: pretix/base/settings.py:3211 pretix/base/settings.py:3254 +#: pretix/base/settings.py:3213 pretix/base/settings.py:3256 msgid "We recommend to upload a picture at least 1170 pixels wide." msgstr "" -#: pretix/base/settings.py:3220 +#: pretix/base/settings.py:3222 msgid "Show event title even if a header image is present" msgstr "" -#: pretix/base/settings.py:3221 +#: pretix/base/settings.py:3223 msgid "" "The title will only be shown on the event front page. If no header image is " "uploaded for the event, but the header image from the organizer profile is " "used, this option will be ignored and the event title will always be shown." msgstr "" -#: pretix/base/settings.py:3233 pretix/control/forms/organizer.py:646 +#: pretix/base/settings.py:3235 pretix/control/forms/organizer.py:646 msgid "" "If you provide a logo image, we will by default not show your organization " "name in the page header. If you use a white background, we show your logo " @@ -11297,25 +11312,25 @@ msgid "" "using small details on the picture as it will be resized on smaller screens." msgstr "" -#: pretix/base/settings.py:3263 +#: pretix/base/settings.py:3265 msgid "Use header image also for events without an individually uploaded logo" msgstr "" -#: pretix/base/settings.py:3271 +#: pretix/base/settings.py:3273 msgid "Favicon" msgstr "" -#: pretix/base/settings.py:3274 +#: pretix/base/settings.py:3276 msgid "" "If you provide a favicon, we will show it instead of the default pretix " "icon. We recommend a size of at least 200x200px to accommodate most devices." msgstr "" -#: pretix/base/settings.py:3290 +#: pretix/base/settings.py:3292 msgid "Social media image" msgstr "" -#: pretix/base/settings.py:3293 +#: pretix/base/settings.py:3295 msgid "" "This picture will be used as a preview if you post links to your ticket shop " "on social media. Facebook advises to use a picture size of 1200 x 630 " @@ -11324,93 +11339,93 @@ msgid "" "square is shown. If you do not fill this, we will use the logo given above." msgstr "" -#: pretix/base/settings.py:3311 +#: pretix/base/settings.py:3313 msgid "Logo image" msgstr "" -#: pretix/base/settings.py:3315 +#: pretix/base/settings.py:3317 msgid "We will show your logo with a maximal height and width of 2.5 cm." msgstr "" -#: pretix/base/settings.py:3342 pretix/base/settings.py:3448 +#: pretix/base/settings.py:3344 pretix/base/settings.py:3450 msgid "Info text" msgstr "" -#: pretix/base/settings.py:3345 pretix/base/settings.py:3450 +#: pretix/base/settings.py:3347 pretix/base/settings.py:3452 msgid "" "Not displayed anywhere by default, but if you want to, you can use this e.g. " "in ticket templates." msgstr "" -#: pretix/base/settings.py:3354 +#: pretix/base/settings.py:3356 msgid "Banner text (top)" msgstr "" -#: pretix/base/settings.py:3357 +#: pretix/base/settings.py:3359 msgid "" "This text will be shown above every page of your shop. Please only use this " "for very important messages." msgstr "" -#: pretix/base/settings.py:3367 +#: pretix/base/settings.py:3369 msgid "Banner text (bottom)" msgstr "" -#: pretix/base/settings.py:3370 +#: pretix/base/settings.py:3372 msgid "" "This text will be shown below every page of your shop. Please only use this " "for very important messages." msgstr "" -#: pretix/base/settings.py:3380 +#: pretix/base/settings.py:3382 msgid "Voucher explanation" msgstr "" -#: pretix/base/settings.py:3383 +#: pretix/base/settings.py:3385 msgid "" "This text will be shown next to the input for a voucher code. You can use it " "e.g. to explain how to obtain a voucher code." msgstr "" -#: pretix/base/settings.py:3393 +#: pretix/base/settings.py:3395 msgid "Attendee data explanation" msgstr "" -#: pretix/base/settings.py:3396 +#: pretix/base/settings.py:3398 msgid "" "This text will be shown above the questions asked for every personalized " "product. You can use it e.g. to explain why you need information from them." msgstr "" -#: pretix/base/settings.py:3406 +#: pretix/base/settings.py:3408 msgid "Additional success message" msgstr "" -#: pretix/base/settings.py:3407 +#: pretix/base/settings.py:3409 msgid "" "This message will be shown after an order has been created successfully. It " "will be shown in additional to the default text." msgstr "" -#: pretix/base/settings.py:3419 +#: pretix/base/settings.py:3421 msgid "Help text of the phone number field" msgstr "" -#: pretix/base/settings.py:3426 +#: pretix/base/settings.py:3428 msgid "" "Make sure to enter a valid email address. We will send you an order " "confirmation including a link that you need to access your order later." msgstr "" -#: pretix/base/settings.py:3433 +#: pretix/base/settings.py:3435 msgid "Help text of the email field" msgstr "" -#: pretix/base/settings.py:3459 +#: pretix/base/settings.py:3461 msgid "Allow creating a new team during event creation" msgstr "" -#: pretix/base/settings.py:3460 +#: pretix/base/settings.py:3462 msgid "" "Users that do not have access to all events under this organizer, must " "select one of their teams to have access to the created event. This setting " @@ -11418,68 +11433,68 @@ msgid "" "not have \"Can change teams and permissions\" permission." msgstr "" -#: pretix/base/settings.py:3532 pretix/base/settings.py:3542 +#: pretix/base/settings.py:3534 pretix/base/settings.py:3544 msgid "Event start time (descending)" msgstr "" -#: pretix/base/settings.py:3534 pretix/base/settings.py:3544 +#: pretix/base/settings.py:3536 pretix/base/settings.py:3546 msgid "Name (descending)" msgstr "" -#: pretix/base/settings.py:3539 +#: pretix/base/settings.py:3541 msgctxt "subevent" msgid "Date ordering" msgstr "" -#: pretix/base/settings.py:3555 +#: pretix/base/settings.py:3557 msgid "Link back to organizer overview on all event pages" msgstr "" -#: pretix/base/settings.py:3564 +#: pretix/base/settings.py:3566 msgid "Homepage text" msgstr "" -#: pretix/base/settings.py:3566 +#: pretix/base/settings.py:3568 msgid "This will be displayed on the organizer homepage." msgstr "" -#: pretix/base/settings.py:3581 +#: pretix/base/settings.py:3583 msgid "Length of gift card codes" msgstr "" -#: pretix/base/settings.py:3582 +#: pretix/base/settings.py:3584 #, python-brace-format msgid "" "The system generates by default {}-character long gift card codes. However, " "if a different length is required, it can be set here." msgstr "" -#: pretix/base/settings.py:3598 +#: pretix/base/settings.py:3600 msgid "Validity of gift card codes in years" msgstr "" -#: pretix/base/settings.py:3599 +#: pretix/base/settings.py:3601 msgid "" "If you set a number here, gift cards will by default expire at the end of " "the year after this many years. If you keep it empty, gift cards do not have " "an explicit expiry date." msgstr "" -#: pretix/base/settings.py:3610 +#: pretix/base/settings.py:3612 msgid "Enable cookie consent management features" msgstr "" -#: pretix/base/settings.py:3616 +#: pretix/base/settings.py:3618 msgid "" "By clicking \"Accept all cookies\", you agree to the storing of cookies and " "use of similar technologies on your device." msgstr "" -#: pretix/base/settings.py:3623 +#: pretix/base/settings.py:3625 msgid "Dialog text" msgstr "" -#: pretix/base/settings.py:3630 +#: pretix/base/settings.py:3632 msgid "" "We use cookies and similar technologies to gather data that allows us to " "improve this website and our offerings. If you do not agree, we will only " @@ -11487,197 +11502,197 @@ msgid "" "offers." msgstr "" -#: pretix/base/settings.py:3638 +#: pretix/base/settings.py:3640 msgid "Secondary dialog text" msgstr "" -#: pretix/base/settings.py:3644 +#: pretix/base/settings.py:3646 msgid "Privacy settings" msgstr "" -#: pretix/base/settings.py:3649 +#: pretix/base/settings.py:3651 msgid "Dialog title" msgstr "" -#: pretix/base/settings.py:3655 +#: pretix/base/settings.py:3657 msgid "Accept all cookies" msgstr "" -#: pretix/base/settings.py:3660 +#: pretix/base/settings.py:3662 msgid "\"Accept\" button description" msgstr "" -#: pretix/base/settings.py:3666 +#: pretix/base/settings.py:3668 msgid "Required cookies only" msgstr "" -#: pretix/base/settings.py:3671 +#: pretix/base/settings.py:3673 msgid "\"Reject\" button description" msgstr "" -#: pretix/base/settings.py:3681 +#: pretix/base/settings.py:3683 msgid "Customers can choose their own seats" msgstr "" -#: pretix/base/settings.py:3682 +#: pretix/base/settings.py:3684 msgid "" "If disabled, you will need to manually assign seats in the backend. Note " "that this can mean people will not know their seat after their purchase and " "it might not be written on their ticket." msgstr "" -#: pretix/base/settings.py:3708 +#: pretix/base/settings.py:3710 msgid "Show button to copy user input from other products" msgstr "" -#: pretix/base/settings.py:3718 +#: pretix/base/settings.py:3720 msgid "Most common English titles" msgstr "" -#: pretix/base/settings.py:3728 +#: pretix/base/settings.py:3730 msgid "Most common German titles" msgstr "" -#: pretix/base/settings.py:3741 -msgctxt "person_name_salutation" -msgid "Ms" -msgstr "" - -#: pretix/base/settings.py:3742 -msgctxt "person_name_salutation" -msgid "Mr" -msgstr "" - #: pretix/base/settings.py:3743 msgctxt "person_name_salutation" +msgid "Ms" +msgstr "" + +#: pretix/base/settings.py:3744 +msgctxt "person_name_salutation" +msgid "Mr" +msgstr "" + +#: pretix/base/settings.py:3745 +msgctxt "person_name_salutation" msgid "Mx" msgstr "" -#: pretix/base/settings.py:3780 pretix/base/settings.py:3796 -#: pretix/base/settings.py:3812 pretix/base/settings.py:3827 -#: pretix/base/settings.py:3845 pretix/base/settings.py:3860 -#: pretix/base/settings.py:3890 pretix/base/settings.py:3914 -#: pretix/base/settings.py:3946 pretix/base/settings.py:3968 -#: pretix/base/settings.py:3999 +#: pretix/base/settings.py:3782 pretix/base/settings.py:3798 +#: pretix/base/settings.py:3814 pretix/base/settings.py:3829 +#: pretix/base/settings.py:3847 pretix/base/settings.py:3862 +#: pretix/base/settings.py:3892 pretix/base/settings.py:3916 +#: pretix/base/settings.py:3948 pretix/base/settings.py:3970 +#: pretix/base/settings.py:4001 msgctxt "person_name_sample" msgid "John" msgstr "" -#: pretix/base/settings.py:3781 pretix/base/settings.py:3797 -#: pretix/base/settings.py:3813 pretix/base/settings.py:3829 -#: pretix/base/settings.py:3847 pretix/base/settings.py:3861 -#: pretix/base/settings.py:3891 pretix/base/settings.py:3947 -#: pretix/base/settings.py:3969 pretix/base/settings.py:4000 +#: pretix/base/settings.py:3783 pretix/base/settings.py:3799 +#: pretix/base/settings.py:3815 pretix/base/settings.py:3831 +#: pretix/base/settings.py:3849 pretix/base/settings.py:3863 +#: pretix/base/settings.py:3893 pretix/base/settings.py:3949 +#: pretix/base/settings.py:3971 pretix/base/settings.py:4002 msgctxt "person_name_sample" msgid "Doe" msgstr "" -#: pretix/base/settings.py:3787 pretix/base/settings.py:3803 -#: pretix/base/settings.py:3835 pretix/base/settings.py:3954 -#: pretix/base/settings.py:3976 +#: pretix/base/settings.py:3789 pretix/base/settings.py:3805 +#: pretix/base/settings.py:3837 pretix/base/settings.py:3956 +#: pretix/base/settings.py:3978 msgctxt "person_name" msgid "Title" msgstr "" -#: pretix/base/settings.py:3795 pretix/base/settings.py:3811 -#: pretix/base/settings.py:3844 pretix/base/settings.py:3967 -#: pretix/base/settings.py:3998 +#: pretix/base/settings.py:3797 pretix/base/settings.py:3813 +#: pretix/base/settings.py:3846 pretix/base/settings.py:3969 +#: pretix/base/settings.py:4000 msgctxt "person_name_sample" msgid "Dr" msgstr "" -#: pretix/base/settings.py:3819 pretix/base/settings.py:3836 +#: pretix/base/settings.py:3821 pretix/base/settings.py:3838 msgid "First name" msgstr "" -#: pretix/base/settings.py:3820 pretix/base/settings.py:3837 +#: pretix/base/settings.py:3822 pretix/base/settings.py:3839 msgid "Middle name" msgstr "" -#: pretix/base/settings.py:3901 pretix/base/settings.py:3913 +#: pretix/base/settings.py:3903 pretix/base/settings.py:3915 #: pretix/control/forms/organizer.py:793 msgctxt "person_name_sample" msgid "John Doe" msgstr "" -#: pretix/base/settings.py:3907 +#: pretix/base/settings.py:3909 msgid "Calling name" msgstr "" -#: pretix/base/settings.py:3921 +#: pretix/base/settings.py:3923 msgid "Latin transcription" msgstr "" -#: pretix/base/settings.py:3933 pretix/base/settings.py:3953 -#: pretix/base/settings.py:3975 +#: pretix/base/settings.py:3935 pretix/base/settings.py:3955 +#: pretix/base/settings.py:3977 msgctxt "person_name" msgid "Salutation" msgstr "" -#: pretix/base/settings.py:3945 pretix/base/settings.py:3966 -#: pretix/base/settings.py:3997 +#: pretix/base/settings.py:3947 pretix/base/settings.py:3968 +#: pretix/base/settings.py:3999 msgctxt "person_name_sample" msgid "Mr" msgstr "" -#: pretix/base/settings.py:3979 +#: pretix/base/settings.py:3981 msgctxt "person_name" msgid "Degree (after name)" msgstr "" -#: pretix/base/settings.py:4001 +#: pretix/base/settings.py:4003 msgctxt "person_name_sample" msgid "MA" msgstr "" -#: pretix/base/settings.py:4027 pretix/base/settings.py:4029 +#: pretix/base/settings.py:4029 pretix/base/settings.py:4031 msgctxt "address" msgid "Province" msgstr "" -#: pretix/base/settings.py:4028 +#: pretix/base/settings.py:4030 msgctxt "address" msgid "Prefecture" msgstr "" -#: pretix/base/settings.py:4119 pretix/control/forms/event.py:242 +#: pretix/base/settings.py:4121 pretix/control/forms/event.py:242 msgid "" "Your default locale must also be enabled for your event (see box above)." msgstr "" -#: pretix/base/settings.py:4123 +#: pretix/base/settings.py:4125 msgid "" "You cannot require specifying attendee names if you do not ask for them." msgstr "" -#: pretix/base/settings.py:4127 +#: pretix/base/settings.py:4129 msgid "You have to ask for attendee emails if you want to make them required." msgstr "" -#: pretix/base/settings.py:4131 +#: pretix/base/settings.py:4133 msgid "" "You have to ask for invoice addresses if you want to make them required." msgstr "" -#: pretix/base/settings.py:4135 +#: pretix/base/settings.py:4137 msgid "You have to require invoice addresses to require for company names." msgstr "" -#: pretix/base/settings.py:4157 +#: pretix/base/settings.py:4159 #, python-brace-format msgid "VAT-ID is not supported for \"{}\"." msgstr "" -#: pretix/base/settings.py:4164 +#: pretix/base/settings.py:4166 msgid "The last payment date cannot be before the end of presale." msgstr "" -#: pretix/base/settings.py:4172 +#: pretix/base/settings.py:4174 #, python-brace-format msgid "The value \"{identifier}\" is not a valid sales channel." msgstr "" -#: pretix/base/settings.py:4187 +#: pretix/base/settings.py:4189 msgid "This needs to be disabled if other NFC-based types are active." msgstr "" @@ -12457,11 +12472,11 @@ msgctxt "tax_id_portugal" msgid "VAT ID / NIF" msgstr "" -#: pretix/base/views/tasks.py:185 +#: pretix/base/views/tasks.py:189 msgid "An unexpected error has occurred, please try again later." msgstr "" -#: pretix/base/views/tasks.py:188 +#: pretix/base/views/tasks.py:192 msgid "The task has been completed." msgstr "" @@ -12634,7 +12649,7 @@ msgid "" msgstr "" #: pretix/control/forms/event.py:387 pretix/control/forms/item.py:1304 -#: pretix/control/forms/subevents.py:411 +#: pretix/control/forms/subevents.py:421 #, python-brace-format msgid "Default ({value})" msgstr "" @@ -13303,12 +13318,12 @@ msgstr "" msgid "{product} – Any variation" msgstr "" -#: pretix/control/forms/filter.py:566 pretix/control/forms/orders.py:862 +#: pretix/control/forms/filter.py:566 pretix/control/forms/orders.py:870 msgctxt "subevent" msgid "All dates starting at or after" msgstr "" -#: pretix/control/forms/filter.py:572 pretix/control/forms/orders.py:869 +#: pretix/control/forms/filter.py:572 pretix/control/forms/orders.py:877 msgctxt "subevent" msgid "All dates starting before" msgstr "" @@ -14129,8 +14144,8 @@ msgstr "" msgid "Bundled product" msgstr "" -#: pretix/control/forms/item.py:1246 pretix/control/forms/orders.py:379 -#: pretix/control/forms/orders.py:568 +#: pretix/control/forms/item.py:1246 pretix/control/forms/orders.py:383 +#: pretix/control/forms/orders.py:576 msgid "inactive" msgstr "" @@ -14404,11 +14419,15 @@ msgstr "" msgid "Allow to overbook quotas when performing this operation" msgstr "" -#: pretix/control/forms/orders.py:340 +#: pretix/control/forms/orders.py:335 +msgid "Number of products to add" +msgstr "" + +#: pretix/control/forms/orders.py:344 msgid "Add-on to" msgstr "" -#: pretix/control/forms/orders.py:345 +#: pretix/control/forms/orders.py:349 #: pretix/control/templates/pretixcontrol/checkin/index.html:104 #: pretix/control/templates/pretixcontrol/order/change.html:127 #: pretix/control/views/vouchers.py:121 @@ -14417,161 +14436,165 @@ msgstr "" msgid "Seat" msgstr "" -#: pretix/control/forms/orders.py:348 +#: pretix/control/forms/orders.py:352 #: pretix/control/templates/pretixcontrol/order/change.html:182 #: pretix/control/templates/pretixcontrol/organizers/customer_membership.html:5 #: pretix/control/templates/pretixcontrol/organizers/customer_membership.html:9 #: pretix/control/templates/pretixcontrol/organizers/customer_membership_delete.html:5 #: pretix/control/templates/pretixcontrol/organizers/customer_membership_delete.html:9 -#: pretix/presale/forms/checkout.py:238 +#: pretix/presale/forms/checkout.py:195 msgid "Membership" msgstr "" -#: pretix/control/forms/orders.py:356 +#: pretix/control/forms/orders.py:360 msgid "Including taxes, if any. Keep empty for the product's default price" msgstr "" -#: pretix/control/forms/orders.py:470 pretix/control/forms/orders.py:474 -#: pretix/control/forms/orders.py:502 pretix/control/forms/orders.py:544 -#: pretix/control/forms/orders.py:563 pretix/control/forms/orders.py:581 -#: pretix/control/forms/orders.py:609 +#: pretix/control/forms/orders.py:441 +msgid "You can not choose a seat when adding multiple products at once." +msgstr "" + +#: pretix/control/forms/orders.py:478 pretix/control/forms/orders.py:482 +#: pretix/control/forms/orders.py:510 pretix/control/forms/orders.py:552 +#: pretix/control/forms/orders.py:571 pretix/control/forms/orders.py:589 +#: pretix/control/forms/orders.py:617 msgid "(Unchanged)" msgstr "" -#: pretix/control/forms/orders.py:480 pretix/control/forms/orders.py:604 +#: pretix/control/forms/orders.py:488 pretix/control/forms/orders.py:612 msgid "New price (gross)" msgstr "" -#: pretix/control/forms/orders.py:484 +#: pretix/control/forms/orders.py:492 msgid "Ticket is blocked" msgstr "" -#: pretix/control/forms/orders.py:489 +#: pretix/control/forms/orders.py:497 msgid "Validity start" msgstr "" -#: pretix/control/forms/orders.py:494 +#: pretix/control/forms/orders.py:502 msgid "Validity end" msgstr "" -#: pretix/control/forms/orders.py:506 +#: pretix/control/forms/orders.py:514 msgid "Generate a new secret" msgstr "" -#: pretix/control/forms/orders.py:507 +#: pretix/control/forms/orders.py:515 msgid "" "This affects both the ticket secret (often used as a QR code) as well as the " "link used to individually access the ticket." msgstr "" -#: pretix/control/forms/orders.py:512 +#: pretix/control/forms/orders.py:520 msgid "Cancel this position" msgstr "" -#: pretix/control/forms/orders.py:516 +#: pretix/control/forms/orders.py:524 msgid "Split into new order" msgstr "" -#: pretix/control/forms/orders.py:582 +#: pretix/control/forms/orders.py:590 msgid "(No membership)" msgstr "" -#: pretix/control/forms/orders.py:613 +#: pretix/control/forms/orders.py:621 msgid "Remove this fee" msgstr "" -#: pretix/control/forms/orders.py:631 +#: pretix/control/forms/orders.py:639 msgid "" "Note that payment fees have a special semantic and might automatically be " "changed if the payment method of the order is changed." msgstr "" -#: pretix/control/forms/orders.py:639 +#: pretix/control/forms/orders.py:647 #: pretix/control/templates/pretixcontrol/order/change.html:214 -#: pretix/control/templates/pretixcontrol/order/change.html:438 +#: pretix/control/templates/pretixcontrol/order/change.html:440 msgid "including all taxes" msgstr "" -#: pretix/control/forms/orders.py:677 +#: pretix/control/forms/orders.py:685 msgid "Invalidate secrets" msgstr "" -#: pretix/control/forms/orders.py:678 +#: pretix/control/forms/orders.py:686 msgid "" "Regenerates the order and ticket secrets. You will need to re-send the link " "to the order page to the user and the user will need to download his tickets " "again. The old versions will be invalid." msgstr "" -#: pretix/control/forms/orders.py:734 pretix/plugins/sendmail/forms.py:196 +#: pretix/control/forms/orders.py:742 pretix/plugins/sendmail/forms.py:196 msgid "Attach tickets" msgstr "" -#: pretix/control/forms/orders.py:735 pretix/plugins/sendmail/forms.py:197 +#: pretix/control/forms/orders.py:743 pretix/plugins/sendmail/forms.py:197 msgid "" "Will be ignored if tickets exceed a given size limit to ensure email " "deliverability." msgstr "" -#: pretix/control/forms/orders.py:742 +#: pretix/control/forms/orders.py:750 msgid "Attach invoices" msgstr "" -#: pretix/control/forms/orders.py:763 +#: pretix/control/forms/orders.py:771 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_inspect.html:20 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_list.html:30 msgid "Recipient" msgstr "" -#: pretix/control/forms/orders.py:778 +#: pretix/control/forms/orders.py:786 #, python-brace-format msgid "Attach {file}" msgstr "" -#: pretix/control/forms/orders.py:806 +#: pretix/control/forms/orders.py:814 msgid "" "Cancel the order. All tickets will no longer work. This can not be reverted." msgstr "" -#: pretix/control/forms/orders.py:807 +#: pretix/control/forms/orders.py:815 msgid "" "Mark the order as pending and allow the user to pay the open amount with " "another payment method." msgstr "" -#: pretix/control/forms/orders.py:809 +#: pretix/control/forms/orders.py:817 msgid "Do nothing and keep the order as it is." msgstr "" -#: pretix/control/forms/orders.py:836 +#: pretix/control/forms/orders.py:844 #, python-brace-format msgid "The refund amount needs to be positive and less than {}." msgstr "" -#: pretix/control/forms/orders.py:842 +#: pretix/control/forms/orders.py:850 msgid "You need to specify an amount for a partial refund." msgstr "" -#: pretix/control/forms/orders.py:854 +#: pretix/control/forms/orders.py:862 msgid "Cancel all dates" msgstr "" -#: pretix/control/forms/orders.py:873 +#: pretix/control/forms/orders.py:881 msgid "Automatically refund money if possible" msgstr "" -#: pretix/control/forms/orders.py:876 +#: pretix/control/forms/orders.py:884 msgid "" "Only available for payment method that support automatic refunds. Tickets " "that have been blocked (manually or by a plugin) are not auto-canceled and " "you will need to deal with them manually." msgstr "" -#: pretix/control/forms/orders.py:880 +#: pretix/control/forms/orders.py:888 msgid "Create refund in the manual refund to-do list" msgstr "" -#: pretix/control/forms/orders.py:883 +#: pretix/control/forms/orders.py:891 msgid "" "Manual refunds will be created which will be listed in the manual refund to-" "do list. When combined with the automatic refund functionally, only payments " @@ -14580,29 +14603,29 @@ msgid "" "orders by offsetting with different orders or issuing gift cards." msgstr "" -#: pretix/control/forms/orders.py:889 +#: pretix/control/forms/orders.py:897 msgid "" "Refund order value to a gift card instead instead of the original payment " "method" msgstr "" -#: pretix/control/forms/orders.py:895 +#: pretix/control/forms/orders.py:903 msgid "Gift card validity" msgstr "" -#: pretix/control/forms/orders.py:914 +#: pretix/control/forms/orders.py:922 msgid "Keep a fixed cancellation fee per ticket" msgstr "" -#: pretix/control/forms/orders.py:915 +#: pretix/control/forms/orders.py:923 msgid "Free tickets and add-on products are not counted" msgstr "" -#: pretix/control/forms/orders.py:925 +#: pretix/control/forms/orders.py:933 msgid "Keep fees" msgstr "" -#: pretix/control/forms/orders.py:928 +#: pretix/control/forms/orders.py:936 msgid "" "The selected types of fees will not be refunded but instead added to the " "cancellation fee. Fees are never refunded in when an order in an event " @@ -14610,20 +14633,20 @@ msgid "" "dates." msgstr "" -#: pretix/control/forms/orders.py:934 +#: pretix/control/forms/orders.py:942 msgid "Send information via email" msgstr "" -#: pretix/control/forms/orders.py:940 +#: pretix/control/forms/orders.py:948 msgid "Send information to waiting list" msgstr "" -#: pretix/control/forms/orders.py:955 pretix/control/forms/orders.py:981 +#: pretix/control/forms/orders.py:963 pretix/control/forms/orders.py:989 #, python-brace-format msgid "Canceled: {event}" msgstr "" -#: pretix/control/forms/orders.py:966 +#: pretix/control/forms/orders.py:974 #, python-brace-format msgid "" "Hello,\n" @@ -14641,7 +14664,7 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/control/forms/orders.py:993 +#: pretix/control/forms/orders.py:1001 #, python-brace-format msgid "" "Hello,\n" @@ -14655,37 +14678,37 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/control/forms/orders.py:1025 pretix/plugins/sendmail/forms.py:115 +#: pretix/control/forms/orders.py:1033 pretix/plugins/sendmail/forms.py:115 #: pretix/plugins/sendmail/forms.py:208 msgctxt "subevent" msgid "Please either select a specific date or a date range, not both." msgstr "" -#: pretix/control/forms/orders.py:1027 +#: pretix/control/forms/orders.py:1035 msgctxt "subevent" msgid "Please either select all dates or a date range, not both." msgstr "" -#: pretix/control/forms/orders.py:1029 pretix/plugins/sendmail/forms.py:117 +#: pretix/control/forms/orders.py:1037 pretix/plugins/sendmail/forms.py:117 #: pretix/plugins/sendmail/forms.py:210 msgctxt "subevent" msgid "If you set a date range, please set both a start and an end." msgstr "" -#: pretix/control/forms/orders.py:1031 +#: pretix/control/forms/orders.py:1039 msgid "Please confirm that you want to cancel ALL dates in this event series." msgstr "" -#: pretix/control/forms/orders.py:1037 +#: pretix/control/forms/orders.py:1045 msgid "I understand that this is not reversible and want to continue" msgstr "" -#: pretix/control/forms/orders.py:1042 +#: pretix/control/forms/orders.py:1050 msgid "" "We have just emailed you a confirmation code to enter to confirm this action" msgstr "" -#: pretix/control/forms/orders.py:1055 +#: pretix/control/forms/orders.py:1063 msgid "The confirmation code is incorrect." msgstr "" @@ -14777,7 +14800,7 @@ msgstr "" #: pretix/control/forms/organizer.py:1076 #: pretix/control/templates/pretixcontrol/organizers/customer.html:62 -#: pretix/presale/forms/customer.py:169 pretix/presale/forms/customer.py:506 +#: pretix/presale/forms/customer.py:169 pretix/presale/forms/customer.py:507 msgid "Phone" msgstr "" @@ -14958,23 +14981,37 @@ msgstr "" msgid "Weekend day" msgstr "" -#: pretix/control/forms/subevents.py:118 +#: pretix/control/forms/subevents.py:106 +msgctxt "subevent" +msgid "Skip dates that overlap with any existing date" +msgstr "" + +#: pretix/control/forms/subevents.py:109 +msgctxt "subevent" +msgid "" +"This can be useful if all your dates happen in the same location and no " +"repeated dates should be created in conflict with existing special events. " +"This respects even inactive dates and works best if all dates have both a " +"start and end time." +msgstr "" + +#: pretix/control/forms/subevents.py:128 msgid "Keep the current values" msgstr "" -#: pretix/control/forms/subevents.py:135 pretix/control/forms/subevents.py:141 +#: pretix/control/forms/subevents.py:145 pretix/control/forms/subevents.py:151 msgid "Selection contains various values" msgstr "" -#: pretix/control/forms/subevents.py:288 pretix/control/forms/subevents.py:317 +#: pretix/control/forms/subevents.py:298 pretix/control/forms/subevents.py:327 msgid "The end of availability should be after the start of availability." msgstr "" -#: pretix/control/forms/subevents.py:350 +#: pretix/control/forms/subevents.py:360 msgid "Available_until" msgstr "" -#: pretix/control/forms/subevents.py:470 +#: pretix/control/forms/subevents.py:480 msgid "Exclude these dates instead of adding them." msgstr "" @@ -15385,7 +15422,7 @@ msgstr "" msgid "The order has been canceled (comment: \"{comment}\")." msgstr "" -#: pretix/control/logdisplay.py:422 pretix/control/views/orders.py:1569 +#: pretix/control/logdisplay.py:422 pretix/control/views/orders.py:1556 #: pretix/presale/views/order.py:1138 msgid "The order has been canceled." msgstr "" @@ -15469,11 +15506,11 @@ msgstr "" msgid "The order has been set to require payment before use." msgstr "" -#: pretix/control/logdisplay.py:511 pretix/control/views/orders.py:1574 +#: pretix/control/logdisplay.py:511 pretix/control/views/orders.py:1561 msgid "The order has been marked as expired." msgstr "" -#: pretix/control/logdisplay.py:512 pretix/control/views/orders.py:1476 +#: pretix/control/logdisplay.py:512 pretix/control/views/orders.py:1463 msgid "The order has been marked as paid." msgstr "" @@ -15485,7 +15522,7 @@ msgstr "" msgid "The order has been refunded." msgstr "" -#: pretix/control/logdisplay.py:515 pretix/control/views/orders.py:1914 +#: pretix/control/logdisplay.py:515 pretix/control/views/orders.py:1901 msgid "The order has been reactivated." msgstr "" @@ -15497,7 +15534,7 @@ msgstr "" msgid "The order requires approval before it can continue to be processed." msgstr "" -#: pretix/control/logdisplay.py:519 pretix/control/views/orders.py:796 +#: pretix/control/logdisplay.py:519 pretix/control/views/orders.py:783 msgid "The order has been approved." msgstr "" @@ -15536,7 +15573,7 @@ msgstr "" msgid "The order locale has been changed." msgstr "" -#: pretix/control/logdisplay.py:531 pretix/control/views/orders.py:1613 +#: pretix/control/logdisplay.py:531 pretix/control/views/orders.py:1600 #: pretix/presale/views/order.py:797 pretix/presale/views/order.py:877 msgid "The invoice has been generated." msgstr "" @@ -15545,11 +15582,11 @@ msgstr "" msgid "The invoice could not be generated." msgstr "" -#: pretix/control/logdisplay.py:533 pretix/control/views/orders.py:1694 +#: pretix/control/logdisplay.py:533 pretix/control/views/orders.py:1681 msgid "The invoice has been regenerated." msgstr "" -#: pretix/control/logdisplay.py:534 pretix/control/views/orders.py:1751 +#: pretix/control/logdisplay.py:534 pretix/control/views/orders.py:1738 #: pretix/presale/views/order.py:897 msgid "The invoice has been reissued." msgstr "" @@ -16236,7 +16273,7 @@ msgid "The plugin has been enabled." msgstr "" #: pretix/control/logdisplay.py:818 pretix/control/logdisplay.py:877 -#: pretix/control/views/event.py:489 pretix/control/views/organizer.py:756 +#: pretix/control/views/event.py:497 pretix/control/views/organizer.py:756 msgid "The plugin has been disabled." msgstr "" @@ -16583,9 +16620,9 @@ msgstr "" msgid "Payment" msgstr "" -#: pretix/control/navigation.py:78 pretix/control/views/event.py:1650 -#: pretix/control/views/event.py:1652 pretix/control/views/event.py:1684 -#: pretix/control/views/event.py:1689 pretix/control/views/subevents.py:310 +#: pretix/control/navigation.py:78 pretix/control/views/event.py:1653 +#: pretix/control/views/event.py:1655 pretix/control/views/event.py:1687 +#: pretix/control/views/event.py:1692 pretix/control/views/subevents.py:310 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:60 #: pretix/plugins/ticketoutputpdf/apps.py:55 #: pretix/plugins/ticketoutputpdf/exporters.py:68 @@ -16969,7 +17006,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/organizers/team_edit.html:47 #: pretix/control/templates/pretixcontrol/organizers/webhook_edit.html:21 #: pretix/control/templates/pretixcontrol/pdf/index.html:46 -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:632 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:634 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:368 #: pretix/control/templates/pretixcontrol/subevents/detail.html:289 #: pretix/control/templates/pretixcontrol/user/notifications.html:85 @@ -17297,7 +17334,7 @@ msgstr[1] "" #: pretix/control/templates/pretixcontrol/oauth/app_delete.html:12 #: pretix/control/templates/pretixcontrol/oauth/app_rollkeys.html:12 #: pretix/control/templates/pretixcontrol/oauth/auth_revoke.html:12 -#: pretix/control/templates/pretixcontrol/order/change.html:543 +#: pretix/control/templates/pretixcontrol/order/change.html:545 #: pretix/control/templates/pretixcontrol/order/change_contact.html:25 #: pretix/control/templates/pretixcontrol/order/change_locale.html:30 #: pretix/control/templates/pretixcontrol/order/change_questions.html:84 @@ -18885,10 +18922,10 @@ msgstr "" #: pretix/control/templates/pretixcontrol/event/plugins.html:15 #: pretix/control/templates/pretixcontrol/organizers/plugins.html:15 #: pretix/control/views/checkin.py:425 pretix/control/views/discounts.py:113 -#: pretix/control/views/event.py:246 pretix/control/views/event.py:575 -#: pretix/control/views/event.py:614 pretix/control/views/event.py:816 -#: pretix/control/views/event.py:1057 pretix/control/views/event.py:1420 -#: pretix/control/views/event.py:1460 +#: pretix/control/views/event.py:254 pretix/control/views/event.py:583 +#: pretix/control/views/event.py:622 pretix/control/views/event.py:819 +#: pretix/control/views/event.py:1060 pretix/control/views/event.py:1423 +#: pretix/control/views/event.py:1463 #: pretix/control/views/global_settings.py:65 #: pretix/control/views/global_settings.py:88 pretix/control/views/item.py:266 #: pretix/control/views/item.py:779 pretix/control/views/item.py:1105 @@ -18912,7 +18949,7 @@ msgstr "" #: pretix/control/views/organizer.py:3444 #: pretix/control/views/organizer.py:3473 #: pretix/control/views/organizer.py:3611 pretix/control/views/subevents.py:542 -#: pretix/control/views/subevents.py:1617 pretix/control/views/user.py:241 +#: pretix/control/views/subevents.py:1665 pretix/control/views/user.py:241 #: pretix/control/views/user.py:857 pretix/control/views/users.py:113 #: pretix/control/views/vouchers.py:306 pretix/plugins/autocheckin/views.py:164 #: pretix/plugins/badges/views.py:158 pretix/plugins/sendmail/views.py:645 @@ -19099,7 +19136,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/item/include_variations.html:97 #: pretix/control/templates/pretixcontrol/item/include_variations.html:202 #: pretix/control/templates/pretixcontrol/item/index.html:127 -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:392 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:394 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:77 #: pretix/control/templates/pretixcontrol/subevents/detail.html:35 msgid "Meta data" @@ -19173,7 +19210,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/event/settings.html:232 #: pretix/control/templates/pretixcontrol/events/create_basics.html:59 -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:411 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:413 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:96 #: pretix/control/templates/pretixcontrol/subevents/detail.html:54 msgid "Timeline" @@ -19524,7 +19561,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/items/quota_edit.html:21 #: pretix/control/templates/pretixcontrol/organizers/create.html:11 #: pretix/control/templates/pretixcontrol/organizers/team_edit.html:20 -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:384 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:386 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:31 #: pretix/control/templates/pretixcontrol/subevents/detail.html:23 msgid "General information" @@ -20212,7 +20249,7 @@ msgid "" msgstr "" #: pretix/control/templates/pretixcontrol/item/index.html:254 -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:619 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:621 #: pretix/control/templates/pretixcontrol/subevents/detail.html:262 msgid "Additional settings" msgstr "" @@ -21003,7 +21040,7 @@ msgid "" msgstr "" #: pretix/control/templates/pretixcontrol/order/change.html:101 -#: pretix/control/templates/pretixcontrol/order/change.html:413 +#: pretix/control/templates/pretixcontrol/order/change.html:415 msgid "Change to" msgstr "" @@ -21074,30 +21111,30 @@ msgid "" msgstr "" #: pretix/control/templates/pretixcontrol/order/change.html:317 -#: pretix/control/templates/pretixcontrol/order/change.html:358 -#: pretix/control/templates/pretixcontrol/order/change.html:386 +#: pretix/control/templates/pretixcontrol/order/change.html:359 +#: pretix/control/templates/pretixcontrol/order/change.html:388 msgid "Add product" msgstr "" -#: pretix/control/templates/pretixcontrol/order/change.html:446 +#: pretix/control/templates/pretixcontrol/order/change.html:448 msgid "" "Manually modifying payment fees is discouraged since they might " "automatically be updated on subsequent order changes or when choosing a " "different payment method." msgstr "" -#: pretix/control/templates/pretixcontrol/order/change.html:466 -#: pretix/control/templates/pretixcontrol/order/change.html:493 -#: pretix/control/templates/pretixcontrol/order/change.html:513 +#: pretix/control/templates/pretixcontrol/order/change.html:468 +#: pretix/control/templates/pretixcontrol/order/change.html:495 +#: pretix/control/templates/pretixcontrol/order/change.html:515 msgid "Add fee" msgstr "" -#: pretix/control/templates/pretixcontrol/order/change.html:520 +#: pretix/control/templates/pretixcontrol/order/change.html:522 #: pretix/control/templates/pretixcontrol/order/change_questions.html:66 msgid "Other operations" msgstr "" -#: pretix/control/templates/pretixcontrol/order/change.html:546 +#: pretix/control/templates/pretixcontrol/order/change.html:548 #: pretix/presale/templates/pretixpresale/event/order_change_confirm.html:30 #: pretix/presale/templates/pretixpresale/event/position_change_confirm.html:30 msgid "Perform changes" @@ -24099,25 +24136,25 @@ msgstr "" msgid "Add many time slots" msgstr "" -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:481 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:483 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:266 #: pretix/control/templates/pretixcontrol/subevents/detail.html:124 msgid "Add a new quota" msgstr "" -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:485 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:487 #: pretix/control/templates/pretixcontrol/subevents/detail.html:128 msgid "Product settings" msgstr "" -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:487 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:489 #: pretix/control/templates/pretixcontrol/subevents/detail.html:130 msgid "" "These settings are optional, if you leave them empty, the default values " "from the product settings will be used." msgstr "" -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:523 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:525 #: pretix/control/templates/pretixcontrol/subevents/detail.html:166 msgid "" "You can choose to either add one or more check-in lists for every date in " @@ -24130,7 +24167,7 @@ msgid "" "will be easier." msgstr "" -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:602 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:604 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:359 #: pretix/control/templates/pretixcontrol/subevents/detail.html:245 msgid "Add a new check-in list" @@ -25256,18 +25293,18 @@ msgstr "" #: pretix/control/views/checkin.py:382 pretix/control/views/checkin.py:442 #: pretix/control/views/discounts.py:134 pretix/control/views/discounts.py:182 -#: pretix/control/views/event.py:275 pretix/control/views/event.py:578 -#: pretix/control/views/event.py:617 pretix/control/views/event.py:819 -#: pretix/control/views/event.py:1023 pretix/control/views/event.py:1373 -#: pretix/control/views/event.py:1439 pretix/control/views/event.py:1591 +#: pretix/control/views/event.py:283 pretix/control/views/event.py:586 +#: pretix/control/views/event.py:625 pretix/control/views/event.py:822 +#: pretix/control/views/event.py:1026 pretix/control/views/event.py:1376 +#: pretix/control/views/event.py:1442 pretix/control/views/event.py:1594 #: pretix/control/views/item.py:282 pretix/control/views/item.py:329 #: pretix/control/views/item.py:789 pretix/control/views/item.py:815 #: pretix/control/views/item.py:935 pretix/control/views/item.py:1139 -#: pretix/control/views/item.py:1305 pretix/control/views/item.py:1501 +#: pretix/control/views/item.py:1305 pretix/control/views/item.py:1497 #: pretix/control/views/organizer.py:281 pretix/control/views/organizer.py:309 #: pretix/control/views/organizer.py:1454 pretix/control/views/subevents.py:521 -#: pretix/control/views/subevents.py:647 pretix/control/views/subevents.py:1063 -#: pretix/control/views/subevents.py:1525 pretix/control/views/user.py:342 +#: pretix/control/views/subevents.py:666 pretix/control/views/subevents.py:1111 +#: pretix/control/views/subevents.py:1573 pretix/control/views/user.py:342 #: pretix/control/views/user.py:861 pretix/control/views/user.py:901 #: pretix/control/views/vouchers.py:278 pretix/control/views/vouchers.py:352 #: pretix/control/views/vouchers.py:535 pretix/control/views/waitinglist.py:427 @@ -25445,133 +25482,133 @@ msgstr "" msgid "Not all discounts have been selected." msgstr "" -#: pretix/control/views/event.py:455 +#: pretix/control/views/event.py:463 msgid "" "You do not have sufficient permission to enable plugins that need to be " "enabled for the entire organizer account." msgstr "" -#: pretix/control/views/event.py:472 pretix/control/views/organizer.py:716 +#: pretix/control/views/event.py:480 pretix/control/views/organizer.py:716 #, python-brace-format msgid "The plugin {} is now active, you can configure it here:" msgstr "" -#: pretix/control/views/event.py:481 pretix/control/views/organizer.py:725 +#: pretix/control/views/event.py:489 pretix/control/views/organizer.py:725 #, python-brace-format msgid "The plugin {} is now active." msgstr "" -#: pretix/control/views/event.py:546 +#: pretix/control/views/event.py:554 msgid "" "This payment provider does not exist or the respective plugin is disabled." msgstr "" -#: pretix/control/views/event.py:858 pretix/control/views/organizer.py:362 +#: pretix/control/views/event.py:861 pretix/control/views/organizer.py:362 #: pretix/control/views/vouchers.py:562 msgid "invalid item" msgstr "" -#: pretix/control/views/event.py:945 +#: pretix/control/views/event.py:948 #, python-format msgid "Your order: %(code)s" msgstr "" -#: pretix/control/views/event.py:954 +#: pretix/control/views/event.py:957 msgid "Unknown email renderer." msgstr "" -#: pretix/control/views/event.py:970 pretix/control/views/orders.py:684 +#: pretix/control/views/event.py:973 pretix/control/views/orders.py:684 #: pretix/presale/views/order.py:1177 pretix/presale/views/order.py:1184 msgid "You requested an invalid ticket output type." msgstr "" -#: pretix/control/views/event.py:1118 +#: pretix/control/views/event.py:1121 msgid "Your shop is live now!" msgstr "" -#: pretix/control/views/event.py:1126 +#: pretix/control/views/event.py:1129 msgid "We've taken your shop down. You can re-enable it whenever you want!" msgstr "" -#: pretix/control/views/event.py:1134 +#: pretix/control/views/event.py:1137 msgid "Your shop is now in test mode!" msgstr "" -#: pretix/control/views/event.py:1151 +#: pretix/control/views/event.py:1154 msgid "" "An order could not be deleted as some constraints (e.g. data created by plug-" "ins) do not allow it." msgstr "" -#: pretix/control/views/event.py:1157 +#: pretix/control/views/event.py:1160 msgid "We've disabled test mode for you. Let's sell some real tickets!" msgstr "" -#: pretix/control/views/event.py:1179 +#: pretix/control/views/event.py:1182 msgid "This event can not be deleted." msgstr "" -#: pretix/control/views/event.py:1202 +#: pretix/control/views/event.py:1205 msgid "The event has been deleted." msgstr "" -#: pretix/control/views/event.py:1205 +#: pretix/control/views/event.py:1208 msgid "" "The event could not be deleted as some constraints (e.g. data created by " "plug-ins) do not allow it." msgstr "" -#: pretix/control/views/event.py:1221 +#: pretix/control/views/event.py:1224 #, python-brace-format msgid "" "Specifically, the following plugins still contain data depends on this " "event: {plugin_names}" msgstr "" -#: pretix/control/views/event.py:1301 pretix/control/views/orders.py:777 +#: pretix/control/views/event.py:1304 pretix/control/views/orders.py:764 msgid "The comment has been updated." msgstr "" -#: pretix/control/views/event.py:1303 pretix/control/views/orders.py:779 +#: pretix/control/views/event.py:1306 pretix/control/views/orders.py:766 msgid "Could not update the comment." msgstr "" -#: pretix/control/views/event.py:1331 pretix/control/views/main.py:362 +#: pretix/control/views/event.py:1334 pretix/control/views/main.py:362 msgid "VAT" msgstr "" -#: pretix/control/views/event.py:1367 +#: pretix/control/views/event.py:1370 msgid "The new tax rule has been created." msgstr "" -#: pretix/control/views/event.py:1390 pretix/control/views/event.py:1453 -#: pretix/control/views/event.py:1499 +#: pretix/control/views/event.py:1393 pretix/control/views/event.py:1456 +#: pretix/control/views/event.py:1502 msgid "The requested tax rule does not exist." msgstr "" -#: pretix/control/views/event.py:1508 +#: pretix/control/views/event.py:1511 msgid "The selected tax rule has been deleted." msgstr "" -#: pretix/control/views/event.py:1510 +#: pretix/control/views/event.py:1513 msgid "The selected tax rule can not be deleted." msgstr "" -#: pretix/control/views/event.py:1561 +#: pretix/control/views/event.py:1564 msgid "Your event is not empty, you need to set it up manually." msgstr "" -#: pretix/control/views/event.py:1696 +#: pretix/control/views/event.py:1699 msgid "" "Your changes have been saved. You can now go on with looking at the details " "or take your event live to start selling!" msgstr "" -#: pretix/control/views/event.py:1717 +#: pretix/control/views/event.py:1720 msgid "Regular ticket" msgstr "" -#: pretix/control/views/event.py:1722 +#: pretix/control/views/event.py:1725 msgid "Reduced ticket" msgstr "" @@ -25651,7 +25688,7 @@ msgid "" "plugin \"{plugin}\" with license \"{license}\"." msgstr "" -#: pretix/control/views/item.py:141 pretix/control/views/item.py:1606 +#: pretix/control/views/item.py:141 pretix/control/views/item.py:1602 msgid "The requested product does not exist." msgstr "" @@ -25756,25 +25793,25 @@ msgid "" "itself." msgstr "" -#: pretix/control/views/item.py:1517 +#: pretix/control/views/item.py:1513 msgid "" "You disabled this item, but it is still part of a product bundle. Your " "participants won't be able to buy the bundle unless you remove this item " "from it." msgstr "" -#: pretix/control/views/item.py:1626 +#: pretix/control/views/item.py:1622 msgid "" "The product could not be deleted as some constraints (e.g. data created by " "plug-ins) did not allow it. Deleting it could break reporting or other " "functionality, so the product has been disabled instead." msgstr "" -#: pretix/control/views/item.py:1630 +#: pretix/control/views/item.py:1626 msgid "The selected product has been deleted." msgstr "" -#: pretix/control/views/item.py:1639 +#: pretix/control/views/item.py:1635 msgid "The selected product has been deactivated." msgstr "" @@ -25901,7 +25938,7 @@ msgstr "" #: pretix/control/views/orders.py:686 pretix/presale/views/order.py:114 #: pretix/presale/views/order.py:382 pretix/presale/views/order.py:1006 -#: pretix/presale/views/order.py:1186 pretix/presale/views/order.py:1797 +#: pretix/presale/views/order.py:1186 pretix/presale/views/order.py:1794 msgid "Unknown order code or not authorized to access this order." msgstr "" @@ -25909,61 +25946,61 @@ msgstr "" msgid "Ticket download is not enabled for this product." msgstr "" -#: pretix/control/views/orders.py:813 +#: pretix/control/views/orders.py:800 msgid "The order has been deleted." msgstr "" -#: pretix/control/views/orders.py:820 +#: pretix/control/views/orders.py:807 msgid "" "The order could not be deleted as some constraints (e.g. data created by " "plug-ins) do not allow it." msgstr "" -#: pretix/control/views/orders.py:828 +#: pretix/control/views/orders.py:815 msgid "Only orders created in test mode can be deleted." msgstr "" -#: pretix/control/views/orders.py:849 +#: pretix/control/views/orders.py:836 msgid "The order has been denied and is therefore now canceled." msgstr "" -#: pretix/control/views/orders.py:889 +#: pretix/control/views/orders.py:876 msgid "This payment has been canceled." msgstr "" -#: pretix/control/views/orders.py:891 +#: pretix/control/views/orders.py:878 msgid "This payment can not be canceled at the moment." msgstr "" -#: pretix/control/views/orders.py:917 +#: pretix/control/views/orders.py:904 msgid "The refund has been canceled." msgstr "" -#: pretix/control/views/orders.py:919 +#: pretix/control/views/orders.py:906 msgid "This refund can not be canceled at the moment." msgstr "" -#: pretix/control/views/orders.py:953 +#: pretix/control/views/orders.py:940 msgid "The refund has been processed." msgstr "" -#: pretix/control/views/orders.py:955 pretix/control/views/orders.py:981 +#: pretix/control/views/orders.py:942 pretix/control/views/orders.py:968 msgid "This refund can not be processed at the moment." msgstr "" -#: pretix/control/views/orders.py:979 +#: pretix/control/views/orders.py:966 msgid "The refund has been marked as done." msgstr "" -#: pretix/control/views/orders.py:1005 +#: pretix/control/views/orders.py:992 msgid "The request has been removed. If you want, you can now inform the user." msgstr "" -#: pretix/control/views/orders.py:1012 +#: pretix/control/views/orders.py:999 msgid "Your cancellation request" msgstr "" -#: pretix/control/views/orders.py:1013 +#: pretix/control/views/orders.py:1000 #, python-brace-format msgid "" "Hello,\n" @@ -25974,66 +26011,66 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/control/views/orders.py:1068 +#: pretix/control/views/orders.py:1055 msgid "The payment has been marked as complete." msgstr "" -#: pretix/control/views/orders.py:1070 +#: pretix/control/views/orders.py:1057 msgid "This payment can not be confirmed at the moment." msgstr "" -#: pretix/control/views/orders.py:1161 +#: pretix/control/views/orders.py:1148 msgid "" "The refund was prevented due to a refund already being processed at the same " "time. Please have a look at the order details and check if your refund is " "still necessary." msgstr "" -#: pretix/control/views/orders.py:1266 +#: pretix/control/views/orders.py:1253 msgid "You entered an order in an event with a different currency." msgstr "" -#: pretix/control/views/orders.py:1317 +#: pretix/control/views/orders.py:1304 msgid "" "You can not refund more than the amount of a payment that is not yet " "refunded." msgstr "" -#: pretix/control/views/orders.py:1322 +#: pretix/control/views/orders.py:1309 msgid "" "You selected a partial refund for a payment method that only supports full " "refunds." msgstr "" -#: pretix/control/views/orders.py:1352 +#: pretix/control/views/orders.py:1339 #, python-brace-format msgid "" "One of the refunds failed to be processed. You should retry to refund in a " "different way. The error message was: {}" msgstr "" -#: pretix/control/views/orders.py:1358 +#: pretix/control/views/orders.py:1345 #, python-brace-format msgid "A refund of {} has been processed." msgstr "" -#: pretix/control/views/orders.py:1362 +#: pretix/control/views/orders.py:1349 #, python-brace-format msgid "" "A refund of {} has been saved, but not yet fully executed. You can mark it " "as complete below." msgstr "" -#: pretix/control/views/orders.py:1391 +#: pretix/control/views/orders.py:1378 msgid "" "A new gift card was created. You can now send the user their gift card code." msgstr "" -#: pretix/control/views/orders.py:1399 +#: pretix/control/views/orders.py:1386 msgid "Your gift card code" msgstr "" -#: pretix/control/views/orders.py:1401 +#: pretix/control/views/orders.py:1388 #, python-brace-format msgid "" "Hello,\n" @@ -26046,206 +26083,206 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/control/views/orders.py:1412 +#: pretix/control/views/orders.py:1399 msgid "The refunds you selected do not match the selected total refund amount." msgstr "" -#: pretix/control/views/orders.py:1542 +#: pretix/control/views/orders.py:1529 msgid "The payment has been created successfully." msgstr "" -#: pretix/control/views/orders.py:1556 +#: pretix/control/views/orders.py:1543 msgid "" "The order has been canceled. You can now select how you want to transfer the " "money back to the user." msgstr "" -#: pretix/control/views/orders.py:1627 pretix/control/views/orders.py:1631 +#: pretix/control/views/orders.py:1614 pretix/control/views/orders.py:1618 msgid "No VAT ID specified." msgstr "" -#: pretix/control/views/orders.py:1635 +#: pretix/control/views/orders.py:1622 msgid "No country specified." msgstr "" -#: pretix/control/views/orders.py:1639 +#: pretix/control/views/orders.py:1626 msgid "VAT ID could not be checked since this country is not supported." msgstr "" -#: pretix/control/views/orders.py:1658 +#: pretix/control/views/orders.py:1645 msgid "" "The VAT ID could not be checked, as the VAT checking service of the country " "is currently not available." msgstr "" -#: pretix/control/views/orders.py:1661 +#: pretix/control/views/orders.py:1648 msgid "This VAT ID is valid." msgstr "" -#: pretix/control/views/orders.py:1675 pretix/control/views/orders.py:1709 -#: pretix/control/views/orders.py:1741 +#: pretix/control/views/orders.py:1662 pretix/control/views/orders.py:1696 +#: pretix/control/views/orders.py:1728 msgid "Unknown invoice." msgstr "" -#: pretix/control/views/orders.py:1678 +#: pretix/control/views/orders.py:1665 msgid "Invoices may not be changed after they are created." msgstr "" -#: pretix/control/views/orders.py:1680 +#: pretix/control/views/orders.py:1667 msgid "Invoices may not be changed after they are transmitted." msgstr "" -#: pretix/control/views/orders.py:1682 pretix/control/views/orders.py:1744 +#: pretix/control/views/orders.py:1669 pretix/control/views/orders.py:1731 msgid "The invoice has already been canceled." msgstr "" -#: pretix/control/views/orders.py:1684 +#: pretix/control/views/orders.py:1671 msgid "The invoice file has already been exported." msgstr "" -#: pretix/control/views/orders.py:1686 +#: pretix/control/views/orders.py:1673 msgid "The invoice file is too old to be regenerated." msgstr "" -#: pretix/control/views/orders.py:1688 pretix/control/views/orders.py:1746 +#: pretix/control/views/orders.py:1675 pretix/control/views/orders.py:1733 msgid "The invoice has been cleaned of personal data." msgstr "" -#: pretix/control/views/orders.py:1713 +#: pretix/control/views/orders.py:1700 msgid "" "The invoice is currently being transmitted. You can start a new attempt " "after the current one has been completed." msgstr "" -#: pretix/control/views/orders.py:1720 +#: pretix/control/views/orders.py:1707 msgid "The invoice has been scheduled for retransmission." msgstr "" -#: pretix/control/views/orders.py:1754 +#: pretix/control/views/orders.py:1741 msgid "The invoice has been canceled." msgstr "" -#: pretix/control/views/orders.py:1793 +#: pretix/control/views/orders.py:1780 msgid "The email has been queued to be sent." msgstr "" -#: pretix/control/views/orders.py:1817 pretix/presale/views/order.py:1369 +#: pretix/control/views/orders.py:1804 pretix/presale/views/order.py:1365 msgid "This invoice has not been found" msgstr "" -#: pretix/control/views/orders.py:1824 pretix/presale/views/order.py:1376 +#: pretix/control/views/orders.py:1811 pretix/presale/views/order.py:1372 msgid "The invoice file is no longer stored on the server." msgstr "" -#: pretix/control/views/orders.py:1829 pretix/presale/views/order.py:1381 +#: pretix/control/views/orders.py:1816 pretix/presale/views/order.py:1377 msgid "" "The invoice file has not yet been generated, we will generate it for you " "now. Please try again in a few seconds." msgstr "" -#: pretix/control/views/orders.py:1857 +#: pretix/control/views/orders.py:1844 msgid "The payment term has been changed." msgstr "" -#: pretix/control/views/orders.py:1862 pretix/control/views/orders.py:1919 +#: pretix/control/views/orders.py:1849 pretix/control/views/orders.py:1906 msgid "" "We were not able to process the request completely as the server was too " "busy." msgstr "" -#: pretix/control/views/orders.py:1870 +#: pretix/control/views/orders.py:1857 msgid "This action is only allowed for pending orders." msgstr "" -#: pretix/control/views/orders.py:1925 +#: pretix/control/views/orders.py:1912 msgid "This action is only allowed for canceled orders." msgstr "" -#: pretix/control/views/orders.py:2183 pretix/presale/views/order.py:1664 +#: pretix/control/views/orders.py:2171 pretix/presale/views/order.py:1661 msgid "An error occurred. Please see the details below." msgstr "" -#: pretix/control/views/orders.py:2191 +#: pretix/control/views/orders.py:2179 msgid "The order has been changed and the user has been notified." msgstr "" -#: pretix/control/views/orders.py:2193 pretix/control/views/orders.py:2329 -#: pretix/control/views/orders.py:2366 pretix/presale/views/order.py:1700 +#: pretix/control/views/orders.py:2181 pretix/control/views/orders.py:2317 +#: pretix/control/views/orders.py:2354 pretix/presale/views/order.py:1697 msgid "The order has been changed." msgstr "" -#: pretix/control/views/orders.py:2220 pretix/presale/checkoutflow.py:943 +#: pretix/control/views/orders.py:2208 pretix/presale/checkoutflow.py:943 #: pretix/presale/views/order.py:845 pretix/presale/views/order.py:981 msgid "" "We had difficulties processing your input. Please review the errors below." msgstr "" -#: pretix/control/views/orders.py:2331 +#: pretix/control/views/orders.py:2319 msgid "Nothing about the order had to be changed." msgstr "" -#: pretix/control/views/orders.py:2412 pretix/plugins/sendmail/views.py:176 +#: pretix/control/views/orders.py:2400 pretix/plugins/sendmail/views.py:176 msgid "We could not send the email. See below for details." msgstr "" -#: pretix/control/views/orders.py:2428 pretix/control/views/orders.py:2492 +#: pretix/control/views/orders.py:2416 pretix/control/views/orders.py:2480 #: pretix/plugins/sendmail/views.py:204 pretix/plugins/sendmail/views.py:671 #, python-brace-format msgid "Subject: {subject}" msgstr "" -#: pretix/control/views/orders.py:2446 pretix/control/views/orders.py:2511 +#: pretix/control/views/orders.py:2434 pretix/control/views/orders.py:2499 #, python-brace-format msgid "Your message has been queued and will be sent to {}." msgstr "" -#: pretix/control/views/orders.py:2564 pretix/presale/views/order.py:1151 +#: pretix/control/views/orders.py:2552 pretix/presale/views/order.py:1151 msgid "" "This link is no longer valid. Please go back, refresh the page, and try " "again." msgstr "" -#: pretix/control/views/orders.py:2645 +#: pretix/control/views/orders.py:2633 msgid "There is no order with the given order code." msgstr "" -#: pretix/control/views/orders.py:2754 pretix/control/views/organizer.py:2088 +#: pretix/control/views/orders.py:2742 pretix/control/views/organizer.py:2088 msgid "The selected exporter was not found." msgstr "" -#: pretix/control/views/orders.py:2764 pretix/control/views/organizer.py:2098 +#: pretix/control/views/orders.py:2752 pretix/control/views/organizer.py:2098 msgid "There was a problem processing your input. See below for error details." msgstr "" -#: pretix/control/views/orders.py:2801 pretix/control/views/organizer.py:2134 +#: pretix/control/views/orders.py:2789 pretix/control/views/organizer.py:2134 msgid "" "Your user account does not have sufficient permission to run this report, " "therefore you cannot change it." msgstr "" -#: pretix/control/views/orders.py:2810 pretix/control/views/organizer.py:2143 +#: pretix/control/views/orders.py:2798 pretix/control/views/organizer.py:2143 msgid "" "Your user account does not have sufficient permission to run this report, " "therefore you cannot schedule it." msgstr "" -#: pretix/control/views/orders.py:2826 pretix/control/views/organizer.py:2159 +#: pretix/control/views/orders.py:2814 pretix/control/views/organizer.py:2159 #, python-brace-format msgid "" "Your export schedule has been saved. The next export will start around " "{datetime}." msgstr "" -#: pretix/control/views/orders.py:2831 pretix/control/views/organizer.py:2164 +#: pretix/control/views/orders.py:2819 pretix/control/views/organizer.py:2164 msgid "Your export schedule has been saved, but no next export is planned." msgstr "" -#: pretix/control/views/orders.py:2876 pretix/control/views/organizer.py:2210 +#: pretix/control/views/orders.py:2864 pretix/control/views/organizer.py:2210 #, python-brace-format msgid "Export: {title}" msgstr "" -#: pretix/control/views/orders.py:2877 pretix/control/views/organizer.py:2212 +#: pretix/control/views/orders.py:2865 pretix/control/views/organizer.py:2212 #, python-brace-format msgid "" "Hello,\n" @@ -26253,25 +26290,25 @@ msgid "" "attached to this email, you can find a new scheduled report for {name}." msgstr "" -#: pretix/control/views/orders.py:2983 pretix/control/views/organizer.py:2346 +#: pretix/control/views/orders.py:2971 pretix/control/views/organizer.py:2346 msgid "" "Your export is queued to start soon. The results will be send via email. " "Depending on system load and type and size of export, this may take a few " "minutes." msgstr "" -#: pretix/control/views/orders.py:3070 pretix/control/views/orders.py:3151 +#: pretix/control/views/orders.py:3058 pretix/control/views/orders.py:3139 msgid "All orders have been canceled." msgstr "" -#: pretix/control/views/orders.py:3072 pretix/control/views/orders.py:3153 +#: pretix/control/views/orders.py:3060 pretix/control/views/orders.py:3141 #, python-brace-format msgid "" "The orders have been canceled. An error occurred with {count} orders, please " "check all uncanceled orders." msgstr "" -#: pretix/control/views/orders.py:3100 pretix/control/views/orders.py:3174 +#: pretix/control/views/orders.py:3088 pretix/control/views/orders.py:3162 msgid "Your input was not valid." msgstr "" @@ -26596,31 +26633,35 @@ msgctxt "subevent" msgid "The selected date has been deleted." msgstr "" -#: pretix/control/views/subevents.py:619 +#: pretix/control/views/subevents.py:630 msgctxt "subevent" msgid "The new date has been created." msgstr "" -#: pretix/control/views/subevents.py:688 +#: pretix/control/views/subevents.py:707 msgctxt "subevent" msgid "The selected dates have been disabled." msgstr "" -#: pretix/control/views/subevents.py:701 +#: pretix/control/views/subevents.py:720 msgctxt "subevent" msgid "The selected dates have been enabled." msgstr "" -#: pretix/control/views/subevents.py:730 +#: pretix/control/views/subevents.py:749 msgctxt "subevent" msgid "The selected dates have been deleted or disabled." msgstr "" -#: pretix/control/views/subevents.py:918 +#: pretix/control/views/subevents.py:937 msgid "Please do not create more than 100.000 dates at once." msgstr "" -#: pretix/control/views/subevents.py:1054 +#: pretix/control/views/subevents.py:966 +msgid "All dates would be skipped because they conflict with existing dates." +msgstr "" + +#: pretix/control/views/subevents.py:1102 #, python-brace-format msgctxt "subevent" msgid "{} new dates have been created." @@ -30514,7 +30555,7 @@ msgstr "" #: pretix/presale/checkoutflow.py:676 pretix/presale/checkoutflow.py:684 #: pretix/presale/views/cart.py:195 pretix/presale/views/cart.py:200 #: pretix/presale/views/cart.py:218 pretix/presale/views/cart.py:231 -#: pretix/presale/views/order.py:1585 pretix/presale/views/order.py:1593 +#: pretix/presale/views/order.py:1582 pretix/presale/views/order.py:1590 msgid "Please enter numbers only." msgstr "" @@ -30589,41 +30630,41 @@ msgstr "" msgid "You need to check all checkboxes on the bottom of the page." msgstr "" -#: pretix/presale/forms/checkout.py:70 +#: pretix/presale/forms/checkout.py:67 msgid "Email address (repeated)" msgstr "" -#: pretix/presale/forms/checkout.py:71 +#: pretix/presale/forms/checkout.py:68 msgid "" "Please enter the same email address again to make sure you typed it " "correctly." msgstr "" -#: pretix/presale/forms/checkout.py:110 +#: pretix/presale/forms/checkout.py:107 msgid "Please enter the same email address twice." msgstr "" -#: pretix/presale/forms/checkout.py:125 +#: pretix/presale/forms/checkout.py:122 msgid "Save to address" msgstr "" -#: pretix/presale/forms/checkout.py:126 +#: pretix/presale/forms/checkout.py:123 msgid "Create new address" msgstr "" -#: pretix/presale/forms/checkout.py:129 +#: pretix/presale/forms/checkout.py:126 msgid "Save address in my customer account for future purchases" msgstr "" -#: pretix/presale/forms/checkout.py:159 +#: pretix/presale/forms/checkout.py:156 msgid "Save answers to my customer profiles for future purchases" msgstr "" -#: pretix/presale/forms/checkout.py:166 +#: pretix/presale/forms/checkout.py:163 msgid "Save to profile" msgstr "" -#: pretix/presale/forms/checkout.py:167 +#: pretix/presale/forms/checkout.py:164 msgid "Create new profile" msgstr "" @@ -30687,19 +30728,19 @@ msgstr "" msgid "Please enter the correct result." msgstr "" -#: pretix/presale/forms/customer.py:346 +#: pretix/presale/forms/customer.py:347 msgid "For security reasons, please wait 10 minutes before you try again." msgstr "" -#: pretix/presale/forms/customer.py:347 +#: pretix/presale/forms/customer.py:348 msgid "A user with this email address is not known in our system." msgstr "" -#: pretix/presale/forms/customer.py:476 +#: pretix/presale/forms/customer.py:477 msgid "Only required if you change your email address" msgstr "" -#: pretix/presale/forms/customer.py:514 +#: pretix/presale/forms/customer.py:515 #, python-brace-format msgid "" "To change your email address, change it in your {provider} account and then " @@ -31999,12 +32040,12 @@ msgid "Choose date to book a ticket" msgstr "" #: pretix/presale/templates/pretixpresale/event/index.html:155 -#: pretix/presale/views/waiting.py:141 pretix/presale/views/widget.py:806 +#: pretix/presale/views/waiting.py:146 pretix/presale/views/widget.py:804 msgid "The booking period for this event is over." msgstr "" #: pretix/presale/templates/pretixpresale/event/index.html:163 -#: pretix/presale/views/widget.py:808 +#: pretix/presale/views/widget.py:806 #, python-format msgid "The booking period for this event will start on %(date)s at %(time)s." msgstr "" @@ -33121,7 +33162,7 @@ msgstr "" msgid "The selected organizer was not found." msgstr "" -#: pretix/presale/views/__init__.py:298 +#: pretix/presale/views/__init__.py:316 #, python-brace-format msgid "" "Your selected payment method can only be used for a payment of at least " @@ -33132,49 +33173,49 @@ msgstr "" msgid "Please enter positive numbers only." msgstr "" -#: pretix/presale/views/cart.py:441 +#: pretix/presale/views/cart.py:443 msgid "We applied the voucher to as many products in your cart as we could." msgstr "" -#: pretix/presale/views/cart.py:476 pretix/presale/views/cart.py:484 +#: pretix/presale/views/cart.py:478 pretix/presale/views/cart.py:486 msgid "" "The gift card has been saved to your cart. Please continue your checkout." msgstr "" -#: pretix/presale/views/cart.py:520 +#: pretix/presale/views/cart.py:522 msgid "Your cart has been updated." msgstr "" -#: pretix/presale/views/cart.py:523 pretix/presale/views/cart.py:549 +#: pretix/presale/views/cart.py:525 pretix/presale/views/cart.py:551 msgid "Your cart is now empty." msgstr "" -#: pretix/presale/views/cart.py:570 +#: pretix/presale/views/cart.py:584 msgid "" "Your cart timeout was extended. Please note that some of the prices in your " "cart changed." msgstr "" -#: pretix/presale/views/cart.py:573 +#: pretix/presale/views/cart.py:587 msgid "Your cart timeout was extended." msgstr "" -#: pretix/presale/views/cart.py:588 +#: pretix/presale/views/cart.py:602 msgid "The products have been successfully added to your cart." msgstr "" -#: pretix/presale/views/cart.py:612 pretix/presale/views/event.py:543 +#: pretix/presale/views/cart.py:626 pretix/presale/views/event.py:543 #: pretix/presale/views/widget.py:399 msgid "Tickets for this event cannot be purchased on this sales channel." msgstr "" -#: pretix/presale/views/cart.py:767 +#: pretix/presale/views/cart.py:781 msgid "" "The gift card has been saved to your cart. Please now select the products " "you want to purchase." msgstr "" -#: pretix/presale/views/cart.py:795 +#: pretix/presale/views/cart.py:809 msgctxt "subevent" msgid "We were unable to find the specified date." msgstr "" @@ -33231,38 +33272,38 @@ msgid "" "used for a different account in this system." msgstr "" -#: pretix/presale/views/event.py:921 +#: pretix/presale/views/event.py:919 msgid "Unknown event code or not authorized to access this event." msgstr "" -#: pretix/presale/views/event.py:928 +#: pretix/presale/views/event.py:926 msgctxt "subevent" msgid "No date selected." msgstr "" -#: pretix/presale/views/event.py:931 +#: pretix/presale/views/event.py:929 msgctxt "subevent" msgid "Unknown date selected." msgstr "" -#: pretix/presale/views/event.py:956 pretix/presale/views/event.py:964 -#: pretix/presale/views/event.py:967 +#: pretix/presale/views/event.py:954 pretix/presale/views/event.py:962 +#: pretix/presale/views/event.py:965 msgid "Please go back and try again." msgstr "" -#: pretix/presale/views/event.py:980 +#: pretix/presale/views/event.py:978 msgid "Fake date time" msgstr "" -#: pretix/presale/views/event.py:992 +#: pretix/presale/views/event.py:990 msgid "You are not allowed to access time machine mode." msgstr "" -#: pretix/presale/views/event.py:994 +#: pretix/presale/views/event.py:992 msgid "This feature is only available in test mode." msgstr "" -#: pretix/presale/views/event.py:1011 +#: pretix/presale/views/event.py:1009 msgid "Time machine disabled!" msgstr "" @@ -33317,47 +33358,47 @@ msgstr "" msgid "Please click the link we sent you via email to download your tickets." msgstr "" -#: pretix/presale/views/order.py:1692 +#: pretix/presale/views/order.py:1689 #, python-brace-format msgid "" "The order has been changed. You can now proceed by paying the open amount of " "{amount}." msgstr "" -#: pretix/presale/views/order.py:1704 +#: pretix/presale/views/order.py:1701 msgid "You did not make any changes." msgstr "" -#: pretix/presale/views/order.py:1729 +#: pretix/presale/views/order.py:1726 msgid "You may not change your order in a way that reduces the total price." msgstr "" -#: pretix/presale/views/order.py:1731 +#: pretix/presale/views/order.py:1728 msgid "You may only change your order in a way that increases the total price." msgstr "" -#: pretix/presale/views/order.py:1733 +#: pretix/presale/views/order.py:1730 msgid "You may not change your order in a way that changes the total price." msgstr "" -#: pretix/presale/views/order.py:1735 +#: pretix/presale/views/order.py:1732 msgid "You may not change your order in a way that would require a refund." msgstr "" -#: pretix/presale/views/order.py:1743 +#: pretix/presale/views/order.py:1740 msgid "" "You may not change your order in a way that increases the total price since " "payments are no longer being accepted for this event." msgstr "" -#: pretix/presale/views/order.py:1749 +#: pretix/presale/views/order.py:1746 msgid "" "You may not change your order in a way that requires additional payment " "while we are processing your current payment. Please check back after your " "current payment has been accepted." msgstr "" -#: pretix/presale/views/order.py:1768 pretix/presale/views/order.py:1799 +#: pretix/presale/views/order.py:1765 pretix/presale/views/order.py:1796 msgid "You cannot change this order." msgstr "" @@ -33380,40 +33421,40 @@ msgid "" "order codes." msgstr "" -#: pretix/presale/views/waiting.py:127 +#: pretix/presale/views/waiting.py:132 msgid "" "No ticket types are available for the waiting list, have a look at the " "ticket shop instead." msgstr "" -#: pretix/presale/views/waiting.py:137 pretix/presale/views/waiting.py:161 +#: pretix/presale/views/waiting.py:142 pretix/presale/views/waiting.py:166 msgid "Waiting lists are disabled for this event." msgstr "" -#: pretix/presale/views/waiting.py:173 +#: pretix/presale/views/waiting.py:178 msgid "" "You cannot add yourself to the waiting list as this product is currently " "available." msgstr "" -#: pretix/presale/views/waiting.py:180 +#: pretix/presale/views/waiting.py:185 #, python-brace-format msgid "" "We've added you to the waiting list. We will send an email to {email} as " "soon as this product gets available again." msgstr "" -#: pretix/presale/views/waiting.py:208 +#: pretix/presale/views/waiting.py:213 msgid "We could not find you on our waiting list." msgstr "" -#: pretix/presale/views/waiting.py:212 +#: pretix/presale/views/waiting.py:217 msgid "" "Your waiting list spot is no longer valid or already used. There's nothing " "more to do here." msgstr "" -#: pretix/presale/views/waiting.py:222 +#: pretix/presale/views/waiting.py:227 msgid "" "Thank you very much! We will assign your spot on the waiting list to someone " "else." @@ -33440,18 +33481,18 @@ msgstr "" msgid "from %(start_date)s" msgstr "" -#: pretix/settings.py:844 +#: pretix/settings.py:862 msgid "User profile only" msgstr "" -#: pretix/settings.py:845 +#: pretix/settings.py:863 msgid "Read access" msgstr "" -#: pretix/settings.py:846 +#: pretix/settings.py:864 msgid "Write access" msgstr "" -#: pretix/settings.py:857 +#: pretix/settings.py:875 msgid "Kosovo" msgstr "" diff --git a/src/pretix/locale/ang/LC_MESSAGES/djangojs.po b/src/pretix/locale/ang/LC_MESSAGES/djangojs.po index 039024278..e7c99373c 100644 --- a/src/pretix/locale/ang/LC_MESSAGES/djangojs.po +++ b/src/pretix/locale/ang/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-17 14:06+0000\n" +"POT-Creation-Date: 2026-04-28 09:04+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -632,56 +632,56 @@ msgstr "" msgid "Unknown error." msgstr "" -#: pretix/static/pretixcontrol/js/ui/main.js:309 +#: pretix/static/pretixcontrol/js/ui/main.js:310 msgid "Your color has great contrast and will provide excellent accessibility." msgstr "" -#: pretix/static/pretixcontrol/js/ui/main.js:313 +#: pretix/static/pretixcontrol/js/ui/main.js:314 msgid "" "Your color has decent contrast and is sufficient for minimum accessibility " "requirements." msgstr "" -#: pretix/static/pretixcontrol/js/ui/main.js:317 +#: pretix/static/pretixcontrol/js/ui/main.js:318 msgid "" "Your color has insufficient contrast to white. Accessibility of your site " "will be impacted." msgstr "" -#: pretix/static/pretixcontrol/js/ui/main.js:445 -#: pretix/static/pretixcontrol/js/ui/main.js:465 +#: pretix/static/pretixcontrol/js/ui/main.js:446 +#: pretix/static/pretixcontrol/js/ui/main.js:466 msgid "Search query" msgstr "" -#: pretix/static/pretixcontrol/js/ui/main.js:463 +#: pretix/static/pretixcontrol/js/ui/main.js:464 msgid "All" msgstr "" -#: pretix/static/pretixcontrol/js/ui/main.js:464 +#: pretix/static/pretixcontrol/js/ui/main.js:465 msgid "None" msgstr "" -#: pretix/static/pretixcontrol/js/ui/main.js:468 +#: pretix/static/pretixcontrol/js/ui/main.js:469 msgid "Selected only" msgstr "" -#: pretix/static/pretixcontrol/js/ui/main.js:841 +#: pretix/static/pretixcontrol/js/ui/main.js:842 msgid "Enter page number between 1 and %(max)s." msgstr "" -#: pretix/static/pretixcontrol/js/ui/main.js:844 +#: pretix/static/pretixcontrol/js/ui/main.js:845 msgid "Invalid page number." msgstr "" -#: pretix/static/pretixcontrol/js/ui/main.js:1002 +#: pretix/static/pretixcontrol/js/ui/main.js:1003 msgid "Use a different name internally" msgstr "" -#: pretix/static/pretixcontrol/js/ui/main.js:1042 +#: pretix/static/pretixcontrol/js/ui/main.js:1043 msgid "Click to close" msgstr "" -#: pretix/static/pretixcontrol/js/ui/main.js:1123 +#: pretix/static/pretixcontrol/js/ui/main.js:1124 msgid "You have unsaved changes!" msgstr "" diff --git a/src/pretix/locale/ar/LC_MESSAGES/django.po b/src/pretix/locale/ar/LC_MESSAGES/django.po index 01ae554a2..0565acedf 100644 --- a/src/pretix/locale/ar/LC_MESSAGES/django.po +++ b/src/pretix/locale/ar/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-30 11:22+0000\n" +"POT-Creation-Date: 2026-04-28 09:03+0000\n" "PO-Revision-Date: 2025-04-08 18:00+0000\n" "Last-Translator: Menaouer Chaabi " "<98581961+DerJimno@users.noreply.github.com>\n" @@ -212,17 +212,17 @@ msgid "Target URL" msgstr "الرابط المستهدف" #: pretix/api/models.py:118 pretix/base/models/devices.py:125 -#: pretix/base/models/organizer.py:373 +#: pretix/base/models/organizer.py:379 msgid "All events (including newly created ones)" msgstr "كل الفعاليات (بما في ذلك تلك التي تم إنشاؤها حديثا)" #: pretix/api/models.py:119 pretix/base/models/devices.py:126 -#: pretix/base/models/organizer.py:374 +#: pretix/base/models/organizer.py:380 msgid "Limit to events" msgstr "حد على الفعاليات" #: pretix/api/models.py:120 pretix/base/exporters/orderlist.py:306 -#: pretix/base/exporters/orderlist.py:1137 +#: pretix/base/exporters/orderlist.py:1149 #: pretix/base/modelimport_vouchers.py:326 pretix/base/models/orders.py:271 #: pretix/base/models/vouchers.py:295 pretix/control/forms/filter.py:593 #: pretix/control/templates/pretixcontrol/order/index.html:981 @@ -234,12 +234,12 @@ msgstr "حد على الفعاليات" msgid "Comment" msgstr "تعليق" -#: pretix/api/serializers/cart.py:168 pretix/api/serializers/order.py:1533 +#: pretix/api/serializers/cart.py:168 pretix/api/serializers/order.py:1537 #, python-brace-format msgid "The product \"{}\" is not assigned to a quota." msgstr "لم يتم تعيين حصة للمنتج \"{}\"." -#: pretix/api/serializers/checkin.py:65 pretix/base/models/event.py:1750 +#: pretix/api/serializers/checkin.py:65 pretix/base/models/event.py:1756 #: pretix/base/models/items.py:1917 pretix/base/models/items.py:2203 msgid "One or more items do not belong to this event." msgstr "هناك عنصر أو أكثر لا ينتمي إلى هذه الفعالية." @@ -369,7 +369,7 @@ msgstr "لا يمكن طرح هذا النوع من الأسئلة أثناء ت msgid "This type of question cannot be shown during check-in." msgstr "لا يمكن عرض هذا النوع من الأسئلة أثناء تسجيل الدخول." -#: pretix/api/serializers/media.py:116 +#: pretix/api/serializers/media.py:117 msgid "" "A medium with the same identifier and type already exists in your organizer " "account." @@ -380,25 +380,25 @@ msgstr "توجد وسيلة بنفس المعرف والنوع في حساب ا msgid "\"{input}\" is not a valid choice." msgstr "\"{input}\" ادخال غير صالحة، يرجى المحاولة مرة أخرى." -#: pretix/api/serializers/order.py:1494 pretix/api/views/cart.py:224 +#: pretix/api/serializers/order.py:1498 pretix/api/views/cart.py:224 #: pretix/base/services/orders.py:1593 #, python-brace-format msgid "The selected seat \"{seat}\" is not available." msgstr "المقعد المحدد \"{seat}\" غير متوفر." -#: pretix/api/serializers/order.py:1520 pretix/api/serializers/order.py:1527 +#: pretix/api/serializers/order.py:1524 pretix/api/serializers/order.py:1531 #, python-brace-format msgid "The product \"{}\" is not available on this date." msgstr "المنتج \"{}\" غير متوفر في هذا التاريخ." -#: pretix/api/serializers/order.py:1542 pretix/api/views/cart.py:200 +#: pretix/api/serializers/order.py:1546 pretix/api/views/cart.py:200 #, python-brace-format msgid "" "There is not enough quota available on quota \"{}\" to perform the operation." msgstr "لا توجد حصة كافية متاحة في الحصة \"{}\" لإجراء العملية." #: pretix/api/serializers/organizer.py:152 -#: pretix/control/forms/organizer.py:1060 pretix/presale/forms/customer.py:471 +#: pretix/control/forms/organizer.py:1060 pretix/presale/forms/customer.py:472 msgid "An account with this email address is already registered." msgstr "هناك حساب مرتبط بهذا البريد الإلكتروني مسبقا." @@ -409,19 +409,19 @@ msgid "" "organizer account." msgstr "توجد مسبقا بطاقة هدايا بنفس السر في حسابك أو حساب منظم تابع." -#: pretix/api/serializers/organizer.py:482 +#: pretix/api/serializers/organizer.py:495 #: pretix/control/views/organizer.py:1039 #, fuzzy #| msgid "Account information" msgid "Account invitation" msgstr "معلومات الحساب" -#: pretix/api/serializers/organizer.py:503 +#: pretix/api/serializers/organizer.py:516 #: pretix/control/views/organizer.py:1138 msgid "This user already has been invited for this team." msgstr "تمت دعوة هذا المستخدم سابقا لهذا الفريق." -#: pretix/api/serializers/organizer.py:519 +#: pretix/api/serializers/organizer.py:532 #: pretix/control/views/organizer.py:1155 msgid "This user already has permissions for this team." msgstr "هذا المستخدم لديه تصاريح سابقة لهذا الفريق." @@ -442,17 +442,17 @@ msgid "" "account." msgstr "تم تفويض التطبيق \"{application_name}\" للوصول إلى حسابك." -#: pretix/api/views/order.py:607 pretix/control/views/orders.py:1605 +#: pretix/api/views/order.py:610 pretix/control/views/orders.py:1592 #: pretix/presale/views/order.py:788 pretix/presale/views/order.py:868 msgid "You cannot generate an invoice for this order." msgstr "لا يمكن انشاء فاتورة لهذا الطلب." -#: pretix/api/views/order.py:612 pretix/control/views/orders.py:1607 +#: pretix/api/views/order.py:615 pretix/control/views/orders.py:1594 #: pretix/presale/views/order.py:790 pretix/presale/views/order.py:870 msgid "An invoice for this order already exists." msgstr "توجد فاتورة مصدرة لهذا الطلب مسبقاً." -#: pretix/api/views/order.py:715 pretix/base/services/cart.py:223 +#: pretix/api/views/order.py:718 pretix/base/services/cart.py:223 #: pretix/base/services/orders.py:189 pretix/presale/views/order.py:852 msgid "One of the selected products is not available in the selected country." msgstr "أحد المنتجات المختارة غير متوفر في البلد المحدد." @@ -472,7 +472,7 @@ msgstr "تم تمييز الطلب على أنه مدفوع" #: pretix/api/webhooks.py:307 pretix/base/models/checkin.py:355 #: pretix/base/notifications.py:251 #: pretix/control/templates/pretixcontrol/event/mail.html:114 -#: pretix/control/views/orders.py:1566 +#: pretix/control/views/orders.py:1553 msgid "Order canceled" msgstr "تم إلغاء الطلب" @@ -713,13 +713,13 @@ msgid "Gift card used in transaction" msgstr "استرداد بطاقة هدية" #: pretix/base/addressvalidation.py:100 pretix/base/addressvalidation.py:103 -#: pretix/base/addressvalidation.py:108 pretix/base/forms/questions.py:1054 -#: pretix/base/forms/questions.py:1085 pretix/base/forms/questions.py:1337 -#: pretix/base/forms/questions.py:1373 pretix/base/payment.py:97 +#: pretix/base/addressvalidation.py:108 pretix/base/forms/questions.py:1060 +#: pretix/base/forms/questions.py:1091 pretix/base/forms/questions.py:1343 +#: pretix/base/forms/questions.py:1379 pretix/base/payment.py:97 #: pretix/control/forms/event.py:856 pretix/control/forms/event.py:862 #: pretix/control/forms/event.py:981 pretix/control/forms/event.py:1630 #: pretix/control/forms/mailsetup.py:87 pretix/control/forms/mailsetup.py:129 -#: pretix/control/forms/subevents.py:181 +#: pretix/control/forms/subevents.py:191 #: pretix/plugins/banktransfer/payment.py:477 #: pretix/plugins/banktransfer/payment.py:483 #: pretix/presale/forms/customer.py:152 @@ -744,7 +744,7 @@ msgstr "{system} اسم المستخدم" #: pretix/base/exporters/orderlist.py:483 #: pretix/base/exporters/orderlist.py:622 #: pretix/base/exporters/waitinglist.py:110 pretix/base/forms/auth.py:269 -#: pretix/base/invoicing/email.py:42 pretix/base/models/auth.py:269 +#: pretix/base/invoicing/email.py:42 pretix/base/models/auth.py:278 #: pretix/base/models/customers.py:102 pretix/base/models/notifications.py:46 #: pretix/base/models/orders.py:245 pretix/base/pdf.py:336 #: pretix/control/navigation.py:86 pretix/control/navigation.py:540 @@ -755,20 +755,20 @@ msgstr "{system} اسم المستخدم" #: pretix/control/templates/pretixcontrol/organizers/customers.html:63 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:164 #: pretix/plugins/checkinlists/exporters.py:509 -#: pretix/presale/checkoutflow.py:1553 pretix/presale/forms/checkout.py:57 +#: pretix/presale/checkoutflow.py:1553 pretix/presale/forms/checkout.py:54 #: pretix/presale/forms/customer.py:57 pretix/presale/forms/customer.py:142 -#: pretix/presale/forms/customer.py:298 pretix/presale/forms/customer.py:350 -#: pretix/presale/forms/customer.py:394 pretix/presale/forms/user.py:40 +#: pretix/presale/forms/customer.py:298 pretix/presale/forms/customer.py:351 +#: pretix/presale/forms/customer.py:395 pretix/presale/forms/user.py:40 #: pretix/presale/templates/pretixpresale/event/checkout_customer.html:31 #: pretix/presale/templates/pretixpresale/event/order.html:300 msgid "Email" msgstr "البريد الإلكتروني" #: pretix/base/auth.py:157 pretix/base/forms/auth.py:164 -#: pretix/base/forms/auth.py:225 pretix/base/models/auth.py:781 +#: pretix/base/forms/auth.py:225 pretix/base/models/auth.py:802 #: pretix/base/models/customers.py:104 pretix/control/forms/mailsetup.py:57 #: pretix/control/templates/pretixcontrol/user/settings.html:64 -#: pretix/presale/forms/customer.py:61 pretix/presale/forms/customer.py:302 +#: pretix/presale/forms/customer.py:61 pretix/presale/forms/customer.py:303 msgid "Password" msgstr "كلمة المرور" @@ -946,7 +946,7 @@ msgstr "إرسال معلومات الاسترداد" #: pretix/base/datasync/sourcefields.py:175 #: pretix/base/exporters/orderlist.py:640 -#: pretix/base/exporters/orderlist.py:645 pretix/base/forms/questions.py:687 +#: pretix/base/exporters/orderlist.py:645 pretix/base/forms/questions.py:693 #: pretix/base/modelimport_orders.py:347 pretix/base/models/customers.py:344 #: pretix/base/models/orders.py:1512 pretix/base/pdf.py:183 #: pretix/control/forms/filter.py:684 pretix/control/forms/organizer.py:1154 @@ -973,7 +973,7 @@ msgid "Attendee" msgstr "اسم الحاضر" #: pretix/base/datasync/sourcefields.py:207 -#: pretix/base/exporters/orderlist.py:647 pretix/base/forms/questions.py:693 +#: pretix/base/exporters/orderlist.py:647 pretix/base/forms/questions.py:699 #: pretix/base/models/customers.py:351 pretix/base/models/orders.py:1520 #: pretix/base/pdf.py:225 #: pretix/control/templates/pretixcontrol/order/index.html:576 @@ -1251,25 +1251,25 @@ msgid "Question: {name}" msgstr "سؤال: %(name)s" #: pretix/base/datasync/sourcefields.py:604 -#: pretix/base/datasync/sourcefields.py:614 pretix/base/settings.py:3775 -#: pretix/base/settings.py:3788 pretix/base/settings.py:3804 -#: pretix/base/settings.py:3854 pretix/base/settings.py:3867 -#: pretix/base/settings.py:3881 pretix/base/settings.py:3934 -#: pretix/base/settings.py:3955 pretix/base/settings.py:3977 +#: pretix/base/datasync/sourcefields.py:614 pretix/base/settings.py:3777 +#: pretix/base/settings.py:3790 pretix/base/settings.py:3806 +#: pretix/base/settings.py:3856 pretix/base/settings.py:3869 +#: pretix/base/settings.py:3883 pretix/base/settings.py:3936 +#: pretix/base/settings.py:3957 pretix/base/settings.py:3979 msgid "Given name" msgstr "الاسم الاول" #: pretix/base/datasync/sourcefields.py:628 -#: pretix/base/datasync/sourcefields.py:638 pretix/base/settings.py:3776 -#: pretix/base/settings.py:3789 pretix/base/settings.py:3805 -#: pretix/base/settings.py:3821 pretix/base/settings.py:3838 -#: pretix/base/settings.py:3853 pretix/base/settings.py:3868 -#: pretix/base/settings.py:3882 pretix/base/settings.py:3935 -#: pretix/base/settings.py:3956 pretix/base/settings.py:3978 +#: pretix/base/datasync/sourcefields.py:638 pretix/base/settings.py:3778 +#: pretix/base/settings.py:3791 pretix/base/settings.py:3807 +#: pretix/base/settings.py:3823 pretix/base/settings.py:3840 +#: pretix/base/settings.py:3855 pretix/base/settings.py:3870 +#: pretix/base/settings.py:3884 pretix/base/settings.py:3937 +#: pretix/base/settings.py:3958 pretix/base/settings.py:3980 msgid "Family name" msgstr "اسم العائلة" -#: pretix/base/email.py:220 pretix/base/exporters/items.py:157 +#: pretix/base/email.py:223 pretix/base/exporters/items.py:157 #: pretix/base/exporters/items.py:205 pretix/base/models/tax.py:382 #: pretix/control/templates/pretixcontrol/event/tax.html:37 #: pretix/control/templates/pretixcontrol/event/tax.html:60 @@ -1283,31 +1283,31 @@ msgstr "اسم العائلة" msgid "Default" msgstr "افتراضي" -#: pretix/base/email.py:227 +#: pretix/base/email.py:230 msgid "Simple with logo" msgstr "بسيط مع الشعار" -#: pretix/base/exporter.py:217 pretix/base/exporter.py:350 +#: pretix/base/exporter.py:227 pretix/base/exporter.py:360 msgid "Export format" msgstr "طريقة التصدير" -#: pretix/base/exporter.py:219 +#: pretix/base/exporter.py:229 msgid "Excel (.xlsx)" msgstr "إكسل (.xlsx)" -#: pretix/base/exporter.py:220 pretix/base/exporter.py:342 +#: pretix/base/exporter.py:230 pretix/base/exporter.py:352 msgid "CSV (with commas)" msgstr "CSV (مع فواصل)" -#: pretix/base/exporter.py:221 pretix/base/exporter.py:343 +#: pretix/base/exporter.py:231 pretix/base/exporter.py:353 msgid "CSV (Excel-style)" msgstr "CSV (نمط إكسل)" -#: pretix/base/exporter.py:222 pretix/base/exporter.py:344 +#: pretix/base/exporter.py:232 pretix/base/exporter.py:354 msgid "CSV (with semicolons)" msgstr "CSV (مع فواصل منقوطة)" -#: pretix/base/exporter.py:338 +#: pretix/base/exporter.py:348 msgid "Combined Excel (.xlsx)" msgstr "إكسل مجمع (.xlsx)" @@ -1321,7 +1321,7 @@ msgstr "إجابات السؤال" #: pretix/base/exporters/mail.py:53 pretix/base/exporters/orderlist.py:88 #: pretix/base/exporters/orderlist.py:881 #: pretix/base/exporters/orderlist.py:1061 -#: pretix/base/exporters/orderlist.py:1305 +#: pretix/base/exporters/orderlist.py:1319 #: pretix/plugins/reports/exporters.py:493 #: pretix/plugins/reports/exporters.py:666 #, fuzzy @@ -1338,15 +1338,15 @@ msgstr "" #: pretix/base/exporters/answers.py:76 pretix/base/exporters/orderlist.py:628 #: pretix/base/exporters/orderlist.py:957 -#: pretix/base/exporters/orderlist.py:1198 pretix/base/models/checkin.py:58 +#: pretix/base/exporters/orderlist.py:1212 pretix/base/models/checkin.py:58 #: pretix/base/models/items.py:2067 pretix/base/models/orders.py:1490 #: pretix/base/models/orders.py:3046 pretix/base/models/vouchers.py:190 #: pretix/base/models/waitinglist.py:61 pretix/control/forms/event.py:1798 #: pretix/control/forms/filter.py:446 pretix/control/forms/filter.py:1254 #: pretix/control/forms/filter.py:2056 pretix/control/forms/filter.py:2278 #: pretix/control/forms/filter.py:2393 pretix/control/forms/filter.py:2475 -#: pretix/control/forms/filter.py:2692 pretix/control/forms/orders.py:360 -#: pretix/control/forms/orders.py:849 +#: pretix/control/forms/filter.py:2692 pretix/control/forms/orders.py:364 +#: pretix/control/forms/orders.py:857 #: pretix/control/templates/pretixcontrol/checkin/lists.html:108 #: pretix/control/templates/pretixcontrol/items/quotas.html:55 #: pretix/control/templates/pretixcontrol/order/change.html:108 @@ -1377,7 +1377,7 @@ msgstr "تاريخ" #: pretix/control/forms/filter.py:2396 pretix/control/forms/filter.py:2412 #: pretix/control/forms/filter.py:2478 pretix/control/forms/filter.py:2513 #: pretix/control/forms/filter.py:2695 pretix/control/forms/filter.py:2710 -#: pretix/control/forms/orders.py:851 pretix/control/forms/orders.py:1013 +#: pretix/control/forms/orders.py:859 pretix/control/forms/orders.py:1021 #: pretix/control/templates/pretixcontrol/event/fragment_subevent_choice_simple.html:5 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:69 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:132 @@ -1442,15 +1442,15 @@ msgstr "معرف داخلي" #: pretix/control/templates/pretixcontrol/waitinglist/index.html:166 #: pretix/control/views/waitinglist.py:326 #: pretix/plugins/checkinlists/exporters.py:510 -#: pretix/presale/checkoutflow.py:1559 pretix/presale/forms/checkout.py:84 +#: pretix/presale/checkoutflow.py:1559 pretix/presale/forms/checkout.py:81 #: pretix/presale/forms/waitinglist.py:80 #: pretix/presale/templates/pretixpresale/event/order.html:304 msgid "Phone number" msgstr "رقم الجوال" -#: pretix/base/exporters/customers.py:72 pretix/base/models/auth.py:272 +#: pretix/base/exporters/customers.py:72 pretix/base/models/auth.py:281 #: pretix/base/models/customers.py:105 pretix/base/models/orders.py:3349 -#: pretix/base/settings.py:3908 pretix/base/settings.py:3920 +#: pretix/base/settings.py:3910 pretix/base/settings.py:3922 #: pretix/control/templates/pretixcontrol/users/index.html:47 msgid "Full name" msgstr "الاسم الكامل" @@ -1458,14 +1458,14 @@ msgstr "الاسم الكامل" #: pretix/base/exporters/customers.py:77 pretix/base/exporters/invoices.py:208 #: pretix/base/exporters/invoices.py:217 pretix/base/exporters/invoices.py:336 #: pretix/base/exporters/invoices.py:344 pretix/base/exporters/orderlist.py:284 -#: pretix/base/exporters/waitinglist.py:109 pretix/base/forms/questions.py:1252 +#: pretix/base/exporters/waitinglist.py:109 pretix/base/forms/questions.py:1258 #: pretix/base/models/devices.py:68 pretix/base/models/devices.py:130 -#: pretix/base/models/event.py:1556 pretix/base/models/event.py:1794 +#: pretix/base/models/event.py:1562 pretix/base/models/event.py:1800 #: pretix/base/models/items.py:2071 pretix/base/models/items.py:2244 #: pretix/base/models/memberships.py:41 pretix/base/models/organizer.py:82 -#: pretix/base/models/organizer.py:639 pretix/base/models/seating.py:86 -#: pretix/base/models/waitinglist.py:69 pretix/base/settings.py:3533 -#: pretix/base/settings.py:3543 pretix/base/settings.py:3897 +#: pretix/base/models/organizer.py:646 pretix/base/models/seating.py:86 +#: pretix/base/models/waitinglist.py:69 pretix/base/settings.py:3535 +#: pretix/base/settings.py:3545 pretix/base/settings.py:3899 #: pretix/control/forms/filter.py:661 pretix/control/forms/item.py:447 #: pretix/control/forms/organizer.py:1085 #: pretix/control/forms/waitinglist.py:84 @@ -1491,7 +1491,7 @@ msgstr "الاسم الكامل" #: pretix/plugins/reports/exporters.py:901 #: pretix/plugins/ticketoutputpdf/models.py:333 #: pretix/plugins/ticketoutputpdf/templates/pretixplugins/ticketoutputpdf/index.html:32 -#: pretix/presale/forms/customer.py:179 pretix/presale/forms/customer.py:496 +#: pretix/presale/forms/customer.py:179 pretix/presale/forms/customer.py:497 #: pretix/presale/forms/waitinglist.py:68 #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:86 #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:142 @@ -1504,7 +1504,7 @@ msgstr "اسم" msgid "Account active" msgstr "حساب نشط" -#: pretix/base/exporters/customers.py:81 pretix/base/models/auth.py:270 +#: pretix/base/exporters/customers.py:81 pretix/base/models/auth.py:279 #: pretix/base/models/customers.py:108 msgid "Verified email address" msgstr "تم التحقق من عنوان البريد الإلكتروني" @@ -1520,7 +1520,7 @@ msgid "Registration date" msgstr "تاريخ التسجيل" #: pretix/base/exporters/customers.py:84 pretix/base/exporters/invoices.py:207 -#: pretix/base/exporters/waitinglist.py:121 pretix/base/models/auth.py:284 +#: pretix/base/exporters/waitinglist.py:121 pretix/base/models/auth.py:293 #: pretix/base/models/customers.py:114 pretix/base/models/exports.py:54 #: pretix/control/forms/event.py:1804 pretix/control/forms/exports.py:49 #: pretix/control/forms/exports.py:88 pretix/control/views/waitinglist.py:327 @@ -1557,13 +1557,13 @@ msgstr "" #: pretix/base/exporters/orderlist.py:792 #: pretix/base/exporters/orderlist.py:815 #: pretix/base/exporters/orderlist.py:847 -#: pretix/base/exporters/orderlist.py:1449 +#: pretix/base/exporters/orderlist.py:1463 #: pretix/base/exporters/reusablemedia.py:68 -#: pretix/base/invoicing/transmission.py:119 pretix/base/modelimport.py:208 -#: pretix/base/modelimport.py:215 pretix/base/models/orders.py:1391 +#: pretix/base/invoicing/transmission.py:119 pretix/base/modelimport.py:212 +#: pretix/base/modelimport.py:219 pretix/base/models/orders.py:1391 #: pretix/control/forms/filter.py:182 pretix/control/forms/filter.py:556 #: pretix/control/forms/filter.py:743 pretix/control/forms/item.py:618 -#: pretix/control/forms/subevents.py:119 pretix/control/views/item.py:715 +#: pretix/control/forms/subevents.py:129 pretix/control/views/item.py:715 #: pretix/control/views/vouchers.py:140 pretix/control/views/vouchers.py:141 #: pretix/plugins/checkinlists/exporters.py:602 #: pretix/plugins/checkinlists/exporters.py:605 @@ -1582,13 +1582,13 @@ msgstr "نعم" #: pretix/base/exporters/orderlist.py:422 #: pretix/base/exporters/orderlist.py:815 #: pretix/base/exporters/orderlist.py:847 -#: pretix/base/exporters/orderlist.py:1449 +#: pretix/base/exporters/orderlist.py:1463 #: pretix/base/exporters/reusablemedia.py:68 -#: pretix/base/invoicing/transmission.py:121 pretix/base/modelimport.py:207 -#: pretix/base/modelimport.py:217 pretix/base/models/orders.py:1393 +#: pretix/base/invoicing/transmission.py:121 pretix/base/modelimport.py:211 +#: pretix/base/modelimport.py:221 pretix/base/models/orders.py:1393 #: pretix/control/forms/filter.py:182 pretix/control/forms/filter.py:557 #: pretix/control/forms/filter.py:744 pretix/control/forms/item.py:619 -#: pretix/control/forms/subevents.py:120 pretix/control/views/item.py:715 +#: pretix/control/forms/subevents.py:130 pretix/control/views/item.py:715 #: pretix/control/views/vouchers.py:140 pretix/control/views/vouchers.py:141 #: pretix/plugins/checkinlists/exporters.py:602 #: pretix/plugins/checkinlists/exporters.py:605 @@ -1621,7 +1621,7 @@ msgstr "تذكرة الفعالية {event}-{code}" #: pretix/base/exporters/dekodi.py:234 pretix/base/exporters/invoices.py:74 #: pretix/base/exporters/orderlist.py:130 #: pretix/base/exporters/orderlist.py:896 -#: pretix/base/exporters/orderlist.py:1255 +#: pretix/base/exporters/orderlist.py:1269 #: pretix/plugins/checkinlists/exporters.py:89 #: pretix/plugins/checkinlists/exporters.py:868 #: pretix/plugins/reports/accountingreport.py:75 @@ -1678,63 +1678,63 @@ msgstr "المتجر نشط" msgid "Event currency" msgstr "عملة الفعالية" -#: pretix/base/exporters/events.py:61 pretix/base/models/auth.py:287 +#: pretix/base/exporters/events.py:61 pretix/base/models/auth.py:296 #: pretix/base/models/exports.py:133 pretix/control/forms/exports.py:93 msgid "Timezone" msgstr "المنطقة الزمنية" #: pretix/base/exporters/events.py:62 pretix/base/models/event.py:618 -#: pretix/base/models/event.py:1558 pretix/base/settings.py:3531 -#: pretix/base/settings.py:3541 pretix/control/forms/subevents.py:484 +#: pretix/base/models/event.py:1564 pretix/base/settings.py:3533 +#: pretix/base/settings.py:3543 pretix/control/forms/subevents.py:494 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:268 msgid "Event start time" msgstr "وقت بداية الفعالية" #: pretix/base/exporters/events.py:63 pretix/base/models/event.py:620 -#: pretix/base/models/event.py:1560 pretix/base/pdf.py:297 -#: pretix/control/forms/subevents.py:489 +#: pretix/base/models/event.py:1566 pretix/base/pdf.py:297 +#: pretix/control/forms/subevents.py:499 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:270 msgid "Event end time" msgstr "وقت نهاية الفعالية" #: pretix/base/exporters/events.py:64 pretix/base/models/event.py:622 -#: pretix/base/models/event.py:1562 pretix/control/forms/subevents.py:494 +#: pretix/base/models/event.py:1568 pretix/control/forms/subevents.py:504 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:274 msgid "Admission time" msgstr "وقت قبول التسجيل" #: pretix/base/exporters/events.py:65 pretix/base/models/event.py:634 -#: pretix/base/models/event.py:1571 pretix/control/forms/subevents.py:93 +#: pretix/base/models/event.py:1577 pretix/control/forms/subevents.py:93 msgid "Start of presale" msgstr "بداية عرض ما قبل البيع" #: pretix/base/exporters/events.py:66 pretix/base/models/event.py:628 -#: pretix/base/models/event.py:1565 pretix/control/forms/subevents.py:99 +#: pretix/base/models/event.py:1571 pretix/control/forms/subevents.py:99 msgid "End of presale" msgstr "نهاية عرض ما قبل البيع" #: pretix/base/exporters/events.py:67 pretix/base/exporters/invoices.py:355 -#: pretix/base/models/event.py:640 pretix/base/models/event.py:1577 +#: pretix/base/models/event.py:640 pretix/base/models/event.py:1583 #: pretix/base/templates/pretixbase/email/order_details.html:83 msgid "Location" msgstr "الموقع" #: pretix/base/exporters/events.py:68 pretix/base/models/event.py:648 -#: pretix/base/models/event.py:1580 +#: pretix/base/models/event.py:1586 #: pretix/control/templates/pretixcontrol/event/fragment_geodata.html:18 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:54 msgid "Latitude" msgstr "خط العرض" #: pretix/base/exporters/events.py:69 pretix/base/models/event.py:656 -#: pretix/base/models/event.py:1588 +#: pretix/base/models/event.py:1594 #: pretix/control/templates/pretixcontrol/event/fragment_geodata.html:28 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:64 msgid "Longitude" msgstr "خط الطول" #: pretix/base/exporters/events.py:70 pretix/base/models/event.py:668 -#: pretix/base/models/event.py:1603 +#: pretix/base/models/event.py:1609 #: pretix/control/templates/pretixcontrol/event/index.html:137 #: pretix/control/templates/pretixcontrol/order/index.html:1080 msgid "Internal comment" @@ -1808,8 +1808,8 @@ msgid "Invoice number" msgstr "رقم الفاتورة" #: pretix/base/exporters/invoices.py:202 pretix/base/exporters/invoices.py:331 -#: pretix/base/exporters/orderlist.py:1278 -#: pretix/base/exporters/orderlist.py:1324 +#: pretix/base/exporters/orderlist.py:1292 +#: pretix/base/exporters/orderlist.py:1338 #: pretix/base/exporters/waitinglist.py:108 pretix/base/forms/widgets.py:222 #: pretix/base/models/items.py:1655 pretix/base/models/orders.py:258 #: pretix/base/models/orders.py:3021 pretix/base/models/orders.py:3160 @@ -1857,7 +1857,7 @@ msgstr "مرسل الفاتورة:" #: pretix/base/exporters/invoices.py:209 pretix/base/exporters/invoices.py:337 #: pretix/base/exporters/orderlist.py:291 #: pretix/base/exporters/orderlist.py:501 -#: pretix/base/exporters/orderlist.py:649 pretix/base/forms/questions.py:712 +#: pretix/base/exporters/orderlist.py:649 pretix/base/forms/questions.py:718 #: pretix/base/modelimport_orders.py:232 pretix/base/modelimport_orders.py:386 #: pretix/base/models/customers.py:355 pretix/base/models/orders.py:1547 #: pretix/base/models/orders.py:3351 pretix/control/forms/filter.py:665 @@ -1874,10 +1874,10 @@ msgstr "العنوان" #: pretix/base/exporters/invoices.py:338 pretix/base/exporters/invoices.py:346 #: pretix/base/exporters/orderlist.py:291 #: pretix/base/exporters/orderlist.py:501 -#: pretix/base/exporters/orderlist.py:650 pretix/base/forms/questions.py:723 +#: pretix/base/exporters/orderlist.py:650 pretix/base/forms/questions.py:729 #: pretix/base/modelimport_orders.py:244 pretix/base/modelimport_orders.py:397 #: pretix/base/models/customers.py:356 pretix/base/models/orders.py:1548 -#: pretix/base/models/orders.py:3352 pretix/base/settings.py:1321 +#: pretix/base/models/orders.py:3352 pretix/base/settings.py:1323 #: pretix/control/forms/filter.py:669 pretix/control/forms/filter.py:700 #: pretix/control/views/item.py:490 #: pretix/plugins/checkinlists/exporters.py:537 @@ -1889,10 +1889,10 @@ msgstr "الرمز البريدي" #: pretix/base/exporters/invoices.py:339 pretix/base/exporters/invoices.py:347 #: pretix/base/exporters/orderlist.py:291 #: pretix/base/exporters/orderlist.py:501 -#: pretix/base/exporters/orderlist.py:651 pretix/base/forms/questions.py:731 +#: pretix/base/exporters/orderlist.py:651 pretix/base/forms/questions.py:737 #: pretix/base/modelimport_orders.py:256 pretix/base/modelimport_orders.py:408 #: pretix/base/models/customers.py:357 pretix/base/models/orders.py:1549 -#: pretix/base/models/orders.py:3353 pretix/base/settings.py:1335 +#: pretix/base/models/orders.py:3353 pretix/base/settings.py:1337 #: pretix/control/forms/filter.py:674 pretix/control/forms/filter.py:705 #: pretix/control/views/item.py:500 #: pretix/plugins/checkinlists/exporters.py:538 @@ -1903,10 +1903,10 @@ msgstr "المدينة" #: pretix/base/exporters/invoices.py:212 pretix/base/exporters/invoices.py:222 #: pretix/base/exporters/invoices.py:349 pretix/base/exporters/orderlist.py:291 #: pretix/base/exporters/orderlist.py:501 -#: pretix/base/exporters/orderlist.py:653 pretix/base/forms/questions.py:768 -#: pretix/base/forms/questions.py:1202 pretix/base/modelimport_orders.py:295 +#: pretix/base/exporters/orderlist.py:653 pretix/base/forms/questions.py:774 +#: pretix/base/forms/questions.py:1208 pretix/base/modelimport_orders.py:295 #: pretix/base/models/customers.py:359 pretix/base/models/orders.py:1551 -#: pretix/base/models/orders.py:3357 pretix/base/settings.py:1349 +#: pretix/base/models/orders.py:3357 pretix/base/settings.py:1351 #: pretix/base/views/js_helpers.py:72 pretix/control/forms/event.py:1098 #: pretix/control/templates/pretixcontrol/order/index.html:1039 #: pretix/plugins/checkinlists/exporters.py:540 @@ -1921,11 +1921,11 @@ msgstr "المنطقة" #: pretix/base/exporters/invoices.py:340 pretix/base/exporters/invoices.py:348 #: pretix/base/exporters/orderlist.py:291 #: pretix/base/exporters/orderlist.py:501 -#: pretix/base/exporters/orderlist.py:652 pretix/base/forms/questions.py:743 +#: pretix/base/exporters/orderlist.py:652 pretix/base/forms/questions.py:749 #: pretix/base/modelimport_orders.py:274 pretix/base/modelimport_orders.py:425 #: pretix/base/models/customers.py:358 pretix/base/models/orders.py:1550 #: pretix/base/models/orders.py:3354 pretix/base/models/orders.py:3355 -#: pretix/base/settings.py:1361 pretix/control/forms/filter.py:679 +#: pretix/base/settings.py:1363 pretix/control/forms/filter.py:679 #: pretix/control/forms/filter.py:710 #: pretix/control/templates/pretixcontrol/order/index.html:1036 #: pretix/control/views/item.py:510 @@ -1971,7 +1971,7 @@ msgstr "مستلم الفاتورة:" #: pretix/base/exporters/invoices.py:216 pretix/base/exporters/invoices.py:343 #: pretix/base/exporters/orderlist.py:284 -#: pretix/base/exporters/orderlist.py:493 pretix/base/forms/questions.py:704 +#: pretix/base/exporters/orderlist.py:493 pretix/base/forms/questions.py:710 #: pretix/base/modelimport_orders.py:199 pretix/base/modelimport_orders.py:375 #: pretix/control/forms/filter.py:657 pretix/control/forms/filter.py:692 #: pretix/control/templates/pretixcontrol/order/index.html:1028 @@ -2056,7 +2056,7 @@ msgstr "رقم السطر" msgid "Description" msgstr "الوصف" -#: pretix/base/exporters/invoices.py:325 pretix/control/forms/orders.py:355 +#: pretix/base/exporters/invoices.py:325 pretix/control/forms/orders.py:359 msgid "Gross price" msgstr "السعر الإجمالي" @@ -2093,7 +2093,7 @@ msgstr "الاسم الضريبي" msgid "Product data" msgstr "اسم المنتج" -#: pretix/base/exporters/items.py:50 pretix/base/exporters/orderlist.py:1188 +#: pretix/base/exporters/items.py:50 pretix/base/exporters/orderlist.py:1202 #, fuzzy #| msgid "Product name" msgctxt "export_category" @@ -2140,7 +2140,7 @@ msgstr "النوع" #: pretix/base/exporters/items.py:71 pretix/base/exporters/reusablemedia.py:53 #: pretix/base/models/customers.py:65 pretix/base/models/customers.py:447 -#: pretix/base/models/discount.py:60 pretix/base/models/event.py:1547 +#: pretix/base/models/discount.py:60 pretix/base/models/event.py:1553 #: pretix/base/models/items.py:489 pretix/base/models/items.py:1152 #: pretix/base/models/media.py:77 pretix/base/settings.py:226 #: pretix/base/settings.py:261 pretix/base/settings.py:292 @@ -2194,7 +2194,7 @@ msgstr "إنشاء التذاكر" msgid "Generate tickets" msgstr "إنشاء التذاكر" -#: pretix/base/exporters/items.py:79 pretix/base/exporters/orderlist.py:1195 +#: pretix/base/exporters/items.py:79 pretix/base/exporters/orderlist.py:1209 #: pretix/base/exporters/waitinglist.py:41 pretix/base/shredder.py:371 #: pretix/control/forms/event.py:1874 pretix/control/navigation.py:249 #: pretix/control/templates/pretixcontrol/event/settings.html:362 @@ -2220,9 +2220,9 @@ msgstr "قائمة الانتظار" #: pretix/base/exporters/items.py:80 pretix/base/models/discount.py:82 #: pretix/base/models/items.py:224 pretix/base/models/items.py:280 #: pretix/base/models/items.py:561 pretix/base/models/items.py:1205 -#: pretix/base/payment.py:394 pretix/control/forms/subevents.py:323 -#: pretix/control/forms/subevents.py:345 -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:507 +#: pretix/base/payment.py:394 pretix/control/forms/subevents.py:333 +#: pretix/control/forms/subevents.py:355 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:509 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:172 #: pretix/control/templates/pretixcontrol/subevents/detail.html:150 msgid "Available from" @@ -2231,8 +2231,8 @@ msgstr "متاح من" #: pretix/base/exporters/items.py:81 pretix/base/models/discount.py:87 #: pretix/base/models/items.py:229 pretix/base/models/items.py:285 #: pretix/base/models/items.py:571 pretix/base/models/items.py:1215 -#: pretix/base/payment.py:400 pretix/control/forms/subevents.py:328 -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:512 +#: pretix/base/payment.py:400 pretix/control/forms/subevents.py:338 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:514 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:177 #: pretix/control/templates/pretixcontrol/subevents/detail.html:155 msgid "Available until" @@ -2382,8 +2382,8 @@ msgid "Only include orders created within this date range." msgstr "قم بتضمين الطلبات التي تم إنشاؤها في هذا التاريخ أو بعده فقط." #: pretix/base/exporters/orderlist.py:137 pretix/base/notifications.py:194 -#: pretix/base/pdf.py:245 pretix/base/settings.py:1223 -#: pretix/base/settings.py:1235 pretix/control/forms/filter.py:1259 +#: pretix/base/pdf.py:245 pretix/base/settings.py:1225 +#: pretix/base/settings.py:1237 pretix/control/forms/filter.py:1259 #: pretix/plugins/badges/exporters.py:499 #: pretix/plugins/reports/exporters.py:315 #: pretix/plugins/reports/exporters.py:465 @@ -2434,8 +2434,8 @@ msgstr "" #: pretix/base/exporters/orderlist.py:479 #: pretix/base/exporters/orderlist.py:617 #: pretix/base/exporters/orderlist.py:935 -#: pretix/base/exporters/orderlist.py:1136 -#: pretix/base/exporters/orderlist.py:1324 +#: pretix/base/exporters/orderlist.py:1148 +#: pretix/base/exporters/orderlist.py:1338 #: pretix/base/exporters/waitinglist.py:116 pretix/control/forms/event.py:1850 #: pretix/control/forms/organizer.py:119 msgid "Event slug" @@ -2444,8 +2444,8 @@ msgstr "رابط الفعالية" #: pretix/base/exporters/orderlist.py:283 #: pretix/base/exporters/orderlist.py:482 #: pretix/base/exporters/orderlist.py:621 -#: pretix/base/exporters/orderlist.py:1136 -#: pretix/base/exporters/orderlist.py:1380 +#: pretix/base/exporters/orderlist.py:1148 +#: pretix/base/exporters/orderlist.py:1394 #: pretix/base/exporters/waitinglist.py:123 #: pretix/base/exporters/waitinglist.py:173 pretix/base/models/orders.py:215 #: pretix/control/forms/filter.py:1055 pretix/control/forms/filter.py:1357 @@ -2488,7 +2488,7 @@ msgstr "حالة" #: pretix/base/exporters/orderlist.py:485 #: pretix/base/exporters/orderlist.py:624 #: pretix/base/exporters/orderlist.py:939 pretix/base/notifications.py:203 -#: pretix/base/settings.py:1224 pretix/base/settings.py:1236 +#: pretix/base/settings.py:1226 pretix/base/settings.py:1238 #: pretix/control/forms/filter.py:2484 #: pretix/control/templates/pretixcontrol/order/index.html:183 #: pretix/control/templates/pretixcontrol/orders/bulk_action.html:24 @@ -2543,6 +2543,7 @@ msgid "Tax value at {rate} % tax" msgstr "قيمة الضريبة {rate} % ضريبة" #: pretix/base/exporters/orderlist.py:302 +#: pretix/base/exporters/orderlist.py:1150 msgid "Invoice numbers" msgstr "أرقام الفواتير" @@ -2597,11 +2598,11 @@ msgstr "نوع الرسوم" #: pretix/base/exporters/orderlist.py:636 #: pretix/base/exporters/orderlist.py:959 pretix/base/modelimport_orders.py:467 #: pretix/base/models/orders.py:1505 pretix/base/models/orders.py:3050 -#: pretix/base/pdf.py:160 pretix/control/forms/orders.py:638 +#: pretix/base/pdf.py:160 pretix/control/forms/orders.py:646 #: pretix/control/templates/pretixcontrol/item/index.html:146 #: pretix/control/templates/pretixcontrol/order/change.html:194 -#: pretix/control/templates/pretixcontrol/order/change.html:418 -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:497 +#: pretix/control/templates/pretixcontrol/order/change.html:420 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:499 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:162 #: pretix/control/templates/pretixcontrol/subevents/detail.html:140 #: pretix/plugins/checkinlists/exporters.py:377 @@ -2631,9 +2632,9 @@ msgid "Position ID" msgstr "معرف الحالة" #: pretix/base/exporters/orderlist.py:629 -#: pretix/base/exporters/orderlist.py:1199 -#: pretix/base/exporters/waitinglist.py:119 pretix/base/forms/questions.py:658 -#: pretix/base/forms/questions.py:667 pretix/base/models/memberships.py:145 +#: pretix/base/exporters/orderlist.py:1213 +#: pretix/base/exporters/waitinglist.py:119 pretix/base/forms/questions.py:664 +#: pretix/base/forms/questions.py:673 pretix/base/models/memberships.py:145 #: pretix/control/forms/rrule.py:49 #: pretix/control/templates/pretixcontrol/events/index.html:80 #: pretix/control/templates/pretixcontrol/order/index.html:823 @@ -2649,7 +2650,7 @@ msgid "Start date" msgstr "تاريخ البداية" #: pretix/base/exporters/orderlist.py:630 -#: pretix/base/exporters/orderlist.py:1200 +#: pretix/base/exporters/orderlist.py:1214 #: pretix/base/exporters/waitinglist.py:120 #: pretix/base/models/memberships.py:148 #: pretix/control/templates/pretixcontrol/events/index.html:84 @@ -2668,7 +2669,7 @@ msgstr "تاريخ الإنتهاء" #: pretix/base/modelimport_vouchers.py:174 pretix/base/models/items.py:794 #: pretix/base/models/vouchers.py:253 pretix/base/models/waitinglist.py:91 #: pretix/control/forms/filter.py:2284 pretix/control/forms/filter.py:2539 -#: pretix/control/forms/orders.py:335 pretix/control/forms/vouchers.py:67 +#: pretix/control/forms/orders.py:339 pretix/control/forms/vouchers.py:67 #: pretix/control/forms/waitinglist.py:106 #: pretix/control/templates/pretixcontrol/checkin/checkins.html:66 #: pretix/control/templates/pretixcontrol/item/base.html:3 @@ -2800,7 +2801,7 @@ msgstr "منطقة عنوان الفاتورة" #: pretix/base/exporters/orderlist.py:707 pretix/control/navigation.py:327 #: pretix/control/templates/pretixcontrol/checkin/lists.html:6 #: pretix/control/templates/pretixcontrol/checkin/lists.html:8 -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:521 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:523 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:274 #: pretix/control/templates/pretixcontrol/subevents/detail.html:164 #: pretix/plugins/checkinlists/apps.py:44 @@ -2852,8 +2853,8 @@ msgid "Event" msgstr "فعالية" #: pretix/base/exporters/orderlist.py:936 -#: pretix/base/exporters/orderlist.py:1280 -#: pretix/base/exporters/orderlist.py:1428 +#: pretix/base/exporters/orderlist.py:1294 +#: pretix/base/exporters/orderlist.py:1442 #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:50 #: pretix/control/templates/pretixcontrol/organizers/giftcard.html:36 #: pretix/plugins/banktransfer/refund_export.py:47 @@ -2975,9 +2976,9 @@ msgstr "‪حالات الدفع" msgid "Refund states" msgstr "حالات استعادة المبلغ" -#: pretix/base/exporters/orderlist.py:1136 -#: pretix/base/exporters/orderlist.py:1281 -#: pretix/base/exporters/orderlist.py:1324 pretix/base/models/orders.py:335 +#: pretix/base/exporters/orderlist.py:1148 +#: pretix/base/exporters/orderlist.py:1295 +#: pretix/base/exporters/orderlist.py:1338 pretix/base/models/orders.py:335 #: pretix/base/models/orders.py:1748 pretix/base/models/orders.py:2166 #: pretix/base/models/orders.py:2328 pretix/base/models/orders.py:2527 #: pretix/base/models/orders.py:3012 @@ -2992,34 +2993,34 @@ msgstr "حالات استعادة المبلغ" msgid "Order" msgstr "الطلب" -#: pretix/base/exporters/orderlist.py:1136 -#: pretix/base/exporters/orderlist.py:1324 +#: pretix/base/exporters/orderlist.py:1148 +#: pretix/base/exporters/orderlist.py:1338 #: pretix/control/templates/pretixcontrol/search/payments.html:75 #: pretix/plugins/paypal/templates/pretixplugins/paypal/control.html:5 #: pretix/plugins/paypal2/templates/pretixplugins/paypal2/control_legacy.html:5 msgid "Payment ID" msgstr "معرف الدفع" -#: pretix/base/exporters/orderlist.py:1136 -#: pretix/base/exporters/orderlist.py:1425 +#: pretix/base/exporters/orderlist.py:1148 +#: pretix/base/exporters/orderlist.py:1439 #: pretix/control/templates/pretixcontrol/organizers/customer.html:298 #: pretix/control/templates/pretixcontrol/organizers/giftcard.html:32 #: pretix/control/templates/pretixcontrol/organizers/giftcards.html:62 msgid "Creation date" msgstr "تاريخ الإنشاء" -#: pretix/base/exporters/orderlist.py:1136 +#: pretix/base/exporters/orderlist.py:1148 #: pretix/control/templates/pretixcontrol/order/index.html:918 msgid "Completion date" msgstr "تاريخ الاكتمال" -#: pretix/base/exporters/orderlist.py:1137 +#: pretix/base/exporters/orderlist.py:1149 msgid "Status code" msgstr "رمز الحالة" -#: pretix/base/exporters/orderlist.py:1137 -#: pretix/base/exporters/orderlist.py:1279 -#: pretix/base/exporters/orderlist.py:1324 pretix/base/models/orders.py:1744 +#: pretix/base/exporters/orderlist.py:1149 +#: pretix/base/exporters/orderlist.py:1293 +#: pretix/base/exporters/orderlist.py:1338 pretix/base/models/orders.py:1744 #: pretix/base/models/orders.py:2162 pretix/control/forms/filter.py:1087 #: pretix/control/forms/filter.py:1090 #: pretix/control/templates/pretixcontrol/order/index.html:827 @@ -3034,7 +3035,7 @@ msgstr "رمز الحالة" msgid "Amount" msgstr "المبلغ" -#: pretix/base/exporters/orderlist.py:1137 +#: pretix/base/exporters/orderlist.py:1149 #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:102 #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:115 #: pretix/control/templates/pretixcontrol/order/index.html:825 @@ -3045,92 +3046,92 @@ msgstr "المبلغ" msgid "Payment method" msgstr "طريقة السداد" -#: pretix/base/exporters/orderlist.py:1137 +#: pretix/base/exporters/orderlist.py:1149 #, fuzzy #| msgid "Payment matching IDs" msgid "Matching ID" msgstr "معرفات مطابقة الدفع" -#: pretix/base/exporters/orderlist.py:1137 +#: pretix/base/exporters/orderlist.py:1149 #: pretix/control/templates/pretixcontrol/order/refund_choose.html:38 #, fuzzy #| msgid "Payment settings" msgid "Payment details" msgstr "إعدادات الدفع" -#: pretix/base/exporters/orderlist.py:1187 +#: pretix/base/exporters/orderlist.py:1201 msgid "Quota availabilities" msgstr "توافر الحصة" -#: pretix/base/exporters/orderlist.py:1189 +#: pretix/base/exporters/orderlist.py:1203 msgid "" "Download a spreadsheet of all quotas including their current availability." msgstr "" -#: pretix/base/exporters/orderlist.py:1194 +#: pretix/base/exporters/orderlist.py:1208 #: pretix/control/templates/pretixcontrol/items/quotas.html:49 msgid "Quota name" msgstr "اسم الحصة" -#: pretix/base/exporters/orderlist.py:1194 +#: pretix/base/exporters/orderlist.py:1208 #: pretix/control/templates/pretixcontrol/items/quota.html:56 msgid "Total quota" msgstr "الحصة الإجمالية" -#: pretix/base/exporters/orderlist.py:1194 +#: pretix/base/exporters/orderlist.py:1208 #: pretix/control/templates/pretixcontrol/event/cancel.html:20 #: pretix/control/views/item.py:954 msgid "Paid orders" msgstr "الطلبات المدفوعة" -#: pretix/base/exporters/orderlist.py:1194 pretix/control/views/item.py:959 +#: pretix/base/exporters/orderlist.py:1208 pretix/control/views/item.py:959 msgid "Pending orders" msgstr "الطلبات المعلقة" -#: pretix/base/exporters/orderlist.py:1194 +#: pretix/base/exporters/orderlist.py:1208 msgid "Blocking vouchers" msgstr "حظر كود الخصم" -#: pretix/base/exporters/orderlist.py:1195 pretix/control/views/item.py:978 +#: pretix/base/exporters/orderlist.py:1209 pretix/control/views/item.py:978 msgid "Current user's carts" msgstr "عربات المستخدم الحالية" -#: pretix/base/exporters/orderlist.py:1195 +#: pretix/base/exporters/orderlist.py:1209 msgid "Exited orders" msgstr "طلبات خارجة" -#: pretix/base/exporters/orderlist.py:1195 +#: pretix/base/exporters/orderlist.py:1209 msgid "Current availability" msgstr "المتوفر حاليا" -#: pretix/base/exporters/orderlist.py:1212 -#: pretix/base/exporters/orderlist.py:1219 +#: pretix/base/exporters/orderlist.py:1226 +#: pretix/base/exporters/orderlist.py:1233 #: pretix/control/templates/pretixcontrol/items/quota.html:58 #: pretix/control/views/item.py:985 msgid "Infinite" msgstr "غير محدود" -#: pretix/base/exporters/orderlist.py:1241 +#: pretix/base/exporters/orderlist.py:1255 #, fuzzy #| msgid "Gift card redemptions" msgid "Gift card transactions" msgstr "استرداد بطاقة هدية" -#: pretix/base/exporters/orderlist.py:1242 -#: pretix/base/exporters/orderlist.py:1352 +#: pretix/base/exporters/orderlist.py:1256 +#: pretix/base/exporters/orderlist.py:1366 #, fuzzy #| msgid "Gift cards" msgctxt "export_category" msgid "Gift cards" msgstr "بطاقات الهدايا" -#: pretix/base/exporters/orderlist.py:1243 +#: pretix/base/exporters/orderlist.py:1257 msgid "Download a spreadsheet of all gift card transactions." msgstr "" -#: pretix/base/exporters/orderlist.py:1276 -#: pretix/base/exporters/orderlist.py:1324 -#: pretix/base/exporters/orderlist.py:1423 pretix/base/models/giftcards.py:96 +#: pretix/base/exporters/orderlist.py:1290 +#: pretix/base/exporters/orderlist.py:1338 +#: pretix/base/exporters/orderlist.py:1437 pretix/base/models/giftcards.py:96 #: pretix/base/payment.py:1490 #: pretix/control/templates/pretixcontrol/giftcards/payment.html:4 #: pretix/control/templates/pretixcontrol/order/index.html:563 @@ -3141,16 +3142,16 @@ msgstr "" msgid "Gift card code" msgstr "رمز بطاقة الهدية" -#: pretix/base/exporters/orderlist.py:1277 -#: pretix/base/exporters/orderlist.py:1370 -#: pretix/base/exporters/orderlist.py:1373 +#: pretix/base/exporters/orderlist.py:1291 +#: pretix/base/exporters/orderlist.py:1384 +#: pretix/base/exporters/orderlist.py:1387 #: pretix/base/models/memberships.py:120 pretix/control/forms/filter.py:255 #: pretix/control/forms/filter.py:1574 pretix/control/forms/filter.py:1577 #: pretix/control/templates/pretixcontrol/event/live.html:75 msgid "Test mode" msgstr "وضع الاختبار" -#: pretix/base/exporters/orderlist.py:1282 pretix/base/models/organizer.py:107 +#: pretix/base/exporters/orderlist.py:1296 pretix/base/models/organizer.py:107 #: pretix/control/forms/event.py:112 pretix/control/forms/filter.py:924 #: pretix/control/forms/filter.py:1042 pretix/control/forms/filter.py:1839 #: pretix/control/templates/pretixcontrol/email_setup.html:6 @@ -3165,7 +3166,7 @@ msgstr "وضع الاختبار" msgid "Organizer" msgstr "منظم" -#: pretix/base/exporters/orderlist.py:1289 pretix/base/invoicing/pdf.py:591 +#: pretix/base/exporters/orderlist.py:1303 pretix/base/invoicing/pdf.py:591 #: pretix/control/templates/pretixcontrol/base.html:283 #: pretix/control/templates/pretixcontrol/checkin/index.html:145 #: pretix/control/templates/pretixcontrol/order/index.html:25 @@ -3184,7 +3185,7 @@ msgstr "منظم" #: pretix/control/templates/pretixcontrol/search/orders.html:77 #: pretix/control/templates/pretixcontrol/search/payments.html:119 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/refund_export.html:67 -#: pretix/presale/forms/checkout.py:259 +#: pretix/presale/forms/checkout.py:216 #: pretix/presale/templates/pretixpresale/event/order.html:70 #: pretix/presale/templates/pretixpresale/event/position.html:14 #: pretix/presale/templates/pretixpresale/organizers/customer_giftcards.html:59 @@ -3195,21 +3196,21 @@ msgstr "منظم" msgid "TEST MODE" msgstr "وضع الاختبار" -#: pretix/base/exporters/orderlist.py:1304 +#: pretix/base/exporters/orderlist.py:1318 msgid "Gift card redemptions" msgstr "استرداد بطاقة هدية" -#: pretix/base/exporters/orderlist.py:1306 +#: pretix/base/exporters/orderlist.py:1320 msgid "" "Download a spreadsheet of all payments or refunds that involve gift cards." msgstr "" -#: pretix/base/exporters/orderlist.py:1324 +#: pretix/base/exporters/orderlist.py:1338 #: pretix/control/templates/pretixcontrol/giftcards/payment.html:21 msgid "Issuer" msgstr "جهة الاصدار" -#: pretix/base/exporters/orderlist.py:1351 pretix/base/permissions.py:292 +#: pretix/base/exporters/orderlist.py:1365 pretix/base/permissions.py:292 #: pretix/control/navigation.py:577 pretix/control/navigation.py:595 #: pretix/control/templates/pretixcontrol/organizers/customer.html:291 #: pretix/control/templates/pretixcontrol/organizers/edit.html:157 @@ -3220,20 +3221,20 @@ msgstr "جهة الاصدار" msgid "Gift cards" msgstr "بطاقات الهدايا" -#: pretix/base/exporters/orderlist.py:1353 +#: pretix/base/exporters/orderlist.py:1367 msgid "Download a spreadsheet of all gift cards including their current value." msgstr "" -#: pretix/base/exporters/orderlist.py:1364 +#: pretix/base/exporters/orderlist.py:1378 msgid "Show value at" msgstr "إظهار القيمة عند" -#: pretix/base/exporters/orderlist.py:1367 +#: pretix/base/exporters/orderlist.py:1381 msgid "Defaults to the time of report." msgstr "" -#: pretix/base/exporters/orderlist.py:1372 -#: pretix/base/exporters/orderlist.py:1382 pretix/control/forms/filter.py:555 +#: pretix/base/exporters/orderlist.py:1386 +#: pretix/base/exporters/orderlist.py:1396 pretix/control/forms/filter.py:555 #: pretix/control/forms/filter.py:1359 pretix/control/forms/filter.py:1576 #: pretix/control/forms/filter.py:1585 pretix/control/forms/filter.py:1655 #: pretix/control/forms/filter.py:1665 pretix/control/forms/filter.py:1727 @@ -3257,24 +3258,24 @@ msgstr "" msgid "All" msgstr "الكل" -#: pretix/base/exporters/orderlist.py:1374 pretix/control/forms/filter.py:1578 +#: pretix/base/exporters/orderlist.py:1388 pretix/control/forms/filter.py:1578 msgid "Live" msgstr "مباشر" -#: pretix/base/exporters/orderlist.py:1383 pretix/control/forms/filter.py:1586 +#: pretix/base/exporters/orderlist.py:1397 pretix/control/forms/filter.py:1586 #: pretix/control/templates/pretixcontrol/pdf/index.html:330 msgid "Empty" msgstr "فارغ" -#: pretix/base/exporters/orderlist.py:1384 pretix/control/forms/filter.py:1587 +#: pretix/base/exporters/orderlist.py:1398 pretix/control/forms/filter.py:1587 msgid "Valid and with value" msgstr "صالحة وذات قيمة" -#: pretix/base/exporters/orderlist.py:1385 pretix/control/forms/filter.py:1588 +#: pretix/base/exporters/orderlist.py:1399 pretix/control/forms/filter.py:1588 msgid "Expired and with value" msgstr "منتهية الصلاحية وذات قيمة" -#: pretix/base/exporters/orderlist.py:1386 pretix/control/forms/filter.py:238 +#: pretix/base/exporters/orderlist.py:1400 pretix/control/forms/filter.py:238 #: pretix/control/forms/filter.py:1235 pretix/control/forms/filter.py:1589 #: pretix/control/forms/filter.py:2249 #: pretix/control/templates/pretixcontrol/orders/fragment_order_status.html:37 @@ -3287,11 +3288,11 @@ msgstr "منتهية الصلاحية وذات قيمة" msgid "Expired" msgstr "منتهية الصلاحية" -#: pretix/base/exporters/orderlist.py:1424 pretix/base/models/giftcards.py:105 +#: pretix/base/exporters/orderlist.py:1438 pretix/base/models/giftcards.py:105 msgid "Test mode card" msgstr "بطاقة وضع الاختبار" -#: pretix/base/exporters/orderlist.py:1426 +#: pretix/base/exporters/orderlist.py:1440 #: pretix/base/modelimport_orders.py:553 pretix/base/models/giftcards.py:109 #: pretix/control/templates/pretixcontrol/order/index.html:203 #: pretix/control/templates/pretixcontrol/organizers/customer.html:299 @@ -3299,28 +3300,28 @@ msgstr "بطاقة وضع الاختبار" msgid "Expiry date" msgstr "تاريخ الانتهاء" -#: pretix/base/exporters/orderlist.py:1427 pretix/control/forms/orders.py:902 +#: pretix/base/exporters/orderlist.py:1441 pretix/control/forms/orders.py:910 msgid "Special terms and conditions" msgstr "شروط وأحكام خاصة" -#: pretix/base/exporters/orderlist.py:1429 +#: pretix/base/exporters/orderlist.py:1443 #: pretix/control/templates/pretixcontrol/order/change.html:98 -#: pretix/control/templates/pretixcontrol/order/change.html:410 +#: pretix/control/templates/pretixcontrol/order/change.html:412 #: pretix/control/templates/pretixcontrol/organizers/customer.html:301 #: pretix/control/templates/pretixcontrol/organizers/giftcard.html:34 #: pretix/control/templates/pretixcontrol/organizers/giftcards.html:71 msgid "Current value" msgstr "القيمة الحالية" -#: pretix/base/exporters/orderlist.py:1430 +#: pretix/base/exporters/orderlist.py:1444 msgid "Created in order" msgstr "تم الإنشاء بالترتيب" -#: pretix/base/exporters/orderlist.py:1431 +#: pretix/base/exporters/orderlist.py:1445 msgid "Last invoice number of order" msgstr "رقم الفاتورة الأخير للطلب" -#: pretix/base/exporters/orderlist.py:1432 +#: pretix/base/exporters/orderlist.py:1446 msgid "Last invoice date of order" msgstr "تاريخ آخر فاتورة للطلب" @@ -3469,7 +3470,7 @@ msgid "This combination of credentials is not known to our system." msgstr "مجموعة بيانات الاعتماد هذه غير معروفة لدى نظامنا." #: pretix/base/forms/auth.py:66 pretix/base/forms/user.py:94 -#: pretix/presale/forms/customer.py:391 pretix/presale/forms/customer.py:470 +#: pretix/presale/forms/customer.py:392 pretix/presale/forms/customer.py:471 msgid "For security reasons, please wait 5 minutes before you try again." msgstr "لأسباب أمنية ، يرجى الانتظار 5 دقائق قبل المحاولة مرة أخرى." @@ -3486,12 +3487,12 @@ msgstr "" #: pretix/base/forms/auth.py:157 pretix/base/forms/auth.py:214 #: pretix/base/forms/user.py:93 pretix/control/forms/users.py:45 -#: pretix/presale/forms/customer.py:295 pretix/presale/forms/customer.py:390 +#: pretix/presale/forms/customer.py:295 pretix/presale/forms/customer.py:391 msgid "Please enter the same password twice" msgstr "الرجاء إدخال نفس كلمة المرور مرتين" #: pretix/base/forms/auth.py:172 pretix/base/forms/auth.py:233 -#: pretix/presale/forms/customer.py:307 pretix/presale/forms/customer.py:409 +#: pretix/presale/forms/customer.py:308 pretix/presale/forms/customer.py:410 msgid "Repeat password" msgstr "أعد كلمة السر" @@ -3501,50 +3502,50 @@ msgstr "أعد كلمة السر" msgid "Your email address" msgstr "عنوان البريد الإلكتروني" -#: pretix/base/forms/auth.py:326 pretix/control/forms/orders.py:1041 +#: pretix/base/forms/auth.py:326 pretix/control/forms/orders.py:1049 #: pretix/control/templates/pretixcontrol/shredder/download.html:53 msgid "Confirmation code" msgstr "رمز التأكيد" -#: pretix/base/forms/questions.py:139 pretix/base/forms/questions.py:266 +#: pretix/base/forms/questions.py:139 pretix/base/forms/questions.py:272 #, fuzzy #| msgid "No country specified." msgctxt "name_salutation" msgid "not specified" msgstr "تحديد أي بلد." -#: pretix/base/forms/questions.py:229 +#: pretix/base/forms/questions.py:229 pretix/base/forms/questions.py:234 #, fuzzy #| msgid "Please enter a shorter name." msgid "Please do not use special characters in names." msgstr "الرجاء إدخال اسم أقصر." -#: pretix/base/forms/questions.py:291 +#: pretix/base/forms/questions.py:297 msgid "Please enter a shorter name." msgstr "الرجاء إدخال اسم أقصر." -#: pretix/base/forms/questions.py:318 +#: pretix/base/forms/questions.py:324 msgctxt "phonenumber" msgid "International area code" msgstr "مفتاح الاتصال الدولي" -#: pretix/base/forms/questions.py:344 +#: pretix/base/forms/questions.py:350 msgctxt "phonenumber" msgid "Phone number (without international area code)" msgstr "رقم الهاتف (بدون مفتاح الاتصال الدولي)" -#: pretix/base/forms/questions.py:507 +#: pretix/base/forms/questions.py:513 msgid "" "You uploaded an image in landscape orientation. Please upload an image in " "portrait orientation." msgstr "" "قمت بتحميل صورة في الاتجاه الأفقي. الرجاء تحميل صورة في الاتجاه العمودي." -#: pretix/base/forms/questions.py:510 +#: pretix/base/forms/questions.py:516 msgid "Please upload an image where the width is 3/4 of the height." msgstr "يرجى تحميل صورة بحيث يكون العرض 3/4 الارتفاع." -#: pretix/base/forms/questions.py:513 +#: pretix/base/forms/questions.py:519 msgid "" "The file you uploaded has a very large number of pixels, please upload an " "image no larger than 10000 x 10000 pixels." @@ -3552,95 +3553,95 @@ msgstr "" "يحتوي الملف الذي قمت بتحميله على عدد كبير جدا من وحدات البكسل ، يرجى تحميل " "صورة لا يزيد حجمها عن 10000 × 10000 بكسل." -#: pretix/base/forms/questions.py:516 pretix/helpers/images.py:75 +#: pretix/base/forms/questions.py:522 pretix/helpers/images.py:75 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" "قم بتحميل صورة صالحة. الملف الذي قمت بتحميله ليس صورة أو هو صورة تالفة." -#: pretix/base/forms/questions.py:659 pretix/base/forms/questions.py:668 +#: pretix/base/forms/questions.py:665 pretix/base/forms/questions.py:674 msgid "" "If you keep this empty, the ticket will be valid starting at the time of " "purchase." msgstr "" -#: pretix/base/forms/questions.py:715 pretix/base/forms/questions.py:1108 +#: pretix/base/forms/questions.py:721 pretix/base/forms/questions.py:1114 msgid "Street and Number" msgstr "الشارع والرقم" -#: pretix/base/forms/questions.py:893 +#: pretix/base/forms/questions.py:899 #, fuzzy, python-brace-format #| msgid "Please enter a shorter name." msgid "Please enter a date between {min} and {max}." msgstr "الرجاء إدخال اسم أقصر." -#: pretix/base/forms/questions.py:899 +#: pretix/base/forms/questions.py:905 #, fuzzy, python-brace-format #| msgid "Please enter a valid sales channel." msgid "Please enter a date no earlier than {min}." msgstr "الرجاء إدخال قناة بيع صالحة." -#: pretix/base/forms/questions.py:904 +#: pretix/base/forms/questions.py:910 #, fuzzy, python-brace-format #| msgid "Please enter a shorter name." msgid "Please enter a date no later than {max}." msgstr "الرجاء إدخال اسم أقصر." -#: pretix/base/forms/questions.py:942 +#: pretix/base/forms/questions.py:948 #, python-brace-format msgid "Please enter a date and time between {min} and {max}." msgstr "" -#: pretix/base/forms/questions.py:948 +#: pretix/base/forms/questions.py:954 #, fuzzy, python-brace-format #| msgid "Please enter a valid sales channel." msgid "Please enter a date and time no earlier than {min}." msgstr "الرجاء إدخال قناة بيع صالحة." -#: pretix/base/forms/questions.py:953 +#: pretix/base/forms/questions.py:959 #, fuzzy, python-brace-format #| msgid "Please enter a shorter name." msgid "Please enter a date and time no later than {max}." msgstr "الرجاء إدخال اسم أقصر." -#: pretix/base/forms/questions.py:1172 +#: pretix/base/forms/questions.py:1178 msgid "" "Optional, but depending on the country you reside in we might need to charge " "you additional taxes if you do not enter it." msgstr "" -#: pretix/base/forms/questions.py:1177 +#: pretix/base/forms/questions.py:1183 msgid "" "Optional, but it might be required for you to claim tax benefits on your " "invoice depending on your and the seller’s country of residence." msgstr "" -#: pretix/base/forms/questions.py:1185 +#: pretix/base/forms/questions.py:1191 #, fuzzy #| msgid "Cancellation requested" msgid "No invoice requested" msgstr "طلبات الإلغاء" -#: pretix/base/forms/questions.py:1187 +#: pretix/base/forms/questions.py:1193 msgid "Invoice transmission method" msgstr "" -#: pretix/base/forms/questions.py:1333 +#: pretix/base/forms/questions.py:1339 msgid "You need to provide a company name." msgstr "تحتاج إلى تقديم اسم شركة." -#: pretix/base/forms/questions.py:1335 +#: pretix/base/forms/questions.py:1341 msgid "You need to provide your name." msgstr "تحتاج إلى تقديم اسمك." -#: pretix/base/forms/questions.py:1361 +#: pretix/base/forms/questions.py:1367 msgid "" "If you enter an invoice address, you also need to select an invoice " "transmission method." msgstr "" -#: pretix/base/forms/questions.py:1403 +#: pretix/base/forms/questions.py:1409 #, fuzzy #| msgid "The selected product is not active or has no price set." msgid "" @@ -3648,13 +3649,13 @@ msgid "" "type of address." msgstr "المنتج المحدد غير نشط أو ليس له سعر محدد." -#: pretix/base/forms/questions.py:1412 +#: pretix/base/forms/questions.py:1418 msgid "" "The selected type of invoice transmission requires a field that is currently " "not available, please reach out to the organizer." msgstr "" -#: pretix/base/forms/questions.py:1416 +#: pretix/base/forms/questions.py:1422 msgid "This field is required for the selected type of invoice transmission." msgstr "" @@ -3694,8 +3695,8 @@ msgstr "هاتف ذكي مع تطبيق المصادقة" msgid "WebAuthn-compatible hardware token (e.g. Yubikey)" msgstr "رمز جهاز متوافق مع WebAuthn (مثل Yubikey)" -#: pretix/base/forms/user.py:92 pretix/presale/forms/customer.py:389 -#: pretix/presale/forms/customer.py:469 +#: pretix/base/forms/user.py:92 pretix/presale/forms/customer.py:390 +#: pretix/presale/forms/customer.py:470 msgid "The current password you entered was not correct." msgstr "كلمة المرور الحالية التي أدخلتها غير صحيحة." @@ -3703,13 +3704,13 @@ msgstr "كلمة المرور الحالية التي أدخلتها غير صح msgid "Please choose a password different to your current one." msgstr "" -#: pretix/base/forms/user.py:105 pretix/presale/forms/customer.py:398 -#: pretix/presale/forms/customer.py:474 +#: pretix/base/forms/user.py:105 pretix/presale/forms/customer.py:399 +#: pretix/presale/forms/customer.py:475 msgid "Your current password" msgstr "كلمة السر الحالية الخاصة بك" #: pretix/base/forms/user.py:111 pretix/control/forms/users.py:50 -#: pretix/presale/forms/customer.py:403 +#: pretix/presale/forms/customer.py:404 msgid "New password" msgstr "كلمة المرور الجديدة" @@ -3745,7 +3746,7 @@ msgid "" "\"{{\" and \"}}\"." msgstr "" -#: pretix/base/forms/validators.py:72 pretix/control/views/event.py:900 +#: pretix/base/forms/validators.py:72 pretix/control/views/event.py:903 #, fuzzy, python-format #| msgid "Invalid placeholder(s): %(value)s" msgid "Invalid placeholder: {%(value)s}" @@ -4224,37 +4225,37 @@ msgstr "" msgid "Default list" msgstr "القائمة الافتراضية" -#: pretix/base/modelimport.py:126 +#: pretix/base/modelimport.py:130 msgid "Keep empty" msgstr "أبقه فارغا" -#: pretix/base/modelimport.py:160 +#: pretix/base/modelimport.py:164 #, python-brace-format msgid "Invalid setting for column \"{header}\"." msgstr "إعداد غير صالح للعمود \"{header}\"." -#: pretix/base/modelimport.py:220 +#: pretix/base/modelimport.py:224 #, python-brace-format msgid "Could not parse {value} as a yes/no value." msgstr "" -#: pretix/base/modelimport.py:243 +#: pretix/base/modelimport.py:247 #, python-brace-format msgid "Could not parse {value} as a date and time." msgstr "" -#: pretix/base/modelimport.py:253 pretix/control/views/orders.py:1175 -#: pretix/control/views/orders.py:1204 pretix/control/views/orders.py:1253 -#: pretix/control/views/orders.py:1288 pretix/control/views/orders.py:1311 +#: pretix/base/modelimport.py:257 pretix/control/views/orders.py:1162 +#: pretix/control/views/orders.py:1191 pretix/control/views/orders.py:1240 +#: pretix/control/views/orders.py:1275 pretix/control/views/orders.py:1298 msgid "You entered an invalid number." msgstr "لقد أدخلت رقما غير صالح." -#: pretix/base/modelimport.py:300 pretix/base/modelimport.py:312 +#: pretix/base/modelimport.py:304 pretix/base/modelimport.py:316 msgctxt "subevent" msgid "No matching date was found." msgstr "لم يتم العثور على تاريخ مطابق." -#: pretix/base/modelimport.py:302 pretix/base/modelimport.py:314 +#: pretix/base/modelimport.py:306 pretix/base/modelimport.py:318 msgctxt "subevent" msgid "Multiple matching dates were found." msgstr "تم العثور على تواريخ مطابقة متعددة." @@ -4283,7 +4284,7 @@ msgid "" "internal ID, provided only one date in the system matches the input." msgstr "" -#: pretix/base/modelimport_orders.py:120 pretix/presale/views/waiting.py:157 +#: pretix/base/modelimport_orders.py:120 pretix/presale/views/waiting.py:162 msgctxt "subevent" msgid "You need to select a date." msgstr "تحتاج إلى تحديد تاريخ." @@ -4568,37 +4569,37 @@ msgid "" "voucher" msgstr "" -#: pretix/base/models/auth.py:274 +#: pretix/base/models/auth.py:283 msgid "Is active" msgstr "نشط" -#: pretix/base/models/auth.py:276 +#: pretix/base/models/auth.py:285 msgid "Is site admin" msgstr "مشرف الموقع" -#: pretix/base/models/auth.py:278 +#: pretix/base/models/auth.py:287 msgid "Date joined" msgstr "تاريخ الانضمام" -#: pretix/base/models/auth.py:280 +#: pretix/base/models/auth.py:289 #, fuzzy #| msgid "Request a new password" msgid "Force user to select a new password" msgstr "اطلب كلمة مرور جديدة" -#: pretix/base/models/auth.py:290 +#: pretix/base/models/auth.py:299 msgid "Two-factor authentication is required to log in" msgstr "المصادقة الثنائية مطلوبة لتسجيل الدخول" -#: pretix/base/models/auth.py:294 +#: pretix/base/models/auth.py:303 msgid "Receive notifications according to my settings below" msgstr "تلقي الإخطارات وفقا لإعداداتي التالية" -#: pretix/base/models/auth.py:295 +#: pretix/base/models/auth.py:304 msgid "If turned off, you will not get any notifications." msgstr "إذا قمت بإيقاف التشغيل، فلن تتلقى أي إشعارات." -#: pretix/base/models/auth.py:309 +#: pretix/base/models/auth.py:318 #: pretix/control/templates/pretixcontrol/orders/bulk_action.html:23 #: pretix/control/templates/pretixcontrol/orders/index.html:135 #: pretix/control/templates/pretixcontrol/search/orders.html:54 @@ -4606,41 +4607,41 @@ msgstr "إذا قمت بإيقاف التشغيل، فلن تتلقى أي إش #: pretix/control/templates/pretixcontrol/user/staff_session_list.html:15 #: pretix/control/templates/pretixcontrol/users/form.html:4 #: pretix/control/templates/pretixcontrol/users/form.html:6 -#: pretix/control/views/organizer.py:174 tests/base/test_mail.py:202 +#: pretix/control/views/organizer.py:174 tests/base/test_mail.py:205 msgid "User" msgstr "المستخدم" -#: pretix/base/models/auth.py:310 pretix/control/navigation.py:438 +#: pretix/base/models/auth.py:319 pretix/control/navigation.py:438 #: pretix/control/templates/pretixcontrol/users/index.html:5 #: pretix/control/templates/pretixcontrol/users/index.html:7 msgid "Users" msgstr "المستخدمون" -#: pretix/base/models/auth.py:367 +#: pretix/base/models/auth.py:376 msgid "Account information changed" msgstr "تغييرت معلومات الحساب" -#: pretix/base/models/auth.py:394 +#: pretix/base/models/auth.py:403 #, python-brace-format msgid "" "to confirm changing your email address from {old_email}\n" "to {new_email}, use the following code:" msgstr "" -#: pretix/base/models/auth.py:398 +#: pretix/base/models/auth.py:407 #, python-brace-format msgid "" "to confirm that your email address {email} belongs to your pretix account, " "use the following code:" msgstr "" -#: pretix/base/models/auth.py:412 +#: pretix/base/models/auth.py:421 #, fuzzy #| msgid "Confirmation code" msgid "pretix confirmation code" msgstr "رمز التأكيد" -#: pretix/base/models/auth.py:456 +#: pretix/base/models/auth.py:465 #: pretix/control/templates/pretixcontrol/auth/forgot.html:7 msgid "Password recovery" msgstr "استعادة كلمة السر" @@ -4858,7 +4859,7 @@ msgid "disabled" msgstr "معاق" #: pretix/base/models/customers.py:354 pretix/base/models/orders.py:1546 -#: pretix/base/models/orders.py:3348 pretix/base/settings.py:1308 +#: pretix/base/models/orders.py:3348 pretix/base/settings.py:1310 msgid "Company name" msgstr "اسم الشركة" @@ -4998,7 +4999,7 @@ msgstr "أضف تذاكر لتاريخ مختلف" #: pretix/base/models/discount.py:69 pretix/base/models/items.py:1161 #: pretix/base/models/items.py:1481 pretix/base/models/items.py:1708 -#: pretix/base/models/organizer.py:657 +#: pretix/base/models/organizer.py:664 msgid "Position" msgstr "حالة" @@ -5180,7 +5181,7 @@ msgstr "" msgid "The slug may only contain letters, numbers, dots and dashes." msgstr "يجب أن يحتوي الرابط فقط على أحرف وأرقام ونقاط وشرطات." -#: pretix/base/models/event.py:624 pretix/base/models/event.py:1551 +#: pretix/base/models/event.py:624 pretix/base/models/event.py:1557 msgid "Show in lists" msgstr "أظهرهذا في قوائم" @@ -5192,7 +5193,7 @@ msgstr "" "إذا تم تحديدها، فستظهر هذه الفعالية بشكل عام في قائمة الفعاليات لحساب المنظم " "الخاص بك." -#: pretix/base/models/event.py:629 pretix/base/models/event.py:1566 +#: pretix/base/models/event.py:629 pretix/base/models/event.py:1572 #: pretix/control/forms/subevents.py:100 msgid "" "Optional. No products will be sold after this date. If you do not set this " @@ -5201,7 +5202,7 @@ msgstr "" "اختياري. لن يتم بيع أي منتجات بعد هذا التاريخ. إذا لم تقم بتعيين هذه " "القيمة ، فسينتهي عرض ما قبل البيع بعد تاريخ انتهاء الفعالية الخاصة بك." -#: pretix/base/models/event.py:635 pretix/base/models/event.py:1572 +#: pretix/base/models/event.py:635 pretix/base/models/event.py:1578 #: pretix/control/forms/subevents.py:94 msgid "Optional. No products will be sold before this date." msgstr "اختياري. لن يتم بيع أي منتجات قبل هذا التاريخ." @@ -5229,11 +5230,11 @@ msgstr "الإضافات" #: pretix/control/views/dashboards.py:554 #: pretix/presale/templates/pretixpresale/event/index.html:33 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:8 -#: pretix/presale/views/widget.py:732 +#: pretix/presale/views/widget.py:730 msgid "Event series" msgstr "فعالية بأوقات مختلفة" -#: pretix/base/models/event.py:676 pretix/base/models/event.py:1600 +#: pretix/base/models/event.py:676 pretix/base/models/event.py:1606 #, fuzzy #| msgid "Settings" msgid "Seating plan" @@ -5263,14 +5264,14 @@ msgstr "يقتصر على قنوات بيع محددة" msgid "Events" msgstr "فعاليات" -#: pretix/base/models/event.py:1372 +#: pretix/base/models/event.py:1378 msgid "" "You have configured at least one paid product but have not enabled any " "payment methods." msgstr "" "لقد قمت بإعداد منتج مدفوع واحد على الأقل، ولكن لم تقم بتفعيل أي وسيلة سداد." -#: pretix/base/models/event.py:1375 +#: pretix/base/models/event.py:1381 #, fuzzy #| msgid "" #| "You have configured at least one paid product but have not enabled any " @@ -5281,37 +5282,37 @@ msgid "" msgstr "" "لقد قمت بإعداد منتج مدفوع واحد على الأقل، ولكن لم تقم بتفعيل أي وسيلة سداد." -#: pretix/base/models/event.py:1378 +#: pretix/base/models/event.py:1384 msgid "You need to configure at least one quota to sell anything." msgstr "تحتاج إلى إعداد حصة واحدة على الأقل لبيع أي شيء." -#: pretix/base/models/event.py:1383 +#: pretix/base/models/event.py:1389 #, python-brace-format msgid "You need to fill the meta parameter \"{property}\"." msgstr "تحتاج إلى ملء المعلومة الوصفية \"{property}\"." -#: pretix/base/models/event.py:1497 +#: pretix/base/models/event.py:1503 msgid "" "Once created an event cannot change between an series and a single event." msgstr "بمجرد إنشاء فعالية لا يمكن التغيير بين سلسلة فعاليات وفعالية واحدة." -#: pretix/base/models/event.py:1503 +#: pretix/base/models/event.py:1509 msgid "The event slug cannot be changed." msgstr "لا يمكن تغيير رابط الفعالية." -#: pretix/base/models/event.py:1506 +#: pretix/base/models/event.py:1512 msgid "This slug has already been used for a different event." msgstr "لقد تم استخدام هذا الرابط مسبقا لفعالية مختلفة." -#: pretix/base/models/event.py:1512 +#: pretix/base/models/event.py:1518 msgid "The event cannot end before it starts." msgstr "لا يمكن أن تنتهي الفعالية قبل أن تبدأ." -#: pretix/base/models/event.py:1518 +#: pretix/base/models/event.py:1524 msgid "The event's presale cannot end before it starts." msgstr "لا يمكن أن ينتهي العرض المسبق للفعالية قبل أن يبدأ." -#: pretix/base/models/event.py:1548 +#: pretix/base/models/event.py:1554 msgid "" "Only with this checkbox enabled, this date is visible in the frontend to " "users." @@ -5319,7 +5320,7 @@ msgstr "" "يكون هذا التاريخ مرئيا في الواجهة الأمامية للمستخدمين فقط في حال تم تمكين " "مربع الاختيار هذا." -#: pretix/base/models/event.py:1552 +#: pretix/base/models/event.py:1558 msgid "" "If selected, this event will show up publicly on the list of dates for your " "event." @@ -5327,44 +5328,44 @@ msgstr "" "إذا تم الحديد، فستظهر هذه الفعالية بشكل عام في قائمة تواريخ الفعالية الخاصة " "بك." -#: pretix/base/models/event.py:1597 pretix/base/settings.py:3332 +#: pretix/base/models/event.py:1603 pretix/base/settings.py:3334 msgid "Frontpage text" msgstr "نص الصفحة الأولى" -#: pretix/base/models/event.py:1614 +#: pretix/base/models/event.py:1620 msgid "Date in event series" msgstr "التاريخ في سلسلة الفعالية" -#: pretix/base/models/event.py:1615 +#: pretix/base/models/event.py:1621 msgid "Dates in event series" msgstr "التواريخ في سلسلة الفعالية" -#: pretix/base/models/event.py:1756 +#: pretix/base/models/event.py:1762 msgid "One or more variations do not belong to this event." msgstr "عنصر أو أكثر لا ينتمي إلى هذه الفعالية." -#: pretix/base/models/event.py:1786 pretix/base/models/items.py:2236 +#: pretix/base/models/event.py:1792 pretix/base/models/items.py:2236 msgid "Can not contain spaces or special characters except underscores" msgstr "لا يمكن أن يحتوي على مسافات أو أحرف خاصة باستثناء الشرطات السفلية" -#: pretix/base/models/event.py:1791 pretix/base/models/items.py:2241 +#: pretix/base/models/event.py:1797 pretix/base/models/items.py:2241 msgid "The property name may only contain letters, numbers and underscores." msgstr "لا يسمح أن يحتوي اسم الملكية إلا على أحرف وأرقام وشرطات سفلية فقط." -#: pretix/base/models/event.py:1796 +#: pretix/base/models/event.py:1802 msgid "Default value" msgstr "القيمة الافتراضية" -#: pretix/base/models/event.py:1798 +#: pretix/base/models/event.py:1804 #: pretix/control/templates/pretixcontrol/organizers/properties.html:50 msgid "Can only be changed by organizer-level administrators" msgstr "لا يمكن تغييرها إلا من قبل المسؤولين برتبة منظم" -#: pretix/base/models/event.py:1800 +#: pretix/base/models/event.py:1806 msgid "Required for events" msgstr "مطلوب للفعاليات" -#: pretix/base/models/event.py:1801 +#: pretix/base/models/event.py:1807 msgid "" "If checked, an event can only be taken live if the property is set. In event " "series, its always optional to set a value for individual dates" @@ -5372,53 +5373,53 @@ msgstr "" "إذا تم تحديده ، فلا يمكن أن تكون الفعالية مباشرة إلا إذا تم تعيين الخاصية. " "في سلسلة الفعالية، يكون دائما تعيين قيمة للتواريخ الفردية أمرا اختياريا" -#: pretix/base/models/event.py:1807 pretix/base/models/items.py:2253 +#: pretix/base/models/event.py:1813 pretix/base/models/items.py:2253 msgid "Valid values" msgstr "قيم صالحة" -#: pretix/base/models/event.py:1810 +#: pretix/base/models/event.py:1816 #: pretix/control/templates/pretixcontrol/organizers/properties.html:45 #, fuzzy #| msgid "Show number of tickets left" msgid "Show filter option to customers" msgstr "إظهار عدد التذاكر المتبقية" -#: pretix/base/models/event.py:1811 +#: pretix/base/models/event.py:1817 msgid "" "This field will be shown to filter events in the public event list and " "calendar." msgstr "" -#: pretix/base/models/event.py:1814 pretix/control/forms/organizer.py:272 +#: pretix/base/models/event.py:1820 pretix/control/forms/organizer.py:272 #: pretix/control/forms/organizer.py:276 #, fuzzy #| msgid "Public profile" msgid "Public name" msgstr "حساب عام" -#: pretix/base/models/event.py:1818 +#: pretix/base/models/event.py:1824 #: pretix/control/templates/pretixcontrol/organizers/properties.html:40 msgid "Can be used for filtering" msgstr "" -#: pretix/base/models/event.py:1819 +#: pretix/base/models/event.py:1825 msgid "" "This field will be shown to filter events or reports in the backend, and it " "can also be used for hidden filter parameters in the frontend (e.g. using " "the widget)." msgstr "" -#: pretix/base/models/event.py:1829 +#: pretix/base/models/event.py:1835 msgid "A property can either be required or have a default value, not both." msgstr "يمكن أن تكون الخاصية إما مطلوبة أو لها قيمة افتراضية ، وليس كليهما." -#: pretix/base/models/event.py:1909 pretix/base/models/organizer.py:620 +#: pretix/base/models/event.py:1915 pretix/base/models/organizer.py:627 #, fuzzy #| msgid "Info text" msgid "Link text" msgstr "معلومات النص" -#: pretix/base/models/event.py:1912 pretix/base/models/organizer.py:623 +#: pretix/base/models/event.py:1918 pretix/base/models/organizer.py:630 #, fuzzy #| msgid "Imprint URL" msgid "Link URL" @@ -5456,8 +5457,8 @@ msgstr "إعدادات إضافية" #: pretix/base/models/exports.py:74 pretix/control/forms/event.py:1259 #: pretix/control/forms/event.py:1333 pretix/control/forms/event.py:1343 #: pretix/control/forms/event.py:1353 pretix/control/forms/event.py:1368 -#: pretix/control/forms/orders.py:730 pretix/control/forms/orders.py:952 -#: pretix/control/forms/orders.py:979 pretix/control/forms/organizer.py:727 +#: pretix/control/forms/orders.py:738 pretix/control/forms/orders.py:960 +#: pretix/control/forms/orders.py:987 pretix/control/forms/organizer.py:727 #: pretix/control/forms/organizer.py:737 pretix/control/forms/organizer.py:747 #: pretix/control/forms/organizer.py:757 pretix/control/forms/vouchers.py:282 #: pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html:33 @@ -5467,9 +5468,9 @@ msgstr "إعدادات إضافية" msgid "Subject" msgstr "موضوع" -#: pretix/base/models/exports.py:78 pretix/control/forms/orders.py:769 -#: pretix/control/forms/orders.py:792 pretix/control/forms/orders.py:960 -#: pretix/control/forms/orders.py:987 pretix/control/forms/vouchers.py:288 +#: pretix/base/models/exports.py:78 pretix/control/forms/orders.py:777 +#: pretix/control/forms/orders.py:800 pretix/control/forms/orders.py:968 +#: pretix/control/forms/orders.py:995 pretix/control/forms/vouchers.py:288 #: pretix/plugins/sendmail/forms.py:58 pretix/plugins/sendmail/forms.py:78 #: pretix/plugins/sendmail/models.py:242 msgid "Message" @@ -5562,7 +5563,7 @@ msgctxt "invoice" msgid "Tax ID: %s" msgstr "رقم تعريف الضريبة: %s" -#: pretix/base/models/invoices.py:240 pretix/base/services/invoices.py:156 +#: pretix/base/models/invoices.py:240 pretix/base/services/invoices.py:157 #, python-format msgctxt "invoice" msgid "VAT-ID: %s" @@ -5802,7 +5803,7 @@ msgstr "عرض قائمة الانتظار لهذه التذكرة" msgid "This will only work if waiting lists are enabled for this event." msgstr "لن يعمل هذا إلا إذا تم تمكين قوائم الانتظار لهذه الفعالية." -#: pretix/base/models/items.py:547 pretix/base/settings.py:1591 +#: pretix/base/models/items.py:547 pretix/base/settings.py:1593 #: pretix/control/forms/event.py:1869 msgid "Show number of tickets left" msgstr "إظهار عدد التذاكر المتبقية" @@ -6352,7 +6353,7 @@ msgid "Country code (ISO 3166-1 alpha-2)" msgstr "رمز البلد (ISO 3166-1 alpha-2)" #: pretix/base/models/items.py:1681 pretix/base/models/items.py:1957 -#: pretix/base/models/organizer.py:647 +#: pretix/base/models/organizer.py:654 #, fuzzy #| msgid "The property name may only contain letters, numbers and underscores." msgid "" @@ -6600,7 +6601,7 @@ msgstr "" #: pretix/base/models/items.py:2122 pretix/control/navigation.py:169 #: pretix/control/templates/pretixcontrol/items/quotas.html:4 #: pretix/control/templates/pretixcontrol/items/quotas.html:6 -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:416 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:418 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:185 #: pretix/control/templates/pretixcontrol/subevents/detail.html:59 msgid "Quotas" @@ -6760,7 +6761,7 @@ msgid "pending" msgstr "معلق" #: pretix/base/models/orders.py:202 pretix/base/payment.py:570 -#: pretix/base/services/invoices.py:593 +#: pretix/base/services/invoices.py:607 msgid "paid" msgstr "مدفوع" @@ -7013,7 +7014,7 @@ msgid "Other fees" msgstr "رسوم أخرى" #: pretix/base/models/orders.py:2316 pretix/base/payment.py:1379 -#: pretix/base/payment.py:1455 pretix/base/settings.py:1099 +#: pretix/base/payment.py:1455 pretix/base/settings.py:1101 #: pretix/control/templates/pretixcontrol/items/index.html:117 #: pretix/control/templates/pretixcontrol/order/index.html:152 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:383 @@ -7071,7 +7072,7 @@ msgstr "كود المعاملة" msgid "Badge" msgstr "شارة" -#: pretix/base/models/orders.py:3581 pretix/base/pdf.py:1140 +#: pretix/base/models/orders.py:3581 pretix/base/pdf.py:1151 #: pretix/control/templates/pretixcontrol/checkin/checkins.html:66 #: pretix/plugins/ticketoutputpdf/ticketoutput.py:114 msgid "Ticket" @@ -7083,8 +7084,8 @@ msgstr "تذكرة" msgid "Certificate" msgstr "فشل التحقق" -#: pretix/base/models/orders.py:3583 pretix/control/views/event.py:393 -#: pretix/control/views/event.py:398 pretix/control/views/organizer.py:652 +#: pretix/base/models/orders.py:3583 pretix/control/views/event.py:401 +#: pretix/control/views/event.py:406 pretix/control/views/organizer.py:652 #: pretix/control/views/organizer.py:657 #, fuzzy #| msgid "Other…" @@ -7108,87 +7109,87 @@ msgstr "" msgid "Organizers" msgstr "المنظمون" -#: pretix/base/models/organizer.py:363 +#: pretix/base/models/organizer.py:369 #: pretix/control/templates/pretixcontrol/organizers/teams.html:35 msgid "Team name" msgstr "اسم الفريق" -#: pretix/base/models/organizer.py:364 +#: pretix/base/models/organizer.py:370 #: pretix/control/templates/pretixcontrol/organizers/team_members.html:13 msgid "Team members" msgstr "أعضاء الفريق" -#: pretix/base/models/organizer.py:366 +#: pretix/base/models/organizer.py:372 #, fuzzy #| msgid "Do you really want to disable two-factor authentication?" msgid "Require all members of this team to use two-factor authentication" msgstr "هل تريد حقا أن اثنين عامل التوثيق تعطيلها؟" -#: pretix/base/models/organizer.py:367 +#: pretix/base/models/organizer.py:373 msgid "" "If you turn this on, all members of the team will be required to either set " "up two-factor authentication or leave the team. The setting may take a few " "minutes to become effective for all users." msgstr "" -#: pretix/base/models/organizer.py:378 +#: pretix/base/models/organizer.py:384 #, fuzzy #| msgid "Event permissions" msgid "All event permissions" msgstr "أذونات الحدث" -#: pretix/base/models/organizer.py:379 +#: pretix/base/models/organizer.py:385 #: pretix/control/templates/pretixcontrol/organizers/team_edit.html:34 msgid "Event permissions" msgstr "أذونات الحدث" -#: pretix/base/models/organizer.py:380 +#: pretix/base/models/organizer.py:386 #, fuzzy #| msgid "Organizer permissions" msgid "All organizer permissions" msgstr "أذونات منظم" -#: pretix/base/models/organizer.py:381 +#: pretix/base/models/organizer.py:387 #: pretix/control/templates/pretixcontrol/organizers/team_edit.html:25 msgid "Organizer permissions" msgstr "أذونات منظم" -#: pretix/base/models/organizer.py:401 +#: pretix/base/models/organizer.py:407 #, python-format msgid "%(name)s on %(object)s" msgstr "%(name)s على %(object)s" -#: pretix/base/models/organizer.py:487 +#: pretix/base/models/organizer.py:493 #: pretix/control/templates/pretixcontrol/events/create_basics.html:67 msgid "Team" msgstr "فريق" -#: pretix/base/models/organizer.py:488 pretix/base/permissions.py:282 +#: pretix/base/models/organizer.py:494 pretix/base/permissions.py:282 #: pretix/control/navigation.py:566 #: pretix/control/templates/pretixcontrol/organizers/teams.html:6 msgid "Teams" msgstr "فرق" -#: pretix/base/models/organizer.py:508 +#: pretix/base/models/organizer.py:514 #, python-brace-format msgid "Invite to team '{team}' for '{email}'" msgstr "دعوة إلى فريق '{team}' ل '{email}'" -#: pretix/base/models/organizer.py:642 +#: pretix/base/models/organizer.py:649 #: pretix/control/templates/pretixcontrol/organizers/channels.html:23 #, fuzzy #| msgid "Internal identifier" msgid "Identifier" msgstr "معرف داخلي" -#: pretix/base/models/organizer.py:652 +#: pretix/base/models/organizer.py:659 #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:54 #: pretix/control/templates/pretixcontrol/items/questions.html:24 msgid "Type" msgstr "نوع" #: pretix/base/models/seating.py:46 pretix/base/models/tax.py:306 -#: pretix/base/pdf.py:1319 +#: pretix/base/pdf.py:1330 msgid "Your layout file is not a valid JSON file." msgstr "ملف التخطيط الخاص بك ليس ملف \"ترميز باستعمال جافا سكريبت\" صالح." @@ -8145,7 +8146,7 @@ msgstr "" msgid "Offsetting" msgstr "تعويض" -#: pretix/base/payment.py:1339 pretix/control/views/orders.py:1262 +#: pretix/base/payment.py:1339 pretix/control/views/orders.py:1249 msgid "You entered an order that could not be found." msgstr "لقد أدخلت طلبا لا يمكن العثور عليه." @@ -8186,7 +8187,7 @@ msgid "Product name" msgstr "اسم المنتج" #: pretix/base/pdf.py:124 pretix/base/services/tickets.py:98 -#: pretix/control/views/event.py:938 pretix/control/views/pdf.py:96 +#: pretix/control/views/event.py:941 pretix/control/views/pdf.py:96 msgid "Sample product" msgstr "نموذج منتج" @@ -8203,7 +8204,7 @@ msgid "Product description" msgstr "وصف المنتج" #: pretix/base/pdf.py:134 pretix/base/services/tickets.py:99 -#: pretix/control/views/event.py:939 pretix/control/views/pdf.py:97 +#: pretix/control/views/event.py:942 pretix/control/views/pdf.py:97 msgid "Sample product description" msgstr "نموذج وصف منتج" @@ -8244,11 +8245,11 @@ msgid "Price including add-ons and bundled products" msgstr "السعر شاملا الإضافات" #: pretix/base/pdf.py:184 pretix/base/pdf.py:342 -#: pretix/base/services/invoices.py:594 +#: pretix/base/services/invoices.py:608 #: pretix/base/services/placeholders.py:604 #: pretix/base/services/placeholders.py:689 #: pretix/base/services/placeholders.py:705 -#: pretix/base/services/placeholders.py:714 pretix/control/views/event.py:940 +#: pretix/base/services/placeholders.py:714 pretix/control/views/event.py:943 msgid "John Doe" msgstr "جون دو" @@ -8331,9 +8332,9 @@ msgstr "20:00 2017-05-31" msgid "Event begin date" msgstr "تاريخ بداية الفعالية" -#: pretix/base/pdf.py:264 pretix/base/pdf.py:290 pretix/base/pdf.py:399 -#: pretix/base/pdf.py:423 pretix/base/pdf.py:447 pretix/base/pdf.py:471 -#: pretix/base/pdf.py:534 pretix/base/pdf.py:539 +#: pretix/base/pdf.py:264 pretix/base/pdf.py:290 pretix/base/pdf.py:406 +#: pretix/base/pdf.py:430 pretix/base/pdf.py:454 pretix/base/pdf.py:478 +#: pretix/base/pdf.py:541 pretix/base/pdf.py:546 msgid "2017-05-31" msgstr "2017-05-31" @@ -8378,8 +8379,8 @@ msgstr "تاريخ إنتهاء الفعالية" msgid "Event admission date and time" msgstr "تاريخ ووقت قبول الفعالية" -#: pretix/base/pdf.py:311 pretix/base/pdf.py:407 pretix/base/pdf.py:431 -#: pretix/base/pdf.py:455 pretix/base/pdf.py:479 pretix/base/pdf.py:528 +#: pretix/base/pdf.py:311 pretix/base/pdf.py:414 pretix/base/pdf.py:438 +#: pretix/base/pdf.py:462 pretix/base/pdf.py:486 pretix/base/pdf.py:535 msgid "2017-05-31 19:00" msgstr "19:00 2017-05-31" @@ -8387,8 +8388,8 @@ msgstr "19:00 2017-05-31" msgid "Event admission time" msgstr "وقت تسجيل الفعالية" -#: pretix/base/pdf.py:319 pretix/base/pdf.py:415 pretix/base/pdf.py:439 -#: pretix/base/pdf.py:463 pretix/base/pdf.py:487 +#: pretix/base/pdf.py:319 pretix/base/pdf.py:422 pretix/base/pdf.py:446 +#: pretix/base/pdf.py:470 pretix/base/pdf.py:494 msgid "19:00" msgstr "19:00" @@ -8396,7 +8397,7 @@ msgstr "19:00" msgid "Event location" msgstr "موقع الفعالية" -#: pretix/base/pdf.py:327 pretix/base/settings.py:1333 +#: pretix/base/pdf.py:327 pretix/base/settings.py:1335 msgid "Random City" msgstr "مدينة عشوائية" @@ -8408,7 +8409,7 @@ msgstr "شارع سيسيم 42" msgid "12345" msgstr "12345" -#: pretix/base/pdf.py:362 pretix/base/services/invoices.py:597 +#: pretix/base/pdf.py:362 pretix/base/services/invoices.py:611 msgid "Sample city" msgstr "مدينة مثال" @@ -8428,7 +8429,7 @@ msgstr "اتلانتس" msgid "List of Add-Ons" msgstr "قائمة الإضافات" -#: pretix/base/pdf.py:377 +#: pretix/base/pdf.py:377 pretix/base/pdf.py:384 #, fuzzy #| msgid "" #| "Add-on 1\n" @@ -8440,181 +8441,187 @@ msgstr "" "الإضافة 1\n" "الإضافة 2" -#: pretix/base/pdf.py:383 pretix/control/forms/filter.py:1537 +#: pretix/base/pdf.py:383 +#, fuzzy +#| msgid "List of Add-Ons" +msgid "List of Checked-In Add-Ons" +msgstr "قائمة الإضافات" + +#: pretix/base/pdf.py:390 pretix/control/forms/filter.py:1537 #: pretix/control/forms/filter.py:1539 #: pretix/control/templates/pretixcontrol/organizers/index.html:42 msgid "Organizer name" msgstr "اسم المنظم" -#: pretix/base/pdf.py:384 +#: pretix/base/pdf.py:391 msgid "Event organizer company" msgstr "شركة منظم الفعالية" -#: pretix/base/pdf.py:388 +#: pretix/base/pdf.py:395 msgid "Organizer info text" msgstr "نص معلومات المنظم" -#: pretix/base/pdf.py:389 +#: pretix/base/pdf.py:396 msgid "Event organizer info text" msgstr "نص معلومات منظم الفعالية" -#: pretix/base/pdf.py:393 pretix/base/pdf.py:394 +#: pretix/base/pdf.py:400 pretix/base/pdf.py:401 msgid "Event info text" msgstr "نص معلومات الفعالية" -#: pretix/base/pdf.py:398 +#: pretix/base/pdf.py:405 msgid "Printing date" msgstr "تاريخ الطباعة" -#: pretix/base/pdf.py:406 +#: pretix/base/pdf.py:413 msgid "Printing date and time" msgstr "تاريخ ووقت الطباعة" -#: pretix/base/pdf.py:414 +#: pretix/base/pdf.py:421 msgid "Printing time" msgstr "وقت الطباعة" -#: pretix/base/pdf.py:422 pretix/control/forms/item.py:741 +#: pretix/base/pdf.py:429 pretix/control/forms/item.py:741 #, fuzzy #| msgid "Purchased" msgid "Purchase date" msgstr "اشترى" -#: pretix/base/pdf.py:430 +#: pretix/base/pdf.py:437 #, fuzzy #| msgid "Purchased" msgid "Purchase date and time" msgstr "اشترى" -#: pretix/base/pdf.py:438 +#: pretix/base/pdf.py:445 #, fuzzy #| msgid "Purchased" msgid "Purchase time" msgstr "اشترى" -#: pretix/base/pdf.py:446 +#: pretix/base/pdf.py:453 #, fuzzy #| msgid "Valid until" msgid "Validity start date" msgstr "حتى تاريخ" -#: pretix/base/pdf.py:454 +#: pretix/base/pdf.py:461 #, fuzzy #| msgid "Printing date and time" msgid "Validity start date and time" msgstr "تاريخ ووقت الطباعة" -#: pretix/base/pdf.py:462 +#: pretix/base/pdf.py:469 #, fuzzy #| msgid "Valid until" msgid "Validity start time" msgstr "حتى تاريخ" -#: pretix/base/pdf.py:470 +#: pretix/base/pdf.py:477 #, fuzzy #| msgid "Valid until" msgid "Validity end date" msgstr "حتى تاريخ" -#: pretix/base/pdf.py:478 +#: pretix/base/pdf.py:485 #, fuzzy #| msgid "Event end date and time" msgid "Validity end date and time" msgstr "تاريخ ووقت إنتهاء الفعالية" -#: pretix/base/pdf.py:486 +#: pretix/base/pdf.py:493 #, fuzzy #| msgid "Valid until" msgid "Validity end time" msgstr "حتى تاريخ" -#: pretix/base/pdf.py:494 +#: pretix/base/pdf.py:501 #, fuzzy #| msgid "Printing date and time" msgid "Program times: date and time" msgstr "تاريخ ووقت الطباعة" -#: pretix/base/pdf.py:496 +#: pretix/base/pdf.py:503 msgid "" "2017-05-31 10:00 – 12:00\n" "2017-05-31 14:00 – 16:00\n" "2017-05-31 14:00 – 2017-06-01 14:00" msgstr "" -#: pretix/base/pdf.py:500 +#: pretix/base/pdf.py:507 msgid "Reusable Medium ID" msgstr "" -#: pretix/base/pdf.py:505 +#: pretix/base/pdf.py:512 msgid "Seat: Full name" msgstr "مقعد: الاسم الكامل" -#: pretix/base/pdf.py:506 +#: pretix/base/pdf.py:513 msgid "Ground floor, Row 3, Seat 4" msgstr "الطابق الأرضي، الصف 3، مقعد 4" -#: pretix/base/pdf.py:508 pretix/base/pdf.py:514 -#: pretix/control/forms/orders.py:344 +#: pretix/base/pdf.py:515 pretix/base/pdf.py:521 +#: pretix/control/forms/orders.py:348 msgid "General admission" msgstr "التسجيل العام" -#: pretix/base/pdf.py:511 +#: pretix/base/pdf.py:518 msgid "Seat: zone" msgstr "مقعد: المنطقة" -#: pretix/base/pdf.py:512 +#: pretix/base/pdf.py:519 msgid "Ground floor" msgstr "الطابق الأرضي" -#: pretix/base/pdf.py:517 +#: pretix/base/pdf.py:524 msgid "Seat: row" msgstr "مقعد: صف" -#: pretix/base/pdf.py:522 +#: pretix/base/pdf.py:529 msgid "Seat: seat number" msgstr "مقعد: عدد المقاعد" -#: pretix/base/pdf.py:527 +#: pretix/base/pdf.py:534 msgid "Date and time of first scan" msgstr "تاريخ ووقت أول مسح" -#: pretix/base/pdf.py:533 +#: pretix/base/pdf.py:540 #, fuzzy #| msgid "Gift card code" msgid "Gift card: Issuance date" msgstr "رمز بطاقة الهدية" -#: pretix/base/pdf.py:538 +#: pretix/base/pdf.py:545 #, fuzzy #| msgid "Expiration date" msgid "Gift card: Expiration date" msgstr "تاريخ إنتهاء الصلاحية" -#: pretix/base/pdf.py:579 pretix/base/pdf.py:617 pretix/base/pdf.py:623 +#: pretix/base/pdf.py:586 pretix/base/pdf.py:624 pretix/base/pdf.py:630 #: pretix/plugins/badges/exporters.py:504 #: pretix/plugins/ticketoutputpdf/exporters.py:102 #, python-brace-format msgid "Question: {question}" msgstr "سؤال: {question}" -#: pretix/base/pdf.py:618 pretix/base/pdf.py:624 +#: pretix/base/pdf.py:625 pretix/base/pdf.py:631 #, python-brace-format msgid "" msgstr "<جواب: {question}>" -#: pretix/base/pdf.py:665 +#: pretix/base/pdf.py:672 #, fuzzy #| msgid "Attendee names" msgid "Attendee name for salutation" msgstr "أسماء الحضور" -#: pretix/base/pdf.py:666 pretix/base/pdf.py:689 +#: pretix/base/pdf.py:673 pretix/base/pdf.py:696 #: pretix/base/services/placeholders.py:732 #: pretix/control/forms/organizer.py:799 msgid "Mr Doe" msgstr "السيد دو" -#: pretix/base/pdf.py:672 pretix/base/pdf.py:679 +#: pretix/base/pdf.py:679 pretix/base/pdf.py:686 #: pretix/plugins/badges/exporters.py:501 #: pretix/plugins/checkinlists/exporters.py:125 #: pretix/plugins/checkinlists/exporters.py:499 @@ -8623,18 +8630,18 @@ msgstr "السيد دو" msgid "Attendee name: {part}" msgstr "اسم الحاضر: {part}" -#: pretix/base/pdf.py:688 +#: pretix/base/pdf.py:695 #, fuzzy #| msgid "Invoice address explanation" msgid "Invoice address name for salutation" msgstr "شرح عنوان الفاتورة" -#: pretix/base/pdf.py:695 +#: pretix/base/pdf.py:702 #, python-brace-format msgid "Invoice address name: {part}" msgstr "اسم عنوان الفاتورة: {part}" -#: pretix/base/pdf.py:1328 +#: pretix/base/pdf.py:1339 #, fuzzy, python-brace-format #| msgid "Your layout file is not a valid seating plan. Error message: {}" msgid "Your layout file is not a valid layout. Error message: {}" @@ -9100,7 +9107,7 @@ msgstr[5] "" #: pretix/base/services/cart.py:152 pretix/base/services/orders.py:164 #: pretix/presale/templates/pretixpresale/event/index.html:170 -#: pretix/presale/views/waiting.py:145 pretix/presale/views/widget.py:813 +#: pretix/presale/views/waiting.py:150 pretix/presale/views/widget.py:811 #, fuzzy #| msgid "The presale period for this event has not yet started." msgid "The booking period for this event has not yet started." @@ -9577,7 +9584,11 @@ msgstr "الإتحاد الأوربي" msgid "Czech National Bank" msgstr "" -#: pretix/base/services/export.py:94 pretix/base/services/export.py:154 +#: pretix/base/services/currencies.py:41 +msgid "National Bank of Poland" +msgstr "" + +#: pretix/base/services/export.py:95 pretix/base/services/export.py:155 #, fuzzy #| msgid "You do not have permission to perform this action." msgid "" @@ -9585,34 +9596,34 @@ msgid "" "export." msgstr "ليس لديك إذن لتنفيذ هذا الإجراء." -#: pretix/base/services/export.py:107 pretix/base/services/export.py:179 -#: pretix/base/services/export.py:357 +#: pretix/base/services/export.py:108 pretix/base/services/export.py:180 +#: pretix/base/services/export.py:373 msgid "Your export did not contain any data." msgstr "تصديرك لا يحتوي على أي بيانات." -#: pretix/base/services/export.py:327 +#: pretix/base/services/export.py:343 #, fuzzy #| msgid "Exported files" msgid "Export failed" msgstr "الملفات المصدرة" -#: pretix/base/services/export.py:344 +#: pretix/base/services/export.py:360 #, fuzzy #| msgid "Permission denied" msgid "Permission denied." msgstr "تم رفض طلب الإذن" -#: pretix/base/services/export.py:363 +#: pretix/base/services/export.py:379 msgid "Your exported data exceeded the size limit for scheduled exports." msgstr "" -#: pretix/base/services/invoices.py:117 +#: pretix/base/services/invoices.py:118 #, python-brace-format msgctxt "invoice" msgid "Please complete your payment before {expire_date}." msgstr "يرجى إتمام عملية الدفع قبل {expire_date}." -#: pretix/base/services/invoices.py:129 +#: pretix/base/services/invoices.py:130 #, python-brace-format msgctxt "invoice" msgid "" @@ -9628,52 +9639,52 @@ msgstr "" "{i.zipcode} {i.city} {state}\n" "{country}" -#: pretix/base/services/invoices.py:239 pretix/base/services/invoices.py:282 +#: pretix/base/services/invoices.py:253 pretix/base/services/invoices.py:296 #, fuzzy, python-brace-format #| msgid "Event location" msgctxt "invoice" msgid "Event location: {location}" msgstr "موقع الفعالية" -#: pretix/base/services/invoices.py:255 +#: pretix/base/services/invoices.py:269 #, python-brace-format msgctxt "invoice" msgid "Attendee: {name}" msgstr "الحاضر: {name}" -#: pretix/base/services/invoices.py:279 pretix/plugins/reports/exporters.py:308 +#: pretix/base/services/invoices.py:293 pretix/plugins/reports/exporters.py:308 #, python-brace-format msgctxt "subevent" msgid "Date: {}" msgstr "تاريخ: {}" -#: pretix/base/services/invoices.py:587 +#: pretix/base/services/invoices.py:601 msgid "A payment provider specific text might appear here." msgstr "قد يظهر نص محدد لمزود خدمة الدفع هنا." -#: pretix/base/services/invoices.py:595 +#: pretix/base/services/invoices.py:609 msgid "214th Example Street" msgstr "مثال شارع رقم 214" -#: pretix/base/services/invoices.py:596 +#: pretix/base/services/invoices.py:610 msgid "012345" msgstr "012345" -#: pretix/base/services/invoices.py:613 +#: pretix/base/services/invoices.py:627 #, python-brace-format msgid "Sample product {}" msgstr "نموذج منتج {}" -#: pretix/base/services/invoices.py:623 +#: pretix/base/services/invoices.py:637 msgid "Sample product A" msgstr "نموذج منتج أ" -#: pretix/base/services/invoices.py:683 +#: pretix/base/services/invoices.py:697 #, python-brace-format msgid "New invoice: {number}" msgstr "فاتورة جديدة: {number}" -#: pretix/base/services/invoices.py:685 +#: pretix/base/services/invoices.py:699 #, fuzzy, python-brace-format #| msgid "" #| "Hello,\n" @@ -10175,7 +10186,7 @@ msgid "" "card." msgstr "لا يمكنك تغيير سعر العنصر الذي تم استخدامه لإصدار بطاقة هدايا." -#: pretix/base/services/orders.py:2450 pretix/base/services/orders.py:2477 +#: pretix/base/services/orders.py:2462 pretix/base/services/orders.py:2489 #, python-brace-format msgid "" "A position can not be canceled since the gift card {card} purchased in this " @@ -10184,7 +10195,7 @@ msgstr "" "لا يمكن إلغاء العنصر نظرا لأنه تم بالفعل استرداد قيمة بطاقة الهدايا {card} " "المشتراة في هذا الطلب." -#: pretix/base/services/orders.py:3253 +#: pretix/base/services/orders.py:3272 msgid "" "There was an error while trying to send the money back to you. Please " "contact the event organizer for further information." @@ -10669,48 +10680,54 @@ msgstr "" msgid "Show exchange rates" msgstr "إظهار تاريخ انتهاء الفعالية" -#: pretix/base/settings.py:573 pretix/base/settings.py:581 +#: pretix/base/settings.py:573 pretix/base/settings.py:582 #: pretix/control/forms/item.py:629 msgid "Never" msgstr "أبدا" -#: pretix/base/settings.py:574 pretix/base/settings.py:582 +#: pretix/base/settings.py:574 pretix/base/settings.py:583 msgid "" "Based on European Central Bank daily rates, whenever the invoice recipient " "is in an EU country that uses a different currency." msgstr "" -#: pretix/base/settings.py:576 pretix/base/settings.py:584 +#: pretix/base/settings.py:576 pretix/base/settings.py:585 msgid "" "Based on Czech National Bank daily rates, whenever the invoice amount is not " "in CZK." msgstr "" -#: pretix/base/settings.py:595 +#: pretix/base/settings.py:577 pretix/base/settings.py:586 +msgid "" +"Based on National Bank of Poland daily rates, whenever the invoice amount is " +"not in PLN." +msgstr "" + +#: pretix/base/settings.py:597 msgid "Require invoice address" msgstr "مطلوب عنوان الفاتورة" -#: pretix/base/settings.py:606 +#: pretix/base/settings.py:608 #, fuzzy #| msgid "Require a business addresses" msgid "Require a business address" msgstr "مطلوب عناوين العمل" -#: pretix/base/settings.py:607 +#: pretix/base/settings.py:609 msgid "This will require users to enter a company name." msgstr "سيتطلب هذا من المستخدمين إدخال اسم الشركة." -#: pretix/base/settings.py:618 +#: pretix/base/settings.py:620 msgid "Ask for beneficiary" msgstr "اسأل عن المستفيد" -#: pretix/base/settings.py:629 +#: pretix/base/settings.py:631 #, fuzzy #| msgid "Custom address field" msgid "Custom recipient field label" msgstr "حقل العنوان المخصص" -#: pretix/base/settings.py:631 +#: pretix/base/settings.py:633 #, fuzzy #| msgid "" #| "If you want to add a custom text field, e.g. for a country-specific " @@ -10730,24 +10747,24 @@ msgstr "" "التصنيف لمطالبة المستخدم بإدخال التفاصيل الخاصة به وكذلك لعرض القيمة على " "الفاتورة. لن يكون الحقل مطلوبا." -#: pretix/base/settings.py:645 +#: pretix/base/settings.py:647 #, fuzzy #| msgid "Custom address field" msgid "Custom recipient field help text" msgstr "حقل العنوان المخصص" -#: pretix/base/settings.py:647 +#: pretix/base/settings.py:649 msgid "" "If you use the custom recipient field, you can specify a help text which " "will be displayed underneath the field. It will not be displayed on the " "invoice." msgstr "" -#: pretix/base/settings.py:658 +#: pretix/base/settings.py:660 msgid "Ask for VAT ID" msgstr "اطلب رقم ضريبة القيمة المضافة" -#: pretix/base/settings.py:660 +#: pretix/base/settings.py:662 #, fuzzy, python-brace-format #| msgid "" #| "Does only work if an invoice address is asked for. VAT ID is not required." @@ -10757,32 +10774,32 @@ msgid "" msgstr "" "لا يعمل إلا إذا تم طلب عنوان الفاتورة. رقم ضريبة القيمة المضافة غير مطلوب." -#: pretix/base/settings.py:680 +#: pretix/base/settings.py:682 #, fuzzy #| msgid "Require name" msgid "Require VAT ID in" msgstr "اطلب اسم" -#: pretix/base/settings.py:686 +#: pretix/base/settings.py:688 msgid "" "VAT ID is optional by default, because not all businesses are assigned a VAT " "ID in all countries. VAT ID will be required for all business addresses in " "the selected countries." msgstr "" -#: pretix/base/settings.py:702 +#: pretix/base/settings.py:704 msgid "Invoice address explanation" msgstr "شرح عنوان الفاتورة" -#: pretix/base/settings.py:705 +#: pretix/base/settings.py:707 msgid "This text will be shown above the invoice address form during checkout." msgstr "سيظهر هذا النص في أعلى نموذج عنوان الفاتورة أثناء تسجيل الخروج." -#: pretix/base/settings.py:715 +#: pretix/base/settings.py:717 msgid "Show paid amount on partially paid invoices" msgstr "إظهار المبلغ المدفوع في الفواتير المدفوعة جزئيا" -#: pretix/base/settings.py:716 +#: pretix/base/settings.py:718 msgid "" "If an invoice has already been paid partially, this option will add the paid " "and pending amount to the invoice." @@ -10790,11 +10807,11 @@ msgstr "" "إذا تم دفع الفاتورة جزئيا مسبقا ، فسيضيف هذا الخيار المبلغ المدفوع والمتأخر " "إلى الفاتورة." -#: pretix/base/settings.py:727 +#: pretix/base/settings.py:729 msgid "Show free products on invoices" msgstr "عرض المنتجات المجانية على الفواتير" -#: pretix/base/settings.py:728 +#: pretix/base/settings.py:730 msgid "" "Note that invoices will never be generated for orders that contain only free " "products." @@ -10802,21 +10819,21 @@ msgstr "" "لاحظ أنه لن يتم إنشاء فواتير مطلقا للطلبات التي لا تحتوي إلا على منتجات " "مجانية." -#: pretix/base/settings.py:739 +#: pretix/base/settings.py:741 msgid "Show expiration date of order" msgstr "إظهار تاريخ إنتهاء صلاحية الطلب" -#: pretix/base/settings.py:740 +#: pretix/base/settings.py:742 msgid "" "The expiration date will not be shown if the invoice is generated after the " "order is paid." msgstr "لن يظهر تاريخ إنتهاء الصلاحية إذا تم إنشاء الفاتورة بعد سداد الطلب." -#: pretix/base/settings.py:751 +#: pretix/base/settings.py:753 msgid "Minimum length of invoice number after prefix" msgstr "الحد الأدنى لطول رقم الفاتورة بعد الاختصار" -#: pretix/base/settings.py:752 +#: pretix/base/settings.py:754 msgid "" "The part of your invoice number after your prefix will be filled up with " "leading zeros up to this length, e.g. INV-001 or INV-00001." @@ -10824,20 +10841,20 @@ msgstr "" "سيتم ملء الجزء من رقم الفاتورة بعد رمز الاختصار الخاص بك بالأصفار حتى هذا " "النحو ، على سبيل المثال فاتورة-001 أو فاتورة -00001." -#: pretix/base/settings.py:765 +#: pretix/base/settings.py:767 msgid "Generate invoices with consecutive numbers" msgstr "إنشاء فواتير بأرقام متتالية" -#: pretix/base/settings.py:766 +#: pretix/base/settings.py:768 msgid "If deactivated, the order code will be used in the invoice number." msgstr "" "إذا تم إلغاء تفعيل هذا الخيار ، فسيتم استخدام رمز الطلب في رقم الفاتورة." -#: pretix/base/settings.py:776 +#: pretix/base/settings.py:778 msgid "Invoice number prefix" msgstr "الرمز الذي يسبق رقم الفاتورة" -#: pretix/base/settings.py:777 +#: pretix/base/settings.py:779 msgid "" "This will be prepended to invoice numbers. If you leave this field empty, " "your event slug will be used followed by a dash. Attention: If multiple " @@ -10855,17 +10872,17 @@ msgstr "" "استخدام %Y (مع السنة) %y (بدون السنة) لإدخال سنة الفاتورة أو %m و %d ليوم من " "الشهر." -#: pretix/base/settings.py:789 pretix/base/settings.py:813 +#: pretix/base/settings.py:791 pretix/base/settings.py:815 #, fuzzy, python-brace-format #| msgid "Please enter a shorter name." msgid "Please only use the characters {allowed} in this field." msgstr "الرجاء إدخال اسم أقصر." -#: pretix/base/settings.py:804 +#: pretix/base/settings.py:806 msgid "Invoice number prefix for cancellations" msgstr "رمز رقم الفاتورة للإلغاء" -#: pretix/base/settings.py:805 +#: pretix/base/settings.py:807 msgid "" "This will be prepended to invoice numbers of cancellations. If you leave " "this field empty, the same numbering scheme will be used that you configured " @@ -10874,44 +10891,44 @@ msgstr "" "سيتم إضافة هذا مسبقا إلى أرقام فواتير الإلغاءات. إذا تركت هذا الحقل فارغا ، " "فسيتم استخدام نفس نظام الترقيم الذي قمت بإعداده للفواتير العادية." -#: pretix/base/settings.py:828 +#: pretix/base/settings.py:830 msgid "Highlight order code to make it stand out visibly" msgstr "" -#: pretix/base/settings.py:829 pretix/base/settings.py:841 +#: pretix/base/settings.py:831 pretix/base/settings.py:843 #, fuzzy #| msgid "Only respected by modern browsers." msgid "Only respected by some invoice renderers." msgstr "يستخدم للمتصفحات الحديثة فقط." -#: pretix/base/settings.py:840 pretix/base/settings.py:3174 +#: pretix/base/settings.py:842 pretix/base/settings.py:3176 #: pretix/control/templates/pretixcontrol/pdf/index.html:441 msgid "Font" msgstr "الخط" -#: pretix/base/settings.py:867 +#: pretix/base/settings.py:869 msgid "Length of ticket codes" msgstr "طول رموز التذاكر" -#: pretix/base/settings.py:894 +#: pretix/base/settings.py:896 msgid "Reservation period" msgstr "فترة الحجز" -#: pretix/base/settings.py:896 +#: pretix/base/settings.py:898 msgid "" "The number of minutes the items in a user's cart are reserved for this user." msgstr "عدد الدقائق المحجوزة للعناصر الموجودة في عربة التسوق لهذا المستخدم." -#: pretix/base/settings.py:905 +#: pretix/base/settings.py:907 msgid "" "Directly redirect to check-out after a product has been added to the cart." msgstr "إعادة التوجيه مباشرة لتسجيل الخروج بعد إضافة منتج إلى سلة التسوق." -#: pretix/base/settings.py:914 +#: pretix/base/settings.py:916 msgid "End of presale text" msgstr "نهاية النص الخاص بعرض ما قبل البيع" -#: pretix/base/settings.py:917 +#: pretix/base/settings.py:919 msgid "" "This text will be shown above the ticket shop once the designated sales " "timeframe for this event is over. You can use it to describe other options " @@ -10921,11 +10938,11 @@ msgstr "" "لهذه الفعالية. يمكنك استخدامه لوصف الخيارات الأخرى للحصول على تذكرة ، على " "سبيل المثال شباك التذاكر." -#: pretix/base/settings.py:932 +#: pretix/base/settings.py:934 msgid "Guidance text" msgstr "نص للتوجيه" -#: pretix/base/settings.py:933 +#: pretix/base/settings.py:935 msgid "" "This text will be shown above the payment options. You can explain the " "choices to the user here, if you want." @@ -10933,19 +10950,19 @@ msgstr "" "سيظهر هذا النص فوق خيارات الدفع. يمكنك شرح الاختيارات للمستخدم هنا ، إذا كنت " "تريد." -#: pretix/base/settings.py:944 pretix/base/settings.py:954 +#: pretix/base/settings.py:946 pretix/base/settings.py:956 msgid "in days" msgstr "بالأيام" -#: pretix/base/settings.py:945 pretix/base/settings.py:955 +#: pretix/base/settings.py:947 pretix/base/settings.py:957 msgid "in minutes" msgstr "بالدقائق" -#: pretix/base/settings.py:950 +#: pretix/base/settings.py:952 msgid "Set payment term" msgstr "تعيين مدة السداد" -#: pretix/base/settings.py:957 +#: pretix/base/settings.py:959 msgid "" "If using days, the order will expire at the end of the last day. Using " "minutes is more exact, but should only be used for real-time payment methods." @@ -10953,11 +10970,11 @@ msgstr "" "في حالة استخدام الأيام ، ستنتهي صلاحية الطلب في نهاية اليوم الأخير. يعد " "استخدام الدقائق أكثر دقة ، ولكن يجب استخدامه فقط لطرق الدفع الفوري." -#: pretix/base/settings.py:968 +#: pretix/base/settings.py:970 msgid "Payment term in days" msgstr "مدة السداد بالأيام" -#: pretix/base/settings.py:975 +#: pretix/base/settings.py:977 msgid "" "The number of days after placing an order the user has to pay to preserve " "their reservation. If you use slow payment methods like bank transfer, we " @@ -10969,11 +10986,11 @@ msgstr "" "نوصي ب 14 يوما. إذا كنت تستخدم طرق الدفع الفوري فقط ، فإننا نوصي بالاستمرار " "في تحديد يومين أو ثلاثة أيام للسماح للأشخاص بإعادة محاولة الدفع الفاشل." -#: pretix/base/settings.py:994 +#: pretix/base/settings.py:996 msgid "Only end payment terms on weekdays" msgstr "إنهاء مدة الدفع في أيام العمل الأسبوعية فقط" -#: pretix/base/settings.py:995 +#: pretix/base/settings.py:997 msgid "" "If this is activated and the payment term of any order ends on a Saturday or " "Sunday, it will be moved to the next Monday instead. This is required in " @@ -10984,11 +11001,11 @@ msgstr "" "نقله إلى يوم الاثنين التالي بدلا من ذلك. هذا مطلوب في بعض البلدان بموجب " "القانون المدني. لن يؤثر هذا على آخر تاريخ للمدفوعات التي تم إعدادها أدناه." -#: pretix/base/settings.py:1012 +#: pretix/base/settings.py:1014 msgid "Payment term in minutes" msgstr "مدة السداد بالدقائق" -#: pretix/base/settings.py:1013 +#: pretix/base/settings.py:1015 msgid "" "The number of minutes after placing an order the user has to pay to preserve " "their reservation. Only use this if you exclusively offer real-time payment " @@ -11000,11 +11017,11 @@ msgstr "" "أنه لأسباب فنية ، قد يكون الإطار الزمني الفعلي أطول ببضع دقائق قبل أن يتم " "وضع علامة على الطلب على أنه منتهي الصلاحية." -#: pretix/base/settings.py:1037 +#: pretix/base/settings.py:1039 msgid "Last date of payments" msgstr "آخر موعد للمدفوعات" -#: pretix/base/settings.py:1038 +#: pretix/base/settings.py:1040 msgid "" "The last date any payments are accepted. This has precedence over the terms " "configured above. If you use the event series feature and an order contains " @@ -11014,11 +11031,11 @@ msgstr "" "إعدادها أعلاه. إذا كنت تستخدم ميزة سلسلة الفعاليات وكان الطلب يحتوي على " "تذاكر لتواريخ متعددة ، فسيتم استخدام أقرب تاريخ." -#: pretix/base/settings.py:1050 +#: pretix/base/settings.py:1052 msgid "Automatically expire unpaid orders" msgstr "إنهاء الطلبات غير المسددة تلقائيا" -#: pretix/base/settings.py:1051 +#: pretix/base/settings.py:1053 msgid "" "If checked, all unpaid orders will automatically go from 'pending' to " "'expired' after the end of their payment deadline. This means that those " @@ -11028,13 +11045,13 @@ msgstr "" "إلى \"منتهية الصلاحية\" بعد إنتهاء الموعد النهائي للدفع. هذا يعني أن هذه " "التذاكر تعود إلى الموقع ويمكن لأشخاص آخرين طلبها." -#: pretix/base/settings.py:1063 +#: pretix/base/settings.py:1065 #, fuzzy #| msgid "Expiration date" msgid "Expiration delay" msgstr "تاريخ إنتهاء الصلاحية" -#: pretix/base/settings.py:1064 +#: pretix/base/settings.py:1066 msgid "" "The order will only actually expire this many days after the expiration date " "communicated to the customer. If you select \"Only end payment terms on " @@ -11043,11 +11060,11 @@ msgid "" "enforced." msgstr "" -#: pretix/base/settings.py:1086 +#: pretix/base/settings.py:1088 msgid "Hide \"payment pending\" state on customer-facing pages" msgstr "إخفاء حالة \"الدفع المعلق\" من الصفحات التي تظهر للعملاء" -#: pretix/base/settings.py:1087 +#: pretix/base/settings.py:1089 msgid "" "The payment instructions panel will still be shown to the primary customer, " "but no indication of missing payment will be visible on the ticket pages of " @@ -11056,7 +11073,7 @@ msgstr "" "ستظل لوحة تعليمات الدفع معروضة للعميل الأساسي ، ولكن لن تظهر أي إشارة لفقدان " "السداد على صفحات تذاكر الحاضرين الذين لم يشتروا التذكرة بأنفسهم." -#: pretix/base/settings.py:1105 +#: pretix/base/settings.py:1107 msgid "" "If you have a gift card, please enter the gift card code here. If the gift " "card does not have enough credit to pay for the full order, you will be " @@ -11067,11 +11084,11 @@ msgstr "" "هديةرصيد كاف لدفع للنظام كامل، وسوف يعرض لك هذه الصفحة مرة أخرى ويمكنك " "إمااستبدال بطاقة هدية أخرى أو تحديد طريقة دفع مختلفة للفرق." -#: pretix/base/settings.py:1124 +#: pretix/base/settings.py:1126 msgid "Accept late payments" msgstr "قبول المدفوعات المتأخرة" -#: pretix/base/settings.py:1125 +#: pretix/base/settings.py:1127 msgid "" "Accept payments for orders even when they are in 'expired' state as long as " "enough capacity is available. No payments will ever be accepted after the " @@ -11081,124 +11098,124 @@ msgstr "" "متوفرة. لن يتم قبول أي مدفوعات بعد \"آخر تاريخ للدفعات\" والذي تم إعداده " "أعلاه." -#: pretix/base/settings.py:1136 +#: pretix/base/settings.py:1138 msgid "Show start date" msgstr "عرض تاريخ البداية" -#: pretix/base/settings.py:1137 +#: pretix/base/settings.py:1139 msgid "Show the presale start date before presale has started." msgstr "اعرض تاريخ بداية البيع المسبق قبل أن بدايته." -#: pretix/base/settings.py:1148 pretix/base/settings.py:1157 -#: pretix/base/settings.py:1171 pretix/base/settings.py:1180 +#: pretix/base/settings.py:1150 pretix/base/settings.py:1159 +#: pretix/base/settings.py:1173 pretix/base/settings.py:1182 #, fuzzy #| msgid "Default price" msgid "Use default tax rate" msgstr "السعر الافتراضي" -#: pretix/base/settings.py:1149 pretix/base/settings.py:1158 -#: pretix/base/settings.py:1169 pretix/base/settings.py:1178 +#: pretix/base/settings.py:1151 pretix/base/settings.py:1160 +#: pretix/base/settings.py:1171 pretix/base/settings.py:1180 #, fuzzy msgid "Charge no taxes" msgstr "تم تحديث الرسوم." -#: pretix/base/settings.py:1154 +#: pretix/base/settings.py:1156 #, fuzzy #| msgid "Tax rule for payment fees" msgid "Tax handling on payment fees" msgstr "حكم الضرائب لدفع الرسوم" -#: pretix/base/settings.py:1170 pretix/base/settings.py:1179 +#: pretix/base/settings.py:1172 pretix/base/settings.py:1181 msgid "Use same taxes as order positions (split according to net prices)" msgstr "" -#: pretix/base/settings.py:1175 +#: pretix/base/settings.py:1177 #, fuzzy #| msgid "Keep a fixed cancellation fee" msgid "Tax handling on cancellation fees" msgstr "احتفظ برسوم إلغاء ثابتة" -#: pretix/base/settings.py:1191 pretix/base/settings.py:1204 +#: pretix/base/settings.py:1193 pretix/base/settings.py:1206 msgid "Do not generate invoices" msgstr "لا تصدر فواتير" -#: pretix/base/settings.py:1192 pretix/base/settings.py:1209 +#: pretix/base/settings.py:1194 pretix/base/settings.py:1211 msgid "Only manually in admin panel" msgstr "فقط يدويا في لوحة الإدارة" -#: pretix/base/settings.py:1193 pretix/base/settings.py:1207 +#: pretix/base/settings.py:1195 pretix/base/settings.py:1209 msgid "Automatically on user request" msgstr "تلقائيا بناء على طلب المستخدم" -#: pretix/base/settings.py:1194 pretix/base/settings.py:1208 +#: pretix/base/settings.py:1196 pretix/base/settings.py:1210 #, fuzzy #| msgid "Automatically on user request" msgid "Automatically on user request for paid orders" msgstr "تلقائيا بناء على طلب المستخدم" -#: pretix/base/settings.py:1195 +#: pretix/base/settings.py:1197 msgid "Automatically for all created orders" msgstr "تلقائيا لجميع الطلبات التي تم إنشاؤها" -#: pretix/base/settings.py:1196 +#: pretix/base/settings.py:1198 msgid "Automatically on payment or when required by payment method" msgstr "تلقائيا عند الدفع أو عند الطلب بواسطة طريقة السداد" -#: pretix/base/settings.py:1201 +#: pretix/base/settings.py:1203 msgid "Generate invoices" msgstr "إنشاء الفواتير" -#: pretix/base/settings.py:1205 +#: pretix/base/settings.py:1207 #, fuzzy #| msgid "Automatically on payment or when required by payment method" msgid "Automatically after payment or when required by payment method" msgstr "تلقائيا عند الدفع أو عند الطلب بواسطة طريقة السداد" -#: pretix/base/settings.py:1206 +#: pretix/base/settings.py:1208 #, fuzzy #| msgid "Automatically for all created orders" msgid "Automatically before payment for all created orders" msgstr "تلقائيا لجميع الطلبات التي تم إنشاؤها" -#: pretix/base/settings.py:1211 +#: pretix/base/settings.py:1213 msgid "Invoices will never be automatically generated for free orders." msgstr "لن يتم إنشاء الفواتير تلقائيا للطلبات المجانية." -#: pretix/base/settings.py:1221 pretix/base/settings.py:1233 +#: pretix/base/settings.py:1223 pretix/base/settings.py:1235 msgid "" "Automatic based on ticket-specific validity, membership validity, event " "series date, or event date" msgstr "" -#: pretix/base/settings.py:1222 pretix/base/settings.py:1234 +#: pretix/base/settings.py:1224 pretix/base/settings.py:1236 msgid "Automatic, but prefer invoice date over event date" msgstr "" -#: pretix/base/settings.py:1225 pretix/base/settings.py:1237 +#: pretix/base/settings.py:1227 pretix/base/settings.py:1239 #, fuzzy #| msgctxt "invoice" #| msgid "Invoice date" msgid "Invoice date" msgstr "تاريخ الفاتورة" -#: pretix/base/settings.py:1230 +#: pretix/base/settings.py:1232 #, fuzzy #| msgctxt "subevent" #| msgid "Date ordering" msgid "Date of service" msgstr "ترتيب التاريخ" -#: pretix/base/settings.py:1239 +#: pretix/base/settings.py:1241 msgid "" "This controls what dates are shown on the invoice, but is especially " "important for electronic invoicing." msgstr "" -#: pretix/base/settings.py:1251 +#: pretix/base/settings.py:1253 msgid "Automatically cancel and reissue invoice on address changes" msgstr "إلغاء الفاتورة تلقائيا عند تغيير العنوان وإعادة إصدارها" -#: pretix/base/settings.py:1252 +#: pretix/base/settings.py:1254 msgid "" "If customers change their invoice address on an existing order, the invoice " "will automatically be canceled and a new invoice will be issued. This " @@ -11208,56 +11225,56 @@ msgstr "" "الفاتورة تلقائيا وسيتم إصدار فاتورة جديدة. لن يؤثر هذا الإعداد على التعديلات " "في لوحة التحكم." -#: pretix/base/settings.py:1264 +#: pretix/base/settings.py:1266 msgid "Allow to update existing invoices" msgstr "" -#: pretix/base/settings.py:1265 +#: pretix/base/settings.py:1267 msgid "" "By default, invoices can never again be changed once they are issued. In " "most countries, we recommend to leave this option turned off and always " "issue a new invoice if a change needs to be made." msgstr "" -#: pretix/base/settings.py:1281 +#: pretix/base/settings.py:1283 #, fuzzy #| msgid "Business customers" msgid "Only issue invoices to business customers" msgstr "عملاء قطاع الأعمال" -#: pretix/base/settings.py:1291 +#: pretix/base/settings.py:1293 msgid "Address line" msgstr "العنوان" -#: pretix/base/settings.py:1295 +#: pretix/base/settings.py:1297 msgid "Albert Einstein Road 52" msgstr "شارع ألبرت أينشتاين 52" -#: pretix/base/settings.py:1375 +#: pretix/base/settings.py:1377 msgid "Domestic tax ID" msgstr "معرف الضريبة المحلية" -#: pretix/base/settings.py:1376 +#: pretix/base/settings.py:1378 msgid "e.g. tax number in Germany, ABN in Australia, …" msgstr "على سبيل المثال الرقم الضريبي في ألمانيا ، رقم العمل الأسترالي،…" -#: pretix/base/settings.py:1387 +#: pretix/base/settings.py:1389 msgid "EU VAT ID" msgstr "رقم ضريبة القيمة المضافة في الاتحاد الأوروبي" -#: pretix/base/settings.py:1402 +#: pretix/base/settings.py:1404 msgid "e.g. With this document, we sent you the invoice for your ticket order." msgstr "على سبيل المثال باستخدام هذا المستند ، أرسلنا إليك فاتورة طلب تذكرتك." -#: pretix/base/settings.py:1405 +#: pretix/base/settings.py:1407 msgid "Introductory text" msgstr "نص تمهيدي" -#: pretix/base/settings.py:1406 +#: pretix/base/settings.py:1408 msgid "Will be printed on every invoice above the invoice rows." msgstr "ستتم طباعتها على كل فاتورة فوق صفوف الفاتورة." -#: pretix/base/settings.py:1420 +#: pretix/base/settings.py:1422 msgid "" "e.g. Thank you for your purchase! You can find more information on the event " "at ..." @@ -11265,15 +11282,15 @@ msgstr "" "مثلا شكرا لك على الشراء! يمكنك العثور على مزيد من المعلومات حول هذه الفعالية " "في ..." -#: pretix/base/settings.py:1423 +#: pretix/base/settings.py:1425 msgid "Additional text" msgstr "نص إضافي" -#: pretix/base/settings.py:1424 +#: pretix/base/settings.py:1426 msgid "Will be printed on every invoice below the invoice total." msgstr "ستتم الطباعة على كل فاتورة تحت إجمالي الفاتورة." -#: pretix/base/settings.py:1438 +#: pretix/base/settings.py:1440 msgid "" "e.g. your bank details, legal details like your VAT ID, registration " "numbers, etc." @@ -11281,21 +11298,21 @@ msgstr "" "مثلا تفاصيل حسابك المصرفي، التفاصيل القانونية مثل معرف ضريبة القيمة المضافة، " "أرقام التسجيل، الخ." -#: pretix/base/settings.py:1441 +#: pretix/base/settings.py:1443 msgid "Footer" msgstr "تذييل" -#: pretix/base/settings.py:1442 +#: pretix/base/settings.py:1444 msgid "" "Will be printed centered and in a smaller font at the end of every invoice " "page." msgstr "ستتم طباعتها في المنتصف وبخط أصغر في نهاية كل صفحة فاتورة." -#: pretix/base/settings.py:1457 +#: pretix/base/settings.py:1459 msgid "Attach invoices to emails" msgstr "إرفق الفواتير في رسائل البريد الإلكتروني" -#: pretix/base/settings.py:1458 +#: pretix/base/settings.py:1460 msgid "" "If invoices are automatically generated for all orders, they will be " "attached to the order confirmation mail. If they are automatically generated " @@ -11306,11 +11323,11 @@ msgstr "" "الطلب. إذا تم إنشاؤها تلقائيا عند الدفع ، فسيتم إرفاقها ببريد تأكيد الدفع. " "إذا لم يتم إنشاؤها تلقائيا ، فلن يتم إرفاقها برسائل البريد الإلكتروني." -#: pretix/base/settings.py:1471 +#: pretix/base/settings.py:1473 msgid "Email address to receive a copy of each invoice" msgstr "عنوان البريد الإلكتروني لتلقي نسخة من كل فاتورة" -#: pretix/base/settings.py:1472 +#: pretix/base/settings.py:1474 msgid "" "Each newly created invoice will be sent to this email address shortly after " "creation. You can use this for an automated import of invoices to your " @@ -11320,28 +11337,28 @@ msgstr "" "وقت قصير من إنشائها. يمكنك استخدام هذا للاستيراد الآلي للفواتير إلى نظام " "المحاسبة الخاص بك. ستكون الفاتورة هي المرفق الوحيد بالبريد الإلكتروني." -#: pretix/base/settings.py:1487 +#: pretix/base/settings.py:1489 msgid "Show items outside presale period" msgstr "إظهار العناصر خارج فترة عرض ما قبل البيع" -#: pretix/base/settings.py:1488 +#: pretix/base/settings.py:1490 msgid "" "Show item details before presale has started and after presale has ended" msgstr "إظهار تفاصيل العنصر قبل بداية البيع المسبق وبعد انتهائه" -#: pretix/base/settings.py:1508 +#: pretix/base/settings.py:1510 msgid "Available languages" msgstr "اللغات المتاحة" -#: pretix/base/settings.py:1524 pretix/control/forms/event.py:151 +#: pretix/base/settings.py:1526 pretix/control/forms/event.py:151 msgid "Default language" msgstr "اللغة الافتراضية" -#: pretix/base/settings.py:1534 +#: pretix/base/settings.py:1536 msgid "Region" msgstr "منطقة" -#: pretix/base/settings.py:1535 +#: pretix/base/settings.py:1537 msgid "" "Will be used to determine date and time formatting as well as default " "country for customer addresses and phone numbers. For formatting, this takes " @@ -11353,13 +11370,13 @@ msgstr "" "من اللغة وبالتالي فهو مناسب في الغالب للغات المستخدمة في مناطق مختلفة على " "مستوى العالم (مثل اللغة الإنجليزية)." -#: pretix/base/settings.py:1547 +#: pretix/base/settings.py:1549 #, fuzzy #| msgid "This is not an event series." msgid "This shop represents an event" msgstr "هذه ليست سلسلة فعالية." -#: pretix/base/settings.py:1549 +#: pretix/base/settings.py:1551 msgid "" "Uncheck this box if you are only selling something that has no specific " "date, such as gift cards or a ticket that can be used any time. The system " @@ -11368,19 +11385,19 @@ msgid "" "may still show up in other places." msgstr "" -#: pretix/base/settings.py:1562 +#: pretix/base/settings.py:1564 msgid "Show event end date" msgstr "إظهار تاريخ انتهاء الفعالية" -#: pretix/base/settings.py:1563 +#: pretix/base/settings.py:1565 msgid "If disabled, only event's start date will be displayed to the public." msgstr "إذا تم تعطيل هذا الخيار، فسيظهر للجمهور تاريخ بداية الفعالية فقط." -#: pretix/base/settings.py:1572 +#: pretix/base/settings.py:1574 msgid "Show dates with time" msgstr "عرض التواريخ مع الوقت" -#: pretix/base/settings.py:1573 +#: pretix/base/settings.py:1575 msgid "" "If disabled, the event's start and end date will be displayed without the " "time of day." @@ -11388,27 +11405,27 @@ msgstr "" "إذا تم تعطيل هذا الخيار ، فسيتم عرض تاريخ بداية الفعالية وانتهائها بدون " "توقيت اليوم." -#: pretix/base/settings.py:1582 +#: pretix/base/settings.py:1584 msgid "Hide all products that are sold out" msgstr "إخفاء جميع المنتجات التي تم بيعها" -#: pretix/base/settings.py:1592 pretix/control/forms/event.py:1870 +#: pretix/base/settings.py:1594 pretix/control/forms/event.py:1870 msgid "Publicly show how many tickets of a certain type are still available." msgstr "اعرض علنا عدد التذاكر من نوع معين والتي لا تزال متاحة." -#: pretix/base/settings.py:1601 +#: pretix/base/settings.py:1603 msgid "Ask search engines not to index the ticket shop" msgstr "اطلب من محركات البحث عدم فهرسة متجر التذاكر" -#: pretix/base/settings.py:1610 +#: pretix/base/settings.py:1612 msgid "Show variations of a product expanded by default" msgstr "إظهار الأشكال المختلفة للمنتج موسعة بشكل افتراضي" -#: pretix/base/settings.py:1619 +#: pretix/base/settings.py:1621 msgid "Enable waiting list" msgstr "تمكين قائمة الانتظار" -#: pretix/base/settings.py:1620 pretix/control/forms/event.py:1875 +#: pretix/base/settings.py:1622 pretix/control/forms/event.py:1875 #, fuzzy msgid "" "Once a ticket is sold out, people can add themselves to a waiting list. As " @@ -11420,11 +11437,11 @@ msgstr "" "تصبح التذكرة متاحة مرة أخرى ، سيتم حجزها لأول شخص في قائمة الانتظار وسيتلقى " "هذا الشخص إشعارا بالبريد الإلكتروني مع قسيمة يمكن استخدامها لشراء تذكرة." -#: pretix/base/settings.py:1631 +#: pretix/base/settings.py:1633 msgid "Automatic waiting list assignments" msgstr "مهام قائمة الانتظار التلقائية" -#: pretix/base/settings.py:1632 +#: pretix/base/settings.py:1634 #, fuzzy msgid "" "If ticket capacity becomes free, automatically create a voucher and send it " @@ -11438,11 +11455,11 @@ msgstr "" "البريد الإلكتروني تلقائيا ولكن يمكنك إرسالها يدويا عبر لوحة التحكم. إذا قمت " "بتعطيل قائمة الانتظار مع إبقاء هذا الخيار مفعلا ، فسيستمر إرسال التذاكر." -#: pretix/base/settings.py:1648 +#: pretix/base/settings.py:1650 msgid "Waiting list response time" msgstr "وقت استجابة قائمة الانتظار" -#: pretix/base/settings.py:1651 +#: pretix/base/settings.py:1653 #, fuzzy msgid "" "If a ticket voucher is sent to a person on the waiting list, it has to be " @@ -11453,13 +11470,13 @@ msgstr "" "خلال هذا العدد من الساعات حتى تنتهي صلاحيتها ويمكن إعادة تخصيصها إلى الشخص " "التالي في القائمة." -#: pretix/base/settings.py:1662 +#: pretix/base/settings.py:1664 #, fuzzy #| msgid "Enable waiting list" msgid "Disable waiting list" msgstr "تمكين قائمة الانتظار" -#: pretix/base/settings.py:1663 +#: pretix/base/settings.py:1665 msgid "" "The waiting list will be fully disabled after this date. This means that " "nobody can add themselves to the waiting list any more, but also that " @@ -11468,56 +11485,56 @@ msgid "" "remain active." msgstr "" -#: pretix/base/settings.py:1675 +#: pretix/base/settings.py:1677 msgid "Ask for a name" msgstr "اطلب الاسم" -#: pretix/base/settings.py:1676 +#: pretix/base/settings.py:1678 msgid "Ask for a name when signing up to the waiting list." msgstr "اطلب اسما عند التسجيل في قائمة الانتظار." -#: pretix/base/settings.py:1685 +#: pretix/base/settings.py:1687 msgid "Require name" msgstr "اطلب اسم" -#: pretix/base/settings.py:1686 +#: pretix/base/settings.py:1688 msgid "Require a name when signing up to the waiting list.." msgstr "طلب اسم عند التسجيل في قائمة الانتظار .." -#: pretix/base/settings.py:1696 +#: pretix/base/settings.py:1698 msgid "Ask for a phone number" msgstr "اطلب رقم هاتف" -#: pretix/base/settings.py:1697 +#: pretix/base/settings.py:1699 msgid "Ask for a phone number when signing up to the waiting list." msgstr "اطلب رقم هاتف عند التسجيل في قائمة الانتظار." -#: pretix/base/settings.py:1706 +#: pretix/base/settings.py:1708 msgid "Require phone number" msgstr "يلزم رقم الهاتف" -#: pretix/base/settings.py:1707 +#: pretix/base/settings.py:1709 msgid "Require a phone number when signing up to the waiting list.." msgstr "طلب رقم هاتف عند التسجيل في قائمة الانتظار .." -#: pretix/base/settings.py:1717 +#: pretix/base/settings.py:1719 msgid "Phone number explanation" msgstr "تفسير رقم الهاتف" -#: pretix/base/settings.py:1720 +#: pretix/base/settings.py:1722 msgid "" "If you ask for a phone number, explain why you do so and what you will use " "the phone number for." msgstr "" "إذا طلبت رقم هاتف ، اشرح سبب قيامك بذلك وما الذي ستستخدم رقم الهاتف لأجله." -#: pretix/base/settings.py:1732 +#: pretix/base/settings.py:1734 #, fuzzy #| msgid "Maximum number of items per order" msgid "Maximum number of entries per email address for the same product" msgstr "الحد الأقصى لعدد العناصر لكل طلب" -#: pretix/base/settings.py:1736 +#: pretix/base/settings.py:1738 msgid "" "With an increased limit, a customer may request more than one ticket for a " "specific product using the same, unique email address. However, regardless " @@ -11526,13 +11543,13 @@ msgid "" "ticket at a time." msgstr "" -#: pretix/base/settings.py:1748 +#: pretix/base/settings.py:1750 #, fuzzy #| msgid "Show number of tickets left" msgid "Show number of check-ins to customer" msgstr "إظهار عدد التذاكر المتبقية" -#: pretix/base/settings.py:1749 +#: pretix/base/settings.py:1751 msgid "" "With this option enabled, your customers will be able to see how many times " "they entered the event. This is usually not necessary, but might be useful " @@ -11542,19 +11559,19 @@ msgid "" "check-in lists." msgstr "" -#: pretix/base/settings.py:1762 +#: pretix/base/settings.py:1764 msgid "Allow users to download tickets" msgstr "السماح للمستخدمين بتحميل التذاكر" -#: pretix/base/settings.py:1763 +#: pretix/base/settings.py:1765 msgid "If this is off, nobody can download a ticket." msgstr "إذا تم تعطيل هذا الخيار، فلا يمكن لأي شخص تنزيل تذكرة." -#: pretix/base/settings.py:1772 +#: pretix/base/settings.py:1774 msgid "Download date" msgstr "تاريخ التنزيل" -#: pretix/base/settings.py:1773 +#: pretix/base/settings.py:1775 msgid "" "Ticket download will be offered after this date. If you use the event series " "feature and an order contains tickets for multiple event dates, download of " @@ -11564,13 +11581,13 @@ msgstr "" "الفعاليات وكان الطلب يحتوي على تذاكر لتواريخ فعاليات متعددة ، فسيكون تنزيل " "جميع التذاكر متاحا إذا سمح بذلك أحد تواريخ الفعالية على الأقل." -#: pretix/base/settings.py:1784 +#: pretix/base/settings.py:1786 #, fuzzy #| msgid "Generate tickets for add-on products" msgid "Generate tickets for add-on products and bundled products" msgstr "إنشاء تذاكر للمنتجات الإضافية" -#: pretix/base/settings.py:1785 +#: pretix/base/settings.py:1787 #, fuzzy #| msgid "" #| "By default, tickets are only issued for products selected individually, " @@ -11585,11 +11602,11 @@ msgstr "" "للمنتجات الإضافية. باستخدام هذا الخيار ، يتم إصدار تذكرة منفصلة لكل منتج " "إضافي أيضا." -#: pretix/base/settings.py:1798 +#: pretix/base/settings.py:1800 msgid "Generate tickets for all products" msgstr "إنشاء تذاكر لجميع المنتجات" -#: pretix/base/settings.py:1799 +#: pretix/base/settings.py:1801 msgid "" "If turned off, tickets are only issued for products that are marked as an " "\"admission ticket\"in the product settings. You can also turn off ticket " @@ -11599,11 +11616,11 @@ msgstr "" "\"بطاقة دخول\" عليها في إعدادات المنتج. يمكنك أيضا إيقاف تشغيل إصدار التذاكر " "لكل منتج على حدة." -#: pretix/base/settings.py:1811 +#: pretix/base/settings.py:1813 msgid "Generate tickets for pending orders" msgstr "إصدار تذاكر للطلبات المعلقة" -#: pretix/base/settings.py:1812 +#: pretix/base/settings.py:1814 msgid "" "If turned off, ticket downloads are only possible after an order has been " "marked as paid." @@ -11611,11 +11628,11 @@ msgstr "" "إذا تم إيقاف تشغيل هذا الخيار، فلن يكون تنزيل التذاكر ممكنا إلا بعد وضع " "علامة على الطلب على أنه مدفوع." -#: pretix/base/settings.py:1823 +#: pretix/base/settings.py:1825 msgid "Do not issue ticket before email address is validated" msgstr "لا تصدر تذكرة قبل التحقق من صحة عنوان البريد الإلكتروني" -#: pretix/base/settings.py:1824 +#: pretix/base/settings.py:1826 msgid "" "If turned on, tickets will not be offered for download directly after " "purchase. They will be attached to the payment confirmation email (if the " @@ -11628,13 +11645,13 @@ msgstr "" "جدا)، وسيتمكن العميل من تنزيلها من الصفحة بمجرد النقر على الرابط في البريد " "الإلكتروني. لا يؤثر على الطلبات المنفذة من خلال قنوات البيع الأخرى." -#: pretix/base/settings.py:1840 +#: pretix/base/settings.py:1842 #, fuzzy #| msgid "Quota availabilities" msgid "Low availability threshold" msgstr "توافر الحصة" -#: pretix/base/settings.py:1841 +#: pretix/base/settings.py:1843 msgid "" "If the availability of tickets falls below this percentage, the event (or a " "date, if it is an event series) will be highlighted to have low availability " @@ -11642,11 +11659,11 @@ msgid "" "availability will not be shown publicly." msgstr "" -#: pretix/base/settings.py:1855 +#: pretix/base/settings.py:1857 msgid "Show availability in event overviews" msgstr "إظهار التوفر في \"نبذة عن الفعالية\"" -#: pretix/base/settings.py:1856 +#: pretix/base/settings.py:1858 msgid "" "If checked, the list of events will show if events are sold out. This might " "make for longer page loading times if you have lots of events and the shown " @@ -11656,24 +11673,24 @@ msgstr "" "يؤدي هذا إلى إطالة وقت تحميل الصفحات إذا كان لديك الكثير من الفعاليات وقد " "تكون الحالة المعروضة قديمة لمدة تصل إلى دقيقتين." -#: pretix/base/settings.py:1869 pretix/base/settings.py:1877 +#: pretix/base/settings.py:1871 pretix/base/settings.py:1879 #: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:8 msgid "List" msgstr "قائمة" -#: pretix/base/settings.py:1870 pretix/base/settings.py:1878 +#: pretix/base/settings.py:1872 pretix/base/settings.py:1880 msgid "Week calendar" msgstr "تقويم الأسبوع" -#: pretix/base/settings.py:1871 pretix/base/settings.py:1879 +#: pretix/base/settings.py:1873 pretix/base/settings.py:1881 msgid "Month calendar" msgstr "تقويم الشهر" -#: pretix/base/settings.py:1875 +#: pretix/base/settings.py:1877 msgid "Default overview style" msgstr "نمط النظرة العامة الافتراضي" -#: pretix/base/settings.py:1881 +#: pretix/base/settings.py:1883 msgid "" "If your event series has more than 50 dates in the future, only the month or " "week calendar can be used." @@ -11681,13 +11698,13 @@ msgstr "" "إذا كانت سلسلة الفعاليات الخاصة بك تحتوي على أكثر من 50 تاريخا في المستقبل ، " "فيمكن استخدام تقويم الشهر أو الأسبوع فقط." -#: pretix/base/settings.py:1890 +#: pretix/base/settings.py:1892 #, fuzzy #| msgid "Hide all unavailable dates from calendar or list views" msgid "Show filter options for calendar or list view" msgstr "إخفاء جميع التواريخ غير المتاحة من التقويم أو طرق عرض القائمة" -#: pretix/base/settings.py:1891 +#: pretix/base/settings.py:1893 #, fuzzy #| msgid "The selected product is not active or has no price set." msgid "" @@ -11695,57 +11712,57 @@ msgid "" "settings." msgstr "المنتج المحدد غير نشط أو ليس له سعر محدد." -#: pretix/base/settings.py:1900 +#: pretix/base/settings.py:1902 msgid "Hide all unavailable dates from calendar or list views" msgstr "إخفاء جميع التواريخ غير المتاحة من التقويم أو طرق عرض القائمة" -#: pretix/base/settings.py:1901 pretix/base/settings.py:1912 +#: pretix/base/settings.py:1903 pretix/base/settings.py:1914 msgid "" "This option currently only affects the calendar of this event series, not " "the organizer-wide calendar." msgstr "" -#: pretix/base/settings.py:1911 +#: pretix/base/settings.py:1913 #, fuzzy #| msgid "Hide all unavailable dates from calendar or list views" msgid "Hide all past dates from calendar" msgstr "إخفاء جميع التواريخ غير المتاحة من التقويم أو طرق عرض القائمة" -#: pretix/base/settings.py:1923 pretix/base/settings.py:1932 +#: pretix/base/settings.py:1925 pretix/base/settings.py:1934 msgid "No modifications after order was submitted" msgstr "" -#: pretix/base/settings.py:1924 pretix/base/settings.py:1933 +#: pretix/base/settings.py:1926 pretix/base/settings.py:1935 #, fuzzy #| msgid "Only pending or paid orders can be changed." msgid "Only the person who ordered can make changes" msgstr "يمكن فقط تغيير الطلبات المعلقة أو المدفوعة." -#: pretix/base/settings.py:1925 pretix/base/settings.py:1934 +#: pretix/base/settings.py:1927 pretix/base/settings.py:1936 msgid "Both the attendee and the person who ordered can make changes" msgstr "" -#: pretix/base/settings.py:1929 +#: pretix/base/settings.py:1931 #, fuzzy #| msgid "Allow customers to modify their information after they checked in." msgid "Allow customers to modify their information" msgstr "اسمح للعملاء بتعديل معلوماتهم بعد تمام التسجيل." -#: pretix/base/settings.py:1944 +#: pretix/base/settings.py:1946 msgid "Allow customers to modify their information after they checked in." msgstr "اسمح للعملاء بتعديل معلوماتهم بعد تمام التسجيل." -#: pretix/base/settings.py:1945 +#: pretix/base/settings.py:1947 msgid "" "By default, no more modifications are possible for an order as soon as one " "of the tickets in the order has been checked in." msgstr "" -#: pretix/base/settings.py:1955 +#: pretix/base/settings.py:1957 msgid "Last date of modifications" msgstr "آخر موعد لإجراء التعديلات" -#: pretix/base/settings.py:1956 +#: pretix/base/settings.py:1958 msgid "" "The last date users can modify details of their orders, such as attendee " "names or answers to questions. If you use the event series feature and an " @@ -11756,58 +11773,58 @@ msgstr "" "الحضور أو إجابات الأسئلة. إذا كنت تستخدم ميزة سلسلة الفعاليات وكان الطلب " "يحتوي على تذاكر لتواريخ فعاليات متعددة ، فسيتم استخدام أقرب تاريخ." -#: pretix/base/settings.py:1967 +#: pretix/base/settings.py:1969 msgid "Customers can change the variation of the products they purchased" msgstr "يمكن للعملاء تغيير تنوع المنتجات التي قاموا بشرائها" -#: pretix/base/settings.py:1976 +#: pretix/base/settings.py:1978 #, fuzzy #| msgid "Customers can cancel their paid orders" msgid "Customers can change their selected add-on products" msgstr "يمكن للعملاء إلغاء طلباتهم المدفوعة" -#: pretix/base/settings.py:1986 pretix/base/settings.py:1997 +#: pretix/base/settings.py:1988 pretix/base/settings.py:1999 msgid "" "Only allow changes if the resulting price is higher or equal than the " "previous price." msgstr "السماح بالتغييرات فقط إذا كان السعر الناتج أعلى أو يساوي السعر السابق." -#: pretix/base/settings.py:1987 pretix/base/settings.py:1998 +#: pretix/base/settings.py:1989 pretix/base/settings.py:2000 msgid "" "Only allow changes if the resulting price is higher than the previous price." msgstr "السماح بالتغييرات فقط إذا كان السعر الناتج أعلى من السعر السابق." -#: pretix/base/settings.py:1988 pretix/base/settings.py:1999 +#: pretix/base/settings.py:1990 pretix/base/settings.py:2001 msgid "" "Only allow changes if the resulting price is equal to the previous price." msgstr "السماح بالتغييرات فقط إذا كان السعر الناتج أعلى من السعر السابق." -#: pretix/base/settings.py:1989 pretix/base/settings.py:2000 +#: pretix/base/settings.py:1991 pretix/base/settings.py:2002 msgid "" "Allow changes regardless of price, as long as no refund is required (i.e. " "the resulting price is not lower than what has already been paid)." msgstr "" -#: pretix/base/settings.py:1991 pretix/base/settings.py:2002 +#: pretix/base/settings.py:1993 pretix/base/settings.py:2004 msgid "Allow changes regardless of price, even if this results in a refund." msgstr "" "السماح بالتغييرات بغض النظر عن السعر ، حتى لو أدى ذلك إلى استرداد الأموال." -#: pretix/base/settings.py:1995 +#: pretix/base/settings.py:1997 msgid "Requirement for changed prices" msgstr "شرط تغيير الأسعار" -#: pretix/base/settings.py:2013 +#: pretix/base/settings.py:2015 msgid "Do not allow changes after" msgstr "لا تسمح بالتغييرات بعد" -#: pretix/base/settings.py:2022 +#: pretix/base/settings.py:2024 #, fuzzy #| msgid "The payment for this invoice has already been received." msgid "Allow change even though the ticket has already been checked in" msgstr "تم إستلام قيمة هذه الفاتورة مسبقا." -#: pretix/base/settings.py:2023 +#: pretix/base/settings.py:2025 msgid "" "By default, order changes are disabled after any ticket in the order has " "been checked in. If you check this box, this requirement is lifted. It is " @@ -11816,11 +11833,11 @@ msgid "" "limitation on price changes above." msgstr "" -#: pretix/base/settings.py:2035 +#: pretix/base/settings.py:2037 msgid "Allow individual attendees to change their ticket" msgstr "" -#: pretix/base/settings.py:2036 +#: pretix/base/settings.py:2038 msgid "" "By default, only the person who ordered the tickets can make any changes. If " "you check this box, individual attendees can also make changes. However, " @@ -11829,45 +11846,45 @@ msgid "" "customer." msgstr "" -#: pretix/base/settings.py:2048 +#: pretix/base/settings.py:2050 msgid "Customers can cancel their unpaid orders" msgstr "يمكن للعملاء إلغاء طلباتهم غير المدفوعة" -#: pretix/base/settings.py:2060 +#: pretix/base/settings.py:2062 #, fuzzy #| msgid "Keep a fixed cancellation fee" msgid "Charge a fixed cancellation fee" msgstr "احتفظ برسوم إلغاء ثابتة" -#: pretix/base/settings.py:2061 pretix/base/settings.py:2072 -#: pretix/base/settings.py:2086 +#: pretix/base/settings.py:2063 pretix/base/settings.py:2074 +#: pretix/base/settings.py:2088 msgid "" "Only affects orders pending payments, a cancellation fee for free orders is " "never charged. Note that it will be your responsibility to claim the " "cancellation fee from the user." msgstr "" -#: pretix/base/settings.py:2071 +#: pretix/base/settings.py:2073 #, fuzzy #| msgid "Keep payment, shipping and service fees" msgid "Charge payment, shipping and service fees" msgstr "احتفظ برسوم السداد والشحن والخدمة" -#: pretix/base/settings.py:2085 +#: pretix/base/settings.py:2087 #, fuzzy #| msgid "Keep a percentual cancellation fee" msgid "Charge a percentual cancellation fee" msgstr "احتفظ بنسبة رسوم الإلغاء" -#: pretix/base/settings.py:2096 pretix/base/settings.py:2235 +#: pretix/base/settings.py:2098 pretix/base/settings.py:2237 msgid "Do not allow cancellations after" msgstr "لا تسمح بالإلغاء بعد" -#: pretix/base/settings.py:2105 +#: pretix/base/settings.py:2107 msgid "Customers can cancel their paid orders" msgstr "يمكن للعملاء إلغاء طلباتهم المدفوعة" -#: pretix/base/settings.py:2106 +#: pretix/base/settings.py:2108 msgid "" "Paid money will be automatically paid back if the payment method allows it. " "Otherwise, a manual refund will be created for you to process manually." @@ -11875,29 +11892,29 @@ msgstr "" "سيتم رد الأموال المدفوعة تلقائيا إذا كانت طريقة الدفع تسمح بذلك. وبخلاف " "ذلك ، سيتم إنشاء استرداد يدوي لتتم معالجته يدويا." -#: pretix/base/settings.py:2119 pretix/control/forms/orders.py:909 +#: pretix/base/settings.py:2121 pretix/control/forms/orders.py:917 msgid "Keep a fixed cancellation fee" msgstr "احتفظ برسوم إلغاء ثابتة" -#: pretix/base/settings.py:2128 +#: pretix/base/settings.py:2130 msgid "Keep payment, shipping and service fees" msgstr "احتفظ برسوم السداد والشحن والخدمة" -#: pretix/base/settings.py:2140 pretix/control/forms/orders.py:920 +#: pretix/base/settings.py:2142 pretix/control/forms/orders.py:928 msgid "Keep a percentual cancellation fee" msgstr "احتفظ بنسبة رسوم الإلغاء" -#: pretix/base/settings.py:2149 +#: pretix/base/settings.py:2151 msgid "Allow customers to voluntarily choose a lower refund" msgstr "السماح للعملاء طواعية باختيار استرداد أقل" -#: pretix/base/settings.py:2150 +#: pretix/base/settings.py:2152 msgid "" "With this option enabled, your customers can choose to get a smaller refund " "to support you." msgstr "مع تمكين هذا الخيار ، يمكن لعملائك اختيار استرداد مبلغ أصغر لدعمك." -#: pretix/base/settings.py:2155 +#: pretix/base/settings.py:2157 msgid "" "However, if you want us to help keep the lights on here, please consider " "using the slider below to request a smaller refund. Thank you!" @@ -11905,12 +11922,12 @@ msgstr "" "إذا كنت تريد منا المساعدة في استمرار النشاط، فيرجى استخدام شريط التمرير " "أدناه لطلب استرداد مبلغ أقل. شكرا لك!" -#: pretix/base/settings.py:2162 +#: pretix/base/settings.py:2164 #, fuzzy msgid "Voluntary lower refund explanation" msgstr "تبرير تخفيض المبلغ الطوعي" -#: pretix/base/settings.py:2165 +#: pretix/base/settings.py:2167 msgid "" "This text will be shown in between the explanation of how the refunds work " "and the slider which your customers can use to choose the amount they would " @@ -11921,11 +11938,11 @@ msgstr "" "الذي يمكن لعملائك استخدامه لاختيار المبلغ الذي يرغبون في استلامه. يمكنك " "استخدامه على سبيل المثال لشرح اختيار استرداد أقل مما سيساعد مؤسستك." -#: pretix/base/settings.py:2180 +#: pretix/base/settings.py:2182 msgid "Step size for reduction amount" msgstr "حجم مبلغ التخفيض" -#: pretix/base/settings.py:2181 +#: pretix/base/settings.py:2183 msgid "" "By default, customers can choose an arbitrary amount for you to keep. If you " "set this to e.g. 10, they will only be able to choose values in increments " @@ -11935,7 +11952,7 @@ msgstr "" "ذلك على سبيل المثال 10 ، سيكونون قادرين فقط على اختيار القيم بزيادات قدرها " "10." -#: pretix/base/settings.py:2191 +#: pretix/base/settings.py:2193 msgid "" "Customers can only request a cancellation that needs to be approved by the " "event organizer before the order is canceled and a refund is issued." @@ -11943,68 +11960,68 @@ msgstr "" "يمكن للعملاء فقط طلب الإلغاء الذي يحتاج إلى موافقة منظم الفالية قبل إلغاء " "الطلب وإصدار أمر الاسترداد." -#: pretix/base/settings.py:2201 +#: pretix/base/settings.py:2203 msgid "" "Do not show the cancellation fee to users when they request cancellation." msgstr "" -#: pretix/base/settings.py:2210 pretix/base/settings.py:2220 +#: pretix/base/settings.py:2212 pretix/base/settings.py:2222 msgid "All refunds are issued to the original payment method" msgstr "يتم إصدار جميع المبالغ المستردة بطريقة الدفع الأصلية" -#: pretix/base/settings.py:2211 pretix/base/settings.py:2221 +#: pretix/base/settings.py:2213 pretix/base/settings.py:2223 msgid "" "Customers can choose between a gift card and a refund to their payment method" msgstr "" "يمكن للعملاء الاختيار بين بطاقة هدايا واسترداد الأموال بطريقة الدفع الخاصة " "بهم" -#: pretix/base/settings.py:2212 pretix/base/settings.py:2222 +#: pretix/base/settings.py:2214 pretix/base/settings.py:2224 msgid "All refunds are issued as gift cards" msgstr "يتم إصدار جميع المبالغ المستردة كبطاقات هدايا" -#: pretix/base/settings.py:2213 pretix/base/settings.py:2223 +#: pretix/base/settings.py:2215 pretix/base/settings.py:2225 msgid "Do not handle refunds automatically at all" msgstr "" -#: pretix/base/settings.py:2218 +#: pretix/base/settings.py:2220 #: pretix/control/templates/pretixcontrol/order/index.html:149 msgid "Refund method" msgstr "طريقة الاسترداد" -#: pretix/base/settings.py:2244 pretix/base/settings.py:2257 +#: pretix/base/settings.py:2246 pretix/base/settings.py:2259 #, fuzzy #| msgid "Generate cancellation" msgid "Terms of cancellation" msgstr "توليد إلغاء" -#: pretix/base/settings.py:2247 +#: pretix/base/settings.py:2249 msgid "" "This text will be shown when cancellation is allowed for a paid order. Leave " "empty if you want pretix to automatically generate the terms of cancellation " "based on your settings." msgstr "" -#: pretix/base/settings.py:2260 +#: pretix/base/settings.py:2262 msgid "" "This text will be shown when cancellation is allowed for an unpaid or free " "order. Leave empty if you want pretix to automatically generate the terms of " "cancellation based on your settings." msgstr "" -#: pretix/base/settings.py:2270 pretix/control/forms/event.py:1898 +#: pretix/base/settings.py:2272 pretix/control/forms/event.py:1898 msgid "Contact address" msgstr "عنوان الإتصال" -#: pretix/base/settings.py:2271 pretix/control/forms/event.py:1900 +#: pretix/base/settings.py:2273 pretix/control/forms/event.py:1900 msgid "We'll show this publicly to allow attendees to contact you." msgstr "سيظهر هذا علنا للسماح للحاضرين بالاتصال بك." -#: pretix/base/settings.py:2279 pretix/control/forms/event.py:1892 +#: pretix/base/settings.py:2281 pretix/control/forms/event.py:1892 msgid "Imprint URL" msgstr "رابط موقع مقدم الخدمة" -#: pretix/base/settings.py:2280 pretix/control/forms/event.py:1893 +#: pretix/base/settings.py:2282 pretix/control/forms/event.py:1893 msgid "" "This should point e.g. to a part of your website that has your contact " "details and legal information." @@ -12012,11 +12029,11 @@ msgstr "" "ينبغي أن يشير هذا إلى على سبيل المثال جزء من موقع الويب الخاص بك الذي يحتوي " "على تفاصيل الاتصال الخاصة بك والمعلومات القانونية." -#: pretix/base/settings.py:2290 +#: pretix/base/settings.py:2292 msgid "Privacy Policy URL" msgstr "" -#: pretix/base/settings.py:2291 +#: pretix/base/settings.py:2293 #, fuzzy #| msgid "" #| "This should point e.g. to a part of your website that has your contact " @@ -12028,13 +12045,13 @@ msgstr "" "ينبغي أن يشير هذا إلى على سبيل المثال جزء من موقع الويب الخاص بك الذي يحتوي " "على تفاصيل الاتصال الخاصة بك والمعلومات القانونية." -#: pretix/base/settings.py:2302 +#: pretix/base/settings.py:2304 #, fuzzy #| msgid "Account information" msgid "Accessibility information URL" msgstr "معلومات الحساب" -#: pretix/base/settings.py:2303 +#: pretix/base/settings.py:2305 #, fuzzy #| msgid "" #| "This should point e.g. to a part of your website that has your contact " @@ -12046,7 +12063,7 @@ msgstr "" "ينبغي أن يشير هذا إلى على سبيل المثال جزء من موقع الويب الخاص بك الذي يحتوي " "على تفاصيل الاتصال الخاصة بك والمعلومات القانونية." -#: pretix/base/settings.py:2310 +#: pretix/base/settings.py:2312 #: pretix/presale/templates/pretixpresale/event/base.html:229 #: pretix/presale/templates/pretixpresale/event/base.html:234 #: pretix/presale/templates/pretixpresale/organizers/accessibility.html:6 @@ -12057,23 +12074,23 @@ msgstr "" msgid "Accessibility information" msgstr "معلومات الحساب" -#: pretix/base/settings.py:2314 +#: pretix/base/settings.py:2316 #, fuzzy #| msgid "Account information" msgid "Accessibility information title" msgstr "معلومات الحساب" -#: pretix/base/settings.py:2324 +#: pretix/base/settings.py:2326 #, fuzzy #| msgid "Account information" msgid "Accessibility information text" msgstr "معلومات الحساب" -#: pretix/base/settings.py:2345 +#: pretix/base/settings.py:2347 msgid "Attach ticket files" msgstr "إرفق ملفات التذكرة" -#: pretix/base/settings.py:2347 +#: pretix/base/settings.py:2349 #, python-brace-format msgid "" "Tickets will never be attached if they're larger than {size} to avoid email " @@ -12082,36 +12099,36 @@ msgstr "" "لن يتم إرفاق التذاكر أبدا إذا كان حجمها أكبر من {size} لتجنب مشاكل إرسال " "البريد الإلكتروني." -#: pretix/base/settings.py:2358 pretix/plugins/sendmail/forms.py:201 +#: pretix/base/settings.py:2360 pretix/plugins/sendmail/forms.py:201 #: pretix/plugins/sendmail/models.py:263 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:66 msgid "Attach calendar files" msgstr "إرفق ملفات التقويم" -#: pretix/base/settings.py:2359 +#: pretix/base/settings.py:2361 msgid "" "If enabled, we will attach an .ics calendar file to order confirmation " "emails." msgstr "" "في حالة التمكين، سنرفق ملف تقويم ics. لرسائل البريد الإلكتروني لتأكيد الطلب." -#: pretix/base/settings.py:2368 +#: pretix/base/settings.py:2370 msgid "Attach calendar files only after order has been paid" msgstr "" -#: pretix/base/settings.py:2369 +#: pretix/base/settings.py:2371 msgid "" "Use this if you e.g. put a private access link into the calendar file to " "make sure people only receive it after their payment was confirmed." msgstr "" -#: pretix/base/settings.py:2378 +#: pretix/base/settings.py:2380 #, fuzzy #| msgid "Product description" msgid "Event description" msgstr "وصف المنتج" -#: pretix/base/settings.py:2381 +#: pretix/base/settings.py:2383 msgid "" "You can use this to share information with your attendees, such as travel " "information or the link to a digital event. If you keep it empty, we will " @@ -12121,11 +12138,11 @@ msgid "" "people." msgstr "" -#: pretix/base/settings.py:2394 +#: pretix/base/settings.py:2396 msgid "Subject prefix" msgstr "الرمز الذي يسبق الموضوع" -#: pretix/base/settings.py:2395 +#: pretix/base/settings.py:2397 msgid "" "This will be prepended to the subject of all outgoing emails, formatted as " "[prefix]. Choose, for example, a short form of your event name." @@ -12133,23 +12150,23 @@ msgstr "" "سيتم إضافة هذا مسبقا إلى موضوع جميع رسائل البريد الإلكتروني الصادرة ، محدد " "مثل [prefix]. اختر ، على سبيل المثال ، مسمى قصير لاسم الفعالية الخاصة بك." -#: pretix/base/settings.py:2409 pretix/control/forms/mailsetup.py:37 +#: pretix/base/settings.py:2411 pretix/control/forms/mailsetup.py:37 #: pretix/control/forms/mailsetup.py:119 #: pretix/control/templates/pretixcontrol/event/mail.html:39 #: pretix/control/templates/pretixcontrol/organizers/mail.html:40 msgid "Sender address" msgstr "عنوان المرسل" -#: pretix/base/settings.py:2410 pretix/control/forms/mailsetup.py:38 +#: pretix/base/settings.py:2412 pretix/control/forms/mailsetup.py:38 #: pretix/control/forms/mailsetup.py:120 msgid "Sender address for outgoing emails" msgstr "عنوان المرسل لرسائل البريد الإلكتروني الصادرة" -#: pretix/base/settings.py:2419 +#: pretix/base/settings.py:2421 msgid "Sender name" msgstr "اسم المرسل" -#: pretix/base/settings.py:2420 +#: pretix/base/settings.py:2422 msgid "" "Sender name used in conjunction with the sender address for outgoing emails. " "Defaults to your event name." @@ -12157,20 +12174,20 @@ msgstr "" "يتم استخدام اسم المرسل مع عنوان المرسل لرسائل البريد الإلكتروني الصادرة. " "افتراضات لاسم الفعالية الخاصة بك." -#: pretix/base/settings.py:2438 pretix/base/settings.py:2495 -#: pretix/base/settings.py:2512 pretix/base/settings.py:2530 +#: pretix/base/settings.py:2440 pretix/base/settings.py:2497 +#: pretix/base/settings.py:2514 pretix/base/settings.py:2532 #, python-brace-format msgid "Your order: {code}" msgstr "طلبك هو: {code}" -#: pretix/base/settings.py:2442 pretix/base/settings.py:2475 -#: pretix/base/settings.py:2580 pretix/base/settings.py:2813 -#: pretix/base/settings.py:2850 +#: pretix/base/settings.py:2444 pretix/base/settings.py:2477 +#: pretix/base/settings.py:2582 pretix/base/settings.py:2815 +#: pretix/base/settings.py:2852 #, python-brace-format msgid "Your event registration: {code}" msgstr "تسجيل الفعالية الخاصة بك:{code}" -#: pretix/base/settings.py:2446 +#: pretix/base/settings.py:2448 #, python-brace-format msgid "" "Hello,\n" @@ -12195,12 +12212,12 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2459 +#: pretix/base/settings.py:2461 #, python-brace-format msgid "Your orders for {event}" msgstr "طلباتكم ل{event}" -#: pretix/base/settings.py:2463 +#: pretix/base/settings.py:2465 #, python-brace-format msgid "" "Hello,\n" @@ -12223,7 +12240,7 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2479 +#: pretix/base/settings.py:2481 #, python-brace-format msgid "" "Hello {attendee_name},\n" @@ -12246,7 +12263,7 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2499 +#: pretix/base/settings.py:2501 #, python-brace-format msgid "" "Hello,\n" @@ -12271,7 +12288,7 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2516 +#: pretix/base/settings.py:2518 #, python-brace-format msgid "" "Hello,\n" @@ -12298,7 +12315,7 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2534 +#: pretix/base/settings.py:2536 #, python-brace-format msgid "" "Hello,\n" @@ -12328,13 +12345,13 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2552 +#: pretix/base/settings.py:2554 #, fuzzy #| msgid "Split into new order" msgid "Attachment for new orders" msgstr "تنقسم إلى النظام الجديد" -#: pretix/base/settings.py:2557 +#: pretix/base/settings.py:2559 #, python-brace-format msgid "" "This file will be attached to the first email that we send for every new " @@ -12346,7 +12363,7 @@ msgid "" "vital email going to spam, you can only upload PDF files of up to {size} MB." msgstr "" -#: pretix/base/settings.py:2584 +#: pretix/base/settings.py:2586 #, python-brace-format msgid "" "Hello {attendee_name},\n" @@ -12369,12 +12386,12 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2596 +#: pretix/base/settings.py:2598 #, python-brace-format msgid "Your order has been changed: {code}" msgstr "تم تغيير طلبك: {code}" -#: pretix/base/settings.py:2600 +#: pretix/base/settings.py:2602 #, python-brace-format msgid "" "Hello,\n" @@ -12397,12 +12414,12 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2612 +#: pretix/base/settings.py:2614 #, python-brace-format msgid "Payment received for your order: {code}" msgstr "تم إستلام الدفع لطلبك: {code}" -#: pretix/base/settings.py:2616 +#: pretix/base/settings.py:2618 #, python-brace-format msgid "" "Hello,\n" @@ -12429,12 +12446,12 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2634 +#: pretix/base/settings.py:2636 #, python-brace-format msgid "Event registration confirmed: {code}" msgstr "تم تأكيد تسجيل الفعالية: {code}" -#: pretix/base/settings.py:2638 +#: pretix/base/settings.py:2640 #, python-brace-format msgid "" "Hello {attendee_name},\n" @@ -12457,12 +12474,12 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2655 pretix/control/forms/event.py:1294 +#: pretix/base/settings.py:2657 pretix/control/forms/event.py:1294 #: pretix/control/forms/event.py:1416 pretix/plugins/sendmail/models.py:268 msgid "Number of days" msgstr "عدد الأيام" -#: pretix/base/settings.py:2657 pretix/control/forms/event.py:1297 +#: pretix/base/settings.py:2659 pretix/control/forms/event.py:1297 msgid "" "This email will be sent out this many days before the order expires. If the " "value is 0, the mail will never be sent." @@ -12470,12 +12487,12 @@ msgstr "" "سيتم إرسال هذا البريد الإلكتروني من هذا عدة أيام قبل انتهاء صلاحية النظام. " "إذا كانت القيمة 0، لن يتم إرسال البريد." -#: pretix/base/settings.py:2665 +#: pretix/base/settings.py:2667 #, python-brace-format msgid "Your order is about to expire: {code}" msgstr "طلبك على وشك الانتهاء: {code}" -#: pretix/base/settings.py:2669 +#: pretix/base/settings.py:2671 #, python-brace-format msgid "" "Hello,\n" @@ -12502,12 +12519,12 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2683 +#: pretix/base/settings.py:2685 #, python-brace-format msgid "Your order is pending payment: {code}" msgstr "طلبك في انتظار الدفع: {code}" -#: pretix/base/settings.py:2687 +#: pretix/base/settings.py:2689 #, fuzzy, python-brace-format #| msgid "" #| "Hello,\n" @@ -12545,13 +12562,13 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2700 +#: pretix/base/settings.py:2702 #, fuzzy, python-brace-format #| msgid "Payment received for your order: {code}" msgid "Incomplete payment received: {code}" msgstr "تم إستلام الدفع لطلبك: {code}" -#: pretix/base/settings.py:2704 +#: pretix/base/settings.py:2706 #, fuzzy, python-brace-format #| msgid "" #| "Hello,\n" @@ -12592,13 +12609,13 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2720 +#: pretix/base/settings.py:2722 #, fuzzy, python-brace-format #| msgid "Payment received for your order: {code}" msgid "Payment failed for your order: {code}" msgstr "تم إستلام الدفع لطلبك: {code}" -#: pretix/base/settings.py:2724 +#: pretix/base/settings.py:2726 #, fuzzy, python-brace-format #| msgid "" #| "Hello,\n" @@ -12639,12 +12656,12 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2738 +#: pretix/base/settings.py:2740 #, python-brace-format msgid "You have been selected from the waitinglist for {event}" msgstr "لقد تم اختيارك من قائمة الانتظار ل{event}" -#: pretix/base/settings.py:2742 +#: pretix/base/settings.py:2744 #, fuzzy, python-brace-format #| msgid "" #| "Hello,\n" @@ -12716,12 +12733,12 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2771 +#: pretix/base/settings.py:2773 #, python-brace-format msgid "Order canceled: {code}" msgstr "تم إلغاء الطلب: {code}" -#: pretix/base/settings.py:2775 +#: pretix/base/settings.py:2777 #, python-brace-format msgid "" "Hello,\n" @@ -12748,12 +12765,12 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2789 +#: pretix/base/settings.py:2791 #, python-brace-format msgid "Order approved and awaiting payment: {code}" msgstr "تمت الموافقة على الطلب وفي انتظار الدفع: {code}" -#: pretix/base/settings.py:2793 +#: pretix/base/settings.py:2795 #, python-brace-format msgid "" "Hello,\n" @@ -12783,7 +12800,7 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2817 pretix/base/settings.py:2854 +#: pretix/base/settings.py:2819 pretix/base/settings.py:2856 #, fuzzy, python-brace-format #| msgid "" #| "Hello {attendee_name},\n" @@ -12816,12 +12833,12 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2829 +#: pretix/base/settings.py:2831 #, python-brace-format msgid "Order approved and confirmed: {code}" msgstr "تمت الموافقة على الطلب وتأكيده: {code}" -#: pretix/base/settings.py:2833 +#: pretix/base/settings.py:2835 #, python-brace-format msgid "" "Hello,\n" @@ -12846,12 +12863,12 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2866 +#: pretix/base/settings.py:2868 #, python-brace-format msgid "Order denied: {code}" msgstr "الطلب مرفوض: {code}" -#: pretix/base/settings.py:2870 +#: pretix/base/settings.py:2872 #, python-brace-format msgid "" "Hello,\n" @@ -12880,7 +12897,7 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2885 +#: pretix/base/settings.py:2887 #, python-brace-format msgid "" "Hello,\n" @@ -12899,13 +12916,13 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2895 +#: pretix/base/settings.py:2897 #, fuzzy, python-brace-format #| msgid "Invoice number" msgid "Invoice {invoice_number}" msgstr "رقم الفاتورة" -#: pretix/base/settings.py:2899 +#: pretix/base/settings.py:2901 #, fuzzy, python-brace-format #| msgid "" #| "Hello,\n" @@ -12937,12 +12954,12 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2917 pretix/base/settings.py:2933 +#: pretix/base/settings.py:2919 pretix/base/settings.py:2935 #, python-brace-format msgid "Your ticket is ready for download: {code}" msgstr "تذكرتك جاهزة للتنزيل: {code}" -#: pretix/base/settings.py:2921 +#: pretix/base/settings.py:2923 #, fuzzy, python-brace-format #| msgid "" #| "Hello {attendee_name},\n" @@ -12975,7 +12992,7 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2937 +#: pretix/base/settings.py:2939 #, python-brace-format msgid "" "Hello,\n" @@ -12998,12 +13015,12 @@ msgstr "" "تحياتنا،\n" "فريق {event}" -#: pretix/base/settings.py:2949 +#: pretix/base/settings.py:2951 #, python-brace-format msgid "Activate your account at {organizer}" msgstr "قم بتفعيل حسابك على {organizer}" -#: pretix/base/settings.py:2953 +#: pretix/base/settings.py:2955 #, python-brace-format msgid "" "Hello {name},\n" @@ -13038,12 +13055,12 @@ msgstr "" "\n" "فريق {organizer} الخاص بك" -#: pretix/base/settings.py:2971 +#: pretix/base/settings.py:2973 #, python-brace-format msgid "Confirm email address for your account at {organizer}" msgstr "تأكيد عنوان البريد الإلكتروني لحسابك على {organizer}" -#: pretix/base/settings.py:2975 +#: pretix/base/settings.py:2977 #, python-brace-format msgid "" "Hello {name},\n" @@ -13078,12 +13095,12 @@ msgstr "" "\n" "فريق {organizer} الخاص بك" -#: pretix/base/settings.py:2993 +#: pretix/base/settings.py:2995 #, python-brace-format msgid "Set a new password for your account at {organizer}" msgstr "قم بتعيين كلمة مرور جديدة لحسابك على {organizer}" -#: pretix/base/settings.py:2997 +#: pretix/base/settings.py:2999 #, python-brace-format msgid "" "Hello {name},\n" @@ -13118,13 +13135,13 @@ msgstr "" "\n" "فريق {organizer} الخاص بك" -#: pretix/base/settings.py:3015 +#: pretix/base/settings.py:3017 #, fuzzy, python-brace-format #| msgid "Activate your account at {organizer}" msgid "Changes to your account at {organizer}" msgstr "قم بتفعيل حسابك على {organizer}" -#: pretix/base/settings.py:3019 +#: pretix/base/settings.py:3021 #, fuzzy, python-brace-format #| msgid "" #| "Hello {name},\n" @@ -13176,57 +13193,57 @@ msgstr "" "\n" "فريق {organizer} الخاص بك" -#: pretix/base/settings.py:3071 pretix/base/settings.py:3078 -#: pretix/base/settings.py:3092 pretix/base/settings.py:3100 -#: pretix/base/settings.py:3114 pretix/base/settings.py:3122 -#: pretix/base/settings.py:3136 pretix/base/settings.py:3143 +#: pretix/base/settings.py:3073 pretix/base/settings.py:3080 +#: pretix/base/settings.py:3094 pretix/base/settings.py:3102 +#: pretix/base/settings.py:3116 pretix/base/settings.py:3124 +#: pretix/base/settings.py:3138 pretix/base/settings.py:3145 msgid "Please enter the hexadecimal code of a color, e.g. #990000." msgstr "الرجاء إدخال رمز عشري للون على سبيل المثال # 990000." -#: pretix/base/settings.py:3075 +#: pretix/base/settings.py:3077 msgid "Primary color" msgstr "لون أساسي" -#: pretix/base/settings.py:3096 +#: pretix/base/settings.py:3098 msgid "Accent color for success" msgstr "درجة لون لنجاح العملية" -#: pretix/base/settings.py:3097 +#: pretix/base/settings.py:3099 msgid "We strongly suggest to use a shade of green." msgstr "نقترح بشدة استخدام الظل الأخضر." -#: pretix/base/settings.py:3118 +#: pretix/base/settings.py:3120 msgid "Accent color for errors" msgstr "درجة لون الأخطاء" -#: pretix/base/settings.py:3119 +#: pretix/base/settings.py:3121 msgid "We strongly suggest to use a shade of red." msgstr "نقترح بشدة استخدام الظل الأحمر." -#: pretix/base/settings.py:3140 +#: pretix/base/settings.py:3142 msgid "Page background color" msgstr "لون خلفية الصفحة" -#: pretix/base/settings.py:3155 +#: pretix/base/settings.py:3157 msgid "Use round edges" msgstr "استخدم حواف مستديرة" -#: pretix/base/settings.py:3164 +#: pretix/base/settings.py:3166 msgid "" "Use native spinners in the widget instead of custom ones for numeric inputs " "such as quantity." msgstr "" -#: pretix/base/settings.py:3175 +#: pretix/base/settings.py:3177 msgid "Only respected by modern browsers." msgstr "يستخدم للمتصفحات الحديثة فقط." -#: pretix/base/settings.py:3186 pretix/base/settings.py:3230 +#: pretix/base/settings.py:3188 pretix/base/settings.py:3232 #: pretix/control/forms/organizer.py:642 msgid "Header image" msgstr "صورة رأسية" -#: pretix/base/settings.py:3189 +#: pretix/base/settings.py:3191 #, fuzzy #| msgid "" #| "If you provide a logo image, we will by default not show your event name " @@ -13246,26 +13263,26 @@ msgstr "" "120 بكسل. يمكنك زيادة الحجم من خلال الإعداد أدناه. نوصي بعدم استخدام " "التفاصيل الصغيرة على الصورة حيث سيتغير حجمها على الشاشات الصغيرة." -#: pretix/base/settings.py:3210 pretix/base/settings.py:3253 +#: pretix/base/settings.py:3212 pretix/base/settings.py:3255 msgid "Use header image in its full size" msgstr "استخدم الصورة الرأسية بحجمها الكامل" -#: pretix/base/settings.py:3211 pretix/base/settings.py:3254 +#: pretix/base/settings.py:3213 pretix/base/settings.py:3256 msgid "We recommend to upload a picture at least 1170 pixels wide." msgstr "نوصي بتحميل صورة لا يقل عرضها عن 1170 بكسل." -#: pretix/base/settings.py:3220 +#: pretix/base/settings.py:3222 msgid "Show event title even if a header image is present" msgstr "أعرض عنوان الفعالية حتى إذا كانت الصورة الرأسية موجودة" -#: pretix/base/settings.py:3221 +#: pretix/base/settings.py:3223 msgid "" "The title will only be shown on the event front page. If no header image is " "uploaded for the event, but the header image from the organizer profile is " "used, this option will be ignored and the event title will always be shown." msgstr "" -#: pretix/base/settings.py:3233 pretix/control/forms/organizer.py:646 +#: pretix/base/settings.py:3235 pretix/control/forms/organizer.py:646 #, fuzzy #| msgid "" #| "If you provide a logo image, we will by default not show your " @@ -13285,15 +13302,15 @@ msgstr "" "الحجم من الإعداد أدناه. نوصي بعدم استخدام التفاصيل الصغيرة على الصورة حيث " "سيتم تغيير حجمها على الشاشات الصغيرة." -#: pretix/base/settings.py:3263 +#: pretix/base/settings.py:3265 msgid "Use header image also for events without an individually uploaded logo" msgstr "" -#: pretix/base/settings.py:3271 +#: pretix/base/settings.py:3273 msgid "Favicon" msgstr "فافيكون" -#: pretix/base/settings.py:3274 +#: pretix/base/settings.py:3276 msgid "" "If you provide a favicon, we will show it instead of the default pretix " "icon. We recommend a size of at least 200x200px to accommodate most devices." @@ -13301,11 +13318,11 @@ msgstr "" "إذا قمت بتوفير فافيكون، وسوف نعرض بدلا من الافتراضي pretix رمز. نوصي حجم " "200x200px على الأقل لاستيعاب معظم الأجهزة." -#: pretix/base/settings.py:3290 +#: pretix/base/settings.py:3292 msgid "Social media image" msgstr "صورة وسائل التواصل الاجتماعي" -#: pretix/base/settings.py:3293 +#: pretix/base/settings.py:3295 msgid "" "This picture will be used as a preview if you post links to your ticket shop " "on social media. Facebook advises to use a picture size of 1200 x 630 " @@ -13319,19 +13336,19 @@ msgstr "" "لذلك نوصي بالتأكد من أنها لا تزال تبدو جيدة في حال كان المربع الأوسط هو الذي " "يظهر فقط. إذا لم تقم بملء هذا ، فسنستخدم الشعار المقدم أعلاه." -#: pretix/base/settings.py:3311 +#: pretix/base/settings.py:3313 msgid "Logo image" msgstr "صورة الشعار" -#: pretix/base/settings.py:3315 +#: pretix/base/settings.py:3317 msgid "We will show your logo with a maximal height and width of 2.5 cm." msgstr "سنعرض شعارك بارتفاع وعرض 2.5 سم كحد أقصى." -#: pretix/base/settings.py:3342 pretix/base/settings.py:3448 +#: pretix/base/settings.py:3344 pretix/base/settings.py:3450 msgid "Info text" msgstr "معلومات النص" -#: pretix/base/settings.py:3345 pretix/base/settings.py:3450 +#: pretix/base/settings.py:3347 pretix/base/settings.py:3452 msgid "" "Not displayed anywhere by default, but if you want to, you can use this e.g. " "in ticket templates." @@ -13339,11 +13356,11 @@ msgstr "" "لا يتم عرضه في أي مكان بشكل افتراضي ، ولكن إذا كنت ترغب في ذلك ، يمكنك " "استخدام هذا على سبيل المثال في قوالب التذاكر." -#: pretix/base/settings.py:3354 +#: pretix/base/settings.py:3356 msgid "Banner text (top)" msgstr "نص الشعار (أعلى)" -#: pretix/base/settings.py:3357 +#: pretix/base/settings.py:3359 msgid "" "This text will be shown above every page of your shop. Please only use this " "for very important messages." @@ -13351,11 +13368,11 @@ msgstr "" "سيظهر هذا النص فوق كل صفحة من صفحات متجرك. الرجاء استخدام هذا فقط للرسائل " "الهامة جدا." -#: pretix/base/settings.py:3367 +#: pretix/base/settings.py:3369 msgid "Banner text (bottom)" msgstr "نص الشعار (أسفل)" -#: pretix/base/settings.py:3370 +#: pretix/base/settings.py:3372 msgid "" "This text will be shown below every page of your shop. Please only use this " "for very important messages." @@ -13363,11 +13380,11 @@ msgstr "" "سيظهر هذا النص أسفل كل صفحة من صفحات متجرك. الرجاء استخدام هذا فقط للرسائل " "الهامة جدا." -#: pretix/base/settings.py:3380 +#: pretix/base/settings.py:3382 msgid "Voucher explanation" msgstr "تفسير لكود الخصم" -#: pretix/base/settings.py:3383 +#: pretix/base/settings.py:3385 msgid "" "This text will be shown next to the input for a voucher code. You can use it " "e.g. to explain how to obtain a voucher code." @@ -13375,11 +13392,11 @@ msgstr "" "سيظهر هذا النص بجانب إدخال رمز كود الخصم. يمكنك استخدامه على سبيل المثال " "لشرح كيفية الحصول على رمز قسيمة." -#: pretix/base/settings.py:3393 +#: pretix/base/settings.py:3395 msgid "Attendee data explanation" msgstr "شرح بيانات الحضور" -#: pretix/base/settings.py:3396 +#: pretix/base/settings.py:3398 #, fuzzy #| msgid "" #| "This text will be shown above the questions asked for every admission " @@ -13392,11 +13409,11 @@ msgstr "" "سيتم عرض هذا النص فوق الأسئلة المطروحة لكل منتج مدخل. يمكنك استخدامه على " "سبيل المثال لشرح سبب حاجتك إلى معلومات منهم." -#: pretix/base/settings.py:3406 +#: pretix/base/settings.py:3408 msgid "Additional success message" msgstr "رسالة نجاح إضافية" -#: pretix/base/settings.py:3407 +#: pretix/base/settings.py:3409 msgid "" "This message will be shown after an order has been created successfully. It " "will be shown in additional to the default text." @@ -13404,11 +13421,11 @@ msgstr "" "ستظهر هذه الرسالة بعد إنشاء الطلب بنجاح. سيتم عرضه بالإضافة إلى النص " "الافتراضي." -#: pretix/base/settings.py:3419 +#: pretix/base/settings.py:3421 msgid "Help text of the phone number field" msgstr "نص المساعدة لحقل رقم الهاتف" -#: pretix/base/settings.py:3426 +#: pretix/base/settings.py:3428 msgid "" "Make sure to enter a valid email address. We will send you an order " "confirmation including a link that you need to access your order later." @@ -13416,15 +13433,15 @@ msgstr "" "تأكد من إدخال عنوان بريد إلكتروني صالح. سنرسل إليك تأكيدا لطلبك يتضمن رابطا " "تحتاجه للوصول إلى طلبك لاحقا." -#: pretix/base/settings.py:3433 +#: pretix/base/settings.py:3435 msgid "Help text of the email field" msgstr "نص المساعدة لحقل البريد الإلكتروني" -#: pretix/base/settings.py:3459 +#: pretix/base/settings.py:3461 msgid "Allow creating a new team during event creation" msgstr "السماح بإنشاء فريق جديد أثناء إنشاء الفعالية" -#: pretix/base/settings.py:3460 +#: pretix/base/settings.py:3462 msgid "" "Users that do not have access to all events under this organizer, must " "select one of their teams to have access to the created event. This setting " @@ -13436,36 +13453,36 @@ msgstr "" "الإعداد للمستخدمين بإنشاء فريق محدد للفعاية أثناء التنقل ، حتى عندما لا يكون " "لديهم إذن \"إمكانية تغيير الفرق والتصاريح\"." -#: pretix/base/settings.py:3532 pretix/base/settings.py:3542 +#: pretix/base/settings.py:3534 pretix/base/settings.py:3544 msgid "Event start time (descending)" msgstr "وقت بدء الفعالية (تنازلي)" -#: pretix/base/settings.py:3534 pretix/base/settings.py:3544 +#: pretix/base/settings.py:3536 pretix/base/settings.py:3546 msgid "Name (descending)" msgstr "الاسم (تنازلي)" -#: pretix/base/settings.py:3539 +#: pretix/base/settings.py:3541 msgctxt "subevent" msgid "Date ordering" msgstr "ترتيب التاريخ" -#: pretix/base/settings.py:3555 +#: pretix/base/settings.py:3557 msgid "Link back to organizer overview on all event pages" msgstr "قم بنظرة عامة للمنظم للاطلاع على جميع صفحات الفعالية" -#: pretix/base/settings.py:3564 +#: pretix/base/settings.py:3566 msgid "Homepage text" msgstr "نص الصفحة الرئيسية" -#: pretix/base/settings.py:3566 +#: pretix/base/settings.py:3568 msgid "This will be displayed on the organizer homepage." msgstr "سيتم عرض هذا على الصفحة الرئيسية للمنظم." -#: pretix/base/settings.py:3581 +#: pretix/base/settings.py:3583 msgid "Length of gift card codes" msgstr "طول رموز بطاقات الهدايا" -#: pretix/base/settings.py:3582 +#: pretix/base/settings.py:3584 #, python-brace-format msgid "" "The system generates by default {}-character long gift card codes. However, " @@ -13474,11 +13491,11 @@ msgstr "" "ينشئ النظام افتراضيا رموز بطاقات هدايا طويلة مكونة من {}-حرف. ومع ذلك ، إذا " "تم طلب طول مختلف، فيمكن تعيينه هنا." -#: pretix/base/settings.py:3598 +#: pretix/base/settings.py:3600 msgid "Validity of gift card codes in years" msgstr "صلاحية رموز بطاقات الهدايا بالسنوات" -#: pretix/base/settings.py:3599 +#: pretix/base/settings.py:3601 msgid "" "If you set a number here, gift cards will by default expire at the end of " "the year after this many years. If you keep it empty, gift cards do not have " @@ -13488,23 +13505,23 @@ msgstr "" "العام بعد هذه السنوات العديدة. إذا أبقيت الخانة فارغة ، فلن يكون لبطاقات " "الهدايا تاريخ انتهاء صلاحية صريح." -#: pretix/base/settings.py:3610 +#: pretix/base/settings.py:3612 msgid "Enable cookie consent management features" msgstr "" -#: pretix/base/settings.py:3616 +#: pretix/base/settings.py:3618 msgid "" "By clicking \"Accept all cookies\", you agree to the storing of cookies and " "use of similar technologies on your device." msgstr "" -#: pretix/base/settings.py:3623 +#: pretix/base/settings.py:3625 #, fuzzy #| msgid "Additional text" msgid "Dialog text" msgstr "نص إضافي" -#: pretix/base/settings.py:3630 +#: pretix/base/settings.py:3632 msgid "" "We use cookies and similar technologies to gather data that allows us to " "improve this website and our offerings. If you do not agree, we will only " @@ -13512,49 +13529,49 @@ msgid "" "offers." msgstr "" -#: pretix/base/settings.py:3638 +#: pretix/base/settings.py:3640 msgid "Secondary dialog text" msgstr "" -#: pretix/base/settings.py:3644 +#: pretix/base/settings.py:3646 #, fuzzy #| msgid "Price settings" msgid "Privacy settings" msgstr "ضبط الأسعار" -#: pretix/base/settings.py:3649 +#: pretix/base/settings.py:3651 #, fuzzy #| msgid "Allowed titles" msgid "Dialog title" msgstr "عناوين سمح" -#: pretix/base/settings.py:3655 +#: pretix/base/settings.py:3657 msgid "Accept all cookies" msgstr "" -#: pretix/base/settings.py:3660 +#: pretix/base/settings.py:3662 #, fuzzy #| msgid "Product variation description" msgid "\"Accept\" button description" msgstr "وصف نوع المنتج" -#: pretix/base/settings.py:3666 +#: pretix/base/settings.py:3668 #, fuzzy #| msgid "Required question" msgid "Required cookies only" msgstr "سؤال مطلوب" -#: pretix/base/settings.py:3671 +#: pretix/base/settings.py:3673 #, fuzzy #| msgid "Product variation description" msgid "\"Reject\" button description" msgstr "وصف نوع المنتج" -#: pretix/base/settings.py:3681 +#: pretix/base/settings.py:3683 msgid "Customers can choose their own seats" msgstr "يمكن للعملاء اختيار مقاعدهم الخاصة" -#: pretix/base/settings.py:3682 +#: pretix/base/settings.py:3684 msgid "" "If disabled, you will need to manually assign seats in the backend. Note " "that this can mean people will not know their seat after their purchase and " @@ -13564,164 +13581,164 @@ msgstr "" "لاحظ أن هذا قد يعني أن الأشخاص لن يعرفوا مقعدهم بعد شرائه وقد لا يكون مكتوبا " "على تذكرتهم." -#: pretix/base/settings.py:3708 +#: pretix/base/settings.py:3710 msgid "Show button to copy user input from other products" msgstr "أظهر الزر لنسخ مدخلات المستخدم من المنتجات الأخرى" -#: pretix/base/settings.py:3718 +#: pretix/base/settings.py:3720 msgid "Most common English titles" msgstr "العناوين الإنجليزية الأكثر شيوعا" -#: pretix/base/settings.py:3728 +#: pretix/base/settings.py:3730 msgid "Most common German titles" msgstr "العناوين الألمانية الأكثر شيوعا" -#: pretix/base/settings.py:3741 +#: pretix/base/settings.py:3743 msgctxt "person_name_salutation" msgid "Ms" msgstr "آنسة" -#: pretix/base/settings.py:3742 +#: pretix/base/settings.py:3744 msgctxt "person_name_salutation" msgid "Mr" msgstr "السيد" -#: pretix/base/settings.py:3743 +#: pretix/base/settings.py:3745 msgctxt "person_name_salutation" msgid "Mx" msgstr "السيد\\السيدة" -#: pretix/base/settings.py:3780 pretix/base/settings.py:3796 -#: pretix/base/settings.py:3812 pretix/base/settings.py:3827 -#: pretix/base/settings.py:3845 pretix/base/settings.py:3860 -#: pretix/base/settings.py:3890 pretix/base/settings.py:3914 -#: pretix/base/settings.py:3946 pretix/base/settings.py:3968 -#: pretix/base/settings.py:3999 +#: pretix/base/settings.py:3782 pretix/base/settings.py:3798 +#: pretix/base/settings.py:3814 pretix/base/settings.py:3829 +#: pretix/base/settings.py:3847 pretix/base/settings.py:3862 +#: pretix/base/settings.py:3892 pretix/base/settings.py:3916 +#: pretix/base/settings.py:3948 pretix/base/settings.py:3970 +#: pretix/base/settings.py:4001 msgctxt "person_name_sample" msgid "John" msgstr "جون" -#: pretix/base/settings.py:3781 pretix/base/settings.py:3797 -#: pretix/base/settings.py:3813 pretix/base/settings.py:3829 -#: pretix/base/settings.py:3847 pretix/base/settings.py:3861 -#: pretix/base/settings.py:3891 pretix/base/settings.py:3947 -#: pretix/base/settings.py:3969 pretix/base/settings.py:4000 +#: pretix/base/settings.py:3783 pretix/base/settings.py:3799 +#: pretix/base/settings.py:3815 pretix/base/settings.py:3831 +#: pretix/base/settings.py:3849 pretix/base/settings.py:3863 +#: pretix/base/settings.py:3893 pretix/base/settings.py:3949 +#: pretix/base/settings.py:3971 pretix/base/settings.py:4002 msgctxt "person_name_sample" msgid "Doe" msgstr "دو" -#: pretix/base/settings.py:3787 pretix/base/settings.py:3803 -#: pretix/base/settings.py:3835 pretix/base/settings.py:3954 -#: pretix/base/settings.py:3976 +#: pretix/base/settings.py:3789 pretix/base/settings.py:3805 +#: pretix/base/settings.py:3837 pretix/base/settings.py:3956 +#: pretix/base/settings.py:3978 msgctxt "person_name" msgid "Title" msgstr "عنوان" -#: pretix/base/settings.py:3795 pretix/base/settings.py:3811 -#: pretix/base/settings.py:3844 pretix/base/settings.py:3967 -#: pretix/base/settings.py:3998 +#: pretix/base/settings.py:3797 pretix/base/settings.py:3813 +#: pretix/base/settings.py:3846 pretix/base/settings.py:3969 +#: pretix/base/settings.py:4000 msgctxt "person_name_sample" msgid "Dr" msgstr "الدكتور" -#: pretix/base/settings.py:3819 pretix/base/settings.py:3836 +#: pretix/base/settings.py:3821 pretix/base/settings.py:3838 msgid "First name" msgstr "الاسم الاول" -#: pretix/base/settings.py:3820 pretix/base/settings.py:3837 +#: pretix/base/settings.py:3822 pretix/base/settings.py:3839 msgid "Middle name" msgstr "الاسم الأوسط" -#: pretix/base/settings.py:3901 pretix/base/settings.py:3913 +#: pretix/base/settings.py:3903 pretix/base/settings.py:3915 #: pretix/control/forms/organizer.py:793 msgctxt "person_name_sample" msgid "John Doe" msgstr "جون دو" -#: pretix/base/settings.py:3907 +#: pretix/base/settings.py:3909 msgid "Calling name" msgstr "اسم النداء" -#: pretix/base/settings.py:3921 +#: pretix/base/settings.py:3923 msgid "Latin transcription" msgstr "الإملاء بالحروف اللاتينية" -#: pretix/base/settings.py:3933 pretix/base/settings.py:3953 -#: pretix/base/settings.py:3975 +#: pretix/base/settings.py:3935 pretix/base/settings.py:3955 +#: pretix/base/settings.py:3977 msgctxt "person_name" msgid "Salutation" msgstr "تحية" -#: pretix/base/settings.py:3945 pretix/base/settings.py:3966 -#: pretix/base/settings.py:3997 +#: pretix/base/settings.py:3947 pretix/base/settings.py:3968 +#: pretix/base/settings.py:3999 msgctxt "person_name_sample" msgid "Mr" msgstr "السيد" -#: pretix/base/settings.py:3979 +#: pretix/base/settings.py:3981 msgctxt "person_name" msgid "Degree (after name)" msgstr "الدرجة (بعد الاسم)" -#: pretix/base/settings.py:4001 +#: pretix/base/settings.py:4003 msgctxt "person_name_sample" msgid "MA" msgstr "MA" -#: pretix/base/settings.py:4027 pretix/base/settings.py:4029 +#: pretix/base/settings.py:4029 pretix/base/settings.py:4031 #, fuzzy #| msgid "Product name" msgctxt "address" msgid "Province" msgstr "اسم المنتج" -#: pretix/base/settings.py:4028 +#: pretix/base/settings.py:4030 #, fuzzy #| msgid "Use feature" msgctxt "address" msgid "Prefecture" msgstr "استخدام ميزة" -#: pretix/base/settings.py:4119 pretix/control/forms/event.py:242 +#: pretix/base/settings.py:4121 pretix/control/forms/event.py:242 msgid "" "Your default locale must also be enabled for your event (see box above)." msgstr "يجب أيضا تمكين لغتك الافتراضية للفعالية الخاصة بك (انظر المربع أعلاه)." -#: pretix/base/settings.py:4123 +#: pretix/base/settings.py:4125 msgid "" "You cannot require specifying attendee names if you do not ask for them." msgstr "لا يمكنك طلب تحديد أسماء الحضور إذا لم تطلبها." -#: pretix/base/settings.py:4127 +#: pretix/base/settings.py:4129 msgid "You have to ask for attendee emails if you want to make them required." msgstr "" "عليك أن تطلب رسائل البريد الإلكتروني للحضور إذا كنت ترغب في جعلها إلزامية." -#: pretix/base/settings.py:4131 +#: pretix/base/settings.py:4133 msgid "" "You have to ask for invoice addresses if you want to make them required." msgstr "عليك أن تطلب عناوين الفواتير إذا كنت ترغب في جعلها إلزامية." -#: pretix/base/settings.py:4135 +#: pretix/base/settings.py:4137 msgid "You have to require invoice addresses to require for company names." msgstr "عليك أن تطلب عنوان الفاتورة لطلب أسماء الشركات." -#: pretix/base/settings.py:4157 +#: pretix/base/settings.py:4159 #, python-brace-format msgid "VAT-ID is not supported for \"{}\"." msgstr "" -#: pretix/base/settings.py:4164 +#: pretix/base/settings.py:4166 msgid "The last payment date cannot be before the end of presale." msgstr "لا يمكن أن يكون تاريخ الدفع الأخير قبل نهاية فترة عرض البيع المسبق." -#: pretix/base/settings.py:4172 +#: pretix/base/settings.py:4174 #, fuzzy, python-brace-format #| msgid "Please enter a valid sales channel." msgid "The value \"{identifier}\" is not a valid sales channel." msgstr "الرجاء إدخال قناة بيع صالحة." -#: pretix/base/settings.py:4187 +#: pretix/base/settings.py:4189 msgid "This needs to be disabled if other NFC-based types are active." msgstr "" @@ -14643,11 +14660,11 @@ msgctxt "tax_id_portugal" msgid "VAT ID / NIF" msgstr "رقم تعريف ضريبة القيمة المضافة" -#: pretix/base/views/tasks.py:185 +#: pretix/base/views/tasks.py:189 msgid "An unexpected error has occurred, please try again later." msgstr "حدث خطأ غير متوقع ، يرجى المحاولة مرة أخرى في وقت لاحق." -#: pretix/base/views/tasks.py:188 +#: pretix/base/views/tasks.py:192 msgid "The task has been completed." msgstr "تم إنهاء المهمة." @@ -14853,7 +14870,7 @@ msgid "" msgstr "" #: pretix/control/forms/event.py:387 pretix/control/forms/item.py:1304 -#: pretix/control/forms/subevents.py:411 +#: pretix/control/forms/subevents.py:421 #, python-brace-format msgid "Default ({value})" msgstr "تلقائي ({value})" @@ -15620,12 +15637,12 @@ msgstr "جميع المنتجات" msgid "{product} – Any variation" msgstr "{product} - أي تباين" -#: pretix/control/forms/filter.py:566 pretix/control/forms/orders.py:862 +#: pretix/control/forms/filter.py:566 pretix/control/forms/orders.py:870 msgctxt "subevent" msgid "All dates starting at or after" msgstr "" -#: pretix/control/forms/filter.py:572 pretix/control/forms/orders.py:869 +#: pretix/control/forms/filter.py:572 pretix/control/forms/orders.py:877 msgctxt "subevent" msgid "All dates starting before" msgstr "" @@ -16536,8 +16553,8 @@ msgstr "لقد قمت بإضافة نفس حزمة المنتج مرتين" msgid "Bundled product" msgstr "المنتجات المجمعة" -#: pretix/control/forms/item.py:1246 pretix/control/forms/orders.py:379 -#: pretix/control/forms/orders.py:568 +#: pretix/control/forms/item.py:1246 pretix/control/forms/orders.py:383 +#: pretix/control/forms/orders.py:576 msgid "inactive" msgstr "غير نشط" @@ -16851,11 +16868,17 @@ msgstr "إرسال بريد إلكتروني إلى إخطار العملاء ا msgid "Allow to overbook quotas when performing this operation" msgstr "السماح لحصص حجز إضافي عند تنفيذ هذه العملية" -#: pretix/control/forms/orders.py:340 +#: pretix/control/forms/orders.py:335 +#, fuzzy +#| msgid "Number of orders" +msgid "Number of products to add" +msgstr "عدد الطلبات" + +#: pretix/control/forms/orders.py:344 msgid "Add-on to" msgstr "إضافة إلى" -#: pretix/control/forms/orders.py:345 +#: pretix/control/forms/orders.py:349 #: pretix/control/templates/pretixcontrol/checkin/index.html:104 #: pretix/control/templates/pretixcontrol/order/change.html:127 #: pretix/control/views/vouchers.py:121 @@ -16864,91 +16887,97 @@ msgstr "إضافة إلى" msgid "Seat" msgstr "مقعد" -#: pretix/control/forms/orders.py:348 +#: pretix/control/forms/orders.py:352 #: pretix/control/templates/pretixcontrol/order/change.html:182 #: pretix/control/templates/pretixcontrol/organizers/customer_membership.html:5 #: pretix/control/templates/pretixcontrol/organizers/customer_membership.html:9 #: pretix/control/templates/pretixcontrol/organizers/customer_membership_delete.html:5 #: pretix/control/templates/pretixcontrol/organizers/customer_membership_delete.html:9 -#: pretix/presale/forms/checkout.py:238 +#: pretix/presale/forms/checkout.py:195 msgid "Membership" msgstr "عضويات" -#: pretix/control/forms/orders.py:356 +#: pretix/control/forms/orders.py:360 msgid "Including taxes, if any. Keep empty for the product's default price" msgstr "" "بما في ذلك الضرائب، إن وجدت. تبقي فارغة للحصول على السعر الافتراضي المنتج" -#: pretix/control/forms/orders.py:470 pretix/control/forms/orders.py:474 -#: pretix/control/forms/orders.py:502 pretix/control/forms/orders.py:544 -#: pretix/control/forms/orders.py:563 pretix/control/forms/orders.py:581 -#: pretix/control/forms/orders.py:609 +#: pretix/control/forms/orders.py:441 +#, fuzzy +#| msgid "You can not select the same seat multiple times." +msgid "You can not choose a seat when adding multiple products at once." +msgstr "لا يمكنك اختيار نفس المقعد عدة مرات." + +#: pretix/control/forms/orders.py:478 pretix/control/forms/orders.py:482 +#: pretix/control/forms/orders.py:510 pretix/control/forms/orders.py:552 +#: pretix/control/forms/orders.py:571 pretix/control/forms/orders.py:589 +#: pretix/control/forms/orders.py:617 msgid "(Unchanged)" msgstr "(دون تغيير)" -#: pretix/control/forms/orders.py:480 pretix/control/forms/orders.py:604 +#: pretix/control/forms/orders.py:488 pretix/control/forms/orders.py:612 msgid "New price (gross)" msgstr "السعر الجديد (إجمالي)" -#: pretix/control/forms/orders.py:484 +#: pretix/control/forms/orders.py:492 #, fuzzy #| msgid "Client secret" msgid "Ticket is blocked" msgstr "كلمة سر التذكرة" -#: pretix/control/forms/orders.py:489 +#: pretix/control/forms/orders.py:497 msgid "Validity start" msgstr "" -#: pretix/control/forms/orders.py:494 +#: pretix/control/forms/orders.py:502 #, fuzzy #| msgid "Valid until" msgid "Validity end" msgstr "حتى تاريخ" -#: pretix/control/forms/orders.py:506 +#: pretix/control/forms/orders.py:514 msgid "Generate a new secret" msgstr "توليد سر جديدة" -#: pretix/control/forms/orders.py:507 +#: pretix/control/forms/orders.py:515 msgid "" "This affects both the ticket secret (often used as a QR code) as well as the " "link used to individually access the ticket." msgstr "" -#: pretix/control/forms/orders.py:512 +#: pretix/control/forms/orders.py:520 msgid "Cancel this position" msgstr "إلغاء هذا المنصب" -#: pretix/control/forms/orders.py:516 +#: pretix/control/forms/orders.py:524 msgid "Split into new order" msgstr "تنقسم إلى النظام الجديد" -#: pretix/control/forms/orders.py:582 +#: pretix/control/forms/orders.py:590 msgid "(No membership)" msgstr "(لا توجد عضوية)" -#: pretix/control/forms/orders.py:613 +#: pretix/control/forms/orders.py:621 msgid "Remove this fee" msgstr "" -#: pretix/control/forms/orders.py:631 +#: pretix/control/forms/orders.py:639 msgid "" "Note that payment fees have a special semantic and might automatically be " "changed if the payment method of the order is changed." msgstr "" -#: pretix/control/forms/orders.py:639 +#: pretix/control/forms/orders.py:647 #: pretix/control/templates/pretixcontrol/order/change.html:214 -#: pretix/control/templates/pretixcontrol/order/change.html:438 +#: pretix/control/templates/pretixcontrol/order/change.html:440 msgid "including all taxes" msgstr "بما في ذلك جميع الضرائب" -#: pretix/control/forms/orders.py:677 +#: pretix/control/forms/orders.py:685 msgid "Invalidate secrets" msgstr "أسرار يبطل" -#: pretix/control/forms/orders.py:678 +#: pretix/control/forms/orders.py:686 msgid "" "Regenerates the order and ticket secrets. You will need to re-send the link " "to the order page to the user and the user will need to download his tickets " @@ -16958,81 +16987,81 @@ msgstr "" "للمستخدم وسوف يحتاج المستخدم إلى تحميل تذاكر له مرة أخرى. سوف الإصدارات " "القديمة تكون غير صالحة." -#: pretix/control/forms/orders.py:734 pretix/plugins/sendmail/forms.py:196 +#: pretix/control/forms/orders.py:742 pretix/plugins/sendmail/forms.py:196 #, fuzzy #| msgid "Attach ticket files" msgid "Attach tickets" msgstr "إرفق ملفات التذكرة" -#: pretix/control/forms/orders.py:735 pretix/plugins/sendmail/forms.py:197 +#: pretix/control/forms/orders.py:743 pretix/plugins/sendmail/forms.py:197 msgid "" "Will be ignored if tickets exceed a given size limit to ensure email " "deliverability." msgstr "" -#: pretix/control/forms/orders.py:742 +#: pretix/control/forms/orders.py:750 #, fuzzy #| msgid "Attach invoices to emails" msgid "Attach invoices" msgstr "إرفق الفواتير في رسائل البريد الإلكتروني" -#: pretix/control/forms/orders.py:763 +#: pretix/control/forms/orders.py:771 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_inspect.html:20 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_list.html:30 msgid "Recipient" msgstr "مستلم" -#: pretix/control/forms/orders.py:778 +#: pretix/control/forms/orders.py:786 #, fuzzy, python-brace-format #| msgid "Attach ticket files" msgid "Attach {file}" msgstr "إرفق ملفات التذكرة" -#: pretix/control/forms/orders.py:806 +#: pretix/control/forms/orders.py:814 msgid "" "Cancel the order. All tickets will no longer work. This can not be reverted." msgstr "الغي الطلب. وجميع التذاكر لم تعد تعمل. هذا لا يمكن عاد." -#: pretix/control/forms/orders.py:807 +#: pretix/control/forms/orders.py:815 msgid "" "Mark the order as pending and allow the user to pay the open amount with " "another payment method." msgstr "" "نحتفل النظام كما المعلقة وتسمح للمستخدم لدفع المبلغ مفتوح مع طريقة دفع أخرى." -#: pretix/control/forms/orders.py:809 +#: pretix/control/forms/orders.py:817 msgid "Do nothing and keep the order as it is." msgstr "لا تفعل شيئا والحفاظ على النظام كما هو عليه." -#: pretix/control/forms/orders.py:836 +#: pretix/control/forms/orders.py:844 #, python-brace-format msgid "The refund amount needs to be positive and less than {}." msgstr "احتياجات المبلغ المسترد لتكون إيجابية وأقل من {}." -#: pretix/control/forms/orders.py:842 +#: pretix/control/forms/orders.py:850 msgid "You need to specify an amount for a partial refund." msgstr "تحتاج إلى تحديد مبلغ للحصول على رد جزئي." -#: pretix/control/forms/orders.py:854 +#: pretix/control/forms/orders.py:862 msgid "Cancel all dates" msgstr "إلغاء جميع التواريخ" -#: pretix/control/forms/orders.py:873 +#: pretix/control/forms/orders.py:881 msgid "Automatically refund money if possible" msgstr "استرد المبلغ تلقائيا إن أمكن الأمر" -#: pretix/control/forms/orders.py:876 +#: pretix/control/forms/orders.py:884 msgid "" "Only available for payment method that support automatic refunds. Tickets " "that have been blocked (manually or by a plugin) are not auto-canceled and " "you will need to deal with them manually." msgstr "" -#: pretix/control/forms/orders.py:880 +#: pretix/control/forms/orders.py:888 msgid "Create refund in the manual refund to-do list" msgstr "" -#: pretix/control/forms/orders.py:883 +#: pretix/control/forms/orders.py:891 msgid "" "Manual refunds will be created which will be listed in the manual refund to-" "do list. When combined with the automatic refund functionally, only payments " @@ -17041,29 +17070,29 @@ msgid "" "orders by offsetting with different orders or issuing gift cards." msgstr "" -#: pretix/control/forms/orders.py:889 +#: pretix/control/forms/orders.py:897 msgid "" "Refund order value to a gift card instead instead of the original payment " "method" msgstr "" -#: pretix/control/forms/orders.py:895 +#: pretix/control/forms/orders.py:903 msgid "Gift card validity" msgstr "صلاحية بطاقة هدية" -#: pretix/control/forms/orders.py:914 +#: pretix/control/forms/orders.py:922 msgid "Keep a fixed cancellation fee per ticket" msgstr "الحفاظ على رسوم إلغاء الثابتة للتذكرة" -#: pretix/control/forms/orders.py:915 +#: pretix/control/forms/orders.py:923 msgid "Free tickets and add-on products are not counted" msgstr "لا يتم احتساب التذاكر المجانية والمنتجات المضافة" -#: pretix/control/forms/orders.py:925 +#: pretix/control/forms/orders.py:933 msgid "Keep fees" msgstr "احتفظ بالرسوم" -#: pretix/control/forms/orders.py:928 +#: pretix/control/forms/orders.py:936 msgid "" "The selected types of fees will not be refunded but instead added to the " "cancellation fee. Fees are never refunded in when an order in an event " @@ -17071,20 +17100,20 @@ msgid "" "dates." msgstr "" -#: pretix/control/forms/orders.py:934 +#: pretix/control/forms/orders.py:942 msgid "Send information via email" msgstr "أرسل المعلومات إلى البريد الإلكتروني" -#: pretix/control/forms/orders.py:940 +#: pretix/control/forms/orders.py:948 msgid "Send information to waiting list" msgstr "أرسم المعلومات إلى قائمة الإنتظار" -#: pretix/control/forms/orders.py:955 pretix/control/forms/orders.py:981 +#: pretix/control/forms/orders.py:963 pretix/control/forms/orders.py:989 #, python-brace-format msgid "Canceled: {event}" msgstr "ملغية: {event}" -#: pretix/control/forms/orders.py:966 +#: pretix/control/forms/orders.py:974 #, python-brace-format msgid "" "Hello,\n" @@ -17115,7 +17144,7 @@ msgstr "" "\n" "فريق {event}" -#: pretix/control/forms/orders.py:993 +#: pretix/control/forms/orders.py:1001 #, python-brace-format msgid "" "Hello,\n" @@ -17138,37 +17167,37 @@ msgstr "" "\n" "فريق الفعالية {event}" -#: pretix/control/forms/orders.py:1025 pretix/plugins/sendmail/forms.py:115 +#: pretix/control/forms/orders.py:1033 pretix/plugins/sendmail/forms.py:115 #: pretix/plugins/sendmail/forms.py:208 msgctxt "subevent" msgid "Please either select a specific date or a date range, not both." msgstr "الرجاء اختيار يوم محدد أو تواريخ تقريبية وليس الإثنان معا." -#: pretix/control/forms/orders.py:1027 +#: pretix/control/forms/orders.py:1035 msgctxt "subevent" msgid "Please either select all dates or a date range, not both." msgstr "الرجاء اختيار كافة الأيام أو تاريخ تقريبي وليس الإثنان معا." -#: pretix/control/forms/orders.py:1029 pretix/plugins/sendmail/forms.py:117 +#: pretix/control/forms/orders.py:1037 pretix/plugins/sendmail/forms.py:117 #: pretix/plugins/sendmail/forms.py:210 msgctxt "subevent" msgid "If you set a date range, please set both a start and an end." msgstr "" -#: pretix/control/forms/orders.py:1031 +#: pretix/control/forms/orders.py:1039 msgid "Please confirm that you want to cancel ALL dates in this event series." msgstr "" -#: pretix/control/forms/orders.py:1037 +#: pretix/control/forms/orders.py:1045 msgid "I understand that this is not reversible and want to continue" msgstr "" -#: pretix/control/forms/orders.py:1042 +#: pretix/control/forms/orders.py:1050 msgid "" "We have just emailed you a confirmation code to enter to confirm this action" msgstr "" -#: pretix/control/forms/orders.py:1055 +#: pretix/control/forms/orders.py:1063 #, fuzzy #| msgid "The confirm code you entered was incorrect." msgid "The confirmation code is incorrect." @@ -17275,7 +17304,7 @@ msgstr "هناك حساب مرتبط بهذا البريد الإلكتروني #: pretix/control/forms/organizer.py:1076 #: pretix/control/templates/pretixcontrol/organizers/customer.html:62 -#: pretix/presale/forms/customer.py:169 pretix/presale/forms/customer.py:506 +#: pretix/presale/forms/customer.py:169 pretix/presale/forms/customer.py:507 msgid "Phone" msgstr "" @@ -17482,27 +17511,41 @@ msgstr "يوم" msgid "Weekend day" msgstr "يوم عطلة نهاية الأسبوع" -#: pretix/control/forms/subevents.py:118 +#: pretix/control/forms/subevents.py:106 +msgctxt "subevent" +msgid "Skip dates that overlap with any existing date" +msgstr "" + +#: pretix/control/forms/subevents.py:109 +msgctxt "subevent" +msgid "" +"This can be useful if all your dates happen in the same location and no " +"repeated dates should be created in conflict with existing special events. " +"This respects even inactive dates and works best if all dates have both a " +"start and end time." +msgstr "" + +#: pretix/control/forms/subevents.py:128 msgid "Keep the current values" msgstr "احتفظ بالقيمة الحالية" -#: pretix/control/forms/subevents.py:135 pretix/control/forms/subevents.py:141 +#: pretix/control/forms/subevents.py:145 pretix/control/forms/subevents.py:151 msgid "Selection contains various values" msgstr "" -#: pretix/control/forms/subevents.py:288 pretix/control/forms/subevents.py:317 +#: pretix/control/forms/subevents.py:298 pretix/control/forms/subevents.py:327 #, fuzzy #| msgid "The end of the event has to be later than its start." msgid "The end of availability should be after the start of availability." msgstr "نهاية الفعالية يجب أن تكون في وقت لاحق بعد بدايتها." -#: pretix/control/forms/subevents.py:350 +#: pretix/control/forms/subevents.py:360 #, fuzzy #| msgid "Available until" msgid "Available_until" msgstr "متاحة حتى" -#: pretix/control/forms/subevents.py:470 +#: pretix/control/forms/subevents.py:480 msgid "Exclude these dates instead of adding them." msgstr "استبعاد هذه التواريخ بدلا من إضافتها." @@ -17992,7 +18035,7 @@ msgstr "أكد المستخدم الرسالة التالية: \"{}\"" msgid "The order has been canceled (comment: \"{comment}\")." msgstr "تم رفض الطلب." -#: pretix/control/logdisplay.py:422 pretix/control/views/orders.py:1569 +#: pretix/control/logdisplay.py:422 pretix/control/views/orders.py:1556 #: pretix/presale/views/order.py:1138 msgid "The order has been canceled." msgstr "تم إلغاء هذا الأمر." @@ -18084,11 +18127,11 @@ msgstr "تم وضع علامة على الترتيب كما المدفوعة." msgid "The order has been set to require payment before use." msgstr "تم إرسال كود الخصم إلى {recipient}." -#: pretix/control/logdisplay.py:511 pretix/control/views/orders.py:1574 +#: pretix/control/logdisplay.py:511 pretix/control/views/orders.py:1561 msgid "The order has been marked as expired." msgstr "تم وضع علامة على النظام ومنتهية الصلاحية." -#: pretix/control/logdisplay.py:512 pretix/control/views/orders.py:1476 +#: pretix/control/logdisplay.py:512 pretix/control/views/orders.py:1463 msgid "The order has been marked as paid." msgstr "تم وضع علامة على الترتيب كما المدفوعة." @@ -18100,7 +18143,7 @@ msgstr "تم حذف طلب الإلغاء." msgid "The order has been refunded." msgstr "وقد تم ترتيب ردها." -#: pretix/control/logdisplay.py:515 pretix/control/views/orders.py:1914 +#: pretix/control/logdisplay.py:515 pretix/control/views/orders.py:1901 msgid "The order has been reactivated." msgstr "تم إعادة تنشيط الطلب." @@ -18112,7 +18155,7 @@ msgstr "تم إنشاء هذا الأمر." msgid "The order requires approval before it can continue to be processed." msgstr "الأمر يتطلب موافقة قبل أن تتمكن من الاستمرار في معالجتها." -#: pretix/control/logdisplay.py:519 pretix/control/views/orders.py:796 +#: pretix/control/logdisplay.py:519 pretix/control/views/orders.py:783 msgid "The order has been approved." msgstr "تمت الموافقة على النظام." @@ -18155,7 +18198,7 @@ msgstr "تم تغيير حساب العميل." msgid "The order locale has been changed." msgstr "تم تغيير لغة النظام." -#: pretix/control/logdisplay.py:531 pretix/control/views/orders.py:1613 +#: pretix/control/logdisplay.py:531 pretix/control/views/orders.py:1600 #: pretix/presale/views/order.py:797 pretix/presale/views/order.py:877 msgid "The invoice has been generated." msgstr "تم إنشاء الفاتورة." @@ -18166,11 +18209,11 @@ msgstr "تم إنشاء الفاتورة." msgid "The invoice could not be generated." msgstr "تم إنشاء الفاتورة." -#: pretix/control/logdisplay.py:533 pretix/control/views/orders.py:1694 +#: pretix/control/logdisplay.py:533 pretix/control/views/orders.py:1681 msgid "The invoice has been regenerated." msgstr "تم إعادة إنشاء الفاتورة." -#: pretix/control/logdisplay.py:534 pretix/control/views/orders.py:1751 +#: pretix/control/logdisplay.py:534 pretix/control/views/orders.py:1738 #: pretix/presale/views/order.py:897 msgid "The invoice has been reissued." msgstr "تم إعادة إصدار الفاتورة." @@ -18962,7 +19005,7 @@ msgid "The plugin has been enabled." msgstr "تم تمكين البرنامج المساعد." #: pretix/control/logdisplay.py:818 pretix/control/logdisplay.py:877 -#: pretix/control/views/event.py:489 pretix/control/views/organizer.py:756 +#: pretix/control/views/event.py:497 pretix/control/views/organizer.py:756 #, fuzzy #| msgid "A plugin has been disabled." msgid "The plugin has been disabled." @@ -19339,9 +19382,9 @@ msgstr "جنرال لواء" msgid "Payment" msgstr "دفع" -#: pretix/control/navigation.py:78 pretix/control/views/event.py:1650 -#: pretix/control/views/event.py:1652 pretix/control/views/event.py:1684 -#: pretix/control/views/event.py:1689 pretix/control/views/subevents.py:310 +#: pretix/control/navigation.py:78 pretix/control/views/event.py:1653 +#: pretix/control/views/event.py:1655 pretix/control/views/event.py:1687 +#: pretix/control/views/event.py:1692 pretix/control/views/subevents.py:310 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:60 #: pretix/plugins/ticketoutputpdf/apps.py:55 #: pretix/plugins/ticketoutputpdf/exporters.py:68 @@ -19750,7 +19793,7 @@ msgstr "كلمة المرور الجديدة تعيين" #: pretix/control/templates/pretixcontrol/organizers/team_edit.html:47 #: pretix/control/templates/pretixcontrol/organizers/webhook_edit.html:21 #: pretix/control/templates/pretixcontrol/pdf/index.html:46 -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:632 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:634 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:368 #: pretix/control/templates/pretixcontrol/subevents/detail.html:289 #: pretix/control/templates/pretixcontrol/user/notifications.html:85 @@ -20122,7 +20165,7 @@ msgstr[5] "" #: pretix/control/templates/pretixcontrol/oauth/app_delete.html:12 #: pretix/control/templates/pretixcontrol/oauth/app_rollkeys.html:12 #: pretix/control/templates/pretixcontrol/oauth/auth_revoke.html:12 -#: pretix/control/templates/pretixcontrol/order/change.html:543 +#: pretix/control/templates/pretixcontrol/order/change.html:545 #: pretix/control/templates/pretixcontrol/order/change_contact.html:25 #: pretix/control/templates/pretixcontrol/order/change_locale.html:30 #: pretix/control/templates/pretixcontrol/order/change_questions.html:84 @@ -21971,10 +22014,10 @@ msgstr "" #: pretix/control/templates/pretixcontrol/event/plugins.html:15 #: pretix/control/templates/pretixcontrol/organizers/plugins.html:15 #: pretix/control/views/checkin.py:425 pretix/control/views/discounts.py:113 -#: pretix/control/views/event.py:246 pretix/control/views/event.py:575 -#: pretix/control/views/event.py:614 pretix/control/views/event.py:816 -#: pretix/control/views/event.py:1057 pretix/control/views/event.py:1420 -#: pretix/control/views/event.py:1460 +#: pretix/control/views/event.py:254 pretix/control/views/event.py:583 +#: pretix/control/views/event.py:622 pretix/control/views/event.py:819 +#: pretix/control/views/event.py:1060 pretix/control/views/event.py:1423 +#: pretix/control/views/event.py:1463 #: pretix/control/views/global_settings.py:65 #: pretix/control/views/global_settings.py:88 pretix/control/views/item.py:266 #: pretix/control/views/item.py:779 pretix/control/views/item.py:1105 @@ -21998,7 +22041,7 @@ msgstr "" #: pretix/control/views/organizer.py:3444 #: pretix/control/views/organizer.py:3473 #: pretix/control/views/organizer.py:3611 pretix/control/views/subevents.py:542 -#: pretix/control/views/subevents.py:1617 pretix/control/views/user.py:241 +#: pretix/control/views/subevents.py:1665 pretix/control/views/user.py:241 #: pretix/control/views/user.py:857 pretix/control/views/users.py:113 #: pretix/control/views/vouchers.py:306 pretix/plugins/autocheckin/views.py:164 #: pretix/plugins/badges/views.py:158 pretix/plugins/sendmail/views.py:645 @@ -22219,7 +22262,7 @@ msgstr "مبادئ" #: pretix/control/templates/pretixcontrol/item/include_variations.html:97 #: pretix/control/templates/pretixcontrol/item/include_variations.html:202 #: pretix/control/templates/pretixcontrol/item/index.html:127 -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:392 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:394 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:77 #: pretix/control/templates/pretixcontrol/subevents/detail.html:35 msgid "Meta data" @@ -22302,7 +22345,7 @@ msgstr "تصميم متجر" #: pretix/control/templates/pretixcontrol/event/settings.html:232 #: pretix/control/templates/pretixcontrol/events/create_basics.html:59 -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:411 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:413 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:96 #: pretix/control/templates/pretixcontrol/subevents/detail.html:54 msgid "Timeline" @@ -22721,7 +22764,7 @@ msgstr "إنشاء منظم جديد" #: pretix/control/templates/pretixcontrol/items/quota_edit.html:21 #: pretix/control/templates/pretixcontrol/organizers/create.html:11 #: pretix/control/templates/pretixcontrol/organizers/team_edit.html:20 -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:384 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:386 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:31 #: pretix/control/templates/pretixcontrol/subevents/detail.html:23 msgid "General information" @@ -23519,7 +23562,7 @@ msgid "" msgstr "" #: pretix/control/templates/pretixcontrol/item/index.html:254 -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:619 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:621 #: pretix/control/templates/pretixcontrol/subevents/detail.html:262 msgid "Additional settings" msgstr "إعدادات إضافية" @@ -24422,7 +24465,7 @@ msgid "" msgstr "" #: pretix/control/templates/pretixcontrol/order/change.html:101 -#: pretix/control/templates/pretixcontrol/order/change.html:413 +#: pretix/control/templates/pretixcontrol/order/change.html:415 msgid "Change to" msgstr "تغيير" @@ -24504,32 +24547,32 @@ msgid "" msgstr "سوف إزالة هذا الموقف أيضا إزالة كافة الوظائف الإضافية لهذا المنصب." #: pretix/control/templates/pretixcontrol/order/change.html:317 -#: pretix/control/templates/pretixcontrol/order/change.html:358 -#: pretix/control/templates/pretixcontrol/order/change.html:386 +#: pretix/control/templates/pretixcontrol/order/change.html:359 +#: pretix/control/templates/pretixcontrol/order/change.html:388 msgid "Add product" msgstr "أضف منتج" -#: pretix/control/templates/pretixcontrol/order/change.html:446 +#: pretix/control/templates/pretixcontrol/order/change.html:448 msgid "" "Manually modifying payment fees is discouraged since they might " "automatically be updated on subsequent order changes or when choosing a " "different payment method." msgstr "" -#: pretix/control/templates/pretixcontrol/order/change.html:466 -#: pretix/control/templates/pretixcontrol/order/change.html:493 -#: pretix/control/templates/pretixcontrol/order/change.html:513 +#: pretix/control/templates/pretixcontrol/order/change.html:468 +#: pretix/control/templates/pretixcontrol/order/change.html:495 +#: pretix/control/templates/pretixcontrol/order/change.html:515 #, fuzzy #| msgid "Additional fee" msgid "Add fee" msgstr "رسوم إضافية" -#: pretix/control/templates/pretixcontrol/order/change.html:520 +#: pretix/control/templates/pretixcontrol/order/change.html:522 #: pretix/control/templates/pretixcontrol/order/change_questions.html:66 msgid "Other operations" msgstr "عمليات أخرى" -#: pretix/control/templates/pretixcontrol/order/change.html:546 +#: pretix/control/templates/pretixcontrol/order/change.html:548 #: pretix/presale/templates/pretixpresale/event/order_change_confirm.html:30 #: pretix/presale/templates/pretixpresale/event/position_change_confirm.html:30 msgid "Perform changes" @@ -28076,27 +28119,27 @@ msgstr "إضافة نوع تذكرة جديدة" msgid "Add many time slots" msgstr "إضافة نوع تذكرة جديدة" -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:481 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:483 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:266 #: pretix/control/templates/pretixcontrol/subevents/detail.html:124 msgid "Add a new quota" msgstr "إضافة حصة جديدة" -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:485 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:487 #: pretix/control/templates/pretixcontrol/subevents/detail.html:128 #, fuzzy #| msgid "Price settings" msgid "Product settings" msgstr "ضبط الأسعار" -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:487 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:489 #: pretix/control/templates/pretixcontrol/subevents/detail.html:130 msgid "" "These settings are optional, if you leave them empty, the default values " "from the product settings will be used." msgstr "" -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:523 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:525 #: pretix/control/templates/pretixcontrol/subevents/detail.html:166 msgid "" "You can choose to either add one or more check-in lists for every date in " @@ -28109,7 +28152,7 @@ msgid "" "will be easier." msgstr "" -#: pretix/control/templates/pretixcontrol/subevents/bulk.html:602 +#: pretix/control/templates/pretixcontrol/subevents/bulk.html:604 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:359 #: pretix/control/templates/pretixcontrol/subevents/detail.html:245 msgid "Add a new check-in list" @@ -29407,18 +29450,18 @@ msgstr "تم إنشاء الاختيار في قائمة جديدة." #: pretix/control/views/checkin.py:382 pretix/control/views/checkin.py:442 #: pretix/control/views/discounts.py:134 pretix/control/views/discounts.py:182 -#: pretix/control/views/event.py:275 pretix/control/views/event.py:578 -#: pretix/control/views/event.py:617 pretix/control/views/event.py:819 -#: pretix/control/views/event.py:1023 pretix/control/views/event.py:1373 -#: pretix/control/views/event.py:1439 pretix/control/views/event.py:1591 +#: pretix/control/views/event.py:283 pretix/control/views/event.py:586 +#: pretix/control/views/event.py:625 pretix/control/views/event.py:822 +#: pretix/control/views/event.py:1026 pretix/control/views/event.py:1376 +#: pretix/control/views/event.py:1442 pretix/control/views/event.py:1594 #: pretix/control/views/item.py:282 pretix/control/views/item.py:329 #: pretix/control/views/item.py:789 pretix/control/views/item.py:815 #: pretix/control/views/item.py:935 pretix/control/views/item.py:1139 -#: pretix/control/views/item.py:1305 pretix/control/views/item.py:1501 +#: pretix/control/views/item.py:1305 pretix/control/views/item.py:1497 #: pretix/control/views/organizer.py:281 pretix/control/views/organizer.py:309 #: pretix/control/views/organizer.py:1454 pretix/control/views/subevents.py:521 -#: pretix/control/views/subevents.py:647 pretix/control/views/subevents.py:1063 -#: pretix/control/views/subevents.py:1525 pretix/control/views/user.py:342 +#: pretix/control/views/subevents.py:666 pretix/control/views/subevents.py:1111 +#: pretix/control/views/subevents.py:1573 pretix/control/views/user.py:342 #: pretix/control/views/user.py:861 pretix/control/views/user.py:901 #: pretix/control/views/vouchers.py:278 pretix/control/views/vouchers.py:352 #: pretix/control/views/vouchers.py:535 pretix/control/views/waitinglist.py:427 @@ -29632,7 +29675,7 @@ msgstr "بعض معرفات السؤال المقدمة غير صالحة." msgid "Not all discounts have been selected." msgstr "تم حذف السؤال." -#: pretix/control/views/event.py:455 +#: pretix/control/views/event.py:463 #, fuzzy #| msgid "You do not have permission to perform this action." msgid "" @@ -29640,55 +29683,55 @@ msgid "" "enabled for the entire organizer account." msgstr "ليس لديك إذن لتنفيذ هذا الإجراء." -#: pretix/control/views/event.py:472 pretix/control/views/organizer.py:716 +#: pretix/control/views/event.py:480 pretix/control/views/organizer.py:716 #, python-brace-format msgid "The plugin {} is now active, you can configure it here:" msgstr "" -#: pretix/control/views/event.py:481 pretix/control/views/organizer.py:725 +#: pretix/control/views/event.py:489 pretix/control/views/organizer.py:725 #, fuzzy, python-brace-format #| msgid "The selected ticket shop is currently not available." msgid "The plugin {} is now active." msgstr "متجر التذاكر المختار غير متوفر حاليا." -#: pretix/control/views/event.py:546 +#: pretix/control/views/event.py:554 msgid "" "This payment provider does not exist or the respective plugin is disabled." msgstr "عدم وجود هذا مزود خدمة الدفع أو تعطيل البرنامج المساعد المعني." -#: pretix/control/views/event.py:858 pretix/control/views/organizer.py:362 +#: pretix/control/views/event.py:861 pretix/control/views/organizer.py:362 #: pretix/control/views/vouchers.py:562 msgid "invalid item" msgstr "البند غير صالح" -#: pretix/control/views/event.py:945 +#: pretix/control/views/event.py:948 #, fuzzy, python-format #| msgid "Your order: {code}" msgid "Your order: %(code)s" msgstr "طلبك هو: {code}" -#: pretix/control/views/event.py:954 +#: pretix/control/views/event.py:957 msgid "Unknown email renderer." msgstr "غير معروف العارض البريد الإلكتروني." -#: pretix/control/views/event.py:970 pretix/control/views/orders.py:684 +#: pretix/control/views/event.py:973 pretix/control/views/orders.py:684 #: pretix/presale/views/order.py:1177 pretix/presale/views/order.py:1184 msgid "You requested an invalid ticket output type." msgstr "لقد طلبت صالح نوع الانتاج التذاكر." -#: pretix/control/views/event.py:1118 +#: pretix/control/views/event.py:1121 msgid "Your shop is live now!" msgstr "متجرك مباشرة الآن!" -#: pretix/control/views/event.py:1126 +#: pretix/control/views/event.py:1129 msgid "We've taken your shop down. You can re-enable it whenever you want!" msgstr "لقد اتخذنا متجر أسفل الخاص بك. يمكنك إعادة تمكينها وقتما تشاء!" -#: pretix/control/views/event.py:1134 +#: pretix/control/views/event.py:1137 msgid "Your shop is now in test mode!" msgstr "متجر الخاص بك هو الآن في وضع الاختبار!" -#: pretix/control/views/event.py:1151 +#: pretix/control/views/event.py:1154 msgid "" "An order could not be deleted as some constraints (e.g. data created by plug-" "ins) do not allow it." @@ -29696,19 +29739,19 @@ msgstr "" "لا يمكن حذف أمر وبعض القيود (مثل البيانات التي تم إنشاؤها من قبل المكونات " "الإضافية) لا تسمح بذلك." -#: pretix/control/views/event.py:1157 +#: pretix/control/views/event.py:1160 msgid "We've disabled test mode for you. Let's sell some real tickets!" msgstr "لقد تعطيل وضع الاختبار بالنسبة لك. دعونا بيع بعض التذاكر الحقيقية!" -#: pretix/control/views/event.py:1179 +#: pretix/control/views/event.py:1182 msgid "This event can not be deleted." msgstr "لا يمكن حذف هذا الحدث." -#: pretix/control/views/event.py:1202 +#: pretix/control/views/event.py:1205 msgid "The event has been deleted." msgstr "الحدث تم الغائه." -#: pretix/control/views/event.py:1205 +#: pretix/control/views/event.py:1208 msgid "" "The event could not be deleted as some constraints (e.g. data created by " "plug-ins) do not allow it." @@ -29716,47 +29759,47 @@ msgstr "" "لا يمكن حذف الحدث عن بعض القيود (مثل البيانات التي تم إنشاؤها من قبل " "المكونات الإضافية) لا تسمح بذلك." -#: pretix/control/views/event.py:1221 +#: pretix/control/views/event.py:1224 #, python-brace-format msgid "" "Specifically, the following plugins still contain data depends on this " "event: {plugin_names}" msgstr "" -#: pretix/control/views/event.py:1301 pretix/control/views/orders.py:777 +#: pretix/control/views/event.py:1304 pretix/control/views/orders.py:764 msgid "The comment has been updated." msgstr "تم تحديث التعليق." -#: pretix/control/views/event.py:1303 pretix/control/views/orders.py:779 +#: pretix/control/views/event.py:1306 pretix/control/views/orders.py:766 msgid "Could not update the comment." msgstr "لا يمكن تحديث للتعليق." -#: pretix/control/views/event.py:1331 pretix/control/views/main.py:362 +#: pretix/control/views/event.py:1334 pretix/control/views/main.py:362 msgid "VAT" msgstr "ضريبة" -#: pretix/control/views/event.py:1367 +#: pretix/control/views/event.py:1370 msgid "The new tax rule has been created." msgstr "تم إنشاء القاعدة الضريبية الجديدة." -#: pretix/control/views/event.py:1390 pretix/control/views/event.py:1453 -#: pretix/control/views/event.py:1499 +#: pretix/control/views/event.py:1393 pretix/control/views/event.py:1456 +#: pretix/control/views/event.py:1502 msgid "The requested tax rule does not exist." msgstr "عدم وجود حكم الضرائب المطلوبة." -#: pretix/control/views/event.py:1508 +#: pretix/control/views/event.py:1511 msgid "The selected tax rule has been deleted." msgstr "تم حذف قاعدة الضريبة المحدد." -#: pretix/control/views/event.py:1510 +#: pretix/control/views/event.py:1513 msgid "The selected tax rule can not be deleted." msgstr "لا يمكن حذف القاعدة الضريبية المحدد." -#: pretix/control/views/event.py:1561 +#: pretix/control/views/event.py:1564 msgid "Your event is not empty, you need to set it up manually." msgstr "لم يتم تفريغ هذا الحدث الخاص بك، تحتاج إلى إعداده يدويا." -#: pretix/control/views/event.py:1696 +#: pretix/control/views/event.py:1699 msgid "" "Your changes have been saved. You can now go on with looking at the details " "or take your event live to start selling!" @@ -29764,11 +29807,11 @@ msgstr "" "تم حفظ التغييرات. يمكنك الذهاب الآن فصاعدا مع النظر في التفاصيل أو يأخذ " "الحدث على الهواء مباشرة لبدء بيع!" -#: pretix/control/views/event.py:1717 +#: pretix/control/views/event.py:1720 msgid "Regular ticket" msgstr "تذكرة العادية" -#: pretix/control/views/event.py:1722 +#: pretix/control/views/event.py:1725 msgid "Reduced ticket" msgstr "تذكرة مخفضة" @@ -29848,7 +29891,7 @@ msgid "" "plugin \"{plugin}\" with license \"{license}\"." msgstr "" -#: pretix/control/views/item.py:141 pretix/control/views/item.py:1606 +#: pretix/control/views/item.py:141 pretix/control/views/item.py:1602 msgid "The requested product does not exist." msgstr "المنتج المطلوب غير موجود." @@ -29960,7 +30003,7 @@ msgid "" "itself." msgstr "لا يمكنك إضافة حزم إلى المنتجات التي لا تتوفر إلا كإضافة على نفسها." -#: pretix/control/views/item.py:1517 +#: pretix/control/views/item.py:1513 msgid "" "You disabled this item, but it is still part of a product bundle. Your " "participants won't be able to buy the bundle unless you remove this item " @@ -29969,7 +30012,7 @@ msgstr "" "قمت بتعطيل هذا البند، لكنه لا يزال جزءا من حزمة المنتج. سيقوم المشاركون " "الخاصة بك لن تكون قادرة على شراء حزمة إلا إذا قمت بإزالة هذا البند من ذلك." -#: pretix/control/views/item.py:1626 +#: pretix/control/views/item.py:1622 #, fuzzy #| msgid "" #| "The order could not be deleted as some constraints (e.g. data created by " @@ -29982,11 +30025,11 @@ msgstr "" "لا يمكن حذف النظام كما بعض القيود (مثل البيانات التي تم إنشاؤها من قبل " "المكونات الإضافية) لا تسمح بذلك." -#: pretix/control/views/item.py:1630 +#: pretix/control/views/item.py:1626 msgid "The selected product has been deleted." msgstr "تم حذف المنتج المحدد." -#: pretix/control/views/item.py:1639 +#: pretix/control/views/item.py:1635 msgid "The selected product has been deactivated." msgstr "تم إلغاء تنشيط المنتج المحدد." @@ -30140,7 +30183,7 @@ msgstr "" #: pretix/control/views/orders.py:686 pretix/presale/views/order.py:114 #: pretix/presale/views/order.py:382 pretix/presale/views/order.py:1006 -#: pretix/presale/views/order.py:1186 pretix/presale/views/order.py:1797 +#: pretix/presale/views/order.py:1186 pretix/presale/views/order.py:1794 msgid "Unknown order code or not authorized to access this order." msgstr "كود أجل غير معروف أو غير مخول للوصول إلى هذا النظام." @@ -30148,11 +30191,11 @@ msgstr "كود أجل غير معروف أو غير مخول للوصول إلى msgid "Ticket download is not enabled for this product." msgstr "لم يتم تمكين حمل تذكرة لهذا المنتج." -#: pretix/control/views/orders.py:813 +#: pretix/control/views/orders.py:800 msgid "The order has been deleted." msgstr "تم حذف هذا الأمر." -#: pretix/control/views/orders.py:820 +#: pretix/control/views/orders.py:807 msgid "" "The order could not be deleted as some constraints (e.g. data created by " "plug-ins) do not allow it." @@ -30160,55 +30203,55 @@ msgstr "" "لا يمكن حذف النظام كما بعض القيود (مثل البيانات التي تم إنشاؤها من قبل " "المكونات الإضافية) لا تسمح بذلك." -#: pretix/control/views/orders.py:828 +#: pretix/control/views/orders.py:815 msgid "Only orders created in test mode can be deleted." msgstr "أوامر الوحيدة التي تم إنشاؤها في وضع الاختبار يمكن حذفها." -#: pretix/control/views/orders.py:849 +#: pretix/control/views/orders.py:836 msgid "The order has been denied and is therefore now canceled." msgstr "تم رفض الطلب، وبالتالي يتم إلغاء الآن." -#: pretix/control/views/orders.py:889 +#: pretix/control/views/orders.py:876 msgid "This payment has been canceled." msgstr "تم إلغاء هذا الدفع." -#: pretix/control/views/orders.py:891 +#: pretix/control/views/orders.py:878 msgid "This payment can not be canceled at the moment." msgstr "لا يمكن إلغاء هذه الدفعة في الوقت الراهن." -#: pretix/control/views/orders.py:917 +#: pretix/control/views/orders.py:904 msgid "The refund has been canceled." msgstr "تم إلغاء استرداد." -#: pretix/control/views/orders.py:919 +#: pretix/control/views/orders.py:906 msgid "This refund can not be canceled at the moment." msgstr "لا يمكن إلغاء هذا رد في الوقت الراهن." -#: pretix/control/views/orders.py:953 +#: pretix/control/views/orders.py:940 msgid "The refund has been processed." msgstr "تم معالجة استرداد." -#: pretix/control/views/orders.py:955 pretix/control/views/orders.py:981 +#: pretix/control/views/orders.py:942 pretix/control/views/orders.py:968 msgid "This refund can not be processed at the moment." msgstr "لا يمكن معالجة هذا رد في الوقت الراهن." -#: pretix/control/views/orders.py:979 +#: pretix/control/views/orders.py:966 msgid "The refund has been marked as done." msgstr "تم وضع علامة على المبلغ في القيام به." -#: pretix/control/views/orders.py:1005 +#: pretix/control/views/orders.py:992 #, fuzzy #| msgid "The device has been verified and can now be used." msgid "The request has been removed. If you want, you can now inform the user." msgstr "تم التحقق من الجهاز ويمكن الآن أن تستخدم." -#: pretix/control/views/orders.py:1012 +#: pretix/control/views/orders.py:999 #, fuzzy #| msgid "Cancellation fee" msgid "Your cancellation request" msgstr "رسوم الإلغاء" -#: pretix/control/views/orders.py:1013 +#: pretix/control/views/orders.py:1000 #, python-brace-format msgid "" "Hello,\n" @@ -30224,41 +30267,41 @@ msgstr "" "\n" "فريق فعاليتك{event}" -#: pretix/control/views/orders.py:1068 +#: pretix/control/views/orders.py:1055 msgid "The payment has been marked as complete." msgstr "تم وضع علامة الدفع على النحو الكامل." -#: pretix/control/views/orders.py:1070 +#: pretix/control/views/orders.py:1057 msgid "This payment can not be confirmed at the moment." msgstr "لا يمكن تأكيد هذه الدفعة في الوقت الراهن." -#: pretix/control/views/orders.py:1161 +#: pretix/control/views/orders.py:1148 msgid "" "The refund was prevented due to a refund already being processed at the same " "time. Please have a look at the order details and check if your refund is " "still necessary." msgstr "" -#: pretix/control/views/orders.py:1266 +#: pretix/control/views/orders.py:1253 #, fuzzy #| msgid "You entered an order that could not be found." msgid "You entered an order in an event with a different currency." msgstr "لقد أدخلت طلبا لا يمكن العثور عليه." -#: pretix/control/views/orders.py:1317 +#: pretix/control/views/orders.py:1304 msgid "" "You can not refund more than the amount of a payment that is not yet " "refunded." msgstr "لا يمكنك استرداد أكثر من مبلغ الدفعة التي لم يتم ردها حتى الان." -#: pretix/control/views/orders.py:1322 +#: pretix/control/views/orders.py:1309 msgid "" "You selected a partial refund for a payment method that only supports full " "refunds." msgstr "" "لقد حددت استرداد جزئي لطريقة الدفع التي تدعم فقط المبالغ المستردة كامل." -#: pretix/control/views/orders.py:1352 +#: pretix/control/views/orders.py:1339 #, python-brace-format msgid "" "One of the refunds failed to be processed. You should retry to refund in a " @@ -30267,12 +30310,12 @@ msgstr "" "فشل في معالجتها واحدة من المبالغ المستردة. يجب عليك إعادة المحاولة لاسترداد " "بطريقة مختلفة. وكانت رسالة الخطأ: {}" -#: pretix/control/views/orders.py:1358 +#: pretix/control/views/orders.py:1345 #, python-brace-format msgid "A refund of {} has been processed." msgstr "وقد تم تجهيز واسترداد {}." -#: pretix/control/views/orders.py:1362 +#: pretix/control/views/orders.py:1349 #, python-brace-format msgid "" "A refund of {} has been saved, but not yet fully executed. You can mark it " @@ -30281,16 +30324,16 @@ msgstr "" "تم حفظ استرداد {}، ولكن لم يتم تنفيذها بالكامل. يمكنك وضع علامة على أنها " "كاملة أدناه." -#: pretix/control/views/orders.py:1391 +#: pretix/control/views/orders.py:1378 msgid "" "A new gift card was created. You can now send the user their gift card code." msgstr "" -#: pretix/control/views/orders.py:1399 +#: pretix/control/views/orders.py:1386 msgid "Your gift card code" msgstr "" -#: pretix/control/views/orders.py:1401 +#: pretix/control/views/orders.py:1388 #, python-brace-format msgid "" "Hello,\n" @@ -30303,15 +30346,15 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/control/views/orders.py:1412 +#: pretix/control/views/orders.py:1399 msgid "The refunds you selected do not match the selected total refund amount." msgstr "المبالغ المستردة التي حددتها لا تتطابق إجمالي استرداد المبلغ المحدد." -#: pretix/control/views/orders.py:1542 +#: pretix/control/views/orders.py:1529 msgid "The payment has been created successfully." msgstr "تم إنشاء دفع بنجاح." -#: pretix/control/views/orders.py:1556 +#: pretix/control/views/orders.py:1543 msgid "" "The order has been canceled. You can now select how you want to transfer the " "money back to the user." @@ -30319,22 +30362,22 @@ msgstr "" "تم إلغاء هذا الأمر. يمكنك الآن تحديد كيف تريد لنقل الجزء الخلفي المال " "للمستخدم." -#: pretix/control/views/orders.py:1627 pretix/control/views/orders.py:1631 +#: pretix/control/views/orders.py:1614 pretix/control/views/orders.py:1618 msgid "No VAT ID specified." msgstr "يتم تحديد معرف ضريبة القيمة المضافة." -#: pretix/control/views/orders.py:1635 +#: pretix/control/views/orders.py:1622 msgid "No country specified." msgstr "تحديد أي بلد." -#: pretix/control/views/orders.py:1639 +#: pretix/control/views/orders.py:1626 #, fuzzy #| msgid "" #| "VAT ID could not be checked since a non-EU country has been specified." msgid "VAT ID could not be checked since this country is not supported." msgstr "ولم يتسن التحقق VAT ID منذ تم تحديد بلد خارج الاتحاد الأوروبي." -#: pretix/control/views/orders.py:1658 +#: pretix/control/views/orders.py:1645 msgid "" "The VAT ID could not be checked, as the VAT checking service of the country " "is currently not available." @@ -30342,74 +30385,74 @@ msgstr "" "ولم يتسن التحقق من هوية ضريبة القيمة المضافة، مثل خدمة فحص ضريبة القيمة " "المضافة من البلاد غير متوفرة حاليا." -#: pretix/control/views/orders.py:1661 +#: pretix/control/views/orders.py:1648 msgid "This VAT ID is valid." msgstr "هذا ID VAT صالح." -#: pretix/control/views/orders.py:1675 pretix/control/views/orders.py:1709 -#: pretix/control/views/orders.py:1741 +#: pretix/control/views/orders.py:1662 pretix/control/views/orders.py:1696 +#: pretix/control/views/orders.py:1728 msgid "Unknown invoice." msgstr "فاتورة غير معروفة." -#: pretix/control/views/orders.py:1678 +#: pretix/control/views/orders.py:1665 msgid "Invoices may not be changed after they are created." msgstr "" -#: pretix/control/views/orders.py:1680 +#: pretix/control/views/orders.py:1667 msgid "Invoices may not be changed after they are transmitted." msgstr "" -#: pretix/control/views/orders.py:1682 pretix/control/views/orders.py:1744 +#: pretix/control/views/orders.py:1669 pretix/control/views/orders.py:1731 msgid "The invoice has already been canceled." msgstr "وقد تم بالفعل إلغاء الفاتورة." -#: pretix/control/views/orders.py:1684 +#: pretix/control/views/orders.py:1671 #, fuzzy #| msgid "The invoice has already been canceled." msgid "The invoice file has already been exported." msgstr "وقد تم بالفعل إلغاء الفاتورة." -#: pretix/control/views/orders.py:1686 +#: pretix/control/views/orders.py:1673 #, fuzzy #| msgid "The invoice has been regenerated." msgid "The invoice file is too old to be regenerated." msgstr "تم إعادة إنشاء الفاتورة." -#: pretix/control/views/orders.py:1688 pretix/control/views/orders.py:1746 +#: pretix/control/views/orders.py:1675 pretix/control/views/orders.py:1733 msgid "The invoice has been cleaned of personal data." msgstr "وقد تم تنظيف الفاتورة البيانات الشخصية." -#: pretix/control/views/orders.py:1713 +#: pretix/control/views/orders.py:1700 msgid "" "The invoice is currently being transmitted. You can start a new attempt " "after the current one has been completed." msgstr "" -#: pretix/control/views/orders.py:1720 +#: pretix/control/views/orders.py:1707 #, fuzzy #| msgid "The invoice has been cleaned of personal data." msgid "The invoice has been scheduled for retransmission." msgstr "وقد تم تنظيف الفاتورة البيانات الشخصية." -#: pretix/control/views/orders.py:1754 +#: pretix/control/views/orders.py:1741 #, fuzzy #| msgid "The invoice has already been canceled." msgid "The invoice has been canceled." msgstr "وقد تم بالفعل إلغاء الفاتورة." -#: pretix/control/views/orders.py:1793 +#: pretix/control/views/orders.py:1780 msgid "The email has been queued to be sent." msgstr "وقد تم في قائمة الانتظار البريد الإلكتروني لإرسالها." -#: pretix/control/views/orders.py:1817 pretix/presale/views/order.py:1369 +#: pretix/control/views/orders.py:1804 pretix/presale/views/order.py:1365 msgid "This invoice has not been found" msgstr "لم يتم العثور على هذه الفاتورة" -#: pretix/control/views/orders.py:1824 pretix/presale/views/order.py:1376 +#: pretix/control/views/orders.py:1811 pretix/presale/views/order.py:1372 msgid "The invoice file is no longer stored on the server." msgstr "لم يعد تخزين الملف فاتورة على الخادم." -#: pretix/control/views/orders.py:1829 pretix/presale/views/order.py:1381 +#: pretix/control/views/orders.py:1816 pretix/presale/views/order.py:1377 msgid "" "The invoice file has not yet been generated, we will generate it for you " "now. Please try again in a few seconds." @@ -30417,85 +30460,85 @@ msgstr "" "لم يتم إنشاء ملف الفاتورة، وسوف تولد لانها لكم الآن. يرجى المحاولة مرة أخرى " "في بضع ثوان." -#: pretix/control/views/orders.py:1857 +#: pretix/control/views/orders.py:1844 msgid "The payment term has been changed." msgstr "تم تغيير مصطلح الدفع." -#: pretix/control/views/orders.py:1862 pretix/control/views/orders.py:1919 +#: pretix/control/views/orders.py:1849 pretix/control/views/orders.py:1906 msgid "" "We were not able to process the request completely as the server was too " "busy." msgstr "لم نكن قادرين على معالجة الطلب تماما كما كان الملقم مشغول جدا." -#: pretix/control/views/orders.py:1870 +#: pretix/control/views/orders.py:1857 msgid "This action is only allowed for pending orders." msgstr "يسمح هذا الإجراء فقط لانتظار أوامر." -#: pretix/control/views/orders.py:1925 +#: pretix/control/views/orders.py:1912 #, fuzzy #| msgid "This action is only allowed for pending orders." msgid "This action is only allowed for canceled orders." msgstr "يسمح هذا الإجراء فقط لانتظار أوامر." -#: pretix/control/views/orders.py:2183 pretix/presale/views/order.py:1664 +#: pretix/control/views/orders.py:2171 pretix/presale/views/order.py:1661 msgid "An error occurred. Please see the details below." msgstr "حدث خطأ. يرجى الاطلاع على التفاصيل أدناه." -#: pretix/control/views/orders.py:2191 +#: pretix/control/views/orders.py:2179 msgid "The order has been changed and the user has been notified." msgstr "تم تغيير النظام وتم إعلام المستخدم." -#: pretix/control/views/orders.py:2193 pretix/control/views/orders.py:2329 -#: pretix/control/views/orders.py:2366 pretix/presale/views/order.py:1700 +#: pretix/control/views/orders.py:2181 pretix/control/views/orders.py:2317 +#: pretix/control/views/orders.py:2354 pretix/presale/views/order.py:1697 msgid "The order has been changed." msgstr "تم تغيير النظام." -#: pretix/control/views/orders.py:2220 pretix/presale/checkoutflow.py:943 +#: pretix/control/views/orders.py:2208 pretix/presale/checkoutflow.py:943 #: pretix/presale/views/order.py:845 pretix/presale/views/order.py:981 msgid "" "We had difficulties processing your input. Please review the errors below." msgstr "كان لدينا صعوبات معالجة المدخلات الخاصة بك. يرجى مراجعة الأخطاء أدناه." -#: pretix/control/views/orders.py:2331 +#: pretix/control/views/orders.py:2319 msgid "Nothing about the order had to be changed." msgstr "كان شيئا عن هذا الأمر يجب أن يتغير." -#: pretix/control/views/orders.py:2412 pretix/plugins/sendmail/views.py:176 +#: pretix/control/views/orders.py:2400 pretix/plugins/sendmail/views.py:176 msgid "We could not send the email. See below for details." msgstr "لم نتمكن من إرسال البريد الإلكتروني. انظر أدناه للحصول على التفاصيل." -#: pretix/control/views/orders.py:2428 pretix/control/views/orders.py:2492 +#: pretix/control/views/orders.py:2416 pretix/control/views/orders.py:2480 #: pretix/plugins/sendmail/views.py:204 pretix/plugins/sendmail/views.py:671 #, python-brace-format msgid "Subject: {subject}" msgstr "الموضوع: {subject}" -#: pretix/control/views/orders.py:2446 pretix/control/views/orders.py:2511 +#: pretix/control/views/orders.py:2434 pretix/control/views/orders.py:2499 #, python-brace-format msgid "Your message has been queued and will be sent to {}." msgstr "وقد اصطف رسالتك وسوف يتم ارسالهم الى {}." -#: pretix/control/views/orders.py:2564 pretix/presale/views/order.py:1151 +#: pretix/control/views/orders.py:2552 pretix/presale/views/order.py:1151 msgid "" "This link is no longer valid. Please go back, refresh the page, and try " "again." msgstr "هذا الرابط لم يعد صالحا. يرجى العودة، بتحديث الصفحة وحاول مرة أخرى." -#: pretix/control/views/orders.py:2645 +#: pretix/control/views/orders.py:2633 msgid "There is no order with the given order code." msgstr "لا يوجد أي ترتيب مع رمز ترتيب معين." -#: pretix/control/views/orders.py:2754 pretix/control/views/organizer.py:2088 +#: pretix/control/views/orders.py:2742 pretix/control/views/organizer.py:2088 msgid "The selected exporter was not found." msgstr "لم يتم العثور على مصدر المحدد." -#: pretix/control/views/orders.py:2764 pretix/control/views/organizer.py:2098 +#: pretix/control/views/orders.py:2752 pretix/control/views/organizer.py:2098 msgid "There was a problem processing your input. See below for error details." msgstr "" "كانت هناك مشكلة معالجة المدخلات الخاصة بك. انظر أدناه للحصول على تفاصيل " "الخطأ." -#: pretix/control/views/orders.py:2801 pretix/control/views/organizer.py:2134 +#: pretix/control/views/orders.py:2789 pretix/control/views/organizer.py:2134 #, fuzzy #| msgid "You do not have permission to perform this action." msgid "" @@ -30503,7 +30546,7 @@ msgid "" "therefore you cannot change it." msgstr "ليس لديك إذن لتنفيذ هذا الإجراء." -#: pretix/control/views/orders.py:2810 pretix/control/views/organizer.py:2143 +#: pretix/control/views/orders.py:2798 pretix/control/views/organizer.py:2143 #, fuzzy #| msgid "You do not have permission to perform this action." msgid "" @@ -30511,24 +30554,24 @@ msgid "" "therefore you cannot schedule it." msgstr "ليس لديك إذن لتنفيذ هذا الإجراء." -#: pretix/control/views/orders.py:2826 pretix/control/views/organizer.py:2159 +#: pretix/control/views/orders.py:2814 pretix/control/views/organizer.py:2159 #, python-brace-format msgid "" "Your export schedule has been saved. The next export will start around " "{datetime}." msgstr "" -#: pretix/control/views/orders.py:2831 pretix/control/views/organizer.py:2164 +#: pretix/control/views/orders.py:2819 pretix/control/views/organizer.py:2164 msgid "Your export schedule has been saved, but no next export is planned." msgstr "" -#: pretix/control/views/orders.py:2876 pretix/control/views/organizer.py:2210 +#: pretix/control/views/orders.py:2864 pretix/control/views/organizer.py:2210 #, fuzzy, python-brace-format #| msgid "Export date" msgid "Export: {title}" msgstr "تاريخ التصدير" -#: pretix/control/views/orders.py:2877 pretix/control/views/organizer.py:2212 +#: pretix/control/views/orders.py:2865 pretix/control/views/organizer.py:2212 #, python-brace-format msgid "" "Hello,\n" @@ -30536,27 +30579,27 @@ msgid "" "attached to this email, you can find a new scheduled report for {name}." msgstr "" -#: pretix/control/views/orders.py:2983 pretix/control/views/organizer.py:2346 +#: pretix/control/views/orders.py:2971 pretix/control/views/organizer.py:2346 msgid "" "Your export is queued to start soon. The results will be send via email. " "Depending on system load and type and size of export, this may take a few " "minutes." msgstr "" -#: pretix/control/views/orders.py:3070 pretix/control/views/orders.py:3151 +#: pretix/control/views/orders.py:3058 pretix/control/views/orders.py:3139 #, fuzzy #| msgid "The order has been canceled." msgid "All orders have been canceled." msgstr "تم إلغاء هذا الأمر." -#: pretix/control/views/orders.py:3072 pretix/control/views/orders.py:3153 +#: pretix/control/views/orders.py:3060 pretix/control/views/orders.py:3141 #, python-brace-format msgid "" "The orders have been canceled. An error occurred with {count} orders, please " "check all uncanceled orders." msgstr "" -#: pretix/control/views/orders.py:3100 pretix/control/views/orders.py:3174 +#: pretix/control/views/orders.py:3088 pretix/control/views/orders.py:3162 #, fuzzy #| msgid "Your input was invalid, please try again." msgid "Your input was not valid." @@ -30959,17 +31002,17 @@ msgctxt "subevent" msgid "The selected date has been deleted." msgstr "تم حذف التاريخ المحدد." -#: pretix/control/views/subevents.py:619 +#: pretix/control/views/subevents.py:630 msgctxt "subevent" msgid "The new date has been created." msgstr "تم إنشاء الموعد الجديد." -#: pretix/control/views/subevents.py:688 +#: pretix/control/views/subevents.py:707 msgctxt "subevent" msgid "The selected dates have been disabled." msgstr "تم تعطيل التواريخ المحددة." -#: pretix/control/views/subevents.py:701 +#: pretix/control/views/subevents.py:720 #, fuzzy #| msgctxt "subevent" #| msgid "The selected dates have been disabled." @@ -30977,16 +31020,20 @@ msgctxt "subevent" msgid "The selected dates have been enabled." msgstr "تم تعطيل التواريخ المحددة." -#: pretix/control/views/subevents.py:730 +#: pretix/control/views/subevents.py:749 msgctxt "subevent" msgid "The selected dates have been deleted or disabled." msgstr "تم حذف المواعيد المحددة أو تعطيل." -#: pretix/control/views/subevents.py:918 +#: pretix/control/views/subevents.py:937 msgid "Please do not create more than 100.000 dates at once." msgstr "" -#: pretix/control/views/subevents.py:1054 +#: pretix/control/views/subevents.py:966 +msgid "All dates would be skipped because they conflict with existing dates." +msgstr "" + +#: pretix/control/views/subevents.py:1102 #, python-brace-format msgctxt "subevent" msgid "{} new dates have been created." @@ -35570,7 +35617,7 @@ msgstr "المنتجات الإضافية" #: pretix/presale/checkoutflow.py:676 pretix/presale/checkoutflow.py:684 #: pretix/presale/views/cart.py:195 pretix/presale/views/cart.py:200 #: pretix/presale/views/cart.py:218 pretix/presale/views/cart.py:231 -#: pretix/presale/views/order.py:1585 pretix/presale/views/order.py:1593 +#: pretix/presale/views/order.py:1582 pretix/presale/views/order.py:1590 msgid "Please enter numbers only." msgstr "الرجاء إدخال أرقام فقط." @@ -35656,49 +35703,49 @@ msgstr "مراجعة الطلب" msgid "You need to check all checkboxes on the bottom of the page." msgstr "تحتاج إلى تحديد جميع مربعات الاختيار أسفل الصفحة." -#: pretix/presale/forms/checkout.py:70 +#: pretix/presale/forms/checkout.py:67 msgid "Email address (repeated)" msgstr "عنوان البريد الإلكتروني (مكرر)" -#: pretix/presale/forms/checkout.py:71 +#: pretix/presale/forms/checkout.py:68 msgid "" "Please enter the same email address again to make sure you typed it " "correctly." msgstr "" "يرجى إدخال نفس عنوان البريد الإلكتروني مرة أخرى للتأكد من كتابته بشكل صحيح." -#: pretix/presale/forms/checkout.py:110 +#: pretix/presale/forms/checkout.py:107 msgid "Please enter the same email address twice." msgstr "الرجاء إدخال نفس عنوان البريد الإلكتروني مرتين." -#: pretix/presale/forms/checkout.py:125 +#: pretix/presale/forms/checkout.py:122 #, fuzzy #| msgid "Street address" msgid "Save to address" msgstr "عنوان الشارع" -#: pretix/presale/forms/checkout.py:126 +#: pretix/presale/forms/checkout.py:123 #, fuzzy #| msgctxt "subevent" #| msgid "Create a new date" msgid "Create new address" msgstr "إنشاء موعد جديد" -#: pretix/presale/forms/checkout.py:129 +#: pretix/presale/forms/checkout.py:126 msgid "Save address in my customer account for future purchases" msgstr "" -#: pretix/presale/forms/checkout.py:159 +#: pretix/presale/forms/checkout.py:156 msgid "Save answers to my customer profiles for future purchases" msgstr "" -#: pretix/presale/forms/checkout.py:166 +#: pretix/presale/forms/checkout.py:163 #, fuzzy #| msgid "View user profile" msgid "Save to profile" msgstr "عرض ملف تعريف المستخدم" -#: pretix/presale/forms/checkout.py:167 +#: pretix/presale/forms/checkout.py:164 #, fuzzy #| msgid "Create new export file" msgid "Create new profile" @@ -35789,19 +35836,19 @@ msgstr "" msgid "Please enter the correct result." msgstr "الرجاء إدخال اسم أقصر." -#: pretix/presale/forms/customer.py:346 +#: pretix/presale/forms/customer.py:347 msgid "For security reasons, please wait 10 minutes before you try again." msgstr "لأسباب أمنية ، يرجى الانتظار لمدة 10 دقائق قبل المحاولة مرة أخرى." -#: pretix/presale/forms/customer.py:347 +#: pretix/presale/forms/customer.py:348 msgid "A user with this email address is not known in our system." msgstr "المستخدم بعنوان البريد الإلكتروني هذا غير معروف في نظامنا." -#: pretix/presale/forms/customer.py:476 +#: pretix/presale/forms/customer.py:477 msgid "Only required if you change your email address" msgstr "مطلوب فقط إذا قمت بتغيير عنوان بريدك الإلكتروني" -#: pretix/presale/forms/customer.py:514 +#: pretix/presale/forms/customer.py:515 #, python-brace-format msgid "" "To change your email address, change it in your {provider} account and then " @@ -37346,14 +37393,14 @@ msgid "Choose date to book a ticket" msgstr "اختر تاريخا لحجز تذكرة" #: pretix/presale/templates/pretixpresale/event/index.html:155 -#: pretix/presale/views/waiting.py:141 pretix/presale/views/widget.py:806 +#: pretix/presale/views/waiting.py:146 pretix/presale/views/widget.py:804 #, fuzzy #| msgid "The presale period for this event is over." msgid "The booking period for this event is over." msgstr "انتهت فترة العرض ما قبل البيع لهذه الفعالية." #: pretix/presale/templates/pretixpresale/event/index.html:163 -#: pretix/presale/views/widget.py:808 +#: pretix/presale/views/widget.py:806 #, fuzzy, python-format #| msgid "The presale for this event will start on %(date)s at %(time)s." msgid "The booking period for this event will start on %(date)s at %(time)s." @@ -38679,7 +38726,7 @@ msgstr "لم يتم تمكين هذه الميزة." msgid "The selected organizer was not found." msgstr "لم يتم العثور على المنظم المحدد." -#: pretix/presale/views/__init__.py:298 +#: pretix/presale/views/__init__.py:316 #, python-brace-format msgid "" "Your selected payment method can only be used for a payment of at least " @@ -38690,52 +38737,52 @@ msgstr "" msgid "Please enter positive numbers only." msgstr "الرجاء إدخال أرقام موجبة فقط." -#: pretix/presale/views/cart.py:441 +#: pretix/presale/views/cart.py:443 msgid "We applied the voucher to as many products in your cart as we could." msgstr "" "طبقنا كود الخصم على أكبر عدد ممكن من المنتجات في عربة التسوق الخاصة بك." -#: pretix/presale/views/cart.py:476 pretix/presale/views/cart.py:484 +#: pretix/presale/views/cart.py:478 pretix/presale/views/cart.py:486 msgid "" "The gift card has been saved to your cart. Please continue your checkout." msgstr "" -#: pretix/presale/views/cart.py:520 +#: pretix/presale/views/cart.py:522 msgid "Your cart has been updated." msgstr "تم تحديث عربة التسوق الخاصة بك." -#: pretix/presale/views/cart.py:523 pretix/presale/views/cart.py:549 +#: pretix/presale/views/cart.py:525 pretix/presale/views/cart.py:551 msgid "Your cart is now empty." msgstr "عربة التسوق الخاصة بك فارغة الآن." -#: pretix/presale/views/cart.py:570 +#: pretix/presale/views/cart.py:584 msgid "" "Your cart timeout was extended. Please note that some of the prices in your " "cart changed." msgstr "" -#: pretix/presale/views/cart.py:573 +#: pretix/presale/views/cart.py:587 #, fuzzy #| msgid "Your cart has been updated." msgid "Your cart timeout was extended." msgstr "تم تحديث عربة التسوق الخاصة بك." -#: pretix/presale/views/cart.py:588 +#: pretix/presale/views/cart.py:602 msgid "The products have been successfully added to your cart." msgstr "تمت إضافة المنتجات بنجاح إلى سلة التسوق الخاصة بك." -#: pretix/presale/views/cart.py:612 pretix/presale/views/event.py:543 +#: pretix/presale/views/cart.py:626 pretix/presale/views/event.py:543 #: pretix/presale/views/widget.py:399 msgid "Tickets for this event cannot be purchased on this sales channel." msgstr "لا يمكن شراء تذاكر هذه الفعالية من قناة المبيعات هذه." -#: pretix/presale/views/cart.py:767 +#: pretix/presale/views/cart.py:781 msgid "" "The gift card has been saved to your cart. Please now select the products " "you want to purchase." msgstr "" -#: pretix/presale/views/cart.py:795 +#: pretix/presale/views/cart.py:809 #, fuzzy #| msgid "We were unable to find the user you requested a new password for." msgctxt "subevent" @@ -38804,44 +38851,44 @@ msgid "" "used for a different account in this system." msgstr "" -#: pretix/presale/views/event.py:921 +#: pretix/presale/views/event.py:919 msgid "Unknown event code or not authorized to access this event." msgstr "رمز فعالية غير معروف أو غير مخول للوصول إلى هذه الفعالية." -#: pretix/presale/views/event.py:928 +#: pretix/presale/views/event.py:926 msgctxt "subevent" msgid "No date selected." msgstr "لم يتم تحديد تاريخ." -#: pretix/presale/views/event.py:931 +#: pretix/presale/views/event.py:929 msgctxt "subevent" msgid "Unknown date selected." msgstr "تم تحديد تاريخ غير معروف." -#: pretix/presale/views/event.py:956 pretix/presale/views/event.py:964 -#: pretix/presale/views/event.py:967 +#: pretix/presale/views/event.py:954 pretix/presale/views/event.py:962 +#: pretix/presale/views/event.py:965 msgid "Please go back and try again." msgstr "الرجاء العودة والمحاولة مجددا." -#: pretix/presale/views/event.py:980 +#: pretix/presale/views/event.py:978 #, fuzzy #| msgid "Purchased" msgid "Fake date time" msgstr "اشترى" -#: pretix/presale/views/event.py:992 +#: pretix/presale/views/event.py:990 #, fuzzy #| msgid "You do not have access to this page." msgid "You are not allowed to access time machine mode." msgstr "ليس لديك صلاحية الوصول إلى هذه الصفحة." -#: pretix/presale/views/event.py:994 +#: pretix/presale/views/event.py:992 #, fuzzy #| msgid "This gift card can only be used in test mode." msgid "This feature is only available in test mode." msgstr "لا يمكن استخدام بطاقة الهدايا هذه إلا في وضع الاختبار." -#: pretix/presale/views/event.py:1011 +#: pretix/presale/views/event.py:1009 #, fuzzy #| msgid "This account is disabled." msgid "Time machine disabled!" @@ -38900,7 +38947,7 @@ msgstr "" "الرجاء الضغط على الرابط الذي أرسلناه لك عبر البريد الإلكتروني لتنزيل التذاكر " "الخاصة بك." -#: pretix/presale/views/order.py:1692 +#: pretix/presale/views/order.py:1689 #, python-brace-format msgid "" "The order has been changed. You can now proceed by paying the open amount of " @@ -38908,44 +38955,44 @@ msgid "" msgstr "" "تم تغيير الطلب. يمكنك الآن المضي قدما بدفع المبلغ المفتوح وقدره{amount}." -#: pretix/presale/views/order.py:1704 +#: pretix/presale/views/order.py:1701 #, fuzzy #| msgid "Your search did not match any vouchers." msgid "You did not make any changes." msgstr "بحثك لم تطابق اي القسائم." -#: pretix/presale/views/order.py:1729 +#: pretix/presale/views/order.py:1726 msgid "You may not change your order in a way that reduces the total price." msgstr "" -#: pretix/presale/views/order.py:1731 +#: pretix/presale/views/order.py:1728 msgid "You may only change your order in a way that increases the total price." msgstr "" -#: pretix/presale/views/order.py:1733 +#: pretix/presale/views/order.py:1730 msgid "You may not change your order in a way that changes the total price." msgstr "" -#: pretix/presale/views/order.py:1735 +#: pretix/presale/views/order.py:1732 #, fuzzy #| msgid "You can cancel this order, but you will not receive a refund." msgid "You may not change your order in a way that would require a refund." msgstr "يمكنك إلغاء هذا الطلب ، لكنك لن تسترد المبلغ." -#: pretix/presale/views/order.py:1743 +#: pretix/presale/views/order.py:1740 msgid "" "You may not change your order in a way that increases the total price since " "payments are no longer being accepted for this event." msgstr "" -#: pretix/presale/views/order.py:1749 +#: pretix/presale/views/order.py:1746 msgid "" "You may not change your order in a way that requires additional payment " "while we are processing your current payment. Please check back after your " "current payment has been accepted." msgstr "" -#: pretix/presale/views/order.py:1768 pretix/presale/views/order.py:1799 +#: pretix/presale/views/order.py:1765 pretix/presale/views/order.py:1796 msgid "You cannot change this order." msgstr "لا يمكنك تغيير هذا الطلب." @@ -38974,23 +39021,23 @@ msgstr "" "إذا كانت هناك أي طلبات من قبل هذا المستخدم ، فسيتلقى بريدا إلكترونيا برموز " "الطلبات الخاصة به." -#: pretix/presale/views/waiting.py:127 +#: pretix/presale/views/waiting.py:132 msgid "" "No ticket types are available for the waiting list, have a look at the " "ticket shop instead." msgstr "" -#: pretix/presale/views/waiting.py:137 pretix/presale/views/waiting.py:161 +#: pretix/presale/views/waiting.py:142 pretix/presale/views/waiting.py:166 msgid "Waiting lists are disabled for this event." msgstr "قوائم الانتظار معطلة لهذه الفعالية." -#: pretix/presale/views/waiting.py:173 +#: pretix/presale/views/waiting.py:178 msgid "" "You cannot add yourself to the waiting list as this product is currently " "available." msgstr "لا يمكن أن تضيف نفسك إلى قائمة الانتظار حيث أن هذا المنتج متاح حاليا." -#: pretix/presale/views/waiting.py:180 +#: pretix/presale/views/waiting.py:185 #, python-brace-format msgid "" "We've added you to the waiting list. We will send an email to {email} as " @@ -38999,17 +39046,17 @@ msgstr "" "لقد أضفناك إلى قائمة الانتظار. ستتلقى رسالة بريد إلكتروني على مستوى {email} " "بمجرد توفر التذاكر مرة أخرى." -#: pretix/presale/views/waiting.py:208 +#: pretix/presale/views/waiting.py:213 msgid "We could not find you on our waiting list." msgstr "لم نستطع العثور عليك في قائمة الإنتظار الخاصة بنا." -#: pretix/presale/views/waiting.py:212 +#: pretix/presale/views/waiting.py:217 msgid "" "Your waiting list spot is no longer valid or already used. There's nothing " "more to do here." msgstr "" -#: pretix/presale/views/waiting.py:222 +#: pretix/presale/views/waiting.py:227 msgid "" "Thank you very much! We will assign your spot on the waiting list to someone " "else." @@ -39038,19 +39085,19 @@ msgstr "هذه ليست سلسلة فعالية." msgid "from %(start_date)s" msgstr "من %(start_date)s" -#: pretix/settings.py:844 +#: pretix/settings.py:862 msgid "User profile only" msgstr "ملف تعريف المستخدم فقط" -#: pretix/settings.py:845 +#: pretix/settings.py:863 msgid "Read access" msgstr "الوصول إلى القراءة" -#: pretix/settings.py:846 +#: pretix/settings.py:864 msgid "Write access" msgstr "الوصول إلى الكتابة" -#: pretix/settings.py:857 +#: pretix/settings.py:875 msgid "Kosovo" msgstr "كوسوفو" diff --git a/src/pretix/locale/ar/LC_MESSAGES/djangojs.po b/src/pretix/locale/ar/LC_MESSAGES/djangojs.po index b18dbf388..c5cbdaca4 100644 --- a/src/pretix/locale/ar/LC_MESSAGES/djangojs.po +++ b/src/pretix/locale/ar/LC_MESSAGES/djangojs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-17 14:06+0000\n" +"POT-Creation-Date: 2026-04-28 09:04+0000\n" "PO-Revision-Date: 2021-09-15 11:22+0000\n" "Last-Translator: Mohamed Tawfiq \n" "Language-Team: Arabic \n" "Language-Team: Azerbaijani
-
+
{% for var in item.available_variations %}
Date: Tue, 28 Apr 2026 15:35:27 +0200 Subject: [PATCH 104/107] Thumbnails: Perform color space transform before resizing (Z#23232101) (#6120) --- src/pretix/helpers/thumb.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/pretix/helpers/thumb.py b/src/pretix/helpers/thumb.py index bf37f78e7..9134550db 100644 --- a/src/pretix/helpers/thumb.py +++ b/src/pretix/helpers/thumb.py @@ -173,6 +173,7 @@ def create_thumbnail(source, size, formats=None): # filesystem path, this only works because _open() uses safe_join, which accepts absolute paths if they match the # expected base dir. For NanoCDN Files, this works because source.name is set to the storage path. source_rb = default_storage.open(source_name, mode='rb') + source_ext = os.path.splitext(source_name)[1].lower() image = Image.open(BytesIO(source_rb.read()), formats=formats or settings.PILLOW_FORMATS_QUESTIONS_IMAGE) try: @@ -183,11 +184,14 @@ def create_thumbnail(source, size, formats=None): frames = [] durations = [] for f in ImageSequence.Iterator(image): + if f.mode in ("P", "PA") and source_ext == '.png': + f = f.convert('RGBA') + if f.mode not in ("1", "L", "RGB", "RGBA"): + f = f.convert('RGB') durations.append(f.info.get("duration", 1000)) frames.append(resize_image(f, size)) image_out = frames[0] save_kwargs = {} - source_ext = os.path.splitext(source_name)[1].lower() if source_ext == '.jpg' or source_ext == '.jpeg': # Yields better file sizes for photos @@ -211,10 +215,6 @@ def create_thumbnail(source, size, formats=None): checksum = hashlib.md5(image.tobytes()).hexdigest() name = checksum + '.' + size.replace('^', 'c') + '.' + target_ext buffer = BytesIO() - if image_out.mode == "P" and source_ext == '.png': - image_out = image_out.convert('RGBA') - if image_out.mode not in ("1", "L", "RGB", "RGBA"): - image_out = image_out.convert('RGB') image_out.save(fp=buffer, format=target_ext.upper(), quality=quality, **save_kwargs) imgfile = ContentFile(buffer.getvalue()) -- 2.49.1 From 1adec102e63c78b09742f8c70efb33cda97a6d47 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 28 Apr 2026 16:39:24 +0200 Subject: [PATCH 105/107] Bump version to 2025.4.0 --- src/pretix/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pretix/__init__.py b/src/pretix/__init__.py index 0c3496769..9f8e67a70 100644 --- a/src/pretix/__init__.py +++ b/src/pretix/__init__.py @@ -19,4 +19,4 @@ # You should have received a copy of the GNU Affero General Public License along with this program. If not, see # . # -__version__ = "2026.4.0.dev0" +__version__ = "2025.4.0" -- 2.49.1 From 10789f097d3e1c4f4a2ad89070db75f0833bb6f4 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 28 Apr 2026 16:39:29 +0200 Subject: [PATCH 106/107] Bump version to 2025.5.0.dev0 --- src/pretix/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pretix/__init__.py b/src/pretix/__init__.py index 9f8e67a70..6018ee944 100644 --- a/src/pretix/__init__.py +++ b/src/pretix/__init__.py @@ -19,4 +19,4 @@ # You should have received a copy of the GNU Affero General Public License along with this program. If not, see # . # -__version__ = "2025.4.0" +__version__ = "2025.5.0.dev0" -- 2.49.1 From 75c8f97080268d6ef2787108fe5a7e1a47b19e2a Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 28 Apr 2026 16:47:33 +0200 Subject: [PATCH 107/107] Bump version to 2026.4.0 --- src/pretix/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pretix/__init__.py b/src/pretix/__init__.py index 6018ee944..a6fca5e3e 100644 --- a/src/pretix/__init__.py +++ b/src/pretix/__init__.py @@ -19,4 +19,4 @@ # You should have received a copy of the GNU Affero General Public License along with this program. If not, see # . # -__version__ = "2025.5.0.dev0" +__version__ = "2026.4.0" -- 2.49.1