From 26fdcc287221090de9474ccb347ab61f5cc00f14 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 29 Jan 2026 20:42:43 +0100 Subject: [PATCH 001/108] Order changes: Do not allow to double-book add-ons (Z#23220592) (#5851) * Order changes: Do not allow to double-book add-ons * tests * Update src/pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html Co-authored-by: Richard Schreiber --------- Co-authored-by: Richard Schreiber --- src/pretix/base/services/orders.py | 72 ++++++++++--------- .../event/fragment_addon_choice.html | 13 ++++ src/pretix/presale/views/order.py | 9 ++- .../static/pretixpresale/scss/_event.scss | 9 +++ src/tests/presale/test_order_change.py | 36 +++++++++- 5 files changed, 101 insertions(+), 38 deletions(-) diff --git a/src/pretix/base/services/orders.py b/src/pretix/base/services/orders.py index 365247483f..5d1d611531 100644 --- a/src/pretix/base/services/orders.py +++ b/src/pretix/base/services/orders.py @@ -2094,6 +2094,43 @@ class OrderChangeManager: ) item_counts[item] += 1 + # Detect removed add-ons and create RemoveOperations + for cp, al in list(current_addons.items()): + for k, v in al.items(): + input_num = input_addons[cp.id].get(k, 0) + current_num = len(current_addons[cp].get(k, [])) + if input_num < current_num: + for a in current_addons[cp][k][:current_num - input_num]: + if a.canceled: + continue + is_unavailable = ( + # If an item is no longer available due to time, it should usually also be no longer + # user-removable, because e.g. the stock has already been ordered. + # We always pass has_voucher=True because if a product now requires a voucher, it usually does + # not mean it should be unremovable for others. + # This also prevents accidental removal through the UI because a hidden product will no longer + # be part of the input. + (a.variation and a.variation.unavailability_reason(has_voucher=True, subevent=a.subevent)) + or (a.variation and not a.variation.all_sales_channels and not a.variation.limit_sales_channels.contains(self.order.sales_channel)) + or a.item.unavailability_reason(has_voucher=True, subevent=a.subevent) + or ( + not a.item.all_sales_channels and + not a.item.limit_sales_channels.contains(self.order.sales_channel) + ) + ) + if is_unavailable: + # "Re-select" add-on + selected_addons[cp.id, a.item.category_id][a.item_id, a.variation_id] += 1 + continue + if a.checkins.filter(list__consider_tickets_used=True).exists(): + raise OrderError( + error_messages['addon_already_checked_in'] % { + 'addon': str(a.item.name), + } + ) + self.cancel(a) + item_counts[a.item] -= 1 + # Check constraints on the add-on combinations for op in toplevel_op: item = op.item @@ -2126,41 +2163,6 @@ class OrderChangeManager: } ) - # Detect removed add-ons and create RemoveOperations - for cp, al in list(current_addons.items()): - for k, v in al.items(): - input_num = input_addons[cp.id].get(k, 0) - current_num = len(current_addons[cp].get(k, [])) - if input_num < current_num: - for a in current_addons[cp][k][:current_num - input_num]: - if a.canceled: - continue - is_unavailable = ( - # If an item is no longer available due to time, it should usually also be no longer - # user-removable, because e.g. the stock has already been ordered. - # We always pass has_voucher=True because if a product now requires a voucher, it usually does - # not mean it should be unremovable for others. - # This also prevents accidental removal through the UI because a hidden product will no longer - # be part of the input. - (a.variation and a.variation.unavailability_reason(has_voucher=True, subevent=a.subevent)) - or (a.variation and not a.variation.all_sales_channels and not a.variation.limit_sales_channels.contains(self.order.sales_channel)) - or a.item.unavailability_reason(has_voucher=True, subevent=a.subevent) - or ( - not item.all_sales_channels and - not item.limit_sales_channels.contains(self.order.sales_channel) - ) - ) - if is_unavailable: - continue - if a.checkins.filter(list__consider_tickets_used=True).exists(): - raise OrderError( - error_messages['addon_already_checked_in'] % { - 'addon': str(a.item.name), - } - ) - self.cancel(a) - item_counts[a.item] -= 1 - for item, count in item_counts.items(): if count == 0: continue diff --git a/src/pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html b/src/pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html index db31fb5cad..f0ca9166da 100644 --- a/src/pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html +++ b/src/pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html @@ -372,6 +372,19 @@ {% endif %} {% endfor %} + + {% if c.items_missing %} +
+

+ {% trans "There are products selected in this add-on category that currently cannot be changed because they are not on sale:" %} +

+
    + {% for itemvar, count in c.items_missing.items %} +
  • {{ count }}x {{ itemvar.0 }}{% if itemvar.1 %} – {{ itemvar.1 }}{% endif %}
  • + {% endfor %} +
+
+ {% endif %} {% endwith %} {% empty %} diff --git a/src/pretix/presale/views/order.py b/src/pretix/presale/views/order.py index 685b785069..ef57ae47ee 100644 --- a/src/pretix/presale/views/order.py +++ b/src/pretix/presale/views/order.py @@ -40,7 +40,7 @@ import logging import mimetypes import os import re -from collections import OrderedDict, defaultdict +from collections import Counter, OrderedDict, defaultdict from decimal import Decimal from urllib.parse import quote @@ -1431,11 +1431,13 @@ class OrderChangeMixin: 'categories': [] } current_addon_products = defaultdict(list) + current_addon_products_missing = Counter() for a in p.addons.all(): if a.canceled: continue if not a.is_bundled: current_addon_products[a.item_id, a.variation_id].append(a) + current_addon_products_missing[a.item, a.variation] += 1 for iao in p.item.addons.all(): ckey = '{}-{}'.format(p.subevent.pk if p.subevent else 0, iao.addon_category.pk) @@ -1473,6 +1475,7 @@ class OrderChangeMixin: if i.has_variations: for v in i.available_variations: v.initial = len(current_addon_products[i.pk, v.pk]) + current_addon_products_missing[i, v] = 0 if v.initial and i.free_price: a = current_addon_products[i.pk, v.pk][0] v.initial_price = TaxedPrice( @@ -1488,6 +1491,7 @@ class OrderChangeMixin: i.expand = any(v.initial for v in i.available_variations) else: i.initial = len(current_addon_products[i.pk, None]) + current_addon_products_missing[i, None] = 0 if i.initial and i.free_price: a = current_addon_products[i.pk, None][0] i.initial_price = TaxedPrice( @@ -1509,7 +1513,8 @@ class OrderChangeMixin: 'min_count': iao.min_count, 'max_count': iao.max_count, 'iao': iao, - 'items': [i for i in items if not i.require_voucher] + 'items': [i for i in items if not i.require_voucher], + 'items_missing': {k: v for k, v in current_addon_products_missing.items() if v}, }) return positions diff --git a/src/pretix/static/pretixpresale/scss/_event.scss b/src/pretix/static/pretixpresale/scss/_event.scss index 4fe7404b3a..5e02794471 100644 --- a/src/pretix/static/pretixpresale/scss/_event.scss +++ b/src/pretix/static/pretixpresale/scss/_event.scss @@ -99,6 +99,15 @@ } } +.product-appendix-row { + border-top: 1px solid $table-border-color; + border-bottom: 1px solid $table-border-color; + padding: 1.25*$line-height-computed 0; + & > :last-child { + margin-bottom: 0; + } +} + article.item-with-variations { margin: 0 -15px; padding: 0 15px; diff --git a/src/tests/presale/test_order_change.py b/src/tests/presale/test_order_change.py index 0bcafeb4ea..24c110c389 100644 --- a/src/tests/presale/test_order_change.py +++ b/src/tests/presale/test_order_change.py @@ -1015,7 +1015,8 @@ class OrderChangeAddonsTest(BaseOrdersTest): '/%s/%s/order/%s/%s/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret) ) assert response.status_code == 200 - assert 'Workshop 1' not in response.content.decode() + assert '
  • 1x Workshop 1
  • ' in response.content.decode() + assert f'cp_{self.ticket_pos.pk}_item_{self.workshop1.pk}' not in response.content.decode() response = self.client.post( '/%s/%s/order/%s/%s/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret), @@ -1035,6 +1036,39 @@ class OrderChangeAddonsTest(BaseOrdersTest): with scopes_disabled(): assert self.ticket_pos.addons.count() == 2 + def test_do_not_overbook_unavailable_on_adding(self): + self.iao.max_count = 1 + self.iao.save() + self.workshop1.available_until = now() - datetime.timedelta(days=1) + self.workshop1.save() + with scopes_disabled(): + OrderPosition.objects.create( + order=self.order, + item=self.workshop1, + variation=None, + price=Decimal("12"), + addon_to=self.ticket_pos, + attendee_name_parts={'full_name': "Peter"} + ) + self.order.total += Decimal("12") + self.order.save() + + response = self.client.get( + '/%s/%s/order/%s/%s/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret) + ) + assert response.status_code == 200 + assert '
  • 1x Workshop 1
  • ' in response.content.decode() + assert f'cp_{self.ticket_pos.pk}_item_{self.workshop1.pk}' not in response.content.decode() + + response = self.client.post( + '/%s/%s/order/%s/%s/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret), + { + f'cp_{self.ticket_pos.pk}_variation_{self.workshop2.pk}_{self.workshop2a.pk}': '1' + }, + follow=True + ) + assert 'alert-danger' in response.content.decode() + def test_remove_addon_checked_in(self): with scopes_disabled(): self.event.settings.change_allow_user_if_checked_in = True From 7efac71d62eec976c91fa60d3f141e2f1cbc2db6 Mon Sep 17 00:00:00 2001 From: Ruud Hendrickx Date: Thu, 29 Jan 2026 14:00:21 +0100 Subject: [PATCH 002/108] Translations: Update Dutch (informal) (nl_Informal) Currently translated at 75.5% (4690 of 6207 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 | 1047 +++++++++++++---- 1 file changed, 834 insertions(+), 213 deletions(-) diff --git a/src/pretix/locale/nl_Informal/LC_MESSAGES/django.po b/src/pretix/locale/nl_Informal/LC_MESSAGES/django.po index 1f8425ed35..47262054e6 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-01-26 13:19+0000\n" -"PO-Revision-Date: 2026-01-28 18:00+0000\n" +"PO-Revision-Date: 2026-01-29 13:00+0000\n" "Last-Translator: Ruud Hendrickx \n" "Language-Team: Dutch (informal) \n" @@ -2310,6 +2310,10 @@ msgid "" "contain at least one position of this product. The order totals etc. still " "include all products contained in the order." msgstr "" +"Als er geen selectie is gemaakt, worden alle producten meegenomen. " +"Bestellingen worden meegenomen als ze ten minste één positie van dit product " +"bevatten. De bestellingstotalen enz. bevatten nog steeds alle producten die " +"in de bestelling zijn opgenomen." #: pretix/base/exporters/orderlist.py:283 #: pretix/base/exporters/orderlist.py:478 @@ -3091,7 +3095,7 @@ msgstr "Standaard ingesteld op het tijdstip van het rapport." #: pretix/plugins/reports/accountingreport.py:105 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_list.html:67 msgid "All" -msgstr "Alles" +msgstr "Alle" #: pretix/base/exporters/orderlist.py:1364 pretix/control/forms/filter.py:1577 msgid "Live" @@ -3392,7 +3396,7 @@ msgstr "" #: pretix/base/forms/questions.py:715 pretix/base/forms/questions.py:1108 msgid "Street and Number" -msgstr "Straat en huisnummer" +msgstr "Straat en nummer" #: pretix/base/forms/questions.py:1172 msgid "" @@ -4179,7 +4183,7 @@ msgstr "Je kunt geen bestaande positiegeheim toewijzen." #: pretix/base/modelimport_orders.py:528 msgid "Please enter a valid language code." -msgstr "Vul een geldige taalcode in." +msgstr "Voer een geldige taalcode in." #: pretix/base/modelimport_orders.py:581 msgid "" @@ -4213,7 +4217,7 @@ msgstr "Geen overeenkomende stoel gevonden." #: pretix/base/services/modelimport.py:299 msgid "" "The seat you selected has already been taken. Please select a different seat." -msgstr "De stoel die je koos is al bezet. Kies een andere stoel." +msgstr "De gekozen stoel is al bezet. Selecteer een andere stoel." #: pretix/base/modelimport_orders.py:634 pretix/base/services/cart.py:217 msgid "You need to select a specific seat." @@ -4712,7 +4716,7 @@ msgstr "Dit kenmerk wordt al voor een andere vraag gebruikt." #: pretix/control/templates/pretixcontrol/organizers/gates.html:16 #: pretix/plugins/checkinlists/exporters.py:769 msgid "Gate" -msgstr "Toegangslocatie" +msgstr "Ingang" #: pretix/base/models/devices.py:131 #: pretix/control/templates/pretixcontrol/organizers/devices.html:83 @@ -4902,12 +4906,16 @@ msgid "" "You cannot apply the discount only to bookings of different dates if you are " "matching on a minimum value." msgstr "" +"Je kunt de korting niet alleen toepassen op boekingen met verschillende data " +"als je op een minimumwaarde afstemt." #: pretix/base/models/discount.py:237 msgid "" "You cannot apply the discount to a different set of products if the discount " "is only valid for bookings of different dates." msgstr "" +"Je kunt de korting niet toepassen op een andere set producten als de korting " +"alleen geldig is voor boekingen op andere data." #: pretix/base/models/event.py:88 msgid "The end of the presale period has to be later than its start." @@ -4966,13 +4974,15 @@ msgstr "Optioneel. Er worden geen producten verkocht vóór deze datum." #: pretix/base/models/event.py:644 msgid "This event is remote or partially remote." -msgstr "" +msgstr "Dit evenement vindt geheel of gedeeltelijk op afstand plaats." #: 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 "" +"Dit wordt gebruikt om gebruikers te laten weten of het evenement in een " +"andere tijdzone plaatsvindt en om de lokale tijd van gebruikers te berekenen." #: pretix/base/models/event.py:665 pretix/base/models/organizer.py:97 #: pretix/control/navigation.py:65 pretix/control/navigation.py:499 @@ -5154,6 +5164,8 @@ msgid "" "This field will be shown to filter events in the public event list and " "calendar." msgstr "" +"Dit veld wordt weergegeven om evenementen in de openbare evenementenlijst " +"en -kalender te filteren." #: pretix/base/models/event.py:1788 pretix/control/forms/organizer.py:269 #: pretix/control/forms/organizer.py:273 @@ -5165,7 +5177,7 @@ msgstr "Openbaar profiel" #: pretix/base/models/event.py:1792 #: pretix/control/templates/pretixcontrol/organizers/properties.html:40 msgid "Can be used for filtering" -msgstr "" +msgstr "Kan worden gebruikt voor het filteren" #: pretix/base/models/event.py:1793 msgid "" @@ -5173,6 +5185,9 @@ msgid "" "can also be used for hidden filter parameters in the frontend (e.g. using " "the widget)." msgstr "" +"Dit veld wordt weergegeven om evenementen of rapporten in de backend te " +"filteren en kan ook worden gebruikt voor verborgen filterparameters in de " +"frontend (bijvoorbeeld met behulp van de widget)." #: pretix/base/models/event.py:1803 msgid "A property can either be required or have a default value, not both." @@ -5207,7 +5222,7 @@ msgstr "Extra instellingen" #: pretix/base/models/exports.py:71 pretix/control/forms/event.py:1091 #: pretix/control/forms/organizer.py:587 msgid "You can specify multiple recipients separated by commas." -msgstr "" +msgstr "Je kunt meerdere ontvangers opgeven, gescheiden door komma's." #: pretix/base/models/exports.py:64 #, fuzzy @@ -5249,6 +5264,8 @@ msgstr "Starttijd van het evenement" #: pretix/base/models/exports.py:86 msgid "The actual start time might be delayed depending on system load." msgstr "" +"De daadwerkelijke starttijd kan vertraging oplopen, afhankelijk van de " +"systeembelasting." #: pretix/base/models/fields.py:33 msgid "No value can contain the delimiter character." @@ -5290,7 +5307,7 @@ msgstr "Openstaand bedrag" #: pretix/base/models/invoices.py:123 msgid "currently being transmitted" -msgstr "" +msgstr "wordt momenteel verzonden" #: pretix/base/models/invoices.py:124 #, fuzzy @@ -5369,7 +5386,7 @@ msgstr "Geen categorie" #: pretix/base/models/items.py:115 pretix/control/forms/item.py:111 msgid "Normal + cross-selling category" -msgstr "" +msgstr "Normaal + cross-selling categorie" #: pretix/base/models/items.py:116 pretix/control/forms/item.py:106 #, fuzzy @@ -5379,12 +5396,14 @@ msgstr "Geen categorie" #: pretix/base/models/items.py:124 msgid "Always show in cross-selling step" -msgstr "" +msgstr "Altijd weergeven in cross-selling stap" #: pretix/base/models/items.py:125 msgid "" "Only show products that qualify for a discount according to discount rules" msgstr "" +"Alleen producten tonen die volgens de kortingsregels in aanmerking komen " +"voor korting" #: pretix/base/models/items.py:126 msgid "Only show if the cart contains one of the following products" @@ -5393,7 +5412,7 @@ msgstr "" #: pretix/base/models/items.py:129 msgid "Cross-selling condition" -msgstr "" +msgstr "Voorwaarde voor cross-selling" #: pretix/base/models/items.py:137 #, fuzzy @@ -5412,7 +5431,7 @@ msgstr "Productcategorieën" #: 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 @@ -5468,19 +5487,19 @@ msgstr "Het bestelde product \"{item}\" is niet meer beschikbaar." #: pretix/base/models/items.py:456 pretix/base/models/items.py:781 msgid "Don't use re-usable media, use regular one-off tickets" -msgstr "" +msgstr "Gebruik geen herbruikbare media, maar gewone eenmalige tickets" #: pretix/base/models/items.py:457 msgid "Require an existing medium to be re-used" -msgstr "" +msgstr "Vereis dat een bestaand medium opnieuw wordt gebruikt" #: pretix/base/models/items.py:458 msgid "Require a previously unknown medium to be newly added" -msgstr "" +msgstr "Vereis dat een voorheen onbekend medium nieuw wordt toegevoegd" #: pretix/base/models/items.py:459 msgid "Require either an existing or a new medium to be used" -msgstr "" +msgstr "Vereis dat een bestaand of nieuw medium wordt gebruikt" #: pretix/base/models/items.py:475 pretix/base/models/items.py:1458 msgid "Category" @@ -5542,6 +5561,10 @@ msgid "" "have without the free price option. This will be ignored if a voucher is " "used that lowers the price." msgstr "" +"Deze prijs wordt gebruikt als standaardwaarde voor het invoerveld. De " +"gebruiker kan een lagere waarde kiezen, maar niet lager dan de prijs die dit " +"product zou hebben zonder de gratis prijsoptie. Dit wordt genegeerd als er " +"een voucher wordt gebruikt die de prijs verlaagt." #: pretix/base/models/items.py:526 msgid "Whether or not buying this product allows a person to enter your event" @@ -5726,6 +5749,8 @@ msgid "" "This text will be shown by the check-in app if a ticket of this type is " "scanned." msgstr "" +"Deze tekst wordt door de check-in-app weergegeven als een ticket van dit " +"type wordt gescand." #: pretix/base/models/items.py:671 pretix/base/models/items.py:1172 msgid "" @@ -5762,6 +5787,9 @@ msgid "" "Do not show this unless the customer is logged in and has a valid " "membership. Be aware that this means it will never be visible in the widget." msgstr "" +"Toon dit alleen als de klant is ingelogd en een geldig lidmaatschap heeft. " +"Houd er rekening mee dat dit betekent dat het nooit zichtbaar zal zijn in de " +"widget." #: pretix/base/models/items.py:710 msgid "This product creates a membership of type" @@ -5800,6 +5828,16 @@ msgid "" "change the settings here later, existing tickets will not be affected by the " "change but keep their current validity." msgstr "" +"Bij het opzetten van een regulier evenement of een reeks evenementen met " +"tijdslots hoef je deze waarde doorgaans NIET te wijzigen. De " +"standaardinstelling houdt in dat de geldigheidsduur van tickets niet door " +"het product wordt bepaald, maar door de configuratie van het evenement en de " +"check-in. Gebruik de andere opties alleen als je ze nodig hebt om " +"bijvoorbeeld een boeking van een ticket voor een heel jaar met een " +"dynamische startdatum te realiseren. Houd er rekening mee dat de geldigheid " +"bij het ticket wordt opgeslagen. Dus als je de instellingen hier later " +"wijzigt, hebben bestaande tickets geen last van de wijziging en behouden ze " +"hun huidige geldigheid." #: pretix/base/models/items.py:738 pretix/control/forms/item.py:739 #, fuzzy @@ -5821,11 +5859,11 @@ msgstr "minuten" #: pretix/base/models/items.py:746 msgid "Hours" -msgstr "" +msgstr "Uren" #: pretix/base/models/items.py:750 msgid "Days" -msgstr "" +msgstr "Dagen" #: pretix/base/models/items.py:754 #, fuzzy @@ -5842,6 +5880,8 @@ msgstr "Klanten kunnen hun betaalde bestellingen annuleren" #: pretix/base/models/items.py:758 msgid "If not selected, the validity always starts at the time of purchase." msgstr "" +"Indien niet geselecteerd, begint de geldigheid altijd op het moment van " +"aankoop." #: pretix/base/models/items.py:763 #, fuzzy @@ -5857,7 +5897,7 @@ msgstr "De geselecteerde datum bestaat niet in deze evenementenreeks." #: pretix/base/models/items.py:770 msgid "Reusable media policy" -msgstr "" +msgstr "Beleid inzake herbruikbare media" #: pretix/base/models/items.py:772 msgid "" @@ -5868,10 +5908,16 @@ msgid "" "feature that also requires specific configuration of ticketing and printing " "settings." msgstr "" +"Als dit product op een herbruikbaar fysiek medium moet worden opgeslagen, " +"kun je een beleid voor fysieke media toevoegen. Dit is niet vereist voor " +"gewone tickets, die slechts een eenmalige barcode gebruiken, maar alleen " +"voor producten zoals hernieuwbare abonnementen of herlaadbare polsbandjes. " +"Dit is een geavanceerde functie waarvoor ook specifieke configuratie van " +"ticket- en afdrukinstellingen vereist is." #: pretix/base/models/items.py:782 msgid "Reusable media type" -msgstr "" +msgstr "Type herbruikbaar medium" #: pretix/base/models/items.py:784 msgid "" @@ -5879,12 +5925,18 @@ msgid "" "Note that not all media types support all types of products, and not all " "media types are supported across all sales channels or check-in processes." msgstr "" +"Selecteer het type fysieke drager dat voor dit product moet worden gebruikt. " +"Houd er rekening mee dat niet alle soorten dragers alle soorten producten " +"ondersteunen en dat niet alle soorten dragers door alle verkoopkanalen of " +"check-in-processen worden ondersteund." #: pretix/base/models/items.py:989 msgid "" "If you select a reusable media policy, you also need to select a reusable " "media type." msgstr "" +"Als je een beleid voor herbruikbare media selecteert, moet je ook een type " +"herbruikbaar medium selecteren." #: pretix/base/models/items.py:993 #, fuzzy @@ -5911,6 +5963,10 @@ msgid "" "Instead, gift cards for some reusable media types can be created or re-" "charged directly at the POS." msgstr "" +"Momenteel kun je geen cadeaubonnen met een beleid voor herbruikbare media " +"aanmaken. In plaats daarvan kunnen cadeaubonnen voor sommige soorten " +"herbruikbare media rechtstreeks bij het POS worden aangemaakt of opnieuw " +"worden opgeladen." #: pretix/base/models/items.py:1007 msgid "" @@ -5982,7 +6038,7 @@ msgstr "Dit product zal niet na de opgegeven datum verkocht worden." #: pretix/base/models/items.py:1225 msgid "Sell on all sales channels the product is sold on" -msgstr "" +msgstr "Verkoop het product via alle verkoopkanalen waarop het wordt verkocht" #: pretix/base/models/items.py:1231 msgid "" @@ -5990,6 +6046,9 @@ msgid "" "if a sales channel is selected here but not on product level, the variation " "will not be available." msgstr "" +"De selectie van het verkoopkanaal voor het product als geheel heeft " +"voorrang. Dus als hier een verkoopkanaal wordt geselecteerd maar niet op " +"productniveau, is de variant niet beschikbaar." #: pretix/base/models/items.py:1236 #, fuzzy @@ -6304,7 +6363,7 @@ msgstr "" #: pretix/base/models/items.py:1961 #: pretix/control/templates/pretixcontrol/items/question.html:75 msgid "Answer" -msgstr "Antwoord" +msgstr "Antwoorden" #: pretix/base/models/items.py:1985 #, python-brace-format @@ -6432,6 +6491,8 @@ msgid "" "If checked, this property must be set in each product. Does not apply if a " "default value is set." msgstr "" +"Indien aangevinkt, moet deze eigenschap voor elk product worden ingesteld. " +"Niet van toepassing als er een standaardwaarde is ingesteld." #: pretix/base/models/items.py:2254 msgid "" @@ -6535,7 +6596,9 @@ msgstr "Totaalbedrag" msgid "" "The text entered in this field will not be visible to the user and is " "available for your convenience." -msgstr "Tekst in dit veld is niet zichtbaar voor de gebruiker." +msgstr "" +"De tekst die in dit veld wordt ingevoerd, is niet zichtbaar voor de " +"gebruiker en is alleen bedoeld voor je eigen gemak." #: pretix/base/models/orders.py:278 msgid "We'll show you this order to be due for a follow-up on this day." @@ -6834,7 +6897,7 @@ msgstr "Badge" #: pretix/control/templates/pretixcontrol/checkin/checkins.html:66 #: pretix/plugins/ticketoutputpdf/ticketoutput.py:114 msgid "Ticket" -msgstr "Kaartje" +msgstr "Ticket" #: pretix/base/models/orders.py:3634 msgid "Certificate" @@ -7004,11 +7067,12 @@ msgstr "Je lay-outbestand is geen geldige stoelplattegrond. Foutmelding: {}" #, python-brace-format msgid "Seat with zone {zone}, row {row}, and number {number} has no seat ID." msgstr "" +"De stoel met zone {zone}, rij {row} en nummer {number} heeft geen stoel-ID." #: pretix/base/models/seating.py:72 #, python-brace-format msgid "Multiple seats have the same ID: {id}" -msgstr "" +msgstr "Meerdere stoelen hebben dezelfde ID: {id}" #: pretix/base/models/seating.py:200 #, python-brace-format @@ -7029,7 +7093,7 @@ msgstr "Stuur uitnodiging opnieuw" #: pretix/base/models/tax.py:147 msgctxt "tax_code" msgid "Standard rate" -msgstr "" +msgstr "Standaardtarief" #: pretix/base/models/tax.py:151 #, fuzzy @@ -7042,7 +7106,7 @@ msgstr "Kaartje met korting" msgctxt "tax_code" msgid "" "Averaged rate (other revenue in a agricultural and silvicultural business)" -msgstr "" +msgstr "Gemiddeld tarief (overige inkomsten in een land- en bosbouwbedrijf)" #: pretix/base/models/tax.py:163 #, fuzzy @@ -7060,27 +7124,29 @@ msgstr "Belastingtarief" #: pretix/base/models/tax.py:170 msgctxt "tax_code" msgid "Services outside of scope of tax" -msgstr "" +msgstr "Diensten buiten het toepassingsgebied van de belasting" #: pretix/base/models/tax.py:173 msgctxt "tax_code" msgid "Exempt from tax (no reason given)" -msgstr "" +msgstr "Vrijgesteld van belasting (geen reden opgegeven)" #: pretix/base/models/tax.py:176 msgctxt "tax_code" msgid "Zero-rated goods" -msgstr "" +msgstr "Goederen met nultarief" #: pretix/base/models/tax.py:179 msgctxt "tax_code" msgid "Free export item, VAT not charged" -msgstr "" +msgstr "Gratis exportartikel, geen btw in rekening gebracht" #: pretix/base/models/tax.py:182 msgctxt "tax_code" msgid "VAT exempt for EEA intra-community supply of goods and services" msgstr "" +"Btw-vrijstelling voor intracommunautaire levering van goederen en diensten " +"binnen de EER" #: pretix/base/models/tax.py:186 #, fuzzy @@ -7091,26 +7157,28 @@ msgstr "API-functies" #: pretix/base/models/tax.py:188 msgctxt "tax_code" msgid "Canary Islands general indirect tax" -msgstr "" +msgstr "Algemene indirecte belasting van de Canarische Eilanden" #: pretix/base/models/tax.py:189 msgctxt "tax_code" msgid "Tax for production, services and importation in Ceuta and Melilla" -msgstr "" +msgstr "Belasting voor productie, diensten en invoer in Ceuta en Melilla" #: pretix/base/models/tax.py:190 msgctxt "tax_code" msgid "Transferred (VAT), only in Italy" -msgstr "" +msgstr "Overgedragen (btw), alleen in Italië" #: pretix/base/models/tax.py:194 msgid "Exempt with specific reason" -msgstr "" +msgstr "Vrijgesteld met specifieke reden" #: pretix/base/models/tax.py:197 msgctxt "tax_code" msgid "Exempt based on article 79, point c of Council Directive 2006/112/EC" msgstr "" +"Vrijgesteld op grond van artikel 79, onder c) van Richtlijn 2006/112/EG van " +"de Raad" #: pretix/base/models/tax.py:204 pretix/base/models/tax.py:217 #: pretix/base/models/tax.py:243 @@ -7120,6 +7188,8 @@ msgid "" "Exempt based on article {article}, section {section} ({letter}) of Council " "Directive 2006/112/EC" msgstr "" +"Vrijgesteld op grond van artikel {article}, lid {section} ({letter}) van " +"Richtlijn 2006/112/EG van de Raad" #: pretix/base/models/tax.py:230 #, python-brace-format @@ -7128,36 +7198,39 @@ msgid "" "Exempt based on article {article}, section ({letter}) of Council Directive " "2006/112/EC" msgstr "" +"Vrijgesteld op grond van artikel {article}, lid ({letter}) van Richtlijn " +"2006/112/EG van de Raad" #: pretix/base/models/tax.py:251 msgctxt "tax_code" msgid "Exempt based on article 309 of Council Directive 2006/112/EC" msgstr "" +"Vrijgesteld op grond van artikel 309 van Richtlijn 2006/112/EG van de Raad" #: pretix/base/models/tax.py:253 msgctxt "tax_code" msgid "Intra-Community acquisition from second hand means of transport" -msgstr "" +msgstr "Intracommunautaire verwerving van tweedehands vervoermiddelen" #: pretix/base/models/tax.py:255 msgctxt "tax_code" msgid "Intra-Community acquisition of second hand goods" -msgstr "" +msgstr "Intracommunautaire verwerving van tweedehandsgoederen" #: pretix/base/models/tax.py:257 msgctxt "tax_code" msgid "Intra-Community acquisition of works of art" -msgstr "" +msgstr "Intracommunautaire verwerving van kunstwerken" #: pretix/base/models/tax.py:259 msgctxt "tax_code" msgid "Intra-Community acquisition of collectors items and antiques" -msgstr "" +msgstr "Intracommunautaire verwerving van verzamelobjecten en antiek" #: pretix/base/models/tax.py:261 msgctxt "tax_code" msgid "France domestic VAT franchise in base" -msgstr "" +msgstr "Franse binnenlandse btw-franchise in basis" #: pretix/base/models/tax.py:263 msgctxt "tax_code" @@ -7165,6 +7238,8 @@ msgid "" "France domestic Credit Notes without VAT, due to supplier forfeit of VAT for " "discount" msgstr "" +"Franse binnenlandse creditnota's zonder btw, verschuldigd aan leverancier " +"wegens verlies van btw voor korting" #: pretix/base/models/tax.py:315 #, fuzzy, python-brace-format @@ -7192,6 +7267,9 @@ 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 "" +"Als je ons helpt begrijpen wat deze belastingregels juridisch gezien " +"inhouden, kunnen we deze informatie gebruiken voor e-facturen, export naar " +"boekhoudsystemen, enz." #: pretix/base/models/tax.py:352 msgid "The configured product prices include the tax amount" @@ -7202,6 +7280,8 @@ msgid "" "Keep gross amount constant if the tax rate changes based on the invoice " "address" msgstr "" +"Houd het brutobedrag constant als het belastingtarief verandert op basis van " +"het factuuradres" #: pretix/base/models/tax.py:360 msgid "Use EU reverse charge taxation rules" @@ -7213,10 +7293,14 @@ msgid "" "business customers in other EU countries in a way that works for all " "organizers. Use custom rules instead." msgstr "" +"Deze functie zal in de toekomst worden verwijderd, omdat deze de btw voor " +"niet-zakelijke klanten in andere EU-landen niet op een voor alle " +"organisatoren geschikte manier verwerkt. Gebruik in plaats daarvan " +"aangepaste regels." #: pretix/base/models/tax.py:366 msgid "DEPRECATED" -msgstr "" +msgstr "VEROUDERD" #: pretix/base/models/tax.py:367 msgid "" @@ -7255,11 +7339,14 @@ msgstr "Je moet je thuisland instellen om de verleggingsfunctie te gebruiken." msgid "" "A combination of this tax code with a non-zero tax rate does not make sense." msgstr "" +"Een combinatie van deze belastingcode met een belastingtarief dat niet nul " +"is, is niet logisch." #: pretix/base/models/tax.py:433 pretix/control/forms/event.py:1690 msgid "" "A combination of this tax code with a zero tax rate does not make sense." msgstr "" +"Een combinatie van deze belastingcode met een nultarief is niet logisch." #: pretix/base/models/tax.py:438 #, python-brace-format @@ -7322,6 +7409,12 @@ msgid "" "usages in some cases can be lower than this limit, e.g. in case of " "cancellations." msgstr "" +"Als deze waarde op meer dan één is ingesteld, moet de voucher bij het eerste " +"gebruik voor dit aantal producten worden ingewisseld. Bij later gebruik kan " +"de voucher ook voor een kleiner aantal producten worden ingewisseld. Houd er " +"rekening mee dat dit betekent dat het totale aantal keren dat de voucher kan " +"worden gebruikt in sommige gevallen lager kan zijn dan deze limiet, " +"bijvoorbeeld in geval van annuleringen." #: pretix/base/models/vouchers.py:217 msgid "" @@ -7407,6 +7500,9 @@ msgid "" "as part of a bundle, since vouchers cannot be applied to add-on products or " "bundled products." msgstr "" +"Je kunt geen product selecteren dat alleen als add-on-product of als " +"onderdeel van een bundel verkrijgbaar is, aangezien vouchers niet kunnen " +"worden toegepast op add-on-producten of gebundelde producten." #: pretix/base/models/vouchers.py:351 #, fuzzy @@ -7868,13 +7964,15 @@ msgstr "" #: pretix/base/payment.py:511 msgid "Do not send a payment reminder mail" -msgstr "" +msgstr "Stuur geen betalingsherinnering per e-mail" #: pretix/base/payment.py:512 msgid "" "Users will not receive a reminder mail to pay for their order before it " "expires if they have chosen this payment method." msgstr "" +"Gebruikers ontvangen geen herinneringsmail om hun bestelling te betalen " +"voordat deze verloopt als ze voor deze betaalmethode hebben gekozen." #: pretix/base/payment.py:559 msgctxt "invoice" @@ -8200,7 +8298,7 @@ msgstr "Begindatum van evenement" #: pretix/base/pdf.py:277 pretix/base/pdf.py:306 #: pretix/base/services/checkin.py:362 pretix/control/forms/filter.py:1398 msgid "Friday" -msgstr "Vrijdag" +msgstr "vrijdag" #: pretix/base/pdf.py:281 msgid "Event end date and time" @@ -8386,10 +8484,13 @@ msgid "" "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" -msgstr "" +msgstr "ID herbruikbaar medium" #: pretix/base/pdf.py:505 msgid "Seat: Full name" @@ -8458,7 +8559,7 @@ msgstr "Namen van aanwezigen" #: pretix/base/services/placeholders.py:730 #: pretix/control/forms/organizer.py:665 msgid "Mr Doe" -msgstr "Meneer Janssen" +msgstr "Mr Peeters" #: pretix/base/pdf.py:672 pretix/base/pdf.py:679 #: pretix/plugins/badges/exporters.py:501 @@ -8535,7 +8636,7 @@ msgstr "dagen voor" #: pretix/base/reldate.py:187 msgid "after" -msgstr "" +msgstr "na" #: pretix/base/reldate.py:308 pretix/base/reldate.py:472 msgid "Fixed date:" @@ -8761,7 +8862,11 @@ msgid_plural "" "The voucher code \"%(voucher)s\" can only be used if you select at least " "%(number)s matching products." msgstr[0] "" +"De vouchercode \"%(voucher)s\" kan alleen worden gebruikt als je minstens %" +"(number)s overeenkomend product selecteert." msgstr[1] "" +"De vouchercode \"%(voucher)s\" kan alleen worden gebruikt als je minstens %" +"(number)s overeenkomende producten selecteert." #: pretix/base/services/cart.py:170 #, python-format @@ -8965,6 +9070,8 @@ msgid "" "The configuration of this product requires mapping to a physical medium, " "which is currently not available online." msgstr "" +"De configuratie van dit product vereist mapping naar een fysiek medium, dat " +"momenteel niet online beschikbaar is." #: pretix/base/services/checkin.py:217 #: pretix/plugins/stripe/templates/pretixplugins/stripe/pending.html:69 @@ -9059,27 +9166,27 @@ msgstr "Weekenddag" #: pretix/base/services/checkin.py:358 pretix/control/forms/filter.py:1394 msgid "Monday" -msgstr "Maandag" +msgstr "maandag" #: pretix/base/services/checkin.py:359 pretix/control/forms/filter.py:1395 msgid "Tuesday" -msgstr "Dinsdag" +msgstr "dinsdag" #: pretix/base/services/checkin.py:360 pretix/control/forms/filter.py:1396 msgid "Wednesday" -msgstr "Woensdag" +msgstr "woensdag" #: pretix/base/services/checkin.py:361 pretix/control/forms/filter.py:1397 msgid "Thursday" -msgstr "Donderdag" +msgstr "donderdag" #: pretix/base/services/checkin.py:363 pretix/control/forms/filter.py:1399 msgid "Saturday" -msgstr "Zaterdag" +msgstr "zaterdag" #: pretix/base/services/checkin.py:364 pretix/control/forms/filter.py:1400 msgid "Sunday" -msgstr "Zondag" +msgstr "zondag" #: pretix/base/services/checkin.py:368 #, python-brace-format @@ -9143,7 +9250,7 @@ msgstr "Deze bestelling is niet gemarkeerd als betaald." #: pretix/base/services/checkin.py:1080 msgid "Evaluation of custom rules has failed." -msgstr "" +msgstr "De evaluatie van de regels is mislukt." #: pretix/base/services/checkin.py:1090 #, python-brace-format @@ -9166,7 +9273,7 @@ msgstr "Europese Unie" #: pretix/base/services/currencies.py:40 msgid "Czech National Bank" -msgstr "" +msgstr "Tsjechische Nationale Bank" #: pretix/base/services/export.py:91 pretix/base/services/export.py:166 #: pretix/base/services/export.py:228 @@ -9194,6 +9301,8 @@ msgstr "Geen toestemming" #: pretix/base/services/export.py:234 msgid "Your exported data exceeded the size limit for scheduled exports." msgstr "" +"Je geëxporteerde gegevens overschreden de maximale grootte voor geplande " +"exporten." #: pretix/base/services/invoices.py:116 #, python-brace-format @@ -9454,7 +9563,7 @@ msgstr "" #: pretix/base/services/modelimport.py:56 #, python-brace-format msgid "Error decoding special characters in your file: {message}" -msgstr "" +msgstr "Fout bij het decoderen van speciale tekens in je bestand: {message}" #: pretix/base/services/modelimport.py:74 #, python-brace-format @@ -9469,7 +9578,7 @@ msgstr "" #: pretix/base/services/modelimport.py:140 pretix/base/services/orders.py:1623 #, python-format msgid "Orders cannot have more than %(max)s positions." -msgstr "" +msgstr "Bestellingen mogen niet meer dan %(max)s posities bevatten." #: pretix/base/services/modelimport.py:116 #, python-format @@ -9477,6 +9586,8 @@ msgid "" "The grouping \"%(value)s\" occurs on non-consecutive lines (seen again on " "line %(row)s)." msgstr "" +"De groepering \"%(value)s\" komt voor op niet-opeenvolgende regels (opnieuw " +"te zien op regel%(row)s)." #: pretix/base/services/modelimport.py:154 #, python-brace-format @@ -9484,12 +9595,14 @@ 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 "" +"Inconsistente gegevens in rij {row}: Kolom {col} bevat waarde \"{val_line}" +"\", maar voor deze bestelling is de waarde al ingesteld op \"{val_order}\"." #: pretix/base/services/modelimport.py:168 #: pretix/base/services/modelimport.py:289 #, python-brace-format msgid "Invalid data in row {row}: {message}" -msgstr "Ongeldige data op regel {row}: {message}" +msgstr "Ongeldige gegevens in rij {row}: {message}" #: pretix/base/services/modelimport.py:270 #, fuzzy @@ -9531,6 +9644,8 @@ msgid "" "This order was changed by someone else simultaneously. Please check if your " "changes are still accurate and try again." msgstr "" +"Deze bestelling is tegelijkertijd door iemand anders gewijzigd. Controleer " +"of de wijzigingen nog steeds correct zijn en probeer het opnieuw." #: pretix/base/services/orders.py:151 msgid "Your cart is empty." @@ -9981,19 +10096,20 @@ msgstr "De voucher is verstuurd naar {recipient}." #: pretix/base/settings.py:82 msgid "Compute taxes for every line individually" -msgstr "" +msgstr "Bereken de belastingen voor elke regel afzonderlijk" #: pretix/base/settings.py:83 msgid "Compute taxes based on net total" -msgstr "" +msgstr "Bereken belastingen op basis van het netto totaal" #: pretix/base/settings.py:84 msgid "Compute taxes based on net total with stable gross prices" msgstr "" +"Bereken belastingen op basis van het nettototaal met stabiele brutoprijzen" #: pretix/base/settings.py:134 msgid "Allow usage of restricted plugins" -msgstr "" +msgstr "Gebruik van beperkte plug-ins toestaan" #: pretix/base/settings.py:167 msgid "Allow customers to create accounts" @@ -10018,10 +10134,12 @@ msgstr "Voer een correct e-mailadres en wachtwoord in." msgid "" "If disabled, you will need to connect one or more single-sign-on providers." msgstr "" +"Als deze optie is uitgeschakeld, moet je een of meer single-sign-on-" +"providers koppelen." #: pretix/base/settings.py:189 msgid "Require login to access order confirmation pages" -msgstr "" +msgstr "Inloggen vereist om toegang te krijgen tot de orderbevestigingspagina's" #: pretix/base/settings.py:190 msgid "" @@ -10030,6 +10148,10 @@ msgid "" "placing an order, the restriction only becomes active after the customer " "account is activated." msgstr "" +"Indien ingeschakeld, moeten gebruikers die op het moment van aankoop waren " +"ingelogd, ook inloggen om toegang te krijgen tot hun bestelgegevens. Als er " +"tijdens het plaatsen van een bestelling een klantenaccount wordt aangemaakt, " +"wordt de beperking pas actief nadat het klantenaccount is geactiveerd." #: pretix/base/settings.py:202 msgid "Match orders based on email address" @@ -10056,6 +10178,9 @@ msgid "" "with physical media such as wristbands or chip cards that may be re-used for " "different tickets or gift cards later." msgstr "" +"Met de functie voor herbruikbare media kun je tickets en cadeaubonnen " +"koppelen aan fysieke media, zoals polsbandjes of chipkaarten, die later voor " +"verschillende tickets of cadeaubonnen kunnen worden hergebruikt." #: pretix/base/settings.py:240 #, fuzzy @@ -10067,6 +10192,8 @@ msgstr "Lengte van cadeauboncodes" msgid "" "Automatically create a new gift card if a previously unknown chip is seen" msgstr "" +"Maak automatisch een nieuwe cadeaubon aan als een voorheen onbekende chip " +"wordt gedetecteerd" #: pretix/base/settings.py:282 pretix/base/settings.py:313 #, fuzzy @@ -10077,10 +10204,11 @@ msgstr "Cadeauboncode" #: pretix/base/settings.py:300 msgid "Automatically create a new gift card if a new chip is encoded" msgstr "" +"Maak automatisch een nieuwe cadeaubon aan als een nieuwe chip wordt gecodeerd" #: pretix/base/settings.py:322 msgid "Use UID protection feature of NFC chip" -msgstr "" +msgstr "Gebruik de UID-beveiligingsfunctie van de NFC-chip" #: pretix/base/settings.py:338 msgid "Maximum number of items per order" @@ -10110,7 +10238,7 @@ msgstr "" #: pretix/base/settings.py:360 msgid "Hide prices on attendee ticket page" -msgstr "" +msgstr "Verberg prijzen op de ticketpagina voor deelnemers" #: pretix/base/settings.py:361 msgid "" @@ -10119,6 +10247,10 @@ msgid "" "page of the individual attendees. The ticket buyer will of course see the " "price." msgstr "" +"Als iemand meerdere tickets koopt en je e-mails naar alle deelnemers stuurt, " +"wordt met deze optie de ticketprijs niet weergegeven op de ticketpagina van " +"de individuele deelnemers. De koper van de tickets ziet natuurlijk wel de " +"prijs." #: pretix/base/settings.py:379 msgid "Ask for attendee names" @@ -10240,6 +10372,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 "" +"Denk erom dat je, als je je verkoopgegevens van pretix naar een extern " +"systeem overbrengt voor belastingaangifte, rekening moet houden met " +"mogelijke afrondingsverschillen als je externe systeem anders afrondt dan " +"pretix." #: pretix/base/settings.py:514 msgid "Ask for invoice address" @@ -10269,6 +10405,9 @@ msgid "" "same for all lines. It will be shown on every line if there are different " "locations." msgstr "" +"De locatie van het evenement wordt onder de lijst met producten weergegeven " +"als deze voor alle regels hetzelfde is. Als er verschillende locaties zijn, " +"wordt deze op elke regel weergegeven." #: pretix/base/settings.py:561 #, fuzzy @@ -10286,12 +10425,17 @@ msgid "" "Based on European Central Bank daily rates, whenever the invoice recipient " "is in an EU country that uses a different currency." msgstr "" +"Op basis van de dagkoersen van de Europese Centrale Bank, wanneer de " +"ontvanger van de factuur zich in een EU-land bevindt dat een andere " +"munteenheid gebruikt." #: pretix/base/settings.py:567 pretix/base/settings.py:575 msgid "" "Based on Czech National Bank daily rates, whenever the invoice amount is not " "in CZK." msgstr "" +"Op basis van de dagelijkse koersen van de Tsjechische Nationale Bank, " +"wanneer het factuurbedrag niet in CZK is." #: pretix/base/settings.py:585 msgid "Require invoice address" @@ -10350,6 +10494,9 @@ msgid "" "will be displayed underneath the field. It will not be displayed on the " "invoice." msgstr "" +"Als je het aangepaste ontvangersveld gebruikt, kun je een helptekst opgeven " +"die onder het veld wordt weergegeven. Deze tekst wordt niet op de factuur " +"weergegeven." #: pretix/base/settings.py:643 msgid "Ask for VAT ID" @@ -10490,7 +10637,7 @@ msgstr "" #: pretix/base/settings.py:803 msgid "Highlight order code to make it stand out visibly" -msgstr "" +msgstr "Markeer de bestelcode om ze duidelijk te laten opvallen" #: pretix/base/settings.py:804 pretix/base/settings.py:815 #, fuzzy @@ -10670,6 +10817,11 @@ msgid "" "beyond the \"last date of payments\" configured above, which is always " "enforced." msgstr "" +"De order verloopt pas zoveel dagen na de aan de klant meegedeelde " +"vervaldatum. Als je hierboven \"Betalingsvoorwaarden alleen op weekdagen " +"beëindigen\" selecteert, wordt dit ook gerespecteerd. Dit zal echter niet " +"langer duren dan de hierboven geconfigureerde \"laatste betalingsdatum\", " +"die altijd wordt gehandhaafd." #: pretix/base/settings.py:1050 msgid "Hide \"payment pending\" state on customer-facing pages" @@ -10745,6 +10897,8 @@ msgstr "Belastingregel voor betalingstoeslagen" #: pretix/base/settings.py:1128 pretix/base/settings.py:1137 msgid "Use same taxes as order positions (split according to net prices)" msgstr "" +"Gebruik dezelfde belastingen als orderposities (gesplitst volgens " +"nettoprijzen)" #: pretix/base/settings.py:1133 #, fuzzy @@ -10803,10 +10957,14 @@ msgid "" "Automatic based on ticket-specific validity, membership validity, event " "series date, or event date" msgstr "" +"Automatisch op basis van de geldigheid van het ticket, de geldigheid van het " +"lidmaatschap, de datum van de evenementenreeks of de datum van het evenement" #: pretix/base/settings.py:1179 pretix/base/settings.py:1190 msgid "Automatic, but prefer invoice date over event date" msgstr "" +"Automatisch, maar geef de factuurdatum de voorkeur boven de datum van het " +"evenement" #: pretix/base/settings.py:1182 pretix/base/settings.py:1193 msgid "Invoice date" @@ -10824,6 +10982,8 @@ msgid "" "This controls what dates are shown on the invoice, but is especially " "important for electronic invoicing." msgstr "" +"Dit bepaalt welke datums op de factuur worden weergegeven, maar is vooral " +"belangrijk voor elektronische facturering." #: pretix/base/settings.py:1206 msgid "Automatically cancel and reissue invoice on address changes" @@ -11011,6 +11171,13 @@ msgid "" "page. Note that pretix still is a system built around events and the date " "may still show up in other places." msgstr "" +"Schakel dit selectievakje uit als je alleen iets verkoopt dat geen " +"specifieke datum heeft, zoals cadeaubonnen of een ticket dat op elk moment " +"kan worden gebruikt. Het systeem zal dan de datum van het evenement niet " +"meer weergeven op bepaalde plaatsen, zoals de startpagina van het evenement. " +"Houd er rekening mee dat pretix nog steeds een systeem is dat is opgebouwd " +"rond evenementen en dat de datum nog steeds op andere plaatsen kan worden " +"weergegeven." #: pretix/base/settings.py:1501 msgid "Show event end date" @@ -11114,6 +11281,10 @@ msgid "" "still people on the waiting list. Vouchers that have already been sent " "remain active." msgstr "" +"Na deze datum wordt de wachtlijst volledig uitgeschakeld. Dit betekent dat " +"niemand zich meer op de wachtlijst kan plaatsen, maar ook dat er weer " +"tickets te koop zullen zijn als het quotum dat toelaat, zelfs als er nog " +"mensen op de wachtlijst staan. Reeds verzonden vouchers blijven geldig." #: pretix/base/settings.py:1614 msgid "Ask for a name" @@ -11177,6 +11348,11 @@ msgid "" "if they want more than one ticket, as every entry only grants one single " "ticket at a time." msgstr "" +"Met een verhoogde limiet kan een klant meer dan één ticket voor een " +"specifiek product aanvragen met hetzelfde, unieke e-mailadres. Ongeacht deze " +"instelling moeten ze echter meerdere keren het wachtlijstformulier invullen " +"als ze meer dan één ticket willen, aangezien elke inschrijving slechts recht " +"geeft op één ticket per keer." #: pretix/base/settings.py:1687 #, fuzzy @@ -11193,6 +11369,12 @@ msgid "" "failed scans will not be counted, and the user will not see the different " "check-in lists." msgstr "" +"Als deze optie is ingeschakeld, kunnen je klanten zien hoe vaak ze het " +"evenement hebben bezocht. Dit is meestal niet nodig, maar kan handig zijn in " +"combinatie met tickets die een bepaald aantal keren kunnen worden gebruikt, " +"zodat klanten kunnen zien hoe vaak ze al zijn gebruikt. Uitgangen of " +"mislukte scans worden niet meegeteld en de gebruiker ziet de verschillende " +"check-in-lijsten niet." #: pretix/base/settings.py:1701 msgid "Allow users to download tickets" @@ -11297,6 +11479,11 @@ msgid "" "in the event list or calendar. If you keep this option empty, low " "availability will not be shown publicly." msgstr "" +"Als de beschikbaarheid van tickets onder dit percentage komt, wordt het " +"evenement (of een datum, als het om een reeks evenementen gaat) in de " +"evenementenlijst of kalender gemarkeerd als evenement met lage " +"beschikbaarheid. Als je deze optie leeg laat, wordt de lage beschikbaarheid " +"niet openbaar weergegeven." #: pretix/base/settings.py:1794 msgid "Show availability in event overviews" @@ -11361,6 +11548,8 @@ msgid "" "This option currently only affects the calendar of this event series, not " "the organizer-wide calendar." msgstr "" +"Deze optie heeft momenteel alleen invloed op de kalender van deze " +"evenementenreeks, niet op de kalender van de organisator." #: pretix/base/settings.py:1850 #, fuzzy @@ -11370,7 +11559,7 @@ msgstr "Verberg alle niet beschikbare datums uit kalender- en lijstweergaven" #: pretix/base/settings.py:1862 pretix/base/settings.py:1871 msgid "No modifications after order was submitted" -msgstr "" +msgstr "Geen wijzigingen na het plaatsen van de bestelling" #: pretix/base/settings.py:1863 pretix/base/settings.py:1872 #, fuzzy @@ -11383,6 +11572,8 @@ msgstr "" #: pretix/base/settings.py:1864 pretix/base/settings.py:1873 msgid "Both the attendee and the person who ordered can make changes" msgstr "" +"Zowel de deelnemer als de persoon die de bestelling heeft geplaatst, kunnen " +"wijzigingen aanbrengen" #: pretix/base/settings.py:1868 #, fuzzy @@ -11401,6 +11592,8 @@ 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 "" +"Standaard zijn er geen wijzigingen meer mogelijk voor een bestelling zodra " +"een van de tickets in de bestelling is ingecheckt." #: pretix/base/settings.py:1894 msgid "Last date of modifications" @@ -11456,6 +11649,8 @@ 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 "" +"Wijzigingen toestaan ongeacht de prijs, zolang er geen terugbetaling nodig " +"is (d.w.z. de uiteindelijke prijs is niet lager dan wat al betaald is)." #: pretix/base/settings.py:1930 pretix/base/settings.py:1941 msgid "Allow changes regardless of price, even if this results in a refund." @@ -11485,10 +11680,16 @@ msgid "" "in individually. Use with care, and preferably only in combination with a " "limitation on price changes above." msgstr "" +"Standaard zijn orderwijzigingen uitgeschakeld nadat een ticket in de " +"bestelling is ingecheckt. Als je dit vakje aanvinkt, wordt deze vereiste " +"opgeheven. Het is nog steeds niet mogelijk om een add-on-product te " +"verwijderen dat al individueel is ingecheckt. Gebruik deze functie met zorg " +"en bij voorkeur alleen in combinatie met een beperking op prijswijzigingen " +"zoals hierboven beschreven." #: pretix/base/settings.py:1974 msgid "Allow individual attendees to change their ticket" -msgstr "" +msgstr "Laat individuele deelnemers hun ticket wijzigen" #: pretix/base/settings.py:1975 msgid "" @@ -11498,6 +11699,12 @@ msgid "" "total price of the order. Such changes can always only be made by the main " "customer." msgstr "" +"Standaard kan alleen de persoon die de tickets heeft besteld wijzigingen " +"aanbrengen. Als je dit vakje aanvinkt, kunnen individuele deelnemers ook " +"wijzigingen aanbrengen. Individuele deelnemers kunnen echter alleen " +"wijzigingen aanbrengen die geen invloed hebben op de totale prijs van de " +"bestelling. Dergelijke wijzigingen kunnen altijd alleen door de hoofdklant " +"worden aangebracht." #: pretix/base/settings.py:1987 msgid "Customers can cancel their unpaid orders" @@ -11516,6 +11723,10 @@ msgid "" "never charged. Note that it will be your responsibility to claim the " "cancellation fee from the user." msgstr "" +"Dit geldt alleen voor bestellingen waarvoor nog geen betaling is ontvangen. " +"Voor gratis bestellingen worden nooit annuleringskosten in rekening " +"gebracht. Houd er rekening mee dat het jouw verantwoordelijkheid is om de " +"annuleringskosten bij de gebruiker te claimen." #: pretix/base/settings.py:2010 #, fuzzy @@ -11623,6 +11834,8 @@ msgstr "" msgid "" "Do not show the cancellation fee to users when they request cancellation." msgstr "" +"Toon de annuleringskosten niet aan gebruikers wanneer zij een annulering " +"aanvragen." #: pretix/base/settings.py:2149 pretix/base/settings.py:2159 msgid "All refunds are issued to the original payment method" @@ -11642,7 +11855,7 @@ msgstr "Alle terugbetalingen worden omgezet in cadeaubonnen" #: pretix/base/settings.py:2152 pretix/base/settings.py:2162 msgid "Do not handle refunds automatically at all" -msgstr "" +msgstr "Verwerk terugbetalingen nooit automatisch" #: pretix/base/settings.py:2157 #: pretix/control/templates/pretixcontrol/order/index.html:149 @@ -11661,6 +11874,9 @@ msgid "" "empty if you want pretix to automatically generate the terms of cancellation " "based on your settings." msgstr "" +"Deze tekst wordt weergegeven wanneer annulering is toegestaan voor een " +"betaalde bestelling. Laat dit veld leeg als je wilt dat pretix automatisch " +"de annuleringsvoorwaarden genereert op basis van je instellingen." #: pretix/base/settings.py:2199 msgid "" @@ -11668,6 +11884,9 @@ msgid "" "order. Leave empty if you want pretix to automatically generate the terms of " "cancellation based on your settings." msgstr "" +"Deze tekst wordt weergegeven wanneer annulering is toegestaan voor een " +"onbetaalde of gratis bestelling. Laat dit veld leeg als je wilt dat pretix " +"automatisch de annuleringsvoorwaarden genereert op basis van je instellingen." #: pretix/base/settings.py:2209 pretix/control/forms/event.py:1836 msgid "Contact address" @@ -11693,7 +11912,7 @@ msgstr "" #: pretix/base/settings.py:2229 msgid "Privacy Policy URL" -msgstr "" +msgstr "URL privacybeleid" #: pretix/base/settings.py:2230 #, fuzzy @@ -11772,18 +11991,21 @@ msgid "" "If enabled, we will attach an .ics calendar file to order confirmation " "emails." msgstr "" -"Als deze optie is ingeschakeld zullen we een .ics-kalenderbestand meesturen " +"Als deze optie is ingeschakeld, zullen we een .ics-kalenderbestand meesturen " "bij bestellingsbevestigingsmails." #: pretix/base/settings.py:2307 msgid "Attach calendar files only after order has been paid" -msgstr "" +msgstr "Voeg kalenderbestanden pas toe nadat de bestelling is betaald" #: pretix/base/settings.py:2308 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 "" +"Gebruik dit als je bijvoorbeeld een privétoegangslink in het kalenderbestand " +"zet om ervoor te zorgen dat mensen deze pas ontvangen nadat hun betaling is " +"bevestigd." #: pretix/base/settings.py:2317 #, fuzzy @@ -11800,6 +12022,12 @@ msgid "" "data as calendar entries are often shared with an unspecified number of " "people." msgstr "" +"Je kunt dit gebruiken om informatie met je deelnemers te delen, zoals " +"reisinformatie of de link naar een digitaal evenement. Als je dit veld leeg " +"laat, plaatsen we daar een link naar de evenementenwinkel, de toegangstijd " +"en de naam van de organisator. We staan het gebruik van placeholders met " +"gevoelige persoonsgegevens niet toe, aangezien agenda-items vaak met een " +"onbepaald aantal mensen worden gedeeld." #: pretix/base/settings.py:2333 msgid "Subject prefix" @@ -12695,7 +12923,7 @@ msgstr "" #: pretix/base/settings.py:2888 #, python-brace-format msgid "Activate your account at {organizer}" -msgstr "" +msgstr "Activeer je account bij {organizer}" #: pretix/base/settings.py:2892 #, python-brace-format @@ -12716,11 +12944,26 @@ msgid "" "\n" "Your {organizer} team" msgstr "" +"Hallo {name},\n" +"\n" +"Bedankt voor het aanmaken van een account bij {organizer}!\n" +"\n" +"Om je account te activeren en een wachtwoord in te stellen, klik je hier:\n" +"\n" +"{url}\n" +"\n" +"Deze link is één dag geldig.\n" +"\n" +"Als je je niet zelf hebt aangemeld, kun je deze e-mail negeren.\n" +"\n" +"Met vriendelijke groet, \n" +"\n" +"Het team van {organizer}" #: pretix/base/settings.py:2910 #, python-brace-format msgid "Confirm email address for your account at {organizer}" -msgstr "" +msgstr "Bevestig het e-mailadres voor je account bij {organizer}" #: pretix/base/settings.py:2914 #, python-brace-format @@ -12741,11 +12984,27 @@ msgid "" "\n" "Your {organizer} team" msgstr "" +"Beste {name},\n" +"\n" +"Je hebt gevraagd om het e-mailadres van je account bij {organizer} te " +"wijzigen!\n" +"\n" +"Klik hier om de wijziging te bevestigen:\n" +"\n" +"{url}\n" +"\n" +"Deze link is één dag geldig.\n" +"\n" +"Als je dit niet hebt aangevraagd, kun je deze e-mail negeren.\n" +"\n" +"Met vriendelijke groet, \n" +"\n" +"Het team van {organizer}" #: pretix/base/settings.py:2932 #, python-brace-format msgid "Set a new password for your account at {organizer}" -msgstr "" +msgstr "Stel een nieuw wachtwoord in voor je account bij {organizer}" #: pretix/base/settings.py:2936 #, python-brace-format @@ -12766,6 +13025,21 @@ msgid "" "\n" "Your {organizer} team" msgstr "" +"Beste {name},\n" +"\n" +"Je hebt een nieuw wachtwoord aangevraagd voor je account bij {organizer}!\n" +"\n" +"Klik hier om een nieuw wachtwoord in te stellen:\n" +"\n" +"{url}\n" +"\n" +"Deze link is één dag geldig.\n" +"\n" +"Als je geen nieuw wachtwoord hebt aangevraagd, kun je deze e-mail negeren.\n" +"\n" +"Met vriendelijke groet, \n" +"\n" +"Het team van {organizer}" #: pretix/base/settings.py:2988 pretix/base/settings.py:2995 #: pretix/base/settings.py:3009 pretix/base/settings.py:3017 @@ -12807,6 +13081,8 @@ msgid "" "Use native spinners in the widget instead of custom ones for numeric inputs " "such as quantity." msgstr "" +"Gebruik native spinners in de widget in plaats van aangepaste spinners voor " +"numerieke invoer, zoals hoeveelheden." #: pretix/base/settings.py:3092 msgid "Only respected by modern browsers." @@ -12858,6 +13134,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 "" +"De titel wordt alleen weergegeven op de voorpagina van het evenement. Als er " +"geen kopafbeelding voor het evenement is geüpload, maar de kopafbeelding uit " +"het profiel van de organisator wordt gebruikt, wordt deze optie genegeerd en " +"wordt altijd de titel van het evenement weergegeven." #: pretix/base/settings.py:3150 pretix/control/forms/organizer.py:528 #, fuzzy @@ -12883,6 +13163,8 @@ msgstr "" #: pretix/base/settings.py:3180 msgid "Use header image also for events without an individually uploaded logo" msgstr "" +"Gebruik de kopafbeelding ook voor evenementen zonder een individueel " +"geüpload logo" #: pretix/base/settings.py:3188 msgid "Favicon" @@ -13092,13 +13374,15 @@ msgstr "" #: pretix/base/settings.py:3526 msgid "Enable cookie consent management features" -msgstr "" +msgstr "Functies voor het beheer van cookietoestemming inschakelen" #: pretix/base/settings.py:3532 msgid "" "By clicking \"Accept all cookies\", you agree to the storing of cookies and " "use of similar technologies on your device." msgstr "" +"Door op 'Alle cookies accepteren' te klikken, stem je in met het opslaan van " +"cookies en het gebruik van soortgelijke technologieën op je apparaat." #: pretix/base/settings.py:3539 #, fuzzy @@ -13113,10 +13397,14 @@ msgid "" "use cookies if they are essential to providing the services this website " "offers." msgstr "" +"We gebruiken cookies en soortgelijke technologieën om gegevens te verzamelen " +"waarmee we deze website en ons aanbod kunnen verbeteren. Als je hiermee niet " +"akkoord gaat, zullen we alleen cookies gebruiken als deze essentieel zijn " +"voor het leveren van de diensten die deze website aanbiedt." #: pretix/base/settings.py:3554 msgid "Secondary dialog text" -msgstr "" +msgstr "Secundaire dialoogtekst" #: pretix/base/settings.py:3560 #, fuzzy @@ -13132,7 +13420,7 @@ msgstr "Te kiezen titels" #: pretix/base/settings.py:3571 msgid "Accept all cookies" -msgstr "" +msgstr "Alle cookies accepteren" #: pretix/base/settings.py:3576 #, fuzzy @@ -13332,6 +13620,7 @@ msgstr "Vul een geldig verkoopkanaal in." #: pretix/base/settings.py:4095 msgid "This needs to be disabled if other NFC-based types are active." msgstr "" +"Dit moet worden uitgeschakeld als andere NFC-gebaseerde typen actief zijn." #: pretix/base/shredder.py:74 pretix/base/shredder.py:77 #, fuzzy @@ -13355,10 +13644,8 @@ msgid "This will remove all phone numbers from orders." msgstr "Dit zal alle telefoonnummers van bestellingen verwijderen." #: pretix/base/shredder.py:290 -#, fuzzy -#| msgid "Emails" msgid "Emails" -msgstr "Emails" +msgstr "E-mails" #: pretix/base/shredder.py:292 msgid "" @@ -13478,6 +13765,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 "" +"Je browser heeft ons laten weten dat je toegang wilt tot \"%(header_host)" +"s\". Helaas hebben we geen inhoud voor dit domein." #: pretix/base/templates/400_hostname.html:17 msgid "" @@ -13485,6 +13774,10 @@ 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 "" +"Het lijkt erop dat dit een nieuwe installatie van pretix is. Deze " +"foutmelding wordt waarschijnlijk veroorzaakt doordat je configuratie de " +"verkeerde site-URL bevat of doordat je reverse proxy de verkeerde header " +"verstuurt." #: pretix/base/templates/400_hostname.html:24 #, fuzzy @@ -13506,13 +13799,15 @@ msgstr "Negeer" #: pretix/base/templates/400_hostname.html:35 msgid "Derived host from headers" -msgstr "" +msgstr "Afgeleide host uit headers" #: 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 "" +"Als je dit zojuist hebt geconfigureerd als domein voor je ticketwinkel, moet " +"je dit nu instellen als een \"aangepast domein\" in je organisatoraccount." #: pretix/base/templates/403.html:4 pretix/base/templates/403.html:8 msgid "Permission denied" @@ -13590,6 +13885,8 @@ msgstr "" msgid "" "You have requested us to cancel an event which includes a larger bulk-refund:" msgstr "" +"Je hebt ons verzocht om een evenement te annuleren waarvoor een grote " +"bulkterugbetaling nodig is:" #: pretix/base/templates/pretixbase/email/cancel_confirm.txt:6 #, fuzzy @@ -13602,6 +13899,8 @@ msgid "" "Please confirm that you want to proceed by coping the following confirmation " "code into the cancellation form:" msgstr "" +"Bevestig dat je wilt doorgaan door de volgende code in het " +"annuleringsformulier in te vullen:" #: pretix/base/templates/pretixbase/email/email_footer.html:3 #, python-format @@ -13623,6 +13922,8 @@ msgstr "Reden voor de terugbetaling" #: 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 "" +"Als je export vijf keer achter elkaar mislukt, wordt deze niet meer " +"verzonden." #: pretix/base/templates/pretixbase/email/export_failed.txt:10 #, fuzzy @@ -13727,12 +14028,30 @@ msgid "" "\n" "Your pretix team\n" msgstr "" +"Hallo,\n" +"\n" +"Hierbij bevestigen wij dat de volgende gegevensvernietiging is voltooid:\n" +"\n" +"Organisator: %(organizer)s\n" +"\n" +"Evenement: %(event)s\n" +"\n" +"Gegevensselectie: %(shredders)s\n" +"\n" +"Starttijd: %(start_time)s (nieuwe gegevens die na dit tijdstip zijn " +"toegevoegd, zijn mogelijk niet verwijderd)\n" +"\n" +"Met vriendelijke groet,\n" +"\n" +"Het pretix-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 "" +"Dit verkoopkanaal kan niet correct worden gebruikt omdat de betreffende plug-" +"in niet actief is voor dit evenement." #: pretix/base/templates/pretixbase/forms/widgets/portrait_image.html:10 msgid "Upload photo" @@ -13741,17 +14060,17 @@ msgstr "Foto uploaden" #: pretix/base/templates/pretixbase/forms/widgets/reldate.html:14 #, python-format msgid "%(number)s days %(relation)s %(relation_to)s" -msgstr "" +msgstr "%(number)s dagen %(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 minuten %(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 dagen %(relation)s %(relation_to)s om %(time_of_day)s" #: pretix/base/templates/pretixbase/redirect.html:5 #: pretix/base/templates/pretixbase/redirect.html:9 @@ -13766,10 +14085,13 @@ msgid "" "The link you clicked on wants to redirect you to a destination on the " "website %(host)s." msgstr "" +"De link waarop je hebt geklikt, wil je doorverwijzen naar een bestemming op " +"de website %(host)s." #: pretix/base/templates/pretixbase/redirect.html:14 msgid "Please only proceed if you trust this website to be safe." msgstr "" +"Ga alleen verder als je ervan overtuigd bent dat deze website veilig is." #: pretix/base/templates/pretixbase/redirect.html:20 #, fuzzy, python-format @@ -13801,7 +14123,7 @@ msgstr "Download kaartje" #: pretix/base/timeframes.py:49 msgctxt "reporting_timeframe" msgid "Today" -msgstr "" +msgstr "Vandaag" #: pretix/base/timeframes.py:53 pretix/base/timeframes.py:62 #: pretix/base/timeframes.py:71 pretix/base/timeframes.py:80 @@ -13816,7 +14138,7 @@ msgstr "Bestellingen per dag" #: pretix/base/timeframes.py:58 msgctxt "reporting_timeframe" msgid "Yesterday" -msgstr "" +msgstr "Gisteren" #: pretix/base/timeframes.py:67 #, fuzzy @@ -13835,7 +14157,7 @@ msgstr "Laatste datum" #: pretix/base/timeframes.py:85 msgctxt "reporting_timeframe" msgid "Tomorrow" -msgstr "" +msgstr "Morgen" #: pretix/base/timeframes.py:94 #, fuzzy @@ -13862,7 +14184,7 @@ msgstr "Huidige waarde" #: pretix/base/timeframes.py:134 pretix/base/timeframes.py:143 msgctxt "reporting_timeframe" msgid "by week" -msgstr "" +msgstr "per week" #: pretix/base/timeframes.py:121 #, fuzzy @@ -13882,7 +14204,7 @@ msgstr "Voorbeeld" #: pretix/base/timeframes.py:139 msgctxt "reporting_timeframe" msgid "Next week" -msgstr "" +msgstr "Volgende week" #: pretix/base/timeframes.py:148 #, fuzzy @@ -13909,7 +14231,7 @@ msgstr "Aanmaakdatum" #: pretix/base/timeframes.py:166 msgctxt "reporting_timeframe" msgid "Previous month" -msgstr "" +msgstr "Vorige maand" #: pretix/base/timeframes.py:175 #, fuzzy @@ -13929,7 +14251,7 @@ msgstr "Huidige waarde" #: pretix/base/timeframes.py:206 pretix/base/timeframes.py:217 msgctxt "reporting_timeframe" msgid "by quarter" -msgstr "" +msgstr "per kwartaal" #: pretix/base/timeframes.py:193 #, fuzzy @@ -13941,12 +14263,12 @@ msgstr "Momenteel in winkelwagens" #: pretix/base/timeframes.py:202 msgctxt "reporting_timeframe" msgid "Previous quarter" -msgstr "" +msgstr "Vorig kwartaal" #: pretix/base/timeframes.py:211 msgctxt "reporting_timeframe" msgid "Next quarter" -msgstr "" +msgstr "Volgend kwartaal" #: pretix/base/timeframes.py:222 #, fuzzy @@ -13959,7 +14281,7 @@ msgstr "Huidige waarde" #: pretix/base/timeframes.py:244 pretix/base/timeframes.py:253 msgctxt "reporting_timeframe" msgid "by year" -msgstr "" +msgstr "per jaar" #: pretix/base/timeframes.py:231 #, fuzzy @@ -13978,12 +14300,12 @@ msgstr "Toon voorbeeld email" #: pretix/base/timeframes.py:249 msgctxt "reporting_timeframe" msgid "Next year" -msgstr "" +msgstr "Volgend jaar" #: pretix/base/timeframes.py:258 msgctxt "reporting_timeframe" msgid "All future (excluding today)" -msgstr "" +msgstr "Toekomst (behalve vandaag)" #: pretix/base/timeframes.py:262 pretix/base/timeframes.py:271 #, fuzzy @@ -14063,6 +14385,8 @@ msgid "" "automatically because the event is over and no end of presale has been " "configured" msgstr "" +"automatisch omdat het evenement voorbij is en er geen einde van de " +"voorverkoop is geconfigureerd" #: pretix/base/timeline.py:108 #, fuzzy @@ -14299,7 +14623,7 @@ msgstr "" #: pretix/control/forms/__init__.py:343 msgid "Development only" -msgstr "" +msgstr "Alleen ontwikkeling" #: pretix/control/forms/__init__.py:344 #, fuzzy @@ -14321,10 +14645,13 @@ msgid "" "must select a specific set of products for this check-in list, only " "including the possible add-on products." msgstr "" +"Als je het inchecken van add-on-tickets toestaat door het hoofdticket te " +"scannen, moet je een specifieke set producten selecteren voor deze check-in-" +"lijst, die alleen de mogelijke add-on-producten bevat." #: pretix/control/forms/checkin.py:176 msgid "Barcode" -msgstr "" +msgstr "Streepjescode" #: pretix/control/forms/checkin.py:179 #, fuzzy @@ -14341,6 +14668,8 @@ msgstr "Inchecklijst" #: pretix/control/forms/checkin.py:187 msgid "Allow check-in of unpaid order (if check-in list permits it)" msgstr "" +"Check-in van onbetaalde bestelling toestaan (als de check-in-lijst dit " +"toestaat)" #: pretix/control/forms/checkin.py:191 #, fuzzy @@ -14357,6 +14686,8 @@ msgstr "Alle toegangslocaties" #: pretix/control/forms/checkin.py:222 msgid "I am sure that the check-in state of the entire event should be reset." msgstr "" +"Ik weet zeker dat de check-in-status van het hele evenement moet worden " +"gereset." #: pretix/control/forms/event.py:91 msgid "Use languages" @@ -14382,11 +14713,11 @@ msgstr "Tijdzone evenement" #: pretix/control/forms/event.py:142 msgid "I don't want to specify taxes now" -msgstr "" +msgstr "Ik wil nu geen belastingen specificeren" #: pretix/control/forms/event.py:143 msgid "You can always configure tax rates later." -msgstr "" +msgstr "Je kunt de belastingtarieven altijd later configureren." #: pretix/control/forms/event.py:147 msgid "Sales tax rate" @@ -14439,6 +14770,8 @@ msgid "" "You have not specified a tax rate. If you do not want us to compute sales " "taxes, please check \"{field}\" above." msgstr "" +"Je hebt geen belastingtarief opgegeven. Als je niet wilt dat wij " +"omzetbelasting berekenen, vink dan hierboven \"{field}\" aan." #: pretix/control/forms/event.py:312 msgid "Copy configuration from" @@ -14457,11 +14790,11 @@ msgstr "Standaard ({value})" #: pretix/control/forms/event.py:381 msgid "The currency cannot be changed because orders already exist." -msgstr "" +msgstr "De valuta kan niet worden gewijzigd omdat er al orders bestaan." #: pretix/control/forms/event.py:392 pretix/control/forms/event.py:405 msgid "Domain" -msgstr "" +msgstr "Domein" #: pretix/control/forms/event.py:396 #, fuzzy @@ -14487,6 +14820,8 @@ msgid "" "A validation error has occurred on a setting that is not part of this form: " "{error}" msgstr "" +"Er is een validatiefout opgetreden bij een instelling die geen deel uitmaakt " +"van dit formulier: {error}" #: pretix/control/forms/event.py:530 pretix/control/forms/organizer.py:461 msgid "Name format" @@ -14554,6 +14889,7 @@ msgstr "inclusief alle belasting" #: pretix/control/forms/event.py:815 msgid "Recommended if you sell tickets at least partly to consumers." msgstr "" +"Aanbevolen als je tickets ten minste gedeeltelijk aan consumenten verkoopt." #: pretix/control/forms/event.py:819 #, fuzzy @@ -14564,6 +14900,7 @@ msgstr "inclusief alle belasting" #: pretix/control/forms/event.py:820 msgid "Recommended only if you sell tickets primarily to business customers." msgstr "" +"Alleen aanbevolen als je voornamelijk tickets verkoopt aan zakelijke klanten." #: pretix/control/forms/event.py:856 #, fuzzy @@ -14578,6 +14915,10 @@ msgid "" "product, the total tax amount can differ from when it would be computed from " "the order total." msgstr "" +"Aanbevolen wanneer e-facturering niet vereist is. Elk product wordt verkocht " +"tegen de geadverteerde netto- en brutoprijs. Bij bestellingen van meer dan " +"één product kan het totale belastingbedrag echter afwijken van het bedrag " +"dat zou worden berekend op basis van het totaalbedrag van de bestelling." #: pretix/control/forms/event.py:865 msgid "" @@ -14586,6 +14927,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 "" +"Aanbevolen voor e-facturering wanneer je voornamelijk aan zakelijke klanten " +"verkoopt en prijzen exclusief btw aan klanten toont. De brutoprijs van " +"sommige producten kan worden gewijzigd om een correcte afronding te " +"garanderen, terwijl de nettoprijzen worden behouden zoals geconfigureerd. " +"Hierdoor kan het daadwerkelijke betalingsbedrag afwijken." #: pretix/control/forms/event.py:871 msgid "" @@ -14595,6 +14941,12 @@ msgid "" "configured whenever possible. Gross prices may still change if they are " "impossible to derive from a rounded net price." msgstr "" +"Aanbevolen voor e-facturering wanneer je voornamelijk aan consumenten " +"verkoopt. De bruto- of nettoprijs van sommige producten kan automatisch " +"worden gewijzigd om een correcte afronding van het ordertotaal te " +"garanderen. Het systeem probeert de bruto prijzen zoveel mogelijk te " +"behouden zoals ze zijn geconfigureerd. Brutoprijzen kunnen nog steeds " +"veranderen als ze niet kunnen worden afgeleid uit een afgeronde nettoprijs." #: pretix/control/forms/event.py:972 msgid "Generate invoices for Sales channels" @@ -14626,12 +14978,16 @@ msgid "" "An invoice will be issued before payment if the customer selects one of the " "following payment methods: {list}" msgstr "" +"Er wordt een factuur uitgegeven vóór betaling als de klant een van de " +"volgende betaalmethoden selecteert: {list}" #: pretix/control/forms/event.py:1011 msgid "" "None of the currently configured payment methods will cause an invoice to be " "issued before payment." msgstr "" +"Geen van de momenteel geconfigureerde betaalmethoden zorgt ervoor dat er een " +"factuur wordt uitgegeven vóór de betaling." #: pretix/control/forms/event.py:1020 #, fuzzy @@ -14775,19 +15131,19 @@ msgstr "Tekst (aangevraagd door gebruiker)" #: pretix/control/forms/event.py:1239 msgid "Text (if order will expire automatically)" -msgstr "" +msgstr "Tekst (als de bestelling automatisch verloopt)" #: pretix/control/forms/event.py:1244 msgid "Subject (if order will expire automatically)" -msgstr "" +msgstr "Onderwerp (als de bestelling automatisch verloopt)" #: pretix/control/forms/event.py:1249 msgid "Text (if order will not expire automatically)" -msgstr "" +msgstr "Tekst (als de bestelling niet automatisch verloopt)" #: pretix/control/forms/event.py:1254 msgid "Subject (if order will not expire automatically)" -msgstr "" +msgstr "Onderwerp (als de bestelling niet automatisch verloopt)" #: pretix/control/forms/event.py:1259 #, fuzzy @@ -14816,6 +15172,8 @@ 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 "" +"Dit wordt alleen gebruikt als de factuur naar een ander e-mailadres wordt " +"verzonden of op een ander tijdstip dan de orderbevestiging." #: pretix/control/forms/event.py:1321 msgid "" @@ -14970,6 +15328,8 @@ msgid "" "A combination of this calculation mode with a non-zero tax rate does not " "make sense." msgstr "" +"Een combinatie van deze berekeningswijze met een belastingtarief dat niet " +"nul is, heeft geen zin." #: pretix/control/forms/event.py:1678 pretix/control/forms/event.py:1682 #, fuzzy @@ -15253,7 +15613,7 @@ msgstr "Maximale som van betalingen en terugbetalingen" #: pretix/control/forms/filter.py:628 msgid "At least one ticket with check-in" -msgstr "" +msgstr "Ten minste één ticket met check-in" #: pretix/control/forms/filter.py:632 #, fuzzy @@ -15330,7 +15690,7 @@ msgstr "Winkel live en voorverkoop actief" #: pretix/control/forms/filter.py:1361 pretix/control/forms/filter.py:2165 msgid "Inactive" -msgstr "Uitgeschakeld" +msgstr "Inactief" #: pretix/control/forms/filter.py:1362 pretix/control/forms/filter.py:1829 #: pretix/control/templates/pretixcontrol/events/index.html:153 @@ -15351,7 +15711,7 @@ msgstr "Voorverkoop afgelopen" #: pretix/control/forms/filter.py:2489 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:84 msgid "Date from" -msgstr "Datum vanaf" +msgstr "Datum van" #: pretix/control/forms/filter.py:1375 pretix/control/forms/filter.py:1378 #: pretix/control/forms/filter.py:1863 pretix/control/forms/filter.py:1866 @@ -15694,7 +16054,7 @@ msgstr "Attributie voor Leaflet-tegels" #: pretix/control/forms/global_settings.py:103 msgid "ApplePay MerchantID Domain Association" -msgstr "" +msgstr "ApplePay MerchantID-domeinkoppeling" #: pretix/control/forms/global_settings.py:104 #, python-brace-format @@ -15702,6 +16062,8 @@ msgid "" "Will be served at {domain}/.well-known/apple-developer-merchantid-domain-" "association" msgstr "" +"Wordt geserveerd op {domain}/.well-known/apple-developer-merchantid-domain-" +"association" #: pretix/control/forms/global_settings.py:122 msgid "Perform update checks" @@ -15911,6 +16273,8 @@ msgid "" "Products in this category are regular products, but are only shown in the " "cross-selling step, according to the configuration below." msgstr "" +"Producten in deze categorie zijn reguliere producten, maar worden alleen " +"getoond in de cross-selling-stap, volgens de onderstaande configuratie." #: pretix/control/forms/item.py:112 msgid "" @@ -15918,6 +16282,9 @@ msgid "" "but are additionally shown in the cross-selling step, according to the " "configuration below." msgstr "" +"Producten in deze categorie zijn reguliere producten die op de voorpagina " +"worden weergegeven, maar worden bovendien getoond in de cross-selling-stap, " +"volgens de onderstaande configuratie." #: pretix/control/forms/item.py:141 pretix/control/forms/item.py:217 msgid "This field is required" @@ -16032,6 +16399,8 @@ msgid "" "This option is deprecated. For new products, use the newer option below that " "refers to another product instead of a quota." msgstr "" +"Deze optie is verouderd. Gebruik voor nieuwe producten de nieuwere optie " +"hieronder, die verwijst naar een ander product in plaats van naar een quotum." #: pretix/control/forms/item.py:701 pretix/control/forms/item.py:717 msgid "Shown independently of other products" @@ -16066,12 +16435,17 @@ msgid "" "restrict the validity of the gift card. A validity of gift cards can be set " "in your organizer settings." msgstr "" +"Stel geen specifieke geldigheidsduur in voor cadeaubonproducten, aangezien " +"dit de geldigheid van de cadeaubon niet beperkt. De geldigheidsduur van " +"cadeaubonnen kan worden ingesteld in je organisatorinstellingen." #: pretix/control/forms/item.py:795 pretix/control/forms/item.py:1062 msgid "" "If a valid membership is required, at least one valid membership type needs " "to be selected." msgstr "" +"Als een geldig lidmaatschap vereist is, moet ten minste één geldig " +"lidmaatschapstype worden geselecteerd." #: pretix/control/forms/item.py:806 msgid "" @@ -16080,6 +16454,10 @@ msgid "" "the membership later. If you want the membership to be non-personalized, set " "the membership type to be transferable." msgstr "" +"Je product verleent een niet-overdraagbaar lidmaatschap en moet daarom een " +"gepersonaliseerd toegangsbewijs zijn. Anders kunnen klanten het lidmaatschap " +"later mogelijk niet gebruiken. Als je wilt dat het lidmaatschap niet-" +"gepersonaliseerd is, stel je het lidmaatschapstype in op overdraagbaar." #: pretix/control/forms/item.py:815 #, fuzzy @@ -16094,6 +16472,8 @@ msgid "" "You have selected dynamic validity but have not entered a time period. This " "would render the tickets unusable." msgstr "" +"Je hebt dynamische geldigheid geselecteerd, maar geen tijdsperiode " +"ingevoerd. Hierdoor zouden de tickets onbruikbaar worden." #: pretix/control/forms/item.py:927 #, python-format @@ -16172,6 +16552,9 @@ msgid "" "only use characters A-Z, a-z, 0-9, and common special characters " "({characters})." msgstr "" +"Het wachtwoord bevat tekens die niet worden ondersteund door ons e-" +"mailsysteem. Gebruik alleen tekens A-Z, a-z, 0-9 en veelgebruikte speciale " +"tekens ({characters})." #: pretix/control/forms/mailsetup.py:70 msgid "Use STARTTLS" @@ -16202,6 +16585,8 @@ msgid "" "You are not allowed to use this mail server, please choose one with a public " "IP address instead." msgstr "" +"Je mag deze mailserver niet gebruiken. Kies in plaats daarvan een server met " +"een openbaar IP-adres." #: pretix/control/forms/mailsetup.py:103 #, fuzzy @@ -16217,11 +16602,11 @@ msgstr "Overzicht" #: pretix/control/forms/mapping.py:41 msgid "Fill if new" -msgstr "" +msgstr "Invullen indien nieuw" #: pretix/control/forms/mapping.py:42 msgid "Fill if empty" -msgstr "" +msgstr "Invullen indien leeg" #: pretix/control/forms/mapping.py:43 #, fuzzy @@ -16256,6 +16641,8 @@ msgstr "Maak één bestelling met een ticket per regel" msgid "" "Group multiple lines together into the same order based on a grouping column" msgstr "" +"Groepeer meerdere regels in dezelfde bestelling op basis van een " +"groeperingskolom" #: pretix/control/forms/modelimport.py:92 msgid "Create orders as fully paid" @@ -16305,6 +16692,15 @@ msgid "" "deadline arrives, since we expect that you want to collect the amount " "somehow and not auto-cancel the order." msgstr "" +"Als je dit vakje aanvinkt, zal deze bestelling voor de meeste doeleinden " +"worden behandeld als een betaalde bestelling, ook al is ze nog niet betaald. " +"Dat betekent dat de klant de tickets al kan downloaden en gebruiken, " +"ongeacht je evenementinstellingen, en dat de bestelling door sommige plug-" +"ins als betaald kan worden behandeld. Als je dit vakje aanvinkt, wordt deze " +"bestelling niet automatisch als \"verlopen\" gemarkeerd wanneer de " +"betalingstermijn verstrijkt, omdat we ervan uitgaan dat je het bedrag op de " +"een of andere manier wilt innen en de bestelling niet automatisch wilt " +"annuleren." #: pretix/control/forms/orders.py:94 msgid "Overbook quota" @@ -16376,18 +16772,24 @@ msgid "" "Will be included in the notification email when the respective placeholder " "is present in the configured email text." msgstr "" +"Wordt opgenomen in de kennisgevingsmail wanneer de betreffende placeholder " +"aanwezig is in de geconfigureerde 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 "" +"Voer een brutobedrag in. Afhankelijk van je evenementinstellingen worden de " +"belastingen op dezelfde manier verdeeld als de orderposities." #: 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 "" +"Voer een brutobedrag in. Afhankelijk van je evenementinstellingen wordt het " +"standaard belastingtarief in rekening gebracht." #: pretix/control/forms/orders.py:213 #, fuzzy @@ -16398,10 +16800,12 @@ msgstr "De evenementsinstellingen zijn aangepast." #: pretix/control/forms/orders.py:241 msgid "A mail will only be sent if the order is fully paid after this." msgstr "" +"Er wordt alleen een e-mail verzonden als de bestelling hierna volledig is " +"betaald." #: pretix/control/forms/orders.py:248 msgid "Payment amount" -msgstr "Te betalen bedrag" +msgstr "Betalingsbedrag" #: pretix/control/forms/orders.py:252 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/control.html:24 @@ -16518,7 +16922,7 @@ msgstr "Kaartjesgeheim" #: pretix/control/forms/orders.py:489 msgid "Validity start" -msgstr "" +msgstr "Geldig vanaf" #: pretix/control/forms/orders.py:494 #, fuzzy @@ -16535,6 +16939,8 @@ 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 "" +"Dit heeft invloed op zowel het ticketgeheim (vaak gebruikt als QR-code) als " +"de link die wordt gebruikt om individueel toegang te krijgen tot het ticket." #: pretix/control/forms/orders.py:512 msgid "Cancel this position" @@ -16557,6 +16963,9 @@ msgid "" "Note that payment fees have a special semantic and might automatically be " "changed if the payment method of the order is changed." msgstr "" +"Houd er rekening mee dat betalingskosten een speciale semantiek hebben en " +"automatisch kunnen worden gewijzigd als de betaalmethode van de bestelling " +"wordt gewijzigd." #: pretix/control/forms/orders.py:639 #: pretix/control/templates/pretixcontrol/order/change.html:214 @@ -16589,6 +16998,8 @@ msgid "" "Will be ignored if tickets exceed a given size limit to ensure email " "deliverability." msgstr "" +"Wordt genegeerd als tickets een bepaalde groottelimiet overschrijden om de " +"leverbaarheid van e-mails te garanderen." #: pretix/control/forms/orders.py:742 #, fuzzy @@ -16650,10 +17061,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 "" +"Alleen beschikbaar voor betaalmethoden die automatische terugbetalingen " +"ondersteunen. Tickets die zijn geblokkeerd (handmatig of door een plug-in) " +"worden niet automatisch geannuleerd en moeten handmatig worden afgehandeld." #: pretix/control/forms/orders.py:880 msgid "Create refund in the manual refund to-do list" -msgstr "" +msgstr "Maak een terugbetaling aan in de handmatige terugbetalingslijst" #: pretix/control/forms/orders.py:883 #, fuzzy @@ -16803,12 +17217,14 @@ msgstr "Bevestig dat je ALLE datums in deze evenementenreeks wilt annuleren." #: pretix/control/forms/orders.py:1037 msgid "I understand that this is not reversible and want to continue" -msgstr "" +msgstr "Ik begrijp dat dit niet ongedaan kan worden gemaakt en wil doorgaan" #: pretix/control/forms/orders.py:1042 msgid "" "We have just emailed you a confirmation code to enter to confirm this action" msgstr "" +"We hebben je zojuist een bevestigingscode gemaild die je moet invoeren om " +"deze actie te bevestigen" #: pretix/control/forms/orders.py:1055 #, fuzzy @@ -16840,6 +17256,8 @@ msgid "" "Do not choose an event for this mode. You can assign events to this domain " "in event settings." msgstr "" +"Kies geen evenement voor deze modus. Je kunt evenementen aan dit domein " +"toewijzen in de evenementeninstellingen." #: pretix/control/forms/organizer.py:195 msgid "You need to choose an event." @@ -16847,7 +17265,7 @@ msgstr "Je moet een evenement kiezen." #: pretix/control/forms/organizer.py:227 msgid "You may set only one organizer domain." -msgstr "" +msgstr "Je kunt slechts één organisatiedomein instellen." #: pretix/control/forms/organizer.py:334 msgid "" @@ -16873,6 +17291,9 @@ msgid "" "This feature is currently in an experimental stage. It only supports very " "limited use cases and might change at any point." msgstr "" +"Deze functie bevindt zich momenteel in een experimentele fase. Ze " +"ondersteunt slechts een zeer beperkt aantal gebruikssituaties en kan op elk " +"moment worden gewijzigd." #: pretix/control/forms/organizer.py:597 msgid "This will be attached to every email." @@ -16929,12 +17350,12 @@ msgstr "Cliëntgeheim" #: pretix/control/forms/organizer.py:1068 msgctxt "sso_oidc" msgid "Scope" -msgstr "" +msgstr "Bereik" #: pretix/control/forms/organizer.py:1069 msgctxt "sso_oidc" msgid "Multiple scopes separated with spaces." -msgstr "" +msgstr "Meerdere scopes gescheiden door spaties." #: pretix/control/forms/organizer.py:1073 #, fuzzy @@ -16949,6 +17370,8 @@ msgid "" "We will assume that the contents of the user ID fields are unique and can " "never change for a user." msgstr "" +"We gaan ervan uit dat de inhoud van de gebruikers-ID-velden uniek is en " +"nooit kan veranderen voor een gebruiker." #: pretix/control/forms/organizer.py:1080 #, fuzzy @@ -16964,6 +17387,9 @@ msgid "" "verified to really belong the the user. If this can't be guaranteed, " "security issues might arise." msgstr "" +"We gaan ervan uit dat alle e-mailadressen die we van de SSO-provider " +"ontvangen, geverifieerd zijn en echt van de gebruiker zijn. Als dit niet " +"gegarandeerd kan worden, kunnen er beveiligingsproblemen ontstaan." #: pretix/control/forms/organizer.py:1088 #, fuzzy @@ -16975,7 +17401,7 @@ msgstr "Telefoonnummer" #: pretix/control/forms/organizer.py:1092 msgctxt "sso_oidc" msgid "Query parameters" -msgstr "" +msgstr "Queryparameters" #: pretix/control/forms/organizer.py:1093 #, python-brace-format @@ -16984,6 +17410,8 @@ msgid "" "Optional query parameters, that will be added to calls to the authorization " "endpoint. Enter as: {example}" msgstr "" +"Optionele queryparameters die worden toegevoegd aan oproepen naar het " +"autorisatie-eindpunt. Voer in als: {example}" #: pretix/control/forms/organizer.py:1154 #, fuzzy @@ -17011,6 +17439,11 @@ msgid "" "will grant the other organizer access to cryptographic key material required " "to interact with the media type." msgstr "" +"Dit is vereist als je wilt dat de andere organisator deelneemt aan een " +"gedeeld systeem met bijvoorbeeld NFC-betaalchips. Gebruik deze optie alleen " +"voor organisatoren die je vertrouwt, aangezien dit (afhankelijk van de " +"geactiveerde mediatypen) de andere organisator toegang geeft tot " +"cryptografische gegevens die nodig zijn om met het mediatype te communiceren." #: pretix/control/forms/organizer.py:1208 #, fuzzy @@ -17032,7 +17465,7 @@ msgstr "Er bestaat al een voucher met deze code." #: pretix/control/forms/organizer.py:1257 msgid "Events with active plugin" -msgstr "" +msgstr "Evenementen met actieve plug-in" #: pretix/control/forms/renderers.py:56 #: pretix/control/templates/pretixcontrol/items/question_edit.html:139 @@ -17259,13 +17692,15 @@ msgstr "CSV-invoer moet op de eerste regel een header bevatten." #: pretix/control/forms/vouchers.py:378 #, python-brace-format msgid "CSV parsing failed: {error}." -msgstr "" +msgstr "CSV-parsing mislukt: {error}." #: pretix/control/forms/vouchers.py:380 msgid "" "CSV input was not recognized to have multiple columns, maybe you have some " "invalid quoted field in your input." msgstr "" +"CSV-invoer werd niet herkend als meerdere kolommen. Mogelijk bevat de invoer " +"een ongeldig veld tussen aanhalingstekens." #: pretix/control/forms/vouchers.py:382 #, python-brace-format @@ -17297,6 +17732,8 @@ msgid "" "The voucher code {code} is too short. Make sure all voucher codes are at " "least {min_length} characters long." msgstr "" +"De vouchercode {code} is te kort. Zorg ervoor dat alle vouchercodes minimaal " +"{min_length} tekens lang zijn." #: pretix/control/forms/vouchers.py:432 #, fuzzy, python-brace-format @@ -17629,7 +18066,7 @@ msgstr "Plaats #{posid} is ingecheckt op {datetime} voor lijst \"{list}\"." #: pretix/control/logdisplay.py:446 #, python-brace-format msgid "Data successfully transferred to {provider_display_name}." -msgstr "" +msgstr "Gegevens succesvol overgedragen naar {provider_display_name}." #: pretix/control/logdisplay.py:465 #, python-brace-format @@ -17637,6 +18074,8 @@ msgid "" "Transferring data to {provider_display_name} failed due to invalid " "configuration:" msgstr "" +"Het overzetten van gegevens naar {provider_display_name} is mislukt vanwege " +"een ongeldige configuratie:" #: pretix/control/logdisplay.py:466 #, python-brace-format @@ -17644,16 +18083,20 @@ msgid "" "Maximum number of retries exceeded while transferring data to " "{provider_display_name}:" msgstr "" +"Maximaal aantal pogingen overschreden tijdens het overzetten van gegevens " +"naar {provider_display_name}:" #: pretix/control/logdisplay.py:467 #, python-brace-format msgid "Error while transferring data to {provider_display_name}:" -msgstr "" +msgstr "Fout bij het overzetten van gegevens naar {provider_display_name}:" #: pretix/control/logdisplay.py:468 pretix/control/logdisplay.py:469 #, python-brace-format msgid "Internal error while transferring data to {provider_display_name}." msgstr "" +"Interne fout tijdens het overzetten van gegevens naar {provider_display_name}" +"." #: pretix/control/logdisplay.py:483 pretix/control/logdisplay.py:830 msgid "The settings of a payment provider have been changed." @@ -17671,7 +18114,7 @@ msgstr "Geblokkeerde zitplaatsen" #: pretix/control/logdisplay.py:494 msgid "Blocked because of an API integration" -msgstr "" +msgstr "Geblokkeerd vanwege een API-integratie" #: pretix/control/logdisplay.py:498 #, python-brace-format @@ -17804,7 +18247,7 @@ msgstr "De uitnodiging is opnieuw verstuurd." #: pretix/control/logdisplay.py:529 #, python-brace-format msgid "The transmission of invoice {full_invoice_no} has failed." -msgstr "" +msgstr "De verzending van factuur {full_invoice_no} is mislukt." #: pretix/control/logdisplay.py:530 #, python-brace-format @@ -17812,11 +18255,13 @@ msgid "" "Invoice {full_invoice_no} has not been transmitted because the transmission " "provider does not support test mode invoices." msgstr "" +"Factuur {full_invoice_no} is niet verzonden omdat de verzendprovider geen " +"facturen in testmodus ondersteunt." #: pretix/control/logdisplay.py:532 #, python-brace-format msgid "The invoice {full_invoice_no} has been scheduled for retransmission." -msgstr "" +msgstr "De factuur {full_invoice_no} is gepland voor herverzending." #: pretix/control/logdisplay.py:533 msgid "The order's internal comment has been updated." @@ -18170,7 +18615,7 @@ msgstr "Het gekozen product is verwijderd." #: pretix/control/logdisplay.py:701 pretix/control/logdisplay.py:748 #, python-brace-format msgid "A scheduled export has failed: {reason}." -msgstr "" +msgstr "Een geplande export is mislukt: {reason}." #: pretix/control/logdisplay.py:702 #, fuzzy @@ -18222,7 +18667,7 @@ msgstr "De toegangslocatie is aangepast." #: pretix/control/logdisplay.py:710 msgid "The webhook call retry jobs have been manually expedited." -msgstr "" +msgstr "De oproepherhalingsopdrachten naar de webhook zijn handmatig versneld." #: pretix/control/logdisplay.py:711 #, fuzzy @@ -18400,11 +18845,11 @@ msgstr "Dit evenement is verwijderd." #: pretix/control/logdisplay.py:742 msgid "A removal process for personal data has been started." -msgstr "" +msgstr "Er is een verwijderingsproces voor persoonsgegevens gestart." #: pretix/control/logdisplay.py:743 msgid "A removal process for personal data has been completed." -msgstr "" +msgstr "Het verwijderingsproces voor persoonsgegevens is voltooid." #: pretix/control/logdisplay.py:749 msgid "The user has been created." @@ -18416,6 +18861,8 @@ msgid "" "A first login using {agent_type} on {os_type} from {country} has been " "detected." msgstr "" +"Er is een eerste aanmelding gedetecteerd met {agent_type} op {os_type} " +"vanuit {country}." #: pretix/control/logdisplay.py:752 pretix/control/views/user.py:477 #: pretix/control/views/user.py:537 pretix/control/views/user.py:596 @@ -19173,7 +19620,7 @@ msgstr "Systeemvraag" #: pretix/control/navigation.py:455 pretix/control/navigation.py:675 msgid "Data sync problems" -msgstr "" +msgstr "Problemen met gegevenssynchronisatie" #: pretix/control/navigation.py:506 #: pretix/control/templates/pretixcontrol/organizers/properties.html:5 @@ -19204,7 +19651,7 @@ msgstr "Klant" #: pretix/control/templates/pretixcontrol/organizers/ssoclients.html:4 #: pretix/control/templates/pretixcontrol/organizers/ssoclients.html:6 msgid "SSO clients" -msgstr "" +msgstr "SSO-klanten" #: pretix/control/navigation.py:609 #: pretix/control/templates/pretixcontrol/organizers/ssoproviders.html:4 @@ -19271,7 +19718,7 @@ msgstr "Registreren" #: pretix/presale/templates/pretixpresale/organizers/customer_resetpw.html:28 #: pretix/presale/templates/pretixpresale/organizers/customer_resetpw.html:44 msgid "Log in" -msgstr "Log in" +msgstr "Inloggen" #: pretix/control/templates/pretixcontrol/auth/login.html:38 msgid "Lost password?" @@ -19490,7 +19937,7 @@ msgstr "Accountinstellingen" #: pretix/control/templates/pretixcontrol/base.html:223 #: pretix/presale/templates/pretixpresale/fragment_login_status.html:14 msgid "Log out" -msgstr "Log uit" +msgstr "Uitloggen" #: pretix/control/templates/pretixcontrol/base.html:249 msgid "Organizer account" @@ -19506,6 +19953,8 @@ msgid "" "We've detected that you are using Microsoft Internet Explorer." msgstr "" +"We hebben vastgesteld dat je Microsoft Internet Explorer " +"gebruikt." #: pretix/control/templates/pretixcontrol/base.html:332 #: pretix/presale/templates/pretixpresale/base.html:54 @@ -19513,6 +19962,8 @@ msgid "" "Internet Explorer is an old browser that does not support lots of recent web-" "based technologies and is no longer supported by this website." msgstr "" +"Internet Explorer is een oude browser die veel recente webtechnologieën niet " +"ondersteunt en niet langer door deze website wordt ondersteund." #: pretix/control/templates/pretixcontrol/base.html:336 #: pretix/presale/templates/pretixpresale/base.html:58 @@ -19520,6 +19971,9 @@ msgid "" "We kindly ask you to move to one of our supported browsers, such as " "Microsoft Edge, Mozilla Firefox, Google Chrome, or Safari." msgstr "" +"Wij verzoeken je vriendelijk om over te stappen naar een van onze " +"ondersteunde browsers, zoals Microsoft Edge, Mozilla Firefox, Google Chrome " +"of Safari." #: pretix/control/templates/pretixcontrol/base.html:345 msgid "" @@ -19577,6 +20031,9 @@ msgid "" "check that you have completed all installation steps and your cronjob is " "executed correctly." msgstr "" +"De cronjob-component van pretix is de afgelopen uren niet uitgevoerd. " +"Controleer of je alle installatiestappen hebt voltooid en of je cronjob " +"correct wordt uitgevoerd." #: pretix/control/templates/pretixcontrol/base.html:439 msgid "" @@ -19591,6 +20048,8 @@ msgid "" "For security reasons, please change your password before you continue. " "Afterwards you will be redirected to your original destination." msgstr "" +"Om veiligheidsredenen moet je je wachtwoord wijzigen voordat je verdergaat. " +"Daarna word je doorgestuurd naar je oorspronkelijke bestemming." #: pretix/control/templates/pretixcontrol/base.html:457 #, python-format @@ -19606,7 +20065,7 @@ msgstr "draaiend in ontwikkelmodus" #: pretix/presale/templates/pretixpresale/postmessage.html:27 #: pretix/presale/templates/pretixpresale/waiting.html:42 msgid "If this takes longer than a few minutes, please contact us." -msgstr "Neem contact met ons op als dit langer dan een aantal minuten duurt." +msgstr "Als dit langer dan een paar minuten duurt, neem dan contact met ons op." #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:4 #: pretix/control/templates/pretixcontrol/organizers/devices.html:71 @@ -19685,7 +20144,7 @@ msgstr "Handelaarscode" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:80 #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:110 msgid "Card Entry Mode" -msgstr "Soort kaartinvoer" +msgstr "Kaartinvoermodus" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:58 #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:82 @@ -19760,7 +20219,7 @@ msgstr "Resultaat" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:116 msgid "Cash" -msgstr "" +msgstr "Contant" #: pretix/control/templates/pretixcontrol/checkin/bulk_revert_confirm.html:4 #: pretix/control/templates/pretixcontrol/checkin/bulk_revert_confirm.html:6 @@ -19957,7 +20416,7 @@ msgstr "Verwijderen" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:91 #: pretix/presale/templates/pretixpresale/fragment_event_list_filter.html:22 msgid "Filter" -msgstr "Filter" +msgstr "Filteren" #: pretix/control/templates/pretixcontrol/checkin/checkins.html:50 #, fuzzy @@ -20033,7 +20492,7 @@ msgstr "Bestelling geweigerd" #: pretix/control/templates/pretixcontrol/organizers/device_connect.html:27 #: pretix/control/templates/pretixcontrol/organizers/device_connect.html:33 msgid "Copy to clipboard" -msgstr "" +msgstr "Kopiëren naar klembord" #: pretix/control/templates/pretixcontrol/checkin/index.html:7 #: pretix/control/templates/pretixcontrol/checkin/index.html:11 @@ -20231,10 +20690,13 @@ msgid "" "or variations are not contained in any of your rule parts so people with " "these tickets will not get in:" msgstr "" +"Je regel filtert altijd op product of variant, maar de volgende producten of " +"varianten zijn niet opgenomen in je regelonderdelen, dus mensen met deze " +"tickets komen niet binnen:" #: pretix/control/templates/pretixcontrol/checkin/list_edit.html:113 msgid "Please double-check if this was intentional." -msgstr "" +msgstr "Controleer nogmaals of dit bedoeld was." #: pretix/control/templates/pretixcontrol/checkin/lists.html:10 msgid "" @@ -20325,22 +20787,29 @@ msgid "" "hardware setup but only before your event started, and you admitted any real " "attendees or printed any real badges or tickets." msgstr "" +"Met deze functie kun je de volledige check-in-status van het evenement " +"resetten. Hierdoor worden alle check-in-records en alle records van " +"afgedrukte tickets of badges verwijderd. We raden je aan deze functie te " +"gebruiken nadat je de hardware-installatie hebt getest, maar alleen voordat " +"je evenement is begonnen en je echte deelnemers hebt toegelaten of echte " +"badges of tickets hebt afgedrukt." #: pretix/control/templates/pretixcontrol/checkin/reset.html:18 #, python-format msgid "This will permanently delete 1 check-in." msgid_plural "" "This will permanently delete %(count)s check-ins." -msgstr[0] "" +msgstr[0] "Hiermee wordt 1 check-in definitief verwijderd." msgstr[1] "" +"Hiermee worden %(count)s check-ins definitief verwijderd." #: pretix/control/templates/pretixcontrol/checkin/reset.html:23 #, python-format msgid "Additionally, 1 print log will be deleted." msgid_plural "" "Additionally, %(count)s print logs will be deleted." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Bovendien wordt 1 afdruklogboek verwijderd." +msgstr[1] "Bovendien worden %(count)s afdruklogboeken verwijderd." #: pretix/control/templates/pretixcontrol/checkin/reset.html:30 #, fuzzy @@ -20353,6 +20822,9 @@ msgid "" "The deleted entries will still show up in the \"Order history\" section, but " "for all other purposes the system will behave as if they never existed." msgstr "" +"De verwijderde vermeldingen blijven zichtbaar in het gedeelte " +"'Bestelgeschiedenis', maar voor alle andere doeleinden zal het systeem zich " +"gedragen alsof ze nooit hebben bestaan." #: pretix/control/templates/pretixcontrol/checkin/reset.html:46 #, fuzzy @@ -20367,10 +20839,14 @@ msgid "" "the check-in list. No actual check-in will be performed and no modification " "to the system state is made." msgstr "" +"Met deze tool kun je de check-in-configuratie valideren. Je kunt een " +"streepjescode en enkele optionele parameters invoeren, waarna wij je de " +"reactie van de check-in-lijst tonen. Er wordt geen daadwerkelijke check-in " +"uitgevoerd en er worden geen wijzigingen in de systeemstatus aangebracht." #: pretix/control/templates/pretixcontrol/checkin/simulator.html:40 msgid "Simulate" -msgstr "" +msgstr "Simuleren" #: pretix/control/templates/pretixcontrol/checkin/simulator.html:66 #, fuzzy @@ -20388,6 +20864,8 @@ msgstr "Extra informatie" msgid "" "The following questions must be answered before check-in can be completed:" msgstr "" +"De volgende vragen moeten worden beantwoord voordat het inchecken kan worden " +"voltooid:" #: pretix/control/templates/pretixcontrol/checkin/simulator.html:92 #, fuzzy @@ -20467,7 +20945,7 @@ msgstr "Fout:" #: pretix/control/templates/pretixcontrol/datasync/control_order_info.html:34 #, python-format msgid "Error. Retry %(num)s of %(max)s." -msgstr "" +msgstr "Fout. Poging %(num)s van %(max)s." #: pretix/control/templates/pretixcontrol/datasync/control_order_info.html:38 #: pretix/control/templates/pretixcontrol/datasync/control_order_info.html:43 @@ -20497,7 +20975,7 @@ msgstr "Geen datum geselecteerd." #: pretix/control/templates/pretixcontrol/datasync/failed_jobs.html:5 msgid "Sync problems" -msgstr "" +msgstr "Synchronisatieproblemen" #: pretix/control/templates/pretixcontrol/datasync/failed_jobs.html:7 msgid "" @@ -20505,6 +20983,9 @@ msgid "" "external system has failed. You can start another attempt to sync them " "manually." msgstr "" +"Op deze pagina vind je een lijst met bestellingen waarbij de " +"gegevenssynchronisatie met een extern systeem is mislukt. Je kunt handmatig " +"een nieuwe poging doen om ze te synchroniseren." #: pretix/control/templates/pretixcontrol/datasync/failed_jobs.html:24 #, fuzzy @@ -20521,7 +21002,7 @@ msgstr "Mislukt" #: pretix/control/templates/pretixcontrol/datasync/failed_jobs.html:51 #, python-format msgid "Temporary error, will retry after %(datetime)s" -msgstr "" +msgstr "Tijdelijke fout, zal opnieuw proberen na %(datetime)s" #: pretix/control/templates/pretixcontrol/datasync/failed_jobs.html:63 #, fuzzy @@ -20542,7 +21023,7 @@ msgstr "Geselecteerde items annuleren" #: pretix/control/templates/pretixcontrol/datasync/property_mappings_formset.html:31 #: pretix/control/templates/pretixcontrol/datasync/property_mappings_formset.html:62 msgid "Edit value mapping" -msgstr "" +msgstr "Waarde-toewijzing bewerken" #: pretix/control/templates/pretixcontrol/datasync/property_mappings_formset.html:76 #: pretix/control/templates/pretixcontrol/event/settings.html:486 @@ -20566,6 +21047,20 @@ msgid "" "Best regards,\n" "Your pretix team\n" msgstr "" +"Hallo,\n" +"\n" +"%(reason)s\n" +"\n" +" %(code)s\n" +"\n" +"Geef deze code nooit aan iemand anders. Ons ondersteuningsteam zal er nooit " +"naar vragen.\n" +"\n" +"Als jij deze code niet hebt aangevraagd, neem dan onmiddellijk met ons " +"contact op.\n" +"\n" +"Met vriendelijke groet,\n" +"Het pretix-team\n" #: pretix/control/templates/pretixcontrol/email/email_setup.txt:1 #, python-format @@ -20585,6 +21080,21 @@ msgid "" "\n" "Your %(instance)s team\n" msgstr "" +"Hallo,\n" +"\n" +"Iemand heeft gevraagd om %(address)s te gebruiken als afzenderadres op %" +"(instance)s.\n" +"Hierdoor kunnen zij e-mails versturen die afkomstig lijken te zijn van dit e-" +"mailadres.\n" +"Als je dit hebt aangevraagd, voer dan de volgende bevestigingscode in:\n" +"\n" +"%(code)s\n" +"\n" +"Als je dit niet hebt aangevraagd, kun je deze e-mail negeren.\n" +"\n" +"Met vriendelijke groet, \n" +"\n" +"Het %(instance)s-team\n" #: pretix/control/templates/pretixcontrol/email/forgot.txt:1 #, python-format @@ -20666,6 +21176,20 @@ msgid "" "Best regards, \n" "Your %(instance)s team\n" msgstr "" +"Hallo,\n" +"\n" +"We hebben een login op je %(instance)s-account ontdekt vanaf een ongewone of " +"nieuwe locatie. De login gebeurde met %(agent)s op %(os)s in %(country)s.\n" +"\n" +"Als jij dit was, mag je deze e-mail negeren.\n" +"\n" +"Als jij dit niet was, raden we je aan je wachtwoord te wijzigen in je " +"accountinstellingen:\n" +"\n" +"%(url)s\n" +"\n" +"Met vriendelijke groet, \n" +"Het team van %(instance)s\n" #: pretix/control/templates/pretixcontrol/email/security_notice.txt:1 #, python-format @@ -20724,21 +21248,23 @@ msgid "" "Emails will be sent through the system's default server. They will show the " "following sender information:" msgstr "" +"E-mails worden verzonden via de standaardserver van het systeem. Ze bevatten " +"de volgende afzenderinformatie:" #: pretix/control/templates/pretixcontrol/email_setup.html:35 msgctxt "mail_header" msgid "From" -msgstr "" +msgstr "Van" #: pretix/control/templates/pretixcontrol/email_setup.html:40 msgctxt "mail_header" msgid "Reply-To" -msgstr "" +msgstr "Beantwoord aan" #: pretix/control/templates/pretixcontrol/email_setup.html:56 #: pretix/control/templates/pretixcontrol/email_setup_simple.html:18 msgid "Use system email server with a custom sender address" -msgstr "" +msgstr "Gebruik de e-mailserver van het systeem met een aangepast afzenderadres" #: pretix/control/templates/pretixcontrol/email_setup.html:64 msgid "" @@ -20747,6 +21273,11 @@ msgid "" "directly from you, but it also might require some extra steps to ensure good " "deliverability." msgstr "" +"E-mails worden verzonden via de standaard server van het systeem, maar met " +"je eigen afzenderadres. Hierdoor zien je e-mails er persoonlijker uit en " +"lijken ze rechtstreeks van jou afkomstig te zijn, maar het kan ook zijn dat " +"er enkele extra stappen nodig zijn om een goede afleverbaarheid te " +"garanderen." #: pretix/control/templates/pretixcontrol/email_setup.html:84 #: pretix/control/templates/pretixcontrol/email_setup_smtp.html:18 @@ -20760,6 +21291,8 @@ msgid "" "For full customization, you can configure your own SMTP server that will be " "used for email sending." msgstr "" +"Voor volledige aanpassing kun je een eigen SMTP-server configureren, die zal " +"worden gebruikt voor het verzenden van e-mails." #: pretix/control/templates/pretixcontrol/email_setup.html:110 #, fuzzy @@ -20807,6 +21340,9 @@ msgid "" "We've sent an email to %(recp)s with a confirmation code to verify that this " "email address is owned by you. Please enter the verification code below:" msgstr "" +"We hebben een e-mail gestuurd naar %(recp)s met een bevestigingscode om te " +"verifiëren dat dit e-mailadres van jou is. Voer hieronder de verificatiecode " +"in:" #: pretix/control/templates/pretixcontrol/email_setup_simple.html:63 #, fuzzy @@ -20819,6 +21355,8 @@ msgid "" "A test connection to your SMTP server was successful. You can now save your " "new settings to put them in use." msgstr "" +"De testverbinding met je SMTP-server is geslaagd. Je kunt nu de nieuwe " +"instellingen opslaan om ze in gebruik te nemen." #: pretix/control/templates/pretixcontrol/event/cancel.html:5 msgid "Cancellation settings" @@ -20855,18 +21393,27 @@ msgid "" "the many different options pretix provides. Therefore, this feature " "currently has the following limitations:" msgstr "" +"Het is een ingewikkeld proces om klanten hun eigen bestellingen te laten " +"wijzigen, omdat pretix veel verschillende opties biedt. Daarom heeft deze " +"functie nu de volgende beperkingen:" #: pretix/control/templates/pretixcontrol/event/cancel.html:61 msgid "" "It is possible to switch to a different variation of the same product, but " "not to an entirely different product (except for add-on products)." msgstr "" +"Het is mogelijk om over te stappen naar een andere variant van hetzelfde " +"product, maar niet naar een geheel ander product (behalve voor add-on-" +"producten)." #: pretix/control/templates/pretixcontrol/event/cancel.html:62 msgid "" "Changing the seat or the event date in an event series will become available " "in the future, but is not possible now." msgstr "" +"Het wijzigen van de zitplaats of de datum van een evenement in een " +"evenementenreeks zal in de toekomst mogelijk worden, maar is nu nog niet " +"mogelijk." #: pretix/control/templates/pretixcontrol/event/cancel.html:63 msgid "" @@ -20874,24 +21421,35 @@ msgid "" "as payment, service, or shipping fees, even though an additional payment " "might be required." msgstr "" +"Als een wijziging leidt tot een prijswijziging, zullen er geen wijzigingen " +"plaatsvinden in kosten zoals betalings-, service- of verzendkosten, ook al " +"kan er een extra betaling vereist zijn." #: pretix/control/templates/pretixcontrol/event/cancel.html:64 msgid "" "If an add-on product is newly added, the system currently does not validate " "if there are required questions or fields that need to be filled out." msgstr "" +"Als er een nieuw add-on-product wordt toegevoegd, controleert het systeem " +"momenteel niet of er verplichte vragen of velden zijn die moeten worden " +"ingevuld." #: pretix/control/templates/pretixcontrol/event/cancel.html:65 msgid "" "Customers currently cannot switch to a product variation or add an add-on " "product that requires them to use a voucher or membership." msgstr "" +"Klanten kunnen momenteel niet overschakelen naar een productvariant of een " +"add-on-product toevoegen waarvoor ze een voucher of lidmaatschap moeten " +"gebruiken." #: pretix/control/templates/pretixcontrol/event/cancel.html:66 msgid "" "Additional constraints and validation steps added by plugins are not " "enforced." msgstr "" +"Extra beperkingen en validatiestappen die door plug-ins worden toegevoegd, " +"worden niet afgedwongen." #: pretix/control/templates/pretixcontrol/event/cancel.html:77 msgid "" @@ -20899,12 +21457,18 @@ msgid "" "for self-service cancellations, the system will try to refund the money " "automatically." msgstr "" +"Als de wijziging leidt tot een prijsverlaging en automatische " +"terugbetalingen zijn ingeschakeld voor annuleringen door de klant zelf, zal " +"het systeem proberen het geld automatisch terug te betalen." #: pretix/control/templates/pretixcontrol/event/cancel.html:81 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 "" +"Restituties kunnen worden uitgegeven in de vorm van een cadeaubon als de " +"betreffende optie is ingesteld, maar de klant kan niet kiezen tussen een " +"cadeaubon en een directe restitutie." #: pretix/control/templates/pretixcontrol/event/dangerzone.html:5 #: pretix/control/templates/pretixcontrol/event/live.html:131 @@ -21035,7 +21599,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/event/fragment_geodata.html:14 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:43 msgid "Geo coordinates" -msgstr "Geo-coördinaten" +msgstr "Geografische coördinaten" #: pretix/control/templates/pretixcontrol/event/fragment_geodata.html:15 #: pretix/control/templates/pretixcontrol/event/settings.html:139 @@ -21051,7 +21615,7 @@ msgstr "Optioneel" #: pretix/control/templates/pretixcontrol/event/fragment_geodata.html:22 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:58 msgid "Geocoding data © OpenStreetMap" -msgstr "Geocoding-data © OpenStreetMap" +msgstr "Geocoderinggegevens © OpenStreetMap" #: pretix/control/templates/pretixcontrol/event/fragment_geodata_autoupdate.html:4 msgid "Failed to retrieve geo coordinates" @@ -21105,7 +21669,7 @@ msgstr "Deze plug-in meldt de volgende problemen:" #: pretix/control/templates/pretixcontrol/event/fragment_qr_dropdown.html:24 #, python-format msgid "Download QR code as %(filetype)s image" -msgstr "" +msgstr "QR-code downloaden als %(filetype)s-afbeelding" #: pretix/control/templates/pretixcontrol/event/fragment_timeline.html:5 msgid "Your timeline" @@ -21195,10 +21759,12 @@ msgid "" "Orders in this event could not be synced to an external system as configured." msgstr "" +"De bestellingen voor dit evenement konden niet worden " +"gesynchroniseerd met een extern systeem zoals geconfigureerd." #: pretix/control/templates/pretixcontrol/event/index.html:88 msgid "Show sync problems" -msgstr "" +msgstr "Synchronisatieproblemen weergeven" #: pretix/control/templates/pretixcontrol/event/index.html:151 #: pretix/control/templates/pretixcontrol/order/index.html:1093 @@ -21229,6 +21795,9 @@ msgid "" "be shown. Therefore, we recommend that you set the date of service to a " "different option." msgstr "" +"Je hebt ingesteld dat je winkel geen evenement is en dat de datum van het " +"evenement niet moet worden weergegeven. Daarom raden wij je aan om de datum " +"van de dienstverlening op een andere optie in te stellen." #: pretix/control/templates/pretixcontrol/event/invoicing.html:41 msgid "Address form" @@ -21255,6 +21824,11 @@ msgid "" "default, sending invoices as PDF files via email is always available. Other " "types of transmission can be added by plugins." msgstr "" +"pretix kan facturen via verschillende verzendmethoden versturen. Afhankelijk " +"van het land en de branche kunnen verschillende verzendmethoden vereist " +"zijn. Standaard is het altijd mogelijk om facturen als PDF-bestanden via e-" +"mail te versturen. Andere verzendmethoden kunnen worden toegevoegd via plug-" +"ins." #: pretix/control/templates/pretixcontrol/event/invoicing.html:89 msgid "" @@ -21262,6 +21836,9 @@ msgid "" "customers may depend on the country of the customer or whether the customer " "is entering a business address." msgstr "" +"Of een hier vermelde verzendmethode daadwerkelijk door klanten kan worden " +"geselecteerd, kan afhangen van het land van de klant of van het feit of de " +"klant een zakelijk adres invoert." #: pretix/control/templates/pretixcontrol/event/invoicing.html:98 #, fuzzy @@ -21481,7 +22058,7 @@ msgstr "Gebruik aangepaste SMTP-server" #: pretix/control/templates/pretixcontrol/event/mail.html:27 #: pretix/control/templates/pretixcontrol/organizers/mail.html:28 msgid "System-provided email server" -msgstr "" +msgstr "Door het systeem geleverde e-mailserver" #: pretix/control/templates/pretixcontrol/event/mail.html:60 #, fuzzy @@ -21641,6 +22218,10 @@ msgid "" "Plugins might bring additional software functionality, connect your event to " "third-party services, or apply other forms of customizations." msgstr "" +"Op deze pagina kun je plug-ins kiezen die je voor je evenement wilt " +"inschakelen. Plug-ins kunnen extra softwarefunctionaliteit bieden, je " +"evenement koppelen aan diensten van derden of andere vormen van aanpassingen " +"toepassen." #: pretix/control/templates/pretixcontrol/event/plugins.html:15 #: pretix/control/templates/pretixcontrol/organizers/plugins.html:15 @@ -21692,7 +22273,7 @@ msgstr "Resultaten updatecontrole" #: pretix/control/templates/pretixcontrol/event/plugins.html:56 #: pretix/control/templates/pretixcontrol/organizers/plugins.html:56 msgid "Top recommendation" -msgstr "" +msgstr "Topaanbeveling" #: pretix/control/templates/pretixcontrol/event/plugins.html:60 #: pretix/control/templates/pretixcontrol/organizers/plugins.html:60 @@ -21722,6 +22303,8 @@ msgid "" "After disabling this plugin, some functionality may remain active in the " "organizer account." msgstr "" +"Na het uitschakelen van deze plug-in kunnen sommige functies actief blijven " +"in het account van de organisator." #: pretix/control/templates/pretixcontrol/event/plugins.html:104 #: pretix/control/templates/pretixcontrol/event/plugins.html:116 @@ -21769,6 +22352,8 @@ msgid "" "Enabling this plugin will enable some of its functionality for the entire " "organizer account." msgstr "" +"Door deze plug-in in te schakelen, worden sommige functies ervan voor het " +"hele account van de organisator ingeschakeld." #: pretix/control/templates/pretixcontrol/event/plugins.html:159 #: pretix/control/templates/pretixcontrol/organizers/plugins.html:159 @@ -22015,6 +22600,8 @@ msgid "" "Customers won't be able to add themselves to the waiting list, because " "\"Hide all products that are sold out\" is enabled." msgstr "" +"Klanten kunnen zichzelf niet aan de wachtlijst toevoegen, omdat 'Alle " +"uitverkochte producten verbergen' is ingeschakeld." #: pretix/control/templates/pretixcontrol/event/settings.html:260 #, fuzzy @@ -22042,6 +22629,10 @@ msgid "" "privacy policy will be linked automatically (if you configured them), so you " "do not need to add them here." msgstr "" +"Deze links worden weergegeven in de voettekst van je ticketwinkel. Je kunt " +"hier bijvoorbeeld je servicevoorwaarden koppelen. Je contactadres, impressum " +"en privacybeleid worden automatisch gekoppeld (als je deze hebt " +"geconfigureerd), dus die hoef je hier niet toe te voegen." #: pretix/control/templates/pretixcontrol/event/settings.html:349 #: pretix/control/templates/pretixcontrol/organizers/edit.html:119 @@ -22059,6 +22650,9 @@ msgid "" "The waiting list currently is not compatible with some advanced features of " "pretix such as hidden products, add-on products or product bundles." msgstr "" +"De wachtlijst is momenteel niet compatibel met sommige geavanceerde functies " +"van pretix, zoals verborgen producten, aanvullende producten of " +"productbundels." #: pretix/control/templates/pretixcontrol/event/settings.html:370 msgid "" @@ -22067,12 +22661,18 @@ msgid "" "quota, you might run into situations where people are sent an email from the " "waiting list but still are unable to book a seat." msgstr "" +"De wachtlijst bepaalt de beschikbaarheid voornamelijk op basis van quota. " +"Als je een zitplan gebruikt en het aantal beschikbare zitplaatsen is kleiner " +"dan de beschikbare quota, kan het voorkomen dat mensen een e-mail krijgen " +"van de wachtlijst, maar toch geen zitplaats kunnen reserveren." #: pretix/control/templates/pretixcontrol/event/settings.html:377 msgid "" "Specifically, this means the waiting list is not safe to use together with " "the minimum distance feature of our seating plan module." msgstr "" +"Concreet betekent dit dat de wachtlijst niet veilig kan worden gebruikt in " +"combinatie met de functie voor minimale afstand in onze zitplan-module." #: pretix/control/templates/pretixcontrol/event/settings.html:398 #, fuzzy @@ -22138,6 +22738,10 @@ msgid "" "optionally contain additional rules that depend on the customer's country " "and type." msgstr "" +"Belastingregels definiëren verschillende belastingscenario's die vervolgens " +"aan de afzonderlijke producten kunnen worden toegewezen. Elke belastingregel " +"bevat een standaard belastingtarief en kan optioneel aanvullende regels " +"bevatten die afhankelijk zijn van het land en het type klant." #: pretix/control/templates/pretixcontrol/event/tax.html:21 msgid "You haven't created any tax rules yet." @@ -22698,6 +23302,10 @@ msgid "" "pretix support when your license renews. It may also be requested by pretix " "support to aid debugging of problems." msgstr "" +"Als u een pretix Enterprise-licentie hebt, moet dit rapport bij de " +"verlenging van je licentie worden ingediend bij de pretix-helpdesk. De " +"pretix-helpdesk kan hier ook om vragen om te helpen bij het oplossen van " +"problemen." #: pretix/control/templates/pretixcontrol/global_sysreport.html:8 msgid "" @@ -22705,18 +23313,22 @@ msgid "" "debugging problems in your pretix installation, and verifying that your " "usage of pretix is in compliance with the Enterprise license you purchased." msgstr "" +"Het dient twee doelen: het verzamelen van nuttige informatie die kan helpen " +"bij het oplossen van problemen in je pretix-installatie, en het controleren " +"of je gebruik van pretix in overeenstemming is met de Enterprise-licentie " +"die je hebt aangeschaft." #: pretix/control/templates/pretixcontrol/global_sysreport.html:14 msgid "First month of license term:" -msgstr "" +msgstr "Eerste maand van de licentieperiode:" #: pretix/control/templates/pretixcontrol/global_sysreport.html:16 msgid "January" -msgstr "" +msgstr "januari" #: pretix/control/templates/pretixcontrol/global_sysreport.html:17 msgid "February" -msgstr "" +msgstr "februari" #: pretix/control/templates/pretixcontrol/global_sysreport.html:18 #, fuzzy @@ -22726,7 +23338,7 @@ msgstr "Zoeken" #: pretix/control/templates/pretixcontrol/global_sysreport.html:19 msgid "April" -msgstr "" +msgstr "april" #: pretix/control/templates/pretixcontrol/global_sysreport.html:20 #, fuzzy @@ -22736,15 +23348,15 @@ msgstr "Dag" #: pretix/control/templates/pretixcontrol/global_sysreport.html:21 msgid "June" -msgstr "" +msgstr "juni" #: pretix/control/templates/pretixcontrol/global_sysreport.html:22 msgid "July" -msgstr "" +msgstr "juli" #: pretix/control/templates/pretixcontrol/global_sysreport.html:23 msgid "August" -msgstr "" +msgstr "augustus" #: pretix/control/templates/pretixcontrol/global_sysreport.html:24 #, fuzzy @@ -22754,7 +23366,7 @@ msgstr "Stoelnummer" #: pretix/control/templates/pretixcontrol/global_sysreport.html:25 msgid "October" -msgstr "" +msgstr "oktober" #: pretix/control/templates/pretixcontrol/global_sysreport.html:26 #, fuzzy @@ -22935,6 +23547,8 @@ msgid "" "Only purchases of such products will be considered \"attendees\" for most " "statistical purposes or within some plugins." msgstr "" +"Alleen aankopen van dergelijke producten worden voor de meeste statistische " +"doeleinden of binnen sommige plug-ins als \"deelnemers\" beschouwd." #: pretix/control/templates/pretixcontrol/item/create.html:39 #: pretix/control/templates/pretixcontrol/item/index.html:47 @@ -22989,6 +23603,8 @@ msgid "" "When this ticket is purchased, the system will ask for a name or other " "details according to your event settings." msgstr "" +"Wanneer dit ticket wordt gekocht, vraagt het systeem om een naam of andere " +"gegevens, afhankelijk van de evenementinstellingen." #: pretix/control/templates/pretixcontrol/item/create.html:84 #: pretix/control/templates/pretixcontrol/item/index.html:97 @@ -22996,6 +23612,8 @@ msgid "" "This will currently have no effect since all data fields are turned off in " "event settings." msgstr "" +"Dit heeft momenteel geen effect, aangezien alle gegevensvelden zijn " +"uitgeschakeld in de evenementinstellingen." #: pretix/control/templates/pretixcontrol/item/create.html:87 #: pretix/control/templates/pretixcontrol/item/index.html:100 @@ -23017,6 +23635,9 @@ msgid "" "The system will not ask for a name or other attendee details. This only " "affects system-provided fields, you can still add your own questions." msgstr "" +"Het systeem vraagt niet om een naam of andere gegevens van deelnemers. Dit " +"heeft alleen invloed op door het systeem verstrekte velden, je kunt nog " +"steeds je eigen vragen toevoegen." #: pretix/control/templates/pretixcontrol/item/create.html:117 msgid "Product without variations" @@ -23631,7 +24252,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/items/question.html:76 msgid "Count" -msgstr "Aantal" +msgstr "Tellen" #: pretix/control/templates/pretixcontrol/items/question.html:77 #, fuzzy, python-format @@ -24792,8 +25413,8 @@ msgid "" "This email has been sent with an older version of pretix. We are therefore " "not able to display it here accurately." msgstr "" -"Deze email is verstuurd met een oudere versie van pretix. We zijn hierom " -"niet in staat om hem hier nauwkeurig weer te geven." +"Deze e-mail is verzonden met een oudere versie van pretix. Daarom kunnen we " +"hem hier niet correct weergeven." #: pretix/control/templates/pretixcontrol/order/mail_history.html:39 #: pretix/control/templates/pretixcontrol/order/mail_history.html:50 @@ -25174,7 +25795,7 @@ msgstr "Terugbetalingsopties" #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:5 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:8 msgid "Send out emails" -msgstr "Verstuur emails" +msgstr "Verstuur e-mails" #: pretix/control/templates/pretixcontrol/orders/cancel.html:54 msgid "" @@ -25557,12 +26178,12 @@ msgstr "Gasten importeren" #: pretix/control/templates/pretixcontrol/orders/import_process.html:13 #: pretix/control/templates/pretixcontrol/vouchers/import_process.html:13 msgid "Data preview" -msgstr "Voorvertoning van data" +msgstr "Gegevensvoorbeeld" #: pretix/control/templates/pretixcontrol/orders/import_process.html:43 #: pretix/control/templates/pretixcontrol/vouchers/import_process.html:43 msgid "Import settings" -msgstr "Import-instellingen" +msgstr "Instellingen importeren" #: pretix/control/templates/pretixcontrol/orders/import_process.html:49 #: pretix/control/templates/pretixcontrol/vouchers/import_process.html:49 @@ -25570,8 +26191,8 @@ msgid "" "The import will be performed regardless of your quotas, so it will be " "possible to overbook your event using this option." msgstr "" -"Het is mogelijk om je evenement te overboeken met deze optie, omdat de " -"import onafhankelijk van je quota zal worden uitgevoerd." +"De import wordt uitgevoerd ongeacht je quota. Het is dus mogelijk om je " +"evenement te overboeken met deze optie." #: pretix/control/templates/pretixcontrol/orders/import_process.html:57 #: pretix/control/templates/pretixcontrol/vouchers/import_process.html:57 @@ -25590,8 +26211,8 @@ msgid "" "The uploaded file should be a CSV file with a header row. You will be able " "to assign the meanings of the different columns in the next step." msgstr "" -"Het geüploade bestand moet een CSV-bestand zijn met een headerregel. Je kan " -"in de volgende stap de betekenis van elke kolom aangeven." +"Het geüploade bestand moet een CSV-bestand zijn met een koptekstrij. In de " +"volgende stap kun je de betekenis van de verschillende kolommen toewijzen." #: pretix/control/templates/pretixcontrol/orders/import_start.html:22 #: pretix/control/templates/pretixcontrol/vouchers/import_start.html:22 @@ -25602,19 +26223,17 @@ msgstr "Bestand importeren" #: pretix/control/templates/pretixcontrol/orders/import_start.html:25 #: pretix/control/templates/pretixcontrol/vouchers/import_start.html:25 msgid "Character set" -msgstr "" +msgstr "Tekenset" #: pretix/control/templates/pretixcontrol/orders/import_start.html:27 #: pretix/control/templates/pretixcontrol/vouchers/import_start.html:27 -#, fuzzy -#| msgid "Generate automatically" msgid "Detect automatically" -msgstr "Automatisch genereren" +msgstr "Automatisch detecteren" #: pretix/control/templates/pretixcontrol/orders/import_start.html:35 #: pretix/control/templates/pretixcontrol/vouchers/import_start.html:35 msgid "Start import" -msgstr "Start import" +msgstr "Begin import" #: pretix/control/templates/pretixcontrol/orders/index.html:14 msgid "Nobody ordered a ticket yet." @@ -26208,7 +26827,7 @@ msgstr "Verbinden" #: pretix/control/templates/pretixcontrol/organizers/devices.html:175 #: pretix/control/templates/pretixcontrol/organizers/webhooks.html:76 msgid "Logs" -msgstr "Logs" +msgstr "Logboeken" #: pretix/control/templates/pretixcontrol/organizers/devices.html:188 #: pretix/control/templates/pretixcontrol/subevents/index.html:211 @@ -26907,7 +27526,7 @@ msgstr "Twee-factor-authenticatie uitgeschakeld" #: pretix/control/templates/pretixcontrol/organizers/team_members.html:57 msgid "invited, pending response" -msgstr "uitgenodigd, wacht op reactie" +msgstr "uitgenodigd, wachtend op antwoord" #: pretix/control/templates/pretixcontrol/organizers/team_members.html:59 msgid "resend invite" @@ -27135,7 +27754,7 @@ msgstr "pretix-logo" #: pretix/control/templates/pretixcontrol/pdf/index.html:107 msgid "Duplicate" -msgstr "" +msgstr "Duplicaat" #: pretix/control/templates/pretixcontrol/pdf/index.html:117 msgid "Undo" @@ -27477,7 +28096,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/shredder/download.html:29 msgid "Download data" -msgstr "Download gegevens" +msgstr "Gegevens downloaden" #: pretix/control/templates/pretixcontrol/shredder/download.html:34 msgid "Step 2: Confirm deletion" @@ -27803,7 +28422,7 @@ msgstr "Maak meerdere nieuwe datums" #: pretix/control/templates/pretixcontrol/subevents/index.html:96 #: pretix/plugins/reports/accountingreport.py:121 msgid "Begin" -msgstr "Begin" +msgstr "Start" #: pretix/control/templates/pretixcontrol/subevents/index.html:176 #, fuzzy @@ -28574,7 +29193,7 @@ msgstr "Download lijst" #: pretix/control/templates/pretixcontrol/vouchers/index.html:119 msgid "Redemptions" -msgstr "Verzilveringen" +msgstr "Terugbetalingen" #: pretix/control/templates/pretixcontrol/vouchers/index.html:124 msgid "Expiry" @@ -28583,7 +29202,7 @@ msgstr "Verloop" #: pretix/control/templates/pretixcontrol/vouchers/index.html:183 #, python-format msgid "Any product in quota \"%(quota)s\"" -msgstr "Elk product in quotum \"%(quota)s\"" +msgstr "Elk product in het quotum \"%(quota)s\"" #: pretix/control/templates/pretixcontrol/vouchers/index.html:197 msgid "Use as a template for new vouchers" @@ -28908,8 +29527,8 @@ msgid "" "address bar and make sure it is correct and that the link has not been used " "before." msgstr "" -"Je hebt een ongeldige link gebruikt. Kopieer de link van je email naar de " -"adresbalk, en controleer of de link klopt en nog niet eerder is gebruikt." +"Je hebt een ongeldige link gebruikt. Kopieer de link uit je e-mail naar de " +"adresbalk en controleer of deze correct is en nog niet eerder is gebruikt." #: pretix/control/views/auth.py:253 #, python-brace-format @@ -29676,6 +30295,11 @@ msgid "" "all of your emails since they impose a maximum number of emails per time " "period." msgstr "" +"We raden aan om Google Mail niet te gebruiken voor transactionele e-mails. " +"Als je in korte tijd veel e-mails verstuurt, bijvoorbeeld wanneer je " +"informatie naar al je ticketaankopers verstuurt, is de kans groot dat Google " +"niet al je e-mails aflevert, omdat zij een maximum aantal e-mails per " +"tijdsperiode hanteren." #: pretix/control/views/main.py:218 msgid "You do not have permission to clone this event." @@ -31311,7 +31935,7 @@ msgstr "" #: pretix/plugins/badges/forms.py:33 msgid "Template" -msgstr "" +msgstr "Sjabloon" #: pretix/plugins/badges/forms.py:34 msgid "" @@ -31386,7 +32010,7 @@ msgstr "" #: pretix/plugins/badges/templates/pretixplugins/badges/control_order_info.html:16 #: pretix/plugins/badges/templates/pretixplugins/badges/index.html:27 msgid "Print badges" -msgstr "Print badges" +msgstr "Badges afdrukken" #: pretix/plugins/badges/templates/pretixplugins/badges/delete.html:9 #, python-format @@ -32349,10 +32973,8 @@ msgid "OK" msgstr "" #: pretix/plugins/checkinlists/exporters.py:862 -#, fuzzy -#| msgid "Successful payments" msgid "Successful scans only" -msgstr "Geslaagde betalingen" +msgstr "Alleen geslaagde scans" #: pretix/plugins/manualpayment/apps.py:37 #, fuzzy @@ -33232,7 +33854,7 @@ msgstr "" #: pretix/plugins/sendmail/apps.py:38 msgid "Send out emails to all your customers or specific groups of customers." -msgstr "" +msgstr "Verstuur e-mails naar al je klanten of specifieke groepen klanten." #: pretix/plugins/sendmail/forms.py:60 msgid "Attachment" @@ -33544,10 +34166,8 @@ msgstr[0] "" msgstr[1] "" #: pretix/plugins/sendmail/signals.py:102 -#, fuzzy -#| msgid "Attendee email" msgid "Scheduled emails" -msgstr "E-mailadres van gast" +msgstr "Geplande e-mails" #: pretix/plugins/sendmail/signals.py:122 #, fuzzy @@ -33616,6 +34236,8 @@ msgid "" "This page shows you all mass emails you sent out manually. It does not " "include emails sent out automatically." msgstr "" +"Op deze pagina zie je alle bulkmails die je handmatig hebt verzonden. E-" +"mails die automatisch zijn verzonden, worden hier niet weergegeven." #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/history.html:35 msgid "Send a new email based on this" @@ -33654,6 +34276,7 @@ msgstr "Maak een nieuwe gebruiker aan" #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_update.html:10 msgid "Scheduled emails are not sent as long as your ticket shop is offline." msgstr "" +"Geplande e-mails worden niet verzonden zolang je ticketwinkel offline is." #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_create.html:49 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_update.html:63 @@ -33724,6 +34347,8 @@ msgid "" "Email rules allow you to automatically send emails to your customers at a " "specific time before or after your event." msgstr "" +"Met e-mailregels kun je automatisch e-mails naar je klanten sturen op een " +"specifiek tijdstip voor of na je evenement." #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_list.html:22 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_list.html:101 @@ -36059,7 +36684,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/cookies.html:17 msgid "We apologize for the inconvenience!" -msgstr "Excuses voor het ongemak!" +msgstr "Onze excuses voor het ongemak!" #: pretix/presale/templates/pretixpresale/event/cookies.html:24 msgid "Continue in new tab" @@ -36067,7 +36692,7 @@ msgstr "Ga verder in een nieuw tabblad" #: pretix/presale/templates/pretixpresale/event/cookies.html:31 msgid "Cookies not supported" -msgstr "Cookies niet ondersteund" +msgstr "Cookies worden niet ondersteund" #: pretix/presale/templates/pretixpresale/event/cookies.html:33 msgid "" @@ -36489,10 +37114,8 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:514 #: pretix/presale/templates/pretixpresale/fragment_modals.html:48 -#, fuzzy -#| msgid "Product description" msgid "Renew reservation" -msgstr "Productomschrijving" +msgstr "Reservering verlengen" #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:526 #, fuzzy @@ -37050,10 +37673,10 @@ msgid "" "cannot find the link, click on the following button to request the link to " "your order to be sent to you again." msgstr "" -"Als je de status en details van je bestelling wilt zien of aanpassen kan je " -"de link gebruiken die in de emails zit die we je tijdens het bestellen " -"hebben gestuurd. Als je deze link niet kan vinden kan je de knop hierboven " -"gebruiken om de link nog een keer op te laten sturen." +"Als je de status en details van je bestelling wilt zien of aanpassen, kun je " +"de link gebruiken die in de e-mails zit die we je tijdens het bestellen " +"hebben gestuurd. Als je deze link niet kunt vinden, kun je de knop hierboven " +"gebruiken om de link nog een keer te laten opsturen." #: pretix/presale/templates/pretixpresale/event/index.html:268 msgid "Resend order link" @@ -38208,10 +38831,8 @@ msgstr "" #: pretix/presale/templates/pretixpresale/organizers/customer_login.html:30 #: pretix/presale/templates/pretixpresale/organizers/customer_login.html:47 #: pretix/presale/templates/pretixpresale/organizers/customer_registration.html:38 -#, fuzzy -#| msgid "Create a new account" msgid "Create account" -msgstr "Maak een nieuw account" +msgstr "Account aanmaken" #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:6 #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:16 @@ -38698,7 +39319,7 @@ msgstr "" #: pretix/presale/views/user.py:91 msgid "We have trouble sending emails right now, please check back later." msgstr "" -"We hebben op het moment problemen met het versturen van e-mails, probeer het " +"We hebben op het moment problemen met het versturen van e-mails. Probeer het " "later opnieuw." #: pretix/presale/views/user.py:94 From 9508e13ea8d65ad430c9bf8a8135fce4d54232e8 Mon Sep 17 00:00:00 2001 From: Ruud Hendrickx Date: Thu, 29 Jan 2026 13:59:29 +0100 Subject: [PATCH 003/108] Translations: Update Dutch (informal) (nl_Informal) Currently translated at 91.0% (233 of 256 strings) Translation: pretix/pretix (JavaScript parts) Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl_Informal/ powered by weblate --- .../nl_Informal/LC_MESSAGES/djangojs.po | 99 ++++++++++--------- 1 file changed, 52 insertions(+), 47 deletions(-) diff --git a/src/pretix/locale/nl_Informal/LC_MESSAGES/djangojs.po b/src/pretix/locale/nl_Informal/LC_MESSAGES/djangojs.po index 50890347b6..6ddf8c60aa 100644 --- a/src/pretix/locale/nl_Informal/LC_MESSAGES/djangojs.po +++ b/src/pretix/locale/nl_Informal/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-01-26 09:10+0000\n" -"PO-Revision-Date: 2026-01-28 18:00+0000\n" +"PO-Revision-Date: 2026-01-29 13:00+0000\n" "Last-Translator: Ruud Hendrickx \n" "Language-Team: Dutch (informal) \n" @@ -321,11 +321,11 @@ msgstr "Bestelling geannuleerd" #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:66 msgid "Ticket code is ambiguous on list" -msgstr "" +msgstr "Ticketcode is dubbelzinnig op lijst" #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:67 msgid "Order not approved" -msgstr "" +msgstr "Bestelling niet goedgekeurd" #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:68 msgid "Checked-in Tickets" @@ -428,7 +428,7 @@ msgstr "" #: pretix/static/pretixbase/js/asynctask.js:276 msgid "If this takes longer than a few minutes, please contact us." -msgstr "" +msgstr "Als dit langer dan een paar minuten duurt, neem dan contact met ons op." #: pretix/static/pretixbase/js/asynctask.js:331 msgid "Close message" @@ -458,7 +458,7 @@ msgstr "is na" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:40 msgid "=" -msgstr "" +msgstr "=" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:99 msgid "Product" @@ -470,7 +470,7 @@ msgstr "Productvariant" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:107 msgid "Gate" -msgstr "" +msgstr "Ingang" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:111 msgid "Current date and time" @@ -478,11 +478,11 @@ msgstr "Huidige datum en tijd" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:115 msgid "Current day of the week (1 = Monday, 7 = Sunday)" -msgstr "" +msgstr "Huidige dag van de week (1 = maandag, 7 = zondag)" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:119 msgid "Current entry status" -msgstr "" +msgstr "Huidige toegangsstatus" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:123 msgid "Number of previous entries" @@ -522,11 +522,11 @@ msgstr "Aantal dagen met een eerdere binnenkomst" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:151 msgid "Minutes since last entry (-1 on first entry)" -msgstr "" +msgstr "Minuten sinds laatste binnenkomst (-1 bij eerste binnenkomst)" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:155 msgid "Minutes since first entry (-1 on first entry)" -msgstr "" +msgstr "Minuten sinds eerste binnenkomst (-1 bij eerste binnenkomst)" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:182 msgid "All of the conditions below (AND)" @@ -570,25 +570,25 @@ msgstr "minuten" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:192 msgid "Duplicate" -msgstr "" +msgstr "Duplicaat" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:193 msgctxt "entry_status" msgid "present" -msgstr "" +msgstr "aanwezig" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:194 msgctxt "entry_status" msgid "absent" -msgstr "" +msgstr "afwezig" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:289 msgid "Error: Product not found!" -msgstr "" +msgstr "Fout: Product niet gevonden!" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:296 msgid "Error: Variation not found!" -msgstr "" +msgstr "Fout: Variant niet gevonden!" #: pretix/static/pretixcontrol/js/ui/editor.js:171 msgid "Check-in QR" @@ -680,6 +680,8 @@ msgid "" "Your color has insufficient contrast to white. Accessibility of your site " "will be impacted." msgstr "" +"Je kleur heeft onvoldoende contrast met wit. Dit heeft invloed op de " +"toegankelijkheid van je website." #: pretix/static/pretixcontrol/js/ui/main.js:443 #: pretix/static/pretixcontrol/js/ui/main.js:463 @@ -700,11 +702,11 @@ msgstr "Alleen geselecteerde" #: pretix/static/pretixcontrol/js/ui/main.js:839 msgid "Enter page number between 1 and %(max)s." -msgstr "" +msgstr "Voer een paginanummer in tussen 1 en %(max)s." #: pretix/static/pretixcontrol/js/ui/main.js:842 msgid "Invalid page number." -msgstr "" +msgstr "Ongeldig paginanummer." #: pretix/static/pretixcontrol/js/ui/main.js:1000 msgid "Use a different name internally" @@ -734,7 +736,7 @@ msgstr "Andere" #: pretix/static/pretixcontrol/js/ui/question.js:81 msgid "Count" -msgstr "Aantal" +msgstr "Tellen" #: pretix/static/pretixcontrol/js/ui/subevent.js:112 msgid "(one more date)" @@ -757,7 +759,7 @@ msgstr "Winkelwagen is verlopen" #: pretix/static/pretixpresale/js/ui/cart.js:58 #: pretix/static/pretixpresale/js/ui/cart.js:84 msgid "Your cart is about to expire." -msgstr "" +msgstr "Je winkelwagen verloopt bijna." #: pretix/static/pretixpresale/js/ui/cart.js:62 #, fuzzy @@ -787,11 +789,11 @@ msgstr "De items in je winkelwagen zijn niet meer voor je gereserveerd." #: pretix/static/pretixpresale/js/ui/cart.js:87 msgid "Do you want to renew the reservation period?" -msgstr "" +msgstr "Wil je de reserveringsperiode verlengen?" #: pretix/static/pretixpresale/js/ui/cart.js:90 msgid "Renew reservation" -msgstr "" +msgstr "Reservering verlengen" #: pretix/static/pretixpresale/js/ui/main.js:194 msgid "The organizer keeps %(currency)s %(amount)s" @@ -811,49 +813,49 @@ msgstr "Je lokale tijd:" #: pretix/static/pretixpresale/js/walletdetection.js:39 msgid "Google Pay" -msgstr "" +msgstr "Google Pay" #: pretix/static/pretixpresale/js/widget/widget.js:16 msgctxt "widget" msgid "Quantity" -msgstr "" +msgstr "Hoeveelheid" #: pretix/static/pretixpresale/js/widget/widget.js:17 msgctxt "widget" msgid "Decrease quantity" -msgstr "" +msgstr "Hoeveelheid verminderen" #: pretix/static/pretixpresale/js/widget/widget.js:18 msgctxt "widget" msgid "Increase quantity" -msgstr "" +msgstr "Hoeveelheid verhogen" #: pretix/static/pretixpresale/js/widget/widget.js:19 msgctxt "widget" msgid "Filter events by" -msgstr "" +msgstr "Filter evenementen op" #: pretix/static/pretixpresale/js/widget/widget.js:20 msgctxt "widget" msgid "Filter" -msgstr "" +msgstr "Filteren" #: pretix/static/pretixpresale/js/widget/widget.js:21 msgctxt "widget" msgid "Price" -msgstr "" +msgstr "Prijs" #: pretix/static/pretixpresale/js/widget/widget.js:22 #, javascript-format msgctxt "widget" msgid "Original price: %s" -msgstr "" +msgstr "Oorspronkelijke prijs: %s" #: pretix/static/pretixpresale/js/widget/widget.js:23 #, javascript-format msgctxt "widget" msgid "New price: %s" -msgstr "" +msgstr "Nieuwe prijs: %s" #: pretix/static/pretixpresale/js/widget/widget.js:24 #, fuzzy @@ -911,7 +913,7 @@ msgstr "vanaf %(currency)s %(price)s" #, javascript-format msgctxt "widget" msgid "Image of %s" -msgstr "" +msgstr "Afbeelding van %s" #: pretix/static/pretixpresale/js/widget/widget.js:34 msgctxt "widget" @@ -956,7 +958,7 @@ msgstr "nu beschikbaar: %s" #: pretix/static/pretixpresale/js/widget/widget.js:41 msgctxt "widget" msgid "Not available anymore" -msgstr "" +msgstr "Niet meer beschikbaar" #: pretix/static/pretixpresale/js/widget/widget.js:42 #, fuzzy @@ -1071,7 +1073,7 @@ msgstr "Doorgaan met afrekenen" #: pretix/static/pretixpresale/js/widget/widget.js:63 msgctxt "widget" msgid "You cannot cancel this operation. Please wait for loading to finish." -msgstr "" +msgstr "Je kunt deze bewerking niet annuleren. Wacht tot het laden voltooid is." #: pretix/static/pretixpresale/js/widget/widget.js:64 msgctxt "widget" @@ -1141,6 +1143,9 @@ msgid "" "add yourself to the waiting list. We will then notify if seats are available " "again." msgstr "" +"Sommige of alle ticketcategorieën zijn momenteel uitverkocht. Als je dat " +"wilt, kun je je op de wachtlijst laten plaatsen. Wij zullen je dan op de " +"hoogte brengen als er weer plaatsen beschikbaar zijn." #: pretix/static/pretixpresale/js/widget/widget.js:76 msgctxt "widget" @@ -1177,39 +1182,39 @@ msgstr "Zo" #: pretix/static/pretixpresale/js/widget/widget.js:85 msgid "Monday" -msgstr "" +msgstr "maandag" #: pretix/static/pretixpresale/js/widget/widget.js:86 msgid "Tuesday" -msgstr "" +msgstr "dinsdag" #: pretix/static/pretixpresale/js/widget/widget.js:87 msgid "Wednesday" -msgstr "" +msgstr "woensdag" #: pretix/static/pretixpresale/js/widget/widget.js:88 msgid "Thursday" -msgstr "" +msgstr "donderdag" #: pretix/static/pretixpresale/js/widget/widget.js:89 msgid "Friday" -msgstr "" +msgstr "vrijdag" #: pretix/static/pretixpresale/js/widget/widget.js:90 msgid "Saturday" -msgstr "" +msgstr "zaterdag" #: pretix/static/pretixpresale/js/widget/widget.js:91 msgid "Sunday" -msgstr "" +msgstr "zondag" #: pretix/static/pretixpresale/js/widget/widget.js:94 msgid "January" -msgstr "Januari" +msgstr "januari" #: pretix/static/pretixpresale/js/widget/widget.js:95 msgid "February" -msgstr "Februari" +msgstr "februari" #: pretix/static/pretixpresale/js/widget/widget.js:96 msgid "March" @@ -1217,7 +1222,7 @@ msgstr "Maart" #: pretix/static/pretixpresale/js/widget/widget.js:97 msgid "April" -msgstr "April" +msgstr "april" #: pretix/static/pretixpresale/js/widget/widget.js:98 msgid "May" @@ -1225,15 +1230,15 @@ msgstr "Mei" #: pretix/static/pretixpresale/js/widget/widget.js:99 msgid "June" -msgstr "Juni" +msgstr "juni" #: pretix/static/pretixpresale/js/widget/widget.js:100 msgid "July" -msgstr "Juli" +msgstr "juli" #: pretix/static/pretixpresale/js/widget/widget.js:101 msgid "August" -msgstr "Augustus" +msgstr "augustus" #: pretix/static/pretixpresale/js/widget/widget.js:102 msgid "September" @@ -1241,7 +1246,7 @@ msgstr "September" #: pretix/static/pretixpresale/js/widget/widget.js:103 msgid "October" -msgstr "Oktober" +msgstr "oktober" #: pretix/static/pretixpresale/js/widget/widget.js:104 msgid "November" From 0b99ab74a1784c29ab18dcde06c271998a869e33 Mon Sep 17 00:00:00 2001 From: Nate Horst Date: Thu, 29 Jan 2026 08:41:11 +0100 Subject: [PATCH 004/108] Translations: Update Thai Currently translated at 20.3% (1263 of 6207 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/th/ powered by weblate --- src/pretix/locale/th/LC_MESSAGES/django.po | 963 ++++++++++++--------- 1 file changed, 540 insertions(+), 423 deletions(-) diff --git a/src/pretix/locale/th/LC_MESSAGES/django.po b/src/pretix/locale/th/LC_MESSAGES/django.po index ba128de034..dce79558ea 100644 --- a/src/pretix/locale/th/LC_MESSAGES/django.po +++ b/src/pretix/locale/th/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-01-26 13:19+0000\n" -"PO-Revision-Date: 2026-01-28 09:00+0000\n" +"PO-Revision-Date: 2026-01-29 13:00+0000\n" "Last-Translator: Nate Horst \n" "Language-Team: Thai " "\n" @@ -232,10 +232,9 @@ msgid "Comment" msgstr "ความคิดเห็น" #: pretix/api/serializers/cart.py:168 pretix/api/serializers/order.py:1502 -#, fuzzy, python-brace-format -#| msgid "The product \"{}\" is not assigned to a quota." +#, python-brace-format msgid "The product \"{}\" is not assigned to a quota." -msgstr "สินค้านี้ยังไม่ได้ถูกกำหนดโควต้า" +msgstr "สินค้า \"{}\" ยังไม่ได้ถูกกำหนดโควตา" #: pretix/api/serializers/checkin.py:65 pretix/base/models/event.py:1724 #: pretix/base/models/items.py:1917 pretix/base/models/items.py:2203 @@ -1069,7 +1068,7 @@ msgstr "วันที่สิ้นสุดกิจกรรม" #: pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html:12 #: pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html:20 msgid "Voucher code" -msgstr "รหัสส่วนลด" +msgstr "รหัสเวาเชอร์" #: pretix/base/datasync/sourcefields.py:473 pretix/base/pdf.py:118 msgid "Order code and position number" @@ -3443,15 +3442,15 @@ msgstr "ยืนยันรหัสผ่านใหม่" msgid "" "There already is an account associated with this email address. Please " "choose a different one." -msgstr "" +msgstr "มีบัญชีที่ผูกกับอีเมลนี้อยู่แล้วในระบบ โปรดเลือกใช้อีเมลอื่น" #: pretix/base/forms/user.py:179 msgid "Old email address" -msgstr "" +msgstr "อีเมลเดิม" #: pretix/base/forms/user.py:180 msgid "New email address" -msgstr "" +msgstr "อีเมลใหม่" #: pretix/base/forms/validators.py:51 msgid "" @@ -3460,54 +3459,56 @@ msgid "" "up. Please note: to use literal \"{\" or \"}\", you need to double them as " "\"{{\" and \"}}\"." msgstr "" +"ไวยากรณ์ตัวคั่นข้อมูล (Placeholder) ไม่ถูกต้อง โปรดตรวจสอบว่าปีกกาเปิด \"{\" และปิด \"}\" " +"ตรงกัน หากต้องการพิมพ์ \"{\" หรือ \"}\" ปกติ ให้พิมพ์ซ้ำสองครั้งเป็น \"{{\" และ \"}}\"" #: pretix/base/forms/validators.py:72 pretix/control/views/event.py:877 #, python-format msgid "Invalid placeholder: {%(value)s}" -msgstr "" +msgstr "ตัวคั่นข้อมูลไม่ถูกต้อง: {%(value)s}" #: pretix/base/forms/widgets.py:68 #, python-format msgid "Sample: %s" -msgstr "" +msgstr "ตัวอย่าง: %s" #: pretix/base/forms/widgets.py:71 #, python-brace-format msgid "Available placeholders: {list}" -msgstr "" +msgstr "ตัวคั่นข้อมูลที่ใช้งานได้: {list}" #: pretix/base/forms/widgets.py:214 pretix/base/models/items.py:1656 #: pretix/plugins/checkinlists/exporters.py:757 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_create.html:40 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_update.html:54 msgid "Time" -msgstr "" +msgstr "เวลา" #: pretix/base/forms/widgets.py:234 pretix/base/forms/widgets.py:239 msgid "Business or institutional customer" -msgstr "" +msgstr "ลูกค้าธุรกิจหรือองค์กร" #: pretix/base/forms/widgets.py:238 msgid "Individual customer" -msgstr "" +msgstr "ลูกค้าบุคคลธรรมดา" #: pretix/base/invoicing/email.py:50 msgid "Email invoice directly to accounting department" -msgstr "" +msgstr "ส่งใบแจ้งหนี้ไปยังแผนกบัญชีทางอีเมลโดยตรง" #: pretix/base/invoicing/email.py:51 msgid "" "If not selected, the invoice will be sent to you using the email address " "listed above." -msgstr "" +msgstr "หากไม่เลือก ตัวระบบจะส่งใบแจ้งหนี้ไปยังที่อยู่อีเมลที่คุณระบุไว้ด้านบน" #: pretix/base/invoicing/email.py:55 msgid "Email address for invoice" -msgstr "" +msgstr "อีเมลสำหรับรับใบแจ้งหนี้" #: pretix/base/invoicing/email.py:91 msgid "PDF via email" -msgstr "" +msgstr "รับไฟล์ PDF ทางอีเมล" #: pretix/base/invoicing/national.py:37 msgctxt "italian_invoice" @@ -3547,57 +3548,57 @@ msgstr "" #, python-format msgctxt "invoice" msgid "Page %d of %d" -msgstr "" +msgstr "หน้า %d จากทั้งหมด %d หน้า" #: pretix/base/invoicing/pdf.py:383 msgctxt "invoice" msgid "Classic renderer (pretix 1.0)" -msgstr "" +msgstr "ตัวประมวลผลแบบคลาสสิก (pretix 1.0)" #: pretix/base/invoicing/pdf.py:427 msgctxt "invoice" msgid "Invoice from" -msgstr "" +msgstr "ผู้ส่ง" #: pretix/base/invoicing/pdf.py:433 msgctxt "invoice" msgid "Invoice to" -msgstr "" +msgstr "ส่งถึง" #: pretix/base/invoicing/pdf.py:470 pretix/base/invoicing/pdf.py:1221 msgctxt "invoice" msgid "Order code" -msgstr "" +msgstr "รหัสคำสั่งซื้อ" #: pretix/base/invoicing/pdf.py:479 pretix/base/invoicing/pdf.py:1234 msgctxt "invoice" msgid "Cancellation number" -msgstr "" +msgstr "เลขที่การยกเลิก" #: pretix/base/invoicing/pdf.py:485 pretix/base/invoicing/pdf.py:1236 msgctxt "invoice" msgid "Original invoice" -msgstr "" +msgstr "ใบแจ้งหนี้ต้นฉบับ" #: pretix/base/invoicing/pdf.py:490 pretix/base/invoicing/pdf.py:1241 msgctxt "invoice" msgid "Invoice number" -msgstr "" +msgstr "เลขที่ใบแจ้งหนี้" #: pretix/base/invoicing/pdf.py:498 pretix/base/invoicing/pdf.py:1256 msgctxt "invoice" msgid "Cancellation date" -msgstr "" +msgstr "วันที่ยกเลิก" #: pretix/base/invoicing/pdf.py:504 msgctxt "invoice" msgid "Original invoice date" -msgstr "" +msgstr "วันที่ในใบแจ้งหนี้ต้นฉบับ" #: pretix/base/invoicing/pdf.py:511 pretix/base/invoicing/pdf.py:1258 msgctxt "invoice" msgid "Invoice date" -msgstr "" +msgstr "วันที่ออกใบแจ้งหนี้" #: pretix/base/invoicing/pdf.py:527 msgctxt "invoice" @@ -3611,23 +3612,25 @@ msgid "" "{from_date}\n" "until {to_date}" msgstr "" +"{from_date}\n" +"ถึง {to_date}" #: pretix/base/invoicing/pdf.py:608 pretix/base/services/mail.py:511 #, python-brace-format msgctxt "invoice" msgid "Invoice {num}" -msgstr "" +msgstr "ใบแจ้งหนี้เลขที่ {num}" #: pretix/base/invoicing/pdf.py:660 #, python-brace-format msgctxt "invoice" msgid "Customer reference: {reference}" -msgstr "" +msgstr "ข้อมูลอ้างอิงลูกค้า: {reference}" #: pretix/base/invoicing/pdf.py:668 msgctxt "invoice" msgid "Customer VAT ID" -msgstr "" +msgstr "เลขประจำตัวผู้เสียภาษี" #: pretix/base/invoicing/pdf.py:675 msgctxt "invoice" @@ -3637,7 +3640,7 @@ msgstr "ผู้รับผลประโยชน์" #: pretix/base/invoicing/pdf.py:708 msgctxt "invoice" msgid "Tax Invoice" -msgstr "" +msgstr "ใบกำกับภาษี" #: pretix/base/invoicing/pdf.py:709 msgctxt "invoice" @@ -3650,17 +3653,17 @@ msgstr "ใบแจ้งหนี้" #: pretix/presale/templates/pretixpresale/event/order.html:244 msgctxt "invoice" msgid "Cancellation" -msgstr "" +msgstr "การยกเลิก / ใบรับคืน" #: pretix/base/invoicing/pdf.py:732 pretix/base/invoicing/pdf.py:740 msgctxt "invoice" msgid "Description" -msgstr "คำอธิบาย" +msgstr "รายการ" #: pretix/base/invoicing/pdf.py:733 pretix/base/invoicing/pdf.py:741 msgctxt "invoice" msgid "Qty" -msgstr "" +msgstr "จำนวน" #: pretix/base/invoicing/pdf.py:734 pretix/base/invoicing/pdf.py:1038 msgctxt "invoice" @@ -3670,70 +3673,70 @@ msgstr "อัตราภาษี" #: pretix/base/invoicing/pdf.py:735 msgctxt "invoice" msgid "Net" -msgstr "" +msgstr "จำนวนเงินสุทธิ" #: pretix/base/invoicing/pdf.py:736 msgctxt "invoice" msgid "Gross" -msgstr "" +msgstr "จำนวนเงินรวม" #: pretix/base/invoicing/pdf.py:742 msgctxt "invoice" msgid "Amount" -msgstr "จำนวน" +msgstr "จำนวนเงิน" #: pretix/base/invoicing/pdf.py:869 #, python-brace-format msgctxt "invoice" msgid "Single price: {net_price} net / {gross_price} gross" -msgstr "" +msgstr "ราคาต่อหน่วย: {net_price} (ยังไม่รวมภาษี) / {gross_price} (รวมภาษี)" #: pretix/base/invoicing/pdf.py:900 #, python-brace-format msgctxt "invoice" msgid "Single price: {price}" -msgstr "" +msgstr "ราคาต่อหน่วย: {price}" #: pretix/base/invoicing/pdf.py:943 pretix/base/invoicing/pdf.py:948 msgctxt "invoice" msgid "Invoice total" -msgstr "" +msgstr "ยอดรวมทั้งสิ้น" #: pretix/base/invoicing/pdf.py:957 msgctxt "invoice" msgid "Received payments" -msgstr "" +msgstr "ชำระแล้ว" #: pretix/base/invoicing/pdf.py:962 msgctxt "invoice" msgid "Outstanding payments" -msgstr "" +msgstr "ยอดค้างชำระ" #: pretix/base/invoicing/pdf.py:979 msgctxt "invoice" msgid "Paid by gift card" -msgstr "จ่ายโดยบัตรของขวัญ" +msgstr "ชำระด้วยบัตรของขวัญ" #: pretix/base/invoicing/pdf.py:984 msgctxt "invoice" msgid "Remaining amount" -msgstr "จำนวนคงเหลือ" +msgstr "ยอดคงเหลือ" #: pretix/base/invoicing/pdf.py:1008 #, python-brace-format msgctxt "invoice" msgid "Invoice period: {daterange}" -msgstr "" +msgstr "รอบการเรียกเก็บเงิน: {daterange}" #: pretix/base/invoicing/pdf.py:1039 msgctxt "invoice" msgid "Net value" -msgstr "ยอดสุทธิ" +msgstr "มูลค่าสุทธิ" #: pretix/base/invoicing/pdf.py:1040 msgctxt "invoice" msgid "Gross value" -msgstr "" +msgstr "มูลค่ารวม" #: pretix/base/invoicing/pdf.py:1041 msgctxt "invoice" @@ -3743,7 +3746,7 @@ msgstr "ภาษี" #: pretix/base/invoicing/pdf.py:1071 msgctxt "invoice" msgid "Included taxes" -msgstr "" +msgstr "ภาษีที่รวมอยู่" #: pretix/base/invoicing/pdf.py:1099 #, python-brace-format @@ -3752,6 +3755,7 @@ msgid "" "Using the conversion rate of 1:{rate} as published by the {authority} on " "{date}, this corresponds to:" msgstr "" +"ตามอัตราแลกเปลี่ยน 1:{rate} ที่ประกาศโดย {authority} ณ วันที่ {date} ซึ่งเทียบเท่ากับ:" #: pretix/base/invoicing/pdf.py:1114 #, python-brace-format @@ -3760,25 +3764,27 @@ msgid "" "Using the conversion rate of 1:{rate} as published by the {authority} on " "{date}, the invoice total corresponds to {total}." msgstr "" +"ตามอัตราแลกเปลี่ยน 1:{rate} ที่ประกาศโดย {authority} ณ วันที่ {date} ยอดรวมในใบแจ้งหนี้จ" +"ะเทียบเท่ากับ {total}" #: pretix/base/invoicing/pdf.py:1128 msgid "Default invoice renderer (European-style letter)" -msgstr "" +msgstr "รูปแบบใบแจ้งหนี้เริ่มต้น (แบบจดหมายยุโรป)" #: pretix/base/invoicing/pdf.py:1217 msgctxt "invoice" msgid "(Please quote at all times.)" -msgstr "" +msgstr "(โปรดอ้างอิงข้อมูลนี้ทุกครั้ง)" #: pretix/base/invoicing/pdf.py:1264 msgid "Simplified invoice renderer" -msgstr "" +msgstr "รูปแบบใบแจ้งหนี้อย่างย่อ" #: pretix/base/invoicing/pdf.py:1283 #, python-brace-format msgctxt "invoice" msgid "Event date: {date_range}" -msgstr "" +msgstr "วันที่จัดกิจกรรม: {date_range}" #: pretix/base/invoicing/peppol.py:136 msgid "" @@ -3828,110 +3834,110 @@ msgstr "" #: pretix/base/logentrytype_registry.py:53 msgid "The relevant plugin is currently not active." -msgstr "" +msgstr "ปลั๊กอินที่เกี่ยวข้องยังไม่ได้เปิดใช้งานในขณะนี้" #: pretix/base/logentrytypes.py:49 msgid "(deleted)" -msgstr "" +msgstr "(ลบแล้ว)" #: pretix/base/logentrytypes.py:78 #, python-brace-format msgid "Order {val}" -msgstr "" +msgstr "คำสั่งซื้อ {val}" #: pretix/base/logentrytypes.py:90 #, python-brace-format msgid "Voucher {val}…" -msgstr "" +msgstr "เวาเชอร์ {val}…" #: pretix/base/logentrytypes.py:102 #, python-brace-format msgid "Product {val}" -msgstr "" +msgstr "สินค้า {val}" #: pretix/base/logentrytypes.py:109 #, python-brace-format msgctxt "subevent" msgid "Date {val}" -msgstr "" +msgstr "วันที่ {val}" #: pretix/base/logentrytypes.py:116 #, python-brace-format msgid "Quota {val}" -msgstr "" +msgstr "โควตา {val}" #: pretix/base/logentrytypes.py:123 #, python-brace-format msgid "Discount {val}" -msgstr "" +msgstr "ส่วนลด {val}" #: pretix/base/logentrytypes.py:130 #, python-brace-format msgid "Category {val}" -msgstr "" +msgstr "หมวดหมู่ {val}" #: pretix/base/logentrytypes.py:137 #, python-brace-format msgid "Question {val}" -msgstr "" +msgstr "คำถาม {val}" #: pretix/base/logentrytypes.py:144 #, python-brace-format msgid "Tax rule {val}" -msgstr "" +msgstr "กฎภาษี {val}" #: pretix/base/media.py:71 msgid "Barcode / QR-Code" -msgstr "" +msgstr "บาร์โค้ด / คิวอาร์โค้ด" #: pretix/base/media.py:88 #: pretix/control/templates/pretixcontrol/organizers/edit.html:256 msgid "NFC UID-based" -msgstr "" +msgstr "อ้างอิงจาก NFC UID" #: pretix/base/migrations/0077_auto_20171124_1629.py:33 #: pretix/base/migrations/0077_auto_20171124_1629_squashed_0088_auto_20180328_1217.py:35 msgid "Default list" -msgstr "" +msgstr "รายการเริ่มต้น" #: pretix/base/modelimport.py:126 msgid "Keep empty" -msgstr "" +msgstr "เว้นว่างไว้" #: pretix/base/modelimport.py:160 #, python-brace-format msgid "Invalid setting for column \"{header}\"." -msgstr "" +msgstr "การตั้งค่าสำหรับคอลัมน์ \"{header}\" ไม่ถูกต้อง" #: pretix/base/modelimport.py:220 #, python-brace-format msgid "Could not parse {value} as a yes/no value." -msgstr "" +msgstr "ไม่สามารถประมวลผล {value} เป็นค่า ใช่/ไม่ใช่ ได้" #: pretix/base/modelimport.py:243 #, python-brace-format msgid "Could not parse {value} as a date and time." -msgstr "" +msgstr "ไม่สามารถประมวลผล {value} เป็นวันที่และเวลาได้" #: pretix/base/modelimport.py:253 pretix/control/views/orders.py:1181 #: pretix/control/views/orders.py:1210 pretix/control/views/orders.py:1255 #: pretix/control/views/orders.py:1290 pretix/control/views/orders.py:1313 msgid "You entered an invalid number." -msgstr "" +msgstr "คุณกรอกตัวเลขไม่ถูกต้อง" #: pretix/base/modelimport.py:300 pretix/base/modelimport.py:312 msgctxt "subevent" msgid "No matching date was found." -msgstr "" +msgstr "ไม่พบวันที่ที่ตรงกัน" #: pretix/base/modelimport.py:302 pretix/base/modelimport.py:314 msgctxt "subevent" msgid "Multiple matching dates were found." -msgstr "" +msgstr "พบวันที่ที่ตรงกันหลายรายการ" #: pretix/base/modelimport_orders.py:73 msgid "Grouping" -msgstr "" +msgstr "การจัดกลุ่ม" #: pretix/base/modelimport_orders.py:75 msgid "" @@ -3939,10 +3945,12 @@ 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 "" +"ใช้ได้เฉพาะเมื่อ \"โหมดการนำเข้า\" ถูกตั้งค่าเป็น \"รวมหลายบรรทัดเข้าด้วยกัน...\" บรรทัดที่มีค่า" +"การจัดกลุ่มเดียวกันจะถูกรวมอยู่ในคำสั่งซื้อเดียวกัน แต่ต้องเป็นบรรทัดที่เรียงต่อกันในไฟล์ที่นำเข้า" #: pretix/base/modelimport_orders.py:101 msgid "Enter a valid phone number." -msgstr "" +msgstr "โปรดกรอกหมายเลขโทรศัพท์ที่ถูกต้อง" #: pretix/base/modelimport_orders.py:114 msgctxt "subevents" @@ -3950,26 +3958,28 @@ 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 "" +"สามารถระบุวันที่ได้ผ่านชื่อเต็ม วันที่และเวลาเต็ม หรือ ID ภายใน โดยระบบจะตรวจสอบหากมีเพียงวันที่" +"เดียวที่ตรงกับข้อมูลที่นำเข้า" #: pretix/base/modelimport_orders.py:120 pretix/presale/views/waiting.py:157 msgctxt "subevent" msgid "You need to select a date." -msgstr "" +msgstr "คุณต้องเลือกวันที่" #: pretix/base/modelimport_orders.py:131 msgid "" "The product can be specified by its internal ID, full name or internal name." -msgstr "" +msgstr "สามารถระบุสินค้าได้ด้วย ID ภายใน ชื่อเต็ม หรือชื่อที่ใช้ภายในระบบ" #: pretix/base/modelimport_orders.py:149 #: pretix/base/modelimport_vouchers.py:194 msgid "No matching product was found." -msgstr "" +msgstr "ไม่พบสินค้าที่ตรงกัน" #: pretix/base/modelimport_orders.py:151 #: pretix/base/modelimport_vouchers.py:196 msgid "Multiple matching products were found." -msgstr "" +msgstr "พบสินค้าที่ตรงกันหลายรายการ" #: pretix/base/modelimport_orders.py:160 #: pretix/base/modelimport_vouchers.py:205 pretix/base/models/items.py:1257 @@ -3979,47 +3989,47 @@ msgstr "รูปแบบสินค้า" #: pretix/base/modelimport_orders.py:161 msgid "The variation can be specified by its internal ID or full name." -msgstr "" +msgstr "สามารถระบุรูปแบบสินค้าได้ด้วย ID ภายใน หรือชื่อเต็ม" #: pretix/base/modelimport_orders.py:181 #: pretix/base/modelimport_vouchers.py:225 #: pretix/base/modelimport_vouchers.py:259 msgid "No matching variation was found." -msgstr "" +msgstr "ไม่พบรูปแบบสินค้าที่ตรงกัน" #: pretix/base/modelimport_orders.py:183 #: pretix/base/modelimport_vouchers.py:227 #: pretix/base/modelimport_vouchers.py:261 msgid "Multiple matching variations were found." -msgstr "" +msgstr "พบรูปแบบสินค้าที่ตรงกันหลายรายการ" #: pretix/base/modelimport_orders.py:186 msgid "You need to select a variation for this product." -msgstr "" +msgstr "คุณต้องเลือกรูปแบบสำหรับสินค้าชิ้นนี้" #: pretix/base/modelimport_orders.py:265 pretix/base/modelimport_orders.py:417 msgid "The country needs to be specified using a two-letter country code." -msgstr "" +msgstr "ต้องระบุประเทศด้วยรหัสประเทศแบบตัวอักษรสองตัว" #: pretix/base/modelimport_orders.py:281 pretix/base/modelimport_orders.py:432 msgid "Please enter a valid country code." -msgstr "" +msgstr "โปรดกรอกรหัสประเทศที่ถูกต้อง" #: 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 "สามารถระบุรัฐ/จังหวัดได้ด้วยชื่อย่อหรือชื่อเต็ม" #: pretix/base/modelimport_orders.py:300 pretix/base/modelimport_orders.py:450 msgid "States are not supported for this country." -msgstr "" +msgstr "ประเทศนี้ไม่รองรับการระบุรัฐ/จังหวัด" #: pretix/base/modelimport_orders.py:308 pretix/base/modelimport_orders.py:458 msgid "Please enter a valid state." -msgstr "" +msgstr "โปรดระบุรัฐ/จังหวัดที่ถูกต้อง" #: pretix/base/modelimport_orders.py:359 pretix/control/forms/filter.py:687 msgid "Attendee email address" -msgstr "" +msgstr "อีเมลผู้เข้าร่วม" #: pretix/base/modelimport_orders.py:375 pretix/base/modelimport_orders.py:386 #: pretix/base/modelimport_orders.py:397 pretix/base/modelimport_orders.py:408 @@ -4031,57 +4041,57 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:193 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:196 msgid "Attendee address" -msgstr "" +msgstr "ที่อยู่ผู้เข้าร่วม" #: pretix/base/modelimport_orders.py:445 msgid "State" -msgstr "" +msgstr "จังหวัด" #: pretix/base/modelimport_orders.py:468 msgid "Calculate from product" -msgstr "" +msgstr "คำนวณจากสินค้า" #: pretix/base/modelimport_orders.py:486 #: pretix/control/templates/pretixcontrol/checkin/index.html:111 #: pretix/control/templates/pretixcontrol/order/index.html:536 msgid "Ticket code" -msgstr "" +msgstr "รหัสตั๋ว" #: pretix/base/modelimport_orders.py:487 msgid "Generate automatically" -msgstr "" +msgstr "สร้างโดยอัตโนมัติ" #: pretix/base/modelimport_orders.py:496 msgid "You cannot assign a position secret that already exists." -msgstr "" +msgstr "คุณไม่สามารถใช้รหัสลับ (Position Secret) ที่มีอยู่แล้วได้" #: pretix/base/modelimport_orders.py:528 msgid "Please enter a valid language code." -msgstr "" +msgstr "โปรดกรอกรหัสภาษาที่ถูกต้อง" #: pretix/base/modelimport_orders.py:581 msgid "" "The sales channel can be specified by it's internal identifier or its full " "name." -msgstr "" +msgstr "สามารถระบุช่องทางการขายได้ด้วยตัวระบุภายในหรือชื่อเต็ม" #: pretix/base/modelimport_orders.py:599 pretix/base/modelimport_orders.py:601 msgid "Please enter a valid sales channel." -msgstr "" +msgstr "โปรดระบุช่องทางการขายที่ถูกต้อง" #: pretix/base/modelimport_orders.py:611 msgid "The seat needs to be specified by its internal ID." -msgstr "" +msgstr "ต้องระบุที่นั่งด้วย ID ภายใน" #: pretix/base/modelimport_orders.py:626 #: pretix/base/modelimport_vouchers.py:291 msgid "Multiple matching seats were found." -msgstr "" +msgstr "พบที่นั่งที่ตรงกันหลายรายการ" #: pretix/base/modelimport_orders.py:628 #: pretix/base/modelimport_vouchers.py:293 msgid "No matching seat was found." -msgstr "" +msgstr "ไม่พบที่นั่งที่ตรงกัน" #: pretix/base/modelimport_orders.py:631 #: pretix/base/modelimport_vouchers.py:296 pretix/base/services/cart.py:220 @@ -4089,11 +4099,11 @@ msgstr "" #: pretix/base/services/modelimport.py:299 msgid "" "The seat you selected has already been taken. Please select a different seat." -msgstr "" +msgstr "ที่นั่งที่คุณเลือกมีผู้จองแล้ว โปรดเลือกที่นั่งอื่น" #: pretix/base/modelimport_orders.py:634 pretix/base/services/cart.py:217 msgid "You need to select a specific seat." -msgstr "" +msgstr "คุณต้องระบุที่นั่งที่แน่นอน" #: pretix/base/modelimport_orders.py:691 pretix/base/models/items.py:1671 #: pretix/base/models/items.py:1766 pretix/control/forms/item.py:148 @@ -4101,149 +4111,151 @@ msgstr "" #: pretix/control/templates/pretixcontrol/items/question_edit.html:17 #: pretix/control/templates/pretixcontrol/items/questions.html:21 msgid "Question" -msgstr "" +msgstr "คำถาม" #: pretix/base/modelimport_orders.py:701 pretix/base/modelimport_orders.py:709 #: pretix/base/models/items.py:1830 pretix/base/models/items.py:1848 msgid "Invalid option selected." -msgstr "" +msgstr "ตัวเลือกที่เลือกไม่ถูกต้อง" #: pretix/base/modelimport_orders.py:703 pretix/base/modelimport_orders.py:711 msgid "Ambiguous option selected." -msgstr "" +msgstr "ตัวเลือกที่เลือกกำกวมหรือไม่ชัดเจน" #: pretix/base/modelimport_orders.py:742 pretix/base/models/orders.py:239 msgid "Customer" -msgstr "" +msgstr "ลูกค้า" #: pretix/base/modelimport_orders.py:756 msgid "No matching customer was found." -msgstr "" +msgstr "ไม่พบข้อมูลลูกค้าที่ตรงกัน" #: pretix/base/modelimport_vouchers.py:50 pretix/base/models/vouchers.py:491 msgid "A voucher with this code already exists." -msgstr "" +msgstr "มีเวาเชอร์ที่ใช้รหัสนี้อยู่แล้วในระบบ" #: pretix/base/modelimport_vouchers.py:68 pretix/base/models/memberships.py:57 #: pretix/base/models/vouchers.py:199 pretix/control/views/vouchers.py:120 #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:52 msgid "Maximum usages" -msgstr "" +msgstr "จำนวนการใช้งานสูงสุด" #: pretix/base/modelimport_vouchers.py:79 msgid "The maximum number of usages must be set." -msgstr "" +msgstr "ต้องกำหนดจำนวนการใช้งานสูงสุด" #: pretix/base/modelimport_vouchers.py:88 pretix/base/models/vouchers.py:208 msgid "Minimum usages" -msgstr "" +msgstr "จำนวนการใช้งานขั้นต่ำ" #: pretix/base/modelimport_vouchers.py:103 pretix/base/models/vouchers.py:216 msgid "Maximum discount budget" -msgstr "" +msgstr "งบประมาณส่วนลดสูงสุด" #: pretix/base/modelimport_vouchers.py:119 pretix/base/models/vouchers.py:228 #: pretix/control/forms/filter.py:2257 msgid "Reserve ticket from quota" -msgstr "" +msgstr "สำรองตั๋วจากโควตา" #: pretix/base/modelimport_vouchers.py:127 pretix/base/models/vouchers.py:236 msgid "Allow to bypass quota" -msgstr "" +msgstr "อนุญาตให้ข้ามการตรวจสอบโควตา" #: pretix/base/modelimport_vouchers.py:135 pretix/base/models/vouchers.py:242 msgid "Price mode" -msgstr "" +msgstr "โหมดราคา" #: pretix/base/modelimport_vouchers.py:150 #, python-brace-format msgid "Could not parse {value} as a price mode, use one of {options}." msgstr "" +"ไม่สามารถประมวลผล {value} เป็นโหมดราคาได้ โปรดใช้ค่าใดค่าหนึ่งจาก {options}" #: pretix/base/modelimport_vouchers.py:160 pretix/base/models/vouchers.py:248 msgid "Voucher value" -msgstr "" +msgstr "มูลค่าเวาเชอร์" #: pretix/base/modelimport_vouchers.py:165 msgid "It is pointless to set a value without a price mode." -msgstr "" +msgstr "การกำหนดมูลค่าจะไม่มีผลหากไม่ได้กำหนดโหมดราคา" #: pretix/base/modelimport_vouchers.py:237 pretix/base/models/items.py:2121 #: pretix/base/models/vouchers.py:275 #: pretix/control/templates/pretixcontrol/items/quota_edit.html:8 #: pretix/control/templates/pretixcontrol/items/quota_edit.html:15 msgid "Quota" -msgstr "" +msgstr "โควตา" #: pretix/base/modelimport_vouchers.py:253 msgid "You cannot specify a quota if you specified a product." -msgstr "" +msgstr "คุณไม่สามารถระบุโควตาได้หากมีการระบุสินค้าไว้แล้ว" #: pretix/base/modelimport_vouchers.py:282 pretix/base/models/vouchers.py:498 msgid "You need to choose a date if you select a seat." -msgstr "" +msgstr "คุณต้องเลือกวันที่หากมีการเลือกที่นั่ง" #: pretix/base/modelimport_vouchers.py:299 pretix/base/models/vouchers.py:516 msgid "You need to choose a specific product if you select a seat." -msgstr "" +msgstr "คุณต้องเลือกสินค้าที่เฉพาะเจาะจงหากมีการเลือกที่นั่ง" #: pretix/base/modelimport_vouchers.py:302 pretix/base/models/vouchers.py:519 msgid "Seat-specific vouchers can only be used once." -msgstr "" +msgstr "เวาเชอร์สำหรับที่นั่งเฉพาะเจาะจงสามารถใช้งานได้เพียงครั้งเดียวเท่านั้น" #: pretix/base/modelimport_vouchers.py:306 pretix/base/models/vouchers.py:522 #, python-brace-format msgid "You need to choose the product \"{prod}\" for this seat." -msgstr "" +msgstr "คุณต้องเลือกสินค้า \"{prod}\" สำหรับที่นั่งนี้" #: pretix/base/modelimport_vouchers.py:318 pretix/base/models/vouchers.py:288 #: pretix/control/templates/pretixcontrol/vouchers/index.html:129 #: pretix/control/templates/pretixcontrol/vouchers/tags.html:42 #: pretix/control/views/vouchers.py:120 msgid "Tag" -msgstr "" +msgstr "แท็ก" #: pretix/base/modelimport_vouchers.py:334 pretix/base/models/vouchers.py:300 msgid "Shows hidden products that match this voucher" -msgstr "" +msgstr "แสดงสินค้าที่ถูกซ่อนไว้ที่ตรงกับเวาเชอร์นี้" #: pretix/base/modelimport_vouchers.py:343 pretix/base/models/vouchers.py:304 msgid "Offer all add-on products for free when redeeming this voucher" -msgstr "" +msgstr "มอบสินค้าเพิ่มเติม (Add-on) ทั้งหมดให้ฟรีเมื่อใช้เวาเชอร์นี้" #: pretix/base/modelimport_vouchers.py:351 pretix/base/models/vouchers.py:308 msgid "" "Include all bundled products without a designated price when redeeming this " "voucher" msgstr "" +"รวมสินค้าที่จัดชุด (Bundle) ทั้งหมดที่ไม่ได้ระบุราคา เมื่อมีการใช้เวาเชอร์นี้" #: pretix/base/models/auth.py:251 msgid "Is active" -msgstr "" +msgstr "ใช้งานอยู่" #: pretix/base/models/auth.py:253 msgid "Is site admin" -msgstr "" +msgstr "เป็นผู้ดูแลระบบ" #: pretix/base/models/auth.py:255 msgid "Date joined" -msgstr "" +msgstr "วันที่เข้าร่วม" #: pretix/base/models/auth.py:257 msgid "Force user to select a new password" -msgstr "" +msgstr "บังคับให้ผู้ใช้ตั้งรหัสผ่านใหม่" #: pretix/base/models/auth.py:267 msgid "Two-factor authentication is required to log in" -msgstr "" +msgstr "ต้องใช้การยืนยันตัวตนแบบสองขั้นตอนเพื่อเข้าสู่ระบบ" #: pretix/base/models/auth.py:271 msgid "Receive notifications according to my settings below" -msgstr "" +msgstr "รับการแจ้งเตือนตามการตั้งค่าด้านล่าง" #: pretix/base/models/auth.py:272 msgid "If turned off, you will not get any notifications." -msgstr "" +msgstr "หากปิดใช้งาน คุณจะไม่ได้รับการแจ้งเตือนใด ๆ" #: pretix/base/models/auth.py:286 #: pretix/control/templates/pretixcontrol/orders/bulk_action.html:23 @@ -4255,17 +4267,17 @@ msgstr "" #: pretix/control/templates/pretixcontrol/users/form.html:6 #: pretix/control/views/organizer.py:171 tests/base/test_mail.py:157 msgid "User" -msgstr "" +msgstr "ผู้ใช้" #: pretix/base/models/auth.py:287 pretix/control/navigation.py:411 #: pretix/control/templates/pretixcontrol/users/index.html:5 #: pretix/control/templates/pretixcontrol/users/index.html:7 msgid "Users" -msgstr "" +msgstr "ผู้ใช้" #: pretix/base/models/auth.py:345 msgid "Account information changed" -msgstr "" +msgstr "ข้อมูลบัญชีมีการเปลี่ยนแปลง" #: pretix/base/models/auth.py:373 #, python-brace-format @@ -4273,6 +4285,8 @@ msgid "" "to confirm changing your email address from {old_email}\n" "to {new_email}, use the following code:" msgstr "" +"หากต้องการยืนยันการเปลี่ยนอีเมลจาก {old_email}\n" +"เป็น {new_email} โปรดใช้รหัสต่อไปนี้:" #: pretix/base/models/auth.py:377 #, python-brace-format @@ -4280,24 +4294,25 @@ msgid "" "to confirm that your email address {email} belongs to your pretix account, " "use the following code:" msgstr "" +"หากต้องการยืนยันว่าอีเมล {email} เป็นของบัญชี pretix ของคุณ โปรดใช้รหัสต่อไปนี้:" #: pretix/base/models/auth.py:391 msgid "pretix confirmation code" -msgstr "" +msgstr "รหัสยืนยันจาก pretix" #: pretix/base/models/auth.py:434 #: pretix/control/templates/pretixcontrol/auth/forgot.html:7 msgid "Password recovery" -msgstr "" +msgstr "การกู้คืนรหัสผ่าน" #: pretix/base/models/checkin.py:55 msgid "All products (including newly created ones)" -msgstr "" +msgstr "สินค้าทั้งหมด (รวมถึงสินค้าที่สร้างใหม่)" #: pretix/base/models/checkin.py:56 pretix/plugins/badges/exporters.py:436 #: pretix/plugins/checkinlists/exporters.py:854 msgid "Limit to products" -msgstr "" +msgstr "จำกัดเฉพาะสินค้าที่เลือก" #: pretix/base/models/checkin.py:60 msgid "" @@ -4305,37 +4320,41 @@ msgid "" "and valid for check-in regardless of which date they are purchased for. You " "can limit their validity through the advanced check-in rules, though." msgstr "" +"หากคุณเลือก \"ทุกวันที่\" ตั๋วจะถูกรวมอยู่ในรายการนี้และสามารถเช็คอินได้โดยไม่จำกัดวันที่ซื้อ อย่างไร" +"ก็ตาม คุณสามารถจำกัดอายุการใช้งานผ่านกฎการเช็คอินขั้นสูงได้" #: pretix/base/models/checkin.py:65 msgctxt "checkin" msgid "Ignore check-ins on this list in statistics" -msgstr "" +msgstr "ไม่รวมการเช็คอินในรายการนี้ในสถิติ" #: pretix/base/models/checkin.py:69 msgctxt "checkin" msgid "Tickets with a check-in on this list should be considered \"used\"" -msgstr "" +msgstr "ให้ถือว่าตั๋วที่มีการเช็คอินในรายการนี้ \"ใช้งานแล้ว\"" #: pretix/base/models/checkin.py:70 msgid "" "This is relevant in various situations, e.g. for deciding if a ticket can " "still be canceled by the customer." msgstr "" +"ข้อมูลนี้สำคัญในหลายกรณี เช่น เพื่อตัดสินใจว่าลูกค้ายังสามารถยกเลิกตั๋วได้หรือไม่" #: pretix/base/models/checkin.py:74 msgctxt "checkin" msgid "Include pending orders" -msgstr "" +msgstr "รวมคำสั่งซื้อที่รอการชำระเงิน" #: pretix/base/models/checkin.py:76 msgid "" "With this option, people will be able to check in even if the order has not " "been paid." msgstr "" +"เมื่อเลือกตัวเลือกนี้ ผู้เข้าร่วมจะสามารถเช็คอินได้แม้ว่าจะยังไม่ได้ชำระเงินก็ตาม" #: pretix/base/models/checkin.py:79 msgid "Allow checking in add-on tickets by scanning the main ticket" -msgstr "" +msgstr "อนุญาตให้เช็คอินตั๋วเสริม (Add-on) โดยการสแกนตั๋วหลัก" #: pretix/base/models/checkin.py:81 msgid "" @@ -4343,34 +4362,37 @@ msgid "" "there is always exactly one matching add-on ticket. Ambiguous scans will be " "rejected.." msgstr "" +"จะสแกนได้ก็ต่อเมื่อรายการเช็คอินถูกตั้งค่าให้มีตั๋วเสริมที่ตรงกันเพียงใบเดียวเท่านั้น ระบบจะปฏิเสธการส" +"แกนที่ซ้ำซ้อนหรือไม่ชัดเจน" #: pretix/base/models/checkin.py:85 pretix/control/navigation.py:652 #: pretix/control/templates/pretixcontrol/organizers/gates.html:5 msgid "Gates" -msgstr "" +msgstr "ประตูทางเข้า" #: pretix/base/models/checkin.py:86 msgid "" "Does not have any effect for the validation of tickets, only for the " "automatic configuration of check-in devices." msgstr "" +"ไม่มีผลต่อการตรวจสอบความถูกต้องของตั๋ว แต่ใช้สำหรับการตั้งค่าอุปกรณ์เช็คอินโดยอัตโนมัติเท่านั้น" #: pretix/base/models/checkin.py:90 msgid "Allow re-entering after an exit scan" -msgstr "" +msgstr "อนุญาตให้กลับเข้างานได้หลังจากสแกนออกแล้ว" #: pretix/base/models/checkin.py:94 msgid "Allow multiple entries per ticket" -msgstr "" +msgstr "อนุญาตให้สแกนเข้างานได้หลายครั้งต่อหนึ่งตั๋ว" #: pretix/base/models/checkin.py:95 msgid "" "Use this option to turn off warnings if a ticket is scanned a second time." -msgstr "" +msgstr "ใช้ตัวเลือกนี้เพื่อปิดการแจ้งเตือนหากตั๋วถูกสแกนเป็นครั้งที่สอง" #: pretix/base/models/checkin.py:99 msgid "Automatically check out everyone at" -msgstr "" +msgstr "เช็คเอาต์ทุกคนโดยอัตโนมัติในเวลา" #: pretix/base/models/checkin.py:336 msgid "Entry" @@ -4390,7 +4412,7 @@ msgstr "ตั๋วยังไม่ได้ชำระเงิน" #: pretix/base/models/checkin.py:358 msgid "Forbidden by custom rule" -msgstr "" +msgstr "ปฏิเสธการเข้าถึงโดยกฎที่กำหนดเอง" #: pretix/base/models/checkin.py:359 msgid "Ticket code revoked/changed" @@ -4414,7 +4436,7 @@ msgstr "รหัสตั๋วซ้ำซ้อนในรายการ" #: pretix/base/models/checkin.py:364 msgid "Server error" -msgstr "" +msgstr "เกิดข้อผิดพลาดที่เซิร์ฟเวอร์" #: pretix/base/models/checkin.py:365 msgid "Ticket blocked" @@ -4430,19 +4452,19 @@ msgstr "ตั๋วไม่สามารถใช้งานได้ใน #: pretix/base/models/checkin.py:368 msgid "Check-in annulled" -msgstr "" +msgstr "การเช็คอินถูกยกเลิกแล้ว" #: pretix/base/models/customers.py:62 msgid "Provider name" -msgstr "" +msgstr "ชื่อผู้ให้บริการ" #: pretix/base/models/customers.py:67 msgid "Login button label" -msgstr "" +msgstr "ข้อความบนปุ่มเข้าสู่ระบบ" #: pretix/base/models/customers.py:71 msgid "Single-sign-on method" -msgstr "" +msgstr "วิธีการเข้าสู่ระบบแบบ Single Sign-On" #: pretix/base/models/customers.py:92 pretix/base/models/devices.py:71 #: pretix/base/models/items.py:1676 pretix/base/models/items.py:1952 @@ -4450,12 +4472,16 @@ msgid "" "You can enter any value here to make it easier to match the data with other " "sources. If you do not input one, we will generate one automatically." msgstr "" +"คุณสามารถระบุค่าใดก็ได้ที่นี่เพื่อให้ง่ายต่อการจับคู่ข้อมูลกับแหล่งข้อมูลอื่น หากคุณไม่ระบุ ระบบจะสร้างให้โ" +"ดยอัตโนมัติ" #: pretix/base/models/customers.py:97 msgid "" "The identifier may only contain letters, numbers, dots, dashes, and " "underscores. It must start and end with a letter or number." msgstr "" +"ตัวระบุ (Identifier) ต้องประกอบด้วยตัวอักษร ตัวเลข จุด ยัติภังค์ (-) และขีดล่าง (_) เท่านั้น แ" +"ละต้องขึ้นต้นและลงท้ายด้วยตัวอักษรหรือตัวเลข" #: pretix/base/models/customers.py:202 pretix/control/forms/filter.py:1656 #: pretix/control/forms/filter.py:1728 @@ -4464,90 +4490,90 @@ msgstr "" #: pretix/control/templates/pretixcontrol/organizers/giftcard_acceptance_list.html:135 #: pretix/control/templates/pretixcontrol/organizers/reusable_medium.html:35 msgid "disabled" -msgstr "" +msgstr "ปิดใช้งาน" #: pretix/base/models/customers.py:330 pretix/base/models/orders.py:1564 #: pretix/base/models/orders.py:3392 pretix/base/settings.py:1259 msgid "Company name" -msgstr "" +msgstr "ชื่อบริษัท" #: pretix/base/models/customers.py:334 pretix/base/models/orders.py:1568 #: pretix/base/models/orders.py:3399 pretix/base/settings.py:91 #: pretix/plugins/stripe/payment.py:272 msgid "Select country" -msgstr "" +msgstr "เลือกประเทศ" #: pretix/base/models/customers.py:401 msgctxt "openidconnect" msgid "Confidential" -msgstr "" +msgstr "ความลับ (Confidential)" #: pretix/base/models/customers.py:402 msgctxt "openidconnect" msgid "Public" -msgstr "" +msgstr "สาธารณะ (Public)" #: pretix/base/models/customers.py:408 msgctxt "openidconnect" msgid "Authorization code" -msgstr "" +msgstr "Authorization code" #: pretix/base/models/customers.py:409 msgctxt "openidconnect" msgid "Implicit" -msgstr "" +msgstr "Implicit" #: pretix/base/models/customers.py:413 msgid "OpenID Connect access (required)" -msgstr "" +msgstr "การเข้าถึง OpenID Connect (จำเป็น)" #: pretix/base/models/customers.py:414 msgid "Profile data (name, addresses)" -msgstr "" +msgstr "ข้อมูลโปรไฟล์ (ชื่อ, ที่อยู่)" #: pretix/base/models/customers.py:434 msgid "Client type" -msgstr "" +msgstr "ประเภท Client" #: pretix/base/models/customers.py:437 msgid "Grant type" -msgstr "" +msgstr "ประเภท Grant" #: pretix/base/models/customers.py:440 msgid "Require PKCE extension" -msgstr "" +msgstr "ต้องใช้ส่วนขยาย PKCE" #: pretix/base/models/customers.py:452 msgid "Allowed access scopes" -msgstr "" +msgstr "ขอบเขตการเข้าถึงที่อนุญาต (Scopes)" #: pretix/base/models/customers.py:453 msgid "Separate multiple values with spaces" -msgstr "" +msgstr "เว้นวรรคเพื่อแยกหลายรายการ" #: pretix/base/models/datasync.py:53 msgid "Temporary error, auto-retry limit exceeded" -msgstr "" +msgstr "ข้อผิดพลาดชั่วคราว ลองใหม่อัตโนมัติเกินขีดจำกัดที่กำหนด" #: pretix/base/models/datasync.py:54 msgid "Provider reported a permanent error" -msgstr "" +msgstr "ผู้ให้บริการรายงานข้อผิดพลาดถาวร" #: pretix/base/models/datasync.py:55 msgid "Misconfiguration, please check provider settings" -msgstr "" +msgstr "การตั้งค่าไม่ถูกต้อง โปรดตรวจสอบการตั้งค่าผู้ให้บริการ" #: pretix/base/models/datasync.py:56 pretix/base/models/datasync.py:57 msgid "System error, needs manual intervention" -msgstr "" +msgstr "ระบบขัดข้อง จำเป็นต้องได้รับการแก้ไขโดยเจ้าหน้าที่" #: pretix/base/models/devices.py:70 pretix/base/models/items.py:1675 msgid "Internal identifier" -msgstr "" +msgstr "ตัวระบุภายใน" #: pretix/base/models/devices.py:90 pretix/base/models/items.py:1788 msgid "This identifier is already used for a different question." -msgstr "" +msgstr "ตัวระบุนี้ถูกใช้ไปแล้วสำหรับคำถามอื่น" #: pretix/base/models/devices.py:113 pretix/control/forms/checkin.py:196 #: pretix/control/forms/checkin.py:217 pretix/control/forms/filter.py:2548 @@ -4561,60 +4587,60 @@ msgstr "ประตูทางเข้า" #: pretix/base/models/devices.py:131 #: pretix/control/templates/pretixcontrol/organizers/devices.html:83 msgid "Setup date" -msgstr "" +msgstr "วันที่ตั้งค่า" #: pretix/base/models/devices.py:134 msgid "Initialization date" -msgstr "" +msgstr "วันที่เริ่มต้นระบบ" #: pretix/base/models/discount.py:49 msgctxt "subevent" msgid "Dates can be mixed without limitation" -msgstr "" +msgstr "สามารถผสมวันที่ได้โดยไม่มีข้อจำกัด" #: pretix/base/models/discount.py:50 msgctxt "subevent" msgid "All matching products must be for the same date" -msgstr "" +msgstr "สินค้าที่ตรงเงื่อนไขทั้งหมดต้องเป็นของวันที่เดียวกัน" #: pretix/base/models/discount.py:51 msgctxt "subevent" msgid "Each matching product must be for a different date" -msgstr "" +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:619 msgid "Position" -msgstr "" +msgstr "ตำแหน่ง" #: pretix/base/models/discount.py:72 msgid "All supported sales channels" -msgstr "" +msgstr "ช่องทางการขายที่รองรับทั้งหมด" #: pretix/base/models/discount.py:93 msgid "Event series handling" -msgstr "" +msgstr "การจัดการรอบกิจกรรม" #: pretix/base/models/discount.py:101 msgid "Apply to all products (including newly created ones)" -msgstr "" +msgstr "ใช้กับสินค้าทั้งหมด (รวมถึงสินค้าที่สร้างใหม่)" #: pretix/base/models/discount.py:105 msgid "Apply to specific products" -msgstr "" +msgstr "ใช้กับสินค้าที่เฉพาะเจาะจง" #: pretix/base/models/discount.py:110 msgid "Count add-on products" -msgstr "" +msgstr "นับรวมสินค้าเพิ่มเติม (Add-on)" #: pretix/base/models/discount.py:111 pretix/base/models/discount.py:166 msgid "Discounts never apply to bundled products" -msgstr "" +msgstr "ส่วนลดจะไม่ใช้กับสินค้าที่จัดชุด (Bundle)" #: pretix/base/models/discount.py:115 pretix/base/models/discount.py:170 msgid "Ignore products discounted by a voucher" -msgstr "" +msgstr "ไม่รวมสินค้าที่ได้รับส่วนลดจากเวาเชอร์แล้ว" #: pretix/base/models/discount.py:116 msgid "" @@ -4623,18 +4649,20 @@ msgid "" "use a voucher only to e.g. unlock a hidden product or gain access to sold-" "out quota will still be considered." msgstr "" +"หากเลือกตัวเลือกนี้ สินค้าที่ได้รับส่วนลดผ่านเวาเชอร์แล้วจะไม่ถูกนำมาคำนวณส่วนลดนี้ อย่างไรก็ตาม สิน" +"ค้าที่ใช้เวาเชอร์เพื่อปลดล็อกสินค้าที่ซ่อนอยู่หรือเข้าถึงโควตาที่ขายหมดแล้วจะยังคงถูกนำมาคำนวณ" #: pretix/base/models/discount.py:121 msgid "Minimum number of matching products" -msgstr "" +msgstr "จำนวนสินค้าที่ตรงเงื่อนไขขั้นต่ำ" #: pretix/base/models/discount.py:125 msgid "Minimum gross value of matching products" -msgstr "" +msgstr "มูลค่ารวม (Gross) ขั้นต่ำของสินค้าที่ตรงเงื่อนไข" #: pretix/base/models/discount.py:133 msgid "Apply discount to same set of products" -msgstr "" +msgstr "ใช้ส่วนลดกับสินค้าชุดเดียวกัน" #: pretix/base/models/discount.py:134 msgid "" @@ -4642,18 +4670,20 @@ msgid "" "than the condition for the discount given above. If you want, you can " "however also select a different selection of products." msgstr "" +"ตามค่าเริ่มต้น ส่วนลดจะถูกใช้กับกลุ่มสินค้าชุดเดียวกันกับเงื่อนไขการรับส่วนลดที่ระบุไว้ข้างต้น แต่คุณสามา" +"รถเลือกกลุ่มสินค้าที่แตกต่างออกไปได้หากต้องการ" #: pretix/base/models/discount.py:140 msgid "Apply discount to specific products" -msgstr "" +msgstr "ใช้ส่วนลดกับสินค้าที่เฉพาะเจาะจง" #: pretix/base/models/discount.py:145 msgid "Percentual discount on matching products" -msgstr "" +msgstr "ส่วนลดแบบเปอร์เซ็นต์สำหรับสินค้าที่ตรงเงื่อนไข" #: pretix/base/models/discount.py:152 msgid "Apply discount only to this number of matching products" -msgstr "" +msgstr "ใช้ส่วนลดกับสินค้าที่ตรงเงื่อนไขตามจำนวนที่ระบุนี้เท่านั้น" #: pretix/base/models/discount.py:154 msgid "" @@ -4664,10 +4694,14 @@ msgid "" "discounted. If you want to grant the discount on all matching products, keep " "this field empty." msgstr "" +"ตัวเลือกนี้ช่วยให้คุณสร้างส่วนลดประเภท \"ซื้อ X แถม Y\" ตัวอย่างเช่น หากคุณตั้งค่า \"จำนวนสินค้าขั้" +"นต่ำที่ตรงเงื่อนไข\" เป็นสี่ และตั้งค่านี้เป็นสอง ตะกร้าสินค้าของลูกค้าจะถูกแบ่งเป็นกลุ่มละสี่ใบ และตั๋วที่" +"ราคาถูกที่สุดสองใบในแต่ละกลุ่มจะได้รับส่วนลด หากคุณต้องการให้ส่วนลดกับสินค้าที่ตรงเงื่อนไขทั้งหมด ให้" +"เว้นว่างช่องนี้ไว้" #: pretix/base/models/discount.py:165 msgid "Apply to add-on products" -msgstr "" +msgstr "ใช้กับสินค้าเพิ่มเติม (Add-on)" #: pretix/base/models/discount.py:171 msgid "" @@ -4676,54 +4710,61 @@ msgid "" "to e.g. unlock a hidden product or gain access to sold-out quota will still " "receive the discount." msgstr "" +"หากเลือกตัวเลือกนี้ สินค้าที่ได้รับส่วนลดผ่านเวาเชอร์แล้วจะไม่ได้รับส่วนลดนี้อีก อย่างไรก็ตาม สินค้าที่ใช้" +"เวาเชอร์เพื่อปลดล็อกสินค้าที่ซ่อนอยู่หรือเข้าถึงโควตาที่ขายหมดแล้วจะยังคงได้รับส่วนลด" #: pretix/base/models/discount.py:177 msgctxt "subevent" msgid "Available for dates starting from" -msgstr "" +msgstr "สามารถใช้ได้สำหรับวันที่เริ่มต้นตั้งแต่" #: pretix/base/models/discount.py:182 msgctxt "subevent" msgid "Available for dates starting until" -msgstr "" +msgstr "สามารถใช้ได้สำหรับวันที่เริ่มต้นจนถึง" #: pretix/base/models/discount.py:214 msgid "" "You can either set a minimum number of matching products or a minimum value, " "not both." msgstr "" +"คุณสามารถเลือกกำหนดได้เพียงอย่างเดียวระหว่างจำนวนสินค้าขั้นต่ำหรือมูลค่าขั้นต่ำ ไม่สามารถกำหนดทั้ง" +"สองอย่างพร้อมกันได้" #: pretix/base/models/discount.py:219 msgid "" "You need to either set a minimum number of matching products or a minimum " "value." -msgstr "" +msgstr "คุณต้องกำหนดจำนวนสินค้าขั้นต่ำหรือมูลค่าขั้นต่ำอย่างใดอย่างหนึ่ง" #: pretix/base/models/discount.py:224 msgid "" "You cannot apply the discount only to some of the matched products if you " "are matching on a minimum value." msgstr "" +"ไม่สามารถใช้ส่วนลดกับสินค้าเพียงบางส่วนได้หากคุณใช้เงื่อนไขมูลค่าขั้นต่ำในการตรวจสอบ" #: pretix/base/models/discount.py:230 msgid "" "You cannot apply the discount only to bookings of different dates if you are " "matching on a minimum value." msgstr "" +"ไม่สามารถใช้ส่วนลดเฉพาะกับการจองในวันที่แตกต่างกันได้หากคุณใช้เงื่อนไขมูลค่าขั้นต่ำในการตรวจสอบ" #: pretix/base/models/discount.py:237 msgid "" "You cannot apply the discount to a different set of products if the discount " "is only valid for bookings of different dates." msgstr "" +"ไม่สามารถใช้ส่วนลดกับกลุ่มสินค้าอื่นได้หากส่วนลดนั้นใช้ได้เฉพาะกับการจองในวันที่แตกต่างกันเท่านั้น" #: pretix/base/models/event.py:88 msgid "The end of the presale period has to be later than its start." -msgstr "" +msgstr "วันที่สิ้นสุดช่วงการขายล่วงหน้าต้องเป็นเวลาที่มาหลังวันที่เริ่มต้น" #: pretix/base/models/event.py:90 msgid "The end of the event has to be later than its start." -msgstr "" +msgstr "วันที่สิ้นสุดกิจกรรมต้องเป็นเวลาที่มาหลังวันที่เริ่มต้น" #: pretix/base/models/event.py:600 msgid "" @@ -4733,20 +4774,26 @@ msgid "" "you can also choose to use a random value. This will be used in URLs, order " "codes, invoice numbers, and bank transfer references." msgstr "" +"ควรมีขนาดสั้น ประกอบด้วยตัวอักษรภาษาอังกฤษตัวพิมพ์เล็ก ตัวเลข จุด และเครื่องหมายขีดกลางเท่านั้น " +"และต้องไม่ซ้ำกับกิจกรรมอื่นของคุณ เราขอแนะนำให้ใช้ตัวย่อหรือวันที่ที่มีความยาวไม่เกิน 10 ตัวอักษรเพื่อ" +"ให้จดจำได้ง่าย หรือคุณจะเลือกใช้ค่าแบบสุ่มก็ได้ ข้อมูลนี้จะถูกนำไปใช้ใน URL, รหัสคำสั่งซื้อ, เลขที่ใบแ" +"จ้งหนี้ และรหัสอ้างอิงการโอนเงินผ่านธนาคาร" #: pretix/base/models/event.py:607 pretix/base/models/organizer.py:89 msgid "The slug may only contain letters, numbers, dots and dashes." msgstr "" +"สลัก (Slug) สามารถประกอบด้วยตัวอักษร ตัวเลข จุด และเครื่องหมายขีดกลางเท่านั้น" #: pretix/base/models/event.py:624 pretix/base/models/event.py:1525 msgid "Show in lists" -msgstr "" +msgstr "แสดงในรายการ" #: pretix/base/models/event.py:625 msgid "" "If selected, this event will show up publicly on the list of events for your " "organizer account." msgstr "" +"หากเลือกตัวเลือกนี้ กิจกรรมนี้จะแสดงต่อสาธารณะในรายการกิจกรรมของบัญชีผู้จัดงานของคุณ" #: pretix/base/models/event.py:629 pretix/base/models/event.py:1540 #: pretix/control/forms/subevents.py:100 @@ -4754,26 +4801,30 @@ 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:1546 #: pretix/control/forms/subevents.py:94 msgid "Optional. No products will be sold before this date." -msgstr "" +msgstr "(ไม่บังคับ) จะไม่มีการขายสินค้าก่อนวันที่นี้" #: pretix/base/models/event.py:644 msgid "This event is remote or partially remote." -msgstr "" +msgstr "กิจกรรมนี้จัดขึ้นในรูปแบบออนไลน์หรือกึ่งออนไลน์" #: 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 "" +"ข้อมูลนี้จะใช้เพื่อแจ้งให้ผู้ใช้ทราบหากกิจกรรมอยู่ในเขตเวลาที่แตกต่างกัน และช่วยให้เราคำนวณเวลาท้อง" +"ถิ่นของผู้ใช้ได้" #: pretix/base/models/event.py:665 pretix/base/models/organizer.py:97 #: pretix/control/navigation.py:65 pretix/control/navigation.py:499 msgid "Plugins" -msgstr "" +msgstr "ปลั๊กอิน" #: pretix/base/models/event.py:672 pretix/base/pdf.py:240 #: pretix/control/forms/event.py:274 pretix/control/forms/filter.py:1833 @@ -4785,20 +4836,20 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:8 #: pretix/presale/views/widget.py:731 msgid "Event series" -msgstr "" +msgstr "รอบกิจกรรม" #: pretix/base/models/event.py:676 pretix/base/models/event.py:1574 msgid "Seating plan" -msgstr "" +msgstr "ผังที่นั่ง" #: pretix/base/models/event.py:683 pretix/base/models/items.py:675 msgid "Sell on all sales channels" -msgstr "" +msgstr "ขายในทุกช่องทางการขาย" #: pretix/base/models/event.py:688 pretix/base/models/items.py:680 #: pretix/base/models/items.py:1230 pretix/base/payment.py:476 msgid "Restrict to specific sales channels" -msgstr "" +msgstr "จำกัดเฉพาะบางช่องทางการขายเท่านั้น" #: pretix/base/models/event.py:696 pretix/control/navigation.py:344 #: pretix/control/navigation.py:475 @@ -4811,129 +4862,137 @@ msgstr "" #: pretix/plugins/reports/accountingreport.py:105 #: pretix/plugins/reports/accountingreport.py:108 msgid "Events" -msgstr "" +msgstr "กิจกรรม" #: pretix/base/models/event.py:1345 msgid "" "You have configured at least one paid product but have not enabled any " "payment methods." msgstr "" +"คุณมีการตั้งค่าสินค้าที่ต้องชำระเงินอย่างน้อยหนึ่งรายการ แต่ยังไม่ได้เปิดใช้งานวิธีการชำระเงินใดๆ" #: pretix/base/models/event.py:1348 msgid "" "You have configured at least one paid product but have not configured a " "currency." msgstr "" +"คุณมีการตั้งค่าสินค้าที่ต้องชำระเงินอย่างน้อยหนึ่งรายการ แต่ยังไม่ได้ตั้งค่าสกุลเงิน" #: pretix/base/models/event.py:1351 msgid "You need to configure at least one quota to sell anything." -msgstr "" +msgstr "คุณต้องกำหนดค่าโควตาอย่างน้อยหนึ่งรายการจึงจะเริ่มขายสินค้าได้" #: pretix/base/models/event.py:1356 #, python-brace-format msgid "You need to fill the meta parameter \"{property}\"." -msgstr "" +msgstr "คุณต้องกรอกพารามิเตอร์ข้อมูลเสริม (Meta Parameter) \"{property}\"" #: pretix/base/models/event.py:1471 msgid "" "Once created an event cannot change between an series and a single event." msgstr "" +"เมื่อสร้างกิจกรรมแล้ว จะไม่สามารถเปลี่ยนรูปแบบระหว่างรอบกิจกรรมและกิจกรรมเดี่ยวได้" #: pretix/base/models/event.py:1477 msgid "The event slug cannot be changed." -msgstr "" +msgstr "ไม่สามารถเปลี่ยนสลัก (Slug) ของกิจกรรมได้" #: pretix/base/models/event.py:1480 msgid "This slug has already been used for a different event." -msgstr "" +msgstr "สลัก (Slug) นี้ถูกใช้งานโดยกิจกรรมอื่นแล้ว" #: pretix/base/models/event.py:1486 msgid "The event cannot end before it starts." -msgstr "" +msgstr "กิจกรรมไม่สามารถสิ้นสุดก่อนเวลาเริ่มต้นได้" #: pretix/base/models/event.py:1492 msgid "The event's presale cannot end before it starts." -msgstr "" +msgstr "การขายล่วงหน้าไม่สามารถสิ้นสุดก่อนเวลาเริ่มต้นได้" #: pretix/base/models/event.py:1522 msgid "" "Only with this checkbox enabled, this date is visible in the frontend to " "users." msgstr "" +"วันที่นี้จะแสดงให้ผู้ใช้เห็นที่หน้าเว็บไซต์ก็ต่อเมื่อทำเครื่องหมายในช่องนี้เท่านั้น" #: pretix/base/models/event.py:1526 msgid "" "If selected, this event will show up publicly on the list of dates for your " "event." msgstr "" +"หากเลือกตัวเลือกนี้ กิจกรรมจะแสดงต่อสาธารณะในรายการวันที่ของกิจกรรมของคุณ" #: pretix/base/models/event.py:1571 pretix/base/settings.py:3248 msgid "Frontpage text" -msgstr "" +msgstr "ข้อความหน้าแรก" #: pretix/base/models/event.py:1588 msgid "Date in event series" -msgstr "" +msgstr "วันที่ในรอบกิจกรรม" #: pretix/base/models/event.py:1589 msgid "Dates in event series" -msgstr "" +msgstr "รายการวันที่ในรอบกิจกรรม" #: pretix/base/models/event.py:1730 msgid "One or more variations do not belong to this event." -msgstr "" +msgstr "มีรูปแบบสินค้าอย่างน้อยหนึ่งรายการที่ไม่ได้เป็นของกิจกรรมนี้" #: pretix/base/models/event.py:1760 pretix/base/models/items.py:2236 msgid "Can not contain spaces or special characters except underscores" -msgstr "" +msgstr "ห้ามมีช่องว่างหรือตัวอักษรพิเศษ ยกเว้นเครื่องหมายขีดล่าง (Underscore)" #: pretix/base/models/event.py:1765 pretix/base/models/items.py:2241 msgid "The property name may only contain letters, numbers and underscores." msgstr "" +"ชื่อคุณสมบัติสามารถประกอบด้วยตัวอักษร ตัวเลข และเครื่องหมายขีดล่างเท่านั้น" #: pretix/base/models/event.py:1770 msgid "Default value" -msgstr "" +msgstr "ค่าเริ่มต้น" #: pretix/base/models/event.py:1772 #: pretix/control/templates/pretixcontrol/organizers/properties.html:50 msgid "Can only be changed by organizer-level administrators" -msgstr "" +msgstr "เปลี่ยนแปลงได้โดยผู้ดูแลระบบระดับผู้จัดงานเท่านั้น" #: pretix/base/models/event.py:1774 msgid "Required for events" -msgstr "" +msgstr "จำเป็นสำหรับกิจกรรม" #: pretix/base/models/event.py:1775 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:1781 pretix/base/models/items.py:2253 msgid "Valid values" -msgstr "" +msgstr "ค่าที่ถูกต้อง" #: pretix/base/models/event.py:1784 #: pretix/control/templates/pretixcontrol/organizers/properties.html:45 msgid "Show filter option to customers" -msgstr "" +msgstr "แสดงตัวเลือกตัวกรองให้แก่ลูกค้า" #: pretix/base/models/event.py:1785 msgid "" "This field will be shown to filter events in the public event list and " "calendar." -msgstr "" +msgstr "ฟิลด์นี้จะแสดงเพื่อใช้กรองกิจกรรมในรายการกิจกรรมสาธารณะและปฏิทิน" #: pretix/base/models/event.py:1788 pretix/control/forms/organizer.py:269 #: pretix/control/forms/organizer.py:273 msgid "Public name" -msgstr "" +msgstr "ชื่อสาธารณะ" #: pretix/base/models/event.py:1792 #: pretix/control/templates/pretixcontrol/organizers/properties.html:40 msgid "Can be used for filtering" -msgstr "" +msgstr "สามารถใช้สำหรับตัวกรองได้" #: pretix/base/models/event.py:1793 msgid "" @@ -4941,41 +5000,45 @@ msgid "" "can also be used for hidden filter parameters in the frontend (e.g. using " "the widget)." msgstr "" +"ฟิลด์นี้จะแสดงเพื่อใช้กรองกิจกรรมหรือรายงานในระบบหลังบ้าน และยังสามารถใช้เป็นพารามิเตอร์ตัวกรอ" +"งที่ซ่อนอยู่ในหน้าเว็บ (เช่น การใช้งานผ่านวิดเจ็ต)" #: pretix/base/models/event.py:1803 msgid "A property can either be required or have a default value, not both." msgstr "" +"คุณสมบัติสามารถเลือกได้เพียงอย่างเดียวระหว่าง \"จำเป็นต้องระบุ\" หรือ \"มีค่าเริ่มต้น\" ไม่สามาร" +"ถเลือกทั้งสองอย่างได้" #: pretix/base/models/event.py:1883 pretix/base/models/organizer.py:582 msgid "Link text" -msgstr "" +msgstr "ข้อความของลิงก์" #: pretix/base/models/event.py:1886 pretix/base/models/organizer.py:585 msgid "Link URL" -msgstr "" +msgstr "URL ของลิงก์" #: pretix/base/models/exports.py:42 pretix/control/navigation.py:229 #: pretix/control/navigation.py:662 msgid "Export" -msgstr "" +msgstr "ส่งออกข้อมูล" #: pretix/base/models/exports.py:59 msgid "Additional recipients" -msgstr "" +msgstr "ผู้รับเพิ่มเติม" #: pretix/base/models/exports.py:61 pretix/base/models/exports.py:66 #: pretix/base/models/exports.py:71 pretix/control/forms/event.py:1091 #: pretix/control/forms/organizer.py:587 msgid "You can specify multiple recipients separated by commas." -msgstr "" +msgstr "คุณสามารถระบุผู้รับได้หลายคนโดยแยกด้วยเครื่องหมายจุลภาค (Comma)" #: pretix/base/models/exports.py:64 msgid "Additional recipients (Cc)" -msgstr "" +msgstr "ผู้รับเพิ่มเติม (Cc)" #: pretix/base/models/exports.py:69 msgid "Additional recipients (Bcc)" -msgstr "" +msgstr "ผู้รับเพิ่มเติม (Bcc)" #: pretix/base/models/exports.py:74 pretix/control/forms/event.py:1197 #: pretix/control/forms/event.py:1271 pretix/control/forms/event.py:1281 @@ -4986,7 +5049,7 @@ msgstr "" #: pretix/control/forms/vouchers.py:282 pretix/plugins/sendmail/forms.py:57 #: pretix/plugins/sendmail/forms.py:73 pretix/plugins/sendmail/models.py:248 msgid "Subject" -msgstr "" +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 @@ -4994,96 +5057,97 @@ msgstr "" #: pretix/plugins/sendmail/forms.py:58 pretix/plugins/sendmail/forms.py:78 #: pretix/plugins/sendmail/models.py:249 msgid "Message" -msgstr "" +msgstr "ข้อความ" #: pretix/base/models/exports.py:85 msgid "Requested start time" -msgstr "" +msgstr "เวลาเริ่มต้นที่ขอไว้" #: pretix/base/models/exports.py:86 msgid "The actual start time might be delayed depending on system load." -msgstr "" +msgstr "เวลาเริ่มต้นจริงอาจล่าช้ากว่าที่กำหนด ขึ้นอยู่กับภาระการทำงานของระบบ" #: pretix/base/models/fields.py:33 msgid "No value can contain the delimiter character." -msgstr "" +msgstr "ห้ามมีค่าใดที่มีตัวอักษรแบ่งส่วน (Delimiter)" #: pretix/base/models/giftcards.py:81 #: pretix/control/templates/pretixcontrol/organizers/giftcard.html:50 msgid "Owned by ticket holder" -msgstr "" +msgstr "เป็นกรรมสิทธิ์ของผู้ถือตั๋ว" #: pretix/base/models/giftcards.py:88 msgid "Owned by customer account" -msgstr "" +msgstr "เป็นกรรมสิทธิ์ของบัญชีลูกค้า" #: pretix/base/models/giftcards.py:100 msgid "The gift card code may only contain letters, numbers, dots and dashes." msgstr "" +"รหัสบัตรของขวัญสามารถประกอบด้วยตัวอักษร ตัวเลข จุด และเครื่องหมายขีดกลางเท่านั้น" #: pretix/base/models/giftcards.py:112 #: pretix/control/templates/pretixcontrol/organizers/giftcard.html:39 msgctxt "giftcard" msgid "Special terms and conditions" -msgstr "" +msgstr "ข้อกำหนดและเงื่อนไขพิเศษ" #: pretix/base/models/giftcards.py:227 pretix/base/models/giftcards.py:231 msgid "Manual transaction" -msgstr "" +msgstr "รายการธุรกรรมด้วยตนเอง" #: pretix/base/models/invoices.py:122 msgid "pending transmission" -msgstr "" +msgstr "รอดำเนินการส่งข้อมูล" #: pretix/base/models/invoices.py:123 msgid "currently being transmitted" -msgstr "" +msgstr "กำลังส่งข้อมูล" #: pretix/base/models/invoices.py:124 msgid "transmitted" -msgstr "" +msgstr "ส่งข้อมูลสำเร็จแล้ว" #: pretix/base/models/invoices.py:125 pretix/plugins/sendmail/models.py:52 msgid "failed" -msgstr "" +msgstr "ล้มเหลว" #: pretix/base/models/invoices.py:126 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_list.html:56 msgid "unknown" -msgstr "" +msgstr "ไม่ทราบสถานะ" #: pretix/base/models/invoices.py:127 msgid "not transmitted due to test mode" -msgstr "" +msgstr "ไม่มีการส่งข้อมูลเนื่องจากอยู่ในโหมดทดสอบ" #: pretix/base/models/invoices.py:221 #, python-format msgctxt "invoice" msgid "Tax ID: %s" -msgstr "" +msgstr "เลขประจำตัวผู้เสียภาษี: %s" #: pretix/base/models/invoices.py:240 pretix/base/services/invoices.py:155 #, python-format msgctxt "invoice" msgid "VAT-ID: %s" -msgstr "" +msgstr "เลขประจำตัวผู้เสียภาษีมูลค่าเพิ่ม: %s" #: pretix/base/models/items.py:93 msgid "Category name" -msgstr "" +msgstr "ชื่อหมวดหมู่" #: pretix/base/models/items.py:97 pretix/base/models/items.py:484 msgid "" "If you set this, this will be used instead of the public name in the backend." -msgstr "" +msgstr "หากคุณตั้งค่านี้ ชื่อนี้จะถูกนำไปใช้ในระบบหลังบ้านแทนที่ชื่อสาธารณะ" #: pretix/base/models/items.py:101 msgid "Category description" -msgstr "" +msgstr "คำอธิบายหมวดหมู่" #: pretix/base/models/items.py:108 msgid "Products in this category are add-on products" -msgstr "" +msgstr "สินค้าในหมวดหมู่นี้เป็นสินค้าเพิ่มเติม (Add-on)" #: pretix/base/models/items.py:109 msgid "" @@ -5091,122 +5155,125 @@ msgid "" "their own. They can only be bought in combination with a product that has " "this category configured as a possible source for add-ons." msgstr "" +"หากเลือกตัวเลือกนี้ สินค้าที่อยู่ในหมวดหมู่นี้จะไม่สามารถขายแยกต่างหากได้ จะต้องซื้อควบคู่ไปกับสินค้าที่ตั้" +"งค่าหมวดหมู่นี้เป็นแหล่งสินค้าเพิ่มเติมเท่านั้น" #: pretix/base/models/items.py:114 pretix/base/models/items.py:159 #: pretix/control/forms/item.py:98 msgid "Normal category" -msgstr "" +msgstr "หมวดหมู่ปกติ" #: pretix/base/models/items.py:115 pretix/control/forms/item.py:111 msgid "Normal + cross-selling category" -msgstr "" +msgstr "หมวดหมู่ปกติ + การขายพ่วง (Cross-selling)" #: pretix/base/models/items.py:116 pretix/control/forms/item.py:106 msgid "Cross-selling category" -msgstr "" +msgstr "หมวดหมู่การขายพ่วง (Cross-selling)" #: pretix/base/models/items.py:124 msgid "Always show in cross-selling step" -msgstr "" +msgstr "แสดงในขั้นตอนการขายพ่วงเสมอ" #: pretix/base/models/items.py:125 msgid "" "Only show products that qualify for a discount according to discount rules" -msgstr "" +msgstr "แสดงเฉพาะสินค้าที่มีสิทธิ์ได้รับส่วนลดตามกฎส่วนลดเท่านั้น" #: pretix/base/models/items.py:126 msgid "Only show if the cart contains one of the following products" -msgstr "" +msgstr "แสดงเฉพาะเมื่อมีสินค้าต่อไปนี้อย่างน้อยหนึ่งรายการอยู่ในตะกร้าสินค้า" #: pretix/base/models/items.py:129 msgid "Cross-selling condition" -msgstr "" +msgstr "เงื่อนไขการขายพ่วง" #: pretix/base/models/items.py:137 msgid "Cross-selling condition products" -msgstr "" +msgstr "สินค้าตามเงื่อนไขการขายพ่วง" #: pretix/base/models/items.py:143 #: pretix/control/templates/pretixcontrol/items/categories.html:3 #: pretix/control/templates/pretixcontrol/items/categories.html:5 #: pretix/control/templates/pretixcontrol/items/categories.html:33 msgid "Product categories" -msgstr "" +msgstr "หมวดหมู่สินค้า" #: pretix/base/models/items.py:149 #, python-brace-format msgid "{category} ({category_type})" -msgstr "" +msgstr "{category} ({category_type})" #: pretix/base/models/items.py:155 msgid "Add-on category" -msgstr "" +msgstr "หมวดหมู่สินค้าเพิ่มเติม (Add-on)" #: pretix/base/models/items.py:222 pretix/base/models/items.py:278 msgid "Disable product for this date" -msgstr "" +msgstr "ปิดใช้งานสินค้าสำหรับวันที่นี้" #: pretix/base/models/items.py:226 pretix/base/models/items.py:282 #: pretix/base/models/items.py:563 msgid "This product will not be sold before the given date." -msgstr "" +msgstr "สินค้านี้จะไม่ถูกจำหน่ายก่อนวันที่กำหนด" #: pretix/base/models/items.py:231 pretix/base/models/items.py:287 #: pretix/base/models/items.py:573 msgid "This product will not be sold after the given date." -msgstr "" +msgstr "สินค้านี้จะไม่ถูกจำหน่ายหลังจากวันที่กำหนด" #: pretix/base/models/items.py:436 msgid "Event validity (default)" -msgstr "" +msgstr "อายุการใช้งานตามกิจกรรม (ค่าเริ่มต้น)" #: pretix/base/models/items.py:437 msgid "Fixed time frame" -msgstr "" +msgstr "ช่วงเวลาที่กำหนดไว้คงที่" #: pretix/base/models/items.py:438 msgid "Dynamic validity" -msgstr "" +msgstr "อายุการใช้งานแบบปรับตามเงื่อนไข (Dynamic)" #: pretix/base/models/items.py:444 pretix/control/forms/item.py:671 #: pretix/control/templates/pretixcontrol/subevents/fragment_unavail_mode_indicator.html:3 msgid "Hide product if unavailable" -msgstr "" +msgstr "ซ่อนสินค้าหากไม่สามารถสั่งซื้อได้" #: pretix/base/models/items.py:445 pretix/control/forms/item.py:672 #: pretix/control/templates/pretixcontrol/subevents/fragment_unavail_mode_indicator.html:5 msgid "Show product with info on why it’s unavailable" -msgstr "" +msgstr "แสดงสินค้าพร้อมระบุเหตุผลที่ไม่สามารถสั่งซื้อได้" #: pretix/base/models/items.py:456 pretix/base/models/items.py:781 msgid "Don't use re-usable media, use regular one-off tickets" -msgstr "" +msgstr "ไม่ใช้สื่อแบบใช้ซ้ำได้ แต่ใช้ตั๋วแบบใช้ครั้งเดียวปกติ" #: pretix/base/models/items.py:457 msgid "Require an existing medium to be re-used" -msgstr "" +msgstr "ต้องใช้สื่อที่มีอยู่แล้วเพื่อนำกลับมาใช้ใหม่" #: pretix/base/models/items.py:458 msgid "Require a previously unknown medium to be newly added" -msgstr "" +msgstr "ต้องใช้สื่อใหม่ที่ไม่เคยลงทะเบียนมาก่อน" #: pretix/base/models/items.py:459 msgid "Require either an existing or a new medium to be used" -msgstr "" +msgstr "ต้องใช้สื่อ ไม่ว่าจะเป็นสื่อเดิมที่มีอยู่หรือสื่อใหม่" #: pretix/base/models/items.py:475 pretix/base/models/items.py:1458 msgid "Category" -msgstr "" +msgstr "หมวดหมู่" #: pretix/base/models/items.py:476 msgid "" "If you have many products, you can optionally sort them into categories to " "keep things organized." msgstr "" +"หากคุณมีสินค้าจำนวนมาก คุณสามารถเลือกจัดกลุ่มสินค้าเป็นหมวดหมู่เพื่อให้เป็นระเบียบได้" #: pretix/base/models/items.py:493 msgid "This is shown below the product name in lists." -msgstr "" +msgstr "ข้อความนี้จะแสดงอยู่ใต้ชื่อสินค้าในรายการสินค้า" #: pretix/base/models/items.py:498 msgid "" @@ -5214,6 +5281,8 @@ msgid "" "each of the variations. If a variation does not have a special price or if " "you do not have variations, this price will be used." msgstr "" +"หากสินค้านี้มีหลายรูปแบบ คุณสามารถตั้งราคาที่แตกต่างกันสำหรับแต่ละรูปแบบได้ หากรูปแบบใดไม่มีราคาพิ" +"เศษหรือหากคุณไม่มีการกำหนดรูปแบบสินค้า จะใช้ราคานี้เป็นหลัก" #: pretix/base/models/items.py:506 msgid "" @@ -5222,10 +5291,12 @@ msgid "" "to enter. You could use this e.g. to collect additional donations for your " "event." msgstr "" +"หากเปิดใช้งานตัวเลือกนี้ ผู้ใช้จะสามารถระบุราคาได้ด้วยตนเอง โดยราคาที่ตั้งค่าไว้ข้างต้นจะถือเป็นราค" +"าขั้นต่ำที่คุณยอมรับ ตัวอย่างเช่น คุณสามารถใช้ฟีเจอร์นี้เพื่อรับเงินบริจาคเพิ่มเติมสำหรับกิจกรรมของคุณ" #: pretix/base/models/items.py:511 pretix/base/models/items.py:1176 msgid "Suggested price" -msgstr "" +msgstr "ราคาที่แนะนำ" #: pretix/base/models/items.py:512 pretix/base/models/items.py:1177 msgid "" @@ -5234,44 +5305,48 @@ msgid "" "have without the free price option. This will be ignored if a voucher is " "used that lowers the price." msgstr "" +"ราคานี้จะถูกใช้เป็นค่าเริ่มต้นในช่องกรอกข้อมูล ผู้ใช้สามารถเลือกใส่ราคาที่ต่ำกว่านี้ได้ แต่ต้องไม่ต่ำกว่าร" +"าคาปกติของสินค้า (หากไม่มีตัวเลือกราคาอิสระ) ค่านี้จะถูกละเว้นหากมีการใช้เวาเชอร์ที่ทำให้ราคาลดล" +"ง" #: pretix/base/models/items.py:526 msgid "Whether or not buying this product allows a person to enter your event" -msgstr "" +msgstr "ระบุว่าการซื้อสินค้านี้อนุญาตให้บุคคลเข้าสู่กิจกรรมของคุณได้หรือไม่" #: pretix/base/models/items.py:531 msgid "Is a personalized ticket" -msgstr "" +msgstr "เป็นตั๋วแบบระบุชื่อบุคคล" #: pretix/base/models/items.py:533 msgid "Whether or not buying this product allows to enter attendee information" -msgstr "" +msgstr "ระบุว่าการซื้อสินค้านี้อนุญาตให้กรอกข้อมูลผู้เข้าร่วมกิจกรรมได้หรือไม่" #: pretix/base/models/items.py:542 msgid "Show a waiting list for this ticket" -msgstr "" +msgstr "แสดงรายการรอ (Waiting list) สำหรับตั๋วนี้" #: pretix/base/models/items.py:543 msgid "This will only work if waiting lists are enabled for this event." msgstr "" +"ฟีเจอร์นี้จะใช้งานได้ก็ต่อเมื่อมีการเปิดใช้งานระบบรายการรอสำหรับกิจกรรมนี้แล้วเท่านั้น" #: pretix/base/models/items.py:547 pretix/base/settings.py:1530 #: pretix/control/forms/event.py:1807 msgid "Show number of tickets left" -msgstr "" +msgstr "แสดงจำนวนตั๋วที่เหลืออยู่" #: pretix/base/models/items.py:548 msgid "Publicly show how many tickets are still available." -msgstr "" +msgstr "แสดงจำนวนตั๋วที่ยังว่างอยู่ให้สาธารณะเห็น" #: pretix/base/models/items.py:555 pretix/control/forms/item.py:636 msgid "Product picture" -msgstr "" +msgstr "รูปภาพสินค้า" #: pretix/base/models/items.py:584 msgctxt "hidden_if_available_legacy" msgid "Only show after sellout of" -msgstr "" +msgstr "แสดงหลังจากสินค้าขายหมดแล้วเท่านั้น" #: pretix/base/models/items.py:585 msgid "" @@ -5281,10 +5356,13 @@ msgid "" "out. There might be a short period in which both products are visible while " "all tickets in the referenced quota are reserved, but not yet sold." msgstr "" +"หากคุณเลือกโควตาที่นี่ สินค้านี้จะแสดงเฉพาะเมื่อโควตานั้นไม่ว่างแล้วเท่านั้น เมื่อใช้ร่วมกับตัวเลือกเพื่อซ่" +"อนสินค้าที่ขายหมดแล้ว คุณจะสามารถสลับสินค้าที่มีราคาสูงกว่าขึ้นมาแทนที่ได้ อาจมีช่วงเวลาสั้นๆ ที่สินค้าทั้" +"งสองปรากฏขึ้นพร้อมกันในขณะที่ตั๋วในโควตาที่อ้างอิงถูกจองไว้แต่ยังไม่ได้ชำระเงิน" #: pretix/base/models/items.py:595 msgid "Only show after sellout of" -msgstr "" +msgstr "แสดงหลังจากสินค้าขายหมดแล้วเท่านั้น" #: pretix/base/models/items.py:596 msgid "" @@ -5297,12 +5375,16 @@ msgid "" "products are visible while all tickets of the referenced product are " "reserved, but not yet sold." msgstr "" +"หากคุณเลือกสินค้าที่นี่ สินค้านี้จะแสดงเฉพาะเมื่อสินค้านั้นไม่สามารถสั่งซื้อได้แล้ว ไม่ว่าจะเป็นเพราะขายห" +"มดหรืออยู่นอกช่วงเวลาการขาย เมื่อใช้ร่วมกับตัวเลือกเพื่อซ่อนสินค้าที่ขายหมดแล้ว คุณจะสามารถสลับสินค้" +"าที่มีราคาสูงกว่าขึ้นมาแทนที่สินค้าที่ราคาถูกกว่าได้" #: pretix/base/models/items.py:611 msgid "" "To buy this product, the user needs a voucher that applies to this product " "either directly or via a quota." msgstr "" +"ในการซื้อสินค้านี้ ผู้ใช้จำเป็นต้องมีเวาเชอร์ที่ใช้กับสินค้านี้ได้ ไม่ว่าจะใช้โดยตรงหรือผ่านทางโควตา" #: pretix/base/models/items.py:617 msgid "" @@ -5311,12 +5393,16 @@ msgid "" "paid and completed. You can use this e.g. for discounted tickets that are " "only available to specific groups." msgstr "" +"หากสินค้านี้เป็นส่วนหนึ่งของคำสั่งซื้อ คำสั่งซื้อนั้นจะถูกปรับสถานะเป็น \"รอการอนุมัติ\" และต้องได้รับคำ" +"ยืนยันจากคุณก่อนที่จะสามารถชำระเงินและเสร็จสมบูรณ์ได้ ตัวอย่างเช่น คุณสามารถใช้ฟีเจอร์นี้สำหรับตั๋วล" +"ดราคาที่สงวนไว้เฉพาะบางกลุ่ม" #: pretix/base/models/items.py:624 msgid "" "This product will be hidden from the event page until the user enters a " "voucher that unlocks this product." msgstr "" +"สินค้านี้จะถูกซ่อนจากหน้ากิจกรรมจนกว่าผู้ใช้จะกรอกเวาเชอร์เพื่อปลดล็อกสินค้านี้" #: pretix/base/models/items.py:630 msgid "" @@ -5324,6 +5410,9 @@ msgid "" "products. Do not check this option if you want to use this " "product as an add-on product, but only for fixed bundles!" msgstr "" +"หากตั้งค่าตัวเลือกนี้ สินค้าจะถูกขายในรูปแบบของสินค้าจัดชุด (Bundle) เท่านั้น ห้ามเลือกตัวเลือกนี้หากคุณต้องการใช้สินค้านี้เป็นสินค้าเพิ่มเติม (Add-on) แต่ให้ใช้สำหรับสินค้าจัดชุ" +"ดแบบคงที่เท่านั้น!" #: pretix/base/models/items.py:637 msgid "" @@ -5331,6 +5420,8 @@ msgid "" "event apply. If this is unchecked, orders containing this product can not be " "canceled by users but only by you." msgstr "" +"หากเลือกตัวเลือกนี้ จะใช้การตั้งค่าการยกเลิกและการเปลี่ยนคำสั่งซื้อตามปกติของกิจกรรมนี้ หากไม่เลือ" +"ก ผู้ใช้จะไม่สามารถยกเลิกคำสั่งซื้อที่มีสินค้านี้ได้ โดยจะยกเลิกได้โดยคุณเท่านั้น" #: pretix/base/models/items.py:644 msgid "" @@ -5338,6 +5429,8 @@ msgid "" "many times. If you keep the field empty or set it to 0, there is no special " "limit for this product." msgstr "" +"สินค้านี้จะซื้อได้ก็ต่อเมื่อมีการเพิ่มลงในตะกร้าอย่างน้อยตามจำนวนที่ระบุนี้ หากเว้นว่างไว้หรือตั้งค่าเป็น " +"0 จะไม่มีการจำกัดจำนวนขั้นต่ำสำหรับสินค้านี้เป็นพิเศษ" #: pretix/base/models/items.py:651 msgid "" @@ -5346,6 +5439,9 @@ msgid "" "product. The limit for the maximum number of items in the whole order " "applies regardless." msgstr "" +"สินค้านี้สามารถซื้อได้ไม่เกินจำนวนที่ระบุนี้ต่อหนึ่งคำสั่งซื้อ หากเว้นว่างไว้หรือตั้งค่าเป็น 0 จะไม่มีการจำกั" +"ดจำนวนสำหรับสินค้านี้เป็นพิเศษ ทั้งนี้ ข้อกำหนดจำนวนสินค้าสูงสุดต่อหนึ่งคำสั่งซื้อในภาพรวมจะยังคงมีผลบั" +"งคับใช้ตามปกติ" #: pretix/base/models/items.py:658 pretix/base/models/items.py:1244 msgid "" @@ -5354,12 +5450,14 @@ msgid "" "tickets to indicate to the person at check-in that the student ID card still " "needs to be checked." msgstr "" +"หากคุณตั้งค่านี้ แอปเช็กอินจะแสดงคำเตือนที่ชัดเจนว่าตั๋วนี้ต้องได้รับการตรวจสอบเป็นพิเศษ ตัวอย่างเช่น " +"คุณสามารถใช้สำหรับตั๋วนักศึกษา เพื่อแจ้งให้เจ้าหน้าที่ทราบว่าต้องตรวจสอบบัตรประจำตัวนักศึกษาเพิ่มเติม" #: pretix/base/models/items.py:665 pretix/base/models/items.py:1251 msgid "" "This text will be shown by the check-in app if a ticket of this type is " "scanned." -msgstr "" +msgstr "ข้อความนี้จะแสดงบนแอปเช็กอินเมื่อมีการสแกนตั๋วประเภทนี้" #: pretix/base/models/items.py:671 pretix/base/models/items.py:1172 msgid "" @@ -5367,48 +5465,53 @@ msgid "" "current price is a discounted one. This is just a cosmetic setting and will " "not actually impact pricing." msgstr "" +"หากตั้งค่าไว้ ข้อความนี้จะแสดงถัดจากราคาปัจจุบันเพื่อระบุว่าเป็นราคาส่วนลด นี่เป็นเพียงการตั้งค่าเพื่อค" +"วามสวยงามและไม่มีผลต่อการคำนวณราคาจริง" #: pretix/base/models/items.py:681 msgid "Only sell tickets for this product on the selected sales channels." -msgstr "" +msgstr "ขายตั๋วสำหรับสินค้านี้ผ่านช่องทางการขายที่เลือกไว้เท่านั้น" #: pretix/base/models/items.py:686 msgid "" "When a customer buys this product, they will get a gift card with a value " "corresponding to the product price." msgstr "" +"เมื่อลูกค้าซื้อสินค้านี้ พวกเขาจะได้รับบัตรของขวัญที่มีมูลค่าตามราคาสินค้า" #: pretix/base/models/items.py:696 msgid "Allowed membership types" -msgstr "" +msgstr "ประเภทสมาชิกที่อนุญาต" #: pretix/base/models/items.py:701 pretix/base/models/items.py:1200 msgid "" "Do not show this unless the customer is logged in and has a valid " "membership. Be aware that this means it will never be visible in the widget." msgstr "" +"ไม่ต้องแสดงรายการนี้ ยกเว้นกรณีที่ลูกค้าเข้าสู่ระบบและมีสมาชิกภาพที่ถูกต้อง โปรดทราบว่าการเลือกตัวเ" +"ลือกนี้จะทำให้รายการไม่ปรากฏในวิดเจ็ต (Widget) เสมอ" #: pretix/base/models/items.py:710 msgid "This product creates a membership of type" -msgstr "" +msgstr "สินค้านี้จะสร้างสมาชิกภาพประเภท" #: pretix/base/models/items.py:713 msgid "" "The duration of the membership is the same as the duration of the event or " "event series date" -msgstr "" +msgstr "ระยะเวลาของสมาชิกภาพจะเท่ากับระยะเวลาของกิจกรรมหรือรอบกิจกรรมนั้นๆ" #: pretix/base/models/items.py:717 msgid "Membership duration in days" -msgstr "" +msgstr "ระยะเวลาสมาชิกภาพ (จำนวนวัน)" #: pretix/base/models/items.py:721 msgid "Membership duration in months" -msgstr "" +msgstr "ระยะเวลาสมาชิกภาพ (จำนวนเดือน)" #: pretix/base/models/items.py:728 msgid "Validity" -msgstr "" +msgstr "อายุการใช้งาน" #: pretix/base/models/items.py:730 msgid "" @@ -5421,50 +5524,55 @@ msgid "" "change the settings here later, existing tickets will not be affected by the " "change but keep their current validity." msgstr "" +"ในการตั้งค่ากิจกรรมปกติหรือรอบกิจกรรมตามช่วงเวลา โดยทั่วไปคุณไม่จำเป็นต้องเปลี่ยนค่านี้ ค่าเริ่มต้นห" +"มายความว่าอายุการใช้งานของตั๋วจะถูกกำหนดโดยการตั้งค่ากิจกรรมและการเช็กอิน ไม่ใช่โดยตัวสินค้า โ" +"ปรดใช้ตัวเลือกอื่นในกรณีที่จำเป็นเท่านั้น เช่น การจองตั๋วแบบรายปีที่มีวันที่เริ่มต้นแบบยืดหยุ่น โปรดทราบว่" +"าอายุการใช้งานจะถูกบันทึกไว้พร้อมกับตั๋ว ดังนั้นหากคุณเปลี่ยนการตั้งค่าในภายหลัง จะไม่มีผลต่อตั๋วที่มีอยู่แ" +"ล้ว โดยตั๋วเหล่านั้นจะยังคงใช้อายุการใช้งานเดิม" #: pretix/base/models/items.py:738 pretix/control/forms/item.py:739 msgid "Start of validity" -msgstr "" +msgstr "เริ่มต้นอายุการใช้งาน" #: pretix/base/models/items.py:739 msgid "End of validity" -msgstr "" +msgstr "สิ้นสุดอายุการใช้งาน" #: pretix/base/models/items.py:742 msgid "Minutes" -msgstr "" +msgstr "นาที" #: pretix/base/models/items.py:746 msgid "Hours" -msgstr "" +msgstr "ชั่วโมง" #: pretix/base/models/items.py:750 msgid "Days" -msgstr "" +msgstr "วัน" #: pretix/base/models/items.py:754 msgid "Months" -msgstr "" +msgstr "เดือน" #: pretix/base/models/items.py:757 msgid "Customers can select the validity start date" -msgstr "" +msgstr "ลูกค้าสามารถเลือกวันที่เริ่มต้นอายุการใช้งานได้เอง" #: pretix/base/models/items.py:758 msgid "If not selected, the validity always starts at the time of purchase." -msgstr "" +msgstr "หากไม่ได้เลือกไว้ อายุการใช้งานจะเริ่มนับจากเวลาที่ซื้อเสมอ" #: pretix/base/models/items.py:763 msgid "Maximum future start" -msgstr "" +msgstr "กำหนดวันเริ่มต้นล่วงหน้าสูงสุด" #: pretix/base/models/items.py:764 msgid "The selected start date may only be this many days in the future." -msgstr "" +msgstr "วันที่เริ่มต้นที่เลือกสามารถอยู่ล่วงหน้าได้ไม่เกินจำนวนวันที่ระบุนี้" #: pretix/base/models/items.py:770 msgid "Reusable media policy" -msgstr "" +msgstr "นโยบายสื่อแบบใช้ซ้ำได้" #: pretix/base/models/items.py:772 msgid "" @@ -5475,10 +5583,14 @@ msgid "" "feature that also requires specific configuration of ticketing and printing " "settings." msgstr "" +"หากต้องการบันทึกสินค้านี้ลงในสื่อทางกายภาพที่ใช้ซ้ำได้ คุณสามารถแนบนโยบายสื่อได้ ซึ่งไม่จำเป็นสำหรับ" +"ตั๋วทั่วไปที่ใช้บาร์โค้ดแบบใช้ครั้งเดียว แต่จะใช้สำหรับสินค้าอย่างตั๋วปีที่ต่ออายุได้หรือสายรัดข้อมือบัตรของข" +"วัญแบบเติมเงินได้เท่านั้น นี่เป็นฟีเจอร์ขั้นสูงที่ต้องมีการตั้งค่าการออกตั๋วและการพิมพ์ที่เฉพาะเจาะจงร่วมด้" +"วย" #: pretix/base/models/items.py:782 msgid "Reusable media type" -msgstr "" +msgstr "ประเภทสื่อแบบใช้ซ้ำได้" #: pretix/base/models/items.py:784 msgid "" @@ -5486,25 +5598,28 @@ msgid "" "Note that not all media types support all types of products, and not all " "media types are supported across all sales channels or check-in processes." msgstr "" +"เลือกประเภทของสื่อทางกายภาพที่จะใช้กับสินค้านี้ โปรดทราบว่าสื่อบางประเภทอาจไม่รองรับสินค้าทุกชนิ" +"ด และสื่อบางประเภทอาจไม่รองรับในบางช่องทางการขายหรือขั้นตอนการเช็กอิน" #: pretix/base/models/items.py:989 msgid "" "If you select a reusable media policy, you also need to select a reusable " "media type." msgstr "" +"หากคุณเลือกนโยบายสื่อแบบใช้ซ้ำได้ คุณต้องเลือกประเภทของสื่อแบบใช้ซ้ำได้ด้วย" #: pretix/base/models/items.py:993 msgid "The selected media type is not enabled in your organizer settings." -msgstr "" +msgstr "ประเภทสื่อที่เลือกยังไม่ได้ถูกเปิดใช้งานในการตั้งค่าผู้จัดงานของคุณ" #: pretix/base/models/items.py:995 msgid "The selected media type does not support usage for tickets currently." -msgstr "" +msgstr "ประเภทสื่อที่เลือกยังไม่รองรับการใช้งานสำหรับตั๋วในขณะนี้" #: pretix/base/models/items.py:997 msgid "" "The selected media type does not support usage for gift cards currently." -msgstr "" +msgstr "ประเภทสื่อที่เลือกยังไม่รองรับการใช้งานสำหรับบัตรของขวัญในขณะนี้" #: pretix/base/models/items.py:999 msgid "" @@ -5512,32 +5627,34 @@ msgid "" "Instead, gift cards for some reusable media types can be created or re-" "charged directly at the POS." msgstr "" +"ในขณะนี้คุณยังไม่สามารถสร้างบัตรของขวัญด้วยนโยบายสื่อแบบใช้ซ้ำได้ แต่คุณสามารถสร้างหรือเติมเงินบัต" +"รของขวัญสำหรับสื่อบางประเภทได้โดยตรงที่จุดขาย (POS)" #: pretix/base/models/items.py:1007 msgid "" "The maximum number per order can not be lower than the minimum number per " "order." -msgstr "" +msgstr "จำนวนสูงสุดต่อคำสั่งซื้อไม่สามารถต่ำกว่าจำนวนขั้นต่ำต่อคำสั่งซื้อได้" #: pretix/base/models/items.py:1013 msgid "The item's category must belong to the same event as the item." -msgstr "" +msgstr "หมวดหมู่ของรายการต้องอยู่ในกิจกรรมเดียวกันกับรายการนั้น" #: pretix/base/models/items.py:1018 msgid "The item's tax rule must belong to the same event as the item." -msgstr "" +msgstr "กฎภาษีของรายการต้องอยู่ในกิจกรรมเดียวกันกับรายการนั้น" #: pretix/base/models/items.py:1024 msgid "The item's availability cannot end before it starts." -msgstr "" +msgstr "ช่วงเวลาการจำหน่ายของรายการไม่สามารถสิ้นสุดก่อนเวลาเริ่มต้นได้" #: pretix/base/models/items.py:1156 msgid "This is shown below the variation name in lists." -msgstr "" +msgstr "ข้อความนี้จะแสดงอยู่ใต้ชื่อรูปแบบสินค้าในรายการ" #: pretix/base/models/items.py:1183 msgid "Require approval" -msgstr "" +msgstr "ต้องได้รับการอนุมัติ" #: pretix/base/models/items.py:1185 msgid "" @@ -5546,20 +5663,22 @@ msgid "" "paid and completed. You can use this e.g. for discounted tickets that are " "only available to specific groups." msgstr "" +"หากรูปแบบสินค้านี้เป็นส่วนหนึ่งของคำสั่งซื้อ คำสั่งซื้อนั้นจะถูกปรับสถานะเป็น \"รอการอนุมัติ\" และต้องไ" +"ด้รับคำยืนยันจากคุณก่อนที่จะสามารถชำระเงินและเสร็จสมบูรณ์ได้" #: pretix/base/models/items.py:1195 pretix/control/navigation.py:591 #: pretix/control/templates/pretixcontrol/organizers/membershiptypes.html:4 #: pretix/control/templates/pretixcontrol/organizers/membershiptypes.html:6 msgid "Membership types" -msgstr "" +msgstr "ประเภทสมาชิก" #: pretix/base/models/items.py:1207 msgid "This variation will not be sold before the given date." -msgstr "" +msgstr "สินค้ารูปแบบนี้จะไม่ถูกจำหน่ายก่อนวันที่กำหนด" #: pretix/base/models/items.py:1217 msgid "This variation will not be sold after the given date." -msgstr "" +msgstr "สินค้ารูปแบบนี้จะไม่ถูกจำหน่ายหลังจากวันที่กำหนด" #: pretix/base/models/items.py:1225 msgid "Sell on all sales channels the product is sold on" @@ -7521,7 +7640,6 @@ msgid "2017-05-31 22:00" msgstr "" #: pretix/base/pdf.py:298 -#, fuzzy msgid "22:00" msgstr "22:00" @@ -7544,7 +7662,6 @@ 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 -#, fuzzy msgid "19:00" msgstr "19:00" @@ -7561,7 +7678,6 @@ msgid "Sesame Street 42" msgstr "" #: pretix/base/pdf.py:357 -#, fuzzy msgid "12345" msgstr "12345" @@ -7787,15 +7903,15 @@ msgstr "" #: pretix/base/reldate.py:38 msgid "Event start" -msgstr "" +msgstr "เริ่มงาน" #: pretix/base/reldate.py:39 msgid "Event end" -msgstr "" +msgstr "จบงาน" #: pretix/base/reldate.py:40 msgid "Event admission" -msgstr "" +msgstr "เริ่มเปิดให้เข้างาน" #: pretix/base/reldate.py:41 msgid "Presale start" @@ -8391,7 +8507,6 @@ msgid "214th Example Street" msgstr "ถนนตัวอย่าง ซอย 214" #: pretix/base/services/invoices.py:595 -#, fuzzy msgid "012345" msgstr "012345" @@ -11942,12 +12057,12 @@ msgstr "" #: pretix/base/timeframes.py:130 msgctxt "reporting_timeframe" msgid "Previous week" -msgstr "" +msgstr "สัปดาห์ก่อนหน้า" #: pretix/base/timeframes.py:139 msgctxt "reporting_timeframe" msgid "Next week" -msgstr "" +msgstr "สัปดาห์ถัดไป" #: pretix/base/timeframes.py:148 msgctxt "reporting_timeframe" @@ -11968,12 +12083,12 @@ msgstr "" #: pretix/base/timeframes.py:166 msgctxt "reporting_timeframe" msgid "Previous month" -msgstr "" +msgstr "เดือนก่อนหน้า" #: pretix/base/timeframes.py:175 msgctxt "reporting_timeframe" msgid "Next month" -msgstr "" +msgstr "เดือนถัดไป" #: pretix/base/timeframes.py:184 msgctxt "reporting_timeframe" @@ -12928,7 +13043,7 @@ msgstr "" #: pretix/control/forms/event.py:1907 msgid "Free" -msgstr "" +msgstr "ฟรี" #: pretix/control/forms/event.py:1912 msgid "Quantity available" @@ -13212,7 +13327,7 @@ msgstr "" #: pretix/control/forms/filter.py:2179 pretix/control/forms/filter.py:2181 #: pretix/control/forms/filter.py:2747 pretix/control/forms/filter.py:2749 msgid "Search query" -msgstr "" +msgstr "คำค้นหา" #: pretix/control/forms/filter.py:1655 pretix/control/forms/filter.py:1727 #: pretix/control/templates/pretixcontrol/organizers/customer.html:47 @@ -13291,7 +13406,7 @@ msgstr "" #: pretix/plugins/checkinlists/exporters.py:110 msgctxt "checkin state" msgid "Present" -msgstr "" +msgstr "มา" #: pretix/control/forms/filter.py:2043 #: pretix/plugins/checkinlists/exporters.py:111 @@ -16529,7 +16644,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/auth/login.html:43 #: pretix/control/templates/pretixcontrol/auth/register.html:22 msgid "Register" -msgstr "" +msgstr "ลงทะเบียน" #: pretix/control/templates/pretixcontrol/auth/login.html:27 #: pretix/presale/templates/pretixpresale/fragment_login_status.html:19 @@ -17169,7 +17284,7 @@ msgstr "" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:91 #: pretix/presale/templates/pretixpresale/fragment_event_list_filter.html:22 msgid "Filter" -msgstr "" +msgstr "กรอง" #: pretix/control/templates/pretixcontrol/checkin/checkins.html:50 msgid "Your search did not match any check-ins." @@ -18429,7 +18544,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/organizers/device_logs.html:50 #: pretix/control/templates/pretixcontrol/organizers/logs.html:80 msgid "No results" -msgstr "" +msgstr "ไม่พบผลลัพธ์" #: pretix/control/templates/pretixcontrol/event/mail.html:7 #: pretix/control/templates/pretixcontrol/organizers/mail.html:11 @@ -18534,7 +18649,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/subevents/index.html:166 #: pretix/control/templates/pretixcontrol/user/settings.html:81 msgid "Disabled" -msgstr "" +msgstr "ปิดใช้งาน" #: pretix/control/templates/pretixcontrol/event/payment.html:57 msgid "Enable additional payment plugins" @@ -18556,7 +18671,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/position_change_confirm.html:25 #: pretix/presale/templates/pretixpresale/event/position_giftcard.html:16 msgid "Back" -msgstr "" +msgstr "ย้อนกลับ" #: pretix/control/templates/pretixcontrol/event/payment_provider.html:15 msgid "Payment provider:" @@ -19899,7 +20014,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/subevents/bulk.html:355 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:364 msgid "minutes" -msgstr "" +msgstr "นาที" #: pretix/control/templates/pretixcontrol/item/index.html:229 msgid "hours" @@ -20143,7 +20258,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:72 #: pretix/presale/views/widget.py:460 msgid "Sold out" -msgstr "" +msgstr "ขายหมดแล้ว" #: pretix/control/templates/pretixcontrol/items/index.html:7 #: pretix/control/templates/pretixcontrol/order/index.html:19 @@ -20242,7 +20357,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/items/question.html:76 msgid "Count" -msgstr "" +msgstr "จำนวน" #: pretix/control/templates/pretixcontrol/items/question.html:77 #, python-format @@ -23250,7 +23365,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/pdf/index.html:52 msgid "Text box" -msgstr "" +msgstr "กล่องข้อความ" #: pretix/control/templates/pretixcontrol/pdf/index.html:59 msgid "QR Code" @@ -23289,7 +23404,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/pdf/index.html:107 msgid "Duplicate" -msgstr "" +msgstr "ทำสำเนา" #: pretix/control/templates/pretixcontrol/pdf/index.html:117 msgid "Undo" @@ -26480,8 +26595,6 @@ msgid "Belarus" msgstr "" #: pretix/helpers/countries.py:135 -#, fuzzy -#| msgid "French" msgid "French Guiana" msgstr "ฝรั่งเศส" @@ -28445,10 +28558,8 @@ msgid "" msgstr "" #: pretix/plugins/returnurl/views.py:37 -#, fuzzy -#| msgid "Redirection URIs" msgid "Base redirection URLs" -msgstr "Redirection URIs" +msgstr "URL พื้นฐานสำหรับการเปลี่ยนเส้นทาง" #: pretix/plugins/returnurl/views.py:38 msgid "" @@ -30003,7 +30114,7 @@ msgstr "" #: pretix/plugins/ticketoutputpdf/templates/pretixplugins/ticketoutputpdf/edit.html:23 msgid "Ticket design" -msgstr "" +msgstr "การออกแบบตั๋ว" #: pretix/plugins/ticketoutputpdf/templates/pretixplugins/ticketoutputpdf/edit.html:27 msgid "You can modify the design after you saved this page." @@ -30330,7 +30441,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/voucher.html:198 #: pretix/presale/templates/pretixpresale/event/voucher.html:353 msgid "plus taxes" -msgstr "" +msgstr "ยังไม่รวมภาษี" #: pretix/presale/forms/order.py:133 msgid "No other variation of this product is currently available for you." @@ -30571,7 +30682,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:27 #: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:18 msgid "Cart expired" -msgstr "" +msgstr "ตะกร้าสินค้าหมดเวลาแล้ว" #: pretix/presale/templates/pretixpresale/event/checkout_base.html:36 msgid "Show full cart" @@ -30864,7 +30975,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/voucher.html:341 msgctxt "price" msgid "free" -msgstr "" +msgstr "ฟรี" #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:78 #: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:69 @@ -30881,12 +30992,12 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:98 #: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:109 msgid "Hide variants" -msgstr "" +msgstr "ซ่อนรูปแบบ" #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:102 #: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:113 msgid "Show variants" -msgstr "" +msgstr "แสดงรูปแบบเพิ่มเติม" #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:129 #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:271 @@ -30941,7 +31052,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/voucher.html:200 #: pretix/presale/templates/pretixpresale/event/voucher.html:355 msgid "incl. taxes" -msgstr "" +msgstr "รวมภาษีแล้ว" #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:176 #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:316 @@ -30971,7 +31082,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/voucher.html:385 msgctxt "checkbox" msgid "Select" -msgstr "" +msgstr "เลือก" #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:208 #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:354 @@ -30980,7 +31091,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/voucher.html:235 #: pretix/presale/templates/pretixpresale/event/voucher.html:390 msgid "Decrease quantity" -msgstr "" +msgstr "ลดจำนวน" #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:218 #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:364 @@ -30989,7 +31100,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/voucher.html:242 #: pretix/presale/templates/pretixpresale/event/voucher.html:398 msgid "Increase quantity" -msgstr "" +msgstr "เพิ่มจำนวน" #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:379 msgid "There are no add-ons available for this product." @@ -31011,7 +31122,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_availability.html:23 #: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:93 msgid "SOLD OUT" -msgstr "" +msgstr "ขายหมดแล้ว" #: pretix/presale/templates/pretixpresale/event/fragment_availability.html:25 #: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:91 @@ -31026,7 +31137,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:69 #: pretix/presale/views/widget.py:455 msgid "Reserved" -msgstr "" +msgstr "สำรองไว้แล้ว" #: pretix/presale/templates/pretixpresale/event/fragment_availability.html:39 msgid "All remaining products are reserved but might become available again." @@ -31634,7 +31745,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/voucher.html:437 msgctxt "free_tickets" msgid "Register" -msgstr "" +msgstr "ลงทะเบียน" #: pretix/presale/templates/pretixpresale/event/index.html:235 #: pretix/presale/templates/pretixpresale/event/voucher.html:442 @@ -32511,104 +32622,106 @@ msgstr "" #: pretix/presale/templates/pretixpresale/organizers/customer_address_delete.html:15 msgid "Do you really want to delete the following address from your account?" -msgstr "" +msgstr "คุณต้องการลบที่อยู่ต่อไปนี้ออกจากบัญชีของคุณใช่หรือไม่?" #: pretix/presale/templates/pretixpresale/organizers/customer_addresses.html:5 #: pretix/presale/templates/pretixpresale/organizers/customer_addresses.html:11 #: pretix/presale/views/customer.py:378 msgid "Addresses" -msgstr "" +msgstr "ที่อยู่" #: pretix/presale/templates/pretixpresale/organizers/customer_addresses.html:37 msgid "You don’t have any addresses in your account yet." -msgstr "" +msgstr "คุณยังไม่มีที่อยู่ในบัญชีของคุณ" #: pretix/presale/templates/pretixpresale/organizers/customer_base.html:7 #: pretix/presale/templates/pretixpresale/organizers/customer_orders.html:7 msgid "Your account" -msgstr "" +msgstr "บัญชีของคุณ" #: pretix/presale/templates/pretixpresale/organizers/customer_base.html:22 msgid "Change account information" -msgstr "" +msgstr "เปลี่ยนแปลงข้อมูลบัญชี" #: pretix/presale/templates/pretixpresale/organizers/customer_base.html:41 msgid "customer account information" -msgstr "" +msgstr "ข้อมูลบัญชีลูกค้า" #: pretix/presale/templates/pretixpresale/organizers/customer_giftcards.html:28 #, python-format msgid "Issued on %(date)s" -msgstr "" +msgstr "ออกเมื่อ %(date)s" #: pretix/presale/templates/pretixpresale/organizers/customer_giftcards.html:38 #, python-format msgid "Expired since %(date)s" -msgstr "" +msgstr "หมดอายุตั้งแต่วันที่ %(date)s" #: pretix/presale/templates/pretixpresale/organizers/customer_giftcards.html:46 #, python-format msgid "Valid until %(date)s" -msgstr "" +msgstr "ใช้ได้จนถึงวันที่ %(date)s" #: pretix/presale/templates/pretixpresale/organizers/customer_giftcards.html:66 msgid "Remaining value:" -msgstr "" +msgstr "มูลค่าคงเหลือ:" #: pretix/presale/templates/pretixpresale/organizers/customer_giftcards.html:76 msgid "You don’t have any gift cards in your account currently." -msgstr "" +msgstr "ปัจจุบันคุณยังไม่มีบัตรของขวัญในบัญชีของคุณ" #: pretix/presale/templates/pretixpresale/organizers/customer_giftcards.html:77 msgid "" "Currently, only gift cards resulting from refunds show up here, any " "purchased gift cards show up under the orders tab." msgstr "" +"ปัจจุบัน เฉพาะบัตรของขวัญที่มาจากการคืนเงินเท่านั้นที่จะแสดงที่นี่ ส่วนบัตรของขวัญที่ซื้อจะแสดงในแถบคำ" +"สั่งซื้อ" #: pretix/presale/templates/pretixpresale/organizers/customer_info.html:6 msgid "Account information" -msgstr "" +msgstr "ข้อมูลบัญชี" #: pretix/presale/templates/pretixpresale/organizers/customer_info.html:15 msgid "Update your account information" -msgstr "" +msgstr "อัปเดตข้อมูลบัญชีของคุณ" #: pretix/presale/templates/pretixpresale/organizers/customer_login.html:16 #: pretix/presale/templates/pretixpresale/organizers/customer_login.html:56 #, python-format msgid "Sign in to your account at %(org)s" -msgstr "" +msgstr "เข้าสู่ระบบบัญชีของคุณที่ %(org)s" #: pretix/presale/templates/pretixpresale/organizers/customer_login.html:30 #: pretix/presale/templates/pretixpresale/organizers/customer_login.html:47 #: pretix/presale/templates/pretixpresale/organizers/customer_registration.html:38 msgid "Create account" -msgstr "" +msgstr "สร้างบัญชี" #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:6 #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:16 msgid "Your membership" -msgstr "" +msgstr "สมาชิกภาพของคุณ" #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:40 msgid "transferable" -msgstr "" +msgstr "โอนสิทธิ์ได้" #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:42 msgid "not transferable" -msgstr "" +msgstr "ไม่สามารถโอนสิทธิ์ได้" #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:122 msgid "You haven’t used this membership yet." -msgstr "" +msgstr "คุณยังไม่ได้ใช้งานสมาชิกภาพนี้" #: pretix/presale/templates/pretixpresale/organizers/customer_memberships.html:48 msgid "Expired since" -msgstr "" +msgstr "หมดอายุตั้งแต่" #: pretix/presale/templates/pretixpresale/organizers/customer_memberships.html:103 msgid "You don’t have any memberships in your account yet." -msgstr "" +msgstr "คุณยังไม่มีสมาชิกภาพในบัญชีของคุณ" #: pretix/presale/templates/pretixpresale/organizers/customer_orders.html:49 #, python-format @@ -32618,94 +32731,94 @@ msgstr[0] "" #: pretix/presale/templates/pretixpresale/organizers/customer_orders.html:73 msgid "You don’t have any orders in your account yet." -msgstr "" +msgstr "คุณยังไม่มีคำสั่งซื้อในบัญชีของคุณ" #: pretix/presale/templates/pretixpresale/organizers/customer_password.html:6 #: pretix/presale/templates/pretixpresale/organizers/customer_resetpw.html:7 #: pretix/presale/templates/pretixpresale/organizers/customer_setpassword.html:6 msgid "Password reset" -msgstr "" +msgstr "รีเซ็ตรหัสผ่าน" #: pretix/presale/templates/pretixpresale/organizers/customer_password.html:15 #: pretix/presale/templates/pretixpresale/organizers/customer_setpassword.html:15 msgid "Set a new password for your account" -msgstr "" +msgstr "ตั้งรหัสผ่านใหม่สำหรับบัญชีของคุณ" #: pretix/presale/templates/pretixpresale/organizers/customer_profile_delete.html:5 #: pretix/presale/templates/pretixpresale/organizers/customer_profile_delete.html:10 msgid "Delete profile" -msgstr "" +msgstr "ลบโปรไฟล์" #: pretix/presale/templates/pretixpresale/organizers/customer_profile_delete.html:15 msgid "Do you really want to delete the following profile from your account?" -msgstr "" +msgstr "คุณต้องการลบโปรไฟล์ต่อไปนี้ออกจากบัญชีของคุณใช่หรือไม่?" #: pretix/presale/templates/pretixpresale/organizers/customer_profiles.html:5 #: pretix/presale/templates/pretixpresale/organizers/customer_profiles.html:11 #: pretix/presale/views/customer.py:384 msgid "Attendee profiles" -msgstr "" +msgstr "โปรไฟล์ผู้เข้าร่วม" #: pretix/presale/templates/pretixpresale/organizers/customer_profiles.html:37 msgid "You don’t have any attendee profiles in your account yet." -msgstr "" +msgstr "คุณยังไม่มีโปรไฟล์ผู้เข้าร่วมในบัญชีของคุณ" #: pretix/presale/templates/pretixpresale/organizers/customer_registration.html:7 msgid "Registration" -msgstr "" +msgstr "การลงทะเบียน" #: pretix/presale/templates/pretixpresale/organizers/customer_registration.html:16 #, python-format msgid "Create a new account at %(org)s" -msgstr "" +msgstr "สร้างบัญชีใหม่กับ %(org)s" #: pretix/presale/templates/pretixpresale/organizers/customer_registration.html:31 #: pretix/presale/templates/pretixpresale/organizers/customer_registration.html:48 msgid "Log in to an existing account" -msgstr "" +msgstr "เข้าสู่ระบบด้วยบัญชีที่มีอยู่" #: pretix/presale/templates/pretixpresale/organizers/customer_resetpw.html:16 #: pretix/presale/templates/pretixpresale/organizers/customer_resetpw.html:34 msgid "Request a new password" -msgstr "" +msgstr "ขอรหัสผ่านใหม่" #: pretix/presale/templates/pretixpresale/organizers/index.html:11 msgid "Event list" -msgstr "" +msgstr "รายการกิจกรรม" #: pretix/presale/templates/pretixpresale/organizers/index.html:35 msgid "Past events" -msgstr "" +msgstr "กิจกรรมที่ผ่านมา" #: pretix/presale/templates/pretixpresale/organizers/index.html:37 msgid "Upcoming events" -msgstr "" +msgstr "กิจกรรมที่กำลังจะมาถึง" #: pretix/presale/templates/pretixpresale/organizers/index.html:56 msgctxt "subevent" msgid "Multiple dates" -msgstr "" +msgstr "หลายวันทำการ" #: pretix/presale/templates/pretixpresale/organizers/index.html:105 msgid "No archived events found." -msgstr "" +msgstr "ไม่พบกิจกรรมที่เก็บถาวร" #: pretix/presale/templates/pretixpresale/organizers/index.html:105 msgid "Show upcoming" -msgstr "" +msgstr "แสดงกิจกรรมที่กำลังจะมาถึง" #: pretix/presale/templates/pretixpresale/organizers/index.html:107 msgid "No public upcoming events found." -msgstr "" +msgstr "ไม่พบกิจกรรมสาธารณะที่กำลังจะมาถึง" #: pretix/presale/templates/pretixpresale/organizers/index.html:107 msgid "Show past events" -msgstr "" +msgstr "แสดงกิจกรรมที่ผ่านมา" #: pretix/presale/templates/pretixpresale/pagination.html:14 #, python-format msgid "Page %(page)s of %(of)s" -msgstr "" +msgstr "หน้า %(page)s จากทั้งหมด %(of)s หน้า" #: pretix/presale/templates/pretixpresale/postmessage.html:21 #: pretix/presale/templates/pretixpresale/waiting.html:22 @@ -32715,49 +32828,52 @@ msgstr "เรากำลังประมวลผลคำขอของค #: pretix/presale/utils.py:271 pretix/presale/utils.py:417 #: pretix/presale/utils.py:418 msgid "The selected event was not found." -msgstr "" +msgstr "ไม่พบกิจกรรมที่เลือก" #: pretix/presale/utils.py:381 msgid "This feature is not enabled." -msgstr "" +msgstr "ฟีเจอร์นี้ยังไม่เปิดใช้งาน" #: pretix/presale/utils.py:427 pretix/presale/utils.py:433 msgid "The selected organizer was not found." -msgstr "" +msgstr "ไม่พบผู้จัดงานที่เลือก" #: pretix/presale/views/__init__.py:293 #, python-brace-format msgid "" "Your selected payment method can only be used for a payment of at least " "{amount}." -msgstr "" +msgstr "วิธีชำระเงินที่คุณเลือกสามารถใช้ได้กับยอดชำระขั้นต่ำ {amount} เท่านั้น" #: pretix/presale/views/cart.py:202 msgid "Please enter positive numbers only." -msgstr "" +msgstr "โปรดกรอกเฉพาะตัวเลขที่เป็นบวกเท่านั้น" #: pretix/presale/views/cart.py:441 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 msgid "" "The gift card has been saved to your cart. Please continue your checkout." -msgstr "" +msgstr "บัตรของขวัญถูกบันทึกลงในตะกร้าของคุณแล้ว โปรดดำเนินการชำระเงินต่อ" #: pretix/presale/views/cart.py:520 msgid "Your cart has been updated." -msgstr "" +msgstr "ตะกร้าสินค้าของคุณได้รับการอัปเดตแล้ว" #: pretix/presale/views/cart.py:523 pretix/presale/views/cart.py:549 msgid "Your cart is now empty." -msgstr "" +msgstr "ไม่มีสินค้าในตะกร้าของคุณ" #: pretix/presale/views/cart.py:570 msgid "" "Your cart timeout was extended. Please note that some of the prices in your " "cart changed." msgstr "" +"ขยายเวลาสำหรับตะกร้าสินค้าของคุณแล้ว โปรดทราบว่าราคาสินค้าบางรายการในตะกร้ามีการเปลี่ยนแปล" +"ง" #: pretix/presale/views/cart.py:573 msgid "Your cart timeout was extended." @@ -32781,7 +32897,7 @@ msgstr "บันทึกบัตรของขวัญลงในรถเ #: pretix/presale/views/cart.py:795 msgctxt "subevent" msgid "We were unable to find the specified date." -msgstr "" +msgstr "ไม่พบวันที่ที่ระบุ" #: pretix/presale/views/checkout.py:55 msgid "Your cart is empty" @@ -32838,6 +32954,7 @@ msgid "" "We were unable to use your login since the email address {email} is already " "used for a different account in this system." msgstr "" +"ไม่สามารถเข้าสู่ระบบได้เนื่องจากอีเมล {email} ถูกใช้งานโดยบัญชีอื่นในระบบนี้แล้ว" #: pretix/presale/views/event.py:921 msgid "Unknown event code or not authorized to access this event." @@ -32856,7 +32973,7 @@ msgstr "พบวันที่ไม่ถูกต้อง" #: pretix/presale/views/event.py:956 pretix/presale/views/event.py:964 #: pretix/presale/views/event.py:967 msgid "Please go back and try again." -msgstr "" +msgstr "โปรดย้อนกลับและลองใหม่อีกครั้ง" #: pretix/presale/views/event.py:980 msgid "Fake date time" @@ -32886,7 +33003,7 @@ msgstr "การชำระเงินล่าช้าเกินกว่ #: pretix/presale/views/order.py:605 msgid "The payment method for this order cannot be changed." -msgstr "" +msgstr "ไม่สามารถเปลี่ยนวิธีการชำระเงินสำหรับคำสั่งซื้อนี้ได้" #: pretix/presale/views/order.py:616 msgid "A payment is currently pending for this order." @@ -32907,7 +33024,7 @@ msgstr "คุณไม่สามารถแก้ไขคำสั่งซ #: pretix/presale/views/order.py:1088 pretix/presale/views/order.py:1093 #: pretix/presale/views/order.py:1098 msgid "You chose an invalid cancellation fee." -msgstr "" +msgstr "คุณเลือกค่าธรรมเนียมการยกเลิกไม่ถูกต้อง" #: pretix/presale/views/order.py:1114 msgid "Canceled by customer" @@ -33046,11 +33163,11 @@ msgstr "ร้านจำหน่ายตั๋วนี้ถูกปิด #: pretix/presale/views/widget.py:407 msgid "The selected date does not exist in this event series." -msgstr "" +msgstr "วันที่เลือกไม่มีอยู่ในรอบกิจกรรมนี้" #: pretix/presale/views/widget.py:414 msgid "The selected date is not available." -msgstr "" +msgstr "วันที่เลือกไม่มีอยู่ในรอบกิจกรรมนี้" #: pretix/presale/views/widget.py:478 #, python-format From 1f38d48ab7429c3086d784723c9385eacd6597ae Mon Sep 17 00:00:00 2001 From: Nate Horst Date: Thu, 29 Jan 2026 05:50:58 +0100 Subject: [PATCH 005/108] Translations: Update Thai Currently translated at 99.2% (254 of 256 strings) Translation: pretix/pretix (JavaScript parts) Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/th/ powered by weblate --- src/pretix/locale/th/LC_MESSAGES/djangojs.po | 215 ++++++++++--------- 1 file changed, 113 insertions(+), 102 deletions(-) diff --git a/src/pretix/locale/th/LC_MESSAGES/djangojs.po b/src/pretix/locale/th/LC_MESSAGES/djangojs.po index 88f1d6321a..309471838f 100644 --- a/src/pretix/locale/th/LC_MESSAGES/djangojs.po +++ b/src/pretix/locale/th/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-01-26 09:10+0000\n" -"PO-Revision-Date: 2026-01-28 09:00+0000\n" +"PO-Revision-Date: 2026-01-29 13:00+0000\n" "Last-Translator: Nate Horst \n" "Language-Team: Thai \n" @@ -450,7 +450,6 @@ msgid "is after" msgstr "อยู่ถัดจาก" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:40 -#, fuzzy msgid "=" msgstr "=" @@ -520,147 +519,150 @@ msgstr "ทุกเงื่อนไขด้านล่างนี้ (AND) #: pretix/static/pretixcontrol/js/ui/checkinrules.js:183 msgid "At least one of the conditions below (OR)" -msgstr "" +msgstr "ตรงตามเงื่อนไขด้านล่างอย่างน้อยหนึ่งข้อ (OR)" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:184 msgid "Event start" -msgstr "" +msgstr "เริ่มงาน" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:185 msgid "Event end" -msgstr "" +msgstr "จบงาน" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:186 msgid "Event admission" -msgstr "" +msgstr "เริ่มเปิดให้เข้างาน" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:187 msgid "custom date and time" -msgstr "" +msgstr "กำหนดวันที่และเวลาเอง" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:188 msgid "custom time" -msgstr "" +msgstr "กำหนดเวลาเอง" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:189 msgid "Tolerance (minutes)" -msgstr "" +msgstr "ระยะเวลาที่อนุโลม (นาที)" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:190 msgid "Add condition" -msgstr "" +msgstr "เพิ่มเงื่อนไข" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:191 msgid "minutes" -msgstr "" +msgstr "นาที" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:192 msgid "Duplicate" -msgstr "" +msgstr "ทำสำเนา" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:193 msgctxt "entry_status" msgid "present" -msgstr "" +msgstr "มา" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:194 msgctxt "entry_status" msgid "absent" -msgstr "" +msgstr "ไม่มา" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:289 msgid "Error: Product not found!" -msgstr "" +msgstr "ข้อผิดพลาด: ไม่พบสินค้า!" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:296 msgid "Error: Variation not found!" -msgstr "" +msgstr "ข้อผิดพลาด: ไม่พบรูปแบบสินค้า!" #: pretix/static/pretixcontrol/js/ui/editor.js:171 msgid "Check-in QR" -msgstr "" +msgstr "QR สำหรับเช็คอิน" #: pretix/static/pretixcontrol/js/ui/editor.js:549 msgid "The PDF background file could not be loaded for the following reason:" -msgstr "" +msgstr "ไม่สามารถโหลดไฟล์พื้นหลัง PDF ได้เนื่องจากสาเหตุต่อไปนี้:" #: pretix/static/pretixcontrol/js/ui/editor.js:904 msgid "Group of objects" -msgstr "" +msgstr "กลุ่มของวัตถุ" #: pretix/static/pretixcontrol/js/ui/editor.js:909 msgid "Text object (deprecated)" -msgstr "" +msgstr "วัตถุข้อความ (เลิกใช้งานแล้ว)" #: pretix/static/pretixcontrol/js/ui/editor.js:911 msgid "Text box" -msgstr "" +msgstr "กล่องข้อความ" #: pretix/static/pretixcontrol/js/ui/editor.js:913 msgid "Barcode area" -msgstr "" +msgstr "พื้นที่บาร์โค้ด" #: pretix/static/pretixcontrol/js/ui/editor.js:915 msgid "Image area" -msgstr "" +msgstr "พื้นที่รูปภาพ" #: pretix/static/pretixcontrol/js/ui/editor.js:917 msgid "Powered by pretix" -msgstr "" +msgstr "สนับสนุนโดย pretix" #: pretix/static/pretixcontrol/js/ui/editor.js:919 msgid "Object" -msgstr "" +msgstr "วัตถุ" #: pretix/static/pretixcontrol/js/ui/editor.js:923 msgid "Ticket design" -msgstr "" +msgstr "การออกแบบตั๋ว" #: pretix/static/pretixcontrol/js/ui/editor.js:1292 msgid "Saving failed." -msgstr "" +msgstr "การบันทึกล้มเหลว" #: pretix/static/pretixcontrol/js/ui/editor.js:1361 #: pretix/static/pretixcontrol/js/ui/editor.js:1412 msgid "Error while uploading your PDF file, please try again." -msgstr "" +msgstr "เกิดข้อผิดพลาดขณะอัปโหลดไฟล์ PDF ของคุณ โปรดลองอีกครั้ง" #: pretix/static/pretixcontrol/js/ui/editor.js:1395 msgid "Do you really want to leave the editor without saving your changes?" -msgstr "" +msgstr "คุณต้องการออกจากหน้าแก้ไขโดยไม่บันทึกการเปลี่ยนแปลงใช่หรือไม่?" #: pretix/static/pretixcontrol/js/ui/mail.js:19 msgid "An error has occurred." -msgstr "" +msgstr "เกิดข้อผิดพลาดขึ้น" #: pretix/static/pretixcontrol/js/ui/mail.js:52 msgid "Generating messages …" -msgstr "" +msgstr "กำลังสร้างข้อความ…" #: pretix/static/pretixcontrol/js/ui/main.js:69 msgid "Unknown error." -msgstr "" +msgstr "ข้อผิดพลาดที่ไม่ทราบสาเหตุ" #: pretix/static/pretixcontrol/js/ui/main.js:309 msgid "Your color has great contrast and will provide excellent accessibility." msgstr "" +"สีของคุณมีค่าความต่าง (Contrast) ที่ดีมาก และช่วยให้เข้าถึงข้อมูลได้ง่ายขึ้น" #: pretix/static/pretixcontrol/js/ui/main.js:313 msgid "" "Your color has decent contrast and is sufficient for minimum accessibility " "requirements." msgstr "" +"สีของคุณมีความต่างที่เหมาะสม และเพียงพอต่อข้อกำหนดขั้นต่ำของการเข้าถึงข้อมูล" #: pretix/static/pretixcontrol/js/ui/main.js:317 msgid "" "Your color has insufficient contrast to white. Accessibility of your site " "will be impacted." msgstr "" +"สีของคุณมีความต่าง (Contrast) กับสีขาวไม่เพียงพอ ซึ่งจะส่งผลกระทบต่อการเข้าถึงข้อมูลของเว็บไซต์" #: pretix/static/pretixcontrol/js/ui/main.js:443 #: pretix/static/pretixcontrol/js/ui/main.js:463 msgid "Search query" -msgstr "" +msgstr "คำค้นหา" #: pretix/static/pretixcontrol/js/ui/main.js:461 msgid "All" @@ -668,47 +670,47 @@ msgstr "ทั้งหมด" #: pretix/static/pretixcontrol/js/ui/main.js:462 msgid "None" -msgstr "" +msgstr "ไม่เลือก" #: pretix/static/pretixcontrol/js/ui/main.js:466 msgid "Selected only" -msgstr "" +msgstr "เฉพาะที่เลือก" #: pretix/static/pretixcontrol/js/ui/main.js:839 msgid "Enter page number between 1 and %(max)s." -msgstr "" +msgstr "โปรดระบุหมายเลขหน้าตั้งแต่ 1 ถึง %(max)s" #: pretix/static/pretixcontrol/js/ui/main.js:842 msgid "Invalid page number." -msgstr "" +msgstr "หมายเลขหน้าไม่ถูกต้อง" #: pretix/static/pretixcontrol/js/ui/main.js:1000 msgid "Use a different name internally" -msgstr "" +msgstr "ใช้ชื่ออื่นสำหรับเรียกภายใน" #: pretix/static/pretixcontrol/js/ui/main.js:1040 msgid "Click to close" -msgstr "" +msgstr "คลิกเพื่อปิด" #: pretix/static/pretixcontrol/js/ui/main.js:1121 msgid "You have unsaved changes!" -msgstr "" +msgstr "คุณมีสิ่งที่ยังไม่ได้บันทึกการเปลี่ยนแปลง!" #: pretix/static/pretixcontrol/js/ui/orderchange.js:25 msgid "Calculating default price…" -msgstr "" +msgstr "กำลังคำนวณราคาเริ่มต้น…" #: pretix/static/pretixcontrol/js/ui/plugins.js:69 msgid "No results" -msgstr "" +msgstr "ไม่พบผลลัพธ์" #: pretix/static/pretixcontrol/js/ui/question.js:41 msgid "Others" -msgstr "" +msgstr "อื่น ๆ" #: pretix/static/pretixcontrol/js/ui/question.js:81 msgid "Count" -msgstr "" +msgstr "จำนวน" #: pretix/static/pretixcontrol/js/ui/subevent.js:112 msgid "(one more date)" @@ -725,12 +727,12 @@ msgstr "" #: pretix/static/pretixpresale/js/ui/cart.js:49 msgid "Cart expired" -msgstr "" +msgstr "ตะกร้าสินค้าหมดเวลาแล้ว" #: pretix/static/pretixpresale/js/ui/cart.js:58 #: pretix/static/pretixpresale/js/ui/cart.js:84 msgid "Your cart is about to expire." -msgstr "" +msgstr "ตะกร้าสินค้าของคุณกำลังจะหมดเวลา" #: pretix/static/pretixpresale/js/ui/cart.js:62 msgid "The items in your cart are reserved for you for one minute." @@ -740,17 +742,19 @@ msgstr[1] "" #: pretix/static/pretixpresale/js/ui/cart.js:83 msgid "Your cart has expired." -msgstr "" +msgstr "ตะกร้าสินค้าของคุณหมดเวลาแล้ว" #: pretix/static/pretixpresale/js/ui/cart.js:86 msgid "" "The items in your cart are no longer reserved for you. You can still " "complete your order as long as they're available." msgstr "" +"รายการในตะกร้าไม่ได้ถูกสำรองไว้ให้คุณแล้ว แต่คุณยังสามารถสั่งซื้อให้เสร็จสมบูรณ์ได้ตราบเท่าที่สินค้ายัง" +"มีอยู่" #: pretix/static/pretixpresale/js/ui/cart.js:87 msgid "Do you want to renew the reservation period?" -msgstr "" +msgstr "คุณต้องการต่อเวลาการสำรองที่นั่ง/สินค้าหรือไม่?" #: pretix/static/pretixpresale/js/ui/cart.js:90 msgid "Renew reservation" @@ -758,23 +762,23 @@ msgstr "ต่อเวลาการสำรอง" #: pretix/static/pretixpresale/js/ui/main.js:194 msgid "The organizer keeps %(currency)s %(amount)s" -msgstr "" +msgstr "ผู้จัดงานจะเก็บเงินจำนวน %(currency)s %(amount)s" #: pretix/static/pretixpresale/js/ui/main.js:202 msgid "You get %(currency)s %(amount)s back" -msgstr "" +msgstr "คุณจะได้รับเงินคืนจำนวน %(currency)s %(amount)s" #: pretix/static/pretixpresale/js/ui/main.js:218 msgid "Please enter the amount the organizer can keep." -msgstr "" +msgstr "โปรดระบุจำนวนเงินที่ผู้จัดงานสามารถเก็บไว้ได้" #: pretix/static/pretixpresale/js/ui/main.js:577 msgid "Your local time:" -msgstr "" +msgstr "เวลาท้องถิ่นของคุณ:" #: pretix/static/pretixpresale/js/walletdetection.js:39 msgid "Google Pay" -msgstr "" +msgstr "Google Pay" #: pretix/static/pretixpresale/js/widget/widget.js:16 msgctxt "widget" @@ -784,155 +788,155 @@ msgstr "จำนวน" #: pretix/static/pretixpresale/js/widget/widget.js:17 msgctxt "widget" msgid "Decrease quantity" -msgstr "" +msgstr "ลดจำนวน" #: pretix/static/pretixpresale/js/widget/widget.js:18 msgctxt "widget" msgid "Increase quantity" -msgstr "" +msgstr "เพิ่มจำนวน" #: pretix/static/pretixpresale/js/widget/widget.js:19 msgctxt "widget" msgid "Filter events by" -msgstr "" +msgstr "กรองกิจกรรมตาม" #: pretix/static/pretixpresale/js/widget/widget.js:20 msgctxt "widget" msgid "Filter" -msgstr "" +msgstr "กรอง" #: pretix/static/pretixpresale/js/widget/widget.js:21 msgctxt "widget" msgid "Price" -msgstr "" +msgstr "ราคา" #: pretix/static/pretixpresale/js/widget/widget.js:22 #, javascript-format msgctxt "widget" msgid "Original price: %s" -msgstr "" +msgstr "ราคาเดิม: %s" #: pretix/static/pretixpresale/js/widget/widget.js:23 #, javascript-format msgctxt "widget" msgid "New price: %s" -msgstr "" +msgstr "ราคาใหม่: %s" #: pretix/static/pretixpresale/js/widget/widget.js:24 msgctxt "widget" msgid "Select" -msgstr "" +msgstr "เลือก" #: pretix/static/pretixpresale/js/widget/widget.js:25 #, javascript-format msgctxt "widget" msgid "Select %s" -msgstr "" +msgstr "เลือก %s" #: pretix/static/pretixpresale/js/widget/widget.js:26 #, javascript-format msgctxt "widget" msgid "Select variant %s" -msgstr "" +msgstr "เลือกรูปแบบ %s" #: pretix/static/pretixpresale/js/widget/widget.js:27 msgctxt "widget" msgid "Sold out" -msgstr "" +msgstr "ขายหมดแล้ว" #: pretix/static/pretixpresale/js/widget/widget.js:28 msgctxt "widget" msgid "Buy" -msgstr "" +msgstr "ซื้อ" #: pretix/static/pretixpresale/js/widget/widget.js:29 msgctxt "widget" msgid "Register" -msgstr "" +msgstr "ลงทะเบียน" #: pretix/static/pretixpresale/js/widget/widget.js:30 msgctxt "widget" msgid "Reserved" -msgstr "" +msgstr "สำรองไว้แล้ว" #: pretix/static/pretixpresale/js/widget/widget.js:31 msgctxt "widget" msgid "FREE" -msgstr "" +msgstr "ฟรี" #: pretix/static/pretixpresale/js/widget/widget.js:32 msgctxt "widget" msgid "from %(currency)s %(price)s" -msgstr "" +msgstr "เริ่มต้นที่ %(currency)s %(price)s" #: pretix/static/pretixpresale/js/widget/widget.js:33 #, javascript-format msgctxt "widget" msgid "Image of %s" -msgstr "" +msgstr "รูปภาพของ %s" #: pretix/static/pretixpresale/js/widget/widget.js:34 msgctxt "widget" msgid "incl. %(rate)s% %(taxname)s" -msgstr "" +msgstr "รวม %(taxname)s %(rate)s%" #: pretix/static/pretixpresale/js/widget/widget.js:35 msgctxt "widget" msgid "plus %(rate)s% %(taxname)s" -msgstr "" +msgstr "บวก %(taxname)s %(rate)s% เพิ่ม" #: pretix/static/pretixpresale/js/widget/widget.js:36 msgctxt "widget" msgid "incl. taxes" -msgstr "" +msgstr "รวมภาษีแล้ว" #: pretix/static/pretixpresale/js/widget/widget.js:37 msgctxt "widget" msgid "plus taxes" -msgstr "" +msgstr "ยังไม่รวมภาษี" #: pretix/static/pretixpresale/js/widget/widget.js:38 #, javascript-format msgctxt "widget" msgid "currently available: %s" -msgstr "" +msgstr "จำนวนที่ว่างอยู่: %s" #: pretix/static/pretixpresale/js/widget/widget.js:39 msgctxt "widget" msgid "Only available with a voucher" -msgstr "" +msgstr "สำหรับผู้ที่มีเวาเชอร์เท่านั้น" #: pretix/static/pretixpresale/js/widget/widget.js:40 #: pretix/static/pretixpresale/js/widget/widget.js:43 msgctxt "widget" msgid "Not yet available" -msgstr "" +msgstr "ยังไม่เปิดให้จอง/ซื้อ" #: pretix/static/pretixpresale/js/widget/widget.js:41 msgctxt "widget" msgid "Not available anymore" -msgstr "" +msgstr "ไม่สามารถจอง/ซื้อได้แล้ว" #: pretix/static/pretixpresale/js/widget/widget.js:42 msgctxt "widget" msgid "Currently not available" -msgstr "" +msgstr "ขณะนี้ยังไม่เปิดให้จอง/ซื้อ" #: pretix/static/pretixpresale/js/widget/widget.js:44 #, javascript-format msgctxt "widget" msgid "minimum amount to order: %s" -msgstr "" +msgstr "จำนวนสั่งซื้อขั้นต่ำ: %s" #: pretix/static/pretixpresale/js/widget/widget.js:45 msgctxt "widget" msgid "Close ticket shop" -msgstr "" +msgstr "ปิดหน้าร้านจำหน่ายตั๋ว" #: pretix/static/pretixpresale/js/widget/widget.js:46 msgctxt "widget" msgid "The ticket shop could not be loaded." -msgstr "" +msgstr "ไม่สามารถโหลดหน้าร้านจำหน่ายตั๋วได้" #: pretix/static/pretixpresale/js/widget/widget.js:47 msgctxt "widget" @@ -940,21 +944,22 @@ msgid "" "There are currently a lot of users in this ticket shop. Please open the shop " "in a new tab to continue." msgstr "" +"ขณะนี้มีผู้ใช้งานหน้าร้านจำนวนมาก โปรดเปิดหน้าร้านในแท็บใหม่เพื่อดำเนินการต่อ" #: pretix/static/pretixpresale/js/widget/widget.js:49 msgctxt "widget" msgid "Open ticket shop" -msgstr "" +msgstr "เปิดหน้าร้านจำหน่ายตั๋ว" #: pretix/static/pretixpresale/js/widget/widget.js:50 msgctxt "widget" msgid "Checkout" -msgstr "" +msgstr "ชำระเงิน" #: pretix/static/pretixpresale/js/widget/widget.js:51 msgctxt "widget" msgid "The cart could not be created. Please try again later" -msgstr "" +msgstr "ไม่สามารถสร้างตะกร้าสินค้าได้ โปรดลองอีกครั้งในภายหลัง" #: pretix/static/pretixpresale/js/widget/widget.js:52 msgctxt "widget" @@ -962,6 +967,8 @@ msgid "" "We could not create your cart, since there are currently too many users in " "this ticket shop. Please click \"Continue\" to retry in a new tab." msgstr "" +"ไม่สามารถสร้างตะกร้าสินค้าได้ เนื่องจากมีผู้ใช้งานหน้าร้านจำนวนมาก โปรดคลิก \"ดำเนินการต่อ\" เ" +"พื่อลองใหม่อีกครั้งในแท็บใหม่" #: pretix/static/pretixpresale/js/widget/widget.js:54 msgctxt "widget" @@ -974,26 +981,28 @@ msgid "" "You currently have an active cart for this event. If you select more " "products, they will be added to your existing cart." msgstr "" +"คุณมีรายการในตะกร้าสำหรับกิจกรรมนี้อยู่แล้ว หากคุณเลือกสินค้าเพิ่ม ระบบจะนำไปรวมในตะกร้าเดิมของ" +"คุณ" #: pretix/static/pretixpresale/js/widget/widget.js:57 msgctxt "widget" msgid "Resume checkout" -msgstr "" +msgstr "ดำเนินการชำระเงินต่อ" #: pretix/static/pretixpresale/js/widget/widget.js:58 msgctxt "widget" msgid "Redeem a voucher" -msgstr "" +msgstr "แลกใช้เวาเชอร์" #: pretix/static/pretixpresale/js/widget/widget.js:59 msgctxt "widget" msgid "Redeem" -msgstr "" +msgstr "แลกใช้" #: pretix/static/pretixpresale/js/widget/widget.js:60 msgctxt "widget" msgid "Voucher code" -msgstr "" +msgstr "รหัสเวาเชอร์" #: pretix/static/pretixpresale/js/widget/widget.js:61 msgctxt "widget" @@ -1003,67 +1012,67 @@ msgstr "ปิด" #: pretix/static/pretixpresale/js/widget/widget.js:62 msgctxt "widget" msgid "Close checkout" -msgstr "" +msgstr "ปิดหน้าชำระเงิน" #: pretix/static/pretixpresale/js/widget/widget.js:63 msgctxt "widget" msgid "You cannot cancel this operation. Please wait for loading to finish." -msgstr "" +msgstr "ไม่สามารถยกเลิกรายการนี้ได้ โปรดรอจนกว่าจะโหลดเสร็จสมบูรณ์" #: pretix/static/pretixpresale/js/widget/widget.js:64 msgctxt "widget" msgid "Continue" -msgstr "" +msgstr "ดำเนินการต่อ" #: pretix/static/pretixpresale/js/widget/widget.js:65 msgctxt "widget" msgid "Show variants" -msgstr "" +msgstr "แสดงรูปแบบเพิ่มเติม" #: pretix/static/pretixpresale/js/widget/widget.js:66 msgctxt "widget" msgid "Hide variants" -msgstr "" +msgstr "ซ่อนรูปแบบ" #: pretix/static/pretixpresale/js/widget/widget.js:67 msgctxt "widget" msgid "Choose a different event" -msgstr "" +msgstr "เลือกกิจกรรมอื่น" #: pretix/static/pretixpresale/js/widget/widget.js:68 msgctxt "widget" msgid "Choose a different date" -msgstr "" +msgstr "เลือกวันที่อื่น" #: pretix/static/pretixpresale/js/widget/widget.js:69 msgctxt "widget" msgid "Back" -msgstr "" +msgstr "ย้อนกลับ" #: pretix/static/pretixpresale/js/widget/widget.js:70 msgctxt "widget" msgid "Next month" -msgstr "" +msgstr "เดือนถัดไป" #: pretix/static/pretixpresale/js/widget/widget.js:71 msgctxt "widget" msgid "Previous month" -msgstr "" +msgstr "เดือนก่อนหน้า" #: pretix/static/pretixpresale/js/widget/widget.js:72 msgctxt "widget" msgid "Next week" -msgstr "" +msgstr "สัปดาห์ถัดไป" #: pretix/static/pretixpresale/js/widget/widget.js:73 msgctxt "widget" msgid "Previous week" -msgstr "" +msgstr "สัปดาห์ก่อนหน้า" #: pretix/static/pretixpresale/js/widget/widget.js:74 msgctxt "widget" msgid "Open seat selection" -msgstr "" +msgstr "เลือกที่นั่ง" #: pretix/static/pretixpresale/js/widget/widget.js:75 msgctxt "widget" @@ -1072,6 +1081,8 @@ msgid "" "add yourself to the waiting list. We will then notify if seats are available " "again." msgstr "" +"ขณะนี้ตั๋วบางประเภทหรือทุกประเภทขายหมดแล้ว หากคุณต้องการ คุณสามารถลงชื่อในรายชื่อรอ " +"(Waiting List) ได้ เราจะแจ้งให้คุณทราบทันทีหากมีที่นั่งว่างอีกครั้ง" #: pretix/static/pretixpresale/js/widget/widget.js:76 msgctxt "widget" From 67434bbe08c0336360e722eb92c530c10beaa867 Mon Sep 17 00:00:00 2001 From: Ruud Hendrickx Date: Thu, 29 Jan 2026 14:18:51 +0100 Subject: [PATCH 006/108] Translations: Update Dutch (informal) (nl_Informal) Currently translated at 76.7% (4766 of 6207 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 | 199 +++++++++++++++--- 1 file changed, 174 insertions(+), 25 deletions(-) diff --git a/src/pretix/locale/nl_Informal/LC_MESSAGES/django.po b/src/pretix/locale/nl_Informal/LC_MESSAGES/django.po index 47262054e6..19e0643f64 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-01-26 13:19+0000\n" -"PO-Revision-Date: 2026-01-29 13:00+0000\n" +"PO-Revision-Date: 2026-01-29 13:19+0000\n" "Last-Translator: Ruud Hendrickx \n" "Language-Team: Dutch (informal) \n" @@ -23776,6 +23776,11 @@ msgid "" "happen at different times than your event in general. This will not affect " "access control, but will affect calendar invites and ticket output." msgstr "" +"Met programmatijden kun je specifieke datums en tijden voor dit product " +"instellen. Dit is handig als dit product toegang biedt tot delen van je " +"evenement die op andere tijdstippen plaatsvinden dan je evenement in het " +"algemeen. Dit heeft geen invloed op de toegangscontrole, maar wel op agenda-" +"uitnodigingen en ticketuitvoer." #: pretix/control/templates/pretixcontrol/item/include_program_times.html:25 #: pretix/control/templates/pretixcontrol/item/include_program_times.html:51 @@ -23851,7 +23856,7 @@ msgstr "minuten" #: pretix/control/templates/pretixcontrol/item/index.html:229 msgid "hours" -msgstr "" +msgstr "uren" #: pretix/control/templates/pretixcontrol/item/index.html:230 #: pretix/control/templates/pretixcontrol/item/index.html:248 @@ -23882,6 +23887,11 @@ msgid "" "if you enter \"1 day\", the ticket will be valid until the end of the day it " "starts on." msgstr "" +"Als je een duur in dagen, maanden of jaren selecteert, eindigt de geldigheid " +"altijd aan het einde van een volledige dag (middernacht), plus het aantal " +"minuten en uren dat hierboven is geselecteerd. De startdatum wordt " +"meegenomen in de berekening, dus als je \"1 dag\" invoert, is het ticket " +"geldig tot het einde van de dag waarop het begint." #: pretix/control/templates/pretixcontrol/item/index.html:254 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:619 @@ -23923,7 +23933,7 @@ msgstr "Categorienaam" #: pretix/control/templates/pretixcontrol/items/index.html:161 #: pretix/control/templates/pretixcontrol/organizers/properties.html:54 msgid "Move up" -msgstr "" +msgstr "Omhoog" #: pretix/control/templates/pretixcontrol/items/categories.html:53 #: pretix/control/templates/pretixcontrol/items/discounts.html:142 @@ -23942,6 +23952,8 @@ msgid "" "Click and drag this button to reorder. Double click to show buttons for " "reordering." msgstr "" +"Klik en sleep deze knop om de volgorde te wijzigen. Dubbelklik om de knoppen " +"voor het wijzigen van de volgorde weer te geven." #: pretix/control/templates/pretixcontrol/items/category.html:23 msgid "" @@ -23949,6 +23961,9 @@ msgid "" "feature and are not suitable for strictly ensuring that products are only " "available in certain combinations." msgstr "" +"Houd er rekening mee dat cross-selling-categorieën bedoeld zijn als " +"marketingfunctie en niet geschikt zijn om strikt te garanderen dat producten " +"alleen in bepaalde combinaties beschikbaar zijn." #: pretix/control/templates/pretixcontrol/items/category.html:39 msgid "Category history" @@ -24057,6 +24072,10 @@ msgid "" "can create group discounts like \"get 20%% off if you buy 3 or more " "tickets\" or \"buy 2 tickets, get 1 free\"." msgstr "" +"Met automatische kortingen kun je op basis van bepaalde voorwaarden " +"automatisch een korting toepassen op aankopen van je klanten. Je kunt " +"bijvoorbeeld groepskortingen instellen, zoals '20%% korting bij aankoop van " +"3 of meer tickets' of 'koop 2 tickets, krijg er 1 gratis'." #: pretix/control/templates/pretixcontrol/items/discounts.html:15 msgid "" @@ -24066,6 +24085,12 @@ msgid "" "purchases (\"buy a package of 10 you can turn into individual tickets " "later\"), you can use customer accounts and memberships instead." msgstr "" +"Automatische kortingen zijn beschikbaar voor alle klanten, zolang ze actief " +"zijn. Als je speciale prijzen alleen aan bepaalde klanten wilt aanbieden, " +"kun je in plaats daarvan vouchers gebruiken. Als je kortingen wilt aanbieden " +"op meerdere aankopen (\"koop een pakket van 10 dat je later kunt omzetten in " +"individuele tickets\"), kun je in plaats daarvan klantaccounts en " +"lidmaatschappen gebruiken." #: pretix/control/templates/pretixcontrol/items/discounts.html:23 msgid "" @@ -24073,6 +24098,9 @@ msgid "" "are not applied if an existing order is changed through any of the available " "options." msgstr "" +"Kortingen worden alleen automatisch toegepast bij een eerste aankoop. Ze " +"worden niet toegepast als een bestaande bestelling wordt gewijzigd via een " +"van de beschikbare opties." #: pretix/control/templates/pretixcontrol/items/discounts.html:29 msgid "" @@ -24112,7 +24140,7 @@ msgstr "Staat" #: pretix/control/templates/pretixcontrol/items/discounts.html:126 msgid "Applies to:" -msgstr "" +msgstr "Van toepassing op:" #: pretix/control/templates/pretixcontrol/items/fragment_quota_availability.html:3 msgid "Closed" @@ -24181,7 +24209,7 @@ msgstr "Is een toegangsbewijs" #: pretix/control/templates/pretixcontrol/items/index.html:104 msgid "Admission ticket without personalization" -msgstr "" +msgstr "Toegangsticket zonder personalisatie" #: pretix/control/templates/pretixcontrol/items/index.html:112 msgid "Product with variations" @@ -24190,7 +24218,7 @@ msgstr "Product met varianten" #: pretix/control/templates/pretixcontrol/items/index.html:118 msgctxt "subevent" msgid "Product assigned to seating plan for one or more dates" -msgstr "" +msgstr "Product toegewezen aan zitplan voor één of meerdere data" #: pretix/control/templates/pretixcontrol/items/index.html:118 #, fuzzy @@ -24304,6 +24332,8 @@ msgid "" "If you want to keep the answers, edit the question " "and set it to hidden." msgstr "" +"Als je de antwoorden wilt bewaren, bewerk dan de vraag en stel deze in op verborgen." #: pretix/control/templates/pretixcontrol/items/question_delete.html:25 #, fuzzy @@ -24335,6 +24365,9 @@ msgid "" "statistical data on customers who previously selected this option, and when " "such customers edit their answers, they need to select a different option." msgstr "" +"Als je een antwoordoptie verwijdert, kun je geen statistische gegevens meer " +"zien over klanten die deze optie eerder hebben geselecteerd. Wanneer deze " +"klanten hun antwoorden wijzigen, moeten ze een andere optie selecteren." #: pretix/control/templates/pretixcontrol/items/question_edit.html:72 #, python-format @@ -24524,6 +24557,10 @@ msgid "" "including most plugins. Even a low value might be enough if you only use " "specific features. Untranslated texts will show up in English." msgstr "" +"Dit percentage van de teksten is vertaald in alle onderdelen van het " +"systeem, inclusief de meeste plug-ins. Zelfs een lage waarde kan voldoende " +"zijn als je alleen specifieke functies gebruikt. Niet-vertaalde teksten " +"worden in het Engels weergegeven." #: pretix/control/templates/pretixcontrol/oauth/app_delete.html:4 #: pretix/control/templates/pretixcontrol/oauth/app_delete.html:6 @@ -24675,6 +24712,9 @@ msgid "" "%(fee)s for this order, but for a cancellation performed by you, you need to " "set the cancellation fee here:" msgstr "" +"De geconfigureerde annuleringskosten voor een annulering door de klant zelf " +"bedragen %(fee)s voor deze bestelling. Voor een annulering door jou moet je " +"hier de annuleringskosten instellen:" #: pretix/control/templates/pretixcontrol/order/cancel.html:51 #: pretix/presale/templates/pretixpresale/event/order_cancel.html:220 @@ -24808,6 +24848,8 @@ msgid "" "If you change this, it might cause a new ticket QR code to be generated and " "the old one to be invalidated." msgstr "" +"Als je dit wijzigt, kan dit ertoe leiden dat er een nieuwe QR-code voor het " +"ticket wordt gegenereerd en dat de oude ongeldig wordt." #: pretix/control/templates/pretixcontrol/order/change.html:157 msgid "" @@ -24815,6 +24857,9 @@ msgid "" "will not affect the membership. Memberships can be managed in the customer " "account." msgstr "" +"De verkoop van deze positie heeft een lidmaatschap gecreëerd. Het wijzigen " +"van het product heeft geen invloed op het lidmaatschap. Lidmaatschappen " +"kunnen worden beheerd in het klantenaccount." #: pretix/control/templates/pretixcontrol/order/change.html:220 #, fuzzy @@ -24824,7 +24869,7 @@ msgstr "Kaartjeslay-out" #: pretix/control/templates/pretixcontrol/order/change.html:226 msgid "Blocked due to external constraints" -msgstr "" +msgstr "Geblokkeerd vanwege externe beperkingen" #: pretix/control/templates/pretixcontrol/order/change.html:228 #, fuzzy @@ -24856,11 +24901,11 @@ msgstr "Deuren open: %(datetime)s" #: pretix/control/templates/pretixcontrol/order/change.html:260 msgid "Unconstrained" -msgstr "" +msgstr "Onbeperkt" #: pretix/control/templates/pretixcontrol/order/change.html:266 msgid "–" -msgstr "" +msgstr "–" #: pretix/control/templates/pretixcontrol/order/change.html:272 msgid "" @@ -24868,6 +24913,9 @@ msgid "" "ticket here will not affect the membership. Memberships can be managed in " "the customer account." msgstr "" +"De verkoop van deze positie heeft een lidmaatschap gecreëerd. Het wijzigen " +"van de geldigheid van het ticket heeft geen invloed op het lidmaatschap. " +"Lidmaatschappen kunnen worden beheerd in het klantenaccount." #: pretix/control/templates/pretixcontrol/order/change.html:296 #, fuzzy @@ -25065,6 +25113,9 @@ msgid "" "can choose to refund the money below or reactivate it by extending the " "payment deadline." msgstr "" +"Deze bestelling is verlopen, ook al is er een bedrag van %(amount)s betaald. " +"Je kunt ervoor kiezen om het geld hieronder terug te storten of de " +"bestelling te reactiveren door de betalingstermijn te verlengen." #: pretix/control/templates/pretixcontrol/order/index.html:143 msgid "Cancellation request" @@ -25093,11 +25144,15 @@ msgid "" "This order will not expire automatically since it is already confirmed and " "can be used." msgstr "" +"Deze bestelling verloopt niet automatisch, aangezien deze al is bevestigd en " +"kan worden gebruikt." #: pretix/control/templates/pretixcontrol/order/index.html:211 msgid "" "This order will not expire automatically as it has an open cancellation fee." msgstr "" +"Deze bestelling verloopt niet automatisch, omdat er annuleringskosten aan " +"verbonden zijn." #: pretix/control/templates/pretixcontrol/order/index.html:230 msgid "Contact email" @@ -25116,6 +25171,8 @@ msgid "" "We don't know if this invoice was emailed to the customer since it was " "created before our system tracked this information" msgstr "" +"We weten niet of deze factuur naar de klant is gemaild, omdat deze is " +"aangemaakt voordat ons systeem deze informatie bijhield" #: pretix/control/templates/pretixcontrol/order/index.html:283 #, fuzzy @@ -25257,6 +25314,9 @@ msgid "" "this product was part of the discount calculation for a different product in " "this order." msgstr "" +"De prijs van dit product is verlaagd vanwege een automatische korting, of " +"dit product maakte deel uit van de kortingsberekening voor een ander product " +"in deze bestelling." #: pretix/control/templates/pretixcontrol/order/index.html:496 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:103 @@ -25718,7 +25778,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/order/transactions.html:73 #, python-format msgid "incl. %(amount)s rounding correction" -msgstr "" +msgstr "incl. %(amount)s afrondingscorrectie" #: pretix/control/templates/pretixcontrol/orders/bulk_action.html:5 #: pretix/control/templates/pretixcontrol/orders/bulk_action.html:7 @@ -25734,6 +25794,9 @@ msgid "" "%(allowed)s of the selected %(total)s " "orders." msgstr "" +"De bewerking %(label)s kan worden toegepast op %" +"(allowed)s van de geselecteerde %(total)s " +"bestellingen." #: pretix/control/templates/pretixcontrol/orders/bulk_action.html:71 #, fuzzy @@ -25848,30 +25911,34 @@ msgstr "Stuur de volgende code mee als je contact met ons opneemt:" #, python-format msgid "%(count)s order will be canceled fully" msgid_plural "%(count)s orders will be canceled fully" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)s bestelling wordt volledig geannuleerd" +msgstr[1] "%(count)s bestellingen worden volledig geannuleerd" #: pretix/control/templates/pretixcontrol/orders/cancel_confirm.html:26 #, python-format msgid "%(count)s order will be canceled partially" msgid_plural "%(count)s orders will be canceled partially" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)s bestelling wordt gedeeltelijk geannuleerd" +msgstr[1] "%(count)s bestellingen worden gedeeltelijk geannuleerd" #: pretix/control/templates/pretixcontrol/orders/cancel_confirm.html:36 #, python-format msgid "%(amount)s are eligible for refunds." -msgstr "" +msgstr "%(amount)s komt in aanmerking voor terugbetaling." #: pretix/control/templates/pretixcontrol/orders/cancel_confirm.html:40 msgid "" "The system will attempt to refund the money automatically if supported by " "the payment method." msgstr "" +"Het systeem zal automatisch proberen het geld terug te storten als dit door " +"de betaalmethode wordt ondersteund." #: pretix/control/templates/pretixcontrol/orders/cancel_confirm.html:42 msgid "The system will create manual refunds that you need to execute." msgstr "" +"Het systeem zal handmatige terugbetalingen aanmaken die je zelf moet " +"uitvoeren." #: pretix/control/templates/pretixcontrol/orders/cancel_confirm.html:44 #, fuzzy @@ -25887,13 +25954,15 @@ msgstr "Stuur informatie via e-mail" #: pretix/control/templates/pretixcontrol/orders/cancel_confirm.html:57 msgid "Inform all waiting list contacts via email." -msgstr "" +msgstr "Informeer alle personen op de wachtlijst via e-mail." #: pretix/control/templates/pretixcontrol/orders/cancel_confirm.html:62 msgid "" "These numbers are estimates and may change if the data in your event " "recently changed." msgstr "" +"Deze cijfers zijn schattingen en kunnen veranderen als de gegevens in uw " +"evenement recentelijk zijn gewijzigd." #: pretix/control/templates/pretixcontrol/orders/cancel_confirm.html:76 #, fuzzy, python-format @@ -25949,12 +26018,12 @@ msgstr "Terugbetalingen exporteren" #: pretix/control/templates/pretixcontrol/orders/export.html:42 #: pretix/control/templates/pretixcontrol/organizers/export.html:42 msgid "Disabled due to multiple failures" -msgstr "" +msgstr "Uitgeschakeld vanwege meerdere mislukkingen" #: pretix/control/templates/pretixcontrol/orders/export.html:47 #: pretix/control/templates/pretixcontrol/organizers/export.html:47 msgid "Failed recently" -msgstr "" +msgstr "Onlangs mislukt" #: pretix/control/templates/pretixcontrol/orders/export.html:64 #, fuzzy @@ -25968,6 +26037,8 @@ msgid "" "Run export and send via email now. This will not change the next scheduled " "execution." msgstr "" +"Voer nu de export uit en verstuur deze via e-mail. Dit heeft geen invloed op " +"de volgende geplande uitvoering." #: pretix/control/templates/pretixcontrol/orders/export.html:76 #: pretix/control/templates/pretixcontrol/organizers/export.html:76 @@ -26022,6 +26093,8 @@ msgid "" "Your generated Excel file will have multiple sheets. Some " "data you are looking for might not be on the first sheet." msgstr "" +"Het gegenereerde Excel-bestand bevat meerdere werkbladen. " +"Sommige gegevens die je zoekt, staan mogelijk niet op het eerste werkblad." #: pretix/control/templates/pretixcontrol/orders/export_form.html:46 #: pretix/control/templates/pretixcontrol/organizers/export_form.html:47 @@ -26110,6 +26183,8 @@ msgstr "Nooit" msgid "" "Every time your schedule is executed, the report will be sent via email." msgstr "" +"Elke keer dat je planning wordt uitgevoerd, wordt het rapport per e-mail " +"verzonden." #: pretix/control/templates/pretixcontrol/orders/fragment_export_schedule_form.html:111 #, fuzzy @@ -26123,12 +26198,17 @@ msgid "" "exports that output e.g. statistical data, not for reports that include " "sensitive personal data." msgstr "" +"E-mail is geen sterk versleuteld medium. We raden aan om dit alleen te " +"gebruiken voor exportbestanden die bijvoorbeeld statistische gegevens " +"bevatten, en niet voor rapporten met gevoelige persoonsgegevens." #: pretix/control/templates/pretixcontrol/orders/fragment_export_schedule_form.html:117 msgid "" "Email is not made for large files. If your export ends up to be larger than " "20 megabytes, it will not be sent." msgstr "" +"E-mail is niet geschikt voor grote bestanden. Als je export groter is dan 20 " +"megabyte, wordt deze niet verzonden." #: pretix/control/templates/pretixcontrol/orders/fragment_export_schedule_form.html:122 msgid "Owner" @@ -26139,22 +26219,28 @@ msgid "" "The export will be performed using the owner's permission level, i.e. if the " "owner loses access to the data, the report will stop." msgstr "" +"De export wordt uitgevoerd met het machtigingsniveau van de eigenaar, d.w.z. " +"als de eigenaar de toegang tot de gegevens verliest, wordt het rapport " +"gestopt." #: 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 "De eigenaar ontvangt het resultaat en eventuele foutmeldingen." #: 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 "" +"De extra ontvangers die je hieronder toevoegt, ontvangen alleen een e-mail " +"als het rapport succesvol is verzonden." #: pretix/control/templates/pretixcontrol/orders/fragment_export_schedule_form.html:131 msgid "" "All recipients of the export will be able to see who the owner of the report " "is." msgstr "" +"Alle ontvangers van de export kunnen zien wie de eigenaar van het rapport is." #: pretix/control/templates/pretixcontrol/orders/fragment_order_status.html:13 #, fuzzy @@ -26349,6 +26435,8 @@ msgid "" "This sum includes canceled orders. For your ticket revenue, look at the " "\"order overview\"." msgstr "" +"Dit bedrag is inclusief geannuleerde bestellingen. Voor je ticketinkomsten " +"kun je het 'besteloverzicht' raadplegen." #: pretix/control/templates/pretixcontrol/orders/index.html:290 #, fuzzy @@ -26367,7 +26455,7 @@ msgstr "Betaal volledige betaalde bedrag terug" #: pretix/control/templates/pretixcontrol/orders/index.html:319 #: pretix/control/views/orders.py:347 msgid "Mark as expired if overdue" -msgstr "" +msgstr "Markeer als verlopen indien achterstallig" #: pretix/control/templates/pretixcontrol/orders/index.html:327 #, fuzzy @@ -26401,6 +26489,11 @@ msgid "" "be removed in the future. Use the \"Accounting report\" in the export " "section instead." msgstr "" +"Het filteren van dit rapport op datum wordt niet aanbevolen, omdat dit tot " +"misleidende informatie kan leiden. Dit rapport geeft namelijk alleen de " +"huidige status van een bestelling weer, en geen eerdere wijzigingen in de " +"bestelling. Dit datumfilter wordt mogelijk in de toekomst verwijderd. " +"Gebruik in plaats daarvan het 'Boekhoudrapport' in het exportgedeelte." #: pretix/control/templates/pretixcontrol/orders/overview.html:66 msgctxt "subevent" @@ -26480,6 +26573,10 @@ msgid "" "through. This is useful to unlock new revenue streams or to separate revenue " "between different sources for reporting purchases." msgstr "" +"Op deze pagina kun je de verschillende kanalen beheren waarlangs je tickets " +"kunnen worden verkocht. Dit is handig om nieuwe inkomstenbronnen aan te " +"boren of om inkomsten uit verschillende bronnen te scheiden voor het " +"rapporteren van aankopen." #: pretix/control/templates/pretixcontrol/organizers/channels.html:15 #, fuzzy @@ -26511,6 +26608,7 @@ msgstr "Verstuur wachtwoordherstelmail" #: pretix/control/templates/pretixcontrol/organizers/customer.html:80 msgid "This includes all paid orders by this customer across all your events." msgstr "" +"Dit omvat alle betaalde bestellingen van deze klant voor al je evenementen." #: pretix/control/templates/pretixcontrol/organizers/customer.html:81 #, fuzzy @@ -26586,6 +26684,8 @@ msgid "" "The customer will no longer be able to log in and will lose access to any " "membership benefits." msgstr "" +"De klant kan niet langer inloggen en verliest alle voordelen van het " +"lidmaatschap." #: pretix/control/templates/pretixcontrol/organizers/customer_anonymize.html:29 #, fuzzy @@ -26848,6 +26948,8 @@ msgstr "Organisatorpagina" #: pretix/control/templates/pretixcontrol/organizers/edit.html:68 msgid "The links you configure here will also be shown on all of your events." msgstr "" +"De links die je hier configureert, worden ook bij al je evenementen " +"weergegeven." #: pretix/control/templates/pretixcontrol/organizers/edit.html:143 msgid "" @@ -26880,6 +26982,10 @@ msgid "" "security. Therefore, cookies set by pretix itself do not require consent in " "all jurisdictions that we are aware of." msgstr "" +"pretix zelf plaatst alleen cookies die nodig zijn om de door de gebruiker " +"gevraagde dienst te leveren of om een passend beveiligingsniveau te " +"handhaven. Daarom is voor cookies die door pretix zelf worden geplaatst in " +"alle rechtsgebieden waarvan wij op de hoogte zijn geen toestemming vereist." #: pretix/control/templates/pretixcontrol/organizers/edit.html:181 msgid "" @@ -26887,6 +26993,10 @@ msgid "" "affect if you use plugins that require additional cookies " "and participate in our cookie consent mechanism." msgstr "" +"Daarom hebben de instellingen op deze pagina alleen effect " +"als je plug-ins gebruikt die aanvullende cookies vereisen " +"en deelneemt aan ons mechanisme voor toestemming voor " +"cookies." #: pretix/control/templates/pretixcontrol/organizers/edit.html:188 msgid "" @@ -26916,16 +27026,22 @@ msgid "" "template in our documentation." msgstr "" +"In sommige rechtsgebieden, waaronder de Europese Unie, ben je verplicht om " +"informatie over de toegankelijkheid van je ticketwinkel te publiceren. Je " +"vindt een sjabloon in onze documentatie." #: pretix/control/templates/pretixcontrol/organizers/edit.html:217 msgid "" "Instead of an URL, you can also configure a text that will be shown within " "pretix. This will be ignored if a URL is configured." msgstr "" +"In plaats van een URL kun je ook een tekst configureren die binnen pretix " +"wordt weergegeven. Deze wordt genegeerd als er een URL is geconfigureerd." #: pretix/control/templates/pretixcontrol/organizers/edit.html:229 msgid "Barcode media" -msgstr "" +msgstr "Streepjescode-media" #: pretix/control/templates/pretixcontrol/organizers/edit.html:233 msgid "" @@ -26935,33 +27051,47 @@ msgid "" "layout that includes the \"Reusable Medium ID\" as a QR code. Later, the " "same barcode may be re-used during the sale of a different product." msgstr "" +"Een 'streepjescode-medium' kan elke gedrukte of digitale weergave van een " +"streepjescode zijn. Het medium wordt in eerste instantie gecreëerd door de " +"verkoop van een product waarvoor een mediabeleid geldt dat een dergelijk " +"medium vereist, evenals een ticket- of badge-indeling met de 'ID " +"herbruikbaar medium' als QR-code. Later kan dezelfde streepjescode worden " +"hergebruikt bij de verkoop van een ander product." #: pretix/control/templates/pretixcontrol/organizers/edit.html:240 msgid "Barcode media can currently only be connected to tickets." msgstr "" +"Streepjescode-media kunnen momenteel alleen aan tickets worden gekoppeld." #: pretix/control/templates/pretixcontrol/organizers/edit.html:243 msgid "" "This subsequent reuse of the barcode is currently only supported during POS " "sales." msgstr "" +"Dit hergebruik van de streepjescode wordt momenteel alleen ondersteund bij " +"POS-verkopen." #: pretix/control/templates/pretixcontrol/organizers/edit.html:260 msgid "" "This medium type can work with almost any type of NFC chip. With this " "option, only the UID of the NFC chip is used for identification." msgstr "" +"Dit type medium werkt met vrijwel elk type NFC-chip. Bij deze optie wordt " +"alleen de UID van de NFC-chip gebruikt voor identificatie." #: pretix/control/templates/pretixcontrol/organizers/edit.html:264 #: pretix/control/templates/pretixcontrol/organizers/edit.html:296 msgid "NFC media can currently only be connected to gift cards." -msgstr "" +msgstr "NFC-media kunnen momenteel alleen worden gekoppeld aan cadeaubonnen." #: pretix/control/templates/pretixcontrol/organizers/edit.html:270 msgid "" "This method does not provide a high level of protection against abuse since " "it is possible for malicious users to clone someone's chip with the same UID." msgstr "" +"Deze methode biedt geen hoge mate van bescherming tegen misbruik, aangezien " +"kwaadwillende gebruikers de chip van iemand anders met dezelfde UID kunnen " +"klonen." #: pretix/control/templates/pretixcontrol/organizers/edit.html:291 msgid "" @@ -26969,6 +27099,10 @@ msgid "" "made by NXP. This provides a higher level of security than other approaches, " "but requires all chips to be encoded prior to use." msgstr "" +"Dit type medium werkt alleen met NFC-chips van het type Mifare Ultralight " +"AES, geproduceerd door NXP. Dit biedt een hoger beveiligingsniveau dan " +"andere benaderingen, maar vereist dat alle chips voorafgaand aan gebruik " +"worden gecodeerd." #: pretix/control/templates/pretixcontrol/organizers/edit.html:318 #, fuzzy @@ -26987,6 +27121,8 @@ msgid "" "The domain needs to be configured on your webserver before it can be used " "here." msgstr "" +"Het domein moet op je webserver worden geconfigureerd voordat het hier kan " +"worden gebruikt." #: pretix/control/templates/pretixcontrol/organizers/edit.html:377 #, fuzzy @@ -26996,7 +27132,7 @@ msgstr "Adresregel" #: pretix/control/templates/pretixcontrol/organizers/export.html:64 msgid "Run export now and download result" -msgstr "" +msgstr "Voer nu de export uit en download het resultaat" #: pretix/control/templates/pretixcontrol/organizers/gate_delete.html:5 msgid "Delete gate:" @@ -27238,6 +27374,8 @@ msgstr "" msgid "" "This can be used to enable products like year passes, tickets of ten, etc." msgstr "" +"Dit kan worden gebruikt om producten zoals jaarpassen, tienbeurtenkaarten " +"enz. mogelijk te maken." #: pretix/control/templates/pretixcontrol/organizers/plugin_events.html:6 #: pretix/control/templates/pretixcontrol/organizers/plugin_events.html:12 @@ -27608,6 +27746,9 @@ msgid "" "Webhooks scheduled to be retried in less than %(minutes)s minutes may not be " "listed here and can no longer be stopped or expedited." msgstr "" +"Webhooks die binnen %(minutes)s minuten opnieuw worden geprobeerd, worden " +"hier mogelijk niet weergegeven en kunnen niet meer worden gestopt of " +"versneld." #: pretix/control/templates/pretixcontrol/organizers/webhook_logs.html:44 msgid "This webhook was retried since it previously failed." @@ -27735,7 +27876,7 @@ msgstr "Bestelcode" #: pretix/control/templates/pretixcontrol/pdf/index.html:87 msgid "Image" -msgstr "" +msgstr "Afbeelding" #: pretix/control/templates/pretixcontrol/pdf/index.html:92 msgid "" @@ -27743,6 +27884,9 @@ msgid "" "generated by plugins. If you want to embed a logo or other images, use a " "custom background instead." msgstr "" +"Je kunt dit gebruiken om door gebruikers geüploade afbeeldingen uit vragen " +"of door plug-ins gegenereerde afbeeldingen toe te voegen. Als je een logo of " +"andere afbeeldingen wilt insluiten, gebruik dan een aangepaste achtergrond." #: pretix/control/templates/pretixcontrol/pdf/index.html:93 msgid "Dynamic image" @@ -27859,6 +28003,8 @@ msgid "" "You can upload a PDF to use as a custom background. The paper size will " "match the PDF." msgstr "" +"Je kunt een PDF uploaden om als aangepaste achtergrond te gebruiken. Het " +"papierformaat komt overeen met de PDF." #: pretix/control/templates/pretixcontrol/pdf/index.html:277 #, fuzzy @@ -27877,6 +28023,8 @@ msgid "" "To manually change the paper size, you need to create a new, empty " "background." msgstr "" +"Om het papierformaat handmatig te wijzigen, moet je een nieuwe, lege " +"achtergrond maken." #: pretix/control/templates/pretixcontrol/pdf/index.html:294 #: pretix/control/templates/pretixcontrol/pdf/index.html:381 @@ -27930,7 +28078,7 @@ msgstr "Producteigenschap:" #: pretix/control/templates/pretixcontrol/pdf/index.html:351 msgid "Other… (multilingual)" -msgstr "" +msgstr "Overige… (meertalig)" #: pretix/control/templates/pretixcontrol/pdf/index.html:352 msgid "Other…" @@ -28003,6 +28151,7 @@ msgstr "Geld automatisch terugbetalen indien mogelijk" #: pretix/control/templates/pretixcontrol/pdf/index.html:542 msgid "Allow long words to be split (preview is not accurate)" msgstr "" +"Sta het splitsen van lange woorden toe (voorbeeldweergave is niet nauwkeurig)" #: pretix/control/templates/pretixcontrol/pdf/index.html:553 #, python-format From f3fa323351e6db1fddbd6719466bfe71dddd7a0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Pastr=C5=88=C3=A1k?= Date: Thu, 29 Jan 2026 19:36:29 +0100 Subject: [PATCH 007/108] Translations: Update Czech Currently translated at 69.9% (4341 of 6207 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/cs/ powered by weblate --- src/pretix/locale/cs/LC_MESSAGES/django.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pretix/locale/cs/LC_MESSAGES/django.po b/src/pretix/locale/cs/LC_MESSAGES/django.po index a7d2addb11..d2dfc082b7 100644 --- a/src/pretix/locale/cs/LC_MESSAGES/django.po +++ b/src/pretix/locale/cs/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-01-26 13:19+0000\n" -"PO-Revision-Date: 2026-01-28 18:00+0000\n" +"PO-Revision-Date: 2026-01-29 19:42+0000\n" "Last-Translator: Jiří Pastrňák \n" "Language-Team: Czech " "\n" @@ -2848,7 +2848,7 @@ msgstr "Stavy platby" #: pretix/base/exporters/orderlist.py:1089 msgid "Refund states" -msgstr "Stav vrácení peněz" +msgstr "Stavy vrácení peněz" #: pretix/base/exporters/orderlist.py:1132 #: pretix/base/exporters/orderlist.py:1274 @@ -14841,7 +14841,7 @@ msgstr "Jakýkoli produkt v kvótě \"{quota}\"" #: pretix/control/forms/filter.py:2439 msgid "Refund status" -msgstr "Stav náhrady" +msgstr "Stav vrácení peněz" #: pretix/control/forms/filter.py:2441 msgid "All open refunds" From 1d579d12c5a1d9597a9398fb5b4644830fe0b92e Mon Sep 17 00:00:00 2001 From: Ruud Hendrickx Date: Thu, 29 Jan 2026 18:53:46 +0100 Subject: [PATCH 008/108] Translations: Update Dutch (informal) (nl_Informal) Currently translated at 93.8% (5827 of 6207 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 | 4817 ++++++----------- 1 file changed, 1655 insertions(+), 3162 deletions(-) diff --git a/src/pretix/locale/nl_Informal/LC_MESSAGES/django.po b/src/pretix/locale/nl_Informal/LC_MESSAGES/django.po index 19e0643f64..1717e53d81 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-01-26 13:19+0000\n" -"PO-Revision-Date: 2026-01-29 13:19+0000\n" +"PO-Revision-Date: 2026-01-29 19:42+0000\n" "Last-Translator: Ruud Hendrickx \n" "Language-Team: Dutch (informal) \n" @@ -2655,11 +2655,9 @@ msgid "Add-on to position ID" msgstr "Add-on voor positie-ID" #: pretix/base/exporters/orderlist.py:696 -#, fuzzy -#| msgid "Invoice address state" msgctxt "address" msgid "Invoice address state" -msgstr "Factuuradres: staat" +msgstr "Factuuradres staat" #: pretix/base/exporters/orderlist.py:704 pretix/control/navigation.py:305 #: pretix/control/templates/pretixcontrol/checkin/lists.html:6 @@ -2911,7 +2909,7 @@ msgstr "" #: pretix/base/exporters/orderlist.py:1190 #: pretix/control/templates/pretixcontrol/items/quotas.html:45 msgid "Quota name" -msgstr "Quotanaam" +msgstr "Naam van het quotum" #: pretix/base/exporters/orderlist.py:1190 #: pretix/control/templates/pretixcontrol/items/quota.html:56 @@ -2957,8 +2955,6 @@ msgstr "Cadeaubontransacties" #: pretix/base/exporters/orderlist.py:1239 #: pretix/base/exporters/orderlist.py:1346 -#, fuzzy -#| msgid "Gift cards" msgctxt "export_category" msgid "Gift cards" msgstr "Cadeaubonnen" @@ -3219,8 +3215,6 @@ msgid "Linked gift card" msgstr "Gekoppelde cadeaubon" #: pretix/base/exporters/waitinglist.py:42 -#, fuzzy -#| msgid "Waiting list" msgctxt "export_category" msgid "Waiting list" msgstr "Wachtlijst" @@ -3836,32 +3830,24 @@ msgid "Included taxes" msgstr "Inbegrepen belastingen" #: pretix/base/invoicing/pdf.py:1099 -#, fuzzy, python-brace-format -#| msgctxt "invoice" -#| msgid "" -#| "Using the conversion rate of 1:{rate} as published by the European " -#| "Central Bank on {date}, this corresponds to:" +#, python-brace-format msgctxt "invoice" msgid "" "Using the conversion rate of 1:{rate} as published by the {authority} on " "{date}, this corresponds to:" msgstr "" -"Op basis van de wisselkoers van 1:{rate} zoals gepubliceerd door de Europese " -"Centrale Bank op {date} komt dit overeen met:" +"Op basis van de omrekeningskoers van 1:{rate} zoals gepubliceerd door de " +"{authority} op {date}, komt dit overeen met:" #: pretix/base/invoicing/pdf.py:1114 -#, fuzzy, python-brace-format -#| msgctxt "invoice" -#| msgid "" -#| "Using the conversion rate of 1:{rate} as published by the European " -#| "Central Bank on {date}, the invoice total corresponds to {total}." +#, python-brace-format msgctxt "invoice" msgid "" "Using the conversion rate of 1:{rate} as published by the {authority} on " "{date}, the invoice total corresponds to {total}." msgstr "" -"Op basis van de wisselkoers van 1:{rate} zoals gepubliceerd door de Europese " -"Centrale Bank op {date} komt het factuurtotaal uit op {total}." +"Op basis van de wisselkoers van 1:{rate} zoals gepubliceerd door de " +"{authority} op {date}, komt het factuurbedrag overeen met {total}." #: pretix/base/invoicing/pdf.py:1128 msgid "Default invoice renderer (European-style letter)" @@ -4733,11 +4719,9 @@ msgid "Dates can be mixed without limitation" msgstr "Data kunnen zonder beperking worden gemengd" #: pretix/base/models/discount.py:50 -#, fuzzy -#| msgid "Multiple matching products were found." msgctxt "subevent" msgid "All matching products must be for the same date" -msgstr "Er zijn meerdere overeenkomende producten gevonden." +msgstr "Alle overeenkomende producten moeten voor dezelfde datum zijn." #: pretix/base/models/discount.py:51 msgctxt "subevent" @@ -4792,20 +4776,16 @@ msgstr "" "in aanmerking." #: pretix/base/models/discount.py:121 -#, fuzzy -#| msgid "Maximum number of items per order" msgid "Minimum number of matching products" -msgstr "Maximale aantal producten per bestelling" +msgstr "Minimumaantal overeenkomende producten" #: pretix/base/models/discount.py:125 msgid "Minimum gross value of matching products" msgstr "Minimale brutowaarde van overeenkomende producten" #: pretix/base/models/discount.py:133 -#, fuzzy -#| msgid "Apply discount only to this number of matching products" msgid "Apply discount to same set of products" -msgstr "Pas korting alleen toe op dit aantal gelijke producten" +msgstr "Korting toepassen op dezelfde set producten" #: pretix/base/models/discount.py:134 msgid "" @@ -4862,20 +4842,14 @@ msgstr "" "of toegang te krijgen tot uitverkochte quota, krijgen echter wel korting." #: pretix/base/models/discount.py:177 -#, fuzzy -#| msgctxt "subevent" -#| msgid "All dates starting before" msgctxt "subevent" msgid "Available for dates starting from" -msgstr "Alle subevenementen beginnend voor" +msgstr "Beschikbaar voor data vanaf" #: pretix/base/models/discount.py:182 -#, fuzzy -#| msgctxt "subevent" -#| msgid "All dates starting before" msgctxt "subevent" msgid "Available for dates starting until" -msgstr "Alle subevenementen beginnend voor" +msgstr "Beschikbaar voor data tot" #: pretix/base/models/discount.py:214 msgid "" @@ -5006,10 +4980,8 @@ msgid "Seating plan" msgstr "Zitplan" #: pretix/base/models/event.py:683 pretix/base/models/items.py:675 -#, fuzzy -#| msgid "Sales channels" msgid "Sell on all sales channels" -msgstr "Verkoopkanalen" +msgstr "Verkoop via alle verkoopkanalen" #: pretix/base/models/event.py:688 pretix/base/models/items.py:680 #: pretix/base/models/items.py:1230 pretix/base/payment.py:476 @@ -5038,16 +5010,11 @@ msgstr "" "ingeschakeld." #: pretix/base/models/event.py:1348 -#, fuzzy -#| msgid "" -#| "You have configured at least one paid product but have not enabled any " -#| "payment methods." msgid "" "You have configured at least one paid product but have not configured a " "currency." msgstr "" -"Je hebt ten minste één betaald product ingesteld maar geen betaalmethoden " -"ingeschakeld." +"Je hebt ten minste één betaald product geconfigureerd, maar nog geen valuta." #: pretix/base/models/event.py:1351 msgid "You need to configure at least one quota to sell anything." @@ -5154,10 +5121,8 @@ msgstr "Toegestane waarden" #: pretix/base/models/event.py:1784 #: pretix/control/templates/pretixcontrol/organizers/properties.html:45 -#, fuzzy -#| msgid "Show number of tickets left" msgid "Show filter option to customers" -msgstr "Toon resterend aantal kaartjes" +msgstr "Filteroptie aan klanten tonen" #: pretix/base/models/event.py:1785 msgid "" @@ -5169,10 +5134,8 @@ msgstr "" #: pretix/base/models/event.py:1788 pretix/control/forms/organizer.py:269 #: pretix/control/forms/organizer.py:273 -#, fuzzy -#| msgid "Public profile" msgid "Public name" -msgstr "Openbaar profiel" +msgstr "Openbare naam" #: pretix/base/models/event.py:1792 #: pretix/control/templates/pretixcontrol/organizers/properties.html:40 @@ -5196,16 +5159,12 @@ msgstr "" "hebben." #: pretix/base/models/event.py:1883 pretix/base/models/organizer.py:582 -#, fuzzy -#| msgid "Info text" msgid "Link text" -msgstr "Infotekst" +msgstr "Linktekst" #: pretix/base/models/event.py:1886 pretix/base/models/organizer.py:585 -#, fuzzy -#| msgid "Imprint URL" msgid "Link URL" -msgstr "Imprint-URL" +msgstr "Link-URL" #: pretix/base/models/exports.py:42 pretix/control/navigation.py:229 #: pretix/control/navigation.py:662 @@ -5213,10 +5172,8 @@ msgid "Export" msgstr "Exporteren" #: pretix/base/models/exports.py:59 -#, fuzzy -#| msgid "Additional settings" msgid "Additional recipients" -msgstr "Extra instellingen" +msgstr "Extra ontvangers" #: pretix/base/models/exports.py:61 pretix/base/models/exports.py:66 #: pretix/base/models/exports.py:71 pretix/control/forms/event.py:1091 @@ -5225,16 +5182,12 @@ msgid "You can specify multiple recipients separated by commas." msgstr "Je kunt meerdere ontvangers opgeven, gescheiden door komma's." #: pretix/base/models/exports.py:64 -#, fuzzy -#| msgid "Additional settings" msgid "Additional recipients (Cc)" -msgstr "Extra instellingen" +msgstr "Extra ontvangers (Cc)" #: pretix/base/models/exports.py:69 -#, fuzzy -#| msgid "Additional settings" msgid "Additional recipients (Bcc)" -msgstr "Extra instellingen" +msgstr "Extra ontvangers (Bcc)" #: pretix/base/models/exports.py:74 pretix/control/forms/event.py:1197 #: pretix/control/forms/event.py:1271 pretix/control/forms/event.py:1281 @@ -5256,10 +5209,8 @@ msgid "Message" msgstr "Bericht" #: pretix/base/models/exports.py:85 -#, fuzzy -#| msgid "Event start time" msgid "Requested start time" -msgstr "Starttijd van het evenement" +msgstr "Gewenste starttijd" #: pretix/base/models/exports.py:86 msgid "The actual start time might be delayed depending on system load." @@ -5273,16 +5224,12 @@ msgstr "Geen waarde kan het scheidingsteken bevatten." #: pretix/base/models/giftcards.py:81 #: pretix/control/templates/pretixcontrol/organizers/giftcard.html:50 -#, fuzzy -#| msgid "Download your ticket here:" msgid "Owned by ticket holder" -msgstr "Download je kaartje hier:" +msgstr "Eigendom van tickethouder" #: pretix/base/models/giftcards.py:88 -#, fuzzy -#| msgid "Enter custom amount" msgid "Owned by customer account" -msgstr "Voer aangepast bedrag in" +msgstr "Eigendom van klantenaccount" #: pretix/base/models/giftcards.py:100 msgid "The gift card code may only contain letters, numbers, dots and dashes." @@ -5300,41 +5247,29 @@ msgid "Manual transaction" msgstr "Handmatige transactie" #: pretix/base/models/invoices.py:122 -#, fuzzy -#| msgid "Pending amount" msgid "pending transmission" -msgstr "Openstaand bedrag" +msgstr "in afwachting van verzending" #: pretix/base/models/invoices.py:123 msgid "currently being transmitted" msgstr "wordt momenteel verzonden" #: pretix/base/models/invoices.py:124 -#, fuzzy -#| msgctxt "subevent" -#| msgid "No date selected." msgid "transmitted" -msgstr "Geen datum geselecteerd." +msgstr "verzonden" #: pretix/base/models/invoices.py:125 pretix/plugins/sendmail/models.py:52 -#, fuzzy -#| msgctxt "payment_state" -#| msgid "failed" msgid "failed" msgstr "mislukt" #: pretix/base/models/invoices.py:126 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_list.html:56 -#, fuzzy -#| msgid "(unknown)" msgid "unknown" -msgstr "(onbekend)" +msgstr "onbekend" #: pretix/base/models/invoices.py:127 -#, fuzzy -#| msgid "in private test mode" msgid "not transmitted due to test mode" -msgstr "in privétestmodus" +msgstr "niet verzonden vanwege testmodus" #: pretix/base/models/invoices.py:221 #, python-format @@ -5379,20 +5314,16 @@ msgstr "" #: pretix/base/models/items.py:114 pretix/base/models/items.py:159 #: pretix/control/forms/item.py:98 -#, fuzzy -#| msgid "No category" msgid "Normal category" -msgstr "Geen categorie" +msgstr "Normale categorie" #: pretix/base/models/items.py:115 pretix/control/forms/item.py:111 msgid "Normal + cross-selling category" msgstr "Normaal + cross-selling categorie" #: pretix/base/models/items.py:116 pretix/control/forms/item.py:106 -#, fuzzy -#| msgid "No category" msgid "Cross-selling category" -msgstr "Geen categorie" +msgstr "Cross-selling-categorie" #: pretix/base/models/items.py:124 msgid "Always show in cross-selling step" @@ -5415,11 +5346,8 @@ msgid "Cross-selling condition" msgstr "Voorwaarde voor cross-selling" #: pretix/base/models/items.py:137 -#, fuzzy -#| msgctxt "checkoutflow" -#| msgid "Add-on products" msgid "Cross-selling condition products" -msgstr "Add-onproducten" +msgstr "Cross-selling-voorwaarden producten" #: pretix/base/models/items.py:143 #: pretix/control/templates/pretixcontrol/items/categories.html:3 @@ -5434,10 +5362,8 @@ msgid "{category} ({category_type})" msgstr "{category} ({category_type})" #: pretix/base/models/items.py:155 -#, fuzzy -#| msgid "No category" msgid "Add-on category" -msgstr "Geen categorie" +msgstr "Add-on-categorie" #: pretix/base/models/items.py:222 pretix/base/models/items.py:278 msgid "Disable product for this date" @@ -5454,36 +5380,26 @@ msgid "This product will not be sold after the given date." msgstr "Dit product zal niet na de opgegeven datum verkocht worden." #: pretix/base/models/items.py:436 -#, fuzzy -#| msgid "(Event default)" msgid "Event validity (default)" -msgstr "(Standaardlay-out van evenement)" +msgstr "Geldigheid van evenement (standaard)" #: pretix/base/models/items.py:437 -#, fuzzy -#| msgid "Customer" msgid "Fixed time frame" -msgstr "Klant" +msgstr "Vast tijdsbestek" #: pretix/base/models/items.py:438 -#, fuzzy -#| msgid "Gift card validity" msgid "Dynamic validity" -msgstr "Geldigheid van cadeaubonnen" +msgstr "Dynamische geldigheid" #: pretix/base/models/items.py:444 pretix/control/forms/item.py:671 #: pretix/control/templates/pretixcontrol/subevents/fragment_unavail_mode_indicator.html:3 -#, fuzzy -#| msgid "Waiting, product unavailable" msgid "Hide product if unavailable" -msgstr "Wachtend, product niet beschikbaar" +msgstr "Product verbergen indien niet beschikbaar" #: 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 "The ordered product \"{item}\" is no longer available." msgid "Show product with info on why it’s unavailable" -msgstr "Het bestelde product \"{item}\" is niet meer beschikbaar." +msgstr "Toon product met informatie over waarom het niet beschikbaar is" #: pretix/base/models/items.py:456 pretix/base/models/items.py:781 msgid "Don't use re-usable media, use regular one-off tickets" @@ -5528,13 +5444,6 @@ msgstr "" "als er geen varianten zijn wordt deze prijs gebruikt." #: 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 " @@ -5544,15 +5453,11 @@ msgstr "" "Als deze instelling actief is kunnen je gebruikers zelf de prijs kiezen. De " "hierboven ingestelde prijs wordt dan geïnterpreteerd als de minimumprijs die " "een gebruiker moet invoeren. Dit kan bijvoorbeeld gebruikt worden om extra " -"donaties te vragen voor het evenement. Deze instelling wordt momenteel niet " -"ondersteund voor producten die als een add-on bij andere producten worden " -"gekocht." +"donaties te vragen voor het evenement." #: pretix/base/models/items.py:511 pretix/base/models/items.py:1176 -#, fuzzy -#| msgid "Net price" msgid "Suggested price" -msgstr "Nettoprijs" +msgstr "Adviesprijs" #: pretix/base/models/items.py:512 pretix/base/models/items.py:1177 msgid "" @@ -5572,18 +5477,14 @@ msgstr "" "Of het kopen van dit product iemand toestaat om je evenement te betreden" #: pretix/base/models/items.py:531 -#, fuzzy -#| msgid "Is an admission ticket" msgid "Is a personalized ticket" -msgstr "Is een toegangsbewijs" +msgstr "Is een gepersonaliseerd ticket" #: pretix/base/models/items.py:533 -#, fuzzy -#| msgid "" -#| "Whether or not buying this product allows a person to enter your event" msgid "Whether or not buying this product allows to enter attendee information" msgstr "" -"Of het kopen van dit product iemand toestaat om je evenement te betreden" +"Of het kopen van dit product het mogelijk maakt om deelnemersinformatie in " +"te voeren" #: pretix/base/models/items.py:542 msgid "Show a waiting list for this ticket" @@ -5607,11 +5508,9 @@ msgid "Product picture" msgstr "Productfoto" #: pretix/base/models/items.py:584 -#, fuzzy -#| msgid "Only show after sellout of" msgctxt "hidden_if_available_legacy" msgid "Only show after sellout of" -msgstr "Toon alleen nadat quotum is uitverkocht" +msgstr "Alleen tonen na uitverkoop van" #: pretix/base/models/items.py:585 msgid "" @@ -5634,14 +5533,6 @@ msgid "Only show after sellout of" msgstr "Toon alleen nadat quotum is uitverkocht" #: pretix/base/models/items.py:596 -#, fuzzy -#| msgid "" -#| "If you select a quota here, this product will only be shown when that " -#| "quota is unavailable. If combined with the option to hide sold-out " -#| "products, this allows you to swap out products for more expensive ones " -#| "once they are sold out. There might be a short period in which both " -#| "products are visible while all tickets in the referenced quota 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 " @@ -5652,13 +5543,14 @@ msgid "" "products are visible while all tickets of the referenced product are " "reserved, but not yet sold." msgstr "" -"Als je hier een quotum selecteert zal dit product alleen getoond worden " -"wanneer dat quotum niet meer beschikbaar is. Als dit wordt gecombineerd met " -"de optie om uitverkochte producten te verbergen kan deze functie " -"bijvoorbeeld worden gebruikt om producten automatisch te vervangen door " -"duurdere producten wanneer het product is uitverkocht. Er kan een korte " -"periode zijn waarin beide kaartjes zichtbaar zijn wanneer alle kaartjes in " -"het opgegeven quotum zijn gereserveerd, maar nog niet zijn verkocht." +"Als je hier een product selecteert, wordt dit product alleen getoond wanneer " +"dat product niet meer beschikbaar is. Dit gebeurt omdat het andere product " +"uitverkocht is of omdat de tijd buiten de verkoopperiode voor het andere " +"product valt. In combinatie met de optie om uitverkochte producten te " +"verbergen, kun je producten vervangen door duurdere producten zodra de " +"goedkopere optie uitverkocht is. Er kan een korte periode zijn waarin beide " +"producten zichtbaar zijn terwijl alle tickets van het gerefereerde product " +"zijn gereserveerd, maar nog niet verkocht." #: pretix/base/models/items.py:611 msgid "" @@ -5764,11 +5656,9 @@ msgstr "" "prijsberekening." #: pretix/base/models/items.py:681 -#, fuzzy -#| msgid "Only sell tickets for this event on the following sales channels." msgid "Only sell tickets for this product on the selected sales channels." msgstr "" -"Verkoop kaartjes voor dit evenement alleen via de volgende verkoopkanalen." +"Verkoop tickets voor dit product alleen via de geselecteerde verkoopkanalen." #: pretix/base/models/items.py:686 msgid "" @@ -5812,10 +5702,8 @@ msgid "Membership duration in months" msgstr "Duur van lidmaatschap in maanden" #: pretix/base/models/items.py:728 -#, fuzzy -#| msgid "Valid until" msgid "Validity" -msgstr "Geldig tot" +msgstr "Geldigheid" #: pretix/base/models/items.py:730 msgid "" @@ -5840,22 +5728,16 @@ msgstr "" "hun huidige geldigheid." #: pretix/base/models/items.py:738 pretix/control/forms/item.py:739 -#, fuzzy -#| msgid "Gift card validity" msgid "Start of validity" -msgstr "Geldigheid van cadeaubonnen" +msgstr "Begin van de geldigheid" #: pretix/base/models/items.py:739 -#, fuzzy -#| msgid "End of presale" msgid "End of validity" -msgstr "Einde van de voorverkoop" +msgstr "Einde van de geldigheid" #: pretix/base/models/items.py:742 -#, fuzzy -#| msgid "minutes" msgid "Minutes" -msgstr "minuten" +msgstr "Minuten" #: pretix/base/models/items.py:746 msgid "Hours" @@ -5866,16 +5748,12 @@ msgid "Days" msgstr "Dagen" #: pretix/base/models/items.py:754 -#, fuzzy -#| msgid "Month" msgid "Months" -msgstr "Maand" +msgstr "Maanden" #: pretix/base/models/items.py:757 -#, fuzzy -#| msgid "Customers can cancel their paid orders" msgid "Customers can select the validity start date" -msgstr "Klanten kunnen hun betaalde bestellingen annuleren" +msgstr "Klanten kunnen de ingangsdatum van de geldigheid selecteren." #: pretix/base/models/items.py:758 msgid "If not selected, the validity always starts at the time of purchase." @@ -5884,16 +5762,13 @@ msgstr "" "aankoop." #: pretix/base/models/items.py:763 -#, fuzzy -#| msgid "Maximum order total" msgid "Maximum future start" -msgstr "Maximum totaalbedrag bestelling" +msgstr "Maximale toekomstige start" #: pretix/base/models/items.py:764 -#, fuzzy -#| msgid "The selected date does not exist in this event series." msgid "The selected start date may only be this many days in the future." -msgstr "De geselecteerde datum bestaat niet in deze evenementenreeks." +msgstr "" +"De geselecteerde startdatum mag slechts zoveel dagen in de toekomst liggen." #: pretix/base/models/items.py:770 msgid "Reusable media policy" @@ -5939,23 +5814,22 @@ msgstr "" "herbruikbaar medium selecteren." #: pretix/base/models/items.py:993 -#, fuzzy -#| msgid "The selected product is not active or has no price set." msgid "The selected media type is not enabled in your organizer settings." -msgstr "Het gekozen product is niet actief of heeft geen ingestelde prijs." +msgstr "" +"Het geselecteerde mediatype is niet ingeschakeld in uw " +"organisatorinstellingen." #: pretix/base/models/items.py:995 -#, fuzzy -#| msgid "The selected item does not belong to this event." msgid "The selected media type does not support usage for tickets currently." -msgstr "Het geselecteerde item hoort niet bij dit evenement." +msgstr "" +"Het geselecteerde mediatype ondersteunt momenteel geen gebruik voor tickets." #: pretix/base/models/items.py:997 -#, fuzzy -#| msgid "The selected item does not belong to this event." msgid "" "The selected media type does not support usage for gift cards currently." -msgstr "Het geselecteerde item hoort niet bij dit evenement." +msgstr "" +"Het geselecteerde mediatype ondersteunt momenteel geen gebruik voor " +"cadeaubonnen." #: pretix/base/models/items.py:999 msgid "" @@ -6000,23 +5874,17 @@ msgid "Require approval" msgstr "Vereist goedkeuring" #: pretix/base/models/items.py:1185 -#, fuzzy -#| msgid "" -#| "If this product is part of an order, the order will be put into an " -#| "\"approval\" state and will need to be confirmed by you before it can be " -#| "paid and completed. You can use this e.g. for discounted tickets that are " -#| "only available to specific groups." msgid "" "If this variation is part of an order, the order will be put into an " "\"approval\" state and will need to be confirmed by you before it can be " "paid and completed. You can use this e.g. for discounted tickets that are " "only available to specific groups." msgstr "" -"Als dit product deel uitmaakt van een bestelling zal de bestelling in een " -"goedkeuringsstatus worden gezet, en moet de bestelling door jou worden " -"bevestigd voordat de bestelling kan worden betaald en voltooid. Je kan dit " -"bijvoorbeeld gebruiken voor kaartjes met korting die alleen beschikbaar zijn " -"voor specifieke groepen." +"Als deze variant deel uitmaakt van een bestelling, wordt de bestelling in de " +"status 'goedkeuring' geplaatst en moet deze door jou worden bevestigd " +"voordat deze kan worden betaald en voltooid. Je kunt dit bijvoorbeeld " +"gebruiken voor kortingskaartjes die alleen beschikbaar zijn voor specifieke " +"groepen." #: pretix/base/models/items.py:1195 pretix/control/navigation.py:591 #: pretix/control/templates/pretixcontrol/organizers/membershiptypes.html:4 @@ -6025,16 +5893,12 @@ msgid "Membership types" msgstr "Lidmaatschapstypes" #: pretix/base/models/items.py:1207 -#, fuzzy -#| msgid "This product will not be sold before the given date." msgid "This variation will not be sold before the given date." -msgstr "Dit product zal niet vóór de opgegeven datum verkocht worden." +msgstr "Deze variant zal niet vóór de opgegeven datum worden verkocht." #: pretix/base/models/items.py:1217 -#, fuzzy -#| msgid "This product will not be sold after the given date." msgid "This variation will not be sold after the given date." -msgstr "Dit product zal niet na de opgegeven datum verkocht worden." +msgstr "Deze variant zal na de opgegeven datum niet meer worden verkocht." #: pretix/base/models/items.py:1225 msgid "Sell on all sales channels the product is sold on" @@ -6051,26 +5915,16 @@ msgstr "" "productniveau, is de variant niet beschikbaar." #: pretix/base/models/items.py:1236 -#, fuzzy -#| msgid "" -#| "This product will only be shown if a voucher matching the product is " -#| "redeemed." msgid "Show only if a matching voucher is redeemed." -msgstr "" -"Dit product wordt alleen getoond als een voucher die overeenkomt met het " -"product wordt ingewisseld." +msgstr "Alleen weergeven als een overeenkomende voucher is ingewisseld." #: pretix/base/models/items.py:1238 -#, fuzzy -#| msgid "" -#| "This product will be hidden from the event page until the user enters a " -#| "voucher that unlocks this product." msgid "" "This variation will be hidden from the event page until the user enters a " "voucher that unlocks this variation." msgstr "" -"Dit product wordt verborgen van de evenementpagina totdat de gebruiker een " -"vouchercode invoert die dit product vrijgeeft." +"Deze variant wordt verborgen gehouden op de evenementpagina totdat de " +"gebruiker een voucher invoert waarmee deze variant wordt ontgrendeld." #: pretix/base/models/items.py:1258 #: pretix/control/templates/pretixcontrol/item/create.html:111 @@ -6202,13 +6056,11 @@ msgstr "Landcode (ISO 3166-1 alpha-2)" #: pretix/base/models/items.py:1681 pretix/base/models/items.py:1957 #: pretix/base/models/organizer.py:609 -#, fuzzy -#| msgid "The property name may only contain letters, numbers and underscores." msgid "" "The identifier may only contain letters, numbers, dots, dashes, and " "underscores." msgstr "" -"De naam van de eigenschap mag alleen letters, cijfers en " +"De identificatiecode mag alleen letters, cijfers, punten, streepjes en " "onderstrepingstekens bevatten." #: pretix/base/models/items.py:1686 @@ -6242,10 +6094,8 @@ msgid "Not supported by all check-in apps for all question types." msgstr "Niet al onze incheckapps ondersteunen dit voor alle vraagsoorten." #: pretix/base/models/items.py:1716 -#, fuzzy -#| msgid "Ask during check-in" msgid "Show answer during check-in" -msgstr "Vraag tijdens check-in" +msgstr "Toon antwoord tijdens het inchecken" #: pretix/base/models/items.py:1721 #: pretix/control/templates/pretixcontrol/items/questions.html:66 @@ -6278,10 +6128,8 @@ msgid "Maximum value" msgstr "Maximumwaarde" #: pretix/base/models/items.py:1752 -#, fuzzy -#| msgid "Maximum value" msgid "Maximum length" -msgstr "Maximumwaarde" +msgstr "Maximale lengte" #: pretix/base/models/items.py:1758 msgid "Validate file to be a portrait" @@ -6301,10 +6149,8 @@ msgid "An answer to this question is required to proceed." msgstr "Een antwoord op deze vraag is vereist om door te gaan." #: pretix/base/models/items.py:1824 -#, fuzzy -#| msgid "Invalid input data." msgid "Invalid input type." -msgstr "Ongeldige invoergegevens." +msgstr "Ongeldig invoertype." #: pretix/base/models/items.py:1858 msgid "The number is to low." @@ -6481,10 +6327,8 @@ msgid "Subevent cannot be null for event series." msgstr "Het onderevenement kan niet leeg zijn voor evenementreeksen." #: pretix/base/models/items.py:2248 -#, fuzzy -#| msgid "Required for events" msgid "Required for products" -msgstr "Verplicht voor evenementen" +msgstr "Vereist voor producten" #: pretix/base/models/items.py:2249 msgid "" @@ -6530,11 +6374,6 @@ msgid "Parallel usage is allowed" msgstr "Parallel gebruik is toegestaan" #: pretix/base/models/memberships.py:51 -#, fuzzy -#| msgid "" -#| "If this is selected, the membership can be used to purchase tickets for " -#| "events happening at the same time. Note that this will only check for an " -#| "identical start time of the events, not for any overlap between events." msgid "" "If this is selected, the membership can be used to purchase tickets for " "events happening at the same time. Note that this will only check for an " @@ -6542,10 +6381,11 @@ msgid "" "overlap check will be performed if there is a product-level validity of the " "ticket." msgstr "" -"Als deze optie is ingeschakeld kan het lidmaatschap worden gebruikt om " -"kaartjes te kopen voor evenementen die tegelijk plaatsvinden. Merk op dat " -"deze controle alleen checkt of de starttijd van de evenementen gelijk zijn, " -"en niet of de evenementen overlappen." +"Als deze optie is geselecteerd, kan het lidmaatschap worden gebruikt om " +"tickets te kopen voor evenementen die tegelijkertijd plaatsvinden. Houd er " +"rekening mee dat hierbij alleen wordt gecontroleerd of de evenementen " +"dezelfde starttijd hebben, en niet of ze elkaar overlappen. Er wordt alleen " +"gecontroleerd op overlapping als het ticket op productniveau geldig is." #: pretix/base/models/memberships.py:58 msgid "Number of times this membership can be used in a purchase." @@ -6619,25 +6459,20 @@ msgstr "" "van tevoren informeren over hoe deze gevallen moeten worden afgehandeld." #: pretix/base/models/orders.py:291 -#, fuzzy -#| msgid "" -#| "This text will be shown above the invoice address form during checkout." msgid "" "This text will be shown by the check-in app if a ticket of this order is " "scanned." msgstr "" -"Deze tekst wordt boven de invulvelden voor het factuuradres getoond tijdens " -"het afrekenen." +"Deze tekst wordt door de check-in-app weergegeven als een ticket van deze " +"bestelling wordt gescand." #: pretix/base/models/orders.py:301 pretix/base/models/orders.py:1552 msgid "Meta information" msgstr "Meta-informatie" #: pretix/base/models/orders.py:305 -#, fuzzy -#| msgid "Meta information" msgid "API meta information" -msgstr "Meta-informatie" +msgstr "API-metagegevens" #: pretix/base/models/orders.py:419 pretix/plugins/sendmail/forms.py:236 #: pretix/plugins/sendmail/forms.py:389 pretix/plugins/sendmail/views.py:269 @@ -6645,17 +6480,13 @@ msgid "approval pending" msgstr "wacht op goedkeuring" #: pretix/base/models/orders.py:421 -#, fuzzy -#| msgid "Pending (overdue)" msgctxt "order state" msgid "pending (confirmed)" -msgstr "Openstaand (achterstallig)" +msgstr "in behandeling (bevestigd)" #: pretix/base/models/orders.py:423 -#, fuzzy -#| msgid "Canceled (paid fee)" msgid "canceled (paid fee)" -msgstr "Geannuleerd (betaalde kosten)" +msgstr "geannuleerd (betaalde vergoeding)" #: pretix/base/models/orders.py:1036 msgid "" @@ -6823,10 +6654,8 @@ msgid "Insurance fee" msgstr "Verzekeringstoeslag" #: pretix/base/models/orders.py:2342 -#, fuzzy -#| msgid "Other fees" msgid "Late fee" -msgstr "Overige kosten" +msgstr "Laattijdige betaling" #: pretix/base/models/orders.py:2343 msgid "Other fees" @@ -6859,10 +6688,8 @@ msgid "Cart ID (e.g. session key)" msgstr "Winkelwagen-ID (bijv. sessiesleutel)" #: pretix/base/models/orders.py:3212 -#, fuzzy -#| msgid "Expiration date" msgid "Limit for extending expiration date" -msgstr "Verloopdatum" +msgstr "Limiet voor het verlengen van de vervaldatum" #: pretix/base/models/orders.py:3248 msgid "Cart position" @@ -6883,10 +6710,8 @@ msgstr "" "eigen administratie gebruiken." #: pretix/base/models/orders.py:3534 -#, fuzzy -#| msgid "Transaction Code" msgid "Transmission type" -msgstr "Transactiecode" +msgstr "Type transmissie" #: pretix/base/models/orders.py:3632 #: pretix/plugins/badges/templates/pretixplugins/badges/control_order_position_buttons.html:9 @@ -7085,10 +6910,8 @@ msgid "Seat {number}" msgstr "Stoel {number}" #: pretix/base/models/tax.py:143 -#, fuzzy -#| msgid "resend invite" msgid "Standard rates" -msgstr "Stuur uitnodiging opnieuw" +msgstr "Standaardtarieven" #: pretix/base/models/tax.py:147 msgctxt "tax_code" @@ -7096,11 +6919,9 @@ msgid "Standard rate" msgstr "Standaardtarief" #: pretix/base/models/tax.py:151 -#, fuzzy -#| msgid "Reduced ticket" msgctxt "tax_code" msgid "Reduced rate" -msgstr "Kaartje met korting" +msgstr "Verlaagd tarief" #: pretix/base/models/tax.py:155 msgctxt "tax_code" @@ -7109,17 +6930,13 @@ msgid "" msgstr "Gemiddeld tarief (overige inkomsten in een land- en bosbouwbedrijf)" #: pretix/base/models/tax.py:163 -#, fuzzy -#| msgid "Reverse charge" msgctxt "tax_code" msgid "Reverse charge" -msgstr "Omgekeerde belastingheffing" +msgstr "Verleggingsregeling" #: pretix/base/models/tax.py:167 -#, fuzzy -#| msgid "Tax rate" msgid "Tax free" -msgstr "Belastingtarief" +msgstr "Belastingvrij" #: pretix/base/models/tax.py:170 msgctxt "tax_code" @@ -7149,10 +6966,8 @@ msgstr "" "binnen de EER" #: pretix/base/models/tax.py:186 -#, fuzzy -#| msgid "API features" msgid "Special cases" -msgstr "API-functies" +msgstr "Speciale gevallen" #: pretix/base/models/tax.py:188 msgctxt "tax_code" @@ -7242,10 +7057,9 @@ msgstr "" "wegens verlies van btw voor korting" #: pretix/base/models/tax.py:315 -#, fuzzy, python-brace-format -#| msgid "Your layout file is not a valid seating plan. Error message: {}" +#, python-brace-format msgid "Your set of rules is not valid. Error message: {}" -msgstr "Je lay-outbestand is geen geldige stoelplattegrond. Foutmelding: {}" +msgstr "Je set regels is ongeldig. Foutmelding: {}" #: pretix/base/models/tax.py:326 msgid "Official name" @@ -7257,10 +7071,8 @@ msgstr "Moet kort zijn, bijv. \"btw\"" #: pretix/base/models/tax.py:331 pretix/control/forms/event.py:1636 #: pretix/control/templates/pretixcontrol/order/transactions.html:22 -#, fuzzy -#| msgid "Status code" msgid "Tax code" -msgstr "Statuscode" +msgstr "Belastingcode" #: pretix/base/models/tax.py:332 msgid "" @@ -7505,10 +7317,8 @@ msgstr "" "worden toegepast op add-on-producten of gebundelde producten." #: pretix/base/models/vouchers.py:351 -#, fuzzy -#| msgid "You cannot select a quota that belongs to a different event." msgid "You cannot select a product that belongs to a different event." -msgstr "Je kan geen quotum selecteren dat bij een ander evenement hoort." +msgstr "Je kunt geen product selecteren dat bij een ander evenement hoort." #: pretix/base/models/vouchers.py:353 pretix/base/models/vouchers.py:363 msgid "" @@ -7545,16 +7355,12 @@ msgstr "" "keren dat de voucher te gebruiken is niet kleiner maken dan dit getal." #: pretix/base/models/vouchers.py:379 -#, fuzzy -#| msgid "" -#| "The maximum number per order can not be lower than the minimum number per " -#| "order." msgid "" "The maximum number of usages may not be lower than the minimum number of " "usages." msgstr "" -"Het maximum aantal per bestelling mag niet lager zijn dan het minimum aantal " -"per bestelling." +"Het maximale aantal keren dat iets gebruikt mag worden, mag niet lager zijn " +"dan het minimale aantal keren dat iets gebruikt mag worden." #: pretix/base/models/vouchers.py:385 pretix/base/models/vouchers.py:454 msgid "" @@ -7620,10 +7426,8 @@ msgid "This product is currently not available." msgstr "Dit product is momenteel niet beschikbaar." #: pretix/base/models/waitinglist.py:188 -#, fuzzy -#| msgid "This product is currently not available." msgid "No seat with this product is currently available." -msgstr "Dit product is momenteel niet beschikbaar." +msgstr "Er zijn momenteel geen stoelen beschikbaar voor dit product." #: pretix/base/models/waitinglist.py:191 msgid "This entry is anonymized and can no longer be used." @@ -7754,18 +7558,14 @@ msgid "You have been requested to issue a refund for {order.code}." msgstr "Je bent gevraagd om bestelling {order.code} terug te betalen." #: pretix/base/payment.py:86 -#, fuzzy -#| msgid "Apply" msgctxt "payment" msgid "Apple Pay" -msgstr "Toepassen" +msgstr "Apple Pay" #: pretix/base/payment.py:87 -#, fuzzy -#| msgid "Android (Google Play)" msgctxt "payment" msgid "Google Pay" -msgstr "Android (Google Play)" +msgstr "Google Pay" #: pretix/base/payment.py:119 pretix/base/payment.py:1614 msgid "You cannot pay with gift cards when buying a gift card." @@ -7827,15 +7627,10 @@ msgid "Enable payment method" msgstr "Betaalmethode inschakelen" #: pretix/base/payment.py:395 -#, fuzzy -#| msgid "" -#| "Users will not be able to choose this payment provider after the given " -#| "date." msgid "" "Users will not be able to choose this payment provider before the given date." msgstr "" -"Gebruikers zullen na de opgegeven datum deze betalingsprovider niet kunnen " -"kiezen." +"Gebruikers kunnen deze betalingsprovider niet kiezen vóór de opgegeven datum." #: pretix/base/payment.py:401 msgid "" @@ -7980,11 +7775,9 @@ msgid "The payment for this invoice has already been received." msgstr "De betaling voor deze factuur is al ontvangen." #: pretix/base/payment.py:1024 -#, fuzzy -#| msgid "This payment can not be canceled at the moment." msgid "" "This payment is already being processed and can not be canceled any more." -msgstr "Deze betaling kan momenteel niet worden geannuleerd." +msgstr "Deze betaling wordt al verwerkt en kan niet meer worden geannuleerd." #: pretix/base/payment.py:1038 msgid "Automatic refunds are not supported by this payment provider." @@ -8098,10 +7891,8 @@ msgid "Balanced against orders: %s" msgstr "Verrekend met bestellingen: %s" #: pretix/base/payment.py:1468 -#, fuzzy -#| msgid "Payment method name" msgid "Payment method description" -msgstr "Naam van betalingsmethode" +msgstr "Beschrijving van de betaalmethode" #: pretix/base/payment.py:1498 msgid "In test mode, only test cards will work." @@ -8176,16 +7967,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 "Prijs inclusief add-ons" +msgstr "Prijs inclusief gebundelde producten" #: pretix/base/pdf.py:174 -#, fuzzy -#| msgid "Price including add-ons" msgid "Price including add-ons and bundled products" -msgstr "Prijs inclusief add-ons" +msgstr "Prijs inclusief add-ons en gebundelde producten" #: pretix/base/pdf.py:184 pretix/base/pdf.py:342 #: pretix/base/services/invoices.py:593 @@ -8242,10 +8029,8 @@ msgid "Attendee country" msgstr "Land van gast" #: pretix/base/pdf.py:230 -#, fuzzy -#| msgid "Pseudonymization ID" msgid "Pseudonymization ID (lead scanning)" -msgstr "Pseudonimisatie-ID" +msgstr "Pseudonimisatie-ID (leadscanning)" #: pretix/base/pdf.py:236 pretix/base/pdf.py:241 msgid "Sample event name" @@ -8290,10 +8075,8 @@ msgid "20:00" msgstr "20:00" #: pretix/base/pdf.py:276 -#, fuzzy -#| msgid "Event begin date" msgid "Event begin weekday" -msgstr "Begindatum van evenement" +msgstr "Begin evenement weekdag" #: pretix/base/pdf.py:277 pretix/base/pdf.py:306 #: pretix/base/services/checkin.py:362 pretix/control/forms/filter.py:1398 @@ -8313,10 +8096,8 @@ msgid "22:00" msgstr "22:00" #: pretix/base/pdf.py:305 -#, fuzzy -#| msgid "Event end date" msgid "Event end weekday" -msgstr "Einddatum van het evenement" +msgstr "Einde evenement weekdag" #: pretix/base/pdf.py:310 msgid "Event admission date and time" @@ -8373,16 +8154,12 @@ msgid "List of Add-Ons" msgstr "Lijst met add-ons" #: pretix/base/pdf.py:377 -#, fuzzy -#| msgid "" -#| "Add-on 1\n" -#| "Add-on 2" msgid "" "Add-on 1\n" "2x Add-on 2" msgstr "" "Add-on 1\n" -"Add-on 2" +"2x Add-on 2" #: pretix/base/pdf.py:383 pretix/control/forms/filter.py:1536 #: pretix/control/forms/filter.py:1538 @@ -8419,64 +8196,44 @@ msgid "Printing time" msgstr "Printtijd" #: pretix/base/pdf.py:422 pretix/control/forms/item.py:741 -#, fuzzy -#| msgid "Purchased" msgid "Purchase date" -msgstr "Gekocht" +msgstr "Aankoopdatum" #: pretix/base/pdf.py:430 -#, fuzzy -#| msgid "Purchased" msgid "Purchase date and time" -msgstr "Gekocht" +msgstr "Aankoopdatum en -tijd" #: pretix/base/pdf.py:438 -#, fuzzy -#| msgid "Purchased" msgid "Purchase time" -msgstr "Gekocht" +msgstr "Aankooptijd" #: pretix/base/pdf.py:446 -#, fuzzy -#| msgid "Valid until" msgid "Validity start date" -msgstr "Geldig tot" +msgstr "Begindatum geldigheid" #: pretix/base/pdf.py:454 -#, fuzzy -#| msgid "Printing date and time" msgid "Validity start date and time" -msgstr "Printdatum en -tijd" +msgstr "Begindatum en -tijd geldigheid" #: pretix/base/pdf.py:462 -#, fuzzy -#| msgid "Valid until" msgid "Validity start time" -msgstr "Geldig tot" +msgstr "Begintijd geldigheid" #: pretix/base/pdf.py:470 -#, fuzzy -#| msgid "Valid until" msgid "Validity end date" -msgstr "Geldig tot" +msgstr "Einddatum geldigheid" #: pretix/base/pdf.py:478 -#, fuzzy -#| msgid "Event end date and time" msgid "Validity end date and time" -msgstr "Einddatum en -tijd van het evenement" +msgstr "Einddatum en -tijd geldigheid" #: pretix/base/pdf.py:486 -#, fuzzy -#| msgid "Valid until" msgid "Validity end time" -msgstr "Geldig tot" +msgstr "Eindtijd geldigheid" #: pretix/base/pdf.py:494 -#, fuzzy -#| msgid "Printing date and time" msgid "Program times: date and time" -msgstr "Printdatum en -tijd" +msgstr "Programmatijden: datum en tijd" #: pretix/base/pdf.py:496 msgid "" @@ -8526,16 +8283,12 @@ msgid "Date and time of first scan" msgstr "Datum en tijd van eerste scan" #: pretix/base/pdf.py:533 -#, fuzzy -#| msgid "Gift card code" msgid "Gift card: Issuance date" -msgstr "Cadeauboncode" +msgstr "Cadeaubon: datum van uitgifte" #: pretix/base/pdf.py:538 -#, fuzzy -#| msgid "Expiration date" msgid "Gift card: Expiration date" -msgstr "Verloopdatum" +msgstr "Cadeaubon: verloopdatum" #: pretix/base/pdf.py:579 pretix/base/pdf.py:617 pretix/base/pdf.py:623 #: pretix/plugins/badges/exporters.py:504 @@ -8550,10 +8303,8 @@ msgid "" msgstr "" #: pretix/base/pdf.py:665 -#, fuzzy -#| msgid "Attendee names" msgid "Attendee name for salutation" -msgstr "Namen van aanwezigen" +msgstr "Naam van de deelnemer voor aanspreking" #: pretix/base/pdf.py:666 pretix/base/pdf.py:689 #: pretix/base/services/placeholders.py:730 @@ -8571,10 +8322,8 @@ msgid "Attendee name: {part}" msgstr "Naam van deelnemer: {part}" #: pretix/base/pdf.py:688 -#, fuzzy -#| msgid "Invoice address explanation" msgid "Invoice address name for salutation" -msgstr "Uitleg factuuradres" +msgstr "Factuuradres naam voor aanspreking" #: pretix/base/pdf.py:695 #, python-brace-format @@ -8582,10 +8331,9 @@ msgid "Invoice address name: {part}" msgstr "Naam factuuradres: {part}" #: pretix/base/pdf.py:1328 -#, fuzzy, python-brace-format -#| msgid "Your layout file is not a valid seating plan. Error message: {}" +#, python-brace-format msgid "Your layout file is not a valid layout. Error message: {}" -msgstr "Je lay-outbestand is geen geldige stoelplattegrond. Foutmelding: {}" +msgstr "Uw lay-outbestand is geen geldige lay-out. Foutmelding: {}" #: pretix/base/plugins.py:138 #: pretix/control/templates/pretixcontrol/event/quick_setup.html:132 @@ -8629,10 +8377,8 @@ msgid "Presale end" msgstr "Einde voorverkoop" #: pretix/base/reldate.py:186 -#, fuzzy -#| msgid "days before" msgid "before" -msgstr "dagen voor" +msgstr "voor" #: pretix/base/reldate.py:187 msgid "after" @@ -8659,18 +8405,13 @@ msgid "Random (default, works with all pretix apps)" msgstr "Willekeurig (standaard, werkt met alle pretix-apps)" #: pretix/base/secrets.py:150 -#, fuzzy -#| msgid "" -#| "pretix signature scheme 1 (for very large events, does not work with " -#| "pretixSCAN on iOS and changes semantics of offline scanning – please " -#| "refer to documentation or support for details)" msgid "" "pretix signature scheme 1 (for very large events, changes semantics of " "offline scanning – please refer to documentation or support for details)" msgstr "" -"pretix handtekeningschema 1 (voor zeer grote evenementen, werkt niet met " -"pretixSCAN op iOS en verandert hoe offline scannen werkt –­zie de " -"documentatie of neem contact op met de ondersteuning voor details)" +"pretix-handtekeningenschema 1 (voor zeer grote evenementen, wijzigt de " +"semantiek van offline scannen – raadpleeg de documentatie of ondersteuning " +"voor meer informatie)" #: pretix/base/services/cancelevent.py:277 #: pretix/base/services/cancelevent.py:363 @@ -8678,10 +8419,8 @@ msgid "Event canceled" msgstr "Evenement geannuleerd" #: pretix/base/services/cancelevent.py:392 -#, fuzzy -#| msgid "Create configuration" msgid "Bulk-refund confirmation" -msgstr "Maak configuratie" +msgstr "Bevestiging van bulkterugbetaling" #: pretix/base/services/cart.py:106 pretix/base/services/modelimport.py:247 #: pretix/base/services/orders.py:162 @@ -8756,38 +8495,30 @@ msgstr "" "zijn niet aan je winkelwagen toegevoegd: %s" #: pretix/base/services/cart.py:134 pretix/base/services/orders.py:153 -#, fuzzy, python-format -#| msgid "You cannot select more than %s items per order." +#, python-format msgid "You cannot select more than %s item per order." msgid_plural "You cannot select more than %s items per order." -msgstr[0] "Je kan niet meer dan %s items per bestelling kiezen." -msgstr[1] "Je kan niet meer dan %s items per bestelling kiezen." +msgstr[0] "Je kunt niet meer dan %s item per bestelling kiezen." +msgstr[1] "Je kunt niet meer dan %s items per bestelling kiezen." #: pretix/base/services/cart.py:138 pretix/base/services/orders.py:1614 -#, fuzzy, python-format -#| msgid "" -#| "You cannot select more than %(max)s items of the product %(product)s." +#, python-format msgid "You cannot select more than %(max)s item of the product %(product)s." msgid_plural "" "You cannot select more than %(max)s items of the product %(product)s." -msgstr[0] "Je kan niet meer dan %(max)s items van product %(product)s kiezen." -msgstr[1] "Je kan niet meer dan %(max)s items van product %(product)s kiezen." +msgstr[0] "Je kunt niet meer dan %(max)s item van product %(product)s kiezen." +msgstr[1] "Je kunt niet meer dan %(max)s items van product %(product)s kiezen." #: pretix/base/services/cart.py:143 pretix/base/services/orders.py:1619 -#, fuzzy, python-format -#| msgid "" -#| "You need to select at least %(min)s items of the product %(product)s." +#, python-format msgid "You need to select at least %(min)s item of the product %(product)s." msgid_plural "" "You need to select at least %(min)s items of the product %(product)s." -msgstr[0] "Je moet ten minste %(min)s items van product %(product)s kiezen." +msgstr[0] "Je moet ten minste %(min)s item van product %(product)s kiezen." msgstr[1] "Je moet ten minste %(min)s items van product %(product)s kiezen." #: pretix/base/services/cart.py:148 -#, fuzzy, python-format -#| msgid "" -#| "We removed %(product)s from your cart as you can not buy less than " -#| "%(min)s items of it." +#, python-format msgid "" "We removed %(product)s from your cart as you can not buy less than %(min)s " "item of it." @@ -8795,25 +8526,21 @@ msgid_plural "" "We removed %(product)s from your cart as you can not buy less than %(min)s " "items of it." msgstr[0] "" -"We hebben %(product)s uit je winkelwagen verwijderd, omdat je niet minder " -"dan %(min)s ervan kan kopen." +"We hebben %(product)s uit je winkelwagen verwijderd, omdat je er niet minder " +"dan %(min)s van kunt kopen." msgstr[1] "" -"We hebben %(product)s uit je winkelwagen verwijderd, omdat je niet minder " -"dan %(min)s ervan kan kopen." +"We hebben %(product)s uit je winkelwagen verwijderd, omdat je er niet minder " +"dan %(min)s van kunt kopen." #: pretix/base/services/cart.py:152 pretix/base/services/orders.py:165 #: pretix/presale/templates/pretixpresale/event/index.html:170 #: pretix/presale/views/waiting.py:145 pretix/presale/views/widget.py:812 -#, fuzzy -#| msgid "The presale period for this event has not yet started." msgid "The booking period for this event has not yet started." -msgstr "De verkoopperiode van dit evenement is nog niet begonnen." +msgstr "De boekingsperiode voor dit evenement is nog niet begonnen." #: pretix/base/services/cart.py:153 -#, fuzzy -#| msgid "The presale period for this event has ended." msgid "The booking period for this event has ended." -msgstr "De verkoopperiode van dit evenement is afgelopen." +msgstr "De boekingsperiode voor dit evenement is verstreken." #: pretix/base/services/cart.py:154 msgid "" @@ -8840,10 +8567,8 @@ msgstr "" "verstreken. De betreffende producten zijn uit je winkelwagen verwijderd." #: pretix/base/services/cart.py:161 -#, fuzzy -#| msgid "The entered price is to high." msgid "The entered price is not a number." -msgstr "De ingevoerde prijs is te hoog." +msgstr "De ingevoerde prijs is geen getal." #: pretix/base/services/cart.py:162 msgid "The entered price is to high." @@ -8979,10 +8704,7 @@ msgid "You can not select two variations of the same add-on product." msgstr "Je kan niet twee varianten van hetzelfde add-onproduct selecteren." #: pretix/base/services/cart.py:205 pretix/base/services/orders.py:195 -#, fuzzy, python-format -#| msgid "" -#| "You can select at most %(max)s add-ons from the category %(cat)s for the " -#| "product %(base)s." +#, python-format msgid "" "You can select at most %(max)s add-on from the category %(cat)s for the " "product %(base)s." @@ -8990,17 +8712,14 @@ msgid_plural "" "You can select at most %(max)s add-ons from the category %(cat)s for the " "product %(base)s." msgstr[0] "" -"Je kan maximaal %(max)s add-ons van de categorie %(cat)s selecteren voor het " +"Je kunt maximaal %(max)s add-on van de categorie %(cat)s selecteren voor het " "product %(base)s." msgstr[1] "" -"Je kan maximaal %(max)s add-ons van de categorie %(cat)s selecteren voor het " -"product %(base)s." +"Je kunt maximaal %(max)s add-ons van de categorie %(cat)s selecteren voor " +"het product %(base)s." #: pretix/base/services/cart.py:210 pretix/base/services/orders.py:200 -#, fuzzy, python-format -#| msgid "" -#| "You need to select at least %(min)s add-ons from the category %(cat)s for " -#| "the product %(base)s." +#, python-format msgid "" "You need to select at least %(min)s add-on from the category %(cat)s for the " "product %(base)s." @@ -9008,29 +8727,22 @@ msgid_plural "" "You need to select at least %(min)s add-ons from the category %(cat)s for " "the product %(base)s." msgstr[0] "" -"Je moet minimaal %(min)s add-ons van de categorie %(cat)s selecteren voor " -"het product %(base)s." +"Je moet minimaal %(min)s add-on van de categorie %(cat)s selecteren voor het " +"product %(base)s." msgstr[1] "" "Je moet minimaal %(min)s add-ons van de categorie %(cat)s selecteren voor " "het product %(base)s." #: pretix/base/services/cart.py:214 pretix/base/services/orders.py:204 -#, fuzzy, python-format -#| msgid "" -#| "You can select every add-ons from the category %(cat)s for the product " -#| "%(base)s at most once." +#, python-format msgid "" "You can select every add-on from the category %(cat)s for the product " "%(base)s at most once." msgstr "" -"Je kan iedere add-on uit de categorie %(cat)s voor het product %(base)s " -"maximaal één keer kiezen." +"Je kunt elke add-on uit de categorie %(cat)s voor het product %(base)s " +"maximaal één keer selecteren." #: pretix/base/services/cart.py:215 -#, fuzzy -#| msgid "" -#| "One of the products you selected can only be bought as an add-on to " -#| "another project." msgid "" "One of the products you selected can only be bought as an add-on to another " "product." @@ -9089,38 +8801,28 @@ msgid "Only allowed after {datetime}" msgstr "Alleen toegestaan vanaf {datetime}" #: pretix/base/services/checkin.py:279 -#, fuzzy -#| msgid "Attendee street" msgid "Attendee is checked out" -msgstr "Adres gast: straat" +msgstr "Deelnemer is uitgecheckt" #: pretix/base/services/checkin.py:281 -#, fuzzy -#| msgid "Automatically checked in" msgid "Attendee is already checked in" -msgstr "Automatisch ingecheckt" +msgstr "Deelnemer is al ingecheckt" #: pretix/base/services/checkin.py:286 msgid "Ticket type not allowed" msgstr "Kaartjestype niet toegestaan" #: pretix/base/services/checkin.py:289 -#, fuzzy -#| msgid "Create a new gate" msgid "Wrong entrance gate" -msgstr "Nieuwe toegangslocatie aanmaken" +msgstr "Verkeerde ingang" #: pretix/base/services/checkin.py:313 -#, fuzzy -#| msgid "Waiting list entry" msgid "time since last entry" -msgstr "Wachtlijstitem" +msgstr "tijd sinds laatste binnenkomst" #: pretix/base/services/checkin.py:314 -#, fuzzy -#| msgid "Waiting list entry" msgid "time since first entry" -msgstr "Wachtlijstitem" +msgstr "tijd sinds eerste binnenkomst" #: pretix/base/services/checkin.py:315 msgid "number of days with an entry" @@ -9135,34 +8837,28 @@ msgid "number of entries today" msgstr "aantal binnenkomsten vandaag" #: pretix/base/services/checkin.py:318 -#, fuzzy, python-brace-format -#| msgid "number of entries today" +#, python-brace-format msgid "number of entries since {datetime}" -msgstr "aantal binnenkomsten vandaag" +msgstr "aantal binnenkomsten sinds {datetime}" #: pretix/base/services/checkin.py:319 -#, fuzzy, python-brace-format -#| msgid "number of entries today" +#, python-brace-format msgid "number of entries before {datetime}" -msgstr "aantal binnenkomsten vandaag" +msgstr "aantal binnenkomsten voor {datetime}" #: pretix/base/services/checkin.py:320 -#, fuzzy, python-brace-format -#| msgid "number of entries today" +#, python-brace-format msgid "number of days with an entry since {datetime}" -msgstr "aantal binnenkomsten vandaag" +msgstr "aantal dagen met binnenkomsten sinds {datetime}" #: pretix/base/services/checkin.py:321 -#, fuzzy, python-brace-format -#| msgid "number of entries today" +#, python-brace-format msgid "number of days with an entry before {datetime}" -msgstr "aantal binnenkomsten vandaag" +msgstr "aantal dagen met binnenkomsten voor {datetime}" #: pretix/base/services/checkin.py:322 -#, fuzzy -#| msgid "Weekend day" msgid "week day" -msgstr "Weekenddag" +msgstr "weekdag" #: pretix/base/services/checkin.py:358 pretix/control/forms/filter.py:1394 msgid "Monday" @@ -9213,28 +8909,22 @@ msgid "This order position has been canceled." msgstr "Dit kaartje is geannuleerd." #: pretix/base/services/checkin.py:981 -#, fuzzy -#| msgid "This ticket has already been redeemed." msgid "This ticket has been blocked." -msgstr "Dit kaartje is al gebruikt." +msgstr "Dit ticket is geblokkeerd." #: pretix/base/services/checkin.py:990 -#, fuzzy -#| msgid "This order is not pending approval." msgid "This order is not yet approved." -msgstr "Deze bestelling wacht niet op goedkeuring." +msgstr "Deze bestelling is nog niet goedgekeurd." #: pretix/base/services/checkin.py:999 pretix/base/services/checkin.py:1003 -#, fuzzy, python-brace-format -#| msgid "Only allowed after {datetime}" +#, python-brace-format msgid "This ticket is only valid after {datetime}." -msgstr "Alleen toegestaan vanaf {datetime}" +msgstr "Dit ticket is alleen geldig na {datetime}." #: pretix/base/services/checkin.py:1013 pretix/base/services/checkin.py:1017 -#, fuzzy, python-brace-format -#| msgid "This ticket has already been redeemed." +#, python-brace-format msgid "This ticket was only valid before {datetime}." -msgstr "Dit kaartje is al gebruikt." +msgstr "Dit ticket was alleen geldig vóór {datetime}." #: pretix/base/services/checkin.py:1048 msgid "This order position has an invalid product for this check-in list." @@ -9266,10 +8956,8 @@ msgid "This ticket has already been redeemed." msgstr "Dit kaartje is al gebruikt." #: pretix/base/services/currencies.py:38 pretix/base/services/currencies.py:39 -#, fuzzy -#| msgid "European Union" msgid "European Central Bank" -msgstr "Europese Unie" +msgstr "Europese Centrale Bank" #: pretix/base/services/currencies.py:40 msgid "Czech National Bank" @@ -9281,22 +8969,16 @@ msgid "Your export did not contain any data." msgstr "Je export bevatte geen gegevens." #: pretix/base/services/export.py:156 -#, fuzzy -#| msgid "You do not have permission to perform this action." msgid "You do not have sufficient permission to perform this export." -msgstr "Je hebt geen toestemming om deze actie uit te voeren." +msgstr "Je hebt te weinig rechten om deze export uit te voeren." #: pretix/base/services/export.py:198 -#, fuzzy -#| msgid "Exported files" msgid "Export failed" -msgstr "Geëxporteerde bestanden" +msgstr "Export mislukt" #: pretix/base/services/export.py:215 -#, fuzzy -#| msgid "Permission denied" msgid "Permission denied." -msgstr "Geen toestemming" +msgstr "Toegang geweigerd." #: pretix/base/services/export.py:234 msgid "Your exported data exceeded the size limit for scheduled exports." @@ -9327,11 +9009,10 @@ msgstr "" "{country}" #: pretix/base/services/invoices.py:238 pretix/base/services/invoices.py:281 -#, fuzzy, python-brace-format -#| msgid "Event location" +#, python-brace-format msgctxt "invoice" msgid "Event location: {location}" -msgstr "Evenementlocatie" +msgstr "Evenementlocatie: {location}" #: pretix/base/services/invoices.py:254 #, python-brace-format @@ -9373,14 +9054,7 @@ msgid "New invoice: {number}" msgstr "Nieuwe factuur: {number}" #: pretix/base/services/invoices.py:684 -#, fuzzy, python-brace-format -#| msgid "" -#| "Hello,\n" -#| "\n" -#| "a new invoice for {event} has been created, see attached.\n" -#| "\n" -#| "We are sending this email because you configured us to do so in your " -#| "event settings." +#, python-brace-format msgid "" "Hello,\n" "\n" @@ -9391,16 +9065,16 @@ msgid "" msgstr "" "Hallo,\n" "\n" -"Er is een nieuwe factuur voor {event} aangemaakt, zie bijlage.\n" +"Er is een nieuwe factuur voor bestelling {order} voor {event} aangemaakt, " +"zie bijlage.\n" "\n" "Je ontvangt deze e-mail omdat je in jouw evenementsinstellingen hebt " "aangegeven deze e-mails te willen ontvangen." #: pretix/base/services/mail.py:127 -#, fuzzy -#| msgid "The selected product is not active or has no price set." msgid "This prefix has been set in your event or organizer settings." -msgstr "Het gekozen product is niet actief of heeft geen ingestelde prijs." +msgstr "" +"Dit voorvoegsel is ingesteld in je evenement- of organisatorinstellingen." #: pretix/base/services/mail.py:284 #, python-brace-format @@ -9428,11 +9102,9 @@ msgstr "" "evenement {event}." #: pretix/base/services/mail.py:494 -#, fuzzy -#| msgid "resend invite" msgctxt "attachment_filename" msgid "Calendar invite" -msgstr "Stuur uitnodiging opnieuw" +msgstr "Agenda-uitnodiging" #: pretix/base/services/memberships.py:108 #, python-brace-format @@ -9464,33 +9136,28 @@ msgid "You selected membership that has been canceled." msgstr "Het lidmaadschap dat je hebt geselecteerd is geannuleerd." #: pretix/base/services/memberships.py:159 -#, fuzzy -#| msgid "You can only use a test mode membership for test mode tickets." msgid "" "You can not use a test mode membership for tickets that are not in test mode." msgstr "" -"Je kunt alleen test-lidmaatschappen gebruiken voor tickets in de testmodus." +"Je kunt geen testmoduslidmaatschap gebruiken voor tickets die niet in de " +"testmodus staan." #: pretix/base/services/memberships.py:163 -#, fuzzy -#| msgid "You can only use a test mode membership for test mode tickets." msgid "" "You need to add a test mode membership to the customer account to use it in " "test mode." msgstr "" -"Je kunt alleen test-lidmaatschappen gebruiken voor tickets in de testmodus." +"Je moet een testmoduslidmaatschap toevoegen aan het klantenaccount om het in " +"de testmodus te kunnen gebruiken." #: pretix/base/services/memberships.py:179 -#, fuzzy, python-brace-format -#| msgid "" -#| "You selected a membership that is valid from {start} to {end}, but " -#| "selected an event taking place at {date}." +#, python-brace-format msgid "" "You selected a membership that is valid from {start} to {end}, but selected " "a ticket that starts to be valid on {date}." msgstr "" -"Je koos een lidmaatschap dat geldig is van {start} tot {end}, maar het " -"gekozen evenement vindt plaats op {date}." +"Je koos een lidmaatschap dat geldig is van {start} tot {end}, maar koos een " +"ticket dat geldig wordt op {date}." #: pretix/base/services/memberships.py:188 #, python-brace-format @@ -9520,34 +9187,27 @@ msgstr "" "gebruiken." #: pretix/base/services/memberships.py:227 -#, fuzzy, python-brace-format -#| msgid "" -#| "You are trying to use a membership of type \"{type}\" for an event taking " -#| "place at {date}, however you already used the same membership for a " -#| "different ticket at the same time." +#, python-brace-format msgid "" "You are trying to use a membership of type \"{type}\" for a ticket valid " "from {valid_from} until {valid_until}, however you already used the same " "membership for a different ticket that overlaps with this time frame " "({conflict_from} – {conflict_until})." msgstr "" -"Je probeert een lidmaatschap van type \"{type}\" te gebruiken voor een " -"evenement dat plaatsvindt op \"{date}\", maar je hebt dit lidmaatschap al " -"gebruikt voor een ander kaartje op dezelfde tijd." +"Je probeert een lidmaatschap van het type \"{type}\"te gebruiken voor een " +"ticket geldig van {valid_from} tot {valid_until}, maar je hebt hetzelfde " +"lidmaatschap al gebruikt voor een ander ticket dat overlapt met dit " +"tijdsbestek ({conflict_from} – {conflict_until})." #: pretix/base/services/memberships.py:231 #: pretix/base/services/memberships.py:233 -#, fuzzy -#| msgid "Start date" msgid "start" -msgstr "Begindatum" +msgstr "begin" #: pretix/base/services/memberships.py:232 #: pretix/base/services/memberships.py:234 -#, fuzzy -#| msgid "Event end" msgid "open end" -msgstr "Einde van het evenement" +msgstr "open einde" #: pretix/base/services/memberships.py:244 #, python-brace-format @@ -9605,11 +9265,8 @@ msgid "Invalid data in row {row}: {message}" msgstr "Ongeldige gegevens in rij {row}: {message}" #: pretix/base/services/modelimport.py:270 -#, fuzzy -#| msgid "A voucher can not be deleted if it already has been redeemed." msgid "A voucher cannot be created without a code." -msgstr "" -"Een voucher kan niet worden verwijderd wanneer de voucher al is verzilverd." +msgstr "Zonder code kan er geen voucher worden aangemaakt." #: pretix/base/services/orders.py:137 msgid "" @@ -9667,10 +9324,8 @@ msgstr[1] "" "We hebben het overschot uit je winkelwagen verwijderd." #: pretix/base/services/orders.py:166 -#, fuzzy -#| msgid "The presale period has ended." msgid "The booking period has ended." -msgstr "De verkoopperiode is afgelopen." +msgstr "De boekingsperiode is verstreken." #: pretix/base/services/orders.py:172 msgid "" @@ -9716,10 +9371,9 @@ msgstr "" "niet geldig voor dit item. We hebben dit item uit je winkelwagen verwijderd." #: pretix/base/services/orders.py:187 -#, fuzzy -#| msgid "You need a valid voucher code to order this product." msgid "You need a valid voucher code to order one of the products." -msgstr "Je hebt een geldige vouchercode nodig om dit product te bestellen." +msgstr "" +"Je hebt een geldige vouchercode nodig om een van deze producten te bestellen." #: pretix/base/services/orders.py:188 msgid "" @@ -9738,28 +9392,20 @@ msgstr "" "tussentijd bezet geworden. We hebben dit item uit je winkelwagen verwijderd." #: pretix/base/services/orders.py:205 -#, fuzzy, python-format -#| msgid "" -#| "You cannot delete the product %(item)s because it " -#| "already has been ordered." +#, python-format msgid "" "You cannot remove the position %(addon)s since it has already been checked " "in." msgstr "" -"Je kan het product %(item)s niet verwijderen, omdat het al " -"is besteld." +"Je kunt de positie %(addon)s niet verwijderen, omdat deze al is ingecheckt." #: pretix/base/services/orders.py:206 -#, fuzzy -#| msgid "This gift card does not support this currency." msgid "Paid products not supported without a valid currency." -msgstr "Deze cadeaubon ondersteunt deze munteenheid niet." +msgstr "Betaalde producten worden niet ondersteund zonder een geldige valuta." #: pretix/base/services/orders.py:222 -#, fuzzy -#| msgid "The order has been canceled." msgid "The order was not canceled." -msgstr "De bestelling is geannuleerd." +msgstr "De bestelling is niet geannuleerd." #: pretix/base/services/orders.py:282 pretix/control/forms/orders.py:126 msgid "The new expiry date needs to be in the future." @@ -9784,21 +9430,15 @@ msgstr "" "gekochte cadeaubon {card} al is gebruikt." #: pretix/base/services/orders.py:617 pretix/control/forms/orders.py:219 -#, fuzzy -#| msgid "" -#| "The cancellation fee cannot be higher than the payment credit of this " -#| "order." msgid "" "The cancellation fee cannot be higher than the total amount of this order." msgstr "" -"De annuleringskosten kunnen niet hoger zijn dan het bedrag dat voor deze " -"bestelling is betaald." +"De annuleringskosten kunnen niet hoger zijn dan het totale bedrag van deze " +"bestelling." #: pretix/base/services/orders.py:1011 -#, fuzzy -#| msgid "This payment method does not support automatic refunds." msgid "The selected payment methods do not cover the total balance." -msgstr "Deze betalingsmethode ondersteunt geen automatische terugbetalingen." +msgstr "De geselecteerde betaalmethoden dekken niet het totale saldo." #: pretix/base/services/orders.py:1077 msgid "" @@ -9986,10 +9626,8 @@ msgid "Something happened in your event after the export, please try again." msgstr "Er is iets gebeurd in je evenement na de export, probeer het opnieuw." #: pretix/base/services/shredder.py:177 -#, fuzzy -#| msgid "Payment completed." msgid "Data shredding completed" -msgstr "Betaling voltooid." +msgstr "Gegevensvernietiging voltooid" #: pretix/base/services/stats.py:225 msgid "Uncategorized" @@ -10125,10 +9763,8 @@ msgstr "" "lidmaatschappen." #: pretix/base/settings.py:178 -#, fuzzy -#| msgid "Please enter a correct email address and password." msgid "Allow customers to log in with email address and password" -msgstr "Voer een correct e-mailadres en wachtwoord in." +msgstr "Laat klanten inloggen met hun e-mailadres en wachtwoord" #: pretix/base/settings.py:179 msgid "" @@ -10167,10 +9803,8 @@ msgstr "" "als de klant bij de aankoop niet was ingelogd." #: pretix/base/settings.py:213 -#, fuzzy -#| msgid "Disable selected" msgid "Activate re-usable media" -msgstr "Schakel geselecteerde uit" +msgstr "Herbruikbare media activeren" #: pretix/base/settings.py:214 msgid "" @@ -10183,10 +9817,8 @@ msgstr "" "verschillende tickets of cadeaubonnen kunnen worden hergebruikt." #: pretix/base/settings.py:240 -#, fuzzy -#| msgid "Length of gift card codes" msgid "Length of barcodes" -msgstr "Lengte van cadeauboncodes" +msgstr "Lengte van streepjescodes" #: pretix/base/settings.py:269 msgid "" @@ -10196,10 +9828,8 @@ msgstr "" "wordt gedetecteerd" #: pretix/base/settings.py:282 pretix/base/settings.py:313 -#, fuzzy -#| msgid "Gift card code" msgid "Gift card currency" -msgstr "Cadeauboncode" +msgstr "Valuta van cadeaubon" #: pretix/base/settings.py:300 msgid "Automatically create a new gift card if a new chip is encoded" @@ -10219,14 +9849,8 @@ msgid "Add-on products will not be counted." msgstr "Add-onproducten zullen niet worden meegeteld." #: pretix/base/settings.py:348 -#, 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 "" -"Toon nettoprijzen in plaats van brutoprijzen in de productlijst (niet " -"aanbevolen!)" +msgstr "Toon nettoprijzen in plaats van brutoprijzen in de productlijst" #: pretix/base/settings.py:349 msgid "" @@ -10257,11 +9881,8 @@ msgid "Ask for attendee names" msgstr "Vraag om namen van gasten" #: pretix/base/settings.py:380 -#, fuzzy -#| msgid "Ask for a name for all tickets which include admission to the event." msgid "Ask for a name for all personalized tickets." -msgstr "" -"Vraag een naam voor alle kaartjes die als toegangsbewijs zijn gemarkeerd." +msgstr "Vraag om een naam voor alle gepersonaliseerde tickets." #: pretix/base/settings.py:389 msgid "Require attendee names" @@ -10276,16 +9897,6 @@ msgid "Ask for email addresses per ticket" msgstr "Vraag om e-mailadressen per kaartje" #: pretix/base/settings.py:401 -#, fuzzy -#| msgid "" -#| "Normally, pretix asks for one email address per order and the order " -#| "confirmation will be sent only to that email address. If you enable this " -#| "option, the system will additionally ask for individual email addresses " -#| "for every admission ticket. This might be useful if you want to obtain " -#| "individual addresses for every attendee even in case of group orders. " -#| "However, pretix will send the order confirmation by default only to the " -#| "one primary email address, not to the per-attendee addresses. You can " -#| "however enable this in the Email settings." msgid "" "Normally, pretix asks for one email address per order and the order " "confirmation will be sent only to that email address. If you enable this " @@ -10298,32 +9909,27 @@ msgid "" msgstr "" "Normaal gesproken vraagt pretix om één e-mailadres per bestelling, en wordt " "de orderbevestiging alleen naar dat emailadres verstuurd. Als je deze optie " -"inschakelt zal het systeem ook om e-mailadressen voor ieder toegangsbewijs " -"vragen. Dit zou nuttig kunnen zijn als je losse adressen wilt verzamelen " -"voor iedere gast bij groepsbestellingen. De orderbevestiging zal nog steeds " -"standaard alleen naar het primaire e-mailadres verstuurd worden, en niet aan " -"de adressen op ieder kaartje. De bevestiging sturen naar de adressen op elk " -"kaartje is in te schakelen in de e-mailinstellingen." +"inschakelt zal het systeem ook om e-mailadressen voor ieder gepersonaliseerd " +"ticket vragen. Dit zou nuttig kunnen zijn als je losse adressen wilt " +"verzamelen voor iedere gast bij groepsbestellingen. De orderbevestiging zal " +"nog steeds standaard alleen naar het primaire e-mailadres verstuurd worden, " +"en niet aan de adressen op ieder kaartje. De bevestiging sturen naar de " +"adressen op elk kaartje is in te schakelen in de e-mailinstellingen." #: pretix/base/settings.py:415 msgid "Require email addresses per ticket" msgstr "Verplicht e-mailadressen per kaartje" #: pretix/base/settings.py:416 -#, fuzzy -#| msgid "" -#| "Require customers to fill in individual email addresses for all admission " -#| "tickets. See the above option for more details. One email address for the " -#| "order confirmation will always be required regardless of this setting." msgid "" "Require customers to fill in individual email addresses for all personalized " "tickets. See the above option for more details. One email address for the " "order confirmation will always be required regardless of this setting." msgstr "" "Verplicht klanten om losse e-mailadressen in te vullen voor alle " -"toegangsbewijzen. Zie de optie hierboven voor meer details. Een e-mailadres " -"voor de bestelbevestiging zal altijd verplicht zijn, onafhankelijk van deze " -"instelling." +"gepersonaliseerde tickets. Zie de optie hierboven voor meer details. Een e-" +"mailadres voor de bestelbevestiging zal altijd verplicht zijn, onafhankelijk " +"van deze instelling." #: pretix/base/settings.py:428 msgid "Ask for company per ticket" @@ -10361,10 +9967,8 @@ msgid "Require a phone number per order" msgstr "Verplicht het opgeven van een telefoonnummer" #: pretix/base/settings.py:495 -#, fuzzy -#| msgid "including all taxes" msgid "Rounding of taxes" -msgstr "inclusief alle belasting" +msgstr "Afronding van belastingen" #: pretix/base/settings.py:499 msgid "" @@ -10394,10 +9998,8 @@ msgid "Show attendee names on invoices" msgstr "Toon namen van gasten op facturen" #: pretix/base/settings.py:550 -#, fuzzy -#| msgid "Show free products on invoices" msgid "Show event location on invoices" -msgstr "Toon gratis producten op facturen" +msgstr "Toon locatie van evenement op facturen" #: pretix/base/settings.py:551 msgid "" @@ -10410,10 +10012,8 @@ msgstr "" "wordt deze op elke regel weergegeven." #: pretix/base/settings.py:561 -#, fuzzy -#| msgid "Show event end date" msgid "Show exchange rates" -msgstr "Toon einddatum evenement" +msgstr "Wisselkoersen weergeven" #: pretix/base/settings.py:564 pretix/base/settings.py:572 #: pretix/control/forms/item.py:629 @@ -10442,10 +10042,8 @@ msgid "Require invoice address" msgstr "Verplicht factuuradres" #: pretix/base/settings.py:595 -#, fuzzy -#| msgid "Require a business addresses" msgid "Require a business address" -msgstr "Verplicht een adres van een bedrijf" +msgstr "Een zakelijk adres vereisen" #: pretix/base/settings.py:596 msgid "This will require users to enter a company name." @@ -10456,19 +10054,10 @@ msgid "Ask for beneficiary" msgstr "Vraag om ontvanger" #: pretix/base/settings.py:616 -#, fuzzy -#| msgid "Custom address field" msgid "Custom recipient field label" -msgstr "Aangepast adresveld" +msgstr "Label voor aangepast ontvangerveld" #: pretix/base/settings.py:618 -#, fuzzy -#| 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 here. This label will both be used for asking the user to input " -#| "their details as well as for displaying the value on the invoice. The " -#| "field will not be required." 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 " @@ -10476,17 +10065,16 @@ msgid "" "details as well as for displaying the value on the invoice. It will be shown " "on the invoice below the headline. The field will not be required." msgstr "" -"Als je een eigen veld wilt toevoegen aan het adresformulier voor facturen " -"kan je hier een label invoeren. Dit label zal worden gebruikt in het " -"formulier waar de gebruiker de gegevens invoert en om op de facturen de " -"ingevulde waarde te tonen. Deze waarde zal niet verplicht zijn. Deze optie " -"kan je bijvoorbeeld gebruiken voor een landspecifiek registratienummer." +"Als je een aangepast tekstveld wilt toevoegen aan je factuuradresformulier, " +"bijvoorbeeld voor een landspecifiek registratienummer, vul dan hier het " +"label in. Dit label wordt zowel gebruikt om de gebruiker te vragen zijn " +"gegevens in te voeren als om de waarde op de factuur weer te geven. Het " +"wordt onder de koptekst op de factuur weergegeven. Het veld is niet " +"verplicht." #: pretix/base/settings.py:631 -#, fuzzy -#| msgid "Custom address field" msgid "Custom recipient field help text" -msgstr "Aangepast adresveld" +msgstr "Hulptekst voor aangepast ontvangerveld" #: pretix/base/settings.py:633 msgid "" @@ -10616,10 +10204,9 @@ msgstr "" "en %d om de maand en dag van de factuur in te voegen." #: pretix/base/settings.py:766 pretix/base/settings.py:789 -#, fuzzy, python-brace-format -#| msgid "Please do not use special characters in names." +#, python-brace-format msgid "Please only use the characters {allowed} in this field." -msgstr "Gebruik alsjeblieft geen speciale karakters in namen." +msgstr "Gebruik alleen de tekens {allowed} in dit veld." #: pretix/base/settings.py:780 msgid "Invoice number prefix for cancellations" @@ -10640,10 +10227,8 @@ msgid "Highlight order code to make it stand out visibly" msgstr "Markeer de bestelcode om ze duidelijk te laten opvallen" #: pretix/base/settings.py:804 pretix/base/settings.py:815 -#, fuzzy -#| msgid "Only respected by modern browsers." msgid "Only respected by some invoice renderers." -msgstr "Wordt alleen gebruikt door moderne browsers." +msgstr "Alleen gerespecteerd door sommige factuurverwerkers." #: pretix/base/settings.py:814 pretix/base/settings.py:3091 #: pretix/control/templates/pretixcontrol/pdf/index.html:436 @@ -10804,10 +10389,8 @@ msgstr "" "door andere klanten." #: pretix/base/settings.py:1028 -#, fuzzy -#| msgid "Expiration date" msgid "Expiration delay" -msgstr "Verloopdatum" +msgstr "Verlengingstermijn" #: pretix/base/settings.py:1029 msgid "" @@ -10839,17 +10422,16 @@ msgstr "" "de gasten die hun kaartjes niet zelf hebben gekocht." #: pretix/base/settings.py:1067 -#, fuzzy 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 " "shown this page again and you can either redeem another gift card or select " "a different payment method for the difference." msgstr "" -"Als je een cadeaubon hebt kan je hier je cadeauboncode invoeren. Als de " -"cadeaubon onvoldoende saldo heeft om voor de hele bestelling te betalen zal " -"je deze pagina opnieuw te zien krijgen, en kan je een andere cadeaubon " -"gebruiken of een andere betalingsmethode kiezen voor het restbedrag." +"Als je een cadeaubon hebt, voer dan hier de code van de cadeaubon in. Als de " +"cadeaubon niet voldoende saldo heeft om de volledige bestelling te betalen, " +"wordt deze pagina opnieuw weergegeven en kun je een andere cadeaubon " +"inwisselen of een andere betaalmethode selecteren voor het verschil." #: pretix/base/settings.py:1083 msgid "Accept late payments" @@ -10876,23 +10458,17 @@ msgstr "Toon de startdatum van de verkoop voor de verkoop is begonnen." #: pretix/base/settings.py:1107 pretix/base/settings.py:1115 #: pretix/base/settings.py:1129 pretix/base/settings.py:1138 -#, fuzzy -#| msgid "Default price" msgid "Use default tax rate" -msgstr "Standaardprijs" +msgstr "Standaard belastingtarief gebruiken" #: pretix/base/settings.py:1108 pretix/base/settings.py:1116 #: pretix/base/settings.py:1127 pretix/base/settings.py:1136 -#, fuzzy -#| msgid "Charge updated." msgid "Charge no taxes" -msgstr "Transactie bijgewerkt." +msgstr "Geen belastingen heffen" #: pretix/base/settings.py:1112 -#, fuzzy -#| msgid "Tax rule for payment fees" msgid "Tax handling on payment fees" -msgstr "Belastingregel voor betalingstoeslagen" +msgstr "Belastingafhandeling op betalingskosten" #: pretix/base/settings.py:1128 pretix/base/settings.py:1137 msgid "Use same taxes as order positions (split according to net prices)" @@ -10901,10 +10477,8 @@ msgstr "" "nettoprijzen)" #: pretix/base/settings.py:1133 -#, fuzzy -#| msgid "Keep a fixed cancellation fee" msgid "Tax handling on cancellation fees" -msgstr "Houd een vast bedrag als annuleringskosten in" +msgstr "Belastingafhandeling bij annuleringskosten" #: pretix/base/settings.py:1149 pretix/base/settings.py:1161 msgid "Do not generate invoices" @@ -10919,10 +10493,8 @@ msgid "Automatically on user request" msgstr "Automatisch op verzoek gebruiker" #: pretix/base/settings.py:1152 pretix/base/settings.py:1165 -#, fuzzy -#| msgid "Automatically on user request" msgid "Automatically on user request for paid orders" -msgstr "Automatisch op verzoek gebruiker" +msgstr "Automatisch op verzoek van de gebruiker voor betaalde bestellingen" #: pretix/base/settings.py:1153 msgid "Automatically for all created orders" @@ -10937,16 +10509,12 @@ msgid "Generate invoices" msgstr "Genereer facturen" #: pretix/base/settings.py:1162 -#, fuzzy -#| msgid "Automatically on payment or when required by payment method" msgid "Automatically after payment or when required by payment method" -msgstr "Automatisch na betaling of wanneer verplicht door de betalingsmethode" +msgstr "Automatisch na betaling of wanneer vereist door de betaalmethode" #: pretix/base/settings.py:1163 -#, fuzzy -#| msgid "Automatically for all created orders" msgid "Automatically before payment for all created orders" -msgstr "Automatisch voor alle aangemaakte bestellingen" +msgstr "Automatisch vóór betaling voor alle aangemaakte bestellingen" #: pretix/base/settings.py:1168 msgid "Invoices will never be automatically generated for free orders." @@ -10971,11 +10539,8 @@ msgid "Invoice date" msgstr "Factuurdatum" #: pretix/base/settings.py:1186 -#, fuzzy -#| msgctxt "subevent" -#| msgid "Date ordering" msgid "Date of service" -msgstr "Sorteren op datum" +msgstr "Datum van dienstverlening" #: pretix/base/settings.py:1195 msgid "" @@ -11016,10 +10581,8 @@ msgstr "" "altijd een nieuwe factuur te sturen wanneer een aanpassing noodzakelijk is." #: pretix/base/settings.py:1234 -#, fuzzy -#| msgid "Business customers" msgid "Only issue invoices to business customers" -msgstr "Zakelijke klanten" +msgstr "Facturen alleen versturen naar zakelijke klanten" #: pretix/base/settings.py:1243 msgid "Address line" @@ -11158,10 +10721,8 @@ msgstr "" "verschillende landen gesproken worden (zoals Engels)." #: pretix/base/settings.py:1486 -#, fuzzy -#| msgid "This is not an event series." msgid "This shop represents an event" -msgstr "Dit is geen evenementenreeks." +msgstr "Deze winkel vertegenwoordigt een evenement" #: pretix/base/settings.py:1488 msgid "" @@ -11268,10 +10829,8 @@ msgstr "" "aan de volgende persoon op de lijst." #: pretix/base/settings.py:1601 -#, fuzzy -#| msgid "Enable waiting list" msgid "Disable waiting list" -msgstr "Wachtlijst inschakelen" +msgstr "Wachtlijst uitschakelen" #: pretix/base/settings.py:1602 msgid "" @@ -11335,10 +10894,8 @@ msgstr "" "hoe je de verzamelde telefoonnummers zal gebruiken." #: pretix/base/settings.py:1671 -#, fuzzy -#| msgid "Maximum number of items per order" msgid "Maximum number of entries per email address for the same product" -msgstr "Maximale aantal producten per bestelling" +msgstr "Maximaal aantal items per e-mailadres voor hetzelfde product" #: pretix/base/settings.py:1675 msgid "" @@ -11355,10 +10912,8 @@ msgstr "" "geeft op één ticket per keer." #: pretix/base/settings.py:1687 -#, fuzzy -#| msgid "Show number of tickets left" msgid "Show number of check-ins to customer" -msgstr "Toon resterend aantal kaartjes" +msgstr "Aantal check-ins aan klant tonen" #: pretix/base/settings.py:1688 msgid "" @@ -11400,25 +10955,19 @@ msgstr "" "van de datums het toestaat." #: pretix/base/settings.py:1723 -#, fuzzy -#| msgid "Generate tickets for add-on products" msgid "Generate tickets for add-on products and bundled products" -msgstr "Genereer kaartjes voor add-onproducten" +msgstr "Tickets genereren voor add-on-producten en gebundelde producten" #: pretix/base/settings.py:1724 -#, fuzzy -#| msgid "" -#| "By default, tickets are only issued for products selected individually, " -#| "not for add-on products. With this option, a separate ticket is issued " -#| "for every add-on product as well." 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 "" -"Standaard worden kaartjes alleen gegenereerd voor individueel geselecteerde " -"producten, en niet voor add-onproducten. Als deze optie is ingeschakeld " -"wordt er ook een kaartje gegenereerd voor elk add-onproduct." +"Standaard worden tickets alleen uitgegeven voor afzonderlijk geselecteerde " +"producten, niet voor add-on-producten of gebundelde producten. Met deze " +"optie wordt ook voor elk add-on-product of gebundeld product een apart " +"ticket uitgegeven." #: pretix/base/settings.py:1737 msgid "Generate tickets for all products" @@ -11467,10 +11016,8 @@ msgstr "" "bestellingen via andere verkoopkanalen dan de online kaartjeswinkel." #: pretix/base/settings.py:1779 -#, fuzzy -#| msgid "Quota availabilities" msgid "Low availability threshold" -msgstr "Quota beschikbaarheid" +msgstr "Drempel voor lage beschikbaarheid" #: pretix/base/settings.py:1780 msgid "" @@ -11526,18 +11073,16 @@ msgstr "" "maand- of weekkalender worden gebruikt." #: pretix/base/settings.py:1829 -#, fuzzy -#| msgid "Hide all unavailable dates from calendar or list views" msgid "Show filter options for calendar or list view" -msgstr "Verberg alle niet beschikbare datums uit kalender- en lijstweergaven" +msgstr "Filteropties voor kalender- of lijstweergave weergeven" #: pretix/base/settings.py:1830 -#, fuzzy -#| msgid "The selected product is not active or has no price set." msgid "" "You can set up possible filters as meta properties in your organizer " "settings." -msgstr "Het gekozen product is niet actief of heeft geen ingestelde prijs." +msgstr "" +"Je kunt mogelijke filters instellen als meta-eigenschappen in je " +"organisatorinstellingen." #: pretix/base/settings.py:1839 msgid "Hide all unavailable dates from calendar or list views" @@ -11552,22 +11097,18 @@ msgstr "" "evenementenreeks, niet op de kalender van de organisator." #: pretix/base/settings.py:1850 -#, fuzzy -#| msgid "Hide all unavailable dates from calendar or list views" msgid "Hide all past dates from calendar" -msgstr "Verberg alle niet beschikbare datums uit kalender- en lijstweergaven" +msgstr "Alle voorbije data uit de kalender verbergen" #: pretix/base/settings.py:1862 pretix/base/settings.py:1871 msgid "No modifications after order was submitted" msgstr "Geen wijzigingen na het plaatsen van de bestelling" #: pretix/base/settings.py:1863 pretix/base/settings.py:1872 -#, fuzzy -#| msgid "Only pending or paid orders can be changed." msgid "Only the person who ordered can make changes" msgstr "" -"Alleen openstaande bestellingen of betaalde bestellingen kunnen worden " -"veranderd." +"Alleen de persoon die de bestelling heeft geplaatst, kan wijzigingen " +"aanbrengen." #: pretix/base/settings.py:1864 pretix/base/settings.py:1873 msgid "Both the attendee and the person who ordered can make changes" @@ -11576,11 +11117,8 @@ msgstr "" "wijzigingen aanbrengen" #: pretix/base/settings.py:1868 -#, fuzzy -#| msgid "Allow customers to modify their information after they checked in." msgid "Allow customers to modify their information" -msgstr "" -"Sta klanten toe om hun informatie aan te passen nadat ze ingecheckt zijn." +msgstr "Klanten toestaan hun gegevens te wijzigen" #: pretix/base/settings.py:1883 msgid "Allow customers to modify their information after they checked in." @@ -11617,10 +11155,8 @@ msgstr "" "Klanten kunnen de variant van de producten die ze hebben gekozen veranderen" #: pretix/base/settings.py:1915 -#, fuzzy -#| msgid "Customers can cancel their paid orders" msgid "Customers can change their selected add-on products" -msgstr "Klanten kunnen hun betaalde bestellingen annuleren" +msgstr "Klanten kunnen hun geselecteerde add-on producten wijzigen" #: pretix/base/settings.py:1925 pretix/base/settings.py:1936 msgid "" @@ -11667,10 +11203,8 @@ msgid "Do not allow changes after" msgstr "Sta wijzigingen alleen toe tot" #: pretix/base/settings.py:1961 -#, fuzzy -#| msgid "The payment for this invoice has already been received." msgid "Allow change even though the ticket has already been checked in" -msgstr "De betaling voor deze factuur is al ontvangen." +msgstr "Wijzigingen toestaan, ook al is het ticket al ingecheckt" #: pretix/base/settings.py:1962 msgid "" @@ -11711,10 +11245,8 @@ msgid "Customers can cancel their unpaid orders" msgstr "Klanten kunnen hun onbetaalde bestellingen annuleren" #: pretix/base/settings.py:1999 -#, fuzzy -#| msgid "Keep a fixed cancellation fee" msgid "Charge a fixed cancellation fee" -msgstr "Houd een vast bedrag als annuleringskosten in" +msgstr "Breng vaste annuleringskosten in rekening" #: pretix/base/settings.py:2000 pretix/base/settings.py:2011 #: pretix/base/settings.py:2025 @@ -11729,16 +11261,12 @@ msgstr "" "annuleringskosten bij de gebruiker te claimen." #: pretix/base/settings.py:2010 -#, fuzzy -#| msgid "Keep payment, shipping and service fees" msgid "Charge payment, shipping and service fees" -msgstr "Houd betalings-, verzend- en servicekosten in" +msgstr "Kosten voor betaling, verzending en service aanrekenen" #: pretix/base/settings.py:2024 -#, fuzzy -#| msgid "Keep a percentual cancellation fee" msgid "Charge a percentual cancellation fee" -msgstr "Houd een percentage van het bedrag in als annuleringskosten" +msgstr "Een percentage annuleringskosten in rekening brengen" #: pretix/base/settings.py:2035 pretix/base/settings.py:2174 msgid "Do not allow cancellations after" @@ -11863,10 +11391,8 @@ msgid "Refund method" msgstr "Terugbetalingsmethode" #: pretix/base/settings.py:2183 pretix/base/settings.py:2196 -#, fuzzy -#| msgid "Generate cancellation" msgid "Terms of cancellation" -msgstr "Genereer annulering" +msgstr "Annuleringsvoorwaarden" #: pretix/base/settings.py:2186 msgid "" @@ -11915,34 +11441,25 @@ msgid "Privacy Policy URL" msgstr "URL privacybeleid" #: pretix/base/settings.py:2230 -#, fuzzy -#| msgid "" -#| "This should point e.g. to a part of your website that has your contact " -#| "details and legal information." msgid "" "This should point e.g. to a part of your website that explains how you use " "data gathered in your ticket shop." msgstr "" -"Dit zou bijvoorbeeld naar een deel van je website moeten wijzen dat jouw " -"contactinformatie en eventuele wettelijk verplichte informatie bevat." +"Dit moet bijvoorbeeld verwijzen naar een deel van je website waarop wordt " +"uitgelegd hoe je de gegevens gebruikt die in je ticketwinkel worden " +"verzameld." #: pretix/base/settings.py:2241 -#, fuzzy -#| msgid "Account information changed" msgid "Accessibility information URL" -msgstr "Accountinformatie gewijzigd" +msgstr "URL toegankelijkheidsinformatie" #: pretix/base/settings.py:2242 -#, fuzzy -#| msgid "" -#| "This should point e.g. to a part of your website that has your contact " -#| "details and legal information." msgid "" "This should point e.g. to a part of your website that explains how your " "ticket shop complies with accessibility regulation." msgstr "" -"Dit zou bijvoorbeeld naar een deel van je website moeten wijzen dat jouw " -"contactinformatie en eventuele wettelijk verplichte informatie bevat." +"Dit moet bijvoorbeeld verwijzen naar een deel van je website waarop wordt " +"uitgelegd hoe je ticketwinkel voldoet aan de toegankelijkheidsvoorschriften." #: pretix/base/settings.py:2249 #: pretix/presale/templates/pretixpresale/event/base.html:228 @@ -11950,22 +11467,16 @@ msgstr "" #: pretix/presale/templates/pretixpresale/organizers/accessibility.html:6 #: pretix/presale/templates/pretixpresale/organizers/base.html:106 #: pretix/presale/templates/pretixpresale/organizers/base.html:111 -#, fuzzy -#| msgid "Account information changed" msgid "Accessibility information" -msgstr "Accountinformatie gewijzigd" +msgstr "Toegankelijkheidsinformatie" #: pretix/base/settings.py:2253 -#, fuzzy -#| msgid "Account information changed" msgid "Accessibility information title" -msgstr "Accountinformatie gewijzigd" +msgstr "Toegankelijkheidsinformatie titel" #: pretix/base/settings.py:2263 -#, fuzzy -#| msgid "Account information changed" msgid "Accessibility information text" -msgstr "Accountinformatie gewijzigd" +msgstr "Toegankelijkheidsinformatie tekst" #: pretix/base/settings.py:2284 msgid "Attach ticket files" @@ -12008,10 +11519,8 @@ msgstr "" "bevestigd." #: pretix/base/settings.py:2317 -#, fuzzy -#| msgid "Product description" msgid "Event description" -msgstr "Productomschrijving" +msgstr "Beschrijving van het evenement" #: pretix/base/settings.py:2320 msgid "" @@ -12239,10 +11748,8 @@ msgstr "" "De organisatie van {event}" #: pretix/base/settings.py:2491 -#, fuzzy -#| msgid "Split into new order" msgid "Attachment for new orders" -msgstr "Splitsen naar nieuwe bestelling" +msgstr "Bijlage voor nieuwe bestellingen" #: pretix/base/settings.py:2496 #, python-brace-format @@ -12429,19 +11936,7 @@ msgid "Your order is pending payment: {code}" msgstr "Je bestelling wacht op betaling: {code}" #: pretix/base/settings.py:2626 -#, fuzzy, python-brace-format -#| msgid "" -#| "Hello,\n" -#| "\n" -#| "we did not yet receive a full payment for your order for {event}.\n" -#| "Please keep in mind that we only guarantee your order if we receive\n" -#| "your payment before {expire_date}.\n" -#| "\n" -#| "You can view the payment information and the status of your order at\n" -#| "{url}\n" -#| "\n" -#| "Best regards, \n" -#| "Your {event} team" +#, python-brace-format msgid "" "Hello,\n" "\n" @@ -12454,39 +11949,25 @@ msgid "" "Best regards, \n" "Your {event} team" msgstr "" -"Hoi,\n" +"Hallo,\n" "\n" "We hebben nog geen volledige betaling ontvangen voor je bestelling voor " "{event}.\n" -"We kunnen je bestelling alleen garanderen als we de betaling ontvangen\n" -"voor {expire_date}.\n" +"Denk eraan dat je de bestelling moet betalen voor {expire_date}.\n" "\n" -"Je kan je betalingsinformatie en de status van de bestelling bekijken op " +"Je kunt de betalingsinformatie en de status van de bestelling bekijken op\n" "{url}\n" "\n" "Met vriendelijke groeten, \n" "De organisatie van {event}" #: pretix/base/settings.py:2639 -#, fuzzy, python-brace-format -#| msgid "Payment received for your order: {code}" +#, python-brace-format msgid "Incomplete payment received: {code}" -msgstr "Betaling ontvangen voor je bestelling: {code}" +msgstr "Onvolledige betaling ontvangen: {code}" #: pretix/base/settings.py:2643 -#, fuzzy, python-brace-format -#| msgid "" -#| "Hello,\n" -#| "\n" -#| "we did not yet receive a full payment for your order for {event}.\n" -#| "Please keep in mind that we only guarantee your order if we receive\n" -#| "your payment before {expire_date}.\n" -#| "\n" -#| "You can view the payment information and the status of your order at\n" -#| "{url}\n" -#| "\n" -#| "Best regards, \n" -#| "Your {event} team" +#, python-brace-format msgid "" "Hello,\n" "\n" @@ -12502,39 +11983,27 @@ msgid "" "Best regards, \n" "Your {event} team" msgstr "" -"Hoi,\n" +"Hallo,\n" "\n" -"We hebben nog geen volledige betaling ontvangen voor je bestelling voor " -"{event}.\n" -"We kunnen je bestelling alleen garanderen als we de betaling ontvangen\n" -"voor {expire_date}.\n" +"We hebben een betaling ontvangen voor je bestelling voor {event}.\n" "\n" -"Je kan je betalingsinformatie en de status van de bestelling bekijken op " +"Helaas is het ontvangen bedrag lager dan het volledige vereiste bedrag.\n" +"Je bestelling wordt daarom nog steeds als onbetaald beschouwd, aangezien er\n" +"nog een aanvullende betaling van **{pending_sum}** ontbreekt.\n" +"\n" +"Je kunt de betalingsinformatie en de status van je bestelling bekijken op\n" "{url}\n" "\n" -"Met vriendelijke groeten, \n" -"De organisatie van {event}" +"Met vriendelijke groet, \n" +"Het team van {event}" #: pretix/base/settings.py:2659 -#, fuzzy, python-brace-format -#| msgid "Payment received for your order: {code}" +#, python-brace-format msgid "Payment failed for your order: {code}" -msgstr "Betaling ontvangen voor je bestelling: {code}" +msgstr "Betaling voor je bestelling is mislukt: {code}" #: pretix/base/settings.py:2663 -#, fuzzy, python-brace-format -#| msgid "" -#| "Hello,\n" -#| "\n" -#| "we did not yet receive a full payment for your order for {event}.\n" -#| "Please keep in mind that we only guarantee your order if we receive\n" -#| "your payment before {expire_date}.\n" -#| "\n" -#| "You can view the payment information and the status of your order at\n" -#| "{url}\n" -#| "\n" -#| "Best regards, \n" -#| "Your {event} team" +#, python-brace-format msgid "" "Hello,\n" "\n" @@ -12550,18 +12019,20 @@ msgid "" "Best regards, \n" "Your {event} team" msgstr "" -"Hoi,\n" +"Hallo,\n" "\n" -"We hebben nog geen volledige betaling ontvangen voor je bestelling voor " -"{event}.\n" -"We kunnen je bestelling alleen garanderen als we de betaling ontvangen\n" -"voor {expire_date}.\n" +"Je poging om te betalen voor je bestelling voor {event} is mislukt.\n" "\n" -"Je kan je betalingsinformatie en de status van de bestelling bekijken op " +"De bestelling is nog steeds geldig en je kunt opnieuw proberen te betalen " +"met dezelfde of een andere betaalmethode. Voltooi je betaling vóór " +"{expire_date}.\n" +"\n" +"Je kunt de betaling opnieuw proberen en de status van je bestelling bekijken " +"op\n" "{url}\n" "\n" -"Met vriendelijke groeten, \n" -"De organisatie van {event}" +"Met vriendelijke groet, \n" +"Het team van {event}" #: pretix/base/settings.py:2677 #, python-brace-format @@ -12569,28 +12040,7 @@ msgid "You have been selected from the waitinglist for {event}" msgstr "Je bent geselecteerd uit de wachtlijst voor {event}" #: pretix/base/settings.py:2681 -#, fuzzy, python-brace-format -#| msgid "" -#| "Hello,\n" -#| "\n" -#| "you submitted yourself to the waiting list for {event},\n" -#| "for the product {product}.\n" -#| "\n" -#| "We now have a ticket ready for you! You can redeem it in our ticket shop\n" -#| "within the next {hours} hours by entering the following voucher code:\n" -#| "\n" -#| "{code}\n" -#| "\n" -#| "Alternatively, you can just click on the following link:\n" -#| "\n" -#| "{url}\n" -#| "\n" -#| "Please note that this link is only valid within the next {hours} hours!\n" -#| "We will reassign the ticket to the next person on the list if you do not\n" -#| "redeem the voucher within that timeframe.\n" -#| "\n" -#| "Best regards, \n" -#| "Your {event} team" +#, python-brace-format msgid "" "Hello,\n" "\n" @@ -12619,26 +12069,34 @@ msgid "" "Best regards, \n" "Your {event} team" msgstr "" -"Hoi,\n" +"Hallo,\n" "\n" -"Je hebt je aangemeld voor de wachtlijst van {event} voor het product " -"{product}.\n" +"Je hebt je aangemeld voor de wachtlijst voor {event},\n" +"voor het product {product}.\n" "\n" -"Er staat nu een kaartje voor je klaar! Je kan dit kaartje binnen {hours} uur " -"krijgen door de volgende vouchercode te gebruiken bij de bestelling:\n" +"We hebben nu een ticket voor je klaarliggen! Je kunt het binnen de komende " +"{hours} uur in onze ticketshop\n" +"inwisselen door de volgende vouchercode in te voeren:\n" "\n" "{code}\n" "\n" -"Je kan ook op de volgende link klikken:\n" +"Je kunt ook gewoon op de volgende link klikken:\n" "\n" "{url}\n" "\n" -"Deze link werkt alleen binnen de komende {hours} uren!\n" -"Het kaartje gaat naar de volgende persoon op de wachtlijst als je de voucher " -"niet binnen deze tijd gebruikt.\n" +"Let op: deze link is alleen geldig binnen de komende {hours} uur!\n" +"Als je de voucher niet binnen die termijn inwisselt,\n" +"wordt het ticket toegewezen aan de volgende persoon op de lijst.\n" "\n" -"Met vriendelijke groet,\n" -"De organisatie van {event}" +"Als je GEEN ticket meer nodig heeft, verzoeken wij je vriendelijk om op de\n" +"volgende link te klikken om ons dit te laten weten. Op die manier kunnen we " +"het ticket zo snel\n" +"mogelijk naar de volgende persoon op de wachtlijst sturen:\n" +"\n" +"{url_remove}\n" +"\n" +"Met vriendelijke groet, \n" +"Het team van {event}" #: pretix/base/settings.py:2710 #, python-brace-format @@ -12706,17 +12164,7 @@ msgstr "" "De organisatie van {event}" #: pretix/base/settings.py:2756 pretix/base/settings.py:2793 -#, fuzzy, python-brace-format -#| msgid "" -#| "Hello {attendee_name},\n" -#| "\n" -#| "a ticket for {event} has been ordered for you.\n" -#| "\n" -#| "You can view the details and status of your ticket here:\n" -#| "{url}\n" -#| "\n" -#| "Best regards, \n" -#| "Your {event} team" +#, python-brace-format msgid "" "Hello,\n" "\n" @@ -12728,15 +12176,15 @@ msgid "" "Best regards, \n" "Your {event} team" msgstr "" -"Hallo {attendee_name},\n" +"Hallo,\n" "\n" -"Er is een kaartje voor {event} voor je besteld.\n" +"We hebben een ticket voor {event} goedgekeurd.\n" "\n" -"Je kan hier de details en status van je kaartje bekijken:\n" +"Je kunt de details en status van je ticket hier bekijken:\n" "{url}\n" "\n" -"Met vriendelijke groeten, \n" -"De organisatie van {event}" +"Met vriendelijke groet, \n" +"Het team van {event}" #: pretix/base/settings.py:2768 #, python-brace-format @@ -12822,23 +12270,12 @@ msgstr "" "De organisatie van {event}" #: pretix/base/settings.py:2834 -#, fuzzy, python-brace-format -#| msgid "Invoice number" +#, python-brace-format msgid "Invoice {invoice_number}" -msgstr "Factuurnummer" +msgstr "Factuur {invoice_number}" #: pretix/base/settings.py:2838 -#, 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" @@ -12851,13 +12288,12 @@ msgid "" msgstr "" "Hallo,\n" "\n" -"Iemand heeft een lijst van je bestellingen aangevraagd voor {event}. Dit " -"zijn je bestellingen:\n" +"Bijgevoegd vind je een nieuwe factuur voor bestelling {code} voor {event}. " +"Deze bestelling is geplaatst door {order_email}.\n" "\n" -"{orders}\n" +"Met vriendelijke groet, \n" "\n" -"Met vriendelijke groeten, \n" -"Organisatie van {event}" +"Het team van {event}" #: pretix/base/settings.py:2856 pretix/base/settings.py:2872 #, python-brace-format @@ -12865,17 +12301,7 @@ msgid "Your ticket is ready for download: {code}" msgstr "Je kaartje staat klaar om te downloaden: {code}" #: pretix/base/settings.py:2860 -#, fuzzy, python-brace-format -#| msgid "" -#| "Hello {attendee_name},\n" -#| "\n" -#| " you are registered for {event}.\n" -#| "\n" -#| " If you did not do so already, you can download your ticket here:\n" -#| " {url}\n" -#| "\n" -#| " Best regards, \n" -#| " Your {event} team" +#, python-brace-format msgid "" "Hello {attendee_name},\n" "\n" @@ -12889,13 +12315,13 @@ msgid "" msgstr "" "Hallo {attendee_name},\n" "\n" -"Je bent aangemeld voor {event}.\n" +"Je bent geregistreerd voor {event}.\n" "\n" -"Je kan jouw kaartje hier downloaden als je dit nog niet hebt gedaan:\n" +"Als je dat nog niet hebt gedaan, kun je hier je ticket downloaden:\n" "{url}\n" "\n" -"Met vriendelijke groeten, \n" -"Organisatie van {event}" +"Met vriendelijke groet, \n" +"Het team van {event}" #: pretix/base/settings.py:2876 #, python-brace-format @@ -13094,13 +12520,6 @@ msgid "Header image" msgstr "Header-afbeelding" #: pretix/base/settings.py:3106 -#, fuzzy -#| msgid "" -#| "If you provide a logo image, we will by default not show your event name " -#| "and date in the page header. By default, we show your logo with a size of " -#| "up to 1140x120 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." 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 " @@ -13108,11 +12527,13 @@ 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 "" -"Als je een logo aanlevert zullen we standaard niet de naam en datum van je " -"evenement in de header tonen. We tonen je logo standaard met een resolutie " -"van maximaal 1140x120 pixels. Je kan ook met de optie hieronder deze grootte " -"aanpassen. We raden aan om geen kleine details te gebruiken op de " -"afbeelding, omdat de afbeelding zal worden geschaald op kleinere schermen." +"Als je een logoafbeelding aanlevert, zullen wij standaard de naam en datum " +"van je evenement niet in de paginakop weergeven. Als je een witte " +"achtergrond gebruikt, tonen wij je logo met een maximale afmeting van " +"1140x120 pixels. Anders is de maximale afmeting 1120x120 pixels. Je kunt de " +"afmeting vergroten met de onderstaande instelling. Wij raden je aan geen " +"kleine details op de afbeelding te gebruiken, omdat deze op kleinere " +"schermen wordt verkleind." #: pretix/base/settings.py:3127 pretix/base/settings.py:3170 msgid "Use header image in its full size" @@ -13140,13 +12561,6 @@ msgstr "" "wordt altijd de titel van het evenement weergegeven." #: pretix/base/settings.py:3150 pretix/control/forms/organizer.py:528 -#, fuzzy -#| msgid "" -#| "If you provide a logo image, we will by default not show your " -#| "organization name in the page header. By default, we show your logo with " -#| "a size of up to 1140x120 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." 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 " @@ -13154,11 +12568,13 @@ 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 "" -"Als je een logo opgeeft zullen we standaard niet je organisatienaam in de " -"paginaheader tonen. We tonen je logo standaard met een maximumgrootte van " -"1140x120 pixels. Je kan deze grootte aanpassen met de instelling hieronder. " -"We raden aan om geen kleine details op de afbeelding te gebruiken, omdat de " -"afbeelding op kleinere schermen zal worden geschaald." +"Als je een logoafbeelding aanlevert, zullen wij standaard de naam van je " +"organisatie niet in de paginakop weergeven. Als je een witte achtergrond " +"gebruikt, tonen wij je logo met een maximale afmeting van 1140x120 pixels. " +"Anders is de maximale afmeting 1120x120 pixels. Je kunt de afmeting " +"vergroten met de onderstaande instelling. Wij raden je aan geen kleine " +"details op de afbeelding te gebruiken, omdat deze op kleinere schermen wordt " +"verkleind." #: pretix/base/settings.py:3180 msgid "Use header image also for events without an individually uploaded logo" @@ -13261,18 +12677,13 @@ msgid "Attendee data explanation" msgstr "Verklaring voor dataverzameling" #: pretix/base/settings.py:3312 -#, fuzzy -#| msgid "" -#| "This text will be shown above the questions asked for every admission " -#| "product. You can use it e.g. to explain why you need information from " -#| "them." 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 "" -"Deze tekst zal boven de vragen voor elk toegangsbewijs worden getoond. Je " -"kan dit bijvoorbeeld gebruiken om uit te leggen waarom je om deze informatie " -"vraagt." +"Deze tekst wordt boven de vragen weergegeven die voor elk gepersonaliseerd " +"product worden gesteld. Je kunt deze tekst bijvoorbeeld gebruiken om uit te " +"leggen waarom je de informatie nodig hebt." #: pretix/base/settings.py:3322 msgid "Additional success message" @@ -13385,10 +12796,8 @@ msgstr "" "cookies en het gebruik van soortgelijke technologieën op je apparaat." #: pretix/base/settings.py:3539 -#, fuzzy -#| msgid "Additional text" msgid "Dialog text" -msgstr "Extra tekst" +msgstr "Dialoogtekst" #: pretix/base/settings.py:3546 msgid "" @@ -13407,38 +12816,28 @@ msgid "Secondary dialog text" msgstr "Secundaire dialoogtekst" #: pretix/base/settings.py:3560 -#, fuzzy -#| msgid "Price settings" msgid "Privacy settings" -msgstr "Prijsinstellingen" +msgstr "Privacyinstellingen" #: pretix/base/settings.py:3565 -#, fuzzy -#| msgid "Allowed titles" msgid "Dialog title" -msgstr "Te kiezen titels" +msgstr "Dialoogtitel" #: pretix/base/settings.py:3571 msgid "Accept all cookies" msgstr "Alle cookies accepteren" #: pretix/base/settings.py:3576 -#, fuzzy -#| msgid "Product variation description" msgid "\"Accept\" button description" -msgstr "Productvariantomschrijving" +msgstr "Beschrijving van de knop 'Accepteren'" #: pretix/base/settings.py:3582 -#, fuzzy -#| msgid "Required question" msgid "Required cookies only" -msgstr "Verplichte vraag" +msgstr "Alleen noodzakelijke cookies" #: pretix/base/settings.py:3587 -#, fuzzy -#| msgid "Product variation description" msgid "\"Reject\" button description" -msgstr "Productvariantomschrijving" +msgstr "Beschrijving van de knop 'Weigeren'" #: pretix/base/settings.py:3597 msgid "Customers can choose their own seats" @@ -13560,18 +12959,14 @@ msgid "MA" msgstr "Msc." #: pretix/base/settings.py:3943 pretix/base/settings.py:3945 -#, fuzzy -#| msgid "Product name" msgctxt "address" msgid "Province" -msgstr "Productnaam" +msgstr "Provincie" #: pretix/base/settings.py:3944 -#, fuzzy -#| msgid "Use feature" msgctxt "address" msgid "Prefecture" -msgstr "Gebruik functie" +msgstr "Prefectuur" #: pretix/base/settings.py:4035 pretix/control/forms/event.py:229 msgid "" @@ -13612,10 +13007,9 @@ msgstr "" "zijn." #: pretix/base/settings.py:4080 -#, 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 "Vul een geldig verkoopkanaal in." +msgstr "De waarde \"{identifier}\" is geen geldig verkoopkanaal." #: pretix/base/settings.py:4095 msgid "This needs to be disabled if other NFC-based types are active." @@ -13623,13 +13017,8 @@ msgstr "" "Dit moet worden uitgeschakeld als andere NFC-gebaseerde typen actief zijn." #: pretix/base/shredder.py:74 pretix/base/shredder.py:77 -#, fuzzy -#| msgid "" -#| "Your event needs to be over for at least 30 days to use this feature." msgid "Your event needs to be over to use this feature." -msgstr "" -"Je evenement moet ten minste 30 dagen geleden zijn afgelopen om deze functie " -"te gebruiken." +msgstr "Je evenement moet afgelopen zijn om deze functie te kunnen gebruiken." #: pretix/base/shredder.py:79 msgid "Your ticket shop needs to be offline to use this feature." @@ -13754,10 +13143,8 @@ msgstr "Probeer opnieuw" #: pretix/base/templates/400_hostname.html:4 #: pretix/base/templates/400_hostname.html:8 -#, fuzzy -#| msgid "Unknown ticket" msgid "Unknown host" -msgstr "Onbekend kaartje" +msgstr "Onbekende host" #: pretix/base/templates/400_hostname.html:10 #, python-format @@ -13780,22 +13167,16 @@ msgstr "" "verstuurt." #: pretix/base/templates/400_hostname.html:24 -#, fuzzy -#| msgid "Existing app configurations" msgid "Expected host according to configuration" -msgstr "Bestaande app-configuraties" +msgstr "Verwachte host volgens configuratie" #: pretix/base/templates/400_hostname.html:26 -#, fuzzy -#| msgid "Received order" msgid "Received headers" -msgstr "Bestelling ontvangen" +msgstr "Ontvangen headers" #: pretix/base/templates/400_hostname.html:32 -#, fuzzy -#| msgid "Ignore" msgid "ignored" -msgstr "Negeer" +msgstr "genegeerd" #: pretix/base/templates/400_hostname.html:35 msgid "Derived host from headers" @@ -13889,10 +13270,8 @@ msgstr "" "bulkterugbetaling nodig is:" #: pretix/base/templates/pretixbase/email/cancel_confirm.txt:6 -#, fuzzy -#| msgid "Initiate a refund of %(amount)s" msgid "Estimated refund amount" -msgstr "Start een terugbetaling van %(amount)s" +msgstr "Geschat terug te betalen bedrag" #: pretix/base/templates/pretixbase/email/cancel_confirm.txt:8 msgid "" @@ -13908,16 +13287,12 @@ msgid "powered by pretix" msgstr "mogelijk gemaakt door pretix" #: pretix/base/templates/pretixbase/email/export_failed.txt:2 -#, fuzzy -#| msgid "Create new export file" msgid "Your export failed." -msgstr "Maak nieuw exportbestand" +msgstr "Je export is mislukt." #: pretix/base/templates/pretixbase/email/export_failed.txt:4 -#, fuzzy -#| msgid "Refund reason" msgid "Reason:" -msgstr "Reden voor de terugbetaling" +msgstr "Reden:" #: 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." @@ -13926,11 +13301,8 @@ msgstr "" "verzonden." #: pretix/base/templates/pretixbase/email/export_failed.txt:10 -#, fuzzy -#| msgctxt "order state" -#| msgid "Confirmation pending" msgid "Configuration link:" -msgstr "Wacht op bevestiging" +msgstr "Configuratielink:" #: pretix/base/templates/pretixbase/email/notification.html:55 #: pretix/base/templates/pretixbase/email/notification.txt:14 @@ -14074,10 +13446,8 @@ msgstr "%(number)s dagen %(relation)s %(relation_to)s om %(time_of_day)s" #: pretix/base/templates/pretixbase/redirect.html:5 #: pretix/base/templates/pretixbase/redirect.html:9 -#, fuzzy -#| msgid "Redirection" msgid "Redirect" -msgstr "Doorverwijzing" +msgstr "Doorverwijzen" #: pretix/base/templates/pretixbase/redirect.html:11 #, python-format @@ -14094,10 +13464,9 @@ msgstr "" "Ga alleen verder als je ervan overtuigd bent dat deze website veilig is." #: pretix/base/templates/pretixbase/redirect.html:20 -#, fuzzy, python-format -#| msgid "Proceed with checkout" +#, python-format msgid "Proceed to %(host)s" -msgstr "Afrekenen" +msgstr "Ga verder naar %(host)s" #: pretix/base/templates/source.html:5 pretix/base/templates/source.html:9 msgid "Source code" @@ -14129,11 +13498,9 @@ msgstr "Vandaag" #: pretix/base/timeframes.py:71 pretix/base/timeframes.py:80 #: pretix/base/timeframes.py:89 pretix/base/timeframes.py:98 #: pretix/base/timeframes.py:107 -#, fuzzy -#| msgid "Orders by day" msgctxt "reporting_timeframe" msgid "by day" -msgstr "Bestellingen per dag" +msgstr "per dag" #: pretix/base/timeframes.py:58 msgctxt "reporting_timeframe" @@ -14141,18 +13508,14 @@ msgid "Yesterday" msgstr "Gisteren" #: pretix/base/timeframes.py:67 -#, fuzzy -#| msgid "Last date" msgctxt "reporting_timeframe" msgid "Last 7 days" -msgstr "Laatste datum" +msgstr "Laatste 7 dagen" #: pretix/base/timeframes.py:76 -#, fuzzy -#| msgid "Last date" msgctxt "reporting_timeframe" msgid "Last 14 days" -msgstr "Laatste datum" +msgstr "Laatste 14 dagen" #: pretix/base/timeframes.py:85 msgctxt "reporting_timeframe" @@ -14160,25 +13523,19 @@ msgid "Tomorrow" msgstr "Morgen" #: pretix/base/timeframes.py:94 -#, fuzzy -#| msgid "Number of days" msgctxt "reporting_timeframe" msgid "Next 7 days" -msgstr "Aantal dagen" +msgstr "Volgende 7 dagen" #: pretix/base/timeframes.py:103 -#, fuzzy -#| msgid "Number of days" msgctxt "reporting_timeframe" msgid "Next 14 days" -msgstr "Aantal dagen" +msgstr "Volgende 14 dagen" #: pretix/base/timeframes.py:112 -#, fuzzy -#| msgid "Current value" msgctxt "reporting_timeframe" msgid "Current week" -msgstr "Huidige waarde" +msgstr "Huidige week" #: pretix/base/timeframes.py:116 pretix/base/timeframes.py:125 #: pretix/base/timeframes.py:134 pretix/base/timeframes.py:143 @@ -14187,19 +13544,14 @@ msgid "by week" msgstr "per week" #: pretix/base/timeframes.py:121 -#, fuzzy -#| msgctxt "subevent" -#| msgid "Create date" msgctxt "reporting_timeframe" msgid "Current week to date" -msgstr "Datum aanmaken" +msgstr "Huidige week tot vandaag" #: pretix/base/timeframes.py:130 -#, fuzzy -#| msgid "Preview" msgctxt "reporting_timeframe" msgid "Previous week" -msgstr "Voorbeeld" +msgstr "Vorige week" #: pretix/base/timeframes.py:139 msgctxt "reporting_timeframe" @@ -14207,26 +13559,20 @@ msgid "Next week" msgstr "Volgende week" #: pretix/base/timeframes.py:148 -#, fuzzy -#| msgid "Currency" msgctxt "reporting_timeframe" msgid "Current month" -msgstr "Munteenheid" +msgstr "Huidige maand" #: pretix/base/timeframes.py:152 pretix/base/timeframes.py:161 #: pretix/base/timeframes.py:170 pretix/base/timeframes.py:179 -#, fuzzy -#| msgid "month(s)" msgctxt "reporting_timeframe" msgid "by month" -msgstr "maand(en)" +msgstr "per maand" #: pretix/base/timeframes.py:157 -#, fuzzy -#| msgid "Creation date" msgctxt "reporting_timeframe" msgid "Current month to date" -msgstr "Aanmaakdatum" +msgstr "Huidige maand tot vandaag" #: pretix/base/timeframes.py:166 msgctxt "reporting_timeframe" @@ -14234,18 +13580,14 @@ msgid "Previous month" msgstr "Vorige maand" #: pretix/base/timeframes.py:175 -#, fuzzy -#| msgid "Text content" msgctxt "reporting_timeframe" msgid "Next month" -msgstr "Tekstinhoud" +msgstr "Volgende maand" #: pretix/base/timeframes.py:184 -#, fuzzy -#| msgid "Current value" msgctxt "reporting_timeframe" msgid "Current quarter" -msgstr "Huidige waarde" +msgstr "Huidig kwartaal" #: pretix/base/timeframes.py:188 pretix/base/timeframes.py:197 #: pretix/base/timeframes.py:206 pretix/base/timeframes.py:217 @@ -14254,11 +13596,9 @@ msgid "by quarter" msgstr "per kwartaal" #: pretix/base/timeframes.py:193 -#, fuzzy -#| msgid "Current user's carts" msgctxt "reporting_timeframe" msgid "Current quarter to date" -msgstr "Momenteel in winkelwagens" +msgstr "Huidig kwartaal tot vandaag" #: pretix/base/timeframes.py:202 msgctxt "reporting_timeframe" @@ -14271,11 +13611,9 @@ msgid "Next quarter" msgstr "Volgend kwartaal" #: pretix/base/timeframes.py:222 -#, fuzzy -#| msgid "Current value" msgctxt "reporting_timeframe" msgid "Current year" -msgstr "Huidige waarde" +msgstr "Huidig jaar" #: pretix/base/timeframes.py:226 pretix/base/timeframes.py:235 #: pretix/base/timeframes.py:244 pretix/base/timeframes.py:253 @@ -14284,18 +13622,14 @@ msgid "by year" msgstr "per jaar" #: pretix/base/timeframes.py:231 -#, fuzzy -#| msgid "Currently for sale" msgctxt "reporting_timeframe" msgid "Current year to date" -msgstr "Momenteel te koop" +msgstr "Huidig jaar tot vandaag" #: pretix/base/timeframes.py:240 -#, fuzzy -#| msgid "Preview email" msgctxt "reporting_timeframe" msgid "Previous year" -msgstr "Toon voorbeeld email" +msgstr "Vorig jaar" #: pretix/base/timeframes.py:249 msgctxt "reporting_timeframe" @@ -14308,51 +13642,37 @@ msgid "All future (excluding today)" msgstr "Toekomst (behalve vandaag)" #: pretix/base/timeframes.py:262 pretix/base/timeframes.py:271 -#, fuzzy -#| msgid "Other" msgctxt "reporting_timeframe" msgid "Other" -msgstr "Andere" +msgstr "Overige" #: pretix/base/timeframes.py:267 -#, fuzzy -#| msgid "All products (including newly created ones)" msgctxt "reporting_timeframe" msgid "All past (including today)" -msgstr "Alle producten (inclusief nieuw gemaakte)" +msgstr "Verleden (inclusief vandaag)" #: pretix/base/timeframes.py:284 -#, fuzzy -#| msgid "Start date" msgctxt "timeframe" msgid "Start" -msgstr "Begindatum" +msgstr "Begin" #: pretix/base/timeframes.py:285 -#, fuzzy -#| msgid "Enabled" msgctxt "timeframe" msgid "End" -msgstr "Ingeschakeld" +msgstr "Einde" #: pretix/base/timeframes.py:318 -#, fuzzy -#| msgid "The end of the event has to be later than its start." msgid "The end date must be after the start date." -msgstr "Het einde van het evenement moet later zijn dan het begin." +msgstr "De einddatum moet na de begindatum liggen." #: pretix/base/timeframes.py:324 -#, fuzzy -#| msgid "Customer" msgid "Custom timeframe" -msgstr "Klant" +msgstr "Aangepast tijdsbestek" #: pretix/base/timeframes.py:326 -#, fuzzy -#| msgid "All entries" msgctxt "reporting_timeframe" msgid "All time" -msgstr "Alle items" +msgstr "Altijd" #: pretix/base/timeline.py:60 msgctxt "timeline" @@ -14389,12 +13709,9 @@ msgstr "" "voorverkoop is geconfigureerd" #: pretix/base/timeline.py:108 -#, fuzzy -#| msgctxt "timeline" -#| msgid "Customers can no longer modify their orders" msgctxt "timeline" msgid "Customers can no longer modify their order information" -msgstr "Klanten kunnen hun bestellingen niet meer aanpassen" +msgstr "Klanten kunnen hun bestelgegevens niet meer wijzigen" #: pretix/base/timeline.py:121 msgctxt "timeline" @@ -14418,19 +13735,14 @@ msgid "Customers can no longer cancel paid orders" msgstr "Klanten kunnen hun betaalde bestellingen niet meer annuleren" #: pretix/base/timeline.py:169 -#, fuzzy -#| msgctxt "timeline" -#| msgid "Customers can no longer modify their orders" msgctxt "timeline" msgid "Customers can no longer make changes to their orders" msgstr "Klanten kunnen hun bestellingen niet meer aanpassen" #: pretix/base/timeline.py:181 -#, fuzzy -#| msgid "Waiting list entry deleted" msgctxt "timeline" msgid "Waiting list is disabled" -msgstr "Wachtlijstitem verwijderd" +msgstr "Wachtlijst is uitgeschakeld" #: pretix/base/timeline.py:195 msgctxt "timeline" @@ -14452,44 +13764,34 @@ msgid "Product \"{name}\" becomes unavailable" msgstr "Product \"{name}\" wordt niet meer beschikbaar" #: pretix/base/timeline.py:257 -#, fuzzy, python-brace-format -#| msgctxt "timeline" -#| msgid "Product \"{name}\" becomes available" +#, python-brace-format msgctxt "timeline" msgid "Discount \"{name}\" becomes active" -msgstr "Product \"{name}\" wordt beschikbaar" +msgstr "Korting \"{name}\" wordt actief" #: pretix/base/timeline.py:268 -#, fuzzy, python-brace-format -#| msgctxt "timeline" -#| msgid "Product \"{name}\" becomes unavailable" +#, python-brace-format msgctxt "timeline" msgid "Discount \"{name}\" becomes inactive" -msgstr "Product \"{name}\" wordt niet meer beschikbaar" +msgstr "Korting \"{name}\" wordt inactief" #: pretix/base/timeline.py:308 -#, fuzzy, python-brace-format -#| msgctxt "timeline" -#| msgid "Product \"{name}\" becomes available" +#, python-brace-format msgctxt "timeline" msgid "Product variation \"{product} – {variation}\" becomes available" -msgstr "Product \"{name}\" wordt beschikbaar" +msgstr "Productvariant \"{product} – {variation}\" komt beschikbaar" #: pretix/base/timeline.py:322 -#, fuzzy, python-brace-format -#| msgctxt "timeline" -#| msgid "Product \"{name}\" becomes unavailable" +#, python-brace-format msgctxt "timeline" msgid "Product variation \"{product} – {variation}\" becomes unavailable" -msgstr "Product \"{name}\" wordt niet meer beschikbaar" +msgstr "Productvariant \"{product} – {variation}\" is niet meer beschikbaar" #: pretix/base/timeline.py:353 -#, fuzzy, python-brace-format -#| msgctxt "timeline" -#| msgid "Payment provider \"{name}\" can no longer be selected" +#, python-brace-format msgctxt "timeline" msgid "Payment provider \"{name}\" becomes active" -msgstr "Betalingsaanbieder \"{name}\" kan niet meer worden gekozen" +msgstr "Betalingsaanbieder \"{name}\" wordt actief" #: pretix/base/timeline.py:371 #, python-brace-format @@ -14550,35 +13852,27 @@ msgstr "UID" #. Translators: Translate to only "P.IVA" in Italian, keep second part as-is in other languages #: pretix/base/views/js_helpers.py:52 -#, fuzzy -#| msgid "VAT ID" msgctxt "tax_id_italy" msgid "VAT ID / P.IVA" -msgstr "Btw-nummer" +msgstr "Btw-nummer / P.IVA" #. Translators: Translate to only "ΑΦΜ" in Greek #: pretix/base/views/js_helpers.py:54 -#, fuzzy -#| msgid "VAT ID" msgctxt "tax_id_greece" msgid "VAT ID / TIN" -msgstr "Btw-nummer" +msgstr "Btw-nummer / TIN" #. Translators: Translate to only "NIF" in Spanish #: pretix/base/views/js_helpers.py:56 -#, fuzzy -#| msgid "VAT ID" msgctxt "tax_id_spain" msgid "VAT ID / NIF" -msgstr "Btw-nummer" +msgstr "Btw-nummer / NIF" #. Translators: Translate to only "NIF" in Portuguese #: pretix/base/views/js_helpers.py:58 -#, fuzzy -#| msgid "VAT ID" msgctxt "tax_id_portugal" msgid "VAT ID / NIF" -msgstr "Btw-nummer" +msgstr "Btw-nummer / NIF" #: pretix/base/views/tasks.py:185 msgid "An unexpected error has occurred, please try again later." @@ -14598,45 +13892,33 @@ msgid "Filetype not allowed!" msgstr "Bestandstype niet toegestaan!" #: pretix/control/forms/__init__.py:330 -#, fuzzy -#| msgid "Unofficial translation" msgid "Community translations" -msgstr "Onofficiële vertaling" +msgstr "Vertalingen door de gebruikersgemeenschap" #: pretix/control/forms/__init__.py:332 -#, fuzzy, python-brace-format -#| msgid "" -#| "This translation is not maintained by the pretix team. We cannot vouch " -#| "for its correctness and new or recently changed features might not be " -#| "translated and will show in English instead. You can help translating at " -#| "translate.pretix.eu." +#, python-brace-format msgid "" "These translations are not maintained by the pretix team. We cannot vouch " "for their correctness and new or recently changed features might not be " "translated and will show in English instead. You can help translating." msgstr "" -"Deze vertaling wordt niet onderhouden door het pretix-team. We kunnen de " -"juistheid niet garanderen, en nieuwe of recent veranderde functies kunnen " -"mogelijk niet vertaald zijn, en zullen dan in plaats hiervan in Engels " -"worden weergegeven. Je kan helpen met vertalen op translate.pretix.eu." +"Deze vertalingen worden niet onderhouden door het pretix-team. We kunnen " +"niet instaan voor de juistheid ervan en nieuwe of recent gewijzigde functies " +"zijn mogelijk niet vertaald en worden in het Engels weergegeven. Je kunt helpen met vertalen." #: pretix/control/forms/__init__.py:343 msgid "Development only" msgstr "Alleen ontwikkeling" #: pretix/control/forms/__init__.py:344 -#, fuzzy -#| msgid "" -#| "The translation for this language is still in progress. This language can " -#| "currently only be selected on development installations of pretix, not in " -#| "production." msgid "" "These translations are still in progress. These languages can currently only " "be selected on development installations of pretix, not in production." msgstr "" -"De vertaling voor deze taal is nog onderweg. Deze taal kan op dit moment " -"alleen worden geselecteerd op ontwikkelinstanties van pretix, en niet in " +"Deze vertalingen zijn nog in uitvoering. Deze talen kunnen momenteel alleen " +"worden geselecteerd op ontwikkelingsinstallaties van pretix, niet in " "productie." #: pretix/control/forms/checkin.py:129 @@ -14654,16 +13936,12 @@ msgid "Barcode" msgstr "Streepjescode" #: pretix/control/forms/checkin.py:179 -#, fuzzy -#| msgid "Check-in list" msgid "Check-in time" -msgstr "Inchecklijst" +msgstr "Check-in-tijd" #: pretix/control/forms/checkin.py:183 -#, fuzzy -#| msgid "Check-in list" msgid "Check-in type" -msgstr "Inchecklijst" +msgstr "Check-in-type" #: pretix/control/forms/checkin.py:187 msgid "Allow check-in of unpaid order (if check-in list permits it)" @@ -14672,10 +13950,8 @@ msgstr "" "toestaat)" #: pretix/control/forms/checkin.py:191 -#, fuzzy -#| msgid "Custom check-in rule" msgid "Support for check-in questions" -msgstr "Aangepaste incheckregel" +msgstr "Ondersteuning bij check-in-vragen" #: pretix/control/forms/checkin.py:197 pretix/control/forms/checkin.py:213 #: pretix/control/forms/filter.py:2549 pretix/control/forms/filter.py:2591 @@ -14797,22 +14073,16 @@ msgid "Domain" msgstr "Domein" #: pretix/control/forms/event.py:396 -#, fuzzy -#| msgid "The selected product is not active or has no price set." msgid "You can configure this in your organizer settings." -msgstr "Het gekozen product is niet actief of heeft geen ingestelde prijs." +msgstr "Je kunt dit instellen in je organisatorinstellingen." #: pretix/control/forms/event.py:406 -#, fuzzy -#| msgid "You can now login using your new password." msgid "You can add more domains in your organizer account." -msgstr "Je kan nu inloggen met je nieuwe wachtwoord." +msgstr "Je kunt meer domeinen toevoegen in je organisatoraccount." #: pretix/control/forms/event.py:407 -#, fuzzy -#| msgid "Organizer account" msgid "Same as organizer account" -msgstr "Organisatoraccount" +msgstr "Zelfde als organisatoraccount" #: pretix/control/forms/event.py:512 #, python-brace-format @@ -14881,10 +14151,8 @@ msgstr "" "is uitgegeven verlopen." #: pretix/control/forms/event.py:814 -#, fuzzy -#| msgid "including all taxes" msgid "Prices including tax" -msgstr "inclusief alle belasting" +msgstr "Prijzen inclusief belastingen" #: pretix/control/forms/event.py:815 msgid "Recommended if you sell tickets at least partly to consumers." @@ -14892,10 +14160,8 @@ msgstr "" "Aanbevolen als je tickets ten minste gedeeltelijk aan consumenten verkoopt." #: pretix/control/forms/event.py:819 -#, fuzzy -#| msgid "including all taxes" msgid "Prices excluding tax" -msgstr "inclusief alle belasting" +msgstr "Prijzen zonder belastingen" #: pretix/control/forms/event.py:820 msgid "Recommended only if you sell tickets primarily to business customers." @@ -14903,10 +14169,8 @@ msgstr "" "Alleen aanbevolen als je voornamelijk tickets verkoopt aan zakelijke klanten." #: pretix/control/forms/event.py:856 -#, fuzzy -#| msgid "Canceled by customer" msgid "Prices shown to customer" -msgstr "Geannuleerd door klant" +msgstr "Aan de klant getoonde prijzen" #: pretix/control/forms/event.py:860 msgid "" @@ -14990,10 +14254,8 @@ msgstr "" "factuur wordt uitgegeven vóór de betaling." #: pretix/control/forms/event.py:1020 -#, fuzzy -#| msgid "Split into new order" msgid "Recommended" -msgstr "Splitsen naar nieuwe bestelling" +msgstr "Aanbevolen" #: pretix/control/forms/event.py:1052 msgid "The online shop must be selected to receive these emails." @@ -15025,10 +14287,8 @@ msgid "Bcc address" msgstr "BCC-adres" #: pretix/control/forms/event.py:1090 pretix/control/forms/organizer.py:586 -#, fuzzy -#| msgid "All emails will be sent to this address as a Bcc copy" msgid "All emails will be sent to this address as a Bcc copy." -msgstr "Alle e-mails zullen als BCC-kopie worden verstuurd naar dit adres" +msgstr "Alle e-mails worden als Bcc-kopie naar dit adres verzonden." #: pretix/control/forms/event.py:1098 pretix/control/forms/organizer.py:594 msgid "Signature" @@ -15051,10 +14311,8 @@ msgstr "HTML-e-mail-renderer" #: pretix/control/forms/event.py:1116 pretix/control/forms/event.py:1143 #: pretix/control/forms/event.py:1170 pretix/control/forms/event.py:1328 -#, fuzzy -#| msgid "Text sent to order contact address" msgid "Subject sent to order contact address" -msgstr "Tekst verstuurd naar adres van besteller" +msgstr "Onderwerp verzonden naar contactadres voor bestellingen" #: pretix/control/forms/event.py:1121 pretix/control/forms/event.py:1148 #: pretix/control/forms/event.py:1175 pretix/control/forms/event.py:1333 @@ -15082,10 +14340,8 @@ msgstr "" #: pretix/control/forms/event.py:1132 pretix/control/forms/event.py:1159 #: pretix/control/forms/event.py:1186 pretix/control/forms/event.py:1344 #: pretix/control/forms/event.py:1389 pretix/control/forms/event.py:1419 -#, fuzzy -#| msgid "Text sent to attendees" msgid "Subject sent to attendees" -msgstr "Tekst verstuurd naar gasten" +msgstr "Onderwerp verzonden naar deelnemers" #: pretix/control/forms/event.py:1137 pretix/control/forms/event.py:1164 #: pretix/control/forms/event.py:1191 pretix/control/forms/event.py:1349 @@ -15104,26 +14360,20 @@ msgid "Text" msgstr "Tekst" #: pretix/control/forms/event.py:1207 -#, fuzzy -#| msgid "Text (sent by admin)" msgid "Subject (sent by admin)" -msgstr "Tekst (verstuurd door administrator)" +msgstr "Onderwerp (verzonden door beheerder)" #: pretix/control/forms/event.py:1212 -#, fuzzy -#| msgid "Text sent to attendees" msgid "Subject (sent by admin to attendee)" -msgstr "Tekst verstuurd naar gasten" +msgstr "Onderwerp (verzonden door beheerder naar deelnemer)" #: pretix/control/forms/event.py:1217 msgid "Text (sent by admin)" msgstr "Tekst (verstuurd door administrator)" #: pretix/control/forms/event.py:1222 -#, fuzzy -#| msgid "Text (requested by user)" msgid "Subject (requested by user)" -msgstr "Tekst (aangevraagd door gebruiker)" +msgstr "Onderwerp (verzoek van gebruiker)" #: pretix/control/forms/event.py:1227 msgid "Text (requested by user)" @@ -15146,26 +14396,20 @@ msgid "Subject (if order will not expire automatically)" msgstr "Onderwerp (als de bestelling niet automatisch verloopt)" #: pretix/control/forms/event.py:1259 -#, fuzzy -#| msgid "Payment received for your order: {code}" msgid "Subject (if an incomplete payment was received)" -msgstr "Betaling ontvangen voor je bestelling: {code}" +msgstr "Onderwerp (indien een onvolledige betaling is ontvangen)" #: pretix/control/forms/event.py:1264 -#, fuzzy -#| msgid "Payment received for your order: {code}" msgid "Text (if an incomplete payment was received)" -msgstr "Betaling ontvangen voor je bestelling: {code}" +msgstr "Tekst (als een onvolledige betaling is ontvangen)" #: pretix/control/forms/event.py:1267 -#, fuzzy -#| msgid "This plugin allows you to receive payments via bank transfer." msgid "" "This email only applies to payment methods that can receive incomplete " "payments, such as bank transfer." msgstr "" -"Deze plug-in staat je toe om betalingen te ontvangen via " -"bankoverschrijvingen." +"Deze e-mail is alleen van toepassing op betaalmethoden die onvolledige " +"betalingen kunnen ontvangen, zoals bankoverschrijvingen." #: pretix/control/forms/event.py:1309 pretix/control/forms/event.py:1318 msgid "" @@ -15192,28 +14436,20 @@ msgstr "" "Als dit veld leeg is, zal de mail nooit worden verstuurd." #: pretix/control/forms/event.py:1361 -#, fuzzy -#| msgid "Received order" msgid "Subject for received order" -msgstr "Bestelling ontvangen" +msgstr "Onderwerp voor ontvangen bestelling" #: pretix/control/forms/event.py:1366 -#, fuzzy -#| msgid "Received order" msgid "Text for received order" -msgstr "Bestelling ontvangen" +msgstr "Tekst voor ontvangen bestelling" #: pretix/control/forms/event.py:1371 -#, fuzzy -#| msgid "Yes, approve order" msgid "Subject for approved order" -msgstr "Ja, keur bestelling goed" +msgstr "Onderwerp voor goedgekeurde bestelling" #: pretix/control/forms/event.py:1376 -#, fuzzy -#| msgid "Yes, approve order" msgid "Text for approved order" -msgstr "Ja, keur bestelling goed" +msgstr "Tekst voor goedgekeurde bestelling" #: pretix/control/forms/event.py:1379 pretix/control/forms/event.py:1397 msgid "" @@ -15225,16 +14461,12 @@ msgstr "" "hieronder ontvangen." #: pretix/control/forms/event.py:1401 -#, fuzzy -#| msgid "Approved free order" msgid "Subject for approved free order" -msgstr "Gratis bestelling goedgekeurd" +msgstr "Onderwerp voor goedgekeurde vrije bestelling" #: pretix/control/forms/event.py:1406 -#, fuzzy -#| msgid "Approved free order" msgid "Text for approved free order" -msgstr "Gratis bestelling goedgekeurd" +msgstr "Tekst voor goedgekeurde gratis bestelling" #: pretix/control/forms/event.py:1409 pretix/control/forms/event.py:1427 msgid "" @@ -15246,16 +14478,12 @@ msgstr "" "hierboven ontvangen." #: pretix/control/forms/event.py:1431 -#, fuzzy -#| msgid "Received order" msgid "Subject for denied order" -msgstr "Bestelling ontvangen" +msgstr "Onderwerp voor geweigerde bestelling" #: pretix/control/forms/event.py:1436 -#, fuzzy -#| msgid "Denied order" msgid "Text for denied order" -msgstr "Bestelling geweigerd" +msgstr "Tekst voor geweigerde bestelling" #: pretix/control/forms/event.py:1534 msgid "Ticket code generator" @@ -15304,16 +14532,12 @@ msgid "Sale not allowed" msgstr "Verkoop niet toegestaan" #: pretix/control/forms/event.py:1632 -#, fuzzy -#| msgid "New order requires approval" msgid "Order requires approval" -msgstr "Nieuwe bestelling vereist goedkeuring" +msgstr "Bestelling moet worden goedgekeurd" #: pretix/control/forms/event.py:1637 -#, fuzzy -#| msgid "Default price" msgid "Default tax code" -msgstr "Standaardprijs" +msgstr "Standaard belastingcode" #: pretix/control/forms/event.py:1641 pretix/control/forms/event.py:1645 msgid "Deviating tax rate" @@ -15332,12 +14556,8 @@ msgstr "" "nul is, heeft geen zin." #: pretix/control/forms/event.py:1678 pretix/control/forms/event.py:1682 -#, 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 "" -"Deze combinatie van gebruikersnaam en wachtwoord is niet bekend in onze " -"database." +msgstr "Deze combinatie van berekeningswijze en belastingcode is niet logisch." #: pretix/control/forms/event.py:1747 msgid "Pre-selected voucher" @@ -15442,10 +14662,8 @@ msgstr "Hoeveelheid beschikbaar" #: pretix/control/forms/exports.py:56 pretix/control/forms/exports.py:62 #: pretix/control/forms/exports.py:68 -#, fuzzy -#| msgid "Please enter a shorter name." msgid "Please enter less than 25 recipients." -msgstr "Vul alsjeblieft een kortere naam in." +msgstr "Voer minder dan 25 ontvangers in." #: pretix/control/forms/filter.py:206 pretix/control/forms/filter.py:208 #: pretix/control/forms/filter.py:1022 pretix/control/forms/filter.py:1024 @@ -15466,11 +14684,8 @@ msgid "Paid (or canceled with paid fee)" msgstr "Betaald (of geannuleerd met betaalde toeslag)" #: pretix/control/forms/filter.py:225 pretix/control/forms/filter.py:1230 -#, fuzzy -#| msgctxt "checkoutflow" -#| msgid "Order confirmed" msgid "Paid or confirmed" -msgstr "Bestelling bevestigd" +msgstr "Betaald of bevestigd" #: pretix/control/forms/filter.py:226 pretix/control/forms/filter.py:1231 #: pretix/control/templates/pretixcontrol/datasync/control_order_info.html:47 @@ -15497,10 +14712,8 @@ msgid "Canceled (fully or with paid fee)" msgstr "Geannuleerd (hele bestelling of met betaalde kosten)" #: pretix/control/forms/filter.py:232 -#, fuzzy -#| msgid "Cancel this position" msgid "Canceled (at least one position)" -msgstr "Annuleer deze plaats" +msgstr "Geannuleerd (minstens één positie)" #: pretix/control/forms/filter.py:233 msgid "Cancellation requested" @@ -15539,10 +14752,8 @@ msgid "Pending (but fully paid)" msgstr "Openstaand (maar volledig betaald)" #: pretix/control/forms/filter.py:244 -#, fuzzy -#| msgid "Pending (but fully paid)" msgid "Pending (but no current payment)" -msgstr "Openstaand (maar volledig betaald)" +msgstr "In behandeling (maar geen huidige betaling)" #: pretix/control/forms/filter.py:246 msgid "Approval process" @@ -15616,10 +14827,8 @@ msgid "At least one ticket with check-in" msgstr "Ten minste één ticket met check-in" #: pretix/control/forms/filter.py:632 -#, fuzzy -#| msgid "Delete quota" msgid "Affected quota" -msgstr "Verwijder quotum" +msgstr "Betrokken quotum" #: pretix/control/forms/filter.py:669 pretix/control/forms/filter.py:674 #: pretix/control/forms/filter.py:700 pretix/control/forms/filter.py:705 @@ -15640,34 +14849,24 @@ msgid "All events" msgstr "Alle evenementen" #: pretix/control/forms/filter.py:1056 -#, fuzzy -#| msgid "All payment providers" msgid "All payments" -msgstr "Alle betalingsproviders" +msgstr "Alle betalingen" #: pretix/control/forms/filter.py:1066 -#, fuzzy -#| msgid "Payment date" msgid "Payment created from" -msgstr "Betaaldatum" +msgstr "Betaling aangemaakt van" #: pretix/control/forms/filter.py:1071 -#, fuzzy -#| msgid "Payment amount" msgid "Payment created until" -msgstr "Te betalen bedrag" +msgstr "Betaling aangemaakt tot" #: pretix/control/forms/filter.py:1076 -#, fuzzy -#| msgid "Valid" msgid "Paid from" -msgstr "Geldig" +msgstr "Betaald van" #: pretix/control/forms/filter.py:1081 -#, fuzzy -#| msgid "Valid until" msgid "Paid until" -msgstr "Geldig tot" +msgstr "Betaald tot" #: pretix/control/forms/filter.py:1229 #: pretix/control/templates/pretixcontrol/orders/fragment_order_status.html:31 @@ -15965,7 +15164,7 @@ msgstr "Einddatum" #: pretix/control/forms/filter.py:2605 #: pretix/plugins/checkinlists/exporters.py:883 msgid "All check-in lists" -msgstr "Alle inchecklijsten" +msgstr "Alle check-in-lijsten" #: pretix/control/forms/filter.py:2609 #: pretix/control/templates/pretixcontrol/checkin/checkins.html:64 @@ -15988,22 +15187,16 @@ msgid "Software" msgstr "Software" #: pretix/control/forms/filter.py:2767 -#, fuzzy -#| msgid "Devices" msgid "Device status" -msgstr "Apparaten" +msgstr "Status van het apparaat" #: pretix/control/forms/filter.py:2770 -#, fuzzy -#| msgid "All devices" msgid "Active devices" -msgstr "Alle apparaten" +msgstr "Actieve apparaten" #: pretix/control/forms/filter.py:2771 -#, fuzzy -#| msgid "Revoke device access:" msgid "Revoked devices" -msgstr "Apparaattoegang intrekken:" +msgstr "Ingetrokken apparaten" #: pretix/control/forms/global_settings.py:62 msgid "Additional footer text" @@ -16248,25 +15441,23 @@ msgstr "" "beschikbaar zijn. Zorg ervoor dat deze informatie bijgewerkt blijft!" #: 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 "Producten in deze categorie zijn add-onproducten" +msgstr "" +"Producten in deze categorie zijn reguliere producten die op de voorpagina " +"worden weergegeven." #: pretix/control/forms/item.py:102 -#, fuzzy -#| msgid "Product category" msgid "Add-on product category" -msgstr "Productcategorie" +msgstr "Add-on-productcategorie" #: 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 "Producten in deze categorie zijn add-onproducten" +msgstr "" +"Producten in deze categorie zijn add-on-producten en kunnen alleen als add-" +"on worden gekocht." #: pretix/control/forms/item.py:107 msgid "" @@ -16297,10 +15488,8 @@ msgstr "" "het inchecken worden gesteld." #: pretix/control/forms/item.py:314 -#, fuzzy -#| msgid "All products" msgid "No products" -msgstr "Alle producten" +msgstr "Geen producten" #: pretix/control/forms/item.py:354 #: pretix/control/templates/pretixcontrol/items/fragment_quota_availability.html:11 @@ -16407,27 +15596,21 @@ msgid "Shown independently of other products" msgstr "Toon onafhankelijk van andere producten" #: pretix/control/forms/item.py:742 -#, fuzzy -#| msgid "Canceled by customer" msgid "Date chosen by customer" -msgstr "Geannuleerd door klant" +msgstr "Door de klant gekozen datum" #: pretix/control/forms/item.py:751 msgid "No membership granted" msgstr "Geen lidmaatschap toegekend" #: pretix/control/forms/item.py:770 -#, fuzzy -#| msgid "" -#| "Gift card products should not be associated with non-zero tax rates since " -#| "sales tax will be applied when the gift card is redeemed." 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 "" -"Cadeaukaartproducten moeten niet worden gekoppeld aan een positief " -"belastingtarief, omdat de belasting al wordt toegepast wanneer de " -"cadeaukaart wordt verzilverd." +"Cadeaubonnen moeten worden onderworpen aan een belastingtarief van 0 " +"procent, aangezien er omzetbelasting wordt geheven wanneer de cadeaubon " +"wordt ingewisseld." #: pretix/control/forms/item.py:776 msgid "" @@ -16460,12 +15643,8 @@ msgstr "" "gepersonaliseerd is, stel je het lidmaatschapstype in op overdraagbaar." #: pretix/control/forms/item.py:815 -#, fuzzy -#| msgid "The last payment date cannot be before the end of presale." msgid "The start of validity must be before the end of validity." -msgstr "" -"De laatste datum van betalingen kan niet voor het eind van de verkoopperiode " -"zijn." +msgstr "De ingangsdatum van de geldigheid moet vóór de einddatum liggen." #: pretix/control/forms/item.py:822 msgid "" @@ -16487,10 +15666,8 @@ msgstr "" "Je kan de variant in plaats daarvan instellen als \"uitgeschakeld\"." #: pretix/control/forms/item.py:1004 -#, fuzzy -#| msgid "Calculate from product" msgid "Use value from product" -msgstr "Bereken uit productgegevens" +msgstr "Gebruik waarde van het product" #: pretix/control/forms/item.py:1089 msgid "Add-ons" @@ -16528,10 +15705,8 @@ msgid "inactive" msgstr "inactief" #: pretix/control/forms/item.py:1331 -#, fuzzy -#| msgid "Printing time" msgid "Program times" -msgstr "Printtijd" +msgstr "Programmatijden" #: pretix/control/forms/mailsetup.py:42 msgid "Hostname" @@ -16589,16 +15764,12 @@ msgstr "" "een openbaar IP-adres." #: pretix/control/forms/mailsetup.py:103 -#, fuzzy -#| msgid "We were unable to parse your request." msgid "We were unable to resolve this hostname." -msgstr "We konden je verzoek niet verwerken." +msgstr "We konden deze hostnaam niet oplossen." #: pretix/control/forms/mapping.py:40 -#, fuzzy -#| msgid "Overview" msgid "Overwrite" -msgstr "Overzicht" +msgstr "Overschrijven" #: pretix/control/forms/mapping.py:41 msgid "Fill if new" @@ -16609,16 +15780,12 @@ msgid "Fill if empty" msgstr "Invullen indien leeg" #: pretix/control/forms/mapping.py:43 -#, fuzzy -#| msgid "Add me to the list" msgid "Add to list" -msgstr "Zet mij op de lijst" +msgstr "Toevoegen aan lijst" #: pretix/control/forms/mapping.py:50 -#, fuzzy -#| msgid "pretix Logo" msgid "pretix field" -msgstr "pretix-logo" +msgstr "pretix-veld" #: pretix/control/forms/modelimport.py:52 #, python-brace-format @@ -16657,30 +15824,22 @@ msgid "Create orders as test mode orders" msgstr "Maak bestellingen als bestellingen uit de testmodus aan" #: pretix/control/forms/modelimport.py:102 -#, fuzzy -#| msgid "Only orders created in test mode can be deleted." msgid "Orders not created in test mode cannot be deleted again after import." msgstr "" -"Alleen bestellingen die in de testmodus zijn gemaakt kunnen worden " -"verwijderd." +"Bestellingen die niet in de testmodus zijn aangemaakt, kunnen na het " +"importeren niet meer worden verwijderd." #: 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 "Je kan geen factuur genereren voor deze bestelling." +msgstr "Voor deze importmodus kan geen groepering worden opgegeven." #: 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 "Er moet een variant van dit product worden gekozen." +msgstr "Voor deze importmodus moet een groepering worden opgegeven." #: pretix/control/forms/orders.py:85 -#, fuzzy -#| msgid "Confirm payment" msgid "Confirm order regardless of payment" -msgstr "Bevestig betaling" +msgstr "Bestelling bevestigen ongeacht betaling" #: pretix/control/forms/orders.py:86 msgid "" @@ -16740,24 +15899,16 @@ msgid "Keep a cancellation fee of" msgstr "Houd annuleringskosten in van" #: pretix/control/forms/orders.py:175 -#, fuzzy -#| msgid "" -#| "If you keep a fee, all positions within this order will be canceled and " -#| "the order will be reduced to a paid cancellation fee. Payment and " -#| "shipping fees will be canceled as well, so include them in your " -#| "cancellation fee if you want to keep them. Please always enter a gross " -#| "value, tax will be calculated automatically." msgid "" "If you keep a fee, all positions within this order will be canceled and the " "order will be reduced to a cancellation fee. Payment and shipping fees will " "be canceled as well, so include them in your cancellation fee if you want to " "keep them." msgstr "" -"Als je kosten inhoudt zullen alle plaatsen in deze bestelling worden " -"geannuleerd, en zal de bestelling alleen de betaalde annuleringskosten " -"bevatten. Betalingskosten en verzendkosten zullen ook worden geannuleerd, " -"tel deze op bij de annuleringskosten als je deze kosten niet terug wilt " -"betalen. Voer een bruto bedrag in, belasting zal automatisch worden berekend." +"Als je kosten in rekening brengt, worden alle posities binnen deze " +"bestelling geannuleerd en wordt de bestelling teruggebracht tot " +"annuleringskosten. Betalings- en verzendkosten worden ook geannuleerd, dus " +"neem deze op in je annuleringskosten als je ze wilt behouden." #: pretix/control/forms/orders.py:180 msgid "Generate cancellation for invoice" @@ -16792,10 +15943,10 @@ msgstr "" "standaard belastingtarief in rekening gebracht." #: 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 "De evenementsinstellingen zijn aangepast." +msgstr "" +"Volgens je evenementinstellingen wordt er geen belasting in rekening " +"gebracht." #: pretix/control/forms/orders.py:241 msgid "A mail will only be sent if the order is fully paid after this." @@ -16817,10 +15968,8 @@ msgid "Payment date" msgstr "Betaaldatum" #: pretix/control/forms/orders.py:276 -#, fuzzy -#| msgid "Please select a valid seat." msgid "Please select some events." -msgstr "Kies een geldige beschikbare stoel." +msgstr "Selecteer enkele evenementen." #: pretix/control/forms/orders.py:297 msgid "Re-calculate taxes" @@ -16915,20 +16064,16 @@ msgid "New price (gross)" msgstr "Nieuwe prijs (bruto)" #: pretix/control/forms/orders.py:484 -#, fuzzy -#| msgid "Ticket secret" msgid "Ticket is blocked" -msgstr "Kaartjesgeheim" +msgstr "Ticket is geblokkeerd" #: pretix/control/forms/orders.py:489 msgid "Validity start" msgstr "Geldig vanaf" #: pretix/control/forms/orders.py:494 -#, fuzzy -#| msgid "Valid until" msgid "Validity end" -msgstr "Geldig tot" +msgstr "Einde geldigheid" #: pretix/control/forms/orders.py:506 msgid "Generate a new secret" @@ -16988,10 +16133,8 @@ msgstr "" "opnieuw hun kaartjes downloaden. Oude versies zullen ongeldig zijn." #: pretix/control/forms/orders.py:734 pretix/plugins/sendmail/forms.py:196 -#, fuzzy -#| msgid "Attach ticket files" msgid "Attach tickets" -msgstr "Ticketbestanden bijvoegen bij e-mails" +msgstr "Tickets bijvoegen" #: pretix/control/forms/orders.py:735 pretix/plugins/sendmail/forms.py:197 msgid "" @@ -17002,10 +16145,8 @@ msgstr "" "leverbaarheid van e-mails te garanderen." #: pretix/control/forms/orders.py:742 -#, fuzzy -#| msgid "Attach invoices to emails" msgid "Attach invoices" -msgstr "Voeg facturen als bijlage bij e-mails" +msgstr "Facturen bijvoegen" #: pretix/control/forms/orders.py:763 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_inspect.html:20 @@ -17014,10 +16155,9 @@ msgid "Recipient" msgstr "Ontvanger" #: pretix/control/forms/orders.py:778 -#, fuzzy, python-brace-format -#| msgid "Attach ticket files" +#, python-brace-format msgid "Attach {file}" -msgstr "Ticketbestanden bijvoegen bij e-mails" +msgstr "{file} bijvoegen" #: pretix/control/forms/orders.py:806 msgid "" @@ -17070,12 +16210,6 @@ msgid "Create refund in the manual refund to-do list" msgstr "Maak een terugbetaling aan in de handmatige terugbetalingslijst" #: pretix/control/forms/orders.py:883 -#, fuzzy -#| msgid "" -#| "If checked, all payments with a payment method not supporting automatic " -#| "refunds will be on your manual refund to-do list. Do not check if you " -#| "want to refund some of the orders by offsetting with different orders or " -#| "issuing gift cards." 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 " @@ -17083,10 +16217,12 @@ msgid "" "manual refund to-do list. Do not check if you want to refund some of the " "orders by offsetting with different orders or issuing gift cards." msgstr "" -"Als dit is ingeschakeld worden alle betalingen met een betalingsmethode die " -"geen terugbetaling ondersteunt op de lijst van uit te voeren handmatige " -"terugbetalingen gezet. Schakel deze optie niet in als je sommige van de " -"bestellingen wilt terugbetalen door het bedrag te verrekenen met andere " +"Er worden handmatige terugbetalingen aangemaakt die worden weergegeven in de " +"takenlijst voor handmatige terugbetalingen. In combinatie met de " +"automatische terugbetalingsfunctie worden alleen betalingen met een " +"betaalmethode die geen automatische terugbetalingen ondersteunt, weergegeven " +"in je takenlijst voor handmatige terugbetalingen. Vink dit niet aan als je " +"sommige bestellingen wilt terugbetalen door ze te compenseren met andere " "bestellingen of door cadeaubonnen uit te geven." #: pretix/control/forms/orders.py:889 @@ -17227,10 +16363,8 @@ msgstr "" "deze actie te bevestigen" #: pretix/control/forms/orders.py:1055 -#, fuzzy -#| msgid "The confirm code you entered was incorrect." msgid "The confirmation code is incorrect." -msgstr "De bevestigingscode die je invoerde was onjuist." +msgstr "De bevestigingscode is onjuist." #: pretix/control/forms/organizer.py:93 msgid "This slug is already in use. Please choose a different one." @@ -17246,10 +16380,8 @@ msgstr "" "Dit domein is al in gebruik voor een ander evenement of andere organisator." #: pretix/control/forms/organizer.py:185 -#, fuzzy -#| msgid "You need to choose a subevent for the new position." msgid "Do not choose an event for this mode." -msgstr "Je moet een subevenement kiezen voor het nieuwe kaartje." +msgstr "Kies geen evenement voor deze modus." #: pretix/control/forms/organizer.py:190 msgid "" @@ -17281,10 +16413,8 @@ msgid "" msgstr "Je apparaat moet tot ten minste één evenement toegang krijgen." #: pretix/control/forms/organizer.py:559 pretix/plugins/stripe/payment.py:311 -#, fuzzy -#| msgid "API features" msgid "experimental" -msgstr "API-functies" +msgstr "experimenteel" #: pretix/control/forms/organizer.py:565 msgid "" @@ -17309,16 +16439,13 @@ msgid "Gift card value" msgstr "Waarde van cadeaubon" #: pretix/control/forms/organizer.py:827 -#, fuzzy -#| msgid "An account with this email address is already registered." msgid "An medium with this type and identifier is already registered." -msgstr "Er is al een klantenaccount met dit e-mailadres geregistreerd." +msgstr "" +"Er is al een medium met dit type en deze identificatiecode geregistreerd." #: pretix/control/forms/organizer.py:925 -#, fuzzy -#| msgid "An account with this email address is already registered." msgid "An account with this customer ID is already registered." -msgstr "Er is al een klantenaccount met dit e-mailadres geregistreerd." +msgstr "Er is al een account met deze klant-ID geregistreerd." #: pretix/control/forms/organizer.py:942 #: pretix/control/templates/pretixcontrol/organizers/customer.html:62 @@ -17327,25 +16454,19 @@ msgid "Phone" msgstr "Telefoon" #: pretix/control/forms/organizer.py:1056 -#, fuzzy -#| msgid "Target URL" msgctxt "sso_oidc" msgid "Base URL" -msgstr "Doel-URL" +msgstr "Basis-URL" #: pretix/control/forms/organizer.py:1060 -#, fuzzy -#| msgid "Client ID" msgctxt "sso_oidc" msgid "Client ID" -msgstr "Client ID" +msgstr "Client-ID" #: pretix/control/forms/organizer.py:1064 -#, fuzzy -#| msgid "Client secret" msgctxt "sso_oidc" msgid "Client secret" -msgstr "Cliëntgeheim" +msgstr "Client-geheim" #: pretix/control/forms/organizer.py:1068 msgctxt "sso_oidc" @@ -17358,11 +16479,9 @@ msgid "Multiple scopes separated with spaces." msgstr "Meerdere scopes gescheiden door spaties." #: pretix/control/forms/organizer.py:1073 -#, fuzzy -#| msgid "User profile only" msgctxt "sso_oidc" msgid "User ID field" -msgstr "Alleen gebruikersprofiel" +msgstr "Gebruikers-ID-veld" #: pretix/control/forms/organizer.py:1074 msgctxt "sso_oidc" @@ -17374,11 +16493,9 @@ msgstr "" "nooit kan veranderen voor een gebruiker." #: pretix/control/forms/organizer.py:1080 -#, fuzzy -#| msgid "All invoices" msgctxt "sso_oidc" msgid "Email field" -msgstr "Alle facturen" +msgstr "E-mailveld" #: pretix/control/forms/organizer.py:1081 msgctxt "sso_oidc" @@ -17392,11 +16509,9 @@ msgstr "" "gegarandeerd kan worden, kunnen er beveiligingsproblemen ontstaan." #: pretix/control/forms/organizer.py:1088 -#, fuzzy -#| msgid "Phone number" msgctxt "sso_oidc" msgid "Phone field" -msgstr "Telefoonnummer" +msgstr "Telefoonnummerveld" #: pretix/control/forms/organizer.py:1092 msgctxt "sso_oidc" @@ -17414,22 +16529,16 @@ msgstr "" "autorisatie-eindpunt. Voer in als: {example}" #: pretix/control/forms/organizer.py:1154 -#, fuzzy -#| msgid "A new client secret has been generated and is now effective." msgid "Invalidate old client secret and generate a new one" -msgstr "Een nieuw cliëntgeheim is gegenereerd en is nu actief." +msgstr "Oude clientgeheim ongeldig maken en een nieuw genereren" #: pretix/control/forms/organizer.py:1187 -#, fuzzy -#| msgid "Organizer name" msgid "Organizer short name" -msgstr "Naam van de organisator" +msgstr "Korte naam organisator" #: pretix/control/forms/organizer.py:1191 -#, fuzzy -#| msgid "Disable selected" msgid "Allow access to reusable media" -msgstr "Schakel geselecteerde uit" +msgstr "Toegang tot herbruikbare media toestaan" #: pretix/control/forms/organizer.py:1192 msgid "" @@ -17446,22 +16555,17 @@ msgstr "" "cryptografische gegevens die nodig zijn om met het mediatype te communiceren." #: pretix/control/forms/organizer.py:1208 -#, fuzzy -#| msgid "The selected date does not exist in this event series." msgid "The selected organizer does not exist or cannot be invited." -msgstr "De geselecteerde datum bestaat niet in deze evenementenreeks." +msgstr "" +"De geselecteerde organisator bestaat niet of kan niet worden uitgenodigd." #: pretix/control/forms/organizer.py:1210 -#, fuzzy -#| msgid "The selected organizer was not found." msgid "The selected organizer has already been invited." -msgstr "De gekozen organisator kon niet worden gevonden." +msgstr "De geselecteerde organisator is al uitgenodigd." #: pretix/control/forms/organizer.py:1245 -#, fuzzy -#| msgid "A voucher with this code already exists." msgid "A sales channel with the same identifier already exists." -msgstr "Er bestaat al een voucher met deze code." +msgstr "Er bestaat al een verkoopkanaal met dezelfde identificatiecode." #: pretix/control/forms/organizer.py:1257 msgid "Events with active plugin" @@ -17548,16 +16652,14 @@ msgid "Selection contains various values" msgstr "Selectie bevat verschillende waarden" #: pretix/control/forms/subevents.py:288 pretix/control/forms/subevents.py:317 -#, 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 "Het einde van het evenement moet later zijn dan het begin." +msgstr "" +"Het einde van de beschikbaarheid moet na het begin van de beschikbaarheid " +"liggen." #: pretix/control/forms/subevents.py:350 -#, fuzzy -#| msgid "Available until" msgid "Available_until" -msgstr "Beschikbaar tot" +msgstr "Beschikbaar_tot" #: pretix/control/forms/subevents.py:470 msgid "Exclude these dates instead of adding them." @@ -17605,21 +16707,7 @@ msgid "Your voucher for {event}" msgstr "Je voucher voor {event}" #: pretix/control/forms/vouchers.py:291 -#, fuzzy, python-brace-format -#| msgid "" -#| "Hello,\n" -#| "\n" -#| "with this email, we're sending you one or more vouchers for {event}:\n" -#| "\n" -#| "{voucher_list}\n" -#| "\n" -#| "You can redeem them here in our ticket shop:\n" -#| "\n" -#| "{url}\n" -#| "\n" -#| "Best regards, \n" -#| "\n" -#| "Your {event} team" +#, python-brace-format msgid "" "Hello,\n" "\n" @@ -17636,16 +16724,16 @@ msgid "" msgstr "" "Hallo,\n" "\n" -"Met deze e-mail sturen we je één of meer vouchers voor {event}:\n" +"Met deze e-mail sturen we je een of meer vouchers voor {event}:\n" "\n" "{voucher_list}\n" "\n" -"Je kan de vouchers gebruiken in onze kaartjeswinkel op:\n" +"Je kunt ze hier in onze ticketwinkel inwisselen:\n" "\n" "{url}\n" "\n" -"Met vriendelijke groeten, \n" -"De organisatie van {event}" +"Met vriendelijke groet, \n" +"Het team van {event}" #: pretix/control/forms/vouchers.py:297 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_create.html:28 @@ -17659,19 +16747,14 @@ msgid "or" msgstr "of" #: pretix/control/forms/vouchers.py:305 -#, fuzzy -#| msgid "" -#| "You can either supply a list of email addresses with one email address " -#| "per line, or a CSV file with a title column and one or more of the " -#| "columns \"email\", \"number\", \"name\", or \"tag\"." msgid "" "You can either supply a list of email addresses with one email address per " "line, or the contents of a CSV file with a title row and one or more of the " "columns \"email\", \"number\", \"name\", or \"tag\"." msgstr "" -"Je kan een lijst van e-mailadressen opgeven, met één e-mailadres per regel, " -"of een CSV-bestand met een headerrij en één of meer van de kolommen " -"\"email\", \"number\", \"name\", of \"tag\"." +"Je kunt een lijst met e-mailadressen opgeven met één e-mailadres per regel, " +"of de inhoud van een CSV-bestand met een titelrij en een of meer van de " +"kolommen \"e-mail\", \"nummer\", \"naam\" of \"tag\"." #: pretix/control/forms/vouchers.py:339 msgid "Maximum usages per voucher" @@ -17736,10 +16819,9 @@ msgstr "" "{min_length} tekens lang zijn." #: pretix/control/forms/vouchers.py:432 -#, fuzzy, python-brace-format -#| msgid "The given voucher code does not exist." +#, python-brace-format msgid "The voucher code {code} appears in your list twice." -msgstr "De gegeven vouchercode bestaat niet." +msgstr "De vouchercode {code} komt twee keer voor in je lijst." #: pretix/control/forms/vouchers.py:436 msgid "" @@ -17773,10 +16855,9 @@ msgstr "" "({new_price})." #: pretix/control/logdisplay.py:111 -#, fuzzy, python-brace-format -#| msgid "Position #{posid} created: {item} ({price})." +#, python-brace-format msgid "Position #{posid}: Used membership changed." -msgstr "Plaats #{posid} aangemaakt: {item} ({price})." +msgstr "Positie #{posid}: Gebruikt lidmaatschap gewijzigd." #: pretix/control/logdisplay.py:117 #, python-brace-format @@ -17849,30 +16930,29 @@ msgid "A new secret has been generated for position #{posid}." msgstr "Een nieuw geheim is gegenereerd voor plaats #{posid}." #: pretix/control/logdisplay.py:243 -#, fuzzy, python-brace-format -#| msgid "This order position has been canceled." +#, python-brace-format msgid "" "The validity start date for position #{posid} has been changed to {value}." -msgstr "Dit kaartje is geannuleerd." +msgstr "" +"De ingangsdatum van de geldigheid voor positie #{posid} is gewijzigd in " +"{value}." #: pretix/control/logdisplay.py:255 -#, fuzzy, python-brace-format -#| msgid "This order position has been canceled." +#, python-brace-format msgid "" "The validity end date for position #{posid} has been changed to {value}." -msgstr "Dit kaartje is geannuleerd." +msgstr "" +"De einddatum van de geldigheid voor positie #{posid} is gewijzigd in {value}." #: pretix/control/logdisplay.py:264 -#, fuzzy, python-brace-format -#| msgid "A new secret has been generated for position #{posid}." +#, python-brace-format msgid "A block has been added for position #{posid}." -msgstr "Een nieuw geheim is gegenereerd voor plaats #{posid}." +msgstr "Er is een blok toegevoegd voor positie #{posid}." #: pretix/control/logdisplay.py:270 -#, fuzzy, python-brace-format -#| msgid "A new secret has been generated for position #{posid}." +#, python-brace-format msgid "A block has been removed for position #{posid}." -msgstr "Een nieuw geheim is gegenereerd voor plaats #{posid}." +msgstr "Er is een blok verwijderd voor positie #{posid}." #: pretix/control/logdisplay.py:287 #, python-brace-format @@ -17906,16 +16986,13 @@ msgstr "" "\"." #: pretix/control/logdisplay.py:317 -#, fuzzy, python-brace-format -#| msgid "" -#| "Scan scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}" -#| "\", type \"{type}\", was uploaded." +#, python-brace-format msgid "" "Scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}\", type " "\"{type}\", was uploaded." msgstr "" -"Een scan van ingetrokken code \"{barcode}…\" om {datetime} voor lijst " -"\"{list}\", type \"{type}\" is geüpload." +"Scan van ingetrokken code \"{barcode}…\" op {datetime} voor lijst \"{list}" +"\", type \"{type}\", is geüpload." #: pretix/control/logdisplay.py:318 #, python-brace-format @@ -17945,50 +17022,38 @@ msgstr "" "\"{type}\". Foutcode: \"{errorcode}\"." #: pretix/control/logdisplay.py:325 -#, fuzzy, python-brace-format -#| msgid "" -#| "Denied scan of position #{posid} at {datetime} for list \"{list}\", type " -#| "\"{type}\", error code \"{errorcode}\"." +#, python-brace-format msgid "" "Annulled scan of position #{posid} at {datetime} for list \"{list}\", type " "\"{type}\"." msgstr "" -"Een scan voor plaats #{posid} is geweigerd om {datetime} voor lijst \"{list}" -"\", type \"{type}\". Foutcode: \"{errorcode}\"." +"Geannuleerde scan van positie #{posid} om {datetime} voor lijst \"{list}\", " +"type \"{type}\"." #: pretix/control/logdisplay.py:326 -#, fuzzy, python-brace-format -#| msgid "" -#| "Denied scan of position #{posid} for list \"{list}\", type \"{type}\", " -#| "error code \"{errorcode}\"." +#, python-brace-format msgid "" "Annulled scan of position #{posid} for list \"{list}\", type \"{type}\"." msgstr "" -"Een scan voor plaats #{posid} is geweigerd voor de lijst \"{list}\", type " -"\"{type}\". Foutcode: \"{errorcode}\"." +"Geannuleerde scan van positie #{posid} voor lijst \"{list}\", type \"{type}" +"\"." #: pretix/control/logdisplay.py:329 -#, fuzzy, python-brace-format -#| msgid "" -#| "Denied scan of position #{posid} at {datetime} for list \"{list}\", type " -#| "\"{type}\", error code \"{errorcode}\"." +#, python-brace-format msgid "" "Ignored annulment of position #{posid} at {datetime} for list \"{list}\", " "type \"{type}\"." msgstr "" -"Een scan voor plaats #{posid} is geweigerd om {datetime} voor lijst \"{list}" -"\", type \"{type}\". Foutcode: \"{errorcode}\"." +"Genegeerde annulering van positie #{posid} op {datetime} voor lijst \"{list}" +"\", type \"{type}\"." #: pretix/control/logdisplay.py:330 -#, fuzzy, python-brace-format -#| msgid "" -#| "Denied scan of position #{posid} for list \"{list}\", type \"{type}\", " -#| "error code \"{errorcode}\"." +#, python-brace-format msgid "" "Ignored annulment of position #{posid} for list \"{list}\", type \"{type}\"." msgstr "" -"Een scan voor plaats #{posid} is geweigerd voor de lijst \"{list}\", type " -"\"{type}\". Foutcode: \"{errorcode}\"." +"Genegeerde annulering van positie #{posid} voor lijst \"{list}\", type \"" +"{type}\"." #: pretix/control/logdisplay.py:332 pretix/control/logdisplay.py:333 #, python-brace-format @@ -18046,10 +17111,9 @@ msgid "The user confirmed the following message: \"{}\"" msgstr "De gebruiker bevestigde het volgende bericht: \"{}\"" #: pretix/control/logdisplay.py:414 -#, fuzzy, python-brace-format -#| msgid "The order has been denied." +#, python-brace-format msgid "The order has been canceled (comment: \"{comment}\")." -msgstr "De bestelling is geweigerd." +msgstr "De bestelling is geannuleerd (opmerking: \"{comment}\")." #: pretix/control/logdisplay.py:416 pretix/control/views/orders.py:1574 #: pretix/presale/views/order.py:1127 @@ -18057,11 +17121,9 @@ msgid "The order has been canceled." msgstr "De bestelling is geannuleerd." #: pretix/control/logdisplay.py:424 -#, fuzzy, python-brace-format -#| msgid "" -#| "Position #{posid} has been checked in at {datetime} for list \"{list}\"." +#, python-brace-format msgid "Position #{posid} has been printed at {datetime} with type \"{type}\"." -msgstr "Plaats #{posid} is ingecheckt op {datetime} voor lijst \"{list}\"." +msgstr "Positie #{posid} is afgedrukt op {datetime} met type \"{type}\"." #: pretix/control/logdisplay.py:446 #, python-brace-format @@ -18107,10 +17169,8 @@ msgid "The settings of a ticket output provider have been changed." msgstr "De instellingen van een kaartjesuitvoerprovider zijn aangepast." #: pretix/control/logdisplay.py:492 -#, fuzzy -#| msgid "Blocked Seats" msgid "Blocked manually" -msgstr "Geblokkeerde zitplaatsen" +msgstr "Handmatig geblokkeerd" #: pretix/control/logdisplay.py:494 msgid "Blocked because of an API integration" @@ -18138,16 +17198,13 @@ msgid "The order's expiry date has been changed." msgstr "De verloopdatum van de bestelling is aangepast." #: pretix/control/logdisplay.py:503 -#, fuzzy -#| msgid "The order has been marked as paid." msgid "The order has been set to be usable before it is paid." -msgstr "De bestelling is aangemerkt als betaald." +msgstr "" +"De bestelling is zo ingesteld dat ze bruikbaar is voordat ze is betaald." #: pretix/control/logdisplay.py:504 -#, fuzzy -#| msgid "The voucher has been sent to {recipient}." msgid "The order has been set to require payment before use." -msgstr "De voucher is verstuurd naar {recipient}." +msgstr "De bestelling is zo ingesteld dat er vooraf betaald moet worden." #: pretix/control/logdisplay.py:505 pretix/control/views/orders.py:1579 msgid "The order has been marked as expired." @@ -18182,10 +17239,9 @@ msgid "The order has been approved." msgstr "De bestelling is goedgekeurd." #: pretix/control/logdisplay.py:514 -#, fuzzy, python-brace-format -#| msgid "The order has been denied." +#, python-brace-format msgid "The order has been denied (comment: \"{comment}\")." -msgstr "De bestelling is geweigerd." +msgstr "De bestelling is geweigerd (opmerking: \"{comment}\")." #: pretix/control/logdisplay.py:515 #, python-brace-format @@ -18209,10 +17265,8 @@ msgstr "" "Het telefoonnummer is veranderd van \"{old_phone}\" naar \"{new_phone}\"." #: pretix/control/logdisplay.py:522 -#, fuzzy -#| msgid "The question has been changed." msgid "The customer account has been changed." -msgstr "De vraag is aangepast." +msgstr "Het klantenaccount is gewijzigd." #: pretix/control/logdisplay.py:523 msgid "The order locale has been changed." @@ -18224,10 +17278,8 @@ msgid "The invoice has been generated." msgstr "De factuur is gegenereerd." #: pretix/control/logdisplay.py:525 -#, fuzzy -#| msgid "The invoice has been generated." msgid "The invoice could not be generated." -msgstr "De factuur is gegenereerd." +msgstr "De factuur kon niet worden gegenereerd." #: pretix/control/logdisplay.py:526 pretix/control/views/orders.py:1691 msgid "The invoice has been regenerated." @@ -18239,10 +17291,9 @@ msgid "The invoice has been reissued." msgstr "De factuur is opnieuw uitgegeven." #: pretix/control/logdisplay.py:528 -#, fuzzy, python-brace-format -#| msgid "The invite has been resent." +#, python-brace-format msgid "The invoice {full_invoice_no} has been sent." -msgstr "De uitnodiging is opnieuw verstuurd." +msgstr "De factuur {full_invoice_no} is verzonden." #: pretix/control/logdisplay.py:529 #, python-brace-format @@ -18278,19 +17329,14 @@ msgstr "" "veranderd." #: pretix/control/logdisplay.py:537 -#, fuzzy -#| msgid "The order's secret has been changed." msgid "The order's check-in text has been changed." -msgstr "Het geheim van de bestelling is aangepast." +msgstr "De check-in-tekst van de bestelling is gewijzigd." #: pretix/control/logdisplay.py:538 -#, fuzzy -#| msgid "The order's flag to require attention at check-in has been toggled." msgid "" "The order's flag to be considered valid even if unpaid has been toggled." msgstr "" -"De markering van de bestelling om extra aandacht bij check-in te vereisen is " -"veranderd." +"De bestelling wordt nu beschouwd als geldig, zelfs al is ze nog niet betaald." #: pretix/control/logdisplay.py:540 #, python-brace-format @@ -18307,22 +17353,16 @@ msgid "Sending of an email has failed." msgstr "Het versturen van een email is mislukt." #: pretix/control/logdisplay.py:543 -#, fuzzy -#| msgid "" -#| "The email has been sent without attachments since they would have been " -#| "too large to be likely to arrive." msgid "" "The email has been sent without attached tickets since they would have been " "too large to be likely to arrive." msgstr "" -"De e-mail is verstuurd zonder bijlagen, omdat de bijlagen waarschijnlijk te " -"groot zouden zijn om te worden verzonden." +"De e-mail is zonder bijgevoegde tickets verzonden, omdat hij anders te groot " +"zou zijn geweest." #: pretix/control/logdisplay.py:545 -#, fuzzy -#| msgid "A custom email has been sent." msgid "An invoice email has been sent." -msgstr "Een aangepaste email is verstuurd." +msgstr "Er is een factuur per e-mail verzonden." #: pretix/control/logdisplay.py:546 msgid "A custom email has been sent." @@ -18420,25 +17460,22 @@ msgstr "" "verstuurd naar de gebruiker." #: pretix/control/logdisplay.py:572 -#, fuzzy -#| msgid "" -#| "An email has been sent to notify the user that payment has been received." msgid "An email has been sent to notify the user that the payment failed." msgstr "" -"Een email is verstuurd om de gebruiker ervan op de hoogte te stellen dat de " -"betaling is ontvangen." +"Er is een e-mail verzonden om de gebruiker te informeren dat de betaling is " +"mislukt." #: pretix/control/logdisplay.py:579 msgid "The voucher has been created." msgstr "De voucher is aangemaakt." #: pretix/control/logdisplay.py:582 -#, fuzzy -#| msgid "A voucher has been sent to a person on the waiting list." msgid "" "The voucher has been set to expire because the recipient removed themselves " "from the waiting list." -msgstr "Een voucher is verstuurd naar een persoon op de wachtlijst." +msgstr "" +"De voucher is ingesteld om te verlopen omdat de ontvanger zichzelf van de " +"wachtlijst heeft verwijderd." #: pretix/control/logdisplay.py:583 msgid "The voucher has been changed." @@ -18449,16 +17486,13 @@ msgid "The voucher has been deleted." msgstr "De voucher is verwijderd." #: pretix/control/logdisplay.py:585 -#, fuzzy -#| msgid "The selected voucher has been deleted." msgid "Cart positions including the voucher have been deleted." -msgstr "De gekozen voucher is verwijderd." +msgstr "De posities in de winkelwagen, inclusief de voucher, zijn verwijderd." #: pretix/control/logdisplay.py:586 -#, fuzzy, python-brace-format -#| msgid "A voucher has been sent to a person on the waiting list." +#, python-brace-format msgid "The voucher has been assigned to {email} through the waiting list." -msgstr "Een voucher is verstuurd naar een persoon op de wachtlijst." +msgstr "De voucher is via de wachtlijst toegewezen aan {email}." #: pretix/control/logdisplay.py:595 #, python-brace-format @@ -18478,10 +17512,8 @@ msgid "The category has been changed." msgstr "De categorie is aangepast." #: pretix/control/logdisplay.py:613 -#, fuzzy -#| msgid "The category has been deleted." msgid "The category has been reordered." -msgstr "De categorie is verwijderd." +msgstr "De categorie is opnieuw geordend." #: pretix/control/logdisplay.py:620 msgid "The tax rule has been added." @@ -18543,18 +17575,14 @@ msgid "Your account has been disabled." msgstr "Je account is uitgeschakeld." #: pretix/control/logdisplay.py:672 -#, fuzzy, python-brace-format -#| msgid "" -#| "The email address has been changed from \"{old_email}\" to \"{new_email}" -#| "\"." +#, python-brace-format msgid "Your email address has been changed from {old_email} to {email}." -msgstr "Het e-mailadres is veranderd van \"{old_email}\" naar \"{new_email}\"." +msgstr "Je e-mailadres is gewijzigd van {old_email} naar {email}." #: pretix/control/logdisplay.py:673 -#, fuzzy, python-brace-format -#| msgid "Your cart has been updated." +#, python-brace-format msgid "Your email address {email} has been confirmed." -msgstr "Je winkelwagen is bijgewerkt." +msgstr "Je e-mailadres {email} is bevestigd." #: pretix/control/logdisplay.py:685 #, python-brace-format @@ -18571,46 +17599,32 @@ msgid "This object has been created by cloning." msgstr "Dit object is aangemaakt via kopiëren." #: pretix/control/logdisplay.py:694 -#, fuzzy -#| msgid "The order has been changed." msgid "The organizer has been changed." -msgstr "De bestelling is aangepast." +msgstr "De organisator is gewijzigd." #: pretix/control/logdisplay.py:695 -#, fuzzy -#| msgid "The team settings have been changed." msgid "The organizer settings have been changed." -msgstr "De teaminstellingen zijn aangepast." +msgstr "De instellingen van de organisator zijn gewijzigd." #: pretix/control/logdisplay.py:696 pretix/control/logdisplay.py:837 -#, fuzzy -#| msgid "The order details have been changed." msgid "The footer links have been changed." -msgstr "De details van de bestelling zijn aangepast." +msgstr "De links in de voettekst zijn gewijzigd." #: pretix/control/logdisplay.py:697 pretix/control/logdisplay.py:744 -#, fuzzy -#| msgid "The quota has been added." msgid "A scheduled export has been added." -msgstr "Het quotum is toegevoegd." +msgstr "Er is een geplande export toegevoegd." #: pretix/control/logdisplay.py:698 pretix/control/logdisplay.py:745 -#, fuzzy -#| msgid "The product has been changed." msgid "A scheduled export has been changed." -msgstr "Het product is aangepast." +msgstr "Een geplande export is gewijzigd." #: pretix/control/logdisplay.py:699 pretix/control/logdisplay.py:746 -#, fuzzy -#| msgid "The selected product has been deleted." msgid "A scheduled export has been deleted." -msgstr "Het gekozen product is verwijderd." +msgstr "Een geplande export is verwijderd." #: pretix/control/logdisplay.py:700 pretix/control/logdisplay.py:747 -#, fuzzy -#| msgid "The selected product has been deleted." msgid "A scheduled export has been executed." -msgstr "Het gekozen product is verwijderd." +msgstr "Een geplande export is uitgevoerd." #: pretix/control/logdisplay.py:701 pretix/control/logdisplay.py:748 #, python-brace-format @@ -18618,216 +17632,146 @@ msgid "A scheduled export has failed: {reason}." msgstr "Een geplande export is mislukt: {reason}." #: pretix/control/logdisplay.py:702 -#, fuzzy -#| msgid "The new organizer has been created." msgid "Gift card acceptance for another organizer has been added." -msgstr "De nieuwe organisator is aangemaakt." +msgstr "" +"De acceptatie van cadeaubonnen voor een andere organisator is toegevoegd." #: pretix/control/logdisplay.py:703 -#, fuzzy -#| msgid "The new organizer has been created." msgid "Gift card acceptance for another organizer has been removed." -msgstr "De nieuwe organisator is aangemaakt." +msgstr "" +"De acceptatie van cadeaubonnen voor een andere organisator is verwijderd." #: pretix/control/logdisplay.py:704 -#, fuzzy -#| msgid "The gift card has been created." msgid "A new gift card acceptor has been invited." -msgstr "De cadeaubon is aangemaakt." +msgstr "Er is een nieuwe acceptant van cadeaubonnen uitgenodigd." #: pretix/control/logdisplay.py:705 -#, fuzzy -#| msgid "The gift card has been created." msgid "A gift card acceptor has been removed." -msgstr "De cadeaubon is aangemaakt." +msgstr "Een acceptant van cadeaubonnen is verwijderd." #: pretix/control/logdisplay.py:706 -#, fuzzy -#| msgid "The selected gift card issuer has been removed." msgid "A gift card issuer has been removed or declined." -msgstr "De gekozen cadeaukaartuitgever is verwijderd." +msgstr "Een uitgever van cadeaubonnen is verwijderd of geweigerd." #: pretix/control/logdisplay.py:707 -#, fuzzy -#| msgid "The selected gift card issuer has been added." msgid "A new gift card issuer has been accepted." -msgstr "De gekozen cadeaukaartuitgever is toegevoegd." +msgstr "Er is een nieuwe uitgever van cadeaubonnen geaccepteerd." #: pretix/control/logdisplay.py:708 -#, fuzzy -#| msgid "The user has been created." msgid "The webhook has been created." -msgstr "De gebruiker is aangemaakt." +msgstr "De webhook is aangemaakt." #: pretix/control/logdisplay.py:709 -#, fuzzy -#| msgid "The gate has been changed." msgid "The webhook has been changed." -msgstr "De toegangslocatie is aangepast." +msgstr "De webhook is gewijzigd." #: pretix/control/logdisplay.py:710 msgid "The webhook call retry jobs have been manually expedited." msgstr "De oproepherhalingsopdrachten naar de webhook zijn handmatig versneld." #: pretix/control/logdisplay.py:711 -#, fuzzy -#| msgid "The user has been created." msgid "The webhook call retry jobs have been dropped." -msgstr "De gebruiker is aangemaakt." +msgstr "De webhook-oproepherhalingsopdrachten zijn verwijderd." #: pretix/control/logdisplay.py:712 -#, fuzzy -#| msgid "The order has been created." msgid "The SSO provider has been created." -msgstr "De bestelling is aangemaakt." +msgstr "De SSO-provider is aangemaakt." #: pretix/control/logdisplay.py:713 -#, fuzzy -#| msgid "The order has been changed." msgid "The SSO provider has been changed." -msgstr "De bestelling is aangepast." +msgstr "De SSO-provider is gewijzigd." #: pretix/control/logdisplay.py:714 -#, fuzzy -#| msgid "The order has been deleted." msgid "The SSO provider has been deleted." -msgstr "De bestelling is verwijderd." +msgstr "De SSO-provider is verwijderd." #: pretix/control/logdisplay.py:715 -#, fuzzy -#| msgid "The event has been created." msgid "The SSO client has been created." -msgstr "Het evenement is aangemaakt." +msgstr "De SSO-client is aangemaakt." #: pretix/control/logdisplay.py:716 -#, fuzzy -#| msgid "The gate has been changed." msgid "The SSO client has been changed." -msgstr "De toegangslocatie is aangepast." +msgstr "De SSO-client is gewijzigd." #: pretix/control/logdisplay.py:717 -#, fuzzy -#| msgid "The event has been deleted." msgid "The SSO client has been deleted." -msgstr "Dit evenement is verwijderd." +msgstr "De SSO-client is verwijderd." #: pretix/control/logdisplay.py:718 pretix/control/views/organizer.py:2645 -#, fuzzy -#| msgctxt "subevent" -#| msgid "The event date has been created." msgid "The membership type has been created." -msgstr "De evenementsdatum is aangemaakt." +msgstr "Het lidmaatschapstype is aangemaakt." #: pretix/control/logdisplay.py:719 -#, fuzzy -#| msgctxt "subevent" -#| msgid "The event date has been changed." msgid "The membership type has been changed." -msgstr "De evenementsdatum is aangepast." +msgstr "Het lidmaatschapstype is gewijzigd." #: pretix/control/logdisplay.py:720 -#, fuzzy -#| msgctxt "subevent" -#| msgid "The event date has been deleted." msgid "The membership type has been deleted." -msgstr "De evenementsdatum is verwijderd." +msgstr "Het lidmaatschapstype is verwijderd." #: pretix/control/logdisplay.py:721 pretix/control/views/organizer.py:3485 -#, fuzzy -#| msgctxt "subevent" -#| msgid "The new date has been created." msgid "The sales channel has been created." -msgstr "De nieuwe datum is aangemaakt." +msgstr "Het verkoopkanaal is aangemaakt." #: pretix/control/logdisplay.py:722 -#, fuzzy -#| msgid "The device has been changed." msgid "The sales channel has been changed." -msgstr "Het apparaat is gewijzigd." +msgstr "Het verkoopkanaal is gewijzigd." #: pretix/control/logdisplay.py:723 -#, fuzzy -#| msgid "The selected list has been deleted." msgid "The sales channel has been deleted." -msgstr "De gekozen lijst is verwijderd." +msgstr "Het verkoopkanaal is verwijderd." #: pretix/control/logdisplay.py:724 -#, fuzzy -#| msgid "The gate has been created." msgid "The account has been created." -msgstr "De toegangslocatie is aangemaakt." +msgstr "Het account is aangemaakt." #: pretix/control/logdisplay.py:725 -#, fuzzy -#| msgid "The gate has been changed." msgid "The account has been changed." -msgstr "De toegangslocatie is aangepast." +msgstr "Het account is gewijzigd." #: pretix/control/logdisplay.py:726 -#, fuzzy -#| msgid "Your account has been enabled." msgid "A membership for this account has been added." -msgstr "Je account is ingeschakeld." +msgstr "Er is een lidmaatschap voor dit account toegevoegd." #: pretix/control/logdisplay.py:727 -#, fuzzy -#| msgid "An answer option has been changed." msgid "A membership of this account has been changed." -msgstr "Een antwoordoptie is gewijzigd." +msgstr "Een lidmaatschap van dit account is gewijzigd." #: pretix/control/logdisplay.py:728 -#, fuzzy -#| msgid "Your account has been enabled." msgid "A membership of this account has been deleted." -msgstr "Je account is ingeschakeld." +msgstr "Een lidmaatschap van dit account is verwijderd." #: pretix/control/logdisplay.py:729 -#, fuzzy -#| msgid "Your account has been disabled." msgid "The account has been disabled and anonymized." -msgstr "Je account is uitgeschakeld." +msgstr "Het account is uitgeschakeld en geanonimiseerd." #: pretix/control/logdisplay.py:730 -#, fuzzy -#| msgid "The password has been reset." msgid "A new password has been requested." -msgstr "Het wachtwoord is opnieuw ingesteld." +msgstr "Er is een nieuw wachtwoord aangevraagd." #: pretix/control/logdisplay.py:731 -#, fuzzy -#| msgid "The password has been reset." msgid "A new password has been set." -msgstr "Het wachtwoord is opnieuw ingesteld." +msgstr "Er is een nieuw wachtwoord ingesteld." #: pretix/control/logdisplay.py:733 -#, fuzzy -#| msgid "The team has been created." msgid "The reusable medium has been created." -msgstr "Het team is aangepast." +msgstr "Het herbruikbare medium is aangemaakt." #: pretix/control/logdisplay.py:734 -#, fuzzy -#| msgid "The payment has been created successfully." msgid "The reusable medium has been created automatically." -msgstr "De betaling is succesvol aangemaakt." +msgstr "Het herbruikbare medium is automatisch aangemaakt." #: pretix/control/logdisplay.py:735 -#, fuzzy -#| msgid "The tax rule has been changed." msgid "The reusable medium has been changed." -msgstr "De belastingregel is aangepast." +msgstr "Het herbruikbare medium is gewijzigd." #: pretix/control/logdisplay.py:736 -#, fuzzy -#| msgid "The email has been queued to be sent." msgid "The medium has been connected to a new ticket." -msgstr "De email is in de wachtrij gezet om te worden verstuurd." +msgstr "Het medium is gekoppeld aan een nieuw ticket." #: pretix/control/logdisplay.py:737 -#, fuzzy -#| msgid "The email has been queued to be sent." msgid "The medium has been connected to a new gift card." -msgstr "De email is in de wachtrij gezet om te worden verstuurd." +msgstr "Het medium is gekoppeld aan een nieuwe cadeaubon." #: pretix/control/logdisplay.py:739 msgid "The event's internal comment has been updated." @@ -18838,10 +17782,8 @@ msgid "The event has been canceled." msgstr "Het evenement is geannuleerd." #: pretix/control/logdisplay.py:741 -#, fuzzy -#| msgid "The event has been deleted." msgid "An event has been deleted." -msgstr "Dit evenement is verwijderd." +msgstr "Een evenement is verwijderd." #: pretix/control/logdisplay.py:742 msgid "A removal process for personal data has been started." @@ -18879,10 +17821,8 @@ msgid "Your two-factor emergency codes have been regenerated." msgstr "Je twee-factor-noodtokens zijn opnieuw gegenereerd." #: pretix/control/logdisplay.py:755 -#, fuzzy -#| msgid "Your two-factor emergency codes have been regenerated." msgid "A two-factor emergency code has been generated." -msgstr "Je twee-factor-noodtokens zijn opnieuw gegenereerd." +msgstr "Er is een tweefactornoodcode gegenereerd." #: pretix/control/logdisplay.py:756 #, python-brace-format @@ -18944,10 +17884,8 @@ msgid "A voucher has been sent to a person on the waiting list." msgstr "Een voucher is verstuurd naar een persoon op de wachtlijst." #: pretix/control/logdisplay.py:773 -#, fuzzy -#| msgid "An entry has been added to the waiting list." msgid "An entry has been transferred to another waiting list." -msgstr "Een inschrijving is toegevoegd aan de wachtlijst." +msgstr "Een inschrijving is overgeplaatst naar een andere wachtlijst." #: pretix/control/logdisplay.py:774 msgid "The team has been created." @@ -19057,48 +17995,34 @@ msgid "The token \"{name}\" has been revoked." msgstr "Het token \"{name}\" is ingetrokken." #: pretix/control/logdisplay.py:798 -#, fuzzy -#| msgid "The check-in list has been deleted." msgid "The check-in and print log state has been reset." -msgstr "De inchecklijst is verwijderd." +msgstr "De status van het inchecken en afdrukken is gereset." #: pretix/control/logdisplay.py:805 pretix/control/logdisplay.py:864 -#, fuzzy -#| msgid "A plugin has been enabled." msgid "The plugin has been enabled." -msgstr "Een plug-in is ingeschakeld." +msgstr "De plug-in is ingeschakeld." #: pretix/control/logdisplay.py:806 pretix/control/logdisplay.py:865 #: pretix/control/views/event.py:489 pretix/control/views/organizer.py:754 -#, fuzzy -#| msgid "A plugin has been disabled." msgid "The plugin has been disabled." -msgstr "Een plug-in is uitgeschakeld." +msgstr "De plug-in is uitgeschakeld." #: pretix/control/logdisplay.py:809 pretix/control/logdisplay.py:868 -#, fuzzy, python-brace-format -#| msgid "Question {val}" +#, python-brace-format msgid "Plugin {val}" -msgstr "Vraag {val}" +msgstr "Plug-in {val}" #: pretix/control/logdisplay.py:824 -#, fuzzy -#| msgid "A user has been added to the event team." msgid "A meta property has been added to this event." -msgstr "Een gebruiker is toegevoegd aan het evenemententeam." +msgstr "Er is een meta-eigenschap toegevoegd aan dit evenement." #: pretix/control/logdisplay.py:825 -#, fuzzy -#| msgid "A user has been removed from the event team." msgid "A meta property has been removed from this event." -msgstr "Een gebruiker is verwijderd van het evenemententeam." +msgstr "Een meta-eigenschap van dit evenement is verwijderd." #: pretix/control/logdisplay.py:826 -#, fuzzy -#| msgctxt "subevent" -#| msgid "A quota has been changed on the event date." msgid "A meta property has been changed on this event." -msgstr "Een quotum is veranderd op de evenementsdatum." +msgstr "Een meta-eigenschap van dit evenement is gewijzigd." #: pretix/control/logdisplay.py:827 msgid "The event settings have been changed." @@ -19173,10 +18097,9 @@ msgid "The check-in list has been changed." msgstr "De inchecklijst is aangepast." #: pretix/control/logdisplay.py:857 -#, fuzzy, python-brace-format -#| msgid "Check-in list" +#, python-brace-format msgid "Check-in list {val}" -msgstr "Inchecklijst" +msgstr "Check-in-lijst {val}" #: pretix/control/logdisplay.py:884 msgid "The product has been created." @@ -19187,10 +18110,8 @@ msgid "The product has been changed." msgstr "Het product is aangepast." #: pretix/control/logdisplay.py:886 -#, fuzzy -#| msgid "The product has been created." msgid "The product has been reordered." -msgstr "Het product is aangemaakt." +msgstr "Het product is opnieuw besteld." #: pretix/control/logdisplay.py:887 msgid "The product has been deleted." @@ -19221,22 +18142,16 @@ msgid "A bundled item has been changed on this product." msgstr "Een gebundeld product van dit product is gewijzigd." #: pretix/control/logdisplay.py:894 -#, fuzzy -#| msgid "An add-on has been added to this product." msgid "A program time has been added to this product." -msgstr "Een add-on is toegevoegd aan dit product." +msgstr "Er is een programmatijd aan dit product toegevoegd." #: pretix/control/logdisplay.py:895 -#, fuzzy -#| msgid "An add-on has been changed on this product." msgid "A program time has been changed on this product." -msgstr "Een add-on van dit product is gewijzigd." +msgstr "De programmatijd van dit product is gewijzigd." #: pretix/control/logdisplay.py:896 -#, fuzzy -#| msgid "An add-on has been removed from this product." msgid "A program time has been removed from this product." -msgstr "Een add-on is verwijderd van dit product." +msgstr "Een programmatijd is uit dit product verwijderd." #: pretix/control/logdisplay.py:903 #, python-brace-format @@ -19349,28 +18264,20 @@ msgid "The question has been changed." msgstr "De vraag is aangepast." #: pretix/control/logdisplay.py:955 -#, fuzzy -#| msgid "The question has been deleted." msgid "The question has been reordered." -msgstr "De vraag is verwijderd." +msgstr "De vraag is opnieuw geordend." #: pretix/control/logdisplay.py:962 -#, fuzzy -#| msgid "The quota has been added." msgid "The discount has been added." -msgstr "Het quotum is toegevoegd." +msgstr "De korting is toegevoegd." #: pretix/control/logdisplay.py:963 -#, fuzzy -#| msgid "The product has been deleted." msgid "The discount has been deleted." -msgstr "Het product is verwijderd." +msgstr "De korting is verwijderd." #: pretix/control/logdisplay.py:964 -#, fuzzy -#| msgid "The gate has been changed." msgid "The discount has been changed." -msgstr "De toegangslocatie is aangepast." +msgstr "De korting is gewijzigd." #: pretix/control/logdisplay.py:988 #, python-brace-format @@ -19459,7 +18366,6 @@ msgstr "Betaling" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_list.html:32 #: pretix/presale/templates/pretixpresale/organizers/index.html:89 #: pretix/presale/templates/pretixpresale/organizers/index.html:91 -#, fuzzy msgid "Tickets" msgstr "Tickets" @@ -19502,10 +18408,8 @@ msgid "Categories" msgstr "Categorieën" #: pretix/control/navigation.py:180 -#, fuzzy -#| msgid "Account" msgid "Discounts" -msgstr "Rekening" +msgstr "Kortingen" #: pretix/control/navigation.py:213 msgid "Overview" @@ -19541,10 +18445,8 @@ msgstr "Check-in" #: pretix/control/navigation.py:313 #: pretix/control/templates/pretixcontrol/checkin/checkins.html:4 #: pretix/control/templates/pretixcontrol/checkin/checkins.html:6 -#, fuzzy -#| msgid "Check-in list" msgid "Check-in history" -msgstr "Inchecklijst" +msgstr "Check-in-geschiedenis" #: pretix/control/navigation.py:356 #: pretix/control/templates/pretixcontrol/event/plugins.html:20 @@ -19607,16 +18509,12 @@ msgid "Update check" msgstr "Updatecontrole" #: pretix/control/navigation.py:445 -#, fuzzy -#| msgid "Tickets & check-in" msgid "License check" -msgstr "Tickets & inchecken" +msgstr "Licentiecontrole" #: pretix/control/navigation.py:450 -#, fuzzy -#| msgid "System question" msgid "System report" -msgstr "Systeemvraag" +msgstr "Systeemrapport" #: pretix/control/navigation.py:455 pretix/control/navigation.py:675 msgid "Data sync problems" @@ -19633,19 +18531,14 @@ msgid "Webhooks" msgstr "Webhooks" #: pretix/control/navigation.py:560 -#, fuzzy -#| msgid "Accept anyway" msgid "Acceptance" -msgstr "Alsnog accepteren" +msgstr "Aanvaarding" #: pretix/control/navigation.py:581 #: pretix/control/templates/pretixcontrol/organizers/customers.html:6 #: pretix/control/templates/pretixcontrol/organizers/customers.html:9 -#, fuzzy -#| msgctxt "refund_source" -#| msgid "Customer" msgid "Customers" -msgstr "Klant" +msgstr "Klanten" #: pretix/control/navigation.py:600 #: pretix/control/templates/pretixcontrol/organizers/ssoclients.html:4 @@ -19656,10 +18549,8 @@ msgstr "SSO-klanten" #: pretix/control/navigation.py:609 #: pretix/control/templates/pretixcontrol/organizers/ssoproviders.html:4 #: pretix/control/templates/pretixcontrol/organizers/ssoproviders.html:6 -#, fuzzy -#| msgid "Payment providers" msgid "SSO providers" -msgstr "Betalingsaanbieders" +msgstr "SSO-providers" #: pretix/control/navigation.py:638 pretix/control/navigation.py:645 msgid "Devices" @@ -19799,10 +18690,9 @@ msgstr "" "je pretix-account?" #: pretix/control/templates/pretixcontrol/auth/oauth_authorization.html:24 -#, fuzzy, python-format -#| msgid "You are currently working on behalf of %(user)s." +#, python-format msgid "You are currently logged in as %(user)s." -msgstr "Je werkt momenteel namens %(user)s." +msgstr "Je bent momenteel ingelogd als %(user)s." #: pretix/control/templates/pretixcontrol/auth/oauth_authorization.html:28 msgid "The application requires the following permissions:" @@ -20085,21 +18975,19 @@ msgid "ZVT Terminal" msgstr "ZVT-terminal" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:17 -#, fuzzy -#| msgid "Confirmation code" msgctxt "terminal_zvt" msgid "Confirmation mode" -msgstr "Bevestigingscode" +msgstr "Bevestigingsmodus" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:20 msgctxt "terminal_zvt" msgid "Trace number" -msgstr "Trace-nummer" +msgstr "Traceernummer" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:22 msgctxt "terminal_zvt" msgid "Payment type" -msgstr "Betalingswijze" +msgstr "Betaalwijze" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:24 msgctxt "terminal_zvt" @@ -20109,12 +18997,12 @@ msgstr "Extra tekst" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:26 msgctxt "terminal_zvt" msgid "Turnover number" -msgstr "Turnover-nummer" +msgstr "Omzetcijfer" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:28 msgctxt "terminal_zvt" msgid "Receipt number" -msgstr "Bonnummer" +msgstr "Ontvangstbewijsnummer" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:30 msgctxt "terminal_zvt" @@ -20122,15 +19010,13 @@ msgid "Card type" msgstr "Kaarttype" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:37 -#, fuzzy -#| msgid "(unknown)" msgid "Unknown" -msgstr "(onbekend)" +msgstr "Onbekend" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:40 msgctxt "terminal_zvt" msgid "Card expiration" -msgstr "Verloopdatum kaart" +msgstr "Vervaldatum kaart" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:46 msgid "Transaction Code" @@ -20157,32 +19043,28 @@ msgstr "Kaartnummer" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:65 msgid "Client Transaction Code" -msgstr "Client-transactiecode" +msgstr "Transactiecode van de client" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:68 msgid "Server Transaction Code" -msgstr "Server-transactiecode" +msgstr "Transactiecode van de server" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:75 #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:91 -#, fuzzy -#| msgid "Payer and reference" msgid "Payment reference" -msgstr "Betaler en kenmerk" +msgstr "Betalingsreferentie" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:78 msgid "Payment Application" -msgstr "Betalingsapp" +msgstr "Betaalapplicatie" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:86 msgid "Authorization Code" msgstr "Autorisatiecode" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:93 -#, fuzzy -#| msgid "Transactions" msgid "Transaction ID" -msgstr "Transacties" +msgstr "Transactie-ID" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:98 #: pretix/plugins/banktransfer/payment.py:299 @@ -20193,29 +19075,20 @@ msgid "Reference" msgstr "Kenmerk" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:100 -#, fuzzy -#| msgid "ZVT Terminal" msgid "Terminal ID" -msgstr "ZVT-terminal" +msgstr "Terminal-ID" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:104 -#, fuzzy -#| msgid "Card number" msgid "Card holder" -msgstr "Kaartnummer" +msgstr "Kaarthouder" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:108 -#, fuzzy -#| msgctxt "terminal_zvt" -#| msgid "Card expiration" msgid "Card expiration" -msgstr "Verloopdatum kaart" +msgstr "Vervaldatum kaart" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:112 -#, fuzzy -#| msgid "Result" msgid "Result Code" -msgstr "Resultaat" +msgstr "Resultaatcode" #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:116 msgid "Cash" @@ -20223,16 +19096,11 @@ msgstr "Contant" #: pretix/control/templates/pretixcontrol/checkin/bulk_revert_confirm.html:4 #: pretix/control/templates/pretixcontrol/checkin/bulk_revert_confirm.html:6 -#, fuzzy -#| msgid "Delete check-in list" msgid "Delete check-ins" -msgstr "Verwijder inchecklijst" +msgstr "Check-ins verwijderen" #: pretix/control/templates/pretixcontrol/checkin/bulk_revert_confirm.html:15 -#, fuzzy, python-format -#| msgid "" -#| "Are you sure you want to delete the check-in list %(name)s?" +#, python-format msgid "" "Are you sure you want to permanently delete the check-ins of one " "ticket?" @@ -20240,11 +19108,11 @@ msgid_plural "" "Are you sure you want to permanently delete the check-ins of " "%(count)s tickets?" msgstr[0] "" -"Weet je zeker dat je de inchecklijst %(name)s wilt " -"verwijderen?" +"Weet je zeker dat je de check-ins van één ticket definitief " +"wilt verwijderen?" msgstr[1] "" -"Weet je zeker dat je de inchecklijst %(name)s wilt " -"verwijderen?" +"Weet je zeker dat je de check-ins van %(count)s tickets " +"definitief wilt verwijderen?" #: pretix/control/templates/pretixcontrol/checkin/bulk_revert_confirm.html:24 #: pretix/control/templates/pretixcontrol/checkin/list_delete.html:18 @@ -20419,22 +19287,16 @@ msgid "Filter" msgstr "Filteren" #: pretix/control/templates/pretixcontrol/checkin/checkins.html:50 -#, fuzzy -#| msgid "Your search did not match any check-in lists." msgid "Your search did not match any check-ins." -msgstr "Je zoekopdracht kwam niet overeen met inchecklijsten." +msgstr "Je zoekopdracht leverde geen enkele check-in op." #: pretix/control/templates/pretixcontrol/checkin/checkins.html:52 -#, fuzzy -#| msgid "You haven't created any categories yet." msgid "You haven't scanned any tickets yet." -msgstr "Je hebt nog geen categorieën aangemaakt." +msgstr "Je hebt nog geen tickets gescand." #: pretix/control/templates/pretixcontrol/checkin/checkins.html:63 -#, fuzzy -#| msgid "Name of bank" msgid "Time of scan" -msgstr "Naam van de bank" +msgstr "Tijdstip van scan" #: pretix/control/templates/pretixcontrol/checkin/checkins.html:65 #: pretix/control/templates/pretixcontrol/checkin/simulator.html:49 @@ -20456,10 +19318,9 @@ msgid "Additional entry scan: %(date)s" msgstr "Extra ingangsscan: %(date)s" #: pretix/control/templates/pretixcontrol/checkin/checkins.html:85 -#, fuzzy, python-format -#| msgid "Exit scan: %(date)s" +#, python-format msgid "Offline scan. Upload time: %(date)s" -msgstr "Uitgangsscan: %(date)s" +msgstr "Offline scan. Uploadtijd: %(date)s" #: pretix/control/templates/pretixcontrol/checkin/checkins.html:88 #: pretix/control/templates/pretixcontrol/order/index.html:444 @@ -20468,24 +19329,18 @@ msgid "Automatically checked in: %(date)s" msgstr "Automatisch ingecheckt: %(date)s" #: pretix/control/templates/pretixcontrol/checkin/checkins.html:92 -#, fuzzy -#| msgid "live and in test mode" msgid "Failed in offline mode" -msgstr "live en in testmodus" +msgstr "Mislukt in offline modus" #: pretix/control/templates/pretixcontrol/checkin/checkins.html:107 -#, fuzzy -#| msgid "Successful payments" msgctxt "checkin_result" msgid "Successful" -msgstr "Geslaagde betalingen" +msgstr "Succesvol" #: pretix/control/templates/pretixcontrol/checkin/checkins.html:112 -#, fuzzy -#| msgid "Denied order" msgctxt "checkin_result" msgid "Denied" -msgstr "Bestelling geweigerd" +msgstr "Geweigerd" #: pretix/control/templates/pretixcontrol/checkin/checkins.html:152 #: pretix/control/templates/pretixcontrol/event/index.html:24 @@ -20513,10 +19368,8 @@ msgstr "Lijstinstellingen bewerken" #: pretix/control/templates/pretixcontrol/checkin/lists.html:167 #: pretix/control/templates/pretixcontrol/checkin/simulator.html:8 #: pretix/control/templates/pretixcontrol/checkin/simulator.html:20 -#, fuzzy -#| msgid "Check-in list" msgid "Check-in simulator" -msgstr "Inchecklijst" +msgstr "Check-in-simulator" #: pretix/control/templates/pretixcontrol/checkin/index.html:27 #: pretix/control/templates/pretixcontrol/orders/overview.html:20 @@ -20581,10 +19434,8 @@ msgid "Check-Out selected attendees" msgstr "Geselecteerde gasten uitchecken" #: pretix/control/templates/pretixcontrol/checkin/index.html:226 -#, fuzzy -#| msgid "Check-In selected attendees" msgid "Delete all check-ins of selected attendees" -msgstr "Geselecteerde gasten inchecken" +msgstr "Verwijder alle check-ins van geselecteerde deelnemers" #: pretix/control/templates/pretixcontrol/checkin/list_delete.html:4 #: pretix/control/templates/pretixcontrol/checkin/list_delete.html:6 @@ -20608,10 +19459,8 @@ msgstr "" "Dit zal de informatie van %(num)s check-ins ook verwijderen." #: pretix/control/templates/pretixcontrol/checkin/list_delete.html:22 -#, fuzzy -#| msgid "Delete question" msgid "Delete list and all check-ins" -msgstr "Vraag verwijderen" +msgstr "Lijst en alle check-ins verwijderen" #: pretix/control/templates/pretixcontrol/checkin/list_edit.html:48 #: pretix/control/templates/pretixcontrol/event/payment.html:80 @@ -20639,18 +19488,12 @@ msgstr "" "omdat deze opties anders niet werken." #: pretix/control/templates/pretixcontrol/checkin/list_edit.html:61 -#, fuzzy -#| msgid "" -#| "If you make use of these advanced options, we recommend using our Android " -#| "and Desktop apps. Custom check-in rules do not work offline with our iOS " -#| "scanning app." msgid "" "If you make use of these advanced options, we recommend using our Android " "and Desktop apps." msgstr "" -"Als je deze geavanceerde opties gebruikt raden we aan onze Android-app of " -"onze Desktop-app te gebruiken. Aangepaste incheckregels werken niet offline " -"met onze iOS-app." +"Als je gebruikmaakt van deze geavanceerde opties, raden we je aan onze " +"Android- en desktop-apps te gebruiken." #: pretix/control/templates/pretixcontrol/checkin/list_edit.html:76 msgid "Custom check-in rule" @@ -20763,10 +19606,8 @@ msgstr "Verbonden apparaten" #: pretix/control/templates/pretixcontrol/checkin/lists.html:90 #: pretix/control/templates/pretixcontrol/checkin/reset.html:4 #: pretix/control/templates/pretixcontrol/checkin/reset.html:6 -#, fuzzy -#| msgid "Delete check-in list" msgid "Reset check-in" -msgstr "Verwijder inchecklijst" +msgstr "Check-in resetten" #: pretix/control/templates/pretixcontrol/checkin/lists.html:163 #: pretix/control/templates/pretixcontrol/items/categories.html:57 @@ -20812,10 +19653,8 @@ msgstr[0] "Bovendien wordt 1 afdruklogboek verwijderd." msgstr[1] "Bovendien worden %(count)s afdruklogboeken verwijderd." #: pretix/control/templates/pretixcontrol/checkin/reset.html:30 -#, fuzzy -#| msgid "The transaction could not be reversed." msgid "This cannot be reverted!" -msgstr "De transactie kon niet worden teruggeboekt." +msgstr "Dit kan niet ongedaan worden gemaakt!" #: pretix/control/templates/pretixcontrol/checkin/reset.html:34 msgid "" @@ -20827,10 +19666,8 @@ msgstr "" "gedragen alsof ze nooit hebben bestaan." #: pretix/control/templates/pretixcontrol/checkin/reset.html:46 -#, fuzzy -#| msgid "Proceed with checkout" msgid "Proceed with reset" -msgstr "Afrekenen" +msgstr "Ga door met resetten" #: pretix/control/templates/pretixcontrol/checkin/simulator.html:22 msgid "" @@ -20849,16 +19686,12 @@ msgid "Simulate" msgstr "Simuleren" #: pretix/control/templates/pretixcontrol/checkin/simulator.html:66 -#, fuzzy -#| msgid "All check-ins" msgid "Valid check-in" -msgstr "Alle check-ins" +msgstr "Geldige check-in" #: pretix/control/templates/pretixcontrol/checkin/simulator.html:68 -#, fuzzy -#| msgid "Additional information" msgid "Additional information required" -msgstr "Extra informatie" +msgstr "Aanvullende informatie vereist" #: pretix/control/templates/pretixcontrol/checkin/simulator.html:70 msgid "" @@ -20868,10 +19701,8 @@ msgstr "" "voltooid:" #: pretix/control/templates/pretixcontrol/checkin/simulator.html:92 -#, fuzzy -#| msgid "Requires special attention" msgid "Special attention required" -msgstr "Vereist speciale aandacht" +msgstr "Speciale aandacht vereist" #: pretix/control/templates/pretixcontrol/dashboard.html:9 msgid "Go to event" @@ -20916,31 +19747,23 @@ msgid "Other features" msgstr "Andere functies" #: pretix/control/templates/pretixcontrol/datasync/control_order_info.html:8 -#, fuzzy -#| msgid "Transfer to other order" msgid "Data transfer to external systems" -msgstr "Overdragen aan andere bestelling" +msgstr "Gegevensoverdracht naar externe systemen" #: pretix/control/templates/pretixcontrol/datasync/control_order_info.html:18 #: pretix/control/templates/pretixcontrol/organizers/webhook_logs.html:22 -#, fuzzy -#| msgid "Retry" msgid "Retry now" -msgstr "Probeer opnieuw" +msgstr "Probeer het nu opnieuw" #: pretix/control/templates/pretixcontrol/datasync/control_order_info.html:22 -#, fuzzy -#| msgid "Pay now" msgid "Sync now" -msgstr "Betaal nu" +msgstr "Nu synchroniseren" #: pretix/control/templates/pretixcontrol/datasync/control_order_info.html:31 #: pretix/plugins/paypal2/templates/pretixplugins/paypal2/control.html:16 #: pretix/plugins/paypal2/templates/pretixplugins/paypal2/control.html:19 -#, fuzzy -#| msgid "Error:" msgid "Error" -msgstr "Fout:" +msgstr "Fout" #: pretix/control/templates/pretixcontrol/datasync/control_order_info.html:34 #, python-format @@ -20949,29 +19772,22 @@ msgstr "Fout. Poging %(num)s van %(max)s." #: pretix/control/templates/pretixcontrol/datasync/control_order_info.html:38 #: pretix/control/templates/pretixcontrol/datasync/control_order_info.html:43 -#, fuzzy, python-format -#| msgid "Admission: %(datetime)s" +#, python-format msgid "Waiting until %(datetime)s" -msgstr "Deuren open: %(datetime)s" +msgstr "Wachten tot %(datetime)s" #: pretix/control/templates/pretixcontrol/datasync/control_order_info.html:49 -#, fuzzy, python-format -#| msgid "Admission: %(datetime)s" +#, python-format msgid "triggered at %(datetime)s" -msgstr "Deuren open: %(datetime)s" +msgstr "geactiveerd op %(datetime)s" #: pretix/control/templates/pretixcontrol/datasync/control_order_info.html:62 -#, fuzzy -#| msgid "Internal identifier" msgid "identified by" -msgstr "Intern kenmerk" +msgstr "geïdentificeerd door" #: pretix/control/templates/pretixcontrol/datasync/control_order_info.html:68 -#, fuzzy -#| msgctxt "subevent" -#| msgid "No date selected." msgid "No data transmitted." -msgstr "Geen datum geselecteerd." +msgstr "Er zijn geen gegevens verzonden." #: pretix/control/templates/pretixcontrol/datasync/failed_jobs.html:5 msgid "Sync problems" @@ -20988,16 +19804,12 @@ msgstr "" "een nieuwe poging doen om ze te synchroniseren." #: pretix/control/templates/pretixcontrol/datasync/failed_jobs.html:24 -#, fuzzy -#| msgid "SSO provider" msgid "Sync provider" -msgstr "SSO provider" +msgstr "Synchronisatieprovider" #: pretix/control/templates/pretixcontrol/datasync/failed_jobs.html:26 -#, fuzzy -#| msgid "Failed" msgid "Failure mode" -msgstr "Mislukt" +msgstr "Foutmodus" #: pretix/control/templates/pretixcontrol/datasync/failed_jobs.html:51 #, python-format @@ -21005,16 +19817,12 @@ msgid "Temporary error, will retry after %(datetime)s" msgstr "Tijdelijke fout, zal opnieuw proberen na %(datetime)s" #: pretix/control/templates/pretixcontrol/datasync/failed_jobs.html:63 -#, fuzzy -#| msgid "All products" msgid "No problems." -msgstr "Alle producten" +msgstr "Geen problemen." #: pretix/control/templates/pretixcontrol/datasync/failed_jobs.html:74 -#, fuzzy -#| msgid "Delete selected" msgid "Retry selected" -msgstr "Verwijder geselecteerde" +msgstr "Selectie opnieuw proberen" #: pretix/control/templates/pretixcontrol/datasync/failed_jobs.html:75 msgid "Cancel selected" @@ -21232,16 +20040,12 @@ msgstr "" #: pretix/control/templates/pretixcontrol/email_setup.html:8 #: pretix/control/templates/pretixcontrol/email_setup_simple.html:8 #: pretix/control/templates/pretixcontrol/email_setup_smtp.html:8 -#, fuzzy -#| msgid "Email settings" msgid "Email sending" -msgstr "E-mailinstellingen" +msgstr "E-mail verzenden" #: pretix/control/templates/pretixcontrol/email_setup.html:21 -#, fuzzy -#| msgid "pretix default" msgid "Use system default" -msgstr "pretix-standaard" +msgstr "Gebruik standaardinstelling van het systeem" #: pretix/control/templates/pretixcontrol/email_setup.html:29 msgid "" @@ -21281,10 +20085,8 @@ msgstr "" #: pretix/control/templates/pretixcontrol/email_setup.html:84 #: pretix/control/templates/pretixcontrol/email_setup_smtp.html:18 -#, fuzzy -#| msgid "Use custom SMTP server" msgid "Use a custom SMTP server" -msgstr "Gebruik aangepaste SMTP-server" +msgstr "Gebruik een aangepaste SMTP-server" #: pretix/control/templates/pretixcontrol/email_setup.html:92 msgid "" @@ -21295,10 +20097,8 @@ msgstr "" "worden gebruikt voor het verzenden van e-mails." #: pretix/control/templates/pretixcontrol/email_setup.html:110 -#, fuzzy -#| msgid "Organizer settings" msgid "Reset to organizer settings" -msgstr "Organisatorinstellingen" +msgstr "Terugzetten naar instellingen van organisator" #: pretix/control/templates/pretixcontrol/email_setup_simple.html:29 msgid "This is the SPF record we found on your domain:" @@ -21329,10 +20129,8 @@ msgstr "" "Geweldig!" #: pretix/control/templates/pretixcontrol/email_setup_simple.html:54 -#, fuzzy -#| msgid "Verification failed" msgid "Verification" -msgstr "Verificatie mislukt" +msgstr "Verificatie" #: pretix/control/templates/pretixcontrol/email_setup_simple.html:56 #, python-format @@ -21345,10 +20143,8 @@ msgstr "" "in:" #: pretix/control/templates/pretixcontrol/email_setup_simple.html:63 -#, fuzzy -#| msgid "Verification failed" msgid "Verification code" -msgstr "Verificatie mislukt" +msgstr "Verificatiecode" #: pretix/control/templates/pretixcontrol/email_setup_smtp.html:23 msgid "" @@ -21622,38 +20418,28 @@ msgid "Failed to retrieve geo coordinates" msgstr "Kan geen geografische coördinaten ophalen" #: pretix/control/templates/pretixcontrol/event/fragment_geodata_autoupdate.html:5 -#, fuzzy -#| msgid "Geo coordinates" msgid "Retrieving geo coordinates …" -msgstr "Geo-coördinaten" +msgstr "Geografische coördinaten ophalen …" #: pretix/control/templates/pretixcontrol/event/fragment_geodata_autoupdate.html:6 -#, fuzzy -#| msgid "Geo coordinates" msgid "Geo coordinates updated" -msgstr "Geo-coördinaten" +msgstr "Geografische coördinaten bijgewerkt" #: pretix/control/templates/pretixcontrol/event/fragment_geodata_autoupdate.html:7 -#, fuzzy -#| msgid "Update comment" msgid "Update map?" -msgstr "Commentaar bijwerken" +msgstr "Kaart bijwerken?" #: pretix/control/templates/pretixcontrol/event/fragment_plugin_description.html:5 -#, fuzzy, python-format -#| msgid "Version %(v)s by %(a)s" +#, python-format msgid "by %(a)s" -msgstr "Versie %(v)s door %(a)s" +msgstr "door %(a)s" #: pretix/control/templates/pretixcontrol/event/fragment_plugin_description.html:14 -#, fuzzy -#| msgid "" -#| "This plugin needs to be enabled by a system administrator for your event." msgid "" "This plugin needs to be enabled by a system administrator for your account." msgstr "" "Deze plug-in moet door een systeembeheerder worden ingeschakeld voor je " -"evenement." +"account." #: pretix/control/templates/pretixcontrol/event/fragment_plugin_description.html:19 msgid "This plugin cannot be enabled for the following reasons:" @@ -21676,17 +20462,13 @@ msgid "Your timeline" msgstr "Jouw tijdlijn" #: pretix/control/templates/pretixcontrol/event/index.html:20 -#, fuzzy -#| msgid "System URL:" msgid "Shop URL:" -msgstr "Systeem-URL:" +msgstr "URL winkel:" #: pretix/control/templates/pretixcontrol/event/index.html:27 #: pretix/control/templates/pretixcontrol/vouchers/detail.html:57 -#, fuzzy -#| msgid "Order code" msgid "Create QR code" -msgstr "Bestelcode" +msgstr "QR-code aanmaken" #: pretix/control/templates/pretixcontrol/event/index.html:36 msgid "" @@ -21812,10 +20594,8 @@ msgid "Invoice customization" msgstr "Factuuraanpassingen" #: pretix/control/templates/pretixcontrol/event/invoicing.html:80 -#, fuzzy -#| msgid "Invoice generation" msgid "Invoice transmission" -msgstr "Factuurgeneratie" +msgstr "Factuurverzending" #: pretix/control/templates/pretixcontrol/event/invoicing.html:82 msgid "" @@ -21841,10 +20621,8 @@ msgstr "" "klant een zakelijk adres invoert." #: pretix/control/templates/pretixcontrol/event/invoicing.html:98 -#, fuzzy -#| msgid "Transaction Code" msgid "Transmission method" -msgstr "Transactiecode" +msgstr "Verzendingsmethode" #: pretix/control/templates/pretixcontrol/event/invoicing.html:114 #: pretix/control/templates/pretixcontrol/event/invoicing.html:136 @@ -21854,22 +20632,16 @@ msgid "Available" msgstr "Beschikbaar" #: pretix/control/templates/pretixcontrol/event/invoicing.html:119 -#, fuzzy -#| msgid "Available" msgid "Unavailable" -msgstr "Beschikbaar" +msgstr "Niet beschikbaar" #: pretix/control/templates/pretixcontrol/event/invoicing.html:141 -#, fuzzy -#| msgid "Follow-up configured" msgid "Not configured" -msgstr "Aangemerkt voor opvolging" +msgstr "Niet geconfigureerd" #: pretix/control/templates/pretixcontrol/event/invoicing.html:163 -#, fuzzy -#| msgid "Enable waiting list" msgid "Enable additional invoice transmission plugins" -msgstr "Wachtlijst inschakelen" +msgstr "Extra plug-ins voor factuurverzending inschakelen" #: pretix/control/templates/pretixcontrol/event/invoicing.html:170 msgid "Save and show preview" @@ -22043,17 +20815,13 @@ msgstr "E-mailinstellingen" #: pretix/control/templates/pretixcontrol/event/mail.html:21 #: pretix/control/templates/pretixcontrol/organizers/mail.html:22 -#, fuzzy -#| msgid "Refund method" msgid "Sending method" -msgstr "Terugbetalingsmethode" +msgstr "Verzendmethode" #: pretix/control/templates/pretixcontrol/event/mail.html:25 #: pretix/control/templates/pretixcontrol/organizers/mail.html:26 -#, fuzzy -#| msgid "Use custom SMTP server" msgid "Custom SMTP server" -msgstr "Gebruik aangepaste SMTP-server" +msgstr "Aangepaste SMTP-server" #: pretix/control/templates/pretixcontrol/event/mail.html:27 #: pretix/control/templates/pretixcontrol/organizers/mail.html:28 @@ -22061,10 +20829,8 @@ msgid "System-provided email server" msgstr "Door het systeem geleverde e-mailserver" #: pretix/control/templates/pretixcontrol/event/mail.html:60 -#, fuzzy -#| msgid "resend invite" msgid "Calendar invites" -msgstr "Stuur uitnodiging opnieuw" +msgstr "Agenda-uitnodigingen" #: pretix/control/templates/pretixcontrol/event/mail.html:66 msgid "Email design" @@ -22107,10 +20873,8 @@ msgid "Payment reminder" msgstr "Betalingsherinnering" #: pretix/control/templates/pretixcontrol/event/mail.html:108 -#, fuzzy -#| msgid "Payment fee" msgid "Payment failed" -msgstr "Betalingskosten" +msgstr "Betaling mislukt" #: pretix/control/templates/pretixcontrol/event/mail.html:111 msgid "Waiting list notification" @@ -22129,10 +20893,8 @@ msgid "Order approval process" msgstr "Goedkeuringsproces voor bestellingen" #: pretix/control/templates/pretixcontrol/event/mail.html:129 -#, fuzzy -#| msgid "Attachment" msgid "Attachments" -msgstr "Bijlage" +msgstr "Bijlagen" #: pretix/control/templates/pretixcontrol/event/payment.html:6 #: pretix/control/templates/pretixcontrol/event/payment_provider.html:5 @@ -22152,21 +20914,17 @@ msgid "Disabled" msgstr "Uitgeschakeld" #: pretix/control/templates/pretixcontrol/event/payment.html:57 -#, fuzzy -#| msgid "Enable waiting list" msgid "Enable additional payment plugins" -msgstr "Wachtlijst inschakelen" +msgstr "Extra betalingsplug-ins inschakelen" #: pretix/control/templates/pretixcontrol/event/payment.html:66 msgid "Deadlines" msgstr "Deadlines" #: pretix/control/templates/pretixcontrol/event/payment.html:74 -#, fuzzy -#| msgid "in days" msgctxt "unit" msgid "days" -msgstr "in dagen" +msgstr "dagen" #: pretix/control/templates/pretixcontrol/event/payment_provider.html:13 #: pretix/control/templates/pretixcontrol/events/create_base.html:24 @@ -22207,10 +20965,8 @@ msgstr "" #: pretix/control/templates/pretixcontrol/event/plugins.html:6 #: pretix/control/templates/pretixcontrol/organizers/plugins.html:6 -#, fuzzy -#| msgid "Available languages" msgid "Available plugins" -msgstr "Beschikbare talen" +msgstr "Beschikbare plug-ins" #: pretix/control/templates/pretixcontrol/event/plugins.html:8 msgid "" @@ -22265,10 +21021,8 @@ msgstr "Je wijzigingen zijn opgeslagen." #: pretix/control/templates/pretixcontrol/event/plugins.html:34 #: pretix/control/templates/pretixcontrol/organizers/plugins.html:34 -#, fuzzy -#| msgid "Update check results" msgid "Search results" -msgstr "Resultaten updatecontrole" +msgstr "Zoekresultaten" #: pretix/control/templates/pretixcontrol/event/plugins.html:56 #: pretix/control/templates/pretixcontrol/organizers/plugins.html:56 @@ -22277,10 +21031,8 @@ msgstr "Topaanbeveling" #: pretix/control/templates/pretixcontrol/event/plugins.html:60 #: pretix/control/templates/pretixcontrol/organizers/plugins.html:60 -#, fuzzy -#| msgid "API features" msgid "Experimental feature" -msgstr "API-functies" +msgstr "Experimentele functie" #: pretix/control/templates/pretixcontrol/event/plugins.html:83 #: pretix/control/templates/pretixcontrol/organizers/plugins.html:108 @@ -22293,10 +21045,10 @@ msgid "Not available" msgstr "Niet beschikbaar" #: pretix/control/templates/pretixcontrol/event/plugins.html:93 -#, fuzzy -#| msgid "This plugin cannot be enabled for the following reasons:" msgid "This plugin can only be disabled for the entire organizer account." -msgstr "Deze plug-in kan om de volgende redenen niet worden ingeschakeld:" +msgstr "" +"Deze plug-in kan alleen voor het hele account van de organisator worden " +"uitgeschakeld." #: pretix/control/templates/pretixcontrol/event/plugins.html:98 msgid "" @@ -22310,24 +21062,18 @@ msgstr "" #: pretix/control/templates/pretixcontrol/event/plugins.html:116 #: pretix/control/templates/pretixcontrol/organizers/plugins.html:124 #: pretix/control/templates/pretixcontrol/organizers/plugins.html:136 -#, fuzzy -#| msgid "Login settings" msgid "Open plugin settings" -msgstr "Aanmeldinstellingen" +msgstr "Plug-in-instellingen openen" #: pretix/control/templates/pretixcontrol/event/plugins.html:105 #: pretix/control/templates/pretixcontrol/organizers/plugins.html:125 -#, fuzzy -#| msgid "Go to shop" msgid "Go to" -msgstr "Ga naar de winkel" +msgstr "Ga naar" #: pretix/control/templates/pretixcontrol/event/plugins.html:130 #: pretix/control/templates/pretixcontrol/event/plugins.html:147 -#, fuzzy -#| msgid "Organizer settings" msgid "Open in organizer settings" -msgstr "Organisatorinstellingen" +msgstr "Openen in organisatorinstellingen" #: pretix/control/templates/pretixcontrol/event/plugins.html:134 #: pretix/control/templates/pretixcontrol/oauth/app_delete.html:15 @@ -22342,10 +21088,10 @@ msgstr "Uitschakelen" #: pretix/control/templates/pretixcontrol/event/plugins.html:141 #: pretix/control/views/organizer.py:808 -#, fuzzy -#| msgid "This plugin cannot be enabled for the following reasons:" msgid "This plugin can only be enabled for the entire organizer account." -msgstr "Deze plug-in kan om de volgende redenen niet worden ingeschakeld:" +msgstr "" +"Deze plug-in kan alleen worden ingeschakeld voor het volledige account van " +"de organisator." #: pretix/control/templates/pretixcontrol/event/plugins.html:154 msgid "" @@ -22515,10 +21261,8 @@ msgid "See invoice settings" msgstr "Zie factuurinstellingen" #: pretix/control/templates/pretixcontrol/event/settings.html:96 -#, fuzzy -#| msgid "Attendee data (once per admission ticket)" msgid "Attendee data (once per personalized ticket)" -msgstr "Gastgegevens (eenmaal per toegangsbewijs)" +msgstr "Deelnemersgegevens (eenmaal per gepersonaliseerd ticket)" #: pretix/control/templates/pretixcontrol/event/settings.html:105 msgid "Custom fields" @@ -22529,16 +21273,12 @@ msgid "Manage questions" msgstr "Vragen beheren" #: pretix/control/templates/pretixcontrol/event/settings.html:118 -#, fuzzy -#| msgid "Import settings" msgid "Form settings" -msgstr "Import-instellingen" +msgstr "Formulierinstellingen" #: pretix/control/templates/pretixcontrol/event/settings.html:123 -#, fuzzy -#| msgid "Changes to pretix" msgid "Changes to existing orders" -msgstr "Veranderingen aan pretix" +msgstr "Wijzigingen in bestaande bestellingen" #: pretix/control/templates/pretixcontrol/event/settings.html:131 msgid "Texts" @@ -22582,17 +21322,13 @@ msgid "Display" msgstr "Weergave" #: pretix/control/templates/pretixcontrol/event/settings.html:244 -#, fuzzy -#| msgid "Product history" msgid "Product list" -msgstr "Productgeschiedenis" +msgstr "Productlijst" #: pretix/control/templates/pretixcontrol/event/settings.html:252 #: pretix/control/templates/pretixcontrol/event/settings.html:388 -#, fuzzy -#| msgid "Invoice settings" msgid "Incompatible settings" -msgstr "Factuurinstellingen" +msgstr "Onverenigbare instellingen" #: pretix/control/templates/pretixcontrol/event/settings.html:253 #: pretix/control/templates/pretixcontrol/event/settings.html:389 @@ -22604,11 +21340,9 @@ msgstr "" "uitverkochte producten verbergen' is ingeschakeld." #: pretix/control/templates/pretixcontrol/event/settings.html:260 -#, fuzzy -#| msgid "resend invite" msgctxt "subevents" msgid "Calendar and list views" -msgstr "Stuur uitnodiging opnieuw" +msgstr "Kalender- en lijstweergaven" #: pretix/control/templates/pretixcontrol/event/settings.html:283 msgid "Other settings" @@ -22616,10 +21350,8 @@ msgstr "Andere instellingen" #: pretix/control/templates/pretixcontrol/event/settings.html:290 #: pretix/control/templates/pretixcontrol/organizers/edit.html:55 -#, fuzzy -#| msgid "Voucher link" msgid "Footer links" -msgstr "Voucher-link" +msgstr "Voettekstlinks" #: pretix/control/templates/pretixcontrol/event/settings.html:295 #: pretix/control/templates/pretixcontrol/organizers/edit.html:60 @@ -22636,10 +21368,8 @@ msgstr "" #: pretix/control/templates/pretixcontrol/event/settings.html:349 #: pretix/control/templates/pretixcontrol/organizers/edit.html:119 -#, fuzzy -#| msgid "Address line" msgid "Add link" -msgstr "Adresregel" +msgstr "Link toevoegen" #: pretix/control/templates/pretixcontrol/event/settings.html:356 msgid "Cart" @@ -22675,16 +21405,12 @@ msgstr "" "combinatie met de functie voor minimale afstand in onze zitplan-module." #: pretix/control/templates/pretixcontrol/event/settings.html:398 -#, fuzzy -#| msgid "Waiting" msgid "Waiting customers" -msgstr "Wachtend" +msgstr "Wachtende klanten" #: pretix/control/templates/pretixcontrol/event/settings.html:404 -#, fuzzy -#| msgid "Enable waiting list" msgid "Manage waiting list" -msgstr "Wachtlijst inschakelen" +msgstr "Wachtlijst beheren" #: pretix/control/templates/pretixcontrol/event/settings.html:417 msgid "Item metadata" @@ -22703,10 +21429,8 @@ msgstr "" #: pretix/control/templates/pretixcontrol/event/settings.html:439 #: pretix/control/templates/pretixcontrol/event/settings.html:467 #: pretix/control/templates/pretixcontrol/organizers/properties.html:22 -#, fuzzy -#| msgid "Add property" msgid "Property" -msgstr "Eigenschap toevoegen" +msgstr "Eigenschap" #: pretix/control/templates/pretixcontrol/event/settings.html:504 #: pretix/control/templates/pretixcontrol/events/index.html:165 @@ -22754,10 +21478,8 @@ msgstr "Maak een nieuwe belastingregel" #: pretix/control/templates/pretixcontrol/event/tax.html:36 #: pretix/control/templates/pretixcontrol/organizers/property_edit.html:20 -#, fuzzy -#| msgid "Use languages" msgid "Usage" -msgstr "Gebruik talen" +msgstr "Gebruik" #: pretix/control/templates/pretixcontrol/event/tax.html:37 msgid "Rate" @@ -22770,37 +21492,29 @@ msgid "Make default" msgstr "Maak standaard" #: pretix/control/templates/pretixcontrol/event/tax.html:67 -#, fuzzy, python-format -#| msgid "%(count)s elements" +#, python-format msgid "%(count)s product" msgid_plural "%(count)s products" -msgstr[0] "%(count)s elementen" -msgstr[1] "%(count)s elementen" +msgstr[0] "%(count)s product" +msgstr[1] "%(count)s producten" #: pretix/control/templates/pretixcontrol/event/tax.html:75 -#, fuzzy, python-format -#| msgid "incl. %(rate)s%% %(name)s" +#, python-format msgid "incl. %(rate)s %%" -msgstr "incl. %(rate)s%% %(name)s" +msgstr "incl. %(rate)s%%" #: pretix/control/templates/pretixcontrol/event/tax.html:77 -#, fuzzy, python-format -#| msgid "incl. %(rate)s%% %(name)s" +#, python-format msgid "excl. %(rate)s %%" -msgstr "incl. %(rate)s%% %(name)s" +msgstr "excl. %(rate)s%%" #: pretix/control/templates/pretixcontrol/event/tax.html:80 -#, fuzzy -#| msgctxt "refund_source" -#| msgid "Customer" msgid "with custom rules" -msgstr "Klant" +msgstr "met aangepaste regels" #: pretix/control/templates/pretixcontrol/event/tax.html:110 -#, fuzzy -#| msgid "Base settings" msgid "Tax settings" -msgstr "Basisinstellingen" +msgstr "Belastinginstellingen" #: pretix/control/templates/pretixcontrol/event/tax_delete.html:4 #: pretix/control/templates/pretixcontrol/event/tax_delete.html:6 @@ -22816,16 +21530,13 @@ msgstr "" "verwijderen?" #: pretix/control/templates/pretixcontrol/event/tax_delete.html:12 -#, fuzzy -#| msgid "" -#| "You cannot delete a tax rule that is in use for a product or has been in " -#| "use for any existing orders." msgid "" "You cannot delete a tax rule that is in use for a product, has been in use " "for any existing orders, or is the default tax rule of the event." msgstr "" -"Je kan een belastingregel niet verwijderen als deze in gebruik is bij een " -"product of als deze gebruikt is bij een bestaande bestelling." +"Je kunt geen belastingregel verwijderen die voor een product wordt gebruikt, " +"voor bestaande bestellingen is gebruikt of de standaardbelastingregel van " +"het evenement is." #: pretix/control/templates/pretixcontrol/event/tax_edit.html:7 #: pretix/control/templates/pretixcontrol/event/tax_edit.html:14 @@ -22848,11 +21559,8 @@ msgstr "" "of belastingadviseur." #: pretix/control/templates/pretixcontrol/event/tax_edit.html:45 -#, fuzzy -#| msgctxt "refund_source" -#| msgid "Customer" msgid "Custom rules" -msgstr "Klant" +msgstr "Aangepaste regels" #: pretix/control/templates/pretixcontrol/event/tax_edit.html:47 msgid "" @@ -22876,17 +21584,12 @@ msgstr "" "ingesteld." #: pretix/control/templates/pretixcontrol/event/tax_edit.html:58 -#, fuzzy -#| msgctxt "discount" -#| msgid "Condition" msgid "Condition" -msgstr "Staat" +msgstr "Voorwaarde" #: pretix/control/templates/pretixcontrol/event/tax_edit.html:61 -#, fuzzy -#| msgid "Cancellation" msgid "Calculation" -msgstr "Annulering" +msgstr "Berekening" #: pretix/control/templates/pretixcontrol/event/tax_edit.html:64 msgid "Reason" @@ -23032,13 +21735,6 @@ msgid "Set to random" msgstr "Kies willekeurig" #: pretix/control/templates/pretixcontrol/events/create_basics.html:21 -#, fuzzy -#| msgid "" -#| "This is the address users can buy your tickets at. Should be short, only " -#| "contain lowercase letters and numbers, and must be unique among your " -#| "events. We recommend some kind of abbreviation or a date with less than " -#| "10 characters that can be easily remembered, but you can also choose to " -#| "use a random value." msgid "" "This is the address users can buy your tickets at. Should be short, only " "contain lowercase letters, numbers, dots, and dashes, and must be unique " @@ -23046,11 +21742,11 @@ msgid "" "less than 10 characters that can be easily remembered, but you can also " "choose to use a random value." msgstr "" -"Dit is het adres waar jouw gebruikers kaartjes kunnen kopen. Moet kort zijn, " -"alleen kleine letters en getallen bevatten, en moet uniek over al je " -"evenementen zijn. We raden je aan om een afkorting of datum met minder dan " -"10 tekens te gebruiken, zodat je het makkelijk kunt onthouden, maar je kan " -"er ook voor kiezen om een willekeurige waarde te gebruiken." +"Dit is het adres waar gebruikers je tickets kunnen kopen. Het moet kort " +"zijn, alleen kleine letters, cijfers, punten en streepjes bevatten en uniek " +"zijn voor je evenementen. We raden een afkorting of een datum aan met minder " +"dan 10 tekens die makkelijk te onthouden is, maar je kunt ook een " +"willekeurige waarde kiezen." #: pretix/control/templates/pretixcontrol/events/create_basics.html:29 msgid "" @@ -23254,38 +21950,28 @@ msgstr "" "schaffen: neem contact op met support@pretix.eu." #: pretix/control/templates/pretixcontrol/global_license.html:26 -#, fuzzy -#| msgid "Price settings" msgid "License settings and check" -msgstr "Prijsinstellingen" +msgstr "Licentie-instellingen en controle" #: pretix/control/templates/pretixcontrol/global_license.html:29 -#, fuzzy -#| msgid "Registration details" msgid "Installation details" -msgstr "Aanmeldingsdetails" +msgstr "Installatiegegevens" #: pretix/control/templates/pretixcontrol/global_license.html:34 msgid "Installed plugins" msgstr "Geïnstalleerde plugins" #: pretix/control/templates/pretixcontrol/global_license.html:40 -#, fuzzy -#| msgid "Your information" msgid "Public information" -msgstr "Je gegevens" +msgstr "Openbare informatie" #: pretix/control/templates/pretixcontrol/global_license.html:52 -#, fuzzy -#| msgid "Save and show preview" msgid "Save and check" -msgstr "Sla op en toon voorbeeld" +msgstr "Opslaan en controleren" #: pretix/control/templates/pretixcontrol/global_license.html:60 -#, fuzzy -#| msgid "Update check results" msgid "Check results" -msgstr "Resultaten updatecontrole" +msgstr "Resultaten controle" #: pretix/control/templates/pretixcontrol/global_license.html:79 msgid "The automated license check did not identify any issues." @@ -23331,20 +22017,16 @@ msgid "February" msgstr "februari" #: pretix/control/templates/pretixcontrol/global_sysreport.html:18 -#, fuzzy -#| msgid "Search" msgid "March" -msgstr "Zoeken" +msgstr "maart" #: pretix/control/templates/pretixcontrol/global_sysreport.html:19 msgid "April" msgstr "april" #: pretix/control/templates/pretixcontrol/global_sysreport.html:20 -#, fuzzy -#| msgid "Day" msgid "May" -msgstr "Dag" +msgstr "mei" #: pretix/control/templates/pretixcontrol/global_sysreport.html:21 msgid "June" @@ -23359,32 +22041,24 @@ msgid "August" msgstr "augustus" #: pretix/control/templates/pretixcontrol/global_sysreport.html:24 -#, fuzzy -#| msgid "Seat number" msgid "September" -msgstr "Stoelnummer" +msgstr "september" #: pretix/control/templates/pretixcontrol/global_sysreport.html:25 msgid "October" msgstr "oktober" #: pretix/control/templates/pretixcontrol/global_sysreport.html:26 -#, fuzzy -#| msgid "Member" msgid "November" -msgstr "Lid" +msgstr "november" #: pretix/control/templates/pretixcontrol/global_sysreport.html:27 -#, fuzzy -#| msgid "Member" msgid "December" -msgstr "Lid" +msgstr "december" #: pretix/control/templates/pretixcontrol/global_sysreport.html:32 -#, fuzzy -#| msgid "Generate tickets" msgid "Generate report" -msgstr "Genereer kaartjes" +msgstr "Genereer rapport" #: pretix/control/templates/pretixcontrol/global_update.html:7 msgid "Update check results" @@ -23473,10 +22147,8 @@ msgstr "" #: pretix/control/templates/pretixcontrol/item/base.html:24 #: pretix/control/templates/pretixcontrol/item/include_variations.html:79 -#, fuzzy -#| msgid "Manage questions" msgid "Manage quotas" -msgstr "Vragen beheren" +msgstr "Quota beheren" #: pretix/control/templates/pretixcontrol/item/base.html:27 #: pretix/control/templates/pretixcontrol/item/include_variations.html:82 @@ -23503,17 +22175,13 @@ msgstr "" "al is uitverkocht." #: pretix/control/templates/pretixcontrol/item/base.html:49 -#, fuzzy -#| msgid "" -#| "This product is currently not being shown since you configured below that " -#| "it should only be visible if a certain other quota is already sold out." msgid "" "This product is currently not being shown since you configured below that it " "should only be visible if a certain other product is already sold out." msgstr "" "Dit product wordt momenteel niet getoond, omdat je hieronder hebt ingesteld " -"dat het product alleen moet worden getoond wanneer een bepaald ander quotum " -"al is uitverkocht." +"dat het alleen zichtbaar mag zijn als een bepaald ander product al " +"uitverkocht is." #: pretix/control/templates/pretixcontrol/item/create.html:19 #: pretix/control/templates/pretixcontrol/item/index.html:22 @@ -23527,19 +22195,14 @@ msgstr "Toegangsbewijs" #: pretix/control/templates/pretixcontrol/item/create.html:27 #: pretix/control/templates/pretixcontrol/item/index.html:35 -#, fuzzy -#| msgid "" -#| "Every purchase of this product represents one person who is allowed to " -#| "enter your event. By default, pretix will only ask for attendee " -#| "information and offer ticket downloads for these products." msgid "" "Every purchase of this product represents one person who is allowed to enter " "your event. By default, we will only offer ticket downloads for these " "products." msgstr "" -"Iedere aankoop van dit product komt overeen met één persoon die je evenement " -"mag betreden. Standaard zal pretix alleen om gastinformatie vragen en alleen " -"ticketdownloads toestaan voor deze producten." +"Elke aankoop van dit product vertegenwoordigt één persoon die toegang heeft " +"tot je evenement. Standaard bieden we alleen ticketdownloads aan voor deze " +"producten." #: pretix/control/templates/pretixcontrol/item/create.html:33 #: pretix/control/templates/pretixcontrol/item/index.html:41 @@ -23570,18 +22233,14 @@ msgstr "Geen toegangsbewijs" #: pretix/control/templates/pretixcontrol/item/create.html:52 #: pretix/control/templates/pretixcontrol/item/index.html:60 -#, fuzzy -#| msgid "" -#| "A product that does not represent a person. By default, pretix will not " -#| "ask for attendee information or offer ticket downloads." msgid "" "A product that does not represent a person. By default, we will not offer " "ticket downloads (but you can still enable ticket downloads in event " "settings or product settings)." msgstr "" -"Een product dat geen persoon toelaat tot je evenement. Standaard zal pretix " -"voor deze producten geen gastinformatie vragen en geen ticketdownloads " -"aanbieden." +"Een product dat geen persoon vertegenwoordigt. Standaard bieden we geen " +"ticketdownloads aan (maar je kunt ticketdownloads nog steeds inschakelen in " +"de evenementinstellingen of productinstellingen)." #: pretix/control/templates/pretixcontrol/item/create.html:58 #: pretix/control/templates/pretixcontrol/item/index.html:66 @@ -23592,10 +22251,8 @@ msgstr "" #: pretix/control/templates/pretixcontrol/item/create.html:68 #: pretix/control/templates/pretixcontrol/item/index.html:76 -#, fuzzy -#| msgid "Localization" msgid "Personalization" -msgstr "Lokalisatie" +msgstr "Personalisatie" #: pretix/control/templates/pretixcontrol/item/create.html:76 #: pretix/control/templates/pretixcontrol/item/index.html:89 @@ -23617,17 +22274,13 @@ msgstr "" #: pretix/control/templates/pretixcontrol/item/create.html:87 #: pretix/control/templates/pretixcontrol/item/index.html:100 -#, fuzzy -#| msgid "Base settings" msgid "Change settings" -msgstr "Basisinstellingen" +msgstr "Instellingen wijzigen" #: pretix/control/templates/pretixcontrol/item/create.html:96 #: pretix/control/templates/pretixcontrol/item/index.html:109 -#, fuzzy -#| msgid "Generate tickets" msgid "Non-personalized ticket" -msgstr "Genereer kaartjes" +msgstr "Niet-gepersonaliseerd ticket" #: pretix/control/templates/pretixcontrol/item/create.html:98 #: pretix/control/templates/pretixcontrol/item/index.html:111 @@ -23784,16 +22437,12 @@ msgstr "" #: pretix/control/templates/pretixcontrol/item/include_program_times.html:25 #: pretix/control/templates/pretixcontrol/item/include_program_times.html:51 -#, fuzzy -#| msgid "Printing time" msgid "Program time" -msgstr "Printtijd" +msgstr "Programmatijd" #: pretix/control/templates/pretixcontrol/item/include_program_times.html:68 -#, fuzzy -#| msgid "Add a single time slot" msgid "Add a program time" -msgstr "Nieuw tijdsslot toevoegen" +msgstr "Een programmatijd toevoegen" #: pretix/control/templates/pretixcontrol/item/include_variations.html:35 #: pretix/control/templates/pretixcontrol/item/include_variations.html:161 @@ -23817,10 +22466,8 @@ msgstr "" "kopen tot je het aan een bestaand of nieuw aangemaakt quotum toevoegt." #: pretix/control/templates/pretixcontrol/item/include_variations.html:149 -#, fuzzy -#| msgid "Sample variation" msgid "New variation" -msgstr "Voorbeeldvariant" +msgstr "Nieuwe variant" #: pretix/control/templates/pretixcontrol/item/include_variations.html:242 msgid "Add a new variation" @@ -23831,22 +22478,16 @@ msgid "Availability" msgstr "Beschikbaarheid" #: pretix/control/templates/pretixcontrol/item/index.html:196 -#, fuzzy -#| msgid "Ticket page" msgid "Tickets & Badges" -msgstr "Kaartjespagina" +msgstr "Tickets en badges" #: pretix/control/templates/pretixcontrol/item/index.html:215 -#, fuzzy -#| msgid "Check-in list" msgid "Check-in & Validity" -msgstr "Inchecklijst" +msgstr "Check-in en geldigheid" #: pretix/control/templates/pretixcontrol/item/index.html:226 -#, fuzzy -#| msgid "Variation" msgid "Duration" -msgstr "Variant" +msgstr "Duur" #: pretix/control/templates/pretixcontrol/item/index.html:228 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:355 @@ -23861,23 +22502,17 @@ msgstr "uren" #: pretix/control/templates/pretixcontrol/item/index.html:230 #: pretix/control/templates/pretixcontrol/item/index.html:248 #: pretix/control/templates/pretixcontrol/item/index.html:261 -#, fuzzy -#| msgid "in days" msgid "days" -msgstr "in dagen" +msgstr "dagen" #: pretix/control/templates/pretixcontrol/item/index.html:231 #: pretix/control/templates/pretixcontrol/item/index.html:262 -#, fuzzy -#| msgid "month(s)" msgid "months" -msgstr "maand(en)" +msgstr "maanden" #: pretix/control/templates/pretixcontrol/item/index.html:232 -#, fuzzy -#| msgid "year(s)" msgid "years" -msgstr "jaar/jaren" +msgstr "jaren" #: pretix/control/templates/pretixcontrol/item/index.html:238 msgid "" @@ -23923,10 +22558,8 @@ msgid "Create a new category" msgstr "Nieuwe categorie aanmaken" #: pretix/control/templates/pretixcontrol/items/categories.html:34 -#, fuzzy -#| msgid "Category name" msgid "Category type" -msgstr "Categorienaam" +msgstr "Categorietype" #: pretix/control/templates/pretixcontrol/items/categories.html:52 #: pretix/control/templates/pretixcontrol/items/discounts.html:138 @@ -23939,10 +22572,8 @@ msgstr "Omhoog" #: pretix/control/templates/pretixcontrol/items/discounts.html:142 #: pretix/control/templates/pretixcontrol/items/index.html:162 #: pretix/control/templates/pretixcontrol/organizers/properties.html:55 -#, fuzzy -#| msgid "Remove one" msgid "Move down" -msgstr "Verwijder één" +msgstr "Naar beneden" #: pretix/control/templates/pretixcontrol/items/categories.html:54 #: pretix/control/templates/pretixcontrol/items/discounts.html:145 @@ -23982,10 +22613,8 @@ msgstr "" #: pretix/control/templates/pretixcontrol/items/discount.html:4 #: pretix/control/templates/pretixcontrol/items/discount.html:6 -#, fuzzy -#| msgid "Customer actions" msgid "Automatic discount" -msgstr "Klantacties" +msgstr "Automatische korting" #: pretix/control/templates/pretixcontrol/items/discount.html:22 msgctxt "discount" @@ -23993,10 +22622,8 @@ msgid "Condition" msgstr "Staat" #: pretix/control/templates/pretixcontrol/items/discount.html:34 -#, fuzzy -#| msgid "Minimum Price" msgid "Minimum cart content" -msgstr "Minimumprijs" +msgstr "Minimale winkelwageninhoud" #: pretix/control/templates/pretixcontrol/items/discount.html:43 #: pretix/plugins/stripe/templates/pretixplugins/stripe/checkout_payment_form_card.html:53 @@ -24004,65 +22631,50 @@ msgid "OR" msgstr "OF" #: pretix/control/templates/pretixcontrol/items/discount.html:53 -#, fuzzy -#| msgid "Beneficiary" msgctxt "discount" msgid "Benefit" -msgstr "Ontvanger" +msgstr "Voordeel" #: pretix/control/templates/pretixcontrol/items/discount.html:69 -#, fuzzy -#| msgid "Account history" msgid "Discount history" -msgstr "Accountgeschiedenis" +msgstr "Kortingsgeschiedenis" #: pretix/control/templates/pretixcontrol/items/discount_delete.html:4 #: pretix/control/templates/pretixcontrol/items/discount_delete.html:6 -#, fuzzy -#| msgctxt "subevent" -#| msgid "Delete date" msgid "Delete discount" -msgstr "Datum verwijderen" +msgstr "Korting verwijderen" #: pretix/control/templates/pretixcontrol/items/discount_delete.html:10 -#, fuzzy, python-format -#| msgid "" -#| "You cannot delete the product %(item)s because it " -#| "already has been ordered." +#, python-format msgid "" "You cannot delete the discount %(discount)s because it " "already has\n" " been used as part of an order." msgstr "" -"Je kan het product %(item)s niet verwijderen, omdat het al " -"is besteld." +"Je kunt de korting %(discount)s niet verwijderen omdat deze " +"al\n" +" is gebruikt als onderdeel van een bestelling." #: pretix/control/templates/pretixcontrol/items/discount_delete.html:21 -#, fuzzy, python-format -#| msgid "" -#| "Are you sure you want to delete the category %(name)s?" +#, python-format msgid "Are you sure you want to delete the discount %(name)s?" msgstr "" -"Weet je zeker dat je de categorie %(name)s wilt verwijderen?" +"Weet je zeker dat je de korting %(name)s wilt verwijderen?" #: pretix/control/templates/pretixcontrol/items/discount_delete.html:25 -#, fuzzy, python-format -#| msgid "" -#| "You cannot delete the product %(item)s because it " -#| "already has been ordered, but you can deactivate it." +#, python-format msgid "" "You cannot delete the discount %(name)s because it already " "has been used as part of an order, but you can deactivate it." msgstr "" -"Je kan het product %(item)s niet verwijderen, omdat het al " -"besteld is, maar je kan het wel deactiveren." +"Je kunt de korting %(name)s niet verwijderen omdat deze al " +"is gebruikt als onderdeel van een bestelling, maar je kunt ze wel " +"deactiveren." #: pretix/control/templates/pretixcontrol/items/discounts.html:4 #: pretix/control/templates/pretixcontrol/items/discounts.html:6 -#, fuzzy -#| msgid "Customer actions" msgid "Automatic discounts" -msgstr "Klantacties" +msgstr "Automatische kortingen" #: pretix/control/templates/pretixcontrol/items/discounts.html:8 #, python-format @@ -24113,10 +22725,8 @@ msgstr "" "onderstaande lijst." #: pretix/control/templates/pretixcontrol/items/discounts.html:37 -#, fuzzy -#| msgid "You haven't created any layouts yet." msgid "You haven't created any discounts yet." -msgstr "Je hebt nog geen lay-outs aangemaakt." +msgstr "Je hebt nog geen kortingen aangemaakt." #: pretix/control/templates/pretixcontrol/items/discounts.html:43 #: pretix/control/templates/pretixcontrol/items/discounts.html:48 @@ -24132,11 +22742,8 @@ msgstr "" "voor dit product" #: pretix/control/templates/pretixcontrol/items/discounts.html:111 -#, fuzzy -#| msgctxt "discount" -#| msgid "Condition" msgid "Condition:" -msgstr "Staat" +msgstr "Voowaarde:" #: pretix/control/templates/pretixcontrol/items/discounts.html:126 msgid "Applies to:" @@ -24175,22 +22782,16 @@ msgid "taxes" msgstr "belasting" #: pretix/control/templates/pretixcontrol/items/index.html:10 -#, fuzzy -#| msgid "" -#| "Below, you find a list of all available products. You can click on a " -#| "product name to inspect and change product details. You can also use the " -#| "buttons on the right to change the order of products within a give " -#| "category." msgid "" "Below, you find a list of all available products. You can click on a product " "name to inspect and change product details. You can also use the buttons on " "the right to change the order of products or move products to a different " "category." msgstr "" -"Hieronder vind je een lijst van alle beschikbare producten. Je kan op een " -"productnaam klikken om de details te bekijken en te veranderen. Je kan ook " -"de knoppen aan de rechterkant gebruiken om de volgorde van producten binnen " -"een categorie te veranderen." +"Hieronder vind je een lijst met alle beschikbare producten. Je kunt op een " +"productnaam klikken om de productgegevens te bekijken en te wijzigen. Je " +"kunt ook de knoppen aan de rechterkant gebruiken om de volgorde van " +"producten te wijzigen of producten naar een andere categorie te verplaatsen." #: pretix/control/templates/pretixcontrol/items/index.html:19 msgid "You haven't created any products yet." @@ -24202,10 +22803,8 @@ msgid "Create a new product" msgstr "Nieuw product aanmaken" #: pretix/control/templates/pretixcontrol/items/index.html:102 -#, fuzzy -#| msgid "Is an admission ticket" msgid "Personalized admission ticket" -msgstr "Is een toegangsbewijs" +msgstr "Gepersonaliseerd toegangsticket" #: pretix/control/templates/pretixcontrol/items/index.html:104 msgid "Admission ticket without personalization" @@ -24221,10 +22820,8 @@ msgid "Product assigned to seating plan for one or more dates" msgstr "Product toegewezen aan zitplan voor één of meerdere data" #: pretix/control/templates/pretixcontrol/items/index.html:118 -#, fuzzy -#| msgid "Price settings" msgid "Product assigned to seating plan" -msgstr "Prijsinstellingen" +msgstr "Product toegewezen aan zitplan" #: pretix/control/templates/pretixcontrol/items/index.html:126 msgid "Only available as an add-on product" @@ -24283,16 +22880,14 @@ msgid "Count" msgstr "Tellen" #: pretix/control/templates/pretixcontrol/items/question.html:77 -#, fuzzy, python-format -#| msgid "Copy answers" +#, python-format msgid "%% of answers" -msgstr "Kopieer antwoorden" +msgstr "%% van de antwoorden" #: pretix/control/templates/pretixcontrol/items/question.html:78 -#, fuzzy, python-format -#| msgid "Number of tickets" +#, python-format msgid "%% of tickets" -msgstr "Aantal kaartjes" +msgstr "%% van de tickets" #: pretix/control/templates/pretixcontrol/items/question.html:97 #: pretix/control/templates/pretixcontrol/order/transactions.html:85 @@ -24336,10 +22931,8 @@ msgstr "" "a> en stel deze in op verborgen." #: pretix/control/templates/pretixcontrol/items/question_delete.html:25 -#, fuzzy -#| msgid "Delete question" msgid "Delete question and all answers" -msgstr "Vraag verwijderen" +msgstr "Vraag en alle antwoorden verwijderen" #: pretix/control/templates/pretixcontrol/items/question_edit.html:30 msgid "" @@ -24409,10 +23002,8 @@ msgid "Ask during check-in" msgstr "Vraag tijdens check-in" #: pretix/control/templates/pretixcontrol/items/questions.html:79 -#, fuzzy -#| msgid "All admission products" msgid "All personalized products" -msgstr "Alle producten aangemerkt als toegangsbewijs" +msgstr "Alle gepersonaliseerde producten" #: pretix/control/templates/pretixcontrol/items/quota.html:6 #: pretix/control/templates/pretixcontrol/items/quota.html:9 @@ -24862,42 +23453,34 @@ msgstr "" "kunnen worden beheerd in het klantenaccount." #: pretix/control/templates/pretixcontrol/order/change.html:220 -#, fuzzy -#| msgid "Ticket layout" msgid "Ticket block" -msgstr "Kaartjeslay-out" +msgstr "Ticketblok" #: pretix/control/templates/pretixcontrol/order/change.html:226 msgid "Blocked due to external constraints" msgstr "Geblokkeerd vanwege externe beperkingen" #: pretix/control/templates/pretixcontrol/order/change.html:228 -#, fuzzy -#| msgid "Blocked" msgid "Not blocked" -msgstr "Geblokkeerd" +msgstr "Niet geblokkeerd" #: pretix/control/templates/pretixcontrol/order/change.html:238 -#, fuzzy -#| msgid "Valid until" msgid "Validity time" -msgstr "Geldig tot" +msgstr "Geldigheidsduur" #: pretix/control/templates/pretixcontrol/order/change.html:247 #: pretix/control/templates/pretixcontrol/order/index.html:500 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:107 -#, fuzzy, python-format -#| msgid "Admission: %(datetime)s" +#, python-format msgid "Valid from %(datetime)s" -msgstr "Deuren open: %(datetime)s" +msgstr "Geldig vanaf %(datetime)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 -#| msgid "Admission: %(datetime)s" +#, python-format msgid "Valid until %(datetime)s" -msgstr "Deuren open: %(datetime)s" +msgstr "Geldig tot %(datetime)s" #: pretix/control/templates/pretixcontrol/order/change.html:260 msgid "Unconstrained" @@ -24918,14 +23501,12 @@ msgstr "" "Lidmaatschappen kunnen worden beheerd in het klantenaccount." #: pretix/control/templates/pretixcontrol/order/change.html:296 -#, fuzzy -#| msgid "" -#| "Removing this position will also remove all add-ons to this position." msgid "" "Removing or splitting this position will also remove or split all add-ons to " "this position." msgstr "" -"Deze plaats verwijderen zal ook alle add-ons van deze plaats verwijderen." +"Als je deze positie verwijdert of splitst, worden ook alle add-ons voor deze " +"positie verwijderd of gesplitst." #: pretix/control/templates/pretixcontrol/order/change.html:317 #: pretix/control/templates/pretixcontrol/order/change.html:358 @@ -24934,27 +23515,20 @@ msgid "Add product" msgstr "Product toevoegen" #: pretix/control/templates/pretixcontrol/order/change.html:446 -#, fuzzy -#| msgid "" -#| "Manually modifying payment fees is discouraged since they might " -#| "automatically be on subsequent order changes or when choosing a different " -#| "payment method." 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 "" -"Het handmatig bewerken van betalingstoeslagen wordt afgeraden, omdat deze " -"kosten anders kunnen zijn na later volgende wijzigingen in de bestelling of " -"wanneer een andere betalingsmethode wordt gekozen." +"Het handmatig wijzigen van betalingskosten wordt afgeraden, omdat deze " +"automatisch kunnen worden bijgewerkt bij latere wijzigingen in de bestelling " +"of bij het kiezen van een andere betaalmethode." #: pretix/control/templates/pretixcontrol/order/change.html:466 #: pretix/control/templates/pretixcontrol/order/change.html:493 #: pretix/control/templates/pretixcontrol/order/change.html:513 -#, fuzzy -#| msgid "Additional fee" msgid "Add fee" -msgstr "Extra kosten" +msgstr "Kosten toevoegen" #: pretix/control/templates/pretixcontrol/order/change.html:520 #: pretix/control/templates/pretixcontrol/order/change_questions.html:66 @@ -25072,10 +23646,8 @@ msgid "View email history" msgstr "Toon emailgeschiedenis" #: pretix/control/templates/pretixcontrol/order/index.html:89 -#, fuzzy -#| msgid "View email history" msgid "View transaction history" -msgstr "Toon emailgeschiedenis" +msgstr "Transactiegeschiedenis bekijken" #: pretix/control/templates/pretixcontrol/order/index.html:100 msgid "Expire order" @@ -25175,66 +23747,44 @@ msgstr "" "aangemaakt voordat ons systeem deze informatie bijhield" #: pretix/control/templates/pretixcontrol/order/index.html:283 -#, fuzzy -#| msgid "Canceled by customer" msgid "Invoice was emailed to customer" -msgstr "Geannuleerd door klant" +msgstr "Factuur is per e-mail naar de klant gestuurd" #: pretix/control/templates/pretixcontrol/order/index.html:288 -#, fuzzy -#| msgid "Ticket download is not (yet) enabled for this order." msgid "Invoice was not yet emailed to customer" -msgstr "Kaartjes downloaden is (nog) niet ingeschakeld voor deze bestelling." +msgstr "Factuur is nog niet naar de klant gemaild." #: pretix/control/templates/pretixcontrol/order/index.html:294 -#, fuzzy -#| msgid "The user has been created." msgid "Invoice is scheduled to be transmitted" -msgstr "De gebruiker is aangemaakt." +msgstr "Factuur zal worden verzonden" #: pretix/control/templates/pretixcontrol/order/index.html:299 -#, fuzzy -#| msgid "Ticket download is not (yet) enabled for this order." msgid "Invoice is not yet transmitted" -msgstr "Kaartjes downloaden is (nog) niet ingeschakeld voor deze bestelling." +msgstr "Factuur is nog niet verzonden" #: pretix/control/templates/pretixcontrol/order/index.html:302 -#, fuzzy -#| msgid "This ticket shop is currently disabled." msgid "Invoice is currently in transmission" -msgstr "Deze kaartjeswinkel is uitgeschakeld." +msgstr "Factuur wordt momenteel verzonden" #: pretix/control/templates/pretixcontrol/order/index.html:307 -#, fuzzy -#| msgid "live and in test mode" msgid "Invoice not transmitted in test mode" -msgstr "live en in testmodus" +msgstr "Factuur niet verzonden in testmodus" #: pretix/control/templates/pretixcontrol/order/index.html:312 -#, fuzzy -#| msgid "Device registration failed." msgid "Invoice transmission failed" -msgstr "Apparaatregistratie mislukt." +msgstr "Factuurverzending mislukt" #: pretix/control/templates/pretixcontrol/order/index.html:317 -#, fuzzy -#| msgid "An invoice has been generated." msgid "Invoice has been transmitted" -msgstr "Een factuur is gegenereerd." +msgstr "Factuur is verzonden" #: pretix/control/templates/pretixcontrol/order/index.html:329 -#, fuzzy -#| msgctxt "refund_state" -#| msgid "in transit" msgid "Transmit" -msgstr "onderweg" +msgstr "Verzenden" #: pretix/control/templates/pretixcontrol/order/index.html:331 -#, fuzzy -#| msgctxt "refund_state" -#| msgid "in transit" msgid "Retransmit" -msgstr "onderweg" +msgstr "Opnieuw verzenden" #: pretix/control/templates/pretixcontrol/order/index.html:342 msgid "Rebuild the invoice with updated data but the same invoice number." @@ -25282,10 +23832,9 @@ msgid "Ordered items" msgstr "Bestelde items" #: pretix/control/templates/pretixcontrol/order/index.html:434 -#, fuzzy, python-format -#| msgid "Exit scan: %(date)s" +#, python-format msgid "Denied scan: %(date)s" -msgstr "Uitgangsscan: %(date)s" +msgstr "Scan geweigerd: %(date)s" #: pretix/control/templates/pretixcontrol/order/index.html:439 #, python-format @@ -25303,10 +23852,9 @@ msgid "Voucher code used:" msgstr "Vouchercode gebruikt:" #: pretix/control/templates/pretixcontrol/order/index.html:467 -#, fuzzy, python-format -#| msgid "Maximum discount budget" +#, python-format msgid "Used %(amount)s discount from budget" -msgstr "Maximaal kortingsbudget" +msgstr "Gebruikte korting van %(amount)s op het budget" #: pretix/control/templates/pretixcontrol/order/index.html:484 msgid "" @@ -25320,10 +23868,9 @@ msgstr "" #: pretix/control/templates/pretixcontrol/order/index.html:496 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:103 -#, fuzzy, python-format -#| msgid "Admission: %(datetime)s" +#, python-format msgid "Valid %(datetime_range)s" -msgstr "Deuren open: %(datetime)s" +msgstr "Geldig %(datetime_range)s" #: pretix/control/templates/pretixcontrol/order/index.html:542 msgid "Ticket page" @@ -25483,10 +24030,8 @@ msgid "Subject:" msgstr "Onderwerp:" #: pretix/control/templates/pretixcontrol/order/mail_history.html:63 -#, fuzzy -#| msgid "resend invite" msgid "Calendar invite" -msgstr "Stuur uitnodiging opnieuw" +msgstr "Agenda-uitnodiging" #: pretix/control/templates/pretixcontrol/order/pay.html:5 #: pretix/control/templates/pretixcontrol/order/pay.html:9 @@ -25739,40 +24284,28 @@ msgstr "Versturen" #: pretix/control/templates/pretixcontrol/order/transactions.html:8 #: pretix/presale/templates/pretixpresale/event/order_giftcard.html:22 #: pretix/presale/templates/pretixpresale/event/position_giftcard.html:22 -#, fuzzy -#| msgid "Transactions" msgid "Transaction history" -msgstr "Transacties" +msgstr "Transactiegeschiedenis" #: pretix/control/templates/pretixcontrol/order/transactions.html:24 -#, fuzzy -#| msgid "Original price" msgid "Single price" -msgstr "Originele prijs" +msgstr "Eenheidsprijs" #: pretix/control/templates/pretixcontrol/order/transactions.html:25 -#, fuzzy -#| msgid "Total value" msgid "Total tax value" -msgstr "Totaalwaarde" +msgstr "Totale belastingwaarde" #: pretix/control/templates/pretixcontrol/order/transactions.html:26 -#, fuzzy -#| msgid "Net price" msgid "Total price" -msgstr "Nettoprijs" +msgstr "Totale prijs" #: pretix/control/templates/pretixcontrol/order/transactions.html:37 -#, fuzzy -#| msgid "" -#| "This payment was created with an older version of pretix, therefore " -#| "accurate data might not be available." msgid "" "This order was created before we introduced this table, therefore this data " "might be inaccurate." msgstr "" -"Deze betaling is aangemaakt met een oudere versie van pretix, hierom kan " -"nauwkeurige data mogelijk niet aanwezig zijn." +"Deze bestelling is geplaatst voordat we deze tabel hebben geïntroduceerd, " +"daarom kunnen deze gegevens onnauwkeurig zijn." #: pretix/control/templates/pretixcontrol/order/transactions.html:63 #: pretix/control/templates/pretixcontrol/order/transactions.html:73 @@ -25782,10 +24315,8 @@ msgstr "incl. %(amount)s afrondingscorrectie" #: pretix/control/templates/pretixcontrol/orders/bulk_action.html:5 #: pretix/control/templates/pretixcontrol/orders/bulk_action.html:7 -#, fuzzy -#| msgid "Modify order" msgid "Modify orders" -msgstr "Wijzig bestelling" +msgstr "Bestellingen wijzigen" #: pretix/control/templates/pretixcontrol/orders/bulk_action.html:12 #, python-format @@ -25799,16 +24330,12 @@ msgstr "" "bestellingen." #: pretix/control/templates/pretixcontrol/orders/bulk_action.html:71 -#, fuzzy -#| msgid "Add-on products will not be counted." msgid "Do you want to continue?" -msgstr "Add-onproducten zullen niet worden meegeteld." +msgstr "Wil je doorgaan?" #: pretix/control/templates/pretixcontrol/orders/bulk_action.html:77 -#, fuzzy -#| msgid "The transaction could not be reversed." msgid "This operation cannot be reversed." -msgstr "De transactie kon niet worden teruggeboekt." +msgstr "Deze bewerking kan niet ongedaan worden gemaakt." #: pretix/control/templates/pretixcontrol/orders/cancel.html:9 msgid "" @@ -25892,20 +24419,16 @@ msgstr "" "anders iedereen op de wachtlijst meerdere e-mails ontvangt." #: pretix/control/templates/pretixcontrol/orders/cancel.html:84 -#, fuzzy -#| msgid "Refund amount" msgid "Preview refund amount" -msgstr "Terug te betalen bedrag" +msgstr "Voorbeeld van het terug te betalen bedrag" #: pretix/control/templates/pretixcontrol/orders/cancel.html:88 msgid "Cancel all orders" msgstr "Annuleer alle bestellingen" #: pretix/control/templates/pretixcontrol/orders/cancel_confirm.html:13 -#, fuzzy -#| msgid "If you contact us, please send us the following code:" msgid "If you proceed, the system will do the following:" -msgstr "Stuur de volgende code mee als je contact met ons opneemt:" +msgstr "Als je doorgaat, zal het systeem het volgende doen:" #: pretix/control/templates/pretixcontrol/orders/cancel_confirm.html:19 #, python-format @@ -25941,16 +24464,12 @@ msgstr "" "uitvoeren." #: pretix/control/templates/pretixcontrol/orders/cancel_confirm.html:44 -#, fuzzy -#| msgid "Checked in automatically" msgid "Refunds will not happen automatically." -msgstr "Automatisch ingecheckt" +msgstr "Terugbetalingen vinden niet automatisch plaats." #: pretix/control/templates/pretixcontrol/orders/cancel_confirm.html:52 -#, fuzzy -#| msgid "Send information via email" msgid "Inform all customers via email." -msgstr "Stuur informatie via e-mail" +msgstr "Informeer alle klanten via e-mail." #: pretix/control/templates/pretixcontrol/orders/cancel_confirm.html:57 msgid "Inform all waiting list contacts via email." @@ -25965,16 +24484,13 @@ msgstr "" "evenement recentelijk zijn gewijzigd." #: pretix/control/templates/pretixcontrol/orders/cancel_confirm.html:76 -#, fuzzy, python-format -#| msgid "Initiate a refund of %(amount)s" +#, python-format msgid "Proceed and refund approx. %(amount)s" -msgstr "Start een terugbetaling van %(amount)s" +msgstr "Ga door en betaal ongeveer %(amount)s terug" #: pretix/control/templates/pretixcontrol/orders/cancel_confirm.html:80 -#, fuzzy -#| msgid "Yes, cancel order" msgid "Proceed and cancel orders" -msgstr "Ja, annuleer bestelling" +msgstr "Doorgaan en bestellingen annuleren" #: pretix/control/templates/pretixcontrol/orders/export.html:5 #: pretix/control/templates/pretixcontrol/orders/export.html:8 @@ -25989,31 +24505,23 @@ msgstr "Data exporteren" #: pretix/control/templates/pretixcontrol/orders/export.html:11 #: pretix/control/templates/pretixcontrol/organizers/export.html:11 -#, fuzzy -#| msgid "Reduced ticket" msgid "Scheduled exports" -msgstr "Kaartje met korting" +msgstr "Geplande exporten" #: pretix/control/templates/pretixcontrol/orders/export.html:28 #: pretix/control/templates/pretixcontrol/organizers/export.html:28 -#, fuzzy -#| msgid "Data selection" msgid "Next run:" -msgstr "Datakeuze" +msgstr "Volgende run:" #: pretix/control/templates/pretixcontrol/orders/export.html:32 #: pretix/control/templates/pretixcontrol/organizers/export.html:32 -#, fuzzy -#| msgid "Reduced ticket" msgid "No next run scheduled" -msgstr "Kaartje met korting" +msgstr "Geen volgende run gepland" #: pretix/control/templates/pretixcontrol/orders/export.html:37 #: pretix/control/templates/pretixcontrol/organizers/export.html:37 -#, fuzzy -#| msgid "Export refunds" msgid "Exporter not found" -msgstr "Terugbetalingen exporteren" +msgstr "Exporteerder niet gevonden" #: pretix/control/templates/pretixcontrol/orders/export.html:42 #: pretix/control/templates/pretixcontrol/organizers/export.html:42 @@ -26026,10 +24534,8 @@ msgid "Failed recently" msgstr "Onlangs mislukt" #: pretix/control/templates/pretixcontrol/orders/export.html:64 -#, fuzzy -#| msgid "Retry" msgid "Run export now" -msgstr "Probeer opnieuw" +msgstr "Export nu uitvoeren" #: pretix/control/templates/pretixcontrol/orders/export.html:69 #: pretix/control/templates/pretixcontrol/organizers/export.html:69 @@ -26048,44 +24554,35 @@ msgstr "Kopiëren" #: pretix/control/templates/pretixcontrol/orders/export.html:98 #: pretix/control/templates/pretixcontrol/organizers/export.html:98 -#, fuzzy -#| msgid "Start export" msgid "Other exports" -msgstr "Start export" +msgstr "Overige exporten" #: pretix/control/templates/pretixcontrol/orders/export.html:107 #: pretix/control/templates/pretixcontrol/organizers/export.html:107 -#, fuzzy -#| msgid "Split into new order" msgid "Recommended for new users" -msgstr "Splitsen naar nieuwe bestelling" +msgstr "Aanbevolen voor nieuwe gebruikers" #: pretix/control/templates/pretixcontrol/orders/export_delete.html:4 #: pretix/control/templates/pretixcontrol/orders/export_delete.html:6 #: pretix/control/templates/pretixcontrol/organizers/export_delete.html:4 #: pretix/control/templates/pretixcontrol/organizers/export_delete.html:6 -#, fuzzy -#| msgid "Delete selected" msgid "Delete scheduled export" -msgstr "Verwijder geselecteerde" +msgstr "Geplande export verwijderen" #: pretix/control/templates/pretixcontrol/orders/export_delete.html:9 #: pretix/control/templates/pretixcontrol/organizers/export_delete.html:9 -#, fuzzy, python-format -#| msgid "" -#| "Are you sure you want to delete the quota %(quota)s?" +#, python-format msgid "" "Are you sure you want to delete the scheduled export %(export)s?" msgstr "" -"Weet je zeker dat je het quotum %(quota)s wilt verwijderen?" +"Weet je zeker dat je de geplande export %(export)s wilt " +"verwijderen?" #: pretix/control/templates/pretixcontrol/orders/export_form.html:26 #: pretix/control/templates/pretixcontrol/organizers/export_form.html:27 -#, fuzzy -#| msgid "Quota options" msgid "Export options" -msgstr "Quotumopties" +msgstr "Exportopties" #: pretix/control/templates/pretixcontrol/orders/export_form.html:32 #: pretix/control/templates/pretixcontrol/organizers/export_form.html:33 @@ -26098,10 +24595,8 @@ msgstr "" #: pretix/control/templates/pretixcontrol/orders/export_form.html:46 #: pretix/control/templates/pretixcontrol/organizers/export_form.html:47 -#, fuzzy -#| msgid "Sample company" msgid "Save copy" -msgstr "Voorbeeldbedrijf" +msgstr "Kopie opslaan" #: pretix/control/templates/pretixcontrol/orders/export_form.html:56 #: pretix/control/templates/pretixcontrol/organizers/export_form.html:57 @@ -26110,28 +24605,21 @@ msgstr "Start export" #: pretix/control/templates/pretixcontrol/orders/export_form.html:61 #: pretix/control/templates/pretixcontrol/organizers/export_form.html:62 -#, fuzzy -#| msgid "Reduced ticket" msgid "Schedule export" -msgstr "Kaartje met korting" +msgstr "Export plannen" #: pretix/control/templates/pretixcontrol/orders/fragment_export_schedule_form.html:6 -#, fuzzy -#| msgid "Reduced ticket" msgid "Schedule" -msgstr "Kaartje met korting" +msgstr "Plannen" #: pretix/control/templates/pretixcontrol/orders/fragment_export_schedule_form.html:15 -#, fuzzy -#| msgid "Repetition rule" msgid "Repetition schedule" -msgstr "Herhalingsregel" +msgstr "Herhalingsschema" #: pretix/control/templates/pretixcontrol/orders/fragment_export_schedule_form.html:46 -#, fuzzy, python-format -#| msgid "Repeat every %(interval)s %(freq)s, starting at %(start)s." +#, python-format msgid "Repeat every %(interval)s %(freq)s" -msgstr "Herhaal ieder(e) %(interval)s %(freq)s, beginnend op %(start)s." +msgstr "Herhaal elke %(interval)s %(freq)s" #: pretix/control/templates/pretixcontrol/orders/fragment_export_schedule_form.html:54 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:89 @@ -26174,10 +24662,8 @@ msgid "Repeat until %(until)s" msgstr "Herhaal tot %(until)s" #: pretix/control/templates/pretixcontrol/orders/fragment_export_schedule_form.html:97 -#, fuzzy -#| msgid "Never" msgid "Forever" -msgstr "Nooit" +msgstr "Voor altijd" #: pretix/control/templates/pretixcontrol/orders/fragment_export_schedule_form.html:110 msgid "" @@ -26187,10 +24673,8 @@ msgstr "" "verzonden." #: pretix/control/templates/pretixcontrol/orders/fragment_export_schedule_form.html:111 -#, fuzzy -#| msgid "Please confirm the following payment details." msgid "Please note the following limitations:" -msgstr "Bevestig de volgende betalingsdetails." +msgstr "Houd rekening met de volgende beperkingen:" #: pretix/control/templates/pretixcontrol/orders/fragment_export_schedule_form.html:114 msgid "" @@ -26243,11 +24727,9 @@ msgstr "" "Alle ontvangers van de export kunnen zien wie de eigenaar van het rapport is." #: pretix/control/templates/pretixcontrol/orders/fragment_order_status.html:13 -#, fuzzy -#| msgid "Pending (overdue)" msgctxt "order state" msgid "Pending (confirmed)" -msgstr "Openstaand (achterstallig)" +msgstr "In afwachting (bevestigd)" #: pretix/control/templates/pretixcontrol/orders/fragment_order_status.html:26 #: pretix/presale/templates/pretixpresale/event/fragment_order_status.html:19 @@ -26357,8 +24839,6 @@ msgstr "Verwijder filter" #: pretix/control/templates/pretixcontrol/orders/index.html:145 #: pretix/control/templates/pretixcontrol/organizers/customer.html:208 -#, fuzzy -#| msgid "Order paid / total" msgid "Order paid / total" msgstr "Bestelling betaald / totaal" @@ -26374,11 +24854,10 @@ msgstr "selecteer rij voor batchbewerking" #: pretix/control/templates/pretixcontrol/orders/index.html:194 #: pretix/control/templates/pretixcontrol/search/orders.html:80 #: pretix/control/templates/pretixcontrol/search/orders.html:82 -#, fuzzy, python-format -#| msgid "Exit: %(date)s" +#, python-format msgctxt "followup" msgid "TODO %(date)s" -msgstr "Vertrek: %(date)s" +msgstr "TODO %(date)s" #: pretix/control/templates/pretixcontrol/orders/index.html:215 #: pretix/control/templates/pretixcontrol/organizers/customer.html:247 @@ -26439,18 +24918,13 @@ msgstr "" "kun je het 'besteloverzicht' raadplegen." #: pretix/control/templates/pretixcontrol/orders/index.html:290 -#, fuzzy -#| msgctxt "subevents" -#| msgid "Select date" msgid "Select action" -msgstr "Kies een datum" +msgstr "Actie selecteren" #: pretix/control/templates/pretixcontrol/orders/index.html:311 #: pretix/control/views/orders.py:362 -#, fuzzy -#| msgid "Refund full paid amount" msgid "Refund overpaid amount" -msgstr "Betaal volledige betaalde bedrag terug" +msgstr "Terugbetaling van te veel betaald bedrag" #: pretix/control/templates/pretixcontrol/orders/index.html:319 #: pretix/control/views/orders.py:347 @@ -26458,10 +24932,8 @@ msgid "Mark as expired if overdue" msgstr "Markeer als verlopen indien achterstallig" #: pretix/control/templates/pretixcontrol/orders/index.html:327 -#, fuzzy -#| msgid "Disable test mode" msgid "Delete (test mode only)" -msgstr "Schakel testmodus uit" +msgstr "Verwijderen (alleen in testmodus)" #: pretix/control/templates/pretixcontrol/orders/overview.html:5 #: pretix/control/templates/pretixcontrol/orders/overview.html:16 @@ -26527,45 +24999,34 @@ msgstr "Bestelling zoeken" #: pretix/control/templates/pretixcontrol/organizers/channel_add.html:6 #: pretix/control/templates/pretixcontrol/organizers/channel_add_choice.html:6 -#, fuzzy -#| msgid "Sales channel" msgid "Add sales channel" -msgstr "Verkoopkanaal" +msgstr "Verkoopkanaal toevoegen" #: pretix/control/templates/pretixcontrol/organizers/channel_add.html:13 #: pretix/control/templates/pretixcontrol/organizers/channel_edit.html:13 #: pretix/control/templates/pretixcontrol/organizers/channels.html:24 -#, fuzzy -#| msgid "Scan type" msgid "Channel type" -msgstr "Scantype" +msgstr "Kanaaltype" #: pretix/control/templates/pretixcontrol/organizers/channel_delete.html:5 -#, fuzzy -#| msgid "Sales channel" msgid "Delete sales channel:" -msgstr "Verkoopkanaal" +msgstr "Verkoopkanaal verwijderen:" #: pretix/control/templates/pretixcontrol/organizers/channel_delete.html:10 -#, fuzzy -#| msgid "Are you sure you want to delete the gate?" msgid "Are you sure you want to delete this sales channel?" -msgstr "Weet je zeker dat je de toegangslocatie wilt verwijderen?" +msgstr "Weet je zeker dat je dit verkoopkanaal wilt verwijderen?" #: pretix/control/templates/pretixcontrol/organizers/channel_delete.html:15 -#, fuzzy -#| msgid "A voucher can not be deleted if it already has been redeemed." msgid "" "This sales channel cannot be deleted since it has already been used to sell " "orders or because it is a core element of the system." msgstr "" -"Een voucher kan niet worden verwijderd wanneer de voucher al is verzilverd." +"Dit verkoopkanaal kan niet worden verwijderd omdat het al is gebruikt om " +"bestellingen te verkopen of omdat het een kernonderdeel van het systeem is." #: pretix/control/templates/pretixcontrol/organizers/channel_edit.html:6 -#, fuzzy -#| msgid "Sales channel" msgid "Sales channel:" -msgstr "Verkoopkanaal" +msgstr "Verkoopkanaal:" #: pretix/control/templates/pretixcontrol/organizers/channels.html:8 msgid "" @@ -26579,31 +25040,24 @@ msgstr "" "rapporteren van aankopen." #: pretix/control/templates/pretixcontrol/organizers/channels.html:15 -#, fuzzy -#| msgid "Add a new rule" msgid "Add a new channel" -msgstr "Voeg een nieuwe regel toe" +msgstr "Een nieuw kanaal toevoegen" #: pretix/control/templates/pretixcontrol/organizers/channels.html:22 -#, fuzzy -#| msgid "Change" msgid "Channel" -msgstr "Veranderen" +msgstr "Kanaal" #: pretix/control/templates/pretixcontrol/organizers/customer.html:8 #: pretix/control/templates/pretixcontrol/organizers/customer.html:14 #: pretix/control/templates/pretixcontrol/organizers/customer_edit.html:8 #: pretix/control/templates/pretixcontrol/organizers/customer_edit.html:18 -#, fuzzy, python-format -#| msgid "Custom fields" +#, python-format msgid "Customer #%(id)s" -msgstr "Aangepaste velden" +msgstr "Klant #%(id)s" #: pretix/control/templates/pretixcontrol/organizers/customer.html:55 -#, fuzzy -#| msgid "Send password reset email" msgid "Send password reset link" -msgstr "Verstuur wachtwoordherstelmail" +msgstr "Link voor wachtwoordherstel verzenden" #: pretix/control/templates/pretixcontrol/organizers/customer.html:80 msgid "This includes all paid orders by this customer across all your events." @@ -26611,10 +25065,8 @@ msgstr "" "Dit omvat alle betaalde bestellingen van deze klant voor al je evenementen." #: pretix/control/templates/pretixcontrol/organizers/customer.html:81 -#, fuzzy -#| msgid "Payment pending" msgid "Lifetime spending" -msgstr "Wacht op betaling" +msgstr "Levenslange uitgaven" #: pretix/control/templates/pretixcontrol/organizers/customer.html:103 #: pretix/control/templates/pretixcontrol/organizers/customer_anonymize.html:39 @@ -26625,16 +25077,12 @@ msgstr "Anonimiseren" #: pretix/control/templates/pretixcontrol/organizers/customer.html:122 #: pretix/control/templates/pretixcontrol/organizers/customer_membership.html:35 #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:60 -#, fuzzy -#| msgid "Use languages" msgid "Usages" -msgstr "Gebruik talen" +msgstr "Gebruik" #: pretix/control/templates/pretixcontrol/organizers/customer.html:189 -#, fuzzy -#| msgid "Team memberships" msgid "Add membership" -msgstr "Teamlidmaatschappen" +msgstr "Lidmaatschap toevoegen" #: pretix/control/templates/pretixcontrol/organizers/customer.html:241 #: pretix/presale/templates/pretixpresale/organizers/customer_orders.html:29 @@ -26643,29 +25091,22 @@ msgstr "Gekoppeld aan het account op basis van het e-mailadres." #: pretix/control/templates/pretixcontrol/organizers/customer.html:294 #: pretix/control/templates/pretixcontrol/organizers/giftcards.html:65 -#, fuzzy -#| msgid "Latin transcription" msgid "Last transaction" -msgstr "Transcriptie" +msgstr "Laatste transactie" #: pretix/control/templates/pretixcontrol/organizers/customer.html:334 -#, fuzzy -#| msgid "User history" msgid "Customer history" -msgstr "Gebruikershistorie" +msgstr "Klantgeschiedenis" #: pretix/control/templates/pretixcontrol/organizers/customer_anonymize.html:5 #: pretix/control/templates/pretixcontrol/organizers/customer_anonymize.html:11 -#, fuzzy, python-format -#| msgid "Anonymize user" +#, python-format msgid "Anonymize customer #%(id)s" -msgstr "Gebruiker anonimiseren" +msgstr "Anonimiseer klant #%(id)s" #: pretix/control/templates/pretixcontrol/organizers/customer_anonymize.html:16 -#, fuzzy -#| msgid "Are you sure you want to delete the gate?" msgid "Are you sure you want to anonymize this customer account?" -msgstr "Weet je zeker dat je de toegangslocatie wilt verwijderen?" +msgstr "Weet je zeker dat je dit klantaccount wilt anonimiseren?" #: pretix/control/templates/pretixcontrol/organizers/customer_anonymize.html:20 msgid "All orders will be disconnected from this customer account." @@ -26688,45 +25129,35 @@ msgstr "" "lidmaatschap." #: pretix/control/templates/pretixcontrol/organizers/customer_anonymize.html:29 -#, fuzzy -#| msgid "The transaction has been reversed." msgid "This action is irreversible." -msgstr "De transactie is teruggeboekt." +msgstr "Deze actie is onomkeerbaar." #: pretix/control/templates/pretixcontrol/organizers/customer_edit.html:6 #: pretix/control/templates/pretixcontrol/organizers/customer_edit.html:16 -#, fuzzy -#| msgid "Any customer" msgid "New customer" -msgstr "Iedere klant" +msgstr "Nieuwe klant" #: pretix/control/templates/pretixcontrol/organizers/customer_membership_delete.html:15 -#, fuzzy -#| msgid "Are you sure you want to delete the gate?" msgid "Are you sure you want to delete this membership?" -msgstr "Weet je zeker dat je de toegangslocatie wilt verwijderen?" +msgstr "Weet je zeker dat je dit lidmaatschap wilt verwijderen?" #: pretix/control/templates/pretixcontrol/organizers/customer_membership_delete.html:17 -#, fuzzy -#| msgid "A voucher can not be deleted if it already has been redeemed." msgid "" "This membership cannot be deleted since it has been used in an order. Change " "its end date to the past instead." msgstr "" -"Een voucher kan niet worden verwijderd wanneer de voucher al is verzilverd." +"Dit lidmaatschap kan niet worden verwijderd omdat het in een bestelling is " +"gebruikt. Wijzig in plaats daarvan de einddatum naar een datum in het " +"verleden." #: pretix/control/templates/pretixcontrol/organizers/customers.html:14 -#, fuzzy -#| msgid "No exports have been created yet." msgid "No customer accounts have been created yet." -msgstr "Er zijn nog geen exports aangemaakt." +msgstr "Er zijn nog geen klantenaccounts aangemaakt." #: pretix/control/templates/pretixcontrol/organizers/customers.html:19 #: pretix/control/templates/pretixcontrol/organizers/customers.html:48 -#, fuzzy -#| msgid "Create a new user" msgid "Create a new customer" -msgstr "Maak een nieuwe gebruiker aan" +msgstr "Maak een nieuwe klant aan" #: pretix/control/templates/pretixcontrol/organizers/delete.html:5 msgid "Delete organizer" @@ -26763,18 +25194,14 @@ msgid "Organizer: %(name)s" msgstr "Organisator: %(name)s" #: pretix/control/templates/pretixcontrol/organizers/device_bulk_edit.html:6 -#, fuzzy -#| msgctxt "subevent" -#| msgid "Create multiple dates" msgid "Change multiple devices" -msgstr "Maak meerdere datums aan" +msgstr "Meerdere apparaten wijzigen" #: pretix/control/templates/pretixcontrol/organizers/device_bulk_edit.html:8 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:14 -#, fuzzy, python-format -#| msgid "Enable selected" +#, python-format msgid "%(number)s selected" -msgstr "Schakel geselecteerde in" +msgstr "%(number)s geselecteerd" #: pretix/control/templates/pretixcontrol/organizers/device_bulk_edit.html:36 #: pretix/control/templates/pretixcontrol/organizers/device_edit.html:24 @@ -26931,11 +25358,8 @@ msgstr "Logboeken" #: pretix/control/templates/pretixcontrol/organizers/devices.html:188 #: pretix/control/templates/pretixcontrol/subevents/index.html:211 -#, fuzzy -#| msgctxt "subevent" -#| msgid "No date selected." msgid "Edit selected" -msgstr "Geen datum geselecteerd." +msgstr "Geselecteerde keuzes bewerken" #: pretix/control/templates/pretixcontrol/organizers/edit.html:12 msgid "Organizer settings" @@ -27014,10 +25438,8 @@ msgstr "" "trackingproviders." #: pretix/control/templates/pretixcontrol/organizers/edit.html:205 -#, fuzzy -#| msgid "Availability" msgid "Accessibility" -msgstr "Beschikbaarheid" +msgstr "Toegankelijkheid" #: pretix/control/templates/pretixcontrol/organizers/edit.html:207 msgid "" @@ -27105,16 +25527,12 @@ msgstr "" "worden gecodeerd." #: pretix/control/templates/pretixcontrol/organizers/edit.html:318 -#, fuzzy -#| msgid "Known domains" msgid "Domains" -msgstr "Bekende domeinen" +msgstr "Domeinen" #: pretix/control/templates/pretixcontrol/organizers/edit.html:320 -#, fuzzy -#| msgid "This action is only allowed for canceled orders." msgid "This dialog is intended for advanced users." -msgstr "Deze actie is alleen toegestaan voor geannuleerde bestellingen." +msgstr "Dit dialoogvenster is bedoeld voor gevorderde gebruikers." #: pretix/control/templates/pretixcontrol/organizers/edit.html:321 msgid "" @@ -27125,10 +25543,8 @@ msgstr "" "worden gebruikt." #: pretix/control/templates/pretixcontrol/organizers/edit.html:377 -#, fuzzy -#| msgid "Address line" msgid "Add domain" -msgstr "Adresregel" +msgstr "Domein toevoegen" #: pretix/control/templates/pretixcontrol/organizers/export.html:64 msgid "Run export now and download result" @@ -27636,7 +26052,7 @@ msgstr "Team:" #: pretix/control/templates/pretixcontrol/organizers/team_edit.html:8 #: pretix/control/templates/pretixcontrol/organizers/teams.html:30 msgid "Create a new team" -msgstr "Nieuw team aanmaken" +msgstr "Maak een nieuw team aan" #: pretix/control/templates/pretixcontrol/organizers/team_edit.html:10 msgid "You will be able to add team members in the next step." @@ -27727,18 +26143,15 @@ msgstr "" "Deze pagina toont alle aanroepen naar je webhook in de afgelopen 30 dagen." #: pretix/control/templates/pretixcontrol/organizers/webhook_logs.html:14 -#, fuzzy, python-format -#| msgid "The user has been created." +#, python-format msgid "One webhook is scheduled to be retried." msgid_plural "%(count)s webhooks are scheduled to be retried." -msgstr[0] "De gebruiker is aangemaakt." -msgstr[1] "De gebruiker is aangemaakt." +msgstr[0] "Er staat één webhook gepland om opnieuw te worden geprobeerd." +msgstr[1] "Er staan %(count)s webhooks gepland om opnieuw te worden geprobeerd." #: pretix/control/templates/pretixcontrol/organizers/webhook_logs.html:25 -#, fuzzy -#| msgid "Stop impersonating" msgid "Stop retrying" -msgstr "Terug naar eigen gebruiker" +msgstr "Stop met opnieuw proberen" #: pretix/control/templates/pretixcontrol/organizers/webhook_logs.html:29 #, python-format @@ -27796,24 +26209,19 @@ msgid "Create webhook" msgstr "Maak webhook" #: pretix/control/templates/pretixcontrol/pagination.html:11 -#, fuzzy -#| msgid "Go to shop" msgid "Go to page 1" -msgstr "Ga naar de winkel" +msgstr "Ga naar pagina 1" #: pretix/control/templates/pretixcontrol/pagination.html:17 #: pretix/control/templates/pretixcontrol/pagination.html:37 #: pretix/control/templates/pretixcontrol/pagination.html:44 -#, fuzzy, python-format -#| msgid "Page %(page)s" +#, python-format msgid "Go to page %(page)s" -msgstr "Pagina %(page)s" +msgstr "Ga naar pagina %(page)s" #: pretix/control/templates/pretixcontrol/pagination.html:27 -#, fuzzy -#| msgid "Click here to change" msgid "Click to choose a page" -msgstr "Klik hier om dit aan te passen" +msgstr "Klik om een pagina te kiezen" #: pretix/control/templates/pretixcontrol/pagination.html:30 #, python-format @@ -27849,16 +26257,12 @@ msgid "Code" msgstr "Code" #: pretix/control/templates/pretixcontrol/pdf/index.html:52 -#, fuzzy -#| msgid "Text color" msgid "Text box" -msgstr "Tekstkleur" +msgstr "Tekstveld" #: pretix/control/templates/pretixcontrol/pdf/index.html:59 -#, fuzzy -#| msgid "Code" msgid "QR Code" -msgstr "Code" +msgstr "QR-code" #: pretix/control/templates/pretixcontrol/pdf/index.html:64 msgid "QR code for Check-In" @@ -27869,10 +26273,8 @@ msgid "QR code for Lead Scanning" msgstr "QR-code voor lead-scanning" #: pretix/control/templates/pretixcontrol/pdf/index.html:78 -#, fuzzy -#| msgid "Order code" msgid "Other QR code" -msgstr "Bestelcode" +msgstr "Andere QR-code" #: pretix/control/templates/pretixcontrol/pdf/index.html:87 msgid "Image" @@ -27982,10 +26384,8 @@ msgid "Start editing" msgstr "Begin met bewerken" #: pretix/control/templates/pretixcontrol/pdf/index.html:240 -#, fuzzy -#| msgid "Seat name" msgid "Layout name" -msgstr "Stoelnaam" +msgstr "Lay-outnaam" #: pretix/control/templates/pretixcontrol/pdf/index.html:247 msgid "Preferred language" @@ -27993,10 +26393,8 @@ msgstr "Voorkeurstaal" #: pretix/control/templates/pretixcontrol/pdf/index.html:260 #: pretix/control/templates/pretixcontrol/pdf/index.html:270 -#, fuzzy -#| msgid "Upload custom background" msgid "Upload PDF as background" -msgstr "Upload aangepaste achtergrond" +msgstr "PDF als achtergrond uploaden" #: pretix/control/templates/pretixcontrol/pdf/index.html:262 msgid "" @@ -28007,16 +26405,12 @@ msgstr "" "papierformaat komt overeen met de PDF." #: pretix/control/templates/pretixcontrol/pdf/index.html:277 -#, fuzzy -#| msgid "Upload custom background" msgid "Download current background" -msgstr "Upload aangepaste achtergrond" +msgstr "Huidige achtergrond downloaden" #: pretix/control/templates/pretixcontrol/pdf/index.html:284 -#, fuzzy -#| msgid "Canceled by customer" msgid "Or choose custom paper size" -msgstr "Geannuleerd door klant" +msgstr "Of kies een aangepast papierformaat" #: pretix/control/templates/pretixcontrol/pdf/index.html:286 msgid "" @@ -28054,10 +26448,8 @@ msgid "Light" msgstr "Licht" #: pretix/control/templates/pretixcontrol/pdf/index.html:323 -#, fuzzy -#| msgid "Email content" msgid "Image content" -msgstr "E-mailinhoud" +msgstr "Afbeeldingsinhoud" #: pretix/control/templates/pretixcontrol/pdf/index.html:334 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_create.html:20 @@ -28085,10 +26477,8 @@ msgid "Other…" msgstr "Andere…" #: pretix/control/templates/pretixcontrol/pdf/index.html:362 -#, fuzzy -#| msgid "Available placeholders: {list}" msgid "Show available placeholders" -msgstr "Beschikbare plaatsaanduidingen: {list}" +msgstr "Beschikbare placeholders weergeven" #: pretix/control/templates/pretixcontrol/pdf/index.html:369 msgid "x (mm)" @@ -28103,10 +26493,8 @@ msgid "Size (mm)" msgstr "Grootte (mm)" #: pretix/control/templates/pretixcontrol/pdf/index.html:400 -#, fuzzy -#| msgid "Text color" msgid "QR color" -msgstr "Tekstkleur" +msgstr "Kleur QR" #: pretix/control/templates/pretixcontrol/pdf/index.html:415 msgid "Render without whitespace" @@ -28129,10 +26517,8 @@ msgid "Font size (pt)" msgstr "Lettertypegrootte (pt)" #: pretix/control/templates/pretixcontrol/pdf/index.html:452 -#, fuzzy -#| msgid "Light" msgid "Line height" -msgstr "Licht" +msgstr "Regelhoogte" #: pretix/control/templates/pretixcontrol/pdf/index.html:459 msgid "Text color" @@ -28143,10 +26529,8 @@ msgid "Flow multiple lines downward from specified position" msgstr "Meerdere regels leeglaten vanaf gegeven plaats" #: pretix/control/templates/pretixcontrol/pdf/index.html:536 -#, fuzzy -#| msgid "Automatically refund money if possible" msgid "Automatically reduce font size to fit content" -msgstr "Geld automatisch terugbetalen indien mogelijk" +msgstr "Automatisch de lettergrootte verkleinen om de inhoud aan te passen" #: pretix/control/templates/pretixcontrol/pdf/index.html:542 msgid "Allow long words to be split (preview is not accurate)" @@ -28160,12 +26544,13 @@ msgid "" "use pretixPRINT version %(print_version)s (or newer) or pretixSCAN Desktop " "version %(scan_version)s (or newer)." msgstr "" +"Deze lay-out maakt gebruik van nieuwe functies. Als je vanaf je apparaat " +"afdrukt, zorg er dan voor dat je pretixPRINT-versie %(print_version)s (of " +"nieuwer) of pretixSCAN-desktopversie %(scan_version)s (of nieuwer) gebruikt." #: pretix/control/templates/pretixcontrol/pdf/placeholders.html:16 -#, fuzzy -#| msgid "Available placeholders: {list}" msgid "Available placeholders" -msgstr "Beschikbare plaatsaanduidingen: {list}" +msgstr "Beschikbare placeholders" #: pretix/control/templates/pretixcontrol/pdf/placeholders.html:19 msgid "" @@ -28176,16 +26561,21 @@ msgid "" "however most of them can also be empty in some cases depending on " "configuration." msgstr "" +"Je kunt placeholders gebruiken in aangepaste teksten op tickets om je tekst " +"te verrijken met individuele gegevens. Welke placeholders beschikbaar zijn, " +"hangt af van je evenementinstellingen, geactiveerde plug-ins, het " +"geselecteerde product en de invoer van de gebruiker. Op deze pagina staan " +"alle placeholders die technisch beschikbaar zijn voor je evenement, maar de " +"meeste kunnen in sommige gevallen ook leeg zijn, afhankelijk van de " +"configuratie." #: pretix/control/templates/pretixcontrol/pdf/placeholders.html:31 -#, fuzzy -#| msgid "Placed order" msgid "Placeholder" -msgstr "Geplaatste bestelling" +msgstr "Placeholder" #: pretix/control/templates/pretixcontrol/pdf/placeholders.html:33 msgid "Formatting example" -msgstr "" +msgstr "Voorbeeld van opmaak" #: pretix/control/templates/pretixcontrol/search/orders.html:116 msgid "" @@ -28197,21 +26587,15 @@ msgstr "" #: pretix/control/templates/pretixcontrol/search/payments.html:7 #: pretix/control/templates/pretixcontrol/search/payments.html:9 -#, fuzzy -#| msgid "Payments" msgid "Payment search" -msgstr "Betalingen" +msgstr "Zoeken naar betalingen" #: pretix/control/templates/pretixcontrol/search/payments.html:155 -#, fuzzy -#| msgid "" -#| "We couldn't find any orders that you have access to and that match your " -#| "search query." msgid "" "We couldn't find any payments that you have access to and that match your " "search query." msgstr "" -"We konden geen bestellingen vinden waar je toegang toe hebt en die " +"We hebben geen betalingen gevonden waar je toegang toe hebt en die " "overeenkomen met je zoekopdracht." #: pretix/control/templates/pretixcontrol/select2_widget.html:9 @@ -28287,6 +26671,9 @@ msgid "" "Depending on the amount of data in your event, the following step may take a " "while to complete. We will inform you via email once it has been completed." msgstr "" +"Afhankelijk van de hoeveelheid gegevens in je evenement kan het even duren " +"voordat de volgende stap is voltooid. We zullen je via e-mail informeren " +"zodra dit is voltooid." #: pretix/control/templates/pretixcontrol/shredder/index.html:11 msgid "" @@ -28408,10 +26795,8 @@ msgstr "Nieuw quotum toevoegen" #: pretix/control/templates/pretixcontrol/subevents/bulk.html:485 #: pretix/control/templates/pretixcontrol/subevents/detail.html:128 -#, fuzzy -#| msgid "Price settings" msgid "Product settings" -msgstr "Prijsinstellingen" +msgstr "Productinstellingen" #: pretix/control/templates/pretixcontrol/subevents/bulk.html:487 #: pretix/control/templates/pretixcontrol/subevents/detail.html:130 @@ -28434,6 +26819,14 @@ msgid "" "or even overlapping time slots, working with just one large check-in list " "will be easier." msgstr "" +"Je kunt ervoor kiezen om voor elke datum in je reeks afzonderlijk een of " +"meer check-in-lijsten toe te voegen, of om slechts één check-in-lijst voor " +"al je data te gebruiken en de toegang te beperken via check-in-regels. Welke " +"aanpak beter is, hangt af van meerdere factoren, zoals het aantal data in je " +"reeks. Voor een reeks met één of minder evenementdata per dag zijn " +"afzonderlijke lijsten meestal handiger. Als je datums gebruikt om meerdere " +"tijdvakken op dezelfde dag weer te geven, of zelfs overlappende tijdvakken, " +"is het makkelijker om met slechts één grote check-in-lijst te werken." #: pretix/control/templates/pretixcontrol/subevents/bulk.html:602 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:359 @@ -28443,22 +26836,19 @@ msgstr "Voeg een nieuwe inchecklijst toe" #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:9 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:12 -#, fuzzy -#| msgctxt "subevent" -#| msgid "Create multiple dates" msgctxt "subevent" msgid "Change multiple dates" -msgstr "Maak meerdere datums aan" +msgstr "Meerdere datums wijzigen" #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:154 msgid "Item prices" msgstr "Productprijzen" #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:197 -#, fuzzy -#| msgid "You cannot select a quota that belongs to a different event." msgid "You selected a set of dates that currently have different quota setups." -msgstr "Je kan geen quotum selecteren dat bij een ander evenement hoort." +msgstr "" +"Je hebt een reeks datums geselecteerd waarvoor momenteel verschillende " +"quotumconfiguraties zijn ingesteld." #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:198 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:373 @@ -28466,6 +26856,8 @@ msgid "" "Using this option will delete all current quotas from " "all selected dates." msgstr "" +"Als je deze optie gebruikt, worden alle huidige quota van " +"alle geselecteerde datums verwijderd." #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:277 msgid "" @@ -28477,20 +26869,17 @@ msgstr "" "wijzigen." #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:372 -#, fuzzy -#| msgid "Add to existing quota" msgid "Delete existing quotas" -msgstr "Toevoegen aan bestaand quotum" +msgstr "Bestaande quota verwijderen" #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:374 msgid "This cannot be reverted. Are you sure to proceed?" msgstr "" +"Dit kan niet ongedaan worden gemaakt. Weet je zeker dat je wilt doorgaan?" #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:381 -#, fuzzy -#| msgid "Process refund" msgid "Proceed" -msgstr "Verwerk terugbetaling" +msgstr "Doorgaan" #: pretix/control/templates/pretixcontrol/subevents/delete.html:4 #: pretix/control/templates/pretixcontrol/subevents/delete.html:6 @@ -28519,6 +26908,9 @@ msgid "" "It is possible that some of the above dates can't be deleted if a plugin has " "data attached to them. In that case, they will be disabled instead." msgstr "" +"Het is mogelijk dat sommige van de bovenstaande datums niet kunnen worden " +"verwijderd als er gegevens aan een plug-in zijn gekoppeld. In dat geval " +"worden ze in plaats daarvan uitgeschakeld." #: pretix/control/templates/pretixcontrol/subevents/delete_bulk.html:27 msgid "" @@ -28540,17 +26932,13 @@ msgstr "Datumgeschiedenis" #: pretix/control/templates/pretixcontrol/subevents/fragment_unavail_mode_indicator.html:3 #: pretix/control/templates/pretixcontrol/subevents/fragment_unavail_mode_indicator.html:5 -#, fuzzy -#| msgid "You can cancel this order using the following button." msgid "You can change this option in the variation settings." -msgstr "Je kan deze bestelling annuleren met de volgende knop." +msgstr "Je kunt deze optie wijzigen in de instellingen voor varianten." #: pretix/control/templates/pretixcontrol/subevents/fragment_unavail_mode_indicator.html:3 #: pretix/control/templates/pretixcontrol/subevents/fragment_unavail_mode_indicator.html:5 -#, fuzzy -#| msgid "Can change product settings" msgid "You can change this option in the product settings." -msgstr "Kan productinstellingen wijzigen" +msgstr "Je kunt deze optie wijzigen in de productinstellingen." #: pretix/control/templates/pretixcontrol/subevents/index.html:11 msgid "You haven't created any dates for this event series yet." @@ -28574,10 +26962,8 @@ msgid "Begin" msgstr "Start" #: pretix/control/templates/pretixcontrol/subevents/index.html:176 -#, fuzzy -#| msgid "Show more" msgid "Show orders" -msgstr "Toon meer" +msgstr "Bestellingen weergeven" #: pretix/control/templates/pretixcontrol/subevents/index.html:187 msgctxt "subevent" @@ -28596,16 +26982,12 @@ msgid "Delete selected" msgstr "Verwijder geselecteerde" #: pretix/control/templates/pretixcontrol/subevents/index.html:214 -#, fuzzy -#| msgid "Disable selected" msgid "Activate selected" -msgstr "Schakel geselecteerde uit" +msgstr "Geselecteerde activeren" #: pretix/control/templates/pretixcontrol/subevents/index.html:217 -#, fuzzy -#| msgid "Delete selected" msgid "Deactivate selected" -msgstr "Verwijder geselecteerde" +msgstr "Geselecteerde deactiveren" #: pretix/control/templates/pretixcontrol/user/2fa_add.html:4 #: pretix/control/templates/pretixcontrol/user/2fa_add.html:6 @@ -28767,16 +27149,12 @@ msgid "Two-factor authentication" msgstr "Twee-factor-authenticatie" #: pretix/control/templates/pretixcontrol/user/2fa_leaveteams.html:6 -#, fuzzy -#| msgid "Delete a two-factor authentication device" msgid "Leave teams that require two-factor authentication" -msgstr "Verwijder een twee-factor-authenticatieapparaat" +msgstr "Verlaat teams die tweefactorauthenticatie vereisen" #: pretix/control/templates/pretixcontrol/user/2fa_leaveteams.html:10 -#, fuzzy -#| msgid "Are you sure you want to delete the following dates?" msgid "Do you really want to leave the following teams?" -msgstr "Weet je zeker dat je de volgende datums wilt verwijderen?" +msgstr "Wil je de volgende teams echt verlaten?" #: pretix/control/templates/pretixcontrol/user/2fa_leaveteams.html:15 #: pretix/control/templates/pretixcontrol/user/2fa_main.html:38 @@ -28787,7 +27165,7 @@ msgstr "Team \"%(team)s\" van organisator \"%(organizer)s\"" #: pretix/control/templates/pretixcontrol/user/2fa_leaveteams.html:26 msgid "Leave" -msgstr "" +msgstr "Weggaan" #: pretix/control/templates/pretixcontrol/user/2fa_main.html:8 msgid "" @@ -28812,10 +27190,8 @@ msgstr "Dit systeem verplicht het gebruik van twee-factor-authenticatie!" #: pretix/control/templates/pretixcontrol/user/2fa_main.html:29 #: pretix/control/templates/pretixcontrol/user/2fa_main.html:75 -#, fuzzy -#| msgid "Obligatory usage of two-factor authentication" msgid "As an administrator, you need to use two-factor authentication." -msgstr "Verplicht gebruik van twee-factor-authenticatie" +msgstr "Als beheerder moet je tweefactorauthenticatie gebruiken." #: pretix/control/templates/pretixcontrol/user/2fa_main.html:33 #: pretix/control/templates/pretixcontrol/user/2fa_main.html:77 @@ -28823,6 +27199,8 @@ msgid "" "You are part of one or more organizer teams that require you to use two-" "factor authentication." msgstr "" +"Je maakt deel uit van een of meer organisatieteams die je verplichten om " +"tweefactorauthenticatie te gebruiken." #: pretix/control/templates/pretixcontrol/user/2fa_main.html:47 msgid "Please set up at least one device below." @@ -28836,8 +27214,8 @@ msgstr "Schakel twee-factor-authenticatie met de knop hieronder in." #, python-format msgid "Leave team instead" msgid_plural "Leave %(count)s teams instead" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Verlaat team in plaats daarvan" +msgstr[1] "Verlaat %(count)s teams in plaats daarvan" #: pretix/control/templates/pretixcontrol/user/2fa_main.html:67 #: pretix/control/templates/pretixcontrol/user/2fa_main.html:94 @@ -28903,39 +27281,37 @@ msgstr "De oude codes zullen niet meer werken." #: pretix/control/templates/pretixcontrol/user/change_email.html:4 #: pretix/control/templates/pretixcontrol/user/change_email.html:8 -#, fuzzy -#| msgid "Verified email address" msgid "Change login email address" -msgstr "Geverifieerd e-mailadres" +msgstr "E-mailadres voor aanmelding wijzigen" #: pretix/control/templates/pretixcontrol/user/change_email.html:13 msgid "" "This changes the email address used to login to your account, as well as " "where we send email notifications." msgstr "" +"Hierdoor wordt het e-mailadres gewijzigd dat wordt gebruikt om in te loggen " +"op je account, evenals het adres waarnaar we e-mailmeldingen sturen." #: pretix/control/templates/pretixcontrol/user/change_email.html:18 msgid "" "We will send a confirmation code to your new email address, which you need " "to enter in the next step to confirm the email address is correct." msgstr "" +"We sturen een bevestigingscode naar je nieuwe e-mailadres. Deze moet je in " +"de volgende stap invoeren om te bevestigen dat het e-mailadres correct is." #: pretix/control/templates/pretixcontrol/user/change_password.html:4 #: pretix/control/templates/pretixcontrol/user/change_password.html:8 #: pretix/control/templates/pretixcontrol/user/change_password.html:20 #: pretix/control/templates/pretixcontrol/user/settings.html:67 #: pretix/presale/templates/pretixpresale/organizers/customer_base.html:28 -#, fuzzy -#| msgid "Change answers" msgid "Change password" -msgstr "Verander antwoorden" +msgstr "Wachtwoord wijzigen" #: pretix/control/templates/pretixcontrol/user/confirmation_code_dialog.html:4 #: pretix/control/templates/pretixcontrol/user/confirmation_code_dialog.html:8 -#, fuzzy -#| msgid "Confirmation code" msgid "Enter confirmation code" -msgstr "Bevestigingscode" +msgstr "Bevestigingscode invoeren" #: pretix/control/templates/pretixcontrol/user/notifications.html:4 #: pretix/control/templates/pretixcontrol/user/notifications.html:6 @@ -29034,12 +27410,13 @@ msgid "" "confirm your email address using a confirmation code we will send to your " "email address." msgstr "" +"Je e-mailadres is nog niet bevestigd. Om je account te beveiligen, moet je " +"je e-mailadres bevestigen met een bevestigingscode die we naar je e-" +"mailadres sturen." #: pretix/control/templates/pretixcontrol/user/settings.html:18 -#, fuzzy -#| msgid "Send information via email" msgid "Send confirmation email" -msgstr "Stuur informatie via e-mail" +msgstr "Bevestigingsmail versturen" #: pretix/control/templates/pretixcontrol/user/settings.html:53 msgid "Login settings" @@ -29124,10 +27501,8 @@ msgid "Send password reset email" msgstr "Verstuur wachtwoordherstelmail" #: pretix/control/templates/pretixcontrol/users/form.html:17 -#, fuzzy -#| msgid "Generate new emergency tokens" msgid "Generate 2FA emergency token" -msgstr "Genereer nieuwe noodtokens" +msgstr "2FA-noodtoken genereren" #: pretix/control/templates/pretixcontrol/users/form.html:22 msgid "Impersonate user" @@ -29235,22 +27610,17 @@ msgstr "" #: pretix/control/templates/pretixcontrol/vouchers/delete_carts.html:4 #: pretix/control/templates/pretixcontrol/vouchers/delete_carts.html:6 -#, fuzzy -#| msgctxt "subevent" -#| msgid "Delete dates" msgid "Delete carts" -msgstr "Verwijder datums" +msgstr "Winkelwagens verwijderen" #: pretix/control/templates/pretixcontrol/vouchers/delete_carts.html:9 -#, fuzzy, python-format -#| msgid "" -#| "Are you sure you want to delete the voucher %(voucher)s?" +#, python-format msgid "" "Are you sure you want to delete any cart positions with voucher " "%(voucher)s?" msgstr "" -"Weet je zeker dat je de voucher %(voucher)s wilt " -"verwijderen?" +"Weet je zeker dat je alle artikelen in je winkelwagen met voucher %" +"(voucher)s wilt verwijderen?" #: pretix/control/templates/pretixcontrol/vouchers/delete_carts.html:10 msgid "" @@ -29284,10 +27654,8 @@ msgstr "" "kan mogelijk pas worden gebruikt nadat de winkelmandjesessies zijn verlopen." #: pretix/control/templates/pretixcontrol/vouchers/detail.html:28 -#, fuzzy -#| msgid "Cart positions" msgid "Remove cart positions" -msgstr "Producten in winkelwagen" +msgstr "Artikelen in winkelwagen verwijderen" #: pretix/control/templates/pretixcontrol/vouchers/detail.html:43 msgid "Voucher link" @@ -29303,10 +27671,8 @@ msgstr "Voucherhistorie" #: pretix/control/templates/pretixcontrol/vouchers/import_start.html:6 #: pretix/control/templates/pretixcontrol/vouchers/index.html:81 #: pretix/control/templates/pretixcontrol/vouchers/index.html:94 -#, fuzzy -#| msgid "Import mode" msgid "Import vouchers" -msgstr "Importmodus" +msgstr "Vouchers importeren" #: pretix/control/templates/pretixcontrol/vouchers/index.html:10 msgid "" @@ -29398,28 +27764,20 @@ msgstr "" #: pretix/control/templates/pretixcontrol/waitinglist/delete_bulk.html:4 #: pretix/control/templates/pretixcontrol/waitinglist/delete_bulk.html:6 -#, fuzzy -#| msgid "Delete entry" msgid "Delete entries" -msgstr "Verwijder item" +msgstr "Verwijder vermeldingen" #: pretix/control/templates/pretixcontrol/waitinglist/delete_bulk.html:10 -#, fuzzy -#| msgid "Are you sure you want to delete the following dates?" msgid "Are you sure you want to delete the following entries?" -msgstr "Weet je zeker dat je de volgende datums wilt verwijderen?" +msgstr "Weet je zeker dat je de volgende vermeldingen wilt verwijderen?" #: pretix/control/templates/pretixcontrol/waitinglist/delete_bulk.html:21 -#, fuzzy -#| msgid "" -#| "The following dates can't be deleted as they already have orders, but " -#| "will be disabled instead." msgid "" "The following entries can't be deleted as they already have a voucher " "attached." msgstr "" -"De volgende datums kunnen niet worden verwijderd omdat er al bestellingen " -"aan zijn verbonden. In plaats hiervan zullen de datums worden uitgeschakeld." +"De volgende vermeldingen kunnen niet worden verwijderd omdat er al een " +"voucher aan is gekoppeld." #: pretix/control/templates/pretixcontrol/waitinglist/index.html:17 msgid "" @@ -29435,12 +27793,17 @@ 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 "" +"De wachtlijst voor dit evenement is niet langer actief. De wachtlijst heeft " +"geen invloed meer op de quota en wachtende gebruikers worden niet langer op " +"de hoogte gebracht." #: pretix/control/templates/pretixcontrol/waitinglist/index.html:26 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 "" +"Volgens je evenementinstellingen worden uitverkochte producten voor klanten " +"verborgen. Op deze manier kunnen klanten de wachtlijst niet ontdekken." #: pretix/control/templates/pretixcontrol/waitinglist/index.html:36 msgid "Send vouchers" @@ -29523,19 +27886,15 @@ msgid "" "For safety reasons, the waiting list does not run if the quota is set to " "unlimited." msgstr "" +"Om veiligheidsredenen wordt de wachtlijst niet gebruikt als het quotum is " +"ingesteld op onbeperkt." #: pretix/control/templates/pretixcontrol/waitinglist/index.html:234 -#, fuzzy -#| msgid "Quota name" msgid "Quota unlimited" -msgstr "Quotanaam" +msgstr "Onbeperkt quotum" #: pretix/control/templates/pretixcontrol/waitinglist/index.html:240 -#, fuzzy, python-format -#| msgid "" -#| "\n" -#| " Waiting, product %(num)sx available\n" -#| " " +#, python-format msgid "" "\n" " Waiting, product %(num)sx " @@ -29543,8 +27902,9 @@ msgid "" " " msgstr "" "\n" -" Wachtend, product %(num)sx beschikbaar\n" -" " +" Wachten, product %(num)sx " +"beschikbaar\n" +" " #: pretix/control/templates/pretixcontrol/waitinglist/index.html:246 msgid "Waiting, product unavailable" @@ -29563,104 +27923,74 @@ msgid "Move to the end of the list" msgstr "Verplaats naar eind van de lijst" #: pretix/control/templates/pretixcontrol/waitinglist/index.html:272 -#, fuzzy -#| msgid "Transfer to other order" msgctxt "subevent" msgid "Transfer to other date" -msgstr "Overdragen aan andere bestelling" +msgstr "Overboeken naar een andere datum" #: pretix/control/templates/pretixcontrol/waitinglist/transfer.html:4 #: pretix/control/templates/pretixcontrol/waitinglist/transfer.html:6 -#, fuzzy -#| msgid "Transfer amount" msgid "Transfer entry" -msgstr "Overschrijvingsbedrag" +msgstr "Vermelding overzetten" #: pretix/control/templates/pretixcontrol/waitinglist/transfer.html:9 -#, fuzzy, python-format -#| msgid "" -#| "Are you sure you want to delete the following waiting list entry " -#| "%(entry)s?" +#, python-format msgctxt "subevent" msgid "" "Please select the date to which the following waiting list entry should be " "transferred: %(entry)s?" msgstr "" -"Weet je zeker dat je het volgende wachtlijstitem wilt verwijderen: " -"%(entry)s?" +"Selecteer de datum waarnaar de volgende wachtlijstvermelding moet worden " +"overgedragen: %(entry)s?" #: pretix/control/templates/pretixcontrol/waitinglist/transfer.html:19 -#, fuzzy -#| msgctxt "amount_label" -#| msgid "Transfer" msgid "Transfer" msgstr "Overdragen" #: pretix/control/templatetags/hierarkey_form.py:68 -#, fuzzy -#| msgid "Create a new organizer" msgid "Currently set on organizer level" -msgstr "Nieuwe organisator aanmaken" +msgstr "Momenteel ingesteld op organisatieniveau" #: pretix/control/templatetags/hierarkey_form.py:68 -#, fuzzy -#| msgid "Currently for sale" msgid "Currently set on global level" -msgstr "Momenteel te koop" +msgstr "Momenteel ingesteld op algemeen niveau" #: pretix/control/templatetags/hierarkey_form.py:71 -#, fuzzy -#| msgid "" -#| "These settings are currently set on organizer level. This way, you can " -#| "easily change them for all of your events at the same time. You can " -#| "either go to the organizer settings to change them or decouple them from " -#| "the organizer account to change them for this event individually." msgid "" "These settings are currently set on organizer level. This way, you can " "easily change them for all of your events at the same time. You can either " "go to the organizer settings to change them for all your events or you can " "unlock them to change them for this event individually." msgstr "" -"Deze instellingen zijn momenteel op het niveau van de organisator ingesteld. " -"Hierdoor kan je de instellingen gemakkelijk voor al je evenementen tegelijk " -"wijzigen. Je kan naar de organisatorinstellingen gaan om deze aan te passen, " -"of je kan de instellingen ontkoppelen van de organisatorinstellingen om ze " -"alleen voor dit evenement aan te passen." +"Deze instellingen zijn momenteel ingesteld op organisatieniveau. Op deze " +"manier kun je ze eenvoudig voor al je evenementen tegelijkertijd wijzigen. " +"Je kunt naar de organisatorinstelingen gaan om ze voor al je evenementen te " +"wijzigen, of je kunt ze ontgrendelen om ze voor dit evenement afzonderlijk " +"te wijzigen." #: pretix/control/templatetags/hierarkey_form.py:75 -#, fuzzy -#| msgid "" -#| "These settings are currently set on global level. This way, you can " -#| "easily change them for all organizers at the same time. You can either go " -#| "to the global settings to change them or decouple them from the global " -#| "settings to change them for this event individually." msgid "" "These settings are currently set on global level. This way, you can easily " "change them for all organizers at the same time. You can either go to the " "global settings to change them for all your organizers or you can unlock " "them to change them for this event individually." msgstr "" -"Deze instellingen zijn momenteel op het site-niveau ingesteld. Hierdoor kan " -"je de instellingen gemakkelijk voor alle organisators tegelijk wijzigen. Je " -"kan naar de globale instellingen gaan om deze aan te passen, of je kan de " -"instellingen ontkoppelen van de globale instellingen om ze alleen voor dit " -"evenement aan te passen." +"Deze instellingen zijn momenteel ingesteld op algemeen niveau. Op deze " +"manier kun je ze eenvoudig voor alle organisatoren tegelijk wijzigen. Je " +"kunt naar de algemene instellingen gaan om ze voor al je organisatoren te " +"wijzigen, of je kunt ze ontgrendelen om ze voor dit evenement afzonderlijk " +"te wijzigen." #: pretix/control/templatetags/hierarkey_form.py:79 msgid "Unlock" msgstr "Ontgrendelen" #: pretix/control/templatetags/hierarkey_form.py:80 -#, fuzzy -#| msgid "Organizer settings" msgid "Go to organizer settings" -msgstr "Organisatorinstellingen" +msgstr "Ga naar de instellingen van de organisator" #: pretix/control/templatetags/hierarkey_form.py:80 -#, fuzzy -#| msgid "Global settings" msgid "Go to global settings" -msgstr "Globale instellingen" +msgstr "Ga naar de algemene instellingen" #: pretix/control/views/__init__.py:166 msgid "That page number is not an integer" @@ -29699,31 +28029,22 @@ msgid "Welcome to pretix! You are now part of the team \"{}\"." msgstr "Welkom bij pretix! Je bent nu lid van het team \"{}\"." #: pretix/control/views/auth.py:362 -#, fuzzy -#| msgid "" -#| "If the address is registered to valid account, then we have sent you an e-" -#| "mail containing further instructions. Please note that we will send at " -#| "most one email every 24 hours." msgid "" "If the address is registered to valid account, then we have sent you an " "email containing further instructions. Please note that we will send at most " "one email every 24 hours." msgstr "" -"Als het adres gekoppeld is aan een geldig account zullen we je een e-mail " -"sturen met verdere instructies. Merk op dat we niet meer dan één e-mail per " -"24 uur zullen sturen." +"Als het adres is geregistreerd bij een geldig account, hebben we je een e-" +"mail gestuurd met verdere instructies. Houd er rekening mee dat we maximaal " +"één e-mail per 24 uur versturen." #: pretix/control/views/auth.py:365 -#, fuzzy -#| msgid "" -#| "If the address is registered to valid account, then we have sent you an e-" -#| "mail containing further instructions." msgid "" "If the address is registered to valid account, then we have sent you an " "email containing further instructions." msgstr "" -"Als het adres gekoppeld is aan een geldig account zullen we je een e-mail " -"sturen met verdere instructies." +"Als het adres is geregistreerd bij een geldig account, hebben we je een e-" +"mail gestuurd met verdere instructies." #: pretix/control/views/auth.py:385 msgid "" @@ -29750,10 +28071,10 @@ msgid "Please try again." msgstr "Probeer het opnieuw." #: pretix/control/views/auth.py:544 -#, fuzzy -#| msgid "Two-factor authentication is required to log in" msgid "A recovery code for two-factor authentification was used to log in." -msgstr "Twee-factor-authenticatie is vereist om in te loggen" +msgstr "" +"Er werd een herstelcode voor tweefactorauthenticatie gebruikt om in te " +"loggen." #: pretix/control/views/auth.py:560 msgid "Invalid code, please try again." @@ -29764,10 +28085,8 @@ msgid "The selected check-ins have been reverted." msgstr "De gekozen check-ins zijn teruggedraaid." #: pretix/control/views/checkin.py:283 -#, fuzzy -#| msgid "The selected tickets have been marked as checked in." msgid "The selected tickets have been marked as checked out." -msgstr "De geselecteerde kaartjes zijn aangemerkt als ingecheckt." +msgstr "De geselecteerde tickets zijn gemarkeerd als uitgecheckt." #: pretix/control/views/checkin.py:285 msgid "The selected tickets have been marked as checked in." @@ -29915,109 +28234,85 @@ msgstr[0] "{num} bestelling" msgstr[1] "{num} bestellingen" #: pretix/control/views/datasync.py:82 pretix/control/views/datasync.py:113 -#, fuzzy -#| msgid "The voucher has been sent to {recipient}." msgid "The sync job has been set to run as soon as possible." -msgstr "De voucher is verstuurd naar {recipient}." +msgstr "" +"De synchronisatieopdracht is ingesteld om zo snel mogelijk te worden " +"uitgevoerd." #: pretix/control/views/datasync.py:90 pretix/control/views/datasync.py:104 -#, fuzzy -#| msgid "The voucher \"{voucher}\" has been used in the meantime." msgid "" "The sync job could not be found. It may have been processed in the meantime." -msgstr "De voucher \"{voucher}\" is in de tussentijd gebruikt." +msgstr "" +"De synchronisatietaak kon niet worden gevonden. Mogelijk is deze inmiddels " +"verwerkt." #: pretix/control/views/datasync.py:93 pretix/control/views/datasync.py:107 -#, fuzzy -#| msgid "The invoice has already been canceled." msgid "The sync job is already in progress." -msgstr "De factuur is al geannuleerd." +msgstr "De synchronisatie is al bezig." #: pretix/control/views/datasync.py:96 -#, fuzzy -#| msgid "The order has been canceled." msgid "The sync job has been canceled." -msgstr "De bestelling is geannuleerd." +msgstr "De synchronisatieopdracht is geannuleerd." #: pretix/control/views/datasync.py:144 -#, fuzzy -#| msgctxt "subevent" -#| msgid "The selected dates have been deleted or disabled." msgid "The selected jobs have been set to run as soon as possible." -msgstr "De geselecteerde datums zijn verwijderd of uitgeschakeld." +msgstr "" +"De geselecteerde taken zijn ingesteld om zo snel mogelijk te worden " +"uitgevoerd." #: pretix/control/views/datasync.py:147 -#, fuzzy -#| msgctxt "subevent" -#| msgid "The selected dates have been enabled." msgid "The selected jobs have been canceled." -msgstr "De geselecteerde datums zijn ingeschakeld." +msgstr "De geselecteerde taken zijn geannuleerd." #: pretix/control/views/discounts.py:67 pretix/control/views/discounts.py:109 #: pretix/control/views/discounts.py:214 -#, fuzzy -#| msgid "The requested list does not exist." msgid "The requested discount does not exist." -msgstr "De gevraagde lijst bestaat niet." +msgstr "De gevraagde korting bestaat niet." #: pretix/control/views/discounts.py:77 -#, fuzzy -#| msgid "The selected list has been deleted." msgid "The selected discount has been deleted." -msgstr "De gekozen lijst is verwijderd." +msgstr "De geselecteerde korting is verwijderd." #: pretix/control/views/discounts.py:85 -#, fuzzy -#| msgid "The selected product has been deactivated." msgid "The selected discount has been deactivated." -msgstr "Het gekozen product is uitgeschakeld." +msgstr "De geselecteerde korting is gedeactiveerd." #: pretix/control/views/discounts.py:176 -#, fuzzy -#| msgctxt "subevent" -#| msgid "The new date has been created." msgid "The new discount has been created." -msgstr "De nieuwe datum is aangemaakt." +msgstr "De nieuwe korting is aangemaakt." #: pretix/control/views/discounts.py:227 -#, fuzzy -#| msgid "The order of items has been updated." msgid "The order of discounts has been updated." -msgstr "De volgorde van items is bijgewerkt." +msgstr "De volgorde van kortingen is bijgewerkt." #: pretix/control/views/discounts.py:260 pretix/control/views/item.py:192 #: pretix/control/views/item.py:404 pretix/control/views/item.py:538 #: pretix/control/views/organizer.py:2571 #: pretix/control/views/organizer.py:3631 -#, fuzzy -#| msgid "Some of the provided question ids are invalid." msgid "Some of the provided object ids are invalid." -msgstr "Sommige van de opgegeven vraagnummers zijn ongeldig." +msgstr "Sommige van de verstrekte object-id's zijn ongeldig." #: pretix/control/views/discounts.py:263 -#, fuzzy -#| msgid "Not all questions have been selected." msgid "Not all discounts have been selected." -msgstr "Niet alle vragen zijn geselecteerd." +msgstr "Niet alle kortingen zijn geselecteerd." #: pretix/control/views/event.py:453 -#, fuzzy -#| msgid "You do not have permission to perform this action." msgid "" "You do not have sufficient permission to enable plugins that need to be " "enabled for the entire organizer account." -msgstr "Je hebt geen toestemming om deze actie uit te voeren." +msgstr "" +"Je hebt niet voldoende rechten om plug-ins in te schakelen die voor het hele " +"account van de organisator moeten worden ingeschakeld." #: pretix/control/views/event.py:472 pretix/control/views/organizer.py:714 #, python-brace-format msgid "The plugin {} is now active, you can configure it here:" -msgstr "" +msgstr "De plug-in {} is nu actief. Je kunt deze hier configureren:" #: pretix/control/views/event.py:481 pretix/control/views/organizer.py:723 -#, fuzzy, python-brace-format -#| msgid "The selected ticket shop is currently not available." +#, python-brace-format msgid "The plugin {} is now active." -msgstr "De geselecteerde kaartjeswinkel is op dit moment niet beschikbaar." +msgstr "De plug-in {} is nu actief." #: pretix/control/views/event.py:546 msgid "" @@ -30095,6 +28390,8 @@ msgid "" "Specifically, the following plugins still contain data depends on this " "event: {plugin_names}" msgstr "" +"Concreet bevatten de volgende plug-ins nog steeds gegevens die afhankelijk " +"zijn van dit evenement: {plugin_names}" #: pretix/control/views/event.py:1277 pretix/control/views/orders.py:779 msgid "The comment has been updated." @@ -30278,10 +28575,8 @@ msgstr "De volgorde van categorieën is bijgewerkt." #: pretix/control/views/item.py:407 pretix/control/views/item.py:541 #: pretix/control/views/organizer.py:2574 #: pretix/control/views/organizer.py:3634 -#, fuzzy -#| msgid "Not all questions have been selected." msgid "Not all objects have been selected." -msgstr "Niet alle vragen zijn geselecteerd." +msgstr "Niet alle objecten zijn geselecteerd." #: pretix/control/views/item.py:480 msgid "Street" @@ -30371,17 +28666,16 @@ msgstr "" "productbundel. Zolang dit zo is kan ook deze bundel niet gekocht worden." #: pretix/control/views/item.py:1626 -#, fuzzy -#| msgid "" -#| "The order could not be deleted as some constraints (e.g. data created by " -#| "plug-ins) do not allow it." 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 "" -"De bestelling kon niet worden verwijderd omdat sommige beperkingen (bijv. " -"data aangemaakt door plug-ins) het niet toestaan." +"Het product kon niet worden verwijderd omdat bepaalde beperkingen " +"(bijvoorbeeld gegevens die door plug-ins zijn aangemaakt) dit niet " +"toelieten. Het verwijderen ervan zou de rapportage of andere " +"functionaliteiten kunnen verstoren, dus is het product in plaats daarvan " +"uitgeschakeld." #: pretix/control/views/item.py:1630 msgid "The selected product has been deleted." @@ -30420,16 +28714,12 @@ msgstr "" "systeem op te nemen in het SPF-record." #: pretix/control/views/mailsetup.py:216 -#, fuzzy -#| msgid "The registration could not be completed. Please try again." msgid "The verification code was incorrect, please try again." -msgstr "De registratie kon niet worden voltooid. Probeer het opnieuw." +msgstr "De verificatiecode was onjuist, probeer het opnieuw." #: pretix/control/views/mailsetup.py:221 -#, fuzzy -#| msgid "Sender address" msgid "Sender address verification" -msgstr "Afzenderadres" +msgstr "Verificatie van het adres van de afzender" #: pretix/control/views/mailsetup.py:277 #, python-format @@ -30472,6 +28762,8 @@ msgid "" "We could not identify the character encoding of the CSV file. Some " "characters were replaced with a placeholder." msgstr "" +"We konden de tekencodering van het CSV-bestand niet identificeren. Sommige " +"tekens zijn vervangen door een tijdelijke aanduiding." #: pretix/control/views/modelimport.py:168 msgid "" @@ -30498,34 +28790,33 @@ msgid "" "generated. Please copy and save it right now as it will not be shown again: " "{secret}" msgstr "" +"Je aanvraag is aangemaakt en er is een geheime code gegenereerd. Kopieer en " +"bewaar deze nu meteen, want ze wordt niet nogmaals getoond: {secret}" #: pretix/control/views/oauth.py:107 -#, fuzzy, python-brace-format -#| msgid "" -#| "Your changes have been saved. Please note that it can take a short period " -#| "of time until your changes become active." +#, python-brace-format msgid "" "A new client secret has been generated. Please copy and save it right now as " "it will not be shown again: {secret}" msgstr "" -"Je wijzigingen zijn opgeslagen. Merk op dat het een korte tijd kan duren " -"voordat je wijzigingen zichtbaar zijn." +"Er is een nieuw klantgeheim gegenereerd. Kopieer en bewaar het nu meteen, " +"want het wordt niet nogmaals getoond: {secret}" #: pretix/control/views/oauth.py:169 msgid "Access for the selected application has been revoked." msgstr "De toegang voor de gekozen applicatie is ingetrokken." #: pretix/control/views/orders.py:198 -#, fuzzy -#| msgid "We could not save your changes. See below for details." msgid "We could not process your input. See below for details." -msgstr "We konden je wijzigingen niet opslaan. Zie hieronder voor details." +msgstr "We konden de invoer niet verwerken. Zie hieronder voor meer informatie." #: pretix/control/views/orders.py:271 #, python-brace-format msgid "" "Successfully executed the action \"{label}\" on {success} of {total} orders." msgstr "" +"De actie \"{label}\" is succesvol uitgevoerd op {success} van {total} " +"bestellingen." #: pretix/control/views/orders.py:688 pretix/presale/views/order.py:115 #: pretix/presale/views/order.py:383 pretix/presale/views/order.py:995 @@ -30637,12 +28928,14 @@ msgid "" "time. Please have a look at the order details and check if your refund is " "still necessary." msgstr "" +"De terugbetaling werd verhinderd omdat er op hetzelfde moment al een " +"terugbetaling in behandeling was. Bekijk de bestelgegevens en controleer of " +"de terugbetaling nog steeds nodig is." #: pretix/control/views/orders.py:1268 -#, fuzzy -#| msgid "You entered an order that could not be found." msgid "You entered an order in an event with a different currency." -msgstr "Je voerde een bestelling in die niet kon worden gevonden." +msgstr "" +"Je hebt een bestelling geplaatst in een evenement met een andere valuta." #: pretix/control/views/orders.py:1319 msgid "" @@ -30750,13 +29043,10 @@ msgid "No country specified." msgstr "Geen land opgegeven." #: pretix/control/views/orders.py:1644 -#, 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 "" -"Btw-nummer kon niet worden gecontroleerd, omdat een land van buiten de EU " -"was opgegeven." +"Het btw-nummer kon niet worden gecontroleerd omdat dit land niet wordt " +"ondersteund." #: pretix/control/views/orders.py:1655 msgid "" @@ -30777,27 +29067,23 @@ msgstr "Onbekende factuur." #: pretix/control/views/orders.py:1675 msgid "Invoices may not be changed after they are created." -msgstr "" +msgstr "Facturen kunnen niet worden gewijzigd nadat ze zijn aangemaakt." #: pretix/control/views/orders.py:1677 msgid "Invoices may not be changed after they are transmitted." -msgstr "" +msgstr "Facturen kunnen niet meer worden gewijzigd nadat ze zijn verzonden." #: pretix/control/views/orders.py:1679 pretix/control/views/orders.py:1741 msgid "The invoice has already been canceled." msgstr "De factuur is al geannuleerd." #: pretix/control/views/orders.py:1681 -#, fuzzy -#| msgid "The invoice has already been canceled." msgid "The invoice file has already been exported." -msgstr "De factuur is al geannuleerd." +msgstr "Het factuurbestand is al geëxporteerd." #: pretix/control/views/orders.py:1683 -#, fuzzy -#| msgid "The invoice has been regenerated." msgid "The invoice file is too old to be regenerated." -msgstr "De factuur is opnieuw gegenereerd." +msgstr "Het factuurbestand is te oud om opnieuw te worden gegenereerd." #: pretix/control/views/orders.py:1685 pretix/control/views/orders.py:1743 msgid "The invoice has been cleaned of personal data." @@ -30808,18 +29094,16 @@ msgid "" "The invoice is currently being transmitted. You can start a new attempt " "after the current one has been completed." msgstr "" +"De factuur wordt momenteel verzonden. Je kunt een nieuwe poging starten " +"nadat de huidige is voltooid." #: pretix/control/views/orders.py:1717 -#, fuzzy -#| msgid "The invoice has been cleaned of personal data." msgid "The invoice has been scheduled for retransmission." -msgstr "Persoonlijke gegevens zijn uit de factuur verwijderd." +msgstr "De factuur is gepland voor herverzending." #: pretix/control/views/orders.py:1751 -#, fuzzy -#| msgid "The invoice has already been canceled." msgid "The invoice has been canceled." -msgstr "De factuur is al geannuleerd." +msgstr "De factuur is geannuleerd." #: pretix/control/views/orders.py:1794 msgid "The email has been queued to be sent." @@ -30926,12 +29210,12 @@ msgstr "" "Er was een probleem met het verwerken van je invoer. Zie onder voor details." #: pretix/control/views/orders.py:2805 pretix/control/views/organizer.py:2126 -#, fuzzy -#| msgid "You do not have permission to perform this action." msgid "" "Your user account does not have sufficient permission to run this report, " "therefore you cannot schedule it." -msgstr "Je hebt geen toestemming om deze actie uit te voeren." +msgstr "" +"Je gebruikersaccount heeft onvoldoende rechten om dit rapport uit te voeren, " +"daarom kun je het niet plannen." #: pretix/control/views/orders.py:2821 pretix/control/views/organizer.py:2142 #, python-brace-format @@ -30939,16 +29223,16 @@ msgid "" "Your export schedule has been saved. The next export will start around " "{datetime}." msgstr "" +"Je exportschema is opgeslagen. De volgende export start rond {datetime}." #: pretix/control/views/orders.py:2826 pretix/control/views/organizer.py:2147 msgid "Your export schedule has been saved, but no next export is planned." -msgstr "" +msgstr "Je exportschema is opgeslagen, maar er is geen volgende export gepland." #: pretix/control/views/orders.py:2871 pretix/control/views/organizer.py:2193 -#, fuzzy, python-brace-format -#| msgid "Export date" +#, python-brace-format msgid "Export: {title}" -msgstr "Exportdatum" +msgstr "Exporteren: {title}" #: pretix/control/views/orders.py:2872 pretix/control/views/organizer.py:2195 #, python-brace-format @@ -30957,6 +29241,9 @@ msgid "" "\n" "attached to this email, you can find a new scheduled report for {name}." msgstr "" +"Hallo,\n" +"\n" +"Bij deze e-mail vind je een nieuw gepland rapport voor {name}." #: pretix/control/views/orders.py:2945 pretix/control/views/organizer.py:2272 msgid "" @@ -30964,6 +29251,9 @@ msgid "" "Depending on system load and type and size of export, this may take a few " "minutes." msgstr "" +"Je export staat in de wachtrij en wordt binnenkort gestart. De resultaten " +"worden per e-mail verzonden. Afhankelijk van de systeembelasting, het type " +"en de omvang van de export kan dit enkele minuten duren." #: pretix/control/views/orders.py:3032 pretix/control/views/orders.py:3113 msgid "All orders have been canceled." @@ -31008,6 +29298,8 @@ msgid "" "The following database models still contain data that cannot be deleted " "automatically: {affected_models}" msgstr "" +"De volgende databasemodellen bevatten nog steeds gegevens die niet " +"automatisch kunnen worden verwijderd: {affected_models}" #: pretix/control/views/organizer.py:580 msgid "The new organizer has been created." @@ -31018,22 +29310,17 @@ msgid "Administrators" msgstr "Beheerders" #: pretix/control/views/organizer.py:804 -#, fuzzy -#| msgid "Unknown plugin: '{name}'." msgid "Unknown plugin." -msgstr "Onbekende plug-in: '{name}'." +msgstr "Onbekende plug-in." #: pretix/control/views/organizer.py:810 -#, fuzzy -#| msgid "The selected ticket shop is currently not available." msgid "This plugin is currently not active on the organizer account." -msgstr "De geselecteerde kaartjeswinkel is op dit moment niet beschikbaar." +msgstr "" +"Deze plug-in is momenteel niet actief op het account van de organisator." #: pretix/control/views/organizer.py:814 -#, fuzzy -#| msgid "A payment is currently pending for this order." msgid "This plugin is currently not allowed for this organizer account." -msgstr "Een betaling staat momenteel open voor deze bestelling." +msgstr "Deze plug-in is momenteel niet toegestaan voor dit organisatoraccount." #: pretix/control/views/organizer.py:903 msgid "The team has been created. You can now add members to the team." @@ -31069,18 +29356,16 @@ msgid "" "The team could not be deleted because the team or one of its API tokens is " "part of historical audit logs." msgstr "" +"Het team kon niet worden verwijderd omdat het team of een van de API-tokens " +"ervan deel uitmaakt van historische auditlogboeken." #: pretix/control/views/organizer.py:1003 -#, fuzzy -#| msgid "" -#| "The event could not be deleted as some constraints (e.g. data created by " -#| "plug-ins) do not allow it." msgid "" "The team could not be deleted as some constraints (e.g. data created by plug-" "ins) do not allow it." msgstr "" -"Het evenement kon niet worden verwijderd omdat sommige beperkingen (bijv. " -"data aangemaakt door plug-ins) het niet toestaan." +"Het team kon niet worden verwijderd omdat bepaalde beperkingen (bijvoorbeeld " +"gegevens die door plug-ins zijn aangemaakt) dit niet toestaan." #: pretix/control/views/organizer.py:1009 msgid "The selected team has been deleted." @@ -31161,29 +29446,25 @@ msgid "" "All requests will now be scheduled for an immediate attempt. Please allow " "for a few minutes before they are processed." msgstr "" +"Alle verzoeken worden nu gepland voor een onmiddellijke poging. Het kan " +"enkele minuten duren voordat ze worden verwerkt." #: pretix/control/views/organizer.py:1646 msgid "All unprocessed webhooks have been stopped from retrying." -msgstr "" +msgstr "Alle onverwerkte webhooks zijn gestopt met opnieuw proberen." #: pretix/control/views/organizer.py:1678 -#, fuzzy -#| msgid "The selected organizer was not found." msgid "The selected organizer has been invited." -msgstr "De gekozen organisator kon niet worden gevonden." +msgstr "De geselecteerde organisator is uitgenodigd." #: pretix/control/views/organizer.py:1715 #: pretix/control/views/organizer.py:1726 -#, fuzzy -#| msgid "The selected gift card issuer has been removed." msgid "The selected connection has been removed." -msgstr "De gekozen cadeaukaartuitgever is verwijderd." +msgstr "De geselecteerde verbinding is verwijderd." #: pretix/control/views/organizer.py:1737 -#, fuzzy -#| msgid "The selected question has been deleted." msgid "The selected connection has been accepted." -msgstr "De gekozen vraag is verwijderd." +msgstr "De geselecteerde verbinding is geaccepteerd." #: pretix/control/views/organizer.py:1795 #: pretix/control/views/organizer.py:1832 @@ -31212,7 +29493,7 @@ msgstr "De cadeaubon is aangemaakt en kan nu worden gebruikt." #: pretix/control/views/organizer.py:1983 msgid "All events (that I have access to)" -msgstr "" +msgstr "Alle evenementen (waar ik toegang toe heb)" #: pretix/control/views/organizer.py:2379 msgid "The selected gate has been deleted." @@ -31225,22 +29506,16 @@ msgstr "" "waarden staat." #: pretix/control/views/organizer.py:2449 -#, fuzzy -#| msgid "The product has been created." msgid "The property has been created." -msgstr "Het product is aangemaakt." +msgstr "De eigenschap is aangemaakt." #: pretix/control/views/organizer.py:2516 -#, fuzzy -#| msgid "The selected product has been deleted." msgid "The selected property has been deleted." -msgstr "Het gekozen product is verwijderd." +msgstr "De geselecteerde eigenschap is verwijderd." #: pretix/control/views/organizer.py:2540 -#, fuzzy -#| msgid "The order of items has been updated." msgid "The order of properties has been updated." -msgstr "De volgorde van items is bijgewerkt." +msgstr "De volgorde van de eigenschappen is bijgewerkt." #: pretix/control/views/organizer.py:2719 #: pretix/control/views/organizer.py:2835 @@ -31250,10 +29525,8 @@ msgid "The selected object has been deleted." msgstr "Het geselecteerde object is verwijderd." #: pretix/control/views/organizer.py:2754 -#, fuzzy -#| msgid "The order has been created." msgid "The provider has been created." -msgstr "De bestelling is aangemaakt." +msgstr "De provider is aangemaakt." #: pretix/control/views/organizer.py:2874 #, python-brace-format @@ -31261,62 +29534,49 @@ msgid "" "The SSO client has been created. Please note down the following client " "secret, it will never be shown again: {secret}" msgstr "" +"De SSO-client is aangemaakt. Noteer het volgende clientgeheim, het wordt " +"nooit meer weergegeven: {secret}" #: pretix/control/views/organizer.py:2924 -#, fuzzy, python-brace-format -#| msgid "" -#| "Your changes have been saved. Please note that it can take a short period " -#| "of time until your changes become active." +#, python-brace-format msgid "" "Your changes have been saved. Please note down the following client secret, " "it will never be shown again: {secret}" msgstr "" -"Je wijzigingen zijn opgeslagen. Merk op dat het een korte tijd kan duren " -"voordat je wijzigingen zichtbaar zijn." +"Je wijzigingen zijn opgeslagen. Noteer het volgende clientgeheim, het wordt " +"nooit meer weergegeven: {secret}" #: pretix/control/views/organizer.py:3033 -#, fuzzy -#| msgid "We sent out an email containing further instructions." msgid "" "We've sent the customer an email with further instructions on resetting your " "password." -msgstr "We hebben een e-mail met verdere instructies verstuurd." +msgstr "" +"We hebben de klant een e-mail gestuurd met verdere instructies voor het " +"opnieuw instellen van je wachtwoord." #: pretix/control/views/organizer.py:3298 -#, fuzzy -#| msgid "This user has been anonymized." msgid "The customer account has been anonymized." -msgstr "De gebruiker is geanonimiseerd." +msgstr "Het klantenaccount is geanonimiseerd." #: pretix/control/views/organizer.py:3568 -#, fuzzy -#| msgid "This organizer can not be deleted." msgid "This channel can not be deleted." -msgstr "Deze organisator kan niet worden verwijderd." +msgstr "Dit kanaal kan niet worden verwijderd." #: pretix/control/views/organizer.py:3573 -#, fuzzy -#| msgid "The selected list has been deleted." msgid "The selected sales channel has been deleted." -msgstr "De gekozen lijst is verwijderd." +msgstr "Het geselecteerde verkoopkanaal is verwijderd." #: pretix/control/views/organizer.py:3575 -#, fuzzy -#| msgid "" -#| "The event could not be deleted as some constraints (e.g. data created by " -#| "plug-ins) do not allow it." msgid "" "The channel could not be deleted as some constraints (e.g. data created by " "plug-ins) did not allow it." msgstr "" -"Het evenement kon niet worden verwijderd omdat sommige beperkingen (bijv. " -"data aangemaakt door plug-ins) het niet toestaan." +"Het kanaal kon niet worden verwijderd omdat bepaalde beperkingen " +"(bijvoorbeeld gegevens die door plug-ins zijn aangemaakt) dit niet toelieten." #: pretix/control/views/organizer.py:3600 -#, fuzzy -#| msgid "The order of items has been updated." msgid "The order of sales channels has been updated." -msgstr "De volgorde van items is bijgewerkt." +msgstr "De volgorde van de verkoopkanalen is bijgewerkt." #: pretix/control/views/pdf.py:85 msgid "The uploaded PDF file is too large." @@ -31333,7 +29593,7 @@ 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 konden we dit PDF-bestand niet verwerken ({reason})." #: pretix/control/views/shredder.py:162 msgid "The selected data was deleted successfully." @@ -31351,17 +29611,14 @@ msgstr "" "Een datum kan niet worden verwijderd als er al bestellingen zijn geplaatst." #: pretix/control/views/subevents.py:203 -#, fuzzy -#| msgid "" -#| "The event could not be deleted as some constraints (e.g. data created by " -#| "plug-ins) do not allow it." msgctxt "subevent" 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 "" -"Het evenement kon niet worden verwijderd omdat sommige beperkingen (bijv. " -"data aangemaakt door plug-ins) het niet toestaan." +"De datum kon niet worden verwijderd omdat bepaalde beperkingen (bijvoorbeeld " +"gegevens die door plug-ins zijn aangemaakt) dit niet toelieten. De datum " +"werd in plaats daarvan uitgeschakeld." #: pretix/control/views/subevents.py:207 msgctxt "subevent" @@ -31390,7 +29647,7 @@ 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 "Maak niet meer dan 100.000 data tegelijk aan." #: pretix/control/views/subevents.py:1054 #, python-brace-format @@ -31466,10 +29723,8 @@ msgstr "" "je telefoon kloppen als dit probleem aanhoudt." #: pretix/control/views/user.py:571 -#, fuzzy -#| msgid "Do you really want to enable two-factor authentication?" msgid "You have left all teams that require two-factor authentication." -msgstr "Wil je echt twee-factor-authenticatie inschakelen?" +msgstr "Je hebt alle teams verlaten die tweefactorauthenticatie vereisen." #: pretix/control/views/user.py:585 msgid "" @@ -31507,10 +29762,8 @@ msgid "Your comment has been saved." msgstr "Je commentaar is opgeslagen." #: pretix/control/views/user.py:905 -#, fuzzy -#| msgid "Your cart has been updated." msgid "Your email address was already verified." -msgstr "Je winkelwagen is bijgewerkt." +msgstr "Je e-mailadres is al geverifieerd." #: pretix/control/views/user.py:927 #, python-brace-format @@ -31518,34 +29771,24 @@ 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:947 -#, fuzzy -#| msgid "" -#| "We were not able to process your request completely as the server was too " -#| "busy. Please try again." msgid "We were unable to verify your confirmation code. Please try again." -msgstr "" -"We konden je verzoek niet verwerken omdat de server overbelast was. Probeer " -"het opnieuw." +msgstr "We konden je bevestigingscode niet verifiëren. Probeer het opnieuw." #: pretix/control/views/user.py:972 -#, fuzzy -#| msgid "Your email address has been changed to {email}." msgid "Your email address has been changed successfully." -msgstr "Je e-mailadres is veranderd naar {email}." +msgstr "Je e-mailadres is succesvol gewijzigd." #: pretix/control/views/user.py:974 -#, fuzzy -#| msgid "Your email address has been changed to {email}." msgid "Your email address has been confirmed successfully." -msgstr "Je e-mailadres is veranderd naar {email}." +msgstr "Je e-mailadres is succesvol bevestigd." #: pretix/control/views/user.py:978 -#, fuzzy -#| msgid "The registration could not be completed. Please try again." msgid "The entered confirmation code is not correct. Please try again." -msgstr "De registratie kon niet worden voltooid. Probeer het opnieuw." +msgstr "De ingevoerde bevestigingscode is niet correct. Probeer het opnieuw." #: pretix/control/views/users.py:150 msgid "We sent out an email containing further instructions." @@ -31557,6 +29800,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 tweefactorauthenticatie gegenereerd door een " +"systeembeheerder. Dit gebeurt meestal als je geen toegang meer hebt tot je " +"inloggegevens voor tweefactorauthenticatie en hebt gevraagd om deze te " +"resetten." #: pretix/control/views/users.py:174 #, python-brace-format @@ -31566,6 +29813,10 @@ msgid "" "(other than email, if possible). Any previous emergency tokens for this user " "remain active." msgstr "" +"De noodtoken voor deze gebruiker is \"{token}\". Deze kan slechts één keer " +"worden gebruikt. Zorg ervoor dat je deze code alleen via een geauthenticeerd " +"kanaal verzendt (indien mogelijk niet via e-mail). Eerdere noodtokens voor " +"deze gebruiker blijven actief." #: pretix/control/views/users.py:318 msgid "The new user has been created." @@ -31589,10 +29840,8 @@ msgid "The requested voucher does not exist." msgstr "De gevraagde voucher bestaat niet." #: pretix/control/views/vouchers.py:218 -#, fuzzy -#| msgid "The selected gift card issuer has been removed." msgid "The selected cart positions have been removed." -msgstr "De gekozen cadeaukaartuitgever is verwijderd." +msgstr "De geselecteerde winkelwagenposities zijn verwijderd." #: pretix/control/views/vouchers.py:244 pretix/control/views/vouchers.py:254 msgid "A voucher can not be deleted if it already has been redeemed." @@ -31626,10 +29875,8 @@ msgid "{num} vouchers have been created and sent out via email." msgstr "{num} vouchers zijn aangemaakt en verstuurd via email." #: pretix/control/views/waitinglist.py:172 -#, fuzzy -#| msgid "The selected entry has been deleted." msgid "The selected entries have been deleted." -msgstr "De gekozen inschrijving is verwijderd." +msgstr "De geselecteerde items zijn verwijderd." #: pretix/control/views/waitinglist.py:185 msgid "" @@ -31671,73 +29918,57 @@ msgid "This is not an event series." msgstr "Dit is geen evenementenreeks." #: pretix/control/views/waitinglist.py:410 -#, fuzzy -#| msgid "The waiting list entry has been moved to the top." msgid "The waitinglist entry has been transferred." -msgstr "De wachtlijstinschrijving is verplaatst naar het begin van de lijst." +msgstr "De wachtlijstvermelding is overgedragen." #: pretix/helpers/countries.py:134 msgid "Belarus" -msgstr "" +msgstr "Wit-Rusland" #: pretix/helpers/countries.py:135 -#, fuzzy -#| msgid "French" msgid "French Guiana" -msgstr "Frans" +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 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:47 #: pretix/presale/templates/pretixpresale/organizers/index.html:71 -#, fuzzy -#| msgid "Date until" msgctxt "timerange" msgid "until" -msgstr "Datum tot" +msgstr "tot" #: pretix/helpers/images.py:61 pretix/helpers/images.py:67 #: pretix/helpers/images.py:85 -#, fuzzy -#| msgid "" -#| "The file you uploaded has a very large number of pixels, please upload an " -#| "image no larger than 10000 x 10000 pixels." msgid "" "The file you uploaded has a very large number of pixels, please upload a " "picture with smaller dimensions." msgstr "" -"Het bestand dat je uploadde heeft een te hoge resolutie. De maximale " -"toegestane resolutie is 10000 x 10000 pixels." +"Het bestand dat je hebt geüpload heeft een zeer groot aantal pixels. Upload " +"een afbeelding met kleinere afmetingen." #: pretix/helpers/payment.py:124 msgid "Open BezahlCode in your banking app to start the payment process." -msgstr "" +msgstr "Open BezahlCode in je bankapp om het betalingsproces te starten." #: pretix/helpers/security.py:166 -#, fuzzy -#| msgid "No order code detected" msgid "Login from new source detected" -msgstr "Geen bestelcode gevonden" +msgstr "Inloggen vanaf nieuwe bron gedetecteerd" #: pretix/helpers/security.py:170 -#, fuzzy -#| msgid "Unknown country code." msgid "Unknown country" -msgstr "Onbekende landcode." +msgstr "Onbekend land" #: pretix/multidomain/models.py:36 -#, fuzzy -#| msgid "Organizer name" msgid "Organizer domain" -msgstr "Naam van de organisator" +msgstr "Domein van de organisator" #: pretix/multidomain/models.py:37 #, fuzzy @@ -31783,7 +30014,7 @@ msgstr "het pretix-team" #: pretix/plugins/autocheckin/apps.py:39 msgid "Automatically check-in specific tickets after they have been sold." -msgstr "" +msgstr "Specifieke tickets automatisch inchecken nadat ze zijn verkocht." #: pretix/plugins/autocheckin/apps.py:42 pretix/plugins/webcheckin/apps.py:40 #: pretix/plugins/webcheckin/templates/pretixplugins/webcheckin/index.html:10 @@ -31817,6 +30048,8 @@ msgid "" "When restricting by payment method, the rule should run after the payment " "was received." msgstr "" +"Bij beperking op basis van betaalmethode moet de regel worden uitgevoerd " +"nadat de betaling is ontvangen." #: pretix/plugins/autocheckin/models.py:36 #, fuzzy @@ -31835,6 +30068,8 @@ msgid "" "If you keep this empty, all lists that match the purchased product will be " "used." msgstr "" +"Als je dit veld leeg laat, worden alle lijsten gebruikt die overeenkomen met " +"het gekochte product." #: pretix/plugins/autocheckin/models.py:59 #, fuzzy @@ -31962,6 +30197,9 @@ msgid "" "download the badges in the backend or automatically print them with our " "check-in apps." msgstr "" +"Genereer automatisch badges of naamkaartjes voor de deelnemers. Je kunt de " +"badges downloaden in de backend of ze automatisch afdrukken met onze check-" +"in-apps." #: pretix/plugins/badges/exporters.py:89 msgid "One badge per page" @@ -31999,7 +30237,7 @@ msgstr "PDF-verzamelingen" #: pretix/plugins/badges/exporters.py:423 msgid "Download all attendee badges as one large PDF for printing." -msgstr "" +msgstr "Download alle deelnemersbadges als één grote PDF om af te drukken." #: pretix/plugins/badges/exporters.py:444 #: pretix/plugins/ticketoutputpdf/exporters.py:80 @@ -32081,6 +30319,9 @@ msgid "" "invalid values in your databases, such as answers to number questions which " "are not a number." msgstr "" +"Je gegevens konden niet worden geconverteerd zoals gevraagd. Dit kan worden " +"veroorzaakt door ongeldige waarden in de databases, zoals antwoorden op " +"numerieke vragen die geen getal zijn." #: pretix/plugins/badges/forms.py:33 msgid "Template" @@ -32091,6 +30332,8 @@ msgid "" "You can modify the layout or change to a different page size in the next " "step." msgstr "" +"Je kunt de lay-out aanpassen of naar een ander paginaformaat overschakelen " +"in de volgende stap." #: pretix/plugins/badges/forms.py:51 msgid "(Do not print badges)" @@ -32121,24 +30364,24 @@ 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 butterflybadge" #: pretix/plugins/badges/templates.py:203 #: pretix/plugins/badges/templates.py:208 @@ -32154,7 +30397,7 @@ 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 @@ -32224,6 +30467,8 @@ msgid "" "Accept payments from your customers using classical wire transfer methods " "with your own bank account." msgstr "" +"Accepteer betalingen van je klanten via klassieke overschrijvingsmethoden " +"met je eigen bankrekening." #: pretix/plugins/banktransfer/apps.py:46 #: pretix/plugins/banktransfer/signals.py:56 @@ -32286,6 +30531,8 @@ msgid "" "Please note: special characters other than letters, numbers, and some " "punctuation can cause problems with some banks." msgstr "" +"Let op: speciale tekens die geen letters, cijfers of bepaalde leestekens " +"zijn, kunnen bij sommige banken problemen veroorzaken." #: pretix/plugins/banktransfer/payment.py:97 #: pretix/plugins/banktransfer/payment.py:302 @@ -32400,6 +30647,8 @@ msgid "" "Only allow choosing this payment provider for customers who enter an invoice " "address and select \"Business or institutional customer\"." msgstr "" +"Sta alleen klanten die een factuuradres invoeren en 'Zakelijke of " +"institutionele klant' selecteren toe om deze betalingsprovider te kiezen." #: pretix/plugins/banktransfer/payment.py:239 msgid "Please fill out your bank account details." @@ -32492,7 +30741,7 @@ msgstr "De bestelling is al geannuleerd." #: pretix/plugins/banktransfer/views.py:100 #: pretix/plugins/banktransfer/views.py:187 msgid "Currencies do not match." -msgstr "" +msgstr "Valuta's komen niet overeen." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/checkout_payment_form.html:6 msgid "" @@ -32719,7 +30968,7 @@ 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 zijn geen verdere acties vereist op deze website." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/pending.html:35 #: pretix/plugins/stripe/templates/pretixplugins/stripe/pending.html:31 @@ -33036,6 +31285,8 @@ msgid "" "Download a PDF version of a check-in list that can be used to check people " "in at the event without digital methods." msgstr "" +"Download een PDF-versie van een check-in-lijst die kan worden gebruikt om " +"mensen bij het evenement in te checken zonder digitale methoden." #. Translators: maximum 5 characters #: pretix/plugins/checkinlists/exporters.py:374 @@ -33048,6 +31299,7 @@ msgid "" "Download a spreadsheet with all attendees that are included in a check-in " "list." msgstr "" +"Download een spreadsheet met alle deelnemers die op de check-in-lijst staan." #: pretix/plugins/checkinlists/exporters.py:501 msgid "Checked out" @@ -33076,6 +31328,9 @@ msgid "" "Download a spreadsheet with all valid check-in barcodes e.g. for import into " "a different system. Does not included blocked codes or personal data." msgstr "" +"Download een spreadsheet met alle geldige check-in-streepjescodes, " +"bijvoorbeeld om te importeren in een ander systeem. Bevat geen geblokkeerde " +"codes of persoonlijke gegevens." #: pretix/plugins/checkinlists/exporters.py:744 #, fuzzy @@ -33088,6 +31343,8 @@ msgid "" "Download a spreadsheet with one line for every scan that happened at your " "check-in stations." msgstr "" +"Download een spreadsheet met één regel voor elke scan die bij je check-in-" +"stations heeft plaatsgevonden." #: pretix/plugins/checkinlists/exporters.py:766 #, fuzzy @@ -33105,10 +31362,8 @@ msgid "Error message" msgstr "Foutmelding" #: pretix/plugins/checkinlists/exporters.py:772 -#, fuzzy -#| msgid "Download date" msgid "Upload date" -msgstr "Downloaddatum" +msgstr "Uploaddatum" #: pretix/plugins/checkinlists/exporters.py:773 msgid "Upload time" @@ -33119,7 +31374,7 @@ msgstr "Uploadtijd" #: pretix/presale/templates/pretixpresale/fragment_modals.html:52 #: pretix/presale/templates/pretixpresale/fragment_modals.html:148 msgid "OK" -msgstr "" +msgstr "oké" #: pretix/plugins/checkinlists/exporters.py:862 msgid "Successful scans only" @@ -33147,6 +31402,8 @@ msgid "" "Accept payments with your PayPal account. PayPal is one of the most popular " "payment methods world-wide." msgstr "" +"Accepteer betalingen met je PayPal-account. PayPal is wereldwijd een van de " +"populairste betaalmethoden." #: pretix/plugins/paypal/payment.py:92 pretix/plugins/paypal2/payment.py:377 msgid "" @@ -33362,6 +31619,11 @@ msgid "" "even need a PayPal account. PayPal is one of the most popular payment " "methods world-wide." msgstr "" +"Accepteer betalingen met je PayPal-rekening. Naast reguliere PayPal-" +"betalingen kun je klanten nu ook verschillende lokale betaalmethoden " +"aanbieden, zoals eps, iDEAL en nog veel meer. Ze hebben hiervoor zelfs geen " +"PayPal-rekening nodig. PayPal is wereldwijd een van de populairste " +"betaalmethoden." #: pretix/plugins/paypal2/payment.py:100 #, fuzzy @@ -33375,6 +31637,9 @@ msgid "" "have the option to revert back to paying with their PayPal account. For this " "reason, this payment method is always active." msgstr "" +"Zelfs als een klant een alternatieve betaalmethode kiest, heeft hij altijd " +"de mogelijkheid om terug te keren naar betalen met zijn PayPal-account. Om " +"deze reden is deze betaalmethode altijd actief." #: pretix/plugins/paypal2/payment.py:150 #, fuzzy @@ -33391,10 +31656,15 @@ msgid "" "shoppers location. For German merchants, this is the direct successor of " "PayPal Plus." msgstr "" +"Naast betalingen via een PayPal-rekening kun je klanten ook de mogelijkheid " +"bieden om te betalen met creditcards en andere lokale betaalmethoden, zoals " +"eps, iDEAL en nog veel meer, zelfs als ze geen PayPal-rekening hebben. De " +"beschikbare betaalmethoden worden bepaald op basis van de locatie van de " +"klant. Voor Duitse verkopers is dit de directe opvolger van PayPal Plus." #: pretix/plugins/paypal2/payment.py:167 msgid "Disable SEPA Direct Debit" -msgstr "" +msgstr "SEPA-incasso uitschakelen" #: pretix/plugins/paypal2/payment.py:169 msgid "" @@ -33404,10 +31674,16 @@ msgid "" "nature of your event - you might want to disabled the option of SEPA Direct " "Debit payments in order to reduce the risk of costly chargebacks." msgstr "" +"Hoewel de meeste betaalmethoden niet door een klant kunnen worden " +"teruggedraaid zonder dat deze zijn exacte klacht bij de handelaar uiteenzet, " +"kan SEPA-incasso met één druk op de knop worden teruggedraaid. Om die reden " +"– en afhankelijk van de aard van je evenement – kun je overwegen om de optie " +"voor SEPA-incassobetalingen uit te schakelen om het risico op kostbare " +"terugboekingen te verminderen." #: pretix/plugins/paypal2/payment.py:183 msgid "Enable Buy Now Pay Later" -msgstr "" +msgstr "Nu kopen, later betalen inschakelen" #: pretix/plugins/paypal2/payment.py:185 msgid "" @@ -33415,6 +31691,9 @@ msgid "" "pay in multiple installments or within 30 days. You, as the merchant, are " "getting your money right away." msgstr "" +"Bied je klanten de mogelijkheid om nu te kopen (tot een bepaald maximum) en " +"in meerdere termijnen of binnen 30 dagen te betalen. Jij, als handelaar, " +"ontvangt je geld direct." #: pretix/plugins/paypal2/payment.py:217 #, fuzzy @@ -33496,6 +31775,10 @@ msgid "" "again, there is a high chance of the payment succeeding on a second or third " "attempt. You can also try other payment methods, if available." msgstr "" +"Je betaling is mislukt vanwege een bekend probleem binnen PayPal. Probeer " +"het nog eens, de kans is groot dat de betaling bij een tweede of derde " +"poging wel slaagt. Je kunt ook andere betaalmethoden proberen, indien " +"beschikbaar." #: pretix/plugins/paypal2/payment.py:477 pretix/plugins/paypal2/payment.py:1027 #, fuzzy @@ -33515,6 +31798,9 @@ msgid "" "Refunding the amount via PayPal failed: The original payment does not " "contain the required information to issue an automated refund." msgstr "" +"Het terugbetalen van het bedrag via PayPal is mislukt: de oorspronkelijke " +"betaling bevat niet de vereiste informatie om een automatische terugbetaling " +"uit te voeren." #: pretix/plugins/paypal2/payment.py:1104 #, fuzzy @@ -33604,6 +31890,8 @@ msgid "" "This is not the BN-code, but rather the ID of the merchant account which " "holds branding information for ISU." msgstr "" +"Dit is niet de BN-code, maar het ID van de merchant account die " +"brandinginformatie voor ISU bevat." #: pretix/plugins/paypal2/signals.py:95 #, fuzzy @@ -33613,7 +31901,7 @@ msgstr "PayPal Connect-endpoint" #: pretix/plugins/paypal2/templates/pretixplugins/paypal2/checkout_payment_confirm.html:9 msgid "Almost done …" -msgstr "" +msgstr "Bijna klaar…" #: pretix/plugins/paypal2/templates/pretixplugins/paypal2/checkout_payment_confirm.html:12 #, fuzzy @@ -33623,24 +31911,30 @@ msgstr "Controleer de onderstaande gegevens en bevestig je bestelling." #: pretix/plugins/paypal2/templates/pretixplugins/paypal2/checkout_payment_confirm.html:15 msgid "We will then charge your PayPal account and finalize the order." -msgstr "" +msgstr "We zullen dan je PayPal-rekening belasten en de bestelling afronden." #: pretix/plugins/paypal2/templates/pretixplugins/paypal2/checkout_payment_confirm.html:27 msgid "" "After placing your order, you will be able to select your desired payment " "method, including PayPal." msgstr "" +"Nadat je je bestelling hebt geplaatst, kun je de gewenste betaalmethode " +"selecteren, waaronder PayPal." #: pretix/plugins/paypal2/templates/pretixplugins/paypal2/checkout_payment_form.html:5 msgid "" "A PayPal account is required to use this online payment method. Please keep " "your account information ready to enter in the next step." msgstr "" +"Om deze online betaalmethode te kunnen gebruiken, heb je een PayPal-account " +"nodig. Houd je accountgegevens bij de hand om ze in de volgende stap in te " +"voeren." #: pretix/plugins/paypal2/templates/pretixplugins/paypal2/checkout_payment_form.html:9 msgid "" "Please click the \"Pay with PayPal\" button below to start your payment." msgstr "" +"Klik op de knop 'Betalen met PayPal' hieronder om je betaling te starten." #: pretix/plugins/paypal2/templates/pretixplugins/paypal2/checkout_payment_form.html:13 #, fuzzy @@ -33663,6 +31957,9 @@ msgid "" "fail. If your payment fails, please just try again. You can also try with a " "different payment method, if you prefer." msgstr "" +"Er is momenteel een bekend probleem met PayPal waardoor sommige betalingen " +"mislukken. Als je betaling mislukt, probeer het dan gewoon nog eens. Je kunt " +"ook een andere betaalmethode proberen, als je dat liever hebt." #: pretix/plugins/paypal2/templates/pretixplugins/paypal2/control.html:24 #, fuzzy @@ -33675,6 +31972,9 @@ msgid "" "This payment is being reviewed by PayPal. Until the review is lifted, the " "money will not be disbursed and the order remain in its pending state." msgstr "" +"Deze betaling wordt momenteel gecontroleerd door PayPal. Totdat de controle " +"is afgerond, wordt het geld niet uitbetaald en blijft de bestelling in " +"behandeling." #: pretix/plugins/paypal2/templates/pretixplugins/paypal2/pay.html:5 #: pretix/plugins/stripe/templates/pretixplugins/stripe/sca.html:5 @@ -33776,6 +32076,8 @@ msgstr "Accountinformatie gewijzigd" msgid "" "Download a PDF report of all sales and payments within a given time frame." msgstr "" +"Download een PDF-rapport van alle verkopen en betalingen binnen een bepaald " +"tijdsbestek." #: pretix/plugins/reports/accountingreport.py:63 #: pretix/plugins/reports/exporters.py:256 @@ -33798,7 +32100,7 @@ msgstr "Evenementenreeks: datum toegevoegd" #: pretix/plugins/reports/accountingreport.py:140 msgid "Report includes test orders which may be deleted later!" -msgstr "" +msgstr "Het rapport bevat testopdrachten die later kunnen worden verwijderd!" #: pretix/plugins/reports/accountingreport.py:145 msgid "" @@ -33807,19 +32109,22 @@ msgid "" "might therefore be inaccurate with regards to orders that were changed in " "the time frame." msgstr "" +"Het tijdsbestek van het rapport omvat gegevens die zijn gegenereerd met een " +"oude softwareversie die nog niet alle gegevens opsloeg die nodig waren om " +"dit rapport te maken. Het rapport kan daarom onnauwkeurig zijn met " +"betrekking tot bestellingen die in het tijdsbestek zijn gewijzigd." #: pretix/plugins/reports/accountingreport.py:645 #: pretix/plugins/reports/accountingreport.py:697 -#, fuzzy, python-brace-format -#| msgid "Extend payment term" +#, python-brace-format msgid "Pending payments at {datetime}" -msgstr "Betalingstermijn verlengen" +msgstr "Openstaande betalingen op {datetime}" #: pretix/plugins/reports/accountingreport.py:756 #: pretix/plugins/reports/accountingreport.py:796 #, python-brace-format msgid "Total gift card value at {datetime}" -msgstr "" +msgstr "Totale waarde van cadeaubonnen op {datetime}" #: pretix/plugins/reports/accountingreport.py:777 #, fuzzy @@ -33876,6 +32181,7 @@ msgstr "Overzicht van bestellingen (PDF)" #: pretix/plugins/reports/exporters.py:257 msgid "Download a PDF version of the key sales numbers per ticket type." msgstr "" +"Download een PDF-versie van de belangrijkste verkoopcijfers per tickettype." #: pretix/plugins/reports/exporters.py:285 #: pretix/plugins/statistics/templates/pretixplugins/statistics/index.html:109 @@ -33920,6 +32226,8 @@ msgstr "Inchecklijst (PDF)" #: pretix/plugins/reports/exporters.py:494 msgid "Download a PDF list with the tax amounts included in each order." msgstr "" +"Download een PDF-lijst met de belastingbedragen die bij elke bestelling zijn " +"inbegrepen." #: pretix/plugins/reports/exporters.py:571 #, python-brace-format @@ -33949,6 +32257,8 @@ msgstr "Standaardlijst" #: pretix/plugins/reports/exporters.py:667 msgid "Download a spreadsheet with the tax amounts included in each order." msgstr "" +"Download een spreadsheet met de belastingbedragen die bij elke bestelling " +"zijn inbegrepen." #: pretix/plugins/reports/exporters.py:674 msgid "Taxes by country" @@ -34000,6 +32310,9 @@ msgid "" "prefixes. Enter one or more allowed URL prefix per line. URL prefixes must " "include a slash after the hostname." msgstr "" +"Omleiding is alleen toegestaan naar URL's die beginnen met een van deze " +"voorvoegsels. Voer één of meer toegestane URL-voorvoegsels per regel in. URL-" +"voorvoegsels moeten een schuine streep bevatten na de hostnaam." #: pretix/plugins/sendmail/apps.py:38 msgid "Send out emails to all your customers or specific groups of customers." @@ -34112,6 +32425,8 @@ msgstr "" #: pretix/plugins/sendmail/forms.py:230 msgid "Attachment of tickets is disabled in this event's email settings." msgstr "" +"Het bijvoegen van tickets is uitgeschakeld in de e-mailinstellingen van dit " +"evenement." #: pretix/plugins/sendmail/forms.py:234 pretix/plugins/sendmail/forms.py:386 #: pretix/plugins/sendmail/views.py:267 @@ -34148,7 +32463,7 @@ msgstr "Beperken tot specifieke verkoopkanalen" #: pretix/plugins/sendmail/forms.py:371 msgid "Type of schedule time" -msgstr "" +msgstr "Type schema-tijd" #: pretix/plugins/sendmail/forms.py:374 #, fuzzy @@ -34219,7 +32534,7 @@ msgstr "Voltooiingsdatum" #: pretix/plugins/sendmail/models.py:54 msgid "missed" -msgstr "" +msgstr "gemist" #: pretix/plugins/sendmail/models.py:233 msgid "Everyone who created a ticket order" @@ -34227,7 +32542,7 @@ msgstr "Iedereen die een bestelling heeft geplaatst" #: pretix/plugins/sendmail/models.py:239 msgid "Everyone" -msgstr "" +msgstr "Iedereen" #: pretix/plugins/sendmail/models.py:240 #, fuzzy @@ -34237,7 +32552,7 @@ msgstr "Stuur naar niet-ingecheckte klanten" #: pretix/plugins/sendmail/models.py:241 msgid "Anyone who never checked in before" -msgstr "" +msgstr "Iedereen die nog nooit heeft ingecheckt" #: pretix/plugins/sendmail/models.py:252 #, fuzzy @@ -34278,41 +32593,40 @@ msgstr "Stuur e-mail naar" #: pretix/plugins/sendmail/models.py:287 msgid "Only enabled rules are actually sent" -msgstr "" +msgstr "Alleen ingeschakelde regels worden daadwerkelijk verzonden" #: pretix/plugins/sendmail/models.py:334 -#, fuzzy, python-brace-format -#| msgid "Show dates with time" +#, python-brace-format msgid "on {date} at {time}" -msgstr "Toon datums met tijd" +msgstr "op {date} om {time}" #: pretix/plugins/sendmail/models.py:340 #, python-format msgid "%(count)d day after event end at %(time)s" msgid_plural "%(count)d days after event end at %(time)s" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)d dag na het evenement om %(time)s" +msgstr[1] "%(count)d dagen na het evenement om %(time)s" #: pretix/plugins/sendmail/models.py:349 #, python-format msgid "%(count)d day before event end at %(time)s" msgid_plural "%(count)d days before event end at %(time)s" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)d dag voor het einde van het evenement om %(time)s" +msgstr[1] "%(count)d dagen voor het einde van het evenement om %(time)s" #: pretix/plugins/sendmail/models.py:359 #, python-format msgid "%(count)d day after event start at %(time)s" msgid_plural "%(count)d days after event start at %(time)s" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)d dag na de start van het evenement om %(time)s" +msgstr[1] "%(count)d dagen na de start van het evenement om %(time)s" #: pretix/plugins/sendmail/models.py:368 #, python-format msgid "%(count)d day before event start at %(time)s" msgid_plural "%(count)d days before event start at %(time)s" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)d dag voor de start van het evenement om %(time)s" +msgstr[1] "%(count)d dagen voor de start van het evenement om %(time)s" #: pretix/plugins/sendmail/signals.py:102 msgid "Scheduled emails" @@ -34434,6 +32748,9 @@ msgid "" "your configured date. Typically, this will not be more than 10 minutes. Your " "email will never be sent earlier than the time you configured." msgstr "" +"Om technische redenen kan het zijn dat de e-mail iets later wordt verzonden " +"dan de ingestelde datum. Meestal zal dit niet meer dan 10 minuten zijn. Je e-" +"mail wordt nooit eerder verzonden dan het ingestelde tijdstip." #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_delete.html:4 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_delete.html:6 @@ -34550,6 +32867,8 @@ msgid "" "This email has already been sent for all existing dates. Changing it will " "have no effect unless you create additional dates in this event series." msgstr "" +"Deze e-mail is al verzonden voor alle bestaande data. Het wijzigen ervan " +"heeft geen effect, tenzij je extra data aanmaakt in deze reeks evenementen." #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_update.html:23 #, fuzzy @@ -34563,6 +32882,9 @@ msgid "" "Changing it will only have an effect on dates for which the email has not " "yet been sent." msgstr "" +"Deze e-mail is al verzonden voor sommige data in je reeks. Als je deze " +"wijzigt, heeft dit alleen effect op data waarvoor de e-mail nog niet is " +"verzonden." #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:77 #, fuzzy @@ -34603,19 +32925,23 @@ msgid "" "Send an email to every customer, or to every person a ticket has been " "purchased for, or a combination of both." msgstr "" +"Stuur een e-mail naar elke klant, of naar elke persoon voor wie een ticket " +"is gekocht, of een combinatie van beide." #: pretix/plugins/sendmail/views.py:417 #, python-format msgid "%(number)s matching order" msgid_plural "%(number)s matching orders" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(number)s overeenkomende bestelling" +msgstr[1] "%(number)s overeenkomende bestellingen" #: pretix/plugins/sendmail/views.py:449 msgid "" "Send an email to every person currently waiting to receive a voucher through " "the waiting list feature." msgstr "" +"Stuur een e-mail naar iedereen die momenteel op de wachtlijst staat om een " +"voucher te ontvangen." #: pretix/plugins/sendmail/views.py:516 #, fuzzy, python-format @@ -34635,6 +32961,7 @@ msgstr "Statistieken" #: pretix/plugins/statistics/apps.py:37 msgid "Get a birds-eye view of your event sales with graphical statistics." msgstr "" +"Krijg een overzicht van je evenementverkopen met grafische statistieken." #: pretix/plugins/statistics/templates/pretixplugins/statistics/index.html:19 msgid "Orders by day" @@ -34671,6 +32998,15 @@ msgid "" "(pending, paid, canceled, and expired); attendees in paid orders include " "only those from paid orders and exclude those from canceled orders." msgstr "" +"Deelnemers in bestellingen die in meerdere termijnen zijn betaald, worden " +"weergegeven op basis van de datum van de laatste betaling. De besteldata " +"geven aan wanneer de bestelling voor het eerst is geplaatst; deelnemers die " +"later via extra bestelposities zijn toegevoegd, gebruiken nog steeds de " +"oorspronkelijke besteldatum. Deelnemers in geplaatste bestellingen omvatten " +"deelnemers uit alle bestelstatussen (in behandeling, betaald, geannuleerd en " +"verlopen); deelnemers in betaalde bestellingen omvatten alleen deelnemers " +"uit betaalde bestellingen en sluiten deelnemers uit geannuleerde " +"bestellingen uit." #: pretix/plugins/statistics/templates/pretixplugins/statistics/index.html:56 #, fuzzy @@ -34724,6 +33060,9 @@ msgid "" "Placed orders include all orders (pending, paid, canceled, and expired); " "paid orders include only paid orders and exclude all canceled orders." msgstr "" +"Geplaatste bestellingen omvatten alle bestellingen (in behandeling, betaald, " +"geannuleerd en verlopen); betaalde bestellingen omvatten alleen betaalde " +"bestellingen en sluiten alle geannuleerde bestellingen uit." #: pretix/plugins/statistics/templates/pretixplugins/statistics/index.html:126 msgid "Seating Overview" @@ -34788,6 +33127,9 @@ msgid "" "Stripe supports payments via credit cards as well as many local payment " "methods such as iDEAL, Alipay,and many more." msgstr "" +"Accepteer betalingen via Stripe, een wereldwijd populaire " +"betalingsdienstaanbieder. Stripe ondersteunt betalingen via creditcards en " +"vele lokale betaalmethoden, zoals iDEAL, Alipay en nog veel meer." #: pretix/plugins/stripe/forms.py:40 #, python-format @@ -34928,7 +33270,7 @@ msgstr "" #: pretix/plugins/stripe/payment.py:309 msgid "Check for Apple Pay/Google Pay" -msgstr "" +msgstr "Controleer of Apple Pay/Google Pay beschikbaar is" #: pretix/plugins/stripe/payment.py:313 msgid "" @@ -34938,10 +33280,15 @@ msgid "" "take into consideration if Google Pay/Apple Pay has been disabled in the " "Stripe Dashboard." msgstr "" +"pretix zal controleren of de webbrowser van de klant wallet-gebaseerde " +"betaalmethoden zoals Apple Pay of Google Pay ondersteunt en deze prominent " +"weergeven naast de creditcardbetaalmethode. Bij deze detectie wordt geen " +"rekening gehouden met het feit of Google Pay/Apple Pay is uitgeschakeld in " +"het Stripe-dashboard." #: pretix/plugins/stripe/payment.py:322 msgid "Statement descriptor postfix" -msgstr "" +msgstr "Statement descriptor postfix" #: pretix/plugins/stripe/payment.py:323 #, python-brace-format @@ -34952,6 +33299,11 @@ msgid "" "of characters is allowed. We do not recommend entering more than {cnt} " "characters into this field." msgstr "" +"Elke waarde die hier wordt ingevoerd, wordt weergegeven op het " +"creditcardafschrift of bankafschrift van de klant. We voegen automatisch de " +"bestelcode ervoor toe. Houd er rekening mee dat, afhankelijk van de " +"betaalmethode, slechts een zeer beperkt aantal tekens is toegestaan. We " +"raden aan om niet meer dan {cnt} tekens in dit veld in te voeren." #: pretix/plugins/stripe/payment.py:337 msgid "Credit card payments" @@ -34993,6 +33345,8 @@ msgid "" "Some payment methods might need to be enabled in the settings of your Stripe " "account before work properly." msgstr "" +"Sommige betaalmethoden moeten mogelijk worden ingeschakeld in de " +"instellingen van je Stripe-account voordat ze correct werken." #: pretix/plugins/stripe/payment.py:372 #, fuzzy @@ -35014,13 +33368,14 @@ msgstr "" #: pretix/plugins/stripe/payment.py:380 msgid "SEPA Creditor Mandate Name" -msgstr "" +msgstr "Naam SEPA-crediteur" #: pretix/plugins/stripe/payment.py:382 msgid "" "Please provide your SEPA Creditor Mandate Name, that will be displayed to " "the user." msgstr "" +"Geef de naam van de SEPA-crediteur op, die aan de gebruiker wordt getoond." #: pretix/plugins/stripe/payment.py:393 pretix/plugins/stripe/payment.py:1697 msgid "EPS" @@ -35052,35 +33407,39 @@ msgstr "WeChat Pay" #: pretix/plugins/stripe/payment.py:453 pretix/plugins/stripe/payment.py:1870 msgid "Swish" -msgstr "" +msgstr "Swish" #: pretix/plugins/stripe/payment.py:469 pretix/plugins/stripe/payment.py:1338 msgid "Affirm" -msgstr "" +msgstr "Bevestigen" #: pretix/plugins/stripe/payment.py:474 msgid "Only available for payments between $50 and $30,000." -msgstr "" +msgstr "Alleen beschikbaar voor betalingen tussen $50 en $30.000." #: pretix/plugins/stripe/payment.py:480 pretix/plugins/stripe/payment.py:1383 msgid "Klarna" -msgstr "" +msgstr "Klarna" #: pretix/plugins/stripe/payment.py:487 msgid "" "Klarna and Stripe will decide which of the payment methods offered by Klarna " "are available to the user." msgstr "" +"Klarna en Stripe beslissen welke van de door Klarna aangeboden " +"betaalmethoden beschikbaar zijn voor de gebruiker." #: pretix/plugins/stripe/payment.py:489 msgid "" "Klarna's terms of services do not allow it to be used by charities or " "political organizations." msgstr "" +"De servicevoorwaarden van Klarna staan het gebruik ervan door " +"liefdadigheidsinstellingen of politieke organisaties niet toe." #: pretix/plugins/stripe/payment.py:507 msgid "MobilePay" -msgstr "" +msgstr "MobilePay" #: pretix/plugins/stripe/payment.py:517 #, fuzzy @@ -35160,7 +33519,7 @@ msgstr "Creditcard" #: pretix/plugins/stripe/payment.py:1206 #, python-brace-format msgid "expires {month}/{year}" -msgstr "" +msgstr "vervalt {month}/{year}" #: pretix/plugins/stripe/payment.py:1211 #, fuzzy @@ -35170,7 +33529,7 @@ msgstr "EPS via Stripe" #: pretix/plugins/stripe/payment.py:1212 msgid "SEPA Debit" -msgstr "" +msgstr "SEPA-incasso" #: pretix/plugins/stripe/payment.py:1252 #, fuzzy @@ -35228,6 +33587,9 @@ msgid "" "German banks, usually after one-time activation. Please keep your online " "banking account and login information available." msgstr "" +"giropay is een online betaalmethode die beschikbaar is voor alle klanten van " +"de meeste Duitse banken, meestal na eenmalige activering. Houd de " +"inloggegevens van je bankrekening bij de hand." #: pretix/plugins/stripe/payment.py:1525 pretix/plugins/stripe/payment.py:1593 #: pretix/plugins/stripe/payment.py:1706 @@ -35250,6 +33612,8 @@ msgid "" "iDEAL is an online payment method available to customers of Dutch banks. " "Please keep your online banking account and login information available." msgstr "" +"iDEAL is een online betaalmethode die beschikbaar is voor klanten van " +"Nederlandse banken. Houd de inloggegevens van je bankrekening bij de hand." #: pretix/plugins/stripe/payment.py:1571 msgid "Alipay via Stripe" @@ -35260,6 +33624,8 @@ msgid "" "This payment method is available to customers of the Chinese payment system " "Alipay. Please keep your login information available." msgstr "" +"Deze betaalmethode is beschikbaar voor klanten van het Chinese " +"betalingssysteem Alipay. Houd je inloggegevens bij de hand." #: pretix/plugins/stripe/payment.py:1583 msgid "Bancontact via Stripe" @@ -35316,6 +33682,8 @@ msgstr "Multibanco via Stripe" msgid "" "Multibanco is a payment method available to Portuguese bank account holders." msgstr "" +"Multibanco is een betaalmethode die beschikbaar is voor houders van een " +"Portugese bankrekening." #: pretix/plugins/stripe/payment.py:1749 msgid "Przelewy24 via Stripe" @@ -35327,6 +33695,8 @@ msgid "" "banks. Please keep your online banking account and login information " "available." msgstr "" +"Przelewy24 is een online betaalmethode die beschikbaar is voor klanten van " +"Poolse banken. Houd de inloggegevens van je bankrekening bij de hand." #: pretix/plugins/stripe/payment.py:1788 msgid "WeChat Pay via Stripe" @@ -35337,6 +33707,8 @@ msgid "" "This payment method is available to users of the Chinese app WeChat. Please " "keep your login information available." msgstr "" +"Deze betaalmethode is beschikbaar voor gebruikers van de Chinese app WeChat. " +"Houd je inloggegevens bij de hand." #: pretix/plugins/stripe/payment.py:1816 msgid "Revolut Pay via Stripe" @@ -35344,13 +33716,15 @@ msgstr "Revolut Pay via Stripe" #: pretix/plugins/stripe/payment.py:1817 msgid "Revolut Pay" -msgstr "" +msgstr "Revolut Pay" #: pretix/plugins/stripe/payment.py:1821 msgid "" "This payment method is available to users of the Revolut app. Please keep " "your login information available." msgstr "" +"Deze betaalmethode is beschikbaar voor gebruikers van de Revolut-app. Houd " +"je inloggegevens bij de hand." #: pretix/plugins/stripe/payment.py:1835 msgid "Pay by bank via Stripe" @@ -35377,6 +33751,8 @@ msgid "" "This payment method is available to users of the Swedish apps Swish and " "BankID. Please have your app ready." msgstr "" +"Deze betaalmethode is beschikbaar voor gebruikers van de Zweedse apps Swish " +"en BankID. Zorg ervoor dat je je app bij de hand hebt." #: pretix/plugins/stripe/payment.py:1893 msgid "PromptPay via Stripe" @@ -35399,12 +33775,16 @@ msgid "" "This payment method is available to users of the Swiss app TWINT. Please " "have your app ready." msgstr "" +"Deze betaalmethode is beschikbaar voor gebruikers van de Zwitserse app " +"TWINT. Zorg dat je je app bij de hand hebt." #: pretix/plugins/stripe/payment.py:1944 msgid "" "This payment method is available to MobilePay app users in Denmark and " "Finland. Please have your app ready." msgstr "" +"Deze betaalmethode is beschikbaar voor gebruikers van de MobilePay-app in " +"Denemarken en Finland. Zorg ervoor dat je app klaar is voor gebruik." #: pretix/plugins/stripe/signals.py:93 msgid "Charge succeeded." @@ -35506,7 +33886,7 @@ msgstr "Het totaalbedrag zal worden afgeschreven van je creditcard." #: pretix/plugins/stripe/templates/pretixplugins/stripe/checkout_payment_confirm.html:18 #: pretix/plugins/stripe/templates/pretixplugins/stripe/checkout_payment_form_sepadirectdebit.html:23 msgid "Banking Institution" -msgstr "" +msgstr "Bankinstelling" #: pretix/plugins/stripe/templates/pretixplugins/stripe/checkout_payment_confirm.html:20 #: pretix/plugins/stripe/templates/pretixplugins/stripe/checkout_payment_form_sepadirectdebit.html:25 @@ -35603,6 +33983,17 @@ msgid "" "statement that you can obtain from your bank. You agree to receive " "notifications for future debits up to 2 days before they occur." msgstr "" +"Door je betalingsgegevens te verstrekken en deze betaling te bevestigen, " +"machtig je (A) %(sepa_creditor_name)s en Stripe, onze " +"betalingsdienstaanbieder en/of PPRO, zijn lokale dienstverlener, om " +"instructies naar je bank te sturen om je rekening te debiteren en (B) je " +"bank om je rekening te debiteren in overeenstemming met die instructies. Als " +"onderdeel van je rechten heb je recht op een terugbetaling van je bank onder " +"de voorwaarden van je overeenkomst met je bank. Een terugbetaling moet " +"worden aangevraagd binnen 8 weken vanaf de datum waarop je rekening is " +"gedebiteerd. Je rechten worden uitgelegd in een verklaring die je bij je " +"bank kunt verkrijgen. Je gaat ermee akkoord om tot 2 dagen voordat ze " +"plaatsvinden, meldingen te ontvangen over toekomstige afschrijvingen." #: pretix/plugins/stripe/templates/pretixplugins/stripe/control.html:7 msgid "Charge ID" @@ -35649,14 +34040,16 @@ msgid "" "In your online bank account or from an ATM, choose \"Payment and other " "services\"." msgstr "" +"Kies in je online bankrekening of bij een geldautomaat voor 'Betalingen en " +"andere diensten'." #: pretix/plugins/stripe/templates/pretixplugins/stripe/pending.html:14 msgid "Click \"Payments of services/shopping\"." -msgstr "" +msgstr "Klik op \"Betalingen voor diensten/aankopen\"." #: pretix/plugins/stripe/templates/pretixplugins/stripe/pending.html:19 msgid "Enter the entity number, reference number, and amount." -msgstr "" +msgstr "Voer het entiteitsnummer, het referentienummer en het bedrag in." #: pretix/plugins/stripe/templates/pretixplugins/stripe/pending.html:25 #, fuzzy @@ -35778,6 +34171,9 @@ msgid "" "Issue tickets as PDF files, usable on any device. Our drag-and-drop editor " "allows you to customize the layout of the PDF files to your brand." msgstr "" +"Geef tickets uit als PDF-bestanden, die op elk apparaat kunnen worden " +"gebruikt. Met onze drag-and-drop-editor kun je de lay-out van de PDF-" +"bestanden aanpassen aan je merk." #: pretix/plugins/ticketoutputpdf/apps.py:74 #: pretix/plugins/ticketoutputpdf/migrations/0002_auto_20180605_2022.py:22 @@ -35790,6 +34186,8 @@ msgstr "Standaardlay-out" msgid "" "Download PDF versions of all tickets in your event as one large PDF file." msgstr "" +"Download PDF-versies van alle tickets voor je evenement als één groot PDF-" +"bestand." #: pretix/plugins/ticketoutputpdf/forms.py:49 #, python-brace-format @@ -35939,6 +34337,7 @@ msgstr "Automatisch inchecken" #: pretix/plugins/webcheckin/apps.py:38 msgid "Turn your browser into a check-in device to perform access control." msgstr "" +"Maak van je browser een check-in-apparaat om toegangscontrole uit te voeren." #: pretix/plugins/webcheckin/apps.py:40 pretix/plugins/webcheckin/signals.py:36 #, fuzzy @@ -36112,11 +34511,11 @@ msgstr "Nieuwe toegangslocatie aanmaken" #: pretix/presale/forms/checkout.py:129 msgid "Save address in my customer account for future purchases" -msgstr "" +msgstr "Adres opslaan in mijn klantaccount voor toekomstige aankopen" #: pretix/presale/forms/checkout.py:159 msgid "Save answers to my customer profiles for future purchases" -msgstr "" +msgstr "Bewaar antwoorden op mijn klantprofielen voor toekomstige aankopen" #: pretix/presale/forms/checkout.py:166 #, fuzzy @@ -36180,6 +34579,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 "" +"Je hebt je account nog niet geactiveerd en nog geen wachtwoord ingesteld. " +"Klik op de link in de e-mail die we je hebben gestuurd. Als je deze niet " +"kunt vinden, klik dan op 'Wachtwoord vergeten?' om een nieuwe e-mail te " +"ontvangen." #: pretix/presale/forms/customer.py:90 #, fuzzy @@ -36202,11 +34605,13 @@ msgid "" "An account with this email address is already registered. Please try to log " "in or reset your password instead." msgstr "" +"Er is al een account met dit e-mailadres geregistreerd. Probeer in te loggen " +"of reset je wachtwoord." #: pretix/presale/forms/customer.py:202 #, python-brace-format msgid "What is the result of {num1} + {num2}?" -msgstr "" +msgstr "Wat is het resultaat van {num1} + {num2}?" #: pretix/presale/forms/customer.py:248 #, fuzzy @@ -36232,7 +34637,7 @@ msgstr "" #: pretix/presale/forms/customer.py:463 msgid "Only required if you change your email address" -msgstr "" +msgstr "Alleen vereist als je je e-mailadres wijzigt" #: pretix/presale/forms/customer.py:501 #, python-brace-format @@ -36240,6 +34645,8 @@ msgid "" "To change your email address, change it in your {provider} account and then " "log out and log in again." msgstr "" +"Om je e-mailadres te wijzigen, wijzig je dit in je {provider}-account en log " +"je vervolgens uit en weer in." #: pretix/presale/forms/order.py:113 pretix/presale/forms/order.py:121 #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:171 @@ -36305,16 +34712,14 @@ msgid "Organizer: {organizer}" msgstr "Organisator: {organizer}" #: pretix/presale/ical.py:139 -#, fuzzy, python-brace-format -#| msgid "{event}-{code}" +#, python-brace-format msgid "{event} - {item}" -msgstr "{event}-{code}" +msgstr "{event} - {item}" #: pretix/presale/ical.py:147 -#, fuzzy, python-brace-format -#| msgid "Start date" +#, python-brace-format msgid "Start: {datetime}" -msgstr "Begindatum" +msgstr "Start: {datetime}" #: pretix/presale/ical.py:150 #, fuzzy, python-brace-format @@ -36417,6 +34822,8 @@ msgid "" "You are currently using the time machine. The ticket shop is rendered as if " "it were %(datetime)s." msgstr "" +"Je gebruikt momenteel de tijdmachine. De ticketwinkel wordt weergegeven " +"alsof het %(datetime)s is." #: pretix/presale/templates/pretixpresale/event/base.html:146 #: pretix/presale/templates/pretixpresale/event/base.html:156 @@ -36426,6 +34833,9 @@ msgid "" "href=\"%(time_machine_link)s\">time machine." msgstr "" +"Om je winkel op verschillende tijdstippen te bekijken, kun je de tijdmachine inschakelen." #: pretix/presale/templates/pretixpresale/event/base.html:167 #: pretix/presale/templates/pretixpresale/event/base.html:214 @@ -36671,6 +35081,9 @@ msgid "" "connect your order to your account. This will allow you to see all your " "orders in one place and access them at any time." msgstr "" +"Als je eerder een klantenaccount hebt aangemaakt bij %(org)s, kun je nu " +"inloggen en je bestelling aan je account koppelen. Zo kun je al je " +"bestellingen op één plek bekijken en er op elk moment toegang toe krijgen." #: pretix/presale/templates/pretixpresale/event/checkout_customer.html:77 #, fuzzy @@ -36685,6 +35098,10 @@ msgid "" "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 "" +"We sturen je een e-mail met een link om je account te activeren en een " +"wachtwoord in te stellen, zodat je het account kunt gebruiken voor " +"toekomstige bestellingen bij %(org)s. Je kunt doorgaan met deze aankoop " +"voordat je de e-mail hebt ontvangen." #: pretix/presale/templates/pretixpresale/event/checkout_customer.html:101 #, fuzzy @@ -36698,6 +35115,9 @@ msgid "" "will be able to access the details and status of your order any time through " "the secret link we will send you via email once the order is complete." msgstr "" +"Je hoeft geen account aan te maken. Als je als gast verdergaat, kun je de " +"details en status van je bestelling op elk moment bekijken via de geheime " +"link die we je per e-mail sturen zodra de bestelling is voltooid." #: pretix/presale/templates/pretixpresale/event/checkout_membership.html:6 msgid "" @@ -36718,6 +35138,9 @@ msgid "" "account that includes a valid membership or authorization for this type of " "product." msgstr "" +"Dit product kan alleen worden gekocht als je bent ingelogd met een " +"klantenaccount dat een geldig lidmaatschap of autorisatie voor dit type " +"product bevat." #: pretix/presale/templates/pretixpresale/event/checkout_payment.html:13 #: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:30 @@ -36802,7 +35225,7 @@ msgstr "E-mailadres" #: pretix/presale/templates/pretixpresale/event/checkout_questions.html:56 #: pretix/presale/templates/pretixpresale/event/checkout_questions.html:159 msgid "Fill form" -msgstr "" +msgstr "Formulier invullen" #: pretix/presale/templates/pretixpresale/event/checkout_questions.html:93 #: pretix/presale/templates/pretixpresale/event/checkout_questions.html:170 @@ -36898,7 +35321,7 @@ msgstr "minimumhoeveelheid om te bestellen: %(num)s" #: pretix/presale/templates/pretixpresale/event/voucher.html:341 msgctxt "price" msgid "free" -msgstr "" +msgstr "gratis" #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:78 #: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:69 @@ -37021,7 +35444,7 @@ msgstr "Kies een datum" #: pretix/presale/templates/pretixpresale/event/voucher.html:235 #: pretix/presale/templates/pretixpresale/event/voucher.html:390 msgid "Decrease quantity" -msgstr "" +msgstr "Hoeveelheid verminderen" #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:218 #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:364 @@ -37030,7 +35453,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/voucher.html:242 #: pretix/presale/templates/pretixpresale/event/voucher.html:398 msgid "Increase quantity" -msgstr "" +msgstr "Hoeveelheid verhogen" #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:379 msgid "There are no add-ons available for this product." @@ -37154,23 +35577,23 @@ msgstr "Toon namen van gasten op facturen" #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:219 msgid "The image you previously uploaded" -msgstr "" +msgstr "De afbeelding die u eerder hebt geüpload" #: 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 "De prijs van dit product is verlaagd vanwege een automatische korting." #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:269 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:342 #, python-format msgid "%(percent)s %% Discount" -msgstr "" +msgstr "%(percent)s %% korting" #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:273 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:346 msgid "Discounted" -msgstr "" +msgstr "Met korting" #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:283 msgid "Okay, we're removing that…" @@ -37274,7 +35697,7 @@ msgstr "Reserveerperiode" #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:532 msgid "Overview of your ordered products." -msgstr "" +msgstr "Overzicht van je bestelde producten." #: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:50 #, fuzzy @@ -37326,6 +35749,7 @@ msgstr "Prijs van plaats #{posid} veranderd van {old_price} naar {new_price}." msgid "" "Change position #%(positionid)s from \"%(old_item)s\" to \"%(new_item)s\"" msgstr "" +"Wijzig positie #%(positionid)s van \"%(old_item)s\" naar \"%(new_item)s\"" #: pretix/presale/templates/pretixpresale/event/fragment_change_confirm.html:30 #: pretix/presale/templates/pretixpresale/event/fragment_change_confirm.html:56 @@ -37340,6 +35764,7 @@ msgstr "Add-on voor plaats #%(posid)s" #, python-format msgid "Change date of position #%(positionid)s from \"%(old)s\" to \"%(new)s\"" msgstr "" +"Wijzig de datum van positie #%(positionid)s van \"%(old)s\" naar \"%(new)s\"" #: pretix/presale/templates/pretixpresale/event/fragment_change_confirm.html:50 #, fuzzy, python-format @@ -37362,12 +35787,12 @@ msgstr "Add-on voor plaats #%(posid)s" #: pretix/presale/templates/pretixpresale/event/fragment_change_confirm.html:95 #, python-format msgid "Remove position #%(positionid)s (%(item)s – %(variation)s)" -msgstr "" +msgstr "Verwijder positie #%(positionid)s (%(item)s – %(variation)s)" #: pretix/presale/templates/pretixpresale/event/fragment_change_confirm.html:99 #, python-format msgid "Remove position #%(positionid)s (%(item)s)" -msgstr "" +msgstr "Verwijder positie #%(positionid)s (%(item)s)" #: pretix/presale/templates/pretixpresale/event/fragment_change_confirm.html:121 #, fuzzy @@ -37405,6 +35830,8 @@ msgid "" "The organizer will get in touch with you to clarify the details of your " "refund." msgstr "" +"De organisator neemt contact met je op om de details van je terugbetaling te " +"verduidelijken." #: pretix/presale/templates/pretixpresale/event/fragment_change_confirm.html:152 #: pretix/presale/templates/pretixpresale/event/order.html:395 @@ -37448,6 +35875,8 @@ msgstr "" msgid "" "Your entire order will be considered unpaid until you paid this difference." msgstr "" +"Je volledige bestelling wordt als onbetaald beschouwd totdat je dit verschil " +"hebt betaald." #: pretix/presale/templates/pretixpresale/event/fragment_change_confirm.html:186 #, fuzzy @@ -37547,11 +35976,11 @@ msgstr "Je zal je kaartjes hier kunnen downloaden vanaf %(date)s." #: pretix/presale/templates/pretixpresale/event/fragment_event_info.html:7 msgid "Where does the event happen?" -msgstr "" +msgstr "Waar vindt het evenement plaats?" #: pretix/presale/templates/pretixpresale/event/fragment_event_info.html:17 msgid "When does the event happen?" -msgstr "" +msgstr "Wanneer vindt het evenement plaats?" #: pretix/presale/templates/pretixpresale/event/fragment_event_info.html:26 #, python-format @@ -37665,7 +36094,7 @@ msgstr "Navigatie schakelen" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:10 #, python-format msgid "Show previous month, %(month)s" -msgstr "" +msgstr "Vorige maand weergeven, %(month)s" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:24 #: pretix/presale/templates/pretixpresale/organizers/calendar.html:56 @@ -37690,18 +36119,18 @@ msgstr "maand(en)" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:50 #, python-format msgid "Show next month, %(month)s" -msgstr "" +msgstr "Volgende maand weergeven, %(month)s" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:10 #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:66 #, python-format msgid "Show previous week, %(week)s" -msgstr "" +msgstr "Vorige week weergeven, %(week)s" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:24 #: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:56 msgid "Select a week to display" -msgstr "" +msgstr "Selecteer een week om weer te geven" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:26 #: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:12 @@ -37711,7 +36140,7 @@ msgstr "Week" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:29 msgid "Select week to show" -msgstr "" +msgstr "Selecteer week om weer te geven" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:43 #: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:75 @@ -37724,7 +36153,7 @@ msgstr "Toon per pagina:" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:73 #, python-format msgid "Show next week, %(week)s" -msgstr "" +msgstr "Volgende week, %(week)s" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_list.html:34 #: pretix/presale/templates/pretixpresale/organizers/index.html:93 @@ -37735,7 +36164,7 @@ msgstr "Meer info" #: pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html:13 msgctxt "form" msgid "has error" -msgstr "" +msgstr "heeft een fout" #: pretix/presale/templates/pretixpresale/event/index.html:16 #: pretix/presale/templates/pretixpresale/event/index.html:20 @@ -37793,6 +36222,9 @@ msgid "" "you want, you can add yourself to the waiting list. We will then notify if " "seats are available again." msgstr "" +"Sommige categorieën in het bovenstaande zitplan zijn momenteel uitverkocht. " +"Als je wilt, kun je je op de wachtlijst laten plaatsen. Wij zullen je dan op " +"de hoogte brengen wanneer er weer plaatsen beschikbaar zijn." #: pretix/presale/templates/pretixpresale/event/index.html:213 #, fuzzy @@ -37846,7 +36278,7 @@ msgstr "Deze kaartjeswinkel is uitgeschakeld." #: pretix/presale/templates/pretixpresale/event/offline.html:10 msgid "It is only accessible to authenticated team members." -msgstr "" +msgstr "Het is alleen toegankelijk voor geauthenticeerde teamleden." #: pretix/presale/templates/pretixpresale/event/offline.html:11 #, fuzzy @@ -38081,6 +36513,9 @@ msgid "" "receive a full refund or if a cancellation fee is deducted according to " "their cancellation policy." msgstr "" +"Als je verzoek wordt goedgekeurd, bepaalt de organisator of je een " +"volledige terugbetaling ontvangt of dat er annuleringskosten in mindering " +"worden gebracht volgens het annuleringsbeleid." #: pretix/presale/templates/pretixpresale/event/order.html:397 #: pretix/presale/templates/pretixpresale/event/order.html:433 @@ -38163,6 +36598,8 @@ 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 "" +"Je kunt deze bestelling annuleren. Volgens ons annuleringsbeleid ben je nog " +"steeds verplicht om %(fee)s annuleringskosten te betalen." #: pretix/presale/templates/pretixpresale/event/order.html:472 msgid "You can cancel this order using the following button." @@ -38318,10 +36755,12 @@ msgid "" "Scan this image with your banking app’s QR-Reader to start the payment " "process." msgstr "" +"Scan deze afbeelding met de QR-reader van je bankapp om het betalingsproces " +"te starten." #: pretix/presale/templates/pretixpresale/event/payment_qr_codes.html:36 msgid "Scan the QR code with your banking app" -msgstr "" +msgstr "Scan de QR-code met je bankapp" #: pretix/presale/templates/pretixpresale/event/position.html:7 msgid "Registration details" @@ -38375,6 +36814,9 @@ msgid "" "changes, please get in touch with the person who bought the ticket " "(%(email)s)." msgstr "" +"Je kunt alleen zelf enkele wijzigingen aanbrengen in dit ticket. Neem voor " +"aanvullende wijzigingen contact op met de persoon die het ticket heeft " +"gekocht (%(email)s)." #: pretix/presale/templates/pretixpresale/event/position.html:82 #: pretix/presale/templates/pretixpresale/event/position_change.html:5 @@ -38391,6 +36833,9 @@ msgid "" "Please select the desired changes to your ticket. Note that you can only " "perform changes that do not change the total price of the ticket." msgstr "" +"Selecteer de gewenste wijzigingen voor je ticket. Houd er rekening mee dat " +"je alleen wijzigingen kunt doorvoeren die geen invloed hebben op de totale " +"prijs van het ticket." #: pretix/presale/templates/pretixpresale/event/position_change_confirm.html:19 #, fuzzy @@ -38435,7 +36880,7 @@ msgstr "Tijdlijn" #: pretix/presale/templates/pretixpresale/event/timemachine.html:22 msgid "Test your shop as if it were a different date and time." -msgstr "" +msgstr "Test je winkel alsof het een andere datum en tijd is." #: pretix/presale/templates/pretixpresale/event/timemachine.html:30 #, fuzzy @@ -38463,12 +36908,17 @@ msgid "" "For the selected date, there are currently no products available that can be " "bought with this voucher. Please try a different date or a different voucher." msgstr "" +"Voor de geselecteerde datum zijn er momenteel geen producten beschikbaar die " +"met deze voucher kunnen worden gekocht. Probeer een andere datum of een " +"andere voucher." #: pretix/presale/templates/pretixpresale/event/voucher.html:47 msgid "" "There are currently no products available that can be bought with this " "voucher." msgstr "" +"Er zijn momenteel geen producten beschikbaar die met deze voucher kunnen " +"worden gekocht." #: pretix/presale/templates/pretixpresale/event/voucher.html:52 msgid "" @@ -38512,6 +36962,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 "" +"Let op: je ontvangt slechts één ticket. Als je meerdere tickets nodig hebt, " +"moet je je meerdere keren op de wachtlijst plaatsen. Er is geen garantie dat " +"je een bepaald aantal tickets ontvangt." #: pretix/presale/templates/pretixpresale/event/waitinglist.html:32 msgid "" @@ -38520,6 +36973,10 @@ msgid "" "email addresses. There is no guarantee that you will receive a certain " "number of tickets." msgstr "" +"Houd er rekening mee dat je slechts één ticket ontvangt. Als je meerdere " +"tickets nodig hebt, moet je je meerdere keren met verschillende e-" +"mailadressen op de wachtlijst plaatsen. Er is geen garantie dat je een " +"bepaald aantal tickets ontvangt." #: pretix/presale/templates/pretixpresale/event/waitinglist.html:38 msgid "" @@ -38527,6 +36984,9 @@ msgid "" "been added to the waiting list. We will only contact you once a spot opens " "up." msgstr "" +"Je ontvangt geen bevestigingsmail nadat je aan de " +"wachtlijst bent toegevoegd. We nemen alleen contact met je op zodra er een " +"plek vrijkomt." #: pretix/presale/templates/pretixpresale/event/waitinglist.html:44 msgid "Add me to the list" @@ -38544,6 +37004,10 @@ msgid "" "need the ticket any more, please be so kind and remove your ticket from the " "list so we can pass it on to the next person waiting as quickly as possible!" msgstr "" +"Je bent geselecteerd uit onze wachtlijst om een ticket te kopen. Als je het " +"ticket niet meer nodig hebt, verwijder het dan alsjeblieft uit de lijst, " +"zodat we het zo snel mogelijk kunnen doorgeven aan de volgende persoon op de " +"wachtlijst!" #: pretix/presale/templates/pretixpresale/event/waitinglist_remove.html:16 #, fuzzy @@ -38628,7 +37092,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:5 msgid "Event overview by month, week, etc." -msgstr "" +msgstr "Overzicht van evenementen per maand, week, enz." #: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:26 msgid "iCal" @@ -38695,6 +37159,8 @@ msgstr "Het betalingsproces is begonnen in een nieuw venster." #: pretix/presale/templates/pretixpresale/fragment_modals.html:21 msgid "If you do not see the new window, we can help you launch it again." msgstr "" +"Als je het nieuwe venster niet ziet, kunnen wij je helpen om het opnieuw te " +"openen." #: pretix/presale/templates/pretixpresale/fragment_modals.html:26 #, fuzzy @@ -38706,6 +37172,7 @@ msgstr "Open downloadpagina" msgid "" "Once the process in the new window has been completed, you can continue here." msgstr "" +"Zodra het proces in het nieuwe venster is voltooid, kun je hier verdergaan." #: pretix/presale/templates/pretixpresale/fragment_modals.html:62 #, fuzzy @@ -38715,7 +37182,7 @@ msgstr "Gesloten" #: pretix/presale/templates/pretixpresale/fragment_modals.html:83 msgid "Adjust settings in detail" -msgstr "" +msgstr "Instellingen in detail aanpassen" #: pretix/presale/templates/pretixpresale/fragment_modals.html:88 #, fuzzy @@ -38734,12 +37201,12 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_modals.html:106 msgctxt "cookie_usage" msgid "Functionality" -msgstr "" +msgstr "Functionaliteit" #: pretix/presale/templates/pretixpresale/fragment_modals.html:108 msgctxt "cookie_usage" msgid "Analytics" -msgstr "" +msgstr "Analytics" #: pretix/presale/templates/pretixpresale/fragment_modals.html:110 #, fuzzy @@ -38788,7 +37255,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/giftcard/checkout.html:10 msgid "The following gift cards are available in your customer account:" -msgstr "" +msgstr "De volgende cadeaubonnen zijn beschikbaar in je klantenaccount:" #: pretix/presale/templates/pretixpresale/giftcard/checkout.html:24 #, fuzzy @@ -38875,7 +37342,7 @@ msgstr "Toon startdatum" #: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:25 #, python-format msgid "Events in %(week)s (%(week_day_from)s – %(week_day_to)s)" -msgstr "" +msgstr "Evenementen in %(week)s (%(week_day_from)s – %(week_day_to)s)" #: pretix/presale/templates/pretixpresale/organizers/customer_address_delete.html:5 #: pretix/presale/templates/pretixpresale/organizers/customer_address_delete.html:10 @@ -38958,6 +37425,9 @@ msgid "" "Currently, only gift cards resulting from refunds show up here, any " "purchased gift cards show up under the orders tab." msgstr "" +"Momenteel worden hier alleen cadeaubonnen weergegeven die het resultaat zijn " +"van terugbetalingen. Aangeschafte cadeaubonnen worden weergegeven onder het " +"tabblad 'Bestellingen'." #: pretix/presale/templates/pretixpresale/organizers/customer_info.html:6 #, fuzzy @@ -38975,7 +37445,7 @@ msgstr "Verander bestellingsinformatie" #: pretix/presale/templates/pretixpresale/organizers/customer_login.html:56 #, python-format msgid "Sign in to your account at %(org)s" -msgstr "" +msgstr "Log in op je account bij %(org)s" #: pretix/presale/templates/pretixpresale/organizers/customer_login.html:30 #: pretix/presale/templates/pretixpresale/organizers/customer_login.html:47 @@ -39168,6 +37638,8 @@ msgid "" "Your selected payment method can only be used for a payment of at least " "{amount}." msgstr "" +"De door jou gekozen betaalmethode kan alleen worden gebruikt voor een " +"betaling van minimaal {amount}." #: pretix/presale/views/cart.py:202 msgid "Please enter positive numbers only." @@ -39247,6 +37719,8 @@ msgid "" "Your account has been created. Please follow the link in the email we sent " "you to activate your account and choose a password." msgstr "" +"Je account is aangemaakt. Volg de link in de e-mail die we je hebben " +"gestuurd om je account te activeren en een wachtwoord te kiezen." #: pretix/presale/views/customer.py:268 pretix/presale/views/customer.py:271 #: pretix/presale/views/customer.py:622 pretix/presale/views/customer.py:628 @@ -39274,12 +37748,17 @@ msgid "" "your email address. The email address of your account will be changed as " "soon as you click that link." msgstr "" +"Je wijzigingen zijn opgeslagen. We hebben je een e-mail gestuurd met een " +"link om je e-mailadres bij te werken. Het e-mailadres van je account wordt " +"gewijzigd zodra je op die link klikt." #: pretix/presale/views/customer.py:639 msgid "" "Your email address has not been updated since the address is already in use " "for another customer account." msgstr "" +"Je e-mailadres is niet bijgewerkt omdat het adres al wordt gebruikt voor een " +"ander klantenaccount." #: pretix/presale/views/customer.py:642 #, fuzzy @@ -39293,6 +37772,8 @@ msgid "" "We were unable to use your login since the email address {email} is already " "used for a different account in this system." msgstr "" +"We konden je login niet gebruiken omdat het e-mailadres {email} al voor een " +"ander account in dit systeem wordt gebruikt." #: pretix/presale/views/event.py:921 msgid "Unknown event code or not authorized to access this event." @@ -39362,6 +37843,7 @@ msgstr "Een factuur is gegenereerd." #: pretix/presale/views/order.py:807 pretix/presale/views/order.py:887 msgid "Invoice generation has failed, please reach out to the organizer." msgstr "" +"Het genereren van de factuur is mislukt. Neem contact op met de organisator." #: pretix/presale/views/order.py:925 pretix/presale/views/order.py:997 msgid "You cannot modify this order" @@ -39407,11 +37889,13 @@ msgstr "Je zoekopdracht kwam niet overeen met vouchers." #: pretix/presale/views/order.py:1710 msgid "You may not change your order in a way that reduces the total price." -msgstr "" +msgstr "Je mag je bestelling niet zo wijzigen dat de totale prijs lager wordt." #: pretix/presale/views/order.py:1712 msgid "You may only change your order in a way that increases the total price." msgstr "" +"Je kunt je bestelling alleen wijzigen als dit leidt tot een verhoging van de " +"totale prijs." #: pretix/presale/views/order.py:1714 #, fuzzy @@ -39430,6 +37914,9 @@ 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 "" +"Je kunt je bestelling niet wijzigen op een manier die de totale prijs " +"verhoogt, aangezien er voor dit evenement geen betalingen meer worden " +"geaccepteerd." #: pretix/presale/views/order.py:1730 msgid "" @@ -39437,6 +37924,9 @@ msgid "" "while we are processing your current payment. Please check back after your " "current payment has been accepted." msgstr "" +"Je kunt je bestelling niet wijzigen op een manier die extra betaling vereist " +"terwijl wij je huidige betaling verwerken. Kom later terug, nadat je huidige " +"betaling is geaccepteerd." #: pretix/presale/views/order.py:1749 pretix/presale/views/order.py:1780 msgid "You cannot change this order." @@ -39484,6 +37974,8 @@ msgid "" "No ticket types are available for the waiting list, have a look at the " "ticket shop instead." msgstr "" +"Er zijn geen ticketsoorten beschikbaar voor de wachtlijst. Neem in plaats " +"daarvan een kijkje in de ticketwinkel." #: pretix/presale/views/waiting.py:137 pretix/presale/views/waiting.py:161 msgid "Waiting lists are disabled for this event." @@ -39498,16 +37990,13 @@ msgstr "" "beschikbaar is." #: pretix/presale/views/waiting.py:180 -#, fuzzy, python-brace-format -#| msgid "" -#| "We've added you to the waiting list. You will receive an email as soon as " -#| "tickets get available again." +#, 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 "" -"We hebben je op de wachtlijst gezet. Je zal een email ontvangen wanneer er " -"weer kaartjes beschikbaar zijn." +"We hebben je toegevoegd aan de wachtlijst. Zodra dit product weer " +"beschikbaar is, sturen we een e-mail naar {email}." #: pretix/presale/views/waiting.py:208 #, fuzzy @@ -39520,12 +38009,16 @@ msgid "" "Your waiting list spot is no longer valid or already used. There's nothing " "more to do here." msgstr "" +"Je plaats op de wachtlijst is niet langer geldig of is al gebruikt. Je kunt " +"hier niets meer doen." #: pretix/presale/views/waiting.py:222 msgid "" "Thank you very much! We will assign your spot on the waiting list to someone " "else." msgstr "" +"Hartelijk dank! We zullen je plaats op de wachtlijst aan iemand anders " +"toewijzen." #: pretix/presale/views/widget.py:393 msgid "This ticket shop is currently disabled." From 0e41cb53a202709f2afee0b496170ea0f8fc1dc3 Mon Sep 17 00:00:00 2001 From: Ruud Hendrickx Date: Thu, 29 Jan 2026 18:09:38 +0100 Subject: [PATCH 009/108] Translations: Update Dutch (informal) (nl_Informal) Currently translated at 100.0% (256 of 256 strings) Translation: pretix/pretix (JavaScript parts) Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl_Informal/ powered by weblate --- .../nl_Informal/LC_MESSAGES/djangojs.po | 128 ++++++------------ 1 file changed, 40 insertions(+), 88 deletions(-) diff --git a/src/pretix/locale/nl_Informal/LC_MESSAGES/djangojs.po b/src/pretix/locale/nl_Informal/LC_MESSAGES/djangojs.po index 6ddf8c60aa..eb9df6c051 100644 --- a/src/pretix/locale/nl_Informal/LC_MESSAGES/djangojs.po +++ b/src/pretix/locale/nl_Informal/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-01-26 09:10+0000\n" -"PO-Revision-Date: 2026-01-29 13:00+0000\n" +"PO-Revision-Date: 2026-01-29 19:43+0000\n" "Last-Translator: Ruud Hendrickx \n" "Language-Team: Dutch (informal) \n" @@ -273,7 +273,7 @@ msgstr "Dit ticket is nog niet betaald. Wil je toch doorgaan?" #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:53 msgid "Additional information required" -msgstr "Extra informatie nodig" +msgstr "Aanvullende informatie vereist" #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:54 msgid "Valid ticket" @@ -352,11 +352,8 @@ msgid "No" msgstr "Nee" #: pretix/static/lightbox/js/lightbox.js:96 -#, fuzzy -#| msgctxt "widget" -#| msgid "Close" msgid "close" -msgstr "Sluiten" +msgstr "sluiten" #: pretix/static/pretixbase/js/addressform.js:101 #: pretix/static/pretixpresale/js/ui/main.js:529 @@ -493,32 +490,24 @@ msgid "Number of previous entries since midnight" msgstr "Aantal eerdere binnenkomsten sinds middernacht" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:131 -#, fuzzy -#| msgid "Number of previous entries" msgid "Number of previous entries since" -msgstr "Aantal eerdere binnenkomsten" +msgstr "Aantal eerdere binnenkomsten sinds" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:135 -#, fuzzy -#| msgid "Number of previous entries" msgid "Number of previous entries before" -msgstr "Aantal eerdere binnenkomsten" +msgstr "Aantal eerdere binnenkomsten vóór" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:139 msgid "Number of days with a previous entry" msgstr "Aantal dagen met een eerdere binnenkomst" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:143 -#, fuzzy -#| msgid "Number of days with a previous entry" msgid "Number of days with a previous entry since" -msgstr "Aantal dagen met een eerdere binnenkomst" +msgstr "Aantal dagen met een eerdere binnenkomst sinds" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:147 -#, fuzzy -#| msgid "Number of days with a previous entry" msgid "Number of days with a previous entry before" -msgstr "Aantal dagen met een eerdere binnenkomst" +msgstr "Aantal dagen met een eerdere binnenkomst voor" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:151 msgid "Minutes since last entry (-1 on first entry)" @@ -604,16 +593,12 @@ msgid "Group of objects" msgstr "Groep van objecten" #: pretix/static/pretixcontrol/js/ui/editor.js:909 -#, fuzzy -#| msgid "Text object" msgid "Text object (deprecated)" -msgstr "Tekstobject" +msgstr "Tekstobject (verouderd)" #: pretix/static/pretixcontrol/js/ui/editor.js:911 -#, fuzzy -#| msgid "Text object" msgid "Text box" -msgstr "Tekstobject" +msgstr "Tekstveld" #: pretix/static/pretixcontrol/js/ui/editor.js:913 msgid "Barcode area" @@ -661,19 +646,18 @@ msgid "Unknown error." msgstr "Onbekende fout." #: pretix/static/pretixcontrol/js/ui/main.js:309 -#, fuzzy -#| msgid "Your color has great contrast and is very easy to read!" msgid "Your color has great contrast and will provide excellent accessibility." -msgstr "Je kleur heeft een goed contrast, en is gemakkelijk te lezen!" +msgstr "" +"Je kleur heeft een groot contrast en zorgt voor een uitstekende " +"toegankelijkheid." #: pretix/static/pretixcontrol/js/ui/main.js:313 -#, fuzzy -#| msgid "Your color has decent contrast and is probably good-enough to read!" msgid "" "Your color has decent contrast and is sufficient for minimum accessibility " "requirements." msgstr "" -"Je kleur heeft een redelijk contrast, en is waarschijnlijk goed te lezen!" +"Je kleur heeft een behoorlijk contrast en voldoet aan de minimale " +"toegankelijkheidseisen." #: pretix/static/pretixcontrol/js/ui/main.js:317 msgid "" @@ -725,10 +709,8 @@ msgid "Calculating default price…" msgstr "Standaardprijs berekenen…" #: pretix/static/pretixcontrol/js/ui/plugins.js:69 -#, fuzzy -#| msgid "Search results" msgid "No results" -msgstr "Zoekresultaten" +msgstr "Geen resultaten" #: pretix/static/pretixcontrol/js/ui/question.js:41 msgid "Others" @@ -745,12 +727,12 @@ msgstr[0] "(één andere datum)" msgstr[1] "({num} andere datums)" #: pretix/static/pretixpresale/js/ui/cart.js:47 -#, fuzzy -#| msgid "The items in your cart are no longer reserved for you." msgid "" "The items in your cart are no longer reserved for you. You can still " "complete your order as long as they’re available." -msgstr "De items in je winkelwagen zijn niet meer voor je gereserveerd." +msgstr "" +"De artikelen in je winkelwagen zijn niet langer voor je gereserveerd. Je " +"kunt je bestelling nog steeds voltooien zolang ze beschikbaar zijn." #: pretix/static/pretixpresale/js/ui/cart.js:49 msgid "Cart expired" @@ -762,30 +744,23 @@ msgid "Your cart is about to expire." msgstr "Je winkelwagen verloopt bijna." #: pretix/static/pretixpresale/js/ui/cart.js:62 -#, fuzzy -#| msgid "The items in your cart are reserved for you for one minute." -#| msgid_plural "" -#| "The items in your cart are reserved for you for {num} minutes." msgid "The items in your cart are reserved for you for one minute." msgid_plural "The items in your cart are reserved for you for {num} minutes." -msgstr[0] "" -"De items in je winkelwagen zijn nog één minuut voor je gereserveerd." +msgstr[0] "De artikelen in je winkelwagen worden één minuut voor je gereserveerd." msgstr[1] "" -"De items in je winkelwagen zijn nog {num} minuten voor je gereserveerd." +"De artikelen in je winkelwagen worden {num} minuten voor je gereserveerd." #: pretix/static/pretixpresale/js/ui/cart.js:83 -#, fuzzy -#| msgid "Cart expired" msgid "Your cart has expired." -msgstr "Winkelwagen is verlopen" +msgstr "Je winkelwagen is verlopen." #: pretix/static/pretixpresale/js/ui/cart.js:86 -#, fuzzy -#| msgid "The items in your cart are no longer reserved for you." msgid "" "The items in your cart are no longer reserved for you. You can still " "complete your order as long as they're available." -msgstr "De items in je winkelwagen zijn niet meer voor je gereserveerd." +msgstr "" +"De artikelen in je winkelwagen zijn niet langer voor je gereserveerd. Je " +"kunt je bestelling nog steeds voltooien zolang ze beschikbaar zijn." #: pretix/static/pretixpresale/js/ui/cart.js:87 msgid "Do you want to renew the reservation period?" @@ -858,26 +833,21 @@ msgid "New price: %s" msgstr "Nieuwe prijs: %s" #: pretix/static/pretixpresale/js/widget/widget.js:24 -#, fuzzy -#| msgid "Selected only" msgctxt "widget" msgid "Select" -msgstr "Alleen geselecteerde" +msgstr "Selecteren" #: pretix/static/pretixpresale/js/widget/widget.js:25 -#, fuzzy, javascript-format -#| msgid "Selected only" +#, javascript-format msgctxt "widget" msgid "Select %s" -msgstr "Alleen geselecteerde" +msgstr "Selecteer %s" #: pretix/static/pretixpresale/js/widget/widget.js:26 -#, fuzzy, javascript-format -#| msgctxt "widget" -#| msgid "See variations" +#, javascript-format msgctxt "widget" msgid "Select variant %s" -msgstr "Zie variaties" +msgstr "Selecteer variant %s" #: pretix/static/pretixpresale/js/widget/widget.js:27 msgctxt "widget" @@ -948,12 +918,9 @@ msgstr "Alleen beschikbaar met een voucher" #: pretix/static/pretixpresale/js/widget/widget.js:40 #: pretix/static/pretixpresale/js/widget/widget.js:43 -#, fuzzy -#| msgctxt "widget" -#| msgid "currently available: %s" msgctxt "widget" msgid "Not yet available" -msgstr "nu beschikbaar: %s" +msgstr "Nog niet beschikbaar" #: pretix/static/pretixpresale/js/widget/widget.js:41 msgctxt "widget" @@ -961,12 +928,9 @@ msgid "Not available anymore" msgstr "Niet meer beschikbaar" #: pretix/static/pretixpresale/js/widget/widget.js:42 -#, fuzzy -#| msgctxt "widget" -#| msgid "currently available: %s" msgctxt "widget" msgid "Currently not available" -msgstr "nu beschikbaar: %s" +msgstr "Momenteel niet beschikbaar" #: pretix/static/pretixpresale/js/widget/widget.js:44 #, javascript-format @@ -999,12 +963,9 @@ msgid "Open ticket shop" msgstr "Open de kaartjeswinkel" #: pretix/static/pretixpresale/js/widget/widget.js:50 -#, fuzzy -#| msgctxt "widget" -#| msgid "Resume checkout" msgctxt "widget" msgid "Checkout" -msgstr "Doorgaan met afrekenen" +msgstr "Afrekenen" #: pretix/static/pretixpresale/js/widget/widget.js:51 msgctxt "widget" @@ -1063,12 +1024,9 @@ msgid "Close" msgstr "Sluiten" #: pretix/static/pretixpresale/js/widget/widget.js:62 -#, fuzzy -#| msgctxt "widget" -#| msgid "Resume checkout" msgctxt "widget" msgid "Close checkout" -msgstr "Doorgaan met afrekenen" +msgstr "Afrekening afsluiten" #: pretix/static/pretixpresale/js/widget/widget.js:63 msgctxt "widget" @@ -1081,20 +1039,14 @@ msgid "Continue" msgstr "Ga verder" #: pretix/static/pretixpresale/js/widget/widget.js:65 -#, fuzzy -#| msgctxt "widget" -#| msgid "See variations" msgctxt "widget" msgid "Show variants" -msgstr "Zie variaties" +msgstr "Varianten weergeven" #: pretix/static/pretixpresale/js/widget/widget.js:66 -#, fuzzy -#| msgctxt "widget" -#| msgid "See variations" msgctxt "widget" msgid "Hide variants" -msgstr "Zie variaties" +msgstr "Varianten verbergen" #: pretix/static/pretixpresale/js/widget/widget.js:67 msgctxt "widget" @@ -1218,7 +1170,7 @@ msgstr "februari" #: pretix/static/pretixpresale/js/widget/widget.js:96 msgid "March" -msgstr "Maart" +msgstr "maart" #: pretix/static/pretixpresale/js/widget/widget.js:97 msgid "April" @@ -1226,7 +1178,7 @@ msgstr "april" #: pretix/static/pretixpresale/js/widget/widget.js:98 msgid "May" -msgstr "Mei" +msgstr "mei" #: pretix/static/pretixpresale/js/widget/widget.js:99 msgid "June" @@ -1242,7 +1194,7 @@ msgstr "augustus" #: pretix/static/pretixpresale/js/widget/widget.js:102 msgid "September" -msgstr "September" +msgstr "september" #: pretix/static/pretixpresale/js/widget/widget.js:103 msgid "October" @@ -1250,11 +1202,11 @@ msgstr "oktober" #: pretix/static/pretixpresale/js/widget/widget.js:104 msgid "November" -msgstr "November" +msgstr "november" #: pretix/static/pretixpresale/js/widget/widget.js:105 msgid "December" -msgstr "December" +msgstr "december" #~ msgid "Time zone:" #~ msgstr "Tijdzone:" From 7ca2a0c910a00e82258181c14f884c07f6770ad7 Mon Sep 17 00:00:00 2001 From: robbi5 Date: Tue, 27 Jan 2026 16:12:35 +0100 Subject: [PATCH 010/108] Remove duplicate device/revoke from api documentation --- doc/api/deviceauth.rst | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/doc/api/deviceauth.rst b/doc/api/deviceauth.rst index acf3d22a82..494268a77b 100644 --- a/doc/api/deviceauth.rst +++ b/doc/api/deviceauth.rst @@ -208,20 +208,6 @@ Additionally, when creating a device through the user interface or API, a user c the device. These include an allow list of specific API calls that may be made by the device. pretix ships with security policies for official pretix apps like pretixSCAN and pretixPOS. -Removing a device ------------------ - -If you want implement a way to to deprovision a device in your software, you can call the ``revoke`` endpoint to -invalidate your API key. There is no way to reverse this operation. - -.. sourcecode:: http - - POST /api/v1/device/revoke HTTP/1.1 - Host: pretix.eu - Authorization: Device 1kcsh572fonm3hawalrncam4l1gktr2rzx25a22l8g9hx108o9oi0rztpcvwnfnd - -This can also be done by the user through the web interface. - Event selection --------------- From 1492ec51bf6682bf73456fafe4753a0ec27433e5 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Fri, 30 Jan 2026 08:59:34 +0100 Subject: [PATCH 011/108] Limit organizer ical to 1000 entries --- src/pretix/presale/views/organizer.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/pretix/presale/views/organizer.py b/src/pretix/presale/views/organizer.py index ecc123a05a..72f880ccdd 100644 --- a/src/pretix/presale/views/organizer.py +++ b/src/pretix/presale/views/organizer.py @@ -1300,6 +1300,8 @@ class DayCalendarView(OrganizerViewMixin, EventListMixin, TemplateView): class OrganizerIcalDownload(OrganizerViewMixin, View): def get(self, request, *args, **kwargs): cutoff = now() - timedelta(days=31) + # generally limit to 1000 entries as this seems to be a limitation on ics-files for some calendar software + limit = 1000 events = list( filter_qs_by_attr( self.request.organizer.events.filter( @@ -1318,7 +1320,7 @@ class OrganizerIcalDownload(OrganizerViewMixin, View): 'organizer', queryset=Organizer.objects.prefetch_related('_settings_objects') ) - ) + )[:limit] ) events += list( filter_qs_by_attr( @@ -1346,8 +1348,11 @@ class OrganizerIcalDownload(OrganizerViewMixin, View): ) ).order_by( 'date_from' - ) + )[:limit] ) + if len(events) > limit: + events.sort(key=lambda e: e.date_from) + events = events[:limit] if 'locale' in request.GET and request.GET.get('locale') in dict(settings.LANGUAGES): with language(request.GET.get('locale'), self.request.organizer.settings.region): From c40e34af57055558a0901d9fe9caebbd3d237735 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Fri, 30 Jan 2026 10:43:02 +0100 Subject: [PATCH 012/108] Model-based mail queuing --- src/pretix/api/serializers/organizer.py | 35 +- src/pretix/api/views/order.py | 12 +- src/pretix/base/invoicing/email.py | 74 +- .../base/migrations/0297_outgoingmail.py | 120 ++ src/pretix/base/models/__init__.py | 1 + src/pretix/base/models/auth.py | 35 +- src/pretix/base/models/customers.py | 1 + src/pretix/base/models/mail.py | 222 ++++ src/pretix/base/models/orders.py | 156 +-- src/pretix/base/models/waitinglist.py | 54 +- src/pretix/base/services/cancelevent.py | 49 +- src/pretix/base/services/cleanup.py | 16 +- src/pretix/base/services/mail.py | 1076 ++++++++++------- src/pretix/base/services/notifications.py | 32 +- src/pretix/base/services/orders.py | 173 ++- src/pretix/base/services/shredder.py | 35 +- src/pretix/base/shredder.py | 6 +- src/pretix/base/signals.py | 12 +- src/pretix/control/forms/filter.py | 63 +- src/pretix/control/forms/organizer.py | 1 + src/pretix/control/logdisplay.py | 2 + src/pretix/control/navigation.py | 9 + .../organizers/outgoing_mail.html | 222 ++++ .../organizers/outgoing_mails.html | 185 +++ src/pretix/control/urls.py | 8 +- src/pretix/control/views/auth.py | 4 - src/pretix/control/views/mail.py | 183 +++ src/pretix/control/views/orders.py | 85 +- src/pretix/control/views/organizer.py | 36 +- src/pretix/control/views/users.py | 7 +- src/pretix/helpers/database.py | 15 +- src/pretix/helpers/security.py | 35 +- src/pretix/plugins/banktransfer/tasks.py | 15 +- src/pretix/plugins/banktransfer/views.py | 6 - src/pretix/plugins/paypal/payment.py | 4 - src/pretix/plugins/paypal2/payment.py | 4 - src/pretix/plugins/sendmail/models.py | 59 +- src/pretix/plugins/sendmail/tasks.py | 81 +- src/pretix/plugins/stripe/payment.py | 4 - src/pretix/presale/checkoutflow.py | 5 - src/pretix/presale/views/customer.py | 1 + src/pretix/presale/views/order.py | 6 +- src/pretix/presale/views/user.py | 12 +- src/pretix/settings.py | 2 + .../pretixcontrol/js/ui/outgoingmail.js | 43 + .../pretixcontrol/scss/_mail_preview.scss | 5 + src/pretix/testutils/mail.py | 5 + src/tests/base/test_mail.py | 100 +- src/tests/base/test_shredders.py | 12 +- src/tests/control/test_organizer.py | 111 +- src/tests/control/test_permissions.py | 6 + 51 files changed, 2415 insertions(+), 1030 deletions(-) create mode 100644 src/pretix/base/migrations/0297_outgoingmail.py create mode 100644 src/pretix/base/models/mail.py create mode 100644 src/pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html create mode 100644 src/pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html create mode 100644 src/pretix/control/views/mail.py create mode 100644 src/pretix/static/pretixcontrol/js/ui/outgoingmail.js diff --git a/src/pretix/api/serializers/organizer.py b/src/pretix/api/serializers/organizer.py index ce3ed39b72..6d8f6743b9 100644 --- a/src/pretix/api/serializers/organizer.py +++ b/src/pretix/api/serializers/organizer.py @@ -49,7 +49,7 @@ from pretix.base.plugins import ( PLUGIN_LEVEL_EVENT, PLUGIN_LEVEL_EVENT_ORGANIZER_HYBRID, PLUGIN_LEVEL_ORGANIZER, ) -from pretix.base.services.mail import SendMailException, mail +from pretix.base.services.mail import mail from pretix.base.settings import validate_organizer_settings from pretix.helpers.urls import build_absolute_uri as build_global_uri from pretix.multidomain.urlreverse import build_absolute_uri @@ -363,24 +363,21 @@ class TeamInviteSerializer(serializers.ModelSerializer): ) def _send_invite(self, instance): - try: - mail( - instance.email, - _('pretix account invitation'), - 'pretixcontrol/email/invitation.txt', - { - 'user': self, - 'organizer': self.context['organizer'].name, - 'team': instance.team.name, - 'url': build_global_uri('control:auth.invite', kwargs={ - 'token': instance.token - }) - }, - event=None, - locale=get_language_without_region() # TODO: expose? - ) - except SendMailException: - pass # Already logged + mail( + instance.email, + _('pretix account invitation'), + 'pretixcontrol/email/invitation.txt', + { + 'user': self, + 'organizer': self.context['organizer'].name, + 'team': instance.team.name, + 'url': build_global_uri('control:auth.invite', kwargs={ + 'token': instance.token + }) + }, + event=None, + locale=get_language_without_region() # TODO: expose? + ) def create(self, validated_data): if 'email' in validated_data: diff --git a/src/pretix/api/views/order.py b/src/pretix/api/views/order.py index 2b5a7f82bd..8ec7828763 100644 --- a/src/pretix/api/views/order.py +++ b/src/pretix/api/views/order.py @@ -90,7 +90,6 @@ from pretix.base.services.invoices import ( generate_cancellation, generate_invoice, invoice_pdf, invoice_qualified, regenerate_invoice, transmit_invoice, ) -from pretix.base.services.mail import SendMailException from pretix.base.services.orders import ( OrderChangeManager, OrderError, _order_placed_email, _order_placed_email_attendee, approve_order, cancel_order, deny_order, @@ -439,8 +438,6 @@ class EventOrderViewSet(OrderViewSetMixin, viewsets.ModelViewSet): return Response({'detail': str(e)}, status=status.HTTP_400_BAD_REQUEST) except PaymentException as e: return Response({'detail': str(e)}, status=status.HTTP_400_BAD_REQUEST) - except SendMailException: - pass return self.retrieve(request, [], **kwargs) return Response( @@ -634,10 +631,7 @@ class EventOrderViewSet(OrderViewSetMixin, viewsets.ModelViewSet): order = self.get_object() if not order.email: return Response({'detail': 'There is no email address associated with this order.'}, status=status.HTTP_400_BAD_REQUEST) - try: - order.resend_link(user=self.request.user, auth=self.request.auth) - except SendMailException: - return Response({'detail': _('There was an error sending the mail. Please try again later.')}, status=status.HTTP_503_SERVICE_UNAVAILABLE) + order.resend_link(user=self.request.user, auth=self.request.auth) return Response( status=status.HTTP_204_NO_CONTENT @@ -1616,8 +1610,6 @@ class PaymentViewSet(CreateModelMixin, viewsets.ReadOnlyModelViewSet): ) except Quota.QuotaExceededException: pass - except SendMailException: - pass serializer = OrderPaymentSerializer(r, context=serializer.context) @@ -1655,8 +1647,6 @@ class PaymentViewSet(CreateModelMixin, viewsets.ReadOnlyModelViewSet): return Response({'detail': str(e)}, status=status.HTTP_400_BAD_REQUEST) except PaymentException as e: return Response({'detail': str(e)}, status=status.HTTP_400_BAD_REQUEST) - except SendMailException: - pass return self.retrieve(request, [], **kwargs) @action(detail=True, methods=['POST']) diff --git a/src/pretix/base/invoicing/email.py b/src/pretix/base/invoicing/email.py index d3064af778..155e7906a0 100644 --- a/src/pretix/base/invoicing/email.py +++ b/src/pretix/base/invoicing/email.py @@ -33,7 +33,7 @@ from pretix.base.invoicing.transmission import ( transmission_types, ) from pretix.base.models import Invoice, InvoiceAddress -from pretix.base.services.mail import SendMailException, mail, render_mail +from pretix.base.services.mail import mail, render_mail from pretix.helpers.format import format_map @@ -133,41 +133,37 @@ class EmailTransmissionProvider(TransmissionProvider): template = invoice.order.event.settings.get('mail_text_order_invoice', as_type=LazyI18nString) subject = invoice.order.event.settings.get('mail_subject_order_invoice', as_type=LazyI18nString) - try: - # Do not set to completed because that is done by the email sending task - subject = format_map(subject, context) - email_content = render_mail(template, context) - mail( - [recipient], - subject, - template, - context=context, - event=invoice.order.event, - locale=invoice.order.locale, - order=invoice.order, - invoices=[invoice], - attach_tickets=False, - auto_email=True, - attach_ical=False, - plain_text_only=True, - no_order_links=True, - ) - except SendMailException: - raise - else: - invoice.order.log_action( - 'pretix.event.order.email.invoice', - user=None, - auth=None, - data={ - 'subject': subject, - 'message': email_content, - 'position': None, - 'recipient': recipient, - 'invoices': [invoice.pk], - 'attach_tickets': False, - 'attach_ical': False, - 'attach_other_files': [], - 'attach_cached_files': [], - } - ) + # Do not set to completed because that is done by the email sending task + subject = format_map(subject, context) + email_content = render_mail(template, context) + mail( + [recipient], + subject, + template, + context=context, + event=invoice.order.event, + locale=invoice.order.locale, + order=invoice.order, + invoices=[invoice], + attach_tickets=False, + auto_email=True, + attach_ical=False, + plain_text_only=True, + no_order_links=True, + ) + invoice.order.log_action( + 'pretix.event.order.email.invoice', + user=None, + auth=None, + data={ + 'subject': subject, + 'message': email_content, + 'position': None, + 'recipient': recipient, + 'invoices': [invoice.pk], + 'attach_tickets': False, + 'attach_ical': False, + 'attach_other_files': [], + 'attach_cached_files': [], + } + ) diff --git a/src/pretix/base/migrations/0297_outgoingmail.py b/src/pretix/base/migrations/0297_outgoingmail.py new file mode 100644 index 0000000000..034d77ac4e --- /dev/null +++ b/src/pretix/base/migrations/0297_outgoingmail.py @@ -0,0 +1,120 @@ +# Generated by Django 4.2.26 on 2026-01-22 13:44 +import uuid + +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + +import pretix.base.models.mail + + +class Migration(migrations.Migration): + + dependencies = [ + ("pretixbase", "0296_invoice_invoice_from_state"), + ] + + operations = [ + migrations.CreateModel( + name="OutgoingMail", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, primary_key=True, serialize=False + ), + ), + ("guid", models.UUIDField(db_index=True, default=uuid.uuid4)), + ("status", models.CharField(default="queued", max_length=200)), + ("created", models.DateTimeField(auto_now_add=True)), + ("sent", models.DateTimeField(blank=True, null=True)), + ("inflight_since", models.DateTimeField(blank=True, null=True)), + ("retry_after", models.DateTimeField(blank=True, null=True)), + ("error", models.TextField(null=True)), + ("error_detail", models.TextField(null=True)), + ("sensitive", models.BooleanField(default=False)), + ("subject", models.TextField()), + ("body_plain", models.TextField()), + ("body_html", models.TextField(null=True)), + ("sender", models.CharField(max_length=500)), + ("headers", models.JSONField(default=dict)), + ("to", models.JSONField(default=list)), + ("cc", models.JSONField(default=list)), + ("bcc", models.JSONField(default=list)), + ("recipient_count", models.IntegerField()), + ("should_attach_tickets", models.BooleanField(default=False)), + ("should_attach_ical", models.BooleanField(default=False)), + ("should_attach_other_files", models.JSONField(default=list)), + ("actual_attachments", models.JSONField(default=list)), + ( + "customer", + models.ForeignKey( + null=True, + on_delete=pretix.base.models.mail.CASCADE_IF_QUEUED, + related_name="outgoing_mails", + to="pretixbase.customer", + ), + ), + ( + "event", + models.ForeignKey( + null=True, + on_delete=pretix.base.models.mail.CASCADE_IF_QUEUED, + related_name="outgoing_mails", + to="pretixbase.event", + ), + ), + ( + "order", + models.ForeignKey( + null=True, + on_delete=pretix.base.models.mail.CASCADE_IF_QUEUED, + related_name="outgoing_mails", + to="pretixbase.order", + ), + ), + ( + "orderposition", + models.ForeignKey( + null=True, + on_delete=pretix.base.models.mail.CASCADE_IF_QUEUED, + related_name="outgoing_mails", + to="pretixbase.orderposition", + ), + ), + ( + "organizer", + models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="outgoing_mails", + to="pretixbase.organizer", + ), + ), + ( + "should_attach_cached_files", + models.ManyToManyField( + related_name="outgoing_mails", to="pretixbase.cachedfile" + ), + ), + ( + "should_attach_invoices", + models.ManyToManyField( + related_name="outgoing_mails", to="pretixbase.invoice" + ), + ), + ( + "user", + models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="outgoing_mails", + to=settings.AUTH_USER_MODEL, + ), + ), + ], + options={ + "ordering": ("-created",), + }, + ), + ] diff --git a/src/pretix/base/models/__init__.py b/src/pretix/base/models/__init__.py index 372fc8287c..3657cfb4c2 100644 --- a/src/pretix/base/models/__init__.py +++ b/src/pretix/base/models/__init__.py @@ -41,6 +41,7 @@ from .items import ( itempicture_upload_to, ) from .log import LogEntry +from .mail import OutgoingMail from .media import ReusableMedium from .memberships import Membership, MembershipType from .notifications import NotificationSetting diff --git a/src/pretix/base/models/auth.py b/src/pretix/base/models/auth.py index 44ff3587d6..0d2ba97a27 100644 --- a/src/pretix/base/models/auth.py +++ b/src/pretix/base/models/auth.py @@ -334,27 +334,24 @@ class User(AbstractBaseUser, PermissionsMixin, LoggingMixin): return self.email def send_security_notice(self, messages, email=None): - from pretix.base.services.mail import SendMailException, mail + from pretix.base.services.mail import mail - try: - with language(self.locale): - msg = '- ' + '\n- '.join(str(m) for m in messages) + with language(self.locale): + msg = '- ' + '\n- '.join(str(m) for m in messages) - mail( - email or self.email, - _('Account information changed'), - 'pretixcontrol/email/security_notice.txt', - { - 'user': self, - 'messages': msg, - 'url': build_absolute_uri('control:user.settings') - }, - event=None, - user=self, - locale=self.locale - ) - except SendMailException: - pass # Already logged + mail( + email or self.email, + _('Account information changed'), + 'pretixcontrol/email/security_notice.txt', + { + 'user': self, + 'messages': msg, + 'url': build_absolute_uri('control:user.settings') + }, + event=None, + user=self, + locale=self.locale + ) def send_confirmation_code(self, session, reason, email=None, state=None): """ diff --git a/src/pretix/base/models/customers.py b/src/pretix/base/models/customers.py index d7d34db98d..51fbd7490b 100644 --- a/src/pretix/base/models/customers.py +++ b/src/pretix/base/models/customers.py @@ -293,6 +293,7 @@ class Customer(LoggedModel): locale=self.locale, customer=self, organizer=self.organizer, + sensitive=True, ) def usable_gift_cards(self, used_cards=[]): diff --git a/src/pretix/base/models/mail.py b/src/pretix/base/models/mail.py new file mode 100644 index 0000000000..2128c28592 --- /dev/null +++ b/src/pretix/base/models/mail.py @@ -0,0 +1,222 @@ +# +# 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 +# . +# +import uuid + +from django.core.mail import get_connection +from django.db import models +from django.utils.translation import gettext_lazy as _ +from django_scopes import scope, scopes_disabled + + +def CASCADE_IF_QUEUED(collector, field, sub_objs, using): + # If the email is still queued and the thing it is related to vanishes, the email can vanish as well + cascade_objs = [ + o for o in sub_objs if o.status == OutgoingMail.STATUS_QUEUED + ] + if cascade_objs: + models.CASCADE(collector, field, cascade_objs, using) + + # In all other cases, set to NULL to keep the email on record + models.SET_NULL(collector, field, [o for o in sub_objs if o not in cascade_objs], using) + + +class OutgoingMail(models.Model): + STATUS_QUEUED = "queued" + STATUS_WITHHELD = "withheld" + STATUS_INFLIGHT = "inflight" + STATUS_AWAITING_RETRY = "awaiting_retry" + STATUS_FAILED = "failed" + STATUS_SENT = "sent" + STATUS_BOUNCED = "bounced" + STATUS_ABORTED = "aborted" + STATUS_CHOICES = ( + (STATUS_QUEUED, _("queued")), + (STATUS_INFLIGHT, _("being sent")), + (STATUS_AWAITING_RETRY, _("awaiting retry")), + (STATUS_WITHHELD, _("withheld")), # for plugin use + (STATUS_FAILED, _("failed")), + (STATUS_ABORTED, _("aborted")), + (STATUS_SENT, _("sent")), + (STATUS_BOUNCED, _("bounced")), # for plugin use + ) + STATUS_LIST_ABORTABLE = { + STATUS_QUEUED, + STATUS_WITHHELD, + STATUS_AWAITING_RETRY, + } + STATUS_LIST_RETRYABLE = { + STATUS_FAILED, + STATUS_WITHHELD, + } + + # The GUID is a globally unique ID for the email added to a header of the email for later tracing + # in bug reports etc. We could theoretically also use this as a basis for the Message-ID header, but + # we currently don't since we are unsure if some intermediary SMTP servers have opinions on setting + # their own Message-ID headers. + guid = models.UUIDField(db_index=True, default=uuid.uuid4) + + status = models.CharField(max_length=200, choices=STATUS_CHOICES, default=STATUS_QUEUED) + created = models.DateTimeField(auto_now_add=True) + + # sent will be the time the email was sent or the email failed + sent = models.DateTimeField(null=True, blank=True) + + inflight_since = models.DateTimeField(null=True, blank=True) + retry_after = models.DateTimeField(null=True, blank=True) + + error = models.TextField(null=True, blank=True) + error_detail = models.TextField(null=True, blank=True) + + # There is a conflict here between the different purposes of the model. As a system administrator, + # one wants *all* emails to be persisted as long as possible to debug issues. This means that if + # e.g. the event or order is deleted, we want SET_NULL behavior. However, in that case, the email + # would be an "orphan" forever and there's no way to remove the personal information. + # We try to find a middle-ground with the following behaviour: + # - The email is always deleted if the entire organizer or user is deleted + # - The email is always deleted if it has not yet been sent + # - The email is kept in all other cases + # This is only an acceptable trade-off since emails are stored for a short period only, and because + # orders and customers are never deleted during normal operation. If we ever make this a long-term + # storage / email archive, we'd need to find another way to make sure personal information is removed + # if personal information of orders etc is removed. + organizer = models.ForeignKey( + 'pretixbase.Organizer', + on_delete=models.CASCADE, + related_name='outgoing_mails', + null=True, blank=True, + ) + event = models.ForeignKey( + 'pretixbase.Event', + on_delete=CASCADE_IF_QUEUED, + related_name='outgoing_mails', + null=True, blank=True, + ) + order = models.ForeignKey( + 'pretixbase.Order', + on_delete=CASCADE_IF_QUEUED, + related_name='outgoing_mails', + null=True, blank=True, + ) + orderposition = models.ForeignKey( + 'pretixbase.OrderPosition', + on_delete=CASCADE_IF_QUEUED, + related_name='outgoing_mails', + null=True, blank=True, + ) + customer = models.ForeignKey( + 'pretixbase.Customer', + on_delete=CASCADE_IF_QUEUED, + related_name='outgoing_mails', + null=True, blank=True, + ) + user = models.ForeignKey( + 'pretixbase.User', + on_delete=models.CASCADE, + related_name='outgoing_mails', + null=True, blank=True, + ) + + sensitive = models.BooleanField(default=False) + subject = models.TextField() + body_plain = models.TextField() + body_html = models.TextField(null=True) + sender = models.CharField(max_length=500) + headers = models.JSONField(default=dict) + to = models.JSONField(default=list) + cc = models.JSONField(default=list) + bcc = models.JSONField(default=list) + recipient_count = models.IntegerField() + + # We don't store the actual invoices, tickets or calendar invites, so if the email is re-sent at a later time, a + # newer version of the files might be used. We accept that risk to save on storage and also because the new + # version might actually be more useful. + should_attach_invoices = models.ManyToManyField( + 'pretixbase.Invoice', + related_name='outgoing_mails' + ) + should_attach_tickets = models.BooleanField(default=False) + should_attach_ical = models.BooleanField(default=False) + + # clean_cached_files makes sure not to delete these as long as the email is in a retryable state + should_attach_cached_files = models.ManyToManyField( + 'pretixbase.CachedFile', + related_name='outgoing_mails', + ) + + # This is used to send files stored in settings. In most cases, these aren't short-lived and should still be there + # if the email is sent. Otherwise, they will be skipped. We accept that risk. + should_attach_other_files = models.JSONField(default=list) + + # [{name, type size}] of the attachments we actually setn + actual_attachments = models.JSONField(default=list) + + class Meta: + ordering = ('-created',) + + def get_mail_backend(self): + if self.event: + return self.event.get_mail_backend() + elif self.organizer: + return self.organizer.get_mail_backend() + else: + return get_connection(fail_silently=False) + + def scope_manager(self): + if self.organizer: + return scope(organizer=self.organizer) # noqa + else: + return scopes_disabled() # noqa + + @property + def is_failed(self): + return self.status in ( + OutgoingMail.STATUS_FAILED, + OutgoingMail.STATUS_AWAITING_RETRY, + OutgoingMail.STATUS_BOUNCED, + ) + + def save(self, *args, **kwargs): + if self.orderposition_id and not self.order_id: + self.order = self.orderposition.order + if self.order_id and not self.event_id: + self.event = self.order.event + if self.event_id and not self.organizer_id: + self.organizer = self.event.organizer + if self.customer_id and not self.organizer_id: + self.organizer = self.customer.organizer + self.recipient_count = len(self.to) + len(self.cc) + len(self.bcc) + super().save(*args, **kwargs) + + def log_parameters(self): + if self.order: + error_log_action_type = 'pretix.event.order.email.error' + log_target = self.order + elif self.customer: + error_log_action_type = 'pretix.customer.email.error' + log_target = self.customer + elif self.user: + error_log_action_type = 'pretix.user.email.error' + log_target = self.user + else: + error_log_action_type = 'pretix.email.error' + log_target = None + return log_target, error_log_action_type diff --git a/src/pretix/base/models/orders.py b/src/pretix/base/models/orders.py index c9c4da8719..6ae0e027af 100644 --- a/src/pretix/base/models/orders.py +++ b/src/pretix/base/models/orders.py @@ -1167,9 +1167,7 @@ class Order(LockModel, LoggedModel): only be attached for this position and child positions, the link will only point to the position and the attendee email will be used if available. """ - from pretix.base.services.mail import ( - SendMailException, mail, render_mail, - ) + from pretix.base.services.mail import mail, render_mail if not self.email and not (position and position.attendee_email): return @@ -1179,35 +1177,31 @@ class Order(LockModel, LoggedModel): if position and position.attendee_email: recipient = position.attendee_email - try: - email_content = render_mail(template, context) - subject = format_map(subject, context) - mail( - recipient, subject, template, context, - self.event, self.locale, self, headers=headers, sender=sender, - invoices=invoices, attach_tickets=attach_tickets, - position=position, auto_email=auto_email, attach_ical=attach_ical, - attach_other_files=attach_other_files, attach_cached_files=attach_cached_files, - ) - except SendMailException: - raise - else: - self.log_action( - log_entry_type, - user=user, - auth=auth, - data={ - 'subject': subject, - 'message': email_content, - 'position': position.positionid if position else None, - 'recipient': recipient, - 'invoices': [i.pk for i in invoices] if invoices else [], - 'attach_tickets': attach_tickets, - 'attach_ical': attach_ical, - 'attach_other_files': attach_other_files, - 'attach_cached_files': [cf.filename for cf in attach_cached_files] if attach_cached_files else [], - } - ) + email_content = render_mail(template, context) + subject = format_map(subject, context) + mail( + recipient, subject, template, context, + self.event, self.locale, self, headers=headers, sender=sender, + invoices=invoices, attach_tickets=attach_tickets, + position=position, auto_email=auto_email, attach_ical=attach_ical, + attach_other_files=attach_other_files, attach_cached_files=attach_cached_files, + ) + self.log_action( + log_entry_type, + user=user, + auth=auth, + data={ + 'subject': subject, + 'message': email_content, + 'position': position.positionid if position else None, + 'recipient': recipient, + 'invoices': [i.pk for i in invoices] if invoices else [], + 'attach_tickets': attach_tickets, + 'attach_ical': attach_ical, + 'attach_other_files': attach_other_files, + 'attach_cached_files': [cf.filename for cf in attach_cached_files] if attach_cached_files else [], + } + ) def resend_link(self, user=None, auth=None): with language(self.locale, self.event.settings.region): @@ -2024,40 +2018,30 @@ class OrderPayment(models.Model): transmit_invoice.apply_async(args=(self.order.event_id, invoice.pk, False)) def _send_paid_mail_attendee(self, position, user): - from pretix.base.services.mail import SendMailException - with language(self.order.locale, self.order.event.settings.region): email_template = self.order.event.settings.mail_text_order_paid_attendee email_subject = self.order.event.settings.mail_subject_order_paid_attendee email_context = get_email_context(event=self.order.event, order=self.order, position=position) - try: - position.send_mail( - email_subject, email_template, email_context, - 'pretix.event.order.email.order_paid', user, - invoices=[], - attach_tickets=True, - attach_ical=self.order.event.settings.mail_attach_ical - ) - except SendMailException: - logger.exception('Order paid email could not be sent') + position.send_mail( + email_subject, email_template, email_context, + 'pretix.event.order.email.order_paid', user, + invoices=[], + attach_tickets=True, + attach_ical=self.order.event.settings.mail_attach_ical + ) def _send_paid_mail(self, invoice, user, mail_text): - from pretix.base.services.mail import SendMailException - with language(self.order.locale, self.order.event.settings.region): email_template = self.order.event.settings.mail_text_order_paid email_subject = self.order.event.settings.mail_subject_order_paid email_context = get_email_context(event=self.order.event, order=self.order, payment_info=mail_text) - try: - self.order.send_mail( - email_subject, email_template, email_context, - 'pretix.event.order.email.order_paid', user, - invoices=[invoice] if invoice else [], - attach_tickets=True, - attach_ical=self.order.event.settings.mail_attach_ical - ) - except SendMailException: - logger.exception('Order paid email could not be sent') + self.order.send_mail( + email_subject, email_template, email_context, + 'pretix.event.order.email.order_paid', user, + invoices=[invoice] if invoice else [], + attach_tickets=True, + attach_ical=self.order.event.settings.mail_attach_ical + ) @property def refunded_amount(self): @@ -2915,45 +2899,39 @@ class OrderPosition(AbstractPosition): :param attach_tickets: Attach tickets of this order, if they are existing and ready to download :param attach_ical: Attach relevant ICS files """ - from pretix.base.services.mail import ( - SendMailException, mail, render_mail, - ) + from pretix.base.services.mail import mail, render_mail if not self.attendee_email: return with language(self.order.locale, self.order.event.settings.region): recipient = self.attendee_email - try: - email_content = render_mail(template, context) - subject = format_map(subject, context) - mail( - recipient, subject, template, context, - self.event, self.order.locale, order=self.order, headers=headers, sender=sender, - position=self, - invoices=invoices, - attach_tickets=attach_tickets, - attach_ical=attach_ical, - attach_other_files=attach_other_files, - ) - except SendMailException: - raise - else: - self.order.log_action( - log_entry_type, - user=user, - auth=auth, - data={ - 'subject': subject, - 'message': email_content, - 'recipient': recipient, - 'invoices': [i.pk for i in invoices] if invoices else [], - 'attach_tickets': attach_tickets, - 'attach_ical': attach_ical, - 'attach_other_files': attach_other_files, - 'attach_cached_files': [], - } - ) + email_content = render_mail(template, context) + subject = format_map(subject, context) + mail( + recipient, subject, template, context, + self.event, self.order.locale, order=self.order, headers=headers, sender=sender, + position=self, + invoices=invoices, + attach_tickets=attach_tickets, + attach_ical=attach_ical, + attach_other_files=attach_other_files, + ) + self.order.log_action( + log_entry_type, + user=user, + auth=auth, + data={ + 'subject': subject, + 'message': email_content, + 'recipient': recipient, + 'invoices': [i.pk for i in invoices] if invoices else [], + 'attach_tickets': attach_tickets, + 'attach_ical': attach_ical, + 'attach_other_files': attach_other_files, + 'attach_cached_files': [], + } + ) def resend_link(self, user=None, auth=None): diff --git a/src/pretix/base/models/waitinglist.py b/src/pretix/base/models/waitinglist.py index 68d46cac41..6ae14591c2 100644 --- a/src/pretix/base/models/waitinglist.py +++ b/src/pretix/base/models/waitinglist.py @@ -34,7 +34,7 @@ from phonenumber_field.modelfields import PhoneNumberField from pretix.base.email import get_email_context from pretix.base.i18n import language from pretix.base.models import User, Voucher -from pretix.base.services.mail import SendMailException, mail, render_mail +from pretix.base.services.mail import mail, render_mail from pretix.helpers import OF_SELF from ...helpers.format import format_map @@ -272,34 +272,30 @@ class WaitingListEntry(LoggedModel): with language(self.locale, self.event.settings.region): recipient = self.email - try: - email_content = render_mail(template, context) - subject = format_map(subject, context) - mail( - recipient, subject, template, context, - self.event, - self.locale, - headers=headers, - sender=sender, - auto_email=auto_email, - attach_other_files=attach_other_files, - attach_cached_files=attach_cached_files, - ) - except SendMailException: - raise - else: - self.log_action( - log_entry_type, - user=user, - auth=auth, - data={ - 'subject': subject, - 'message': email_content, - 'recipient': recipient, - 'attach_other_files': attach_other_files, - 'attach_cached_files': [cf.filename for cf in attach_cached_files] if attach_cached_files else [], - } - ) + email_content = render_mail(template, context) + subject = format_map(subject, context) + mail( + recipient, subject, template, context, + self.event, + self.locale, + headers=headers, + sender=sender, + auto_email=auto_email, + attach_other_files=attach_other_files, + attach_cached_files=attach_cached_files, + ) + self.log_action( + log_entry_type, + user=user, + auth=auth, + data={ + 'subject': subject, + 'message': email_content, + 'recipient': recipient, + 'attach_other_files': attach_other_files, + 'attach_cached_files': [cf.filename for cf in attach_cached_files] if attach_cached_files else [], + } + ) @staticmethod def clean_itemvar(event, item, variation): diff --git a/src/pretix/base/services/cancelevent.py b/src/pretix/base/services/cancelevent.py index 694ea35987..012f01b85d 100644 --- a/src/pretix/base/services/cancelevent.py +++ b/src/pretix/base/services/cancelevent.py @@ -36,7 +36,7 @@ from pretix.base.models import ( SubEvent, TaxRule, User, WaitingListEntry, ) from pretix.base.services.locking import LockTimeoutException -from pretix.base.services.mail import SendMailException, mail +from pretix.base.services.mail import mail from pretix.base.services.orders import ( OrderChangeManager, OrderError, _cancel_order, _try_auto_refund, ) @@ -53,17 +53,14 @@ logger = logging.getLogger(__name__) def _send_wle_mail(wle: WaitingListEntry, subject: LazyI18nString, message: LazyI18nString, subevent: SubEvent): with language(wle.locale, wle.event.settings.region): email_context = get_email_context(event_or_subevent=subevent or wle.event, event=wle.event) - try: - mail( - wle.email, - format_map(subject, email_context), - message, - email_context, - wle.event, - locale=wle.locale - ) - except SendMailException: - logger.exception('Waiting list canceled email could not be sent') + mail( + wle.email, + format_map(subject, email_context), + message, + email_context, + wle.event, + locale=wle.locale + ) def _send_mail(order: Order, subject: LazyI18nString, message: LazyI18nString, subevent: SubEvent, @@ -77,14 +74,11 @@ def _send_mail(order: Order, subject: LazyI18nString, message: LazyI18nString, s email_context = get_email_context(event_or_subevent=subevent or order.event, refund_amount=refund_amount, order=order, position_or_address=ia, event=order.event) real_subject = format_map(subject, email_context) - try: - order.send_mail( - real_subject, message, email_context, - 'pretix.event.order.email.event_canceled', - user, - ) - except SendMailException: - logger.exception('Order canceled email could not be sent') + order.send_mail( + real_subject, message, email_context, + 'pretix.event.order.email.event_canceled', + user, + ) for p in positions: if subevent and p.subevent_id != subevent.id: @@ -97,15 +91,12 @@ def _send_mail(order: Order, subject: LazyI18nString, message: LazyI18nString, s refund_amount=refund_amount, position_or_address=p, order=order, position=p) - try: - order.send_mail( - real_subject, message, email_context, - 'pretix.event.order.email.event_canceled', - position=p, - user=user - ) - except SendMailException: - logger.exception('Order canceled email could not be sent to attendee') + order.send_mail( + real_subject, message, email_context, + 'pretix.event.order.email.event_canceled', + position=p, + user=user + ) @app.task(base=ProfiledEventTask, bind=True, max_retries=5, default_retry_delay=1, throws=(OrderError,)) diff --git a/src/pretix/base/services/cleanup.py b/src/pretix/base/services/cleanup.py index 6667b2c3f5..41376b920f 100644 --- a/src/pretix/base/services/cleanup.py +++ b/src/pretix/base/services/cleanup.py @@ -23,11 +23,12 @@ from datetime import timedelta from django.conf import settings from django.core.management import call_command +from django.db.models import Exists, OuterRef from django.dispatch import receiver from django.utils.timezone import now from django_scopes import scopes_disabled -from pretix.base.models import CachedCombinedTicket, CachedTicket +from pretix.base.models import CachedCombinedTicket, CachedTicket, OutgoingMail from pretix.base.models.customers import CustomerSSOGrant from ..models import CachedFile, CartPosition, InvoiceAddress @@ -49,7 +50,18 @@ def clean_cart_positions(sender, **kwargs): @receiver(signal=periodic_task) @scopes_disabled() def clean_cached_files(sender, **kwargs): - for cf in CachedFile.objects.filter(expires__isnull=False, expires__lt=now()): + has_queued_email = Exists( + OutgoingMail.objects.filter( + should_attach_cached_files__pk=OuterRef("pk"), + status__in=( + OutgoingMail.STATUS_QUEUED, + OutgoingMail.STATUS_INFLIGHT, + OutgoingMail.STATUS_AWAITING_RETRY, + OutgoingMail.STATUS_FAILED, + ), + ) + ) + for cf in CachedFile.objects.filter(expires__isnull=False, expires__lt=now()).exclude(has_queued_email): cf.delete() diff --git a/src/pretix/base/services/mail.py b/src/pretix/base/services/mail.py index a21eec4194..9d0943f9de 100644 --- a/src/pretix/base/services/mail.py +++ b/src/pretix/base/services/mail.py @@ -39,10 +39,12 @@ import mimetypes import os import re import smtplib +import uuid import warnings +from datetime import timedelta from email.mime.image import MIMEImage from email.utils import formataddr -from typing import Any, Dict, List, Sequence, Union +from typing import Any, Dict, List, Optional, Sequence, Union from urllib.parse import urljoin, urlparse from zoneinfo import ZoneInfo @@ -51,16 +53,16 @@ from celery import chain from celery.exceptions import MaxRetriesExceededError from django.conf import settings from django.core.files.storage import default_storage -from django.core.mail import ( - EmailMultiAlternatives, SafeMIMEMultipart, get_connection, -) +from django.core.mail import EmailMultiAlternatives, SafeMIMEMultipart from django.core.mail.message import SafeMIMEText -from django.db import transaction +from django.db import connection, transaction +from django.db.models import Q +from django.dispatch import receiver from django.template.loader import get_template from django.utils.html import escape from django.utils.timezone import now, override from django.utils.translation import gettext as _, pgettext -from django_scopes import scope, scopes_disabled +from django_scopes import scopes_disabled from i18nfield.strings import LazyI18nString from text_unidecode import unidecode @@ -70,11 +72,15 @@ from pretix.base.models import ( CachedFile, Customer, Event, Invoice, InvoiceAddress, Order, OrderPosition, Organizer, User, ) +from pretix.base.models.mail import OutgoingMail from pretix.base.services.invoices import invoice_pdf_task from pretix.base.services.tasks import TransactionAwareTask from pretix.base.services.tickets import get_tickets_for_order -from pretix.base.signals import email_filter, global_email_filter +from pretix.base.signals import ( + email_filter, global_email_filter, periodic_task, +) from pretix.celery_app import app +from pretix.helpers import OF_SELF from pretix.helpers.format import SafeFormatter, format_map from pretix.helpers.hierarkey import clean_filename from pretix.multidomain.urlreverse import build_absolute_uri @@ -91,9 +97,18 @@ class TolerantDict(dict): class SendMailException(Exception): + """ + Deprecated, not thrown any more. + """ pass +class WithholdMailException(Exception): + def __init__(self, error, error_detail): + self.error = error + self.error_detail = error_detail + + def clean_sender_name(sender_name: str) -> str: # Even though we try to properly escape sender names, some characters seem to cause problems when the escaping # fails due to some forwardings, etc. @@ -137,7 +152,8 @@ def mail(email: Union[str, Sequence[str]], subject: str, template: Union[str, La position: OrderPosition = None, *, headers: dict = None, sender: str = None, organizer: Organizer = None, customer: Customer = None, invoices: Sequence = None, attach_tickets=False, auto_email=True, user=None, attach_ical=False, attach_cached_files: Sequence = None, attach_other_files: list=None, - plain_text_only=False, no_order_links=False, cc: Sequence[str]=None, bcc: Sequence[str]=None): + plain_text_only=False, no_order_links=False, cc: Sequence[str]=None, bcc: Sequence[str]=None, + sensitive: bool=False): """ Sends out an email to a user. The mail will be sent synchronously or asynchronously depending on the installation. @@ -193,6 +209,9 @@ def mail(email: Union[str, Sequence[str]], subject: str, template: Union[str, La only allowed to use together with ``plain_text_only`` since HTML renderers add their own links. + :param sensitive: If set to ``True``, the email content will not be shown as part of log entries, used e.g. for + password resets. Bcc will also not be used. + :raises MailOrderException: on obvious, immediate failures. Not raising an exception does not necessarily mean that the email has been sent, just that it has been queued by the email backend. """ @@ -202,162 +221,123 @@ def mail(email: Union[str, Sequence[str]], subject: str, template: Union[str, La if no_order_links and not plain_text_only: raise ValueError('If you set no_order_links, you also need to set plain_text_only.') + settings_holder = event or organizer + headers = headers or {} + guid = uuid.uuid4() if auto_email: headers['X-Auto-Response-Suppress'] = 'OOF, NRN, AutoReply, RN' headers['Auto-Submitted'] = 'auto-generated' headers.setdefault('X-Mailer', 'pretix') + headers.setdefault('X-PX-Correlation', str(guid)) + + bcc = list(bcc or []) + if settings_holder and settings_holder.settings.mail_bcc and not sensitive: + for bcc_mail in settings_holder.settings.mail_bcc.split(','): + bcc.append(bcc_mail.strip()) + + if (settings_holder + and settings_holder.settings.mail_from in (settings.DEFAULT_FROM_EMAIL, settings.MAIL_FROM_ORGANIZERS) + and settings_holder.settings.contact_mail and not headers.get('Reply-To')): + headers['Reply-To'] = settings_holder.settings.contact_mail + + if settings_holder: + timezone = settings_holder.timezone + elif user: + timezone = ZoneInfo(user.timezone) + else: + timezone = ZoneInfo(settings.TIME_ZONE) + + if event and attach_tickets and not event.settings.mail_attach_tickets: + attach_tickets = False with language(locale): if isinstance(context, dict) and order: - try: - context.update({ - 'invoice_name': order.invoice_address.name, - 'invoice_company': order.invoice_address.company - }) - except InvoiceAddress.DoesNotExist: - context.update({ - 'invoice_name': '', - 'invoice_company': '' - }) - renderer = ClassicMailRenderer(None, organizer) + _autoextend_context(context, order) + + # Build raw content body_plain = render_mail(template, context, placeholder_mode=SafeFormatter.MODE_RICH_TO_PLAIN) - subject = str(subject).format_map(TolerantDict(context)) - sender = ( - sender or - (event.settings.get('mail_from') if event else None) or - (organizer.settings.get('mail_from') if organizer else None) or - settings.MAIL_FROM - ) - if event: - sender_name = clean_sender_name(event.settings.mail_from_name or str(event.name)) - sender = formataddr((sender_name, sender)) - elif organizer: - sender_name = clean_sender_name(organizer.settings.mail_from_name or str(organizer.name)) - sender = formataddr((sender_name, sender)) - else: - sender = formataddr((clean_sender_name(settings.PRETIX_INSTANCE_NAME), sender)) - - subject = raw_subject = str(subject).replace('\n', ' ').replace('\r', '')[:900] - signature = "" - - bcc = list(bcc or []) - - settings_holder = event or organizer - - if event: - timezone = event.timezone - elif user: - timezone = ZoneInfo(user.timezone) - elif organizer: - timezone = organizer.timezone - else: - timezone = ZoneInfo(settings.TIME_ZONE) - if settings_holder: - if settings_holder.settings.mail_bcc: - for bcc_mail in settings_holder.settings.mail_bcc.split(','): - bcc.append(bcc_mail.strip()) - - if settings_holder.settings.mail_from in (settings.DEFAULT_FROM_EMAIL, settings.MAIL_FROM_ORGANIZERS) \ - and settings_holder.settings.contact_mail and not headers.get('Reply-To'): - headers['Reply-To'] = settings_holder.settings.contact_mail - - subject = prefix_subject(settings_holder, subject) - - body_plain += "\r\n\r\n-- \r\n" - signature = str(settings_holder.settings.get('mail_text_signature')) - if signature: - signature = signature.format(event=event.name if event else '') - body_plain += signature - body_plain += "\r\n\r\n-- \r\n" - - if event: - renderer = event.get_html_mail_renderer() - - if order and order.testmode: - subject = "[TESTMODE] " + subject - - if order and position and not no_order_links: - body_plain += _( - "You are receiving this email because someone placed an order for {event} for you." - ).format(event=event.name) - body_plain += "\r\n" - body_plain += _( - "You can view your order details at the following URL:\n{orderurl}." - ).replace("\n", "\r\n").format( - event=event.name, orderurl=build_absolute_uri( - order.event, 'presale:event.order.position', kwargs={ - 'order': order.code, - 'secret': position.web_secret, - 'position': position.positionid, - } - ) - ) - elif order and not no_order_links: - body_plain += _( - "You are receiving this email because you placed an order for {event}." - ).format(event=event.name) - body_plain += "\r\n" - body_plain += _( - "You can view your order details at the following URL:\n{orderurl}." - ).replace("\n", "\r\n").format( - event=event.name, orderurl=build_absolute_uri( - order.event, 'presale:event.order.open', kwargs={ - 'order': order.code, - 'secret': order.secret, - 'hash': order.email_confirm_secret() - } - ) - ) - body_plain += "\r\n" - - with override(timezone): - try: - content_plain = render_mail(template, context, placeholder_mode=None) - if plain_text_only: - body_html = None - elif 'context' in inspect.signature(renderer.render).parameters: - body_html = renderer.render(content_plain, signature, raw_subject, order, position, context) - elif 'position' in inspect.signature(renderer.render).parameters: - # Backwards compatibility - warnings.warn('Email renderer called without context argument because context argument is not ' - 'supported.', - DeprecationWarning) - body_html = renderer.render(content_plain, signature, raw_subject, order, position) - else: - # Backwards compatibility - warnings.warn('Email renderer called without position argument because position argument is not ' - 'supported.', - DeprecationWarning) - body_html = renderer.render(content_plain, signature, raw_subject, order) - except: - logger.exception('Could not render HTML body') - body_html = None + else: + signature = "" + # Build full plain-text body + body_plain = _wrap_plain_body(body_plain, signature, event, order, position, no_order_links) body_plain = format_map(body_plain, context, mode=SafeFormatter.MODE_RICH_TO_PLAIN) - send_task = mail_send_task.si( - to=[email] if isinstance(email, str) else list(email), - cc=cc, - bcc=bcc, + # Build subject + subject = str(subject).format_map(TolerantDict(context)) + subject = raw_subject = subject.replace('\n', ' ').replace('\r', '')[:900] + if settings_holder: + subject = prefix_subject(settings_holder, subject) + if (order and order.testmode) or (not order and event and event.testmode): + subject = "[TESTMODE] " + subject + + # Build sender + sender = _full_sender(sender, event, organizer) + + # Build HTML body + if plain_text_only: + body_html = None + else: + if event: + renderer = event.get_html_mail_renderer() + else: + renderer = ClassicMailRenderer(None, organizer) + + with override(timezone): + content_plain = render_mail(template, context, placeholder_mode=None) + try: + if 'context' in inspect.signature(renderer.render).parameters: + body_html = renderer.render(content_plain, signature, raw_subject, order, position, context) + elif 'position' in inspect.signature(renderer.render).parameters: + # Backwards compatibility + warnings.warn('Email renderer called without context argument because context argument is not ' + 'supported.', + DeprecationWarning) + body_html = renderer.render(content_plain, signature, raw_subject, order, position) + else: + # Backwards compatibility + warnings.warn('Email renderer called without position argument because position argument is not ' + 'supported.', + DeprecationWarning) + body_html = renderer.render(content_plain, signature, raw_subject, order) + except: + logger.exception('Could not render HTML body') + body_html = None + + m = OutgoingMail.objects.create( + organizer=organizer, + event=event, + order=order, + orderposition=position, + customer=customer, + user=user, + to=[email.lower()] if isinstance(email, str) else [e.lower() for e in email], + cc=[e.lower() for e in cc] if cc else [], + bcc=[e.lower() for e in bcc] if bcc else [], subject=subject, - body=body_plain, - html=body_html, + body_plain=body_plain, + body_html=body_html, sender=sender, - event=event.id if event else None, headers=headers, - invoices=[i.pk for i in invoices] if invoices and not position else [], - order=order.pk if order else None, - position=position.pk if position else None, - attach_tickets=attach_tickets, - attach_ical=attach_ical, - user=user.pk if user else None, - organizer=organizer.pk if organizer else None, - customer=customer.pk if customer else None, - attach_cached_files=[(cf.id if isinstance(cf, CachedFile) else cf) for cf in attach_cached_files] if attach_cached_files else [], - attach_other_files=attach_other_files, + should_attach_tickets=attach_tickets, + should_attach_ical=attach_ical, + should_attach_other_files=attach_other_files or [], + sensitive=sensitive, + ) + if invoices and not position: + m.should_attach_invoices.add(*invoices) + if attach_cached_files: + for cf in attach_cached_files: + if not isinstance(cf, CachedFile): + m.should_attach_cached_files.add(CachedFile.objects.get(pk=cf)) + else: + m.should_attach_cached_files.add(cf) + + send_task = mail_send_task.si( + outgoing_mail=m.id ) if invoices: @@ -392,194 +372,250 @@ class CustomEmail(EmailMultiAlternatives): @app.task(base=TransactionAwareTask, bind=True, acks_late=True) -def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: str, sender: str, - event: int = None, position: int = None, headers: dict = None, cc: List[str] = None, bcc: List[str] = None, - invoices: List[int] = None, order: int = None, attach_tickets=False, user=None, - organizer=None, customer=None, attach_ical=False, attach_cached_files: List[int] = None, - attach_other_files: List[str] = None) -> bool: - email = CustomEmail(subject, body, sender, to=to, cc=cc, bcc=bcc, headers=headers) - if html is not None: +def mail_send_task(self, **kwargs) -> bool: + if "outgoing_mail" in kwargs: + outgoing_mail = kwargs.get("outgoing_mail") + elif "to" in kwargs: + # May only occur while upgrading from pretix versions before OutgoingMail when celery tasks are still in-queue + # during the upgrade. Can be removed after 2026.2.x is released, and then the signature can be changed to + # mail_send_task(self, *, outgoing_mail) + mail_send(**kwargs) + return + else: + raise ValueError("Unknown arguments") + + with transaction.atomic(): + try: + outgoing_mail = OutgoingMail.objects.select_for_update(of=OF_SELF).get(pk=outgoing_mail) + except OutgoingMail.DoesNotExist: + logger.info(f"Ignoring job for non existing email {outgoing_mail.guid}") + return False + if outgoing_mail.status == OutgoingMail.STATUS_INFLIGHT: + logger.info(f"Ignoring job for inflight email {outgoing_mail.guid}") + return False + elif outgoing_mail.status not in (OutgoingMail.STATUS_AWAITING_RETRY, OutgoingMail.STATUS_QUEUED): + logger.info(f"Ignoring job for email {outgoing_mail.guid} in final state {outgoing_mail.status}") + return False + outgoing_mail.status = OutgoingMail.STATUS_INFLIGHT + outgoing_mail.inflight_since = now() + outgoing_mail.save(update_fields=["status", "inflight_since"]) + + headers = dict(outgoing_mail.headers) + headers.setdefault('X-PX-Correlation', str(outgoing_mail.guid)) + email = CustomEmail( + subject=outgoing_mail.subject, + body=outgoing_mail.body_plain, + from_email=outgoing_mail.sender, + to=outgoing_mail.to, + cc=outgoing_mail.cc, + bcc=outgoing_mail.bcc, + headers=headers, + ) + + # Rewrite all tags from real URLs or data URLs to inline attachments referred to by content ID + if outgoing_mail.body_html is not None: html_message = SafeMIMEMultipart(_subtype='related', encoding=settings.DEFAULT_CHARSET) - html_with_cid, cid_images = replace_images_with_cid_paths(html) + html_with_cid, cid_images = replace_images_with_cid_paths(outgoing_mail.body_html) html_message.attach(SafeMIMEText(html_with_cid, 'html', settings.DEFAULT_CHARSET)) attach_cid_images(html_message, cid_images, verify_ssl=True) email.attach_alternative(html_message, "multipart/related") - log_target = None + log_target, error_log_action_type = outgoing_mail.log_parameters() + invoices_attached = [] - if user: - user = User.objects.get(pk=user) - error_log_action_type = 'pretix.user.email.error' - log_target = user + with outgoing_mail.scope_manager(): + # Attach tickets + if outgoing_mail.should_attach_tickets and outgoing_mail.order: + with language(outgoing_mail.order.locale, outgoing_mail.event.settings.region): + args = [] + attach_size = 0 + for name, ct in get_tickets_for_order(outgoing_mail.order, base_position=outgoing_mail.orderposition): + try: + content = ct.file.read() + args.append((name, content, ct.type)) + attach_size += len(content) + except Exception: + # This sometimes fails e.g. with FileNotFoundError. We haven't been able to figure out + # why (probably some race condition with ticket cache invalidation?), so retry later. + try: + self.retry(max_retries=5, countdown=60) + except MaxRetriesExceededError: + # Well then, something is really wrong, let's send it without attachment before we + # don't send at all + logger.exception(f'Could not attach tickets to email {outgoing_mail.guid}') + pass - if event: - with scopes_disabled(): - event = Event.objects.get(id=event) - organizer = event.organizer - backend = event.get_mail_backend() - cm = lambda: scope(organizer=event.organizer) # noqa - elif organizer: - with scopes_disabled(): - organizer = Organizer.objects.get(id=organizer) - backend = organizer.get_mail_backend() - cm = lambda: scope(organizer=organizer) # noqa - else: - backend = get_connection(fail_silently=False) - cm = lambda: scopes_disabled() # noqa - - with cm(): - if customer: - customer = Customer.objects.get(pk=customer) - if not user: - error_log_action_type = 'pretix.customer.email.error' - log_target = customer - - if event: - if order: - try: - order = event.orders.get(pk=order) - error_log_action_type = 'pretix.event.order.email.error' - log_target = order - except Order.DoesNotExist: - order = None + if attach_size * 1.37 < settings.FILE_UPLOAD_MAX_SIZE_EMAIL_ATTACHMENT - 1024 * 1024: + # Do not attach more than (limit - 1 MB) in tickets (1MB space for invoice, email itself, …), + # it will bounce way too often. + # 1 MB is the buffer for the rest of the email (text, invoice, calendar, pictures) + # 1.37 is the factor for base64 encoding https://en.wikipedia.org/wiki/Base64 + for a in args: + try: + email.attach(*a) + except: + pass else: - with language(order.locale, event.settings.region): - if not event.settings.mail_attach_tickets: - attach_tickets = False - if position: - try: - position = order.positions.get(pk=position) - except OrderPosition.DoesNotExist: - attach_tickets = False - if attach_tickets: - args = [] - attach_size = 0 - for name, ct in get_tickets_for_order(order, base_position=position): - try: - content = ct.file.read() - args.append((name, content, ct.type)) - attach_size += len(content) - except: - # This sometimes fails e.g. with FileNotFoundError. We haven't been able to figure out - # why (probably some race condition with ticket cache invalidation?), so retry later. - try: - self.retry(max_retries=5, countdown=60) - except MaxRetriesExceededError: - # Well then, something is really wrong, let's send it without attachment before we - # don't sent at all - logger.exception('Could not attach invoice to email') - pass + outgoing_mail.order.log_action( + 'pretix.event.order.email.attachments.skipped', + data={ + 'subject': 'Attachments skipped', + 'message': 'Attachment have not been send because {} bytes are likely too large to arrive.'.format(attach_size), + 'recipient': '', + 'invoices': [], + } + ) - if attach_size * 1.37 < settings.FILE_UPLOAD_MAX_SIZE_EMAIL_ATTACHMENT - 1024 * 1024: - # Do not attach more than (limit - 1 MB) in tickets (1MB space for invoice, email itself, …), - # it will bounce way to often. - # 1 MB is the buffer for the rest of the email (text, invoice, calendar, pictures) - # 1.37 is the factor for base64 encoding https://en.wikipedia.org/wiki/Base64 - for a in args: - try: - email.attach(*a) - except: - pass - else: - order.log_action( - 'pretix.event.order.email.attachments.skipped', - data={ - 'subject': 'Attachments skipped', - 'message': 'Attachment have not been send because {} bytes are likely too large to arrive.'.format(attach_size), - 'recipient': '', - 'invoices': [], - } - ) - if attach_ical: - fname = re.sub('[^a-zA-Z0-9 ]', '-', unidecode(pgettext('attachment_filename', 'Calendar invite'))) - for i, cal in enumerate(get_private_icals(event, [position] if position else order.positions.all())): - email.attach('{}{}.ics'.format(fname, f'-{i + 1}' if i > 0 else ''), cal.serialize(), 'text/calendar') - - email = email_filter.send_chained(event, 'message', message=email, order=order, user=user) + # Attach calendar files + if outgoing_mail.should_attach_ical and outgoing_mail.order: + fname = re.sub('[^a-zA-Z0-9 ]', '-', unidecode(pgettext('attachment_filename', 'Calendar invite'))) + icals = get_private_icals( + outgoing_mail.event, + [outgoing_mail.orderposition] if outgoing_mail.orderposition else outgoing_mail.order.positions.all() + ) + for i, cal in enumerate(icals): + name = '{}{}.ics'.format(fname, f'-{i + 1}' if i > 0 else '') + content = cal.serialize() + mimetype = 'text/calendar' + email.attach(name, content, mimetype) invoices_to_mark_transmitted = [] - if invoices: - invoices = Invoice.objects.filter(pk__in=invoices) - for inv in invoices: - if inv.file: - try: - # We try to give the invoice a more human-readable name, e.g. "Invoice_ABC-123.pdf" instead of - # just "ABC-123.pdf", but we only do so if our currently selected language allows to do this - # as ASCII text. For example, we would not want a "فاتورة_" prefix for our filename since this - # has shown to cause deliverability problems of the email and deliverability wins. - with language(order.locale if order else inv.locale, event.settings.region if event else None): - filename = pgettext('invoice', 'Invoice {num}').format(num=inv.number).replace(' ', '_') + '.pdf' - if not re.match("^[a-zA-Z0-9-_%./,&:# ]+$", filename): - filename = inv.number.replace(' ', '_') + '.pdf' - filename = re.sub("[^a-zA-Z0-9-_.]+", "_", filename) - with language(inv.order.locale): - email.attach( - filename, - inv.file.file.read(), - 'application/pdf' + for inv in outgoing_mail.should_attach_invoices.all(): + if inv.file: + try: + # We try to give the invoice a more human-readable name, e.g. "Invoice_ABC-123.pdf" instead of + # just "ABC-123.pdf", but we only do so if our currently selected language allows to do this + # as ASCII text. For example, we would not want a "فاتورة_" prefix for our filename since this + # has shown to cause deliverability problems of the email and deliverability wins. + with language(outgoing_mail.order.locale if outgoing_mail.order else inv.locale, outgoing_mail.event.settings.region): + filename = pgettext('invoice', 'Invoice {num}').format(num=inv.number).replace(' ', '_') + '.pdf' + if not re.match("^[a-zA-Z0-9-_%./,&:# ]+$", filename): + filename = inv.number.replace(' ', '_') + '.pdf' + filename = re.sub("[^a-zA-Z0-9-_.]+", "_", filename) + content = inv.file.file.read() + with language(inv.order.locale): + email.attach( + filename, + content, + 'application/pdf' + ) + invoices_attached.append(inv) + except Exception: + logger.exception(f'Could not attach invoice to email {outgoing_mail.guid}') + pass + else: + if inv.transmission_type == "email": + # Mark invoice as sent when it was sent to the requested address *either* at the time of invoice + # creation *or* as of right now. + expected_recipients = [ + (inv.invoice_to_transmission_info or {}).get("transmission_email_address") + or inv.order.email, + ] + try: + expected_recipients.append( + (inv.order.invoice_address.transmission_info or {}).get("transmission_email_address") + or inv.order.email ) + except InvoiceAddress.DoesNotExist: + pass + if any(t in expected_recipients for t in outgoing_mail.to): + invoices_to_mark_transmitted.append(inv) - if inv.transmission_type == "email": - # Mark invoice as sent when it was sent to the requested address *either* at the time of - # invoice creation *or* as of right now. - expected_recipients = [ - (inv.invoice_to_transmission_info or {}).get("transmission_email_address") - or inv.order.email, - ] - try: - expected_recipients.append( - (inv.order.invoice_address.transmission_info or {}).get("transmission_email_address") - or inv.order.email - ) - except InvoiceAddress.DoesNotExist: - pass - if any(t in expected_recipients for t in to): - invoices_to_mark_transmitted.append(inv) - except: - logger.exception('Could not attach invoice to email') - pass + for fname in outgoing_mail.should_attach_other_files: + ftype, _ = mimetypes.guess_type(fname) + data = default_storage.open(fname).read() + try: + email.attach( + clean_filename(os.path.basename(fname)), + data, + ftype + ) + except: + logger.exception(f'Could not attach file to email {outgoing_mail.guid}') + pass - if attach_other_files: - for fname in attach_other_files: - ftype, _ = mimetypes.guess_type(fname) - data = default_storage.open(fname).read() + for cf in outgoing_mail.should_attach_cached_files.all(): + if cf.file: try: email.attach( - clean_filename(os.path.basename(fname)), - data, - ftype + cf.filename, + cf.file.file.read(), + cf.type, ) except: - logger.exception('Could not attach file to email') + logger.exception(f'Could not attach file to email {outgoing_mail.guid}') pass - if attach_cached_files: - for cf in CachedFile.objects.filter(id__in=attach_cached_files): - if cf.file: - try: - email.attach( - cf.filename, - cf.file.file.read(), - cf.type, - ) - except: - logger.exception('Could not attach file to email') - pass - - email = global_email_filter.send_chained(event, 'message', message=email, user=user, order=order, - organizer=organizer, customer=customer) + outgoing_mail.actual_attachments = [ + { + "name": a[0], + "size": len(a[1]), + "type": a[2], + } for a in email.attachments + ] + try: + if outgoing_mail.event: + with outgoing_mail.scope_manager(): + email = email_filter.send_chained( + sender=outgoing_mail.event, + chain_kwarg_name='message', + message=email, + order=outgoing_mail.order, + user=outgoing_mail.user, + outgoing_mail=outgoing_mail, + ) + + email = global_email_filter.send_chained( + sender=outgoing_mail.event, + chain_kwarg_name='message', + message=email, + user=outgoing_mail.user, + order=outgoing_mail.order, + organizer=outgoing_mail.organizer, + customer=outgoing_mail.customer, + outgoing_mail=outgoing_mail, + ) + except WithholdMailException as e: + outgoing_mail.status = OutgoingMail.STATUS_WITHHELD + outgoing_mail.error = e.error + outgoing_mail.error_detail = e.error_detail + outgoing_mail.sent = now() + outgoing_mail.retry_after = None + outgoing_mail.actual_attachments = [ + { + "name": a[0], + "size": len(a[1]), + "type": a[2], + } for a in email.attachments + ] + outgoing_mail.save(update_fields=["status", "error", "error_detail", "sent", "retry_after", "actual_attachments"]) + logger.info(f"Email {outgoing_mail.guid} withheld") + return False + + # Seems duplicate, but needs to be in this order since plugins might change this + outgoing_mail.actual_attachments = [ + { + "name": a[0], + "size": len(a[1]), + "type": a[2], + } for a in email.attachments + ] + backend = outgoing_mail.get_mail_backend() try: backend.send_messages([email]) - except (smtplib.SMTPResponseException, smtplib.SMTPSenderRefused) as e: - if e.smtp_code in (101, 111, 421, 422, 431, 432, 442, 447, 452): - if e.smtp_code == 432 and settings.HAS_REDIS: - # This is likely Microsoft Exchange Online which has a pretty bad rate limit of max. 3 concurrent - # SMTP connections which is *easily* exceeded with many celery threads. Just retrying with exponential - # backoff won't be good enough if we have a lot of emails, instead we'll need to make sure our retry - # intervals scatter such that the email won't all be retried at the same time again and cause the - # same problem. - # See also https://docs.microsoft.com/en-us/exchange/troubleshoot/send-emails/smtp-submission-improvements + except Exception as e: + logger.exception(f'Error sending email {outgoing_mail.guid}') + retry_strategy = _retry_strategy(e) + err, err_detail = _format_error(e) + + outgoing_mail.error = err + outgoing_mail.error_detail = err_detail + outgoing_mail.sent = now() + + # Run retries + try: + if retry_strategy == "microsoft_concurrency" and settings.HAS_REDIS: from django_redis import get_redis_connection redis_key = "pretix_mail_retry_" + hashlib.sha1(f"{getattr(backend, 'username', '_')}@{getattr(backend, 'host', '_')}".encode()).hexdigest() @@ -589,124 +625,80 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st max_retries = 10 retry_after = min(30 + cnt * 10, 1800) - else: - # Most likely some other kind of temporary failure, retry again (but pretty soon) + + outgoing_mail.status = OutgoingMail.STATUS_AWAITING_RETRY + outgoing_mail.retry_after = now() + timedelta(seconds=retry_after) + outgoing_mail.save(update_fields=["status", "error", "error_detail", "sent", "retry_after", "actual_attachments"]) + self.retry(max_retries=max_retries, countdown=retry_after) # throws RetryException, ends function flow + elif retry_strategy in ("microsoft_concurrency", "quick"): max_retries = 5 retry_after = [10, 30, 60, 300, 900, 900][self.request.retries] + outgoing_mail.status = OutgoingMail.STATUS_AWAITING_RETRY + outgoing_mail.retry_after = now() + timedelta(seconds=retry_after) + outgoing_mail.save(update_fields=["status", "error", "error_detail", "sent", "retry_after", "actual_attachments"]) + self.retry(max_retries=max_retries, countdown=retry_after) # throws RetryException, ends function flow - try: - self.retry(max_retries=max_retries, countdown=retry_after) - except MaxRetriesExceededError: - if log_target: - log_target.log_action( - error_log_action_type, - data={ - 'subject': 'SMTP code {}, max retries exceeded'.format(e.smtp_code), - 'message': e.smtp_error.decode() if isinstance(e.smtp_error, bytes) else str(e.smtp_error), - 'recipient': '', - 'invoices': [], - } - ) - for i in invoices_to_mark_transmitted: - i.set_transmission_failed(provider="email_pdf", data={ - "reason": "exception", - "exception": "SMTP code {}, max retries exceeded".format(e.smtp_code), - }) - raise e + elif retry_strategy == "slow": + retry_after = [60, 300, 600, 1200, 1800, 1800][self.request.retries] + outgoing_mail.status = OutgoingMail.STATUS_AWAITING_RETRY + outgoing_mail.retry_after = now() + timedelta(seconds=retry_after) + outgoing_mail.save(update_fields=["status", "error", "error_detail", "sent", "retry_after", "actual_attachments"]) + self.retry(max_retries=5, countdown=retry_after) # throws RetryException, ends function flow - logger.exception('Error sending email') + except MaxRetriesExceededError: + for i in invoices_to_mark_transmitted: + i.set_transmission_failed(provider="email_pdf", data={ + "reason": "exception", + "exception": "{}, max retries exceeded".format(err), + "detail": err_detail, + }) + + if log_target: + log_target.log_action( + error_log_action_type, + data={ + 'subject': f'{err} (max retries exceeded)', + 'message': err_detail, + 'recipient': '', + 'invoices': [], + } + ) + + outgoing_mail.status = OutgoingMail.STATUS_FAILED + outgoing_mail.sent = now() + outgoing_mail.retry_after = None + outgoing_mail.save(update_fields=["status", "error", "error_detail", "sent", "retry_after", "actual_attachments"]) + return False + + # If we reach this, it's a non-retryable error + outgoing_mail.status = OutgoingMail.STATUS_FAILED + outgoing_mail.sent = now() + outgoing_mail.retry_after = None + outgoing_mail.save(update_fields=["status", "error", "error_detail", "sent", "retry_after", "actual_attachments"]) + for i in invoices_to_mark_transmitted: + i.set_transmission_failed(provider="email_pdf", data={ + "reason": "exception", + "exception": err, + "detail": err_detail, + }) if log_target: log_target.log_action( error_log_action_type, data={ - 'subject': 'SMTP code {}'.format(e.smtp_code), - 'message': e.smtp_error.decode() if isinstance(e.smtp_error, bytes) else str(e.smtp_error), + 'subject': err, + 'message': err_detail, 'recipient': '', 'invoices': [], } ) - for i in invoices_to_mark_transmitted: - i.set_transmission_failed(provider="email_pdf", data={ - "reason": "exception", - "exception": "SMTP code {}".format(e.smtp_code), - }) - - raise SendMailException('Failed to send an email to {}.'.format(to)) - except smtplib.SMTPRecipientsRefused as e: - smtp_codes = [a[0] for a in e.recipients.values()] - - if not any(c >= 500 for c in smtp_codes) or any(b'Message is too large' in a[1] for a in e.recipients.values()): - # This is not a permanent failure (mailbox full, service unavailable), retry later, but with large - # intervals. One would think that "Message is too lage" is a permanent failure, but apparently it is not. - # We have documented cases of emails to Microsoft returning the error occasionally and then later - # allowing the very same email. - try: - self.retry(max_retries=5, countdown=[60, 300, 600, 1200, 1800, 1800][self.request.retries]) - except MaxRetriesExceededError: - # ignore and go on with logging the error - pass - - logger.exception('Error sending email') - if log_target: - message = [] - for e, val in e.recipients.items(): - message.append(f'{e}: {val[0]} {val[1].decode()}') - - log_target.log_action( - error_log_action_type, - data={ - 'subject': 'SMTP error', - 'message': '\n'.join(message), - 'recipient': '', - 'invoices': [], - } - ) - for i in invoices_to_mark_transmitted: - i.set_transmission_failed(provider="email_pdf", data={ - "reason": "exception", - "exception": "SMTP error", - }) - - raise SendMailException('Failed to send an email to {}.'.format(to)) - except Exception as e: - if isinstance(e, OSError) and not isinstance(e, smtplib.SMTPNotSupportedError): - try: - self.retry(max_retries=5, countdown=[10, 30, 60, 300, 900, 900][self.request.retries]) - except MaxRetriesExceededError: - if log_target: - log_target.log_action( - error_log_action_type, - data={ - 'subject': 'Internal error', - 'message': f'Max retries exceeded after error "{str(e)}"', - 'recipient': '', - 'invoices': [], - } - ) - for i in invoices_to_mark_transmitted: - i.set_transmission_failed(provider="email_pdf", data={ - "reason": "exception", - "exception": "Internal error", - }) - raise e - if log_target: - log_target.log_action( - error_log_action_type, - data={ - 'subject': 'Internal error', - 'message': str(e), - 'recipient': '', - 'invoices': [], - } - ) - for i in invoices_to_mark_transmitted: - i.set_transmission_failed(provider="email_pdf", data={ - "reason": "exception", - "exception": "Internal error", - }) - logger.exception('Error sending email') - raise SendMailException('Failed to send an email to {}.'.format(to)) + return False else: + outgoing_mail.status = OutgoingMail.STATUS_SENT + outgoing_mail.error = None + outgoing_mail.error_detail = None + outgoing_mail.sent = now() + outgoing_mail.retry_after = None + outgoing_mail.save(update_fields=["status", "error", "error_detail", "sent", "actual_attachments", "retry_after"]) for i in invoices_to_mark_transmitted: if i.transmission_status != Invoice.TRANSMISSION_STATUS_COMPLETED: i.transmission_date = now() @@ -715,7 +707,7 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st i.transmission_info = { "sent": [ { - "recipients": to, + "recipients": outgoing_mail.to, "datetime": now().isoformat(), } ] @@ -727,7 +719,7 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st elif i.transmission_provider == "email_pdf": i.transmission_info["sent"].append( { - "recipients": to, + "recipients": outgoing_mail.to, "datetime": now().isoformat(), } ) @@ -741,17 +733,55 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st "transmission_provider": "email_pdf", "transmission_type": "email", "data": { - "recipients": [to], + "recipients": outgoing_mail.to, }, } ) + return True -def mail_send(*args, **kwargs): - mail_send_task.apply_async(args=args, kwargs=kwargs) +def mail_send(to: List[str], subject: str, body: str, html: Optional[str], sender: str, + event: int | Event = None, position: int | OrderPosition = None, headers: dict = None, + cc: List[str] = None, bcc: List[str] = None, invoices: List[int | Invoice] = None, order: int | Order = None, + attach_tickets=False, user: int | User=None, organizer: int | Organizer=None, customer: int | Customer=None, + attach_ical=False, attach_cached_files: List[int | CachedFile] = None, attach_other_files: List[str] = None): + """ + Low-level function to send mails, kept for backwards-compatibility. You should usually use mail() instead. + """ + m = OutgoingMail.objects.create( + organizer_id=organizer.pk if isinstance(organizer, Organizer) else organizer, + event_id=event.pk if isinstance(event, Event) else event, + order_id=order.pk if isinstance(order, Order) else order, + orderposition_id=position.pk if isinstance(position, OrderPosition) else position, + customer_id=customer.pk if isinstance(customer, Customer) else customer, + user_id=user.pk if isinstance(user, User) else user, + to=[to.lower()] if isinstance(to, str) else [e.lower() for e in to], + cc=[e.lower() for e in cc] if cc else [], + bcc=[e.lower() for e in bcc] if bcc else [], + subject=subject, + body_plain=body, + body_html=html, + sender=sender, + headers=headers, + should_attach_tickets=attach_tickets, + should_attach_ical=attach_ical, + should_attach_other_files=attach_other_files or [], + ) + if invoices and not position: + if isinstance(invoices[0], int): + invoices = Invoice.objects.filter(pk__in=invoices) + m.should_attach_invoices.add(*invoices) + if attach_cached_files: + for cf in attach_cached_files: + if not isinstance(cf, CachedFile): + m.should_attach_cached_files.add(CachedFile.objects.get(pk=cf)) + else: + m.should_attach_cached_files.add(cf) + + mail_send_task.apply_async(kwargs={"outgoing_mail": m.pk}) -def render_mail(template, context, placeholder_mode=SafeFormatter.MODE_RICH_TO_PLAIN): +def render_mail(template, context, placeholder_mode: Optional[int]=SafeFormatter.MODE_RICH_TO_PLAIN): if isinstance(template, LazyI18nString): body = str(template) if context and placeholder_mode: @@ -866,3 +896,203 @@ def normalize_image_url(url): else: url = urljoin(settings.MEDIA_URL, url) return url + + +def _autoextend_context(context, order): + try: + context.update({ + 'invoice_name': order.invoice_address.name, + 'invoice_company': order.invoice_address.company + }) + except InvoiceAddress.DoesNotExist: + context.update({ + 'invoice_name': '', + 'invoice_company': '' + }) + + +def _full_sender(sender_address, event, organizer): + sender_address = ( + sender_address or + (event.settings.get('mail_from') if event else None) or + (organizer.settings.get('mail_from') if organizer else None) or + settings.MAIL_FROM + ) + if event: + sender_name = event.settings.mail_from_name or str(event.name) + elif organizer: + sender_name = organizer.settings.mail_from_name or str(organizer.name) + else: + sender_name = settings.PRETIX_INSTANCE_NAME + + sender = formataddr((clean_sender_name(sender_name), sender_address)) + return sender + + +def _wrap_plain_body(content_plain, signature, event, order, position, no_order_links): + body_plain = content_plain + body_plain += "\r\n\r\n-- \r\n" + + if signature: + signature = signature.format(event=event.name if event else '') + body_plain += signature + body_plain += "\r\n\r\n-- \r\n" + + if event and order and position and not no_order_links: + body_plain += _( + "You are receiving this email because someone placed an order for {event} for you." + ).format(event=event.name) + body_plain += "\r\n" + body_plain += _( + "You can view your order details at the following URL:\n{orderurl}." + ).replace("\n", "\r\n").format( + event=event.name, orderurl=build_absolute_uri( + order.event, 'presale:event.order.position', kwargs={ + 'order': order.code, + 'secret': position.web_secret, + 'position': position.positionid, + } + ) + ) + elif event and order and not no_order_links: + body_plain += _( + "You are receiving this email because you placed an order for {event}." + ).format(event=event.name) + body_plain += "\r\n" + body_plain += _( + "You can view your order details at the following URL:\n{orderurl}." + ).replace("\n", "\r\n").format( + event=event.name, orderurl=build_absolute_uri( + order.event, 'presale:event.order.open', kwargs={ + 'order': order.code, + 'secret': order.secret, + 'hash': order.email_confirm_secret() + } + ) + ) + body_plain += "\r\n" + + return body_plain + + +def _retry_strategy(e: Exception): + if isinstance(e, (smtplib.SMTPResponseException, smtplib.SMTPSenderRefused)): + if e.smtp_code == 432: + # This is likely Microsoft Exchange Online which has a pretty bad rate limit of max. 3 concurrent + # SMTP connections which is *easily* exceeded with many celery threads. Just retrying with exponential + # backoff won't be good enough if we have a lot of emails, instead we'll need to make sure our retry + # intervals scatter such that the email won't all be retried at the same time again and cause the + # same problem. + # See also https://docs.microsoft.com/en-us/exchange/troubleshoot/send-emails/smtp-submission-improvements + return "microsoft_concurrency" + + if e.smtp_code in (101, 111, 421, 422, 431, 432, 442, 447, 452): + return "quick" + + elif isinstance(e, smtplib.SMTPRecipientsRefused): + smtp_codes = [a[0] for a in e.recipients.values()] + + if not any(c >= 500 for c in smtp_codes) or any(b'Message is too large' in a[1] for a in e.recipients.values()): + # This is not a permanent failure (mailbox full, service unavailable), retry later, but with large + # intervals. One would think that "Message is too lage" is a permanent failure, but apparently it is not. + # We have documented cases of emails to Microsoft returning the error occasionally and then later + # allowing the very same email. + return "slow" + + elif isinstance(e, OSError) and not isinstance(e, smtplib.SMTPNotSupportedError): + # Most likely some other kind of temporary failure, retry again (but pretty soon) + return "quick" + + +def _format_error(e: Exception): + if isinstance(e, (smtplib.SMTPResponseException, smtplib.SMTPSenderRefused)): + return 'SMTP code {}'.format(e.smtp_code), e.smtp_error.decode() if isinstance(e.smtp_error, bytes) else str(e.smtp_error) + elif isinstance(e, smtplib.SMTPRecipientsRefused): + message = [] + for e, val in e.recipients.items(): + message.append(f'{e}: {val[0]} {val[1].decode()}') + return 'SMTP recipients refudes', '\n'.join(message) + else: + return 'Internal error', str(e) + + +def _is_queue_long(queue_name="mail"): + """ + Checks an estimate if there is currently a long celery queue for emails. If so, + there's no reason to retry stuck emails, because they are stuck because of the + queue and we don't need to add more oil to the fire. + + This does not need to be perfect, as it is safe to run the same task twice, it just + wastes ressources. + """ + if not settings.HAS_CELERY: + return False + if not settings.CELERY_BROKER_URL.startswith("redis://"): + return False # check not supported + priority_steps = settings.CELERY_BROKER_TRANSPORT_OPTIONS.get("priority_steps", [0]) + sep = settings.CELERY_BROKER_TRANSPORT_OPTIONS.get("sep", ":") + client = app.broker_connection().channel().client + queue_length = 0 + for prio in priority_steps: + if prio: + qname = f"{queue_name}{sep}{prio}" + else: + qname = queue_name + queue_length += client.llen(qname) + + return queue_length > 100 + + +@receiver(signal=periodic_task) +@scopes_disabled() +def retry_stuck_inflight_mails(sender, **kwargs): + """ + Retry emails that are stuck in "inflight" state, e.g. their celery task just died. + """ + with transaction.atomic(): + for m in OutgoingMail.objects.filter( + status=OutgoingMail.STATUS_INFLIGHT, + inflight_since__lt=now() - timedelta(hours=1), + ).select_for_update(of=OF_SELF, skip_locked=connection.features.has_select_for_update_skip_locked): + m.status = OutgoingMail.STATUS_QUEUED + m.save() + mail_send_task.apply_async(kwargs={"outgoing_mail": m.pk}) + + +@receiver(signal=periodic_task) +@scopes_disabled() +def retry_stuck_queued_mails(sender, **kwargs): + """ + Retry emails that are stuck in "queued" state, e.g. their celery task never started. We do this only + when there is currently almost no queue, to avoid many tasks being scheduled for the same mail if that + mail is still waiting in the queue (even if that would be safe, all tasks except the first one would be a no-op, + but it would create many more useless tasks in a high-load situation). + """ + if _is_queue_long(): + logger.info("Do not retry stuck mails as the queue is long.") + return + + for m in OutgoingMail.objects.filter( + Q( + status=OutgoingMail.STATUS_QUEUED, + created__lt=now() - timedelta(hours=1), + ) | Q( + status=OutgoingMail.STATUS_AWAITING_RETRY, + retry_after__lt=now() - timedelta(hours=1), + ) + ): + mail_send_task.apply_async(kwargs={"outgoing_mail": m.pk}) + + +@receiver(signal=periodic_task) +@scopes_disabled() +def delete_old_emails(sender, **kwargs): + """ + OutgoingMail is currently not intended to be an archive, because it would be hard to do in a + privacy-first design, so we delete after some time. + """ + cutoff = now() - timedelta(seconds=settings.OUTGOING_MAIL_RETENTION) + OutgoingMail.objects.filter( + Q(sent__lt=cutoff) | + Q(sent__isnull=True, created__lt=cutoff) + ).delete() diff --git a/src/pretix/base/services/notifications.py b/src/pretix/base/services/notifications.py index 5a75dfafbe..0a70e7c32d 100644 --- a/src/pretix/base/services/notifications.py +++ b/src/pretix/base/services/notifications.py @@ -19,6 +19,8 @@ # You should have received a copy of the GNU Affero General Public License along with this program. If not, see # . # +import uuid + import css_inline from django.conf import settings from django.template.loader import get_template @@ -26,7 +28,9 @@ from django.utils.timezone import override from django_scopes import scope, scopes_disabled from pretix.base.i18n import language -from pretix.base.models import LogEntry, NotificationSetting, User +from pretix.base.models import ( + LogEntry, NotificationSetting, OutgoingMail, User, +) from pretix.base.notifications import Notification, get_all_notification_types from pretix.base.services.mail import mail_send_task from pretix.base.services.tasks import ProfiledTask, TransactionAwareTask @@ -153,16 +157,26 @@ def send_notification_mail(notification: Notification, user: User): tpl_plain = get_template('pretixbase/email/notification.txt') body_plain = tpl_plain.render(ctx) - mail_send_task.apply_async(kwargs={ - 'to': [user.email], - 'subject': '[{}] {}: {}'.format( + guid = uuid.uuid4() + m = OutgoingMail.objects.create( + guid=guid, + user=user, + to=[user.email], + subject='[{}] {}: {}'.format( settings.PRETIX_INSTANCE_NAME, notification.event.settings.mail_prefix or notification.event.slug.upper(), notification.title ), - 'body': body_plain, - 'html': body_html, - 'sender': settings.MAIL_FROM_NOTIFICATIONS, - 'headers': {}, - 'user': user.pk + body_plain=body_plain, + body_html=body_html, + sender=settings.MAIL_FROM_NOTIFICATIONS, + headers={ + 'X-Auto-Response-Suppress': 'OOF, NRN, AutoReply, RN', + 'Auto-Submitted': 'auto-generated', + 'X-Mailer': 'pretix', + 'X-PX-Correlation': str(guid), + }, + ) + mail_send_task.apply_async(kwargs={ + 'outgoing_mail': m.pk, }) diff --git a/src/pretix/base/services/orders.py b/src/pretix/base/services/orders.py index 5d1d611531..b49d656169 100644 --- a/src/pretix/base/services/orders.py +++ b/src/pretix/base/services/orders.py @@ -90,7 +90,6 @@ from pretix.base.services.invoices import ( from pretix.base.services.locking import ( LOCK_TRUST_WINDOW, LockTimeoutException, lock_objects, ) -from pretix.base.services.mail import SendMailException from pretix.base.services.memberships import ( create_membership, validate_memberships_in_order, ) @@ -438,33 +437,27 @@ def approve_order(order, user=None, send_mail: bool=True, auth=None, force=False email_attendee_subject = order.event.settings.mail_subject_order_approved_attendee email_context = get_email_context(event=order.event, order=order) - try: - order.send_mail( - email_subject, email_template, email_context, - 'pretix.event.order.email.order_approved', user, - attach_tickets=True, - attach_ical=order.event.settings.mail_attach_ical and ( - not order.event.settings.mail_attach_ical_paid_only or - order.total == Decimal('0.00') or - order.valid_if_pending - ), - invoices=[invoice] if invoice and transmit_invoice_mail else [] - ) - except SendMailException: - logger.exception('Order approved email could not be sent') + order.send_mail( + email_subject, email_template, email_context, + 'pretix.event.order.email.order_approved', user, + attach_tickets=True, + attach_ical=order.event.settings.mail_attach_ical and ( + not order.event.settings.mail_attach_ical_paid_only or + order.total == Decimal('0.00') or + order.valid_if_pending + ), + invoices=[invoice] if invoice and transmit_invoice_mail else [] + ) if email_attendees: for p in order.positions.all(): if p.addon_to_id is None and p.attendee_email and p.attendee_email != order.email: email_attendee_context = get_email_context(event=order.event, order=order, position=p) - try: - p.send_mail( - email_attendee_subject, email_attendee_template, email_attendee_context, - 'pretix.event.order.email.order_approved', user, - attach_tickets=True, - ) - except SendMailException: - logger.exception('Order approved email could not be sent to attendee') + p.send_mail( + email_attendee_subject, email_attendee_template, email_attendee_context, + 'pretix.event.order.email.order_approved', user, + attach_tickets=True, + ) return order.pk @@ -501,13 +494,10 @@ def deny_order(order, comment='', user=None, send_mail: bool=True, auth=None): email_template = order.event.settings.mail_text_order_denied email_subject = order.event.settings.mail_subject_order_denied email_context = get_email_context(event=order.event, order=order, comment=comment) - try: - order.send_mail( - email_subject, email_template, email_context, - 'pretix.event.order.email.order_denied', user - ) - except SendMailException: - logger.exception('Order denied email could not be sent') + order.send_mail( + email_subject, email_template, email_context, + 'pretix.event.order.email.order_denied', user + ) return order.pk @@ -660,14 +650,11 @@ def _cancel_order(order, user=None, send_mail: bool=True, api_token=None, device email_template = order.event.settings.mail_text_order_canceled email_subject = order.event.settings.mail_subject_order_canceled email_context = get_email_context(event=order.event, order=order, comment=comment or "") - try: - order.send_mail( - email_subject, email_template, email_context, - 'pretix.event.order.email.order_canceled', user, - invoices=transmit_invoices_mail, - ) - except SendMailException: - logger.exception('Order canceled email could not be sent') + order.send_mail( + email_subject, email_template, email_context, + 'pretix.event.order.email.order_canceled', user, + invoices=transmit_invoices_mail, + ) for p in order.payments.filter(state__in=(OrderPayment.PAYMENT_STATE_CREATED, OrderPayment.PAYMENT_STATE_PENDING)): try: @@ -1108,46 +1095,40 @@ def _order_placed_email(event: Event, order: Order, email_template, subject_temp log_entry: str, invoice, payments: List[OrderPayment], is_free=False): email_context = get_email_context(event=event, order=order, payments=payments) - try: - order.send_mail( - subject_template, email_template, email_context, - log_entry, - invoices=[invoice] if invoice else [], - attach_tickets=True, - attach_ical=event.settings.mail_attach_ical and ( - not event.settings.mail_attach_ical_paid_only or - is_free or - order.valid_if_pending - ), - attach_other_files=[a for a in [ - event.settings.get('mail_attachment_new_order', as_type=str, default='')[len('file://'):] - ] if a], - ) - except SendMailException: - logger.exception('Order received email could not be sent') + order.send_mail( + subject_template, email_template, email_context, + log_entry, + invoices=[invoice] if invoice else [], + attach_tickets=True, + attach_ical=event.settings.mail_attach_ical and ( + not event.settings.mail_attach_ical_paid_only or + is_free or + order.valid_if_pending + ), + attach_other_files=[a for a in [ + event.settings.get('mail_attachment_new_order', as_type=str, default='')[len('file://'):] + ] if a], + ) def _order_placed_email_attendee(event: Event, order: Order, position: OrderPosition, email_template, subject_template, log_entry: str, is_free=False): email_context = get_email_context(event=event, order=order, position=position) - try: - position.send_mail( - subject_template, email_template, email_context, - log_entry, - invoices=[], - attach_tickets=True, - attach_ical=event.settings.mail_attach_ical and ( - not event.settings.mail_attach_ical_paid_only or - is_free or - order.valid_if_pending - ), - attach_other_files=[a for a in [ - event.settings.get('mail_attachment_new_order', as_type=str, default='')[len('file://'):] - ] if a], - ) - except SendMailException: - logger.exception('Order received email could not be sent to attendee') + position.send_mail( + subject_template, email_template, email_context, + log_entry, + invoices=[], + attach_tickets=True, + attach_ical=event.settings.mail_attach_ical and ( + not event.settings.mail_attach_ical_paid_only or + is_free or + order.valid_if_pending + ), + attach_other_files=[a for a in [ + event.settings.get('mail_attachment_new_order', as_type=str, default='')[len('file://'):] + ] if a], + ) def _perform_order(event: Event, payment_requests: List[dict], position_ids: List[str], @@ -1476,13 +1457,10 @@ def send_expiry_warnings(sender, **kwargs): email_template = settings.mail_text_order_pending_warning email_subject = settings.mail_subject_order_pending_warning - try: - o.send_mail( - email_subject, email_template, email_context, - 'pretix.event.order.email.expire_warning_sent' - ) - except SendMailException: - logger.exception('Reminder email could not be sent') + o.send_mail( + email_subject, email_template, email_context, + 'pretix.event.order.email.expire_warning_sent' + ) @receiver(signal=periodic_task) @@ -1543,14 +1521,11 @@ def send_download_reminders(sender, **kwargs): email_template = event.settings.mail_text_download_reminder email_subject = event.settings.mail_subject_download_reminder email_context = get_email_context(event=event, order=o) - try: - o.send_mail( - email_subject, email_template, email_context, - 'pretix.event.order.email.download_reminder_sent', - attach_tickets=True - ) - except SendMailException: - logger.exception('Reminder email could not be sent') + o.send_mail( + email_subject, email_template, email_context, + 'pretix.event.order.email.download_reminder_sent', + attach_tickets=True + ) if event.settings.mail_send_download_reminder_attendee: for p in positions: @@ -1564,14 +1539,11 @@ def send_download_reminders(sender, **kwargs): email_template = event.settings.mail_text_download_reminder_attendee email_subject = event.settings.mail_subject_download_reminder_attendee email_context = get_email_context(event=event, order=o, position=p) - try: - o.send_mail( - email_subject, email_template, email_context, - 'pretix.event.order.email.download_reminder_sent', - attach_tickets=True, position=p - ) - except SendMailException: - logger.exception('Reminder email could not be sent to attendee') + o.send_mail( + email_subject, email_template, email_context, + 'pretix.event.order.email.download_reminder_sent', + attach_tickets=True, position=p + ) def notify_user_changed_order(order, user=None, auth=None, invoices=[]): @@ -1579,13 +1551,10 @@ def notify_user_changed_order(order, user=None, auth=None, invoices=[]): email_template = order.event.settings.mail_text_order_changed email_context = get_email_context(event=order.event, order=order) email_subject = order.event.settings.mail_subject_order_changed - try: - order.send_mail( - email_subject, email_template, email_context, - 'pretix.event.order.email.order_changed', user, auth=auth, invoices=invoices, attach_tickets=True, - ) - except SendMailException: - logger.exception('Order changed email could not be sent') + order.send_mail( + email_subject, email_template, email_context, + 'pretix.event.order.email.order_changed', user, auth=auth, invoices=invoices, attach_tickets=True, + ) class OrderChangeManager: diff --git a/src/pretix/base/services/shredder.py b/src/pretix/base/services/shredder.py index 84ef4eee00..6211ad4a85 100644 --- a/src/pretix/base/services/shredder.py +++ b/src/pretix/base/services/shredder.py @@ -48,7 +48,7 @@ from django.utils.translation import gettext_lazy as _ from pretix.base.i18n import language from pretix.base.models import CachedFile, Event, User, cachedfile_name -from pretix.base.services.mail import SendMailException, mail +from pretix.base.services.mail import mail from pretix.base.services.tasks import ProfiledEventTask from pretix.base.shredder import ShredError from pretix.celery_app import app @@ -171,21 +171,18 @@ def shred(self, event: Event, fileid: str, confirm_code: str, user: int=None, lo if user: with language(user.locale): - try: - mail( - user.email, - _('Data shredding completed'), - 'pretixbase/email/shred_completed.txt', - { - 'user': user, - 'organizer': event.organizer.name, - 'event': str(event.name), - 'start_time': date_format(parse(indexdata['time']).astimezone(event.timezone), 'SHORT_DATETIME_FORMAT'), - 'shredders': ', '.join([str(s.verbose_name) for s in shredders]) - }, - event=None, - user=user, - locale=user.locale, - ) - except SendMailException: - pass # Already logged + mail( + user.email, + _('Data shredding completed'), + 'pretixbase/email/shred_completed.txt', + { + 'user': user, + 'organizer': event.organizer.name, + 'event': str(event.name), + 'start_time': date_format(parse(indexdata['time']).astimezone(event.timezone), 'SHORT_DATETIME_FORMAT'), + 'shredders': ', '.join([str(s.verbose_name) for s in shredders]) + }, + event=None, + user=user, + locale=user.locale, + ) diff --git a/src/pretix/base/shredder.py b/src/pretix/base/shredder.py index a8110e9874..21b2803053 100644 --- a/src/pretix/base/shredder.py +++ b/src/pretix/base/shredder.py @@ -51,7 +51,7 @@ from pretix.api.serializers.waitinglist import WaitingListSerializer from pretix.base.i18n import LazyLocaleException from pretix.base.models import ( CachedCombinedTicket, CachedTicket, Event, InvoiceAddress, OrderPayment, - OrderPosition, OrderRefund, QuestionAnswer, + OrderPosition, OrderRefund, OutgoingMail, QuestionAnswer, ) from pretix.base.services.invoices import invoice_pdf_task from pretix.base.signals import register_data_shredders @@ -329,6 +329,10 @@ class EmailAddressShredder(BaseDataShredder): sleep_time=2, ) + slow_delete( + OutgoingMail.objects.filter(event=self.event) + ) + for o in _progress_helper(qs_orders, progress_callback, qs_op_cnt, total): changed = bool(o.email) or bool(o.customer) o.email = None diff --git a/src/pretix/base/signals.py b/src/pretix/base/signals.py index 3ab54bf0eb..c917f318bd 100644 --- a/src/pretix/base/signals.py +++ b/src/pretix/base/signals.py @@ -944,32 +944,40 @@ As with all event-plugin signals, the ``sender`` keyword argument will contain t email_filter = EventPluginSignal() """ -Arguments: ``message``, ``order``, ``user`` +Arguments: ``message``, ``order``, ``user``, ``outgoing_mail`` This signal allows you to implement a middleware-style filter on all outgoing emails. You are expected to return a (possibly modified) copy of the message object passed to you. As with all event-plugin signals, the ``sender`` keyword argument will contain the event. The ``message`` argument will contain an ``EmailMultiAlternatives`` object. +The ``outgoing_mail`` argument will contain the ``OutgoingMail`` model instance. Note that the ``message`` object +might have newer information if a previous plugin already modified the email. If the email is associated with a specific order, the ``order`` argument will be passed as well, otherwise it will be ``None``. If the email is associated with a specific user, e.g. a notification email, the ``user`` argument will be passed as well, otherwise it will be ``None``. + +You can raise ``WithholdMailException`` to prevent the email from being sent, e.g. when implementing rate limiting. """ global_email_filter = GlobalSignal() """ -Arguments: ``message``, ``order``, ``user``, ``customer``, ``organizer`` +Arguments: ``message``, ``order``, ``user``, ``customer``, ``organizer``, ``outgoing_mail`` This signal allows you to implement a middleware-style filter on all outgoing emails. You are expected to return a (possibly modified) copy of the message object passed to you. This signal is called on all events and even if there is no known event. ``sender`` is an event or None. The ``message`` argument will contain an ``EmailMultiAlternatives`` object. +The ``outgoing_mail`` argument will contain the ``OutgoingMail`` model instance. Note that the ``message`` object +might have newer information if a previous plugin already modified the email. If the email is associated with a specific order, the ``order`` argument will be passed as well, otherwise it will be ``None``. If the email is associated with a specific user, e.g. a notification email, the ``user`` argument will be passed as well, otherwise it will be ``None``. + +You can raise ``WithholdMailException`` to prevent the email from being sent, e.g. when implementing rate limiting. """ diff --git a/src/pretix/control/forms/filter.py b/src/pretix/control/forms/filter.py index 783c12e857..204820ac30 100644 --- a/src/pretix/control/forms/filter.py +++ b/src/pretix/control/forms/filter.py @@ -57,8 +57,9 @@ from pretix.base.forms.widgets import ( from pretix.base.models import ( Checkin, CheckinList, Device, Event, EventMetaProperty, EventMetaValue, Gate, Invoice, InvoiceAddress, Item, Order, OrderPayment, OrderPosition, - OrderRefund, Organizer, Question, QuestionAnswer, Quota, SalesChannel, - SubEvent, SubEventMetaValue, Team, TeamAPIToken, TeamInvite, Voucher, + OrderRefund, Organizer, OutgoingMail, Question, QuestionAnswer, Quota, + SalesChannel, SubEvent, SubEventMetaValue, Team, TeamAPIToken, TeamInvite, + Voucher, ) from pretix.base.signals import register_payment_providers from pretix.base.timeframes import ( @@ -2815,3 +2816,61 @@ class DeviceFilterForm(FilterForm): qs = qs.order_by('-device_id') return qs + + +class OutgoingMailFilterForm(FilterForm): + orders = { + 'date': 'd', + '-date': '-d', + } + query = forms.CharField( + label=_('Search email address or subject'), + widget=forms.TextInput(attrs={ + 'placeholder': _('Search email address or subject'), + }), + required=False + ) + event = forms.ModelChoiceField( + queryset=Event.objects.none(), + label=_('Event'), + empty_label=_('All events'), + required=False, + ) + status = forms.ChoiceField( + label=_('Status'), + choices=[ + ('', _('All')), + *OutgoingMail.STATUS_CHOICES, + ], + required=False + ) + + def __init__(self, *args, **kwargs): + request = kwargs.pop('request') + super().__init__(*args, **kwargs) + self.fields['event'].queryset = request.organizer.events.all() + + def filter_qs(self, qs): + fdata = self.cleaned_data + + if fdata.get('query'): + query = fdata.get('query') + qs = qs.filter( + Q(to__containsstring=query.lower()) + | Q(cc__containsstring=query.lower()) + | Q(bcc__containsstring=query.lower()) + | Q(subject__icontains=query) + ) + + if fdata.get('event'): + qs = qs.filter(event=fdata['event']) + + if fdata.get('status'): + qs = qs.filter(status=fdata['status']) + + if fdata.get('ordering'): + qs = qs.order_by(self.get_order_by()) + else: + qs = qs.order_by("-created", "-pk") + + return qs diff --git a/src/pretix/control/forms/organizer.py b/src/pretix/control/forms/organizer.py index 1f10385af7..a314b889a2 100644 --- a/src/pretix/control/forms/organizer.py +++ b/src/pretix/control/forms/organizer.py @@ -585,6 +585,7 @@ class MailSettingsForm(SettingsForm): help_text=''.join([ str(_("All emails will be sent to this address as a Bcc copy.")), str(_("You can specify multiple recipients separated by commas.")), + str(_("Sensitive emails like password resets will not be sent in Bcc.")), ]), validators=[multimail_validate], required=False, diff --git a/src/pretix/control/logdisplay.py b/src/pretix/control/logdisplay.py index 02ccce2e4c..8f8f5b291e 100644 --- a/src/pretix/control/logdisplay.py +++ b/src/pretix/control/logdisplay.py @@ -699,6 +699,8 @@ class CoreUserImpersonatedLogEntryType(UserImpersonatedLogEntryType): 'pretix.organizer.export.schedule.deleted': _('A scheduled export has been deleted.'), 'pretix.organizer.export.schedule.executed': _('A scheduled export has been executed.'), 'pretix.organizer.export.schedule.failed': _('A scheduled export has failed: {reason}.'), + 'pretix.organizer.outgoingmails.retried': _('Failed emails have been scheduled to be retried.'), + 'pretix.organizer.outgoingmails.aborted': _('Queued emails have been aborted.'), 'pretix.giftcards.acceptance.added': _('Gift card acceptance for another organizer has been added.'), 'pretix.giftcards.acceptance.removed': _('Gift card acceptance for another organizer has been removed.'), 'pretix.giftcards.acceptance.acceptor.invited': _('A new gift card acceptor has been invited.'), diff --git a/src/pretix/control/navigation.py b/src/pretix/control/navigation.py index c3a0cbb8f9..a6e3209788 100644 --- a/src/pretix/control/navigation.py +++ b/src/pretix/control/navigation.py @@ -679,6 +679,15 @@ def get_organizer_navigation(request): 'active': (url.url_name == 'organizer.datasync.failedjobs'), }]) + nav.append({ + 'label': _('Outgoing emails'), + 'url': reverse('control:organizer.outgoingmails', kwargs={ + 'organizer': request.organizer.slug, + }), + 'active': 'organizer.outgoingmail' in url.url_name, + 'icon': 'send', + }) + merge_in(nav, sorted( sum((list(a[1]) for a in nav_organizer.send(request.organizer, request=request, organizer=request.organizer)), []), diff --git a/src/pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html b/src/pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html new file mode 100644 index 0000000000..fc3ea19108 --- /dev/null +++ b/src/pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html @@ -0,0 +1,222 @@ +{% extends "pretixcontrol/organizers/base.html" %} +{% load i18n %} +{% load bootstrap3 %} +{% load urlreplace %} +{% load icon %} +{% load compress %} +{% load static %} +{% block inner %} +

    + {% trans "Outgoing email" %} +

    +
    +
    +

    {% trans "Email details" %}

    +
    +
    +
    +
    + +
    +
    {% trans "From" context "email" %}
    +
    {{ mail.sender }}
    +
    {% trans "To" context "email" %}
    +
    {{ mail.to|join:", " }}
    + {% if mail.cc %} +
    {% trans "Cc" context "email" %}
    +
    {{ mail.cc|join:", " }}
    + {% endif %} + {% if mail.bcc %} +
    {% trans "Bcc" context "email" %}
    +
    {{ mail.bcc|join:", " }}
    + {% endif %} +
    {% trans "Subject" %}
    +
    {{ mail.subject }}
    +
    {% trans "Status" %}
    +
    + {% if mail.status == "queued" %} + {% icon "clock-o" %} {% trans "queued" %} + {% elif mail.status == "inflight" %} + {% icon "send" %} {% trans "being sent" %} + {% elif mail.status == "awaiting_retry" %} + {% icon "repeat" %} {% trans "will be retried" %} + {% elif mail.status == "failed" %} + {% icon "warning" %} {% trans "failed" %} + {% elif mail.status == "bounced" %} + {% icon "exclamation-circle" %} {% trans "bounced" %} + {% elif mail.status == "withheld" %} + {% icon "ban" %} {% trans "withheld" %} + {% elif mail.status == "aborted" %} + {% icon "ban" %} {% trans "aborted" %} + {% elif mail.status == "sent" %} + {% icon "check" %} {% trans "sent" %} + {% endif %} +
    +
    {% trans "Creation" %}
    +
    {{ mail.created|date:"SHORT_DATETIME_FORMAT" }}
    + {% if mail.sent %} +
    {% trans "Sent" %}
    +
    {{ mail.sent|date:"SHORT_DATETIME_FORMAT" }}
    + {% endif %} + {% if mail.retry_after and mail.status == "awaiting_retry" %} +
    {% trans "Next attempt (estimate)" %}
    +
    {{ mail.retry_after|date:"SHORT_DATETIME_FORMAT" }}
    + {% endif %} + {% if mail.event %} +
    {% trans "Event" %}
    +
    + + {{ mail.event }} + +
    + {% endif %} + {% if mail.order %} +
    {% trans "Order" %}
    +
    + + {{ mail.order.code }}{% if mail.orderposition %}- + {{ mail.orderposition.positionid }}{% endif %} +
    + {% endif %} + {% if mail.customer %} +
    {% trans "Customer" %}
    +
    + {% icon "user fa-fw" %} + + {{ mail.customer }} + +
    + {% endif %} +
    +
    + {% if mail.actual_attachments %} +
    + {% trans "Attachments" %}
    +
      + {% for a in mail.actual_attachments %} +
    • + {% if a.type == "text/calendar" %} + {% icon "calendar-plus-o fa-fw" %} + {% elif a.type == "application/pdf" %} + {% icon "file-pdf-o fa-fw" %} + {% elif "image/" in a.type %} + {% icon "file-image-o fa-fw" %} + {% elif "msword" in a.type or "document" in a.type %} + {% icon "file-word-o fa-fw" %} + {% elif "excel" in a.type or "spreadsheet" in a.type %} + {% icon "file-excel-o fa-fw" %} + {% elif "powerpoint" in a.type or "presentation" in a.type %} + {% icon "file-powerpoint-o fa-fw" %} + {% elif "pkpass" in a.type %} + {% icon "qrcode fa-fw" %} + {% else %} + {% icon "file-o fa-fw" %} + {% endif %} + {{ a.name }} + + ({{ a.size|filesizeformat }}) + +
    • + {% endfor %} +
    +
    + {% endif %} +
    +
    +
    +
    + + +
    + {% if mail.is_failed %} +
    + + {{ mail.error }} + +
    {{ mail.error_detail }}
    +
    + {% endif %} + {% if mail.body_html %} +
    + {% if mail.sensitive %} +
    +

    + {% icon "eye-slash fa-4x" %} +

    +

    + {% blocktrans trimmed %} + Sensitive content not shown for security reasons + {% endblocktrans %} +

    +
    + {% else %} + {{ data_url|json_script:"mail_body_html" }} + {% endif %} +
    + {% endif %} +
    + {% if mail.sensitive %} +
    +

    + {% icon "eye-slash fa-4x" %} +

    +

    + {% blocktrans trimmed %} + Sensitive content not shown for security reasons + {% endblocktrans %} +

    +
    + {% else %} +
    {{ mail.body_plain }}
    + {% endif %} +
    +
    +
    {% for k, v in mail.headers.items %}{{ k }}: {{ v }}
    {% endfor %}
    +

    + {% trans "Additional headers will be added by the mail server and are not visible here." %} +

    +
    +
    + +
    + {% compress js %} + + {% endcompress %} +{% endblock %} diff --git a/src/pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html b/src/pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html new file mode 100644 index 0000000000..5de235cd95 --- /dev/null +++ b/src/pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html @@ -0,0 +1,185 @@ +{% extends "pretixcontrol/organizers/base.html" %} +{% load i18n %} +{% load bootstrap3 %} +{% load urlreplace %} +{% load icon %} +{% block inner %} +

    + {% trans "Outgoing emails" %} +

    +

    + {% blocktrans trimmed with days=days %} + This is an overview of all emails sent by your organizer account in the last {{ days }} days. + {% endblocktrans %} +

    + {% if mails|length == 0 and not filter_form.filtered %} +
    +

    + {% blocktrans trimmed %} + You haven't sent any emails recently. + {% endblocktrans %} +

    +
    + {% else %} +
    +
    +

    {% trans "Filter" %}

    +
    +
    +
    +
    + {% bootstrap_field filter_form.query %} +
    +
    + {% bootstrap_field filter_form.status %} +
    +
    + {% bootstrap_field filter_form.event %} +
    +
    +
    + +
    +
    +
    +
    + {% csrf_token %} + {% for field in filter_form %} + {{ field.as_hidden }} + {% endfor %} +
    + + + + + + + + + + + + {% if page_obj.paginator.num_pages > 1 %} + + + + + {% endif %} + + + {% for m in mails %} + + + + + + + + + + {% endfor %} + +
    + + {% trans "Subject" %}{% trans "Recipients" %}{% trans "Context" %}{% trans "Status" %}{% trans "Date" %} + + +
    + + + + {{ m.subject }} + + {% if m.sensitive %} + {% icon "eye-slash" %} + {% endif %} + + {{ m.to|join:", " }} + {% if m.cc %} +
    {% trans "Cc" context "email" %}: {{ m.cc|join:", " }} + {% endif %} + {% if m.bcc %} +
    {% trans "Bcc" context "email" %}: {{ m.bcc|join:", " }} + {% endif %} +
    + {% if m.event %} +
    + {% icon "calendar fa-fw" %} + + {{ m.event }} + +
    + {% endif %} + {% if m.order %} +
    + {% icon "shopping-cart fa-fw" %} + + {{ m.order.code }}{% if m.orderposition %}-{{ m.orderposition.positionid }}{% endif %} +
    + {% endif %} + {% if m.customer %} +
    + {% icon "user fa-fw" %} + + {{ m.customer }} + +
    + {% endif %} +
    + {% if m.status == "queued" %} + {% icon "clock-o" %} {% trans "queued" %} + {% elif m.status == "inflight" %} + {% icon "send" %} {% trans "being sent" %} + {% elif m.status == "awaiting_retry" %} + {% icon "repeat" %} {% trans "will be retried" %} + {% elif m.status == "failed" %} + {% icon "warning" %} {% trans "failed" %} + {% elif m.status == "bounced" %} + {% icon "exclamation-circle" %} {% trans "bounced" %} + {% elif m.status == "withheld" %} + {% icon "ban" %} {% trans "withheld" %} + {% elif m.status == "aborted" %} + {% icon "ban" %} {% trans "aborted" %} + {% elif m.status == "sent" %} + {% icon "check" %} {% trans "sent" %} + {% endif %} + + {{ m.created|date:"SHORT_DATETIME_FORMAT" }} + {% if m.sent %} +
    + {% trans "Sent:" %} {{ m.sent|date:"SHORT_DATETIME_FORMAT" }} + {% endif %} +
    + {% icon "eye" %} +
    +
    +
    + + +
    +
    + {% include "pretixcontrol/pagination.html" %} + {% endif %} +{% endblock %} diff --git a/src/pretix/control/urls.py b/src/pretix/control/urls.py index d310572e30..9d92c90815 100644 --- a/src/pretix/control/urls.py +++ b/src/pretix/control/urls.py @@ -38,8 +38,9 @@ from django.views.generic.base import RedirectView from pretix.control.views import ( auth, checkin, dashboards, datasync, discounts, event, geo, - global_settings, item, main, modelimport, oauth, orders, organizer, pdf, - search, shredder, subevents, typeahead, user, users, vouchers, waitinglist, + global_settings, item, mail, main, modelimport, oauth, orders, organizer, + pdf, search, shredder, subevents, typeahead, user, users, vouchers, + waitinglist, ) urlpatterns = [ @@ -240,6 +241,9 @@ urlpatterns = [ name='organizer.gate.edit'), re_path(r'^organizer/(?P[^/]+)/gate/(?P[^/]+)/delete$', organizer.GateDeleteView.as_view(), name='organizer.gate.delete'), + re_path(r'^organizer/(?P[^/]+)/outgoingmails$', mail.OutgoingMailListView.as_view(), name='organizer.outgoingmails'), + re_path(r'^organizer/(?P[^/]+)/outgoingmail/bulk_action$', mail.OutgoingMailBulkAction.as_view(), name='organizer.outgoingmails.bulk_action'), + re_path(r'^organizer/(?P[^/]+)/outgoingmail/(?P[0-9]+)/$', mail.OutgoingMailDetailView.as_view(), name='organizer.outgoingmail'), re_path(r'^organizer/(?P[^/]+)/teams$', organizer.TeamListView.as_view(), name='organizer.teams'), re_path(r'^organizer/(?P[^/]+)/team/add$', organizer.TeamCreateView.as_view(), name='organizer.team.add'), re_path(r'^organizer/(?P[^/]+)/team/(?P[^/]+)/$', organizer.TeamMemberView.as_view(), diff --git a/src/pretix/control/views/auth.py b/src/pretix/control/views/auth.py index 237246c7a3..7daa426505 100644 --- a/src/pretix/control/views/auth.py +++ b/src/pretix/control/views/auth.py @@ -66,7 +66,6 @@ from pretix.base.forms.auth import ( ) from pretix.base.metrics import pretix_failed_logins, pretix_successful_logins from pretix.base.models import TeamInvite, U2FDevice, User, WebAuthnDevice -from pretix.base.services.mail import SendMailException from pretix.helpers.http import get_client_ip, redirect_to_url from pretix.helpers.security import handle_login_source @@ -347,9 +346,6 @@ class Forgot(TemplateView): except User.DoesNotExist: logger.warning('Backend password reset for unregistered e-mail \"' + email + '\" requested.') - except SendMailException: - logger.exception('Sending password reset email to \"' + email + '\" failed.') - except RepeatedResetDenied: pass diff --git a/src/pretix/control/views/mail.py b/src/pretix/control/views/mail.py new file mode 100644 index 0000000000..6b775961ea --- /dev/null +++ b/src/pretix/control/views/mail.py @@ -0,0 +1,183 @@ +# +# 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 +# . +# +import base64 +import logging + +from django.conf import settings +from django.contrib import messages +from django.core.exceptions import BadRequest +from django.db import transaction +from django.shortcuts import get_object_or_404, redirect +from django.urls import reverse +from django.utils.functional import cached_property +from django.utils.translation import ngettext +from django.views import View +from django.views.generic import DetailView, ListView + +from pretix.base.middleware import _merge_csp, _parse_csp, _render_csp +from pretix.base.models import OutgoingMail +from pretix.base.services.mail import mail_send_task +from pretix.control.forms.filter import OutgoingMailFilterForm +from pretix.control.permissions import OrganizerPermissionRequiredMixin +from pretix.control.views.organizer import OrganizerDetailViewMixin + +logger = logging.getLogger(__name__) + + +class OutgoingMailQueryMixin: + + @cached_property + def request_data(self): + if self.request.method == "POST": + d = self.request.POST + else: + d = self.request.GET + d = d.copy() + return d + + @cached_property + def filter_form(self): + return OutgoingMailFilterForm( + data=self.request_data, + request=self.request, + ) + + def get_queryset(self): + qs = self.request.organizer.outgoing_mails.select_related( + 'event', 'order', 'orderposition', 'customer' + ) + + if 'outgoingmail' in self.request_data and '__ALL' not in self.request_data: + qs = qs.filter( + id__in=self.request_data.getlist('outgoingmail') + ) + elif self.request.method == 'GET' or '__ALL' in self.request_data: + if self.filter_form.is_valid(): + qs = self.filter_form.filter_qs(qs) + else: + raise BadRequest("No mails selected") + + return qs + + +class OutgoingMailListView(OutgoingMailQueryMixin, OrganizerDetailViewMixin, OrganizerPermissionRequiredMixin, ListView): + model = OutgoingMail + template_name = 'pretixcontrol/organizers/outgoing_mails.html' + # Assume "the highest" permission level for now because emails could belog to any event, order, or customer. + # We plan to add a special permissoin in the future + permission = 'can_change_organizer_settings' + context_object_name = 'mails' + paginate_by = 100 + + def get_context_data(self, **kwargs): + ctx = super().get_context_data(**kwargs) + ctx['filter_form'] = self.filter_form + ctx['days'] = int(settings.OUTGOING_MAIL_RETENTION / (24 * 3600)) + return ctx + + +class OutgoingMailDetailView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixin, DetailView): + model = OutgoingMail + template_name = 'pretixcontrol/organizers/outgoing_mail.html' + permission = 'can_change_organizer_settings' + context_object_name = 'mail' + + def get_object(self, queryset=None): + return get_object_or_404(OutgoingMail, organizer=self.request.organizer, pk=self.kwargs.get('mail')) + + def dispatch(self, request, *args, **kwargs): + response = super().dispatch(request, *args, **kwargs) + if 'Content-Security-Policy' in response: + h = _parse_csp(response['Content-Security-Policy']) + else: + h = {} + csps = { + 'frame-src': ['data:'], + } + _merge_csp(h, csps) + response['Content-Security-Policy'] = _render_csp(h) + return response + + def get_context_data(self, **kwargs): + ctx = super().get_context_data(**kwargs) + if self.object.body_html: + ctx['data_url'] = "data:text/html;charset=utf-8;base64," + base64.b64encode(self.object.body_html.encode()).decode() + return ctx + + +class OutgoingMailBulkAction(OutgoingMailQueryMixin, OrganizerPermissionRequiredMixin, OrganizerDetailViewMixin, View): + permission = 'can_change_organizer_settings' + + @transaction.atomic + def post(self, request, *args, **kwargs): + if request.POST.get('action') == 'retry': + ids = set( + self.get_queryset().filter(status__in=OutgoingMail.STATUS_LIST_RETRYABLE).values_list("pk", flat=True) + ) + with transaction.atomic(): + OutgoingMail.objects.filter(pk__in=ids).update( + status=OutgoingMail.STATUS_QUEUED, + sent=None, + ) + self.request.organizer.log_action( + 'pretix.organizer.outgoingmails.retried', user=self.request.user, data={ + 'mails': list(ids) + }, save=False + ) + for i in ids: + mail_send_task.apply_async(kwargs={"outgoing_mail": i}) + + messages.success(request, ngettext( + "A retry of one email was scheduled.", + "A retry of {num} emails was scheduled.", + len(ids), + ).format(num=len(ids))) + elif request.POST.get('action') == 'abort': + ids = set( + self.get_queryset().filter( + status__in=(OutgoingMail.STATUS_QUEUED, OutgoingMail.STATUS_AWAITING_RETRY) + ).values_list("pk", flat=True) + ) + with transaction.atomic(): + OutgoingMail.objects.filter(pk__in=ids).update( + status=OutgoingMail.STATUS_ABORTED, + sent=None, + ) + self.request.organizer.log_action( + 'pretix.organizer.outgoingmails.aborted', user=self.request.user, data={ + 'mails': list(ids) + }, save=False + ) + for i in ids: + mail_send_task.apply_async(kwargs={"outgoing_mail": i}) + + messages.success(request, ngettext( + "One email was aborted and will not be sent.", + "{num} emails were aborted and will not be sent.", + len(ids), + ).format(num=len(ids))) + return redirect(self.get_success_url()) + + def get_success_url(self) -> str: + return reverse('control:organizer.outgoingmails', kwargs={ + 'organizer': self.request.organizer.slug, + }) diff --git a/src/pretix/control/views/orders.py b/src/pretix/control/views/orders.py index 77fe326849..cf98be74a9 100644 --- a/src/pretix/control/views/orders.py +++ b/src/pretix/control/views/orders.py @@ -98,9 +98,7 @@ from pretix.base.services.invoices import ( invoice_qualified, regenerate_invoice, transmit_invoice, ) from pretix.base.services.locking import LockTimeoutException -from pretix.base.services.mail import ( - SendMailException, prefix_subject, render_mail, -) +from pretix.base.services.mail import prefix_subject, render_mail from pretix.base.services.orders import ( OrderChangeManager, OrderError, approve_order, cancel_order, deny_order, extend_order, mark_order_expired, mark_order_refunded, @@ -1066,10 +1064,6 @@ class OrderPaymentConfirm(OrderView): messages.error(self.request, str(e)) except PaymentException as e: messages.error(self.request, str(e)) - except SendMailException: - messages.warning(self.request, - _('The payment has been marked as complete, but we were unable to send a ' - 'confirmation mail.')) else: messages.success(self.request, _('The payment has been marked as complete.')) else: @@ -1540,9 +1534,6 @@ class OrderTransition(OrderView): 'message': str(e) }) messages.error(self.request, str(e)) - except SendMailException: - messages.warning(self.request, _('The order has been marked as paid, but we were unable to send a ' - 'confirmation mail.')) else: messages.success(self.request, _('The payment has been created successfully.')) elif self.order.cancel_allowed() and to == 'c': @@ -1781,15 +1772,11 @@ class OrderResendLink(OrderView): permission = 'can_change_orders' def post(self, *args, **kwargs): - try: - if 'position' in kwargs: - p = get_object_or_404(self.order.positions, pk=kwargs['position']) - p.resend_link(user=self.request.user) - else: - self.order.resend_link(user=self.request.user) - except SendMailException: - messages.error(self.request, _('There was an error sending the mail. Please try again later.')) - return redirect(self.get_order_url()) + if 'position' in kwargs: + p = get_object_or_404(self.order.positions, pk=kwargs['position']) + p.resend_link(user=self.request.user) + else: + self.order.resend_link(user=self.request.user) messages.success(self.request, _('The email has been queued to be sent.')) return redirect(self.get_order_url()) @@ -2433,24 +2420,18 @@ class OrderSendMail(EventPermissionRequiredMixin, OrderViewMixin, FormView): } return self.get(self.request, *self.args, **self.kwargs) else: - try: - order.send_mail( - form.cleaned_data['subject'], email_template, - email_context, 'pretix.event.order.email.custom_sent', - self.request.user, auto_email=False, - attach_tickets=form.cleaned_data.get('attach_tickets', False), - invoices=form.cleaned_data.get('attach_invoices', []), - attach_other_files=[a for a in [ - self.request.event.settings.get('mail_attachment_new_order', as_type=str, default='')[len('file://'):] - ] if a] if form.cleaned_data.get('attach_new_order', False) else [], - ) - messages.success(self.request, - _('Your message has been queued and will be sent to {}.'.format(order.email))) - except SendMailException: - messages.error( - self.request, - _('Failed to send mail to the following user: {}'.format(order.email)) - ) + order.send_mail( + form.cleaned_data['subject'], email_template, + email_context, 'pretix.event.order.email.custom_sent', + self.request.user, auto_email=False, + attach_tickets=form.cleaned_data.get('attach_tickets', False), + invoices=form.cleaned_data.get('attach_invoices', []), + attach_other_files=[a for a in [ + self.request.event.settings.get('mail_attachment_new_order', as_type=str, default='')[len('file://'):] + ] if a] if form.cleaned_data.get('attach_new_order', False) else [], + ) + messages.success(self.request, + _('Your message has been queued and will be sent to {}.'.format(order.email))) return super(OrderSendMail, self).form_valid(form) def get_success_url(self): @@ -2503,23 +2484,19 @@ class OrderPositionSendMail(OrderSendMail): } return self.get(self.request, *self.args, **self.kwargs) else: - try: - position.send_mail( - form.cleaned_data['subject'], - email_template, - email_context, - 'pretix.event.order.position.email.custom_sent', - self.request.user, - attach_tickets=form.cleaned_data.get('attach_tickets', False), - attach_other_files=[a for a in [ - self.request.event.settings.get('mail_attachment_new_order', as_type=str, default='')[len('file://'):] - ] if a] if form.cleaned_data.get('attach_new_order', False) else [], - ) - messages.success(self.request, - _('Your message has been queued and will be sent to {}.'.format(position.attendee_email))) - except SendMailException: - messages.error(self.request, - _('Failed to send mail to the following user: {}'.format(position.attendee_email))) + position.send_mail( + form.cleaned_data['subject'], + email_template, + email_context, + 'pretix.event.order.position.email.custom_sent', + self.request.user, + attach_tickets=form.cleaned_data.get('attach_tickets', False), + attach_other_files=[a for a in [ + self.request.event.settings.get('mail_attachment_new_order', as_type=str, default='')[len('file://'):] + ] if a] if form.cleaned_data.get('attach_new_order', False) else [], + ) + messages.success(self.request, + _('Your message has been queued and will be sent to {}.'.format(position.attendee_email))) return super(OrderSendMail, self).form_valid(form) diff --git a/src/pretix/control/views/organizer.py b/src/pretix/control/views/organizer.py index 0cf66555cf..25977e9d8f 100644 --- a/src/pretix/control/views/organizer.py +++ b/src/pretix/control/views/organizer.py @@ -103,7 +103,7 @@ from pretix.base.plugins import ( PLUGIN_LEVEL_ORGANIZER, ) from pretix.base.services.export import multiexport, scheduled_organizer_export -from pretix.base.services.mail import SendMailException, mail, prefix_subject +from pretix.base.services.mail import mail, prefix_subject from pretix.base.signals import register_multievent_data_exporters from pretix.base.templatetags.rich_text import markdown_compile_email from pretix.base.views.tasks import AsyncAction @@ -1037,24 +1037,21 @@ class TeamMemberView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixin, return ctx def _send_invite(self, instance): - try: - mail( - instance.email, - _('pretix account invitation'), - 'pretixcontrol/email/invitation.txt', - { - 'user': self, - 'organizer': self.request.organizer.name, - 'team': instance.team.name, - 'url': build_global_uri('control:auth.invite', kwargs={ - 'token': instance.token - }) - }, - event=None, - locale=self.request.LANGUAGE_CODE - ) - except SendMailException: - pass # Already logged + mail( + instance.email, + _('pretix account invitation'), + 'pretixcontrol/email/invitation.txt', + { + 'user': self, + 'organizer': self.request.organizer.name, + 'team': instance.team.name, + 'url': build_global_uri('control:auth.invite', kwargs={ + 'token': instance.token + }) + }, + event=None, + locale=self.request.LANGUAGE_CODE + ) @transaction.atomic def post(self, request, *args, **kwargs): @@ -3027,6 +3024,7 @@ class CustomerDetailView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMi locale=self.customer.locale, customer=self.customer, organizer=self.request.organizer, + sensitive=True, ) messages.success( self.request, diff --git a/src/pretix/control/views/users.py b/src/pretix/control/views/users.py index ec35d378f2..207d852e22 100644 --- a/src/pretix/control/views/users.py +++ b/src/pretix/control/views/users.py @@ -41,7 +41,6 @@ from hijack import signals from pretix.base.auth import get_auth_backends from pretix.base.models import User -from pretix.base.services.mail import SendMailException from pretix.control.forms.filter import UserFilterForm from pretix.control.forms.users import UserEditForm from pretix.control.permissions import AdministratorPermissionRequiredMixin @@ -139,11 +138,7 @@ class UserResetView(AdministratorPermissionRequiredMixin, RecentAuthenticationRe def post(self, request, *args, **kwargs): self.object = get_object_or_404(User, pk=self.kwargs.get("id")) - try: - self.object.send_password_reset() - except SendMailException: - messages.error(request, _('There was an error sending the mail. Please try again later.')) - return redirect(self.get_success_url()) + self.object.send_password_reset() self.object.log_action('pretix.control.auth.user.forgot_password.mail_sent', user=request.user) diff --git a/src/pretix/helpers/database.py b/src/pretix/helpers/database.py index 6caf7499f6..1289f4f1af 100644 --- a/src/pretix/helpers/database.py +++ b/src/pretix/helpers/database.py @@ -25,7 +25,7 @@ from django.conf import settings from django.core.exceptions import FieldDoesNotExist, ImproperlyConfigured from django.db import connection, transaction from django.db.models import ( - Aggregate, Expression, F, Field, Lookup, OrderBy, Value, + Aggregate, Expression, F, Field, JSONField, Lookup, OrderBy, Value, ) from django.utils.functional import lazy @@ -154,6 +154,19 @@ class NotEqual(Lookup): return '%s <> %s' % (lhs, rhs), params +@JSONField.register_lookup +class ContainsString(Lookup): + lookup_name = 'containsstring' + + def as_sql(self, compiler, connection): + if connection.vendor != "postgresql": + raise NotImplementedError("Lookup in JSON Array not supported on this database") + lhs, lhs_params = self.process_lhs(compiler, connection) + rhs, rhs_params = self.process_rhs(compiler, connection) + params = lhs_params + rhs_params + return '%s ? %s' % (lhs, rhs), params + + class PostgresWindowFrame(Expression): template = "%(frame_type)s BETWEEN %(start)s AND %(end)s" diff --git a/src/pretix/helpers/security.py b/src/pretix/helpers/security.py index baa8f3a159..2e5b545b57 100644 --- a/src/pretix/helpers/security.py +++ b/src/pretix/helpers/security.py @@ -32,7 +32,7 @@ from django_countries.fields import Country from geoip2.errors import AddressNotFoundError from pretix.base.i18n import language -from pretix.base.services.mail import SendMailException, mail +from pretix.base.services.mail import mail from pretix.helpers.http import get_client_ip from pretix.helpers.urls import build_absolute_uri @@ -159,21 +159,18 @@ def handle_login_source(user, request): }) if user.known_login_sources.count() > 1: # Do not send on first login or first login after introduction of this feature: - try: - with language(user.locale): - mail( - user.email, - _('Login from new source detected'), - 'pretixcontrol/email/login_notice.txt', - { - 'source': src, - 'country': Country(str(country)).name if country else _('Unknown country'), - 'instance': settings.PRETIX_INSTANCE_NAME, - 'url': build_absolute_uri('control:user.settings') - }, - event=None, - user=user, - locale=user.locale - ) - except SendMailException: - pass # Not much we can do + with language(user.locale): + mail( + user.email, + _('Login from new source detected'), + 'pretixcontrol/email/login_notice.txt', + { + 'source': src, + 'country': Country(str(country)).name if country else _('Unknown country'), + 'instance': settings.PRETIX_INSTANCE_NAME, + 'url': build_absolute_uri('control:user.settings') + }, + event=None, + user=user, + locale=user.locale + ) diff --git a/src/pretix/plugins/banktransfer/tasks.py b/src/pretix/plugins/banktransfer/tasks.py index 464fa6b16b..1d2144668c 100644 --- a/src/pretix/plugins/banktransfer/tasks.py +++ b/src/pretix/plugins/banktransfer/tasks.py @@ -56,7 +56,6 @@ from pretix.base.models import ( ) from pretix.base.payment import PaymentException from pretix.base.services.locking import LockTimeoutException -from pretix.base.services.mail import SendMailException from pretix.base.services.orders import change_payment_provider from pretix.base.services.tasks import TransactionAwareTask from pretix.celery_app import app @@ -72,13 +71,10 @@ def notify_incomplete_payment(o: Order): email_context = get_email_context(event=o.event, order=o, pending_sum=o.pending_sum) email_subject = o.event.settings.mail_subject_order_incomplete_payment - try: - o.send_mail( - email_subject, email_template, email_context, - 'pretix.event.order.email.expire_warning_sent' - ) - except SendMailException: - logger.exception('Reminder email could not be sent') + o.send_mail( + email_subject, email_template, email_context, + 'pretix.event.order.email.expire_warning_sent' + ) def cancel_old_payments(order): @@ -288,9 +284,6 @@ def _handle_transaction(trans: BankTransaction, matches: tuple, regex_match_to_s except Quota.QuotaExceededException: # payment confirmed but order status could not be set, no longer problem of this plugin cancel_old_payments(order) - except SendMailException: - # payment confirmed but order status could not be set, no longer problem of this plugin - cancel_old_payments(order) else: cancel_old_payments(order) diff --git a/src/pretix/plugins/banktransfer/views.py b/src/pretix/plugins/banktransfer/views.py index 29926aa2cb..9733e32034 100644 --- a/src/pretix/plugins/banktransfer/views.py +++ b/src/pretix/plugins/banktransfer/views.py @@ -58,7 +58,6 @@ from localflavor.generic.forms import BICFormField, IBANFormField from pretix.base.forms.widgets import DatePickerWidget from pretix.base.models import Event, Order, OrderPayment, OrderRefund, Quota -from pretix.base.services.mail import SendMailException from pretix.base.settings import SettingsSandbox from pretix.base.templatetags.money import money_filter from pretix.control.permissions import ( @@ -160,11 +159,6 @@ class ActionView(View): p.confirm(user=self.request.user) except Quota.QuotaExceededException: pass - except SendMailException: - return JsonResponse({ - 'status': 'error', - 'message': _('Problem sending email.') - }) trans.state = BankTransaction.STATE_VALID trans.save() trans.order.payments.filter( diff --git a/src/pretix/plugins/paypal/payment.py b/src/pretix/plugins/paypal/payment.py index 63cb035014..9acc5ae4b2 100644 --- a/src/pretix/plugins/paypal/payment.py +++ b/src/pretix/plugins/paypal/payment.py @@ -57,7 +57,6 @@ from pretix.base.decimal import round_decimal from pretix.base.forms import SecretKeySettingsField from pretix.base.models import Event, Order, OrderPayment, OrderRefund, Quota from pretix.base.payment import BasePaymentProvider, PaymentException -from pretix.base.services.mail import SendMailException from pretix.base.settings import SettingsSandbox from pretix.multidomain.urlreverse import build_absolute_uri from pretix.plugins.paypal.api import Api @@ -468,9 +467,6 @@ class Paypal(BasePaymentProvider): payment_obj.confirm() except Quota.QuotaExceededException as e: raise PaymentException(str(e)) - - except SendMailException: - messages.warning(request, _('There was an error sending the confirmation mail.')) return None def payment_pending_render(self, request, payment) -> str: diff --git a/src/pretix/plugins/paypal2/payment.py b/src/pretix/plugins/paypal2/payment.py index 84a0e5dbae..6f1d3774b9 100644 --- a/src/pretix/plugins/paypal2/payment.py +++ b/src/pretix/plugins/paypal2/payment.py @@ -54,7 +54,6 @@ from pretix.base.forms import SecretKeySettingsField from pretix.base.forms.questions import guess_country from pretix.base.models import Event, Order, OrderPayment, OrderRefund, Quota from pretix.base.payment import BasePaymentProvider, PaymentException -from pretix.base.services.mail import SendMailException from pretix.base.settings import SettingsSandbox from pretix.helpers import OF_SELF from pretix.helpers.urls import build_absolute_uri as build_global_uri @@ -821,9 +820,6 @@ class PaypalMethod(BasePaymentProvider): payment.confirm() except Quota.QuotaExceededException as e: raise PaymentException(str(e)) - - except SendMailException: - messages.warning(request, _('There was an error sending the confirmation mail.')) finally: if 'payment_paypal_oid' in request.session: del request.session['payment_paypal_oid'] diff --git a/src/pretix/plugins/sendmail/models.py b/src/pretix/plugins/sendmail/models.py index 0f5733493c..8235eec9c0 100644 --- a/src/pretix/plugins/sendmail/models.py +++ b/src/pretix/plugins/sendmail/models.py @@ -38,7 +38,6 @@ from pretix.base.models import ( fields, ) from pretix.base.models.base import LoggingMixin -from pretix.base.services.mail import SendMailException class ScheduledMail(models.Model): @@ -180,13 +179,10 @@ class ScheduledMail(models.Model): invoice_address=ia, event_or_subevent=self.subevent or e, ) - try: - o.send_mail(self.rule.subject, self.rule.template, email_ctx, - attach_ical=self.rule.attach_ical, - log_entry_type='pretix.plugins.sendmail.rule.order.email.sent') - o_sent = True - except SendMailException: - ... # ¯\_(ツ)_/¯ + o.send_mail(self.rule.subject, self.rule.template, email_ctx, + attach_ical=self.rule.attach_ical, + log_entry_type='pretix.plugins.sendmail.rule.order.email.sent') + o_sent = True if send_to_attendees: if not self.rule.all_products: @@ -195,31 +191,28 @@ class ScheduledMail(models.Model): positions = [p for p in positions if p.subevent_id == self.subevent_id] for p in positions: - try: - if p.attendee_email and (p.attendee_email != o.email or not o_sent): - email_ctx = get_email_context( - event=e, - order=o, - invoice_address=ia, - position=p, - event_or_subevent=self.subevent or e, - ) - p.send_mail(self.rule.subject, self.rule.template, email_ctx, - attach_ical=self.rule.attach_ical, - log_entry_type='pretix.plugins.sendmail.rule.order.position.email.sent') - elif not o_sent and o.email: - email_ctx = get_email_context( - event=e, - order=o, - invoice_address=ia, - event_or_subevent=self.subevent or e, - ) - o.send_mail(self.rule.subject, self.rule.template, email_ctx, - attach_ical=self.rule.attach_ical, - log_entry_type='pretix.plugins.sendmail.rule.order.email.sent') - o_sent = True - except SendMailException: - ... # ¯\_(ツ)_/¯ + if p.attendee_email and (p.attendee_email != o.email or not o_sent): + email_ctx = get_email_context( + event=e, + order=o, + invoice_address=ia, + position=p, + event_or_subevent=self.subevent or e, + ) + p.send_mail(self.rule.subject, self.rule.template, email_ctx, + attach_ical=self.rule.attach_ical, + log_entry_type='pretix.plugins.sendmail.rule.order.position.email.sent') + elif not o_sent and o.email: + email_ctx = get_email_context( + event=e, + order=o, + invoice_address=ia, + event_or_subevent=self.subevent or e, + ) + o.send_mail(self.rule.subject, self.rule.template, email_ctx, + attach_ical=self.rule.attach_ical, + log_entry_type='pretix.plugins.sendmail.rule.order.email.sent') + o_sent = True self.last_successful_order_id = o.pk diff --git a/src/pretix/plugins/sendmail/tasks.py b/src/pretix/plugins/sendmail/tasks.py index 172b1e8c4c..1c5f5e03ee 100644 --- a/src/pretix/plugins/sendmail/tasks.py +++ b/src/pretix/plugins/sendmail/tasks.py @@ -41,7 +41,7 @@ from pretix.base.i18n import language from pretix.base.models import ( CachedFile, Checkin, Event, InvoiceAddress, Order, User, ) -from pretix.base.services.mail import SendMailException, mail +from pretix.base.services.mail import mail from pretix.base.services.tasks import ProfiledEventTask from pretix.celery_app import app from pretix.helpers.format import format_map @@ -61,7 +61,6 @@ def send_mails_to_orders(event: Event, user: int, subject: dict, message: dict, recipients: str, filter_checkins: bool, not_checked_in: bool, checkin_lists: list, attachments: list = None, attach_tickets: bool = False, attach_ical: bool = False) -> None: - failures = [] user = User.objects.get(pk=user) if user else None subject = LazyI18nString(subject) message = LazyI18nString(message) @@ -121,70 +120,64 @@ def send_mails_to_orders(event: Event, user: int, subject: dict, message: dict, if subevents_to and p.subevent.date_from >= subevents_to: continue - try: - with language(o.locale, event.settings.region): - email_context = get_email_context(event=event, order=o, invoice_address=ia, position=p) - mail( - p.attendee_email, - subject, - message, - email_context, - event, - locale=o.locale, - order=o, - position=p, - attach_tickets=attach_tickets, - attach_ical=attach_ical, - attach_cached_files=attachments - ) - o.log_action( - 'pretix.plugins.sendmail.order.email.sent.attendee', - user=user, - data={ - 'position': p.positionid, - 'subject': format_map(subject.localize(o.locale), email_context), - 'message': format_map(message.localize(o.locale), email_context), - 'recipient': p.attendee_email, - 'attach_tickets': attach_tickets, - 'attach_ical': attach_ical, - 'attach_other_files': [], - 'attach_cached_files': attachments_for_log, - } - ) - except SendMailException: - failures.append(p.attendee_email) - - if send_to_order and o.email: - try: with language(o.locale, event.settings.region): - email_context = get_email_context(event=event, order=o, invoice_address=ia) + email_context = get_email_context(event=event, order=o, invoice_address=ia, position=p) mail( - o.email, + p.attendee_email, subject, message, email_context, event, locale=o.locale, order=o, + position=p, attach_tickets=attach_tickets, attach_ical=attach_ical, - attach_cached_files=attachments, + attach_cached_files=attachments ) o.log_action( - 'pretix.plugins.sendmail.order.email.sent', + 'pretix.plugins.sendmail.order.email.sent.attendee', user=user, data={ + 'position': p.positionid, 'subject': format_map(subject.localize(o.locale), email_context), 'message': format_map(message.localize(o.locale), email_context), - 'recipient': o.email, + 'recipient': p.attendee_email, 'attach_tickets': attach_tickets, 'attach_ical': attach_ical, 'attach_other_files': [], 'attach_cached_files': attachments_for_log, } ) - except SendMailException: - failures.append(o.email) + + if send_to_order and o.email: + with language(o.locale, event.settings.region): + email_context = get_email_context(event=event, order=o, invoice_address=ia) + mail( + o.email, + subject, + message, + email_context, + event, + locale=o.locale, + order=o, + attach_tickets=attach_tickets, + attach_ical=attach_ical, + attach_cached_files=attachments, + ) + o.log_action( + 'pretix.plugins.sendmail.order.email.sent', + user=user, + data={ + 'subject': format_map(subject.localize(o.locale), email_context), + 'message': format_map(message.localize(o.locale), email_context), + 'recipient': o.email, + 'attach_tickets': attach_tickets, + 'attach_ical': attach_ical, + 'attach_other_files': [], + 'attach_cached_files': attachments_for_log, + } + ) for chunk in _chunks(objects, 1000): orders = Order.objects.filter(pk__in=chunk, event=event) diff --git a/src/pretix/plugins/stripe/payment.py b/src/pretix/plugins/stripe/payment.py index b87a4efdb7..9900882c8f 100644 --- a/src/pretix/plugins/stripe/payment.py +++ b/src/pretix/plugins/stripe/payment.py @@ -71,7 +71,6 @@ from pretix.base.payment import ( BasePaymentProvider, PaymentException, WalletQueries, ) from pretix.base.plugins import get_all_plugins -from pretix.base.services.mail import SendMailException from pretix.base.settings import SettingsSandbox from pretix.helpers import OF_SELF from pretix.helpers.countries import CachedCountries @@ -1000,9 +999,6 @@ class StripeMethod(BasePaymentProvider): payment.confirm() except Quota.QuotaExceededException as e: raise PaymentException(str(e)) - - except SendMailException: - raise PaymentException(_('There was an error sending the confirmation mail.')) elif intent.status == 'processing': if request: messages.warning(request, _('Your payment is pending completion. We will inform you as soon as the ' diff --git a/src/pretix/presale/checkoutflow.py b/src/pretix/presale/checkoutflow.py index 0629af00f0..980b728612 100644 --- a/src/pretix/presale/checkoutflow.py +++ b/src/pretix/presale/checkoutflow.py @@ -1654,11 +1654,6 @@ class ConfirmStep(CartMixin, AsyncAction, TemplateFlowStep): order = Order.objects.get(id=value) return self.get_order_url(order) - def get_error_message(self, exception): - if exception.__class__.__name__ == 'SendMailException': - return _('There was an error sending the confirmation mail. Please try again later.') - return super().get_error_message(exception) - def get_error_url(self): return self.get_step_url(self.request) diff --git a/src/pretix/presale/views/customer.py b/src/pretix/presale/views/customer.py index fa0dd884b7..7552c6c0c9 100644 --- a/src/pretix/presale/views/customer.py +++ b/src/pretix/presale/views/customer.py @@ -325,6 +325,7 @@ class ResetPasswordView(FormView): locale=customer.locale, customer=customer, organizer=self.request.organizer, + sensitive=True, ) messages.success( self.request, diff --git a/src/pretix/presale/views/order.py b/src/pretix/presale/views/order.py index ef57ae47ee..990adeb4f5 100644 --- a/src/pretix/presale/views/order.py +++ b/src/pretix/presale/views/order.py @@ -77,7 +77,6 @@ from pretix.base.services.invoices import ( generate_cancellation, generate_invoice, invoice_pdf, invoice_pdf_task, invoice_qualified, ) -from pretix.base.services.mail import SendMailException from pretix.base.services.orders import ( OrderChangeManager, OrderError, _try_auto_refund, cancel_order, change_payment_provider, error_messages, @@ -656,10 +655,7 @@ class OrderPayChangeMethod(EventViewMixin, OrderDetailMixin, TemplateView): amount=Decimal('0.00'), fee=None ) - try: - p.confirm() - except SendMailException: - pass + p.confirm() else: p._mark_order_paid( payment_refund_sum=self.order.payment_refund_sum diff --git a/src/pretix/presale/views/user.py b/src/pretix/presale/views/user.py index a95118408e..7ff3f46380 100644 --- a/src/pretix/presale/views/user.py +++ b/src/pretix/presale/views/user.py @@ -32,8 +32,6 @@ # 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. -import logging - from django.conf import settings from django.contrib import messages from django.utils.functional import cached_property @@ -42,7 +40,7 @@ from django.views import View from django.views.generic import TemplateView from pretix.base.email import get_email_context -from pretix.base.services.mail import INVALID_ADDRESS, SendMailException, mail +from pretix.base.services.mail import INVALID_ADDRESS, mail from pretix.helpers.http import redirect_to_url from pretix.multidomain.urlreverse import eventreverse from pretix.presale.forms.user import ResendLinkForm @@ -83,13 +81,7 @@ class ResendLinkView(EventViewMixin, TemplateView): subject = self.request.event.settings.mail_subject_resend_all_links template = self.request.event.settings.mail_text_resend_all_links context = get_email_context(event=self.request.event, orders=orders) - try: - mail(user, subject, template, context, event=self.request.event, locale=self.request.LANGUAGE_CODE) - except SendMailException: - logger = logging.getLogger('pretix.presale.user') - logger.exception('A mail resending order links to {} could not be sent.'.format(user)) - messages.error(self.request, _('We have trouble sending emails right now, please check back later.')) - return self.get(request, *args, **kwargs) + mail(user, subject, template, context, event=self.request.event, locale=self.request.LANGUAGE_CODE) messages.success(self.request, _('If there were any orders by this user, they will receive an email with their order codes.')) return redirect_to_url(eventreverse(self.request.event, 'presale:event.index')) diff --git a/src/pretix/settings.py b/src/pretix/settings.py index 627275449a..f02c840e68 100644 --- a/src/pretix/settings.py +++ b/src/pretix/settings.py @@ -855,6 +855,8 @@ COUNTRIES_OVERRIDE = { DATA_UPLOAD_MAX_NUMBER_FIELDS = 25000 DATA_UPLOAD_MAX_MEMORY_SIZE = 10 * 1024 * 1024 # 10 MB +OUTGOING_MAIL_RETENTION = 14 * 24 * 3600 # 14 days in seonds + # File sizes are in MiB FILE_UPLOAD_MAX_SIZE_IMAGE = 1024 * 1024 * config.getint("pretix_file_upload", "max_size_image", fallback=10) FILE_UPLOAD_MAX_SIZE_FAVICON = 1024 * 1024 * config.getint("pretix_file_upload", "max_size_favicon", fallback=1) diff --git a/src/pretix/static/pretixcontrol/js/ui/outgoingmail.js b/src/pretix/static/pretixcontrol/js/ui/outgoingmail.js new file mode 100644 index 0000000000..f6457440ad --- /dev/null +++ b/src/pretix/static/pretixcontrol/js/ui/outgoingmail.js @@ -0,0 +1,43 @@ +function is_sandbox_supported() { + const iframe = document.createElement('iframe'); + return 'sandbox' in iframe; +} + +function safe_render(url, parent) { + // Estimate the height that prevents the user from having to scroll on two levels to see the full email + const height = ( + window.innerHeight - parent.parent().get(0).getBoundingClientRect().top - document.querySelector("footer").getBoundingClientRect().height - 20 + ) + "px"; + + const iframe = ( + // Per the HTML spec, a data: URL in an iframe is treated as its own origin: + // https://github.com/whatwg/html/pull/1756 + // It is unclear, if Firefox complies, and the behaviour around data URLs is quite wild: + // https://github.com/whatwg/html/issues/12091 + // Together with the sandbox attribute disallowing all JavaScript, and the fact + // that we sanitize the HTML before we even save it to the database, this should + // still be the safest way to render HTML in the context of our backend. + $("