Compare commits

..

1 Commits

Author SHA1 Message Date
Raphael Michel
bbdcf343f5 Outgoing mail: Decode unicode in From headers 2026-01-30 13:43:45 +01:00
48 changed files with 5298 additions and 5211 deletions

View File

@@ -60,9 +60,6 @@ The following values for ``action_types`` are valid with pretix core:
* ``pretix.event.added``
* ``pretix.event.changed``
* ``pretix.event.deleted``
* ``pretix.giftcards.created``
* ``pretix.giftcards.modified``
* ``pretix.giftcards.transaction.*``
* ``pretix.voucher.added``
* ``pretix.voucher.changed``
* ``pretix.voucher.deleted``

View File

@@ -1,6 +1,6 @@
sphinx==9.1.*
sphinx-rtd-theme~=3.1.0
sphinxcontrib-httpdomain~=2.0.0
sphinxcontrib-httpdomain~=1.8.1
sphinxcontrib-images~=1.0.1
sphinxcontrib-jquery~=4.1
sphinxcontrib-spelling~=8.0.2

View File

@@ -1,7 +1,7 @@
-e ../
sphinx==9.1.*
sphinx-rtd-theme~=3.1.0
sphinxcontrib-httpdomain~=2.0.0
sphinxcontrib-httpdomain~=1.8.1
sphinxcontrib-images~=1.0.1
sphinxcontrib-jquery~=4.1
sphinxcontrib-spelling~=8.0.2

View File

@@ -33,7 +33,7 @@ dependencies = [
"celery==5.6.*",
"chardet==5.2.*",
"cryptography>=44.0.0",
"css-inline==0.20.*",
"css-inline==0.19.*",
"defusedcsv>=1.1.0",
"dnspython==2.*",
"Django[argon2]==4.2.*,>=4.2.26",
@@ -65,7 +65,7 @@ dependencies = [
"kombu==5.6.*",
"libsass==0.23.*",
"lxml",
"markdown==3.10.2", # 3.3.5 requires importlib-metadata>=4.4, but django-bootstrap3 requires importlib-metadata<3.
"markdown==3.10.1", # 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.*",
@@ -73,7 +73,7 @@ dependencies = [
"packaging",
"paypalrestsdk==1.13.*",
"paypal-checkout-serversdk==1.0.*",
"PyJWT==2.11.*",
"PyJWT==2.10.*",
"phonenumberslite==9.0.*",
"Pillow==12.1.*",
"pretix-plugin-build",
@@ -92,7 +92,7 @@ dependencies = [
"redis==7.1.*",
"reportlab==4.4.*",
"requests==2.32.*",
"sentry-sdk==2.52.*",
"sentry-sdk==2.51.*",
"sepaxml==2.7.*",
"stripe==7.9.*",
"text-unidecode==1.*",

View File

@@ -249,17 +249,12 @@ class GiftCardViewSet(viewsets.ModelViewSet):
def perform_create(self, serializer):
value = serializer.validated_data.pop('value')
inst = serializer.save(issuer=self.request.organizer)
inst.log_action(
action='pretix.giftcards.created',
user=self.request.user,
auth=self.request.auth,
)
inst.transactions.create(value=value, acceptor=self.request.organizer)
inst.log_action(
action='pretix.giftcards.transaction.manual',
'pretix.giftcards.transaction.manual',
user=self.request.user,
auth=self.request.auth,
data=merge_dicts(self.request.data, {'id': inst.pk, 'acceptor_id': self.request.organizer.id})
data=merge_dicts(self.request.data, {'id': inst.pk})
)
@transaction.atomic()
@@ -274,7 +269,7 @@ class GiftCardViewSet(viewsets.ModelViewSet):
inst = serializer.save(secret=serializer.instance.secret, currency=serializer.instance.currency,
testmode=serializer.instance.testmode)
inst.log_action(
action='pretix.giftcards.modified',
'pretix.giftcards.modified',
user=self.request.user,
auth=self.request.auth,
data=self.request.data,
@@ -287,10 +282,10 @@ class GiftCardViewSet(viewsets.ModelViewSet):
diff = value - old_value
inst.transactions.create(value=diff, acceptor=self.request.organizer)
inst.log_action(
action='pretix.giftcards.transaction.manual',
'pretix.giftcards.transaction.manual',
user=self.request.user,
auth=self.request.auth,
data={'value': diff, 'acceptor_id': self.request.organizer.id}
data={'value': diff}
)
return inst
@@ -314,14 +309,10 @@ class GiftCardViewSet(viewsets.ModelViewSet):
}, status=status.HTTP_409_CONFLICT)
gc.transactions.create(value=value, text=text, info=info, acceptor=self.request.organizer)
gc.log_action(
action='pretix.giftcards.transaction.manual',
'pretix.giftcards.transaction.manual',
user=self.request.user,
auth=self.request.auth,
data={
'value': value,
'text': text,
'acceptor_id': self.request.organizer.id
}
data={'value': value, 'text': text}
)
return Response(GiftCardSerializer(gc, context=self.get_serializer_context()).data, status=status.HTTP_200_OK)

View File

@@ -174,35 +174,6 @@ class ParametrizedEventWebhookEvent(ParametrizedWebhookEvent):
}
class ParametrizedGiftcardWebhookEvent(ParametrizedWebhookEvent):
def build_payload(self, logentry: LogEntry):
giftcard = logentry.content_object
if not giftcard:
return None
return {
'notification_id': logentry.pk,
'issuer_id': logentry.organizer_id,
'giftcard': giftcard.pk,
'action': logentry.action_type,
}
class ParametrizedGiftcardTransactionWebhookEvent(ParametrizedWebhookEvent):
def build_payload(self, logentry: LogEntry):
giftcard = logentry.content_object
if not giftcard:
return None
return {
'notification_id': logentry.pk,
'issuer_id': logentry.organizer_id,
'acceptor_id': logentry.parsed_data.get('acceptor_id'),
'giftcard': giftcard.pk,
'action': logentry.action_type,
}
class ParametrizedVoucherWebhookEvent(ParametrizedWebhookEvent):
def build_payload(self, logentry: LogEntry):
@@ -462,18 +433,6 @@ def register_default_webhook_events(sender, **kwargs):
'pretix.customer.anonymized',
_('Customer account anonymized'),
),
ParametrizedGiftcardWebhookEvent(
'pretix.giftcards.created',
_('Gift card added'),
),
ParametrizedGiftcardWebhookEvent(
'pretix.giftcards.modified',
_('Gift card modified'),
),
ParametrizedGiftcardTransactionWebhookEvent(
'pretix.giftcards.transaction.*',
_('Gift card used in transcation'),
)
)

View File

@@ -890,18 +890,18 @@ class BaseQuestionsForm(forms.Form):
if not help_text:
if q.valid_date_min and q.valid_date_max:
help_text = format_lazy(
_('Please enter a date between {min} and {max}.'),
'Please enter a date between {min} and {max}.',
min=date_format(q.valid_date_min, "SHORT_DATE_FORMAT"),
max=date_format(q.valid_date_max, "SHORT_DATE_FORMAT"),
)
elif q.valid_date_min:
help_text = format_lazy(
_('Please enter a date no earlier than {min}.'),
'Please enter a date no earlier than {min}.',
min=date_format(q.valid_date_min, "SHORT_DATE_FORMAT"),
)
elif q.valid_date_max:
help_text = format_lazy(
_('Please enter a date no later than {max}.'),
'Please enter a date no later than {max}.',
max=date_format(q.valid_date_max, "SHORT_DATE_FORMAT"),
)
if initial and initial.answer:
@@ -939,18 +939,18 @@ class BaseQuestionsForm(forms.Form):
if not help_text:
if q.valid_datetime_min and q.valid_datetime_max:
help_text = format_lazy(
_('Please enter a date and time between {min} and {max}.'),
'Please enter a date and time between {min} and {max}.',
min=date_format(q.valid_datetime_min, "SHORT_DATETIME_FORMAT"),
max=date_format(q.valid_datetime_max, "SHORT_DATETIME_FORMAT"),
)
elif q.valid_datetime_min:
help_text = format_lazy(
_('Please enter a date and time no earlier than {min}.'),
'Please enter a date and time no earlier than {min}.',
min=date_format(q.valid_datetime_min, "SHORT_DATETIME_FORMAT"),
)
elif q.valid_datetime_max:
help_text = format_lazy(
_('Please enter a date and time no later than {max}.'),
'Please enter a date and time no later than {max}.',
max=date_format(q.valid_datetime_max, "SHORT_DATETIME_FORMAT"),
)

View File

