Compare commits

..

1 Commits

Author SHA1 Message Date
Kara Engelhardt
32faad5671 Use correct first page number in control pagination
This worked accidentally because page_obj.num_pages does not exists (page_obj.paginator.num_pages does) which made url_replace remove the page parameter
2026-03-19 11:24:49 +01:00
57 changed files with 1697 additions and 1668 deletions

View File

@@ -24,7 +24,7 @@ jobs:
name: Packaging
strategy:
matrix:
python-version: ["3.13"]
python-version: ["3.11"]
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}

View File

@@ -24,10 +24,10 @@ jobs:
name: Check gettext syntax
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.13
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: 3.13
python-version: 3.11
- uses: actions/cache@v4
with:
path: ~/.cache/pip
@@ -49,10 +49,10 @@ jobs:
name: Spellcheck
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.13
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: 3.13
python-version: 3.11
- uses: actions/cache@v4
with:
path: ~/.cache/pip

View File

@@ -24,10 +24,10 @@ jobs:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.13
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: 3.13
python-version: 3.11
- uses: actions/cache@v4
with:
path: ~/.cache/pip
@@ -44,10 +44,10 @@ jobs:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.13
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: 3.13
python-version: 3.11
- uses: actions/cache@v4
with:
path: ~/.cache/pip
@@ -64,10 +64,10 @@ jobs:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.13
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: 3.13
python-version: 3.11
- name: Install Dependencies
run: pip3 install licenseheaders
- name: Run licenseheaders

View File

@@ -23,15 +23,13 @@ jobs:
name: Tests
strategy:
matrix:
python-version: ["3.11", "3.13", "3.14"]
python-version: ["3.10", "3.11", "3.13"]
database: [sqlite, postgres]
exclude:
- database: sqlite
python-version: "3.10"
- database: sqlite
python-version: "3.11"
- database: sqlite
python-version: "3.12"
services:
postgres:
image: postgres:15
@@ -83,4 +81,4 @@ jobs:
file: src/coverage.xml
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
if: matrix.database == 'postgres' && matrix.python-version == '3.13'
if: matrix.database == 'postgres' && matrix.python-version == '3.11'

View File

