Compare commits

..

6 Commits

Author SHA1 Message Date
luelista
7148ac040c Apply suggestion from @luelista 2025-09-04 14:26:05 +02:00
luelista
dedcb7efc4 Update src/pretix/base/signals.py
Co-authored-by: Raphael Michel <michel@pretix.eu>
2025-09-04 14:24:18 +02:00
Mira Weller
2185e1c2e1 Fix typo 2025-08-28 12:21:51 +02:00
Mira Weller
9d2be89418 "event-level plugin" -> "event plugin" 2025-08-28 12:19:14 +02:00
Mira Weller
c0771ab819 Use same wording 2025-08-28 12:11:14 +02:00
Mira Weller
38292bc501 Clarify plugin signal docstrings 2025-08-20 18:15:18 +02:00
264 changed files with 52401 additions and 56468 deletions

View File

@@ -163,10 +163,10 @@ transmission_email_address string Optional. An em
Business customers only.
===================================== ========================== =======================================================
Peppol
PEPPOL
""""""
The identifier ``"peppol"`` represents the transmission of XML invoices through the `Peppol`_ network.
The identifier ``"peppol"`` represents the transmission of XML invoices through the `PEPPOL`_ network.
This is only available for business addresses.
This is not supported by pretix out of the box and requires the use of a suitable plugin.
The ``transmission_info`` object may contain the following properties:
@@ -176,7 +176,7 @@ The ``transmission_info`` object may contain the following properties:
===================================== ========================== =======================================================
Field Type Description
===================================== ========================== =======================================================
transmission_peppol_participant_id string Required. The Peppol participant ID of the recipient.
transmission_peppol_participant_id string Required. The PEPPOL participant ID of the recipient.
===================================== ========================== =======================================================
Italian Exchange System
@@ -605,5 +605,5 @@ but in other cases transmission may need to be triggered manually.
:statuscode 409: The invoice is currently in transmission
.. _Peppol: https://en.wikipedia.org/wiki/PEPPOL
.. _PEPPOL: https://en.wikipedia.org/wiki/PEPPOL
.. _Sistema di Interscambio: https://it.wikipedia.org/wiki/Fattura_elettronica_in_Italia

View File