@@ -21,7 +21,6 @@
#
from typing import Optional
from django.utils.translation import gettext_lazy as _
from django_countries.fields import Country
from pretix.base.models import Invoice, InvoiceAddress
@@ -107,22 +106,6 @@ class TransmissionType:
def transmission_info_to_form_data(self, transmission_info: dict) -> dict:
return transmission_info
def describe_info(self, transmission_info: dict, country: Country, is_business: bool):
form_data = self.transmission_info_to_form_data(transmission_info)
data = []
visible_field_keys = self.invoice_address_form_fields_visible(country, is_business)
for k, f in self.invoice_address_form_fields.items():
if k not in visible_field_keys:
continue
v = form_data.get(k)
if v is True:
v = _("Yes")
elif v is False:
v = _("No")
if v:
data.append((f.label, v))
return data
def pdf_watermark(self) -> Optional[str]:
"""
Return a watermark that should be rendered across the PDF file.

View File

@@ -294,28 +294,14 @@ def metric_values():
channel = app.broker_connection().channel()
if hasattr(channel, 'client') and channel.client is not None:
client = channel.client
priority_steps = settings.CELERY_BROKER_TRANSPORT_OPTIONS.get("priority_steps", [0])
sep = settings.CELERY_BROKER_TRANSPORT_OPTIONS.get("sep", ":")
for q in settings.CELERY_TASK_QUEUES:
queue_lengths = []
queue_delays = []
for prio in priority_steps:
if prio:
qname = f"{q.name}{sep}{prio}"
else:
qname = q.name
queue_length = client.llen(qname)
queue_lengths.append(queue_length)
oldest_queue_item = client.lindex(qname, -1)
if oldest_queue_item:
ldata = json.loads(oldest_queue_item)
oldest_item_age = time.time() - ldata.get('created', 0)
queue_delays.append(oldest_item_age)
metrics['pretix_celery_tasks_queued_count']['{queue="%s"}' % q.name] = sum(queue_lengths)
if queue_delays:
metrics['pretix_celery_tasks_queued_age_seconds']['{queue="%s"}' % q.name] = max(queue_delays)
llen = client.llen(q.name)
lfirst = client.lindex(q.name, -1)
metrics['pretix_celery_tasks_queued_count']['{queue="%s"}' % q.name] = llen
if lfirst:
ldata = json.loads(lfirst)
dt = time.time() - ldata.get('created', 0)
metrics['pretix_celery_tasks_queued_age_seconds']['{queue="%s"}' % q.name] = dt
else:
metrics['pretix_celery_tasks_queued_age_seconds']['{queue="%s"}' % q.name] = 0

View File

@@ -130,8 +130,6 @@ class LoggingMixin:
organizer_id = self.event.organizer_id
elif hasattr(self, 'organizer_id'):
organizer_id = self.organizer_id
elif hasattr(self, 'issuer_id'):
organizer_id = self.issuer_id
if user and not user.is_authenticated:
user = None

View File

@@ -40,7 +40,6 @@ from i18nfield.fields import I18nCharField
from phonenumber_field.modelfields import PhoneNumberField
from pretix.base.banlist import banned
from pretix.base.i18n import language
from pretix.base.models.base import LoggedModel
from pretix.base.models.fields import MultiStringField
from pretix.base.models.giftcards import GiftCardTransaction
@@ -165,28 +164,6 @@ class Customer(LoggedModel):
self.attendee_profiles.all().delete()
self.invoice_addresses.all().delete()
def send_security_notice(self, message, email=None):
from pretix.base.services.mail import SendMailException, mail
from pretix.multidomain.urlreverse import build_absolute_uri
try:
with language(self.locale):
mail(
email or self.email,
self.organizer.settings.mail_subject_customer_security_notice,
self.organizer.settings.mail_text_customer_security_notice,
{
**self.get_email_context(),
'message': str(message),
'url': build_absolute_uri(self.organizer, 'presale:organizer.customer.index')
},
customer=self,
organizer=self.organizer,
locale=self.locale
)
except SendMailException:
pass # Already logged
@scopes_disabled()
def assign_identifier(self):
charset = list('ABCDEFGHJKLMNPQRSTUVWXYZ23456789')

View File

@@ -3507,10 +3507,18 @@ class InvoiceAddress(models.Model):
def describe_transmission(self):
from pretix.base.invoicing.transmission import transmission_types
data = []
t, __ = transmission_types.get(identifier=self.transmission_type)
data.append((_("Transmission type"), t.public_name))
if self.transmission_info:
data += t.describe_info(self.transmission_info, self.country, self.is_business)
form_data = t.transmission_info_to_form_data(self.transmission_info or {})
for k, f in t.invoice_address_form_fields.items():
v = form_data.get(k)
if v is True:
v = _("Yes")
elif v is False:
v = _("No")
if v:
data.append((f.label, v))
return data

View File

@@ -1231,8 +1231,8 @@ class ManualPayment(BasePaymentProvider):
def is_allowed(self, request: HttpRequest, total: Decimal=None):
return 'pretix.plugins.manualpayment' in self.event.plugins and super().is_allowed(request, total)
def order_change_allowed(self, order: Order, request=None):
return 'pretix.plugins.manualpayment' in self.event.plugins and super().order_change_allowed(order, request)
def order_change_allowed(self, order: Order):
return 'pretix.plugins.manualpayment' in self.event.plugins and super().order_change_allowed(order)
@property
def public_name(self):
@@ -1646,13 +1646,6 @@ class GiftCardPayment(BasePaymentProvider):
'transaction_id': trans.pk,
}
payment.confirm(send_mail=not is_early_special_case, generate_invoice=not is_early_special_case)
gc.log_action(
action='pretix.giftcards.transaction.payment',
data={
'value': trans.value,
'acceptor_id': self.event.organizer.id
}
)
except PaymentException as e:
payment.fail(info={'error': str(e)})
raise e
@@ -1677,14 +1670,6 @@ class GiftCardPayment(BasePaymentProvider):
'transaction_id': trans.pk,
}
refund.done()
gc.log_action(
action='pretix.giftcards.transaction.refund',
data={
'value': refund.amount,
'acceptor_id': self.event.organizer.id,
'text': refund.comment,
}
)
@receiver(register_payment_providers, dispatch_uid="payment_free")

View File

@@ -65,7 +65,7 @@ def get_all_plugins(*, event=None, organizer=None) -> List[type]:
if app.name in settings.PRETIX_PLUGINS_EXCLUDE:
continue
level = getattr(meta, "level", PLUGIN_LEVEL_EVENT)
level = getattr(app, "level", PLUGIN_LEVEL_EVENT)
if level == PLUGIN_LEVEL_EVENT:
if event and hasattr(app, 'is_available'):
if not app.is_available(event):

View File

@@ -321,7 +321,7 @@ def mail(email: Union[str, Sequence[str]], subject: str, template: Union[str, La
body_plain=body_plain,
body_html=body_html,
sender=sender,
headers=headers or {},
headers=headers,
should_attach_tickets=attach_tickets,
should_attach_ical=attach_ical,
should_attach_other_files=attach_other_files or [],
@@ -519,7 +519,6 @@ def mail_send_task(self, **kwargs) -> bool:
)
except InvoiceAddress.DoesNotExist:
pass
expected_recipients = {e.lower() for e in expected_recipients if e}
if any(t in expected_recipients for t in outgoing_mail.to):
invoices_to_mark_transmitted.append(inv)
@@ -764,7 +763,7 @@ def mail_send(to: List[str], subject: str, body: str, html: Optional[str], sende
body_plain=body,
body_html=html,
sender=sender,
headers=headers or {},
headers=headers,
should_attach_tickets=attach_tickets,
should_attach_ical=attach_ical,
should_attach_other_files=attach_other_files or [],

View File

@@ -247,15 +247,6 @@ def reactivate_order(order: Order, force: bool=False, user: User=None, auth=None
for gc in position.issued_gift_cards.all():
gc = GiftCard.objects.select_for_update(of=OF_SELF).get(pk=gc.pk)
gc.transactions.create(value=position.price, order=order, acceptor=order.event.organizer)
gc.log_action(
action='pretix.giftcards.transaction.manual',
user=user,
auth=auth,
data={
'value': position.price,
'acceptor_id': order.event.organizer.id
}
)
break
for m in position.granted_memberships.all():
@@ -557,14 +548,6 @@ def _cancel_order(order, user=None, send_mail: bool=True, api_token=None, device
)
else:
gc.transactions.create(value=-position.price, order=order, acceptor=order.event.organizer)
gc.log_action(
action='pretix.giftcards.transaction.manual',
user=user,
data={
'value': -position.price,
'acceptor_id': order.event.organizer.id,
}
)
for m in position.granted_memberships.all():
m.canceled = True
@@ -2451,15 +2434,6 @@ class OrderChangeManager:
))
else:
gc.transactions.create(value=-position.price, order=self.order, acceptor=self.order.event.organizer)
gc.log_action(
action='pretix.giftcards.transaction.manual',
user=self.user,
auth=self.auth,
data={
'value': -position.price,
'acceptor_id': self.order.event.organizer.id
}
)
for m in position.granted_memberships.with_usages().all():
m.canceled = True
@@ -2477,15 +2451,6 @@ class OrderChangeManager:
))
else:
gc.transactions.create(value=-opa.position.price, order=self.order, acceptor=self.order.event.organizer)
gc.log_action(
action='pretix.giftcards.transaction.manual',
user=self.user,
auth=self.auth,
data={
'value': -opa.position.price,
'acceptor_id': self.order.event.organizer.id
}
)
for m in opa.granted_memberships.with_usages().all():
m.canceled = True
@@ -3154,10 +3119,7 @@ def _try_auto_refund(order, auto_refund=True, manual_refund=False, allow_partial
customer=order.customer,
testmode=order.testmode
)
giftcard.log_action(
action='pretix.giftcards.created',
data={}
)
giftcard.log_action('pretix.giftcards.created', data={})
r = order.refunds.create(
order=order,
payment=None,
@@ -3444,17 +3406,7 @@ def signal_listener_issue_giftcards(sender: Event, order: Order, **kwargs):
currency=sender.currency, issued_in=p, testmode=order.testmode,
expires=sender.organizer.default_gift_card_expiry,
)
gc.log_action(
action='pretix.giftcards.created',
)
trans = gc.transactions.create(value=p.price - issued, order=order, acceptor=sender.organizer)
gc.log_action(
action='pretix.giftcards.transaction.manual',
data={
'value': trans.value,
'acceptor_id': order.event.organizer.id,
}
)
gc.transactions.create(value=p.price - issued, order=order, acceptor=sender.organizer)
any_giftcards = True
p.secret = gc.secret
p.save(update_fields=['secret'])

View File

@@ -2948,28 +2948,6 @@ If you did not request a new password, please ignore this email.
Best regards,
Your {organizer} team""")) # noqa: W291
},
'mail_subject_customer_security_notice': {
'type': LazyI18nString,
'default': LazyI18nString.from_gettext(gettext_noop("Changes to your account at {organizer}")),
},
'mail_text_customer_security_notice': {
'type': LazyI18nString,
'default': LazyI18nString.from_gettext(gettext_noop("""Hello {name},
the following change has been made to your account at {organizer}:
{message}
You can review and change your account settings here:
{url}
If this change was not performed by you, please contact us immediately.
Best regards,
Your {organizer} team""")) # noqa: W291
},
'smtp_use_custom': {

View File

@@ -95,7 +95,6 @@ class OrganizerSlugBanlistValidator(BanlistValidator):
'csp_report',
'widget',
'lead',
'scheduling',
]

View File

@@ -20,7 +20,6 @@
# <https://www.gnu.org/licenses/>.
#
import pycountry
from django.conf import settings
from django.http import JsonResponse
from django.shortcuts import get_object_or_404
from django.utils.translation import gettext, pgettext, pgettext_lazy
@@ -30,7 +29,6 @@ from django_scopes import scope
from pretix.base.addressvalidation import (
COUNTRIES_WITH_STREET_ZIPCODE_AND_CITY_REQUIRED,
)
from pretix.base.i18n import language
from pretix.base.invoicing.transmission import get_transmission_types
from pretix.base.models import Organizer
from pretix.base.models.tax import VAT_ID_COUNTRIES
@@ -91,7 +89,7 @@ def _info(cc):
}
def _address_form(request):
def address_form(request):
cc = request.GET.get("country", "DE")
info = _info(cc)
@@ -159,15 +157,4 @@ def _address_form(request):
# The help text explains that it is optional, so we want to hide that if it is required
info["vat_id"]["helptext_visible"] = False
return info
def address_form(request):
locale = request.GET.get('locale')
if locale in dict(settings.LANGUAGES):
with language(locale):
info = _address_form(request)
else:
info = _address_form(request)
return JsonResponse(info)

View File

@@ -2820,8 +2820,8 @@ class DeviceFilterForm(FilterForm):
class OutgoingMailFilterForm(FilterForm):
orders = {
'date': 'created',
'-date': '-created',
'date': 'd',
'-date': '-d',
}
query = forms.CharField(
label=_('Search email address or subject'),

View File

@@ -635,16 +635,6 @@ class MailSettingsForm(SettingsForm):
required=False,
widget=I18nMarkdownTextarea,
)
mail_subject_customer_security_notice = I18nFormField(
label=_("Subject"),
required=False,
widget=I18nTextInput,
)
mail_text_customer_security_notice = I18nFormField(
label=_("Text"),
required=False,
widget=I18nMarkdownTextarea,
)
base_context = {
'mail_text_customer_registration': ['customer', 'url'],
@@ -653,8 +643,6 @@ class MailSettingsForm(SettingsForm):
'mail_subject_customer_email_change': ['customer', 'url'],
'mail_text_customer_reset': ['customer', 'url'],
'mail_subject_customer_reset': ['customer', 'url'],
'mail_text_customer_security_notice': ['customer', 'url', 'message'],
'mail_subject_customer_security_notice': ['customer', 'url', 'message'],
}
def _get_sample_context(self, base_parameters):
@@ -668,9 +656,6 @@ class MailSettingsForm(SettingsForm):
'presale:organizer.customer.activate'
) + '?token=' + get_random_string(30)
if 'message' in base_parameters:
placeholders['message'] = _('Your password has been changed.')
if 'customer' in base_parameters:
placeholders['name'] = pgettext_lazy('person_name_sample', 'John Doe')
name_scheme = PERSON_NAME_SCHEMES[self.organizer.settings.name_scheme]

View File

@@ -801,8 +801,6 @@ class CoreUserImpersonatedLogEntryType(UserImpersonatedLogEntryType):
'pretix.giftcards.created': _('The gift card has been created.'),
'pretix.giftcards.modified': _('The gift card has been changed.'),
'pretix.giftcards.transaction.manual': _('A manual transaction has been performed.'),
'pretix.giftcards.transaction.payment': _('A payment has been performed.'),
'pretix.giftcards.transaction.refund': _('A refund has been performed. '),
'pretix.team.token.created': _('The token "{name}" has been created.'),
'pretix.team.token.deleted': _('The token "{name}" has been revoked.'),
'pretix.event.checkin.reset': _('The check-in and print log state has been reset.')

View File

@@ -65,9 +65,6 @@
{% blocktrans asvar title_reset %}Customer account password reset{% endblocktrans %}
{% include "pretixcontrol/event/mail_settings_fragment.html" with pid="reset" title=title_reset items="mail_subject_customer_reset,mail_text_customer_reset" %}
{% blocktrans asvar title_security_notice %}Customer account security notification{% endblocktrans %}
{% include "pretixcontrol/event/mail_settings_fragment.html" with pid="security_notice" title=title_security_notice items="mail_subject_customer_security_notice,mail_text_customer_security_notice" %}
</div>
</fieldset>
</div>

View File