@@ -3,7 +3,7 @@ name = "pretix"
dynamic = ["version"]
description = "Reinventing presales, one ticket at a time"
readme = "README.rst"
requires-python = ">=3.11"
requires-python = ">=3.10"
license = {file = "LICENSE"}
keywords = ["tickets", "web", "shop", "ecommerce"]
authors = [
@@ -19,11 +19,10 @@ classifiers = [
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
"Environment :: Web Environment",
"License :: OSI Approved :: GNU Affero General Public License v3",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Framework :: Django :: 5.2",
"Framework :: Django :: 4.2",
]
dependencies = [
@@ -37,7 +36,7 @@ dependencies = [
"css-inline==0.20.*",
"defusedcsv>=1.1.0",
"dnspython==2.*",
"Django[argon2]==5.2.*",
"Django[argon2]==4.2.*,>=4.2.26",
"django-bootstrap3==26.1",
"django-compressor==4.6.0",
"django-countries==8.2.*",
@@ -60,7 +59,7 @@ dependencies = [
"dnspython==2.8.*",
"drf_ujson2==1.7.*",
"geoip2==5.*",
"importlib_metadata==9.*", # Polyfill, we can probably drop this once we require Python 3.10+
"importlib_metadata==8.*", # Polyfill, we can probably drop this once we require Python 3.10+
"isoweek",
"jsonschema",
"kombu==5.6.*",
@@ -93,7 +92,7 @@ dependencies = [
"redis==7.1.*",
"reportlab==4.4.*",
"requests==2.32.*",
"sentry-sdk==2.56.*",
"sentry-sdk==2.54.*",
"sepaxml==2.7.*",
"stripe==7.9.*",
"text-unidecode==1.*",

View File

@@ -45,6 +45,7 @@ import pycountry
from django import forms
from django.conf import settings
from django.contrib import messages
from django.contrib.gis.geoip2 import GeoIP2
from django.core.exceptions import ValidationError
from django.core.files.uploadedfile import SimpleUploadedFile
from django.core.validators import (
@@ -101,7 +102,6 @@ from pretix.helpers.countries import (
from pretix.helpers.escapejson import escapejson_attr
from pretix.helpers.http import get_client_ip
from pretix.helpers.i18n import get_format_without_seconds
from pretix.helpers.security import get_geoip
from pretix.presale.signals import question_form_fields
logger = logging.getLogger(__name__)
@@ -393,7 +393,7 @@ class WrappedPhoneNumberPrefixWidget(PhoneNumberPrefixWidget):
def guess_country_from_request(request, event):
if settings.HAS_GEOIP:
g = get_geoip()
g = GeoIP2()
try:
res = g.country(get_client_ip(request))
if res['country_code'] and len(res['country_code']) == 2:

View File

@@ -36,9 +36,8 @@ from django.core.management.commands.makemigrations import Command as Parent
from ._migrations import monkeypatch_migrations
monkeypatch_migrations()
class Command(Parent):
def handle(self, *args, **kwargs):
monkeypatch_migrations()
return super().handle(*args, **kwargs)
pass

View File

@@ -64,7 +64,7 @@ class Command(BaseCommand):
if not periodic_task.receivers or periodic_task.sender_receivers_cache.get(self) is NO_RECEIVERS:
return
for receiver in periodic_task._live_receivers(self)[0]:
for receiver in periodic_task._live_receivers(self):
name = f'{receiver.__module__}.{receiver.__name__}'
if options['list_tasks']:
print(name)

View File

@@ -41,20 +41,16 @@ class Migration(migrations.Migration):
name='datetime',
field=models.DateTimeField(),
),
migrations.AddIndex(
'logentry',
models.Index(fields=('datetime', 'id'), name="pretixbase__datetim_b1fe5a_idx"),
migrations.AlterIndexTogether(
name='logentry',
index_together={('datetime', 'id')},
),
migrations.AddIndex(
'order',
models.Index(fields=["datetime", "id"], name="pretixbase__datetim_66aff0_idx"),
migrations.AlterIndexTogether(
name='order',
index_together={('datetime', 'id'), ('last_modified', 'id')},
),
migrations.AddIndex(
'order',
models.Index(fields=["last_modified", "id"], name="pretixbase__last_mo_4ebf8b_idx"),
),
migrations.AddIndex(
'transaction',
models.Index(fields=('datetime', 'id'), name="pretixbase__datetim_b20405_idx"),
migrations.AlterIndexTogether(
name='transaction',
index_together={('datetime', 'id')},
),
]

View File

@@ -61,10 +61,7 @@ class Migration(migrations.Migration):
options={
'ordering': ('identifier', 'type', 'organizer'),
'unique_together': {('identifier', 'type', 'organizer')},
'indexes': [
models.Index(fields=('identifier', 'type', 'organizer'), name='reusable_medium_organizer_index'),
models.Index(fields=('updated', 'id'), name="pretixbase__updated_093277_idx")
],
'index_together': {('identifier', 'type', 'organizer'), ('updated', 'id')},
},
bases=(models.Model, pretix.base.models.base.LoggingMixin),
),

View File

@@ -9,6 +9,31 @@ class Migration(migrations.Migration):
]
operations = [
migrations.RenameIndex(
model_name="logentry",
new_name="pretixbase__datetim_b1fe5a_idx",
old_fields=("datetime", "id"),
),
migrations.RenameIndex(
model_name="order",
new_name="pretixbase__datetim_66aff0_idx",
old_fields=("datetime", "id"),
),
migrations.RenameIndex(
model_name="order",
new_name="pretixbase__last_mo_4ebf8b_idx",
old_fields=("last_modified", "id"),
),
migrations.RenameIndex(
model_name="reusablemedium",
new_name="pretixbase__updated_093277_idx",
old_fields=("updated", "id"),
),
migrations.RenameIndex(
model_name="transaction",
new_name="pretixbase__datetim_b20405_idx",
old_fields=("datetime", "id"),
),
migrations.AlterField(
model_name="attendeeprofile",
name="id",

View File

@@ -1,6 +1,6 @@
# Generated by Django 4.2.10 on 2024-04-02 15:16
from django.db import migrations, models
from django.db import migrations
class Migration(migrations.Migration):
@@ -10,8 +10,8 @@ class Migration(migrations.Migration):
]
operations = [
migrations.RemoveIndex(
"reusablemedium",
'reusable_medium_organizer_index',
migrations.AlterIndexTogether(
name="reusablemedium",
index_together=set(),
),
]

View File

@@ -88,7 +88,7 @@ class LogEntry(models.Model):
class Meta:
ordering = ('-datetime', '-id')
indexes = [models.Index(fields=["datetime", "id"], name="pretixbase__datetim_b1fe5a_idx")]
indexes = [models.Index(fields=["datetime", "id"])]
def display(self):
from pretix.base.logentrytype_registry import log_entry_types

View File

@@ -122,7 +122,7 @@ class ReusableMedium(LoggedModel):
class Meta:
unique_together = (("identifier", "type", "organizer"),)
indexes = [
models.Index(fields=("updated", "id"), name="pretixbase__updated_093277_idx"),
models.Index(fields=("updated", "id")),
]
ordering = "identifier", "type", "organizer"

View File

@@ -336,8 +336,8 @@ class Order(LockModel, LoggedModel):
verbose_name_plural = _("Orders")
ordering = ("-datetime", "-pk")
indexes = [
models.Index(fields=["datetime", "id"], name="pretixbase__datetim_66aff0_idx"),
models.Index(fields=["last_modified", "id"], name="pretixbase__last_mo_4ebf8b_idx"),
models.Index(fields=["datetime", "id"]),
models.Index(fields=["last_modified", "id"]),
]
constraints = [
models.UniqueConstraint(fields=["organizer", "code"], name="order_organizer_code_uniq"),
@@ -3080,7 +3080,7 @@ class Transaction(models.Model):
class Meta:
ordering = 'datetime', 'pk'
indexes = [
models.Index(fields=['datetime', 'id'], name="pretixbase__datetim_b20405_idx")
models.Index(fields=['datetime', 'id'])
]
def save(self, *args, **kwargs):

View File

@@ -100,7 +100,7 @@ def primary_font_kwargs():
choices = [('Open Sans', 'Open Sans')]
choices += sorted([
(a, FontSelect.FontOption(title=a, data=v)) for a, v in get_fonts(pdf_support_required=False).items()
(a, {"title": a, "data": v}) for a, v in get_fonts(pdf_support_required=False).items()
], key=lambda a: a[0])
return {
'choices': choices,
@@ -4148,14 +4148,6 @@ def validate_event_settings(event, settings_dict):
)
]}
)
if (
settings_dict.get('invoice_address_from_vat_id') and
settings_dict.get('invoice_address_from_country') and
settings_dict.get('invoice_address_from_country') not in VAT_ID_COUNTRIES
):
raise ValidationError({
'invoice_address_from_vat_id': _('VAT-ID is not supported for "{}".').format(settings_dict.get('invoice_address_from_country'))
})
payment_term_last = settings_dict.get('payment_term_last')
if payment_term_last and event.presale_end:

View File

@@ -32,7 +32,6 @@
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under the License.
import logging
import warnings
from typing import Any, Callable, Generic, List, Tuple, TypeVar
@@ -49,8 +48,6 @@ from .plugins import (
PLUGIN_LEVEL_ORGANIZER,
)
logger = logging.getLogger(__name__)
app_cache = {}
T = TypeVar('T')
@@ -63,25 +60,23 @@ def _populate_app_cache():
def get_defining_app(o):
# If sentry packed this in a wrapper, unpack that
module = getattr(o, "__module__", None)
if module and "sentry" in module:
if "sentry" in o.__module__:
o = o.__wrapped__
if hasattr(o, "__mocked_app"):
return o.__mocked_app
# Find the Django application this belongs to
searchpath = module or getattr(o.__class__, "__module__", None) or ""
searchpath = o.__module__
# Core modules are always active
if searchpath and any(searchpath.startswith(cm) for cm in settings.CORE_MODULES):
if any(searchpath.startswith(cm) for cm in settings.CORE_MODULES):
return 'CORE'
if not app_cache:
_populate_app_cache()
app = None
while searchpath:
while True:
app = app_cache.get(searchpath)
if "." not in searchpath or app:
break
@@ -162,7 +157,7 @@ class PluginSignal(Generic[T], django.dispatch.Signal):
if not app_cache:
_populate_app_cache()
for receiver in self._live_receivers(sender)[0]:
for receiver in self._sorted_receivers(sender):
if self._is_receiver_active(sender, receiver):
response = receiver(signal=self, sender=sender, **named)
responses.append((receiver, response))
@@ -184,7 +179,7 @@ class PluginSignal(Generic[T], django.dispatch.Signal):
if not app_cache:
_populate_app_cache()
for receiver in self._live_receivers(sender)[0]:
for receiver in self._sorted_receivers(sender):
if self._is_receiver_active(sender, receiver):
named[chain_kwarg_name] = response
response = receiver(signal=self, sender=sender, **named)
@@ -209,7 +204,7 @@ class PluginSignal(Generic[T], django.dispatch.Signal):
if not app_cache:
_populate_app_cache()
for receiver in self._live_receivers(sender)[0]:
for receiver in self._sorted_receivers(sender):
if self._is_receiver_active(sender, receiver):
try:
response = receiver(signal=self, sender=sender, **named)
@@ -219,35 +214,17 @@ class PluginSignal(Generic[T], django.dispatch.Signal):
responses.append((receiver, response))
return responses
def asend(self, sender: T, **named):
raise NotImplementedError() # NOQA
def asend_robust(self, sender: T, **named):
raise NotImplementedError() # NOQA
def _live_receivers(self, sender):
orig_list, orig_async_list = super()._live_receivers(sender)
if orig_async_list:
logger.error('Async receivers are not supported.')
raise NotImplementedError
def _getattr_fallback_to_class(obj, key):
return getattr(obj, key, getattr(obj.__class__, key))
def _is_core_module(receiver):
m = _getattr_fallback_to_class(receiver, "__module__")
return any(m.startswith(c) for c in settings.CORE_MODULES)
def _sorted_receivers(self, sender):
orig_list = self._live_receivers(sender)
sorted_list = sorted(
orig_list,
key=lambda receiver: (
0 if _is_core_module(receiver) else 1,
_getattr_fallback_to_class(receiver, "__module__"),
_getattr_fallback_to_class(receiver, "__name__"),
0 if any(receiver.__module__.startswith(m) for m in settings.CORE_MODULES) else 1,
receiver.__module__,
receiver.__name__,
)
)
return sorted_list, []
return sorted_list
class EventPluginSignal(PluginSignal[Event]):
@@ -323,41 +300,23 @@ class GlobalSignal(django.dispatch.Signal):
if not self.receivers or self.sender_receivers_cache.get(sender) is NO_RECEIVERS:
return response
for receiver in self._live_receivers(sender)[0]:
for receiver in self._live_receivers(sender):
named[chain_kwarg_name] = response
response = receiver(signal=self, sender=sender, **named)
return response
def asend(self, sender: T, **named):
raise NotImplementedError() # NOQA
def asend_robust(self, sender: T, **named):
raise NotImplementedError() # NOQA
def _live_receivers(self, sender):
# Ensure consistent sorting of receivers
orig_list, orig_async_list = super()._live_receivers(sender)
if orig_async_list:
logger.error('Async receivers are not supported.')
raise NotImplementedError
def _getattr_fallback_to_class(obj, key):
return getattr(obj, key, getattr(obj.__class__, key))
def _is_core_module(receiver):
m = _getattr_fallback_to_class(receiver, "__module__")
return any(m.startswith(c) for c in settings.CORE_MODULES)
orig_list = super()._live_receivers(sender)
sorted_list = sorted(
orig_list,
key=lambda receiver: (
0 if _is_core_module(receiver) else 1,
_getattr_fallback_to_class(receiver, "__module__"),
_getattr_fallback_to_class(receiver, "__name__"),
0 if any(receiver.__module__.startswith(m) for m in settings.CORE_MODULES) else 1,
receiver.__module__,
receiver.__name__,
)
)
return sorted_list, []
return sorted_list
class DeprecatedSignal(GlobalSignal):

View File

@@ -34,7 +34,6 @@
import datetime
import os
from dataclasses import dataclass
from django import forms
from django.conf import settings
@@ -421,11 +420,6 @@ class SplitDateTimeField(forms.SplitDateTimeField):
class FontSelect(forms.RadioSelect):
option_template_name = 'pretixcontrol/font_option.html'
@dataclass
class FontOption:
title: str
data: str
class ItemMultipleChoiceField(SafeModelMultipleChoiceField):
def label_from_instance(self, obj):

View File

@@ -63,7 +63,7 @@ from pretix.base.forms import (
from pretix.base.models import Event, Organizer, TaxRule, Team
from pretix.base.models.event import EventFooterLink, EventMetaValue, SubEvent
from pretix.base.models.organizer import TeamQuerySet
from pretix.base.models.tax import TAX_CODE_LISTS, VAT_ID_COUNTRIES
from pretix.base.models.tax import TAX_CODE_LISTS
from pretix.base.reldate import RelativeDateField, RelativeDateTimeField
from pretix.base.services.placeholders import FormPlaceholderMixin
from pretix.base.settings import (
@@ -73,8 +73,8 @@ from pretix.base.settings import (
)
from pretix.base.validators import multimail_validate
from pretix.control.forms import (
FontSelect, MultipleLanguagesWidget, SalesChannelCheckboxSelectMultiple,
SlugWidget, SplitDateTimeField, SplitDateTimePickerWidget,
MultipleLanguagesWidget, SalesChannelCheckboxSelectMultiple, SlugWidget,
SplitDateTimeField, SplitDateTimePickerWidget,
)
from pretix.control.forms.widgets import Select2
from pretix.helpers.countries import CachedCountries
@@ -531,13 +531,6 @@ class EventUpdateForm(I18nModelForm):
class EventSettingsValidationMixin:
def clean_invoice_address_from_vat_id(self):
value = self.cleaned_data.get('invoice_address_from_vat_id')
country = self.cleaned_data.get('invoice_address_from_country')
if value and country and country not in VAT_ID_COUNTRIES:
return None
return value
def clean(self):
data = super().clean()
settings_dict = self.obj.settings.freeze()
@@ -729,7 +722,7 @@ class EventSettingsForm(EventSettingsValidationMixin, FormPlaceholderMixin, Sett
del self.fields['event_list_filters']
del self.fields['event_calendar_future_only']
self.fields['primary_font'].choices = [('Open Sans', 'Open Sans')] + sorted([
(a, FontSelect.FontOption(title=a, data=v)) for a, v in get_fonts(self.event, pdf_support_required=False).items()
(a, {"title": a, "data": v}) for a, v in get_fonts(self.event, pdf_support_required=False).items()
], key=lambda a: a[0])
# create "virtual" fields for better UX when editing <name>_asked and <name>_required fields

View File

@@ -1528,130 +1528,6 @@ class SubEventFilterForm(FilterForm):
return self.event.organizer.meta_properties.filter(filter_allowed=True)
class QuotaFilterForm(FilterForm):
orders = {
'-date': ('-subevent__date_from', 'name', 'pk'),
'date': ('subevent__date_from', '-name', '-pk'),
'size': ('size', 'name', 'pk'),
'-size': ('-size', '-name', '-pk'),
'name': ('name', 'pk'),
'-name': ('-name', '-pk'),
}
subevent = forms.ModelChoiceField(
label=pgettext_lazy('subevent', 'Date'),
queryset=SubEvent.objects.none(),
required=False,
empty_label=pgettext_lazy('subevent', 'All dates')
)
date_from = forms.DateField(
label=_('Date from'),
required=False,
widget=DatePickerWidget({
'placeholder': _('Date from'),
}),
)
date_until = forms.DateField(
label=_('Date until'),
required=False,
widget=DatePickerWidget({
'placeholder': _('Date until'),
}),
)
time_from = forms.TimeField(
label=_('Start time from'),
required=False,
widget=TimePickerWidget({}),
)
time_until = forms.TimeField(
label=_('Start time until'),
required=False,
widget=TimePickerWidget({}),
)
weekday = forms.MultipleChoiceField(
label=_('Weekday'),
choices=(
('2', _('Monday')),
('3', _('Tuesday')),
('4', _('Wednesday')),
('5', _('Thursday')),
('6', _('Friday')),
('7', _('Saturday')),
('1', _('Sunday')),
),
widget=forms.CheckboxSelectMultiple,
required=False
)
query = forms.CharField(
label=_('Quota name'),
widget=forms.TextInput(),
required=False
)
def __init__(self, *args, **kwargs):
self.event = kwargs.pop('event')
super().__init__(*args, **kwargs)
if self.event.has_subevents:
self.fields['date_from'].widget = DatePickerWidget()
self.fields['date_until'].widget = DatePickerWidget()
self.fields['subevent'].queryset = self.event.subevents.all()
self.fields['subevent'].widget = Select2(
attrs={
'data-model-select2': 'event',
'data-select2-url': reverse('control:event.subevents.select2', kwargs={
'event': self.event.slug,
'organizer': self.event.organizer.slug,
}),
'data-placeholder': pgettext_lazy('subevent', 'All dates')
}
)
self.fields['subevent'].widget.choices = self.fields['subevent'].choices
else:
del self.fields['subevent']
del self.fields['date_from']
del self.fields['date_until']
del self.fields['time_from']
del self.fields['time_until']
del self.fields['weekday']
def filter_qs(self, qs):
fdata = self.cleaned_data
if fdata.get('weekday'):
qs = qs.annotate(wday=ExtractWeekDay('subevent__date_from')).filter(wday__in=fdata.get('weekday'))
if fdata.get('query'):
query = fdata.get('query')
qs = qs.filter(name__icontains=query)
if fdata.get('date_until'):
date_end = make_aware(datetime.combine(
fdata.get('date_until') + timedelta(days=1),
time(hour=0, minute=0, second=0, microsecond=0)
), get_current_timezone())
qs = qs.filter(
Q(subevent__date_to__isnull=True, subevent__date_from__lt=date_end) |
Q(subevent__date_to__isnull=False, subevent__date_to__lt=date_end)
)
if fdata.get('date_from'):
date_start = make_aware(datetime.combine(
fdata.get('date_from'),
time(hour=0, minute=0, second=0, microsecond=0)
), get_current_timezone())
qs = qs.filter(subevent__date_from__gte=date_start)
if fdata.get('time_until'):
qs = qs.filter(subevent__date_from__time__lte=fdata.get('time_until'))
if fdata.get('time_from'):
qs = qs.filter(subevent__date_from__time__gte=fdata.get('time_from'))
if fdata.get('ordering'):
qs = qs.order_by(*get_deterministic_ordering(Quota, self.get_order_by()))
else:
qs = qs.order_by('-subevent__date_from', 'name', 'pk')
return qs
class OrganizerFilterForm(FilterForm):
orders = {
'slug': 'slug',

View File

@@ -43,7 +43,6 @@ from django.core.exceptions import ValidationError
from django.db.models import Max, Q
from django.forms import ChoiceField, RadioSelect
from django.forms.formsets import DELETION_FIELD_NAME
from django.forms.utils import ErrorDict
from django.urls import reverse
from django.utils.functional import cached_property
from django.utils.html import escape, format_html
@@ -376,49 +375,6 @@ class QuotaForm(I18nModelForm):
return inst
class QuotaBulkEditForm(QuotaForm):
def __init__(self, *args, **kwargs):
self.mixed_values = kwargs.pop('mixed_values')
self.queryset = kwargs.pop('queryset')
super().__init__(**kwargs)
self.fields.pop("subevent", None) # Would add extra complexity and it's hard to imagine a use case for that
def save(self, commit=True):
objs = list(self.queryset)
fields = set()
for k in self.fields:
cb_val = self.prefix + k
if cb_val not in self.data.getlist('_bulk'):
continue
fields.add(k)
for obj in objs:
if k == 'itemvars':
selected_items = set(list(self.event.items.filter(id__in=[
i.split('-')[0] for i in self.cleaned_data['itemvars']
])))
selected_variations = list(ItemVariation.objects.filter(item__event=self.event, id__in=[
i.split('-')[1] for i in self.cleaned_data['itemvars'] if '-' in i
]))
obj.items.set(selected_items)
obj.variations.set(selected_variations)
else:
setattr(obj, k, self.cleaned_data[k])
fields = [f for f in fields if f != 'itemvars']
if fields:
Quota.objects.bulk_update(objs, fields, 200)
def full_clean(self):
if len(self.data) == 0:
# form wasn't submitted
self._errors = ErrorDict()
return
super().full_clean()
class ItemCreateForm(I18nModelForm):
NONE = 'none'
EXISTING = 'existing'

View File

@@ -363,7 +363,7 @@ def get_global_navigation(request):
'icon': 'dashboard',
},
]
if request.user.is_in_any_teams or request.user.is_staff:
if request.user.is_in_any_teams:
nav += [
{
'label': _('Events'),

View File

@@ -1,49 +0,0 @@
{% extends "pretixcontrol/event/base.html" %}
{% load i18n %}
{% load bootstrap3 %}
{% block content %}
<h1>
{% trans "Change multiple quotas" %}
<small>
{% blocktrans trimmed with number=quotas.count %}
{{ number }} selected
{% endblocktrans %}
</small>
</h1>
<form class="form-horizontal" action="" method="post">
{% csrf_token %}
{% bootstrap_form_errors form %}
<div class="hidden">
{% for d in quotas %}
<input type="hidden" name="quota" value="{{ d.pk }}">
{% endfor %}
</div>
<fieldset>
<legend>{% trans "General information" %}</legend>
{% bootstrap_field form.name layout="bulkedit" %}
{% bootstrap_field form.size layout="bulkedit" %}
</fieldset>
<fieldset>
<legend>{% trans "Items" %}</legend>
<p>
{% blocktrans trimmed %}
Please select the products or product variations this quota should be applied to. If you apply two
quotas to the same product, it will only be available if <strong>both</strong> quotas have capacity
left.
{% endblocktrans %}
</p>
{% bootstrap_field form.itemvars layout="bulkedit" %}
</fieldset>
<fieldset>
<legend>{% trans "Advanced options" %}</legend>
{% bootstrap_field form.close_when_sold_out layout="bulkedit" %}
{% bootstrap_field form.release_after_exit layout="bulkedit" %}
{% bootstrap_field form.ignore_for_event_availability layout="bulkedit" %}
</fieldset>
<div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save">
{% trans "Save" %}
</button>
</div>
</form>
{% endblock %}

View File

@@ -1,30 +0,0 @@
{% extends "pretixcontrol/event/base.html" %}
{% load i18n %}
{% load bootstrap3 %}
{% block title %}{% trans "Delete quotas" %}{% endblock %}
{% block content %}
<h1>{% trans "Delete quotas" %}</h1>
<form action="" method="post" class="form-horizontal">
{% csrf_token %}
{% if allowed %}
<p>{% blocktrans %}Are you sure you want to delete the following quotas?{% endblocktrans %}</p>
<ul>
{% for q in allowed %}
<li>
{{ q }} {% if q.subevent %}({{ q.subevent }}){% endif %}
<input type="hidden" name="quota" value="{{ q.pk }}">
</li>
{% endfor %}
</ul>
{% endif %}
<div class="form-group submit-group">
<a href="{% url "control:event.items.quotas" organizer=request.event.organizer.slug event=request.event.slug %}"
class="btn btn-default btn-cancel">
{% trans "Cancel" %}
</a>
<button type="submit" class="btn btn-danger btn-save" value="delete_confirm" name="action">
{% trans "Delete" %}
</button>
</div>
</form>
{% endblock %}

View File

@@ -1,7 +1,6 @@
{% extends "pretixcontrol/items/base.html" %}
{% load i18n %}
{% load urlreplace %}
{% load bootstrap3 %}
{% block title %}{% trans "Quotas" %}{% endblock %}
{% block inside %}
<h1>{% trans "Quotas" %}</h1>
@@ -14,7 +13,12 @@
number of a specific ticket type at the same time.
{% endblocktrans %}
</p>
{% if quotas|length == 0 and not filter_form.filtered %}
{% if request.event.has_subevents %}
<form class="form-inline helper-display-inline" action="" method="get">
{% include "pretixcontrol/event/fragment_subevent_choice_simple.html" %}
</form>
{% endif %}
{% if quotas|length == 0 %}
<div class="empty-collection">
<p>
{% if request.GET.subevent %}
@@ -32,160 +36,79 @@
{% endif %}
</div>
{% else %}
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">
{% trans "Filter" %}
</h3>
</div>
<form class="panel-body filter-form" action="" method="get">
<div class="row">
<div class="{% if not filter_form.subevent %}col-lg-6{% else %}col-lg-2{% endif %} col-md-6 col-sm-6 col-xs-12">
{% bootstrap_field filter_form.query %}
</div>
{% if filter_form.subevent %}
<div class="col-lg-2 col-md-6 col-md-2 col-sm-6 col-xs-12">
{% bootstrap_field filter_form.subevent %}
</div>
<div class="col-lg-2 col-md-3 col-sm-6 col-xs-12">
{% bootstrap_field filter_form.date_from %}
</div>
<div class="col-lg-2 col-md-3 col-sm-6 col-xs-12">
{% bootstrap_field filter_form.date_until %}
</div>
<div class="col-lg-2 col-md-3 col-sm-6 col-xs-12">
{% bootstrap_field filter_form.time_from %}
</div>
<div class="col-lg-2 col-md-3 col-sm-6 col-xs-12">
{% bootstrap_field filter_form.time_until %}
</div>
<div class="col-xs-12 one-line-checkboxes">
{% bootstrap_field filter_form.weekday %}
</div>
{% endif %}
</div>
<div class="text-right flip">
<button class="btn btn-primary btn-lg" type="submit">
<span class="fa fa-filter"></span>
{% trans "Filter" %}
</button>
</div>
</form>
</div>
{% if 'event.items:write' in request.eventpermset %}
<p>
<a href="{% url "control:event.items.quotas.add" organizer=request.event.organizer.slug event=request.event.slug %}" class="btn btn-default"><i class="fa fa-plus"></i> {% trans "Create a new quota" %}
</a>
</p>
{% endif %}
<form action="{% url "control:event.items.quotas.bulkaction" organizer=request.event.organizer.slug event=request.event.slug %}" method="post">
{% csrf_token %}
{% for field in filter_form %}
{{ field.as_hidden }}
{% endfor %}
<div class="table-responsive">
<table class="table table-hover table-quotas">
<thead>
<tr>
{% if "event.items:write" in request.eventpermset %}
<th>
<label aria-label="{% trans "select all rows for batch-operation" %}" class="batch-select-label"><input type="checkbox" data-toggle-table/></label>
</th>
{% endif %}
<th>{% trans "Quota name" %}
<a href="?{% url_replace request 'filter-ordering' '-name' %}"><i class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'filter-ordering' 'name' %}"><i class="fa fa-caret-up"></i></a>
<div class="table-responsive">
<table class="table table-hover table-quotas">
<thead>
<tr>
<th>{% trans "Quota name" %}
<a href="?{% url_replace request 'ordering' '-name' %}"><i class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'ordering' 'name' %}"><i class="fa fa-caret-up"></i></a>
</th>
<th>{% trans "Products" %}</th>
{% if request.event.has_subevents %}
<th>{% trans "Date" context "subevent" %}
<a href="?{% url_replace request 'ordering' '-date' %}"><i class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'ordering' 'date' %}"><i class="fa fa-caret-up"></i></a>
</th>
<th>{% trans "Products" %}</th>
{% if request.event.has_subevents %}
<th>{% trans "Date" context "subevent" %}
<a href="?{% url_replace request 'filter-ordering' '-date' %}"><i class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'filter-ordering' 'date' %}"><i class="fa fa-caret-up"></i></a>
</th>
{% endif %}
<th>{% trans "Total capacity" %}
<a href="?{% url_replace request 'filter-ordering' '-size' %}"><i class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'filter-ordering' 'size' %}"><i class="fa fa-caret-up"></i></a>
</th>
<th>{% trans "Capacity left" %}</th>
<th class="action-col-2"></th>
</tr>
{% if "event.items:write" in request.eventpermset and page_obj.paginator.num_pages > 1 %}
<tr class="table-select-all warning hidden">
<td>
<input type="checkbox" name="__ALL" id="__all" data-results-total="{{ page_obj.paginator.count }}">
</td>
<td colspan="6">
<label for="__all">
{% trans "Select all results on other pages as well" %}
</label>
</td>
</tr>
{% endif %}
</thead>
<tbody>
{% for q in quotas %}
<tr>
{% if "event.items:write" in request.eventpermset %}
<td>
<label aria-label="{% trans "select row for batch-operation" %}" class="batch-select-label"><input type="checkbox" name="quota" class="batch-select-checkbox" value="{{ q.pk }}"/></label>
</td>
<th>{% trans "Total capacity" %}
<a href="?{% url_replace request 'ordering' '-size' %}"><i class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'ordering' 'size' %}"><i class="fa fa-caret-up"></i></a>
</th>
<th>{% trans "Capacity left" %}</th>
<th class="action-col-2"></th>
</tr>
</thead>
<tbody>
{% for q in quotas %}
<tr>
<td>
<strong><a href="{% url "control:event.items.quotas.show" organizer=request.event.organizer.slug event=request.event.slug quota=q.id %}">{{ q.name }}</a></strong>
{% if q.ignore_for_event_availability %}
<span class="fa fa-eye-slash text-muted" data-toggle="tooltip" title="{% trans "Ignore this quota when determining event availability" %}"></span>
{% endif %}
</td>
<td>
<ul>
{% for item in q.cached_items %}
{% if not item.has_variations %}
<li><a href="{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=item.id %}">{{ item }}</a></li>
{% endif %}
{% endfor %}
{% for v in q.variations.all %}
<li><a href="{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=v.item.id %}#tab-0-3-open">
{{ v.item }} {{ v }}</a></li>
{% endfor %}
</ul>
</td>
{% if request.event.has_subevents %}
<td>
<strong><a href="{% url "control:event.items.quotas.show" organizer=request.event.organizer.slug event=request.event.slug quota=q.id %}">{{ q.name }}</a></strong>
{% if q.ignore_for_event_availability %}
<span class="fa fa-eye-slash text-muted" data-toggle="tooltip" title="{% trans "Ignore this quota when determining event availability" %}"></span>
{% endif %}
{{ q.subevent.name }} {{ q.subevent.get_date_range_display_with_times }}
</td>
<td>
<ul>
{% for item in q.cached_items %}
{% if not item.has_variations %}
<li><a href="{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=item.id %}">{{ item }}</a></li>
{% endif %}
{% endfor %}
{% for v in q.variations.all %}
<li><a href="{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=v.item.id %}#tab-0-3-open">
{{ v.item }} {{ v }}</a></li>
{% endfor %}
</ul>
</td>
{% if request.event.has_subevents %}
<td>
{{ q.subevent.name }} {{ q.subevent.get_date_range_display_with_times }}
</td>
{% endif %}
<td>{% if q.size == None %}Unlimited{% else %}{{ q.size }}{% endif %}</td>
<td>{% include "pretixcontrol/items/fragment_quota_availability.html" with availability=q.cached_avail closed=q.closed %}</td>
<td class="text-right flip">
{% if 'event.items:write' in request.eventpermset %}
<a href="{% url "control:event.items.quotas.edit" organizer=request.event.organizer.slug event=request.event.slug quota=q.id %}" class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a>
<a href="{% url "control:event.items.quotas.add" organizer=request.event.organizer.slug event=request.event.slug %}?copy_from={{ q.id }}"
class="btn btn-sm btn-default" title="{% trans "Clone" %}" data-toggle="tooltip">
<span class="fa fa-copy"></span>
</a>
<a href="{% url "control:event.items.quotas.delete" organizer=request.event.organizer.slug event=request.event.slug quota=q.id %}" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a>
{% endif %}
<td>{% if q.size == None %}Unlimited{% else %}{{ q.size }}{% endif %}</td>
<td>{% include "pretixcontrol/items/fragment_quota_availability.html" with availability=q.cached_avail closed=q.closed %}</td>
<td class="text-right flip">
{% if 'event.items:write' in request.eventpermset %}
<a href="{% url "control:event.items.quotas.edit" organizer=request.event.organizer.slug event=request.event.slug quota=q.id %}" class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a>
<a href="{% url "control:event.items.quotas.add" organizer=request.event.organizer.slug event=request.event.slug %}?copy_from={{ q.id }}"
class="btn btn-sm btn-default" title="{% trans "Clone" %}" data-toggle="tooltip">
<span class="fa fa-copy"></span>
</a>
<a href="{% url "control:event.items.quotas.delete" organizer=request.event.organizer.slug event=request.event.slug quota=q.id %}" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a>
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% if "event.items:write" in request.eventpermset %}
<div class="batch-select-actions">
<button type="submit" class="btn btn-danger btn-save" name="action" value="delete">
<i class="fa fa-trash"></i>{% trans "Delete selected" %}
</button>
<button type="submit" class="btn btn-primary btn-save" name="action" value="edit"
formaction="{% url "control:event.items.quotas.bulkedit" organizer=request.event.organizer.slug event=request.event.slug %}">
<i class="fa fa-edit"></i>{% trans "Edit selected" %}
</button>
</div>
{% endif %}
</form>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endif %}
{% include "pretixcontrol/pagination.html" %}
{% endblock %}

View File

@@ -8,45 +8,7 @@
{% csrf_token %}
{% bootstrap_form_errors form %}
{% bootstrap_field form.name layout='horizontal' %}
<div class="form-group{% if form.devicetype.errors %} has-error{% endif %}">
<label class="col-md-3 control-label">{% trans "Device type" %}</label>
<div class="col-md-9">
<div>
<div class="big-radio radio">
<label>
<input type="radio" required value="totp" name="{{ form.devicetype.html_name }}" {% if form.devicetype.value == "totp" %}checked{% endif %}>
<strong>{% trans "Smartphone with Authenticator app" %}</strong><br>
<div class="help-block">
{% blocktrans trimmed %}
Use your smartphone with any Time-based One-Time-Password app like freeOTP, Google Authenticator or Proton Authenticator.
{% endblocktrans %}
</div>
</label>
</div>
<div class="big-radio radio">
<label>
<input type="radio" required value="webauthn" name="{{ form.devicetype.html_name }}" {% if form.devicetype.value == "webauthn" %}checked{% endif %}>
<strong>{% trans "WebAuthn-compatible hardware token" %}</strong><br>
<div class="help-block">
{% blocktrans trimmed %}
Use a hardware token like the Yubikey, or other biometric authentication like fingerprint or face recognition.
{% endblocktrans %}
</div>
</label>
</div>
</div>
{% if form.devicetype.errors %}
<div class="help-block">
{% for error in form.devicetype.errors %}
<p>{{ error|escape }}</p>
{% endfor %}
</div>
{% endif %}
</div>
</div>
{% bootstrap_field form.devicetype layout='horizontal' %}
<div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save">
{% trans "Continue" %}

View File

@@ -28,6 +28,11 @@
{% trans "iOS (iTunes)" %}
</a>
</li>
<li>
<a href="https://m.google.com/authenticator">
{% trans "Blackberry (Link via Google)" %}
</a>
</li>
</ul>
</li>
<li>

View File

@@ -349,8 +349,6 @@ urlpatterns = [
name='event.items.questions.edit'),
re_path(r'^questions/add$', item.QuestionCreate.as_view(), name='event.items.questions.add'),
re_path(r'^quotas/$', item.QuotaList.as_view(), name='event.items.quotas'),
re_path(r'^quotas/bulk_action$', item.QuotaBulkAction.as_view(), name='event.items.quotas.bulkaction'),
re_path(r'^quotas/bulk_edit$', item.QuotaBulkUpdateView.as_view(), name='event.items.quotas.bulkedit'),
re_path(r'^quotas/(?P<quota>\d+)/$', item.QuotaView.as_view(), name='event.items.quotas.show'),
re_path(r'^quotas/select$', typeahead.quotas_select2, name='event.items.quotas.select2'),
re_path(r'^quotas/(?P<quota>\d+)/change$', item.QuotaUpdate.as_view(), name='event.items.quotas.edit'),

View File

@@ -641,7 +641,7 @@ def user_index(request):
ctx = {
'widgets': rearrange(widgets),
'can_create_event': request.user.teams.with_organizer_permission("organizer.events:create").exists() or request.user.is_staff,
'can_create_event': request.user.teams.with_organizer_permission("organizer.events:create").exists(),
'upcoming': widgets_for_event_qs(
request,
annotated_event_query(request, lazy=True).filter(

View File

@@ -41,22 +41,21 @@ from json.decoder import JSONDecodeError
from django.contrib import messages
from django.core.exceptions import PermissionDenied
from django.core.files import File
from django.db import models, transaction
from django.db import transaction
from django.db.models import (
Count, Exists, F, OuterRef, Prefetch, ProtectedError, Q, Subquery, Value,
Count, Exists, F, OuterRef, Prefetch, ProtectedError, Q,
)
from django.db.models.functions import Cast, Concat
from django.forms.models import inlineformset_factory
from django.http import (
Http404, HttpResponse, HttpResponseBadRequest, HttpResponseRedirect,
)
from django.shortcuts import redirect, render
from django.shortcuts import redirect
from django.urls import resolve, reverse
from django.utils.functional import cached_property
from django.utils.timezone import now
from django.utils.translation import gettext, gettext_lazy as _
from django.views.decorators.http import require_http_methods
from django.views.generic import FormView, ListView, View
from django.views.generic import ListView
from django.views.generic.detail import DetailView, SingleObjectMixin
from django_countries.fields import Country
@@ -66,7 +65,7 @@ from pretix.api.serializers.item import (
)
from pretix.base.forms import I18nFormSet
from pretix.base.models import (
CartPosition, Item, ItemCategory, ItemProgramTime, ItemVariation, LogEntry,
CartPosition, Item, ItemCategory, ItemProgramTime, ItemVariation,
OrderPosition, Question, QuestionAnswer, QuestionOption, Quota,
SeatCategoryMapping, Voucher,
)
@@ -75,15 +74,12 @@ from pretix.base.models.items import ItemAddOn, ItemBundle, ItemMetaValue
from pretix.base.services.quotas import QuotaAvailability
from pretix.base.services.tickets import invalidate_cache
from pretix.base.signals import quota_availability
from pretix.control.forms.filter import (
QuestionAnswerFilterForm, QuotaFilterForm,
)
from pretix.control.forms.filter import QuestionAnswerFilterForm
from pretix.control.forms.item import (
CategoryForm, ItemAddOnForm, ItemAddOnsFormSet, ItemBundleForm,
ItemBundleFormSet, ItemCreateForm, ItemMetaValueForm, ItemProgramTimeForm,
ItemProgramTimeFormSet, ItemUpdateForm, ItemVariationForm,
ItemVariationsFormSet, QuestionForm, QuestionOptionForm, QuotaBulkEditForm,
QuotaForm,
ItemVariationsFormSet, QuestionForm, QuestionOptionForm, QuotaForm,
)
from pretix.control.permissions import (
EventPermissionRequiredMixin, event_permission_required,
@@ -91,7 +87,6 @@ from pretix.control.permissions import (
from pretix.control.signals import item_forms, item_formsets
from pretix.helpers.models import modelcopy
from ...helpers import GroupConcat
from ...helpers.compat import CompatDeleteView
from . import ChartContainingView, CreateView, PaginationMixin, UpdateView
@@ -836,38 +831,13 @@ class QuestionCreate(EventPermissionRequiredMixin, QuestionMixin, CreateView):
return ret
class QuotaQueryMixin:
@cached_property
def request_data(self):
if self.request.method == "POST":
return self.request.POST
return self.request.GET
def get_queryset(self):
qs = self.request.event.quotas
if self.filter_form.is_valid():
qs = self.filter_form.filter_qs(qs)
if 'quota' in self.request_data and '__ALL' not in self.request_data:
qs = qs.filter(
id__in=self.request_data.getlist('quota')
)
return qs
@cached_property
def filter_form(self):
return QuotaFilterForm(data=self.request_data, prefix='filter', event=self.request.event)
class QuotaList(PaginationMixin, QuotaQueryMixin, ListView):
class QuotaList(PaginationMixin, ListView):
model = Quota
context_object_name = 'quotas'
template_name = 'pretixcontrol/items/quotas.html'
def get_queryset(self):
return super().get_queryset().prefetch_related(
qs = self.request.event.quotas.prefetch_related(
Prefetch(
"items",
queryset=Item.objects.annotate(
@@ -882,10 +852,28 @@ class QuotaList(PaginationMixin, QuotaQueryMixin, ListView):
queryset=self.request.event.subevents.all()
)
)
if self.request.GET.get("subevent", "") != "":
s = self.request.GET.get("subevent", "")
qs = qs.filter(subevent_id=s)
valid_orders = {
'-date': ('-subevent__date_from', 'name', 'pk'),
'date': ('subevent__date_from', '-name', '-pk'),
'size': ('size', 'name', 'pk'),
'-size': ('-size', '-name', '-pk'),
'name': ('name', 'pk'),
'-name': ('-name', '-pk'),
}
if self.request.GET.get("ordering", "-date") in valid_orders:
qs = qs.order_by(*valid_orders[self.request.GET.get("ordering", "-date")])
else:
qs = qs.order_by('name', 'subevent__date_from', 'pk')
return qs
def get_context_data(self, **kwargs):
ctx = super().get_context_data()
ctx['filter_form'] = self.filter_form
qa = QuotaAvailability()
qa.queue(*ctx['quotas'])
@@ -896,165 +884,6 @@ class QuotaList(PaginationMixin, QuotaQueryMixin, ListView):
return ctx
class QuotaBulkAction(QuotaQueryMixin, EventPermissionRequiredMixin, View):
permission = 'event.items:write'
@transaction.atomic
def post(self, request, *args, **kwargs):
if request.POST.get('action') == 'delete':
return render(request, 'pretixcontrol/items/quota_delete_bulk.html', {
'allowed': self.get_queryset().select_related("subevent"),
})
elif request.POST.get('action') == 'delete_confirm':
log_entries = []
to_delete = []
for obj in self.get_queryset():
log_entries.append(obj.log_action('pretix.event.quota.deleted', user=self.request.user, save=False))
to_delete.append(obj.pk)
if to_delete:
LogEntry.bulk_create_and_postprocess(log_entries)
Quota.objects.filter(pk__in=to_delete).delete()
messages.success(request, _('The selected quotas have been deleted or disabled.'))
return redirect(self.get_success_url())
def get_success_url(self) -> str:
return reverse('control:event.items.quotas', kwargs={
'organizer': self.request.event.organizer.slug,
'event': self.request.event.slug,
})
class QuotaBulkUpdateView(QuotaQueryMixin, EventPermissionRequiredMixin, FormView):
template_name = 'pretixcontrol/items/quota_bulk_edit.html'
permission = 'event.items:write'
context_object_name = 'quota'
form_class = QuotaBulkEditForm
def get_queryset(self):
return super().get_queryset().prefetch_related(None).order_by()
def get(self, request, *args, **kwargs):
return HttpResponse(status=405)
@cached_property
def is_submitted(self):
# Usually, django considers a form "bound" / "submitted" on every POST request. However, this view is always
# called with POST method, even if just to pass the selection of objects to work on, so we want to modify
# that behaviour
return '_bulk' in self.request.POST
def get_form_kwargs(self):
initial = {}
mixed_values = set()
qs = self.get_queryset().annotate(
items_list=Subquery(
Quota.items.through.objects.filter(
quota_id=OuterRef('pk'),
item__variations__isnull=True,
).order_by().values('quota_id').annotate(
g=GroupConcat('item_id', separator=',', ordered=True)
).values('g')
),
vars_list=Subquery(
Quota.variations.through.objects.filter(
quota_id=OuterRef('pk')
).order_by().values('quota_id').annotate(
g=GroupConcat(
Concat(
Cast(F('itemvariation__item_id'), output_field=models.TextField()),
Value('-', output_field=models.TextField()),
Cast(F('itemvariation_id'), output_field=models.TextField()),
),
separator=',',
ordered=True
)
).values('g')
),
)
fields = {
'name': 'name',
'size': 'size',
'subevent': 'subevent',
'close_when_sold_out': 'close_when_sold_out',
'release_after_exit': 'release_after_exit',
'ignore_for_event_availability': 'ignore_for_event_availability',
}
for k, f in fields.items():
existing_values = list(qs.order_by(f).values(f).annotate(c=Count('*')))
if len(existing_values) == 1:
initial[k] = existing_values[0][f]
elif len(existing_values) > 1:
mixed_values.add(k)
initial[k] = None
item_values = list(qs.order_by("items_list").values("items_list").annotate(c=Count('*')))
var_values = list(qs.order_by("vars_list").values("vars_list").annotate(c=Count('*')))
if len(item_values) > 1 or len(var_values) > 1:
mixed_values.add("itemvars")
else:
initial["itemvars"] = [iv for iv in (item_values[0]["items_list"] or "").split(",") + (var_values[0]["vars_list"] or "").split(",") if iv]
kwargs = super().get_form_kwargs()
kwargs['event'] = self.request.event
kwargs['prefix'] = 'bulkedit'
kwargs['initial'] = initial
kwargs['queryset'] = self.get_queryset()
kwargs['mixed_values'] = mixed_values
if not self.is_submitted:
kwargs['data'] = None
kwargs['files'] = None
return kwargs
def get_success_url(self):
return reverse('control:event.items.quotas', kwargs={
'organizer': self.request.event.organizer.slug,
'event': self.request.event.slug,
})
@transaction.atomic()
def form_valid(self, form):
log_entries = []
# Main form
form.save()
data = {
k: v
for k, v in form.cleaned_data.items()
if k in form.changed_data
}
data['_raw_bulk_data'] = self.request.POST.dict()
for obj in self.get_queryset():
log_entries.append(
obj.log_action('pretix.event.quota.changed', data=data, user=self.request.user, save=False)
)
LogEntry.bulk_create_and_postprocess(log_entries)
messages.success(self.request, _('Your changes have been saved.'))
return super().form_valid(form)
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
ctx['quotas'] = self.get_queryset()
ctx['bulk_selected'] = self.request.POST.getlist("_bulk")
return ctx
def post(self, request, *args, **kwargs):
form = self.get_form()
is_valid = (
self.is_submitted and
form.is_valid()
)
if is_valid:
return self.form_valid(form)
else:
if self.is_submitted:
messages.error(self.request, _('We could not save your changes. See below for details.'))
return self.form_invalid(form)
class QuotaCreate(EventPermissionRequiredMixin, CreateView):
model = Quota
form_class = QuotaForm

View File

@@ -117,17 +117,12 @@ class GroupConcat(Aggregate):
template = "%(function)s(%(distinct)s%(field)s::text, '%(separator)s' ORDER BY %(field)s::text ASC)"
else:
template = "%(function)s(%(distinct)s%(field)s::text, '%(separator)s')"
template, params = super().as_sql(
return super().as_sql(
compiler, connection,
function='string_agg',
template=template,
**extra_context,
)
if self.ordered:
# ordered statement requires field parameters twice
params = params + params
return template, params
class ReplicaRouter:

View File

@@ -25,7 +25,7 @@ import time
from django.conf import settings
from django.contrib.auth import login as auth_login
from django.contrib.gis import geoip2
from django.contrib.gis.geoip2 import GeoIP2
from django.core.cache import cache
from django.utils.timezone import now
from django.utils.translation import gettext_lazy as _
@@ -63,20 +63,14 @@ def get_user_agent_hash(request):
_geoip = None
def get_geoip() -> geoip2.GeoIP2:
# See https://code.djangoproject.com/ticket/36988#ticket
def _get_country(request):
global _geoip
geoip2.SUPPORTED_DATABASE_TYPES.add("Geoacumen-Country")
if not _geoip:
_geoip = geoip2.GeoIP2()
return _geoip
_geoip = GeoIP2()
def _get_country(request):
try:
res = get_geoip().country(get_client_ip(request))
res = _geoip.country(get_client_ip(request))
except AddressNotFoundError:
return None
return res['country_code']

View File

@@ -5,7 +5,7 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-03-17 14:05+0000\n"
"PO-Revision-Date: 2026-03-18 02:00+0000\n"
"PO-Revision-Date: 2026-03-17 14:27+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"Language-Team: German <https://translate.pretix.eu/projects/pretix/pretix/"
"de/>\n"
@@ -8453,7 +8453,7 @@ msgstr "Zahlungseinstellungen"
#: pretix/base/permissions.py:203
#: pretix/control/templates/pretixcontrol/event/tax.html:120
msgid "Tax settings"
msgstr "Steuereinstellungen"
msgstr "Steuer-Einstellungen"
#: pretix/base/permissions.py:209
msgid "Invoicing settings"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-03-17 14:05+0000\n"
"PO-Revision-Date: 2026-03-18 02:00+0000\n"
"PO-Revision-Date: 2026-03-17 14:34+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"Language-Team: German (informal) <https://translate.pretix.eu/projects/"
"pretix/pretix/de_Informal/>\n"
@@ -8446,7 +8446,7 @@ msgstr "Zahlungseinstellungen"
#: pretix/base/permissions.py:203
#: pretix/control/templates/pretixcontrol/event/tax.html:120
msgid "Tax settings"
msgstr "Steuereinstellungen"
msgstr "Steuer-Einstellungen"
#: pretix/base/permissions.py:209
msgid "Invoicing settings"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-03-17 14:05+0000\n"
"PO-Revision-Date: 2026-03-18 12:23+0000\n"
"PO-Revision-Date: 2026-03-03 20:00+0000\n"
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
"Language-Team: Spanish <https://translate.pretix.eu/projects/pretix/pretix/"
"es/>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.16.2\n"
"X-Generator: Weblate 5.16.1\n"
#: pretix/_base_settings.py:87
msgid "English"
@@ -408,8 +408,10 @@ msgstr ""
#: pretix/api/serializers/organizer.py:482
#: pretix/control/views/organizer.py:1039
#, fuzzy
#| msgid "Account information"
msgid "Account invitation"
msgstr "Invitación a crear una cuenta"
msgstr "Información de la cuenta"
#: pretix/api/serializers/organizer.py:503
#: pretix/control/views/organizer.py:1138
@@ -3964,9 +3966,10 @@ msgid "Peppol participant ID"
msgstr "Identificador de participante Peppol"
#: pretix/base/invoicing/peppol.py:211
#, fuzzy
#| msgid "The Peppol participant ID is not registered on the Peppol network."
msgid "The Peppol participant ID does not match your VAT ID."
msgstr ""
"El identificador de participante de Peppol no coincide con el número de IVA."
msgstr "El ID de participante de Peppol no está registrado en la red Peppol."
#: pretix/base/invoicing/peppol.py:214
msgctxt "peppol_invoice"
@@ -4988,7 +4991,7 @@ msgstr ""
#: pretix/base/models/event.py:607 pretix/base/models/organizer.py:94
msgid "The slug may only contain letters, numbers, dots and dashes."
msgstr ""
"El nombre de archivo solo puede contener letras, números, puntos y guiones."
"La URL semántica solo puede contener letras, números, puntos y guiones."
#: pretix/base/models/event.py:624 pretix/base/models/event.py:1551
msgid "Show in lists"
@@ -6890,8 +6893,10 @@ msgstr ""
"pocos minutos para activar para todos los usuarios."
#: pretix/base/models/organizer.py:378
#, fuzzy
#| msgid "Event permissions"
msgid "All event permissions"
msgstr "Todos los permisos del evento"
msgstr "Permisos para eventos"
#: pretix/base/models/organizer.py:379
#: pretix/control/templates/pretixcontrol/organizers/team_edit.html:34
@@ -6899,8 +6904,10 @@ msgid "Event permissions"
msgstr "Permisos para eventos"
#: pretix/base/models/organizer.py:380
#, fuzzy
#| msgid "Organizer permissions"
msgid "All organizer permissions"
msgstr "Todos los permisos de organizador"
msgstr "Permisos del organizador"
#: pretix/base/models/organizer.py:381
#: pretix/control/templates/pretixcontrol/organizers/team_edit.html:25
@@ -8407,32 +8414,36 @@ msgstr "Su archivo de diseño no es un diseño válido. Mensaje de error: {}"
#: pretix/base/permissions.py:314 pretix/base/permissions.py:331
msgctxt "permission_level"
msgid "View"
msgstr "Ver"
msgstr ""
#: pretix/base/permissions.py:164 pretix/base/permissions.py:169
#: pretix/base/permissions.py:174 pretix/base/permissions.py:179
#: pretix/base/permissions.py:286 pretix/base/permissions.py:315
#, fuzzy
#| msgid "Save and check"
msgctxt "permission_level"
msgid "View and change"
msgstr "Ver y modificar"
msgstr "Guardar y verificar"
#: pretix/base/permissions.py:168
#, fuzzy
#| msgid "API tokens"
msgid "API only"
msgstr "Solo API"
msgstr "Tokens de API"
#: pretix/base/permissions.py:173
msgid ""
"Menu item will only show up if the user has permission for general settings."
msgstr ""
"Esta opción del menú solo aparecerá si el usuario tiene permiso para acceder "
"a la configuración general."
#: pretix/base/permissions.py:177 pretix/base/permissions.py:231
#: pretix/base/permissions.py:285 pretix/base/permissions.py:313
#: pretix/base/permissions.py:330
#, fuzzy
#| msgid "Revoke access"
msgctxt "permission_level"
msgid "No access"
msgstr "Sin acceso"
msgstr "Revocar el acceso"
#: pretix/base/permissions.py:188
#: pretix/control/templates/pretixcontrol/event/settings.html:7
@@ -8446,8 +8457,6 @@ msgid ""
"This includes access to all settings not listed explicitly below, including "
"plugin settings."
msgstr ""
"Esto incluye el acceso a todos los ajustes que no se enumeran explícitamente "
"a continuación, incluidos los ajustes de los complementos."
#: pretix/base/permissions.py:197
#: pretix/control/templates/pretixcontrol/event/payment.html:6
@@ -8461,79 +8470,100 @@ msgid "Tax settings"
msgstr "Configuración de impuestos"
#: pretix/base/permissions.py:209
#, fuzzy
#| msgid "Invoice settings"
msgid "Invoicing settings"
msgstr "Configuración de facturación"
msgstr "Configuración de la factura"
#: pretix/base/permissions.py:215
#, fuzzy
#| msgctxt "subevent"
#| msgid "Event series date added"
msgid "Event series dates"
msgstr "Fechas de la serie de eventos"
msgstr "Fechas de la serie de eventos añadidas"
#: pretix/base/permissions.py:221
#, fuzzy
#| msgid "Product name and variation"
msgid "Products, quotas and questions"
msgstr "Productos, cuotas y preguntas"
msgstr "Nombre del producto y variación"
#: pretix/base/permissions.py:224
msgid "Also includes related objects like categories or discounts."
msgstr "También incluye elementos relacionados, como categorías o descuentos."
msgstr ""
#: pretix/base/permissions.py:232
#, fuzzy
#| msgid "All check-ins"
msgctxt "permission_level"
msgid "Only check-in"
msgstr "Solo check-in"
msgstr "Todos los check-ins"
#: pretix/base/permissions.py:233
#, fuzzy
#| msgid "View full log"
msgctxt "permission_level"
msgid "View all"
msgstr "Ver todo"
msgstr "Ver log completo"
#: pretix/base/permissions.py:234
#, fuzzy
#| msgid "Valid check-in"
msgctxt "permission_level"
msgid "View all and check-in"
msgstr "Ver todo y check-in"
msgstr "Check-in válido"
#: pretix/base/permissions.py:235
#, fuzzy
#| msgid "View all upcoming events"
msgctxt "permission_level"
msgid "View all and change"
msgstr "Ver todo y modificar"
msgstr "Ver todos los próximos eventos"
#: pretix/base/permissions.py:236
msgid "Includes the ability to cancel and refund individual orders."
msgstr "Incluye la posibilidad de cancelar y reembolsar pedidos individuales."
msgstr ""
#: pretix/base/permissions.py:238
#, fuzzy
#| msgid "An entry has been added to the waiting list."
msgid "Also includes related objects like the waiting list."
msgstr "También incluye elementos relacionados, como la lista de espera."
msgstr "Se ha añadido una entrada a la lista de espera."
#: pretix/base/permissions.py:248
#, fuzzy
#| msgid "Generate cancellation"
msgid "Full event or date cancellation"
msgstr "Cancelación total del evento o de la fecha"
msgstr "Generar cancelación"
#: pretix/base/permissions.py:252
#, fuzzy
#| msgid "Sale not allowed"
msgctxt "permission_level"
msgid "Not allowed"
msgstr "No está permitido"
msgstr "Venta no permitida"
#: pretix/base/permissions.py:253
#, fuzzy
#| msgid "Allowed titles"
msgctxt "permission_level"
msgid "Allowed"
msgstr "Permitido"
msgstr "Titulos permitidos"
#: pretix/base/permissions.py:268
msgctxt "permission_level"
msgid "Access existing events"
msgstr "Acceder a los eventos existentes"
msgstr ""
#: pretix/base/permissions.py:269
msgctxt "permission_level"
msgid "Access existing and create new events"
msgstr "Acceder a eventos existentes y crear nuevos eventos"
msgstr ""
#: pretix/base/permissions.py:271
msgid ""
"The level of access to events is determined in detail by the settings below."
msgstr ""
"El nivel de acceso a los eventos se determina en detalle mediante los "
"ajustes que se indican a continuación."
#: pretix/base/permissions.py:275 pretix/control/navigation.py:143
#: pretix/control/navigation.py:462 pretix/control/navigation.py:512
@@ -8552,17 +8582,12 @@ msgid ""
"This includes access to all organizer-level functionality not listed "
"explicitly below, including plugin settings."
msgstr ""
"Esto incluye el acceso a todas las funciones de nivel de organizador que no "
"se enumeran explícitamente a continuación, incluida la configuración de los "
"complementos."
#: pretix/base/permissions.py:287
msgid ""
"Includes the ability to give someone (including oneself) additional "
"permissions."
msgstr ""
"Incluye la posibilidad de conceder permisos adicionales a otra persona "
"(incluido uno mismo)."
#: pretix/base/permissions.py:298 pretix/control/navigation.py:608
#: pretix/control/templates/pretixcontrol/organizers/customers.html:6
@@ -8580,12 +8605,12 @@ msgid ""
"Includes the ability to give access to events and data oneself does not have "
"access to."
msgstr ""
"Incluye la posibilidad de conceder acceso a eventos y datos a los que uno "
"mismo no tiene acceso."
#: pretix/base/permissions.py:321
#, fuzzy
#| msgid "Seating plan"
msgid "Seating plans"
msgstr "Planes de asientos"
msgstr "Plan de asientos"
#: pretix/base/permissions.py:327 pretix/control/navigation.py:712
#: pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html:8
@@ -9229,12 +9254,12 @@ msgid "Czech National Bank"
msgstr "Banco Nacional Checo"
#: pretix/base/services/export.py:94 pretix/base/services/export.py:154
#, fuzzy
#| msgid "You do not have sufficient permission to perform this export."
msgid ""
"Export not found or you do not have sufficient permission to perform this "
"export."
msgstr ""
"No se ha encontrado la exportación o no tienes los permisos suficientes para "
"realizarla."
msgstr "No tiene permiso suficiente para realizar esta exportación."
#: pretix/base/services/export.py:107 pretix/base/services/export.py:179
#: pretix/base/services/export.py:357
@@ -13710,7 +13735,25 @@ msgid "Contact"
msgstr "Contacto"
#: pretix/base/templates/pretixbase/email/shred_completed.txt:2
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "we hereby confirm that the following data shredding job has been "
#| "completed:\n"
#| "\n"
#| "Organizer: %(organizer)s\n"
#| "\n"
#| "Event: %(event)s\n"
#| "\n"
#| "Data selection: %(shredders)s\n"
#| "\n"
#| "Start time: %(start_time)s (new data added after this time might not have "
#| "been deleted)\n"
#| "\n"
#| "Best regards,\n"
#| "\n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -13745,7 +13788,7 @@ msgstr ""
"\n"
"Atentamente,\n"
"\n"
"El equipo de %(instance)s\n"
"Tu equipo de pretix\n"
#: pretix/base/templates/pretixbase/forms/widgets/checkbox_sales_channel_option.html:16
msgid ""
@@ -14307,12 +14350,16 @@ msgid "This is an event series"
msgstr "Esta es una serie de eventos"
#: pretix/control/forms/event.py:135 pretix/control/forms/event.py:363
#, fuzzy
#| msgid ""
#| "You do not have sufficient permission to enable plugins that need to be "
#| "enabled for the entire organizer account."
msgid ""
"You do not have a sufficient level of access on the event you selected to "
"copy it to the desired organizer."
msgstr ""
"No tiene los permisos necesarios para copiar el evento que ha seleccionado "
"al organizador deseado."
"No tienes permisos suficientes para habilitar los plugins que deben "
"habilitarse para toda su cuenta de organizador."
#: pretix/control/forms/event.py:143
msgid ""
@@ -14392,8 +14439,6 @@ msgid ""
"You cannot choose a team that would give you more access than you have on "
"the event you are copying."
msgstr ""
"No puede elegir un equipo que le otorgue más permisos de los que ya tiene en "
"el evento que está copiando."
#: pretix/control/forms/event.py:344
msgid "Copy configuration from"
@@ -14409,8 +14454,6 @@ msgid ""
"You cannot choose an event on which you have less access than the team you "
"selected in the previous step."
msgstr ""
"No puede elegir un evento al que tenga menos derechos de acceso que el "
"equipo que seleccionó en el paso anterior."
#: pretix/control/forms/event.py:387 pretix/control/forms/item.py:1304
#: pretix/control/forms/subevents.py:411
@@ -16773,7 +16816,7 @@ msgstr "Sólo puede establecer un dominio de organizador."
#: pretix/control/forms/organizer.py:322
msgid "Provided by a plugin"
msgstr "Proporcionado por un plugin"
msgstr ""
#: pretix/control/forms/organizer.py:438
msgid ""
@@ -17665,8 +17708,10 @@ msgid "The order has been denied (comment: \"{comment}\")."
msgstr "El pedido ha sido denegado (comentario: \"{comment}\")."
#: pretix/control/logdisplay.py:521
#, fuzzy
#| msgid "The order has been overpaid."
msgid "The customer VAT ID has been verified."
msgstr "Se ha verificado el número de identificación fiscal del cliente."
msgstr "El pedido ha sido pagado de más."
#: pretix/control/logdisplay.py:522
#, python-brace-format
@@ -17970,9 +18015,10 @@ msgid "{user} has been invited to the team."
msgstr "{user} ha sido invitado al equipo."
#: pretix/control/logdisplay.py:644
#, python-brace-format
#, fuzzy, python-brace-format
#| msgid "Invite for {user} has been resent."
msgid "Invite for {user} has been deleted."
msgstr "Se ha eliminado la invitación para {user}."
msgstr "La invitación para {user} ha sido reenviada."
#: pretix/control/logdisplay.py:645
#, python-brace-format
@@ -20292,7 +20338,21 @@ msgid "Add property"
msgstr "Añadir propiedad"
#: pretix/control/templates/pretixcontrol/email/confirmation_code.txt:1
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "%(reason)s\n"
#| "\n"
#| " %(code)s\n"
#| "\n"
#| "Please do never give this code to another person. Our support team will "
#| "never ask for this code.\n"
#| "\n"
#| "If this code was not requested by you, please contact us immediately.\n"
#| "\n"
#| "Best regards,\n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -20321,7 +20381,7 @@ msgstr ""
"inmediato.\n"
"\n"
"Atentamente,\n"
"El equipo de %(instance)s\n"
"El equipo de pretix\n"
#: pretix/control/templates/pretixcontrol/email/email_setup.txt:1
#, python-format
@@ -20359,7 +20419,17 @@ msgstr ""
"Tu equipo de %(instance)s\n"
#: pretix/control/templates/pretixcontrol/email/forgot.txt:1
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "you requested a new password. Please go to the following page to reset "
#| "your password:\n"
#| "\n"
#| "%(url)s\n"
#| "\n"
#| "Best regards, \n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -20379,10 +20449,27 @@ msgstr ""
"%(url)s \n"
"\n"
"Saludos, \n"
"El equipo de %(instance)s\n"
"El equipo de pretix\n"
#: pretix/control/templates/pretixcontrol/email/invitation.txt:1
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "you have been invited to a team on pretix, a platform to perform event\n"
#| "ticket sales.\n"
#| "\n"
#| "Organizer: %(organizer)s\n"
#| "Team: %(team)s\n"
#| "\n"
#| "If you want to join that team, just click on the following link:\n"
#| "%(url)s\n"
#| "\n"
#| "If you do not want to join, you can safely ignore or delete this email.\n"
#| "\n"
#| "Best regards, \n"
#| "\n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -20404,8 +20491,7 @@ msgid ""
msgstr ""
"Hola, \n"
"\n"
"usted ha sido invitado a un equipo de %(instance)s, una plataforma para "
"realizar \n"
"usted ha sido invitado a un equipo en pretix, una plataforma para realizar \n"
"ventas de entradas de eventos. \n"
"\n"
"Organizador: %(organizer)s\n"
@@ -20418,7 +20504,7 @@ msgstr ""
"\n"
"Saludos cordiales, \n"
"\n"
"El equipo de %(instance)s\n"
"Su equipo Pretix\n"
#: pretix/control/templates/pretixcontrol/email/login_notice.txt:1
#, python-format
@@ -20456,7 +20542,24 @@ msgstr ""
"El equipo de %(instance)s\n"
#: pretix/control/templates/pretixcontrol/email/security_notice.txt:1
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "this is to inform you that the account information of your pretix account "
#| "has been\n"
#| "changed. In particular, the following changes have been performed:\n"
#| "\n"
#| "%(messages)s\n"
#| "\n"
#| "If this change was not performed by you, please contact us immediately.\n"
#| "\n"
#| "You can review and change your account settings here:\n"
#| "\n"
#| "%(url)s\n"
#| "\n"
#| "Best regards, \n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -20477,8 +20580,8 @@ msgid ""
msgstr ""
"Hola, \n"
"\n"
"esto es para informarle que la información de su cuenta del equipo de %"
"(instance)s ha sido cambiada. \n"
"esto es para informarle que la información de su cuenta pretix ha sido "
"cambiada . \n"
"En particular, se han realizado las siguientes modificaciones: \n"
"\n"
"%(messages)s\n"
@@ -20491,7 +20594,7 @@ msgstr ""
"%(url)s \n"
"\n"
"Saludos cordiales, \n"
"El equipo de %(instance)s\n"
"su equipo de Pretix\n"
#: pretix/control/templates/pretixcontrol/email_setup.html:8
#: pretix/control/templates/pretixcontrol/email_setup_simple.html:8
@@ -20761,8 +20864,10 @@ msgstr ""
"entradas, puede hacerlo a través de esta opción."
#: pretix/control/templates/pretixcontrol/event/dangerzone.html:51
#, fuzzy
#| msgid "Permissions"
msgid "No permission"
msgstr "No tiene permiso"
msgstr "Permisos"
#: pretix/control/templates/pretixcontrol/event/dangerzone.html:59
#: pretix/control/templates/pretixcontrol/event/dangerzone.html:72
@@ -23321,8 +23426,10 @@ msgid "Edit question"
msgstr "Editar pregunta"
#: pretix/control/templates/pretixcontrol/items/question.html:55
#, fuzzy
#| msgid "You do not have permission to view this content."
msgid "No permission to view answers."
msgstr "No tiene permiso para ver las respuestas."
msgstr "No tienes permiso para ver este contenido."
#: pretix/control/templates/pretixcontrol/items/question.html:63
msgid "No matching answers found."
@@ -24971,8 +25078,10 @@ msgstr "No hay próxima ejecución programada"
#: pretix/control/templates/pretixcontrol/orders/export.html:37
#: pretix/control/templates/pretixcontrol/organizers/export.html:37
#, fuzzy
#| msgid "Exporter not found"
msgid "Exporter not found or no permission"
msgstr "No se ha encontrado el exportador o no se dispone de permiso"
msgstr "Exportador no encontrado"
#: pretix/control/templates/pretixcontrol/orders/export.html:42
#: pretix/control/templates/pretixcontrol/organizers/export.html:42
@@ -25015,8 +25124,10 @@ msgstr "Recomendado para nuevos usuarios"
#: pretix/control/templates/pretixcontrol/orders/export.html:120
#: pretix/control/templates/pretixcontrol/organizers/export.html:120
#, fuzzy
#| msgid "There are no add-ons available for this product."
msgid "There are no exporters available for you."
msgstr "No hay exportadores disponibles para usted."
msgstr "No hay complementos disponibles para este producto."
#: pretix/control/templates/pretixcontrol/orders/export_delete.html:4
#: pretix/control/templates/pretixcontrol/orders/export_delete.html:6
@@ -26967,7 +27078,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/pdf/index.html:274
#, python-format
msgid "max. %(size)s, smaller is better"
msgstr "máx. %(size)s; cuanto más pequeño, mejor"
msgstr ""
#: pretix/control/templates/pretixcontrol/pdf/index.html:282
msgid "Download current background"
@@ -29750,12 +29861,16 @@ msgstr ""
"los errores."
#: pretix/control/views/orders.py:2798 pretix/control/views/organizer.py:2131
#, fuzzy
#| msgid ""
#| "Your user account does not have sufficient permission to run this report, "
#| "therefore you cannot schedule it."
msgid ""
"Your user account does not have sufficient permission to run this report, "
"therefore you cannot change it."
msgstr ""
"Su cuenta de usuario no tiene los permisos suficientes para ejecutar este "
"informe, por lo que no puede modificarlo."
"Su cuenta de usuario no tiene permisos suficientes para ejecutar este "
"informe, por lo que no puede programarlo."
#: pretix/control/views/orders.py:2807 pretix/control/views/organizer.py:2140
msgid ""
@@ -33830,7 +33945,7 @@ msgstr "iDEAL via Stripe"
#: pretix/plugins/stripe/payment.py:1572
msgid "iDEAL | Wero"
msgstr "iDEAL | Wero"
msgstr ""
#: pretix/plugins/stripe/payment.py:1575
msgid ""
@@ -36815,9 +36930,6 @@ msgid ""
"the shop that affect quotas, such as the validity period of carts and "
"vouchers."
msgstr ""
"Tenga en cuenta que la hora modificada no se tiene en cuenta en aquellos "
"aspectos de la tienda que afectan a los límites, como el periodo de validez "
"de los carritos y los vales."
#: pretix/presale/templates/pretixpresale/event/timemachine.html:31
msgid "Enable time machine"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-03-17 14:06+0000\n"
"PO-Revision-Date: 2026-03-18 12:23+0000\n"
"PO-Revision-Date: 2026-01-27 14:51+0000\n"
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
"Language-Team: Spanish <https://translate.pretix.eu/projects/pretix/pretix-"
"js/es/>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.16.2\n"
"X-Generator: Weblate 5.15.2\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -60,7 +60,7 @@ msgstr "PayPal Paga Después"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:41
msgid "iDEAL | Wero"
msgstr "iDEAL | Wero"
msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:42
msgid "SEPA Direct Debit"

View File

@@ -4,16 +4,16 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-03-17 14:05+0000\n"
"PO-Revision-Date: 2026-03-18 12:23+0000\n"
"PO-Revision-Date: 2026-03-03 20:00+0000\n"
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
"Language-Team: French <https://translate.pretix.eu/projects/pretix/pretix/"
"fr/>\n"
"Language-Team: French <https://translate.pretix.eu/projects/pretix/pretix/fr/"
">\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.16.2\n"
"X-Generator: Weblate 5.16.1\n"
#: pretix/_base_settings.py:87
msgid "English"
@@ -409,8 +409,10 @@ msgstr ""
#: pretix/api/serializers/organizer.py:482
#: pretix/control/views/organizer.py:1039
#, fuzzy
#| msgid "Account information"
msgid "Account invitation"
msgstr "Invitation à créer un compte"
msgstr "Informations sur le compte"
#: pretix/api/serializers/organizer.py:503
#: pretix/control/views/organizer.py:1138
@@ -3969,8 +3971,12 @@ msgid "Peppol participant ID"
msgstr "Identifiant participant Peppol"
#: pretix/base/invoicing/peppol.py:211
#, fuzzy
#| msgid "The Peppol participant ID is not registered on the Peppol network."
msgid "The Peppol participant ID does not match your VAT ID."
msgstr "L'identifiant Peppol ne correspond pas à votre numéro de TVA."
msgstr ""
"L'identifiant Peppol du participant n'est pas enregistré sur le réseau "
"Peppol."
#: pretix/base/invoicing/peppol.py:214
msgctxt "peppol_invoice"
@@ -6923,8 +6929,10 @@ msgstr ""
"les utilisateurs."
#: pretix/base/models/organizer.py:378
#, fuzzy
#| msgid "Event permissions"
msgid "All event permissions"
msgstr "Toutes les autorisations relatives aux événements"
msgstr "Autorisations de l'événement"
#: pretix/base/models/organizer.py:379
#: pretix/control/templates/pretixcontrol/organizers/team_edit.html:34
@@ -6932,8 +6940,10 @@ msgid "Event permissions"
msgstr "Autorisations de l'événement"
#: pretix/base/models/organizer.py:380
#, fuzzy
#| msgid "Organizer permissions"
msgid "All organizer permissions"
msgstr "Toutes les autorisations d'organisateur"
msgstr "Autorisations de l'organisateur"
#: pretix/base/models/organizer.py:381
#: pretix/control/templates/pretixcontrol/organizers/team_edit.html:25
@@ -8457,32 +8467,36 @@ msgstr ""
#: pretix/base/permissions.py:314 pretix/base/permissions.py:331
msgctxt "permission_level"
msgid "View"
msgstr "Voir"
msgstr ""
#: pretix/base/permissions.py:164 pretix/base/permissions.py:169
#: pretix/base/permissions.py:174 pretix/base/permissions.py:179
#: pretix/base/permissions.py:286 pretix/base/permissions.py:315
#, fuzzy
#| msgid "Save and check"
msgctxt "permission_level"
msgid "View and change"
msgstr "Afficher et modifier"
msgstr "Enregistrer et vérifier"
#: pretix/base/permissions.py:168
#, fuzzy
#| msgid "API tokens"
msgid "API only"
msgstr "API uniquement"
msgstr "Tokens API"
#: pretix/base/permissions.py:173
msgid ""
"Menu item will only show up if the user has permission for general settings."
msgstr ""
"Cet élément de menu n'apparaîtra que si l'utilisateur dispose d'une "
"autorisation pour les paramètres généraux."
#: pretix/base/permissions.py:177 pretix/base/permissions.py:231
#: pretix/base/permissions.py:285 pretix/base/permissions.py:313
#: pretix/base/permissions.py:330
#, fuzzy
#| msgid "Revoke access"
msgctxt "permission_level"
msgid "No access"
msgstr "Accès impossible"
msgstr "Révoquer l'accès"
#: pretix/base/permissions.py:188
#: pretix/control/templates/pretixcontrol/event/settings.html:7
@@ -8496,8 +8510,6 @@ msgid ""
"This includes access to all settings not listed explicitly below, including "
"plugin settings."
msgstr ""
"Cela inclut l'accès à tous les paramètres qui ne sont pas explicitement "
"mentionnés ci-dessous, y compris les paramètres des extensions."
#: pretix/base/permissions.py:197
#: pretix/control/templates/pretixcontrol/event/payment.html:6
@@ -8511,81 +8523,100 @@ msgid "Tax settings"
msgstr "Paramètres relatifs aux taxes"
#: pretix/base/permissions.py:209
#, fuzzy
#| msgid "Invoice settings"
msgid "Invoicing settings"
msgstr "Paramètres de facturation"
#: pretix/base/permissions.py:215
#, fuzzy
#| msgctxt "subevent"
#| msgid "Event series date added"
msgid "Event series dates"
msgstr "Dates de la série d'événements"
msgstr "Une nouvelle date a été ajouté"
#: pretix/base/permissions.py:221
#, fuzzy
#| msgid "Product name and variation"
msgid "Products, quotas and questions"
msgstr "Produits, quotas et questions"
msgstr "Dénomination et variantes du produit"
#: pretix/base/permissions.py:224
msgid "Also includes related objects like categories or discounts."
msgstr ""
"Cela inclut également les éléments associés, tels que les catégories ou les "
"remises."
#: pretix/base/permissions.py:232
#, fuzzy
#| msgid "All check-ins"
msgctxt "permission_level"
msgid "Only check-in"
msgstr "Enregistrement uniquement"
msgstr "Tous les enregistrements"
#: pretix/base/permissions.py:233
#, fuzzy
#| msgid "View full log"
msgctxt "permission_level"
msgid "View all"
msgstr "Tout afficher"
msgstr "Voir le journal complet"
#: pretix/base/permissions.py:234
#, fuzzy
#| msgid "Valid check-in"
msgctxt "permission_level"
msgid "View all and check-in"
msgstr "Tout afficher et les check-in"
msgstr "Enregistrement valide"
#: pretix/base/permissions.py:235
#, fuzzy
#| msgid "View all upcoming events"
msgctxt "permission_level"
msgid "View all and change"
msgstr "Tout afficher et modifier"
msgstr "Voir tous les événements à venir"
#: pretix/base/permissions.py:236
msgid "Includes the ability to cancel and refund individual orders."
msgstr "Permet d'annuler et de rembourser des commandes individuelles."
msgstr ""
#: pretix/base/permissions.py:238
#, fuzzy
#| msgid "An entry has been added to the waiting list."
msgid "Also includes related objects like the waiting list."
msgstr "Comprend également les éléments connexes, tels que la liste d'attente."
msgstr "Une entrée a été ajoutée à la liste d'attente."
#: pretix/base/permissions.py:248
#, fuzzy
#| msgid "Generate cancellation"
msgid "Full event or date cancellation"
msgstr "Annulation complète de l'événement ou de la date"
msgstr "Générer annulation"
#: pretix/base/permissions.py:252
#, fuzzy
#| msgid "Sale not allowed"
msgctxt "permission_level"
msgid "Not allowed"
msgstr "Interdit"
msgstr "Vente non autorisée"
#: pretix/base/permissions.py:253
#, fuzzy
#| msgid "Allowed titles"
msgctxt "permission_level"
msgid "Allowed"
msgstr "Autorisé"
msgstr "Titres autorisés"
#: pretix/base/permissions.py:268
msgctxt "permission_level"
msgid "Access existing events"
msgstr "Accéder aux événements existants"
msgstr ""
#: pretix/base/permissions.py:269
msgctxt "permission_level"
msgid "Access existing and create new events"
msgstr "Accéder aux événements existants et en créer de nouveaux"
msgstr ""
#: pretix/base/permissions.py:271
msgid ""
"The level of access to events is determined in detail by the settings below."
msgstr ""
"Le niveau d'accès aux événements est défini en détail par les paramètres ci-"
"dessous."
#: pretix/base/permissions.py:275 pretix/control/navigation.py:143
#: pretix/control/navigation.py:462 pretix/control/navigation.py:512
@@ -8604,17 +8635,12 @@ msgid ""
"This includes access to all organizer-level functionality not listed "
"explicitly below, including plugin settings."
msgstr ""
"Cela inclut l'accès à toutes les fonctionnalités de niveau organisateur qui "
"ne sont pas explicitement mentionnées ci-dessous, y compris les paramètres "
"des extensions."
#: pretix/base/permissions.py:287
msgid ""
"Includes the ability to give someone (including oneself) additional "
"permissions."
msgstr ""
"Permet d'accorder des autorisations supplémentaires à une autre personne (y "
"compris à soi-même)."
#: pretix/base/permissions.py:298 pretix/control/navigation.py:608
#: pretix/control/templates/pretixcontrol/organizers/customers.html:6
@@ -8632,12 +8658,12 @@ msgid ""
"Includes the ability to give access to events and data oneself does not have "
"access to."
msgstr ""
"Permet de donner accès à des événements et à des données auxquels on n'a pas "
"soi-même accès."
#: pretix/base/permissions.py:321
#, fuzzy
#| msgid "Seating plan"
msgid "Seating plans"
msgstr "Plans de salle"
msgstr "Plan de salle"
#: pretix/base/permissions.py:327 pretix/control/navigation.py:712
#: pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html:8
@@ -9288,12 +9314,14 @@ msgid "Czech National Bank"
msgstr "Banque nationale tchèque"
#: pretix/base/services/export.py:94 pretix/base/services/export.py:154
#, fuzzy
#| msgid "You do not have sufficient permission to perform this export."
msgid ""
"Export not found or you do not have sufficient permission to perform this "
"export."
msgstr ""
"L'exportation est introuvable ou vous ne disposez pas des autorisations "
"nécessaires pour effectuer cette exportation."
"Vous ne disposez pas des autorisations suffisantes pour effectuer cette "
"exportation."
#: pretix/base/services/export.py:107 pretix/base/services/export.py:179
#: pretix/base/services/export.py:357
@@ -13832,7 +13860,25 @@ msgid "Contact"
msgstr "Contact"
#: pretix/base/templates/pretixbase/email/shred_completed.txt:2
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "we hereby confirm that the following data shredding job has been "
#| "completed:\n"
#| "\n"
#| "Organizer: %(organizer)s\n"
#| "\n"
#| "Event: %(event)s\n"
#| "\n"
#| "Data selection: %(shredders)s\n"
#| "\n"
#| "Start time: %(start_time)s (new data added after this time might not have "
#| "been deleted)\n"
#| "\n"
#| "Best regards,\n"
#| "\n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -13867,7 +13913,7 @@ msgstr ""
"\n"
"Sinceres salutations\n"
"\n"
"Votre équipe pretix%(instance)s\n"
"Votre équipe pretix\n"
#: pretix/base/templates/pretixbase/forms/widgets/checkbox_sales_channel_option.html:16
msgid ""
@@ -14436,12 +14482,16 @@ msgid "This is an event series"
msgstr "C'est une série d'événements"
#: pretix/control/forms/event.py:135 pretix/control/forms/event.py:363
#, fuzzy
#| msgid ""
#| "You do not have sufficient permission to enable plugins that need to be "
#| "enabled for the entire organizer account."
msgid ""
"You do not have a sufficient level of access on the event you selected to "
"copy it to the desired organizer."
msgstr ""
"Vous ne disposez pas des droits d'accès suffisants pour copier l'événement "
"que vous avez sélectionné vers l'organisateur souhaité."
"Vous ne disposez pas des autorisations suffisantes pour activer les plugins "
"qui doivent être activés pour l'ensemble du compte organisateur."
#: pretix/control/forms/event.py:143
msgid ""
@@ -14524,9 +14574,6 @@ msgid ""
"You cannot choose a team that would give you more access than you have on "
"the event you are copying."
msgstr ""
"Vous ne pouvez pas choisir une équipe qui vous donnerait plus de droits "
"d'accès que ceux dont vous disposez actuellement pour l'événement que vous "
"copiez."
#: pretix/control/forms/event.py:344
msgid "Copy configuration from"
@@ -14542,9 +14589,6 @@ msgid ""
"You cannot choose an event on which you have less access than the team you "
"selected in the previous step."
msgstr ""
"Vous ne pouvez pas sélectionner un événement pour lequel vous disposez de "
"moins de droits d'accès que l'équipe que vous avez choisie à l'étape "
"précédente."
#: pretix/control/forms/event.py:387 pretix/control/forms/item.py:1304
#: pretix/control/forms/subevents.py:411
@@ -15499,7 +15543,7 @@ msgstr "Recherche d'un participant…"
#: pretix/control/forms/filter.py:2039
#: pretix/plugins/checkinlists/exporters.py:106
msgid "Check-in status"
msgstr "État de l'enregistrement"
msgstr "Statut d'enregistrement"
#: pretix/control/forms/filter.py:2041
#: pretix/plugins/checkinlists/exporters.py:108
@@ -15512,7 +15556,7 @@ msgstr "Tous les participants"
#: pretix/plugins/checkinlists/exporters.py:109
#: pretix/plugins/checkinlists/exporters.py:501
msgid "Checked in"
msgstr "Enregistrement effectué"
msgstr "Enregistré"
#: pretix/control/forms/filter.py:2043
#: pretix/plugins/checkinlists/exporters.py:110
@@ -15530,7 +15574,7 @@ msgstr "Enregistré mais laissé"
#: pretix/control/templates/pretixcontrol/checkin/index.html:178
#: pretix/plugins/checkinlists/exporters.py:112
msgid "Not checked in"
msgstr "Enregistrement non effectué"
msgstr "Non enregistré"
#: pretix/control/forms/filter.py:2064
msgctxt "subevent"
@@ -16925,7 +16969,7 @@ msgstr "Vous ne pouvez définir qu'un seul domaine d'organisateur."
#: pretix/control/forms/organizer.py:322
msgid "Provided by a plugin"
msgstr "Fourni par un plugin"
msgstr ""
#: pretix/control/forms/organizer.py:438
msgid ""
@@ -17812,8 +17856,10 @@ msgid "The order has been denied (comment: \"{comment}\")."
msgstr "Lordonnance a été refusée (commentaire : \"{comment}\")."
#: pretix/control/logdisplay.py:521
#, fuzzy
#| msgid "The order has been overpaid."
msgid "The customer VAT ID has been verified."
msgstr "Le numéro d'identification TVA du client a été vérifié."
msgstr "La commande a été payée en trop."
#: pretix/control/logdisplay.py:522
#, python-brace-format
@@ -18114,9 +18160,10 @@ msgid "{user} has been invited to the team."
msgstr "{user} a été invité dans l'équipe."
#: pretix/control/logdisplay.py:644
#, python-brace-format
#, fuzzy, python-brace-format
#| msgid "Invite for {user} has been resent."
msgid "Invite for {user} has been deleted."
msgstr "L'invitation destinée à {user} a été supprimée."
msgstr "L'invitation pour {user} a été renvoyée."
#: pretix/control/logdisplay.py:645
#, python-brace-format
@@ -20437,7 +20484,21 @@ msgid "Add property"
msgstr "Ajouter une propriété"
#: pretix/control/templates/pretixcontrol/email/confirmation_code.txt:1
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "%(reason)s\n"
#| "\n"
#| " %(code)s\n"
#| "\n"
#| "Please do never give this code to another person. Our support team will "
#| "never ask for this code.\n"
#| "\n"
#| "If this code was not requested by you, please contact us immediately.\n"
#| "\n"
#| "Best regards,\n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -20466,7 +20527,7 @@ msgstr ""
"immédiatement.\n"
"\n"
"Cordialement,\n"
"Votre équipe pretix%(instance)s\n"
"Léquipe pretix\n"
#: pretix/control/templates/pretixcontrol/email/email_setup.txt:1
#, python-format
@@ -20504,7 +20565,17 @@ msgstr ""
"Votre équipe %(instance)s\n"
#: pretix/control/templates/pretixcontrol/email/forgot.txt:1
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "you requested a new password. Please go to the following page to reset "
#| "your password:\n"
#| "\n"
#| "%(url)s\n"
#| "\n"
#| "Best regards, \n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -20524,10 +20595,27 @@ msgstr ""
"%(url)s\n"
"\n"
"Sincères salutations, \n"
"Votre équipe pretix%(instance)s\n"
"Votre équipe Pretix\n"
#: pretix/control/templates/pretixcontrol/email/invitation.txt:1
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "you have been invited to a team on pretix, a platform to perform event\n"
#| "ticket sales.\n"
#| "\n"
#| "Organizer: %(organizer)s\n"
#| "Team: %(team)s\n"
#| "\n"
#| "If you want to join that team, just click on the following link:\n"
#| "%(url)s\n"
#| "\n"
#| "If you do not want to join, you can safely ignore or delete this email.\n"
#| "\n"
#| "Best regards, \n"
#| "\n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -20549,8 +20637,8 @@ msgid ""
msgstr ""
"Bonjour,\n"
"\n"
"vous avez été invité à faire partie de l'équipe pretix%(instance)s, une "
"plateforme pour réaliser un événement\n"
"vous avez été invité à faire partie d'une équipe sur pretix, une plateforme "
"pour réaliser un événement\n"
"de vente de billets.\n"
"\n"
"Organisateur: %(organizer)s\n"
@@ -20564,7 +20652,7 @@ msgstr ""
"\n"
"Sincères salutations, \n"
"\n"
"Votre équipe pretix%(instance)s\n"
"Votre équipe Pretix\n"
#: pretix/control/templates/pretixcontrol/email/login_notice.txt:1
#, python-format
@@ -20602,7 +20690,24 @@ msgstr ""
"Votre équipe %(instance)s\n"
#: pretix/control/templates/pretixcontrol/email/security_notice.txt:1
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "this is to inform you that the account information of your pretix account "
#| "has been\n"
#| "changed. In particular, the following changes have been performed:\n"
#| "\n"
#| "%(messages)s\n"
#| "\n"
#| "If this change was not performed by you, please contact us immediately.\n"
#| "\n"
#| "You can review and change your account settings here:\n"
#| "\n"
#| "%(url)s\n"
#| "\n"
#| "Best regards, \n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -20623,8 +20728,8 @@ msgid ""
msgstr ""
"Bonjour,\n"
"\n"
"Ceci est pour vous informer que les informations de votre compte %(instance)"
"s ont été\n"
"Ceci est pour vous informer que les informations de votre compte pretix ont "
"été\n"
"modifié. Les modifications suivantes ont été apportées:\n"
"\n"
"%(messages)s\n"
@@ -20637,7 +20742,7 @@ msgstr ""
"%(url)s\n"
"\n"
"Sincères salutations, \n"
"Votre équipe pretix%(instance)s\n"
"Votre équipe Pretix\n"
#: pretix/control/templates/pretixcontrol/email_setup.html:8
#: pretix/control/templates/pretixcontrol/email_setup_simple.html:8
@@ -20905,8 +21010,10 @@ msgstr ""
"tous les billets, vous pouvez le faire via cette option."
#: pretix/control/templates/pretixcontrol/event/dangerzone.html:51
#, fuzzy
#| msgid "Permissions"
msgid "No permission"
msgstr "Pas d'autorisation"
msgstr "Autorisations"
#: pretix/control/templates/pretixcontrol/event/dangerzone.html:59
#: pretix/control/templates/pretixcontrol/event/dangerzone.html:72
@@ -23487,8 +23594,10 @@ msgid "Edit question"
msgstr "Modifier la question"
#: pretix/control/templates/pretixcontrol/items/question.html:55
#, fuzzy
#| msgid "You do not have permission to view this content."
msgid "No permission to view answers."
msgstr "Vous n'êtes pas autorisé à consulter les réponses."
msgstr "Vous n'avez pas l'autorisation de consulter ce contenu."
#: pretix/control/templates/pretixcontrol/items/question.html:63
msgid "No matching answers found."
@@ -25154,8 +25263,10 @@ msgstr "Pas de prochaine exécution programmée"
#: pretix/control/templates/pretixcontrol/orders/export.html:37
#: pretix/control/templates/pretixcontrol/organizers/export.html:37
#, fuzzy
#| msgid "Exporter not found"
msgid "Exporter not found or no permission"
msgstr "Exportateur introuvable ou autorisation refusée"
msgstr "Exportateur introuvable"
#: pretix/control/templates/pretixcontrol/orders/export.html:42
#: pretix/control/templates/pretixcontrol/organizers/export.html:42
@@ -25198,8 +25309,10 @@ msgstr "Recommandé pour les nouveaux utilisateurs"
#: pretix/control/templates/pretixcontrol/orders/export.html:120
#: pretix/control/templates/pretixcontrol/organizers/export.html:120
#, fuzzy
#| msgid "There are no add-ons available for this product."
msgid "There are no exporters available for you."
msgstr "Aucun exportateur n'est disponible pour vous."
msgstr "Il n' y a pas d'add-ons disponibles pour ce produit."
#: pretix/control/templates/pretixcontrol/orders/export_delete.html:4
#: pretix/control/templates/pretixcontrol/orders/export_delete.html:6
@@ -27164,7 +27277,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/pdf/index.html:274
#, python-format
msgid "max. %(size)s, smaller is better"
msgstr "max. %(size)s, le plus petit possible"
msgstr ""
#: pretix/control/templates/pretixcontrol/pdf/index.html:282
msgid "Download current background"
@@ -29976,12 +30089,16 @@ msgstr ""
"plus de détails sur les erreurs."
#: pretix/control/views/orders.py:2798 pretix/control/views/organizer.py:2131
#, fuzzy
#| msgid ""
#| "Your user account does not have sufficient permission to run this report, "
#| "therefore you cannot schedule it."
msgid ""
"Your user account does not have sufficient permission to run this report, "
"therefore you cannot change it."
msgstr ""
"Votre compte utilisateur ne dispose pas des autorisations nécessaires pour "
"exécuter ce rapport ; vous ne pouvez donc pas le modifier."
"Votre compte utilisateur ne dispose pas des autorisations suffisantes pour "
"exécuter ce rapport, vous ne pouvez donc pas le planifier."
#: pretix/control/views/orders.py:2807 pretix/control/views/organizer.py:2140
msgid ""
@@ -34095,7 +34212,7 @@ msgstr "iDEAL via Stripe"
#: pretix/plugins/stripe/payment.py:1572
msgid "iDEAL | Wero"
msgstr "iDEAL | Wero"
msgstr ""
#: pretix/plugins/stripe/payment.py:1575
msgid ""
@@ -37136,9 +37253,6 @@ msgid ""
"the shop that affect quotas, such as the validity period of carts and "
"vouchers."
msgstr ""
"Veuillez noter que la modification de l'heure n'est pas prise en compte pour "
"les aspects de la boutique qui ont une incidence sur les quotas, tels que la "
"durée de validité des paniers et des bons d'achat."
#: pretix/presale/templates/pretixpresale/event/timemachine.html:31
msgid "Enable time machine"

View File

@@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: French\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-03-17 14:06+0000\n"
"PO-Revision-Date: 2026-03-18 12:23+0000\n"
"PO-Revision-Date: 2026-01-27 14:51+0000\n"
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
"Language-Team: French <https://translate.pretix.eu/projects/pretix/pretix-js/"
"fr/>\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.16.2\n"
"X-Generator: Weblate 5.15.2\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -59,7 +59,7 @@ msgstr "PayPal Pay Later"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:41
msgid "iDEAL | Wero"
msgstr "iDEAL | Wero"
msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:42
msgid "SEPA Direct Debit"

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-03-17 14:05+0000\n"
"PO-Revision-Date: 2026-03-27 09:03+0000\n"
"Last-Translator: Ivano Voghera <ivano.voghera@gmail.com>\n"
"PO-Revision-Date: 2026-02-10 16:49+0000\n"
"Last-Translator: Michele Pagnozzi <michele.pagnozzi@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.16.2\n"
"X-Generator: Weblate 5.15.2\n"
#: pretix/_base_settings.py:87
msgid "English"
@@ -412,8 +412,9 @@ msgstr ""
#: pretix/api/serializers/organizer.py:482
#: pretix/control/views/organizer.py:1039
#, fuzzy
msgid "Account invitation"
msgstr "Invito account"
msgstr "Informazioni account modificate"
#: pretix/api/serializers/organizer.py:503
#: pretix/control/views/organizer.py:1138
@@ -655,16 +656,22 @@ msgid "Customer account anonymized"
msgstr "Account del cliente anonimizzato"
#: pretix/api/webhooks.py:470
#, fuzzy
#| msgid "Gift card code"
msgid "Gift card added"
msgstr "Carta regalo aggiunta"
msgstr "Codice carta regalo"
#: pretix/api/webhooks.py:474
#, fuzzy
#| msgid "Gift card code"
msgid "Gift card modified"
msgstr "Carta regalo modificata"
msgstr "Codice carta regalo"
#: pretix/api/webhooks.py:478
#, fuzzy
#| msgid "Gift card transactions"
msgid "Gift card used in transaction"
msgstr "Carta regalo usata nella transazione"
msgstr "Transazioni con carta regalo"
#: pretix/base/addressvalidation.py:100 pretix/base/addressvalidation.py:103
#: pretix/base/addressvalidation.py:108 pretix/base/forms/questions.py:1054
@@ -1230,7 +1237,7 @@ msgstr "Caricamento dei file di risposta alle domande"
#: pretix/plugins/reports/exporters.py:666
msgctxt "export_category"
msgid "Order data"
msgstr "Data dell'ordine"
msgstr "Dati dell'ordine"
#: pretix/base/exporters/answers.py:56
msgid ""
@@ -2317,10 +2324,6 @@ msgid ""
"contain at least one position of this product. The order totals etc. still "
"include all products contained in the order."
msgstr ""
"Se non ne viene selezionato nessuno, saranno inclusi tutti i prodotti. Gli "
"ordini vengono inclusi se contengono almeno un articolo di questo prodotto. "
"I totali dell'ordine ecc. includeranno comunque tutti i prodotti contenuti "
"nell'ordine."
#: pretix/base/exporters/orderlist.py:283
#: pretix/base/exporters/orderlist.py:479
@@ -2587,12 +2590,16 @@ msgid "Voucher"
msgstr "Voucher"
#: pretix/base/exporters/orderlist.py:655
#, fuzzy
#| msgid "Voucher deleted"
msgid "Voucher budget usage"
msgstr "Utilizzo budget del buono"
msgstr "Buono eliminato"
#: pretix/base/exporters/orderlist.py:656
#, fuzzy
#| msgid "Voucher"
msgid "Voucher tag"
msgstr "Voucher tag"
msgstr "Voucher"
#: pretix/base/exporters/orderlist.py:657
msgid "Pseudonymization ID"
@@ -3411,34 +3418,39 @@ msgid "Street and Number"
msgstr "Indirizzo e numero civico"
#: pretix/base/forms/questions.py:893
#, python-brace-format
#, fuzzy, python-brace-format
#| msgid "Please enter a shorter name."
msgid "Please enter a date between {min} and {max}."
msgstr "Per favore inserisci una data inclusa tra {min} e {max}."
msgstr "Per favore inserisci un nome più breve."
#: pretix/base/forms/questions.py:899
#, python-brace-format
#, fuzzy, python-brace-format
#| msgid "Please enter a valid sales channel."
msgid "Please enter a date no earlier than {min}."
msgstr "Per favore inserisci una data successiva a {min}."
msgstr "Inserire un canale di vendita valido."
#: pretix/base/forms/questions.py:904
#, python-brace-format
#, fuzzy, python-brace-format
#| msgid "Please enter a shorter name."
msgid "Please enter a date no later than {max}."
msgstr "Per favore inserisci una data precedente a {max}."
msgstr "Per favore inserisci un nome più breve."
#: pretix/base/forms/questions.py:942
#, python-brace-format
msgid "Please enter a date and time between {min} and {max}."
msgstr "Per favore inserisci data e orario compresi tra {min} e {max}."
msgstr ""
#: pretix/base/forms/questions.py:948
#, python-brace-format
#, fuzzy, python-brace-format
#| msgid "Please enter a valid sales channel."
msgid "Please enter a date and time no earlier than {min}."
msgstr "Per favore inserisci data e orario successivi a {min}."
msgstr "Inserire un canale di vendita valido."
#: pretix/base/forms/questions.py:953
#, python-brace-format
#, fuzzy, python-brace-format
#| msgid "Please enter the correct result."
msgid "Please enter a date and time no later than {max}."
msgstr "Per favore inserisci data e orario precedenti a {max}."
msgstr "Per favore inserisci il risultato corretto."
#: pretix/base/forms/questions.py:1172
msgid ""
@@ -3945,7 +3957,7 @@ msgstr ""
#: pretix/base/invoicing/peppol.py:166
msgid "The Peppol participant ID is not registered on the Peppol network."
msgstr "L'ID partecipante Peppol non è registrato nella rete Peppol."
msgstr ""
#: pretix/base/invoicing/peppol.py:192
msgid "Peppol participant ID"
@@ -3953,7 +3965,7 @@ msgstr "ID partecipante Peppol"
#: pretix/base/invoicing/peppol.py:211
msgid "The Peppol participant ID does not match your VAT ID."
msgstr "L'ID partecipante Peppol non corrisponde alla tua Partita IVA."
msgstr ""
#: pretix/base/invoicing/peppol.py:214
msgctxt "peppol_invoice"
@@ -4324,7 +4336,7 @@ msgstr "Permetti di superare la quota"
#: pretix/control/templates/pretixcontrol/vouchers/detail.html:70
#: pretix/control/views/vouchers.py:121
msgid "Price effect"
msgstr "Variazione di prezzo"
msgstr ""
#: pretix/base/modelimport_vouchers.py:150
#, fuzzy, python-brace-format
@@ -5327,6 +5339,7 @@ msgstr "trasmesso"
#: pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html:44
#: pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html:145
#: pretix/plugins/sendmail/models.py:51
#, fuzzy
msgid "failed"
msgstr "fallito"
@@ -5388,7 +5401,7 @@ msgstr "Categoria normale"
#: pretix/base/models/items.py:115 pretix/control/forms/item.py:111
msgid "Normal + cross-selling category"
msgstr "Normale + Categoria cross-selling"
msgstr "Categoria normale + cross-selling"
#: pretix/base/models/items.py:116 pretix/control/forms/item.py:106
msgid "Cross-selling category"
@@ -6436,13 +6449,13 @@ msgstr "Fine"
#: pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html:38
#: pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html:139
msgid "queued"
msgstr "in coda"
msgstr ""
#: pretix/base/models/mail.py:53
#: pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html:40
#: pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html:141
msgid "being sent"
msgstr "invio in corso"
msgstr ""
#: pretix/base/models/mail.py:54
#, fuzzy
@@ -6454,25 +6467,25 @@ msgstr "Voce in lista d'attesa"
#: pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html:48
#: pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html:149
msgid "withheld"
msgstr "trattenuto"
msgstr ""
#: pretix/base/models/mail.py:57
#: pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html:50
#: pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html:151
msgid "aborted"
msgstr "annullato"
msgstr ""
#: pretix/base/models/mail.py:58
#: pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html:52
#: pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html:153
msgid "sent"
msgstr "inviato"
msgstr ""
#: pretix/base/models/mail.py:59
#: pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html:46
#: pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html:147
msgid "bounced"
msgstr "rimbalzato"
msgstr ""
#: pretix/base/models/memberships.py:44
#: pretix/presale/templates/pretixpresale/organizers/customer_memberships.html:28
@@ -6676,7 +6689,7 @@ msgstr "confermato"
#: pretix/base/models/orders.py:1734
msgctxt "payment_state"
msgid "canceled"
msgstr "cancellato"
msgstr "annullato"
#: pretix/base/models/orders.py:1735
msgctxt "payment_state"
@@ -6907,7 +6920,7 @@ msgstr "Ammissione all'evento"
#: pretix/base/models/organizer.py:379
#: pretix/control/templates/pretixcontrol/organizers/team_edit.html:34
msgid "Event permissions"
msgstr "Permessi dell'evento"
msgstr ""
#: pretix/base/models/organizer.py:380
#, fuzzy
@@ -6917,7 +6930,7 @@ msgstr "Impostazioni account"
#: pretix/base/models/organizer.py:381
#: pretix/control/templates/pretixcontrol/organizers/team_edit.html:25
msgid "Organizer permissions"
msgstr "Permessi dell'organizzatore"
msgstr ""
#: pretix/base/models/organizer.py:401
#, python-format
@@ -8422,7 +8435,7 @@ msgstr "Il tuo file di layout non è un layout valido. Messaggio di errore: {}"
#: pretix/base/permissions.py:314 pretix/base/permissions.py:331
msgctxt "permission_level"
msgid "View"
msgstr "Vista"
msgstr ""
#: pretix/base/permissions.py:164 pretix/base/permissions.py:169
#: pretix/base/permissions.py:174 pretix/base/permissions.py:179
@@ -8434,14 +8447,12 @@ msgstr "Salva modifiche"
#: pretix/base/permissions.py:168
msgid "API only"
msgstr "Solo API"
msgstr ""
#: pretix/base/permissions.py:173
msgid ""
"Menu item will only show up if the user has permission for general settings."
msgstr ""
"La voce di menu apparirà solo se l'utente ha il permesso per le impostazioni "
"generali."
#: pretix/base/permissions.py:177 pretix/base/permissions.py:231
#: pretix/base/permissions.py:285 pretix/base/permissions.py:313
@@ -8463,14 +8474,12 @@ msgid ""
"This includes access to all settings not listed explicitly below, including "
"plugin settings."
msgstr ""
"Include l'accesso a tutte le impostazioni non elencate esplicitamente di "
"seguito, comprese le impostazioni dei plugin."
#: pretix/base/permissions.py:197
#: pretix/control/templates/pretixcontrol/event/payment.html:6
#: pretix/control/templates/pretixcontrol/event/payment_provider.html:5
msgid "Payment settings"
msgstr "Impostazioni di pagamento"
msgstr ""
#: pretix/base/permissions.py:203
#: pretix/control/templates/pretixcontrol/event/tax.html:120
@@ -8479,8 +8488,10 @@ msgid "Tax settings"
msgstr "Impostazioni account"
#: pretix/base/permissions.py:209
#, fuzzy
#| msgid "Login settings"
msgid "Invoicing settings"
msgstr "Impostazioni Fattura"
msgstr "Impostazioni login"
#: pretix/base/permissions.py:215
#, fuzzy
@@ -8497,7 +8508,7 @@ msgstr "Nome prodotto e variante"
#: pretix/base/permissions.py:224
msgid "Also includes related objects like categories or discounts."
msgstr "Include anche gli oggetti correlati come categorie o sconti."
msgstr ""
#: pretix/base/permissions.py:232
#, fuzzy
@@ -8508,7 +8519,7 @@ msgstr "Filtra per stato"
#: pretix/base/permissions.py:233
msgctxt "permission_level"
msgid "View all"
msgstr "Vedi tutto"
msgstr ""
#: pretix/base/permissions.py:234
#, fuzzy
@@ -8519,15 +8530,15 @@ msgstr "Filtra per stato"
#: pretix/base/permissions.py:235
msgctxt "permission_level"
msgid "View all and change"
msgstr "Vedi e modifica tutto"
msgstr ""
#: pretix/base/permissions.py:236
msgid "Includes the ability to cancel and refund individual orders."
msgstr "Include il permesso di cancellare e rimborsare ordini individuali."
msgstr ""
#: pretix/base/permissions.py:238
msgid "Also includes related objects like the waiting list."
msgstr "Include anche gli oggetti correlati come la lista d'attesa."
msgstr ""
#: pretix/base/permissions.py:248
#, fuzzy
@@ -8551,19 +8562,17 @@ msgstr "Tasse"
#: pretix/base/permissions.py:268
msgctxt "permission_level"
msgid "Access existing events"
msgstr "Accedere agli eventi esistenti"
msgstr ""
#: pretix/base/permissions.py:269
msgctxt "permission_level"
msgid "Access existing and create new events"
msgstr "Accedere agli eventi esistenti e crearne di nuovi"
msgstr ""
#: pretix/base/permissions.py:271
msgid ""
"The level of access to events is determined in detail by the settings below."
msgstr ""
"Il livello di accesso agli eventi è determinato nel dettaglio dalle "
"impostazioni sottostanti."
#: pretix/base/permissions.py:275 pretix/control/navigation.py:143
#: pretix/control/navigation.py:462 pretix/control/navigation.py:512
@@ -8582,8 +8591,6 @@ msgid ""
"This includes access to all organizer-level functionality not listed "
"explicitly below, including plugin settings."
msgstr ""
"Include l'accesso a tutte le funzionalità a livello di organizzatore non "
"elencate esplicitamente di seguito, comprese le impostazioni dei plugin."
#: pretix/base/permissions.py:287
msgid ""
@@ -8618,7 +8625,7 @@ msgstr "Piano dei posti a sedere"
#: pretix/base/permissions.py:327 pretix/control/navigation.py:712
#: pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html:8
msgid "Outgoing emails"
msgstr "Email in uscita"
msgstr ""
#: pretix/base/plugins.py:138
#: pretix/control/templates/pretixcontrol/event/quick_setup.html:132
@@ -10090,11 +10097,6 @@ msgid ""
"placing an order, the restriction only becomes active after the customer "
"account is activated."
msgstr ""
"Se abilitato, gli utenti che erano autenticati al momento dell'acquisto "
"dovranno effettuare l'accesso anche per consultare le informazioni sul "
"proprio ordine. Se un account cliente viene creato durante l'effettuazione "
"di un ordine, la restrizione diventerà attiva solo dopo l'attivazione "
"dell'account stesso."
#: pretix/base/settings.py:203
msgid "Match orders based on email address"
@@ -13188,9 +13190,6 @@ msgid ""
"logged email contents. This will also remove the association to customer "
"accounts."
msgstr ""
"Questo rimuoverà tutti gli indirizzi email dagli ordini e dai partecipanti, "
"così come il contenuto delle email registrate. Rimuoverà inoltre "
"l'associazione agli account cliente."
#: pretix/base/shredder.py:373
msgid ""
@@ -16580,19 +16579,19 @@ msgstr "Salva modifiche"
#: pretix/control/forms/rrule.py:35
msgid "year(s)"
msgstr "anno/i"
msgstr ""
#: pretix/control/forms/rrule.py:36
msgid "month(s)"
msgstr "mese/i"
msgstr "mese(i)"
#: pretix/control/forms/rrule.py:37
msgid "week(s)"
msgstr "settimana/e"
msgstr "settimana (e)"
#: pretix/control/forms/rrule.py:38
msgid "day(s)"
msgstr "giorno/i"
msgstr ""
#: pretix/control/forms/rrule.py:43
msgid "Interval"
@@ -16629,7 +16628,7 @@ msgstr ""
#: pretix/control/forms/rrule.py:111 pretix/control/forms/rrule.py:150
#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:20
msgid "Day"
msgstr "Giorno"
msgstr ""
#: pretix/control/forms/rrule.py:113 pretix/control/forms/rrule.py:152
msgid "Weekend day"
@@ -17231,8 +17230,9 @@ msgid ""
msgstr ""
#: pretix/control/logdisplay.py:529
#, fuzzy
msgid "The customer account has been changed."
msgstr "L'account cliente è stato modificato."
msgstr "La data dell'evento è stata modificata."
#: pretix/control/logdisplay.py:530
msgid "The order locale has been changed."
@@ -18914,7 +18914,7 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/postmessage.html:27
#: pretix/presale/templates/pretixpresale/waiting.html:42
msgid "If this takes longer than a few minutes, please contact us."
msgstr "Se questa operazione richiede alcuni minuti, si prega di contattarci."
msgstr ""
#: pretix/control/templates/pretixcontrol/boxoffice/payment.html:4
#: pretix/control/templates/pretixcontrol/organizers/devices.html:75
@@ -20687,6 +20687,8 @@ msgid "Payment reminder"
msgstr ""
#: pretix/control/templates/pretixcontrol/event/mail.html:108
#, fuzzy
#| msgid "Payment confirmed"
msgid "Payment failed"
msgstr "Pagamento rifiutato"
@@ -20737,7 +20739,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/event/payment.html:78
msgctxt "unit"
msgid "days"
msgstr "giorni"
msgstr ""
#: pretix/control/templates/pretixcontrol/event/payment_provider.html:13
#: pretix/control/templates/pretixcontrol/events/create_base.html:24
@@ -21614,7 +21616,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/fragment_quota_box_paid.html:3
#, python-format
msgid "Currently available: %(num)s"
msgstr "Attualmente disponibili: %(num)s"
msgstr ""
#: pretix/control/templates/pretixcontrol/global_license.html:8
msgid ""
@@ -21860,8 +21862,6 @@ msgid ""
"This product is currently not being sold since you configured below that it "
"should only be available in a certain timeframe."
msgstr ""
"Questo prodotto non è attualmente in vendita, poiché è stato configurato per "
"essere disponibile solo in un determinato intervallo di tempo."
#: pretix/control/templates/pretixcontrol/item/base.html:41
msgid ""
@@ -22367,8 +22367,6 @@ msgstr "Crea un nuovo organizzatore"
msgid ""
"Currently unavailable since a limited timeframe for this product has been set"
msgstr ""
"Attualmente non disponibile poiché è stato impostato un intervallo di tempo "
"limitato per questo prodotto"
#: pretix/control/templates/pretixcontrol/items/discounts.html:119
msgid "Condition:"
@@ -22865,13 +22863,12 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/event/order.html:483
#: pretix/presale/templates/pretixpresale/event/order_cancel.html:7
msgid "Cancel order"
msgstr "Elimina ordine"
msgstr ""
#: pretix/control/templates/pretixcontrol/order/cancel.html:12
#: pretix/control/templates/pretixcontrol/order/deny.html:11
msgid "Do you really want to cancel this order? You cannot revert this action."
msgstr ""
"Vuoi davvero eliminare questo ordine? Questa azione non può essere annullata."
#: pretix/control/templates/pretixcontrol/order/cancel.html:16
msgid ""
@@ -22890,12 +22887,12 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/order/cancel.html:51
#: pretix/presale/templates/pretixpresale/event/order_cancel.html:220
msgid "Yes, cancel order"
msgstr "Si, elimina ordine"
msgstr ""
#: pretix/control/templates/pretixcontrol/order/cancellation_request_delete.html:4
#: pretix/control/templates/pretixcontrol/order/cancellation_request_delete.html:8
msgid "Ignore cancellation request"
msgstr "Ignora la richiesta di cancellazione"
msgstr ""
#: pretix/control/templates/pretixcontrol/order/cancellation_request_delete.html:10
msgid ""
@@ -23005,8 +23002,9 @@ msgid ""
msgstr ""
#: pretix/control/templates/pretixcontrol/order/change.html:220
#, fuzzy
msgid "Ticket block"
msgstr "Biglietto bloccato"
msgstr "Codice biglietto"
#: pretix/control/templates/pretixcontrol/order/change.html:226
msgid "Blocked due to external constraints"
@@ -25153,8 +25151,9 @@ msgid "Organizer logs"
msgstr "Organizzatore"
#: pretix/control/templates/pretixcontrol/organizers/mail.html:60
#, fuzzy
msgid "Customer account registration"
msgstr "Registrazione account cliente"
msgstr "Invia ordine"
#: pretix/control/templates/pretixcontrol/organizers/mail.html:63
#, fuzzy
@@ -26183,7 +26182,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:10
msgctxt "subevent"
msgid "Create multiple dates"
msgstr "Crea date multiple"
msgstr ""
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:35
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:146
@@ -26276,9 +26275,10 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:9
#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:12
#, fuzzy
msgctxt "subevent"
msgid "Change multiple dates"
msgstr "Cambia date multiple"
msgstr "Solo ordini pagati"
#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:154
msgid "Item prices"
@@ -27208,12 +27208,6 @@ msgid ""
"quota is available) or you can press the big button below this text to send "
"out as many vouchers as currently possible to the persons who waited longest."
msgstr ""
"Hai configurato il sistema affinché i voucher <strong>non</strong> vengano "
"inviati automaticamente. Puoi inviarli singolarmente nell'ordine che "
"preferisci cliccando sui pulsanti accanto a ogni riga di questa tabella (se "
"la quota è sufficiente), oppure puoi premere il pulsante grande sotto questo "
"testo per inviare quanti più voucher possibile alle persone in attesa da più "
"tempo."
#: pretix/control/templates/pretixcontrol/waitinglist/index.html:79
msgid "Send as many vouchers as possible"
@@ -33299,9 +33293,10 @@ msgstr ""
#: pretix/presale/forms/renderers.py:66
#: pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html:14
#, fuzzy
msgctxt "form"
msgid "required"
msgstr "obbligatorio"
msgstr "Carrello scaduto"
#: pretix/presale/ical.py:87 pretix/presale/ical.py:146
#: pretix/presale/ical.py:182
@@ -33634,7 +33629,7 @@ msgstr "Invia ordine"
#: pretix/presale/templates/pretixpresale/event/checkout_customer.html:19
msgid "Log in with a customer account"
msgstr "Accedi con un account cliente"
msgstr ""
#: pretix/presale/templates/pretixpresale/event/checkout_customer.html:26
msgid "You are currently logged in with the following credentials."
@@ -34007,7 +34002,7 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/event/fragment_availability.html:25
#: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:91
msgid "FULLY BOOKED"
msgstr "TUTTO PRENOTATO"
msgstr ""
#: pretix/presale/templates/pretixpresale/event/fragment_availability.html:37
#: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:101
@@ -34519,7 +34514,7 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/event/fragment_quota_left.html:4
#, python-format
msgid "%(num)s currently available"
msgstr "%(num)s attualmente disponibili"
msgstr ""
#: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:5
#: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:5
@@ -34756,14 +34751,18 @@ msgstr ""
"completo."
#: pretix/presale/templates/pretixpresale/event/order.html:56
#, fuzzy
#| msgid ""
#| "Please bookmark or save the link to this exact page if you want to access "
#| "your order later. We also sent you an email containing the link to the "
#| "address you specified."
msgid ""
"Please bookmark or save the link to this exact page if you want to access "
"your order later. We also sent you an email to the address you specified "
"containing the link to this page."
msgstr ""
"Salva questa pagina nei preferiti se vuoi accedere al tuo ordine in seguito. "
"Ti abbiamo anche inviato una email all'indirizzo che hai indicato contenente "
"il link a questa pagina."
"Salva questa pagina nei preferiti se vuoi accedervi in seguito. Ti abbiamo "
"anche inviato una email contenente il link a questa pagina."
#: pretix/presale/templates/pretixpresale/event/order.html:60
#, fuzzy
@@ -34878,7 +34877,7 @@ msgstr "Riferimento Interno"
#: pretix/presale/templates/pretixpresale/event/order.html:354
msgctxt "action"
msgid "Change or cancel your order"
msgstr "Modifica o cancella il tuo ordine"
msgstr ""
#: pretix/presale/templates/pretixpresale/event/order.html:356
#, fuzzy
@@ -34888,9 +34887,10 @@ msgid "Change your order"
msgstr "Cambia ordine"
#: pretix/presale/templates/pretixpresale/event/order.html:358
#, fuzzy
msgctxt "action"
msgid "Cancel your order"
msgstr "Cancella il tuo ordine"
msgstr "Solo ordini pagati"
#: pretix/presale/templates/pretixpresale/event/order.html:366
msgid ""
@@ -34984,7 +34984,7 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/event/order.html:472
msgid "You can cancel this order using the following button."
msgstr "Puoi cancellare questo ordine usando il bottone di seguito."
msgstr ""
#: pretix/presale/templates/pretixpresale/event/order_cancel.html:11
#, python-format
@@ -35271,7 +35271,7 @@ msgstr "Devi selezionare almeno %(number)s prodotti."
#: pretix/presale/templates/pretixpresale/event/waitinglist.html:5
msgid "Add me to the waiting list"
msgstr "Aggiungimi alla lista d'attesa"
msgstr ""
#: pretix/presale/templates/pretixpresale/event/waitinglist.html:22
#, python-format
@@ -35280,10 +35280,6 @@ msgid ""
"waiting list. If we notify you, you'll have %(hours)s hours time to buy a "
"ticket until we assign it to the next person on the list."
msgstr ""
"Se i biglietti dovessero tornare disponibili, informeremo le prime persone "
"in lista d'attesa. Se ti avvisiamo, avrai %(hours)s ore di tempo per "
"acquistare un biglietto prima che venga assegnato alla persona successiva in "
"lista."
#: pretix/presale/templates/pretixpresale/event/waitinglist.html:28
msgid ""
@@ -35291,9 +35287,6 @@ msgid ""
"you need to add yourself to the waiting list multiple times. There is no "
"guarantee that you will receive a certain number of tickets."
msgstr ""
"Tieni presente che riceverai un solo biglietto. Se hai bisogno di più "
"biglietti, dovrai iscriverti alla lista d'attesa più volte. Non è garantito "
"che riceverai un numero esatto di biglietti."
#: pretix/presale/templates/pretixpresale/event/waitinglist.html:32
msgid ""
@@ -35302,10 +35295,6 @@ msgid ""
"email addresses. There is no guarantee that you will receive a certain "
"number of tickets."
msgstr ""
"Tieni presente che riceverai un solo biglietto. Se hai bisogno di più "
"biglietti, dovrai iscriverti alla lista d'attesa più volte utilizzando "
"indirizzi email diversi. Non è garantito che riceverai un numero esatto di "
"biglietti."
#: pretix/presale/templates/pretixpresale/event/waitinglist.html:38
msgid ""
@@ -35313,17 +35302,15 @@ msgid ""
"been added to the waiting list. We will only contact you once a spot opens "
"up."
msgstr ""
"<strong>Non</strong> riceverai un'email di conferma dopo essere stato "
"aggiunto alla lista d'attesa. Ti contatteremo solo quando si libererà un "
"posto."
#: pretix/presale/templates/pretixpresale/event/waitinglist.html:44
msgid "Add me to the list"
msgstr "Aggiungimi alla lista"
msgstr ""
#: pretix/presale/templates/pretixpresale/event/waitinglist_remove.html:5
#, fuzzy
msgid "Remove me from the waiting list"
msgstr "Cancellami dalla lista d'attesa"
msgstr "Informazioni dell'ordine modificate"
#: pretix/presale/templates/pretixpresale/event/waitinglist_remove.html:9
msgid ""
@@ -35333,9 +35320,10 @@ msgid ""
msgstr ""
#: pretix/presale/templates/pretixpresale/event/waitinglist_remove.html:16
#, fuzzy
msgctxt "waitinglist"
msgid "Yes, remove my ticket"
msgstr "Si, cancella i miei biglietti"
msgstr "Aggiungi o rimuovi biglietti"
#: pretix/presale/templates/pretixpresale/fragment_calendar.html:7
msgid "Calendar"
@@ -35359,8 +35347,9 @@ msgstr "(continua)"
#: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:14
#: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:58
#: pretix/presale/views/widget.py:440
#, fuzzy
msgid "Few tickets left"
msgstr "Pochi biglietti rimasti"
msgstr "Abilita formato biglietti"
#: pretix/presale/templates/pretixpresale/fragment_calendar.html:92
#: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:97
@@ -35408,9 +35397,10 @@ msgid "iCal"
msgstr "iCal"
#: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:25
#, fuzzy
msgctxt "day calendar"
msgid "Single events"
msgstr "Singoli eventi"
msgstr "Prezzo netto"
#: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:79
msgctxt "timerange"
@@ -35436,12 +35426,13 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/fragment_login_status.html:5
msgid "customer account"
msgstr "account cliente"
msgstr ""
#: pretix/presale/templates/pretixpresale/fragment_login_status.html:8
#: pretix/presale/templates/pretixpresale/fragment_login_status.html:9
#, fuzzy
msgid "View customer account"
msgstr "Vedi account cliente"
msgstr "Vedi un'altra data"
#: pretix/presale/templates/pretixpresale/fragment_modals.html:18
#, fuzzy
@@ -35639,8 +35630,9 @@ msgid "Change account information"
msgstr "Le tue informazioni"
#: pretix/presale/templates/pretixpresale/organizers/customer_base.html:41
#, fuzzy
msgid "customer account information"
msgstr "Informazioni account cliente"
msgstr "Invia ordine"
#: pretix/presale/templates/pretixpresale/organizers/customer_giftcards.html:28
#, fuzzy, python-format
@@ -35798,7 +35790,7 @@ msgstr "Ripeti la nuova password"
#: pretix/presale/templates/pretixpresale/organizers/index.html:11
msgid "Event list"
msgstr "Lista eventi"
msgstr ""
#: pretix/presale/templates/pretixpresale/organizers/index.html:35
msgid "Past events"
@@ -35809,9 +35801,10 @@ msgid "Upcoming events"
msgstr "Prossimi eventi"
#: pretix/presale/templates/pretixpresale/organizers/index.html:56
#, fuzzy
msgctxt "subevent"
msgid "Multiple dates"
msgstr "Date multiple"
msgstr "Solo ordini pagati"
#: pretix/presale/templates/pretixpresale/organizers/index.html:105
msgid "No archived events found."
@@ -36154,8 +36147,6 @@ msgid ""
"You cannot add yourself to the waiting list as this product is currently "
"available."
msgstr ""
"Non puoi aggiungerti alla lista d'attesa in quanto questo prodotto è "
"attualmente disponibile."
#: pretix/presale/views/waiting.py:180
#, 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-03-17 14:06+0000\n"
"PO-Revision-Date: 2026-03-25 14:14+0000\n"
"Last-Translator: Pietro Isotti <isottipietro@gmail.com>\n"
"PO-Revision-Date: 2026-02-10 16:49+0000\n"
"Last-Translator: Raffaele Doretto <ced@comune.portogruaro.ve.it>\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.16.2\n"
"X-Generator: Weblate 5.15.2\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -310,8 +310,9 @@ msgid "Ticket code revoked/changed"
msgstr "Codice biglietto annullato/modificato"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:63
#, fuzzy
msgid "Ticket blocked"
msgstr "Biglietto bloccato"
msgstr "Biglietto non pagato"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:64
msgid "Ticket not valid at this time"
@@ -428,7 +429,7 @@ msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:276
msgid "If this takes longer than a few minutes, please contact us."
msgstr "Se questa operazione richiede alcuni minuti, si prega di contattarci."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:331
msgid "Close message"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-03-17 14:05+0000\n"
"PO-Revision-Date: 2026-03-23 21:00+0000\n"
"PO-Revision-Date: 2026-03-09 12:52+0000\n"
"Last-Translator: Hijiri Umemoto <hijiri@umemoto.org>\n"
"Language-Team: Japanese <https://translate.pretix.eu/projects/pretix/pretix/"
"ja/>\n"
@@ -399,8 +399,10 @@ msgstr ""
#: pretix/api/serializers/organizer.py:482
#: pretix/control/views/organizer.py:1039
#, fuzzy
#| msgid "Account information"
msgid "Account invitation"
msgstr "アカウントに招待"
msgstr "アカウント情報"
#: pretix/api/serializers/organizer.py:503
#: pretix/control/views/organizer.py:1138
@@ -3924,8 +3926,10 @@ msgid "Peppol participant ID"
msgstr "Peppol参加者ID"
#: pretix/base/invoicing/peppol.py:211
#, fuzzy
#| msgid "The Peppol participant ID is not registered on the Peppol network."
msgid "The Peppol participant ID does not match your VAT ID."
msgstr "Peppol参加者IDがVAT IDと一致しません。"
msgstr "Peppol参加者IDはPeppolネットワークに登録されていません。"
#: pretix/base/invoicing/peppol.py:214
msgctxt "peppol_invoice"
@@ -6762,8 +6766,10 @@ msgstr ""
"かかる場合があります。"
#: pretix/base/models/organizer.py:378
#, fuzzy
#| msgid "Event permissions"
msgid "All event permissions"
msgstr "すべてのイベントの権限"
msgstr "イベントの権限"
#: pretix/base/models/organizer.py:379
#: pretix/control/templates/pretixcontrol/organizers/team_edit.html:34
@@ -6771,8 +6777,10 @@ msgid "Event permissions"
msgstr "イベントの権限"
#: pretix/base/models/organizer.py:380
#, fuzzy
#| msgid "Organizer permissions"
msgid "All organizer permissions"
msgstr "全ての主催者の権限"
msgstr "主催者の権限"
#: pretix/base/models/organizer.py:381
#: pretix/control/templates/pretixcontrol/organizers/team_edit.html:25
@@ -8236,30 +8244,36 @@ msgstr ""
#: pretix/base/permissions.py:314 pretix/base/permissions.py:331
msgctxt "permission_level"
msgid "View"
msgstr "見る"
msgstr ""
#: pretix/base/permissions.py:164 pretix/base/permissions.py:169
#: pretix/base/permissions.py:174 pretix/base/permissions.py:179
#: pretix/base/permissions.py:286 pretix/base/permissions.py:315
#, fuzzy
#| msgid "Save and check"
msgctxt "permission_level"
msgid "View and change"
msgstr "確認と変更"
msgstr "保存してチェックします"
#: pretix/base/permissions.py:168
#, fuzzy
#| msgid "API tokens"
msgid "API only"
msgstr "APIのみ"
msgstr "APIトークン"
#: pretix/base/permissions.py:173
msgid ""
"Menu item will only show up if the user has permission for general settings."
msgstr "メニュー項目は、ユーザーが一般設定の権限を持っている場合にのみ表示されます。"
msgstr ""
#: pretix/base/permissions.py:177 pretix/base/permissions.py:231
#: pretix/base/permissions.py:285 pretix/base/permissions.py:313
#: pretix/base/permissions.py:330
#, fuzzy
#| msgid "Revoke access"
msgctxt "permission_level"
msgid "No access"
msgstr "アクセスなし"
msgstr "アクセスを取り消す"
#: pretix/base/permissions.py:188
#: pretix/control/templates/pretixcontrol/event/settings.html:7
@@ -8273,8 +8287,6 @@ msgid ""
"This includes access to all settings not listed explicitly below, including "
"plugin settings."
msgstr ""
"これには、以下に明示的に記載されていないすべての設定(プラグイン設定を含む)"
"へのアクセスが含まれます。"
#: pretix/base/permissions.py:197
#: pretix/control/templates/pretixcontrol/event/payment.html:6
@@ -8288,77 +8300,100 @@ msgid "Tax settings"
msgstr "税の設定"
#: pretix/base/permissions.py:209
#, fuzzy
#| msgid "Invoice settings"
msgid "Invoicing settings"
msgstr "請求の設定"
msgstr "請求の設定"
#: pretix/base/permissions.py:215
#, fuzzy
#| msgctxt "subevent"
#| msgid "Event series date added"
msgid "Event series dates"
msgstr "イベントシリーズ日程"
msgstr "イベントシリーズ日程が追加されました"
#: pretix/base/permissions.py:221
#, fuzzy
#| msgid "Product name and variation"
msgid "Products, quotas and questions"
msgstr "製品、クオータおよび質問"
msgstr "製品名とバリエーション"
#: pretix/base/permissions.py:224
msgid "Also includes related objects like categories or discounts."
msgstr "カテゴリや割引などの関連オブジェクトも含まれます。"
msgstr ""
#: pretix/base/permissions.py:232
#, fuzzy
#| msgid "All check-ins"
msgctxt "permission_level"
msgid "Only check-in"
msgstr "チェックインのみ"
msgstr "すべてのチェックイン"
#: pretix/base/permissions.py:233
#, fuzzy
#| msgid "View full log"
msgctxt "permission_level"
msgid "View all"
msgstr "すべてを表示"
msgstr "フルログを表示します"
#: pretix/base/permissions.py:234
#, fuzzy
#| msgid "Valid check-in"
msgctxt "permission_level"
msgid "View all and check-in"
msgstr "すべてを表示してチェックイン"
msgstr "有効なチェックイン"
#: pretix/base/permissions.py:235
#, fuzzy
#| msgid "View all upcoming events"
msgctxt "permission_level"
msgid "View all and change"
msgstr "すべてを表示して変更する"
msgstr "すべての予定されているイベントを表示します"
#: pretix/base/permissions.py:236
msgid "Includes the ability to cancel and refund individual orders."
msgstr "個別の注文をキャンセルおよび返金する機能が含まれています。"
msgstr ""
#: pretix/base/permissions.py:238
#, fuzzy
#| msgid "An entry has been added to the waiting list."
msgid "Also includes related objects like the waiting list."
msgstr "待機リストなどの関連オブジェクトも含まれます。"
msgstr "空席待ちリストに登録が追加されました。"
#: pretix/base/permissions.py:248
#, fuzzy
#| msgid "Generate cancellation"
msgid "Full event or date cancellation"
msgstr "イベント全体または日程のキャンセル"
msgstr "キャンセルを生成します"
#: pretix/base/permissions.py:252
#, fuzzy
#| msgid "Sale not allowed"
msgctxt "permission_level"
msgid "Not allowed"
msgstr "許可されていません"
msgstr "販売は許可されていません"
#: pretix/base/permissions.py:253
#, fuzzy
#| msgid "Allowed titles"
msgctxt "permission_level"
msgid "Allowed"
msgstr "許可されている"
msgstr "選択可能な敬称"
#: pretix/base/permissions.py:268
msgctxt "permission_level"
msgid "Access existing events"
msgstr "既存のイベントにアクセス"
msgstr ""
#: pretix/base/permissions.py:269
msgctxt "permission_level"
msgid "Access existing and create new events"
msgstr "既存のイベントにアクセスし、新しいイベントを作成する"
msgstr ""
#: pretix/base/permissions.py:271
msgid ""
"The level of access to events is determined in detail by the settings below."
msgstr "イベントへのアクセスレベルは、以下の設定によって詳細に決定されます。"
msgstr ""
#: pretix/base/permissions.py:275 pretix/control/navigation.py:143
#: pretix/control/navigation.py:462 pretix/control/navigation.py:512
@@ -8377,14 +8412,12 @@ msgid ""
"This includes access to all organizer-level functionality not listed "
"explicitly below, including plugin settings."
msgstr ""
"これには、以下に明示的に記載されていないすべてのオーガナイザーレベル機能への"
"アクセスが含まれ、プラグイン設定も含まれます。"
#: pretix/base/permissions.py:287
msgid ""
"Includes the ability to give someone (including oneself) additional "
"permissions."
msgstr "自分自身を含む誰かに追加の権限を付与する機能が含まれています。"
msgstr ""
#: pretix/base/permissions.py:298 pretix/control/navigation.py:608
#: pretix/control/templates/pretixcontrol/organizers/customers.html:6
@@ -8402,12 +8435,12 @@ msgid ""
"Includes the ability to give access to events and data oneself does not have "
"access to."
msgstr ""
"自らがアクセスできないイベントやデータへのアクセス権を付与する機能が含まれま"
"す。"
#: pretix/base/permissions.py:321
#, fuzzy
#| msgid "Seating plan"
msgid "Seating plans"
msgstr "座席プラン"
msgstr "座席"
#: pretix/base/permissions.py:327 pretix/control/navigation.py:712
#: pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html:8
@@ -9010,12 +9043,12 @@ msgid "Czech National Bank"
msgstr "チェコ国立銀行"
#: pretix/base/services/export.py:94 pretix/base/services/export.py:154
#, fuzzy
#| msgid "You do not have sufficient permission to perform this export."
msgid ""
"Export not found or you do not have sufficient permission to perform this "
"export."
msgstr ""
"エクスポートが見つからないか、エクスポートを実行するための十分な権限がありま"
"せん。"
msgstr "このエクスポートを実行するための十分な権限がありません。"
#: pretix/base/services/export.py:107 pretix/base/services/export.py:179
#: pretix/base/services/export.py:357
@@ -13301,7 +13334,25 @@ msgid "Contact"
msgstr "連絡先"
#: pretix/base/templates/pretixbase/email/shred_completed.txt:2
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "we hereby confirm that the following data shredding job has been "
#| "completed:\n"
#| "\n"
#| "Organizer: %(organizer)s\n"
#| "\n"
#| "Event: %(event)s\n"
#| "\n"
#| "Data selection: %(shredders)s\n"
#| "\n"
#| "Start time: %(start_time)s (new data added after this time might not have "
#| "been deleted)\n"
#| "\n"
#| "Best regards,\n"
#| "\n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -13335,7 +13386,7 @@ msgstr ""
"\n"
"敬具\n"
"\n"
"担当 %(instance)sチーム\n"
"担当 pretix チーム\n"
#: pretix/base/templates/pretixbase/forms/widgets/checkbox_sales_channel_option.html:16
msgid ""
@@ -13889,12 +13940,16 @@ msgid "This is an event series"
msgstr "これはイベントシリーズです"
#: pretix/control/forms/event.py:135 pretix/control/forms/event.py:363
#, fuzzy
#| msgid ""
#| "You do not have sufficient permission to enable plugins that need to be "
#| "enabled for the entire organizer account."
msgid ""
"You do not have a sufficient level of access on the event you selected to "
"copy it to the desired organizer."
msgstr ""
"選択したイベントに対して、目的の主催者にコピーするための十分なアクセス権があ"
"りません。"
"主催者アカウント全体で有効化する必要があるプラグインを有効にするのに十分な権"
"限がありません。"
#: pretix/control/forms/event.py:143
msgid ""
@@ -13973,8 +14028,6 @@ msgid ""
"You cannot choose a team that would give you more access than you have on "
"the event you are copying."
msgstr ""
"コピーしているイベントに対して、より多くのアクセス権が付与されるチームを選択"
"することはできません。"
#: pretix/control/forms/event.py:344
msgid "Copy configuration from"
@@ -13990,8 +14043,6 @@ msgid ""
"You cannot choose an event on which you have less access than the team you "
"selected in the previous step."
msgstr ""
"前のステップで選択したチームよりもアクセス権が少ないイベントを選択することは"
"できません。"
#: pretix/control/forms/event.py:387 pretix/control/forms/item.py:1304
#: pretix/control/forms/subevents.py:411
@@ -14941,7 +14992,7 @@ msgstr "すべての参加者"
#: pretix/plugins/checkinlists/exporters.py:109
#: pretix/plugins/checkinlists/exporters.py:501
msgid "Checked in"
msgstr "チェックイン済み"
msgstr "チェックインしました"
#: pretix/control/forms/filter.py:2043
#: pretix/plugins/checkinlists/exporters.py:110
@@ -14959,7 +15010,7 @@ msgstr "チェックインしたが退出済み"
#: pretix/control/templates/pretixcontrol/checkin/index.html:178
#: pretix/plugins/checkinlists/exporters.py:112
msgid "Not checked in"
msgstr "チェックイン未了"
msgstr "チェックイン"
#: pretix/control/forms/filter.py:2064
msgctxt "subevent"
@@ -16296,7 +16347,7 @@ msgstr "1つの組織ドメインのみを設定できます。"
#: pretix/control/forms/organizer.py:322
msgid "Provided by a plugin"
msgstr "プラグインによって提供"
msgstr ""
#: pretix/control/forms/organizer.py:438
msgid ""
@@ -17165,8 +17216,10 @@ msgid "The order has been denied (comment: \"{comment}\")."
msgstr "注文は拒否されました(コメント:\"{comment}\")。"
#: pretix/control/logdisplay.py:521
#, fuzzy
#| msgid "The order has been overpaid."
msgid "The customer VAT ID has been verified."
msgstr "顧客のVAT IDが確認されました。"
msgstr "注文が過払いされました。"
#: pretix/control/logdisplay.py:522
#, python-brace-format
@@ -17445,9 +17498,10 @@ msgid "{user} has been invited to the team."
msgstr "{user} がチームに招待されました。"
#: pretix/control/logdisplay.py:644
#, python-brace-format
#, fuzzy, python-brace-format
#| msgid "Invite for {user} has been resent."
msgid "Invite for {user} has been deleted."
msgstr "{user}への招待が削除されました。"
msgstr "{user}への招待状が再送されました。"
#: pretix/control/logdisplay.py:645
#, python-brace-format
@@ -19725,7 +19779,21 @@ msgid "Add property"
msgstr "プロパティを追加"
#: pretix/control/templates/pretixcontrol/email/confirmation_code.txt:1
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "%(reason)s\n"
#| "\n"
#| " %(code)s\n"
#| "\n"
#| "Please do never give this code to another person. Our support team will "
#| "never ask for this code.\n"
#| "\n"
#| "If this code was not requested by you, please contact us immediately.\n"
#| "\n"
#| "Best regards,\n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -19753,7 +19821,7 @@ msgstr ""
"このコードにお心当たりがない場合は、直ちにご連絡ください。\n"
"\n"
"よろしくお願いいたします。\n"
"%(instance)sチーム\n"
"pretixチーム\n"
#: pretix/control/templates/pretixcontrol/email/email_setup.txt:1
#, python-format
@@ -19791,7 +19859,17 @@ msgstr ""
"%(instance)s チーム\n"
#: pretix/control/templates/pretixcontrol/email/forgot.txt:1
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "you requested a new password. Please go to the following page to reset "
#| "your password:\n"
#| "\n"
#| "%(url)s\n"
#| "\n"
#| "Best regards, \n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -19811,10 +19889,27 @@ msgstr ""
"%(url)s\n"
"\n"
"よろしくお願いします、 \n"
"あなたの%(instance)sチーム\n"
"あなたのpretixチーム\n"
#: pretix/control/templates/pretixcontrol/email/invitation.txt:1
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "you have been invited to a team on pretix, a platform to perform event\n"
#| "ticket sales.\n"
#| "\n"
#| "Organizer: %(organizer)s\n"
#| "Team: %(team)s\n"
#| "\n"
#| "If you want to join that team, just click on the following link:\n"
#| "%(url)s\n"
#| "\n"
#| "If you do not want to join, you can safely ignore or delete this email.\n"
#| "\n"
#| "Best regards, \n"
#| "\n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -19836,7 +19931,7 @@ msgid ""
msgstr ""
"こんにちは、\n"
"\n"
"あなたは、%(instance)sというイベントチケット販売プラットフォームの\n"
"あなたは、pretixというイベントチケット販売プラットフォームの\n"
"チームに招待されました。\n"
"\n"
"主催者: %(organizer)s\n"
@@ -19849,7 +19944,7 @@ msgstr ""
"\n"
"よろしくお願いします。\n"
"\n"
"%(instance)sチーム\n"
"pretixチーム\n"
#: pretix/control/templates/pretixcontrol/email/login_notice.txt:1
#, python-format
@@ -19886,7 +19981,24 @@ msgstr ""
"%(instance)sチーム\n"
#: pretix/control/templates/pretixcontrol/email/security_notice.txt:1
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "this is to inform you that the account information of your pretix account "
#| "has been\n"
#| "changed. In particular, the following changes have been performed:\n"
#| "\n"
#| "%(messages)s\n"
#| "\n"
#| "If this change was not performed by you, please contact us immediately.\n"
#| "\n"
#| "You can review and change your account settings here:\n"
#| "\n"
#| "%(url)s\n"
#| "\n"
#| "Best regards, \n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -19907,21 +20019,20 @@ msgid ""
msgstr ""
"こんにちは\n"
"\n"
"あなたの%(instance)sのアカウント情報が変更されましたので、お知らせいたします"
"。\n"
"お客様のpretixアカウント情報が変更されましたので、お知らせいたします。\n"
"具体的には、以下の変更が行われました:\n"
"\n"
"%(messages)s\n"
"\n"
"もしもこの変更がお客様自身によるものでない場合は、直ちにお問い合わせくださ"
"。\n"
"もしもこの変更がお客様自身によるものでない場合は、直ちにお問い合わせくださ"
"。\n"
"\n"
"アカウント設定の確認や変更はこちらから行えます:\n"
"\n"
"%(url)s\n"
"\n"
"以上、よろしくお願いいたします。 \n"
"%(instance)sチームより\n"
"pretixチームより\n"
#: pretix/control/templates/pretixcontrol/email_setup.html:8
#: pretix/control/templates/pretixcontrol/email_setup_simple.html:8
@@ -20176,8 +20287,10 @@ msgstr ""
"ルと払い戻しを行うことができます。"
#: pretix/control/templates/pretixcontrol/event/dangerzone.html:51
#, fuzzy
#| msgid "Permissions"
msgid "No permission"
msgstr "権限なし"
msgstr "権限"
#: pretix/control/templates/pretixcontrol/event/dangerzone.html:59
#: pretix/control/templates/pretixcontrol/event/dangerzone.html:72
@@ -22655,8 +22768,10 @@ msgid "Edit question"
msgstr "質問を編集"
#: pretix/control/templates/pretixcontrol/items/question.html:55
#, fuzzy
#| msgid "You do not have permission to view this content."
msgid "No permission to view answers."
msgstr "回答を閲覧する権限がありません。"
msgstr "このコンテンツを表示する権限がありません。"
#: pretix/control/templates/pretixcontrol/items/question.html:63
msgid "No matching answers found."
@@ -24267,8 +24382,10 @@ msgstr "次の実行は予定されていない"
#: pretix/control/templates/pretixcontrol/orders/export.html:37
#: pretix/control/templates/pretixcontrol/organizers/export.html:37
#, fuzzy
#| msgid "Exporter not found"
msgid "Exporter not found or no permission"
msgstr "エクスポーターが見つからない、または権限がありません"
msgstr "エクスポーターが見つかりません"
#: pretix/control/templates/pretixcontrol/orders/export.html:42
#: pretix/control/templates/pretixcontrol/organizers/export.html:42
@@ -24311,8 +24428,10 @@ msgstr "新規ユーザー向けのおすすめです"
#: pretix/control/templates/pretixcontrol/orders/export.html:120
#: pretix/control/templates/pretixcontrol/organizers/export.html:120
#, fuzzy
#| msgid "There are no add-ons available for this product."
msgid "There are no exporters available for you."
msgstr "ご利用いただけるエクスポーターがありません。"
msgstr "この製品に利用可能なアドオンはありません。"
#: pretix/control/templates/pretixcontrol/orders/export_delete.html:4
#: pretix/control/templates/pretixcontrol/orders/export_delete.html:6
@@ -26210,7 +26329,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/pdf/index.html:274
#, python-format
msgid "max. %(size)s, smaller is better"
msgstr "最大%(size)sで、より少ない数値が望ましい"
msgstr ""
#: pretix/control/templates/pretixcontrol/pdf/index.html:282
msgid "Download current background"
@@ -28904,12 +29023,16 @@ msgstr ""
"い。"
#: pretix/control/views/orders.py:2798 pretix/control/views/organizer.py:2131
#, fuzzy
#| msgid ""
#| "Your user account does not have sufficient permission to run this report, "
#| "therefore you cannot schedule it."
msgid ""
"Your user account does not have sufficient permission to run this report, "
"therefore you cannot change it."
msgstr ""
"あなたのユーザーアカウントにはこのレポートを実行する十分な権限がありませんの"
"で、変更することはできません。"
"ユーザーアカウントにはこのレポートを実行するのに十分な権限がないため、スケ"
"ジュールを設定できません。"
#: pretix/control/views/orders.py:2807 pretix/control/views/organizer.py:2140
msgid ""
@@ -32872,7 +32995,7 @@ msgstr "Stripe経由でiDEAL"
#: pretix/plugins/stripe/payment.py:1572
msgid "iDEAL | Wero"
msgstr "iDEAL | Wero"
msgstr ""
#: pretix/plugins/stripe/payment.py:1575
msgid ""
@@ -35782,8 +35905,6 @@ msgid ""
"the shop that affect quotas, such as the validity period of carts and "
"vouchers."
msgstr ""
"変更された時間は、カートやバウチャーの有効期間など、クォータに影響を与える"
"ショップの項目については考慮されませんので、ご了承ください。"
#: pretix/presale/templates/pretixpresale/event/timemachine.html:31
msgid "Enable time machine"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-03-17 14:06+0000\n"
"PO-Revision-Date: 2026-03-23 21:00+0000\n"
"PO-Revision-Date: 2026-02-23 10:00+0000\n"
"Last-Translator: Hijiri Umemoto <hijiri@umemoto.org>\n"
"Language-Team: Japanese <https://translate.pretix.eu/projects/pretix/pretix-"
"js/ja/>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.16.2\n"
"X-Generator: Weblate 5.16\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -60,7 +60,7 @@ msgstr "PayPal後払い"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:41
msgid "iDEAL | Wero"
msgstr "iDEAL | Wero"
msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:42
msgid "SEPA Direct Debit"

View File

@@ -7,10 +7,10 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-03-17 14:05+0000\n"
"PO-Revision-Date: 2026-03-18 12:23+0000\n"
"PO-Revision-Date: 2026-03-14 22:00+0000\n"
"Last-Translator: Ruud Hendrickx <ruud@leckxicon.eu>\n"
"Language-Team: Dutch <https://translate.pretix.eu/projects/pretix/pretix/nl/>"
"\n"
"Language-Team: Dutch <https://translate.pretix.eu/projects/pretix/pretix/nl/"
">\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -407,8 +407,10 @@ msgstr ""
#: pretix/api/serializers/organizer.py:482
#: pretix/control/views/organizer.py:1039
#, fuzzy
#| msgid "Account information"
msgid "Account invitation"
msgstr "Uitnodiging voor account"
msgstr "Accountinformatie"
#: pretix/api/serializers/organizer.py:503
#: pretix/control/views/organizer.py:1138
@@ -3946,8 +3948,10 @@ msgid "Peppol participant ID"
msgstr "Peppol-deelnemer-ID"
#: pretix/base/invoicing/peppol.py:211
#, fuzzy
#| msgid "The Peppol participant ID is not registered on the Peppol network."
msgid "The Peppol participant ID does not match your VAT ID."
msgstr "Het Peppol-deelnemersnummer komt niet overeen met uw btw-nummer."
msgstr "De Peppol-deelnemer-ID is niet geregistreerd op het Peppol-netwerk."
#: pretix/base/invoicing/peppol.py:214
msgctxt "peppol_invoice"
@@ -6870,8 +6874,10 @@ msgstr ""
"minuten duren voordat de instelling voor alle gebruikers van kracht wordt."
#: pretix/base/models/organizer.py:378
#, fuzzy
#| msgid "Event permissions"
msgid "All event permissions"
msgstr "Alle evenementrechten"
msgstr "Evenementrechten"
#: pretix/base/models/organizer.py:379
#: pretix/control/templates/pretixcontrol/organizers/team_edit.html:34
@@ -6879,8 +6885,10 @@ msgid "Event permissions"
msgstr "Evenementrechten"
#: pretix/base/models/organizer.py:380
#, fuzzy
#| msgid "Organizer permissions"
msgid "All organizer permissions"
msgstr "Alle rechten van de organisator"
msgstr "Organisatorrechten"
#: pretix/base/models/organizer.py:381
#: pretix/control/templates/pretixcontrol/organizers/team_edit.html:25
@@ -8385,32 +8393,36 @@ msgstr "Uw lay-outbestand is geen geldige lay-out. Foutmelding: {}"
#: pretix/base/permissions.py:314 pretix/base/permissions.py:331
msgctxt "permission_level"
msgid "View"
msgstr "Lezen"
msgstr ""
#: pretix/base/permissions.py:164 pretix/base/permissions.py:169
#: pretix/base/permissions.py:174 pretix/base/permissions.py:179
#: pretix/base/permissions.py:286 pretix/base/permissions.py:315
#, fuzzy
#| msgid "Save and check"
msgctxt "permission_level"
msgid "View and change"
msgstr "Bekijken en wijzigen"
msgstr "Opslaan en controleren"
#: pretix/base/permissions.py:168
#, fuzzy
#| msgid "API tokens"
msgid "API only"
msgstr "alleen API"
msgstr "API-tokens"
#: pretix/base/permissions.py:173
msgid ""
"Menu item will only show up if the user has permission for general settings."
msgstr ""
"Dit menu-item wordt alleen weergegeven als de gebruiker rechten heeft voor "
"algemene instellingen."
#: pretix/base/permissions.py:177 pretix/base/permissions.py:231
#: pretix/base/permissions.py:285 pretix/base/permissions.py:313
#: pretix/base/permissions.py:330
#, fuzzy
#| msgid "Revoke access"
msgctxt "permission_level"
msgid "No access"
msgstr "Geen toegang"
msgstr "Toegang intrekken"
#: pretix/base/permissions.py:188
#: pretix/control/templates/pretixcontrol/event/settings.html:7
@@ -8424,8 +8436,6 @@ msgid ""
"This includes access to all settings not listed explicitly below, including "
"plugin settings."
msgstr ""
"Dit omvat toegang tot alle instellingen die hieronder niet expliciet worden "
"vermeld, inclusief instellingen voor plug-ins."
#: pretix/base/permissions.py:197
#: pretix/control/templates/pretixcontrol/event/payment.html:6
@@ -8439,81 +8449,100 @@ msgid "Tax settings"
msgstr "Belastinginstellingen"
#: pretix/base/permissions.py:209
#, fuzzy
#| msgid "Invoice settings"
msgid "Invoicing settings"
msgstr "Factuurinstellingen"
#: pretix/base/permissions.py:215
#, fuzzy
#| msgctxt "subevent"
#| msgid "Event series date added"
msgid "Event series dates"
msgstr "Datums van de evenementenreeks"
msgstr "Evenementenreeks: datum toegevoegd"
#: pretix/base/permissions.py:221
#, fuzzy
#| msgid "Product name and variation"
msgid "Products, quotas and questions"
msgstr "Producten, quota en vragen"
msgstr "Productnaam en variant"
#: pretix/base/permissions.py:224
msgid "Also includes related objects like categories or discounts."
msgstr "Omvat ook gerelateerde objecten zoals categorieën of kortingen."
msgstr ""
#: pretix/base/permissions.py:232
#, fuzzy
#| msgid "All check-ins"
msgctxt "permission_level"
msgid "Only check-in"
msgstr "Alleen inchecken"
msgstr "Alle check-ins"
#: pretix/base/permissions.py:233
#, fuzzy
#| msgid "View full log"
msgctxt "permission_level"
msgid "View all"
msgstr "Alles bekijken"
msgstr "Toon volledige log"
#: pretix/base/permissions.py:234
#, fuzzy
#| msgid "Valid check-in"
msgctxt "permission_level"
msgid "View all and check-in"
msgstr "Alles bekijken en inchecken"
msgstr "Geldige check-in"
#: pretix/base/permissions.py:235
#, fuzzy
#| msgid "View all upcoming events"
msgctxt "permission_level"
msgid "View all and change"
msgstr "Alles bekijken en wijzigen"
msgstr "Bekijk alle aankomende evenementen"
#: pretix/base/permissions.py:236
msgid "Includes the ability to cancel and refund individual orders."
msgstr ""
"Biedt de mogelijkheid om afzonderlijke bestellingen te annuleren en terug te "
"betalen."
#: pretix/base/permissions.py:238
#, fuzzy
#| msgid "An entry has been added to the waiting list."
msgid "Also includes related objects like the waiting list."
msgstr "Bevat ook aanverwante objecten, zoals de wachtlijst."
msgstr "Er is een inschrijving toegevoegd aan de wachtlijst."
#: pretix/base/permissions.py:248
#, fuzzy
#| msgid "Generate cancellation"
msgid "Full event or date cancellation"
msgstr "Volledige annulering van het evenement of de datum"
msgstr "Genereer annulering"
#: pretix/base/permissions.py:252
#, fuzzy
#| msgid "Sale not allowed"
msgctxt "permission_level"
msgid "Not allowed"
msgstr "Niet toegestaan"
msgstr "Verkoop niet toegestaan"
#: pretix/base/permissions.py:253
#, fuzzy
#| msgid "Allowed titles"
msgctxt "permission_level"
msgid "Allowed"
msgstr "Toegestaan"
msgstr "Toegestane titels"
#: pretix/base/permissions.py:268
msgctxt "permission_level"
msgid "Access existing events"
msgstr "Toegang tot bestaande evenementen"
msgstr ""
#: pretix/base/permissions.py:269
msgctxt "permission_level"
msgid "Access existing and create new events"
msgstr "Toegang tot bestaande evenementen en nieuwe evenementen aanmaken"
msgstr ""
#: pretix/base/permissions.py:271
msgid ""
"The level of access to events is determined in detail by the settings below."
msgstr ""
"De toegang tot evenementen wordt in detail bepaald door de onderstaande "
"instellingen."
#: pretix/base/permissions.py:275 pretix/control/navigation.py:143
#: pretix/control/navigation.py:462 pretix/control/navigation.py:512
@@ -8532,15 +8561,12 @@ msgid ""
"This includes access to all organizer-level functionality not listed "
"explicitly below, including plugin settings."
msgstr ""
"Dit omvat toegang tot alle functies op organisatieniveau die hieronder niet "
"expliciet worden vermeld, inclusief de instellingen van plug-ins."
#: pretix/base/permissions.py:287
msgid ""
"Includes the ability to give someone (including oneself) additional "
"permissions."
msgstr ""
"Biedt de mogelijkheid om iemand (inclusief uzelf) extra rechten te geven."
#: pretix/base/permissions.py:298 pretix/control/navigation.py:608
#: pretix/control/templates/pretixcontrol/organizers/customers.html:6
@@ -8558,12 +8584,12 @@ msgid ""
"Includes the ability to give access to events and data oneself does not have "
"access to."
msgstr ""
"Biedt de mogelijkheid om toegang te verlenen tot evenementen en gegevens "
"waar men zelf geen toegang toe heeft."
#: pretix/base/permissions.py:321
#, fuzzy
#| msgid "Seating plan"
msgid "Seating plans"
msgstr "Zaalplannen"
msgstr "Zaalplan"
#: pretix/base/permissions.py:327 pretix/control/navigation.py:712
#: pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html:8
@@ -9198,12 +9224,12 @@ msgid "Czech National Bank"
msgstr "Tsjechische Nationale Bank"
#: pretix/base/services/export.py:94 pretix/base/services/export.py:154
#, fuzzy
#| msgid "You do not have sufficient permission to perform this export."
msgid ""
"Export not found or you do not have sufficient permission to perform this "
"export."
msgstr ""
"De export is niet gevonden of u hebt onvoldoende rechten om deze export uit "
"te voeren."
msgstr "U bent niet gemachtigd om deze export uit te voeren."
#: pretix/base/services/export.py:107 pretix/base/services/export.py:179
#: pretix/base/services/export.py:357
@@ -13658,7 +13684,25 @@ msgid "Contact"
msgstr "Contact"
#: pretix/base/templates/pretixbase/email/shred_completed.txt:2
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "we hereby confirm that the following data shredding job has been "
#| "completed:\n"
#| "\n"
#| "Organizer: %(organizer)s\n"
#| "\n"
#| "Event: %(event)s\n"
#| "\n"
#| "Data selection: %(shredders)s\n"
#| "\n"
#| "Start time: %(start_time)s (new data added after this time might not have "
#| "been deleted)\n"
#| "\n"
#| "Best regards,\n"
#| "\n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -13693,7 +13737,7 @@ msgstr ""
"\n"
"Met vriendelijke groeten,\n"
"\n"
"Het %(instance)s-team\n"
"Het pretix-team\n"
#: pretix/base/templates/pretixbase/forms/widgets/checkbox_sales_channel_option.html:16
msgid ""
@@ -14254,12 +14298,16 @@ msgid "This is an event series"
msgstr "Dit is een evenementenreeks"
#: pretix/control/forms/event.py:135 pretix/control/forms/event.py:363
#, fuzzy
#| msgid ""
#| "You do not have sufficient permission to enable plugins that need to be "
#| "enabled for the entire organizer account."
msgid ""
"You do not have a sufficient level of access on the event you selected to "
"copy it to the desired organizer."
msgstr ""
"U hebt onvoldoende rechten voor het evenement dat u hebt geselecteerd om het "
"naar de gewenste organisator te kopiëren."
"U hebt niet voldoende rechten om plug-ins in te schakelen die voor het hele "
"organisatoraccount moeten worden ingeschakeld."
#: pretix/control/forms/event.py:143
msgid ""
@@ -14338,8 +14386,6 @@ msgid ""
"You cannot choose a team that would give you more access than you have on "
"the event you are copying."
msgstr ""
"U kunt geen team kiezen dat u meer toegangsrechten zou geven dan u nu hebt "
"voor het evenement dat u kopieert."
#: pretix/control/forms/event.py:344
msgid "Copy configuration from"
@@ -14355,8 +14401,6 @@ msgid ""
"You cannot choose an event on which you have less access than the team you "
"selected in the previous step."
msgstr ""
"U kunt geen evenement kiezen waarvoor u minder toegangsrechten hebt dan het "
"team dat u in de vorige stap geselecteerd hebt."
#: pretix/control/forms/event.py:387 pretix/control/forms/item.py:1304
#: pretix/control/forms/subevents.py:411
@@ -15313,7 +15357,7 @@ msgstr "Zoek deelnemer…"
#: pretix/control/forms/filter.py:2039
#: pretix/plugins/checkinlists/exporters.py:106
msgid "Check-in status"
msgstr "Check-in-status"
msgstr "Incheckstatus"
#: pretix/control/forms/filter.py:2041
#: pretix/plugins/checkinlists/exporters.py:108
@@ -16726,7 +16770,7 @@ msgstr "Er kan maximaal 1 organisatordomein gekozen worden."
#: pretix/control/forms/organizer.py:322
msgid "Provided by a plugin"
msgstr "Beschikbaar gesteld via een plug-in"
msgstr ""
#: pretix/control/forms/organizer.py:438
msgid ""
@@ -17602,8 +17646,10 @@ msgid "The order has been denied (comment: \"{comment}\")."
msgstr "De bestelling is geweigerd (commentaar: \"{comment}\")."
#: pretix/control/logdisplay.py:521
#, fuzzy
#| msgid "The order has been overpaid."
msgid "The customer VAT ID has been verified."
msgstr "Het btw-nummer van de klant is geverifieerd."
msgstr "Er is te veel betaald voor de bestelling."
#: pretix/control/logdisplay.py:522
#, python-brace-format
@@ -17905,9 +17951,10 @@ msgid "{user} has been invited to the team."
msgstr "{user} is uitgenodigd voor het team."
#: pretix/control/logdisplay.py:644
#, python-brace-format
#, fuzzy, python-brace-format
#| msgid "Invite for {user} has been resent."
msgid "Invite for {user} has been deleted."
msgstr "De uitnodiging voor {user} is verwijderd."
msgstr "De uitnodiging voor {user} is opnieuw verstuurd."
#: pretix/control/logdisplay.py:645
#, python-brace-format
@@ -20212,7 +20259,21 @@ msgid "Add property"
msgstr "Eigenschap toevoegen"
#: pretix/control/templates/pretixcontrol/email/confirmation_code.txt:1
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "%(reason)s\n"
#| "\n"
#| " %(code)s\n"
#| "\n"
#| "Please do never give this code to another person. Our support team will "
#| "never ask for this code.\n"
#| "\n"
#| "If this code was not requested by you, please contact us immediately.\n"
#| "\n"
#| "Best regards,\n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -20241,7 +20302,7 @@ msgstr ""
"op.\n"
"\n"
"Groeten,\n"
"Uw %(instance)s-team\n"
"Uw pretix-team\n"
#: pretix/control/templates/pretixcontrol/email/email_setup.txt:1
#, python-format
@@ -20277,7 +20338,17 @@ msgstr ""
"Uw %(instance)s-team\n"
#: pretix/control/templates/pretixcontrol/email/forgot.txt:1
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "you requested a new password. Please go to the following page to reset "
#| "your password:\n"
#| "\n"
#| "%(url)s\n"
#| "\n"
#| "Best regards, \n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -20297,10 +20368,27 @@ msgstr ""
"%(url)s\n"
"\n"
"Met vriendelijke groet,\n"
"Het %(instance)s-team\n"
"Het pretix-team\n"
#: pretix/control/templates/pretixcontrol/email/invitation.txt:1
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "you have been invited to a team on pretix, a platform to perform event\n"
#| "ticket sales.\n"
#| "\n"
#| "Organizer: %(organizer)s\n"
#| "Team: %(team)s\n"
#| "\n"
#| "If you want to join that team, just click on the following link:\n"
#| "%(url)s\n"
#| "\n"
#| "If you do not want to join, you can safely ignore or delete this email.\n"
#| "\n"
#| "Best regards, \n"
#| "\n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -20322,7 +20410,7 @@ msgid ""
msgstr ""
"Hallo,\n"
"\n"
"U bent uitgenodigd voor een team op %(instance)s, een platform om tickets\n"
"U bent uitgenodigd voor een team op pretix, een platform om tickets\n"
"te verkopen.\n"
"\n"
"Organisator: %(organizer)s\n"
@@ -20335,7 +20423,7 @@ msgstr ""
"\n"
"Met vriendelijke groet,\n"
"\n"
"Het %(instance)s-team\n"
"Het pretix-team\n"
#: pretix/control/templates/pretixcontrol/email/login_notice.txt:1
#, python-format
@@ -20373,7 +20461,24 @@ msgstr ""
"Het %(instance)s-team\n"
#: pretix/control/templates/pretixcontrol/email/security_notice.txt:1
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "this is to inform you that the account information of your pretix account "
#| "has been\n"
#| "changed. In particular, the following changes have been performed:\n"
#| "\n"
#| "%(messages)s\n"
#| "\n"
#| "If this change was not performed by you, please contact us immediately.\n"
#| "\n"
#| "You can review and change your account settings here:\n"
#| "\n"
#| "%(url)s\n"
#| "\n"
#| "Best regards, \n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -20394,7 +20499,7 @@ msgid ""
msgstr ""
"Hallo,\n"
"\n"
"U ontvangt deze e-mail omdat er wijzigingen zijn gemaakt in uw %(instance)s-"
"U ontvangt deze e-mail omdat er wijzigingen zijn gemaakt in uw pretix-"
"account.\n"
"De volgende wijzigingen zijn gemaakt:\n"
"\n"
@@ -20408,7 +20513,7 @@ msgstr ""
"%(url)s\n"
"\n"
"Met vriendelijke groet,\n"
"Het %(instance)s-team\n"
"Het pretix-team\n"
#: pretix/control/templates/pretixcontrol/email_setup.html:8
#: pretix/control/templates/pretixcontrol/email_setup_simple.html:8
@@ -20675,8 +20780,10 @@ msgstr ""
"kunt u dit via deze optie doen."
#: pretix/control/templates/pretixcontrol/event/dangerzone.html:51
#, fuzzy
#| msgid "Permissions"
msgid "No permission"
msgstr "Geen toestemming"
msgstr "Machtigingen"
#: pretix/control/templates/pretixcontrol/event/dangerzone.html:59
#: pretix/control/templates/pretixcontrol/event/dangerzone.html:72
@@ -23224,8 +23331,10 @@ msgid "Edit question"
msgstr "Vraag bewerken"
#: pretix/control/templates/pretixcontrol/items/question.html:55
#, fuzzy
#| msgid "You do not have permission to view this content."
msgid "No permission to view answers."
msgstr "U bent niet gemachtigd om de antwoorden te bekijken."
msgstr "U hebt geen toestemming om deze inhoud te bekijken."
#: pretix/control/templates/pretixcontrol/items/question.html:63
msgid "No matching answers found."
@@ -24222,9 +24331,8 @@ msgid ""
"this product was part of the discount calculation for a different product in "
"this order."
msgstr ""
"De prijs van dit product is verlaagd vanwege een automatische korting, of "
"dit product is meegenomen in de kortingsberekening voor een ander product in "
"deze bestelling."
"De prijs van dit product is verminderd door een automatische korting, of dit "
"product is deel van een korting voor een ander product op deze bestelling."
#: pretix/control/templates/pretixcontrol/order/index.html:496
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:103
@@ -24878,8 +24986,10 @@ msgstr "Geen volgende uitvoering gepland"
#: pretix/control/templates/pretixcontrol/orders/export.html:37
#: pretix/control/templates/pretixcontrol/organizers/export.html:37
#, fuzzy
#| msgid "Exporter not found"
msgid "Exporter not found or no permission"
msgstr "Exporteur niet gevonden of geen toestemming"
msgstr "Exporteerder niet gevonden"
#: pretix/control/templates/pretixcontrol/orders/export.html:42
#: pretix/control/templates/pretixcontrol/organizers/export.html:42
@@ -24922,8 +25032,10 @@ msgstr "Aangeraden voor nieuwe gebruikers"
#: pretix/control/templates/pretixcontrol/orders/export.html:120
#: pretix/control/templates/pretixcontrol/organizers/export.html:120
#, fuzzy
#| msgid "There are no add-ons available for this product."
msgid "There are no exporters available for you."
msgstr "Er zijn geen exporters voor u beschikbaar."
msgstr "Er zijn geen add-ons beschikbaar voor dit product."
#: pretix/control/templates/pretixcontrol/orders/export_delete.html:4
#: pretix/control/templates/pretixcontrol/orders/export_delete.html:6
@@ -26861,7 +26973,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/pdf/index.html:274
#, python-format
msgid "max. %(size)s, smaller is better"
msgstr "max. %(size)s; hoe kleiner, hoe beter"
msgstr ""
#: pretix/control/templates/pretixcontrol/pdf/index.html:282
msgid "Download current background"
@@ -29639,12 +29751,16 @@ msgstr ""
"Er was een probleem met het verwerken van uw invoer. Zie onder voor details."
#: pretix/control/views/orders.py:2798 pretix/control/views/organizer.py:2131
#, fuzzy
#| msgid ""
#| "Your user account does not have sufficient permission to run this report, "
#| "therefore you cannot schedule it."
msgid ""
"Your user account does not have sufficient permission to run this report, "
"therefore you cannot change it."
msgstr ""
"Uw gebruikersaccount heeft onvoldoende rechten om dit rapport uit te voeren. "
"Daarom kunt u het niet wijzigen."
"Daarom kunt u het niet plannen."
#: pretix/control/views/orders.py:2807 pretix/control/views/organizer.py:2140
msgid ""
@@ -33700,7 +33816,7 @@ msgstr "iDEAL via Stripe"
#: pretix/plugins/stripe/payment.py:1572
msgid "iDEAL | Wero"
msgstr "iDEAL | Wero"
msgstr ""
#: pretix/plugins/stripe/payment.py:1575
msgid ""
@@ -36686,9 +36802,6 @@ msgid ""
"the shop that affect quotas, such as the validity period of carts and "
"vouchers."
msgstr ""
"Let op: de gewijzigde tijd wordt niet meegenomen bij aspecten van de winkel "
"die van invloed zijn op quota, zoals de geldigheidsduur van winkelwagentjes "
"en kortingsbonnen."
#: pretix/presale/templates/pretixpresale/event/timemachine.html:31
msgid "Enable time machine"

View File

@@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-03-17 14:06+0000\n"
"PO-Revision-Date: 2026-03-18 12:23+0000\n"
"PO-Revision-Date: 2026-02-19 22:00+0000\n"
"Last-Translator: Ruud Hendrickx <ruud@leckxicon.eu>\n"
"Language-Team: Dutch <https://translate.pretix.eu/projects/pretix/pretix-js/"
"nl/>\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.16.2\n"
"X-Generator: Weblate 5.16\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -59,7 +59,7 @@ msgstr "PayPal - Later betalen"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:41
msgid "iDEAL | Wero"
msgstr "iDEAL | Wero"
msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:42
msgid "SEPA Direct Debit"

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-03-17 14:06+0000\n"
"PO-Revision-Date: 2026-03-18 14:50+0000\n"
"PO-Revision-Date: 2026-02-21 03:00+0000\n"
"Last-Translator: Ruud Hendrickx <ruud@leckxicon.eu>\n"
"Language-Team: Dutch (Belgium) <https://translate.pretix.eu/projects/pretix/"
"pretix-js/nl_BE/>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.16.2\n"
"X-Generator: Weblate 5.16\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -60,7 +60,7 @@ msgstr "PayPal - Later betalen"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:41
msgid "iDEAL | Wero"
msgstr "iDEAL | Wero"
msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:42
msgid "SEPA Direct Debit"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-03-17 14:05+0000\n"
"PO-Revision-Date: 2026-03-18 14:50+0000\n"
"PO-Revision-Date: 2026-03-14 22:00+0000\n"
"Last-Translator: Ruud Hendrickx <ruud@leckxicon.eu>\n"
"Language-Team: Dutch (informal) <https://translate.pretix.eu/projects/pretix/"
"pretix/nl_Informal/>\n"
@@ -410,8 +410,10 @@ msgstr ""
#: pretix/api/serializers/organizer.py:482
#: pretix/control/views/organizer.py:1039
#, fuzzy
#| msgid "Account information"
msgid "Account invitation"
msgstr "Uitnodiging voor account"
msgstr "Accountinformatie"
#: pretix/api/serializers/organizer.py:503
#: pretix/control/views/organizer.py:1138
@@ -3954,8 +3956,10 @@ msgid "Peppol participant ID"
msgstr "Peppol-deelnemers-ID"
#: pretix/base/invoicing/peppol.py:211
#, fuzzy
#| msgid "The Peppol participant ID is not registered on the Peppol network."
msgid "The Peppol participant ID does not match your VAT ID."
msgstr "Het Peppol-deelnemersnummer komt niet overeen met je btw-nummer."
msgstr "De Peppol-deelnemers-ID is niet geregistreerd op het Peppol-netwerk."
#: pretix/base/invoicing/peppol.py:214
msgctxt "peppol_invoice"
@@ -6882,8 +6886,10 @@ msgstr ""
"voordat de instelling voor alle gebruikers van kracht wordt."
#: pretix/base/models/organizer.py:378
#, fuzzy
#| msgid "Event permissions"
msgid "All event permissions"
msgstr "Alle evenementrechten"
msgstr "Evenementspermissies"
#: pretix/base/models/organizer.py:379
#: pretix/control/templates/pretixcontrol/organizers/team_edit.html:34
@@ -6891,8 +6897,10 @@ msgid "Event permissions"
msgstr "Evenementspermissies"
#: pretix/base/models/organizer.py:380
#, fuzzy
#| msgid "Organizer permissions"
msgid "All organizer permissions"
msgstr "Alle organisatorrechten"
msgstr "Organisatorpermissies"
#: pretix/base/models/organizer.py:381
#: pretix/control/templates/pretixcontrol/organizers/team_edit.html:25
@@ -8393,32 +8401,36 @@ msgstr "Uw lay-outbestand is geen geldige lay-out. Foutmelding: {}"
#: pretix/base/permissions.py:314 pretix/base/permissions.py:331
msgctxt "permission_level"
msgid "View"
msgstr "Lezen"
msgstr ""
#: pretix/base/permissions.py:164 pretix/base/permissions.py:169
#: pretix/base/permissions.py:174 pretix/base/permissions.py:179
#: pretix/base/permissions.py:286 pretix/base/permissions.py:315
#, fuzzy
#| msgid "Save and check"
msgctxt "permission_level"
msgid "View and change"
msgstr "Bekijken en wijzigen"
msgstr "Opslaan en controleren"
#: pretix/base/permissions.py:168
#, fuzzy
#| msgid "API tokens"
msgid "API only"
msgstr "alleen API"
msgstr "API-tokens"
#: pretix/base/permissions.py:173
msgid ""
"Menu item will only show up if the user has permission for general settings."
msgstr ""
"Dit menu-item wordt alleen weergegeven als de gebruiker rechten heeft voor "
"algemene instellingen."
#: pretix/base/permissions.py:177 pretix/base/permissions.py:231
#: pretix/base/permissions.py:285 pretix/base/permissions.py:313
#: pretix/base/permissions.py:330
#, fuzzy
#| msgid "Revoke access"
msgctxt "permission_level"
msgid "No access"
msgstr "Geen toegang"
msgstr "Toegang intrekken"
#: pretix/base/permissions.py:188
#: pretix/control/templates/pretixcontrol/event/settings.html:7
@@ -8432,8 +8444,6 @@ msgid ""
"This includes access to all settings not listed explicitly below, including "
"plugin settings."
msgstr ""
"Dit omvat toegang tot alle instellingen die hieronder niet expliciet worden "
"vermeld, inclusief instellingen voor plug-ins."
#: pretix/base/permissions.py:197
#: pretix/control/templates/pretixcontrol/event/payment.html:6
@@ -8447,81 +8457,100 @@ msgid "Tax settings"
msgstr "Belastinginstellingen"
#: pretix/base/permissions.py:209
#, fuzzy
#| msgid "Invoice settings"
msgid "Invoicing settings"
msgstr "Factureringsinstellingen"
msgstr "Factuurinstellingen"
#: pretix/base/permissions.py:215
#, fuzzy
#| msgctxt "subevent"
#| msgid "Event series date added"
msgid "Event series dates"
msgstr "Datums van de evenementenreeks"
msgstr "Evenementenreeks: datum toegevoegd"
#: pretix/base/permissions.py:221
#, fuzzy
#| msgid "Product name and variation"
msgid "Products, quotas and questions"
msgstr "Producten, quota en vragen"
msgstr "Productnaam en variant"
#: pretix/base/permissions.py:224
msgid "Also includes related objects like categories or discounts."
msgstr "Omvat ook gerelateerde objecten zoals categorieën of kortingen."
msgstr ""
#: pretix/base/permissions.py:232
#, fuzzy
#| msgid "All check-ins"
msgctxt "permission_level"
msgid "Only check-in"
msgstr "Alleen inchecken"
msgstr "Alle check-ins"
#: pretix/base/permissions.py:233
#, fuzzy
#| msgid "View full log"
msgctxt "permission_level"
msgid "View all"
msgstr "Alles bekijken"
msgstr "Toon volledige log"
#: pretix/base/permissions.py:234
#, fuzzy
#| msgid "Valid check-in"
msgctxt "permission_level"
msgid "View all and check-in"
msgstr "Alles bekijken en inchecken"
msgstr "Geldige check-in"
#: pretix/base/permissions.py:235
#, fuzzy
#| msgid "View all upcoming events"
msgctxt "permission_level"
msgid "View all and change"
msgstr "Alles bekijken en wijzigen"
msgstr "Bekijk alle aankomende evenementen"
#: pretix/base/permissions.py:236
msgid "Includes the ability to cancel and refund individual orders."
msgstr ""
"Biedt de mogelijkheid om afzonderlijke bestellingen te annuleren en terug te "
"betalen."
#: pretix/base/permissions.py:238
#, fuzzy
#| msgid "An entry has been added to the waiting list."
msgid "Also includes related objects like the waiting list."
msgstr "Bevat ook aanverwante objecten, zoals de wachtlijst."
msgstr "Een inschrijving is toegevoegd aan de wachtlijst."
#: pretix/base/permissions.py:248
#, fuzzy
#| msgid "Generate cancellation"
msgid "Full event or date cancellation"
msgstr "Volledige annulering van het evenement of de datum"
msgstr "Genereer annulering"
#: pretix/base/permissions.py:252
#, fuzzy
#| msgid "Sale not allowed"
msgctxt "permission_level"
msgid "Not allowed"
msgstr "Niet toegestaan"
msgstr "Verkoop niet toegestaan"
#: pretix/base/permissions.py:253
#, fuzzy
#| msgid "Allowed titles"
msgctxt "permission_level"
msgid "Allowed"
msgstr "Toegestaan"
msgstr "Te kiezen titels"
#: pretix/base/permissions.py:268
msgctxt "permission_level"
msgid "Access existing events"
msgstr "Toegang tot bestaande evenementen"
msgstr ""
#: pretix/base/permissions.py:269
msgctxt "permission_level"
msgid "Access existing and create new events"
msgstr "Toegang tot bestaande evenementen en nieuwe evenementen aanmaken"
msgstr ""
#: pretix/base/permissions.py:271
msgid ""
"The level of access to events is determined in detail by the settings below."
msgstr ""
"De toegang tot evenementen wordt in detail bepaald door de onderstaande "
"instellingen."
#: pretix/base/permissions.py:275 pretix/control/navigation.py:143
#: pretix/control/navigation.py:462 pretix/control/navigation.py:512
@@ -8540,15 +8569,12 @@ msgid ""
"This includes access to all organizer-level functionality not listed "
"explicitly below, including plugin settings."
msgstr ""
"Dit omvat toegang tot alle functies op organisatieniveau die hieronder niet "
"expliciet worden vermeld, inclusief de instellingen van plug-ins."
#: pretix/base/permissions.py:287
msgid ""
"Includes the ability to give someone (including oneself) additional "
"permissions."
msgstr ""
"Biedt de mogelijkheid om iemand (inclusief jezelf) extra rechten te geven."
#: pretix/base/permissions.py:298 pretix/control/navigation.py:608
#: pretix/control/templates/pretixcontrol/organizers/customers.html:6
@@ -8566,12 +8592,12 @@ msgid ""
"Includes the ability to give access to events and data oneself does not have "
"access to."
msgstr ""
"Biedt de mogelijkheid om toegang te verlenen tot evenementen en gegevens "
"waar je zelf geen toegang toe hebt."
#: pretix/base/permissions.py:321
#, fuzzy
#| msgid "Seating plan"
msgid "Seating plans"
msgstr "Zaalplannen"
msgstr "Zitplan"
#: pretix/base/permissions.py:327 pretix/control/navigation.py:712
#: pretix/control/templates/pretixcontrol/organizers/outgoing_mails.html:8
@@ -9207,12 +9233,12 @@ msgid "Czech National Bank"
msgstr "Tsjechische Nationale Bank"
#: pretix/base/services/export.py:94 pretix/base/services/export.py:154
#, fuzzy
#| msgid "You do not have sufficient permission to perform this export."
msgid ""
"Export not found or you do not have sufficient permission to perform this "
"export."
msgstr ""
"De export is niet gevonden of je hebt onvoldoende rechten om deze export uit "
"te voeren."
msgstr "Je hebt te weinig rechten om deze export uit te voeren."
#: pretix/base/services/export.py:107 pretix/base/services/export.py:179
#: pretix/base/services/export.py:357
@@ -13502,7 +13528,7 @@ msgstr ""
#: pretix/base/templates/403.html:4 pretix/base/templates/403.html:8
msgid "Permission denied"
msgstr "Toestemming geweigerd"
msgstr "Geen toestemming"
#: pretix/base/templates/403.html:9
msgid "You do not have access to this page."
@@ -13691,7 +13717,25 @@ msgid "Contact"
msgstr "Contact"
#: pretix/base/templates/pretixbase/email/shred_completed.txt:2
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "we hereby confirm that the following data shredding job has been "
#| "completed:\n"
#| "\n"
#| "Organizer: %(organizer)s\n"
#| "\n"
#| "Event: %(event)s\n"
#| "\n"
#| "Data selection: %(shredders)s\n"
#| "\n"
#| "Start time: %(start_time)s (new data added after this time might not have "
#| "been deleted)\n"
#| "\n"
#| "Best regards,\n"
#| "\n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -13725,7 +13769,7 @@ msgstr ""
"\n"
"Met vriendelijke groet,\n"
"\n"
"Het %(instance)s-team\n"
"Het pretix-team\n"
#: pretix/base/templates/pretixbase/forms/widgets/checkbox_sales_channel_option.html:16
msgid ""
@@ -14288,12 +14332,16 @@ msgid "This is an event series"
msgstr "Dit is een evenementenreeks"
#: pretix/control/forms/event.py:135 pretix/control/forms/event.py:363
#, fuzzy
#| msgid ""
#| "You do not have sufficient permission to enable plugins that need to be "
#| "enabled for the entire organizer account."
msgid ""
"You do not have a sufficient level of access on the event you selected to "
"copy it to the desired organizer."
msgstr ""
"Je hebt onvoldoende rechten voor het evenement dat je hebt geselecteerd om "
"het naar de gewenste organisator te kopiëren."
"Je hebt niet voldoende rechten om plug-ins in te schakelen die voor het hele "
"account van de organisator moeten worden ingeschakeld."
#: pretix/control/forms/event.py:143
msgid ""
@@ -14372,8 +14420,6 @@ msgid ""
"You cannot choose a team that would give you more access than you have on "
"the event you are copying."
msgstr ""
"Je kunt geen team selecteren dat je meer toegangsrechten zou geven dan het "
"evenement dat je kopieert."
#: pretix/control/forms/event.py:344
msgid "Copy configuration from"
@@ -14389,8 +14435,6 @@ msgid ""
"You cannot choose an event on which you have less access than the team you "
"selected in the previous step."
msgstr ""
"Je kunt geen evenement selecteren waarvoor je minder toegangsrechten hebt "
"dan het team dat je in de vorige stap geselecteerd hebt."
#: pretix/control/forms/event.py:387 pretix/control/forms/item.py:1304
#: pretix/control/forms/subevents.py:411
@@ -15346,7 +15390,7 @@ msgstr "Zoek gast…"
#: pretix/control/forms/filter.py:2039
#: pretix/plugins/checkinlists/exporters.py:106
msgid "Check-in status"
msgstr "Check-in-status"
msgstr "Incheckstatus"
#: pretix/control/forms/filter.py:2041
#: pretix/plugins/checkinlists/exporters.py:108
@@ -16755,7 +16799,7 @@ msgstr "Je kunt slechts één organisatiedomein instellen."
#: pretix/control/forms/organizer.py:322
msgid "Provided by a plugin"
msgstr "Beschikbaar gesteld via een plug-in"
msgstr ""
#: pretix/control/forms/organizer.py:438
msgid ""
@@ -17634,8 +17678,10 @@ msgid "The order has been denied (comment: \"{comment}\")."
msgstr "De bestelling is geweigerd (opmerking: \"{comment}\")."
#: pretix/control/logdisplay.py:521
#, fuzzy
#| msgid "The order has been overpaid."
msgid "The customer VAT ID has been verified."
msgstr "Het btw-nummer van de klant is geverifieerd."
msgstr "De bestelling is overbetaald."
#: pretix/control/logdisplay.py:522
#, python-brace-format
@@ -17937,9 +17983,10 @@ msgid "{user} has been invited to the team."
msgstr "{user} is uitgenodigd voor het team."
#: pretix/control/logdisplay.py:644
#, python-brace-format
#, fuzzy, python-brace-format
#| msgid "Invite for {user} has been resent."
msgid "Invite for {user} has been deleted."
msgstr "De uitnodiging voor {user} is verwijderd."
msgstr "De uitnodiging voor {user} is opnieuw verstuurd."
#: pretix/control/logdisplay.py:645
#, python-brace-format
@@ -20248,7 +20295,21 @@ msgid "Add property"
msgstr "Eigenschap toevoegen"
#: pretix/control/templates/pretixcontrol/email/confirmation_code.txt:1
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "%(reason)s\n"
#| "\n"
#| " %(code)s\n"
#| "\n"
#| "Please do never give this code to another person. Our support team will "
#| "never ask for this code.\n"
#| "\n"
#| "If this code was not requested by you, please contact us immediately.\n"
#| "\n"
#| "Best regards,\n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -20277,7 +20338,7 @@ msgstr ""
"contact op.\n"
"\n"
"Met vriendelijke groet,\n"
"Het %(instance)s-team\n"
"Het pretix-team\n"
#: pretix/control/templates/pretixcontrol/email/email_setup.txt:1
#, python-format
@@ -20314,7 +20375,17 @@ msgstr ""
"Het %(instance)s-team\n"
#: pretix/control/templates/pretixcontrol/email/forgot.txt:1
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "you requested a new password. Please go to the following page to reset "
#| "your password:\n"
#| "\n"
#| "%(url)s\n"
#| "\n"
#| "Best regards, \n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -20329,15 +20400,33 @@ msgstr ""
"Hallo,\n"
"\n"
"Je hebt een nieuw wachtwoord aangevraagd. Klik op de volgende link om je "
"wachtwoord opnieuw in te stellen:\n"
"wachtwoord opnieuw\n"
"in te stellen:\n"
"\n"
"%(url)s\n"
"\n"
"Met vriendelijke groet,\n"
"Het %(instance)s-team\n"
"Het pretix-team\n"
#: pretix/control/templates/pretixcontrol/email/invitation.txt:1
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "you have been invited to a team on pretix, a platform to perform event\n"
#| "ticket sales.\n"
#| "\n"
#| "Organizer: %(organizer)s\n"
#| "Team: %(team)s\n"
#| "\n"
#| "If you want to join that team, just click on the following link:\n"
#| "%(url)s\n"
#| "\n"
#| "If you do not want to join, you can safely ignore or delete this email.\n"
#| "\n"
#| "Best regards, \n"
#| "\n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -20359,7 +20448,7 @@ msgid ""
msgstr ""
"Hallo,\n"
"\n"
"Je bent uitgenodigd voor een team op %(instance)s, een platform om kaartjes\n"
"Je bent uitgenodigd voor een team op pretix, een platform om kaartjes\n"
"te verkopen.\n"
"\n"
"Organisator: %(organizer)s\n"
@@ -20372,7 +20461,7 @@ msgstr ""
"\n"
"Met vriendelijke groet,\n"
"\n"
"Het %(instance)s-team\n"
"Het pretix-team\n"
#: pretix/control/templates/pretixcontrol/email/login_notice.txt:1
#, python-format
@@ -20409,7 +20498,24 @@ msgstr ""
"Het team van %(instance)s\n"
#: pretix/control/templates/pretixcontrol/email/security_notice.txt:1
#, python-format
#, fuzzy, python-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "this is to inform you that the account information of your pretix account "
#| "has been\n"
#| "changed. In particular, the following changes have been performed:\n"
#| "\n"
#| "%(messages)s\n"
#| "\n"
#| "If this change was not performed by you, please contact us immediately.\n"
#| "\n"
#| "You can review and change your account settings here:\n"
#| "\n"
#| "%(url)s\n"
#| "\n"
#| "Best regards, \n"
#| "Your pretix team\n"
msgid ""
"Hello,\n"
"\n"
@@ -20430,7 +20536,7 @@ msgid ""
msgstr ""
"Hallo,\n"
"\n"
"Je ontvangt deze e-mail omdat er wijzigingen zijn gemaakt in je %(instance)s-"
"Je ontvangt deze e-mail omdat er wijzigingen zijn gemaakt in je pretix-"
"account.\n"
"De volgende wijzigingen zijn gemaakt:\n"
"\n"
@@ -20444,7 +20550,7 @@ msgstr ""
"%(url)s\n"
"\n"
"Met vriendelijke groet,\n"
"Het %(instance)s-team\n"
"Het pretix-team\n"
#: pretix/control/templates/pretixcontrol/email_setup.html:8
#: pretix/control/templates/pretixcontrol/email_setup_simple.html:8
@@ -20715,8 +20821,10 @@ msgstr ""
"dat met deze optie doen."
#: pretix/control/templates/pretixcontrol/event/dangerzone.html:51
#, fuzzy
#| msgid "Permissions"
msgid "No permission"
msgstr "Geen toestemming"
msgstr "Permissies"
#: pretix/control/templates/pretixcontrol/event/dangerzone.html:59
#: pretix/control/templates/pretixcontrol/event/dangerzone.html:72
@@ -23267,8 +23375,10 @@ msgid "Edit question"
msgstr "Vraag bewerken"
#: pretix/control/templates/pretixcontrol/items/question.html:55
#, fuzzy
#| msgid "You do not have permission to view this content."
msgid "No permission to view answers."
msgstr "Je bent niet gemachtigd om de antwoorden te bekijken."
msgstr "Je hebt geen toestemming om deze inhoud te bekijken."
#: pretix/control/templates/pretixcontrol/items/question.html:63
msgid "No matching answers found."
@@ -24267,8 +24377,8 @@ msgid ""
"this order."
msgstr ""
"De prijs van dit product is verlaagd vanwege een automatische korting, of "
"dit product is meegenomen in de kortingsberekening voor een ander product in "
"deze bestelling."
"dit product maakte deel uit van de kortingsberekening voor een ander product "
"in deze bestelling."
#: pretix/control/templates/pretixcontrol/order/index.html:496
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:103
@@ -24924,8 +25034,10 @@ msgstr "Geen volgende run gepland"
#: pretix/control/templates/pretixcontrol/orders/export.html:37
#: pretix/control/templates/pretixcontrol/organizers/export.html:37
#, fuzzy
#| msgid "Exporter not found"
msgid "Exporter not found or no permission"
msgstr "Exporteur niet gevonden of geen toestemming"
msgstr "Exporteerder niet gevonden"
#: pretix/control/templates/pretixcontrol/orders/export.html:42
#: pretix/control/templates/pretixcontrol/organizers/export.html:42
@@ -24968,8 +25080,10 @@ msgstr "Aanbevolen voor nieuwe gebruikers"
#: pretix/control/templates/pretixcontrol/orders/export.html:120
#: pretix/control/templates/pretixcontrol/organizers/export.html:120
#, fuzzy
#| msgid "There are no add-ons available for this product."
msgid "There are no exporters available for you."
msgstr "Er zijn geen exporters voor jou beschikbaar."
msgstr "Er zijn geen add-ons beschikbaar voor dit product."
#: pretix/control/templates/pretixcontrol/orders/export_delete.html:4
#: pretix/control/templates/pretixcontrol/orders/export_delete.html:6
@@ -26915,7 +27029,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/pdf/index.html:274
#, python-format
msgid "max. %(size)s, smaller is better"
msgstr "max. %(size)s; hoe kleiner, hoe beter"
msgstr ""
#: pretix/control/templates/pretixcontrol/pdf/index.html:282
msgid "Download current background"
@@ -29698,12 +29812,16 @@ msgstr ""
"Er was een probleem met het verwerken van je invoer. Zie onder voor details."
#: pretix/control/views/orders.py:2798 pretix/control/views/organizer.py:2131
#, fuzzy
#| msgid ""
#| "Your user account does not have sufficient permission to run this report, "
#| "therefore you cannot schedule it."
msgid ""
"Your user account does not have sufficient permission to run this report, "
"therefore you cannot change it."
msgstr ""
"Je gebruikersaccount heeft onvoldoende rechten om dit rapport uit te voeren. "
"Daarom kun je het niet wijzigen."
"Je gebruikersaccount heeft onvoldoende rechten om dit rapport uit te voeren, "
"daarom kun je het niet plannen."
#: pretix/control/views/orders.py:2807 pretix/control/views/organizer.py:2140
msgid ""
@@ -33754,7 +33872,7 @@ msgstr "iDEAL via Stripe"
#: pretix/plugins/stripe/payment.py:1572
msgid "iDEAL | Wero"
msgstr "iDEAL | Wero"
msgstr ""
#: pretix/plugins/stripe/payment.py:1575
msgid ""
@@ -36740,9 +36858,6 @@ msgid ""
"the shop that affect quotas, such as the validity period of carts and "
"vouchers."
msgstr ""
"Let op: de gewijzigde tijd wordt niet meegenomen bij aspecten van de winkel "
"die van invloed zijn op quota, zoals de geldigheidsduur van winkelwagentjes "
"en kortingsbonnen."
#: pretix/presale/templates/pretixpresale/event/timemachine.html:31
msgid "Enable time machine"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-03-17 14:06+0000\n"
"PO-Revision-Date: 2026-03-18 14:50+0000\n"
"PO-Revision-Date: 2026-01-29 19:43+0000\n"
"Last-Translator: Ruud Hendrickx <ruud@leckxicon.eu>\n"
"Language-Team: Dutch (informal) <https://translate.pretix.eu/projects/pretix/"
"pretix-js/nl_Informal/>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.16.2\n"
"X-Generator: Weblate 5.15.2\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -60,7 +60,7 @@ msgstr "PayPal Later betalen"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:41
msgid "iDEAL | Wero"
msgstr "iDEAL | Wero"
msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:42
msgid "SEPA Direct Debit"

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-03-17 14:05+0000\n"
"PO-Revision-Date: 2026-03-25 08:00+0000\n"
"Last-Translator: Renne Rocha <renne@rocha.dev.br>\n"
"PO-Revision-Date: 2026-03-11 07:08+0000\n"
"Last-Translator: Pedro Orlando <scramblerdoodle@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://translate.pretix.eu/projects/"
"pretix/pretix/pt_BR/>\n"
"Language: pt_BR\n"
@@ -405,8 +405,10 @@ msgstr ""
#: pretix/api/serializers/organizer.py:482
#: pretix/control/views/organizer.py:1039
#, fuzzy
#| msgid "Account information"
msgid "Account invitation"
msgstr "Convite de conta"
msgstr "Informações da conta"
#: pretix/api/serializers/organizer.py:503
#: pretix/control/views/organizer.py:1138
@@ -6838,8 +6840,10 @@ msgstr ""
"alguns minutos para entrar em vigor para todos os usuários."
#: pretix/base/models/organizer.py:378
#, fuzzy
#| msgid "Event permissions"
msgid "All event permissions"
msgstr "Todas as permissões de evento"
msgstr "Permissões de Evento"
#: pretix/base/models/organizer.py:379
#: pretix/control/templates/pretixcontrol/organizers/team_edit.html:34
@@ -6847,8 +6851,10 @@ msgid "Event permissions"
msgstr "Permissões de Evento"
#: pretix/base/models/organizer.py:380
#, fuzzy
#| msgid "Organizer permissions"
msgid "All organizer permissions"
msgstr "Todas as permissões de organizador"
msgstr "Permissões de Organizador"
#: pretix/base/models/organizer.py:381
#: pretix/control/templates/pretixcontrol/organizers/team_edit.html:25
@@ -8346,18 +8352,22 @@ msgstr "Seu arquivo de layout não é um layout válido. Mensagem de erro: {}"
#: pretix/base/permissions.py:314 pretix/base/permissions.py:331
msgctxt "permission_level"
msgid "View"
msgstr "Visualizar"
msgstr ""
#: pretix/base/permissions.py:164 pretix/base/permissions.py:169
#: pretix/base/permissions.py:174 pretix/base/permissions.py:179
#: pretix/base/permissions.py:286 pretix/base/permissions.py:315
#, fuzzy
#| msgid "Save and check"
msgctxt "permission_level"
msgid "View and change"
msgstr "Visualizar e alterar"
msgstr "Salvar e checar"
#: pretix/base/permissions.py:168
#, fuzzy
#| msgid "API tokens"
msgid "API only"
msgstr "Apenas API"
msgstr "Tokens de API"
#: pretix/base/permissions.py:173
msgid ""
@@ -8367,9 +8377,11 @@ msgstr ""
#: pretix/base/permissions.py:177 pretix/base/permissions.py:231
#: pretix/base/permissions.py:285 pretix/base/permissions.py:313
#: pretix/base/permissions.py:330
#, fuzzy
#| msgid "Revoke access"
msgctxt "permission_level"
msgid "No access"
msgstr "Sem acesso"
msgstr "Revogar acesso"
#: pretix/base/permissions.py:188
#: pretix/control/templates/pretixcontrol/event/settings.html:7
@@ -8396,8 +8408,10 @@ msgid "Tax settings"
msgstr "Configurações de impostos"
#: pretix/base/permissions.py:209
#, fuzzy
#| msgid "Invoice settings"
msgid "Invoicing settings"
msgstr "Configurações de faturamento"
msgstr "Configurações de fatura"
#: pretix/base/permissions.py:215
#, fuzzy
@@ -8407,40 +8421,52 @@ msgid "Event series dates"
msgstr "Data da série de eventos adicionada"
#: pretix/base/permissions.py:221
#, fuzzy
#| msgid "Product name and variation"
msgid "Products, quotas and questions"
msgstr "Produtos, cotas e perguntas"
msgstr "Nome do produto e variação"
#: pretix/base/permissions.py:224
msgid "Also includes related objects like categories or discounts."
msgstr ""
#: pretix/base/permissions.py:232
#, fuzzy
#| msgid "All check-ins"
msgctxt "permission_level"
msgid "Only check-in"
msgstr "Apenas check-in"
msgstr "Todos os check-ins"
#: pretix/base/permissions.py:233
#, fuzzy
#| msgid "View full log"
msgctxt "permission_level"
msgid "View all"
msgstr "Visualizar tudo"
msgstr "Ver log completo"
#: pretix/base/permissions.py:234
#, fuzzy
#| msgid "Valid check-in"
msgctxt "permission_level"
msgid "View all and check-in"
msgstr "Visualizar tudo e check-in"
msgstr "Check-in válido"
#: pretix/base/permissions.py:235
#, fuzzy
#| msgid "View all upcoming events"
msgctxt "permission_level"
msgid "View all and change"
msgstr "Visualizar tudo e alterar"
msgstr "Ver todos eventos futuros"
#: pretix/base/permissions.py:236
msgid "Includes the ability to cancel and refund individual orders."
msgstr "Incluir a habilidade de cancelar e reembolsar pedidos individuais."
msgstr ""
#: pretix/base/permissions.py:238
#, fuzzy
#| msgid "An entry has been added to the waiting list."
msgid "Also includes related objects like the waiting list."
msgstr "Também inclui objetos relacionados como a lista de espera."
msgstr "Uma entrada foi adicionada à lista de espera."
#: pretix/base/permissions.py:248
#, fuzzy
@@ -8449,14 +8475,18 @@ msgid "Full event or date cancellation"
msgstr "Gerar cancelamento"
#: pretix/base/permissions.py:252
#, fuzzy
#| msgid "Sale not allowed"
msgctxt "permission_level"
msgid "Not allowed"
msgstr "Não permitida"
msgstr "Venda não permitida"
#: pretix/base/permissions.py:253
#, fuzzy
#| msgid "Allowed titles"
msgctxt "permission_level"
msgid "Allowed"
msgstr "Permitida"
msgstr "Títulos permitidos"
#: pretix/base/permissions.py:268
msgctxt "permission_level"
@@ -23965,7 +23995,7 @@ msgstr "Reembolso por pagamento em excesso"
#: pretix/control/templates/pretixcontrol/order/index.html:118
#, python-format
msgid "This order is currently overpaid by %(amount)s."
msgstr "Este pedido está pago em excesso por %(amount)s."
msgstr "O pedidos está pago em excesso por %(amount)s."
#: pretix/control/templates/pretixcontrol/order/index.html:122
#, python-format
@@ -33264,7 +33294,7 @@ msgstr "iDEAL via Stripe"
#: pretix/plugins/stripe/payment.py:1572
msgid "iDEAL | Wero"
msgstr "iDEAL | Wero"
msgstr ""
#: pretix/plugins/stripe/payment.py:1575
msgid ""

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-03-17 14:06+0000\n"
"PO-Revision-Date: 2026-03-25 08:00+0000\n"
"PO-Revision-Date: 2026-01-26 22:00+0000\n"
"Last-Translator: Renne Rocha <renne@rocha.dev.br>\n"
"Language-Team: Portuguese (Brazil) <https://translate.pretix.eu/projects/"
"pretix/pretix-js/pt_BR/>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.16.2\n"
"X-Generator: Weblate 5.15.2\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -60,7 +60,7 @@ msgstr "PayPal Pay Later"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:41
msgid "iDEAL | Wero"
msgstr "iDEAL | Wero"
msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:42
msgid "SEPA Direct Debit"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-03-17 14:05+0000\n"
"PO-Revision-Date: 2026-03-27 09:03+0000\n"
"PO-Revision-Date: 2026-01-16 22:00+0000\n"
"Last-Translator: Linnea Thelander <linnea@coeo.events>\n"
"Language-Team: Swedish <https://translate.pretix.eu/projects/pretix/pretix/"
"sv/>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.16.2\n"
"X-Generator: Weblate 5.15.2\n"
#: pretix/_base_settings.py:87
msgid "English"
@@ -35279,8 +35279,10 @@ msgid "We're now trying to book these add-ons for you!"
msgstr "Vi försöker nu reservera dessa tillval till dig!"
#: pretix/presale/templates/pretixpresale/event/checkout_addons.html:28
#, fuzzy
#| msgid "Additional settings"
msgid "Additional options for"
msgstr "Ytterligare val för"
msgstr "Ytterligare inställningar"
#: pretix/presale/templates/pretixpresale/event/checkout_addons.html:60
#, fuzzy
@@ -35626,10 +35628,13 @@ msgstr[0] "Du måste välja exakt ett alternativ från denna kategori."
msgstr[1] "Du måste välja %(min_count)s alternativ från denna kategori."
#: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:26
#, python-format
#, fuzzy, python-format
#| msgid "You can choose %(max_count)s option from this category."
#| msgid_plural ""
#| "You can choose up to %(max_count)s options from this category."
msgid "You can choose one option from this category."
msgid_plural "You can choose up to %(max_count)s options from this category."
msgstr[0] "Du kan välja ett alternativ från denna kategori."
msgstr[0] "Du kan välja %(max_count)s alternativ från denna kategori."
msgstr[1] "Du kan välja upp till %(max_count)s alternativ från denna kategori."
#: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:34
@@ -36324,11 +36329,12 @@ msgstr "Visa fullstor bild av %(item)s"
#: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:131
#: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:288
#, python-format
#, fuzzy, python-format
#| msgid "%(count)s elements"
msgid "%(amount)s× in your cart"
msgid_plural "%(amount)s× in your cart"
msgstr[0] "%(amount)sx i din kundvagn"
msgstr[1] "%(amount)sx i din kundvagn"
msgstr[0] "%(count)s element"
msgstr[1] "%(count)s element"
#: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:209
#: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:374

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-03-17 14:06+0000\n"
"PO-Revision-Date: 2026-03-26 14:29+0000\n"
"PO-Revision-Date: 2025-10-10 17:00+0000\n"
"Last-Translator: Linnea Thelander <linnea@coeo.events>\n"
"Language-Team: Swedish <https://translate.pretix.eu/projects/pretix/pretix-"
"js/sv/>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.16.2\n"
"X-Generator: Weblate 5.13.3\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -1023,6 +1023,7 @@ msgid "Waiting list"
msgstr "Väntelista"
#: pretix/static/pretixpresale/js/widget/widget.js:55
#, fuzzy
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "

View File

@@ -576,7 +576,7 @@ def filter_subevents_with_plugins(subevents, sales_channel=None):
if not app_cache:
_populate_app_cache()
for receiver in filter_subevents._live_receivers(None)[0]:
for receiver in filter_subevents._live_receivers(None):
app = get_defining_app(receiver)
event_state = {}

View File

@@ -49,7 +49,7 @@ from django.views.decorators.cache import cache_page
from django.views.decorators.gzip import gzip_page
from django.views.decorators.http import condition
from django.views.i18n import (
JavaScriptCatalog, builtin_template_path, get_formats,
JavaScriptCatalog, get_formats, js_catalog_template,
)
from lxml import html
@@ -170,8 +170,7 @@ def generate_widget_js(version, lang):
'September', 'October', 'November', 'December'
)
catalog = dict((k, v) for k, v in catalog.items() if k.startswith('widget\u0004') or k in str_wl)
with builtin_template_path("i18n_catalog.js").open(encoding="utf-8") as fh:
template = Engine().from_string(fh.read())
template = Engine().from_string(js_catalog_template)
context = Context({
'catalog_str': indent(json.dumps(
catalog, sort_keys=True, indent=2)) if catalog else None,

View File

@@ -534,7 +534,6 @@ X_FRAME_OPTIONS = 'DENY'
# URL settings
ROOT_URLCONF = 'pretix.multidomain.maindomain_urlconf'
FORMS_URLFIELD_ASSUME_HTTPS = True # transitional for django 6.0
WSGI_APPLICATION = 'pretix.wsgi.application'

View File

@@ -23,7 +23,9 @@ filterwarnings =
error
ignore:.*invalid escape sequence.*:
ignore:The 'warn' method is deprecated:DeprecationWarning
ignore::django.utils.deprecation.RemovedInDjango60Warning:
ignore::django.utils.deprecation.RemovedInDjango51Warning:django.core.files.storage
ignore:.*index_together.*:django.utils.deprecation.RemovedInDjango51Warning:
ignore:.*get_storage_class.*:django.utils.deprecation.RemovedInDjango51Warning:compressor
ignore:.*This signal will soon be only available for plugins that declare to be organizer-level.*:DeprecationWarning:
ignore::DeprecationWarning:mt940
ignore::DeprecationWarning:cbor2

View File

@@ -19,13 +19,14 @@
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
# <https://www.gnu.org/licenses/>.
#
from datetime import datetime, timedelta, timezone
from datetime import datetime, timedelta
import aiohttp
import pytest
import pytest_asyncio
from django.utils.timezone import now
from django_scopes import scopes_disabled
from pytz import UTC
from pretix.base.models import (
Device, Event, Item, Organizer, Quota, SeatingPlan,
@@ -52,7 +53,7 @@ def organizer():
def event(organizer):
e = Event.objects.create(
organizer=organizer, name='Dummy', slug='dummy',
date_from=datetime(2017, 12, 27, 10, 0, 0, tzinfo=timezone.utc),
date_from=datetime(2017, 12, 27, 10, 0, 0, tzinfo=UTC),
presale_end=now() + timedelta(days=300),
plugins='pretix.plugins.banktransfer,pretix.plugins.ticketoutputpdf',
is_public=True, live=True
@@ -108,8 +109,8 @@ def customer(event, membership_type):
def membership(event, membership_type, customer):
return customer.memberships.create(
membership_type=membership_type,
date_start=datetime(2017, 1, 1, 0, 0, tzinfo=timezone.utc),
date_end=datetime(2099, 1, 1, 0, 0, tzinfo=timezone.utc),
date_start=datetime(2017, 1, 1, 0, 0, tzinfo=UTC),
date_end=datetime(2099, 1, 1, 0, 0, tzinfo=UTC),
)