@@ -418,7 +418,6 @@ List of all orders
"seat": null,
"checkins": [
{
"id": 1337,
"list": 44,
"type": "entry",
"gate": null,
@@ -663,7 +662,6 @@ Fetching individual orders
"seat": null,
"checkins": [
{
"id": 1337,
"list": 44,
"type": "entry",
"gate": null,
@@ -1634,7 +1632,6 @@ List of all order positions
"blocked": null,
"checkins": [
{
"id": 1337,
"list": 44,
"type": "entry",
"gate": null,
@@ -1763,7 +1760,6 @@ Fetching individual positions
"seat": null,
"checkins": [
{
"id": 1337,
"list": 44,
"type": "entry",
"gate": null,

View File

@@ -37,7 +37,7 @@ Frontend
--------
.. automodule:: pretix.presale.signals
:members: html_head, html_footer, footer_link, global_footer_link, front_page_top, front_page_bottom, front_page_bottom_widget, fee_calculation_for_cart, contact_form_fields, question_form_fields, contact_form_fields_overrides, question_form_fields_overrides, checkout_confirm_messages, checkout_confirm_page_content, checkout_all_optional, html_page_header, render_seating_plan, checkout_flow_steps, position_info, position_info_top, item_description, global_html_head, global_html_footer, global_html_page_header, seatingframe_html_head, filter_subevents
:members: html_head, html_footer, footer_link, global_footer_link, front_page_top, front_page_bottom, front_page_bottom_widget, fee_calculation_for_cart, contact_form_fields, question_form_fields, contact_form_fields_overrides, question_form_fields_overrides, checkout_confirm_messages, checkout_confirm_page_content, checkout_all_optional, html_page_header, render_seating_plan, checkout_flow_steps, position_info, position_info_top, item_description, global_html_head, global_html_footer, global_html_page_header, seatingframe_html_head
.. automodule:: pretix.presale.signals

View File

@@ -6,4 +6,4 @@ sphinxcontrib-images
sphinxcontrib-jquery
sphinxcontrib-spelling==8.*
sphinxemoji
pyenchant==3.3.*
pyenchant==3.2.*

View File

@@ -7,4 +7,4 @@ sphinxcontrib-images
sphinxcontrib-jquery
sphinxcontrib-spelling==8.*
sphinxemoji
pyenchant==3.3.*
pyenchant==3.2.*

View File

@@ -35,16 +35,16 @@ dependencies = [
"cryptography>=44.0.0",
"css-inline==0.17.*",
"defusedcsv>=1.1.0",
"Django[argon2]==4.2.*,>=4.2.24",
"Django[argon2]==4.2.*,>=4.2.15",
"django-bootstrap3==25.2",
"django-compressor==4.5.1",
"django-countries==7.6.*",
"django-filter==25.1",
"django-formset-js-improved==0.5.0.4",
"django-formset-js-improved==0.5.0.3",
"django-formtools==2.5.1",
"django-hierarkey==2.0.*,>=2.0.1",
"django-hierarkey==2.0.*",
"django-hijack==3.7.*",
"django-i18nfield==1.11.*",
"django-i18nfield==1.10.*",
"django-libsass==0.9",
"django-localflavor==5.0",
"django-markup",
@@ -64,7 +64,7 @@ dependencies = [
"kombu==5.5.*",
"libsass==0.23.*",
"lxml",
"markdown==3.9", # 3.3.5 requires importlib-metadata>=4.4, but django-bootstrap3 requires importlib-metadata<3.
"markdown==3.8.2", # 3.3.5 requires importlib-metadata>=4.4, but django-bootstrap3 requires importlib-metadata<3.
# We can upgrade markdown again once django-bootstrap3 upgrades or once we drop Python 3.6 and 3.7
"mt-940==4.30.*",
"oauthlib==3.3.*",
@@ -79,7 +79,7 @@ dependencies = [
"protobuf==6.32.*",
"psycopg2-binary",
"pycountry",
"pycparser==2.23",
"pycparser==2.22",
"pycryptodome==3.23.*",
"pypdf==6.0.*",
"python-bidi==0.6.*", # Support for Arabic in reportlab
@@ -90,8 +90,8 @@ dependencies = [
"qrcode==8.2",
"redis==6.4.*",
"reportlab==4.4.*",
"requests==2.32.*",
"sentry-sdk==2.38.*",
"requests==2.31.*",
"sentry-sdk==2.35.*",
"sepaxml==2.6.*",
"stripe==7.9.*",
"text-unidecode==1.*",
@@ -100,7 +100,7 @@ dependencies = [
"ua-parser==1.0.*",
"vat_moss_forked==2020.3.20.0.11.0",
"vobject==0.9.*",
"webauthn==2.7.*",
"webauthn==2.6.*",
"zeep==4.3.*"
]
@@ -120,7 +120,7 @@ dev = [
"pytest-cache",
"pytest-cov",
"pytest-django==4.*",
"pytest-mock==3.15.*",
"pytest-mock==3.14.*",
"pytest-sugar",
"pytest-xdist==3.8.*",
"pytest==8.4.*",

View File

@@ -25,8 +25,8 @@ coverage:
coverage run -m py.test
npminstall:
# keep this in sync with pretix/_build.py!
# keep this in sync with setup.py!
mkdir -p pretix/static.dist/node_prefix/
cp -r pretix/static/npm_dir/* pretix/static.dist/node_prefix/
npm ci --prefix=pretix/static.dist/node_prefix
npm install --prefix=pretix/static.dist/node_prefix

View File

@@ -19,4 +19,4 @@
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
# <https://www.gnu.org/licenses/>.
#
__version__ = "2025.8.2"
__version__ = "2025.8.0.dev0"

View File

@@ -39,7 +39,7 @@ def npm_install():
node_prefix = os.path.join(here, 'static.dist', 'node_prefix')
os.makedirs(node_prefix, exist_ok=True)
shutil.copytree(os.path.join(here, 'static', 'npm_dir'), node_prefix, dirs_exist_ok=True)
subprocess.check_call('npm ci', shell=True, cwd=node_prefix)
subprocess.check_call('npm install', shell=True, cwd=node_prefix)
npm_installed = True

View File

@@ -484,7 +484,6 @@ class OrganizerSettingsSerializer(SettingsSerializer):
'reusable_media_type_nfc_mf0aes',
'reusable_media_type_nfc_mf0aes_autocreate_giftcard',
'reusable_media_type_nfc_mf0aes_autocreate_giftcard_currency',
'reusable_media_type_nfc_mf0aes_random_uid',
]
def __init__(self, *args, **kwargs):

View File

@@ -546,8 +546,7 @@ class DeviceViewSet(mixins.CreateModelMixin,
class OrganizerSettingsView(views.APIView):
permission = None
write_permission = 'can_change_organizer_settings'
permission = 'can_change_organizer_settings'
def get(self, request, *args, **kwargs):
s = OrganizerSettingsSerializer(instance=request.organizer.settings, organizer=request.organizer, context={

View File

@@ -252,15 +252,9 @@ class OutboundSyncProvider:
except KeyError:
with language(self.event.settings.locale):
raise SyncConfigError([_(
'Field "{field_name}" does not exist. Please check your {provider_name} settings.'
).format(field_name=key, provider_name=self.display_name)])
try:
input = inputs[field.required_input]
except KeyError:
with language(self.event.settings.locale):
raise SyncConfigError([_(
'Field "{field_name}" requires {required_input}, but only got {available_inputs}. Please check your {provider_name} settings.'
).format(field_name=key, required_input=field.required_input, available_inputs=", ".join(inputs.keys()), provider_name=self.display_name)])
'Field "{field_name}" is not valid for {available_inputs}. Please check your {provider_name} settings.'
).format(key=key, available_inputs="/".join(inputs.keys()), provider_name=self.display_name)])
input = inputs[field.required_input]
val = field.getter(input)
if isinstance(val, list):
if field.enum_opts and mapping_entry.get("value_map"):

View File

@@ -24,7 +24,6 @@ from itertools import groupby
from smtplib import SMTPResponseException
from typing import TypeVar
import bleach
import css_inline
from django.conf import settings
from django.core.mail.backends.smtp import EmailBackend
@@ -35,10 +34,7 @@ from django.utils.translation import get_language, gettext_lazy as _
from pretix.base.models import Event
from pretix.base.signals import register_html_mail_renderers
from pretix.base.templatetags.rich_text import (
DEFAULT_CALLBACKS, EMAIL_RE, URL_RE, abslink_callback,
markdown_compile_email, truelink_callback,
)
from pretix.base.templatetags.rich_text import markdown_compile_email
from pretix.helpers.format import SafeFormatter, format_map
from pretix.base.services.placeholders import ( # noqa
@@ -137,24 +133,13 @@ class TemplateBasedMailRenderer(BaseHTMLMailRenderer):
def template_name(self):
raise NotImplementedError()
def compile_markdown(self, plaintext, context=None):
return markdown_compile_email(plaintext, context=context)
def compile_markdown(self, plaintext):
return markdown_compile_email(plaintext)
def render(self, plain_body: str, plain_signature: str, subject: str, order, position, context) -> str:
body_md = self.compile_markdown(plain_body, context)
body_md = self.compile_markdown(plain_body)
if context:
linker = bleach.Linker(
url_re=URL_RE,
email_re=EMAIL_RE,
callbacks=DEFAULT_CALLBACKS + [truelink_callback, abslink_callback],
parse_email=True
)
body_md = format_map(
body_md,
context=context,
mode=SafeFormatter.MODE_RICH_TO_HTML,
linkifier=linker
)
body_md = format_map(body_md, context=context, mode=SafeFormatter.MODE_RICH_TO_HTML)
htmlctx = {
'site': settings.PRETIX_INSTANCE_NAME,
'site_url': settings.SITE_URL,

View File

@@ -22,7 +22,7 @@
from django import forms
from django.core.validators import RegexValidator
from django.utils.translation import pgettext, pgettext_lazy
from django.utils.translation import pgettext_lazy
from django_countries.fields import Country
from localflavor.it.forms import ITSocialSecurityNumberField
@@ -73,12 +73,3 @@ class ItalianSdITransmissionType(TransmissionType):
if is_business:
return base | {"company", "vat_id", "transmission_it_sdi_pec", "transmission_it_sdi_recipient_code"}
return base | {"transmission_it_sdi_codice_fiscale"}
def pdf_info_text(self) -> str:
# Watermark is not necessary as this is a usual precaution in Italy
return pgettext(
"italian_invoice",
"This PDF document is a visual copy of the invoice and does not constitute an invoice for VAT "
"purposes. The invoice is issued in XML format, transmitted in accordance with the procedures and terms "
"set forth in No. 89757/2018 of April 30, 2018, issued by the Director of the Revenue Agency."
)

View File

@@ -20,7 +20,6 @@
# <https://www.gnu.org/licenses/>.
#
import logging
import math
import re
import unicodedata
from collections import defaultdict
@@ -224,9 +223,6 @@ class BaseReportlabInvoiceRenderer(BaseInvoiceRenderer):
stylesheet.add(ParagraphStyle(name='FineprintHeading', fontName=self.font_bold, fontSize=8, leading=12))
stylesheet.add(ParagraphStyle(name='Fineprint', fontName=self.font_regular, fontSize=8, leading=10))
stylesheet.add(ParagraphStyle(name='FineprintRight', fontName=self.font_regular, fontSize=8, leading=10, alignment=TA_RIGHT))
stylesheet.add(ParagraphStyle(name='WarningBlock', fontName=self.font_bold, fontSize=10, leading=12,
alignment=TA_LEFT, borderWidth=1 * mm, borderColor=colors.black,
borderPadding=2 * mm, spaceBefore=5 * mm, spaceAfter=5 * mm))
return stylesheet
def _register_fonts(self):
@@ -580,28 +576,11 @@ class ClassicInvoiceRenderer(BaseReportlabInvoiceRenderer):
canvas.drawRightString(self.pagesize[0] - 20 * mm, (297 - 100) * mm, self._normalize(gettext('TEST MODE')))
canvas.restoreState()
def _draw_watermark(self, canvas):
watermark = self.invoice.transmission_type_instance.pdf_watermark()
if watermark:
canvas.saveState()
for font_size in range(200, 20, -10):
width = stringWidth(watermark, self.font_bold, font_size)
if width < self.pagesize[0]:
break
canvas.translate(self.pagesize[0] / 2, self.pagesize[1] / 2)
canvas.rotate(math.atan(self.pagesize[1] / self.pagesize[0]) / math.pi * 180)
canvas.setFont(self.font_bold, font_size)
canvas.setFillColorRGB(.92, .92, .92)
canvas.drawCentredString(0, - font_size / 2, self._normalize(watermark))
canvas.restoreState()
def _on_first_page(self, canvas: Canvas, doc):
canvas.setCreator('pretix.eu')
canvas.setTitle(pgettext('invoice', 'Invoice {num}').format(num=self.invoice.number))
canvas.saveState()
self._draw_watermark(canvas)
self._draw_footer(canvas)
self._draw_testmode(canvas)
self._draw_invoice_from_label(canvas)
@@ -631,14 +610,6 @@ class ClassicInvoiceRenderer(BaseReportlabInvoiceRenderer):
def _get_intro(self):
story = []
type_info_text = self.invoice.transmission_type_instance.pdf_info_text()
if type_info_text:
story.append(FontFallbackParagraph(
type_info_text,
self.stylesheet['WarningBlock']
))
if self.invoice.custom_field:
story.append(FontFallbackParagraph(
'{}: {}'.format(

View File

@@ -23,7 +23,7 @@ import re
from django import forms
from django.core.exceptions import ValidationError
from django.utils.translation import gettext_lazy as _, pgettext
from django.utils.translation import gettext_lazy as _
from django_countries.fields import Country
from pretix.base.invoicing.transmission import (
@@ -125,15 +125,15 @@ class PeppolIdValidator:
def __call__(self, value):
if ":" not in value:
raise ValidationError(_("A Peppol participant ID always starts with a prefix, followed by a colon (:)."))
raise ValidationError(_("A PEPPOL participant ID always starts with a prefix, followed by a colon (:)."))
prefix, second = value.split(":", 1)
if prefix not in self.regex_rules:
raise ValidationError(_("The Peppol participant ID prefix %(number)s is not known to our system. Please "
raise ValidationError(_("The PEPPOL participant ID prefix %(number)s is not known to our system. Please "
"reach out to us if you are sure this ID is correct."), params={"number": prefix})
if not re.match(self.regex_rules[prefix], second):
raise ValidationError(_("The Peppol participant ID does not match the validation rules for the prefix "
raise ValidationError(_("The PEPPOL participant ID does not match the validation rules for the prefix "
"%(number)s. Please reach out to us if you are sure this ID is correct."),
params={"number": prefix})
return value
@@ -142,7 +142,7 @@ class PeppolIdValidator:
@transmission_types.new()
class PeppolTransmissionType(TransmissionType):
identifier = "peppol"
verbose_name = "Peppol"
verbose_name = "PEPPOL"
priority = 250
enforce_transmission = True
@@ -153,7 +153,7 @@ class PeppolTransmissionType(TransmissionType):
def invoice_address_form_fields(self) -> dict:
return {
"transmission_peppol_participant_id": forms.CharField(
label=_("Peppol participant ID"),
label=_("PEPPOL participant ID"),
validators=[
PeppolIdValidator(),
]
@@ -165,13 +165,3 @@ class PeppolTransmissionType(TransmissionType):
"company", "street", "zipcode", "city", "country",
}
return base | {"transmission_peppol_participant_id"}
def pdf_watermark(self) -> str:
return pgettext("peppol_invoice", "Visual copy")
def pdf_info_text(self) -> str:
return pgettext(
"peppol_invoice",
"This PDF document is a visual copy of the invoice and does not constitute an invoice for VAT "
"purposes. The original invoice is issued in XML format and transmitted through the Peppol network."
)

View File

@@ -104,18 +104,6 @@ class TransmissionType:
def transmission_info_to_form_data(self, transmission_info: dict) -> dict:
return transmission_info
def pdf_watermark(self) -> Optional[str]:
"""
Return a watermark that should be rendered across the PDF file.
"""
return None
def pdf_info_text(self) -> Optional[str]:
"""
Return an info text that should be rendered on the PDF file.
"""
return None
class TransmissionProvider:
"""

View File

@@ -243,16 +243,8 @@ class EventMixin:
def waiting_list_active(self):
if not self.settings.waiting_list_enabled:
return False
if self.settings.waiting_list_auto_disable:
if self.settings.waiting_list_auto_disable.datetime(self) <= time_machine_now():
return False
if hasattr(self, 'active_quotas'):
# Only run when called with computed quotas, i.e. event calendar
if not self.best_availability[3]:
return False
return self.settings.waiting_list_auto_disable.datetime(self) > time_machine_now()
return True
@property
@@ -330,7 +322,9 @@ class EventMixin:
sq_active_item = Item.objects.using(settings.DATABASE_REPLICA).filter_available(channel=channel, voucher=voucher).filter(
Q(variations__isnull=True)
& Q(quotas__pk=OuterRef('pk'))
)
).order_by().values_list('quotas__pk').annotate(
items=GroupConcat('pk', delimiter=',')
).values('items')
q_variation = (
Q(active=True)
@@ -363,7 +357,9 @@ class EventMixin:
q_variation &= Q(hide_without_voucher=False)
q_variation &= Q(item__hide_without_voucher=False)
sq_active_variation = ItemVariation.objects.filter(q_variation)
sq_active_variation = ItemVariation.objects.filter(q_variation).order_by().values_list('quotas__pk').annotate(
items=GroupConcat('pk', delimiter=',')
).values('items')
quota_base_qs = Quota.objects.using(settings.DATABASE_REPLICA).filter(
ignore_for_event_availability=False
)
@@ -380,23 +376,8 @@ class EventMixin:
'quotas',
to_attr='active_quotas',
queryset=quota_base_qs.annotate(
active_items=Subquery(
sq_active_item.order_by().values_list('quotas__pk').annotate(
items=GroupConcat('pk', delimiter=',')
).values('items'),
output_field=models.TextField()
),
active_variations=Subquery(
sq_active_variation.order_by().values_list('quotas__pk').annotate(
items=GroupConcat('pk', delimiter=',')
).values('items'),
output_field=models.TextField()),
has_active_items_with_waitinglist=Exists(
sq_active_item.filter(allow_waitinglist=True),
),
has_active_variations_with_waitinglist=Exists(
sq_active_variation.filter(item__allow_waitinglist=True),
),
active_items=Subquery(sq_active_item, output_field=models.TextField()),
active_variations=Subquery(sq_active_variation, output_field=models.TextField()),
).exclude(
Q(active_items="") & Q(active_variations="")
).select_related('event', 'subevent')
@@ -425,12 +406,11 @@ class EventMixin:
@cached_property
def best_availability(self):
"""
Returns a 4-tuple of
Returns a 3-tuple of
- The availability state of this event (one of the ``Quota.AVAILABILITY_*`` constants)
- The number of tickets currently available (or ``None``)
- The number of tickets "originally" available (or ``None``)
- Whether a sold out product has the waiting list enabled
This can only be called on objects obtained through a queryset that has been passed through ``.annotated()``.
"""
@@ -453,7 +433,6 @@ class EventMixin:
r = getattr(self, '_quota_cache', {})
quotas_for_item = defaultdict(list)
quotas_for_variation = defaultdict(list)
waiting_list_found = False
for q in self.active_quotas:
if q not in r:
r[q] = q.availability(allow_cache=True)
@@ -462,8 +441,6 @@ class EventMixin:
for item_id in q.active_items.split(","):
if item_id not in items_disabled:
quotas_for_item[item_id].append(q)
if q.has_active_items_with_waitinglist or q.has_active_variations_with_waitinglist:
waiting_list_found = True
if q.active_variations:
for var_id in q.active_variations.split(","):
if var_id not in vars_disabled:
@@ -471,7 +448,7 @@ class EventMixin:
if not self.active_quotas or (not quotas_for_item and not quotas_for_variation):
# No item is enabled for this event, treat the event as "unknown"
return None, None, None, waiting_list_found
return None, None, None
# We iterate over all items and variations and keep track of
# - `best_state_found` - the best availability state we have seen so far. If one item is available, the event is available!
@@ -490,7 +467,7 @@ class EventMixin:
quotas_that_are_not_unlimited = [q for q in quota_list if q.size is not None]
if not quotas_that_are_not_unlimited:
# We found an unlimited ticket, no more need to do anything else
return Quota.AVAILABILITY_OK, None, None, waiting_list_found
return Quota.AVAILABILITY_OK, None, None
if worst_state_for_ticket == Quota.AVAILABILITY_OK:
availability_of_this = min(max(0, r[q][1] - quota_used_for_found_tickets[q]) for q in quotas_that_are_not_unlimited)
@@ -504,8 +481,7 @@ class EventMixin:
quota_used_for_possible_tickets[q] += possible_of_this
best_state_found = max(best_state_found, worst_state_for_ticket)
return best_state_found, num_tickets_found, num_tickets_possible, waiting_list_found
return best_state_found, num_tickets_found, num_tickets_possible
def free_seats(self, ignore_voucher=None, sales_channel='web', include_blocked=False):
assert isinstance(sales_channel, str) or sales_channel is None

View File

@@ -42,7 +42,6 @@ from django.db.models.functions import Cast
from django.utils import timezone
from django.utils.crypto import get_random_string
from django.utils.functional import cached_property
from django.utils.timezone import now
from django.utils.translation import gettext_lazy as _, pgettext
from django_scopes import ScopedManager
@@ -369,22 +368,6 @@ class Invoice(models.Model):
from pretix.base.invoicing.transmission import transmission_types
return transmission_types.get(identifier=self.transmission_type)[0]
def set_transmission_failed(self, provider, data):
self.transmission_status = Invoice.TRANSMISSION_STATUS_FAILED
self.transmission_date = now()
if not self.transmission_provider and provider:
self.transmission_provider = provider
self.save(update_fields=["transmission_status", "transmission_date", "transmission_provider"])
self.order.log_action(
"pretix.event.order.invoice.sending_failed",
data={
"full_invoice_no": self.full_invoice_no,
"transmission_provider": provider,
"transmission_type": self.transmission_type,
"data": data,
}
)
class InvoiceLine(models.Model):
"""

View File

@@ -126,7 +126,7 @@ class Organizer(LoggedModel):
self.settings.cookie_consent = True
plugins = [p for p in settings.PRETIX_PLUGINS_ORGANIZER_DEFAULT.split(",") if p]
if plugins and not self.get_plugins():
if plugins:
self.set_active_plugins(plugins, allow_restricted=plugins)
self.save()

View File

@@ -48,8 +48,6 @@ from functools import partial
from io import BytesIO
import jsonschema
import pypdf
import pypdf.generic
import reportlab.rl_config
from bidi import get_display
from django.conf import settings
@@ -819,7 +817,7 @@ class Renderer:
# and does not deal with our default value here properly
content = op.secret
else:
content = self._get_text_content(op, order, o).strip()
content = self._get_text_content(op, order, o)
if len(content) == 0:
return
@@ -1189,7 +1187,8 @@ class Renderer:
for i, page in enumerate(fg_pdf.pages):
bg_page = self.bg_pdf.pages[i]
_correct_page_media_box(bg_page)
if bg_page.rotation != 0:
bg_page.transfer_rotation_to_content()
page.merge_page(bg_page, over=False)
output.add_page(page)
@@ -1258,7 +1257,8 @@ def merge_background(fg_pdf: PdfWriter, bg_pdf: PdfWriter, out_file, compress):
else:
for i, page in enumerate(fg_pdf.pages):
bg_page = bg_pdf.pages[i]
_correct_page_media_box(bg_page)
if bg_page.rotation != 0:
bg_page.transfer_rotation_to_content()
page.merge_page(bg_page, over=False)
# pdf_header is a string like "%pdf-X.X"
@@ -1268,29 +1268,6 @@ def merge_background(fg_pdf: PdfWriter, bg_pdf: PdfWriter, out_file, compress):
fg_pdf.write(out_file)
def _correct_page_media_box(page: pypdf.PageObject):
if page.rotation != 0:
page.transfer_rotation_to_content()
media_box = page.mediabox
trsf = pypdf.Transformation()
if media_box.bottom != 0:
trsf = trsf.translate(0, -media_box.bottom)
if media_box.left != 0:
trsf = trsf.translate(-media_box.left, 0)
page.add_transformation(trsf, False)
for b in ["/MediaBox", "/CropBox", "/BleedBox", "/TrimBox", "/ArtBox"]:
if b in page:
rr = pypdf.generic.RectangleObject(page[b])
pt1 = trsf.apply_on(rr.lower_left)
pt2 = trsf.apply_on(rr.upper_right)
page[pypdf.generic.NameObject(b)] = pypdf.generic.RectangleObject((
min(pt1[0], pt2[0]),
min(pt1[1], pt2[1]),
max(pt1[0], pt2[0]),
max(pt1[1], pt2[1]),
))
@deconstructible
class PdfLayoutValidator:
def __call__(self, value):

View File

@@ -664,7 +664,20 @@ def transmit_invoice(sender, invoice_id, allow_retransmission=True, **kwargs):
break
if not provider:
invoice.set_transmission_failed(provider=None, data={"reason": "no_provider"})
invoice.transmission_status = Invoice.TRANSMISSION_STATUS_FAILED
invoice.transmission_date = now()
invoice.save(update_fields=["transmission_status", "transmission_date"])
invoice.order.log_action(
"pretix.event.order.invoice.sending_failed",
data={
"full_invoice_no": invoice.full_invoice_no,
"transmission_provider": None,
"transmission_type": invoice.transmission_type,
"data": {
"reason": "no_provider",
},
}
)
return
if invoice.order.testmode and not provider.testmode_supported:
@@ -685,7 +698,18 @@ def transmit_invoice(sender, invoice_id, allow_retransmission=True, **kwargs):
provider.transmit(invoice)
except Exception as e:
logger.exception(f"Transmission of invoice {invoice.pk} failed with exception.")
invoice.set_transmission_failed(provider=provider.identifier, data={
"reason": "exception",
"exception": str(e),
})
invoice.transmission_status = Invoice.TRANSMISSION_STATUS_FAILED
invoice.transmission_date = now()
invoice.save(update_fields=["transmission_status", "transmission_date"])
invoice.order.log_action(
"pretix.event.order.invoice.sending_failed",
data={
"full_invoice_no": invoice.full_invoice_no,
"transmission_provider": None,
"transmission_type": invoice.transmission_type,
"data": {
"reason": "exception",
"exception": str(e),
},
}
)

View File

@@ -222,7 +222,7 @@ def mail(email: Union[str, Sequence[str]], subject: str, template: Union[str, La
'invoice_company': ''
})
renderer = ClassicMailRenderer(None, organizer)
body_plain = render_mail(template, context, placeholder_mode=SafeFormatter.MODE_RICH_TO_PLAIN)
content_plain = body_plain = render_mail(template, context)
subject = str(subject).format_map(TolerantDict(context))
sender = (
sender or
@@ -316,7 +316,6 @@ def mail(email: Union[str, Sequence[str]], subject: str, template: Union[str, La
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:
@@ -406,12 +405,8 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
attach_cid_images(html_message, cid_images, verify_ssl=True)
email.attach_alternative(html_message, "multipart/related")
log_target = None
if user:
user = User.objects.get(pk=user)
error_log_action_type = 'pretix.user.email.error'
log_target = user
if event:
with scopes_disabled():
@@ -431,15 +426,12 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
with cm():
if customer:
customer = Customer.objects.get(pk=customer)
if not user:
error_log_action_type = 'pretix.customer.email.error'
log_target = customer
log_target = user or 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
@@ -496,7 +488,7 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
email = email_filter.send_chained(event, 'message', message=email, order=order, user=user)
invoices_to_mark_transmitted = []
invoices_sent = []
if invoices:
invoices = Invoice.objects.filter(pk__in=invoices)
for inv in invoices:
@@ -517,23 +509,7 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
inv.file.file.read(),
'application/pdf'
)
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)
invoices_sent.append(inv)
except:
logger.exception('Could not attach invoice to email')
pass
@@ -598,7 +574,7 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
except MaxRetriesExceededError:
if log_target:
log_target.log_action(
error_log_action_type,
'pretix.email.error',
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),
@@ -606,17 +582,12 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
'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
logger.exception('Error sending email')
if log_target:
log_target.log_action(
error_log_action_type,
'pretix.email.error',
data={
'subject': 'SMTP code {}'.format(e.smtp_code),
'message': e.smtp_error.decode() if isinstance(e.smtp_error, bytes) else str(e.smtp_error),
@@ -624,11 +595,6 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
'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:
@@ -652,7 +618,7 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
message.append(f'{e}: {val[0]} {val[1].decode()}')
log_target.log_action(
error_log_action_type,
'pretix.email.error',
data={
'subject': 'SMTP error',
'message': '\n'.join(message),
@@ -660,11 +626,6 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
'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:
@@ -674,7 +635,7 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
except MaxRetriesExceededError:
if log_target:
log_target.log_action(
error_log_action_type,
'pretix.email.error',
data={
'subject': 'Internal error',
'message': f'Max retries exceeded after error "{str(e)}"',
@@ -682,15 +643,10 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
'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,
'pretix.email.error',
data={
'subject': 'Internal error',
'message': str(e),
@@ -698,63 +654,70 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
'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))
else:
for i in invoices_to_mark_transmitted:
if i.transmission_status != Invoice.TRANSMISSION_STATUS_COMPLETED:
i.transmission_date = now()
i.transmission_status = Invoice.TRANSMISSION_STATUS_COMPLETED
i.transmission_provider = "email_pdf"
i.transmission_info = {
"sent": [
for i in invoices_sent:
if i.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 = [
(i.invoice_to_transmission_info or {}).get("transmission_email_address") or i.order.email,
]
try:
expected_recipients.append((i.order.invoice_address.transmission_info or {}).get("transmission_email_address") or i.order.email)
except InvoiceAddress.DoesNotExist:
pass
if not any(t in expected_recipients for t in to):
continue
if i.transmission_status != Invoice.TRANSMISSION_STATUS_COMPLETED:
i.transmission_date = now()
i.transmission_status = Invoice.TRANSMISSION_STATUS_COMPLETED
i.transmission_provider = "email_pdf"
i.transmission_info = {
"sent": [
{
"recipients": to,
"datetime": now().isoformat(),
}
]
}
i.save(update_fields=[
"transmission_date", "transmission_provider", "transmission_status",
"transmission_info"
])
elif i.transmission_provider == "email_pdf":
i.transmission_info["sent"].append(
{
"recipients": to,
"datetime": now().isoformat(),
}
]
}
i.save(update_fields=[
"transmission_date", "transmission_provider", "transmission_status",
"transmission_info"
])
elif i.transmission_provider == "email_pdf":
i.transmission_info["sent"].append(
{
"recipients": to,
"datetime": now().isoformat(),
)
i.save(update_fields=[
"transmission_info"
])
i.order.log_action(
"pretix.event.order.invoice.sent",
data={
"full_invoice_no": i.full_invoice_no,
"transmission_provider": "email_pdf",
"transmission_type": "email",
"data": {
"recipients": [to],
},
}
)
i.save(update_fields=[
"transmission_info"
])
i.order.log_action(
"pretix.event.order.invoice.sent",
data={
"full_invoice_no": i.full_invoice_no,
"transmission_provider": "email_pdf",
"transmission_type": "email",
"data": {
"recipients": [to],
},
}
)
def mail_send(*args, **kwargs):
mail_send_task.apply_async(args=args, kwargs=kwargs)
def render_mail(template, context, placeholder_mode=SafeFormatter.MODE_RICH_TO_PLAIN):
def render_mail(template, context):
if isinstance(template, LazyI18nString):
body = str(template)
if context and placeholder_mode:
body = format_map(body, context, mode=placeholder_mode)
if context:
body = format_map(body, context, mode=SafeFormatter.MODE_IGNORE_RICH)
else:
tpl = get_template(template)
body = tpl.render(context)

View File

@@ -26,7 +26,7 @@ from decimal import Decimal
from django.dispatch import receiver
from django.utils.formats import date_format
from django.utils.html import escape, mark_safe
from django.utils.html import escape
from django.utils.timezone import now
from django.utils.translation import gettext_lazy as _
@@ -123,10 +123,6 @@ class BaseRichTextPlaceholder(BaseTextPlaceholder):
def identifier(self):
return self._identifier
@property
def allowed_in_plain_content(self):
return False
@property
def required_context(self):
return self._args
@@ -198,33 +194,6 @@ class SimpleButtonPlaceholder(BaseRichTextPlaceholder):
return f'{text}: {url}'
class MarkdownTextPlaceholder(BaseRichTextPlaceholder):
def __init__(self, identifier, args, func, sample, inline):
super().__init__(identifier, args)
self._func = func
self._sample = sample
self._snippet = inline
@property
def allowed_in_plain_content(self):
return self._snippet
def render_plain(self, **context):
return self._func(**{k: context[k] for k in self._args})
def render_html(self, **context):
return mark_safe(markdown_compile_email(self.render_plain(**context), snippet=self._snippet))
def render_sample_plain(self, event):
if callable(self._sample):
return self._sample(event)
else:
return self._sample
def render_sample_html(self, event):
return mark_safe(markdown_compile_email(self.render_sample_plain(event), snippet=self._snippet))
class PlaceholderContext(SafeFormatter):
"""
Holds the contextual arguments and corresponding list of available placeholders for formatting
@@ -605,7 +574,7 @@ def base_placeholders(sender, **kwargs):
'invoice_company', ['invoice_address'], lambda invoice_address: invoice_address.company or '',
_('Sample Corporation')
),
MarkdownTextPlaceholder(
SimpleFunctionalTextPlaceholder(
'orders', ['event', 'orders'], lambda event, orders: '\n' + '\n\n'.join(
'* {} - {}'.format(
order.full_code,
@@ -635,7 +604,6 @@ def base_placeholders(sender, **kwargs):
{'code': 'OPKSB', 'secret': '09pjdksflosk3njd', 'hash': 'stuvwxy2z'}
]
),
inline=False,
),
SimpleFunctionalTextPlaceholder(
'hours', ['event', 'waiting_list_entry'], lambda event, waiting_list_entry:
@@ -650,13 +618,12 @@ def base_placeholders(sender, **kwargs):
'code', ['waiting_list_voucher'], lambda waiting_list_voucher: waiting_list_voucher.code,
'68CYU2H6ZTP3WLK5'
),
MarkdownTextPlaceholder(
SimpleFunctionalTextPlaceholder(
# join vouchers with two spaces at end of line so markdown-parser inserts a <br>
'voucher_list', ['voucher_list'], lambda voucher_list: ' \n'.join(voucher_list),
'68CYU2H6ZTP3WLK5 \n7MB94KKPVEPSMVF2',
inline=False,
' 68CYU2H6ZTP3WLK5\n 7MB94KKPVEPSMVF2'
),
MarkdownTextPlaceholder(
SimpleFunctionalTextPlaceholder(
# join vouchers with two spaces at end of line so markdown-parser inserts a <br>
'voucher_url_list', ['event', 'voucher_list'],
lambda event, voucher_list: ' \n'.join([
@@ -671,7 +638,6 @@ def base_placeholders(sender, **kwargs):
) + '?voucher=' + c
for c in ['68CYU2H6ZTP3WLK5', '7MB94KKPVEPSMVF2']
]),
inline=False,
),
SimpleFunctionalTextPlaceholder(
'url', ['event', 'voucher_list'], lambda event, voucher_list: build_absolute_uri(event, 'presale:event.index', kwargs={
@@ -690,13 +656,13 @@ def base_placeholders(sender, **kwargs):
'comment', ['comment'], lambda comment: comment,
_('An individual text with a reason can be inserted here.'),
),
MarkdownTextPlaceholder(
SimpleFunctionalTextPlaceholder(
'payment_info', ['order', 'payments'], _placeholder_payments,
_('The amount has been charged to your card.'), inline=False,
_('The amount has been charged to your card.'),
),
MarkdownTextPlaceholder(
SimpleFunctionalTextPlaceholder(
'payment_info', ['payment_info'], lambda payment_info: payment_info,
_('Please transfer money to this bank account: 9999-9999-9999-9999'), inline=False,
_('Please transfer money to this bank account: 9999-9999-9999-9999'),
),
SimpleFunctionalTextPlaceholder(
'attendee_name', ['position'], lambda position: position.attendee_name,
@@ -753,13 +719,13 @@ def base_placeholders(sender, **kwargs):
))
for k, v in sender.meta_data.items():
ph.append(MarkdownTextPlaceholder(
ph.append(SimpleFunctionalTextPlaceholder(
'meta_%s' % k, ['event'], lambda event, k=k: event.meta_data[k],
v, inline=True,
v
))
ph.append(MarkdownTextPlaceholder(
ph.append(SimpleFunctionalTextPlaceholder(
'meta_%s' % k, ['event_or_subevent'], lambda event_or_subevent, k=k: event_or_subevent.meta_data[k],
v, inline=True,
v
))
return ph
@@ -787,7 +753,7 @@ def get_available_placeholders(event, base_parameters, rich=False):
if not isinstance(val, (list, tuple)):
val = [val]
for v in val:
if isinstance(v, BaseRichTextPlaceholder) and not rich and not v.allowed_in_plain_content:
if isinstance(v, BaseRichTextPlaceholder) and not rich:
continue
if all(rp in base_parameters for rp in v.required_context):
params[v.identifier] = v
@@ -809,13 +775,13 @@ def get_sample_context(event, context_parameters, rich=True):
)
)
elif str(sample).strip().startswith('* ') or str(sample).startswith(' '):
context_dict[k] = mark_safe('<div class="placeholder" title="{}">{}</div>'.format(
context_dict[k] = '<div class="placeholder" title="{}">{}</div>'.format(
lbl,
markdown_compile_email(str(sample))
))
)
else:
context_dict[k] = mark_safe('<span class="placeholder" title="{}">{}</span>'.format(
context_dict[k] = '<span class="placeholder" title="{}">{}</span>'.format(
lbl,
escape(sample)
))
)
return context_dict

View File

@@ -197,7 +197,6 @@ def order_overview(
item.all_variations = list(item.variations.all())
item.has_variations = (len(item.all_variations) > 0)
item.num = {}
item.subevent = subevent
if item.has_variations:
for var in item.all_variations:
variid = var.id

View File

@@ -69,6 +69,9 @@ def generate_order(order: int, provider: str):
prov = response(order.event)
if prov.identifier == provider:
filename, ttype, data = prov.generate_order(order)
if ttype == 'text/uri-list':
continue
path, ext = os.path.splitext(filename)
for ct in CachedCombinedTicket.objects.filter(order=order, provider=provider):
ct.delete()
@@ -158,10 +161,6 @@ def get_tickets_for_order(order, base_position=None):
if not retval:
continue
ct = CachedCombinedTicket.objects.get(pk=retval)
if ct.type == 'text/uri-list':
continue
tickets.append((
"{}-{}-{}{}".format(
order.event.slug.upper(), order.code, ct.provider, ct.extension,

View File

@@ -44,7 +44,6 @@ from django.conf import settings
from django.core import signing
from django.urls import reverse
from django.utils.functional import SimpleLazyObject
from django.utils.html import escape
from django.utils.http import url_has_allowed_host_and_scheme
from django.utils.safestring import mark_safe
from markdown import Extension
@@ -53,8 +52,6 @@ from markdown.postprocessors import Postprocessor
from markdown.treeprocessors import UnescapeTreeprocessor
from tlds import tld_set
from pretix.helpers.format import SafeFormatter, format_map
register = template.Library()
ALLOWED_TAGS_SNIPPET = {
@@ -297,44 +294,27 @@ class LinkifyAndCleanExtension(Extension):
)
def markdown_compile_email(source, allowed_tags=None, allowed_attributes=ALLOWED_ATTRIBUTES, snippet=False, context=None):
if allowed_tags is None:
allowed_tags = ALLOWED_TAGS_SNIPPET if snippet else ALLOWED_TAGS
context_callbacks = []
if context:
# This is a workaround to fix placeholders in URL targets
def context_callback(attrs, new=False):
if (None, "href") in attrs and "{" in attrs[None, "href"]:
# Do not use MODE_RICH_TO_HTML to avoid recursive linkification
attrs[None, "href"] = escape(format_map(attrs[None, "href"], context=context, mode=SafeFormatter.MODE_RICH_TO_PLAIN))
return attrs
context_callbacks.append(context_callback)
def markdown_compile_email(source, allowed_tags=ALLOWED_TAGS, allowed_attributes=ALLOWED_ATTRIBUTES):
linker = bleach.Linker(
url_re=URL_RE,
email_re=EMAIL_RE,
callbacks=context_callbacks + DEFAULT_CALLBACKS + [truelink_callback, abslink_callback],
callbacks=DEFAULT_CALLBACKS + [truelink_callback, abslink_callback],
parse_email=True
)
exts = [
'markdown.extensions.sane_lists',
'markdown.extensions.tables',
EmailNl2BrExtension(),
LinkifyAndCleanExtension(
linker,
tags=set(allowed_tags),
attributes=allowed_attributes,
protocols=ALLOWED_PROTOCOLS,
strip=snippet,
)
]
if snippet:
exts.append(SnippetExtension())
return markdown.markdown(
source,
extensions=exts
extensions=[
'markdown.extensions.sane_lists',
'markdown.extensions.tables',
EmailNl2BrExtension(),
LinkifyAndCleanExtension(
linker,
tags=set(allowed_tags),
attributes=allowed_attributes,
protocols=ALLOWED_PROTOCOLS,
strip=False,
)
]
)

View File

@@ -107,16 +107,11 @@ def get_all_payment_providers():
return Event
with rolledback_transaction():
plugins = ",".join([app.name for app in apps.get_app_configs()])
organizer = Organizer.objects.create(
name="INTERNAL",
plugins=plugins,
)
event = Event.objects.create(
plugins=plugins,
plugins=",".join([app.name for app in apps.get_app_configs()]),
name="INTERNAL",
date_from=now(),
organizer=organizer,
organizer=Organizer.objects.create(name="INTERNAL")
)
event = FakeEvent(event)
provs = register_payment_providers.send(
@@ -225,7 +220,6 @@ class OrderFilterForm(FilterForm):
(_('Cancellations'), (
(Order.STATUS_CANCELED, _('Canceled (fully)')),
('cp', _('Canceled (fully or with paid fee)')),
('cany', _('Canceled (at least one position)')),
('rc', _('Cancellation requested')),
('cni', _('Fully canceled but invoice not canceled')),
)),
@@ -402,16 +396,6 @@ class OrderFilterForm(FilterForm):
).filter(
Q(status=Order.STATUS_PAID, has_pc=False) | Q(status=Order.STATUS_CANCELED)
)
elif s == 'cany':
s = OrderPosition.all.filter(
order=OuterRef('pk'),
canceled=True,
)
qs = qs.annotate(
has_pc_c=Exists(s)
).filter(
Q(has_pc_c=True) | Q(status=Order.STATUS_CANCELED)
)
if fdata.get('ordering'):
qs = qs.order_by(*get_deterministic_ordering(Order, self.get_order_by()))
@@ -490,31 +474,16 @@ class EventOrderFilterForm(OrderFilterForm):
fdata = self.cleaned_data
qs = super().filter_qs(qs)
# This is a little magic, but there's no option that does not confuse people and let's hope this confuses less
# people.
only_match_noncanceled_products = fdata.get('status') in (
Order.STATUS_PAID,
Order.STATUS_PAID + 'v',
Order.STATUS_PENDING,
Order.STATUS_PENDING + Order.STATUS_PAID,
)
if only_match_noncanceled_products:
canceled_filter = Q(all_positions__canceled=False)
elif fdata.get('status') in ('cp', 'cany'):
canceled_filter = Q(all_positions__canceled=True) | Q(status=Order.STATUS_CANCELED)
else:
canceled_filter = Q()
item = fdata.get('item')
if item:
if '-' in item:
var = item.split('-')[1]
qs = qs.filter(canceled_filter, all_positions__variation_id=var).distinct()
qs = qs.filter(all_positions__variation_id=var, all_positions__canceled=False).distinct()
else:
qs = qs.filter(canceled_filter, all_positions__item_id=fdata.get('item')).distinct()
qs = qs.filter(all_positions__item_id=fdata.get('item'), all_positions__canceled=False).distinct()
if fdata.get('subevent'):
qs = qs.filter(canceled_filter, all_positions__subevent=fdata.get('subevent')).distinct()
qs = qs.filter(all_positions__subevent=fdata.get('subevent'), all_positions__canceled=False).distinct()
if fdata.get('question') and fdata.get('answer') is not None:
q = fdata.get('question')

View File

@@ -67,8 +67,7 @@ class RRuleForm(forms.Form):
)
count = forms.IntegerField(
label=_('Number of repetitions'),
initial=10,
min_value=1,
initial=10
)
until = forms.DateField(
widget=forms.DateInput(

View File

@@ -236,7 +236,7 @@ class VoucherForm(I18nModelForm):
try:
Voucher.clean_max_usages(data, self.instance.redeemed)
except ValidationError as e:
raise ValidationError({"max_usages": e})
raise ValidationError({"max_usages": e.message})
check_quota = Voucher.clean_quota_needs_checking(
data, self.initial_instance_data,
item_changed=data.get('itemvar') != self.initial.get('itemvar'),
@@ -308,8 +308,8 @@ class VoucherBulkForm(VoucherForm):
)
Recipient = namedtuple('Recipient', 'email number name tag')
def _set_field_placeholders(self, fn, base_parameters, rich=False):
placeholders = get_available_placeholders(self.instance.event, base_parameters, rich=rich)
def _set_field_placeholders(self, fn, base_parameters):
placeholders = get_available_placeholders(self.instance.event, base_parameters)
ht = format_placeholders_help_text(placeholders, self.instance.event)
if self.fields[fn].help_text:
@@ -345,7 +345,7 @@ class VoucherBulkForm(VoucherForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._set_field_placeholders('send_subject', ['event', 'name'])
self._set_field_placeholders('send_message', ['event', 'voucher_list', 'name'], rich=True)
self._set_field_placeholders('send_message', ['event', 'voucher_list', 'name'])
with language(self.instance.event.settings.locale, self.instance.event.settings.region):
for f in ("send_subject", "send_message"):

View File

@@ -581,7 +581,7 @@ class CoreOrderLogEntryType(OrderLogEntryType):
'The voucher has been set to expire because the recipient removed themselves from the waiting list.'),
'pretix.voucher.changed': _('The voucher has been changed.'),
'pretix.voucher.deleted': _('The voucher has been deleted.'),
'pretix.voucher.added.waitinglist': _('The voucher has been assigned to {email} through the waiting list.'),
'pretix.voucher.added.waitinglist': _('The voucher has been sent to {email} through the waiting list.'),
})
class CoreVoucherLogEntryType(VoucherLogEntryType):
pass
@@ -719,7 +719,6 @@ class CoreUserImpersonatedLogEntryType(UserImpersonatedLogEntryType):
'pretix.customer.anonymized': _('The account has been disabled and anonymized.'),
'pretix.customer.password.resetrequested': _('A new password has been requested.'),
'pretix.customer.password.set': _('A new password has been set.'),
'pretix.customer.email.error': _('Sending of an email has failed.'),
'pretix.reusable_medium.created': _('The reusable medium has been created.'),
'pretix.reusable_medium.created.auto': _('The reusable medium has been created automatically.'),
'pretix.reusable_medium.changed': _('The reusable medium has been changed.'),
@@ -753,7 +752,6 @@ class CoreUserImpersonatedLogEntryType(UserImpersonatedLogEntryType):
'pretix.user.anonymized': _('This user has been anonymized.'),
'pretix.user.oauth.authorized': _('The application "{application_name}" has been authorized to access your '
'account.'),
'pretix.user.email.error': _('Sending of an email has failed.'),
'pretix.control.auth.user.forgot_password.mail_sent': _('Password reset mail sent.'),
'pretix.control.auth.user.forgot_password.recovered': _('The password has been reset.'),
'pretix.control.auth.user.forgot_password.denied.repeated': _('A repeated password reset has been denied, as '

View File

@@ -310,13 +310,9 @@ an instance of a form class that you bind yourself when appropriate. Your form w
as part of the standard validation and rendering cycle and rendered using default bootstrap
styles. It is advisable to set a prefix for your form to avoid clashes with other plugins.
Your forms may also have special properties:
- ``template`` with a template that will be included to render the form. Your template will be passed a ``form``
variable with your form.
- ``title``, which will be used as a headline.
- ``ìs_layouts = True``, if your form should be grouped with the ticket layout settings (mutually exclusive with setting ``title``).
- ``group_with_formset = True``, if your form should be grouped with a formset of the same ``title``
Your forms may also have two special properties: ``template`` with a template that will be
included to render the form, and ``title``, which will be used as a headline. Your template
will be passed a ``form`` variable with your form.
As with all event plugin signals, the ``sender`` keyword argument will contain the event.
"""

View File

@@ -177,18 +177,6 @@
{% for v in formsets.values %}
<fieldset>
<legend>{{ v.title }}</legend>
{% for f in plugin_forms %}
{% if f.group_with_formset and f.title == v.title %}
{% if f.template and not "template" in f.fields %}
{% include f.template with form=f %}
{% else %}
{% bootstrap_form f layout="control" %}
{% endif %}
<hr />
{% endif %}
{% endfor %}
{% include v.template with formset=v %}
</fieldset>
{% endfor %}
@@ -288,7 +276,7 @@
{% endfor %}
</fieldset>
{% for f in plugin_forms %}
{% if not f.is_layouts and not f.group_with_formset and f.title %}
{% if not f.is_layouts and f.title %}
<fieldset>
<legend>{{ f.title }}</legend>
{% if f.template and not "template" in f.fields %}

View File

@@ -74,7 +74,7 @@
<thead>
<tr>
<th>{% trans "Product" %}</th>
<th>{% trans "Canceled" %}</th>
<th>{% trans "Canceled" %}¹</th>
<th>{% trans "Expired" %}</th>
<th>{% trans "Approval pending" %}</th>
<th colspan="3" class="text-center">{% trans "Purchased" %}</th>
@@ -106,27 +106,27 @@
<tr class="item {% if tup.0 %}categorized{% endif %}">
<td>{{ item }}</td>
<td>
<a href="{{ listurl }}?item={{ item.id }}&amp;status=cany&amp;provider={{ item.provider }}{% if subevent %}&amp;subevent={{ subevent.pk }}{% endif %}">
<a href="{{ listurl }}?item={{ item.id }}&amp;status=c&amp;provider={{ item.provider }}">
{{ item.num.canceled|togglesum:request.event.currency }}
</a>
</td>
<td>
<a href="{{ listurl }}?item={{ item.id }}&amp;status=e&amp;provider={{ item.provider }}{% if subevent %}&amp;subevent={{ subevent.pk }}{% endif %}">
<a href="{{ listurl }}?item={{ item.id }}&amp;status=e&amp;provider={{ item.provider }}">
{{ item.num.expired|togglesum:request.event.currency }}
</a>
</td>
<td>
<a href="{{ listurl }}?item={{ item.id }}&amp;status=pa&amp;provider={{ item.provider }}{% if subevent %}&amp;subevent={{ subevent.pk }}{% endif %}">
<a href="{{ listurl }}?item={{ item.id }}&amp;status=pa&amp;provider={{ item.provider }}">
{{ item.num.unapproved|togglesum:request.event.currency }}
</a>
</td>
<td>
<a href="{{ listurl }}?item={{ item.id }}&amp;status=na&amp;provider={{ item.provider }}{% if subevent %}&amp;subevent={{ subevent.pk }}{% endif %}">
<a href="{{ listurl }}?item={{ item.id }}&amp;status=na&amp;provider={{ item.provider }}">
{{ item.num.pending|togglesum:request.event.currency }}
</a>
</td>
<td>
<a href="{{ listurl }}?item={{ item.id }}&amp;status=p&amp;provider={{ item.provider }}{% if subevent %}&amp;subevent={{ subevent.pk }}{% endif %}">
<a href="{{ listurl }}?item={{ item.id }}&amp;status=p&amp;provider={{ item.provider }}">
{{ item.num.paid|togglesum:request.event.currency }}
</a>
</td>
@@ -139,27 +139,27 @@
<tr class="variation {% if tup.0 %}categorized{% endif %}">
<td>{{ var }}</td>
<td>
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&amp;status=cany&amp;provider={{ item.provider }}{% if subevent %}&amp;subevent={{ subevent.pk }}{% endif %}">
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&amp;status=c&amp;provider={{ item.provider }}">
{{ var.num.canceled|togglesum:request.event.currency }}
</a>
</td>
<td>
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&amp;status=e&amp;provider={{ item.provider }}{% if subevent %}&amp;subevent={{ subevent.pk }}{% endif %}">
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&amp;status=e&amp;provider={{ item.provider }}">
{{ var.num.expired|togglesum:request.event.currency }}
</a>
</td>
<td>
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&amp;status=pa&amp;provider={{ item.provider }}{% if subevent %}&amp;subevent={{ subevent.pk }}{% endif %}">
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&amp;status=pa&amp;provider={{ item.provider }}">
{{ var.num.unapproved|togglesum:request.event.currency }}
</a>
</td>
<td>
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&amp;status=na&amp;provider={{ item.provider }}{% if subevent %}&amp;subevent={{ subevent.pk }}{% endif %}">
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&amp;status=na&amp;provider={{ item.provider }}">
{{ var.num.pending|togglesum:request.event.currency }}
</a>
</td>
<td>
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&amp;status=p&amp;provider={{ item.provider }}{% if subevent %}&amp;subevent={{ subevent.pk }}{% endif %}">
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&amp;status=p&amp;provider={{ item.provider }}">
{{ var.num.paid|togglesum:request.event.currency }}
</a>
</td>
@@ -185,4 +185,7 @@
</tfoot>
</table>
</div>
<p class="help-block">
¹ {% trans "If you click links in this column, you will only find orders that are canceled completely, while the numbers also include single canceled positions within valid orders." %}
</p>
{% endblock %}

View File

@@ -69,36 +69,34 @@
{% if show_meta %}
<span class="text-muted text-sm">{{ plugin.version }}</span>
{% endif %}
{% if is_active or plugin.level == "event" %}
{% if plugin.level == "organizer" %}
<span class="label label-success" data-is-active>
<span class="fa fa-check" aria-hidden="true"></span>
{% trans "Active" %}
</span>
{% elif events_total and events_counter == events_total %}
<span class="label label-success" data-is-active>
<span class="fa fa-check" aria-hidden="true"></span>
{% trans "Active (all events)" %}
</span>
{% elif events_counter %}
<span class="label label-info" data-is-active>
<span class="fa fa-check" aria-hidden="true"></span>
{% blocktrans trimmed count count=events_counter %}
Active ({{ count }} event)
{% plural %}
Active ({{ count }} events)
{% endblocktrans %}
</span>
{% elif level == "event_organizer" %}
<span class="label label-info" data-is-active>
<span class="fa fa-check" aria-hidden="true"></span>
{% blocktrans trimmed count count=0 %}
Active ({{ count }} event)
{% plural %}
Active ({{ count }} events)
{% endblocktrans %}
</span>
{% endif %}
{% if is_active and level == "organizer" %}
<span class="label label-success" data-is-active>
<span class="fa fa-check" aria-hidden="true"></span>
{% trans "Active" %}
</span>
{% elif events_counter == events_total %}
<span class="label label-success" data-is-active>
<span class="fa fa-check" aria-hidden="true"></span>
{% trans "Active (all events)" %}
</span>
{% elif events_counter %}
<span class="label label-info" data-is-active>
<span class="fa fa-check" aria-hidden="true"></span>
{% blocktrans trimmed count count=events_counter %}
Active ({{ count }} event)
{% plural %}
Active ({{ count }} events)
{% endblocktrans %}
</span>
{% elif level == "event_organizer" %}
<span class="label label-info" data-is-active>
<span class="fa fa-check" aria-hidden="true"></span>
{% blocktrans trimmed count count=0 %}
Active ({{ count }} event)
{% plural %}
Active ({{ count }} events)
{% endblocktrans %}
</span>
{% endif %}
</h4>
{% include "pretixcontrol/event/fragment_plugin_description.html" with plugin=plugin %}

View File

@@ -238,7 +238,7 @@
<div class="row control-group pdf-info">
<div class="col-sm-12">
<label for="pdf-info-name">{% trans "Layout name" %}</label><br>
<input type="text" id="pdf-info-name" class="input-block-level form-control" name="name" value="{{ name }}" maxlength="190">
<input type="text" id="pdf-info-name" class="input-block-level form-control" name="name" value="{{ name }}">
</div>
</div>
{% endif %}

View File

@@ -82,35 +82,27 @@ class ControlSyncJob(OrderView):
messages.success(self.request, _('The sync job has been enqueued and will run in the next minutes.'))
elif self.request.POST.get("cancel_job"):
with transaction.atomic():
try:
job = self.order.queued_sync_jobs.select_for_update(of=OF_SELF).get(
pk=self.request.POST.get("cancel_job")
)
except OrderSyncQueue.DoesNotExist:
messages.info(self.request, _('The sync job could not be found. It may have been processed in the meantime.'))
job = self.order.queued_sync_jobs.select_for_update(of=OF_SELF).get(
pk=self.request.POST.get("cancel_job")
)
if job.in_flight:
messages.warning(self.request, _('The sync job is already in progress.'))
else:
if job.in_flight:
messages.warning(self.request, _('The sync job is already in progress.'))
else:
job.delete()
messages.success(self.request, _('The sync job has been canceled.'))
job.delete()
messages.success(self.request, _('The sync job has been canceled.'))
elif self.request.POST.get("run_job_now"):
with transaction.atomic():
try:
job = self.order.queued_sync_jobs.select_for_update(of=OF_SELF).get(
pk=self.request.POST.get("run_job_now")
)
except OrderSyncQueue.DoesNotExist:
messages.info(self.request, _('The sync job could not be found. It may have been processed in the meantime.'))
job = self.order.queued_sync_jobs.select_for_update(of=OF_SELF).get(
pk=self.request.POST.get("run_job_now")
)
if job.in_flight:
messages.success(self.request, _('The sync job is already in progress.'))
else:
if job.in_flight:
messages.success(self.request, _('The sync job is already in progress.'))
else:
job.not_before = now()
job.need_manual_retry = None
job.save()
sync_single.apply_async(args=(job.pk,))
messages.success(self.request, _('The sync job has been set to run as soon as possible.'))
job.not_before = now()
job.need_manual_retry = None
job.save()
sync_single.apply_async(args=(job.pk,))
messages.success(self.request, _('The sync job has been set to run as soon as possible.'))
return redirect(self.get_order_url())

View File

@@ -110,18 +110,7 @@ class MessageView(TemplateView):
class LogDetailView(AdministratorPermissionRequiredMixin, View):
def get(self, request, *args, **kwargs):
le = get_object_or_404(LogEntry, pk=request.GET.get('pk'))
try:
object_repr = repr(le.content_object)
except Exception as e:
object_repr = 'Error: ' + str(e)
return JsonResponse({
'datetime': le.datetime.isoformat(),
'action_type': le.action_type,
'content_type': str(le.content_type),
'object_id': le.object_id,
'object_repr': object_repr,
'data': le.parsed_data,
})
return JsonResponse({'action_type': le.action_type, 'content_type': str(le.content_type), 'object_id': le.object_id, 'data': le.parsed_data})
class PaymentDetailView(AdministratorPermissionRequiredMixin, View):

View File

@@ -711,15 +711,11 @@ class OrderDownload(AsyncAction, OrderView):
)
return resp
elif isinstance(value, CachedCombinedTicket):
if value.type == 'text/uri-list':
resp = HttpResponseRedirect(value.file.file.read())
return resp
else:
resp = FileResponse(value.file.file, content_type=value.type)
resp['Content-Disposition'] = 'attachment; filename="{}-{}-{}{}"'.format(
self.request.event.slug.upper(), self.order.code, self.output.identifier, value.extension
)
return resp
resp = FileResponse(value.file.file, content_type=value.type)
resp['Content-Disposition'] = 'attachment; filename="{}-{}-{}{}"'.format(
self.request.event.slug.upper(), self.order.code, self.output.identifier, value.extension
)
return resp
else:
return redirect(self.get_self_url())
@@ -2579,11 +2575,6 @@ class OverView(EventPermissionRequiredMixin, TemplateView):
self.request.event,
fees=True
)
ctx['subevent'] = (
self.request.event.has_subevents and
self.filter_form.is_valid() and
self.filter_form.cleaned_data.get('subevent')
)
ctx['subevent_warning'] = (
self.request.event.has_subevents and
self.filter_form.is_valid() and
@@ -2836,23 +2827,11 @@ class ExportView(EventPermissionRequiredMixin, ExportMixin, ListView):
def get_queryset(self):
return self.get_scheduled_queryset()
def has_permission(self):
return self.request.user.has_event_permission(self.request.organizer, self.request.event, "can_view_orders")
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
if "schedule" in self.request.POST or self.scheduled:
if "schedule" in self.request.POST and not self.has_permission():
messages.error(
self.request,
_(
"Your user account does not have sufficient permission to run this report, therefore "
"you cannot schedule it."
)
)
else:
ctx['schedule_form'] = self.schedule_form
ctx['rrule_form'] = self.rrule_form
ctx['schedule_form'] = self.schedule_form
ctx['rrule_form'] = self.rrule_form
elif not self.exporter:
for s in ctx['scheduled']:
try:

View File

@@ -2189,28 +2189,11 @@ class ExportView(OrganizerPermissionRequiredMixin, ExportMixin, ListView):
def get_queryset(self):
return self.get_scheduled_queryset()
def has_permission(self):
if isinstance(self.exporter, OrganizerLevelExportMixin):
if not self.request.user.has_organizer_permission(self.request.organizer, self.exporter.organizer_required_permission):
return False
if self.exporter and not self.exporter.available_for_user(self.request.user):
return False
return True
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
if "schedule" in self.request.POST or self.scheduled:
if "schedule" in self.request.POST and not self.has_permission():
messages.error(
self.request,
_(
"Your user account does not have sufficient permission to run this report, therefore "
"you cannot schedule it."
)
)
else:
ctx['schedule_form'] = self.schedule_form
ctx['rrule_form'] = self.rrule_form
ctx['schedule_form'] = self.schedule_form
ctx['rrule_form'] = self.rrule_form
elif not self.exporter:
for s in ctx['scheduled']:
try:

View File

@@ -174,38 +174,21 @@ class SubEventDelete(EventPermissionRequiredMixin, CompatDeleteView):
return HttpResponseRedirect(self.get_success_url())
return super().get(request, *args, **kwargs)
@transaction.atomic
def delete(self, request, *args, **kwargs):
self.object = self.get_object()
success_url = self.get_success_url()
try:
with transaction.atomic():
if not self.object.allow_delete():
messages.error(request, pgettext_lazy('subevent', 'A date can not be deleted if orders already have been '
'placed.'))
return HttpResponseRedirect(success_url)
self.object.log_action('pretix.subevent.deleted', user=self.request.user)
CartPosition.objects.filter(addon_to__subevent=self.object).delete()
self.object.cartposition_set.all().delete()
self.object.delete()
except ProtectedError:
if self.object.active:
with transaction.atomic():
self.object.log_action(
'pretix.subevent.changed', user=self.request.user, data={
'active': False
},
)
self.object.active = False
self.object.save(update_fields=['active'])
messages.error(self.request, pgettext_lazy(
'subevent',
'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.'
))
if not self.object.allow_delete():
messages.error(request, pgettext_lazy('subevent', 'A date can not be deleted if orders already have been '
'placed.'))
return HttpResponseRedirect(self.get_success_url())
else:
self.object.log_action('pretix.subevent.deleted', user=self.request.user)
CartPosition.objects.filter(addon_to__subevent=self.object).delete()
self.object.cartposition_set.all().delete()
self.object.delete()
messages.success(request, pgettext_lazy('subevent', 'The selected date has been deleted.'))
return HttpResponseRedirect(success_url)
def get_success_url(self) -> str:

View File

@@ -710,9 +710,9 @@ class UserNotificationsEditView(TemplateView):
messages.success(request, _('Your notification settings have been saved.'))
if request.user.notifications_send:
self.request.user.log_action('pretix.user.settings.notifications.enabled', user=self.request.user)
else:
self.request.user.log_action('pretix.user.settings.notifications.disabled', user=self.request.user)
else:
self.request.user.log_action('pretix.user.settings.notifications.enabled', user=self.request.user)
return redirect(
reverse('control:user.settings.notifications') +
('?event={}'.format(self.event.pk) if self.event else '')

View File

@@ -34,7 +34,9 @@
from django.utils.html import format_html
from django.utils.safestring import mark_safe
from django.utils.translation import get_language, pgettext_lazy
from django.utils.translation import (
get_language, gettext_lazy as _, pgettext_lazy,
)
from pretix.helpers.templatetags.date_fast import date_fast as _date
@@ -64,16 +66,6 @@ def daterange(df, dt, as_html=False):
return format_html(base_format, _date(df, "j."), mark_safe(until.strip()), _date(dt, "j. F Y"))
elif df.year == dt.year:
return format_html(base_format, _date(df, "j. F"), until, _date(dt, "j. F Y"))
elif lng == "en-nz":
if df.year == dt.year and df.month == dt.month and df.day == dt.day:
# Mon, 15 January 2024
return format_html(base_format, _date(df, "D, j F Y"))
elif df.year == dt.year and df.month == dt.month:
# 1 3 January 2024
return format_html(base_format, _date(df, "j"), until, _date(dt, "j F Y"))
elif df.year == dt.year:
# 1 January 3 April 2024
return format_html(base_format, _date(df, "j F"), until, _date(dt, "j F Y"))
elif lng.startswith("en"):
if df.year == dt.year and df.month == dt.month and df.day == dt.day:
return format_html(base_format, _date(df, "D, N jS, Y"))
@@ -111,7 +103,7 @@ def daterange(df, dt, as_html=False):
until=until,
)
return "{date_from}{until}{date_to}".format(
return _("{date_from}{until}{date_to}").format(
date_from=_date(df, "DATE_FORMAT"),
date_to=_date(dt, "DATE_FORMAT"),
until=until,

View File

@@ -22,8 +22,6 @@
import logging
from string import Formatter
from django.utils.html import conditional_escape
logger = logging.getLogger(__name__)
@@ -42,14 +40,14 @@ class SafeFormatter(Formatter):
Customized version of ``str.format`` that (a) behaves just like ``str.format_map`` and
(b) does not allow any unwanted shenanigans like attribute access or format specifiers.
"""
MODE_IGNORE_RICH = 0
MODE_RICH_TO_PLAIN = 1
MODE_RICH_TO_HTML = 2
def __init__(self, context, raise_on_missing=False, mode=MODE_RICH_TO_PLAIN, linkifier=None):
def __init__(self, context, raise_on_missing=False, mode=MODE_IGNORE_RICH):
self.context = context
self.raise_on_missing = raise_on_missing
self.mode = mode
self.linkifier = linkifier
def get_field(self, field_name, args, kwargs):
return self.get_value(field_name, args, kwargs), field_name
@@ -57,28 +55,22 @@ class SafeFormatter(Formatter):
def get_value(self, key, args, kwargs):
if not self.raise_on_missing and key not in self.context:
return '{' + str(key) + '}'
return self.context[key]
def _prepare_value(self, value):
if isinstance(value, PlainHtmlAlternativeString):
if self.mode == self.MODE_RICH_TO_PLAIN:
return value.plain
r = self.context[key]
if isinstance(r, PlainHtmlAlternativeString):
if self.mode == self.MODE_IGNORE_RICH:
return '{' + str(key) + '}'
elif self.mode == self.MODE_RICH_TO_PLAIN:
return r.plain
elif self.mode == self.MODE_RICH_TO_HTML:
return value.html
else:
value = str(value)
if self.mode == self.MODE_RICH_TO_HTML:
value = conditional_escape(value)
if self.linkifier:
value = self.linkifier.linkify(value)
return value
return r.html
return r
def format_field(self, value, format_spec):
# Ignore format_spec
return super().format_field(self._prepare_value(value), '')
return super().format_field(value, '')
def format_map(template, context, raise_on_missing=False, mode=SafeFormatter.MODE_RICH_TO_PLAIN, linkifier=None):
def format_map(template, context, raise_on_missing=False, mode=SafeFormatter.MODE_IGNORE_RICH):
if not isinstance(template, str):
template = str(template)
return SafeFormatter(context, raise_on_missing, mode=mode, linkifier=linkifier).format(template)
return SafeFormatter(context, raise_on_missing, mode=mode).format(template)

View File

@@ -1,21 +0,0 @@
#
# This file is part of pretix (Community Edition).
#
# Copyright (C) 2014-2020 Raphael Michel and contributors
# Copyright (C) 2020-2021 rami.io 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 <https://pretix.eu/about/en/license>.
#
# 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
# <https://www.gnu.org/licenses/>.
#

View File

@@ -1,50 +0,0 @@
#
# This file is part of pretix (Community Edition).
#
# Copyright (C) 2014-2020 Raphael Michel and contributors
# Copyright (C) 2020-2021 rami.io 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 <https://pretix.eu/about/en/license>.
#
# 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
# <https://www.gnu.org/licenses/>.
#
# Date according to https://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
# Following NZ government guidance from https://www.digital.govt.nz/standards-and-guidance/design-and-ux/content-design-guidance/writing-style/numbers
DATE_FORMAT = "j F Y" # 12 December 2015
DATETIME_FORMAT = "j F Y, g:ia" # 12 December 2015, 5:30pm
TIME_FORMAT = "g:ia" # 5:30pm
YEAR_MONTH_FORMAT = "F Y" # December 2015
MONTH_DAY_FORMAT = "j F" # 12 December
SHORT_DATE_FORMAT = "j F Y" # same as DATE_FORMAT per guidance
SHORT_DATETIME_FORMAT = "j F Y, g:ia"
WEEKDAY_FORMAT = "l" # Monday
WEEKDAY_DATE_FORMAT = "l, j F Y" # Friday, 23 November 2018
WEEK_FORMAT = "\\W W, o" # ISO week: "W 52, 2024"
WEEK_DAY_FORMAT = "D, j M" # Abbrev weekday and month: "Mon, 5 Feb"
SHORT_MONTH_DAY_FORMAT = "j/n" # Numeric day/month: "5/2"
# Parsing inputs; keep d/m/Y and ISO
DATE_INPUT_FORMATS = [
"%d/%m/%Y",
"%Y-%m-%d",
"%d/%m/%y",
]
TIME_INPUT_FORMATS = [
"%I:%M%p", # 5:30pm
"%H:%M:%S",
"%H:%M:%S.%f",
"%H:%M",
]

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -344,68 +344,68 @@ msgstr ""
msgid "close"
msgstr ""
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
msgid "required"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
"browser and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr ""
@@ -740,7 +740,7 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: 2021-09-15 11:22+0000\n"
"Last-Translator: Mohamed Tawfiq <mtawfiq@wafyapp.com>\n"
"Language-Team: Arabic <https://translate.pretix.eu/projects/pretix/pretix-js/"
@@ -359,12 +359,12 @@ msgstr "لا"
msgid "close"
msgstr "إغلاق"
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
msgid "required"
msgstr "مطلوب"
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
@@ -372,11 +372,11 @@ msgstr ""
"تتم معالجة طلبك حاليا. قد يستغرق الأمر بضع دقائق بناء على حجم الفعالية التي "
"اخترت."
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr "طلبك قيد الانتظار وستتم معالجته قريبا."
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
@@ -385,36 +385,36 @@ msgstr ""
"وصل طلبك للخادم وننتظر تنفيذه. إذا استغرق الأمر أكثر من دقيقتين تواصل معنا "
"أو عاود المحاولة مجددا."
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr "حدث خطأ من نوع {code}."
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
msgstr "لم نتمكن من الاتصال بالخادم، لكن سنواصل المحاولة، رمز آخر خطأ: {code}"
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr "استغرقت الطلب فترة طويلة، الرجاء المحاولة مرة أخرى."
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
"لا يمكننا الوصول إلى الخادم حاليا، حاول مرة أخرى من فضلك. رمز الخطأ : {code}"
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "جاري معالجة طلبك …"
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
@@ -423,11 +423,11 @@ msgstr ""
"نعمل الآن على ارسال طلبك إلى الخادم، إذا أستغرقت العملية أكثر من دقيقة، يرجى "
"التحقق من اتصالك بالإنترنت ثم أعد تحميل الصفحة مرة أخرى."
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr "أغلق الرسالة"
@@ -798,7 +798,7 @@ msgstr "ستسترد %(currency)%(amount)"
msgid "Please enter the amount the organizer can keep."
msgstr "الرجاء إدخال المبلغ الذي يمكن للمنظم الاحتفاظ به."
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr "التوقيت المحلي:"

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -344,68 +344,68 @@ msgstr ""
msgid "close"
msgstr ""
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
msgid "required"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
"browser and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr ""
@@ -740,7 +740,7 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: 2020-12-19 07:00+0000\n"
"Last-Translator: albert <albert.serra.monner@gmail.com>\n"
"Language-Team: Catalan <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -345,70 +345,70 @@ msgstr ""
msgid "close"
msgstr ""
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
#, fuzzy
#| msgid "Cart expired"
msgid "required"
msgstr "Cistella expirada"
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
"browser and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "Estem processant la vostra sol·licitud …"
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr ""
@@ -751,7 +751,7 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"PO-Revision-Date: 2025-09-08 18:57+0000\n"
"Last-Translator: Alois Pospíšil <alois.pospisil@gmail.com>\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: 2025-05-16 17:00+0000\n"
"Last-Translator: David <davemachala@gmail.com>\n"
"Language-Team: Czech <https://translate.pretix.eu/projects/pretix/pretix-js/"
"cs/>\n"
"Language: cs\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Weblate 5.13\n"
"X-Generator: Weblate 5.11.4\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -345,12 +345,12 @@ msgstr "Ne"
msgid "close"
msgstr "zavřít"
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
msgid "required"
msgstr "povinný"
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
@@ -358,11 +358,11 @@ msgstr ""
"Váš požadavek je právě zpracováván. V závislosti na velikosti vaší udalosti, "
"to může trvat několik minut."
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr "Váš požadavek byl vložem do fronty serveru a brzy bude zpracován."
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
@@ -372,14 +372,14 @@ msgstr ""
"Pokud to trvá více jak dvě minuty, prosím kontaktuje nás nebo se vraťte do "
"vašeho prohlížeče a zkuste to znovu."
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr "Vyskytla se chyba {code}."
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
@@ -387,12 +387,12 @@ msgstr ""
"Momentálně nemůžeme kontaktovat server, ale stále se o to pokoušíme. "
"Poslední chybový kód: {code}"
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr "Zpracování požadavku trvá příliš dlouho. Prosím zkuste to znovu."
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
@@ -400,11 +400,11 @@ msgstr ""
"Momentálně nemůžeme kontaktovat server. Prosím zkuste to znovu. Chybový kód: "
"{code}"
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "Zpracováváme váš požadavek …"
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
@@ -414,11 +414,11 @@ msgstr ""
"prosím zkontrolujte své internetové připojení a znovu načtěte stránku a "
"zkuste to znovu."
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr "Zavřít zprávu"
@@ -640,15 +640,19 @@ msgid "Unknown error."
msgstr "Neznámá chyba."
#: pretix/static/pretixcontrol/js/ui/main.js:292
#, 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 "Tato barva má velmi dobrý kontrast a je velmi dobře čitelná."
msgstr "Tato barva má velmi dobrý kontrast a je velmi dobře čitelná!"
#: pretix/static/pretixcontrol/js/ui/main.js:296
#, 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 ""
"Tato barva má slušný kontrast a pravděpodobně je dostatečně dobře čitelná."
"Tato barva má slušný kontrast a pravděpodobně je dostatečně dobře čitelná!"
#: pretix/static/pretixcontrol/js/ui/main.js:300
msgid ""
@@ -731,7 +735,7 @@ msgstr "Nákupní košík vypršel"
#: pretix/static/pretixpresale/js/ui/cart.js:58
#: pretix/static/pretixpresale/js/ui/cart.js:84
msgid "Your cart is about to expire."
msgstr "Nákupní košík brzy vyprší."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:62
msgid "The items in your cart are reserved for you for one minute."
@@ -744,8 +748,10 @@ msgstr[2] ""
"Produkty v nákupním košíku jsou pro vás rezervovány na dalších {num} minut."
#: pretix/static/pretixpresale/js/ui/cart.js:83
#, fuzzy
#| msgid "Cart expired"
msgid "Your cart has expired."
msgstr "Nákupní košík vypršel."
msgstr "Nákupní košík vypršel"
#: pretix/static/pretixpresale/js/ui/cart.js:86
#, fuzzy
@@ -779,7 +785,7 @@ msgstr "Dostanete %(currency)s %(amount)s zpět"
msgid "Please enter the amount the organizer can keep."
msgstr "Zadejte částku, kterou si organizátor může ponechat."
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr "Místní čas:"
@@ -805,12 +811,12 @@ msgstr "Zvýšit počet"
#: pretix/static/pretixpresale/js/widget/widget.js:19
msgctxt "widget"
msgid "Filter events by"
msgstr "Filtrovat události"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:20
msgctxt "widget"
msgid "Filter"
msgstr "Filtrovat"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
msgctxt "widget"
@@ -927,7 +933,7 @@ msgstr "Již není k dispozici"
#: pretix/static/pretixpresale/js/widget/widget.js:42
msgctxt "widget"
msgid "Currently not available"
msgstr "Momentálně není k dispozici"
msgstr "Momentálně není k dispozici."
#: pretix/static/pretixpresale/js/widget/widget.js:44
#, javascript-format
@@ -962,7 +968,7 @@ msgstr "Obchod vstupenek otevřit"
#: pretix/static/pretixpresale/js/widget/widget.js:50
msgctxt "widget"
msgid "Checkout"
msgstr "Přejít k platbě"
msgstr "Checkout"
#: pretix/static/pretixpresale/js/widget/widget.js:51
msgctxt "widget"
@@ -1084,7 +1090,7 @@ msgstr "Předchozí týden"
#: pretix/static/pretixpresale/js/widget/widget.js:74
msgctxt "widget"
msgid "Open seat selection"
msgstr "Otevřete výběr míst"
msgstr "Otevřete výběr sedadla"
#: pretix/static/pretixpresale/js/widget/widget.js:75
msgctxt "widget"

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -345,68 +345,68 @@ msgstr ""
msgid "close"
msgstr ""
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
msgid "required"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
"browser and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr ""
@@ -741,7 +741,7 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: 2024-07-10 15:00+0000\n"
"Last-Translator: Nikolai <nikolai@lengefeldt.de>\n"
"Language-Team: Danish <https://translate.pretix.eu/projects/pretix/pretix-js/"
@@ -357,14 +357,14 @@ msgstr "Nej"
msgid "close"
msgstr "Luk"
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
#, fuzzy
#| msgid "Cart expired"
msgid "required"
msgstr "Kurv udløbet"
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
#, fuzzy
#| msgid ""
#| "Your request has been queued on the server and will now be processed. "
@@ -376,7 +376,7 @@ msgstr ""
"Din forespørgsel er under behandling. Alt efter størrelsen af din event kan "
"der gå op til et par minutter."
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
#, fuzzy
#| msgid ""
#| "Your request has been queued on the server and will now be processed. "
@@ -386,7 +386,7 @@ msgstr ""
"Din forespørgsel er under behandling. Alt efter størrelsen af din event kan "
"der gå op til et par minutter."
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
@@ -395,14 +395,14 @@ msgstr ""
"Din forespørgsel er under behandling. Hvis der går mere end to minutter, så "
"kontakt os eller gå tilbage og prøv igen."
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr "Der er sket en fejl ({code})."
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
@@ -410,12 +410,12 @@ msgstr ""
"Vi kan ikke komme i kontakt med serveren, men prøver igen. Seneste fejlkode: "
"{code}"
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr "Forespørgslen tog for lang tid. Prøv igen."
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
@@ -423,11 +423,11 @@ msgstr ""
"Vi kan i øjeblikket ikke komme i kontakt med serveren. Prøv igen. Fejlkode: "
"{code}"
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "Vi behandler din bestilling …"
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
@@ -436,11 +436,11 @@ msgstr ""
"Din forespørgsel bliver sendt til serveren. Hvis det tager mere end et "
"minut, så tjek din internetforbindelse, genindlæs siden og prøv igen."
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr "Luk besked"
@@ -810,7 +810,7 @@ msgstr "fra %(currency)s %(price)s"
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr "Din lokaltid:"

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: 2025-05-30 11:08+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"Language-Team: German <https://translate.pretix.eu/projects/pretix/pretix-js/"
@@ -345,12 +345,12 @@ msgstr "Nein"
msgid "close"
msgstr "schließen"
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
msgid "required"
msgstr "erforderlich"
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
@@ -358,13 +358,13 @@ msgstr ""
"Ihre Anfrage wird nun verarbeitet. Je nach Größe der Veranstaltung kann dies "
"einige Minuten dauern."
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
"Ihre Anfrage befindet sich beim Server in der Warteschlange und wird bald "
"verarbeitet."
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
@@ -375,14 +375,14 @@ msgstr ""
"bitte oder gehen Sie in Ihrem Browser einen Schritt zurück und versuchen es "
"erneut."
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr "Ein Fehler ist aufgetreten. Fehlercode: {code}"
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
@@ -390,12 +390,12 @@ msgstr ""
"Wir können den Server aktuell nicht erreichen, versuchen es aber weiter. "
"Letzter Fehlercode: {code}"
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr "Diese Anfrage hat zu lange gedauert. Bitte erneut versuchen."
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
@@ -403,11 +403,11 @@ msgstr ""
"Wir können den Server aktuell nicht erreichen. Bitte versuchen Sie es noch "
"einmal. Fehlercode: {code}"
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "Wir verarbeiten Ihre Anfrage …"
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
@@ -417,11 +417,11 @@ msgstr ""
"dauert, prüfen Sie bitte Ihre Internetverbindung. Danach können Sie diese "
"Seite neu laden und es erneut versuchen."
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr "Wenn dies länger als einige Minuten dauert, kontaktiere uns bitte."
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr "Schließen"
@@ -771,7 +771,7 @@ msgstr "Sie erhalten %(currency)s %(amount)s zurück"
msgid "Please enter the amount the organizer can keep."
msgstr "Bitte geben Sie den Betrag ein, den der Veranstalter einbehalten darf."
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr "Deine lokale Zeit:"

View File

@@ -1,143 +1,125 @@
ABGEKÜNDIGT
2FA
ABN
AES
Absenderadresse
Absenderinformation
Absendername
ABGEKÜNDIGT
Admin
Adminbereich
Admin-Modus
Admin-Sitzung
Admin-Sitzungen
AES
Affirm
AGPL
AGPLv
Alipay
and
API-Meta-Informationen
APM
App
App-Gebühr
ApplePay
Apps
APM
as
Aufbuchungen
aufeinanderfolgenden
Aufteilungsliste
aufzubuchen
auschecken
Ausgangsscan
Ausgangsscans
ausgecheckt
ausgeklappt
ausgecheckt
auswahl
Auth
Authentication
Authenticator-App
Authenticator
Authentifizierungsmechanismus
Autorisierungs
Autorisierungscode
Autorisierungs-Endpunktes
Backend
Badge
Badge-Druck
Badge-Layout
Badge-Layouts
Badges
Bancontact
Bank-App
BankID
Banking-App
Banking
barcodes
Baskisch
Bcc
BCC-Adresse
Bcc-Kopie
BCC
Beispielevent
Beispielproduktvariantenbeschreibung
Belarus
Benachrichtigungs
Benachrichtigungsart
Benachrichtigungsarten
Benachrichtigungseinstellungen
Benachrichtigungs-Einstellungen
Benachrichtigungs-E-Mail
Benutzer-ID-Feld
Benutzer-ID-Felds
Bestätigungs-E-Mail
Bestellbestätigungs-E-Mail
Bestellbestätigungs-E-Mails
Berechtigungs
Bestätigungs
Bestellbestätigungs
Bestellungsänderungen
Bestellungs-Synchronisation
Bestellungs-Synchronisierung
Bestellungsstatus
Bestellungs
bez
BezahlCode
Bezahlmethode
Blackberry
BLIK
BN-Code
Blogpost
BN
Branding
Browsereinstellungen
BSD
bspw
Bokmål
Boleto
Branding-Informationen
Browsereinstellungen
BSD-Lizenz
bspw
Buchhaltungs
Bundles
Butterfly-Badge
Butterfly
bzw
ca
Cc
Ceuta
Cc
chardet
charge
Charge-ID
Checkbox
Check-in-App
Check-in-Apps
Check-in-QR-Code
Checkout
Chrome
Client-ID
Client-Secret
CODE.txt
Community-Übersetzungen
Choice
Community
CONFIRM
Connect
Cookie-Consent-Management
Cookie-Consent-Mechanismus
Consent
Copyleft
Cronjob
Cronjob-Komponente
Cross-Selling-Bedingung
Cross-Selling-Kategorie
Cross-Selling-Kategorien
Cross-Selling-Schritt
Cross
csv
CSV
CSV-Datei
CSV-Dateien
CSV-Eingabe
CSV-Eingabedaten
CSV-Import
CSV-Input
CSV-Lesen
CSV-Spalte
Customer
CZK
Debug-Modus
Dashboard
Datensynchronisation
Debug
dekodi
Desktop-Apps
deliverability
DNS
Di
Do
Doe
Downloadformat
Downloadseite
Dr
Drag-and-Drop-Interfaces
Drag
Droid
Drop
DSS
Edge
Eingangsscan
Einlassbuchung
Einlassdatum
Einlasskontrolle
Einlassuhrzeita
einzuchecken
email
E-Mail-Renderer
Enterprise-Lizenz
Enterprise-Lizenzen
Enterprise-Plugin
Enterprise-Plugins
eps
Enterprise
EPC
EPS
eps
Erstattungsbetrag
Erstattungsliste
Erstattungsmethode
@@ -145,231 +127,175 @@ Erstattungsoptionen
Erstattungsstatus
Erstattungsweg
erstmalig
Erweiterungs
etc
EU-USt-ID-Nr
Event
Event-Eigenschaft
Eventeingang
Event-Erstellung
Event-Setup-Tool
Event-Ticketing-Software
Event-Ticketshop
Event-Übersicht
Event-Website
Eventfirma
evtl
Explorer
FA
Favicon
F-Droid
Footer
Footer-Link
Footer-Text
Galicisch
Geocoding
Geocoding-Daten
Geo-Koordinaten
Geräte-ID
gehostete
geht's
GENEXAMPLE
Geo
geocoding
gescannt
ggf
Ggf
GiroCode
giropay
GPL
Grants
Gruppierungsspalte
Gruppierungswert
Gruppierungsspalte
Guide
Gutscheineinlöser
Händler-ID
Händler-PayPal-Konto
Hardware-Tokengenerator
herunterscrollen
hochlädst
HTML-E-Mail-Renderer
HTTPS
HTTPS-Verbindungen
HTTPS-Website
IBAN
IBANs
iCal
ics-Kalenderdatei
ics
ID
iDEAL
IDs
Inc
inkl
innen-Badges
innenname
innennamen
innergemeinschaftliche
Innergemeinschaftlicher
Installations-ID
Integrationen
Input
Installations
integrationen
intra
INV
invalidieren
invalidiert
iOS
ISU
iOS
Itaú
iTunes
JavaScript
JSON-Datei
JSON
Kategoriebeschreibung
Key
Klarna
Kombitickets
Kompatibilitätsmodus
Konfigurations
Kosovo
land
landesspezifische
Lead-Scanning
Leaflet-Kacheln
Lead
Leaflet
Linktext
lit
Log-ID
Logindaten
Lösch
loszulegen
Ltd
Macau
MapQuest-API-Key
max
Medien-ID
MariaDB
MapQuest
Melilla
Mercado
Merchandise
Meta
Metadaten
Meta-Eigenschaft
Meta-Eigenschaften
Meta-Informationen
Mi
Mifare
min
Mitgliedschafts
Mitgliedschaftsdauer
Mitgliedschafts-Typ
Mitgliedschafts-Typen
min
Mo
MobilePay
MOTO
MOTO-Zahlungen
Multibanco
Multiple-Choice-Fragen
MwSt
MyBank
name
NFC
NFC-basierte
NFC-Chip
NFC-Chips
NFC-Medien
NFC-Zahlungsmitteln
Nr
NREI
number
NXP
Objekt-IDs
Offline-Scan
OK
Online-Banking
Onlinebanking-Zugangsdaten
On
Onlinebanking
Open
OpenCage-API-Key
OpenCage
OpenID
OpenStreetMap
Opera
Output
OXXO
Pago
parsen
Pago
Pay
PayPal
PayPal-Account
PayPal-Accounts
PayPal-Konto
PayPal-Kontos
PayPal-Sandbox
PayPal-Sandbox-Account
PayPal-Seite
PayPal-Verkaufs-ID
PayPal-Webhook
PayPal-Zahlung
PayPal-Zahlungen
PayPal-Zahlungs-ID
PayPals
PayU
PCI-DSS-Formulare
Peppol-Netzwerk
Peppol-Teilnehmer-ID
Peppol-Teilnehmer-IDs
PCI
Personalisierung
PKCE-Erweiterung
PEPPOL
PKCE
Platzhalterzeichen
Play
Plugin
Plugins
POS
Postfix
PostgreSQL
PPRO
prefix
Prefix
pretix
pretix-Apps
pretix-Benutzerkennung
pretixdesk-Apps
pretixdesk
pretixdroid
pretix-Enterprise-Lizenz
pretix-Enterprise-Plugins
pretix-Entwickler
pretix-Entwicklern
pretix-Feld
pretix-Installation
pretix-Konto
pretix-Kontos
pretix-Logo
pretix-Logos
pretix-Plugins
pretixPOS
pretixPRINT
pretixPRINT-Version
pretixSCAN
pretix-Support
pretix-Team
pretix-Update
pretix-Version
pretix-Versionen
pretix-Widget
Produkt-ID
Produkt-Metadaten
Professional
Przelewy
pt
px
QR-Code
QR-Code-Bereich
QR-Code-Geheimnis
QR-Code-Inhalt
QR-Code-Reader
QR-Codes
QR-Farbe
Query-Parameter
Query
QR
rabattiert
Rabattiert
Rabattierung
Rechnungs-E-Mail
Reader
Rechnungs
Rechungsdatei
Reddit
Referer
Registrierungs
Registrierungsdatum
Registrierungs-Details
Registrierungsnummer
Registrierungsversuche
remote
Renderer
Request
Requests
Request-URL
Reservierungszeitraum
reverse
Reverse
Reverse-Proxy
Revisionssicherheit
Revolut
Revolut-App
rückabgewickelt
Rundungsdifferenzen
Sa
Saalplan
Sammlungsstücken
SAQ
SCA
Scan
Scanning-Apps
Scans
Scan-Terminals
Scan-Typ
Scan-Zeitpunkt
Scanergebnis
Scanning
schiefgeht
schiefgelaufen
Scope
@@ -378,37 +304,23 @@ SdI
sechsstelligen
Secret
Security
selbst-gehostete
SEPA-Bankeinzug
SEPA-Bankkonto
SEPA-Konten
SEPA-Lastschrift
SEPA-Lastschriften
SEPA-Mandat
SEPA-XML
Session-ID
Selling
SEPA
Shirts
Signaturverfahren
Single-Sign-On
Single-Sign-On-Dienste
Single-Sign-On-Methode
Single-Sign-On-Provider
Sign
Sitzplanmoduls
Sitzplatz-ID
Sitzplatz-IDs
Social-Media-Bild
Social
Sofort
SOFORT
Sorry
Source
Source-Codes
SPF-Eintrag
SPF
SSL
SSO
SSO-Client
SSO-Clients
SSO-Provider
STARTTLS
Steuer-Aufteilungsliste
Steuerregel-ID
Steuerschuldnerschaft
Store
Stornierungsanfrage
Stornobedingungen
Stornobeleg
@@ -418,75 +330,58 @@ Stornogebühren
Stornos
Strg
Stripe
Stripe-Account
Stripe-App
Stripe-Dashboard
Stripe-Konto
Stripe-Kontos
Stripe-Modul
Stripe-Support
Stripe-Test-API
Stripes
Strong
Swish
Synchronisations
systemweiten
Tab
tag
Teammitglied
Teamname
Teilnehmer-Badges
Telephone
Terminal-ID
Termin-ID
Ticketing
Ticketing-Firma
Ticket-Output
Ticket-QR-Code
Timeout
To
Tokengenerator
Toolbar
TODO
To-Do-Liste
TOTP
Trace-Nummer
Trace
Tracking
transaktionale
Trustly
T-Shirts
Turnover-Nummer
Turnover
TWINT
txt
überbuchen
überbucht
überbuchten
überzahlt
Überzahlt
ÜBERZAHLT
überzahlte
Überzahlte
Überzahlten
uhrzeit
UID
UID-Basis
UID-Schutzfunktion
Ultralight
umzubuchen
ungespeicherte
Unkategorisiert
unkategorisiert
Unkategorisierte
unlöschbar
unlöschbaren
untenstehende
untenstehenden
Unterzahlt
unterzahlt
UNTERZAHLT
unzugeordnete
Unzugeordnete
unzugeordneten
umzubuchen
URIs
Ursprüngl
USt
USt-ID
USt-ID-Nr
USt-ID-Nummer
Überweisungs
Überzahlten
Validierung
Validierungsregeln
Varianten-ID
Venmo
Veranstalterdomain
Veranstaltereinstellungen
@@ -499,50 +394,39 @@ Veranstalterseite
Veranstalterübersicht
veranstalterweiten
Veranstaltungs
Veranstaltungs-Metadaten
Veranstalterdomain
veranstaltungsweiten
Verfügbarkeitsberechnung
Verfügbarkeitsstatus
Verkaufs-ID
Verkkopankki
Veröffentlichbarer
Verwendungszweck-Postfix
VIP-Bereiches
Warenkorb-ID
Warenkorb-Timeout
VIP
WebAuthn
WebAuthn-Gerät
WebAuthn-kompatibler
WebAuthn-Token
WebAuthn-Unterstützung
Webhook
Webhooks
Webhook-Wiederholungsaufträge
Weiterleitungs
WeChat
WeChat-Zahlung
Weiterleitungs-URIs
Weiterleitungs-URL
Weiterleitungs-URLs
WhatsApp
Widget
Widget-Code
xlsx
XXX
XXXX
XXXXX
Yubikey
Zahlungs
Zahlungsbestätigungs-E-Mail
Zahlungserinnerungs-E-Mail
Zahlungs-ID
Zahlungspflichtig
Zahlungsbestätigungs
Zahlungserinnerungs
zahlungspflichtig
Zahlungsplugins
Zehnerkarten
Zeitbasiert
zeitbasiert
Zeitslotbuchung
Zimpler
ZIP-Datei
ZIP
zubuchbaren
zurückbuchen
zurückgeleitet
zurückwechseln
zutrittsberechtigt
ZVT-Terminal
zzgl
ZVT

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: 2025-05-30 11:07+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"Language-Team: German (informal) <https://translate.pretix.eu/projects/"
@@ -345,12 +345,12 @@ msgstr "Nein"
msgid "close"
msgstr "schließen"
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
msgid "required"
msgstr "erforderlich"
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
@@ -358,13 +358,13 @@ msgstr ""
"Deine Anfrage wird nun verarbeitet. Je nach Größe der Veranstaltung kann "
"dies einige Minuten dauern."
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
"Deine Anfrage befindet sich beim Server in der Warteschlange und wird bald "
"verarbeitet."
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
@@ -374,14 +374,14 @@ msgstr ""
"verarbeitet. Wenn dies länger als zwei Minuten dauert, kontaktiere uns bitte "
"oder gehe in deinem Browser einen Schritt zurück und versuche es erneut."
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr "Ein Fehler vom Typ {code} ist aufgetreten."
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
@@ -389,12 +389,12 @@ msgstr ""
"Wir können den Server aktuell nicht erreichen, versuchen es aber weiter. "
"Letzter Fehlercode: {code}"
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr "Diese Anfrage hat zu lange gedauert. Bitte erneut versuchen."
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
@@ -402,11 +402,11 @@ msgstr ""
"Wir können den Server aktuell nicht erreichen. Bitte versuche es noch "
"einmal. Fehlercode: {code}"
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "Wir verarbeiten deine Anfrage …"
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
@@ -416,12 +416,12 @@ msgstr ""
"dauert, prüfe bitte deine Internetverbindung. Danach kannst du diese Seite "
"neu laden und es erneut versuchen."
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
"Wenn dies länger als einige Minuten dauert, kontaktieren Sie uns bitte."
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr "Schließen"
@@ -771,7 +771,7 @@ msgstr "Du erhältst %(currency)s %(amount)s zurück"
msgid "Please enter the amount the organizer can keep."
msgstr "Bitte gib den Betrag ein, den der Veranstalter einbehalten darf."
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr "Deine lokale Zeit:"

View File

@@ -1,143 +1,125 @@
ABGEKÜNDIGT
2FA
ABN
AES
Absenderadresse
Absenderinformation
Absendername
ABGEKÜNDIGT
Admin
Adminbereich
Admin-Modus
Admin-Sitzung
Admin-Sitzungen
AES
Affirm
AGPL
AGPLv
Alipay
and
API-Meta-Informationen
APM
App
App-Gebühr
ApplePay
Apps
APM
as
Aufbuchungen
aufeinanderfolgenden
Aufteilungsliste
aufzubuchen
auschecken
Ausgangsscan
Ausgangsscans
ausgecheckt
ausgeklappt
ausgecheckt
auswahl
Auth
Authentication
Authenticator-App
Authenticator
Authentifizierungsmechanismus
Autorisierungs
Autorisierungscode
Autorisierungs-Endpunktes
Backend
Badge
Badge-Druck
Badge-Layout
Badge-Layouts
Badges
Bancontact
Bank-App
BankID
Banking-App
Banking
barcodes
Baskisch
Bcc
BCC-Adresse
Bcc-Kopie
BCC
Beispielevent
Beispielproduktvariantenbeschreibung
Belarus
Benachrichtigungs
Benachrichtigungsart
Benachrichtigungsarten
Benachrichtigungseinstellungen
Benachrichtigungs-Einstellungen
Benachrichtigungs-E-Mail
Benutzer-ID-Feld
Benutzer-ID-Felds
Bestätigungs-E-Mail
Bestellbestätigungs-E-Mail
Bestellbestätigungs-E-Mails
Berechtigungs
Bestätigungs
Bestellbestätigungs
Bestellungsänderungen
Bestellungs-Synchronisation
Bestellungs-Synchronisierung
Bestellungsstatus
Bestellungs
bez
BezahlCode
Bezahlmethode
Blackberry
BLIK
BN-Code
Blogpost
BN
Branding
Browsereinstellungen
BSD
bspw
Bokmål
Boleto
Branding-Informationen
Browsereinstellungen
BSD-Lizenz
bspw
Buchhaltungs
Bundles
Butterfly-Badge
Butterfly
bzw
ca
Cc
Ceuta
Cc
chardet
charge
Charge-ID
Checkbox
Check-in-App
Check-in-Apps
Check-in-QR-Code
Checkout
Chrome
Client-ID
Client-Secret
CODE.txt
Community-Übersetzungen
Choice
Community
CONFIRM
Connect
Cookie-Consent-Management
Cookie-Consent-Mechanismus
Consent
Copyleft
Cronjob
Cronjob-Komponente
Cross-Selling-Bedingung
Cross-Selling-Kategorie
Cross-Selling-Kategorien
Cross-Selling-Schritt
Cross
csv
CSV
CSV-Datei
CSV-Dateien
CSV-Eingabe
CSV-Eingabedaten
CSV-Import
CSV-Input
CSV-Lesen
CSV-Spalte
Customer
CZK
Debug-Modus
Dashboard
Datensynchronisation
Debug
dekodi
Desktop-Apps
deliverability
DNS
Di
Do
Doe
Downloadformat
Downloadseite
Dr
Drag-and-Drop-Interfaces
Drag
Droid
Drop
DSS
Edge
Eingangsscan
Einlassbuchung
Einlassdatum
Einlasskontrolle
Einlassuhrzeita
einzuchecken
email
E-Mail-Renderer
Enterprise-Lizenz
Enterprise-Lizenzen
Enterprise-Plugin
Enterprise-Plugins
eps
Enterprise
EPC
EPS
eps
Erstattungsbetrag
Erstattungsliste
Erstattungsmethode
@@ -145,231 +127,175 @@ Erstattungsoptionen
Erstattungsstatus
Erstattungsweg
erstmalig
Erweiterungs
etc
EU-USt-ID-Nr
Event
Event-Eigenschaft
Eventeingang
Event-Erstellung
Event-Setup-Tool
Event-Ticketing-Software
Event-Ticketshop
Event-Übersicht
Event-Website
Eventfirma
evtl
Explorer
FA
Favicon
F-Droid
Footer
Footer-Link
Footer-Text
Galicisch
Geocoding
Geocoding-Daten
Geo-Koordinaten
Geräte-ID
gehostete
geht's
GENEXAMPLE
Geo
geocoding
gescannt
ggf
Ggf
GiroCode
giropay
GPL
Grants
Gruppierungsspalte
Gruppierungswert
Gruppierungsspalte
Guide
Gutscheineinlöser
Händler-ID
Händler-PayPal-Konto
Hardware-Tokengenerator
herunterscrollen
hochlädst
HTML-E-Mail-Renderer
HTTPS
HTTPS-Verbindungen
HTTPS-Website
IBAN
IBANs
iCal
ics-Kalenderdatei
ics
ID
iDEAL
IDs
Inc
inkl
innen-Badges
innenname
innennamen
innergemeinschaftliche
Innergemeinschaftlicher
Installations-ID
Integrationen
Input
Installations
integrationen
intra
INV
invalidieren
invalidiert
iOS
ISU
iOS
Itaú
iTunes
JavaScript
JSON-Datei
JSON
Kategoriebeschreibung
Key
Klarna
Kombitickets
Kompatibilitätsmodus
Konfigurations
Kosovo
land
landesspezifische
Lead-Scanning
Leaflet-Kacheln
Lead
Leaflet
Linktext
lit
Log-ID
Logindaten
Lösch
loszulegen
Ltd
Macau
MapQuest-API-Key
max
Medien-ID
MariaDB
MapQuest
Melilla
Mercado
Merchandise
Meta
Metadaten
Meta-Eigenschaft
Meta-Eigenschaften
Meta-Informationen
Mi
Mifare
min
Mitgliedschafts
Mitgliedschaftsdauer
Mitgliedschafts-Typ
Mitgliedschafts-Typen
min
Mo
MobilePay
MOTO
MOTO-Zahlungen
Multibanco
Multiple-Choice-Fragen
MwSt
MyBank
name
NFC
NFC-basierte
NFC-Chip
NFC-Chips
NFC-Medien
NFC-Zahlungsmitteln
Nr
NREI
number
NXP
Objekt-IDs
Offline-Scan
OK
Online-Banking
Onlinebanking-Zugangsdaten
On
Onlinebanking
Open
OpenCage-API-Key
OpenCage
OpenID
OpenStreetMap
Opera
Output
OXXO
Pago
parsen
Pago
Pay
PayPal
PayPal-Account
PayPal-Accounts
PayPal-Konto
PayPal-Kontos
PayPal-Sandbox
PayPal-Sandbox-Account
PayPal-Seite
PayPal-Verkaufs-ID
PayPal-Webhook
PayPal-Zahlung
PayPal-Zahlungen
PayPal-Zahlungs-ID
PayPals
PayU
PCI-DSS-Formulare
Peppol-Netzwerk
Peppol-Teilnehmer-ID
Peppol-Teilnehmer-IDs
PCI
Personalisierung
PKCE-Erweiterung
PEPPOL
PKCE
Platzhalterzeichen
Play
Plugin
Plugins
POS
Postfix
PostgreSQL
PPRO
prefix
Prefix
pretix
pretix-Apps
pretix-Benutzerkennung
pretixdesk-Apps
pretixdesk
pretixdroid
pretix-Enterprise-Lizenz
pretix-Enterprise-Plugins
pretix-Entwickler
pretix-Entwicklern
pretix-Feld
pretix-Installation
pretix-Konto
pretix-Kontos
pretix-Logo
pretix-Logos
pretix-Plugins
pretixPOS
pretixPRINT
pretixPRINT-Version
pretixSCAN
pretix-Support
pretix-Team
pretix-Update
pretix-Version
pretix-Versionen
pretix-Widget
Produkt-ID
Produkt-Metadaten
Professional
Przelewy
pt
px
QR-Code
QR-Code-Bereich
QR-Code-Geheimnis
QR-Code-Inhalt
QR-Code-Reader
QR-Codes
QR-Farbe
Query-Parameter
Query
QR
rabattiert
Rabattiert
Rabattierung
Rechnungs-E-Mail
Reader
Rechnungs
Rechungsdatei
Reddit
Referer
Registrierungs
Registrierungsdatum
Registrierungs-Details
Registrierungsnummer
Registrierungsversuche
remote
Renderer
Request
Requests
Request-URL
Reservierungszeitraum
reverse
Reverse
Reverse-Proxy
Revisionssicherheit
Revolut
Revolut-App
rückabgewickelt
Rundungsdifferenzen
Sa
Saalplan
Sammlungsstücken
SAQ
SCA
Scan
Scanning-Apps
Scans
Scan-Terminals
Scan-Typ
Scan-Zeitpunkt
Scanergebnis
Scanning
schiefgeht
schiefgelaufen
Scope
@@ -378,37 +304,23 @@ SdI
sechsstelligen
Secret
Security
selbst-gehostete
SEPA-Bankeinzug
SEPA-Bankkonto
SEPA-Konten
SEPA-Lastschrift
SEPA-Lastschriften
SEPA-Mandat
SEPA-XML
Session-ID
Selling
SEPA
Shirts
Signaturverfahren
Single-Sign-On
Single-Sign-On-Dienste
Single-Sign-On-Methode
Single-Sign-On-Provider
Sign
Sitzplanmoduls
Sitzplatz-ID
Sitzplatz-IDs
Social-Media-Bild
Social
Sofort
SOFORT
Sorry
Source
Source-Codes
SPF-Eintrag
SPF
SSL
SSO
SSO-Client
SSO-Clients
SSO-Provider
STARTTLS
Steuer-Aufteilungsliste
Steuerregel-ID
Steuerschuldnerschaft
Store
Stornierungsanfrage
Stornobedingungen
Stornobeleg
@@ -418,75 +330,58 @@ Stornogebühren
Stornos
Strg
Stripe
Stripe-Account
Stripe-App
Stripe-Dashboard
Stripe-Konto
Stripe-Kontos
Stripe-Modul
Stripe-Support
Stripe-Test-API
Stripes
Strong
Swish
Synchronisations
systemweiten
Tab
tag
Teammitglied
Teamname
Teilnehmer-Badges
Telephone
Terminal-ID
Termin-ID
Ticketing
Ticketing-Firma
Ticket-Output
Ticket-QR-Code
Timeout
To
Tokengenerator
Toolbar
TODO
To-Do-Liste
TOTP
Trace-Nummer
Trace
Tracking
transaktionale
Trustly
T-Shirts
Turnover-Nummer
Turnover
TWINT
txt
überbuchen
überbucht
überbuchten
überzahlt
Überzahlt
ÜBERZAHLT
überzahlte
Überzahlte
Überzahlten
uhrzeit
UID
UID-Basis
UID-Schutzfunktion
Ultralight
umzubuchen
ungespeicherte
Unkategorisiert
unkategorisiert
Unkategorisierte
unlöschbar
unlöschbaren
untenstehende
untenstehenden
Unterzahlt
unterzahlt
UNTERZAHLT
unzugeordnete
Unzugeordnete
unzugeordneten
umzubuchen
URIs
Ursprüngl
USt
USt-ID
USt-ID-Nr
USt-ID-Nummer
Überweisungs
Überzahlten
Validierung
Validierungsregeln
Varianten-ID
Venmo
Veranstalterdomain
Veranstaltereinstellungen
@@ -499,50 +394,39 @@ Veranstalterseite
Veranstalterübersicht
veranstalterweiten
Veranstaltungs
Veranstaltungs-Metadaten
Veranstalterdomain
veranstaltungsweiten
Verfügbarkeitsberechnung
Verfügbarkeitsstatus
Verkaufs-ID
Verkkopankki
Veröffentlichbarer
Verwendungszweck-Postfix
VIP-Bereiches
Warenkorb-ID
Warenkorb-Timeout
VIP
WebAuthn
WebAuthn-Gerät
WebAuthn-kompatibler
WebAuthn-Token
WebAuthn-Unterstützung
Webhook
Webhooks
Webhook-Wiederholungsaufträge
Weiterleitungs
WeChat
WeChat-Zahlung
Weiterleitungs-URIs
Weiterleitungs-URL
Weiterleitungs-URLs
WhatsApp
Widget
Widget-Code
xlsx
XXX
XXXX
XXXXX
Yubikey
Zahlungs
Zahlungsbestätigungs-E-Mail
Zahlungserinnerungs-E-Mail
Zahlungs-ID
Zahlungspflichtig
Zahlungsbestätigungs
Zahlungserinnerungs
zahlungspflichtig
Zahlungsplugins
Zehnerkarten
Zeitbasiert
zeitbasiert
Zeitslotbuchung
Zimpler
ZIP-Datei
ZIP
zubuchbaren
zurückbuchen
zurückgeleitet
zurückwechseln
zutrittsberechtigt
ZVT-Terminal
zzgl
ZVT

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"POT-Creation-Date: 2025-08-19 16:36+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -344,68 +344,68 @@ msgstr ""
msgid "close"
msgstr ""
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
msgid "required"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
"browser and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr ""
@@ -740,7 +740,7 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: 2024-12-22 00:00+0000\n"
"Last-Translator: Dimitris Tsimpidis <tsimpidisd@gmail.com>\n"
"Language-Team: Greek <https://translate.pretix.eu/projects/pretix/pretix-js/"
@@ -361,14 +361,14 @@ msgstr "Όχι"
msgid "close"
msgstr "Κλείσιμο"
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
#, fuzzy
#| msgid "Cart expired"
msgid "required"
msgstr "Το καλάθι έληξε"
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
#, fuzzy
#| msgid ""
#| "Your request has been queued on the server and will now be processed. "
@@ -381,7 +381,7 @@ msgstr ""
"επεξεργασία. Ανάλογα με το μέγεθος του συμβάντος σας, αυτό μπορεί να "
"διαρκέσει μερικά λεπτά."
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
#, fuzzy
#| msgid ""
#| "Your request has been queued on the server and will now be processed. "
@@ -392,7 +392,7 @@ msgstr ""
"επεξεργασία. Ανάλογα με το μέγεθος του συμβάντος σας, αυτό μπορεί να "
"διαρκέσει μερικά λεπτά."
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
@@ -402,14 +402,14 @@ msgstr ""
"του. Αν αυτό διαρκεί περισσότερο από δύο λεπτά, επικοινωνήστε μαζί μας ή "
"επιστρέψτε στο πρόγραμμα περιήγησής σας και δοκιμάστε ξανά."
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr "Παρουσιάστηκε σφάλμα τύπου {code}."
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
@@ -417,14 +417,14 @@ msgstr ""
"Αυτήν τη στιγμή δεν μπορούμε να φτάσουμε στο διακομιστή, αλλά συνεχίζουμε να "
"προσπαθούμε. Τελευταίος κωδικός σφάλματος: {code}"
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
#, fuzzy
#| msgid "The request took to long. Please try again."
msgid "The request took too long. Please try again."
msgstr "Το αίτημα διήρκησε πολύ. Παρακαλώ προσπαθήστε ξανά."
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
@@ -432,11 +432,11 @@ msgstr ""
"Αυτήν τη στιγμή δεν μπορούμε να συνδεθούμε με το διακομιστή. Παρακαλώ "
"προσπαθήστε ξανά. Κωδικός σφάλματος: {code}"
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "Επεξεργαζόμαστε το αίτημά σας …"
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
@@ -446,11 +446,11 @@ msgstr ""
"περισσότερο από ένα λεπτό, ελέγξτε τη σύνδεσή σας στο διαδίκτυο και στη "
"συνέχεια επαναλάβετε τη φόρτωση αυτής της σελίδας και δοκιμάστε ξανά."
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr "Κλείσιμο μηνύματος"
@@ -820,7 +820,7 @@ msgstr "απο %(currency)s %(price)s"
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -344,68 +344,68 @@ msgstr ""
msgid "close"
msgstr ""
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
msgid "required"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
"browser and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr ""
@@ -740,7 +740,7 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: 2025-05-30 11:15+0000\n"
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
"Language-Team: Spanish <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -345,12 +345,12 @@ msgstr "No"
msgid "close"
msgstr "cerrar"
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
msgid "required"
msgstr "campo requerido"
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
@@ -358,11 +358,11 @@ msgstr ""
"Su solicitud está siendo procesada. Esto puede tardar varios minutos, "
"dependiendo del tamaño de su evento."
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr "Su solicitud ha sido enviada al servidor y será procesada en breve."
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
@@ -372,14 +372,14 @@ msgstr ""
"Si toma más de dos minutos, por favor contáctenos o regrese a la página "
"anterior en su navegador e intente de nuevo."
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr "Ha ocurrido un error de tipo {code}."
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
@@ -387,12 +387,12 @@ msgstr ""
"Ahora mismo no podemos contactar con el servidor, pero lo seguimos "
"intentando. El último código de error fue: {code}"
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr "La solicitud ha tomado demasiado tiempo. Por favor, intente de nuevo."
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
@@ -400,11 +400,11 @@ msgstr ""
"Ahora mismo no podemos contactar con el servidor. Por favor, intente de "
"nuevo. Código de error: {code}"
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "Estamos procesando su solicitud…"
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
@@ -414,11 +414,11 @@ msgstr ""
"minuto, por favor, revise su conexión a Internet, recargue la página e "
"intente nuevamente."
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr "Si tarda más de unos minutos, póngase en contacto con nosotros."
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr "Cerrar mensaje"
@@ -768,7 +768,7 @@ msgstr "Obtienes %(currency)s %(price)s de vuelta"
msgid "Please enter the amount the organizer can keep."
msgstr "Por favor, ingrese el importe que el organizador puede quedarse."
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr "Su hora local:"

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: 2025-08-04 14:16+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -345,68 +345,68 @@ msgstr ""
msgid "close"
msgstr ""
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
msgid "required"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
"browser and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr ""
@@ -741,7 +741,7 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -344,68 +344,68 @@ msgstr ""
msgid "close"
msgstr ""
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
msgid "required"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
"browser and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr ""
@@ -740,7 +740,7 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: 2024-09-06 08:47+0000\n"
"Last-Translator: Albizuri <oier@puntu.eus>\n"
"Language-Team: Basque <https://translate.pretix.eu/projects/pretix/pretix-js/"
@@ -345,12 +345,12 @@ msgstr "Ez"
msgid "close"
msgstr "itxi"
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
msgid "required"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
@@ -358,11 +358,11 @@ msgstr ""
"Zure eskaera prozesatzen ari dira. Gertaeraren tamainaren arabera, baliteke "
"minutu batzuk behar izatea."
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr "Zure eskaera zerbitzarian gorde da eta laster prozesatuko da."
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
@@ -372,14 +372,14 @@ msgstr ""
"Bi minutu baino gehiago irauten badu, mesedez, jarri gurekin harremanetan "
"edo itzuli zure nabigatzailera eta saiatu berriro."
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr "{kode} motako errore bat gertatu da."
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
@@ -387,12 +387,12 @@ msgstr ""
"Orain bertan ezin gara zerbitzarira iritsi, baina saiatzen jarraitzen dugu. "
"Azken errore-kodea: {kodea}"
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr "Gehiegi luzatu da eskaera. Mesedez, saiatu berriro."
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
@@ -400,11 +400,11 @@ msgstr ""
"Une honetan ezin gara zerbitzarira iritsi. Mesedez, saiatu berriro. Errore-"
"kodea: {kodea}"
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "Zure eskaera prozesatzen ari gara …"
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
@@ -414,11 +414,11 @@ msgstr ""
"baino gehiago irauten badu, mesedez, berrikusi zure Interneteko konexioa eta "
"gero kargatu berriro orri hau eta saiatu berriro."
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr "Mezua itxi"
@@ -766,7 +766,7 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: 2021-11-10 05:00+0000\n"
"Last-Translator: Jaakko Rinta-Filppula <jaakko@r-f.fi>\n"
"Language-Team: Finnish <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -363,49 +363,49 @@ msgstr "Ei"
msgid "close"
msgstr "Sulje"
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
#, fuzzy
#| msgid "Cart expired"
msgid "required"
msgstr "Ostoskori on vanhentunut"
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
"browser and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr "Tapahtui virhe. Virhekoodi: {code}."
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr "Pyyntö aikakatkaistiin. Ole hyvä ja yritä uudelleen."
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
@@ -413,22 +413,22 @@ msgstr ""
"Palvelimeen ei juuri nyt saatu yhteyttä. Ole hyvä ja yritä uudelleen. "
"Virhekoodi: {code}"
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "Pyyntöäsi käsitellään …"
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr "Sulje viesti"
@@ -783,7 +783,7 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -344,68 +344,68 @@ msgstr ""
msgid "close"
msgstr ""
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
msgid "required"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
"browser and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr ""
@@ -740,7 +740,7 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: French\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"PO-Revision-Date: 2025-08-28 23:00+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: 2025-05-30 11:06+0000\n"
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
"Language-Team: French <https://translate.pretix.eu/projects/pretix/pretix-js/"
"fr/>\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.13\n"
"X-Generator: Weblate 5.11.4\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -344,12 +344,12 @@ msgstr "Non"
msgid "close"
msgstr "fermer"
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
msgid "required"
msgstr "obligatoire"
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
@@ -357,13 +357,13 @@ msgstr ""
"Votre demande est maintenant en cours de traitement. Selon la taille de "
"votre événement, cela peut prendre jusqu' à quelques minutes."
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
"Votre demande a été mise en attente sur le serveur et sera traitée "
"prochainement."
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
@@ -373,14 +373,14 @@ msgstr ""
"prend plus de deux minutes, veuillez nous contacter ou retourner dans votre "
"navigateur et réessayer."
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr "Une erreur de type {code} s'est produite."
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
@@ -388,12 +388,12 @@ msgstr ""
"Nous ne pouvons actuellement pas atteindre le serveur, mais nous continuons "
"d'essayer. Dernier code d'erreur: {code}"
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr "La requête a prit trop de temps. Veuillez réessayer."
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
@@ -401,11 +401,11 @@ msgstr ""
"Actuellement, nous ne pouvons pas atteindre le serveur. Veuillez réessayer. "
"Code d'erreur: {code}"
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "Nous traitons votre demande …"
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
@@ -415,11 +415,11 @@ msgstr ""
"d'une minute, veuillez vérifier votre connexion Internet, puis recharger "
"cette page et réessayer."
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr "Si cela prend plus de quelques minutes, veuillez nous contacter."
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr "Fermer le message"
@@ -551,7 +551,7 @@ msgstr "minutes"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:192
msgid "Duplicate"
msgstr "Dupliquer"
msgstr "Doublon"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:193
msgctxt "entry_status"
@@ -768,7 +768,7 @@ msgid "Please enter the amount the organizer can keep."
msgstr ""
"Veuillez indiquer le montant que l'organisateur est autorisé à retenir."
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr "Votre heure locale:"

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: 2022-02-22 22:00+0000\n"
"Last-Translator: Ismael Menéndez Fernández <ismael.menendez@balidea.com>\n"
"Language-Team: Galician <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -351,12 +351,12 @@ msgstr "Non"
msgid "close"
msgstr "cerrar"
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
msgid "required"
msgstr "campo requirido"
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
@@ -364,11 +364,11 @@ msgstr ""
"A súa solicitude estase procesando. Isto pode tardar varios minutos, "
"dependendo do tamaño do seu evento."
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr "A súa solicitude foi enviada ao servidor e será procesada en breve."
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
@@ -378,14 +378,14 @@ msgstr ""
"procesada. Se tarda máis de dous minutos, por favor, contacte con nós ou "
"volva á páxina anterior no seu navegador e inténteo de novo."
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr "Ocurreu un error de tipo {code}."
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
@@ -393,12 +393,12 @@ msgstr ""
"Agora mesmo non podemos contactar co servidor, pero seguímolo intentando. O "
"último código de erro foi: {code}"
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr "A petición levou demasiado tempo. Inténteo de novo."
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
@@ -406,11 +406,11 @@ msgstr ""
"Agora mesmo non podemos contactar co servidor. Por favor, inténteo de novo. "
"Código de erro: {code}"
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "Estamos procesando a súa solicitude…"
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
@@ -420,11 +420,11 @@ msgstr ""
"dun minuto, por favor, revise a súa conexión a Internet, recargue a páxina e "
"inténteo de novo."
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr "Cerrar mensaxe"
@@ -791,7 +791,7 @@ msgstr "Obtés %(currency)s %(price)s de volta"
msgid "Please enter the amount the organizer can keep."
msgstr "Por favor, ingrese a cantidade que pode conservar o organizador."
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr "A súa hora local:"

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: 2021-09-24 13:54+0000\n"
"Last-Translator: ofirtro <ofir.tro@gmail.com>\n"
"Language-Team: Hebrew <https://translate.pretix.eu/projects/pretix/pretix-js/"
@@ -350,22 +350,22 @@ msgstr ""
msgid "close"
msgstr ""
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
msgid "required"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
msgstr "הבקשה שלך מתבצעת ויכולה לקחת כמה דקות בהתאם לגודל האירוע."
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr "הבקשה שלך תבוצע בהקדם."
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
@@ -374,46 +374,46 @@ msgstr ""
"הבקשה שלך הגיעה לשרת אבל עדיין לא התחילה. אם זה לוקח יותר משתי דקות, אנא צור "
"איתנו קשר או נסה שנית."
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr "שגיאה {code} התרחשה."
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
msgstr "אנחנו לא מצליחים לגשת לשרת, אבל ממשיכים לנסות. שגיאה אחרונה: {code}"
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr "הבקשה לקחה יותר מידי זמן. נסה שנית."
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr "אירעה שגיאה. אנא נסה שנית. שגיאה: {code}"
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "הבקשה שלך מתבצעת…"
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr ""
@@ -754,7 +754,7 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: 2025-03-16 10:17+0000\n"
"Last-Translator: Robert Rigo <kontakt@bicikli.hr>\n"
"Language-Team: Croatian <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -346,68 +346,68 @@ msgstr "Ne"
msgid "close"
msgstr "zatvori"
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
msgid "required"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
"browser and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr ""
@@ -743,7 +743,7 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: 2024-11-28 06:00+0000\n"
"Last-Translator: Patrick Chilton <chpatrick@gmail.com>\n"
"Language-Team: Hungarian <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -360,14 +360,14 @@ msgstr "Nem"
msgid "close"
msgstr "Bezárás"
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
#, fuzzy
#| msgid "Cart expired"
msgid "required"
msgstr "A kosár lejárt"
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
#, fuzzy
#| msgid ""
#| "Your request has been queued on the server and will now be processed. "
@@ -379,7 +379,7 @@ msgstr ""
"A kérés várólistára került a kiszolgálón, és hamarosan feldolgozásra kerül. "
"Az esemény méretétől függően ez akár néhány percet is igénybe vehet."
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
#, fuzzy
#| msgid ""
#| "Your request has been queued on the server and will now be processed. "
@@ -389,7 +389,7 @@ msgstr ""
"A kérés várólistára került a kiszolgálón, és hamarosan feldolgozásra kerül. "
"Az esemény méretétől függően ez akár néhány percet is igénybe vehet."
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
@@ -399,14 +399,14 @@ msgstr ""
"folyamat két percnél hosszabb ideg tart, kérjük vegye fel velünk a "
"kapcsolatot, vagy lépjen vissza a böngészőjében és próbálja újra."
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr "{code} típusú hiba jelentkezett."
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
@@ -414,23 +414,23 @@ msgstr ""
"Jelen pillanatban a kiszolgáló nem elérhető, de továbbra is próbálkozunk. "
"Utolsó hibakód: {code}"
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr "A kérés időtúllépés miatt leállt. Kérjük próbálja újra."
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
"Jelen pillanatban a kiszolgáló nem elérhető. Próbálja újra. Hibakód: {code}"
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "A kérés feldolgozása folyamatban…"
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
@@ -440,11 +440,11 @@ msgstr ""
"hosszabb időt vesz igénybe, kérjük ellenőrizze az internetkapcsolatát, "
"frissítse az oldalt és próbálkozzon újra."
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr "Üzenet bezárása"
@@ -813,7 +813,7 @@ msgstr "%(currency) %(price)-tól"
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: 2023-09-20 14:01+0000\n"
"Last-Translator: Mahdia Aliyy <mahdlyy.k@gmail.com>\n"
"Language-Team: Indonesian <https://translate.pretix.eu/projects/pretix/"
@@ -349,12 +349,12 @@ msgstr "Tidak"
msgid "close"
msgstr "menutup"
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
msgid "required"
msgstr "diperlukan"
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
@@ -362,13 +362,13 @@ msgstr ""
"Permintaan Anda sedang diproses. Tergantung pada besarnya acara Anda, proses "
"ini mungkin memerlukan waktu hingga beberapa menit."
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
"Permintaan Anda telah dimasukkan ke dalam antrian di server dan akan segera "
"diproses."
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
@@ -378,14 +378,14 @@ msgstr ""
"diproses. Jika proses ini memerlukan waktu lebih dari dua menit, harap "
"hubungi kami atau kembali ke browser Anda dan coba lagi."
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr "Terjadi kesalahan jenis {code}."
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
@@ -393,12 +393,12 @@ msgstr ""
"Saat ini kami tidak dapat menjangkau server, tetapi kami terus mencoba. Kode "
"kesalahan terakhir: {code}"
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr "Permintaan terlalu lama. Silakan coba lagi."
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
@@ -406,11 +406,11 @@ msgstr ""
"Saat ini kami tidak dapat menjangkau server. Silakan coba lagi. Kode "
"kesalahan: {code}"
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "Kami sedang memproses permintaan Anda …"
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
@@ -420,11 +420,11 @@ msgstr ""
"lebih dari satu menit, silakan periksa koneksi internet Anda lalu muat ulang "
"halaman ini dan coba lagi."
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr "Tutup pesan"
@@ -787,7 +787,7 @@ msgstr "Anda mendapatkan %(currency)s %(amount)s kembali"
msgid "Please enter the amount the organizer can keep."
msgstr "Silakan masukkan jumlah yang dapat disimpan oleh penyelenggara."
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr "Waktu setempat Anda:"

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: 2025-05-05 09:40+0000\n"
"Last-Translator: \"Luca Martinelli [Sannita]\" <sannita@gmail.com>\n"
"Language-Team: Italian <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -348,12 +348,12 @@ msgstr "No"
msgid "close"
msgstr "Chiudi"
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
msgid "required"
msgstr "richiesta"
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
@@ -361,11 +361,11 @@ msgstr ""
"La tua richiesta è in fase di elaborazione. A seconda della dimensione del "
"tuo evento, questo passaggio può durare fino ad alcuni minuti."
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr "La tua richiesta è stata inviata al server e verrà presto elaborata."
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
@@ -375,14 +375,14 @@ msgstr ""
"elaborazione. Se l'attesa dura più a lungo di due minuti di ti invitiamo a "
"contattarci o di tornare al browser e riprovare."
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr "Si è verificato un errore {code}."
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
@@ -390,12 +390,12 @@ msgstr ""
"Al momento il server non è raggiungibile, ma continueremo a provare. Codice "
"dell'ultimo errore: {code}"
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr "La richiesta ha impiegato troppo tempo. Si prega di riprovare."
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
@@ -403,11 +403,11 @@ msgstr ""
"Al momento il server non è raggiungibile. Si prega di riprovare. Codice "
"dell'errore: {code}"
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "Stiamo elaborando la tua richiesta …"
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
@@ -417,11 +417,11 @@ msgstr ""
"più di un minuto si prega di verificare la connessione internet e ricaricare "
"la pagina per riprovare l'invio."
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr "Messaggio di chiusura"
@@ -785,7 +785,7 @@ msgstr "Ricevi indietro %(currency)s %(amount)s"
msgid "Please enter the amount the organizer can keep."
msgstr "Inserisci l'importo che l'organizzatore può trattenere."
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr "Ora locale:"

File diff suppressed because it is too large Load Diff

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
"PO-Revision-Date: 2025-09-25 03:00+0000\n"
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
"PO-Revision-Date: 2025-07-23 01:00+0000\n"
"Last-Translator: Hijiri Umemoto <hijiri@umemoto.org>\n"
"Language-Team: Japanese <https://translate.pretix.eu/projects/pretix/pretix-"
"js/ja/>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.13.3\n"
"X-Generator: Weblate 5.12.2\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -64,7 +64,7 @@ msgstr "iDEAL"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:42
msgid "SEPA Direct Debit"
msgstr "SEPA ダイレクトデビット"
msgstr "SEPA Direct Debit"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:43
msgid "Bancontact"
@@ -209,7 +209,7 @@ msgstr "方向転換"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:38
msgid "Entry"
msgstr "エントリー"
msgstr "入口"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:39
msgid "Exit"
@@ -327,7 +327,7 @@ msgstr "有効なチケット"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:70
msgid "Currently inside"
msgstr "現在入場中"
msgstr "現在オンラインです"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:71
#: pretix/static/pretixcontrol/js/ui/question.js:136
@@ -345,12 +345,12 @@ msgstr "いいえ"
msgid "close"
msgstr "閉じる"
#: pretix/static/pretixbase/js/addressform.js:90
#: pretix/static/pretixpresale/js/ui/main.js:519
#: pretix/static/pretixbase/js/addressform.js:105
#: pretix/static/pretixpresale/js/ui/main.js:509
msgid "required"
msgstr "必"
msgstr "必"
#: pretix/static/pretixbase/js/asynctask.js:13
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
@@ -358,12 +358,12 @@ msgstr ""
"お客様のリクエストは現在処理中です。イベントの規模により、数分かかる場合があ"
"ります。"
#: pretix/static/pretixbase/js/asynctask.js:17
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
"サーバへ送信されたリクエスト順にお応えしています。今しばらくお待ちください。"
#: pretix/static/pretixbase/js/asynctask.js:21
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
@@ -373,37 +373,37 @@ msgstr ""
"経っても応答がない場合は、弊社へお問い合わせいただくか、ブラウザを一つ前に戻"
"して再度お試しください。"
#: pretix/static/pretixbase/js/asynctask.js:125
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixbase/js/asynctask.js:186
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr "{code} のエラーが発生しました。"
#: pretix/static/pretixbase/js/asynctask.js:128
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
msgstr ""
"現在サーバへの接続ができませんが、接続試行中です。エラーコード: {code}"
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr "リクエストの時間切れです。再試行してください。"
#: pretix/static/pretixbase/js/asynctask.js:188
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
"現在サーバが応答していません。再試行してください。エラーコード: {code}"
#: pretix/static/pretixbase/js/asynctask.js:216
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "リクエストを処理中です …"
#: pretix/static/pretixbase/js/asynctask.js:219
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
@@ -413,11 +413,11 @@ msgstr ""
"ターネット接続を確認してください。確認完了後、ウェブページを再度読込み、再試"
"行してください。"
#: pretix/static/pretixbase/js/asynctask.js:276
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr "数分以上かかる場合は、お問い合わせください。"
#: pretix/static/pretixbase/js/asynctask.js:331
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr "閉じる"
@@ -645,8 +645,6 @@ msgid ""
"Your color has insufficient contrast to white. Accessibility of your site "
"will be impacted."
msgstr ""
"あなたの色は白に対して十分なコントラストがありません。サイトのアクセシビリ"
"ティに影響します。"
#: pretix/static/pretixcontrol/js/ui/main.js:417
#: pretix/static/pretixcontrol/js/ui/main.js:437
@@ -699,7 +697,7 @@ msgstr "その他"
#: pretix/static/pretixcontrol/js/ui/question.js:81
msgid "Count"
msgstr "カウント"
msgstr "総数"
#: pretix/static/pretixcontrol/js/ui/subevent.js:111
msgid "(one more date)"
@@ -721,7 +719,7 @@ 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."
@@ -760,7 +758,7 @@ msgstr "%(currency)s %(amount)s が払い戻されます"
msgid "Please enter the amount the organizer can keep."
msgstr "主催者が留保する料金を入力してください。"
#: pretix/static/pretixpresale/js/ui/main.js:564
#: pretix/static/pretixpresale/js/ui/main.js:554
msgid "Your local time:"
msgstr "現地時間:"
@@ -786,12 +784,12 @@ 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"
@@ -976,7 +974,7 @@ 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"
@@ -999,14 +997,17 @@ msgid "Close"
msgstr "閉じる"
#: pretix/static/pretixpresale/js/widget/widget.js:62
#, fuzzy
#| msgctxt "widget"
#| msgid "Resume checkout"
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"

Some files were not shown because too many files have changed in this diff Show More