@@ -1226,11 +1226,7 @@ class OrderRefundView(OrderView):
customer=order.customer,
testmode=order.testmode
)
giftcard.log_action(
action='pretix.giftcards.created',
user=self.request.user,
data={}
)
giftcard.log_action('pretix.giftcards.created', user=self.request.user, data={})
refunds.append(OrderRefund(
order=order,
payment=None,

View File

@@ -1667,12 +1667,9 @@ class GiftCardAcceptanceInviteView(OrganizerDetailViewMixin, OrganizerPermission
active=False,
)
self.request.organizer.log_action(
action='pretix.giftcards.acceptance.acceptor.invited',
data={
'acceptor': form.cleaned_data['acceptor'].slug,
'issuer': self.request.organizer.slug,
'reusable_media': form.cleaned_data['reusable_media']
},
'pretix.giftcards.acceptance.acceptor.invited',
data={'acceptor': form.cleaned_data['acceptor'].slug,
'reusable_media': form.cleaned_data['reusable_media']},
user=self.request.user
)
messages.success(self.request, _('The selected organizer has been invited.'))
@@ -1708,11 +1705,8 @@ class GiftCardAcceptanceListView(OrganizerDetailViewMixin, OrganizerPermissionRe
).delete()
if done:
self.request.organizer.log_action(
action='pretix.giftcards.acceptance.acceptor.removed',
data={
'acceptor': request.POST.get("delete_acceptor"),
'issuer': self.request.organizer.slug
},
'pretix.giftcards.acceptance.acceptor.removed',
data={'acceptor': request.POST.get("delete_acceptor")},
user=request.user
)
messages.success(self.request, _('The selected connection has been removed.'))
@@ -1722,11 +1716,8 @@ class GiftCardAcceptanceListView(OrganizerDetailViewMixin, OrganizerPermissionRe
).delete()
if done:
self.request.organizer.log_action(
action='pretix.giftcards.acceptance.issuer.removed',
data={
'issuer': request.POST.get("delete_acceptor"),
'acceptor': self.request.organizer.slug
},
'pretix.giftcards.acceptance.issuer.removed',
data={'issuer': request.POST.get("delete_acceptor")},
user=request.user
)
messages.success(self.request, _('The selected connection has been removed.'))
@@ -1736,11 +1727,8 @@ class GiftCardAcceptanceListView(OrganizerDetailViewMixin, OrganizerPermissionRe
).update(active=True)
if done:
self.request.organizer.log_action(
action='pretix.giftcards.acceptance.issuer.accepted',
data={
'issuer': request.POST.get("accept_issuer"),
'acceptor': self.request.organizer.slug
},
'pretix.giftcards.acceptance.issuer.accepted',
data={'issuer': request.POST.get("accept_issuer")},
user=request.user
)
messages.success(self.request, _('The selected connection has been accepted.'))
@@ -1846,11 +1834,10 @@ class GiftCardDetailView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMi
acceptor=request.organizer,
)
self.object.log_action(
action='pretix.giftcards.transaction.manual',
'pretix.giftcards.transaction.manual',
data={
'value': value,
'text': request.POST.get('text'),
'acceptor_id': self.request.organizer.id
'text': request.POST.get('text')
},
user=self.request.user,
)
@@ -1899,23 +1886,15 @@ class GiftCardCreateView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMi
messages.success(self.request, _('The gift card has been created and can now be used.'))
form.instance.issuer = self.request.organizer
super().form_valid(form)
form.instance.log_action(
action='pretix.giftcards.created',
user=self.request.user,
form.instance.transactions.create(
acceptor=self.request.organizer,
value=form.cleaned_data['value']
)
form.instance.log_action('pretix.giftcards.created', user=self.request.user, data={})
if form.cleaned_data['value']:
form.instance.transactions.create(
acceptor=self.request.organizer,
value=form.cleaned_data['value']
)
form.instance.log_action(
action='pretix.giftcards.transaction.manual',
user=self.request.user,
data={
'value': form.cleaned_data['value'],
'acceptor_id': self.request.organizer.id
}
)
form.instance.log_action('pretix.giftcards.transaction.manual', user=self.request.user, data={
'value': form.cleaned_data['value']
})
return redirect(reverse(
'control:organizer.giftcard',
kwargs={
@@ -1943,11 +1922,7 @@ class GiftCardUpdateView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMi
def form_valid(self, form):
messages.success(self.request, _('The gift card has been changed.'))
super().form_valid(form)
form.instance.log_action(
action='pretix.giftcards.modified',
user=self.request.user,
data=dict(form.cleaned_data)
)
form.instance.log_action('pretix.giftcards.modified', user=self.request.user, data=dict(form.cleaned_data))
return redirect(reverse(
'control:organizer.giftcard',
kwargs={

View File

@@ -148,7 +148,4 @@ def pycountry_add(db, **kw):
continue
value = value.lower()
index = db.indices.setdefault(key, {})
if key in ["country_code"]:
index.setdefault(value, set()).add(obj)
else:
index[value] = obj
index.setdefault(value, set()).add(obj)

View File

@@ -4,16 +4,16 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-26 13:19+0000\n"
"PO-Revision-Date: 2026-02-03 17:12+0000\n"
"PO-Revision-Date: 2025-08-27 22:00+0000\n"
"Last-Translator: Mie Frydensbjerg <mif@aarhus.dk>\n"
"Language-Team: Danish <https://translate.pretix.eu/projects/pretix/pretix/"
"da/>\n"
"Language-Team: Danish <https://translate.pretix.eu/projects/pretix/pretix/da/"
">\n"
"Language: da\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.15.2\n"
"X-Generator: Weblate 5.13\n"
#: pretix/_base_settings.py:87
msgid "English"
@@ -35175,31 +35175,30 @@ msgid "Yes, request cancellation"
msgstr "Generér afbestilling"
#: pretix/presale/templates/pretixpresale/event/order_change_confirm.html:19
#, fuzzy
msgid "Please confirm the following changes to your order."
msgstr "Bekræft venligst følgende ændringer i din ordre."
msgstr "Kontroller venligst detaljerne nedenfor og bekræft din bestilling."
#: pretix/presale/templates/pretixpresale/event/order_giftcard.html:10
#: pretix/presale/templates/pretixpresale/event/position_giftcard.html:10
#, python-format
#, fuzzy, python-format
msgid "Gift card: %(code)s"
msgstr "Gavekort: %(code)s"
msgstr "Gavekort"
#: pretix/presale/templates/pretixpresale/event/order_modify.html:5
msgid "Modify order"
msgstr "Redigér ordre"
msgstr "Rediger bestilling"
#: pretix/presale/templates/pretixpresale/event/order_modify.html:8
#, python-format
msgid "Modify order: %(code)s"
msgstr "Rediger ordre: %(code)s"
msgstr ""
#: pretix/presale/templates/pretixpresale/event/order_modify.html:18
msgid ""
"Modifying your invoice address will not automatically generate a new "
"invoice. Please contact us if you need a new invoice."
msgstr ""
"Ændring af din fakturaadresse vil ikke automatisk generere en ny faktura. "
"Kontakt os venligst, hvis du har brug for en ny faktura."
#: pretix/presale/templates/pretixpresale/event/order_modify.html:88
#: pretix/presale/templates/pretixpresale/event/position_modify.html:49
@@ -35211,22 +35210,19 @@ msgid "Change payment method"
msgstr "Skift betalingsmetode"
#: pretix/presale/templates/pretixpresale/event/order_pay_change.html:13
#, python-format
#, fuzzy, python-format
msgid "Choose payment method: %(code)s"
msgstr "Vælg betalingsmetode: %(code)s"
msgstr "Skift betalingsmetode: %(code)s"
#: pretix/presale/templates/pretixpresale/event/order_pay_change.html:19
msgid ""
"Please note: If you change your payment method, your order total will change "
"by the amount displayed to the right of each method."
msgstr ""
"Bemærk: Hvis du ændrer din betalingsmetode, ændres din ordres samlede beløb "
"med det beløb, der vises til højre for hver metode."
#: pretix/presale/templates/pretixpresale/event/order_pay_change.html:61
msgid "There are no alternative payment providers available for this order."
msgstr ""
"Der er ingen alternative betalingsudbydere tilgængelige for denne ordre."
#: pretix/presale/templates/pretixpresale/event/order_pay_confirm.html:16
msgid "Please confirm the following payment details."
@@ -35235,7 +35231,7 @@ msgstr "Bekræft venligst følgende betalingsoplysninger."
#: pretix/presale/templates/pretixpresale/event/order_pay_confirm.html:22
#, python-format
msgid "Total: %(total)s"
msgstr "Total: %(total)s"
msgstr ""
#: pretix/presale/templates/pretixpresale/event/payment_qr_codes.html:17
msgid ""
@@ -35274,9 +35270,10 @@ msgid ""
msgstr ""
#: pretix/presale/templates/pretixpresale/event/position.html:63
#, fuzzy
msgctxt "action"
msgid "Change your ticket"
msgstr "Ændr din billet"
msgstr "Ændr pris til"
#: pretix/presale/templates/pretixpresale/event/position.html:68
msgid ""
@@ -35359,36 +35356,30 @@ msgstr "Aktiver betalingsmetode"
#: pretix/presale/templates/pretixpresale/event/voucher.html:36
#: pretix/presale/templates/pretixpresale/event/voucher_form.html:9
msgid "Voucher redemption"
msgstr "Indløsning af rabatkode"
msgstr ""
#: pretix/presale/templates/pretixpresale/event/voucher.html:20
#, fuzzy
msgid "This voucher is valid only for the following specific date and time."
msgstr "Rabatkoden er ikke gyldig for denne dato."
msgstr "Voucheren er ikke gyldig for denne dato."
#: pretix/presale/templates/pretixpresale/event/voucher.html:43
msgid ""
"For the selected date, there are currently no products available that can be "
"bought with this voucher. Please try a different date or a different voucher."
msgstr ""
"Der er i øjeblikket ingen produkter tilgængelige for den valgte dato, som "
"kan købes med denne rabatkode. Prøv venligst en anden dato eller en anden "
"rabatkode."
#: pretix/presale/templates/pretixpresale/event/voucher.html:47
msgid ""
"There are currently no products available that can be bought with this "
"voucher."
msgstr ""
"Der er i øjeblikket ingen produkter tilgængelige, der kan købes med denne "
"rabatkode."
#: pretix/presale/templates/pretixpresale/event/voucher.html:52
msgid ""
"You entered a voucher code that allows you to buy one of the following "
"products at the specified price:"
msgstr ""
"Du har indtastet en rabatkode, der giver dig mulighed for at købe et af "
"følgende produkter til den angivne pris:"
#: pretix/presale/templates/pretixpresale/event/voucher.html:112
#, python-format

View File

@@ -3,16 +3,16 @@ msgstr ""
"Project-Id-Version: HE PRETIX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-26 13:19+0000\n"
"PO-Revision-Date: 2026-02-09 21:00+0000\n"
"Last-Translator: roi belotsercovsky <rbelotsercovsky@gmail.com>\n"
"Language-Team: Hebrew <https://translate.pretix.eu/projects/pretix/pretix/"
"he/>\n"
"PO-Revision-Date: 2025-05-21 10:46+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"Language-Team: Hebrew <https://translate.pretix.eu/projects/pretix/pretix/he/"
">\n"
"Language: he\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Weblate 5.15.2\n"
"X-Generator: Weblate 5.11.4\n"
#: pretix/_base_settings.py:87
msgid "English"
@@ -84,7 +84,7 @@ msgstr "יוונית"
#: pretix/_base_settings.py:104
msgid "Hebrew"
msgstr "עברית"
msgstr ""
#: pretix/_base_settings.py:105
msgid "Indonesian"
@@ -140,7 +140,7 @@ msgstr "ספרדית"
#: pretix/_base_settings.py:118
msgid "Spanish (Latin America)"
msgstr "ספרדית (אמריקה הלטינית)"
msgstr ""
#: pretix/_base_settings.py:119
msgid "Turkish"
@@ -285,20 +285,28 @@ msgid "The bundled item must not have bundles on its own."
msgstr "הפריט המצורף לא יכול להחזיק חבילות בעצמו."
#: pretix/api/serializers/item.py:235
#, fuzzy
#| msgid "The payment is too late to be accepted."
msgid "The program start must not be empty."
msgstr "תחילת התוכנית לא יכולה להיות ריקה."
msgstr "התשלום התקבל מאוחר מדי."
#: pretix/api/serializers/item.py:239
#, fuzzy
#| msgid "The payment is too late to be accepted."
msgid "The program end must not be empty."
msgstr "סוף התוכנית לא יכול להיות ריק."
msgstr "התשלום התקבל מאוחר מדי."
#: pretix/api/serializers/item.py:242 pretix/base/models/items.py:2322
#, fuzzy
#| msgid "The maximum date must not be before the minimum value."
msgid "The program end must not be before the program start."
msgstr "סוף התוכנית לא יכול להיות לפני תחילת התוכנית."
msgstr "התאריך המרבי לא יכול להיות לפני הערך המינימלי."
#: pretix/api/serializers/item.py:247 pretix/base/models/items.py:2316
#, fuzzy
#| msgid "You can not select a subevent if your event is not an event series."
msgid "You cannot use program times on an event series."
msgstr "לא ניתן לבחור שעות תוכניות בסדרת אירועים."
msgstr "לא ניתן לבחור תת-אירוע אם האירוע שלך אינו סדרת אירועים."
#: pretix/api/serializers/item.py:337
#, fuzzy
@@ -561,15 +569,22 @@ msgid "Event series date deleted"
msgstr "תאריך סדרת אירועים נמחק"
#: pretix/api/webhooks.py:375
#, fuzzy
#| msgid "Product name"
msgid "Product changed"
msgstr "המוצר השתנה"
msgstr "שם המוצר"
#: pretix/api/webhooks.py:376
#, fuzzy
#| msgid ""
#| "Product changed (including product added or deleted and including changes "
#| "to nested objects like variations or bundles)"
msgid ""
"This includes product added or deleted and changes to nested objects like "
"variations or bundles."
msgstr ""
"זה כולל מוצר שהוסף או נמחק ושונה לאובייקטים מקוננים כמו וריאציות או באנדלים"
"המוצר שונה (כולל הוספה או מחיקה של מוצר ושינויים לאובייקטים מקוננים כמו "
"וריאציות או חבילות)"
#: pretix/api/webhooks.py:381
msgid "Shop taken live"
@@ -604,22 +619,28 @@ msgid "Waiting list entry received voucher"
msgstr "רשומת רשימת המתנה קיבלה שובר"
#: pretix/api/webhooks.py:413
#, fuzzy
#| msgid "Voucher code"
msgid "Voucher added"
msgstr "קוד שובר הוסף"
msgstr "קוד שובר"
#: pretix/api/webhooks.py:417
#, fuzzy
#| msgid "Voucher assigned"
msgid "Voucher changed"
msgstr "שובר שונה"
msgstr "שובר הוקצה"
#: pretix/api/webhooks.py:418
msgid ""
"Only includes explicit changes to the voucher, not e.g. an increase of the "
"number of redemptions."
msgstr "כולל רק שינויים מפורשים לשובר, לא למשל העלאת מספר המימושים."
msgstr ""
#: pretix/api/webhooks.py:422
#, fuzzy
#| msgid "Voucher redeemed"
msgid "Voucher deleted"
msgstr "שובר נמחק"
msgstr "שובר מומש"
#: pretix/api/webhooks.py:426
msgid "Customer account created"
@@ -790,7 +811,7 @@ msgstr ""
msgid ""
"Field \"{field_name}\" does not exist. Please check your {provider_name} "
"settings."
msgstr "שדה \"{field_name}\" לא קיים. נא לבדוק את הגדרות {provider_name}."
msgstr ""
#: pretix/base/datasync/datasync.py:271
#, python-brace-format
@@ -798,23 +819,25 @@ msgid ""
"Field \"{field_name}\" requires {required_input}, but only got "
"{available_inputs}. Please check your {provider_name} settings."
msgstr ""
"שדה \"{field_name}\" דורש {required_input}, אבל קיבל רק {available_inputs}"
". נא לבדוק הגדרות {provider_name}."
#: pretix/base/datasync/datasync.py:282
#, python-brace-format
msgid ""
"Please update value mapping for field \"{field_name}\" - option \"{val}\" "
"not assigned"
msgstr "נא לעדכן מיפוי ערכים לשדה \"{field_name}\" - אפשרות \"{val}\" לא מוקצה"
msgstr ""
#: pretix/base/datasync/sourcefields.py:128
#, fuzzy
#| msgid "Order positions"
msgid "Order position details"
msgstr "פרטי מצב הזמנה"
msgstr "פריטי הזמנה"
#: pretix/base/datasync/sourcefields.py:129
#, fuzzy
#| msgid "Attendee email"
msgid "Attendee details"
msgstr "פרטי משתתף"
msgstr "דוא\"ל משתתף"
#: pretix/base/datasync/sourcefields.py:130 pretix/base/exporters/answers.py:66
#: pretix/base/models/items.py:1767 pretix/control/navigation.py:172
@@ -824,8 +847,10 @@ msgid "Questions"
msgstr "שאלות"
#: pretix/base/datasync/sourcefields.py:131
#, fuzzy
#| msgid "Product data"
msgid "Product details"
msgstr "פרטי מוצר"
msgstr "נתוני מוצר"
#: pretix/base/datasync/sourcefields.py:132
#: pretix/control/templates/pretixcontrol/event/settings.html:279
@@ -850,13 +875,17 @@ msgid "Invoice address"
msgstr "כתובת לחשבונית"
#: pretix/base/datasync/sourcefields.py:134
#, fuzzy
#| msgid "Meta information"
msgid "Event information"
msgstr "מידע על האירוע"
msgstr "מידע מטא"
#: pretix/base/datasync/sourcefields.py:135
#, fuzzy
#| msgid "Send recovery information"
msgctxt "subevent"
msgid "Event or date information"
msgstr "מידע על האירוע או התאריך"
msgstr "שלח פרטי שחזור"
#: pretix/base/datasync/sourcefields.py:175
#: pretix/base/exporters/orderlist.py:638
@@ -881,8 +910,10 @@ msgstr "שם משתתף"
#: pretix/base/datasync/sourcefields.py:187
#: pretix/base/datasync/sourcefields.py:604
#: pretix/base/datasync/sourcefields.py:628
#, fuzzy
#| msgid "Attendee name"
msgid "Attendee"
msgstr "משתתף"
msgstr "שם משתתף"
#: pretix/base/datasync/sourcefields.py:207
#: pretix/base/exporters/orderlist.py:645 pretix/base/forms/questions.py:693
@@ -896,8 +927,10 @@ msgid "Attendee email"
msgstr "דוא\"ל משתתף"
#: pretix/base/datasync/sourcefields.py:219
#, fuzzy
#| msgid "Attendee email"
msgid "Attendee or order email"
msgstr "דוא\"ל משתתף או הזמנה"
msgstr "דוא\"ל משתתף"
#: pretix/base/datasync/sourcefields.py:232
#: pretix/base/exporters/orderlist.py:646 pretix/base/pdf.py:188
@@ -910,8 +943,10 @@ msgid "Attendee company"
msgstr "חברת המשתתף"
#: pretix/base/datasync/sourcefields.py:241
#, fuzzy
#| msgid "Attendee address"
msgid "Attendee address street"
msgstr "רחוב המשתתף"
msgstr "כתובת המשתתף"
#: pretix/base/datasync/sourcefields.py:250
#, fuzzy
@@ -920,12 +955,16 @@ msgid "Attendee address ZIP code"
msgstr "מיקוד המשתתף"
#: pretix/base/datasync/sourcefields.py:259
#, fuzzy
#| msgid "Attendee address"
msgid "Attendee address city"
msgstr "עיר המשתתף"
msgstr "כתובת המשתתף"
#: pretix/base/datasync/sourcefields.py:268
#, fuzzy
#| msgid "Attendee address"
msgid "Attendee address country"
msgstr "מדינת המשתתף"
msgstr "כתובת המשתתף"
#: pretix/base/datasync/sourcefields.py:279
#: pretix/base/exporters/orderlist.py:687 pretix/base/pdf.py:346
@@ -961,12 +1000,16 @@ msgid "Invoice address country"
msgstr "מדינת כתובת לחשבונית"
#: pretix/base/datasync/sourcefields.py:353
#, fuzzy
#| msgid "Order details"
msgid "Order email"
msgstr "דוא\"ל הזמנה"
msgstr "פרטי הזמנה"
#: pretix/base/datasync/sourcefields.py:362
#, fuzzy
#| msgid "Organizer domain"
msgid "Order email domain"
msgstr "דומיין מייל הזמנה"
msgstr "דומיין מארגן"
#: pretix/base/datasync/sourcefields.py:371
#: pretix/base/exporters/invoices.py:203 pretix/base/exporters/invoices.py:332
@@ -998,8 +1041,10 @@ msgid "Order code"
msgstr "קוד הזמנה"
#: pretix/base/datasync/sourcefields.py:380
#, fuzzy
#| msgid "End order date"
msgid "Event and order code"
msgstr "אירוע וקוד הזמנה"
msgstr "תאריך סיום הזמנה"
#: pretix/base/datasync/sourcefields.py:389
#: pretix/base/exporters/orderlist.py:283 pretix/base/notifications.py:201
@@ -1024,12 +1069,16 @@ msgid "Product ID"
msgstr "מזהה מוצר"
#: pretix/base/datasync/sourcefields.py:419
#, fuzzy
#| msgid "Non-admission product"
msgid "Product is admission product"
msgstr "מוצר שהינו כרטיס כניסה"
msgstr "מוצר שאינו עבור כניסה"
#: pretix/base/datasync/sourcefields.py:428
#, fuzzy
#| msgid "Event short name"
msgid "Event short form"
msgstr "טופס האירוע המקוצר"
msgstr "שם האירוע המקוצר"
#: pretix/base/datasync/sourcefields.py:437 pretix/base/exporters/events.py:57
#: pretix/base/exporters/orderlist.py:283
@@ -1072,8 +1121,10 @@ msgid "Order code and position number"
msgstr "קוד הזמנה ומספר פריט"
#: pretix/base/datasync/sourcefields.py:482
#, fuzzy
#| msgid "Ticket page"
msgid "Ticket price"
msgstr "מחיר כרטיס"
msgstr "דף כרטיס"
#: pretix/base/datasync/sourcefields.py:491 pretix/base/notifications.py:204
#: pretix/control/forms/filter.py:220 pretix/control/forms/filter.py:1242
@@ -1082,16 +1133,22 @@ msgid "Order status"
msgstr "סטטוס הזמנה"
#: pretix/base/datasync/sourcefields.py:500
#, fuzzy
#| msgid "Device status"
msgid "Ticket status"
msgstr "סטטוס כרטיס"
msgstr "סטטוס מכשיר"
#: pretix/base/datasync/sourcefields.py:509
#, fuzzy
#| msgid "Purchase date and time"
msgid "Order date and time"
msgstr "תאריך ושעת ההזמנה"
msgstr "תאריך ושעת הקנייה"
#: pretix/base/datasync/sourcefields.py:518
#, fuzzy
#| msgid "Printing date and time"
msgid "Payment date and time"
msgstr "תאריך ושעת התשלום"
msgstr "תאריך ושעת ההדפסה"
#: pretix/base/datasync/sourcefields.py:527
#: pretix/base/exporters/orderlist.py:292
@@ -1102,27 +1159,35 @@ msgid "Order locale"
msgstr "שפת הזמנה"
#: pretix/base/datasync/sourcefields.py:536
#, fuzzy
#| msgid "Order position"
msgid "Order position ID"
msgstr "מספר עמדת הזמנה"
msgstr "עמדת הזמנה"
#: pretix/base/datasync/sourcefields.py:545
#: pretix/base/exporters/orderlist.py:312
#, fuzzy
#| msgid "Order time"
msgid "Order link"
msgstr "קישור הזמנה"
msgstr "שעת הזמנה"
#: pretix/base/datasync/sourcefields.py:560
#, fuzzy
#| msgid "Ticket block"
msgid "Ticket link"
msgstr "קישור כרטיס"
msgstr "חסימת כרטיס"
#: pretix/base/datasync/sourcefields.py:578
#, python-brace-format
#, fuzzy, python-brace-format
#| msgid "Check-in list {val}"
msgid "Check-in datetime on list {}"
msgstr "צ'ק-אין בתאריך-זמן ברשימה {}"
msgstr "רשימת הצ'ק-אין {val}"
#: pretix/base/datasync/sourcefields.py:590
#, python-brace-format
#, fuzzy, python-brace-format
#| msgid "Question: %(name)s"
msgid "Question: {name}"
msgstr "שאלה: {name}"
msgstr "שאלה: %(name)s"
#: pretix/base/datasync/sourcefields.py:604
#: pretix/base/datasync/sourcefields.py:614 pretix/base/settings.py:3691
@@ -2263,8 +2328,6 @@ msgid ""
"contain at least one position of this product. The order totals etc. still "
"include all products contained in the order."
msgstr ""
"אם אף אחד מהם לא נבחר, כל המוצרים כלולים. הפקודות נכללות אם הן כוללות לפחות "
"עמדה אחת של המוצר. סך ההזמנות וכו'. עדיין כולל את כל המוצרים הכלולים בהזמנה."
#: pretix/base/exporters/orderlist.py:283
#: pretix/base/exporters/orderlist.py:478
@@ -2528,8 +2591,10 @@ msgid "Voucher"
msgstr "שובר"
#: pretix/base/exporters/orderlist.py:653
#, fuzzy
#| msgid "Voucher code used:"
msgid "Voucher budget usage"
msgstr "שימוש בתקציב השוברים"
msgstr "השתמש בקוד שובר:"
#: pretix/base/exporters/orderlist.py:654
msgid "Pseudonymization ID"
@@ -2621,8 +2686,10 @@ msgid "Check-in lists"
msgstr "רשימות צ'ק-אין"
#: pretix/base/exporters/orderlist.py:706
#, fuzzy
#| msgid "Resend order link"
msgid "Position order link"
msgstr "עמדת קישור הזמנה"
msgstr "שלח את קישור ההזמנה שוב"
#: pretix/base/exporters/orderlist.py:876
msgid "Order transaction data"
@@ -3259,8 +3326,10 @@ msgid "Repeat password"
msgstr "חזור על הסיסמה"
#: pretix/base/forms/auth.py:220 pretix/base/forms/user.py:99
#, fuzzy
#| msgid "Email address"
msgid "Your email address"
msgstr "כתובת הדוא\"ל שלך"
msgstr "כתובת דוא\"ל"
#: pretix/base/forms/auth.py:327 pretix/control/forms/orders.py:1041
#: pretix/control/templates/pretixcontrol/shredder/download.html:53
@@ -3341,12 +3410,14 @@ msgstr ""
"למדינתך ומדינת המוכר."
#: pretix/base/forms/questions.py:1185
#, fuzzy
#| msgid "Cancellation requested"
msgid "No invoice requested"
msgstr "לא התבקשה חשבונית"
msgstr "בקשת ביטול"
#: pretix/base/forms/questions.py:1187
msgid "Invoice transmission method"
msgstr "שיטת שידור חשבונית"
msgstr ""
#: pretix/base/forms/questions.py:1333
msgid "You need to provide a company name."
@@ -3360,24 +3431,25 @@ msgstr "עליך לספק את שמך."
msgid ""
"If you enter an invoice address, you also need to select an invoice "
"transmission method."
msgstr "אם אתה מזין כתובת לחשבונית, עליך גם לבחור שיטת שידור חשבונית."
msgstr ""
#: pretix/base/forms/questions.py:1403
#, fuzzy
#| msgid "The selected media type is not enabled in your organizer settings."
msgid ""
"The selected transmission type is not available in your country or for your "
"type of address."
msgstr "סוג השידור שנבחר אינו זמין במדינתך או בסוג הכתובת שבחרת."
msgstr "סוג המדיה שנבחר אינו מופעל בהגדרות הארגון שלכם."
#: pretix/base/forms/questions.py:1412
msgid ""
"The selected type of invoice transmission requires a field that is currently "
"not available, please reach out to the organizer."
msgstr ""
"סוג שידור החשבונית שנבחר דורש שדה שאינו זמין כרגע, נא ליצור קשר עם המארגן."
#: pretix/base/forms/questions.py:1416
msgid "This field is required for the selected type of invoice transmission."
msgstr "שדה זה הינו חובה לסוג שידור החשבונית שנבחר."
msgstr ""
#: pretix/base/forms/user.py:54 pretix/control/forms/organizer.py:458
#: pretix/control/forms/users.py:58
@@ -3393,8 +3465,10 @@ msgstr ""
"באזור הזמן של האירוע עצמו."
#: pretix/base/forms/user.py:77
#, fuzzy
#| msgid "Attendee email address"
msgid "Change email address"
msgstr "שינוי כתובת דוא\"ל"
msgstr "כתובת דוא\"ל של המשתתף"
#: pretix/base/forms/user.py:83
msgid "Device name"
@@ -3442,12 +3516,16 @@ msgid ""
msgstr "כבר קיים חשבון הקשור לכתובת האימייל הזו. אנא בחר כתובת אחרת."
#: pretix/base/forms/user.py:179
#, fuzzy
#| msgid "Email address"
msgid "Old email address"
msgstr "כתובת דוא\"ל ישנה"
msgstr "כתובת דוא\"ל"
#: pretix/base/forms/user.py:180
#, fuzzy
#| msgid "Email address"
msgid "New email address"
msgstr "כתובת דוא\"ל חדשה"
msgstr "כתובת דוא\"ל"
#: pretix/base/forms/validators.py:51
msgid ""
@@ -3491,47 +3569,60 @@ msgid "Individual customer"
msgstr "לקוח פרטי"
#: pretix/base/invoicing/email.py:50
#, fuzzy
#| msgid ""
#| "Please additionally send my invoice directly to our accounting department"
msgid "Email invoice directly to accounting department"
msgstr "שלח חשבונית בדוא\"ל ישירות למחלקת הנהלת חשבונות."
msgstr "אנא שלח בנוסף את החשבונית ישירות למחלקת הנהלת החשבונות שלנו"
#: pretix/base/invoicing/email.py:51
#, fuzzy
#| msgid "The invoice was sent to the designated email address."
msgid ""
"If not selected, the invoice will be sent to you using the email address "
"listed above."
msgstr "אם לא ייבחר, בחשבונית תישלח לכתובת הדוא\"ל המצויינת מעלה."
msgstr "החשבונית נשלחה לכתובת הדוא\"ל שהוגדרה."
#: pretix/base/invoicing/email.py:55
#, fuzzy
#| msgid "Email address verified"
msgid "Email address for invoice"
msgstr "כתובת דוא\"ל לחשבונית"
msgstr "כתובת דוא\"ל מאומתת"
#: pretix/base/invoicing/email.py:91
#, fuzzy
#| msgid "Preview email"
msgid "PDF via email"
msgstr "PDF באמצעות דוא\"ל"
msgstr "הצג תצוגה מקדימה של המייל"
#: pretix/base/invoicing/national.py:37
msgctxt "italian_invoice"
msgid "Italian Exchange System (SdI)"
msgstr "מערכת ההחלפה האיטלקית (SdI)"
msgstr ""
#: pretix/base/invoicing/national.py:38
msgctxt "italian_invoice"
msgid "Exchange System (SdI)"
msgstr "מערכת ההחלפה (SdI)"
msgstr ""
#: pretix/base/invoicing/national.py:51
#, fuzzy
#| msgid "Gift card code"
msgctxt "italian_invoice"
msgid "Fiscal code"
msgstr "קוד פיסקלי"
msgstr "קוד כרטיס מתנה"
#: pretix/base/invoicing/national.py:55
msgctxt "italian_invoice"
msgid "Address for certified electronic mail"
msgstr "כתובת לדואר אלקטרוני מאושר."
msgstr ""
#: pretix/base/invoicing/national.py:59
#, fuzzy
#| msgid "Recipient"
msgctxt "italian_invoice"
msgid "Recipient code"
msgstr "קוד נמען"
msgstr "נמען"
#: pretix/base/invoicing/national.py:83
msgctxt "italian_invoice"
@@ -3541,9 +3632,6 @@ msgid ""
"in accordance with the procedures and terms set forth in No. 89757/2018 of "
"April 30, 2018, issued by the Director of the Revenue Agency."
msgstr ""
"קובץ PDF זה הוא העתק ויזואלי של החשבונית ואינו מהווה חשבונית לצרכי מע\"מ. "
"החשבונית מונפקת בפורמט XML, ומשודרת בהתאם לנהלים ולתנאים המפורטים בתקנה "
"89757/2018 מה30 באפריל, 2016 שפורסמה על ידי מנהל סוכנות ההכנסות."
#: pretix/base/invoicing/pdf.py:142
#, python-format
@@ -3724,10 +3812,12 @@ msgid "Remaining amount"
msgstr "הסכום שנותר"
#: pretix/base/invoicing/pdf.py:1008
#, python-brace-format
#, fuzzy, python-brace-format
#| msgctxt "invoice"
#| msgid "Event date: {date_range}"
msgctxt "invoice"
msgid "Invoice period: {daterange}"
msgstr "תקופת החשבונית: {daterange}"
msgstr "תאריך אירוע: {date_range}"
#: pretix/base/invoicing/pdf.py:1039
msgctxt "invoice"
@@ -3790,7 +3880,7 @@ msgstr "תאריך אירוע: {date_range}"
#: pretix/base/invoicing/peppol.py:136
msgid ""
"A Peppol participant ID always starts with a prefix, followed by a colon (:)."
msgstr "מזהה משתתף של פפול תמיד מתחיל בתחילית ואחריה נקודתיים(:)."
msgstr ""
#: pretix/base/invoicing/peppol.py:140
#, python-format
@@ -3798,8 +3888,6 @@ msgid ""
"The Peppol participant ID prefix %(number)s is not known to our system. "
"Please reach out to us if you are sure this ID is correct."
msgstr ""
"תחילית מזהה המשתתף של פפול %(number)s אינה מוכרת למערכת. צור עימנו קשר אם "
"אתה בטוח שזהו המזהה הנכון."
#: pretix/base/invoicing/peppol.py:144
#, python-format
@@ -3807,21 +3895,21 @@ msgid ""
"The Peppol participant ID does not match the validation rules for the prefix "
"%(number)s. Please reach out to us if you are sure this ID is correct."
msgstr ""
"מזהה המשתתף של פפול אינו תואם לחוקי הולידציה של התחילית %(number)s. צור "
"עימנו קשר אם אתה בטוח שהמזהה נכון."
#: pretix/base/invoicing/peppol.py:166
msgid "The Peppol participant ID is not registered on the Peppol network."
msgstr "מזהה המשתתף של פפול אינו רשום ברשת פפול."
msgstr ""
#: pretix/base/invoicing/peppol.py:192
msgid "Peppol participant ID"
msgstr "מזהה משתתף פפול"
msgstr ""
#: pretix/base/invoicing/peppol.py:208
#, fuzzy
#| msgid "Gift card code"
msgctxt "peppol_invoice"
msgid "Visual copy"
msgstr "עותק ויזואלי"
msgstr "קוד כרטיס מתנה"
#: pretix/base/invoicing/peppol.py:213
msgctxt "peppol_invoice"
@@ -3830,8 +3918,6 @@ msgid ""
"invoice for VAT purposes. The original invoice is issued in XML format and "
"transmitted through the Peppol network."
msgstr ""
"קובץ PDF זה הינו העתק ויזואלי של החשבונית ואינו מהווה חשבונית לצרכי מע\"מ. "
"החשבונית המקורית מופקת בפורמט XML ומשודרת דרך רשת פפול."
#: pretix/base/logentrytype_registry.py:43
msgid ""
@@ -3944,7 +4030,7 @@ msgstr "נמצאו מספר תאריכים תואמים."
#: pretix/base/modelimport_orders.py:73
msgid "Grouping"
msgstr "קיבוץ"
msgstr ""
#: pretix/base/modelimport_orders.py:75
msgid ""
@@ -3952,8 +4038,6 @@ msgid ""
"together...\". Lines with the same grouping value will be put in the same "
"order, but MUST be consecutive lines of the input file."
msgstr ""
"ישים רק כש\"מצב יבוא\" מוגדר ל\"קיבוץ מספר שורות יחד...\". שורות עם אותו ערך "
"קיבוץ יוצבו באותו סדר, אך חייבים להיות שורות רציפות של קובץ הקלט."
#: pretix/base/modelimport_orders.py:101
msgid "Enter a valid phone number."
@@ -3965,8 +4049,6 @@ msgid ""
"The date can be specified through its full name, full date and time, or "
"internal ID, provided only one date in the system matches the input."
msgstr ""
"התאריך ניתן לציון דרך השם המלא, התאריך והשעה המלאים, או מזהה פנימי בתנאי "
"שהמזהה תואם רק תאריך אחד."
#: pretix/base/modelimport_orders.py:120 pretix/presale/views/waiting.py:157
msgctxt "subevent"
@@ -3976,7 +4058,7 @@ msgstr "עליך לבחור תאריך."
#: pretix/base/modelimport_orders.py:131
msgid ""
"The product can be specified by its internal ID, full name or internal name."
msgstr "המוצר ניתן לציון ע\"י מזהה פנימי, שם מלא או שם פנימי."
msgstr ""
#: pretix/base/modelimport_orders.py:149
#: pretix/base/modelimport_vouchers.py:194
@@ -3996,7 +4078,7 @@ msgstr "וריאציית מוצר"
#: pretix/base/modelimport_orders.py:161
msgid "The variation can be specified by its internal ID or full name."
msgstr "הוריאציה ניתנת לציון לפי מזהה פנימי או שם מלא."
msgstr ""
#: pretix/base/modelimport_orders.py:181
#: pretix/base/modelimport_vouchers.py:225
@@ -4015,8 +4097,10 @@ msgid "You need to select a variation for this product."
msgstr "עליך לבחור וריאציה למוצר זה."
#: pretix/base/modelimport_orders.py:265 pretix/base/modelimport_orders.py:417
#, fuzzy
#| msgid "The count needs to be equal to or greater than zero."
msgid "The country needs to be specified using a two-letter country code."
msgstr "המדינה נדרשת להזנה לפי קוד מדינה בין 2 אותיות."
msgstr "הכמות צריכה להיות שווה או גדולה מאפס."
#: pretix/base/modelimport_orders.py:281 pretix/base/modelimport_orders.py:432
msgid "Please enter a valid country code."
@@ -4024,7 +4108,7 @@ msgstr "נא להזין קוד ארץ תקין."
#: pretix/base/modelimport_orders.py:290 pretix/base/modelimport_orders.py:441
msgid "The state can be specified by its short form or full name."
msgstr "המדינה ניתנת להזנה ע\"י שימוש בקיצור או בשמה המלא."
msgstr ""
#: pretix/base/modelimport_orders.py:300 pretix/base/modelimport_orders.py:450
msgid "States are not supported for this country."
@@ -4080,15 +4164,17 @@ msgstr "אנא הזן קוד שפה תקין."
msgid ""
"The sales channel can be specified by it's internal identifier or its full "
"name."
msgstr "ערוץ המכירה ניתן להזנה ע\"י מזהה פנימי או שם מלא."
msgstr ""
#: pretix/base/modelimport_orders.py:599 pretix/base/modelimport_orders.py:601
msgid "Please enter a valid sales channel."
msgstr "אנא הזן ערוץ מכירות תקין."
#: pretix/base/modelimport_orders.py:611
#, fuzzy
#| msgid "The refund amount needs to be positive and less than {}."
msgid "The seat needs to be specified by its internal ID."
msgstr "המושב חייב להיות מצויין לפי המזהה הפנימי."
msgstr "סכום ההחזר חייב להיות חיובי ופחות מ-{}."
#: pretix/base/modelimport_orders.py:626
#: pretix/base/modelimport_vouchers.py:291
@@ -4290,17 +4376,17 @@ msgid ""
"to confirm changing your email address from {old_email}\n"
"to {new_email}, use the following code:"
msgstr ""
"לאימות שינוי כתובת הדוא\"ל מ{old_email} \n"
"ל {new_email}, השתמש בקוד הבא:"
#: pretix/base/models/auth.py:377
#, python-brace-format
msgid ""
"to confirm that your email address {email} belongs to your pretix account, "
"use the following code:"
msgstr "לאימות שכתובת הדוא\"ל {email} שייכת לחשבונך, השתמש בקוד הבא:"
msgstr ""
#: pretix/base/models/auth.py:391
#, fuzzy
#| msgid "Confirmation code"
msgid "pretix confirmation code"
msgstr "קוד אישור"
@@ -4560,19 +4646,21 @@ msgstr "הפרד בין ערכים מרובים באמצעות רווחים"
#: pretix/base/models/datasync.py:53
msgid "Temporary error, auto-retry limit exceeded"
msgstr "שגיאה זמנית, מכסת הניסיונות מחדש האוטומטיים נחרגה"
msgstr ""
#: pretix/base/models/datasync.py:54
#, fuzzy
#| msgid "Stripe reported an error: %s"
msgid "Provider reported a permanent error"
msgstr "הספק דיווח על שגיאה קבועה"
msgstr "Stripe דיווח על שגיאה: %s"
#: pretix/base/models/datasync.py:55
msgid "Misconfiguration, please check provider settings"
msgstr "שגיאת הגדרה, בדוק את הגדרות הספק"
msgstr ""
#: pretix/base/models/datasync.py:56 pretix/base/models/datasync.py:57
msgid "System error, needs manual intervention"
msgstr "תקלת מערכת, נדרשת התערבות ידנית"
msgstr ""
#: pretix/base/models/devices.py:70 pretix/base/models/items.py:1675
msgid "Internal identifier"
@@ -4820,15 +4908,13 @@ msgstr "לא חובה. לא יימכרו מוצרים לפני תאריך זה."
#: pretix/base/models/event.py:644
msgid "This event is remote or partially remote."
msgstr "אירוע זה הינו אירוע וירטואלי או חלקית וירטואלי."
msgstr ""
#: pretix/base/models/event.py:645
msgid ""
"This will be used to let users know if the event is in a different timezone "
"and lets us calculate users local times."
msgstr ""
"זה ישמש לעדכן את המשתמשים לדעת אם השעה המצויינת הינה באזור זמן שונה ויאפשר "
"לנו לחשב את השעה בהתאם לשעון המקומי של המשתמשים."
#: pretix/base/models/event.py:665 pretix/base/models/organizer.py:97
#: pretix/control/navigation.py:65 pretix/control/navigation.py:499
@@ -5105,7 +5191,7 @@ msgstr "יתרה ממתינה"
#: pretix/base/models/invoices.py:123
msgid "currently being transmitted"
msgstr "משודר כרגע"
msgstr ""
#: pretix/base/models/invoices.py:124
#, fuzzy
@@ -6000,8 +6086,6 @@ msgid ""
"with changing the type of question without data loss. Consider hiding this "
"question and creating a new one instead."
msgstr ""
"המערכת כבר כוללת תשובות לשאלה זו שאינם מאפשרות שינוי סוג השאלה מבלי לאבד "
"מידע. מומלץ לשקול להסתיר את שאלה זו וליצור חדשה במקום."
#: pretix/base/models/items.py:1961
#: pretix/control/templates/pretixcontrol/items/question.html:75
@@ -7942,9 +8026,6 @@ msgid ""
"2017-05-31 14:00 16:00\n"
"2017-05-31 14:00 2017-06-01 14:00"
msgstr ""
"2017-05-31 10:00 12:00\n"
"2017-05-31 14:00 16:00\n"
"2017-05-31 14:00 2017-06-01 14:00"
#: pretix/base/pdf.py:500
msgid "Reusable Medium ID"
@@ -8153,7 +8234,7 @@ msgstr "בחרת מוצר שאינו זמין למכירה."
msgid ""
"Some products can no longer be purchased and have been removed from your "
"cart for the following reason: %s"
msgstr "חלק מהמוצרים לא ניתנים לרכישה יותר והוסרו מעגלת הקניות מהסיבה הבאה: %s"
msgstr ""
#: pretix/base/services/cart.py:117
msgid ""
@@ -8903,7 +8984,7 @@ msgstr "ההזמנה אינה יכולה להכיל יותר מ־%(max)s עמד
msgid ""
"The grouping \"%(value)s\" occurs on non-consecutive lines (seen again on "
"line %(row)s)."
msgstr "הקיבוץ \"%(value)s\" מתקיים בשורות לא רציפות (נראה שוב בשורה %(row)s)."
msgstr ""
#: pretix/base/services/modelimport.py:154
#, python-brace-format
@@ -8911,8 +8992,6 @@ msgid ""
"Inconsistent data in row {row}: Column {col} contains value \"{val_line}\", "
"but for this order, the value has already been set to \"{val_order}\"."
msgstr ""
"מידע לא רציף בשורה {row}: טור {col} מכיל ערך \"{val_line}\", אך להזמנה זו, "
"הערך כבר הוגדר ל \"{val_order}\"."
#: pretix/base/services/modelimport.py:168
#: pretix/base/services/modelimport.py:289
@@ -9354,15 +9433,15 @@ msgstr "השובר נשלח ל-{recipient}."
#: pretix/base/settings.py:82
msgid "Compute taxes for every line individually"
msgstr "חשב מיסים לכל שורה בנפרד"
msgstr ""
#: pretix/base/settings.py:83
msgid "Compute taxes based on net total"
msgstr "חשב מיסים תוך ביסוס על סה\"כ נטו"
msgstr ""
#: pretix/base/settings.py:84
msgid "Compute taxes based on net total with stable gross prices"
msgstr "חשב מיסים על סה\"כ נטו עם ברוטו יציב"
msgstr ""
#: pretix/base/settings.py:134
msgid "Allow usage of restricted plugins"
@@ -9391,7 +9470,7 @@ msgstr "אם אפשרות זו מושבתת, תצטרך לחבר ספקי זיה
#: pretix/base/settings.py:189
msgid "Require login to access order confirmation pages"
msgstr "דרוש כניסה למשתמש על מנת לגשת לדפי אישור הזמנה"
msgstr ""
#: pretix/base/settings.py:190
msgid ""
@@ -9400,9 +9479,6 @@ msgid ""
"placing an order, the restriction only becomes active after the customer "
"account is activated."
msgstr ""
"אם מופעל, משתמשים שהיו מחוברים לאתר בזמן רכישה יצטרכו להתחבר לחשבונם באתר על "
"מנת לגשת לפרטי ההזמנה שלהם. אם החשבון נוצר במהלך הרכישה, ההגבלה נכנסת לתוקף "
"רק לאחר הפעלת החשבון."
#: pretix/base/settings.py:202
msgid "Match orders based on email address"
@@ -9582,8 +9658,6 @@ msgid ""
"for tax reporting, you need to make sure to account for possible rounding "
"differences if your external system rounds differently than pretix."
msgstr ""
"שים לב- במידה ותייצא את נתוני המכירות שלך למערכת חיצונית לדיווח מס, עלייך "
"לקחת בחשבון כי ייתכנו פערים אם המערכת החיצונית מבצעת עיגול בצורה שונה."
#: pretix/base/settings.py:514
msgid "Ask for invoice address"
@@ -9712,8 +9786,6 @@ msgid ""
"ID in all countries. VAT ID will be required for all business addresses in "
"the selected countries."
msgstr ""
"מספר עסק מגדר כרשות כברירת מחדל מאחר ובחלק מהמדינות ישנם עסקים שלא מוקצה להם "
"מספר עסק. מספר עסק יוגדר כחובה בכל המדינות הנבחרות."
#: pretix/base/settings.py:685
msgid "Invoice address explanation"
@@ -10100,12 +10172,10 @@ msgid ""
"Automatic based on ticket-specific validity, membership validity, event "
"series date, or event date"
msgstr ""
"אוטומטי בהתאם לזמינות הכרטיס הספציפי, זמינות המנוי, תאריכי סדרת האירועים או "
"תאריך האירוע"
#: pretix/base/settings.py:1179 pretix/base/settings.py:1190
msgid "Automatic, but prefer invoice date over event date"
msgstr "אוטומטי, אבל העדף תאריך חשבונית על תאריך אירוע"
msgstr ""
#: pretix/base/settings.py:1182 pretix/base/settings.py:1193
#, fuzzy
@@ -10126,7 +10196,6 @@ msgid ""
"This controls what dates are shown on the invoice, but is especially "
"important for electronic invoicing."
msgstr ""
"זה שולט על איזה תאריכים מוצגים על החשבונית, ובמיוחד חשוב לחשבוניות דיגיטליות."
#: pretix/base/settings.py:1206
msgid "Automatically cancel and reissue invoice on address changes"
@@ -12698,7 +12767,7 @@ msgstr "אם זה לוקח יותר מכמה דקות, רענן את הדף או
#: pretix/base/templates/pretixbase/email/cancel_confirm.txt:2
msgid ""
"You have requested us to cancel an event which includes a larger bulk-refund:"
msgstr "ביקשת מאיתנו לבטל אירוע שכולל החזר כספי גדול יותר:"
msgstr ""
#: pretix/base/templates/pretixbase/email/cancel_confirm.txt:6
#, fuzzy
@@ -12711,7 +12780,6 @@ msgid ""
"Please confirm that you want to proceed by coping the following confirmation "
"code into the cancellation form:"
msgstr ""
"נא לאשר שברצונך להמשיך באמצעות העתקה של קוד האימות הבא לתוך טופס הביטול:"
#: pretix/base/templates/pretixbase/email/email_footer.html:3
#, python-format
@@ -13389,7 +13457,7 @@ msgstr "כל השערים"
#: pretix/control/forms/checkin.py:222
msgid "I am sure that the check-in state of the entire event should be reset."
msgstr "אני בטוח שמצב הצ'ק אין של האירוע צריך לעבור איפוס."
msgstr ""
#: pretix/control/forms/event.py:91
msgid "Use languages"
@@ -13488,7 +13556,7 @@ msgstr "ברירת מחדל ({value})"
#: pretix/control/forms/event.py:381
msgid "The currency cannot be changed because orders already exist."
msgstr "לא ניתן לבצע שינוי בסוג המטבע מאחר והזמנות כבר קיימות."
msgstr ""
#: pretix/control/forms/event.py:392 pretix/control/forms/event.py:405
msgid "Domain"
@@ -13576,7 +13644,7 @@ msgstr "כולל כל המיסים"
#: pretix/control/forms/event.py:815
msgid "Recommended if you sell tickets at least partly to consumers."
msgstr "מומלץ אם תמכור כרטיסים לפחות חלקית ללקוחות."
msgstr ""
#: pretix/control/forms/event.py:819
#, fuzzy
@@ -13587,7 +13655,7 @@ msgstr "כל העתיד (לא כולל היום)"
#: pretix/control/forms/event.py:820
msgid "Recommended only if you sell tickets primarily to business customers."
msgstr "מומלץ רק אם תמכור כרטיסים בעיקר ללקוחות עסקיים."
msgstr ""
#: pretix/control/forms/event.py:856
#, fuzzy
@@ -13817,7 +13885,6 @@ msgid ""
"This will only be used if the invoice is sent to a different email address "
"or at a different time than the order confirmation."
msgstr ""
"זה ישומש רק אם החשבונית תישלח לכתובת מייל אחרת או בזמן אחר מאישור ההזמנה."
#: pretix/control/forms/event.py:1321
msgid ""
@@ -14268,7 +14335,7 @@ msgstr "שולם"
#: pretix/control/forms/filter.py:1304
msgctxt "subevent"
msgid "Date doesn't start in selected date range."
msgstr "תאריך לא מתחיל בטווח התאריכים שנבחר."
msgstr ""
#: pretix/control/forms/filter.py:1360 pretix/control/forms/filter.py:1827
msgid "Shop live and presale running"

File diff suppressed because it is too large Load Diff

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-26 13:19+0000\n"
"PO-Revision-Date: 2026-02-10 16:49+0000\n"
"Last-Translator: Michele Pagnozzi <michele.pagnozzi@gmail.com>\n"
"PO-Revision-Date: 2025-12-19 00:00+0000\n"
"Last-Translator: Daniel Branda <daniel.branda.ad@gmail.com>\n"
"Language-Team: Italian <https://translate.pretix.eu/projects/pretix/pretix/"
"it/>\n"
"Language: it\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.15.2\n"
"X-Generator: Weblate 5.15\n"
#: pretix/_base_settings.py:87
msgid "English"
@@ -966,7 +966,7 @@ msgstr "Indirizzo di fatturazione dell'azienda"
#: pretix/base/exporters/orderlist.py:688
#: pretix/base/exporters/orderlist.py:692 pretix/base/pdf.py:341
msgid "Invoice address name"
msgstr "Indirizzo di fatturazione"
msgstr "Nome dell'indirizzo di fatturazione"
#: pretix/base/datasync/sourcefields.py:317
#: pretix/base/exporters/orderlist.py:694 pretix/base/pdf.py:351

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-26 09:10+0000\n"
"PO-Revision-Date: 2026-02-10 16:49+0000\n"
"Last-Translator: Raffaele Doretto <ced@comune.portogruaro.ve.it>\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-"
"js/it/>\n"
"Language: it\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.15.2\n"
"X-Generator: Weblate 5.11.1\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -1134,9 +1134,6 @@ msgid ""
"add yourself to the waiting list. We will then notify if seats are available "
"again."
msgstr ""
"Alcune o tutte le categorie di biglietti sono attualmente esaurite. Se lo "
"desideri, puoi aggiungerti alla lista d'attesa. Ti informeremo se i posti "
"saranno nuovamente disponibili."
#: pretix/static/pretixpresale/js/widget/widget.js:76
msgctxt "widget"

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-26 09:10+0000\n"
"PO-Revision-Date: 2026-02-06 07:41+0000\n"
"PO-Revision-Date: 2026-01-28 18:00+0000\n"
"Last-Translator: Ryo Tagami <rtagami@airstrip.jp>\n"
"Language-Team: Japanese <https://translate.pretix.eu/projects/pretix/pretix-"
"js/ja/>\n"
@@ -27,7 +27,7 @@ msgstr "支払い済み"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:76
msgid "Comment:"
msgstr "コメント:"
msgstr "注釈:"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:34
msgid "PayPal"
@@ -157,7 +157,7 @@ msgstr "受注件数"
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:15
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:63
msgid "Paid orders"
msgstr "支払い済み件数"
msgstr "支払い済みの注文"
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:27
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:39
@@ -167,7 +167,7 @@ msgstr "参加者 (注文済み)"
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:27
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:39
msgid "Attendees (paid)"
msgstr "参加者 (支払い済み)"
msgstr "参加者 (有料)"
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:51
msgid "Total revenue"
@@ -215,7 +215,7 @@ msgstr "このチケットは特別な対応が必要です"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:37
msgid "Switch direction"
msgstr "向きを切り替え"
msgstr "方向転換"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:38
msgid "Entry"
@@ -223,7 +223,7 @@ msgstr "入場"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:39
msgid "Exit"
msgstr "退"
msgstr "退"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:40
msgid "Scan a ticket or search and press return…"
@@ -297,7 +297,7 @@ msgstr "不明なチケット"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:59
msgid "Ticket type not allowed here"
msgstr "この種類のチケットはここでは使用できません"
msgstr "この種類のチケットは使用できません"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:61
msgid "Entry not allowed"
@@ -321,7 +321,7 @@ msgstr "注文がキャンセルされました"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:66
msgid "Ticket code is ambiguous on list"
msgstr "リスト上でチケットコードが一意に特定できません"
msgstr "リストチケットコードは曖昧です"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:67
msgid "Order not approved"
@@ -358,7 +358,7 @@ msgstr "閉じる"
#: pretix/static/pretixbase/js/addressform.js:101
#: pretix/static/pretixpresale/js/ui/main.js:529
msgid "required"
msgstr "必"
msgstr "必"
#: pretix/static/pretixbase/js/asynctask.js:13
msgid ""
@@ -370,7 +370,8 @@ msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:17
msgid "Your request has been queued on the server and will soon be processed."
msgstr "お客様のリクエストはサーバーで受け付けられました。まもなく処理されます。"
msgstr ""
"サーバへ送信されたリクエスト順にお応えしています。今しばらくお待ちください。"
#: pretix/static/pretixbase/js/asynctask.js:21
msgid ""
@@ -393,7 +394,8 @@ msgstr "{code} のエラーが発生しました。"
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
msgstr "現在サーバへの接続ができませんが、接続試行中です。最新のエラーコード: {code}"
msgstr ""
"現在サーバへの接続ができませんが、接続試行中です。エラーコード: {code}"
#: pretix/static/pretixbase/js/asynctask.js:162
#: pretix/static/pretixcontrol/js/ui/mail.js:21
@@ -417,8 +419,9 @@ msgid ""
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
"現在リクエストサーバへ送信中です。1分以上経っても応答がない場合は、"
"インターネット接続を確認し、このページを再読み込みして再試行してください。"
"リクエストサーバへ送信されました。1分以上経っても応答がない場合は、イン"
"ターネット接続を確認してください。確認完了後、ウェブページを再度読込み、再試"
"行してください。"
#: pretix/static/pretixbase/js/asynctask.js:276
msgid "If this takes longer than a few minutes, please contact us."
@@ -426,7 +429,7 @@ msgstr "数分以上かかる場合は、お問い合わせください。"
#: pretix/static/pretixbase/js/asynctask.js:331
msgid "Close message"
msgstr "メッセージを閉じる"
msgstr "閉じる"
#: pretix/static/pretixcontrol/js/clipboard.js:23
msgid "Copied!"
@@ -440,7 +443,7 @@ msgstr "Ctrl-Cを押してコピー"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:18
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:24
msgid "is one of"
msgstr "次のいずれか"
msgstr "の一つです"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:30
msgid "is before"
@@ -456,11 +459,11 @@ msgstr "="
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:99
msgid "Product"
msgstr "品"
msgstr "品"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:103
msgid "Product variation"
msgstr "品バリエーション"
msgstr "品バリエーション"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:107
msgid "Gate"
@@ -520,7 +523,7 @@ msgstr "以下のすべての条件AND"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:183
msgid "At least one of the conditions below (OR)"
msgstr "以下の条件のうち、最低1つ(OR"
msgstr "以下の条件のうち、最低1つ(または"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:184
msgid "Event start"
@@ -561,16 +564,16 @@ msgstr "複製"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:193
msgctxt "entry_status"
msgid "present"
msgstr "入場中"
msgstr "出席"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:194
msgctxt "entry_status"
msgid "absent"
msgstr "未入場"
msgstr "欠席"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:289
msgid "Error: Product not found!"
msgstr "エラー:品が見つかりません!"
msgstr "エラー:品が見つかりません!"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:296
msgid "Error: Variation not found!"
@@ -582,7 +585,7 @@ msgstr "チェックイン用QRコード"
#: pretix/static/pretixcontrol/js/ui/editor.js:549
msgid "The PDF background file could not be loaded for the following reason:"
msgstr "以下の理由によりPDF背景ファイルの読み込みに失敗しました:"
msgstr "以下の理由によりPDFファイルの読み込みに失敗しました"
#: pretix/static/pretixcontrol/js/ui/editor.js:904
msgid "Group of objects"
@@ -590,7 +593,7 @@ msgstr "オブジェクトグループ"
#: pretix/static/pretixcontrol/js/ui/editor.js:909
msgid "Text object (deprecated)"
msgstr "テキストオブジェクト(非推奨)"
msgstr "テキストオブジェクト (廃止済)"
#: pretix/static/pretixcontrol/js/ui/editor.js:911
msgid "Text box"
@@ -606,7 +609,7 @@ msgstr "画像エリア"
#: pretix/static/pretixcontrol/js/ui/editor.js:917
msgid "Powered by pretix"
msgstr "Powered by pretix"
msgstr "Pretixのイベントチケット売り場"
#: pretix/static/pretixcontrol/js/ui/editor.js:919
msgid "Object"
@@ -644,24 +647,24 @@ msgstr "不明なエラー。"
#: pretix/static/pretixcontrol/js/ui/main.js:309
msgid "Your color has great contrast and will provide excellent accessibility."
msgstr ""
"選択した色は素晴らしいコントラストを持ち、優れたアクセシビリティを提供しま"
"。"
"あなたの色は素晴らしいコントラストを持ち、優れたアクセシビリティを提供しま"
"。"
#: pretix/static/pretixcontrol/js/ui/main.js:313
msgid ""
"Your color has decent contrast and is sufficient for minimum accessibility "
"requirements."
msgstr ""
"選択した色は適切なコントラストを持ち、最小限のアクセシビリティ要件に十分で"
"。"
"あなたの色は適切なコントラストを持ち、最小限のアクセシビリティ要件に十分で"
"。"
#: pretix/static/pretixcontrol/js/ui/main.js:317
msgid ""
"Your color has insufficient contrast to white. Accessibility of your site "
"will be impacted."
msgstr ""
"選択した色は白に対して十分なコントラストがありません。サイトの"
"アクセシビリティに影響します。"
"あなたの色は白に対して十分なコントラストがありません。サイトのアクセシビリ"
"ティに影響します。"
#: pretix/static/pretixcontrol/js/ui/main.js:443
#: pretix/static/pretixcontrol/js/ui/main.js:463
@@ -674,7 +677,7 @@ msgstr "全て"
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "None"
msgstr "な"
msgstr "な"
#: pretix/static/pretixcontrol/js/ui/main.js:466
msgid "Selected only"
@@ -690,7 +693,7 @@ msgstr "無効なページ番号。"
#: pretix/static/pretixcontrol/js/ui/main.js:1000
msgid "Use a different name internally"
msgstr "内部で別の名前を使用する"
msgstr "内部で別の名前を使用してください"
#: pretix/static/pretixcontrol/js/ui/main.js:1040
msgid "Click to close"
@@ -719,15 +722,15 @@ msgstr "カウント"
#: pretix/static/pretixcontrol/js/ui/subevent.js:112
msgid "(one more date)"
msgid_plural "({num} more dates)"
msgstr[0] "(他に{num}の日程)"
msgstr[0] "({num}の日程)"
#: pretix/static/pretixpresale/js/ui/cart.js:47
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as theyre available."
msgstr ""
"カート内の商品の確保期限が切れました。在庫があれば、このまま注文を完了するこ"
"とができます。"
"カートに入っている商品は現在売り切れです。在庫があれば、このまま注文を完了す"
"ることができます。"
#: pretix/static/pretixpresale/js/ui/cart.js:49
msgid "Cart expired"
@@ -741,27 +744,27 @@ msgstr "カートの有効期限が近づいています。"
#: pretix/static/pretixpresale/js/ui/cart.js:62
msgid "The items in your cart are reserved for you for one minute."
msgid_plural "The items in your cart are reserved for you for {num} minutes."
msgstr[0] "カート内の商品はあと {num} 分間確保されています。"
msgstr[0] "カート内の商品の予約は {num} 分以内に完了します。"
#: pretix/static/pretixpresale/js/ui/cart.js:83
msgid "Your cart has expired."
msgstr "カートの有効期限が切れています。"
msgstr "カートの保存期限が切れています。"
#: pretix/static/pretixpresale/js/ui/cart.js:86
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as they're available."
msgstr ""
"カート内の商品の確保期限が切れました。在庫があれば、このまま注文を完了するこ"
"カート内の商品の予約期限が切れました。在庫があれば、このまま注文を完了するこ"
"とができます。"
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Do you want to renew the reservation period?"
msgstr "確保期間を更新しますか?"
msgstr "予約の期間を更新しますか?"
#: pretix/static/pretixpresale/js/ui/cart.js:90
msgid "Renew reservation"
msgstr "確保を更新"
msgstr "予約を更新"
#: pretix/static/pretixpresale/js/ui/main.js:194
msgid "The organizer keeps %(currency)s %(amount)s"
@@ -777,7 +780,7 @@ msgstr "主催者が留保する料金を入力してください。"
#: pretix/static/pretixpresale/js/ui/main.js:577
msgid "Your local time:"
msgstr "お使いの地域の時刻"
msgstr "現地時間"
#: pretix/static/pretixpresale/js/walletdetection.js:39
msgid "Google Pay"
@@ -860,7 +863,7 @@ msgstr "登録"
#: pretix/static/pretixpresale/js/widget/widget.js:30
msgctxt "widget"
msgid "Reserved"
msgstr "予約済み"
msgstr "予約完了"
#: pretix/static/pretixpresale/js/widget/widget.js:31
msgctxt "widget"
@@ -876,7 +879,7 @@ msgstr "%(currency)s %(price)sから"
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr "%sの画像"
msgstr "%sのイメージ"
#: pretix/static/pretixpresale/js/widget/widget.js:34
msgctxt "widget"
@@ -886,7 +889,7 @@ msgstr "%(rate)s% %(taxname)s込"
#: pretix/static/pretixpresale/js/widget/widget.js:35
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr "別途%(rate)s% %(taxname)s"
msgstr "%(rate)s% %(taxname)s"
#: pretix/static/pretixpresale/js/widget/widget.js:36
msgctxt "widget"
@@ -896,13 +899,13 @@ msgstr "税込"
#: pretix/static/pretixpresale/js/widget/widget.js:37
msgctxt "widget"
msgid "plus taxes"
msgstr "税"
msgstr "税"
#: pretix/static/pretixpresale/js/widget/widget.js:38
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr "現在の残数: %s"
msgstr "現在%s使用可能"
#: pretix/static/pretixpresale/js/widget/widget.js:39
msgctxt "widget"
@@ -918,7 +921,7 @@ msgstr "提供開始前"
#: pretix/static/pretixpresale/js/widget/widget.js:41
msgctxt "widget"
msgid "Not available anymore"
msgstr "提供終了"
msgstr "今後の提供不可"
#: pretix/static/pretixpresale/js/widget/widget.js:42
msgctxt "widget"
@@ -934,7 +937,7 @@ msgstr "最小注文数量:%s"
#: pretix/static/pretixpresale/js/widget/widget.js:45
msgctxt "widget"
msgid "Close ticket shop"
msgstr "チケットショップを閉じる"
msgstr "チケットショップ閉店"
#: pretix/static/pretixpresale/js/widget/widget.js:46
msgctxt "widget"
@@ -947,8 +950,8 @@ msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
"in a new tab to continue."
msgstr ""
"現在チケットショップが混み合っています。新しいタブでチケットショップを開いて"
"行してください。"
"現在チケットショップが混み合っています。新しいタブでチケットショップを開き続"
"行してください。"
#: pretix/static/pretixpresale/js/widget/widget.js:49
msgctxt "widget"
@@ -972,7 +975,7 @@ msgid ""
"this ticket shop. Please click \"Continue\" to retry in a new tab."
msgstr ""
"現在チケットショップが混雑しているため、お客様のカートを作ることができません"
"でした。\"続ける\"をクリックして、新しいタブで再試行してください。"
"でした。新しいタブを開き「次へ」をクリックしてください。"
#: pretix/static/pretixpresale/js/widget/widget.js:54
msgctxt "widget"
@@ -985,8 +988,8 @@ msgid ""
"You currently have an active cart for this event. If you select more "
"products, they will be added to your existing cart."
msgstr ""
"このイベントのカートに商品が入っています。商品を追加すると、既存のカートに追"
"加されます。"
"お客様のカートはイベントの申し込みに有効です。商品を選択し、カートへ追加して"
"ください。"
#: pretix/static/pretixpresale/js/widget/widget.js:57
msgctxt "widget"
@@ -1076,7 +1079,7 @@ msgstr "前週"
#: pretix/static/pretixpresale/js/widget/widget.js:74
msgctxt "widget"
msgid "Open seat selection"
msgstr "座席選択を開く"
msgstr "座席一覧を開く"
#: pretix/static/pretixpresale/js/widget/widget.js:75
msgctxt "widget"

View File

@@ -8,16 +8,16 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-26 13:19+0000\n"
"PO-Revision-Date: 2026-02-01 21:00+0000\n"
"Last-Translator: z3rrry <z3rrry@gmail.com>\n"
"Language-Team: Korean <https://translate.pretix.eu/projects/pretix/pretix/"
"ko/>\n"
"PO-Revision-Date: 2025-12-03 23:00+0000\n"
"Last-Translator: SJang1 <git@sjang.dev>\n"
"Language-Team: Korean <https://translate.pretix.eu/projects/pretix/pretix/ko/"
">\n"
"Language: ko\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.15.2\n"
"X-Generator: Weblate 5.14.3\n"
#: pretix/_base_settings.py:87
msgid "English"
@@ -2283,9 +2283,6 @@ msgid ""
"contain at least one position of this product. The order totals etc. still "
"include all products contained in the order."
msgstr ""
"아무것도 선택하지 않으면, 모든 상품이 포함됩니다. 상품이 1개 이상 포함되는 "
"경우에 주문이 포함됩니다. 주문 합계 등에는 주문에 포함된 모든 상품이 "
"포함됩니다."
#: pretix/base/exporters/orderlist.py:283
#: pretix/base/exporters/orderlist.py:478
@@ -2549,8 +2546,10 @@ msgid "Voucher"
msgstr "바우처"
#: pretix/base/exporters/orderlist.py:653
#, fuzzy
#| msgid "Voucher deleted"
msgid "Voucher budget usage"
msgstr "바우처 예산 사용량"
msgstr "바우처 제거됨"
#: pretix/base/exporters/orderlist.py:654
msgid "Pseudonymization ID"
@@ -26785,11 +26784,11 @@ msgstr ""
#: pretix/control/views/dashboards.py:114
msgid "Attendees (ordered)"
msgstr "참가자 (정렬된)"
msgstr ""
#: pretix/control/views/dashboards.py:124
msgid "Attendees (paid)"
msgstr "참가자 (결제된)"
msgstr ""
#: pretix/control/views/dashboards.py:136
#, python-brace-format

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-26 09:10+0000\n"
"PO-Revision-Date: 2026-02-01 21:00+0000\n"
"Last-Translator: z3rrry <z3rrry@gmail.com>\n"
"PO-Revision-Date: 2025-11-18 17:00+0000\n"
"Last-Translator: Hijiri Umemoto <hijiri@umemoto.org>\n"
"Language-Team: Korean <https://translate.pretix.eu/projects/pretix/pretix-js/"
"ko/>\n"
"Language: ko\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.15.2\n"
"X-Generator: Weblate 5.14.3\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -175,12 +175,12 @@ msgstr "유료 주문"
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:27
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:39
msgid "Attendees (ordered)"
msgstr "참가자 (정렬된)"
msgstr ""
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:27
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:39
msgid "Attendees (paid)"
msgstr "참가자 (결제된)"
msgstr ""
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:51
msgid "Total revenue"

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-26 09:10+0000\n"
"PO-Revision-Date: 2026-02-05 23:00+0000\n"
"PO-Revision-Date: 2026-01-28 00:00+0000\n"
"Last-Translator: Ruud Hendrickx <ruud@leckxicon.eu>\n"
"Language-Team: Dutch <https://translate.pretix.eu/projects/pretix/pretix-js/"
"nl/>\n"
@@ -55,7 +55,7 @@ msgstr "Kredietkaart"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:40
msgid "PayPal Pay Later"
msgstr "PayPal - Later betalen"
msgstr "PayPal Pay Later"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:41
msgid "iDEAL"
@@ -186,15 +186,15 @@ msgstr "Verbinding maken met uw bank …"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:30
msgid "Select a check-in list"
msgstr "Kies een check-in-lijst"
msgstr "Kies een inchecklijst"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:31
msgid "No active check-in lists found."
msgstr "Geen actieve check-in-lijsten gevonden."
msgstr "Geen actieve check-inlijsten gevonden."
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:32
msgid "Switch check-in list"
msgstr "Andere check-in-lijst kiezen"
msgstr "Andere inchecklijst kiezen"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:33
msgid "Search results"
@@ -251,7 +251,7 @@ msgstr "Bevestigd"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:47
msgid "Approval pending"
msgstr "Goedkeuring in behandeling"
msgstr "Goedkeuring in afwachting"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:48
msgid "Redeemed"
@@ -336,7 +336,7 @@ msgstr "Geldige tickets"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:70
msgid "Currently inside"
msgstr "Nu binnen"
msgstr "Op dit moment binnen"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:71
#: pretix/static/pretixcontrol/js/ui/question.js:136
@@ -406,8 +406,8 @@ msgstr "De aanvraag duurde te lang. Probeer het opnieuw."
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
"De server is op dit moment niet bereikbaar. Probeer het opnieuw. Foutcode: "
"{code}"
"De server is op dit moment niet bereikbaar. Probeer het alstublieft opnieuw. "
"Foutcode: {code}"
#: pretix/static/pretixbase/js/asynctask.js:216
msgid "We are processing your request …"
@@ -602,11 +602,11 @@ msgstr "Tekstvak"
#: pretix/static/pretixcontrol/js/ui/editor.js:913
msgid "Barcode area"
msgstr "Ruimte voor streepjescode"
msgstr "Barcode gebied"
#: pretix/static/pretixcontrol/js/ui/editor.js:915
msgid "Image area"
msgstr "Ruimte voor afbeelding"
msgstr "Afbeeldingsgebied"
#: pretix/static/pretixcontrol/js/ui/editor.js:917
msgid "Powered by pretix"
@@ -664,8 +664,8 @@ msgid ""
"Your color has insufficient contrast to white. Accessibility of your site "
"will be impacted."
msgstr ""
"Uw kleur heeft onvoldoende contrast met wit. Dit heeft invloed op de "
"toegankelijkheid van uw website."
"Uw kleur heeft te weinig contrast met wit. De toegankelijkheid van uw site "
"wordt negatief beïnvloed."
#: pretix/static/pretixcontrol/js/ui/main.js:443
#: pretix/static/pretixcontrol/js/ui/main.js:463
@@ -736,7 +736,7 @@ msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:49
msgid "Cart expired"
msgstr "Winkelwagen verlopen"
msgstr "Winkelwagen is verlopen"
#: pretix/static/pretixpresale/js/ui/cart.js:58
#: pretix/static/pretixpresale/js/ui/cart.js:84
@@ -936,12 +936,12 @@ msgstr "Momenteel niet beschikbaar"
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr "minimale bestelhoeveelheid: %s"
msgstr "minimale hoeveelheid om te bestellen: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:45
msgctxt "widget"
msgid "Close ticket shop"
msgstr "Sluit ticketwinkel"
msgstr "Sluit ticketverkoop"
#: pretix/static/pretixpresale/js/widget/widget.js:46
msgctxt "widget"
@@ -1160,51 +1160,51 @@ msgstr "zondag"
#: pretix/static/pretixpresale/js/widget/widget.js:94
msgid "January"
msgstr "januari"
msgstr "Januari"
#: pretix/static/pretixpresale/js/widget/widget.js:95
msgid "February"
msgstr "februari"
msgstr "Februari"
#: pretix/static/pretixpresale/js/widget/widget.js:96
msgid "March"
msgstr "maart"
msgstr "Maart"
#: pretix/static/pretixpresale/js/widget/widget.js:97
msgid "April"
msgstr "april"
msgstr "April"
#: pretix/static/pretixpresale/js/widget/widget.js:98
msgid "May"
msgstr "mei"
msgstr "Mei"
#: pretix/static/pretixpresale/js/widget/widget.js:99
msgid "June"
msgstr "juni"
msgstr "Juni"
#: pretix/static/pretixpresale/js/widget/widget.js:100
msgid "July"
msgstr "juli"
msgstr "Juli"
#: pretix/static/pretixpresale/js/widget/widget.js:101
msgid "August"
msgstr "augustus"
msgstr "Augustus"
#: pretix/static/pretixpresale/js/widget/widget.js:102
msgid "September"
msgstr "september"
msgstr "September"
#: pretix/static/pretixpresale/js/widget/widget.js:103
msgid "October"
msgstr "oktober"
msgstr "Oktober"
#: pretix/static/pretixpresale/js/widget/widget.js:104
msgid "November"
msgstr "november"
msgstr "November"
#: pretix/static/pretixpresale/js/widget/widget.js:105
msgid "December"
msgstr "december"
msgstr "December"
#~ msgid "Time zone:"
#~ msgstr "Tijdzone:"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -42,7 +42,7 @@
{% endif %}
<div id="invoice" class="profile-scope"
data-profiles-id="addresses_json"
data-address-information-url="{% url "js_helpers.address_form" %}?invoice=true&amp;organizer={{ event.organizer.slug|urlencode }}&amp;event={{ event.slug|urlencode }}&amp;locale={{ request.LANGUAGE_CODE }}">
data-address-information-url="{% url "js_helpers.address_form" %}?invoice=true&organizer={{ event.organizer.slug|urlencode }}&event={{ event.slug|urlencode }}">
<div class="panel-body">
{% if addresses_data %}
<div class="form-group profile-select-container js-do-not-copy-answers">

View File

@@ -36,7 +36,7 @@
</h4>
</summary>
<div id="invoice" class="panel-collapse"
data-address-information-url="{% url "js_helpers.address_form" %}?invoice=true&amp;organizer={{ event.organizer.slug|urlencode }}&amp;event={{ event.slug|urlencode }}&amp;locale={{ request.LANGUAGE_CODE }}">
data-address-information-url="{% url "js_helpers.address_form" %}?invoice=true&organizer={{ event.organizer.slug|urlencode }}&event={{ event.slug|urlencode }}">
<div class="panel-body">
{% if event.settings.invoice_address_explanation_text %}
<div>

View File

@@ -286,7 +286,6 @@ class SetPasswordView(FormView):
self.customer.is_verified = True
self.customer.save()
self.customer.log_action('pretix.customer.password.set', {})
self.customer.send_security_notice(_("Your password has been changed."))
messages.success(
self.request,
_('Your new password has been set! You can now use it to log in.'),
@@ -542,7 +541,6 @@ class ChangePasswordView(CustomerAccountBaseMixin, FormView):
customer.set_password(form.cleaned_data['password'])
customer.save()
messages.success(self.request, _('Your changes have been saved.'))
customer.send_security_notice(_("Your password has been changed."))
update_customer_session_auth_hash(self.request, customer)
return HttpResponseRedirect(self.get_success_url())
@@ -633,15 +631,11 @@ class ConfirmChangeView(View):
try:
with transaction.atomic():
old_email = customer.email
customer.email = data['email']
customer.save()
customer.log_action('pretix.customer.changed', {
'email': data['email']
})
msg = _('Your email address has been changed from {old_email} to {email}.').format(old_email=old_email, email=customer.email)
customer.send_security_notice(msg, email=old_email)
customer.send_security_notice(msg, email=customer.email)
except IntegrityError:
messages.success(request, _('Your email address has not been updated since the address is already in use '
'for another customer account.'))

View File

@@ -97,8 +97,7 @@ class UnlockHashView(EventViewMixin, View):
def get(self, request, *args, **kwargs):
hashes = request.session.get('pretix_unlock_hashes', [])
if kwargs.get('hash') not in hashes:
hashes.append(kwargs.get('hash'))
hashes.append(kwargs.get('hash'))
request.session['pretix_unlock_hashes'] = hashes
if 'voucher' in request.GET:

File diff suppressed because it is too large Load Diff

View File

@@ -5,7 +5,7 @@
"scripts": {},
"dependencies": {
"@babel/core": "^7.28.5",
"@babel/preset-env": "^7.29.0",
"@babel/preset-env": "^7.28.5",
"@rollup/plugin-babel": "^6.1.0",
"@rollup/plugin-node-resolve": "^16.0.3",
"vue": "^2.7.16",

View File

@@ -252,7 +252,7 @@ Vue.component('availbox', {
variation: Object
},
mounted: function() {
if (!this.$root.cart_exists && this.$root.itemnum === 1 && (!this.$root.categories[0].items[0].has_variations || this.$root.categories[0].items[0].variations.length < 2) && !this.$root.has_seating_plan ? 1 : 0) {
if (this.$root.itemnum === 1 && (!this.$root.categories[0].items[0].has_variations || this.$root.categories[0].items[0].variations.length < 2) && !this.$root.has_seating_plan ? 1 : 0) {
this.$refs.quantity.value = 1;
if (this.order_max === 1) {
this.$refs.quantity.checked = true;

View File

@@ -170,6 +170,7 @@ def test_queue_state_sent(env):
subject='Test',
body_plain='Test',
sender='sender@example.com',
headers={},
)
assert m.status == OutgoingMail.STATUS_QUEUED
mail_send_task.apply(kwargs={
@@ -187,6 +188,7 @@ def test_queue_state_permanent_failure(env):
subject='Test',
body_plain='Test',
sender='sender@example.com',
headers={},
)
assert m.status == OutgoingMail.STATUS_QUEUED
mail_send_task.apply(kwargs={
@@ -208,6 +210,7 @@ def test_queue_state_retry_failure(env, monkeypatch):
subject='Test',
body_plain='Test',
sender='sender@example.com',
headers={},
)
assert m.status == OutgoingMail.STATUS_QUEUED
mail_send_task.apply(kwargs={
@@ -233,6 +236,7 @@ def test_queue_state_foreign_key_handling():
subject='Test',
body_plain='Test',
sender='sender@example.com',
headers={},
)
mail_sent = OutgoingMail.objects.create(
organizer=o,
@@ -241,6 +245,7 @@ def test_queue_state_foreign_key_handling():
subject='Test',
body_plain='Test',
sender='sender@example.com',
headers={},
status=OutgoingMail.STATUS_SENT,
)

View File

@@ -164,7 +164,6 @@ def test_org_resetpw(env, client):
customer.refresh_from_db()
assert customer.check_password('PANioMR62')
assert customer.is_verified
assert len(djmail.outbox) == 2
@pytest.mark.django_db
@@ -624,7 +623,6 @@ def test_change_email(env, client):
customer.refresh_from_db()
assert customer.email == 'john@example.org'
assert len(djmail.outbox) == 1
assert djmail.outbox[0].to == ['john@example.com']
token = dumps({
'customer': customer.pk,
@@ -634,9 +632,6 @@ def test_change_email(env, client):
assert r.status_code == 302
customer.refresh_from_db()
assert customer.email == 'john@example.com'
assert len(djmail.outbox) == 3
assert djmail.outbox[1].to == ['john@example.org']
assert djmail.outbox[2].to == ['john@example.com']
@pytest.mark.django_db
@@ -678,7 +673,6 @@ def test_change_pw(env, client, client2):
r = client.get('/bigevents/account/password')
assert r.status_code == 200
assert len(djmail.outbox) == 1
# Client 2 got logged out
r = client2.post('/bigevents/account/password')